// 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  S40C9_nt  {
  int s40c9f0[2];
  void  mf40c9(); // _ZN8S40C9_nt6mf40c9Ev
};
//SIG(-1 S40C9_nt) C1{ m Fi[2]}


void  S40C9_nt ::mf40c9(){}

//skip512 S40C9_nt

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S40C8_nt  {
  int s40c8f0;
  __tsi64 s40c8f1;
  void *s40c8f2[4];
  int s40c8f3[2];
  void *s40c8f4;
  ::S40C9_nt s40c8f5;
  void *s40c8f6[2];
  virtual  ~S40C8_nt(); // _ZN8S40C8_ntD1Ev
  virtual void  v8(); // _ZN8S40C8_nt2v8Ev
  virtual void  v9(); // _ZN8S40C8_nt2v9Ev
  virtual void  v10(); // _ZN8S40C8_nt3v10Ev
  virtual void  v11(); // _ZN8S40C8_nt3v11Ev
  virtual void  v12(); // _ZN8S40C8_nt3v12Ev
  virtual void  v13(); // _ZN8S40C8_nt3v13Ev
  virtual void  v14(); // _ZN8S40C8_nt3v14Ev
  virtual void  v15(); // _ZN8S40C8_nt3v15Ev
  virtual void  v16(); // _ZN8S40C8_nt3v16Ev
  virtual void  v17(); // _ZN8S40C8_nt3v17Ev
  virtual void  v18(); // _ZN8S40C8_nt3v18Ev
  virtual void  v19(); // _ZN8S40C8_nt3v19Ev
  virtual void  v20(); // _ZN8S40C8_nt3v20Ev
  virtual void  v21(); // _ZN8S40C8_nt3v21Ev
  virtual void  v22(); // _ZN8S40C8_nt3v22Ev
  virtual void  v23(); // _ZN8S40C8_nt3v23Ev
  virtual void  v24(); // _ZN8S40C8_nt3v24Ev
  virtual void  v25(); // _ZN8S40C8_nt3v25Ev
  virtual void  v26(); // _ZN8S40C8_nt3v26Ev
  virtual void  v27(); // _ZN8S40C8_nt3v27Ev
  virtual void  v28(); // _ZN8S40C8_nt3v28Ev
  virtual void  v29(); // _ZN8S40C8_nt3v29Ev
  virtual void  v30(); // _ZN8S40C8_nt3v30Ev
  virtual void  v31(); // _ZN8S40C8_nt3v31Ev
  virtual void  v32(); // _ZN8S40C8_nt3v32Ev
  virtual void  v33(); // _ZN8S40C8_nt3v33Ev
  virtual void  v34(); // _ZN8S40C8_nt3v34Ev
  virtual void  v35(); // _ZN8S40C8_nt3v35Ev
  virtual void  v36(); // _ZN8S40C8_nt3v36Ev
  virtual void  v37(); // _ZN8S40C8_nt3v37Ev
  virtual void  v38(); // _ZN8S40C8_nt3v38Ev
  virtual void  v39(); // _ZN8S40C8_nt3v39Ev
  virtual void  v40(); // _ZN8S40C8_nt3v40Ev
  virtual void  v41(); // _ZN8S40C8_nt3v41Ev
  virtual void  v42(); // _ZN8S40C8_nt3v42Ev
  virtual void  v43(); // _ZN8S40C8_nt3v43Ev
  virtual void  v44(); // _ZN8S40C8_nt3v44Ev
  virtual void  v45(); // _ZN8S40C8_nt3v45Ev
  virtual void  v46(); // _ZN8S40C8_nt3v46Ev
  virtual void  v47(); // _ZN8S40C8_nt3v47Ev
  virtual void  v48(); // _ZN8S40C8_nt3v48Ev
  virtual void  v49(); // _ZN8S40C8_nt3v49Ev
  virtual void  v50(); // _ZN8S40C8_nt3v50Ev
  virtual void  v51(); // _ZN8S40C8_nt3v51Ev
  virtual void  v52(); // _ZN8S40C8_nt3v52Ev
  virtual void  v53(); // _ZN8S40C8_nt3v53Ev
  virtual void  v54(); // _ZN8S40C8_nt3v54Ev
  virtual void  v55(); // _ZN8S40C8_nt3v55Ev
  virtual void  v56(); // _ZN8S40C8_nt3v56Ev
  virtual void  v57(); // _ZN8S40C8_nt3v57Ev
  virtual void  v58(); // _ZN8S40C8_nt3v58Ev
  virtual void  v59(); // _ZN8S40C8_nt3v59Ev
  virtual void  v60(); // _ZN8S40C8_nt3v60Ev
  virtual void  v61(); // _ZN8S40C8_nt3v61Ev
  virtual void  v62(); // _ZN8S40C8_nt3v62Ev
  virtual void  v63(); // _ZN8S40C8_nt3v63Ev
  virtual void  v64(); // _ZN8S40C8_nt3v64Ev
  virtual void  v65(); // _ZN8S40C8_nt3v65Ev
  virtual void  v66(); // _ZN8S40C8_nt3v66Ev
  virtual void  v67(); // _ZN8S40C8_nt3v67Ev
  virtual void  v68(); // _ZN8S40C8_nt3v68Ev
  virtual void  v69(); // _ZN8S40C8_nt3v69Ev
  virtual void  v70(); // _ZN8S40C8_nt3v70Ev
  virtual void  v71(); // _ZN8S40C8_nt3v71Ev
  S40C8_nt(); // tgen
};
//SIG(-1 S40C8_nt) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 Fi FL Fp[4] Fi[2] Fp FC2{ m Fi[2]} Fp[2]}


 S40C8_nt ::~S40C8_nt(){ note_dtor("S40C8_nt", this);}
void  S40C8_nt ::v8(){vfunc_called(this, "_ZN8S40C8_nt2v8Ev");}
void  S40C8_nt ::v9(){vfunc_called(this, "_ZN8S40C8_nt2v9Ev");}
void  S40C8_nt ::v10(){vfunc_called(this, "_ZN8S40C8_nt3v10Ev");}
void  S40C8_nt ::v11(){vfunc_called(this, "_ZN8S40C8_nt3v11Ev");}
void  S40C8_nt ::v12(){vfunc_called(this, "_ZN8S40C8_nt3v12Ev");}
void  S40C8_nt ::v13(){vfunc_called(this, "_ZN8S40C8_nt3v13Ev");}
void  S40C8_nt ::v14(){vfunc_called(this, "_ZN8S40C8_nt3v14Ev");}
void  S40C8_nt ::v15(){vfunc_called(this, "_ZN8S40C8_nt3v15Ev");}
void  S40C8_nt ::v16(){vfunc_called(this, "_ZN8S40C8_nt3v16Ev");}
void  S40C8_nt ::v17(){vfunc_called(this, "_ZN8S40C8_nt3v17Ev");}
void  S40C8_nt ::v18(){vfunc_called(this, "_ZN8S40C8_nt3v18Ev");}
void  S40C8_nt ::v19(){vfunc_called(this, "_ZN8S40C8_nt3v19Ev");}
void  S40C8_nt ::v20(){vfunc_called(this, "_ZN8S40C8_nt3v20Ev");}
void  S40C8_nt ::v21(){vfunc_called(this, "_ZN8S40C8_nt3v21Ev");}
void  S40C8_nt ::v22(){vfunc_called(this, "_ZN8S40C8_nt3v22Ev");}
void  S40C8_nt ::v23(){vfunc_called(this, "_ZN8S40C8_nt3v23Ev");}
void  S40C8_nt ::v24(){vfunc_called(this, "_ZN8S40C8_nt3v24Ev");}
void  S40C8_nt ::v25(){vfunc_called(this, "_ZN8S40C8_nt3v25Ev");}
void  S40C8_nt ::v26(){vfunc_called(this, "_ZN8S40C8_nt3v26Ev");}
void  S40C8_nt ::v27(){vfunc_called(this, "_ZN8S40C8_nt3v27Ev");}
void  S40C8_nt ::v28(){vfunc_called(this, "_ZN8S40C8_nt3v28Ev");}
void  S40C8_nt ::v29(){vfunc_called(this, "_ZN8S40C8_nt3v29Ev");}
void  S40C8_nt ::v30(){vfunc_called(this, "_ZN8S40C8_nt3v30Ev");}
void  S40C8_nt ::v31(){vfunc_called(this, "_ZN8S40C8_nt3v31Ev");}
void  S40C8_nt ::v32(){vfunc_called(this, "_ZN8S40C8_nt3v32Ev");}
void  S40C8_nt ::v33(){vfunc_called(this, "_ZN8S40C8_nt3v33Ev");}
void  S40C8_nt ::v34(){vfunc_called(this, "_ZN8S40C8_nt3v34Ev");}
void  S40C8_nt ::v35(){vfunc_called(this, "_ZN8S40C8_nt3v35Ev");}
void  S40C8_nt ::v36(){vfunc_called(this, "_ZN8S40C8_nt3v36Ev");}
void  S40C8_nt ::v37(){vfunc_called(this, "_ZN8S40C8_nt3v37Ev");}
void  S40C8_nt ::v38(){vfunc_called(this, "_ZN8S40C8_nt3v38Ev");}
void  S40C8_nt ::v39(){vfunc_called(this, "_ZN8S40C8_nt3v39Ev");}
void  S40C8_nt ::v40(){vfunc_called(this, "_ZN8S40C8_nt3v40Ev");}
void  S40C8_nt ::v41(){vfunc_called(this, "_ZN8S40C8_nt3v41Ev");}
void  S40C8_nt ::v42(){vfunc_called(this, "_ZN8S40C8_nt3v42Ev");}
void  S40C8_nt ::v43(){vfunc_called(this, "_ZN8S40C8_nt3v43Ev");}
void  S40C8_nt ::v44(){vfunc_called(this, "_ZN8S40C8_nt3v44Ev");}
void  S40C8_nt ::v45(){vfunc_called(this, "_ZN8S40C8_nt3v45Ev");}
void  S40C8_nt ::v46(){vfunc_called(this, "_ZN8S40C8_nt3v46Ev");}
void  S40C8_nt ::v47(){vfunc_called(this, "_ZN8S40C8_nt3v47Ev");}
void  S40C8_nt ::v48(){vfunc_called(this, "_ZN8S40C8_nt3v48Ev");}
void  S40C8_nt ::v49(){vfunc_called(this, "_ZN8S40C8_nt3v49Ev");}
void  S40C8_nt ::v50(){vfunc_called(this, "_ZN8S40C8_nt3v50Ev");}
void  S40C8_nt ::v51(){vfunc_called(this, "_ZN8S40C8_nt3v51Ev");}
void  S40C8_nt ::v52(){vfunc_called(this, "_ZN8S40C8_nt3v52Ev");}
void  S40C8_nt ::v53(){vfunc_called(this, "_ZN8S40C8_nt3v53Ev");}
void  S40C8_nt ::v54(){vfunc_called(this, "_ZN8S40C8_nt3v54Ev");}
void  S40C8_nt ::v55(){vfunc_called(this, "_ZN8S40C8_nt3v55Ev");}
void  S40C8_nt ::v56(){vfunc_called(this, "_ZN8S40C8_nt3v56Ev");}
void  S40C8_nt ::v57(){vfunc_called(this, "_ZN8S40C8_nt3v57Ev");}
void  S40C8_nt ::v58(){vfunc_called(this, "_ZN8S40C8_nt3v58Ev");}
void  S40C8_nt ::v59(){vfunc_called(this, "_ZN8S40C8_nt3v59Ev");}
void  S40C8_nt ::v60(){vfunc_called(this, "_ZN8S40C8_nt3v60Ev");}
void  S40C8_nt ::v61(){vfunc_called(this, "_ZN8S40C8_nt3v61Ev");}
void  S40C8_nt ::v62(){vfunc_called(this, "_ZN8S40C8_nt3v62Ev");}
void  S40C8_nt ::v63(){vfunc_called(this, "_ZN8S40C8_nt3v63Ev");}
void  S40C8_nt ::v64(){vfunc_called(this, "_ZN8S40C8_nt3v64Ev");}
void  S40C8_nt ::v65(){vfunc_called(this, "_ZN8S40C8_nt3v65Ev");}
void  S40C8_nt ::v66(){vfunc_called(this, "_ZN8S40C8_nt3v66Ev");}
void  S40C8_nt ::v67(){vfunc_called(this, "_ZN8S40C8_nt3v67Ev");}
void  S40C8_nt ::v68(){vfunc_called(this, "_ZN8S40C8_nt3v68Ev");}
void  S40C8_nt ::v69(){vfunc_called(this, "_ZN8S40C8_nt3v69Ev");}
void  S40C8_nt ::v70(){vfunc_called(this, "_ZN8S40C8_nt3v70Ev");}
void  S40C8_nt ::v71(){vfunc_called(this, "_ZN8S40C8_nt3v71Ev");}
S40C8_nt ::S40C8_nt(){ note_ctor("S40C8_nt", this);} // tgen

//skip512 S40C8_nt

#else // __cplusplus

extern void _ZN8S40C8_ntC1Ev();
extern void _ZN8S40C8_ntD1Ev();
Name_Map name_map_S40C8_nt[] = {
  NSPAIR(_ZN8S40C8_ntC1Ev),
  NSPAIR(_ZN8S40C8_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S40C8_nt[];
extern void _ZN8S40C8_ntD1Ev();
extern void _ZN8S40C8_ntD0Ev();
extern void _ZN8S40C8_nt2v8Ev();
extern void _ZN8S40C8_nt2v9Ev();
extern void _ZN8S40C8_nt3v10Ev();
extern void _ZN8S40C8_nt3v11Ev();
extern void _ZN8S40C8_nt3v12Ev();
extern void _ZN8S40C8_nt3v13Ev();
extern void _ZN8S40C8_nt3v14Ev();
extern void _ZN8S40C8_nt3v15Ev();
extern void _ZN8S40C8_nt3v16Ev();
extern void _ZN8S40C8_nt3v17Ev();
extern void _ZN8S40C8_nt3v18Ev();
extern void _ZN8S40C8_nt3v19Ev();
extern void _ZN8S40C8_nt3v20Ev();
extern void _ZN8S40C8_nt3v21Ev();
extern void _ZN8S40C8_nt3v22Ev();
extern void _ZN8S40C8_nt3v23Ev();
extern void _ZN8S40C8_nt3v24Ev();
extern void _ZN8S40C8_nt3v25Ev();
extern void _ZN8S40C8_nt3v26Ev();
extern void _ZN8S40C8_nt3v27Ev();
extern void _ZN8S40C8_nt3v28Ev();
extern void _ZN8S40C8_nt3v29Ev();
extern void _ZN8S40C8_nt3v30Ev();
extern void _ZN8S40C8_nt3v31Ev();
extern void _ZN8S40C8_nt3v32Ev();
extern void _ZN8S40C8_nt3v33Ev();
extern void _ZN8S40C8_nt3v34Ev();
extern void _ZN8S40C8_nt3v35Ev();
extern void _ZN8S40C8_nt3v36Ev();
extern void _ZN8S40C8_nt3v37Ev();
extern void _ZN8S40C8_nt3v38Ev();
extern void _ZN8S40C8_nt3v39Ev();
extern void _ZN8S40C8_nt3v40Ev();
extern void _ZN8S40C8_nt3v41Ev();
extern void _ZN8S40C8_nt3v42Ev();
extern void _ZN8S40C8_nt3v43Ev();
extern void _ZN8S40C8_nt3v44Ev();
extern void _ZN8S40C8_nt3v45Ev();
extern void _ZN8S40C8_nt3v46Ev();
extern void _ZN8S40C8_nt3v47Ev();
extern void _ZN8S40C8_nt3v48Ev();
extern void _ZN8S40C8_nt3v49Ev();
extern void _ZN8S40C8_nt3v50Ev();
extern void _ZN8S40C8_nt3v51Ev();
extern void _ZN8S40C8_nt3v52Ev();
extern void _ZN8S40C8_nt3v53Ev();
extern void _ZN8S40C8_nt3v54Ev();
extern void _ZN8S40C8_nt3v55Ev();
extern void _ZN8S40C8_nt3v56Ev();
extern void _ZN8S40C8_nt3v57Ev();
extern void _ZN8S40C8_nt3v58Ev();
extern void _ZN8S40C8_nt3v59Ev();
extern void _ZN8S40C8_nt3v60Ev();
extern void _ZN8S40C8_nt3v61Ev();
extern void _ZN8S40C8_nt3v62Ev();
extern void _ZN8S40C8_nt3v63Ev();
extern void _ZN8S40C8_nt3v64Ev();
extern void _ZN8S40C8_nt3v65Ev();
extern void _ZN8S40C8_nt3v66Ev();
extern void _ZN8S40C8_nt3v67Ev();
extern void _ZN8S40C8_nt3v68Ev();
extern void _ZN8S40C8_nt3v69Ev();
extern void _ZN8S40C8_nt3v70Ev();
extern void _ZN8S40C8_nt3v71Ev();
static  VTBL_ENTRY vtc_S40C8_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S40C8_nt[0]),
  (VTBL_ENTRY)&_ZN8S40C8_ntD1Ev,
  (VTBL_ENTRY)&_ZN8S40C8_ntD0Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v11Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v13Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v14Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v15Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v16Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v17Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v18Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v22Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v23Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v24Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v25Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v26Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v27Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v28Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v29Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v30Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v31Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v32Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v33Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v34Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v35Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v36Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v37Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v38Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v39Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v40Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v41Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v42Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v43Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v44Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v45Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v46Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v47Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v48Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v49Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v50Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v51Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v52Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v53Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v54Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v55Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v56Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v57Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v58Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v59Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v60Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v61Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v62Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v63Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v64Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v65Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v66Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v67Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v68Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v69Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v70Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v71Ev,
};
extern VTBL_ENTRY _ZTI8S40C8_nt[];
VTBL_ENTRY *P__ZTI8S40C8_nt = _ZTI8S40C8_nt; 
extern  VTBL_ENTRY _ZTV8S40C8_nt[];
Class_Descriptor cd_S40C8_nt = {  "S40C8_nt", // class name
  0,0,//no base classes
  &(vtc_S40C8_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI8S40C8_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S40C8_nt),68, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S40C12_nt  {
  void *s40c12f0;
  int s40c12f1[2];
  void  mf40c12(); // _ZN9S40C12_nt7mf40c12Ev
};
//SIG(-1 S40C12_nt) C1{ m Fp Fi[2]}


void  S40C12_nt ::mf40c12(){}

//skip512 S40C12_nt

#else // __cplusplus

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

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

#ifdef __cplusplus

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



//skip512 S40C11_nt

#else // __cplusplus

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

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

#ifdef __cplusplus

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



//skip512 S40C10_nt

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S40C13_nt  {
  int s40c13f0;
  void  mf40c13(); // _ZN9S40C13_nt7mf40c13Ev
};
//SIG(-1 S40C13_nt) C1{ m Fi}


void  S40C13_nt ::mf40c13(){}

//skip512 S40C13_nt

#else // __cplusplus

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

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

#ifdef __cplusplus

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



static void Test_S40C17()
{
  extern Class_Descriptor cd_S40C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S40C17, buf);
    S40C17 &lv = *(new (buf) S40C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S40C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S40C17)");
    check_base_class_offset(lv, (S40C12_nt*), 0, "S40C17");
    test_class_info(&lv, &cd_S40C17);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS40C17(Test_S40C17, "S40C17", ABISELECT(16,12));

#else // __cplusplus

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

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

#ifdef __cplusplus

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



static void Test_S40C16()
{
  extern Class_Descriptor cd_S40C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S40C16, buf);
    S40C16 &lv = *(new (buf) S40C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S40C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S40C16)");
    check_base_class_offset(lv, (S40C12_nt*)(S40C17*), 0, "S40C16");
    check_base_class_offset(lv, (S40C17*), 0, "S40C16");
    test_class_info(&lv, &cd_S40C16);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS40C16(Test_S40C16, "S40C16", ABISELECT(16,12));

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S40C18_nt  {
  int s40c18f0[3];
  void  mf40c18(); // _ZN9S40C18_nt7mf40c18Ev
};
//SIG(-1 S40C18_nt) C1{ m Fi[3]}


void  S40C18_nt ::mf40c18(){}

//skip512 S40C18_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

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



static void Test_S40C23()
{
  extern Class_Descriptor cd_S40C23;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S40C23, buf);
    S40C23 &lv = *(new (buf) S40C23());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S40C23)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S40C23)");
    check_base_class_offset(lv, (S40C12_nt*), 0, "S40C23");
    test_class_info(&lv, &cd_S40C23);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS40C23(Test_S40C23, "S40C23", ABISELECT(16,12));

#else // __cplusplus

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

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

#ifdef __cplusplus

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



static void Test_S40C22()
{
  extern Class_Descriptor cd_S40C22;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S40C22, buf);
    S40C22 &lv = *(new (buf) S40C22());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S40C22)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S40C22)");
    check_base_class_offset(lv, (S40C12_nt*)(S40C23*), 0, "S40C22");
    check_base_class_offset(lv, (S40C23*), 0, "S40C22");
    test_class_info(&lv, &cd_S40C22);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS40C22(Test_S40C22, "S40C22", ABISELECT(16,12));

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S40C7_nt  : S40C8_nt {
  ::S40C10_nt s40c7f0;
  ::S40C10_nt s40c7f1;
  ::S40C13_nt s40c7f2;
  int s40c7f3;
  char s40c7f4[4];
  void *s40c7f5[2];
  ::S40C10_nt s40c7f6;
  unsigned int s40c7f7:1;
  unsigned int s40c7f8:1;
  unsigned int s40c7f9:1;
  unsigned int s40c7f10:1;
  unsigned int s40c7f11:1;
  unsigned int s40c7f12:1;
  unsigned int s40c7f13:1;
  unsigned int s40c7f14:1;
  unsigned int s40c7f15:1;
  unsigned int s40c7f16:1;
  unsigned int s40c7f17:1;
  unsigned int s40c7f18:1;
  unsigned int s40c7f19:1;
  unsigned int s40c7f20:1;
  unsigned int s40c7f21:1;
  unsigned int s40c7f22:1;
  unsigned int s40c7f23:1;
  unsigned int s40c7f24:1;
  unsigned int s40c7f25:1;
  unsigned int s40c7f26:1;
  unsigned int s40c7f27:1;
  unsigned int s40c7f28:1;
  unsigned int s40c7f29:1;
  unsigned int s40c7f30:1;
  unsigned int s40c7f31:1;
  unsigned int s40c7f32:1;
  unsigned int s40c7f33:1;
  unsigned int s40c7f34:1;
  unsigned int s40c7f35:1;
  unsigned int s40c7f36:1;
  unsigned int s40c7f37:1;
  unsigned int s40c7f38:1;
  unsigned int s40c7f39:1;
  unsigned int s40c7f40:1;
  unsigned int s40c7f41:1;
  unsigned int s40c7f42:1;
  unsigned int s40c7f43:1;
  unsigned int s40c7f44:1;
  unsigned int s40c7f45:1;
  unsigned int s40c7f46:1;
  unsigned int s40c7f47:1;
  unsigned int s40c7f48:1;
  unsigned int s40c7f49:1;
  unsigned int s40c7f50:1;
  unsigned int s40c7f51:1;
  unsigned int s40c7f52:1;
  unsigned int s40c7f53:1;
  unsigned int s40c7f54:1;
  unsigned int s40c7f55:1;
  unsigned int s40c7f56:1;
  unsigned int s40c7f57:1;
  unsigned int s40c7f58:1;
  unsigned int s40c7f59:1;
  unsigned int s40c7f60:1;
  unsigned int s40c7f61:1;
  unsigned int s40c7f62:1;
  unsigned int s40c7f63:1;
  unsigned int s40c7f64:1;
  unsigned int s40c7f65:1;
  unsigned int s40c7f66:1;
  unsigned int s40c7f67:1;
  unsigned int s40c7f68:1;
  unsigned int s40c7f69:1;
  unsigned int s40c7f70:1;
  unsigned int s40c7f71:1;
  unsigned int s40c7f72:1;
  unsigned int s40c7f73:1;
  unsigned int s40c7f74:1;
  unsigned int s40c7f75:1;
  unsigned int s40c7f76:1;
  unsigned int s40c7f77:1;
  unsigned int s40c7f78:1;
  unsigned int s40c7f79:1;
  unsigned int s40c7f80:1;
  unsigned int s40c7f81:1;
  unsigned int s40c7f82:1;
  unsigned int s40c7f83:1;
  int s40c7f84[5];
  void *s40c7f85[2];
  int s40c7f86[3];
  ::S40C9_nt s40c7f87;
  ::S40C9_nt s40c7f88;
  ::S40C9_nt s40c7f89;
  ::S40C16 s40c7f90;
  ::S40C16 s40c7f91;
  int s40c7f92;
  void *s40c7f93[2];
  ::S40C18_nt s40c7f94;
  ::S40C18_nt s40c7f95;
  ::S40C18_nt s40c7f96;
  ::S40C18_nt s40c7f97;
  void *s40c7f98;
  ::S40C9_nt s40c7f99;
  ::S40C16 s40c7f100;
  ::S40C18_nt s40c7f101;
  ::S40C18_nt s40c7f102;
  int s40c7f103;
  ::S40C18_nt s40c7f104;
  ::S40C18_nt s40c7f105;
  void *s40c7f106;
  int s40c7f107;
  char s40c7f108;
  ::S40C18_nt s40c7f109;
  ::S40C18_nt s40c7f110;
  void *s40c7f111;
  int s40c7f112;
  void *s40c7f113;
  ::S40C16 s40c7f114;
  ::S40C22 s40c7f115;
  ::S40C22 s40c7f116;
  virtual  ~S40C7_nt(); // _ZN8S40C7_ntD1Ev
  virtual void  v72(); // _ZN8S40C7_nt3v72Ev
  virtual void  v73(); // _ZN8S40C7_nt3v73Ev
  virtual void  v74(); // _ZN8S40C7_nt3v74Ev
  virtual void  v75(); // _ZN8S40C7_nt3v75Ev
  virtual void  v76(); // _ZN8S40C7_nt3v76Ev
  virtual void  v77(); // _ZN8S40C7_nt3v77Ev
  virtual void  v78(); // _ZN8S40C7_nt3v78Ev
  virtual void  v79(); // _ZN8S40C7_nt3v79Ev
  virtual void  v80(); // _ZN8S40C7_nt3v80Ev
  virtual void  v81(); // _ZN8S40C7_nt3v81Ev
  virtual void  v82(); // _ZN8S40C7_nt3v82Ev
  virtual void  v83(); // _ZN8S40C7_nt3v83Ev
  virtual void  v84(); // _ZN8S40C7_nt3v84Ev
  virtual void  v85(); // _ZN8S40C7_nt3v85Ev
  virtual void  v86(); // _ZN8S40C7_nt3v86Ev
  virtual void  v87(); // _ZN8S40C7_nt3v87Ev
  virtual void  v88(); // _ZN8S40C7_nt3v88Ev
  virtual void  v89(); // _ZN8S40C7_nt3v89Ev
  virtual void  v90(); // _ZN8S40C7_nt3v90Ev
  virtual void  v91(); // _ZN8S40C7_nt3v91Ev
  virtual void  v92(); // _ZN8S40C7_nt3v92Ev
  virtual void  v93(); // _ZN8S40C7_nt3v93Ev
  virtual void  v94(); // _ZN8S40C7_nt3v94Ev
  virtual void  v95(); // _ZN8S40C7_nt3v95Ev
  virtual void  v96(); // _ZN8S40C7_nt3v96Ev
  virtual void  v97(); // _ZN8S40C7_nt3v97Ev
  virtual void  v98(); // _ZN8S40C7_nt3v98Ev
  virtual void  v99(); // _ZN8S40C7_nt3v99Ev
  virtual void  v100(); // _ZN8S40C7_nt4v100Ev
  virtual void  v101(); // _ZN8S40C7_nt4v101Ev
  virtual void  v102(); // _ZN8S40C7_nt4v102Ev
  virtual void  v103(); // _ZN8S40C7_nt4v103Ev
  virtual void  v104(); // _ZN8S40C7_nt4v104Ev
  virtual void  v105(); // _ZN8S40C7_nt4v105Ev
  virtual void  v106(); // _ZN8S40C7_nt4v106Ev
  virtual void  v107(); // _ZN8S40C7_nt4v107Ev
  virtual void  v108(); // _ZN8S40C7_nt4v108Ev
  virtual void  v109(); // _ZN8S40C7_nt4v109Ev
  virtual void  v110(); // _ZN8S40C7_nt4v110Ev
  virtual void  v111(); // _ZN8S40C7_nt4v111Ev
  virtual void  v112(); // _ZN8S40C7_nt4v112Ev
  virtual void  v113(); // _ZN8S40C7_nt4v113Ev
  virtual void  v114(); // _ZN8S40C7_nt4v114Ev
  virtual void  v115(); // _ZN8S40C7_nt4v115Ev
  virtual void  v116(); // _ZN8S40C7_nt4v116Ev
  virtual void  v117(); // _ZN8S40C7_nt4v117Ev
  virtual void  v118(); // _ZN8S40C7_nt4v118Ev
  virtual void  v119(); // _ZN8S40C7_nt4v119Ev
  virtual void  v120(); // _ZN8S40C7_nt4v120Ev
  virtual void  v121(); // _ZN8S40C7_nt4v121Ev
  virtual void  v122(); // _ZN8S40C7_nt4v122Ev
  virtual void  v123(); // _ZN8S40C7_nt4v123Ev
  virtual void  v124(); // _ZN8S40C7_nt4v124Ev
  virtual void  v125(); // _ZN8S40C7_nt4v125Ev
  virtual void  v126(); // _ZN8S40C7_nt4v126Ev
  virtual void  v127(); // _ZN8S40C7_nt4v127Ev
  virtual void  v128(); // _ZN8S40C7_nt4v128Ev
  virtual void  v129(); // _ZN8S40C7_nt4v129Ev
  virtual void  v130(); // _ZN8S40C7_nt4v130Ev
  virtual void  v131(); // _ZN8S40C7_nt4v131Ev
  virtual void  v132(); // _ZN8S40C7_nt4v132Ev
  virtual void  v133(); // _ZN8S40C7_nt4v133Ev
  virtual void  v134(); // _ZN8S40C7_nt4v134Ev
  virtual void  v135(); // _ZN8S40C7_nt4v135Ev
  virtual void  v136(); // _ZN8S40C7_nt4v136Ev
  virtual void  v137(); // _ZN8S40C7_nt4v137Ev
  virtual void  v138(); // _ZN8S40C7_nt4v138Ev
  virtual void  v139(); // _ZN8S40C7_nt4v139Ev
  virtual void  v140(); // _ZN8S40C7_nt4v140Ev
  virtual void  v141(); // _ZN8S40C7_nt4v141Ev
  virtual void  v142(); // _ZN8S40C7_nt4v142Ev
  virtual void  v143(); // _ZN8S40C7_nt4v143Ev
  virtual void  v144(); // _ZN8S40C7_nt4v144Ev
  virtual void  v145(); // _ZN8S40C7_nt4v145Ev
  virtual void  v146(); // _ZN8S40C7_nt4v146Ev
  virtual void  v147(); // _ZN8S40C7_nt4v147Ev
  virtual void  v148(); // _ZN8S40C7_nt4v148Ev
  virtual void  v149(); // _ZN8S40C7_nt4v149Ev
  virtual void  v150(); // _ZN8S40C7_nt4v150Ev
  virtual void  v151(); // _ZN8S40C7_nt4v151Ev
  virtual void  v152(); // _ZN8S40C7_nt4v152Ev
  virtual void  v153(); // _ZN8S40C7_nt4v153Ev
  virtual void  v154(); // _ZN8S40C7_nt4v154Ev
  virtual void  v155(); // _ZN8S40C7_nt4v155Ev
  virtual void  v156(); // _ZN8S40C7_nt4v156Ev
  virtual void  v157(); // _ZN8S40C7_nt4v157Ev
  virtual void  v158(); // _ZN8S40C7_nt4v158Ev
  virtual void  v159(); // _ZN8S40C7_nt4v159Ev
  virtual void  v160(); // _ZN8S40C7_nt4v160Ev
  virtual void  v161(); // _ZN8S40C7_nt4v161Ev
  virtual void  v162(); // _ZN8S40C7_nt4v162Ev
  virtual void  v163(); // _ZN8S40C7_nt4v163Ev
  virtual void  v164(); // _ZN8S40C7_nt4v164Ev
  virtual void  v165(); // _ZN8S40C7_nt4v165Ev
  virtual void  v166(); // _ZN8S40C7_nt4v166Ev
  virtual void  v167(); // _ZN8S40C7_nt4v167Ev
  virtual void  v168(); // _ZN8S40C7_nt4v168Ev
  virtual void  v169(); // _ZN8S40C7_nt4v169Ev
  virtual void  v170(); // _ZN8S40C7_nt4v170Ev
  virtual void  v171(); // _ZN8S40C7_nt4v171Ev
  virtual void  v172(); // _ZN8S40C7_nt4v172Ev
  virtual void  v173(); // _ZN8S40C7_nt4v173Ev
  virtual void  v174(); // _ZN8S40C7_nt4v174Ev
  virtual void  v175(); // _ZN8S40C7_nt4v175Ev
  virtual void  v176(); // _ZN8S40C7_nt4v176Ev
  virtual void  v177(); // _ZN8S40C7_nt4v177Ev
  virtual void  v178(); // _ZN8S40C7_nt4v178Ev
  virtual void  v179(); // _ZN8S40C7_nt4v179Ev
  virtual void  v180(); // _ZN8S40C7_nt4v180Ev
  virtual void  v181(); // _ZN8S40C7_nt4v181Ev
  virtual void  v182(); // _ZN8S40C7_nt4v182Ev
  virtual void  v183(); // _ZN8S40C7_nt4v183Ev
  virtual void  v184(); // _ZN8S40C7_nt4v184Ev
  virtual void  v185(); // _ZN8S40C7_nt4v185Ev
  virtual void  v186(); // _ZN8S40C7_nt4v186Ev
  virtual void  v187(); // _ZN8S40C7_nt4v187Ev
  virtual void  v188(); // _ZN8S40C7_nt4v188Ev
  virtual void  v189(); // _ZN8S40C7_nt4v189Ev
  virtual void  v190(); // _ZN8S40C7_nt4v190Ev
  virtual void  v191(); // _ZN8S40C7_nt4v191Ev
  virtual void  v192(); // _ZN8S40C7_nt4v192Ev
  virtual void  v193(); // _ZN8S40C7_nt4v193Ev
  virtual void  v194(); // _ZN8S40C7_nt4v194Ev
  virtual void  v195(); // _ZN8S40C7_nt4v195Ev
  virtual void  v196(); // _ZN8S40C7_nt4v196Ev
  virtual void  v197(); // _ZN8S40C7_nt4v197Ev
  virtual void  v198(); // _ZN8S40C7_nt4v198Ev
  virtual void  v199(); // _ZN8S40C7_nt4v199Ev
  virtual void  v200(); // _ZN8S40C7_nt4v200Ev
  virtual void  v201(); // _ZN8S40C7_nt4v201Ev
  virtual void  v202(); // _ZN8S40C7_nt4v202Ev
  virtual void  v203(); // _ZN8S40C7_nt4v203Ev
  virtual void  v204(); // _ZN8S40C7_nt4v204Ev
  virtual void  v205(); // _ZN8S40C7_nt4v205Ev
  virtual void  v206(); // _ZN8S40C7_nt4v206Ev
  virtual void  v207(); // _ZN8S40C7_nt4v207Ev
  virtual void  v208(); // _ZN8S40C7_nt4v208Ev
  virtual void  v209(); // _ZN8S40C7_nt4v209Ev
  virtual void  v210(); // _ZN8S40C7_nt4v210Ev
  virtual void  v211(); // _ZN8S40C7_nt4v211Ev
  virtual void  v212(); // _ZN8S40C7_nt4v212Ev
  virtual void  v213(); // _ZN8S40C7_nt4v213Ev
  virtual void  v214(); // _ZN8S40C7_nt4v214Ev
  S40C7_nt(); // tgen
};
//SIG(-1 S40C7_nt) C1{ BC2{ vd v144 v145 v146 v147 v148 v149 v150 v151 v152 v153 v154 v155 v156 v157 v158 v159 v160 v161 v162 v163 v164 v165 v166 v167 v168 v169 v170 v171 v172 v173 v174 v175 v176 v177 v178 v179 v180 v181 v182 v183 v184 v185 v186 v187 v188 v189 v190 v191 v192 v193 v194 v195 v196 v197 v198 v199 v200 v201 v202 v203 v204 v205 v206 v207 Fi FL Fp[4] Fi[2] Fp FC3{ m Fi[2]} Fp[2]} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 v90 v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 v102 v103 v104 v105 v106 v107 v108 v109 v110 v111 v112 v113 v114 v115 v116 v117 v118 v119 v120 v121 v122 v123 v124 v125 v126 v127 v128 v129 v130 v131 v132 v133 v134 v135 v136 v137 v138 v139 v140 v141 v142 v143 FC4{ BC5{ BC6{ m Fp Fi[2]}}} FC4 FC7{ m Fi} Fi Fc[4] Fp[2] FC4 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[5] Fp[2] Fi[3] FC3 FC3 FC3 FC8{ BC9{ BC6}} FC8 Fi Fp[2] FC10{ m Fi[3]} FC10 FC10 FC10 Fp FC3 FC8 FC10 FC10 Fi FC10 FC10 Fp Fi Fc FC10 FC10 Fp Fi Fp FC8 FC11{ BC12{ BC6}} FC11}


 S40C7_nt ::~S40C7_nt(){ note_dtor("S40C7_nt", this);}
void  S40C7_nt ::v72(){vfunc_called(this, "_ZN8S40C7_nt3v72Ev");}
void  S40C7_nt ::v73(){vfunc_called(this, "_ZN8S40C7_nt3v73Ev");}
void  S40C7_nt ::v74(){vfunc_called(this, "_ZN8S40C7_nt3v74Ev");}
void  S40C7_nt ::v75(){vfunc_called(this, "_ZN8S40C7_nt3v75Ev");}
void  S40C7_nt ::v76(){vfunc_called(this, "_ZN8S40C7_nt3v76Ev");}
void  S40C7_nt ::v77(){vfunc_called(this, "_ZN8S40C7_nt3v77Ev");}
void  S40C7_nt ::v78(){vfunc_called(this, "_ZN8S40C7_nt3v78Ev");}
void  S40C7_nt ::v79(){vfunc_called(this, "_ZN8S40C7_nt3v79Ev");}
void  S40C7_nt ::v80(){vfunc_called(this, "_ZN8S40C7_nt3v80Ev");}
void  S40C7_nt ::v81(){vfunc_called(this, "_ZN8S40C7_nt3v81Ev");}
void  S40C7_nt ::v82(){vfunc_called(this, "_ZN8S40C7_nt3v82Ev");}
void  S40C7_nt ::v83(){vfunc_called(this, "_ZN8S40C7_nt3v83Ev");}
void  S40C7_nt ::v84(){vfunc_called(this, "_ZN8S40C7_nt3v84Ev");}
void  S40C7_nt ::v85(){vfunc_called(this, "_ZN8S40C7_nt3v85Ev");}
void  S40C7_nt ::v86(){vfunc_called(this, "_ZN8S40C7_nt3v86Ev");}
void  S40C7_nt ::v87(){vfunc_called(this, "_ZN8S40C7_nt3v87Ev");}
void  S40C7_nt ::v88(){vfunc_called(this, "_ZN8S40C7_nt3v88Ev");}
void  S40C7_nt ::v89(){vfunc_called(this, "_ZN8S40C7_nt3v89Ev");}
void  S40C7_nt ::v90(){vfunc_called(this, "_ZN8S40C7_nt3v90Ev");}
void  S40C7_nt ::v91(){vfunc_called(this, "_ZN8S40C7_nt3v91Ev");}
void  S40C7_nt ::v92(){vfunc_called(this, "_ZN8S40C7_nt3v92Ev");}
void  S40C7_nt ::v93(){vfunc_called(this, "_ZN8S40C7_nt3v93Ev");}
void  S40C7_nt ::v94(){vfunc_called(this, "_ZN8S40C7_nt3v94Ev");}
void  S40C7_nt ::v95(){vfunc_called(this, "_ZN8S40C7_nt3v95Ev");}
void  S40C7_nt ::v96(){vfunc_called(this, "_ZN8S40C7_nt3v96Ev");}
void  S40C7_nt ::v97(){vfunc_called(this, "_ZN8S40C7_nt3v97Ev");}
void  S40C7_nt ::v98(){vfunc_called(this, "_ZN8S40C7_nt3v98Ev");}
void  S40C7_nt ::v99(){vfunc_called(this, "_ZN8S40C7_nt3v99Ev");}
void  S40C7_nt ::v100(){vfunc_called(this, "_ZN8S40C7_nt4v100Ev");}
void  S40C7_nt ::v101(){vfunc_called(this, "_ZN8S40C7_nt4v101Ev");}
void  S40C7_nt ::v102(){vfunc_called(this, "_ZN8S40C7_nt4v102Ev");}
void  S40C7_nt ::v103(){vfunc_called(this, "_ZN8S40C7_nt4v103Ev");}
void  S40C7_nt ::v104(){vfunc_called(this, "_ZN8S40C7_nt4v104Ev");}
void  S40C7_nt ::v105(){vfunc_called(this, "_ZN8S40C7_nt4v105Ev");}
void  S40C7_nt ::v106(){vfunc_called(this, "_ZN8S40C7_nt4v106Ev");}
void  S40C7_nt ::v107(){vfunc_called(this, "_ZN8S40C7_nt4v107Ev");}
void  S40C7_nt ::v108(){vfunc_called(this, "_ZN8S40C7_nt4v108Ev");}
void  S40C7_nt ::v109(){vfunc_called(this, "_ZN8S40C7_nt4v109Ev");}
void  S40C7_nt ::v110(){vfunc_called(this, "_ZN8S40C7_nt4v110Ev");}
void  S40C7_nt ::v111(){vfunc_called(this, "_ZN8S40C7_nt4v111Ev");}
void  S40C7_nt ::v112(){vfunc_called(this, "_ZN8S40C7_nt4v112Ev");}
void  S40C7_nt ::v113(){vfunc_called(this, "_ZN8S40C7_nt4v113Ev");}
void  S40C7_nt ::v114(){vfunc_called(this, "_ZN8S40C7_nt4v114Ev");}
void  S40C7_nt ::v115(){vfunc_called(this, "_ZN8S40C7_nt4v115Ev");}
void  S40C7_nt ::v116(){vfunc_called(this, "_ZN8S40C7_nt4v116Ev");}
void  S40C7_nt ::v117(){vfunc_called(this, "_ZN8S40C7_nt4v117Ev");}
void  S40C7_nt ::v118(){vfunc_called(this, "_ZN8S40C7_nt4v118Ev");}
void  S40C7_nt ::v119(){vfunc_called(this, "_ZN8S40C7_nt4v119Ev");}
void  S40C7_nt ::v120(){vfunc_called(this, "_ZN8S40C7_nt4v120Ev");}
void  S40C7_nt ::v121(){vfunc_called(this, "_ZN8S40C7_nt4v121Ev");}
void  S40C7_nt ::v122(){vfunc_called(this, "_ZN8S40C7_nt4v122Ev");}
void  S40C7_nt ::v123(){vfunc_called(this, "_ZN8S40C7_nt4v123Ev");}
void  S40C7_nt ::v124(){vfunc_called(this, "_ZN8S40C7_nt4v124Ev");}
void  S40C7_nt ::v125(){vfunc_called(this, "_ZN8S40C7_nt4v125Ev");}
void  S40C7_nt ::v126(){vfunc_called(this, "_ZN8S40C7_nt4v126Ev");}
void  S40C7_nt ::v127(){vfunc_called(this, "_ZN8S40C7_nt4v127Ev");}
void  S40C7_nt ::v128(){vfunc_called(this, "_ZN8S40C7_nt4v128Ev");}
void  S40C7_nt ::v129(){vfunc_called(this, "_ZN8S40C7_nt4v129Ev");}
void  S40C7_nt ::v130(){vfunc_called(this, "_ZN8S40C7_nt4v130Ev");}
void  S40C7_nt ::v131(){vfunc_called(this, "_ZN8S40C7_nt4v131Ev");}
void  S40C7_nt ::v132(){vfunc_called(this, "_ZN8S40C7_nt4v132Ev");}
void  S40C7_nt ::v133(){vfunc_called(this, "_ZN8S40C7_nt4v133Ev");}
void  S40C7_nt ::v134(){vfunc_called(this, "_ZN8S40C7_nt4v134Ev");}
void  S40C7_nt ::v135(){vfunc_called(this, "_ZN8S40C7_nt4v135Ev");}
void  S40C7_nt ::v136(){vfunc_called(this, "_ZN8S40C7_nt4v136Ev");}
void  S40C7_nt ::v137(){vfunc_called(this, "_ZN8S40C7_nt4v137Ev");}
void  S40C7_nt ::v138(){vfunc_called(this, "_ZN8S40C7_nt4v138Ev");}
void  S40C7_nt ::v139(){vfunc_called(this, "_ZN8S40C7_nt4v139Ev");}
void  S40C7_nt ::v140(){vfunc_called(this, "_ZN8S40C7_nt4v140Ev");}
void  S40C7_nt ::v141(){vfunc_called(this, "_ZN8S40C7_nt4v141Ev");}
void  S40C7_nt ::v142(){vfunc_called(this, "_ZN8S40C7_nt4v142Ev");}
void  S40C7_nt ::v143(){vfunc_called(this, "_ZN8S40C7_nt4v143Ev");}
void  S40C7_nt ::v144(){vfunc_called(this, "_ZN8S40C7_nt4v144Ev");}
void  S40C7_nt ::v145(){vfunc_called(this, "_ZN8S40C7_nt4v145Ev");}
void  S40C7_nt ::v146(){vfunc_called(this, "_ZN8S40C7_nt4v146Ev");}
void  S40C7_nt ::v147(){vfunc_called(this, "_ZN8S40C7_nt4v147Ev");}
void  S40C7_nt ::v148(){vfunc_called(this, "_ZN8S40C7_nt4v148Ev");}
void  S40C7_nt ::v149(){vfunc_called(this, "_ZN8S40C7_nt4v149Ev");}
void  S40C7_nt ::v150(){vfunc_called(this, "_ZN8S40C7_nt4v150Ev");}
void  S40C7_nt ::v151(){vfunc_called(this, "_ZN8S40C7_nt4v151Ev");}
void  S40C7_nt ::v152(){vfunc_called(this, "_ZN8S40C7_nt4v152Ev");}
void  S40C7_nt ::v153(){vfunc_called(this, "_ZN8S40C7_nt4v153Ev");}
void  S40C7_nt ::v154(){vfunc_called(this, "_ZN8S40C7_nt4v154Ev");}
void  S40C7_nt ::v155(){vfunc_called(this, "_ZN8S40C7_nt4v155Ev");}
void  S40C7_nt ::v156(){vfunc_called(this, "_ZN8S40C7_nt4v156Ev");}
void  S40C7_nt ::v157(){vfunc_called(this, "_ZN8S40C7_nt4v157Ev");}
void  S40C7_nt ::v158(){vfunc_called(this, "_ZN8S40C7_nt4v158Ev");}
void  S40C7_nt ::v159(){vfunc_called(this, "_ZN8S40C7_nt4v159Ev");}
void  S40C7_nt ::v160(){vfunc_called(this, "_ZN8S40C7_nt4v160Ev");}
void  S40C7_nt ::v161(){vfunc_called(this, "_ZN8S40C7_nt4v161Ev");}
void  S40C7_nt ::v162(){vfunc_called(this, "_ZN8S40C7_nt4v162Ev");}
void  S40C7_nt ::v163(){vfunc_called(this, "_ZN8S40C7_nt4v163Ev");}
void  S40C7_nt ::v164(){vfunc_called(this, "_ZN8S40C7_nt4v164Ev");}
void  S40C7_nt ::v165(){vfunc_called(this, "_ZN8S40C7_nt4v165Ev");}
void  S40C7_nt ::v166(){vfunc_called(this, "_ZN8S40C7_nt4v166Ev");}
void  S40C7_nt ::v167(){vfunc_called(this, "_ZN8S40C7_nt4v167Ev");}
void  S40C7_nt ::v168(){vfunc_called(this, "_ZN8S40C7_nt4v168Ev");}
void  S40C7_nt ::v169(){vfunc_called(this, "_ZN8S40C7_nt4v169Ev");}
void  S40C7_nt ::v170(){vfunc_called(this, "_ZN8S40C7_nt4v170Ev");}
void  S40C7_nt ::v171(){vfunc_called(this, "_ZN8S40C7_nt4v171Ev");}
void  S40C7_nt ::v172(){vfunc_called(this, "_ZN8S40C7_nt4v172Ev");}
void  S40C7_nt ::v173(){vfunc_called(this, "_ZN8S40C7_nt4v173Ev");}
void  S40C7_nt ::v174(){vfunc_called(this, "_ZN8S40C7_nt4v174Ev");}
void  S40C7_nt ::v175(){vfunc_called(this, "_ZN8S40C7_nt4v175Ev");}
void  S40C7_nt ::v176(){vfunc_called(this, "_ZN8S40C7_nt4v176Ev");}
void  S40C7_nt ::v177(){vfunc_called(this, "_ZN8S40C7_nt4v177Ev");}
void  S40C7_nt ::v178(){vfunc_called(this, "_ZN8S40C7_nt4v178Ev");}
void  S40C7_nt ::v179(){vfunc_called(this, "_ZN8S40C7_nt4v179Ev");}
void  S40C7_nt ::v180(){vfunc_called(this, "_ZN8S40C7_nt4v180Ev");}
void  S40C7_nt ::v181(){vfunc_called(this, "_ZN8S40C7_nt4v181Ev");}
void  S40C7_nt ::v182(){vfunc_called(this, "_ZN8S40C7_nt4v182Ev");}
void  S40C7_nt ::v183(){vfunc_called(this, "_ZN8S40C7_nt4v183Ev");}
void  S40C7_nt ::v184(){vfunc_called(this, "_ZN8S40C7_nt4v184Ev");}
void  S40C7_nt ::v185(){vfunc_called(this, "_ZN8S40C7_nt4v185Ev");}
void  S40C7_nt ::v186(){vfunc_called(this, "_ZN8S40C7_nt4v186Ev");}
void  S40C7_nt ::v187(){vfunc_called(this, "_ZN8S40C7_nt4v187Ev");}
void  S40C7_nt ::v188(){vfunc_called(this, "_ZN8S40C7_nt4v188Ev");}
void  S40C7_nt ::v189(){vfunc_called(this, "_ZN8S40C7_nt4v189Ev");}
void  S40C7_nt ::v190(){vfunc_called(this, "_ZN8S40C7_nt4v190Ev");}
void  S40C7_nt ::v191(){vfunc_called(this, "_ZN8S40C7_nt4v191Ev");}
void  S40C7_nt ::v192(){vfunc_called(this, "_ZN8S40C7_nt4v192Ev");}
void  S40C7_nt ::v193(){vfunc_called(this, "_ZN8S40C7_nt4v193Ev");}
void  S40C7_nt ::v194(){vfunc_called(this, "_ZN8S40C7_nt4v194Ev");}
void  S40C7_nt ::v195(){vfunc_called(this, "_ZN8S40C7_nt4v195Ev");}
void  S40C7_nt ::v196(){vfunc_called(this, "_ZN8S40C7_nt4v196Ev");}
void  S40C7_nt ::v197(){vfunc_called(this, "_ZN8S40C7_nt4v197Ev");}
void  S40C7_nt ::v198(){vfunc_called(this, "_ZN8S40C7_nt4v198Ev");}
void  S40C7_nt ::v199(){vfunc_called(this, "_ZN8S40C7_nt4v199Ev");}
void  S40C7_nt ::v200(){vfunc_called(this, "_ZN8S40C7_nt4v200Ev");}
void  S40C7_nt ::v201(){vfunc_called(this, "_ZN8S40C7_nt4v201Ev");}
void  S40C7_nt ::v202(){vfunc_called(this, "_ZN8S40C7_nt4v202Ev");}
void  S40C7_nt ::v203(){vfunc_called(this, "_ZN8S40C7_nt4v203Ev");}
void  S40C7_nt ::v204(){vfunc_called(this, "_ZN8S40C7_nt4v204Ev");}
void  S40C7_nt ::v205(){vfunc_called(this, "_ZN8S40C7_nt4v205Ev");}
void  S40C7_nt ::v206(){vfunc_called(this, "_ZN8S40C7_nt4v206Ev");}
void  S40C7_nt ::v207(){vfunc_called(this, "_ZN8S40C7_nt4v207Ev");}
void  S40C7_nt ::v208(){vfunc_called(this, "_ZN8S40C7_nt4v208Ev");}
void  S40C7_nt ::v209(){vfunc_called(this, "_ZN8S40C7_nt4v209Ev");}
void  S40C7_nt ::v210(){vfunc_called(this, "_ZN8S40C7_nt4v210Ev");}
void  S40C7_nt ::v211(){vfunc_called(this, "_ZN8S40C7_nt4v211Ev");}
void  S40C7_nt ::v212(){vfunc_called(this, "_ZN8S40C7_nt4v212Ev");}
void  S40C7_nt ::v213(){vfunc_called(this, "_ZN8S40C7_nt4v213Ev");}
void  S40C7_nt ::v214(){vfunc_called(this, "_ZN8S40C7_nt4v214Ev");}
S40C7_nt ::S40C7_nt(){ note_ctor("S40C7_nt", this);} // tgen

//skip512 S40C7_nt

#else // __cplusplus

extern void _ZN8S40C7_ntC1Ev();
extern void _ZN8S40C7_ntD1Ev();
Name_Map name_map_S40C7_nt[] = {
  NSPAIR(_ZN8S40C7_ntC1Ev),
  NSPAIR(_ZN8S40C7_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S40C8_nt;
extern VTBL_ENTRY _ZTI8S40C8_nt[];
extern  VTBL_ENTRY _ZTV8S40C8_nt[];
static Base_Class bases_S40C7_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S40C7_nt[];
extern void _ZN8S40C7_ntD1Ev();
extern void _ZN8S40C7_ntD0Ev();
extern void _ZN8S40C8_nt2v8Ev();
extern void _ZN8S40C8_nt2v9Ev();
extern void _ZN8S40C8_nt3v10Ev();
extern void _ZN8S40C8_nt3v11Ev();
extern void _ZN8S40C8_nt3v12Ev();
extern void _ZN8S40C8_nt3v13Ev();
extern void _ZN8S40C8_nt3v14Ev();
extern void _ZN8S40C8_nt3v15Ev();
extern void _ZN8S40C8_nt3v16Ev();
extern void _ZN8S40C8_nt3v17Ev();
extern void _ZN8S40C8_nt3v18Ev();
extern void _ZN8S40C8_nt3v19Ev();
extern void _ZN8S40C8_nt3v20Ev();
extern void _ZN8S40C8_nt3v21Ev();
extern void _ZN8S40C8_nt3v22Ev();
extern void _ZN8S40C8_nt3v23Ev();
extern void _ZN8S40C8_nt3v24Ev();
extern void _ZN8S40C8_nt3v25Ev();
extern void _ZN8S40C8_nt3v26Ev();
extern void _ZN8S40C8_nt3v27Ev();
extern void _ZN8S40C8_nt3v28Ev();
extern void _ZN8S40C8_nt3v29Ev();
extern void _ZN8S40C8_nt3v30Ev();
extern void _ZN8S40C8_nt3v31Ev();
extern void _ZN8S40C8_nt3v32Ev();
extern void _ZN8S40C8_nt3v33Ev();
extern void _ZN8S40C8_nt3v34Ev();
extern void _ZN8S40C8_nt3v35Ev();
extern void _ZN8S40C8_nt3v36Ev();
extern void _ZN8S40C8_nt3v37Ev();
extern void _ZN8S40C8_nt3v38Ev();
extern void _ZN8S40C8_nt3v39Ev();
extern void _ZN8S40C8_nt3v40Ev();
extern void _ZN8S40C8_nt3v41Ev();
extern void _ZN8S40C8_nt3v42Ev();
extern void _ZN8S40C8_nt3v43Ev();
extern void _ZN8S40C8_nt3v44Ev();
extern void _ZN8S40C8_nt3v45Ev();
extern void _ZN8S40C8_nt3v46Ev();
extern void _ZN8S40C8_nt3v47Ev();
extern void _ZN8S40C8_nt3v48Ev();
extern void _ZN8S40C8_nt3v49Ev();
extern void _ZN8S40C8_nt3v50Ev();
extern void _ZN8S40C8_nt3v51Ev();
extern void _ZN8S40C8_nt3v52Ev();
extern void _ZN8S40C8_nt3v53Ev();
extern void _ZN8S40C8_nt3v54Ev();
extern void _ZN8S40C8_nt3v55Ev();
extern void _ZN8S40C8_nt3v56Ev();
extern void _ZN8S40C8_nt3v57Ev();
extern void _ZN8S40C8_nt3v58Ev();
extern void _ZN8S40C8_nt3v59Ev();
extern void _ZN8S40C8_nt3v60Ev();
extern void _ZN8S40C8_nt3v61Ev();
extern void _ZN8S40C8_nt3v62Ev();
extern void _ZN8S40C8_nt3v63Ev();
extern void _ZN8S40C8_nt3v64Ev();
extern void _ZN8S40C8_nt3v65Ev();
extern void _ZN8S40C8_nt3v66Ev();
extern void _ZN8S40C8_nt3v67Ev();
extern void _ZN8S40C8_nt3v68Ev();
extern void _ZN8S40C8_nt3v69Ev();
extern void _ZN8S40C8_nt3v70Ev();
extern void _ZN8S40C8_nt3v71Ev();
extern void _ZN8S40C7_nt3v72Ev();
extern void _ZN8S40C7_nt3v73Ev();
extern void _ZN8S40C7_nt3v74Ev();
extern void _ZN8S40C7_nt3v75Ev();
extern void _ZN8S40C7_nt3v76Ev();
extern void _ZN8S40C7_nt3v77Ev();
extern void _ZN8S40C7_nt3v78Ev();
extern void _ZN8S40C7_nt3v79Ev();
extern void _ZN8S40C7_nt3v80Ev();
extern void _ZN8S40C7_nt3v81Ev();
extern void _ZN8S40C7_nt3v82Ev();
extern void _ZN8S40C7_nt3v83Ev();
extern void _ZN8S40C7_nt3v84Ev();
extern void _ZN8S40C7_nt3v85Ev();
extern void _ZN8S40C7_nt3v86Ev();
extern void _ZN8S40C7_nt3v87Ev();
extern void _ZN8S40C7_nt3v88Ev();
extern void _ZN8S40C7_nt3v89Ev();
extern void _ZN8S40C7_nt3v90Ev();
extern void _ZN8S40C7_nt3v91Ev();
extern void _ZN8S40C7_nt3v92Ev();
extern void _ZN8S40C7_nt3v93Ev();
extern void _ZN8S40C7_nt3v94Ev();
extern void _ZN8S40C7_nt3v95Ev();
extern void _ZN8S40C7_nt3v96Ev();
extern void _ZN8S40C7_nt3v97Ev();
extern void _ZN8S40C7_nt3v98Ev();
extern void _ZN8S40C7_nt3v99Ev();
extern void _ZN8S40C7_nt4v100Ev();
extern void _ZN8S40C7_nt4v101Ev();
extern void _ZN8S40C7_nt4v102Ev();
extern void _ZN8S40C7_nt4v103Ev();
extern void _ZN8S40C7_nt4v104Ev();
extern void _ZN8S40C7_nt4v105Ev();
extern void _ZN8S40C7_nt4v106Ev();
extern void _ZN8S40C7_nt4v107Ev();
extern void _ZN8S40C7_nt4v108Ev();
extern void _ZN8S40C7_nt4v109Ev();
extern void _ZN8S40C7_nt4v110Ev();
extern void _ZN8S40C7_nt4v111Ev();
extern void _ZN8S40C7_nt4v112Ev();
extern void _ZN8S40C7_nt4v113Ev();
extern void _ZN8S40C7_nt4v114Ev();
extern void _ZN8S40C7_nt4v115Ev();
extern void _ZN8S40C7_nt4v116Ev();
extern void _ZN8S40C7_nt4v117Ev();
extern void _ZN8S40C7_nt4v118Ev();
extern void _ZN8S40C7_nt4v119Ev();
extern void _ZN8S40C7_nt4v120Ev();
extern void _ZN8S40C7_nt4v121Ev();
extern void _ZN8S40C7_nt4v122Ev();
extern void _ZN8S40C7_nt4v123Ev();
extern void _ZN8S40C7_nt4v124Ev();
extern void _ZN8S40C7_nt4v125Ev();
extern void _ZN8S40C7_nt4v126Ev();
extern void _ZN8S40C7_nt4v127Ev();
extern void _ZN8S40C7_nt4v128Ev();
extern void _ZN8S40C7_nt4v129Ev();
extern void _ZN8S40C7_nt4v130Ev();
extern void _ZN8S40C7_nt4v131Ev();
extern void _ZN8S40C7_nt4v132Ev();
extern void _ZN8S40C7_nt4v133Ev();
extern void _ZN8S40C7_nt4v134Ev();
extern void _ZN8S40C7_nt4v135Ev();
extern void _ZN8S40C7_nt4v136Ev();
extern void _ZN8S40C7_nt4v137Ev();
extern void _ZN8S40C7_nt4v138Ev();
extern void _ZN8S40C7_nt4v139Ev();
extern void _ZN8S40C7_nt4v140Ev();
extern void _ZN8S40C7_nt4v141Ev();
extern void _ZN8S40C7_nt4v142Ev();
extern void _ZN8S40C7_nt4v143Ev();
extern void _ZN8S40C7_nt4v144Ev();
extern void _ZN8S40C7_nt4v145Ev();
extern void _ZN8S40C7_nt4v146Ev();
extern void _ZN8S40C7_nt4v147Ev();
extern void _ZN8S40C7_nt4v148Ev();
extern void _ZN8S40C7_nt4v149Ev();
extern void _ZN8S40C7_nt4v150Ev();
extern void _ZN8S40C7_nt4v151Ev();
extern void _ZN8S40C7_nt4v152Ev();
extern void _ZN8S40C7_nt4v153Ev();
extern void _ZN8S40C7_nt4v154Ev();
extern void _ZN8S40C7_nt4v155Ev();
extern void _ZN8S40C7_nt4v156Ev();
extern void _ZN8S40C7_nt4v157Ev();
extern void _ZN8S40C7_nt4v158Ev();
extern void _ZN8S40C7_nt4v159Ev();
extern void _ZN8S40C7_nt4v160Ev();
extern void _ZN8S40C7_nt4v161Ev();
extern void _ZN8S40C7_nt4v162Ev();
extern void _ZN8S40C7_nt4v163Ev();
extern void _ZN8S40C7_nt4v164Ev();
extern void _ZN8S40C7_nt4v165Ev();
extern void _ZN8S40C7_nt4v166Ev();
extern void _ZN8S40C7_nt4v167Ev();
extern void _ZN8S40C7_nt4v168Ev();
extern void _ZN8S40C7_nt4v169Ev();
extern void _ZN8S40C7_nt4v170Ev();
extern void _ZN8S40C7_nt4v171Ev();
extern void _ZN8S40C7_nt4v172Ev();
extern void _ZN8S40C7_nt4v173Ev();
extern void _ZN8S40C7_nt4v174Ev();
extern void _ZN8S40C7_nt4v175Ev();
extern void _ZN8S40C7_nt4v176Ev();
extern void _ZN8S40C7_nt4v177Ev();
extern void _ZN8S40C7_nt4v178Ev();
extern void _ZN8S40C7_nt4v179Ev();
extern void _ZN8S40C7_nt4v180Ev();
extern void _ZN8S40C7_nt4v181Ev();
extern void _ZN8S40C7_nt4v182Ev();
extern void _ZN8S40C7_nt4v183Ev();
extern void _ZN8S40C7_nt4v184Ev();
extern void _ZN8S40C7_nt4v185Ev();
extern void _ZN8S40C7_nt4v186Ev();
extern void _ZN8S40C7_nt4v187Ev();
extern void _ZN8S40C7_nt4v188Ev();
extern void _ZN8S40C7_nt4v189Ev();
extern void _ZN8S40C7_nt4v190Ev();
extern void _ZN8S40C7_nt4v191Ev();
extern void _ZN8S40C7_nt4v192Ev();
extern void _ZN8S40C7_nt4v193Ev();
extern void _ZN8S40C7_nt4v194Ev();
extern void _ZN8S40C7_nt4v195Ev();
extern void _ZN8S40C7_nt4v196Ev();
extern void _ZN8S40C7_nt4v197Ev();
extern void _ZN8S40C7_nt4v198Ev();
extern void _ZN8S40C7_nt4v199Ev();
extern void _ZN8S40C7_nt4v200Ev();
extern void _ZN8S40C7_nt4v201Ev();
extern void _ZN8S40C7_nt4v202Ev();
extern void _ZN8S40C7_nt4v203Ev();
extern void _ZN8S40C7_nt4v204Ev();
extern void _ZN8S40C7_nt4v205Ev();
extern void _ZN8S40C7_nt4v206Ev();
extern void _ZN8S40C7_nt4v207Ev();
extern void _ZN8S40C7_nt4v208Ev();
extern void _ZN8S40C7_nt4v209Ev();
extern void _ZN8S40C7_nt4v210Ev();
extern void _ZN8S40C7_nt4v211Ev();
extern void _ZN8S40C7_nt4v212Ev();
extern void _ZN8S40C7_nt4v213Ev();
extern void _ZN8S40C7_nt4v214Ev();
static  VTBL_ENTRY vtc_S40C7_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S40C7_nt[0]),
  (VTBL_ENTRY)&_ZN8S40C7_ntD1Ev,
  (VTBL_ENTRY)&_ZN8S40C7_ntD0Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v11Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v13Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v14Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v15Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v16Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v17Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v18Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v22Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v23Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v24Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v25Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v26Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v27Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v28Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v29Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v30Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v31Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v32Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v33Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v34Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v35Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v36Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v37Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v38Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v39Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v40Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v41Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v42Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v43Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v44Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v45Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v46Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v47Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v48Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v49Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v50Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v51Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v52Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v53Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v54Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v55Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v56Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v57Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v58Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v59Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v60Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v61Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v62Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v63Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v64Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v65Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v66Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v67Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v68Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v69Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v70Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v71Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v72Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v73Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v74Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v75Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v76Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v77Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v78Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v79Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v80Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v81Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v82Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v83Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v84Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v85Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v86Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v87Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v88Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v89Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v90Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v91Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v92Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v93Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v94Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v95Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v96Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v97Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v98Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v99Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v100Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v101Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v102Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v103Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v104Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v105Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v106Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v107Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v108Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v109Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v110Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v111Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v112Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v113Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v114Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v115Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v116Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v117Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v118Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v119Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v120Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v121Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v122Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v123Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v124Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v125Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v126Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v127Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v128Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v129Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v130Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v131Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v132Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v133Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v134Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v135Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v136Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v137Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v138Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v139Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v140Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v141Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v142Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v143Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v144Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v145Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v146Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v147Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v148Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v149Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v150Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v151Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v152Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v153Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v154Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v155Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v156Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v157Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v158Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v159Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v160Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v161Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v162Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v163Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v164Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v165Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v166Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v167Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v168Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v169Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v170Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v171Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v172Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v173Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v174Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v175Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v176Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v177Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v178Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v179Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v180Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v181Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v182Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v183Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v184Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v185Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v186Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v187Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v188Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v189Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v190Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v191Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v192Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v193Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v194Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v195Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v196Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v197Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v198Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v199Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v200Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v201Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v202Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v203Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v204Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v205Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v206Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v207Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v208Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v209Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v210Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v211Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v212Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v213Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v214Ev,
};
extern VTBL_ENTRY _ZTI8S40C7_nt[];
VTBL_ENTRY *P__ZTI8S40C7_nt = _ZTI8S40C7_nt; 
extern  VTBL_ENTRY _ZTV8S40C7_nt[];
Class_Descriptor cd_S40C7_nt = {  "S40C7_nt", // class name
  bases_S40C7_nt, 1,
  &(vtc_S40C7_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(568,436), // object size
  NSPAIRA(_ZTI8S40C7_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S40C7_nt),211, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

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



static void Test_S40C28()
{
  extern Class_Descriptor cd_S40C28;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S40C28, buf);
    S40C28 &lv = *(new (buf) S40C28());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S40C28)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S40C28)");
    check_base_class_offset(lv, (S40C12_nt*), 0, "S40C28");
    test_class_info(&lv, &cd_S40C28);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS40C28(Test_S40C28, "S40C28", ABISELECT(16,12));

#else // __cplusplus

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

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

#ifdef __cplusplus

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



static void Test_S40C27()
{
  extern Class_Descriptor cd_S40C27;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S40C27, buf);
    S40C27 &lv = *(new (buf) S40C27());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S40C27)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S40C27)");
    check_base_class_offset(lv, (S40C12_nt*)(S40C28*), 0, "S40C27");
    check_base_class_offset(lv, (S40C28*), 0, "S40C27");
    test_class_info(&lv, &cd_S40C27);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS40C27(Test_S40C27, "S40C27", ABISELECT(16,12));

#else // __cplusplus

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

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

#ifdef __cplusplus

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



//skip512 S40C26_nt

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S40C6_nt  : S40C7_nt {
  int s40c6f0[3];
  void *s40c6f1[2];
  int s40c6f2;
  void *s40c6f3[2];
  unsigned int s40c6f4:1;
  unsigned int s40c6f5:1;
  unsigned int s40c6f6:1;
  unsigned int s40c6f7:1;
  unsigned int s40c6f8:1;
  unsigned int s40c6f9:1;
  unsigned int s40c6f10:1;
  unsigned int s40c6f11:1;
  unsigned int s40c6f12:1;
  unsigned int s40c6f13:1;
  unsigned int s40c6f14:1;
  unsigned int s40c6f15:1;
  unsigned int s40c6f16:1;
  unsigned int s40c6f17:1;
  unsigned int s40c6f18:1;
  unsigned int s40c6f19:1;
  unsigned int s40c6f20:1;
  unsigned int s40c6f21:1;
  unsigned int s40c6f22:1;
  unsigned int s40c6f23:1;
  unsigned int s40c6f24:1;
  unsigned int s40c6f25:1;
  unsigned int s40c6f26:1;
  unsigned int s40c6f27:1;
  unsigned int s40c6f28:1;
  unsigned int s40c6f29:1;
  unsigned int s40c6f30:1;
  unsigned int s40c6f31:1;
  unsigned int s40c6f32:1;
  unsigned int s40c6f33:1;
  unsigned int s40c6f34:1;
  unsigned int s40c6f35:1;
  unsigned int s40c6f36:1;
  unsigned int s40c6f37:1;
  unsigned int s40c6f38:1;
  unsigned int s40c6f39:1;
  unsigned int s40c6f40:1;
  unsigned int s40c6f41:1;
  unsigned int s40c6f42:1;
  unsigned int s40c6f43:1;
  unsigned int s40c6f44:1;
  unsigned int s40c6f45:1;
  unsigned int s40c6f46:1;
  unsigned int s40c6f47:1;
  unsigned int s40c6f48:1;
  unsigned int s40c6f49:1;
  unsigned int s40c6f50:1;
  unsigned int s40c6f51:1;
  unsigned int s40c6f52:1;
  unsigned int s40c6f53:1;
  int s40c6f54[5];
  char s40c6f55[4];
  int s40c6f56[10];
  void *s40c6f57[2];
  int s40c6f58[4];
  ::S40C18_nt s40c6f59;
  int s40c6f60[19];
  ::S40C18_nt s40c6f61;
  int s40c6f62[2];
  void *s40c6f63;
  int s40c6f64[5];
  ::S40C18_nt s40c6f65;
  ::S40C18_nt s40c6f66;
  int s40c6f67;
  void *s40c6f68;
  int s40c6f69;
  ::S40C18_nt s40c6f70;
  int s40c6f71;
  void *s40c6f72;
  int s40c6f73[3];
  ::S40C26_nt s40c6f74;
  void *s40c6f75[3];
  ::S40C9_nt s40c6f76;
  ::S40C9_nt s40c6f77;
  void *s40c6f78;
  int s40c6f79;
  ::S40C18_nt s40c6f80;
  void *s40c6f81;
  ::S40C18_nt s40c6f82;
  void *s40c6f83[2];
  int s40c6f84[2];
  void *s40c6f85;
  int s40c6f86[2];
  void *s40c6f87;
  int s40c6f88[3];
  void *s40c6f89[3];
  ::S40C18_nt s40c6f90;
  ::S40C18_nt s40c6f91;
  int s40c6f92;
  void *s40c6f93[2];
  int s40c6f94;
  virtual  ~S40C6_nt(); // _ZN8S40C6_ntD1Ev
  virtual void  v215(); // _ZN8S40C6_nt4v215Ev
  virtual void  v216(); // _ZN8S40C6_nt4v216Ev
  virtual void  v217(); // _ZN8S40C6_nt4v217Ev
  virtual void  v218(); // _ZN8S40C6_nt4v218Ev
  virtual void  v219(); // _ZN8S40C6_nt4v219Ev
  virtual void  v220(); // _ZN8S40C6_nt4v220Ev
  virtual void  v221(); // _ZN8S40C6_nt4v221Ev
  virtual void  v222(); // _ZN8S40C6_nt4v222Ev
  virtual void  v223(); // _ZN8S40C6_nt4v223Ev
  virtual void  v224(); // _ZN8S40C6_nt4v224Ev
  virtual void  v225(); // _ZN8S40C6_nt4v225Ev
  virtual void  v226(); // _ZN8S40C6_nt4v226Ev
  virtual void  v227(); // _ZN8S40C6_nt4v227Ev
  virtual void  v228(); // _ZN8S40C6_nt4v228Ev
  virtual void  v229(); // _ZN8S40C6_nt4v229Ev
  virtual void  v230(); // _ZN8S40C6_nt4v230Ev
  virtual void  v231(); // _ZN8S40C6_nt4v231Ev
  virtual void  v232(); // _ZN8S40C6_nt4v232Ev
  virtual void  v233(); // _ZN8S40C6_nt4v233Ev
  virtual void  v234(); // _ZN8S40C6_nt4v234Ev
  virtual void  v235(); // _ZN8S40C6_nt4v235Ev
  virtual void  v236(); // _ZN8S40C6_nt4v236Ev
  virtual void  v237(); // _ZN8S40C6_nt4v237Ev
  virtual void  v238(); // _ZN8S40C6_nt4v238Ev
  virtual void  v239(); // _ZN8S40C6_nt4v239Ev
  virtual void  v240(); // _ZN8S40C6_nt4v240Ev
  virtual void  v241(); // _ZN8S40C6_nt4v241Ev
  virtual void  v242(); // _ZN8S40C6_nt4v242Ev
  virtual void  v243(); // _ZN8S40C6_nt4v243Ev
  virtual void  v244(); // _ZN8S40C6_nt4v244Ev
  virtual void  v245(); // _ZN8S40C6_nt4v245Ev
  virtual void  v246(); // _ZN8S40C6_nt4v246Ev
  virtual void  v247(); // _ZN8S40C6_nt4v247Ev
  virtual void  v248(); // _ZN8S40C6_nt4v248Ev
  virtual void  v249(); // _ZN8S40C6_nt4v249Ev
  virtual void  v250(); // _ZN8S40C6_nt4v250Ev
  virtual void  v251(); // _ZN8S40C6_nt4v251Ev
  virtual void  v252(); // _ZN8S40C6_nt4v252Ev
  virtual void  v253(); // _ZN8S40C6_nt4v253Ev
  virtual void  v254(); // _ZN8S40C6_nt4v254Ev
  virtual void  v255(); // _ZN8S40C6_nt4v255Ev
  virtual void  v256(); // _ZN8S40C6_nt4v256Ev
  virtual void  v257(); // _ZN8S40C6_nt4v257Ev
  virtual void  v258(); // _ZN8S40C6_nt4v258Ev
  virtual void  v259(); // _ZN8S40C6_nt4v259Ev
  virtual void  v260(); // _ZN8S40C6_nt4v260Ev
  virtual void  v261(); // _ZN8S40C6_nt4v261Ev
  virtual void  v262(); // _ZN8S40C6_nt4v262Ev
  virtual void  v263(); // _ZN8S40C6_nt4v263Ev
  virtual void  v264(); // _ZN8S40C6_nt4v264Ev
  virtual void  v265(); // _ZN8S40C6_nt4v265Ev
  virtual void  v266(); // _ZN8S40C6_nt4v266Ev
  virtual void  v267(); // _ZN8S40C6_nt4v267Ev
  virtual void  v268(); // _ZN8S40C6_nt4v268Ev
  virtual void  v269(); // _ZN8S40C6_nt4v269Ev
  virtual void  v270(); // _ZN8S40C6_nt4v270Ev
  virtual void  v271(); // _ZN8S40C6_nt4v271Ev
  virtual void  v272(); // _ZN8S40C6_nt4v272Ev
  virtual void  v273(); // _ZN8S40C6_nt4v273Ev
  virtual void  v274(); // _ZN8S40C6_nt4v274Ev
  virtual void  v275(); // _ZN8S40C6_nt4v275Ev
  virtual void  v276(); // _ZN8S40C6_nt4v276Ev
  virtual void  v277(); // _ZN8S40C6_nt4v277Ev
  virtual void  v278(); // _ZN8S40C6_nt4v278Ev
  virtual void  v279(); // _ZN8S40C6_nt4v279Ev
  virtual void  v280(); // _ZN8S40C6_nt4v280Ev
  virtual void  v281(); // _ZN8S40C6_nt4v281Ev
  virtual void  v282(); // _ZN8S40C6_nt4v282Ev
  virtual void  v283(); // _ZN8S40C6_nt4v283Ev
  virtual void  v284(); // _ZN8S40C6_nt4v284Ev
  virtual void  v285(); // _ZN8S40C6_nt4v285Ev
  virtual void  v286(); // _ZN8S40C6_nt4v286Ev
  virtual void  v287(); // _ZN8S40C6_nt4v287Ev
  virtual void  v288(); // _ZN8S40C6_nt4v288Ev
  virtual void  v289(); // _ZN8S40C6_nt4v289Ev
  virtual void  v290(); // _ZN8S40C6_nt4v290Ev
  virtual void  v291(); // _ZN8S40C6_nt4v291Ev
  virtual void  v292(); // _ZN8S40C6_nt4v292Ev
  virtual void  v293(); // _ZN8S40C6_nt4v293Ev
  virtual void  v294(); // _ZN8S40C6_nt4v294Ev
  virtual void  v295(); // _ZN8S40C6_nt4v295Ev
  virtual void  v296(); // _ZN8S40C6_nt4v296Ev
  virtual void  v297(); // _ZN8S40C6_nt4v297Ev
  virtual void  v298(); // _ZN8S40C6_nt4v298Ev
  virtual void  v299(); // _ZN8S40C6_nt4v299Ev
  virtual void  v300(); // _ZN8S40C6_nt4v300Ev
  virtual void  v301(); // _ZN8S40C6_nt4v301Ev
  virtual void  v302(); // _ZN8S40C6_nt4v302Ev
  virtual void  v303(); // _ZN8S40C6_nt4v303Ev
  virtual void  v304(); // _ZN8S40C6_nt4v304Ev
  virtual void  v305(); // _ZN8S40C6_nt4v305Ev
  virtual void  v306(); // _ZN8S40C6_nt4v306Ev
  virtual void  v307(); // _ZN8S40C6_nt4v307Ev
  virtual void  v308(); // _ZN8S40C6_nt4v308Ev
  virtual void  v309(); // _ZN8S40C6_nt4v309Ev
  virtual void  v310(); // _ZN8S40C6_nt4v310Ev
  virtual void  v311(); // _ZN8S40C6_nt4v311Ev
  virtual void  v312(); // _ZN8S40C6_nt4v312Ev
  S40C6_nt(); // tgen
};
//SIG(-1 S40C6_nt) C1{ BC2{ BC3{ vd v99 v100 v101 v102 v103 v104 v105 v106 v107 v108 v109 v110 v111 v112 v113 v114 v115 v116 v117 v118 v119 v120 v121 v122 v123 v124 v125 v126 v127 v128 v129 v130 v131 v132 v133 v134 v135 v136 v137 v138 v139 v140 v141 v142 v143 v144 v145 v146 v147 v148 v149 v150 v151 v152 v153 v154 v155 v156 v157 v158 v159 v160 v161 v162 Fi FL Fp[4] Fi[2] Fp FC4{ m Fi[2]} Fp[2]} vd v163 v164 v165 v166 v167 v168 v169 v170 v171 v172 v173 v174 v175 v176 v177 v178 v179 v180 v181 v182 v183 v184 v185 v186 v187 v188 v189 v190 v191 v192 v193 v194 v195 v196 v197 v198 v199 v200 v201 v202 v203 v204 v205 v206 v207 v208 v209 v210 v211 v212 v213 v214 v215 v216 v217 v218 v219 v220 v221 v222 v223 v224 v225 v226 v227 v228 v229 v230 v231 v232 v233 v234 v235 v236 v237 v238 v239 v240 v241 v242 v243 v244 v245 v246 v247 v248 v249 v250 v251 v252 v253 v254 v255 v256 v257 v258 v259 v260 v261 v262 v263 v264 v265 v266 v267 v268 v269 v270 v271 v272 v273 v274 v275 v276 v277 v278 v279 v280 v281 v282 v283 v284 v285 v286 v287 v288 v289 v290 v291 v292 v293 v294 v295 v296 v297 v298 v299 v300 v301 v302 v303 v304 v305 FC5{ BC6{ BC7{ m Fp Fi[2]}}} FC5 FC8{ m Fi} Fi Fc[4] Fp[2] FC5 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[5] Fp[2] Fi[3] FC4 FC4 FC4 FC9{ BC10{ BC7}} FC9 Fi Fp[2] FC11{ m Fi[3]} FC11 FC11 FC11 Fp FC4 FC9 FC11 FC11 Fi FC11 FC11 Fp Fi Fc FC11 FC11 Fp Fi Fp FC9 FC12{ BC13{ BC7}} FC12} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 v90 v91 v92 v93 v94 v95 v96 v97 v98 Fi[3] Fp[2] Fi Fp[2] Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[5] Fc[4] Fi[10] Fp[2] Fi[4] FC11 Fi[19] FC11 Fi[2] Fp Fi[5] FC11 FC11 Fi Fp Fi FC11 Fi Fp Fi[3] FC14{ BC15{ BC16{ BC7}}} Fp[3] FC4 FC4 Fp Fi FC11 Fp FC11 Fp[2] Fi[2] Fp Fi[2] Fp Fi[3] Fp[3] FC11 FC11 Fi Fp[2] Fi}


 S40C6_nt ::~S40C6_nt(){ note_dtor("S40C6_nt", this);}
void  S40C6_nt ::v215(){vfunc_called(this, "_ZN8S40C6_nt4v215Ev");}
void  S40C6_nt ::v216(){vfunc_called(this, "_ZN8S40C6_nt4v216Ev");}
void  S40C6_nt ::v217(){vfunc_called(this, "_ZN8S40C6_nt4v217Ev");}
void  S40C6_nt ::v218(){vfunc_called(this, "_ZN8S40C6_nt4v218Ev");}
void  S40C6_nt ::v219(){vfunc_called(this, "_ZN8S40C6_nt4v219Ev");}
void  S40C6_nt ::v220(){vfunc_called(this, "_ZN8S40C6_nt4v220Ev");}
void  S40C6_nt ::v221(){vfunc_called(this, "_ZN8S40C6_nt4v221Ev");}
void  S40C6_nt ::v222(){vfunc_called(this, "_ZN8S40C6_nt4v222Ev");}
void  S40C6_nt ::v223(){vfunc_called(this, "_ZN8S40C6_nt4v223Ev");}
void  S40C6_nt ::v224(){vfunc_called(this, "_ZN8S40C6_nt4v224Ev");}
void  S40C6_nt ::v225(){vfunc_called(this, "_ZN8S40C6_nt4v225Ev");}
void  S40C6_nt ::v226(){vfunc_called(this, "_ZN8S40C6_nt4v226Ev");}
void  S40C6_nt ::v227(){vfunc_called(this, "_ZN8S40C6_nt4v227Ev");}
void  S40C6_nt ::v228(){vfunc_called(this, "_ZN8S40C6_nt4v228Ev");}
void  S40C6_nt ::v229(){vfunc_called(this, "_ZN8S40C6_nt4v229Ev");}
void  S40C6_nt ::v230(){vfunc_called(this, "_ZN8S40C6_nt4v230Ev");}
void  S40C6_nt ::v231(){vfunc_called(this, "_ZN8S40C6_nt4v231Ev");}
void  S40C6_nt ::v232(){vfunc_called(this, "_ZN8S40C6_nt4v232Ev");}
void  S40C6_nt ::v233(){vfunc_called(this, "_ZN8S40C6_nt4v233Ev");}
void  S40C6_nt ::v234(){vfunc_called(this, "_ZN8S40C6_nt4v234Ev");}
void  S40C6_nt ::v235(){vfunc_called(this, "_ZN8S40C6_nt4v235Ev");}
void  S40C6_nt ::v236(){vfunc_called(this, "_ZN8S40C6_nt4v236Ev");}
void  S40C6_nt ::v237(){vfunc_called(this, "_ZN8S40C6_nt4v237Ev");}
void  S40C6_nt ::v238(){vfunc_called(this, "_ZN8S40C6_nt4v238Ev");}
void  S40C6_nt ::v239(){vfunc_called(this, "_ZN8S40C6_nt4v239Ev");}
void  S40C6_nt ::v240(){vfunc_called(this, "_ZN8S40C6_nt4v240Ev");}
void  S40C6_nt ::v241(){vfunc_called(this, "_ZN8S40C6_nt4v241Ev");}
void  S40C6_nt ::v242(){vfunc_called(this, "_ZN8S40C6_nt4v242Ev");}
void  S40C6_nt ::v243(){vfunc_called(this, "_ZN8S40C6_nt4v243Ev");}
void  S40C6_nt ::v244(){vfunc_called(this, "_ZN8S40C6_nt4v244Ev");}
void  S40C6_nt ::v245(){vfunc_called(this, "_ZN8S40C6_nt4v245Ev");}
void  S40C6_nt ::v246(){vfunc_called(this, "_ZN8S40C6_nt4v246Ev");}
void  S40C6_nt ::v247(){vfunc_called(this, "_ZN8S40C6_nt4v247Ev");}
void  S40C6_nt ::v248(){vfunc_called(this, "_ZN8S40C6_nt4v248Ev");}
void  S40C6_nt ::v249(){vfunc_called(this, "_ZN8S40C6_nt4v249Ev");}
void  S40C6_nt ::v250(){vfunc_called(this, "_ZN8S40C6_nt4v250Ev");}
void  S40C6_nt ::v251(){vfunc_called(this, "_ZN8S40C6_nt4v251Ev");}
void  S40C6_nt ::v252(){vfunc_called(this, "_ZN8S40C6_nt4v252Ev");}
void  S40C6_nt ::v253(){vfunc_called(this, "_ZN8S40C6_nt4v253Ev");}
void  S40C6_nt ::v254(){vfunc_called(this, "_ZN8S40C6_nt4v254Ev");}
void  S40C6_nt ::v255(){vfunc_called(this, "_ZN8S40C6_nt4v255Ev");}
void  S40C6_nt ::v256(){vfunc_called(this, "_ZN8S40C6_nt4v256Ev");}
void  S40C6_nt ::v257(){vfunc_called(this, "_ZN8S40C6_nt4v257Ev");}
void  S40C6_nt ::v258(){vfunc_called(this, "_ZN8S40C6_nt4v258Ev");}
void  S40C6_nt ::v259(){vfunc_called(this, "_ZN8S40C6_nt4v259Ev");}
void  S40C6_nt ::v260(){vfunc_called(this, "_ZN8S40C6_nt4v260Ev");}
void  S40C6_nt ::v261(){vfunc_called(this, "_ZN8S40C6_nt4v261Ev");}
void  S40C6_nt ::v262(){vfunc_called(this, "_ZN8S40C6_nt4v262Ev");}
void  S40C6_nt ::v263(){vfunc_called(this, "_ZN8S40C6_nt4v263Ev");}
void  S40C6_nt ::v264(){vfunc_called(this, "_ZN8S40C6_nt4v264Ev");}
void  S40C6_nt ::v265(){vfunc_called(this, "_ZN8S40C6_nt4v265Ev");}
void  S40C6_nt ::v266(){vfunc_called(this, "_ZN8S40C6_nt4v266Ev");}
void  S40C6_nt ::v267(){vfunc_called(this, "_ZN8S40C6_nt4v267Ev");}
void  S40C6_nt ::v268(){vfunc_called(this, "_ZN8S40C6_nt4v268Ev");}
void  S40C6_nt ::v269(){vfunc_called(this, "_ZN8S40C6_nt4v269Ev");}
void  S40C6_nt ::v270(){vfunc_called(this, "_ZN8S40C6_nt4v270Ev");}
void  S40C6_nt ::v271(){vfunc_called(this, "_ZN8S40C6_nt4v271Ev");}
void  S40C6_nt ::v272(){vfunc_called(this, "_ZN8S40C6_nt4v272Ev");}
void  S40C6_nt ::v273(){vfunc_called(this, "_ZN8S40C6_nt4v273Ev");}
void  S40C6_nt ::v274(){vfunc_called(this, "_ZN8S40C6_nt4v274Ev");}
void  S40C6_nt ::v275(){vfunc_called(this, "_ZN8S40C6_nt4v275Ev");}
void  S40C6_nt ::v276(){vfunc_called(this, "_ZN8S40C6_nt4v276Ev");}
void  S40C6_nt ::v277(){vfunc_called(this, "_ZN8S40C6_nt4v277Ev");}
void  S40C6_nt ::v278(){vfunc_called(this, "_ZN8S40C6_nt4v278Ev");}
void  S40C6_nt ::v279(){vfunc_called(this, "_ZN8S40C6_nt4v279Ev");}
void  S40C6_nt ::v280(){vfunc_called(this, "_ZN8S40C6_nt4v280Ev");}
void  S40C6_nt ::v281(){vfunc_called(this, "_ZN8S40C6_nt4v281Ev");}
void  S40C6_nt ::v282(){vfunc_called(this, "_ZN8S40C6_nt4v282Ev");}
void  S40C6_nt ::v283(){vfunc_called(this, "_ZN8S40C6_nt4v283Ev");}
void  S40C6_nt ::v284(){vfunc_called(this, "_ZN8S40C6_nt4v284Ev");}
void  S40C6_nt ::v285(){vfunc_called(this, "_ZN8S40C6_nt4v285Ev");}
void  S40C6_nt ::v286(){vfunc_called(this, "_ZN8S40C6_nt4v286Ev");}
void  S40C6_nt ::v287(){vfunc_called(this, "_ZN8S40C6_nt4v287Ev");}
void  S40C6_nt ::v288(){vfunc_called(this, "_ZN8S40C6_nt4v288Ev");}
void  S40C6_nt ::v289(){vfunc_called(this, "_ZN8S40C6_nt4v289Ev");}
void  S40C6_nt ::v290(){vfunc_called(this, "_ZN8S40C6_nt4v290Ev");}
void  S40C6_nt ::v291(){vfunc_called(this, "_ZN8S40C6_nt4v291Ev");}
void  S40C6_nt ::v292(){vfunc_called(this, "_ZN8S40C6_nt4v292Ev");}
void  S40C6_nt ::v293(){vfunc_called(this, "_ZN8S40C6_nt4v293Ev");}
void  S40C6_nt ::v294(){vfunc_called(this, "_ZN8S40C6_nt4v294Ev");}
void  S40C6_nt ::v295(){vfunc_called(this, "_ZN8S40C6_nt4v295Ev");}
void  S40C6_nt ::v296(){vfunc_called(this, "_ZN8S40C6_nt4v296Ev");}
void  S40C6_nt ::v297(){vfunc_called(this, "_ZN8S40C6_nt4v297Ev");}
void  S40C6_nt ::v298(){vfunc_called(this, "_ZN8S40C6_nt4v298Ev");}
void  S40C6_nt ::v299(){vfunc_called(this, "_ZN8S40C6_nt4v299Ev");}
void  S40C6_nt ::v300(){vfunc_called(this, "_ZN8S40C6_nt4v300Ev");}
void  S40C6_nt ::v301(){vfunc_called(this, "_ZN8S40C6_nt4v301Ev");}
void  S40C6_nt ::v302(){vfunc_called(this, "_ZN8S40C6_nt4v302Ev");}
void  S40C6_nt ::v303(){vfunc_called(this, "_ZN8S40C6_nt4v303Ev");}
void  S40C6_nt ::v304(){vfunc_called(this, "_ZN8S40C6_nt4v304Ev");}
void  S40C6_nt ::v305(){vfunc_called(this, "_ZN8S40C6_nt4v305Ev");}
void  S40C6_nt ::v306(){vfunc_called(this, "_ZN8S40C6_nt4v306Ev");}
void  S40C6_nt ::v307(){vfunc_called(this, "_ZN8S40C6_nt4v307Ev");}
void  S40C6_nt ::v308(){vfunc_called(this, "_ZN8S40C6_nt4v308Ev");}
void  S40C6_nt ::v309(){vfunc_called(this, "_ZN8S40C6_nt4v309Ev");}
void  S40C6_nt ::v310(){vfunc_called(this, "_ZN8S40C6_nt4v310Ev");}
void  S40C6_nt ::v311(){vfunc_called(this, "_ZN8S40C6_nt4v311Ev");}
void  S40C6_nt ::v312(){vfunc_called(this, "_ZN8S40C6_nt4v312Ev");}
S40C6_nt ::S40C6_nt(){ note_ctor("S40C6_nt", this);} // tgen

//skip512 S40C6_nt

#else // __cplusplus

extern void _ZN8S40C6_ntC1Ev();
extern void _ZN8S40C6_ntD1Ev();
Name_Map name_map_S40C6_nt[] = {
  NSPAIR(_ZN8S40C6_ntC1Ev),
  NSPAIR(_ZN8S40C6_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S40C8_nt;
extern VTBL_ENTRY _ZTI8S40C8_nt[];
extern  VTBL_ENTRY _ZTV8S40C8_nt[];
extern Class_Descriptor cd_S40C7_nt;
extern VTBL_ENTRY _ZTI8S40C7_nt[];
extern  VTBL_ENTRY _ZTV8S40C7_nt[];
static Base_Class bases_S40C6_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S40C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S40C6_nt[];
extern void _ZN8S40C6_ntD1Ev();
extern void _ZN8S40C6_ntD0Ev();
extern void _ZN8S40C8_nt2v8Ev();
extern void _ZN8S40C8_nt2v9Ev();
extern void _ZN8S40C8_nt3v10Ev();
extern void _ZN8S40C8_nt3v11Ev();
extern void _ZN8S40C8_nt3v12Ev();
extern void _ZN8S40C8_nt3v13Ev();
extern void _ZN8S40C8_nt3v14Ev();
extern void _ZN8S40C8_nt3v15Ev();
extern void _ZN8S40C8_nt3v16Ev();
extern void _ZN8S40C8_nt3v17Ev();
extern void _ZN8S40C8_nt3v18Ev();
extern void _ZN8S40C8_nt3v19Ev();
extern void _ZN8S40C8_nt3v20Ev();
extern void _ZN8S40C8_nt3v21Ev();
extern void _ZN8S40C8_nt3v22Ev();
extern void _ZN8S40C8_nt3v23Ev();
extern void _ZN8S40C8_nt3v24Ev();
extern void _ZN8S40C8_nt3v25Ev();
extern void _ZN8S40C8_nt3v26Ev();
extern void _ZN8S40C8_nt3v27Ev();
extern void _ZN8S40C8_nt3v28Ev();
extern void _ZN8S40C8_nt3v29Ev();
extern void _ZN8S40C8_nt3v30Ev();
extern void _ZN8S40C8_nt3v31Ev();
extern void _ZN8S40C8_nt3v32Ev();
extern void _ZN8S40C8_nt3v33Ev();
extern void _ZN8S40C8_nt3v34Ev();
extern void _ZN8S40C8_nt3v35Ev();
extern void _ZN8S40C8_nt3v36Ev();
extern void _ZN8S40C8_nt3v37Ev();
extern void _ZN8S40C8_nt3v38Ev();
extern void _ZN8S40C8_nt3v39Ev();
extern void _ZN8S40C8_nt3v40Ev();
extern void _ZN8S40C8_nt3v41Ev();
extern void _ZN8S40C8_nt3v42Ev();
extern void _ZN8S40C8_nt3v43Ev();
extern void _ZN8S40C8_nt3v44Ev();
extern void _ZN8S40C8_nt3v45Ev();
extern void _ZN8S40C8_nt3v46Ev();
extern void _ZN8S40C8_nt3v47Ev();
extern void _ZN8S40C8_nt3v48Ev();
extern void _ZN8S40C8_nt3v49Ev();
extern void _ZN8S40C8_nt3v50Ev();
extern void _ZN8S40C8_nt3v51Ev();
extern void _ZN8S40C8_nt3v52Ev();
extern void _ZN8S40C8_nt3v53Ev();
extern void _ZN8S40C8_nt3v54Ev();
extern void _ZN8S40C8_nt3v55Ev();
extern void _ZN8S40C8_nt3v56Ev();
extern void _ZN8S40C8_nt3v57Ev();
extern void _ZN8S40C8_nt3v58Ev();
extern void _ZN8S40C8_nt3v59Ev();
extern void _ZN8S40C8_nt3v60Ev();
extern void _ZN8S40C8_nt3v61Ev();
extern void _ZN8S40C8_nt3v62Ev();
extern void _ZN8S40C8_nt3v63Ev();
extern void _ZN8S40C8_nt3v64Ev();
extern void _ZN8S40C8_nt3v65Ev();
extern void _ZN8S40C8_nt3v66Ev();
extern void _ZN8S40C8_nt3v67Ev();
extern void _ZN8S40C8_nt3v68Ev();
extern void _ZN8S40C8_nt3v69Ev();
extern void _ZN8S40C8_nt3v70Ev();
extern void _ZN8S40C8_nt3v71Ev();
extern void _ZN8S40C7_nt3v72Ev();
extern void _ZN8S40C7_nt3v73Ev();
extern void _ZN8S40C7_nt3v74Ev();
extern void _ZN8S40C7_nt3v75Ev();
extern void _ZN8S40C7_nt3v76Ev();
extern void _ZN8S40C7_nt3v77Ev();
extern void _ZN8S40C7_nt3v78Ev();
extern void _ZN8S40C7_nt3v79Ev();
extern void _ZN8S40C7_nt3v80Ev();
extern void _ZN8S40C7_nt3v81Ev();
extern void _ZN8S40C7_nt3v82Ev();
extern void _ZN8S40C7_nt3v83Ev();
extern void _ZN8S40C7_nt3v84Ev();
extern void _ZN8S40C7_nt3v85Ev();
extern void _ZN8S40C7_nt3v86Ev();
extern void _ZN8S40C7_nt3v87Ev();
extern void _ZN8S40C7_nt3v88Ev();
extern void _ZN8S40C7_nt3v89Ev();
extern void _ZN8S40C7_nt3v90Ev();
extern void _ZN8S40C7_nt3v91Ev();
extern void _ZN8S40C7_nt3v92Ev();
extern void _ZN8S40C7_nt3v93Ev();
extern void _ZN8S40C7_nt3v94Ev();
extern void _ZN8S40C7_nt3v95Ev();
extern void _ZN8S40C7_nt3v96Ev();
extern void _ZN8S40C7_nt3v97Ev();
extern void _ZN8S40C7_nt3v98Ev();
extern void _ZN8S40C7_nt3v99Ev();
extern void _ZN8S40C7_nt4v100Ev();
extern void _ZN8S40C7_nt4v101Ev();
extern void _ZN8S40C7_nt4v102Ev();
extern void _ZN8S40C7_nt4v103Ev();
extern void _ZN8S40C7_nt4v104Ev();
extern void _ZN8S40C7_nt4v105Ev();
extern void _ZN8S40C7_nt4v106Ev();
extern void _ZN8S40C7_nt4v107Ev();
extern void _ZN8S40C7_nt4v108Ev();
extern void _ZN8S40C7_nt4v109Ev();
extern void _ZN8S40C7_nt4v110Ev();
extern void _ZN8S40C7_nt4v111Ev();
extern void _ZN8S40C7_nt4v112Ev();
extern void _ZN8S40C7_nt4v113Ev();
extern void _ZN8S40C7_nt4v114Ev();
extern void _ZN8S40C7_nt4v115Ev();
extern void _ZN8S40C7_nt4v116Ev();
extern void _ZN8S40C7_nt4v117Ev();
extern void _ZN8S40C7_nt4v118Ev();
extern void _ZN8S40C7_nt4v119Ev();
extern void _ZN8S40C7_nt4v120Ev();
extern void _ZN8S40C7_nt4v121Ev();
extern void _ZN8S40C7_nt4v122Ev();
extern void _ZN8S40C7_nt4v123Ev();
extern void _ZN8S40C7_nt4v124Ev();
extern void _ZN8S40C7_nt4v125Ev();
extern void _ZN8S40C7_nt4v126Ev();
extern void _ZN8S40C7_nt4v127Ev();
extern void _ZN8S40C7_nt4v128Ev();
extern void _ZN8S40C7_nt4v129Ev();
extern void _ZN8S40C7_nt4v130Ev();
extern void _ZN8S40C7_nt4v131Ev();
extern void _ZN8S40C7_nt4v132Ev();
extern void _ZN8S40C7_nt4v133Ev();
extern void _ZN8S40C7_nt4v134Ev();
extern void _ZN8S40C7_nt4v135Ev();
extern void _ZN8S40C7_nt4v136Ev();
extern void _ZN8S40C7_nt4v137Ev();
extern void _ZN8S40C7_nt4v138Ev();
extern void _ZN8S40C7_nt4v139Ev();
extern void _ZN8S40C7_nt4v140Ev();
extern void _ZN8S40C7_nt4v141Ev();
extern void _ZN8S40C7_nt4v142Ev();
extern void _ZN8S40C7_nt4v143Ev();
extern void _ZN8S40C7_nt4v144Ev();
extern void _ZN8S40C7_nt4v145Ev();
extern void _ZN8S40C7_nt4v146Ev();
extern void _ZN8S40C7_nt4v147Ev();
extern void _ZN8S40C7_nt4v148Ev();
extern void _ZN8S40C7_nt4v149Ev();
extern void _ZN8S40C7_nt4v150Ev();
extern void _ZN8S40C7_nt4v151Ev();
extern void _ZN8S40C7_nt4v152Ev();
extern void _ZN8S40C7_nt4v153Ev();
extern void _ZN8S40C7_nt4v154Ev();
extern void _ZN8S40C7_nt4v155Ev();
extern void _ZN8S40C7_nt4v156Ev();
extern void _ZN8S40C7_nt4v157Ev();
extern void _ZN8S40C7_nt4v158Ev();
extern void _ZN8S40C7_nt4v159Ev();
extern void _ZN8S40C7_nt4v160Ev();
extern void _ZN8S40C7_nt4v161Ev();
extern void _ZN8S40C7_nt4v162Ev();
extern void _ZN8S40C7_nt4v163Ev();
extern void _ZN8S40C7_nt4v164Ev();
extern void _ZN8S40C7_nt4v165Ev();
extern void _ZN8S40C7_nt4v166Ev();
extern void _ZN8S40C7_nt4v167Ev();
extern void _ZN8S40C7_nt4v168Ev();
extern void _ZN8S40C7_nt4v169Ev();
extern void _ZN8S40C7_nt4v170Ev();
extern void _ZN8S40C7_nt4v171Ev();
extern void _ZN8S40C7_nt4v172Ev();
extern void _ZN8S40C7_nt4v173Ev();
extern void _ZN8S40C7_nt4v174Ev();
extern void _ZN8S40C7_nt4v175Ev();
extern void _ZN8S40C7_nt4v176Ev();
extern void _ZN8S40C7_nt4v177Ev();
extern void _ZN8S40C7_nt4v178Ev();
extern void _ZN8S40C7_nt4v179Ev();
extern void _ZN8S40C7_nt4v180Ev();
extern void _ZN8S40C7_nt4v181Ev();
extern void _ZN8S40C7_nt4v182Ev();
extern void _ZN8S40C7_nt4v183Ev();
extern void _ZN8S40C7_nt4v184Ev();
extern void _ZN8S40C7_nt4v185Ev();
extern void _ZN8S40C7_nt4v186Ev();
extern void _ZN8S40C7_nt4v187Ev();
extern void _ZN8S40C7_nt4v188Ev();
extern void _ZN8S40C7_nt4v189Ev();
extern void _ZN8S40C7_nt4v190Ev();
extern void _ZN8S40C7_nt4v191Ev();
extern void _ZN8S40C7_nt4v192Ev();
extern void _ZN8S40C7_nt4v193Ev();
extern void _ZN8S40C7_nt4v194Ev();
extern void _ZN8S40C7_nt4v195Ev();
extern void _ZN8S40C7_nt4v196Ev();
extern void _ZN8S40C7_nt4v197Ev();
extern void _ZN8S40C7_nt4v198Ev();
extern void _ZN8S40C7_nt4v199Ev();
extern void _ZN8S40C7_nt4v200Ev();
extern void _ZN8S40C7_nt4v201Ev();
extern void _ZN8S40C7_nt4v202Ev();
extern void _ZN8S40C7_nt4v203Ev();
extern void _ZN8S40C7_nt4v204Ev();
extern void _ZN8S40C7_nt4v205Ev();
extern void _ZN8S40C7_nt4v206Ev();
extern void _ZN8S40C7_nt4v207Ev();
extern void _ZN8S40C7_nt4v208Ev();
extern void _ZN8S40C7_nt4v209Ev();
extern void _ZN8S40C7_nt4v210Ev();
extern void _ZN8S40C7_nt4v211Ev();
extern void _ZN8S40C7_nt4v212Ev();
extern void _ZN8S40C7_nt4v213Ev();
extern void _ZN8S40C7_nt4v214Ev();
extern void _ZN8S40C6_nt4v215Ev();
extern void _ZN8S40C6_nt4v216Ev();
extern void _ZN8S40C6_nt4v217Ev();
extern void _ZN8S40C6_nt4v218Ev();
extern void _ZN8S40C6_nt4v219Ev();
extern void _ZN8S40C6_nt4v220Ev();
extern void _ZN8S40C6_nt4v221Ev();
extern void _ZN8S40C6_nt4v222Ev();
extern void _ZN8S40C6_nt4v223Ev();
extern void _ZN8S40C6_nt4v224Ev();
extern void _ZN8S40C6_nt4v225Ev();
extern void _ZN8S40C6_nt4v226Ev();
extern void _ZN8S40C6_nt4v227Ev();
extern void _ZN8S40C6_nt4v228Ev();
extern void _ZN8S40C6_nt4v229Ev();
extern void _ZN8S40C6_nt4v230Ev();
extern void _ZN8S40C6_nt4v231Ev();
extern void _ZN8S40C6_nt4v232Ev();
extern void _ZN8S40C6_nt4v233Ev();
extern void _ZN8S40C6_nt4v234Ev();
extern void _ZN8S40C6_nt4v235Ev();
extern void _ZN8S40C6_nt4v236Ev();
extern void _ZN8S40C6_nt4v237Ev();
extern void _ZN8S40C6_nt4v238Ev();
extern void _ZN8S40C6_nt4v239Ev();
extern void _ZN8S40C6_nt4v240Ev();
extern void _ZN8S40C6_nt4v241Ev();
extern void _ZN8S40C6_nt4v242Ev();
extern void _ZN8S40C6_nt4v243Ev();
extern void _ZN8S40C6_nt4v244Ev();
extern void _ZN8S40C6_nt4v245Ev();
extern void _ZN8S40C6_nt4v246Ev();
extern void _ZN8S40C6_nt4v247Ev();
extern void _ZN8S40C6_nt4v248Ev();
extern void _ZN8S40C6_nt4v249Ev();
extern void _ZN8S40C6_nt4v250Ev();
extern void _ZN8S40C6_nt4v251Ev();
extern void _ZN8S40C6_nt4v252Ev();
extern void _ZN8S40C6_nt4v253Ev();
extern void _ZN8S40C6_nt4v254Ev();
extern void _ZN8S40C6_nt4v255Ev();
extern void _ZN8S40C6_nt4v256Ev();
extern void _ZN8S40C6_nt4v257Ev();
extern void _ZN8S40C6_nt4v258Ev();
extern void _ZN8S40C6_nt4v259Ev();
extern void _ZN8S40C6_nt4v260Ev();
extern void _ZN8S40C6_nt4v261Ev();
extern void _ZN8S40C6_nt4v262Ev();
extern void _ZN8S40C6_nt4v263Ev();
extern void _ZN8S40C6_nt4v264Ev();
extern void _ZN8S40C6_nt4v265Ev();
extern void _ZN8S40C6_nt4v266Ev();
extern void _ZN8S40C6_nt4v267Ev();
extern void _ZN8S40C6_nt4v268Ev();
extern void _ZN8S40C6_nt4v269Ev();
extern void _ZN8S40C6_nt4v270Ev();
extern void _ZN8S40C6_nt4v271Ev();
extern void _ZN8S40C6_nt4v272Ev();
extern void _ZN8S40C6_nt4v273Ev();
extern void _ZN8S40C6_nt4v274Ev();
extern void _ZN8S40C6_nt4v275Ev();
extern void _ZN8S40C6_nt4v276Ev();
extern void _ZN8S40C6_nt4v277Ev();
extern void _ZN8S40C6_nt4v278Ev();
extern void _ZN8S40C6_nt4v279Ev();
extern void _ZN8S40C6_nt4v280Ev();
extern void _ZN8S40C6_nt4v281Ev();
extern void _ZN8S40C6_nt4v282Ev();
extern void _ZN8S40C6_nt4v283Ev();
extern void _ZN8S40C6_nt4v284Ev();
extern void _ZN8S40C6_nt4v285Ev();
extern void _ZN8S40C6_nt4v286Ev();
extern void _ZN8S40C6_nt4v287Ev();
extern void _ZN8S40C6_nt4v288Ev();
extern void _ZN8S40C6_nt4v289Ev();
extern void _ZN8S40C6_nt4v290Ev();
extern void _ZN8S40C6_nt4v291Ev();
extern void _ZN8S40C6_nt4v292Ev();
extern void _ZN8S40C6_nt4v293Ev();
extern void _ZN8S40C6_nt4v294Ev();
extern void _ZN8S40C6_nt4v295Ev();
extern void _ZN8S40C6_nt4v296Ev();
extern void _ZN8S40C6_nt4v297Ev();
extern void _ZN8S40C6_nt4v298Ev();
extern void _ZN8S40C6_nt4v299Ev();
extern void _ZN8S40C6_nt4v300Ev();
extern void _ZN8S40C6_nt4v301Ev();
extern void _ZN8S40C6_nt4v302Ev();
extern void _ZN8S40C6_nt4v303Ev();
extern void _ZN8S40C6_nt4v304Ev();
extern void _ZN8S40C6_nt4v305Ev();
extern void _ZN8S40C6_nt4v306Ev();
extern void _ZN8S40C6_nt4v307Ev();
extern void _ZN8S40C6_nt4v308Ev();
extern void _ZN8S40C6_nt4v309Ev();
extern void _ZN8S40C6_nt4v310Ev();
extern void _ZN8S40C6_nt4v311Ev();
extern void _ZN8S40C6_nt4v312Ev();
static  VTBL_ENTRY vtc_S40C6_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S40C6_nt[0]),
  (VTBL_ENTRY)&_ZN8S40C6_ntD1Ev,
  (VTBL_ENTRY)&_ZN8S40C6_ntD0Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v11Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v13Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v14Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v15Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v16Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v17Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v18Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v22Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v23Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v24Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v25Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v26Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v27Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v28Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v29Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v30Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v31Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v32Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v33Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v34Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v35Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v36Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v37Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v38Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v39Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v40Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v41Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v42Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v43Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v44Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v45Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v46Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v47Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v48Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v49Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v50Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v51Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v52Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v53Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v54Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v55Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v56Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v57Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v58Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v59Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v60Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v61Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v62Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v63Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v64Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v65Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v66Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v67Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v68Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v69Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v70Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v71Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v72Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v73Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v74Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v75Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v76Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v77Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v78Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v79Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v80Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v81Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v82Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v83Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v84Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v85Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v86Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v87Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v88Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v89Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v90Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v91Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v92Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v93Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v94Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v95Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v96Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v97Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v98Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v99Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v100Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v101Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v102Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v103Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v104Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v105Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v106Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v107Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v108Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v109Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v110Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v111Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v112Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v113Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v114Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v115Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v116Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v117Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v118Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v119Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v120Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v121Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v122Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v123Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v124Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v125Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v126Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v127Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v128Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v129Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v130Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v131Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v132Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v133Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v134Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v135Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v136Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v137Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v138Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v139Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v140Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v141Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v142Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v143Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v144Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v145Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v146Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v147Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v148Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v149Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v150Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v151Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v152Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v153Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v154Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v155Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v156Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v157Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v158Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v159Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v160Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v161Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v162Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v163Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v164Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v165Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v166Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v167Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v168Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v169Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v170Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v171Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v172Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v173Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v174Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v175Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v176Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v177Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v178Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v179Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v180Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v181Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v182Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v183Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v184Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v185Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v186Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v187Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v188Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v189Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v190Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v191Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v192Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v193Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v194Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v195Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v196Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v197Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v198Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v199Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v200Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v201Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v202Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v203Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v204Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v205Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v206Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v207Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v208Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v209Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v210Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v211Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v212Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v213Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v214Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v215Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v216Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v217Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v218Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v219Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v220Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v221Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v222Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v223Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v224Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v225Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v226Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v227Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v228Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v229Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v230Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v231Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v232Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v233Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v234Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v235Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v236Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v237Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v238Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v239Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v240Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v241Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v242Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v243Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v244Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v245Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v246Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v247Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v248Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v249Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v250Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v251Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v252Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v253Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v254Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v255Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v256Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v257Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v258Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v259Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v260Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v261Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v262Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v263Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v264Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v265Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v266Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v267Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v268Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v269Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v270Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v271Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v272Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v273Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v274Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v275Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v276Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v277Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v278Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v279Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v280Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v281Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v282Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v283Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v284Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v285Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v286Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v287Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v288Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v289Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v290Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v291Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v292Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v293Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v294Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v295Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v296Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v297Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v298Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v299Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v300Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v301Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v302Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v303Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v304Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v305Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v306Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v307Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v308Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v309Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v310Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v311Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v312Ev,
};
extern VTBL_ENTRY _ZTI8S40C6_nt[];
VTBL_ENTRY *P__ZTI8S40C6_nt = _ZTI8S40C6_nt; 
extern  VTBL_ENTRY _ZTV8S40C6_nt[];
Class_Descriptor cd_S40C6_nt = {  "S40C6_nt", // class name
  bases_S40C6_nt, 2,
  &(vtc_S40C6_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(1200,936), // object size
  NSPAIRA(_ZTI8S40C6_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S40C6_nt),309, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

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



static void Test_S40C30()
{
  extern Class_Descriptor cd_S40C30;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S40C30, buf);
    S40C30 &lv = *(new (buf) S40C30());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S40C30)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S40C30)");
    check_base_class_offset(lv, (S40C12_nt*), 0, "S40C30");
    test_class_info(&lv, &cd_S40C30);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS40C30(Test_S40C30, "S40C30", ABISELECT(16,12));

#else // __cplusplus

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

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

#ifdef __cplusplus

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



static void Test_S40C29()
{
  extern Class_Descriptor cd_S40C29;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S40C29, buf);
    S40C29 &lv = *(new (buf) S40C29());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S40C29)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S40C29)");
    check_base_class_offset(lv, (S40C12_nt*)(S40C30*), 0, "S40C29");
    check_base_class_offset(lv, (S40C30*), 0, "S40C29");
    test_class_info(&lv, &cd_S40C29);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS40C29(Test_S40C29, "S40C29", ABISELECT(16,12));

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S40C5_nt  : S40C6_nt {
  void *s40c5f0;
  unsigned int s40c5f1:1;
  unsigned int s40c5f2:1;
  unsigned int s40c5f3:1;
  unsigned int s40c5f4:1;
  unsigned int s40c5f5:1;
  unsigned int s40c5f6:1;
  unsigned int s40c5f7:1;
  unsigned int s40c5f8:1;
  unsigned int s40c5f9:1;
  unsigned int s40c5f10:1;
  unsigned int s40c5f11:1;
  unsigned int s40c5f12:1;
  ::S40C29 s40c5f13;
  int s40c5f14;
  ::S40C18_nt s40c5f15;
  int s40c5f16[3];
  ::S40C18_nt s40c5f17;
  int s40c5f18[2];
  void *s40c5f19;
  int s40c5f20[2];
  char s40c5f21;
  int s40c5f22[8];
  virtual  ~S40C5_nt(); // _ZN8S40C5_ntD1Ev
  virtual void  v313(); // _ZN8S40C5_nt4v313Ev
  virtual void  v314(); // _ZN8S40C5_nt4v314Ev
  virtual void  v315(); // _ZN8S40C5_nt4v315Ev
  virtual void  v316(); // _ZN8S40C5_nt4v316Ev
  virtual void  v317(); // _ZN8S40C5_nt4v317Ev
  virtual void  v318(); // _ZN8S40C5_nt4v318Ev
  virtual void  v319(); // _ZN8S40C5_nt4v319Ev
  virtual void  v320(); // _ZN8S40C5_nt4v320Ev
  virtual void  v321(); // _ZN8S40C5_nt4v321Ev
  virtual void  v322(); // _ZN8S40C5_nt4v322Ev
  virtual void  v323(); // _ZN8S40C5_nt4v323Ev
  virtual void  v324(); // _ZN8S40C5_nt4v324Ev
  virtual void  v325(); // _ZN8S40C5_nt4v325Ev
  virtual void  v326(); // _ZN8S40C5_nt4v326Ev
  virtual void  v327(); // _ZN8S40C5_nt4v327Ev
  virtual void  v328(); // _ZN8S40C5_nt4v328Ev
  virtual void  v329(); // _ZN8S40C5_nt4v329Ev
  virtual void  v330(); // _ZN8S40C5_nt4v330Ev
  virtual void  v331(); // _ZN8S40C5_nt4v331Ev
  virtual void  v332(); // _ZN8S40C5_nt4v332Ev
  virtual void  v333(); // _ZN8S40C5_nt4v333Ev
  virtual void  v334(); // _ZN8S40C5_nt4v334Ev
  S40C5_nt(); // tgen
};
//SIG(-1 S40C5_nt) C1{ BC2{ BC3{ BC4{ vd v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 Fi FL Fp[4] Fi[2] Fp FC5{ m Fi[2]} Fp[2]} vd v87 v88 v89 v90 v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 v102 v103 v104 v105 v106 v107 v108 v109 v110 v111 v112 v113 v114 v115 v116 v117 v118 v119 v120 v121 v122 v123 v124 v125 v126 v127 v128 v129 v130 v131 v132 v133 v134 v135 v136 v137 v138 v139 v140 v141 v142 v143 v144 v145 v146 v147 v148 v149 v150 v151 v152 v153 v154 v155 v156 v157 v158 v159 v160 v161 v162 v163 v164 v165 v166 v167 v168 v169 v170 v171 v172 v173 v174 v175 v176 v177 v178 v179 v180 v181 v182 v183 v184 v185 v186 v187 v188 v189 v190 v191 v192 v193 v194 v195 v196 v197 v198 v199 v200 v201 v202 v203 v204 v205 v206 v207 v208 v209 v210 v211 v212 v213 v214 v215 v216 v217 v218 v219 v220 v221 v222 v223 v224 v225 v226 v227 v228 v229 FC6{ BC7{ BC8{ m Fp Fi[2]}}} FC6 FC9{ m Fi} Fi Fc[4] Fp[2] FC6 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[5] Fp[2] Fi[3] FC5 FC5 FC5 FC10{ BC11{ BC8}} FC10 Fi Fp[2] FC12{ m Fi[3]} FC12 FC12 FC12 Fp FC5 FC10 FC12 FC12 Fi FC12 FC12 Fp Fi Fc FC12 FC12 Fp Fi Fp FC10 FC13{ BC14{ BC8}} FC13} vd v230 v231 v232 v233 v234 v235 v236 v237 v238 v239 v240 v241 v242 v243 v244 v245 v246 v247 v248 v249 v250 v251 v252 v253 v254 v255 v256 v257 v258 v259 v260 v261 v262 v263 v264 v265 v266 v267 v268 v269 v270 v271 v272 v273 v274 v275 v276 v277 v278 v279 v280 v281 v282 v283 v284 v285 v286 v287 v288 v289 v290 v291 v292 v293 v294 v295 v296 v297 v298 v299 v300 v301 v302 v303 v304 v305 v306 v307 v308 v309 v310 v311 v312 v313 v314 v315 v316 v317 v318 v319 v320 v321 v322 v323 v324 v325 v326 v327 Fi[3] Fp[2] Fi Fp[2] Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[5] Fc[4] Fi[10] Fp[2] Fi[4] FC12 Fi[19] FC12 Fi[2] Fp Fi[5] FC12 FC12 Fi Fp Fi FC12 Fi Fp Fi[3] FC15{ BC16{ BC17{ BC8}}} Fp[3] FC5 FC5 Fp Fi FC12 Fp FC12 Fp[2] Fi[2] Fp Fi[2] Fp Fi[3] Fp[3] FC12 FC12 Fi Fp[2] Fi} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 Fp Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 FC18{ BC19{ BC8}} Fi FC12 Fi[3] FC12 Fi[2] Fp Fi[2] Fc Fi[8]}


 S40C5_nt ::~S40C5_nt(){ note_dtor("S40C5_nt", this);}
void  S40C5_nt ::v313(){vfunc_called(this, "_ZN8S40C5_nt4v313Ev");}
void  S40C5_nt ::v314(){vfunc_called(this, "_ZN8S40C5_nt4v314Ev");}
void  S40C5_nt ::v315(){vfunc_called(this, "_ZN8S40C5_nt4v315Ev");}
void  S40C5_nt ::v316(){vfunc_called(this, "_ZN8S40C5_nt4v316Ev");}
void  S40C5_nt ::v317(){vfunc_called(this, "_ZN8S40C5_nt4v317Ev");}
void  S40C5_nt ::v318(){vfunc_called(this, "_ZN8S40C5_nt4v318Ev");}
void  S40C5_nt ::v319(){vfunc_called(this, "_ZN8S40C5_nt4v319Ev");}
void  S40C5_nt ::v320(){vfunc_called(this, "_ZN8S40C5_nt4v320Ev");}
void  S40C5_nt ::v321(){vfunc_called(this, "_ZN8S40C5_nt4v321Ev");}
void  S40C5_nt ::v322(){vfunc_called(this, "_ZN8S40C5_nt4v322Ev");}
void  S40C5_nt ::v323(){vfunc_called(this, "_ZN8S40C5_nt4v323Ev");}
void  S40C5_nt ::v324(){vfunc_called(this, "_ZN8S40C5_nt4v324Ev");}
void  S40C5_nt ::v325(){vfunc_called(this, "_ZN8S40C5_nt4v325Ev");}
void  S40C5_nt ::v326(){vfunc_called(this, "_ZN8S40C5_nt4v326Ev");}
void  S40C5_nt ::v327(){vfunc_called(this, "_ZN8S40C5_nt4v327Ev");}
void  S40C5_nt ::v328(){vfunc_called(this, "_ZN8S40C5_nt4v328Ev");}
void  S40C5_nt ::v329(){vfunc_called(this, "_ZN8S40C5_nt4v329Ev");}
void  S40C5_nt ::v330(){vfunc_called(this, "_ZN8S40C5_nt4v330Ev");}
void  S40C5_nt ::v331(){vfunc_called(this, "_ZN8S40C5_nt4v331Ev");}
void  S40C5_nt ::v332(){vfunc_called(this, "_ZN8S40C5_nt4v332Ev");}
void  S40C5_nt ::v333(){vfunc_called(this, "_ZN8S40C5_nt4v333Ev");}
void  S40C5_nt ::v334(){vfunc_called(this, "_ZN8S40C5_nt4v334Ev");}
S40C5_nt ::S40C5_nt(){ note_ctor("S40C5_nt", this);} // tgen

//skip512 S40C5_nt

#else // __cplusplus

extern void _ZN8S40C5_ntC1Ev();
extern void _ZN8S40C5_ntD1Ev();
Name_Map name_map_S40C5_nt[] = {
  NSPAIR(_ZN8S40C5_ntC1Ev),
  NSPAIR(_ZN8S40C5_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S40C8_nt;
extern VTBL_ENTRY _ZTI8S40C8_nt[];
extern  VTBL_ENTRY _ZTV8S40C8_nt[];
extern Class_Descriptor cd_S40C7_nt;
extern VTBL_ENTRY _ZTI8S40C7_nt[];
extern  VTBL_ENTRY _ZTV8S40C7_nt[];
extern Class_Descriptor cd_S40C6_nt;
extern VTBL_ENTRY _ZTI8S40C6_nt[];
extern  VTBL_ENTRY _ZTV8S40C6_nt[];
static Base_Class bases_S40C5_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S40C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S40C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S40C5_nt[];
extern void _ZN8S40C5_ntD1Ev();
extern void _ZN8S40C5_ntD0Ev();
extern void _ZN8S40C8_nt2v8Ev();
extern void _ZN8S40C8_nt2v9Ev();
extern void _ZN8S40C8_nt3v10Ev();
extern void _ZN8S40C8_nt3v11Ev();
extern void _ZN8S40C8_nt3v12Ev();
extern void _ZN8S40C8_nt3v13Ev();
extern void _ZN8S40C8_nt3v14Ev();
extern void _ZN8S40C8_nt3v15Ev();
extern void _ZN8S40C8_nt3v16Ev();
extern void _ZN8S40C8_nt3v17Ev();
extern void _ZN8S40C8_nt3v18Ev();
extern void _ZN8S40C8_nt3v19Ev();
extern void _ZN8S40C8_nt3v20Ev();
extern void _ZN8S40C8_nt3v21Ev();
extern void _ZN8S40C8_nt3v22Ev();
extern void _ZN8S40C8_nt3v23Ev();
extern void _ZN8S40C8_nt3v24Ev();
extern void _ZN8S40C8_nt3v25Ev();
extern void _ZN8S40C8_nt3v26Ev();
extern void _ZN8S40C8_nt3v27Ev();
extern void _ZN8S40C8_nt3v28Ev();
extern void _ZN8S40C8_nt3v29Ev();
extern void _ZN8S40C8_nt3v30Ev();
extern void _ZN8S40C8_nt3v31Ev();
extern void _ZN8S40C8_nt3v32Ev();
extern void _ZN8S40C8_nt3v33Ev();
extern void _ZN8S40C8_nt3v34Ev();
extern void _ZN8S40C8_nt3v35Ev();
extern void _ZN8S40C8_nt3v36Ev();
extern void _ZN8S40C8_nt3v37Ev();
extern void _ZN8S40C8_nt3v38Ev();
extern void _ZN8S40C8_nt3v39Ev();
extern void _ZN8S40C8_nt3v40Ev();
extern void _ZN8S40C8_nt3v41Ev();
extern void _ZN8S40C8_nt3v42Ev();
extern void _ZN8S40C8_nt3v43Ev();
extern void _ZN8S40C8_nt3v44Ev();
extern void _ZN8S40C8_nt3v45Ev();
extern void _ZN8S40C8_nt3v46Ev();
extern void _ZN8S40C8_nt3v47Ev();
extern void _ZN8S40C8_nt3v48Ev();
extern void _ZN8S40C8_nt3v49Ev();
extern void _ZN8S40C8_nt3v50Ev();
extern void _ZN8S40C8_nt3v51Ev();
extern void _ZN8S40C8_nt3v52Ev();
extern void _ZN8S40C8_nt3v53Ev();
extern void _ZN8S40C8_nt3v54Ev();
extern void _ZN8S40C8_nt3v55Ev();
extern void _ZN8S40C8_nt3v56Ev();
extern void _ZN8S40C8_nt3v57Ev();
extern void _ZN8S40C8_nt3v58Ev();
extern void _ZN8S40C8_nt3v59Ev();
extern void _ZN8S40C8_nt3v60Ev();
extern void _ZN8S40C8_nt3v61Ev();
extern void _ZN8S40C8_nt3v62Ev();
extern void _ZN8S40C8_nt3v63Ev();
extern void _ZN8S40C8_nt3v64Ev();
extern void _ZN8S40C8_nt3v65Ev();
extern void _ZN8S40C8_nt3v66Ev();
extern void _ZN8S40C8_nt3v67Ev();
extern void _ZN8S40C8_nt3v68Ev();
extern void _ZN8S40C8_nt3v69Ev();
extern void _ZN8S40C8_nt3v70Ev();
extern void _ZN8S40C8_nt3v71Ev();
extern void _ZN8S40C7_nt3v72Ev();
extern void _ZN8S40C7_nt3v73Ev();
extern void _ZN8S40C7_nt3v74Ev();
extern void _ZN8S40C7_nt3v75Ev();
extern void _ZN8S40C7_nt3v76Ev();
extern void _ZN8S40C7_nt3v77Ev();
extern void _ZN8S40C7_nt3v78Ev();
extern void _ZN8S40C7_nt3v79Ev();
extern void _ZN8S40C7_nt3v80Ev();
extern void _ZN8S40C7_nt3v81Ev();
extern void _ZN8S40C7_nt3v82Ev();
extern void _ZN8S40C7_nt3v83Ev();
extern void _ZN8S40C7_nt3v84Ev();
extern void _ZN8S40C7_nt3v85Ev();
extern void _ZN8S40C7_nt3v86Ev();
extern void _ZN8S40C7_nt3v87Ev();
extern void _ZN8S40C7_nt3v88Ev();
extern void _ZN8S40C7_nt3v89Ev();
extern void _ZN8S40C7_nt3v90Ev();
extern void _ZN8S40C7_nt3v91Ev();
extern void _ZN8S40C7_nt3v92Ev();
extern void _ZN8S40C7_nt3v93Ev();
extern void _ZN8S40C7_nt3v94Ev();
extern void _ZN8S40C7_nt3v95Ev();
extern void _ZN8S40C7_nt3v96Ev();
extern void _ZN8S40C7_nt3v97Ev();
extern void _ZN8S40C7_nt3v98Ev();
extern void _ZN8S40C7_nt3v99Ev();
extern void _ZN8S40C7_nt4v100Ev();
extern void _ZN8S40C7_nt4v101Ev();
extern void _ZN8S40C7_nt4v102Ev();
extern void _ZN8S40C7_nt4v103Ev();
extern void _ZN8S40C7_nt4v104Ev();
extern void _ZN8S40C7_nt4v105Ev();
extern void _ZN8S40C7_nt4v106Ev();
extern void _ZN8S40C7_nt4v107Ev();
extern void _ZN8S40C7_nt4v108Ev();
extern void _ZN8S40C7_nt4v109Ev();
extern void _ZN8S40C7_nt4v110Ev();
extern void _ZN8S40C7_nt4v111Ev();
extern void _ZN8S40C7_nt4v112Ev();
extern void _ZN8S40C7_nt4v113Ev();
extern void _ZN8S40C7_nt4v114Ev();
extern void _ZN8S40C7_nt4v115Ev();
extern void _ZN8S40C7_nt4v116Ev();
extern void _ZN8S40C7_nt4v117Ev();
extern void _ZN8S40C7_nt4v118Ev();
extern void _ZN8S40C7_nt4v119Ev();
extern void _ZN8S40C7_nt4v120Ev();
extern void _ZN8S40C7_nt4v121Ev();
extern void _ZN8S40C7_nt4v122Ev();
extern void _ZN8S40C7_nt4v123Ev();
extern void _ZN8S40C7_nt4v124Ev();
extern void _ZN8S40C7_nt4v125Ev();
extern void _ZN8S40C7_nt4v126Ev();
extern void _ZN8S40C7_nt4v127Ev();
extern void _ZN8S40C7_nt4v128Ev();
extern void _ZN8S40C7_nt4v129Ev();
extern void _ZN8S40C7_nt4v130Ev();
extern void _ZN8S40C7_nt4v131Ev();
extern void _ZN8S40C7_nt4v132Ev();
extern void _ZN8S40C7_nt4v133Ev();
extern void _ZN8S40C7_nt4v134Ev();
extern void _ZN8S40C7_nt4v135Ev();
extern void _ZN8S40C7_nt4v136Ev();
extern void _ZN8S40C7_nt4v137Ev();
extern void _ZN8S40C7_nt4v138Ev();
extern void _ZN8S40C7_nt4v139Ev();
extern void _ZN8S40C7_nt4v140Ev();
extern void _ZN8S40C7_nt4v141Ev();
extern void _ZN8S40C7_nt4v142Ev();
extern void _ZN8S40C7_nt4v143Ev();
extern void _ZN8S40C7_nt4v144Ev();
extern void _ZN8S40C7_nt4v145Ev();
extern void _ZN8S40C7_nt4v146Ev();
extern void _ZN8S40C7_nt4v147Ev();
extern void _ZN8S40C7_nt4v148Ev();
extern void _ZN8S40C7_nt4v149Ev();
extern void _ZN8S40C7_nt4v150Ev();
extern void _ZN8S40C7_nt4v151Ev();
extern void _ZN8S40C7_nt4v152Ev();
extern void _ZN8S40C7_nt4v153Ev();
extern void _ZN8S40C7_nt4v154Ev();
extern void _ZN8S40C7_nt4v155Ev();
extern void _ZN8S40C7_nt4v156Ev();
extern void _ZN8S40C7_nt4v157Ev();
extern void _ZN8S40C7_nt4v158Ev();
extern void _ZN8S40C7_nt4v159Ev();
extern void _ZN8S40C7_nt4v160Ev();
extern void _ZN8S40C7_nt4v161Ev();
extern void _ZN8S40C7_nt4v162Ev();
extern void _ZN8S40C7_nt4v163Ev();
extern void _ZN8S40C7_nt4v164Ev();
extern void _ZN8S40C7_nt4v165Ev();
extern void _ZN8S40C7_nt4v166Ev();
extern void _ZN8S40C7_nt4v167Ev();
extern void _ZN8S40C7_nt4v168Ev();
extern void _ZN8S40C7_nt4v169Ev();
extern void _ZN8S40C7_nt4v170Ev();
extern void _ZN8S40C7_nt4v171Ev();
extern void _ZN8S40C7_nt4v172Ev();
extern void _ZN8S40C7_nt4v173Ev();
extern void _ZN8S40C7_nt4v174Ev();
extern void _ZN8S40C7_nt4v175Ev();
extern void _ZN8S40C7_nt4v176Ev();
extern void _ZN8S40C7_nt4v177Ev();
extern void _ZN8S40C7_nt4v178Ev();
extern void _ZN8S40C7_nt4v179Ev();
extern void _ZN8S40C7_nt4v180Ev();
extern void _ZN8S40C7_nt4v181Ev();
extern void _ZN8S40C7_nt4v182Ev();
extern void _ZN8S40C7_nt4v183Ev();
extern void _ZN8S40C7_nt4v184Ev();
extern void _ZN8S40C7_nt4v185Ev();
extern void _ZN8S40C7_nt4v186Ev();
extern void _ZN8S40C7_nt4v187Ev();
extern void _ZN8S40C7_nt4v188Ev();
extern void _ZN8S40C7_nt4v189Ev();
extern void _ZN8S40C7_nt4v190Ev();
extern void _ZN8S40C7_nt4v191Ev();
extern void _ZN8S40C7_nt4v192Ev();
extern void _ZN8S40C7_nt4v193Ev();
extern void _ZN8S40C7_nt4v194Ev();
extern void _ZN8S40C7_nt4v195Ev();
extern void _ZN8S40C7_nt4v196Ev();
extern void _ZN8S40C7_nt4v197Ev();
extern void _ZN8S40C7_nt4v198Ev();
extern void _ZN8S40C7_nt4v199Ev();
extern void _ZN8S40C7_nt4v200Ev();
extern void _ZN8S40C7_nt4v201Ev();
extern void _ZN8S40C7_nt4v202Ev();
extern void _ZN8S40C7_nt4v203Ev();
extern void _ZN8S40C7_nt4v204Ev();
extern void _ZN8S40C7_nt4v205Ev();
extern void _ZN8S40C7_nt4v206Ev();
extern void _ZN8S40C7_nt4v207Ev();
extern void _ZN8S40C7_nt4v208Ev();
extern void _ZN8S40C7_nt4v209Ev();
extern void _ZN8S40C7_nt4v210Ev();
extern void _ZN8S40C7_nt4v211Ev();
extern void _ZN8S40C7_nt4v212Ev();
extern void _ZN8S40C7_nt4v213Ev();
extern void _ZN8S40C7_nt4v214Ev();
extern void _ZN8S40C6_nt4v215Ev();
extern void _ZN8S40C6_nt4v216Ev();
extern void _ZN8S40C6_nt4v217Ev();
extern void _ZN8S40C6_nt4v218Ev();
extern void _ZN8S40C6_nt4v219Ev();
extern void _ZN8S40C6_nt4v220Ev();
extern void _ZN8S40C6_nt4v221Ev();
extern void _ZN8S40C6_nt4v222Ev();
extern void _ZN8S40C6_nt4v223Ev();
extern void _ZN8S40C6_nt4v224Ev();
extern void _ZN8S40C6_nt4v225Ev();
extern void _ZN8S40C6_nt4v226Ev();
extern void _ZN8S40C6_nt4v227Ev();
extern void _ZN8S40C6_nt4v228Ev();
extern void _ZN8S40C6_nt4v229Ev();
extern void _ZN8S40C6_nt4v230Ev();
extern void _ZN8S40C6_nt4v231Ev();
extern void _ZN8S40C6_nt4v232Ev();
extern void _ZN8S40C6_nt4v233Ev();
extern void _ZN8S40C6_nt4v234Ev();
extern void _ZN8S40C6_nt4v235Ev();
extern void _ZN8S40C6_nt4v236Ev();
extern void _ZN8S40C6_nt4v237Ev();
extern void _ZN8S40C6_nt4v238Ev();
extern void _ZN8S40C6_nt4v239Ev();
extern void _ZN8S40C6_nt4v240Ev();
extern void _ZN8S40C6_nt4v241Ev();
extern void _ZN8S40C6_nt4v242Ev();
extern void _ZN8S40C6_nt4v243Ev();
extern void _ZN8S40C6_nt4v244Ev();
extern void _ZN8S40C6_nt4v245Ev();
extern void _ZN8S40C6_nt4v246Ev();
extern void _ZN8S40C6_nt4v247Ev();
extern void _ZN8S40C6_nt4v248Ev();
extern void _ZN8S40C6_nt4v249Ev();
extern void _ZN8S40C6_nt4v250Ev();
extern void _ZN8S40C6_nt4v251Ev();
extern void _ZN8S40C6_nt4v252Ev();
extern void _ZN8S40C6_nt4v253Ev();
extern void _ZN8S40C6_nt4v254Ev();
extern void _ZN8S40C6_nt4v255Ev();
extern void _ZN8S40C6_nt4v256Ev();
extern void _ZN8S40C6_nt4v257Ev();
extern void _ZN8S40C6_nt4v258Ev();
extern void _ZN8S40C6_nt4v259Ev();
extern void _ZN8S40C6_nt4v260Ev();
extern void _ZN8S40C6_nt4v261Ev();
extern void _ZN8S40C6_nt4v262Ev();
extern void _ZN8S40C6_nt4v263Ev();
extern void _ZN8S40C6_nt4v264Ev();
extern void _ZN8S40C6_nt4v265Ev();
extern void _ZN8S40C6_nt4v266Ev();
extern void _ZN8S40C6_nt4v267Ev();
extern void _ZN8S40C6_nt4v268Ev();
extern void _ZN8S40C6_nt4v269Ev();
extern void _ZN8S40C6_nt4v270Ev();
extern void _ZN8S40C6_nt4v271Ev();
extern void _ZN8S40C6_nt4v272Ev();
extern void _ZN8S40C6_nt4v273Ev();
extern void _ZN8S40C6_nt4v274Ev();
extern void _ZN8S40C6_nt4v275Ev();
extern void _ZN8S40C6_nt4v276Ev();
extern void _ZN8S40C6_nt4v277Ev();
extern void _ZN8S40C6_nt4v278Ev();
extern void _ZN8S40C6_nt4v279Ev();
extern void _ZN8S40C6_nt4v280Ev();
extern void _ZN8S40C6_nt4v281Ev();
extern void _ZN8S40C6_nt4v282Ev();
extern void _ZN8S40C6_nt4v283Ev();
extern void _ZN8S40C6_nt4v284Ev();
extern void _ZN8S40C6_nt4v285Ev();
extern void _ZN8S40C6_nt4v286Ev();
extern void _ZN8S40C6_nt4v287Ev();
extern void _ZN8S40C6_nt4v288Ev();
extern void _ZN8S40C6_nt4v289Ev();
extern void _ZN8S40C6_nt4v290Ev();
extern void _ZN8S40C6_nt4v291Ev();
extern void _ZN8S40C6_nt4v292Ev();
extern void _ZN8S40C6_nt4v293Ev();
extern void _ZN8S40C6_nt4v294Ev();
extern void _ZN8S40C6_nt4v295Ev();
extern void _ZN8S40C6_nt4v296Ev();
extern void _ZN8S40C6_nt4v297Ev();
extern void _ZN8S40C6_nt4v298Ev();
extern void _ZN8S40C6_nt4v299Ev();
extern void _ZN8S40C6_nt4v300Ev();
extern void _ZN8S40C6_nt4v301Ev();
extern void _ZN8S40C6_nt4v302Ev();
extern void _ZN8S40C6_nt4v303Ev();
extern void _ZN8S40C6_nt4v304Ev();
extern void _ZN8S40C6_nt4v305Ev();
extern void _ZN8S40C6_nt4v306Ev();
extern void _ZN8S40C6_nt4v307Ev();
extern void _ZN8S40C6_nt4v308Ev();
extern void _ZN8S40C6_nt4v309Ev();
extern void _ZN8S40C6_nt4v310Ev();
extern void _ZN8S40C6_nt4v311Ev();
extern void _ZN8S40C6_nt4v312Ev();
extern void _ZN8S40C5_nt4v313Ev();
extern void _ZN8S40C5_nt4v314Ev();
extern void _ZN8S40C5_nt4v315Ev();
extern void _ZN8S40C5_nt4v316Ev();
extern void _ZN8S40C5_nt4v317Ev();
extern void _ZN8S40C5_nt4v318Ev();
extern void _ZN8S40C5_nt4v319Ev();
extern void _ZN8S40C5_nt4v320Ev();
extern void _ZN8S40C5_nt4v321Ev();
extern void _ZN8S40C5_nt4v322Ev();
extern void _ZN8S40C5_nt4v323Ev();
extern void _ZN8S40C5_nt4v324Ev();
extern void _ZN8S40C5_nt4v325Ev();
extern void _ZN8S40C5_nt4v326Ev();
extern void _ZN8S40C5_nt4v327Ev();
extern void _ZN8S40C5_nt4v328Ev();
extern void _ZN8S40C5_nt4v329Ev();
extern void _ZN8S40C5_nt4v330Ev();
extern void _ZN8S40C5_nt4v331Ev();
extern void _ZN8S40C5_nt4v332Ev();
extern void _ZN8S40C5_nt4v333Ev();
extern void _ZN8S40C5_nt4v334Ev();
static  VTBL_ENTRY vtc_S40C5_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S40C5_nt[0]),
  (VTBL_ENTRY)&_ZN8S40C5_ntD1Ev,
  (VTBL_ENTRY)&_ZN8S40C5_ntD0Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v11Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v13Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v14Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v15Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v16Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v17Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v18Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v22Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v23Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v24Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v25Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v26Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v27Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v28Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v29Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v30Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v31Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v32Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v33Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v34Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v35Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v36Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v37Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v38Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v39Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v40Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v41Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v42Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v43Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v44Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v45Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v46Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v47Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v48Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v49Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v50Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v51Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v52Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v53Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v54Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v55Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v56Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v57Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v58Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v59Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v60Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v61Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v62Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v63Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v64Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v65Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v66Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v67Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v68Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v69Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v70Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v71Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v72Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v73Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v74Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v75Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v76Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v77Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v78Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v79Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v80Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v81Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v82Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v83Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v84Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v85Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v86Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v87Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v88Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v89Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v90Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v91Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v92Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v93Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v94Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v95Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v96Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v97Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v98Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v99Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v100Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v101Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v102Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v103Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v104Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v105Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v106Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v107Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v108Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v109Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v110Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v111Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v112Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v113Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v114Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v115Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v116Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v117Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v118Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v119Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v120Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v121Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v122Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v123Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v124Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v125Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v126Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v127Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v128Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v129Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v130Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v131Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v132Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v133Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v134Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v135Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v136Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v137Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v138Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v139Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v140Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v141Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v142Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v143Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v144Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v145Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v146Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v147Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v148Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v149Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v150Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v151Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v152Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v153Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v154Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v155Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v156Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v157Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v158Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v159Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v160Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v161Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v162Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v163Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v164Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v165Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v166Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v167Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v168Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v169Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v170Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v171Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v172Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v173Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v174Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v175Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v176Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v177Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v178Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v179Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v180Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v181Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v182Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v183Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v184Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v185Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v186Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v187Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v188Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v189Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v190Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v191Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v192Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v193Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v194Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v195Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v196Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v197Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v198Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v199Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v200Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v201Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v202Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v203Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v204Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v205Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v206Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v207Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v208Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v209Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v210Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v211Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v212Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v213Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v214Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v215Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v216Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v217Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v218Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v219Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v220Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v221Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v222Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v223Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v224Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v225Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v226Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v227Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v228Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v229Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v230Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v231Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v232Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v233Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v234Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v235Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v236Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v237Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v238Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v239Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v240Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v241Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v242Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v243Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v244Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v245Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v246Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v247Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v248Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v249Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v250Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v251Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v252Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v253Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v254Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v255Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v256Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v257Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v258Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v259Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v260Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v261Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v262Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v263Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v264Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v265Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v266Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v267Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v268Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v269Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v270Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v271Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v272Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v273Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v274Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v275Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v276Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v277Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v278Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v279Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v280Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v281Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v282Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v283Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v284Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v285Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v286Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v287Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v288Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v289Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v290Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v291Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v292Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v293Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v294Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v295Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v296Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v297Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v298Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v299Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v300Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v301Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v302Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v303Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v304Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v305Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v306Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v307Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v308Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v309Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v310Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v311Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v312Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v313Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v314Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v315Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v316Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v317Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v318Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v319Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v320Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v321Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v322Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v323Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v324Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v325Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v326Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v327Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v328Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v329Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v330Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v331Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v332Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v333Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v334Ev,
};
extern VTBL_ENTRY _ZTI8S40C5_nt[];
VTBL_ENTRY *P__ZTI8S40C5_nt = _ZTI8S40C5_nt; 
extern  VTBL_ENTRY _ZTV8S40C5_nt[];
Class_Descriptor cd_S40C5_nt = {  "S40C5_nt", // class name
  bases_S40C5_nt, 3,
  &(vtc_S40C5_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(1336,1052), // object size
  NSPAIRA(_ZTI8S40C5_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S40C5_nt),331, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S40C35_nt  {
  int s40c35f0[4];
  void  mf40c35(); // _ZN9S40C35_nt7mf40c35Ev
};
//SIG(-1 S40C35_nt) C1{ m Fi[4]}


void  S40C35_nt ::mf40c35(){}

//skip512 S40C35_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S40C34_nt  {
  ::S40C18_nt s40c34f0;
  ::S40C35_nt s40c34f1;
  ::S40C18_nt s40c34f2;
  ::S40C18_nt s40c34f3;
  char s40c34f4;
  void  mf40c34(); // _ZN9S40C34_nt7mf40c34Ev
};
//SIG(-1 S40C34_nt) C1{ m FC2{ m Fi[3]} FC3{ m Fi[4]} FC2 FC2 Fc}


void  S40C34_nt ::mf40c34(){}

//skip512 S40C34_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S40C33_nt  {
  ::S40C34_nt s40c33f0;
  char s40c33f1[4];
  unsigned int s40c33f2:1;
  int s40c33f3;
};
//SIG(-1 S40C33_nt) C1{ FC2{ m FC3{ m Fi[3]} FC4{ m Fi[4]} FC3 FC3 Fc} Fc[4] Fi:1 Fi}



//skip512 S40C33_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S40C4_nt  : S40C5_nt {
  void *s40c4f0;
  ::S40C29 s40c4f1;
  ::S40C18_nt s40c4f2;
  ::S40C18_nt s40c4f3;
  unsigned int s40c4f4:1;
  unsigned int s40c4f5:1;
  unsigned int s40c4f6:1;
  unsigned int s40c4f7:1;
  unsigned int s40c4f8:1;
  unsigned int s40c4f9:1;
  unsigned int s40c4f10:1;
  unsigned int s40c4f11:1;
  unsigned int s40c4f12:1;
  unsigned int s40c4f13:1;
  unsigned int s40c4f14:1;
  unsigned int s40c4f15:1;
  unsigned int s40c4f16:1;
  int s40c4f17[4];
  void *s40c4f18[2];
  int s40c4f19[8];
  void *s40c4f20[5];
  int s40c4f21[13];
  ::S40C18_nt s40c4f22;
  int s40c4f23[3];
  ::S40C33_nt s40c4f24;
  int s40c4f25[2];
  virtual  ~S40C4_nt(); // _ZN8S40C4_ntD1Ev
  virtual void  v335(); // _ZN8S40C4_nt4v335Ev
  virtual void  v336(); // _ZN8S40C4_nt4v336Ev
  virtual void  v337(); // _ZN8S40C4_nt4v337Ev
  virtual void  v338(); // _ZN8S40C4_nt4v338Ev
  virtual void  v339(); // _ZN8S40C4_nt4v339Ev
  virtual void  v340(); // _ZN8S40C4_nt4v340Ev
  virtual void  v341(); // _ZN8S40C4_nt4v341Ev
  virtual void  v342(); // _ZN8S40C4_nt4v342Ev
  virtual void  v343(); // _ZN8S40C4_nt4v343Ev
  virtual void  v344(); // _ZN8S40C4_nt4v344Ev
  virtual void  v345(); // _ZN8S40C4_nt4v345Ev
  virtual void  v346(); // _ZN8S40C4_nt4v346Ev
  virtual void  v347(); // _ZN8S40C4_nt4v347Ev
  virtual void  v348(); // _ZN8S40C4_nt4v348Ev
  virtual void  v349(); // _ZN8S40C4_nt4v349Ev
  virtual void  v350(); // _ZN8S40C4_nt4v350Ev
  virtual void  v351(); // _ZN8S40C4_nt4v351Ev
  virtual void  v352(); // _ZN8S40C4_nt4v352Ev
  virtual void  v353(); // _ZN8S40C4_nt4v353Ev
  virtual void  v354(); // _ZN8S40C4_nt4v354Ev
  virtual void  v355(); // _ZN8S40C4_nt4v355Ev
  virtual void  v356(); // _ZN8S40C4_nt4v356Ev
  virtual void  v357(); // _ZN8S40C4_nt4v357Ev
  virtual void  v358(); // _ZN8S40C4_nt4v358Ev
  S40C4_nt(); // tgen
};
//SIG(-1 S40C4_nt) C1{ BC2{ BC3{ BC4{ BC5{ vd v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 Fi FL Fp[4] Fi[2] Fp FC6{ m Fi[2]} Fp[2]} vd v89 v90 v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 v102 v103 v104 v105 v106 v107 v108 v109 v110 v111 v112 v113 v114 v115 v116 v117 v118 v119 v120 v121 v122 v123 v124 v125 v126 v127 v128 v129 v130 v131 v132 v133 v134 v135 v136 v137 v138 v139 v140 v141 v142 v143 v144 v145 v146 v147 v148 v149 v150 v151 v152 v153 v154 v155 v156 v157 v158 v159 v160 v161 v162 v163 v164 v165 v166 v167 v168 v169 v170 v171 v172 v173 v174 v175 v176 v177 v178 v179 v180 v181 v182 v183 v184 v185 v186 v187 v188 v189 v190 v191 v192 v193 v194 v195 v196 v197 v198 v199 v200 v201 v202 v203 v204 v205 v206 v207 v208 v209 v210 v211 v212 v213 v214 v215 v216 v217 v218 v219 v220 v221 v222 v223 v224 v225 v226 v227 v228 v229 v230 v231 FC7{ BC8{ BC9{ m Fp Fi[2]}}} FC7 FC10{ m Fi} Fi Fc[4] Fp[2] FC7 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[5] Fp[2] Fi[3] FC6 FC6 FC6 FC11{ BC12{ BC9}} FC11 Fi Fp[2] FC13{ m Fi[3]} FC13 FC13 FC13 Fp FC6 FC11 FC13 FC13 Fi FC13 FC13 Fp Fi Fc FC13 FC13 Fp Fi Fp FC11 FC14{ BC15{ BC9}} FC14} vd v232 v233 v234 v235 v236 v237 v238 v239 v240 v241 v242 v243 v244 v245 v246 v247 v248 v249 v250 v251 v252 v253 v254 v255 v256 v257 v258 v259 v260 v261 v262 v263 v264 v265 v266 v267 v268 v269 v270 v271 v272 v273 v274 v275 v276 v277 v278 v279 v280 v281 v282 v283 v284 v285 v286 v287 v288 v289 v290 v291 v292 v293 v294 v295 v296 v297 v298 v299 v300 v301 v302 v303 v304 v305 v306 v307 v308 v309 v310 v311 v312 v313 v314 v315 v316 v317 v318 v319 v320 v321 v322 v323 v324 v325 v326 v327 v328 v329 Fi[3] Fp[2] Fi Fp[2] Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[5] Fc[4] Fi[10] Fp[2] Fi[4] FC13 Fi[19] FC13 Fi[2] Fp Fi[5] FC13 FC13 Fi Fp Fi FC13 Fi Fp Fi[3] FC16{ BC17{ BC18{ BC9}}} Fp[3] FC6 FC6 Fp Fi FC13 Fp FC13 Fp[2] Fi[2] Fp Fi[2] Fp Fi[3] Fp[3] FC13 FC13 Fi Fp[2] Fi} vd v330 v331 v332 v333 v334 v335 v336 v337 v338 v339 v340 v341 v342 v343 v344 v345 v346 v347 v348 v349 v350 v351 Fp Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 FC19{ BC20{ BC9}} Fi FC13 Fi[3] FC13 Fi[2] Fp Fi[2] Fc Fi[8]} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 Fp FC19 FC13 FC13 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[4] Fp[2] Fi[8] Fp[5] Fi[13] FC13 Fi[3] FC21{ FC22{ m FC13 FC23{ m Fi[4]} FC13 FC13 Fc} Fc[4] Fi:1 Fi} Fi[2]}


 S40C4_nt ::~S40C4_nt(){ note_dtor("S40C4_nt", this);}
void  S40C4_nt ::v335(){vfunc_called(this, "_ZN8S40C4_nt4v335Ev");}
void  S40C4_nt ::v336(){vfunc_called(this, "_ZN8S40C4_nt4v336Ev");}
void  S40C4_nt ::v337(){vfunc_called(this, "_ZN8S40C4_nt4v337Ev");}
void  S40C4_nt ::v338(){vfunc_called(this, "_ZN8S40C4_nt4v338Ev");}
void  S40C4_nt ::v339(){vfunc_called(this, "_ZN8S40C4_nt4v339Ev");}
void  S40C4_nt ::v340(){vfunc_called(this, "_ZN8S40C4_nt4v340Ev");}
void  S40C4_nt ::v341(){vfunc_called(this, "_ZN8S40C4_nt4v341Ev");}
void  S40C4_nt ::v342(){vfunc_called(this, "_ZN8S40C4_nt4v342Ev");}
void  S40C4_nt ::v343(){vfunc_called(this, "_ZN8S40C4_nt4v343Ev");}
void  S40C4_nt ::v344(){vfunc_called(this, "_ZN8S40C4_nt4v344Ev");}
void  S40C4_nt ::v345(){vfunc_called(this, "_ZN8S40C4_nt4v345Ev");}
void  S40C4_nt ::v346(){vfunc_called(this, "_ZN8S40C4_nt4v346Ev");}
void  S40C4_nt ::v347(){vfunc_called(this, "_ZN8S40C4_nt4v347Ev");}
void  S40C4_nt ::v348(){vfunc_called(this, "_ZN8S40C4_nt4v348Ev");}
void  S40C4_nt ::v349(){vfunc_called(this, "_ZN8S40C4_nt4v349Ev");}
void  S40C4_nt ::v350(){vfunc_called(this, "_ZN8S40C4_nt4v350Ev");}
void  S40C4_nt ::v351(){vfunc_called(this, "_ZN8S40C4_nt4v351Ev");}
void  S40C4_nt ::v352(){vfunc_called(this, "_ZN8S40C4_nt4v352Ev");}
void  S40C4_nt ::v353(){vfunc_called(this, "_ZN8S40C4_nt4v353Ev");}
void  S40C4_nt ::v354(){vfunc_called(this, "_ZN8S40C4_nt4v354Ev");}
void  S40C4_nt ::v355(){vfunc_called(this, "_ZN8S40C4_nt4v355Ev");}
void  S40C4_nt ::v356(){vfunc_called(this, "_ZN8S40C4_nt4v356Ev");}
void  S40C4_nt ::v357(){vfunc_called(this, "_ZN8S40C4_nt4v357Ev");}
void  S40C4_nt ::v358(){vfunc_called(this, "_ZN8S40C4_nt4v358Ev");}
S40C4_nt ::S40C4_nt(){ note_ctor("S40C4_nt", this);} // tgen

//skip512 S40C4_nt

#else // __cplusplus

extern void _ZN8S40C4_ntC1Ev();
extern void _ZN8S40C4_ntD1Ev();
Name_Map name_map_S40C4_nt[] = {
  NSPAIR(_ZN8S40C4_ntC1Ev),
  NSPAIR(_ZN8S40C4_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S40C8_nt;
extern VTBL_ENTRY _ZTI8S40C8_nt[];
extern  VTBL_ENTRY _ZTV8S40C8_nt[];
extern Class_Descriptor cd_S40C7_nt;
extern VTBL_ENTRY _ZTI8S40C7_nt[];
extern  VTBL_ENTRY _ZTV8S40C7_nt[];
extern Class_Descriptor cd_S40C6_nt;
extern VTBL_ENTRY _ZTI8S40C6_nt[];
extern  VTBL_ENTRY _ZTV8S40C6_nt[];
extern Class_Descriptor cd_S40C5_nt;
extern VTBL_ENTRY _ZTI8S40C5_nt[];
extern  VTBL_ENTRY _ZTV8S40C5_nt[];
static Base_Class bases_S40C4_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S40C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S40C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S40C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S40C4_nt[];
extern void _ZN8S40C4_ntD1Ev();
extern void _ZN8S40C4_ntD0Ev();
extern void _ZN8S40C8_nt2v8Ev();
extern void _ZN8S40C8_nt2v9Ev();
extern void _ZN8S40C8_nt3v10Ev();
extern void _ZN8S40C8_nt3v11Ev();
extern void _ZN8S40C8_nt3v12Ev();
extern void _ZN8S40C8_nt3v13Ev();
extern void _ZN8S40C8_nt3v14Ev();
extern void _ZN8S40C8_nt3v15Ev();
extern void _ZN8S40C8_nt3v16Ev();
extern void _ZN8S40C8_nt3v17Ev();
extern void _ZN8S40C8_nt3v18Ev();
extern void _ZN8S40C8_nt3v19Ev();
extern void _ZN8S40C8_nt3v20Ev();
extern void _ZN8S40C8_nt3v21Ev();
extern void _ZN8S40C8_nt3v22Ev();
extern void _ZN8S40C8_nt3v23Ev();
extern void _ZN8S40C8_nt3v24Ev();
extern void _ZN8S40C8_nt3v25Ev();
extern void _ZN8S40C8_nt3v26Ev();
extern void _ZN8S40C8_nt3v27Ev();
extern void _ZN8S40C8_nt3v28Ev();
extern void _ZN8S40C8_nt3v29Ev();
extern void _ZN8S40C8_nt3v30Ev();
extern void _ZN8S40C8_nt3v31Ev();
extern void _ZN8S40C8_nt3v32Ev();
extern void _ZN8S40C8_nt3v33Ev();
extern void _ZN8S40C8_nt3v34Ev();
extern void _ZN8S40C8_nt3v35Ev();
extern void _ZN8S40C8_nt3v36Ev();
extern void _ZN8S40C8_nt3v37Ev();
extern void _ZN8S40C8_nt3v38Ev();
extern void _ZN8S40C8_nt3v39Ev();
extern void _ZN8S40C8_nt3v40Ev();
extern void _ZN8S40C8_nt3v41Ev();
extern void _ZN8S40C8_nt3v42Ev();
extern void _ZN8S40C8_nt3v43Ev();
extern void _ZN8S40C8_nt3v44Ev();
extern void _ZN8S40C8_nt3v45Ev();
extern void _ZN8S40C8_nt3v46Ev();
extern void _ZN8S40C8_nt3v47Ev();
extern void _ZN8S40C8_nt3v48Ev();
extern void _ZN8S40C8_nt3v49Ev();
extern void _ZN8S40C8_nt3v50Ev();
extern void _ZN8S40C8_nt3v51Ev();
extern void _ZN8S40C8_nt3v52Ev();
extern void _ZN8S40C8_nt3v53Ev();
extern void _ZN8S40C8_nt3v54Ev();
extern void _ZN8S40C8_nt3v55Ev();
extern void _ZN8S40C8_nt3v56Ev();
extern void _ZN8S40C8_nt3v57Ev();
extern void _ZN8S40C8_nt3v58Ev();
extern void _ZN8S40C8_nt3v59Ev();
extern void _ZN8S40C8_nt3v60Ev();
extern void _ZN8S40C8_nt3v61Ev();
extern void _ZN8S40C8_nt3v62Ev();
extern void _ZN8S40C8_nt3v63Ev();
extern void _ZN8S40C8_nt3v64Ev();
extern void _ZN8S40C8_nt3v65Ev();
extern void _ZN8S40C8_nt3v66Ev();
extern void _ZN8S40C8_nt3v67Ev();
extern void _ZN8S40C8_nt3v68Ev();
extern void _ZN8S40C8_nt3v69Ev();
extern void _ZN8S40C8_nt3v70Ev();
extern void _ZN8S40C8_nt3v71Ev();
extern void _ZN8S40C7_nt3v72Ev();
extern void _ZN8S40C7_nt3v73Ev();
extern void _ZN8S40C7_nt3v74Ev();
extern void _ZN8S40C7_nt3v75Ev();
extern void _ZN8S40C7_nt3v76Ev();
extern void _ZN8S40C7_nt3v77Ev();
extern void _ZN8S40C7_nt3v78Ev();
extern void _ZN8S40C7_nt3v79Ev();
extern void _ZN8S40C7_nt3v80Ev();
extern void _ZN8S40C7_nt3v81Ev();
extern void _ZN8S40C7_nt3v82Ev();
extern void _ZN8S40C7_nt3v83Ev();
extern void _ZN8S40C7_nt3v84Ev();
extern void _ZN8S40C7_nt3v85Ev();
extern void _ZN8S40C7_nt3v86Ev();
extern void _ZN8S40C7_nt3v87Ev();
extern void _ZN8S40C7_nt3v88Ev();
extern void _ZN8S40C7_nt3v89Ev();
extern void _ZN8S40C7_nt3v90Ev();
extern void _ZN8S40C7_nt3v91Ev();
extern void _ZN8S40C7_nt3v92Ev();
extern void _ZN8S40C7_nt3v93Ev();
extern void _ZN8S40C7_nt3v94Ev();
extern void _ZN8S40C7_nt3v95Ev();
extern void _ZN8S40C7_nt3v96Ev();
extern void _ZN8S40C7_nt3v97Ev();
extern void _ZN8S40C7_nt3v98Ev();
extern void _ZN8S40C7_nt3v99Ev();
extern void _ZN8S40C7_nt4v100Ev();
extern void _ZN8S40C7_nt4v101Ev();
extern void _ZN8S40C7_nt4v102Ev();
extern void _ZN8S40C7_nt4v103Ev();
extern void _ZN8S40C7_nt4v104Ev();
extern void _ZN8S40C7_nt4v105Ev();
extern void _ZN8S40C7_nt4v106Ev();
extern void _ZN8S40C7_nt4v107Ev();
extern void _ZN8S40C7_nt4v108Ev();
extern void _ZN8S40C7_nt4v109Ev();
extern void _ZN8S40C7_nt4v110Ev();
extern void _ZN8S40C7_nt4v111Ev();
extern void _ZN8S40C7_nt4v112Ev();
extern void _ZN8S40C7_nt4v113Ev();
extern void _ZN8S40C7_nt4v114Ev();
extern void _ZN8S40C7_nt4v115Ev();
extern void _ZN8S40C7_nt4v116Ev();
extern void _ZN8S40C7_nt4v117Ev();
extern void _ZN8S40C7_nt4v118Ev();
extern void _ZN8S40C7_nt4v119Ev();
extern void _ZN8S40C7_nt4v120Ev();
extern void _ZN8S40C7_nt4v121Ev();
extern void _ZN8S40C7_nt4v122Ev();
extern void _ZN8S40C7_nt4v123Ev();
extern void _ZN8S40C7_nt4v124Ev();
extern void _ZN8S40C7_nt4v125Ev();
extern void _ZN8S40C7_nt4v126Ev();
extern void _ZN8S40C7_nt4v127Ev();
extern void _ZN8S40C7_nt4v128Ev();
extern void _ZN8S40C7_nt4v129Ev();
extern void _ZN8S40C7_nt4v130Ev();
extern void _ZN8S40C7_nt4v131Ev();
extern void _ZN8S40C7_nt4v132Ev();
extern void _ZN8S40C7_nt4v133Ev();
extern void _ZN8S40C7_nt4v134Ev();
extern void _ZN8S40C7_nt4v135Ev();
extern void _ZN8S40C7_nt4v136Ev();
extern void _ZN8S40C7_nt4v137Ev();
extern void _ZN8S40C7_nt4v138Ev();
extern void _ZN8S40C7_nt4v139Ev();
extern void _ZN8S40C7_nt4v140Ev();
extern void _ZN8S40C7_nt4v141Ev();
extern void _ZN8S40C7_nt4v142Ev();
extern void _ZN8S40C7_nt4v143Ev();
extern void _ZN8S40C7_nt4v144Ev();
extern void _ZN8S40C7_nt4v145Ev();
extern void _ZN8S40C7_nt4v146Ev();
extern void _ZN8S40C7_nt4v147Ev();
extern void _ZN8S40C7_nt4v148Ev();
extern void _ZN8S40C7_nt4v149Ev();
extern void _ZN8S40C7_nt4v150Ev();
extern void _ZN8S40C7_nt4v151Ev();
extern void _ZN8S40C7_nt4v152Ev();
extern void _ZN8S40C7_nt4v153Ev();
extern void _ZN8S40C7_nt4v154Ev();
extern void _ZN8S40C7_nt4v155Ev();
extern void _ZN8S40C7_nt4v156Ev();
extern void _ZN8S40C7_nt4v157Ev();
extern void _ZN8S40C7_nt4v158Ev();
extern void _ZN8S40C7_nt4v159Ev();
extern void _ZN8S40C7_nt4v160Ev();
extern void _ZN8S40C7_nt4v161Ev();
extern void _ZN8S40C7_nt4v162Ev();
extern void _ZN8S40C7_nt4v163Ev();
extern void _ZN8S40C7_nt4v164Ev();
extern void _ZN8S40C7_nt4v165Ev();
extern void _ZN8S40C7_nt4v166Ev();
extern void _ZN8S40C7_nt4v167Ev();
extern void _ZN8S40C7_nt4v168Ev();
extern void _ZN8S40C7_nt4v169Ev();
extern void _ZN8S40C7_nt4v170Ev();
extern void _ZN8S40C7_nt4v171Ev();
extern void _ZN8S40C7_nt4v172Ev();
extern void _ZN8S40C7_nt4v173Ev();
extern void _ZN8S40C7_nt4v174Ev();
extern void _ZN8S40C7_nt4v175Ev();
extern void _ZN8S40C7_nt4v176Ev();
extern void _ZN8S40C7_nt4v177Ev();
extern void _ZN8S40C7_nt4v178Ev();
extern void _ZN8S40C7_nt4v179Ev();
extern void _ZN8S40C7_nt4v180Ev();
extern void _ZN8S40C7_nt4v181Ev();
extern void _ZN8S40C7_nt4v182Ev();
extern void _ZN8S40C7_nt4v183Ev();
extern void _ZN8S40C7_nt4v184Ev();
extern void _ZN8S40C7_nt4v185Ev();
extern void _ZN8S40C7_nt4v186Ev();
extern void _ZN8S40C7_nt4v187Ev();
extern void _ZN8S40C7_nt4v188Ev();
extern void _ZN8S40C7_nt4v189Ev();
extern void _ZN8S40C7_nt4v190Ev();
extern void _ZN8S40C7_nt4v191Ev();
extern void _ZN8S40C7_nt4v192Ev();
extern void _ZN8S40C7_nt4v193Ev();
extern void _ZN8S40C7_nt4v194Ev();
extern void _ZN8S40C7_nt4v195Ev();
extern void _ZN8S40C7_nt4v196Ev();
extern void _ZN8S40C7_nt4v197Ev();
extern void _ZN8S40C7_nt4v198Ev();
extern void _ZN8S40C7_nt4v199Ev();
extern void _ZN8S40C7_nt4v200Ev();
extern void _ZN8S40C7_nt4v201Ev();
extern void _ZN8S40C7_nt4v202Ev();
extern void _ZN8S40C7_nt4v203Ev();
extern void _ZN8S40C7_nt4v204Ev();
extern void _ZN8S40C7_nt4v205Ev();
extern void _ZN8S40C7_nt4v206Ev();
extern void _ZN8S40C7_nt4v207Ev();
extern void _ZN8S40C7_nt4v208Ev();
extern void _ZN8S40C7_nt4v209Ev();
extern void _ZN8S40C7_nt4v210Ev();
extern void _ZN8S40C7_nt4v211Ev();
extern void _ZN8S40C7_nt4v212Ev();
extern void _ZN8S40C7_nt4v213Ev();
extern void _ZN8S40C7_nt4v214Ev();
extern void _ZN8S40C6_nt4v215Ev();
extern void _ZN8S40C6_nt4v216Ev();
extern void _ZN8S40C6_nt4v217Ev();
extern void _ZN8S40C6_nt4v218Ev();
extern void _ZN8S40C6_nt4v219Ev();
extern void _ZN8S40C6_nt4v220Ev();
extern void _ZN8S40C6_nt4v221Ev();
extern void _ZN8S40C6_nt4v222Ev();
extern void _ZN8S40C6_nt4v223Ev();
extern void _ZN8S40C6_nt4v224Ev();
extern void _ZN8S40C6_nt4v225Ev();
extern void _ZN8S40C6_nt4v226Ev();
extern void _ZN8S40C6_nt4v227Ev();
extern void _ZN8S40C6_nt4v228Ev();
extern void _ZN8S40C6_nt4v229Ev();
extern void _ZN8S40C6_nt4v230Ev();
extern void _ZN8S40C6_nt4v231Ev();
extern void _ZN8S40C6_nt4v232Ev();
extern void _ZN8S40C6_nt4v233Ev();
extern void _ZN8S40C6_nt4v234Ev();
extern void _ZN8S40C6_nt4v235Ev();
extern void _ZN8S40C6_nt4v236Ev();
extern void _ZN8S40C6_nt4v237Ev();
extern void _ZN8S40C6_nt4v238Ev();
extern void _ZN8S40C6_nt4v239Ev();
extern void _ZN8S40C6_nt4v240Ev();
extern void _ZN8S40C6_nt4v241Ev();
extern void _ZN8S40C6_nt4v242Ev();
extern void _ZN8S40C6_nt4v243Ev();
extern void _ZN8S40C6_nt4v244Ev();
extern void _ZN8S40C6_nt4v245Ev();
extern void _ZN8S40C6_nt4v246Ev();
extern void _ZN8S40C6_nt4v247Ev();
extern void _ZN8S40C6_nt4v248Ev();
extern void _ZN8S40C6_nt4v249Ev();
extern void _ZN8S40C6_nt4v250Ev();
extern void _ZN8S40C6_nt4v251Ev();
extern void _ZN8S40C6_nt4v252Ev();
extern void _ZN8S40C6_nt4v253Ev();
extern void _ZN8S40C6_nt4v254Ev();
extern void _ZN8S40C6_nt4v255Ev();
extern void _ZN8S40C6_nt4v256Ev();
extern void _ZN8S40C6_nt4v257Ev();
extern void _ZN8S40C6_nt4v258Ev();
extern void _ZN8S40C6_nt4v259Ev();
extern void _ZN8S40C6_nt4v260Ev();
extern void _ZN8S40C6_nt4v261Ev();
extern void _ZN8S40C6_nt4v262Ev();
extern void _ZN8S40C6_nt4v263Ev();
extern void _ZN8S40C6_nt4v264Ev();
extern void _ZN8S40C6_nt4v265Ev();
extern void _ZN8S40C6_nt4v266Ev();
extern void _ZN8S40C6_nt4v267Ev();
extern void _ZN8S40C6_nt4v268Ev();
extern void _ZN8S40C6_nt4v269Ev();
extern void _ZN8S40C6_nt4v270Ev();
extern void _ZN8S40C6_nt4v271Ev();
extern void _ZN8S40C6_nt4v272Ev();
extern void _ZN8S40C6_nt4v273Ev();
extern void _ZN8S40C6_nt4v274Ev();
extern void _ZN8S40C6_nt4v275Ev();
extern void _ZN8S40C6_nt4v276Ev();
extern void _ZN8S40C6_nt4v277Ev();
extern void _ZN8S40C6_nt4v278Ev();
extern void _ZN8S40C6_nt4v279Ev();
extern void _ZN8S40C6_nt4v280Ev();
extern void _ZN8S40C6_nt4v281Ev();
extern void _ZN8S40C6_nt4v282Ev();
extern void _ZN8S40C6_nt4v283Ev();
extern void _ZN8S40C6_nt4v284Ev();
extern void _ZN8S40C6_nt4v285Ev();
extern void _ZN8S40C6_nt4v286Ev();
extern void _ZN8S40C6_nt4v287Ev();
extern void _ZN8S40C6_nt4v288Ev();
extern void _ZN8S40C6_nt4v289Ev();
extern void _ZN8S40C6_nt4v290Ev();
extern void _ZN8S40C6_nt4v291Ev();
extern void _ZN8S40C6_nt4v292Ev();
extern void _ZN8S40C6_nt4v293Ev();
extern void _ZN8S40C6_nt4v294Ev();
extern void _ZN8S40C6_nt4v295Ev();
extern void _ZN8S40C6_nt4v296Ev();
extern void _ZN8S40C6_nt4v297Ev();
extern void _ZN8S40C6_nt4v298Ev();
extern void _ZN8S40C6_nt4v299Ev();
extern void _ZN8S40C6_nt4v300Ev();
extern void _ZN8S40C6_nt4v301Ev();
extern void _ZN8S40C6_nt4v302Ev();
extern void _ZN8S40C6_nt4v303Ev();
extern void _ZN8S40C6_nt4v304Ev();
extern void _ZN8S40C6_nt4v305Ev();
extern void _ZN8S40C6_nt4v306Ev();
extern void _ZN8S40C6_nt4v307Ev();
extern void _ZN8S40C6_nt4v308Ev();
extern void _ZN8S40C6_nt4v309Ev();
extern void _ZN8S40C6_nt4v310Ev();
extern void _ZN8S40C6_nt4v311Ev();
extern void _ZN8S40C6_nt4v312Ev();
extern void _ZN8S40C5_nt4v313Ev();
extern void _ZN8S40C5_nt4v314Ev();
extern void _ZN8S40C5_nt4v315Ev();
extern void _ZN8S40C5_nt4v316Ev();
extern void _ZN8S40C5_nt4v317Ev();
extern void _ZN8S40C5_nt4v318Ev();
extern void _ZN8S40C5_nt4v319Ev();
extern void _ZN8S40C5_nt4v320Ev();
extern void _ZN8S40C5_nt4v321Ev();
extern void _ZN8S40C5_nt4v322Ev();
extern void _ZN8S40C5_nt4v323Ev();
extern void _ZN8S40C5_nt4v324Ev();
extern void _ZN8S40C5_nt4v325Ev();
extern void _ZN8S40C5_nt4v326Ev();
extern void _ZN8S40C5_nt4v327Ev();
extern void _ZN8S40C5_nt4v328Ev();
extern void _ZN8S40C5_nt4v329Ev();
extern void _ZN8S40C5_nt4v330Ev();
extern void _ZN8S40C5_nt4v331Ev();
extern void _ZN8S40C5_nt4v332Ev();
extern void _ZN8S40C5_nt4v333Ev();
extern void _ZN8S40C5_nt4v334Ev();
extern void _ZN8S40C4_nt4v335Ev();
extern void _ZN8S40C4_nt4v336Ev();
extern void _ZN8S40C4_nt4v337Ev();
extern void _ZN8S40C4_nt4v338Ev();
extern void _ZN8S40C4_nt4v339Ev();
extern void _ZN8S40C4_nt4v340Ev();
extern void _ZN8S40C4_nt4v341Ev();
extern void _ZN8S40C4_nt4v342Ev();
extern void _ZN8S40C4_nt4v343Ev();
extern void _ZN8S40C4_nt4v344Ev();
extern void _ZN8S40C4_nt4v345Ev();
extern void _ZN8S40C4_nt4v346Ev();
extern void _ZN8S40C4_nt4v347Ev();
extern void _ZN8S40C4_nt4v348Ev();
extern void _ZN8S40C4_nt4v349Ev();
extern void _ZN8S40C4_nt4v350Ev();
extern void _ZN8S40C4_nt4v351Ev();
extern void _ZN8S40C4_nt4v352Ev();
extern void _ZN8S40C4_nt4v353Ev();
extern void _ZN8S40C4_nt4v354Ev();
extern void _ZN8S40C4_nt4v355Ev();
extern void _ZN8S40C4_nt4v356Ev();
extern void _ZN8S40C4_nt4v357Ev();
extern void _ZN8S40C4_nt4v358Ev();
static  VTBL_ENTRY vtc_S40C4_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S40C4_nt[0]),
  (VTBL_ENTRY)&_ZN8S40C4_ntD1Ev,
  (VTBL_ENTRY)&_ZN8S40C4_ntD0Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v11Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v13Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v14Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v15Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v16Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v17Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v18Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v22Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v23Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v24Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v25Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v26Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v27Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v28Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v29Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v30Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v31Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v32Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v33Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v34Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v35Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v36Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v37Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v38Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v39Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v40Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v41Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v42Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v43Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v44Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v45Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v46Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v47Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v48Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v49Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v50Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v51Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v52Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v53Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v54Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v55Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v56Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v57Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v58Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v59Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v60Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v61Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v62Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v63Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v64Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v65Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v66Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v67Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v68Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v69Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v70Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v71Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v72Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v73Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v74Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v75Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v76Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v77Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v78Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v79Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v80Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v81Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v82Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v83Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v84Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v85Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v86Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v87Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v88Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v89Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v90Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v91Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v92Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v93Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v94Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v95Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v96Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v97Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v98Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v99Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v100Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v101Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v102Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v103Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v104Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v105Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v106Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v107Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v108Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v109Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v110Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v111Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v112Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v113Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v114Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v115Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v116Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v117Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v118Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v119Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v120Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v121Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v122Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v123Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v124Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v125Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v126Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v127Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v128Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v129Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v130Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v131Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v132Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v133Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v134Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v135Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v136Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v137Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v138Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v139Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v140Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v141Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v142Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v143Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v144Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v145Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v146Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v147Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v148Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v149Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v150Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v151Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v152Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v153Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v154Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v155Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v156Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v157Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v158Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v159Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v160Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v161Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v162Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v163Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v164Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v165Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v166Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v167Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v168Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v169Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v170Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v171Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v172Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v173Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v174Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v175Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v176Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v177Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v178Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v179Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v180Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v181Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v182Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v183Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v184Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v185Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v186Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v187Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v188Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v189Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v190Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v191Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v192Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v193Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v194Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v195Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v196Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v197Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v198Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v199Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v200Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v201Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v202Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v203Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v204Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v205Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v206Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v207Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v208Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v209Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v210Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v211Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v212Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v213Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v214Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v215Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v216Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v217Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v218Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v219Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v220Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v221Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v222Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v223Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v224Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v225Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v226Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v227Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v228Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v229Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v230Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v231Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v232Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v233Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v234Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v235Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v236Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v237Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v238Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v239Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v240Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v241Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v242Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v243Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v244Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v245Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v246Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v247Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v248Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v249Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v250Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v251Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v252Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v253Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v254Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v255Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v256Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v257Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v258Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v259Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v260Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v261Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v262Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v263Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v264Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v265Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v266Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v267Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v268Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v269Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v270Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v271Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v272Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v273Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v274Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v275Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v276Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v277Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v278Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v279Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v280Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v281Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v282Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v283Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v284Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v285Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v286Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v287Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v288Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v289Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v290Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v291Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v292Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v293Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v294Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v295Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v296Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v297Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v298Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v299Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v300Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v301Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v302Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v303Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v304Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v305Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v306Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v307Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v308Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v309Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v310Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v311Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v312Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v313Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v314Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v315Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v316Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v317Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v318Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v319Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v320Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v321Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v322Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v323Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v324Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v325Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v326Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v327Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v328Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v329Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v330Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v331Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v332Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v333Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v334Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v335Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v336Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v337Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v338Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v339Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v340Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v341Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v342Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v343Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v344Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v345Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v346Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v347Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v348Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v349Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v350Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v351Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v352Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v353Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v354Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v355Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v356Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v357Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v358Ev,
};
extern VTBL_ENTRY _ZTI8S40C4_nt[];
VTBL_ENTRY *P__ZTI8S40C4_nt = _ZTI8S40C4_nt; 
extern  VTBL_ENTRY _ZTV8S40C4_nt[];
Class_Descriptor cd_S40C4_nt = {  "S40C4_nt", // class name
  bases_S40C4_nt, 4,
  &(vtc_S40C4_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(1648,1324), // object size
  NSPAIRA(_ZTI8S40C4_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S40C4_nt),355, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  4, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S40C3_nt  : S40C4_nt {
  unsigned int s40c3f0:1;
  void *s40c3f1;
  ::S40C35_nt s40c3f2;
  virtual  ~S40C3_nt(); // _ZN8S40C3_ntD1Ev
  virtual void  v359(); // _ZN8S40C3_nt4v359Ev
  virtual void  v360(); // _ZN8S40C3_nt4v360Ev
  virtual void  v361(); // _ZN8S40C3_nt4v361Ev
  S40C3_nt(); // tgen
};
//SIG(-1 S40C3_nt) C1{ BC2{ BC3{ BC4{ BC5{ BC6{ vd v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 Fi FL Fp[4] Fi[2] Fp FC7{ m Fi[2]} Fp[2]} vd v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 v90 v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 v102 v103 v104 v105 v106 v107 v108 v109 v110 v111 v112 v113 v114 v115 v116 v117 v118 v119 v120 v121 v122 v123 v124 v125 v126 v127 v128 v129 v130 v131 v132 v133 v134 v135 v136 v137 v138 v139 v140 v141 v142 v143 v144 v145 v146 v147 v148 v149 v150 v151 v152 v153 v154 v155 v156 v157 v158 v159 v160 v161 v162 v163 v164 v165 v166 v167 v168 v169 v170 v171 v172 v173 v174 v175 v176 v177 v178 v179 v180 v181 v182 v183 v184 v185 v186 v187 v188 v189 v190 v191 v192 v193 v194 v195 v196 v197 v198 v199 v200 v201 v202 v203 v204 v205 v206 v207 v208 v209 v210 FC8{ BC9{ BC10{ m Fp Fi[2]}}} FC8 FC11{ m Fi} Fi Fc[4] Fp[2] FC8 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[5] Fp[2] Fi[3] FC7 FC7 FC7 FC12{ BC13{ BC10}} FC12 Fi Fp[2] FC14{ m Fi[3]} FC14 FC14 FC14 Fp FC7 FC12 FC14 FC14 Fi FC14 FC14 Fp Fi Fc FC14 FC14 Fp Fi Fp FC12 FC15{ BC16{ BC10}} FC15} vd v211 v212 v213 v214 v215 v216 v217 v218 v219 v220 v221 v222 v223 v224 v225 v226 v227 v228 v229 v230 v231 v232 v233 v234 v235 v236 v237 v238 v239 v240 v241 v242 v243 v244 v245 v246 v247 v248 v249 v250 v251 v252 v253 v254 v255 v256 v257 v258 v259 v260 v261 v262 v263 v264 v265 v266 v267 v268 v269 v270 v271 v272 v273 v274 v275 v276 v277 v278 v279 v280 v281 v282 v283 v284 v285 v286 v287 v288 v289 v290 v291 v292 v293 v294 v295 v296 v297 v298 v299 v300 v301 v302 v303 v304 v305 v306 v307 v308 Fi[3] Fp[2] Fi Fp[2] Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[5] Fc[4] Fi[10] Fp[2] Fi[4] FC14 Fi[19] FC14 Fi[2] Fp Fi[5] FC14 FC14 Fi Fp Fi FC14 Fi Fp Fi[3] FC17{ BC18{ BC19{ BC10}}} Fp[3] FC7 FC7 Fp Fi FC14 Fp FC14 Fp[2] Fi[2] Fp Fi[2] Fp Fi[3] Fp[3] FC14 FC14 Fi Fp[2] Fi} vd v309 v310 v311 v312 v313 v314 v315 v316 v317 v318 v319 v320 v321 v322 v323 v324 v325 v326 v327 v328 v329 v330 Fp Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 FC20{ BC21{ BC10}} Fi FC14 Fi[3] FC14 Fi[2] Fp Fi[2] Fc Fi[8]} vd v331 v332 v333 v334 v335 v336 v337 v338 v339 v340 v341 v342 v343 v344 v345 v346 v347 v348 v349 v350 v351 v352 v353 v354 Fp FC20 FC14 FC14 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[4] Fp[2] Fi[8] Fp[5] Fi[13] FC14 Fi[3] FC22{ FC23{ m FC14 FC24{ m Fi[4]} FC14 FC14 Fc} Fc[4] Fi:1 Fi} Fi[2]} vd v1 v2 v3 Fi:1 Fp FC24}


 S40C3_nt ::~S40C3_nt(){ note_dtor("S40C3_nt", this);}
void  S40C3_nt ::v359(){vfunc_called(this, "_ZN8S40C3_nt4v359Ev");}
void  S40C3_nt ::v360(){vfunc_called(this, "_ZN8S40C3_nt4v360Ev");}
void  S40C3_nt ::v361(){vfunc_called(this, "_ZN8S40C3_nt4v361Ev");}
S40C3_nt ::S40C3_nt(){ note_ctor("S40C3_nt", this);} // tgen

//skip512 S40C3_nt

#else // __cplusplus

extern void _ZN8S40C3_ntC1Ev();
extern void _ZN8S40C3_ntD1Ev();
Name_Map name_map_S40C3_nt[] = {
  NSPAIR(_ZN8S40C3_ntC1Ev),
  NSPAIR(_ZN8S40C3_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S40C8_nt;
extern VTBL_ENTRY _ZTI8S40C8_nt[];
extern  VTBL_ENTRY _ZTV8S40C8_nt[];
extern Class_Descriptor cd_S40C7_nt;
extern VTBL_ENTRY _ZTI8S40C7_nt[];
extern  VTBL_ENTRY _ZTV8S40C7_nt[];
extern Class_Descriptor cd_S40C6_nt;
extern VTBL_ENTRY _ZTI8S40C6_nt[];
extern  VTBL_ENTRY _ZTV8S40C6_nt[];
extern Class_Descriptor cd_S40C5_nt;
extern VTBL_ENTRY _ZTI8S40C5_nt[];
extern  VTBL_ENTRY _ZTV8S40C5_nt[];
extern Class_Descriptor cd_S40C4_nt;
extern VTBL_ENTRY _ZTI8S40C4_nt[];
extern  VTBL_ENTRY _ZTV8S40C4_nt[];
static Base_Class bases_S40C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S40C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S40C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S40C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S40C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S40C3_nt[];
extern void _ZN8S40C3_ntD1Ev();
extern void _ZN8S40C3_ntD0Ev();
extern void _ZN8S40C8_nt2v8Ev();
extern void _ZN8S40C8_nt2v9Ev();
extern void _ZN8S40C8_nt3v10Ev();
extern void _ZN8S40C8_nt3v11Ev();
extern void _ZN8S40C8_nt3v12Ev();
extern void _ZN8S40C8_nt3v13Ev();
extern void _ZN8S40C8_nt3v14Ev();
extern void _ZN8S40C8_nt3v15Ev();
extern void _ZN8S40C8_nt3v16Ev();
extern void _ZN8S40C8_nt3v17Ev();
extern void _ZN8S40C8_nt3v18Ev();
extern void _ZN8S40C8_nt3v19Ev();
extern void _ZN8S40C8_nt3v20Ev();
extern void _ZN8S40C8_nt3v21Ev();
extern void _ZN8S40C8_nt3v22Ev();
extern void _ZN8S40C8_nt3v23Ev();
extern void _ZN8S40C8_nt3v24Ev();
extern void _ZN8S40C8_nt3v25Ev();
extern void _ZN8S40C8_nt3v26Ev();
extern void _ZN8S40C8_nt3v27Ev();
extern void _ZN8S40C8_nt3v28Ev();
extern void _ZN8S40C8_nt3v29Ev();
extern void _ZN8S40C8_nt3v30Ev();
extern void _ZN8S40C8_nt3v31Ev();
extern void _ZN8S40C8_nt3v32Ev();
extern void _ZN8S40C8_nt3v33Ev();
extern void _ZN8S40C8_nt3v34Ev();
extern void _ZN8S40C8_nt3v35Ev();
extern void _ZN8S40C8_nt3v36Ev();
extern void _ZN8S40C8_nt3v37Ev();
extern void _ZN8S40C8_nt3v38Ev();
extern void _ZN8S40C8_nt3v39Ev();
extern void _ZN8S40C8_nt3v40Ev();
extern void _ZN8S40C8_nt3v41Ev();
extern void _ZN8S40C8_nt3v42Ev();
extern void _ZN8S40C8_nt3v43Ev();
extern void _ZN8S40C8_nt3v44Ev();
extern void _ZN8S40C8_nt3v45Ev();
extern void _ZN8S40C8_nt3v46Ev();
extern void _ZN8S40C8_nt3v47Ev();
extern void _ZN8S40C8_nt3v48Ev();
extern void _ZN8S40C8_nt3v49Ev();
extern void _ZN8S40C8_nt3v50Ev();
extern void _ZN8S40C8_nt3v51Ev();
extern void _ZN8S40C8_nt3v52Ev();
extern void _ZN8S40C8_nt3v53Ev();
extern void _ZN8S40C8_nt3v54Ev();
extern void _ZN8S40C8_nt3v55Ev();
extern void _ZN8S40C8_nt3v56Ev();
extern void _ZN8S40C8_nt3v57Ev();
extern void _ZN8S40C8_nt3v58Ev();
extern void _ZN8S40C8_nt3v59Ev();
extern void _ZN8S40C8_nt3v60Ev();
extern void _ZN8S40C8_nt3v61Ev();
extern void _ZN8S40C8_nt3v62Ev();
extern void _ZN8S40C8_nt3v63Ev();
extern void _ZN8S40C8_nt3v64Ev();
extern void _ZN8S40C8_nt3v65Ev();
extern void _ZN8S40C8_nt3v66Ev();
extern void _ZN8S40C8_nt3v67Ev();
extern void _ZN8S40C8_nt3v68Ev();
extern void _ZN8S40C8_nt3v69Ev();
extern void _ZN8S40C8_nt3v70Ev();
extern void _ZN8S40C8_nt3v71Ev();
extern void _ZN8S40C7_nt3v72Ev();
extern void _ZN8S40C7_nt3v73Ev();
extern void _ZN8S40C7_nt3v74Ev();
extern void _ZN8S40C7_nt3v75Ev();
extern void _ZN8S40C7_nt3v76Ev();
extern void _ZN8S40C7_nt3v77Ev();
extern void _ZN8S40C7_nt3v78Ev();
extern void _ZN8S40C7_nt3v79Ev();
extern void _ZN8S40C7_nt3v80Ev();
extern void _ZN8S40C7_nt3v81Ev();
extern void _ZN8S40C7_nt3v82Ev();
extern void _ZN8S40C7_nt3v83Ev();
extern void _ZN8S40C7_nt3v84Ev();
extern void _ZN8S40C7_nt3v85Ev();
extern void _ZN8S40C7_nt3v86Ev();
extern void _ZN8S40C7_nt3v87Ev();
extern void _ZN8S40C7_nt3v88Ev();
extern void _ZN8S40C7_nt3v89Ev();
extern void _ZN8S40C7_nt3v90Ev();
extern void _ZN8S40C7_nt3v91Ev();
extern void _ZN8S40C7_nt3v92Ev();
extern void _ZN8S40C7_nt3v93Ev();
extern void _ZN8S40C7_nt3v94Ev();
extern void _ZN8S40C7_nt3v95Ev();
extern void _ZN8S40C7_nt3v96Ev();
extern void _ZN8S40C7_nt3v97Ev();
extern void _ZN8S40C7_nt3v98Ev();
extern void _ZN8S40C7_nt3v99Ev();
extern void _ZN8S40C7_nt4v100Ev();
extern void _ZN8S40C7_nt4v101Ev();
extern void _ZN8S40C7_nt4v102Ev();
extern void _ZN8S40C7_nt4v103Ev();
extern void _ZN8S40C7_nt4v104Ev();
extern void _ZN8S40C7_nt4v105Ev();
extern void _ZN8S40C7_nt4v106Ev();
extern void _ZN8S40C7_nt4v107Ev();
extern void _ZN8S40C7_nt4v108Ev();
extern void _ZN8S40C7_nt4v109Ev();
extern void _ZN8S40C7_nt4v110Ev();
extern void _ZN8S40C7_nt4v111Ev();
extern void _ZN8S40C7_nt4v112Ev();
extern void _ZN8S40C7_nt4v113Ev();
extern void _ZN8S40C7_nt4v114Ev();
extern void _ZN8S40C7_nt4v115Ev();
extern void _ZN8S40C7_nt4v116Ev();
extern void _ZN8S40C7_nt4v117Ev();
extern void _ZN8S40C7_nt4v118Ev();
extern void _ZN8S40C7_nt4v119Ev();
extern void _ZN8S40C7_nt4v120Ev();
extern void _ZN8S40C7_nt4v121Ev();
extern void _ZN8S40C7_nt4v122Ev();
extern void _ZN8S40C7_nt4v123Ev();
extern void _ZN8S40C7_nt4v124Ev();
extern void _ZN8S40C7_nt4v125Ev();
extern void _ZN8S40C7_nt4v126Ev();
extern void _ZN8S40C7_nt4v127Ev();
extern void _ZN8S40C7_nt4v128Ev();
extern void _ZN8S40C7_nt4v129Ev();
extern void _ZN8S40C7_nt4v130Ev();
extern void _ZN8S40C7_nt4v131Ev();
extern void _ZN8S40C7_nt4v132Ev();
extern void _ZN8S40C7_nt4v133Ev();
extern void _ZN8S40C7_nt4v134Ev();
extern void _ZN8S40C7_nt4v135Ev();
extern void _ZN8S40C7_nt4v136Ev();
extern void _ZN8S40C7_nt4v137Ev();
extern void _ZN8S40C7_nt4v138Ev();
extern void _ZN8S40C7_nt4v139Ev();
extern void _ZN8S40C7_nt4v140Ev();
extern void _ZN8S40C7_nt4v141Ev();
extern void _ZN8S40C7_nt4v142Ev();
extern void _ZN8S40C7_nt4v143Ev();
extern void _ZN8S40C7_nt4v144Ev();
extern void _ZN8S40C7_nt4v145Ev();
extern void _ZN8S40C7_nt4v146Ev();
extern void _ZN8S40C7_nt4v147Ev();
extern void _ZN8S40C7_nt4v148Ev();
extern void _ZN8S40C7_nt4v149Ev();
extern void _ZN8S40C7_nt4v150Ev();
extern void _ZN8S40C7_nt4v151Ev();
extern void _ZN8S40C7_nt4v152Ev();
extern void _ZN8S40C7_nt4v153Ev();
extern void _ZN8S40C7_nt4v154Ev();
extern void _ZN8S40C7_nt4v155Ev();
extern void _ZN8S40C7_nt4v156Ev();
extern void _ZN8S40C7_nt4v157Ev();
extern void _ZN8S40C7_nt4v158Ev();
extern void _ZN8S40C7_nt4v159Ev();
extern void _ZN8S40C7_nt4v160Ev();
extern void _ZN8S40C7_nt4v161Ev();
extern void _ZN8S40C7_nt4v162Ev();
extern void _ZN8S40C7_nt4v163Ev();
extern void _ZN8S40C7_nt4v164Ev();
extern void _ZN8S40C7_nt4v165Ev();
extern void _ZN8S40C7_nt4v166Ev();
extern void _ZN8S40C7_nt4v167Ev();
extern void _ZN8S40C7_nt4v168Ev();
extern void _ZN8S40C7_nt4v169Ev();
extern void _ZN8S40C7_nt4v170Ev();
extern void _ZN8S40C7_nt4v171Ev();
extern void _ZN8S40C7_nt4v172Ev();
extern void _ZN8S40C7_nt4v173Ev();
extern void _ZN8S40C7_nt4v174Ev();
extern void _ZN8S40C7_nt4v175Ev();
extern void _ZN8S40C7_nt4v176Ev();
extern void _ZN8S40C7_nt4v177Ev();
extern void _ZN8S40C7_nt4v178Ev();
extern void _ZN8S40C7_nt4v179Ev();
extern void _ZN8S40C7_nt4v180Ev();
extern void _ZN8S40C7_nt4v181Ev();
extern void _ZN8S40C7_nt4v182Ev();
extern void _ZN8S40C7_nt4v183Ev();
extern void _ZN8S40C7_nt4v184Ev();
extern void _ZN8S40C7_nt4v185Ev();
extern void _ZN8S40C7_nt4v186Ev();
extern void _ZN8S40C7_nt4v187Ev();
extern void _ZN8S40C7_nt4v188Ev();
extern void _ZN8S40C7_nt4v189Ev();
extern void _ZN8S40C7_nt4v190Ev();
extern void _ZN8S40C7_nt4v191Ev();
extern void _ZN8S40C7_nt4v192Ev();
extern void _ZN8S40C7_nt4v193Ev();
extern void _ZN8S40C7_nt4v194Ev();
extern void _ZN8S40C7_nt4v195Ev();
extern void _ZN8S40C7_nt4v196Ev();
extern void _ZN8S40C7_nt4v197Ev();
extern void _ZN8S40C7_nt4v198Ev();
extern void _ZN8S40C7_nt4v199Ev();
extern void _ZN8S40C7_nt4v200Ev();
extern void _ZN8S40C7_nt4v201Ev();
extern void _ZN8S40C7_nt4v202Ev();
extern void _ZN8S40C7_nt4v203Ev();
extern void _ZN8S40C7_nt4v204Ev();
extern void _ZN8S40C7_nt4v205Ev();
extern void _ZN8S40C7_nt4v206Ev();
extern void _ZN8S40C7_nt4v207Ev();
extern void _ZN8S40C7_nt4v208Ev();
extern void _ZN8S40C7_nt4v209Ev();
extern void _ZN8S40C7_nt4v210Ev();
extern void _ZN8S40C7_nt4v211Ev();
extern void _ZN8S40C7_nt4v212Ev();
extern void _ZN8S40C7_nt4v213Ev();
extern void _ZN8S40C7_nt4v214Ev();
extern void _ZN8S40C6_nt4v215Ev();
extern void _ZN8S40C6_nt4v216Ev();
extern void _ZN8S40C6_nt4v217Ev();
extern void _ZN8S40C6_nt4v218Ev();
extern void _ZN8S40C6_nt4v219Ev();
extern void _ZN8S40C6_nt4v220Ev();
extern void _ZN8S40C6_nt4v221Ev();
extern void _ZN8S40C6_nt4v222Ev();
extern void _ZN8S40C6_nt4v223Ev();
extern void _ZN8S40C6_nt4v224Ev();
extern void _ZN8S40C6_nt4v225Ev();
extern void _ZN8S40C6_nt4v226Ev();
extern void _ZN8S40C6_nt4v227Ev();
extern void _ZN8S40C6_nt4v228Ev();
extern void _ZN8S40C6_nt4v229Ev();
extern void _ZN8S40C6_nt4v230Ev();
extern void _ZN8S40C6_nt4v231Ev();
extern void _ZN8S40C6_nt4v232Ev();
extern void _ZN8S40C6_nt4v233Ev();
extern void _ZN8S40C6_nt4v234Ev();
extern void _ZN8S40C6_nt4v235Ev();
extern void _ZN8S40C6_nt4v236Ev();
extern void _ZN8S40C6_nt4v237Ev();
extern void _ZN8S40C6_nt4v238Ev();
extern void _ZN8S40C6_nt4v239Ev();
extern void _ZN8S40C6_nt4v240Ev();
extern void _ZN8S40C6_nt4v241Ev();
extern void _ZN8S40C6_nt4v242Ev();
extern void _ZN8S40C6_nt4v243Ev();
extern void _ZN8S40C6_nt4v244Ev();
extern void _ZN8S40C6_nt4v245Ev();
extern void _ZN8S40C6_nt4v246Ev();
extern void _ZN8S40C6_nt4v247Ev();
extern void _ZN8S40C6_nt4v248Ev();
extern void _ZN8S40C6_nt4v249Ev();
extern void _ZN8S40C6_nt4v250Ev();
extern void _ZN8S40C6_nt4v251Ev();
extern void _ZN8S40C6_nt4v252Ev();
extern void _ZN8S40C6_nt4v253Ev();
extern void _ZN8S40C6_nt4v254Ev();
extern void _ZN8S40C6_nt4v255Ev();
extern void _ZN8S40C6_nt4v256Ev();
extern void _ZN8S40C6_nt4v257Ev();
extern void _ZN8S40C6_nt4v258Ev();
extern void _ZN8S40C6_nt4v259Ev();
extern void _ZN8S40C6_nt4v260Ev();
extern void _ZN8S40C6_nt4v261Ev();
extern void _ZN8S40C6_nt4v262Ev();
extern void _ZN8S40C6_nt4v263Ev();
extern void _ZN8S40C6_nt4v264Ev();
extern void _ZN8S40C6_nt4v265Ev();
extern void _ZN8S40C6_nt4v266Ev();
extern void _ZN8S40C6_nt4v267Ev();
extern void _ZN8S40C6_nt4v268Ev();
extern void _ZN8S40C6_nt4v269Ev();
extern void _ZN8S40C6_nt4v270Ev();
extern void _ZN8S40C6_nt4v271Ev();
extern void _ZN8S40C6_nt4v272Ev();
extern void _ZN8S40C6_nt4v273Ev();
extern void _ZN8S40C6_nt4v274Ev();
extern void _ZN8S40C6_nt4v275Ev();
extern void _ZN8S40C6_nt4v276Ev();
extern void _ZN8S40C6_nt4v277Ev();
extern void _ZN8S40C6_nt4v278Ev();
extern void _ZN8S40C6_nt4v279Ev();
extern void _ZN8S40C6_nt4v280Ev();
extern void _ZN8S40C6_nt4v281Ev();
extern void _ZN8S40C6_nt4v282Ev();
extern void _ZN8S40C6_nt4v283Ev();
extern void _ZN8S40C6_nt4v284Ev();
extern void _ZN8S40C6_nt4v285Ev();
extern void _ZN8S40C6_nt4v286Ev();
extern void _ZN8S40C6_nt4v287Ev();
extern void _ZN8S40C6_nt4v288Ev();
extern void _ZN8S40C6_nt4v289Ev();
extern void _ZN8S40C6_nt4v290Ev();
extern void _ZN8S40C6_nt4v291Ev();
extern void _ZN8S40C6_nt4v292Ev();
extern void _ZN8S40C6_nt4v293Ev();
extern void _ZN8S40C6_nt4v294Ev();
extern void _ZN8S40C6_nt4v295Ev();
extern void _ZN8S40C6_nt4v296Ev();
extern void _ZN8S40C6_nt4v297Ev();
extern void _ZN8S40C6_nt4v298Ev();
extern void _ZN8S40C6_nt4v299Ev();
extern void _ZN8S40C6_nt4v300Ev();
extern void _ZN8S40C6_nt4v301Ev();
extern void _ZN8S40C6_nt4v302Ev();
extern void _ZN8S40C6_nt4v303Ev();
extern void _ZN8S40C6_nt4v304Ev();
extern void _ZN8S40C6_nt4v305Ev();
extern void _ZN8S40C6_nt4v306Ev();
extern void _ZN8S40C6_nt4v307Ev();
extern void _ZN8S40C6_nt4v308Ev();
extern void _ZN8S40C6_nt4v309Ev();
extern void _ZN8S40C6_nt4v310Ev();
extern void _ZN8S40C6_nt4v311Ev();
extern void _ZN8S40C6_nt4v312Ev();
extern void _ZN8S40C5_nt4v313Ev();
extern void _ZN8S40C5_nt4v314Ev();
extern void _ZN8S40C5_nt4v315Ev();
extern void _ZN8S40C5_nt4v316Ev();
extern void _ZN8S40C5_nt4v317Ev();
extern void _ZN8S40C5_nt4v318Ev();
extern void _ZN8S40C5_nt4v319Ev();
extern void _ZN8S40C5_nt4v320Ev();
extern void _ZN8S40C5_nt4v321Ev();
extern void _ZN8S40C5_nt4v322Ev();
extern void _ZN8S40C5_nt4v323Ev();
extern void _ZN8S40C5_nt4v324Ev();
extern void _ZN8S40C5_nt4v325Ev();
extern void _ZN8S40C5_nt4v326Ev();
extern void _ZN8S40C5_nt4v327Ev();
extern void _ZN8S40C5_nt4v328Ev();
extern void _ZN8S40C5_nt4v329Ev();
extern void _ZN8S40C5_nt4v330Ev();
extern void _ZN8S40C5_nt4v331Ev();
extern void _ZN8S40C5_nt4v332Ev();
extern void _ZN8S40C5_nt4v333Ev();
extern void _ZN8S40C5_nt4v334Ev();
extern void _ZN8S40C4_nt4v335Ev();
extern void _ZN8S40C4_nt4v336Ev();
extern void _ZN8S40C4_nt4v337Ev();
extern void _ZN8S40C4_nt4v338Ev();
extern void _ZN8S40C4_nt4v339Ev();
extern void _ZN8S40C4_nt4v340Ev();
extern void _ZN8S40C4_nt4v341Ev();
extern void _ZN8S40C4_nt4v342Ev();
extern void _ZN8S40C4_nt4v343Ev();
extern void _ZN8S40C4_nt4v344Ev();
extern void _ZN8S40C4_nt4v345Ev();
extern void _ZN8S40C4_nt4v346Ev();
extern void _ZN8S40C4_nt4v347Ev();
extern void _ZN8S40C4_nt4v348Ev();
extern void _ZN8S40C4_nt4v349Ev();
extern void _ZN8S40C4_nt4v350Ev();
extern void _ZN8S40C4_nt4v351Ev();
extern void _ZN8S40C4_nt4v352Ev();
extern void _ZN8S40C4_nt4v353Ev();
extern void _ZN8S40C4_nt4v354Ev();
extern void _ZN8S40C4_nt4v355Ev();
extern void _ZN8S40C4_nt4v356Ev();
extern void _ZN8S40C4_nt4v357Ev();
extern void _ZN8S40C4_nt4v358Ev();
extern void _ZN8S40C3_nt4v359Ev();
extern void _ZN8S40C3_nt4v360Ev();
extern void _ZN8S40C3_nt4v361Ev();
static  VTBL_ENTRY vtc_S40C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S40C3_nt[0]),
  (VTBL_ENTRY)&_ZN8S40C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN8S40C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v11Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v13Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v14Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v15Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v16Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v17Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v18Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v22Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v23Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v24Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v25Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v26Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v27Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v28Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v29Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v30Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v31Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v32Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v33Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v34Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v35Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v36Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v37Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v38Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v39Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v40Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v41Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v42Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v43Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v44Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v45Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v46Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v47Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v48Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v49Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v50Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v51Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v52Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v53Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v54Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v55Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v56Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v57Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v58Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v59Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v60Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v61Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v62Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v63Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v64Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v65Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v66Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v67Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v68Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v69Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v70Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v71Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v72Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v73Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v74Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v75Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v76Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v77Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v78Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v79Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v80Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v81Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v82Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v83Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v84Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v85Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v86Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v87Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v88Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v89Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v90Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v91Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v92Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v93Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v94Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v95Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v96Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v97Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v98Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v99Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v100Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v101Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v102Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v103Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v104Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v105Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v106Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v107Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v108Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v109Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v110Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v111Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v112Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v113Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v114Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v115Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v116Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v117Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v118Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v119Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v120Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v121Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v122Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v123Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v124Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v125Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v126Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v127Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v128Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v129Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v130Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v131Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v132Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v133Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v134Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v135Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v136Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v137Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v138Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v139Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v140Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v141Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v142Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v143Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v144Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v145Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v146Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v147Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v148Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v149Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v150Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v151Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v152Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v153Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v154Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v155Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v156Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v157Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v158Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v159Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v160Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v161Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v162Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v163Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v164Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v165Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v166Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v167Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v168Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v169Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v170Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v171Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v172Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v173Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v174Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v175Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v176Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v177Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v178Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v179Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v180Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v181Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v182Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v183Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v184Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v185Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v186Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v187Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v188Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v189Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v190Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v191Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v192Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v193Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v194Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v195Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v196Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v197Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v198Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v199Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v200Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v201Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v202Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v203Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v204Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v205Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v206Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v207Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v208Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v209Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v210Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v211Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v212Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v213Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v214Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v215Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v216Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v217Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v218Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v219Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v220Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v221Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v222Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v223Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v224Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v225Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v226Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v227Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v228Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v229Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v230Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v231Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v232Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v233Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v234Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v235Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v236Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v237Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v238Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v239Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v240Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v241Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v242Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v243Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v244Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v245Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v246Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v247Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v248Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v249Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v250Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v251Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v252Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v253Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v254Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v255Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v256Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v257Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v258Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v259Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v260Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v261Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v262Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v263Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v264Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v265Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v266Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v267Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v268Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v269Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v270Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v271Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v272Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v273Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v274Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v275Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v276Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v277Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v278Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v279Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v280Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v281Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v282Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v283Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v284Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v285Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v286Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v287Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v288Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v289Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v290Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v291Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v292Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v293Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v294Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v295Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v296Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v297Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v298Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v299Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v300Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v301Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v302Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v303Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v304Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v305Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v306Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v307Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v308Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v309Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v310Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v311Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v312Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v313Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v314Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v315Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v316Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v317Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v318Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v319Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v320Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v321Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v322Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v323Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v324Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v325Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v326Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v327Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v328Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v329Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v330Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v331Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v332Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v333Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v334Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v335Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v336Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v337Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v338Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v339Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v340Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v341Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v342Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v343Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v344Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v345Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v346Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v347Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v348Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v349Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v350Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v351Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v352Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v353Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v354Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v355Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v356Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v357Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v358Ev,
  (VTBL_ENTRY)&_ZN8S40C3_nt4v359Ev,
  (VTBL_ENTRY)&_ZN8S40C3_nt4v360Ev,
  (VTBL_ENTRY)&_ZN8S40C3_nt4v361Ev,
};
extern VTBL_ENTRY _ZTI8S40C3_nt[];
VTBL_ENTRY *P__ZTI8S40C3_nt = _ZTI8S40C3_nt; 
extern  VTBL_ENTRY _ZTV8S40C3_nt[];
Class_Descriptor cd_S40C3_nt = {  "S40C3_nt", // class name
  bases_S40C3_nt, 5,
  &(vtc_S40C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(1680,1348), // object size
  NSPAIRA(_ZTI8S40C3_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S40C3_nt),358, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  5, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

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



static void Test_S40C38()
{
  extern Class_Descriptor cd_S40C38;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S40C38, buf);
    S40C38 &lv = *(new (buf) S40C38());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S40C38)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S40C38)");
    check_base_class_offset(lv, (S40C12_nt*), 0, "S40C38");
    test_class_info(&lv, &cd_S40C38);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS40C38(Test_S40C38, "S40C38", ABISELECT(16,12));

#else // __cplusplus

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

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

#ifdef __cplusplus

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



static void Test_S40C37()
{
  extern Class_Descriptor cd_S40C37;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S40C37, buf);
    S40C37 &lv = *(new (buf) S40C37());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S40C37)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S40C37)");
    check_base_class_offset(lv, (S40C12_nt*)(S40C38*), 0, "S40C37");
    check_base_class_offset(lv, (S40C38*), 0, "S40C37");
    test_class_info(&lv, &cd_S40C37);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS40C37(Test_S40C37, "S40C37", ABISELECT(16,12));

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S40C41_nt  {
  void *s40c41f0;
  ::S40C26_nt s40c41f1;
  void  mf40c41(); // _ZN9S40C41_nt7mf40c41Ev
};
//SIG(-1 S40C41_nt) C1{ m Fp FC2{ BC3{ BC4{ BC5{ m Fp Fi[2]}}}}}


void  S40C41_nt ::mf40c41(){}

//skip512 S40C41_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

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



static void Test_S40C43()
{
  extern Class_Descriptor cd_S40C43;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S40C43, buf);
    S40C43 &lv = *(new (buf) S40C43());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S40C43)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S40C43)");
    check_base_class_offset(lv, (S40C12_nt*), 0, "S40C43");
    test_class_info(&lv, &cd_S40C43);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS40C43(Test_S40C43, "S40C43", ABISELECT(16,12));

#else // __cplusplus

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

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

#ifdef __cplusplus

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



static void Test_S40C42()
{
  extern Class_Descriptor cd_S40C42;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S40C42, buf);
    S40C42 &lv = *(new (buf) S40C42());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S40C42)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S40C42)");
    check_base_class_offset(lv, (S40C12_nt*)(S40C43*), 0, "S40C42");
    check_base_class_offset(lv, (S40C43*), 0, "S40C42");
    test_class_info(&lv, &cd_S40C42);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS40C42(Test_S40C42, "S40C42", ABISELECT(16,12));

#else // __cplusplus

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

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

#ifdef __cplusplus

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



static void Test_S40C47()
{
  extern Class_Descriptor cd_S40C47;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S40C47, buf);
    S40C47 &lv = *(new (buf) S40C47());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S40C47)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S40C47)");
    check_base_class_offset(lv, (S40C12_nt*), 0, "S40C47");
    test_class_info(&lv, &cd_S40C47);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS40C47(Test_S40C47, "S40C47", ABISELECT(16,12));

#else // __cplusplus

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

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

#ifdef __cplusplus

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



static void Test_S40C46()
{
  extern Class_Descriptor cd_S40C46;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S40C46, buf);
    S40C46 &lv = *(new (buf) S40C46());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S40C46)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S40C46)");
    check_base_class_offset(lv, (S40C12_nt*)(S40C47*), 0, "S40C46");
    check_base_class_offset(lv, (S40C47*), 0, "S40C46");
    test_class_info(&lv, &cd_S40C46);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS40C46(Test_S40C46, "S40C46", ABISELECT(16,12));

#else // __cplusplus

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

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

#ifdef __cplusplus

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



static void Test_S40C51()
{
  extern Class_Descriptor cd_S40C51;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S40C51, buf);
    S40C51 &lv = *(new (buf) S40C51());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S40C51)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S40C51)");
    check_base_class_offset(lv, (S40C12_nt*), 0, "S40C51");
    test_class_info(&lv, &cd_S40C51);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS40C51(Test_S40C51, "S40C51", ABISELECT(16,12));

#else // __cplusplus

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

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

#ifdef __cplusplus

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



static void Test_S40C50()
{
  extern Class_Descriptor cd_S40C50;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S40C50, buf);
    S40C50 &lv = *(new (buf) S40C50());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S40C50)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S40C50)");
    check_base_class_offset(lv, (S40C12_nt*)(S40C51*), 0, "S40C50");
    check_base_class_offset(lv, (S40C51*), 0, "S40C50");
    test_class_info(&lv, &cd_S40C50);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS40C50(Test_S40C50, "S40C50", ABISELECT(16,12));

#else // __cplusplus

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

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

#ifdef __cplusplus

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



static void Test_S40C55()
{
  extern Class_Descriptor cd_S40C55;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S40C55, buf);
    S40C55 &lv = *(new (buf) S40C55());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S40C55)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S40C55)");
    check_base_class_offset(lv, (S40C12_nt*), 0, "S40C55");
    test_class_info(&lv, &cd_S40C55);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS40C55(Test_S40C55, "S40C55", ABISELECT(16,12));

#else // __cplusplus

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

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

#ifdef __cplusplus

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



static void Test_S40C54()
{
  extern Class_Descriptor cd_S40C54;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S40C54, buf);
    S40C54 &lv = *(new (buf) S40C54());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S40C54)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S40C54)");
    check_base_class_offset(lv, (S40C12_nt*)(S40C55*), 0, "S40C54");
    check_base_class_offset(lv, (S40C55*), 0, "S40C54");
    test_class_info(&lv, &cd_S40C54);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS40C54(Test_S40C54, "S40C54", ABISELECT(16,12));

#else // __cplusplus

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

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

#ifdef __cplusplus

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



static void Test_S40C59()
{
  extern Class_Descriptor cd_S40C59;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S40C59, buf);
    S40C59 &lv = *(new (buf) S40C59());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S40C59)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S40C59)");
    check_base_class_offset(lv, (S40C12_nt*), 0, "S40C59");
    test_class_info(&lv, &cd_S40C59);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS40C59(Test_S40C59, "S40C59", ABISELECT(16,12));

#else // __cplusplus

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

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

#ifdef __cplusplus

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



static void Test_S40C58()
{
  extern Class_Descriptor cd_S40C58;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S40C58, buf);
    S40C58 &lv = *(new (buf) S40C58());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S40C58)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S40C58)");
    check_base_class_offset(lv, (S40C12_nt*)(S40C59*), 0, "S40C58");
    check_base_class_offset(lv, (S40C59*), 0, "S40C58");
    test_class_info(&lv, &cd_S40C58);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS40C58(Test_S40C58, "S40C58", ABISELECT(16,12));

#else // __cplusplus

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

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

#ifdef __cplusplus

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



static void Test_S40C63()
{
  extern Class_Descriptor cd_S40C63;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S40C63, buf);
    S40C63 &lv = *(new (buf) S40C63());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S40C63)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S40C63)");
    check_base_class_offset(lv, (S40C12_nt*), 0, "S40C63");
    test_class_info(&lv, &cd_S40C63);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS40C63(Test_S40C63, "S40C63", ABISELECT(16,12));

#else // __cplusplus

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

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

#ifdef __cplusplus

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



static void Test_S40C62()
{
  extern Class_Descriptor cd_S40C62;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S40C62, buf);
    S40C62 &lv = *(new (buf) S40C62());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S40C62)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S40C62)");
    check_base_class_offset(lv, (S40C12_nt*)(S40C63*), 0, "S40C62");
    check_base_class_offset(lv, (S40C63*), 0, "S40C62");
    test_class_info(&lv, &cd_S40C62);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS40C62(Test_S40C62, "S40C62", ABISELECT(16,12));

#else // __cplusplus

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

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

#ifdef __cplusplus

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



static void Test_S40C67()
{
  extern Class_Descriptor cd_S40C67;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S40C67, buf);
    S40C67 &lv = *(new (buf) S40C67());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S40C67)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S40C67)");
    check_base_class_offset(lv, (S40C12_nt*), 0, "S40C67");
    test_class_info(&lv, &cd_S40C67);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS40C67(Test_S40C67, "S40C67", ABISELECT(16,12));

#else // __cplusplus

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

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

#ifdef __cplusplus

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



static void Test_S40C66()
{
  extern Class_Descriptor cd_S40C66;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S40C66, buf);
    S40C66 &lv = *(new (buf) S40C66());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S40C66)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S40C66)");
    check_base_class_offset(lv, (S40C12_nt*)(S40C67*), 0, "S40C66");
    check_base_class_offset(lv, (S40C67*), 0, "S40C66");
    test_class_info(&lv, &cd_S40C66);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS40C66(Test_S40C66, "S40C66", ABISELECT(16,12));

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S40C68_nt  {
  ::S40C66 s40c68f0;
  char s40c68f1;
  void  mf40c68(); // _ZN9S40C68_nt7mf40c68Ev
};
//SIG(-1 S40C68_nt) C1{ m FC2{ BC3{ BC4{ m Fp Fi[2]}}} Fc}


void  S40C68_nt ::mf40c68(){}

//skip512 S40C68_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

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



static void Test_S40C72()
{
  extern Class_Descriptor cd_S40C72;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S40C72, buf);
    S40C72 &lv = *(new (buf) S40C72());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S40C72)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S40C72)");
    check_base_class_offset(lv, (S40C12_nt*), 0, "S40C72");
    test_class_info(&lv, &cd_S40C72);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS40C72(Test_S40C72, "S40C72", ABISELECT(16,12));

#else // __cplusplus

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

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

#ifdef __cplusplus

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



static void Test_S40C71()
{
  extern Class_Descriptor cd_S40C71;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S40C71, buf);
    S40C71 &lv = *(new (buf) S40C71());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S40C71)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S40C71)");
    check_base_class_offset(lv, (S40C12_nt*)(S40C72*), 0, "S40C71");
    check_base_class_offset(lv, (S40C72*), 0, "S40C71");
    test_class_info(&lv, &cd_S40C71);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS40C71(Test_S40C71, "S40C71", ABISELECT(16,12));

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S40C75_nt  {
  int s40c75f0;
  ::S40C18_nt s40c75f1;
  ::S40C18_nt s40c75f2;
  void *s40c75f3;
  ::S40C9_nt s40c75f4;
};
//SIG(-1 S40C75_nt) C1{ Fi FC2{ m Fi[3]} FC2 Fp FC3{ m Fi[2]}}



//skip512 S40C75_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

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



static void Test_S40C77()
{
  extern Class_Descriptor cd_S40C77;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S40C77, buf);
    S40C77 &lv = *(new (buf) S40C77());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S40C77)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S40C77)");
    check_base_class_offset(lv, (S40C12_nt*), 0, "S40C77");
    test_class_info(&lv, &cd_S40C77);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS40C77(Test_S40C77, "S40C77", ABISELECT(16,12));

#else // __cplusplus

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

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

#ifdef __cplusplus

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



static void Test_S40C76()
{
  extern Class_Descriptor cd_S40C76;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S40C76, buf);
    S40C76 &lv = *(new (buf) S40C76());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S40C76)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S40C76)");
    check_base_class_offset(lv, (S40C12_nt*)(S40C77*), 0, "S40C76");
    check_base_class_offset(lv, (S40C77*), 0, "S40C76");
    test_class_info(&lv, &cd_S40C76);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS40C76(Test_S40C76, "S40C76", ABISELECT(16,12));

#else // __cplusplus

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

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

#ifdef __cplusplus

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



static void Test_S40C81()
{
  extern Class_Descriptor cd_S40C81;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S40C81, buf);
    S40C81 &lv = *(new (buf) S40C81());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S40C81)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S40C81)");
    check_base_class_offset(lv, (S40C12_nt*), 0, "S40C81");
    test_class_info(&lv, &cd_S40C81);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS40C81(Test_S40C81, "S40C81", ABISELECT(16,12));

#else // __cplusplus

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

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

#ifdef __cplusplus

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



static void Test_S40C80()
{
  extern Class_Descriptor cd_S40C80;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S40C80, buf);
    S40C80 &lv = *(new (buf) S40C80());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S40C80)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S40C80)");
    check_base_class_offset(lv, (S40C12_nt*)(S40C81*), 0, "S40C80");
    check_base_class_offset(lv, (S40C81*), 0, "S40C80");
    test_class_info(&lv, &cd_S40C80);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS40C80(Test_S40C80, "S40C80", ABISELECT(16,12));

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S40C2_nt  : S40C3_nt {
  unsigned int s40c2f0:1;
  unsigned int s40c2f1:1;
  unsigned int s40c2f2:1;
  unsigned int s40c2f3:1;
  unsigned int s40c2f4:1;
  unsigned int s40c2f5:1;
  unsigned int s40c2f6:1;
  unsigned int s40c2f7:1;
  unsigned int s40c2f8:1;
  unsigned int s40c2f9:1;
  unsigned int s40c2f10:1;
  unsigned int s40c2f11:1;
  unsigned int s40c2f12:1;
  unsigned int s40c2f13:1;
  unsigned int s40c2f14:1;
  unsigned int s40c2f15:1;
  unsigned int s40c2f16:1;
  unsigned int s40c2f17:1;
  unsigned int s40c2f18:1;
  unsigned int s40c2f19:1;
  unsigned int s40c2f20:1;
  unsigned int s40c2f21:1;
  unsigned int s40c2f22:1;
  unsigned int s40c2f23:1;
  unsigned int s40c2f24:1;
  unsigned int s40c2f25:1;
  unsigned int s40c2f26:1;
  unsigned int s40c2f27:1;
  unsigned int s40c2f28:1;
  unsigned int s40c2f29:1;
  unsigned int s40c2f30:1;
  unsigned int s40c2f31:1;
  unsigned int s40c2f32:1;
  unsigned int s40c2f33:1;
  unsigned int s40c2f34:1;
  unsigned int s40c2f35:1;
  unsigned int s40c2f36:1;
  unsigned int s40c2f37:1;
  unsigned int s40c2f38:1;
  unsigned int s40c2f39:1;
  unsigned int s40c2f40:1;
  unsigned int s40c2f41:1;
  unsigned int s40c2f42:1;
  unsigned int s40c2f43:1;
  unsigned int s40c2f44:1;
  unsigned int s40c2f45:1;
  unsigned int s40c2f46:1;
  unsigned int s40c2f47:1;
  unsigned int s40c2f48:1;
  unsigned int s40c2f49:1;
  unsigned int s40c2f50:1;
  unsigned int s40c2f51:1;
  unsigned int s40c2f52:1;
  unsigned int s40c2f53:1;
  unsigned int s40c2f54:1;
  unsigned int s40c2f55:1;
  unsigned int s40c2f56:1;
  unsigned int s40c2f57:1;
  unsigned int s40c2f58:1;
  unsigned int s40c2f59:1;
  unsigned int s40c2f60:1;
  unsigned int s40c2f61:1;
  ::S40C37 s40c2f62;
  void *s40c2f63;
  char s40c2f64[3];
  void *s40c2f65;
  int s40c2f66;
  void *s40c2f67[2];
  int s40c2f68[2];
  void *s40c2f69;
  int s40c2f70[5];
  void *s40c2f71[3];
  int s40c2f72[2];
  ::S40C37 s40c2f73;
  int s40c2f74[3];
  unsigned int s40c2f75:1;
  int s40c2f76[5];
  void *s40c2f77[2];
  int s40c2f78;
  void *s40c2f79;
  int s40c2f80;
  void *s40c2f81;
  int s40c2f82[2];
  void *s40c2f83[3];
  int s40c2f84;
  ::S40C26_nt s40c2f85;
  ::S40C26_nt s40c2f86;
  ::S40C41_nt s40c2f87;
  int s40c2f88[5];
  void *s40c2f89[2];
  int s40c2f90;
  ::S40C18_nt s40c2f91;
  ::S40C42 s40c2f92;
  int s40c2f93;
  ::S40C42 s40c2f94;
  void *s40c2f95;
  int s40c2f96;
  ::S40C46 s40c2f97;
  ::S40C46 s40c2f98;
  ::S40C50 s40c2f99;
  ::S40C50 s40c2f100;
  ::S40C54 s40c2f101;
  int s40c2f102;
  void *s40c2f103[2];
  ::S40C54 s40c2f104;
  void *s40c2f105;
  int s40c2f106[6];
  void *s40c2f107[2];
  int s40c2f108[3];
  void *s40c2f109;
  ::S40C58 s40c2f110;
  void *s40c2f111;
  ::S40C9_nt s40c2f112;
  int s40c2f113;
  ::S40C9_nt s40c2f114;
  ::S40C58 s40c2f115;
  int s40c2f116[6];
  void *s40c2f117;
  int s40c2f118[2];
  ::S40C9_nt s40c2f119;
  ::S40C9_nt s40c2f120;
  ::S40C58 s40c2f121;
  ::S40C18_nt s40c2f122;
  void *s40c2f123[2];
  int s40c2f124;
  void *s40c2f125[2];
  int s40c2f126;
  void *s40c2f127[3];
  int s40c2f128;
  ::S40C9_nt s40c2f129;
  void *s40c2f130[2];
  ::S40C62 s40c2f131;
  ::S40C9_nt s40c2f132;
  int s40c2f133;
  ::S40C9_nt s40c2f134;
  void *s40c2f135[3];
  ::S40C18_nt s40c2f136;
  ::S40C18_nt s40c2f137;
  ::S40C9_nt s40c2f138;
  ::S40C18_nt s40c2f139;
  int s40c2f140;
  ::S40C35_nt s40c2f141;
  ::S40C35_nt s40c2f142;
  ::S40C35_nt s40c2f143;
  ::S40C35_nt s40c2f144;
  ::S40C35_nt s40c2f145;
  int s40c2f146[4];
  ::S40C18_nt s40c2f147;
  void *s40c2f148;
  ::S40C18_nt s40c2f149;
  ::S40C62 s40c2f150;
  ::S40C66 s40c2f151;
  ::S40C9_nt s40c2f152;
  ::S40C68_nt s40c2f153;
  ::S40C54 s40c2f154;
  int s40c2f155;
  void *s40c2f156[2];
  int s40c2f157[9];
  ::S40C71 s40c2f158;
  int s40c2f159;
  ::S40C18_nt s40c2f160;
  int s40c2f161[2];
  ::S40C18_nt s40c2f162;
  ::S40C71 s40c2f163;
  ::S40C75_nt s40c2f164;
  int s40c2f165[3];
  void *s40c2f166[2];
  ::S40C76 s40c2f167;
  ::S40C76 s40c2f168;
  void *s40c2f169;
  int s40c2f170[2];
  ::S40C80 s40c2f171;
  ::S40C80 s40c2f172;
  virtual  ~S40C2_nt(); // _ZN8S40C2_ntD1Ev
  virtual void  v362(); // _ZN8S40C2_nt4v362Ev
  virtual void  v363(); // _ZN8S40C2_nt4v363Ev
  virtual void  v364(); // _ZN8S40C2_nt4v364Ev
  virtual void  v365(); // _ZN8S40C2_nt4v365Ev
  virtual void  v366(); // _ZN8S40C2_nt4v366Ev
  virtual void  v367(); // _ZN8S40C2_nt4v367Ev
  virtual void  v368(); // _ZN8S40C2_nt4v368Ev
  virtual void  v369(); // _ZN8S40C2_nt4v369Ev
  virtual void  v370(); // _ZN8S40C2_nt4v370Ev
  virtual void  v371(); // _ZN8S40C2_nt4v371Ev
  virtual void  v372(); // _ZN8S40C2_nt4v372Ev
  virtual void  v373(); // _ZN8S40C2_nt4v373Ev
  virtual void  v374(); // _ZN8S40C2_nt4v374Ev
  virtual void  v375(); // _ZN8S40C2_nt4v375Ev
  virtual void  v376(); // _ZN8S40C2_nt4v376Ev
  virtual void  v377(); // _ZN8S40C2_nt4v377Ev
  virtual void  v378(); // _ZN8S40C2_nt4v378Ev
  virtual void  v379(); // _ZN8S40C2_nt4v379Ev
  virtual void  v380(); // _ZN8S40C2_nt4v380Ev
  virtual void  v381(); // _ZN8S40C2_nt4v381Ev
  virtual void  v382(); // _ZN8S40C2_nt4v382Ev
  virtual void  v383(); // _ZN8S40C2_nt4v383Ev
  virtual void  v384(); // _ZN8S40C2_nt4v384Ev
  virtual void  v385(); // _ZN8S40C2_nt4v385Ev
  virtual void  v386(); // _ZN8S40C2_nt4v386Ev
  virtual void  v387(); // _ZN8S40C2_nt4v387Ev
  virtual void  v388(); // _ZN8S40C2_nt4v388Ev
  virtual void  v389(); // _ZN8S40C2_nt4v389Ev
  virtual void  v390(); // _ZN8S40C2_nt4v390Ev
  S40C2_nt(); // tgen
};
//SIG(-1 S40C2_nt) C1{ BC2{ BC3{ BC4{ BC5{ BC6{ BC7{ vd v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 v90 v91 v92 v93 Fi FL Fp[4] Fi[2] Fp FC8{ m Fi[2]} Fp[2]} vd v94 v95 v96 v97 v98 v99 v100 v101 v102 v103 v104 v105 v106 v107 v108 v109 v110 v111 v112 v113 v114 v115 v116 v117 v118 v119 v120 v121 v122 v123 v124 v125 v126 v127 v128 v129 v130 v131 v132 v133 v134 v135 v136 v137 v138 v139 v140 v141 v142 v143 v144 v145 v146 v147 v148 v149 v150 v151 v152 v153 v154 v155 v156 v157 v158 v159 v160 v161 v162 v163 v164 v165 v166 v167 v168 v169 v170 v171 v172 v173 v174 v175 v176 v177 v178 v179 v180 v181 v182 v183 v184 v185 v186 v187 v188 v189 v190 v191 v192 v193 v194 v195 v196 v197 v198 v199 v200 v201 v202 v203 v204 v205 v206 v207 v208 v209 v210 v211 v212 v213 v214 v215 v216 v217 v218 v219 v220 v221 v222 v223 v224 v225 v226 v227 v228 v229 v230 v231 v232 v233 v234 v235 v236 FC9{ BC10{ BC11{ m Fp Fi[2]}}} FC9 FC12{ m Fi} Fi Fc[4] Fp[2] FC9 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[5] Fp[2] Fi[3] FC8 FC8 FC8 FC13{ BC14{ BC11}} FC13 Fi Fp[2] FC15{ m Fi[3]} FC15 FC15 FC15 Fp FC8 FC13 FC15 FC15 Fi FC15 FC15 Fp Fi Fc FC15 FC15 Fp Fi Fp FC13 FC16{ BC17{ BC11}} FC16} vd v237 v238 v239 v240 v241 v242 v243 v244 v245 v246 v247 v248 v249 v250 v251 v252 v253 v254 v255 v256 v257 v258 v259 v260 v261 v262 v263 v264 v265 v266 v267 v268 v269 v270 v271 v272 v273 v274 v275 v276 v277 v278 v279 v280 v281 v282 v283 v284 v285 v286 v287 v288 v289 v290 v291 v292 v293 v294 v295 v296 v297 v298 v299 v300 v301 v302 v303 v304 v305 v306 v307 v308 v309 v310 v311 v312 v313 v314 v315 v316 v317 v318 v319 v320 v321 v322 v323 v324 v325 v326 v327 v328 v329 v330 v331 v332 v333 v334 Fi[3] Fp[2] Fi Fp[2] Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[5] Fc[4] Fi[10] Fp[2] Fi[4] FC15 Fi[19] FC15 Fi[2] Fp Fi[5] FC15 FC15 Fi Fp Fi FC15 Fi Fp Fi[3] FC18{ BC19{ BC20{ BC11}}} Fp[3] FC8 FC8 Fp Fi FC15 Fp FC15 Fp[2] Fi[2] Fp Fi[2] Fp Fi[3] Fp[3] FC15 FC15 Fi Fp[2] Fi} vd v335 v336 v337 v338 v339 v340 v341 v342 v343 v344 v345 v346 v347 v348 v349 v350 v351 v352 v353 v354 v355 v356 Fp Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 FC21{ BC22{ BC11}} Fi FC15 Fi[3] FC15 Fi[2] Fp Fi[2] Fc Fi[8]} vd v357 v358 v359 v360 v361 v362 v363 v364 v365 v366 v367 v368 v369 v370 v371 v372 v373 v374 v375 v376 v377 v378 v379 v380 Fp FC21 FC15 FC15 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[4] Fp[2] Fi[8] Fp[5] Fi[13] FC15 Fi[3] FC23{ FC24{ m FC15 FC25{ m Fi[4]} FC15 FC15 Fc} Fc[4] Fi:1 Fi} Fi[2]} vd v381 v382 v383 Fi:1 Fp FC25} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 FC26{ BC27{ BC11}} Fp Fc[3] Fp Fi Fp[2] Fi[2] Fp Fi[5] Fp[3] Fi[2] FC26 Fi[3] Fi:1 Fi[5] Fp[2] Fi Fp Fi Fp Fi[2] Fp[3] Fi FC18 FC18 FC28{ m Fp FC18} Fi[5] Fp[2] Fi FC15 FC29{ BC30{ BC11}} Fi FC29 Fp Fi FC31{ BC32{ BC11}} FC31 FC33{ BC34{ BC11}} FC33 FC35{ BC36{ BC11}} Fi Fp[2] FC35 Fp Fi[6] Fp[2] Fi[3] Fp FC37{ BC38{ BC11}} Fp FC8 Fi FC8 FC37 Fi[6] Fp Fi[2] FC8 FC8 FC37 FC15 Fp[2] Fi Fp[2] Fi Fp[3] Fi FC8 Fp[2] FC39{ BC40{ BC11}} FC8 Fi FC8 Fp[3] FC15 FC15 FC8 FC15 Fi FC25 FC25 FC25 FC25 FC25 Fi[4] FC15 Fp FC15 FC39 FC41{ BC42{ BC11}} FC8 FC43{ m FC41 Fc} FC35 Fi Fp[2] Fi[9] FC44{ BC45{ BC11}} Fi FC15 Fi[2] FC15 FC44 FC46{ Fi FC15 FC15 Fp FC8} Fi[3] Fp[2] FC47{ BC48{ BC11}} FC47 Fp Fi[2] FC49{ BC50{ BC11}} FC49}


 S40C2_nt ::~S40C2_nt(){ note_dtor("S40C2_nt", this);}
void  S40C2_nt ::v362(){vfunc_called(this, "_ZN8S40C2_nt4v362Ev");}
void  S40C2_nt ::v363(){vfunc_called(this, "_ZN8S40C2_nt4v363Ev");}
void  S40C2_nt ::v364(){vfunc_called(this, "_ZN8S40C2_nt4v364Ev");}
void  S40C2_nt ::v365(){vfunc_called(this, "_ZN8S40C2_nt4v365Ev");}
void  S40C2_nt ::v366(){vfunc_called(this, "_ZN8S40C2_nt4v366Ev");}
void  S40C2_nt ::v367(){vfunc_called(this, "_ZN8S40C2_nt4v367Ev");}
void  S40C2_nt ::v368(){vfunc_called(this, "_ZN8S40C2_nt4v368Ev");}
void  S40C2_nt ::v369(){vfunc_called(this, "_ZN8S40C2_nt4v369Ev");}
void  S40C2_nt ::v370(){vfunc_called(this, "_ZN8S40C2_nt4v370Ev");}
void  S40C2_nt ::v371(){vfunc_called(this, "_ZN8S40C2_nt4v371Ev");}
void  S40C2_nt ::v372(){vfunc_called(this, "_ZN8S40C2_nt4v372Ev");}
void  S40C2_nt ::v373(){vfunc_called(this, "_ZN8S40C2_nt4v373Ev");}
void  S40C2_nt ::v374(){vfunc_called(this, "_ZN8S40C2_nt4v374Ev");}
void  S40C2_nt ::v375(){vfunc_called(this, "_ZN8S40C2_nt4v375Ev");}
void  S40C2_nt ::v376(){vfunc_called(this, "_ZN8S40C2_nt4v376Ev");}
void  S40C2_nt ::v377(){vfunc_called(this, "_ZN8S40C2_nt4v377Ev");}
void  S40C2_nt ::v378(){vfunc_called(this, "_ZN8S40C2_nt4v378Ev");}
void  S40C2_nt ::v379(){vfunc_called(this, "_ZN8S40C2_nt4v379Ev");}
void  S40C2_nt ::v380(){vfunc_called(this, "_ZN8S40C2_nt4v380Ev");}
void  S40C2_nt ::v381(){vfunc_called(this, "_ZN8S40C2_nt4v381Ev");}
void  S40C2_nt ::v382(){vfunc_called(this, "_ZN8S40C2_nt4v382Ev");}
void  S40C2_nt ::v383(){vfunc_called(this, "_ZN8S40C2_nt4v383Ev");}
void  S40C2_nt ::v384(){vfunc_called(this, "_ZN8S40C2_nt4v384Ev");}
void  S40C2_nt ::v385(){vfunc_called(this, "_ZN8S40C2_nt4v385Ev");}
void  S40C2_nt ::v386(){vfunc_called(this, "_ZN8S40C2_nt4v386Ev");}
void  S40C2_nt ::v387(){vfunc_called(this, "_ZN8S40C2_nt4v387Ev");}
void  S40C2_nt ::v388(){vfunc_called(this, "_ZN8S40C2_nt4v388Ev");}
void  S40C2_nt ::v389(){vfunc_called(this, "_ZN8S40C2_nt4v389Ev");}
void  S40C2_nt ::v390(){vfunc_called(this, "_ZN8S40C2_nt4v390Ev");}
S40C2_nt ::S40C2_nt(){ note_ctor("S40C2_nt", this);} // tgen

//skip512 S40C2_nt

#else // __cplusplus

extern void _ZN8S40C2_ntC1Ev();
extern void _ZN8S40C2_ntD1Ev();
Name_Map name_map_S40C2_nt[] = {
  NSPAIR(_ZN8S40C2_ntC1Ev),
  NSPAIR(_ZN8S40C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S40C8_nt;
extern VTBL_ENTRY _ZTI8S40C8_nt[];
extern  VTBL_ENTRY _ZTV8S40C8_nt[];
extern Class_Descriptor cd_S40C7_nt;
extern VTBL_ENTRY _ZTI8S40C7_nt[];
extern  VTBL_ENTRY _ZTV8S40C7_nt[];
extern Class_Descriptor cd_S40C6_nt;
extern VTBL_ENTRY _ZTI8S40C6_nt[];
extern  VTBL_ENTRY _ZTV8S40C6_nt[];
extern Class_Descriptor cd_S40C5_nt;
extern VTBL_ENTRY _ZTI8S40C5_nt[];
extern  VTBL_ENTRY _ZTV8S40C5_nt[];
extern Class_Descriptor cd_S40C4_nt;
extern VTBL_ENTRY _ZTI8S40C4_nt[];
extern  VTBL_ENTRY _ZTV8S40C4_nt[];
extern Class_Descriptor cd_S40C3_nt;
extern VTBL_ENTRY _ZTI8S40C3_nt[];
extern  VTBL_ENTRY _ZTV8S40C3_nt[];
static Base_Class bases_S40C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S40C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S40C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S40C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S40C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S40C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S40C2_nt[];
extern void _ZN8S40C2_ntD1Ev();
extern void _ZN8S40C2_ntD0Ev();
extern void _ZN8S40C8_nt2v8Ev();
extern void _ZN8S40C8_nt2v9Ev();
extern void _ZN8S40C8_nt3v10Ev();
extern void _ZN8S40C8_nt3v11Ev();
extern void _ZN8S40C8_nt3v12Ev();
extern void _ZN8S40C8_nt3v13Ev();
extern void _ZN8S40C8_nt3v14Ev();
extern void _ZN8S40C8_nt3v15Ev();
extern void _ZN8S40C8_nt3v16Ev();
extern void _ZN8S40C8_nt3v17Ev();
extern void _ZN8S40C8_nt3v18Ev();
extern void _ZN8S40C8_nt3v19Ev();
extern void _ZN8S40C8_nt3v20Ev();
extern void _ZN8S40C8_nt3v21Ev();
extern void _ZN8S40C8_nt3v22Ev();
extern void _ZN8S40C8_nt3v23Ev();
extern void _ZN8S40C8_nt3v24Ev();
extern void _ZN8S40C8_nt3v25Ev();
extern void _ZN8S40C8_nt3v26Ev();
extern void _ZN8S40C8_nt3v27Ev();
extern void _ZN8S40C8_nt3v28Ev();
extern void _ZN8S40C8_nt3v29Ev();
extern void _ZN8S40C8_nt3v30Ev();
extern void _ZN8S40C8_nt3v31Ev();
extern void _ZN8S40C8_nt3v32Ev();
extern void _ZN8S40C8_nt3v33Ev();
extern void _ZN8S40C8_nt3v34Ev();
extern void _ZN8S40C8_nt3v35Ev();
extern void _ZN8S40C8_nt3v36Ev();
extern void _ZN8S40C8_nt3v37Ev();
extern void _ZN8S40C8_nt3v38Ev();
extern void _ZN8S40C8_nt3v39Ev();
extern void _ZN8S40C8_nt3v40Ev();
extern void _ZN8S40C8_nt3v41Ev();
extern void _ZN8S40C8_nt3v42Ev();
extern void _ZN8S40C8_nt3v43Ev();
extern void _ZN8S40C8_nt3v44Ev();
extern void _ZN8S40C8_nt3v45Ev();
extern void _ZN8S40C8_nt3v46Ev();
extern void _ZN8S40C8_nt3v47Ev();
extern void _ZN8S40C8_nt3v48Ev();
extern void _ZN8S40C8_nt3v49Ev();
extern void _ZN8S40C8_nt3v50Ev();
extern void _ZN8S40C8_nt3v51Ev();
extern void _ZN8S40C8_nt3v52Ev();
extern void _ZN8S40C8_nt3v53Ev();
extern void _ZN8S40C8_nt3v54Ev();
extern void _ZN8S40C8_nt3v55Ev();
extern void _ZN8S40C8_nt3v56Ev();
extern void _ZN8S40C8_nt3v57Ev();
extern void _ZN8S40C8_nt3v58Ev();
extern void _ZN8S40C8_nt3v59Ev();
extern void _ZN8S40C8_nt3v60Ev();
extern void _ZN8S40C8_nt3v61Ev();
extern void _ZN8S40C8_nt3v62Ev();
extern void _ZN8S40C8_nt3v63Ev();
extern void _ZN8S40C8_nt3v64Ev();
extern void _ZN8S40C8_nt3v65Ev();
extern void _ZN8S40C8_nt3v66Ev();
extern void _ZN8S40C8_nt3v67Ev();
extern void _ZN8S40C8_nt3v68Ev();
extern void _ZN8S40C8_nt3v69Ev();
extern void _ZN8S40C8_nt3v70Ev();
extern void _ZN8S40C8_nt3v71Ev();
extern void _ZN8S40C7_nt3v72Ev();
extern void _ZN8S40C7_nt3v73Ev();
extern void _ZN8S40C7_nt3v74Ev();
extern void _ZN8S40C7_nt3v75Ev();
extern void _ZN8S40C7_nt3v76Ev();
extern void _ZN8S40C7_nt3v77Ev();
extern void _ZN8S40C7_nt3v78Ev();
extern void _ZN8S40C7_nt3v79Ev();
extern void _ZN8S40C7_nt3v80Ev();
extern void _ZN8S40C7_nt3v81Ev();
extern void _ZN8S40C7_nt3v82Ev();
extern void _ZN8S40C7_nt3v83Ev();
extern void _ZN8S40C7_nt3v84Ev();
extern void _ZN8S40C7_nt3v85Ev();
extern void _ZN8S40C7_nt3v86Ev();
extern void _ZN8S40C7_nt3v87Ev();
extern void _ZN8S40C7_nt3v88Ev();
extern void _ZN8S40C7_nt3v89Ev();
extern void _ZN8S40C7_nt3v90Ev();
extern void _ZN8S40C7_nt3v91Ev();
extern void _ZN8S40C7_nt3v92Ev();
extern void _ZN8S40C7_nt3v93Ev();
extern void _ZN8S40C7_nt3v94Ev();
extern void _ZN8S40C7_nt3v95Ev();
extern void _ZN8S40C7_nt3v96Ev();
extern void _ZN8S40C7_nt3v97Ev();
extern void _ZN8S40C7_nt3v98Ev();
extern void _ZN8S40C7_nt3v99Ev();
extern void _ZN8S40C7_nt4v100Ev();
extern void _ZN8S40C7_nt4v101Ev();
extern void _ZN8S40C7_nt4v102Ev();
extern void _ZN8S40C7_nt4v103Ev();
extern void _ZN8S40C7_nt4v104Ev();
extern void _ZN8S40C7_nt4v105Ev();
extern void _ZN8S40C7_nt4v106Ev();
extern void _ZN8S40C7_nt4v107Ev();
extern void _ZN8S40C7_nt4v108Ev();
extern void _ZN8S40C7_nt4v109Ev();
extern void _ZN8S40C7_nt4v110Ev();
extern void _ZN8S40C7_nt4v111Ev();
extern void _ZN8S40C7_nt4v112Ev();
extern void _ZN8S40C7_nt4v113Ev();
extern void _ZN8S40C7_nt4v114Ev();
extern void _ZN8S40C7_nt4v115Ev();
extern void _ZN8S40C7_nt4v116Ev();
extern void _ZN8S40C7_nt4v117Ev();
extern void _ZN8S40C7_nt4v118Ev();
extern void _ZN8S40C7_nt4v119Ev();
extern void _ZN8S40C7_nt4v120Ev();
extern void _ZN8S40C7_nt4v121Ev();
extern void _ZN8S40C7_nt4v122Ev();
extern void _ZN8S40C7_nt4v123Ev();
extern void _ZN8S40C7_nt4v124Ev();
extern void _ZN8S40C7_nt4v125Ev();
extern void _ZN8S40C7_nt4v126Ev();
extern void _ZN8S40C7_nt4v127Ev();
extern void _ZN8S40C7_nt4v128Ev();
extern void _ZN8S40C7_nt4v129Ev();
extern void _ZN8S40C7_nt4v130Ev();
extern void _ZN8S40C7_nt4v131Ev();
extern void _ZN8S40C7_nt4v132Ev();
extern void _ZN8S40C7_nt4v133Ev();
extern void _ZN8S40C7_nt4v134Ev();
extern void _ZN8S40C7_nt4v135Ev();
extern void _ZN8S40C7_nt4v136Ev();
extern void _ZN8S40C7_nt4v137Ev();
extern void _ZN8S40C7_nt4v138Ev();
extern void _ZN8S40C7_nt4v139Ev();
extern void _ZN8S40C7_nt4v140Ev();
extern void _ZN8S40C7_nt4v141Ev();
extern void _ZN8S40C7_nt4v142Ev();
extern void _ZN8S40C7_nt4v143Ev();
extern void _ZN8S40C7_nt4v144Ev();
extern void _ZN8S40C7_nt4v145Ev();
extern void _ZN8S40C7_nt4v146Ev();
extern void _ZN8S40C7_nt4v147Ev();
extern void _ZN8S40C7_nt4v148Ev();
extern void _ZN8S40C7_nt4v149Ev();
extern void _ZN8S40C7_nt4v150Ev();
extern void _ZN8S40C7_nt4v151Ev();
extern void _ZN8S40C7_nt4v152Ev();
extern void _ZN8S40C7_nt4v153Ev();
extern void _ZN8S40C7_nt4v154Ev();
extern void _ZN8S40C7_nt4v155Ev();
extern void _ZN8S40C7_nt4v156Ev();
extern void _ZN8S40C7_nt4v157Ev();
extern void _ZN8S40C7_nt4v158Ev();
extern void _ZN8S40C7_nt4v159Ev();
extern void _ZN8S40C7_nt4v160Ev();
extern void _ZN8S40C7_nt4v161Ev();
extern void _ZN8S40C7_nt4v162Ev();
extern void _ZN8S40C7_nt4v163Ev();
extern void _ZN8S40C7_nt4v164Ev();
extern void _ZN8S40C7_nt4v165Ev();
extern void _ZN8S40C7_nt4v166Ev();
extern void _ZN8S40C7_nt4v167Ev();
extern void _ZN8S40C7_nt4v168Ev();
extern void _ZN8S40C7_nt4v169Ev();
extern void _ZN8S40C7_nt4v170Ev();
extern void _ZN8S40C7_nt4v171Ev();
extern void _ZN8S40C7_nt4v172Ev();
extern void _ZN8S40C7_nt4v173Ev();
extern void _ZN8S40C7_nt4v174Ev();
extern void _ZN8S40C7_nt4v175Ev();
extern void _ZN8S40C7_nt4v176Ev();
extern void _ZN8S40C7_nt4v177Ev();
extern void _ZN8S40C7_nt4v178Ev();
extern void _ZN8S40C7_nt4v179Ev();
extern void _ZN8S40C7_nt4v180Ev();
extern void _ZN8S40C7_nt4v181Ev();
extern void _ZN8S40C7_nt4v182Ev();
extern void _ZN8S40C7_nt4v183Ev();
extern void _ZN8S40C7_nt4v184Ev();
extern void _ZN8S40C7_nt4v185Ev();
extern void _ZN8S40C7_nt4v186Ev();
extern void _ZN8S40C7_nt4v187Ev();
extern void _ZN8S40C7_nt4v188Ev();
extern void _ZN8S40C7_nt4v189Ev();
extern void _ZN8S40C7_nt4v190Ev();
extern void _ZN8S40C7_nt4v191Ev();
extern void _ZN8S40C7_nt4v192Ev();
extern void _ZN8S40C7_nt4v193Ev();
extern void _ZN8S40C7_nt4v194Ev();
extern void _ZN8S40C7_nt4v195Ev();
extern void _ZN8S40C7_nt4v196Ev();
extern void _ZN8S40C7_nt4v197Ev();
extern void _ZN8S40C7_nt4v198Ev();
extern void _ZN8S40C7_nt4v199Ev();
extern void _ZN8S40C7_nt4v200Ev();
extern void _ZN8S40C7_nt4v201Ev();
extern void _ZN8S40C7_nt4v202Ev();
extern void _ZN8S40C7_nt4v203Ev();
extern void _ZN8S40C7_nt4v204Ev();
extern void _ZN8S40C7_nt4v205Ev();
extern void _ZN8S40C7_nt4v206Ev();
extern void _ZN8S40C7_nt4v207Ev();
extern void _ZN8S40C7_nt4v208Ev();
extern void _ZN8S40C7_nt4v209Ev();
extern void _ZN8S40C7_nt4v210Ev();
extern void _ZN8S40C7_nt4v211Ev();
extern void _ZN8S40C7_nt4v212Ev();
extern void _ZN8S40C7_nt4v213Ev();
extern void _ZN8S40C7_nt4v214Ev();
extern void _ZN8S40C6_nt4v215Ev();
extern void _ZN8S40C6_nt4v216Ev();
extern void _ZN8S40C6_nt4v217Ev();
extern void _ZN8S40C6_nt4v218Ev();
extern void _ZN8S40C6_nt4v219Ev();
extern void _ZN8S40C6_nt4v220Ev();
extern void _ZN8S40C6_nt4v221Ev();
extern void _ZN8S40C6_nt4v222Ev();
extern void _ZN8S40C6_nt4v223Ev();
extern void _ZN8S40C6_nt4v224Ev();
extern void _ZN8S40C6_nt4v225Ev();
extern void _ZN8S40C6_nt4v226Ev();
extern void _ZN8S40C6_nt4v227Ev();
extern void _ZN8S40C6_nt4v228Ev();
extern void _ZN8S40C6_nt4v229Ev();
extern void _ZN8S40C6_nt4v230Ev();
extern void _ZN8S40C6_nt4v231Ev();
extern void _ZN8S40C6_nt4v232Ev();
extern void _ZN8S40C6_nt4v233Ev();
extern void _ZN8S40C6_nt4v234Ev();
extern void _ZN8S40C6_nt4v235Ev();
extern void _ZN8S40C6_nt4v236Ev();
extern void _ZN8S40C6_nt4v237Ev();
extern void _ZN8S40C6_nt4v238Ev();
extern void _ZN8S40C6_nt4v239Ev();
extern void _ZN8S40C6_nt4v240Ev();
extern void _ZN8S40C6_nt4v241Ev();
extern void _ZN8S40C6_nt4v242Ev();
extern void _ZN8S40C6_nt4v243Ev();
extern void _ZN8S40C6_nt4v244Ev();
extern void _ZN8S40C6_nt4v245Ev();
extern void _ZN8S40C6_nt4v246Ev();
extern void _ZN8S40C6_nt4v247Ev();
extern void _ZN8S40C6_nt4v248Ev();
extern void _ZN8S40C6_nt4v249Ev();
extern void _ZN8S40C6_nt4v250Ev();
extern void _ZN8S40C6_nt4v251Ev();
extern void _ZN8S40C6_nt4v252Ev();
extern void _ZN8S40C6_nt4v253Ev();
extern void _ZN8S40C6_nt4v254Ev();
extern void _ZN8S40C6_nt4v255Ev();
extern void _ZN8S40C6_nt4v256Ev();
extern void _ZN8S40C6_nt4v257Ev();
extern void _ZN8S40C6_nt4v258Ev();
extern void _ZN8S40C6_nt4v259Ev();
extern void _ZN8S40C6_nt4v260Ev();
extern void _ZN8S40C6_nt4v261Ev();
extern void _ZN8S40C6_nt4v262Ev();
extern void _ZN8S40C6_nt4v263Ev();
extern void _ZN8S40C6_nt4v264Ev();
extern void _ZN8S40C6_nt4v265Ev();
extern void _ZN8S40C6_nt4v266Ev();
extern void _ZN8S40C6_nt4v267Ev();
extern void _ZN8S40C6_nt4v268Ev();
extern void _ZN8S40C6_nt4v269Ev();
extern void _ZN8S40C6_nt4v270Ev();
extern void _ZN8S40C6_nt4v271Ev();
extern void _ZN8S40C6_nt4v272Ev();
extern void _ZN8S40C6_nt4v273Ev();
extern void _ZN8S40C6_nt4v274Ev();
extern void _ZN8S40C6_nt4v275Ev();
extern void _ZN8S40C6_nt4v276Ev();
extern void _ZN8S40C6_nt4v277Ev();
extern void _ZN8S40C6_nt4v278Ev();
extern void _ZN8S40C6_nt4v279Ev();
extern void _ZN8S40C6_nt4v280Ev();
extern void _ZN8S40C6_nt4v281Ev();
extern void _ZN8S40C6_nt4v282Ev();
extern void _ZN8S40C6_nt4v283Ev();
extern void _ZN8S40C6_nt4v284Ev();
extern void _ZN8S40C6_nt4v285Ev();
extern void _ZN8S40C6_nt4v286Ev();
extern void _ZN8S40C6_nt4v287Ev();
extern void _ZN8S40C6_nt4v288Ev();
extern void _ZN8S40C6_nt4v289Ev();
extern void _ZN8S40C6_nt4v290Ev();
extern void _ZN8S40C6_nt4v291Ev();
extern void _ZN8S40C6_nt4v292Ev();
extern void _ZN8S40C6_nt4v293Ev();
extern void _ZN8S40C6_nt4v294Ev();
extern void _ZN8S40C6_nt4v295Ev();
extern void _ZN8S40C6_nt4v296Ev();
extern void _ZN8S40C6_nt4v297Ev();
extern void _ZN8S40C6_nt4v298Ev();
extern void _ZN8S40C6_nt4v299Ev();
extern void _ZN8S40C6_nt4v300Ev();
extern void _ZN8S40C6_nt4v301Ev();
extern void _ZN8S40C6_nt4v302Ev();
extern void _ZN8S40C6_nt4v303Ev();
extern void _ZN8S40C6_nt4v304Ev();
extern void _ZN8S40C6_nt4v305Ev();
extern void _ZN8S40C6_nt4v306Ev();
extern void _ZN8S40C6_nt4v307Ev();
extern void _ZN8S40C6_nt4v308Ev();
extern void _ZN8S40C6_nt4v309Ev();
extern void _ZN8S40C6_nt4v310Ev();
extern void _ZN8S40C6_nt4v311Ev();
extern void _ZN8S40C6_nt4v312Ev();
extern void _ZN8S40C5_nt4v313Ev();
extern void _ZN8S40C5_nt4v314Ev();
extern void _ZN8S40C5_nt4v315Ev();
extern void _ZN8S40C5_nt4v316Ev();
extern void _ZN8S40C5_nt4v317Ev();
extern void _ZN8S40C5_nt4v318Ev();
extern void _ZN8S40C5_nt4v319Ev();
extern void _ZN8S40C5_nt4v320Ev();
extern void _ZN8S40C5_nt4v321Ev();
extern void _ZN8S40C5_nt4v322Ev();
extern void _ZN8S40C5_nt4v323Ev();
extern void _ZN8S40C5_nt4v324Ev();
extern void _ZN8S40C5_nt4v325Ev();
extern void _ZN8S40C5_nt4v326Ev();
extern void _ZN8S40C5_nt4v327Ev();
extern void _ZN8S40C5_nt4v328Ev();
extern void _ZN8S40C5_nt4v329Ev();
extern void _ZN8S40C5_nt4v330Ev();
extern void _ZN8S40C5_nt4v331Ev();
extern void _ZN8S40C5_nt4v332Ev();
extern void _ZN8S40C5_nt4v333Ev();
extern void _ZN8S40C5_nt4v334Ev();
extern void _ZN8S40C4_nt4v335Ev();
extern void _ZN8S40C4_nt4v336Ev();
extern void _ZN8S40C4_nt4v337Ev();
extern void _ZN8S40C4_nt4v338Ev();
extern void _ZN8S40C4_nt4v339Ev();
extern void _ZN8S40C4_nt4v340Ev();
extern void _ZN8S40C4_nt4v341Ev();
extern void _ZN8S40C4_nt4v342Ev();
extern void _ZN8S40C4_nt4v343Ev();
extern void _ZN8S40C4_nt4v344Ev();
extern void _ZN8S40C4_nt4v345Ev();
extern void _ZN8S40C4_nt4v346Ev();
extern void _ZN8S40C4_nt4v347Ev();
extern void _ZN8S40C4_nt4v348Ev();
extern void _ZN8S40C4_nt4v349Ev();
extern void _ZN8S40C4_nt4v350Ev();
extern void _ZN8S40C4_nt4v351Ev();
extern void _ZN8S40C4_nt4v352Ev();
extern void _ZN8S40C4_nt4v353Ev();
extern void _ZN8S40C4_nt4v354Ev();
extern void _ZN8S40C4_nt4v355Ev();
extern void _ZN8S40C4_nt4v356Ev();
extern void _ZN8S40C4_nt4v357Ev();
extern void _ZN8S40C4_nt4v358Ev();
extern void _ZN8S40C3_nt4v359Ev();
extern void _ZN8S40C3_nt4v360Ev();
extern void _ZN8S40C3_nt4v361Ev();
extern void _ZN8S40C2_nt4v362Ev();
extern void _ZN8S40C2_nt4v363Ev();
extern void _ZN8S40C2_nt4v364Ev();
extern void _ZN8S40C2_nt4v365Ev();
extern void _ZN8S40C2_nt4v366Ev();
extern void _ZN8S40C2_nt4v367Ev();
extern void _ZN8S40C2_nt4v368Ev();
extern void _ZN8S40C2_nt4v369Ev();
extern void _ZN8S40C2_nt4v370Ev();
extern void _ZN8S40C2_nt4v371Ev();
extern void _ZN8S40C2_nt4v372Ev();
extern void _ZN8S40C2_nt4v373Ev();
extern void _ZN8S40C2_nt4v374Ev();
extern void _ZN8S40C2_nt4v375Ev();
extern void _ZN8S40C2_nt4v376Ev();
extern void _ZN8S40C2_nt4v377Ev();
extern void _ZN8S40C2_nt4v378Ev();
extern void _ZN8S40C2_nt4v379Ev();
extern void _ZN8S40C2_nt4v380Ev();
extern void _ZN8S40C2_nt4v381Ev();
extern void _ZN8S40C2_nt4v382Ev();
extern void _ZN8S40C2_nt4v383Ev();
extern void _ZN8S40C2_nt4v384Ev();
extern void _ZN8S40C2_nt4v385Ev();
extern void _ZN8S40C2_nt4v386Ev();
extern void _ZN8S40C2_nt4v387Ev();
extern void _ZN8S40C2_nt4v388Ev();
extern void _ZN8S40C2_nt4v389Ev();
extern void _ZN8S40C2_nt4v390Ev();
static  VTBL_ENTRY vtc_S40C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S40C2_nt[0]),
  (VTBL_ENTRY)&_ZN8S40C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN8S40C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v11Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v13Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v14Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v15Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v16Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v17Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v18Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v22Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v23Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v24Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v25Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v26Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v27Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v28Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v29Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v30Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v31Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v32Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v33Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v34Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v35Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v36Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v37Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v38Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v39Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v40Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v41Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v42Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v43Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v44Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v45Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v46Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v47Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v48Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v49Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v50Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v51Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v52Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v53Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v54Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v55Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v56Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v57Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v58Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v59Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v60Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v61Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v62Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v63Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v64Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v65Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v66Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v67Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v68Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v69Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v70Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v71Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v72Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v73Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v74Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v75Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v76Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v77Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v78Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v79Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v80Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v81Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v82Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v83Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v84Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v85Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v86Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v87Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v88Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v89Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v90Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v91Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v92Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v93Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v94Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v95Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v96Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v97Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v98Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v99Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v100Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v101Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v102Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v103Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v104Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v105Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v106Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v107Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v108Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v109Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v110Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v111Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v112Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v113Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v114Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v115Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v116Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v117Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v118Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v119Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v120Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v121Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v122Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v123Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v124Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v125Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v126Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v127Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v128Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v129Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v130Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v131Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v132Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v133Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v134Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v135Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v136Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v137Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v138Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v139Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v140Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v141Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v142Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v143Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v144Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v145Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v146Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v147Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v148Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v149Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v150Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v151Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v152Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v153Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v154Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v155Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v156Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v157Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v158Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v159Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v160Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v161Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v162Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v163Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v164Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v165Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v166Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v167Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v168Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v169Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v170Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v171Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v172Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v173Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v174Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v175Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v176Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v177Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v178Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v179Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v180Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v181Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v182Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v183Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v184Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v185Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v186Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v187Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v188Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v189Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v190Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v191Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v192Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v193Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v194Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v195Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v196Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v197Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v198Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v199Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v200Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v201Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v202Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v203Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v204Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v205Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v206Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v207Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v208Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v209Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v210Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v211Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v212Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v213Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v214Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v215Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v216Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v217Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v218Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v219Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v220Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v221Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v222Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v223Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v224Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v225Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v226Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v227Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v228Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v229Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v230Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v231Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v232Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v233Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v234Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v235Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v236Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v237Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v238Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v239Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v240Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v241Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v242Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v243Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v244Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v245Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v246Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v247Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v248Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v249Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v250Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v251Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v252Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v253Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v254Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v255Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v256Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v257Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v258Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v259Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v260Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v261Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v262Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v263Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v264Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v265Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v266Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v267Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v268Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v269Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v270Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v271Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v272Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v273Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v274Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v275Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v276Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v277Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v278Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v279Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v280Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v281Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v282Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v283Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v284Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v285Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v286Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v287Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v288Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v289Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v290Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v291Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v292Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v293Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v294Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v295Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v296Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v297Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v298Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v299Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v300Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v301Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v302Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v303Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v304Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v305Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v306Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v307Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v308Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v309Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v310Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v311Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v312Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v313Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v314Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v315Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v316Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v317Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v318Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v319Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v320Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v321Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v322Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v323Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v324Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v325Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v326Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v327Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v328Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v329Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v330Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v331Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v332Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v333Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v334Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v335Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v336Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v337Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v338Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v339Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v340Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v341Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v342Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v343Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v344Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v345Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v346Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v347Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v348Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v349Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v350Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v351Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v352Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v353Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v354Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v355Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v356Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v357Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v358Ev,
  (VTBL_ENTRY)&_ZN8S40C3_nt4v359Ev,
  (VTBL_ENTRY)&_ZN8S40C3_nt4v360Ev,
  (VTBL_ENTRY)&_ZN8S40C3_nt4v361Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v362Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v363Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v364Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v365Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v366Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v367Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v368Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v369Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v370Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v371Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v372Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v373Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v374Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v375Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v376Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v377Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v378Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v379Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v380Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v381Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v382Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v383Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v384Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v385Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v386Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v387Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v388Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v389Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v390Ev,
};
extern VTBL_ENTRY _ZTI8S40C2_nt[];
VTBL_ENTRY *P__ZTI8S40C2_nt = _ZTI8S40C2_nt; 
extern  VTBL_ENTRY _ZTV8S40C2_nt[];
Class_Descriptor cd_S40C2_nt = {  "S40C2_nt", // class name
  bases_S40C2_nt, 6,
  &(vtc_S40C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(3208,2480), // object size
  NSPAIRA(_ZTI8S40C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S40C2_nt),387, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  6, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S40C82  {
  ::S40C18_nt s40c82f0;
  ::S40C18_nt s40c82f1;
  char s40c82f2;
  void  mf40c82(); // _ZN6S40C827mf40c82Ev
};
//SIG(-1 S40C82) C1{ m FC2{ m Fi[3]} FC2 Fc}


void  S40C82 ::mf40c82(){}

static void Test_S40C82()
{
  {
    init_simple_test("S40C82");
    S40C82 lv;
    check2(sizeof(lv), 28, "sizeof(S40C82)");
    check2(__alignof__(lv), 4, "__alignof__(S40C82)");
    check_field_offset(lv, s40c82f0, 0, "S40C82.s40c82f0");
    check_field_offset(lv, s40c82f1, 12, "S40C82.s40c82f1");
    check_field_offset(lv, s40c82f2, 24, "S40C82.s40c82f2");
  }
}
static Arrange_To_Call_Me vS40C82(Test_S40C82, "S40C82", 28);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S40C1  : S40C2_nt {
  void *s40c1f0[3];
  unsigned int s40c1f1:1;
  ::S40C82 s40c1f2;
  virtual  ~S40C1(); // _ZN5S40C1D1Ev
  virtual void  v1(); // _ZN5S40C12v1Ev
  virtual void  v2(); // _ZN5S40C12v2Ev
  virtual void  v3(); // _ZN5S40C12v3Ev
  virtual void  v4(); // _ZN5S40C12v4Ev
  virtual void  v5(); // _ZN5S40C12v5Ev
  virtual void  v6(); // _ZN5S40C12v6Ev
  virtual void  v7(); // _ZN5S40C12v7Ev
  S40C1(); // tgen
};
//SIG(1 S40C1) C1{ BC2{ BC3{ BC4{ BC5{ BC6{ BC7{ BC8{ vd v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 Fi FL Fp[4] Fi[2] Fp FC9{ m Fi[2]} Fp[2]} vd v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 v90 v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 v102 v103 v104 v105 v106 v107 v108 v109 v110 v111 v112 v113 v114 v115 v116 v117 v118 v119 v120 v121 v122 v123 v124 v125 v126 v127 v128 v129 v130 v131 v132 v133 v134 v135 v136 v137 v138 v139 v140 v141 v142 v143 v144 v145 v146 v147 v148 v149 v150 v151 v152 v153 v154 v155 v156 v157 v158 v159 v160 v161 v162 v163 v164 v165 v166 v167 v168 v169 v170 v171 v172 v173 v174 v175 v176 v177 v178 v179 v180 v181 v182 v183 v184 v185 v186 v187 v188 v189 v190 v191 v192 v193 v194 v195 v196 v197 v198 v199 v200 v201 v202 v203 v204 v205 v206 v207 v208 v209 v210 v211 v212 v213 v214 FC10{ BC11{ BC12{ m Fp Fi[2]}}} FC10 FC13{ m Fi} Fi Fc[4] Fp[2] FC10 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[5] Fp[2] Fi[3] FC9 FC9 FC9 FC14{ BC15{ BC12}} FC14 Fi Fp[2] FC16{ m Fi[3]} FC16 FC16 FC16 Fp FC9 FC14 FC16 FC16 Fi FC16 FC16 Fp Fi Fc FC16 FC16 Fp Fi Fp FC14 FC17{ BC18{ BC12}} FC17} vd v215 v216 v217 v218 v219 v220 v221 v222 v223 v224 v225 v226 v227 v228 v229 v230 v231 v232 v233 v234 v235 v236 v237 v238 v239 v240 v241 v242 v243 v244 v245 v246 v247 v248 v249 v250 v251 v252 v253 v254 v255 v256 v257 v258 v259 v260 v261 v262 v263 v264 v265 v266 v267 v268 v269 v270 v271 v272 v273 v274 v275 v276 v277 v278 v279 v280 v281 v282 v283 v284 v285 v286 v287 v288 v289 v290 v291 v292 v293 v294 v295 v296 v297 v298 v299 v300 v301 v302 v303 v304 v305 v306 v307 v308 v309 v310 v311 v312 Fi[3] Fp[2] Fi Fp[2] Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[5] Fc[4] Fi[10] Fp[2] Fi[4] FC16 Fi[19] FC16 Fi[2] Fp Fi[5] FC16 FC16 Fi Fp Fi FC16 Fi Fp Fi[3] FC19{ BC20{ BC21{ BC12}}} Fp[3] FC9 FC9 Fp Fi FC16 Fp FC16 Fp[2] Fi[2] Fp Fi[2] Fp Fi[3] Fp[3] FC16 FC16 Fi Fp[2] Fi} vd v313 v314 v315 v316 v317 v318 v319 v320 v321 v322 v323 v324 v325 v326 v327 v328 v329 v330 v331 v332 v333 v334 Fp Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 FC22{ BC23{ BC12}} Fi FC16 Fi[3] FC16 Fi[2] Fp Fi[2] Fc Fi[8]} vd v335 v336 v337 v338 v339 v340 v341 v342 v343 v344 v345 v346 v347 v348 v349 v350 v351 v352 v353 v354 v355 v356 v357 v358 Fp FC22 FC16 FC16 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[4] Fp[2] Fi[8] Fp[5] Fi[13] FC16 Fi[3] FC24{ FC25{ m FC16 FC26{ m Fi[4]} FC16 FC16 Fc} Fc[4] Fi:1 Fi} Fi[2]} vd v359 v360 v361 Fi:1 Fp FC26} vd v362 v363 v364 v365 v366 v367 v368 v369 v370 v371 v372 v373 v374 v375 v376 v377 v378 v379 v380 v381 v382 v383 v384 v385 v386 v387 v388 v389 v390 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 FC27{ BC28{ BC12}} Fp Fc[3] Fp Fi Fp[2] Fi[2] Fp Fi[5] Fp[3] Fi[2] FC27 Fi[3] Fi:1 Fi[5] Fp[2] Fi Fp Fi Fp Fi[2] Fp[3] Fi FC19 FC19 FC29{ m Fp FC19} Fi[5] Fp[2] Fi FC16 FC30{ BC31{ BC12}} Fi FC30 Fp Fi FC32{ BC33{ BC12}} FC32 FC34{ BC35{ BC12}} FC34 FC36{ BC37{ BC12}} Fi Fp[2] FC36 Fp Fi[6] Fp[2] Fi[3] Fp FC38{ BC39{ BC12}} Fp FC9 Fi FC9 FC38 Fi[6] Fp Fi[2] FC9 FC9 FC38 FC16 Fp[2] Fi Fp[2] Fi Fp[3] Fi FC9 Fp[2] FC40{ BC41{ BC12}} FC9 Fi FC9 Fp[3] FC16 FC16 FC9 FC16 Fi FC26 FC26 FC26 FC26 FC26 Fi[4] FC16 Fp FC16 FC40 FC42{ BC43{ BC12}} FC9 FC44{ m FC42 Fc} FC36 Fi Fp[2] Fi[9] FC45{ BC46{ BC12}} Fi FC16 Fi[2] FC16 FC45 FC47{ Fi FC16 FC16 Fp FC9} Fi[3] Fp[2] FC48{ BC49{ BC12}} FC48 Fp Fi[2] FC50{ BC51{ BC12}} FC50} vd v1 v2 v3 v4 v5 v6 v7 Fp[3] Fi:1 FC52{ m FC16 FC16 Fc}}


 S40C1 ::~S40C1(){ note_dtor("S40C1", this);}
void  S40C1 ::v1(){vfunc_called(this, "_ZN5S40C12v1Ev");}
void  S40C1 ::v2(){vfunc_called(this, "_ZN5S40C12v2Ev");}
void  S40C1 ::v3(){vfunc_called(this, "_ZN5S40C12v3Ev");}
void  S40C1 ::v4(){vfunc_called(this, "_ZN5S40C12v4Ev");}
void  S40C1 ::v5(){vfunc_called(this, "_ZN5S40C12v5Ev");}
void  S40C1 ::v6(){vfunc_called(this, "_ZN5S40C12v6Ev");}
void  S40C1 ::v7(){vfunc_called(this, "_ZN5S40C12v7Ev");}
S40C1 ::S40C1(){ note_ctor("S40C1", this);} // tgen

static void Test_S40C1()
{
  extern Class_Descriptor cd_S40C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(409,632)];
    init_test(&cd_S40C1, buf);
    S40C1 *dp, &lv = *(dp=new (buf) S40C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(3264,2524), "sizeof(S40C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S40C1)");
    check_base_class_offset(lv, (S40C8_nt*)(S40C7_nt*)(S40C6_nt*)(S40C5_nt*)(S40C4_nt*)(S40C3_nt*)(S40C2_nt*), 0, "S40C1");
    check_base_class_offset(lv, (S40C7_nt*)(S40C6_nt*)(S40C5_nt*)(S40C4_nt*)(S40C3_nt*)(S40C2_nt*), 0, "S40C1");
    check_base_class_offset(lv, (S40C6_nt*)(S40C5_nt*)(S40C4_nt*)(S40C3_nt*)(S40C2_nt*), 0, "S40C1");
    check_base_class_offset(lv, (S40C5_nt*)(S40C4_nt*)(S40C3_nt*)(S40C2_nt*), 0, "S40C1");
    check_base_class_offset(lv, (S40C4_nt*)(S40C3_nt*)(S40C2_nt*), 0, "S40C1");
    check_base_class_offset(lv, (S40C3_nt*)(S40C2_nt*), 0, "S40C1");
    check_base_class_offset(lv, (S40C2_nt*), 0, "S40C1");
    check_field_offset(lv, s40c1f0, ABISELECT(3208,2480), "S40C1.s40c1f0");
    set_bf_and_test(lv, s40c1f1, ABISELECT(3232,2492), 0, 1, 1, "S40C1");
    check_field_offset(lv, s40c1f2, ABISELECT(3236,2496), "S40C1.s40c1f2");
    test_class_info(&lv, &cd_S40C1);
    dp->~S40C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS40C1(Test_S40C1, "S40C1", ABISELECT(3264,2524));

#else // __cplusplus

extern void _ZN5S40C1C1Ev();
extern void _ZN5S40C1D1Ev();
Name_Map name_map_S40C1[] = {
  NSPAIR(_ZN5S40C1C1Ev),
  NSPAIR(_ZN5S40C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S40C8_nt;
extern VTBL_ENTRY _ZTI8S40C8_nt[];
extern  VTBL_ENTRY _ZTV8S40C8_nt[];
extern Class_Descriptor cd_S40C7_nt;
extern VTBL_ENTRY _ZTI8S40C7_nt[];
extern  VTBL_ENTRY _ZTV8S40C7_nt[];
extern Class_Descriptor cd_S40C6_nt;
extern VTBL_ENTRY _ZTI8S40C6_nt[];
extern  VTBL_ENTRY _ZTV8S40C6_nt[];
extern Class_Descriptor cd_S40C5_nt;
extern VTBL_ENTRY _ZTI8S40C5_nt[];
extern  VTBL_ENTRY _ZTV8S40C5_nt[];
extern Class_Descriptor cd_S40C4_nt;
extern VTBL_ENTRY _ZTI8S40C4_nt[];
extern  VTBL_ENTRY _ZTV8S40C4_nt[];
extern Class_Descriptor cd_S40C3_nt;
extern VTBL_ENTRY _ZTI8S40C3_nt[];
extern  VTBL_ENTRY _ZTV8S40C3_nt[];
extern Class_Descriptor cd_S40C2_nt;
extern VTBL_ENTRY _ZTI8S40C2_nt[];
extern  VTBL_ENTRY _ZTV8S40C2_nt[];
static Base_Class bases_S40C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S40C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S40C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S40C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S40C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S40C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S40C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI5S40C1[];
extern void _ZN5S40C1D1Ev();
extern void _ZN5S40C1D0Ev();
extern void _ZN8S40C8_nt2v8Ev();
extern void _ZN8S40C8_nt2v9Ev();
extern void _ZN8S40C8_nt3v10Ev();
extern void _ZN8S40C8_nt3v11Ev();
extern void _ZN8S40C8_nt3v12Ev();
extern void _ZN8S40C8_nt3v13Ev();
extern void _ZN8S40C8_nt3v14Ev();
extern void _ZN8S40C8_nt3v15Ev();
extern void _ZN8S40C8_nt3v16Ev();
extern void _ZN8S40C8_nt3v17Ev();
extern void _ZN8S40C8_nt3v18Ev();
extern void _ZN8S40C8_nt3v19Ev();
extern void _ZN8S40C8_nt3v20Ev();
extern void _ZN8S40C8_nt3v21Ev();
extern void _ZN8S40C8_nt3v22Ev();
extern void _ZN8S40C8_nt3v23Ev();
extern void _ZN8S40C8_nt3v24Ev();
extern void _ZN8S40C8_nt3v25Ev();
extern void _ZN8S40C8_nt3v26Ev();
extern void _ZN8S40C8_nt3v27Ev();
extern void _ZN8S40C8_nt3v28Ev();
extern void _ZN8S40C8_nt3v29Ev();
extern void _ZN8S40C8_nt3v30Ev();
extern void _ZN8S40C8_nt3v31Ev();
extern void _ZN8S40C8_nt3v32Ev();
extern void _ZN8S40C8_nt3v33Ev();
extern void _ZN8S40C8_nt3v34Ev();
extern void _ZN8S40C8_nt3v35Ev();
extern void _ZN8S40C8_nt3v36Ev();
extern void _ZN8S40C8_nt3v37Ev();
extern void _ZN8S40C8_nt3v38Ev();
extern void _ZN8S40C8_nt3v39Ev();
extern void _ZN8S40C8_nt3v40Ev();
extern void _ZN8S40C8_nt3v41Ev();
extern void _ZN8S40C8_nt3v42Ev();
extern void _ZN8S40C8_nt3v43Ev();
extern void _ZN8S40C8_nt3v44Ev();
extern void _ZN8S40C8_nt3v45Ev();
extern void _ZN8S40C8_nt3v46Ev();
extern void _ZN8S40C8_nt3v47Ev();
extern void _ZN8S40C8_nt3v48Ev();
extern void _ZN8S40C8_nt3v49Ev();
extern void _ZN8S40C8_nt3v50Ev();
extern void _ZN8S40C8_nt3v51Ev();
extern void _ZN8S40C8_nt3v52Ev();
extern void _ZN8S40C8_nt3v53Ev();
extern void _ZN8S40C8_nt3v54Ev();
extern void _ZN8S40C8_nt3v55Ev();
extern void _ZN8S40C8_nt3v56Ev();
extern void _ZN8S40C8_nt3v57Ev();
extern void _ZN8S40C8_nt3v58Ev();
extern void _ZN8S40C8_nt3v59Ev();
extern void _ZN8S40C8_nt3v60Ev();
extern void _ZN8S40C8_nt3v61Ev();
extern void _ZN8S40C8_nt3v62Ev();
extern void _ZN8S40C8_nt3v63Ev();
extern void _ZN8S40C8_nt3v64Ev();
extern void _ZN8S40C8_nt3v65Ev();
extern void _ZN8S40C8_nt3v66Ev();
extern void _ZN8S40C8_nt3v67Ev();
extern void _ZN8S40C8_nt3v68Ev();
extern void _ZN8S40C8_nt3v69Ev();
extern void _ZN8S40C8_nt3v70Ev();
extern void _ZN8S40C8_nt3v71Ev();
extern void _ZN8S40C7_nt3v72Ev();
extern void _ZN8S40C7_nt3v73Ev();
extern void _ZN8S40C7_nt3v74Ev();
extern void _ZN8S40C7_nt3v75Ev();
extern void _ZN8S40C7_nt3v76Ev();
extern void _ZN8S40C7_nt3v77Ev();
extern void _ZN8S40C7_nt3v78Ev();
extern void _ZN8S40C7_nt3v79Ev();
extern void _ZN8S40C7_nt3v80Ev();
extern void _ZN8S40C7_nt3v81Ev();
extern void _ZN8S40C7_nt3v82Ev();
extern void _ZN8S40C7_nt3v83Ev();
extern void _ZN8S40C7_nt3v84Ev();
extern void _ZN8S40C7_nt3v85Ev();
extern void _ZN8S40C7_nt3v86Ev();
extern void _ZN8S40C7_nt3v87Ev();
extern void _ZN8S40C7_nt3v88Ev();
extern void _ZN8S40C7_nt3v89Ev();
extern void _ZN8S40C7_nt3v90Ev();
extern void _ZN8S40C7_nt3v91Ev();
extern void _ZN8S40C7_nt3v92Ev();
extern void _ZN8S40C7_nt3v93Ev();
extern void _ZN8S40C7_nt3v94Ev();
extern void _ZN8S40C7_nt3v95Ev();
extern void _ZN8S40C7_nt3v96Ev();
extern void _ZN8S40C7_nt3v97Ev();
extern void _ZN8S40C7_nt3v98Ev();
extern void _ZN8S40C7_nt3v99Ev();
extern void _ZN8S40C7_nt4v100Ev();
extern void _ZN8S40C7_nt4v101Ev();
extern void _ZN8S40C7_nt4v102Ev();
extern void _ZN8S40C7_nt4v103Ev();
extern void _ZN8S40C7_nt4v104Ev();
extern void _ZN8S40C7_nt4v105Ev();
extern void _ZN8S40C7_nt4v106Ev();
extern void _ZN8S40C7_nt4v107Ev();
extern void _ZN8S40C7_nt4v108Ev();
extern void _ZN8S40C7_nt4v109Ev();
extern void _ZN8S40C7_nt4v110Ev();
extern void _ZN8S40C7_nt4v111Ev();
extern void _ZN8S40C7_nt4v112Ev();
extern void _ZN8S40C7_nt4v113Ev();
extern void _ZN8S40C7_nt4v114Ev();
extern void _ZN8S40C7_nt4v115Ev();
extern void _ZN8S40C7_nt4v116Ev();
extern void _ZN8S40C7_nt4v117Ev();
extern void _ZN8S40C7_nt4v118Ev();
extern void _ZN8S40C7_nt4v119Ev();
extern void _ZN8S40C7_nt4v120Ev();
extern void _ZN8S40C7_nt4v121Ev();
extern void _ZN8S40C7_nt4v122Ev();
extern void _ZN8S40C7_nt4v123Ev();
extern void _ZN8S40C7_nt4v124Ev();
extern void _ZN8S40C7_nt4v125Ev();
extern void _ZN8S40C7_nt4v126Ev();
extern void _ZN8S40C7_nt4v127Ev();
extern void _ZN8S40C7_nt4v128Ev();
extern void _ZN8S40C7_nt4v129Ev();
extern void _ZN8S40C7_nt4v130Ev();
extern void _ZN8S40C7_nt4v131Ev();
extern void _ZN8S40C7_nt4v132Ev();
extern void _ZN8S40C7_nt4v133Ev();
extern void _ZN8S40C7_nt4v134Ev();
extern void _ZN8S40C7_nt4v135Ev();
extern void _ZN8S40C7_nt4v136Ev();
extern void _ZN8S40C7_nt4v137Ev();
extern void _ZN8S40C7_nt4v138Ev();
extern void _ZN8S40C7_nt4v139Ev();
extern void _ZN8S40C7_nt4v140Ev();
extern void _ZN8S40C7_nt4v141Ev();
extern void _ZN8S40C7_nt4v142Ev();
extern void _ZN8S40C7_nt4v143Ev();
extern void _ZN8S40C7_nt4v144Ev();
extern void _ZN8S40C7_nt4v145Ev();
extern void _ZN8S40C7_nt4v146Ev();
extern void _ZN8S40C7_nt4v147Ev();
extern void _ZN8S40C7_nt4v148Ev();
extern void _ZN8S40C7_nt4v149Ev();
extern void _ZN8S40C7_nt4v150Ev();
extern void _ZN8S40C7_nt4v151Ev();
extern void _ZN8S40C7_nt4v152Ev();
extern void _ZN8S40C7_nt4v153Ev();
extern void _ZN8S40C7_nt4v154Ev();
extern void _ZN8S40C7_nt4v155Ev();
extern void _ZN8S40C7_nt4v156Ev();
extern void _ZN8S40C7_nt4v157Ev();
extern void _ZN8S40C7_nt4v158Ev();
extern void _ZN8S40C7_nt4v159Ev();
extern void _ZN8S40C7_nt4v160Ev();
extern void _ZN8S40C7_nt4v161Ev();
extern void _ZN8S40C7_nt4v162Ev();
extern void _ZN8S40C7_nt4v163Ev();
extern void _ZN8S40C7_nt4v164Ev();
extern void _ZN8S40C7_nt4v165Ev();
extern void _ZN8S40C7_nt4v166Ev();
extern void _ZN8S40C7_nt4v167Ev();
extern void _ZN8S40C7_nt4v168Ev();
extern void _ZN8S40C7_nt4v169Ev();
extern void _ZN8S40C7_nt4v170Ev();
extern void _ZN8S40C7_nt4v171Ev();
extern void _ZN8S40C7_nt4v172Ev();
extern void _ZN8S40C7_nt4v173Ev();
extern void _ZN8S40C7_nt4v174Ev();
extern void _ZN8S40C7_nt4v175Ev();
extern void _ZN8S40C7_nt4v176Ev();
extern void _ZN8S40C7_nt4v177Ev();
extern void _ZN8S40C7_nt4v178Ev();
extern void _ZN8S40C7_nt4v179Ev();
extern void _ZN8S40C7_nt4v180Ev();
extern void _ZN8S40C7_nt4v181Ev();
extern void _ZN8S40C7_nt4v182Ev();
extern void _ZN8S40C7_nt4v183Ev();
extern void _ZN8S40C7_nt4v184Ev();
extern void _ZN8S40C7_nt4v185Ev();
extern void _ZN8S40C7_nt4v186Ev();
extern void _ZN8S40C7_nt4v187Ev();
extern void _ZN8S40C7_nt4v188Ev();
extern void _ZN8S40C7_nt4v189Ev();
extern void _ZN8S40C7_nt4v190Ev();
extern void _ZN8S40C7_nt4v191Ev();
extern void _ZN8S40C7_nt4v192Ev();
extern void _ZN8S40C7_nt4v193Ev();
extern void _ZN8S40C7_nt4v194Ev();
extern void _ZN8S40C7_nt4v195Ev();
extern void _ZN8S40C7_nt4v196Ev();
extern void _ZN8S40C7_nt4v197Ev();
extern void _ZN8S40C7_nt4v198Ev();
extern void _ZN8S40C7_nt4v199Ev();
extern void _ZN8S40C7_nt4v200Ev();
extern void _ZN8S40C7_nt4v201Ev();
extern void _ZN8S40C7_nt4v202Ev();
extern void _ZN8S40C7_nt4v203Ev();
extern void _ZN8S40C7_nt4v204Ev();
extern void _ZN8S40C7_nt4v205Ev();
extern void _ZN8S40C7_nt4v206Ev();
extern void _ZN8S40C7_nt4v207Ev();
extern void _ZN8S40C7_nt4v208Ev();
extern void _ZN8S40C7_nt4v209Ev();
extern void _ZN8S40C7_nt4v210Ev();
extern void _ZN8S40C7_nt4v211Ev();
extern void _ZN8S40C7_nt4v212Ev();
extern void _ZN8S40C7_nt4v213Ev();
extern void _ZN8S40C7_nt4v214Ev();
extern void _ZN8S40C6_nt4v215Ev();
extern void _ZN8S40C6_nt4v216Ev();
extern void _ZN8S40C6_nt4v217Ev();
extern void _ZN8S40C6_nt4v218Ev();
extern void _ZN8S40C6_nt4v219Ev();
extern void _ZN8S40C6_nt4v220Ev();
extern void _ZN8S40C6_nt4v221Ev();
extern void _ZN8S40C6_nt4v222Ev();
extern void _ZN8S40C6_nt4v223Ev();
extern void _ZN8S40C6_nt4v224Ev();
extern void _ZN8S40C6_nt4v225Ev();
extern void _ZN8S40C6_nt4v226Ev();
extern void _ZN8S40C6_nt4v227Ev();
extern void _ZN8S40C6_nt4v228Ev();
extern void _ZN8S40C6_nt4v229Ev();
extern void _ZN8S40C6_nt4v230Ev();
extern void _ZN8S40C6_nt4v231Ev();
extern void _ZN8S40C6_nt4v232Ev();
extern void _ZN8S40C6_nt4v233Ev();
extern void _ZN8S40C6_nt4v234Ev();
extern void _ZN8S40C6_nt4v235Ev();
extern void _ZN8S40C6_nt4v236Ev();
extern void _ZN8S40C6_nt4v237Ev();
extern void _ZN8S40C6_nt4v238Ev();
extern void _ZN8S40C6_nt4v239Ev();
extern void _ZN8S40C6_nt4v240Ev();
extern void _ZN8S40C6_nt4v241Ev();
extern void _ZN8S40C6_nt4v242Ev();
extern void _ZN8S40C6_nt4v243Ev();
extern void _ZN8S40C6_nt4v244Ev();
extern void _ZN8S40C6_nt4v245Ev();
extern void _ZN8S40C6_nt4v246Ev();
extern void _ZN8S40C6_nt4v247Ev();
extern void _ZN8S40C6_nt4v248Ev();
extern void _ZN8S40C6_nt4v249Ev();
extern void _ZN8S40C6_nt4v250Ev();
extern void _ZN8S40C6_nt4v251Ev();
extern void _ZN8S40C6_nt4v252Ev();
extern void _ZN8S40C6_nt4v253Ev();
extern void _ZN8S40C6_nt4v254Ev();
extern void _ZN8S40C6_nt4v255Ev();
extern void _ZN8S40C6_nt4v256Ev();
extern void _ZN8S40C6_nt4v257Ev();
extern void _ZN8S40C6_nt4v258Ev();
extern void _ZN8S40C6_nt4v259Ev();
extern void _ZN8S40C6_nt4v260Ev();
extern void _ZN8S40C6_nt4v261Ev();
extern void _ZN8S40C6_nt4v262Ev();
extern void _ZN8S40C6_nt4v263Ev();
extern void _ZN8S40C6_nt4v264Ev();
extern void _ZN8S40C6_nt4v265Ev();
extern void _ZN8S40C6_nt4v266Ev();
extern void _ZN8S40C6_nt4v267Ev();
extern void _ZN8S40C6_nt4v268Ev();
extern void _ZN8S40C6_nt4v269Ev();
extern void _ZN8S40C6_nt4v270Ev();
extern void _ZN8S40C6_nt4v271Ev();
extern void _ZN8S40C6_nt4v272Ev();
extern void _ZN8S40C6_nt4v273Ev();
extern void _ZN8S40C6_nt4v274Ev();
extern void _ZN8S40C6_nt4v275Ev();
extern void _ZN8S40C6_nt4v276Ev();
extern void _ZN8S40C6_nt4v277Ev();
extern void _ZN8S40C6_nt4v278Ev();
extern void _ZN8S40C6_nt4v279Ev();
extern void _ZN8S40C6_nt4v280Ev();
extern void _ZN8S40C6_nt4v281Ev();
extern void _ZN8S40C6_nt4v282Ev();
extern void _ZN8S40C6_nt4v283Ev();
extern void _ZN8S40C6_nt4v284Ev();
extern void _ZN8S40C6_nt4v285Ev();
extern void _ZN8S40C6_nt4v286Ev();
extern void _ZN8S40C6_nt4v287Ev();
extern void _ZN8S40C6_nt4v288Ev();
extern void _ZN8S40C6_nt4v289Ev();
extern void _ZN8S40C6_nt4v290Ev();
extern void _ZN8S40C6_nt4v291Ev();
extern void _ZN8S40C6_nt4v292Ev();
extern void _ZN8S40C6_nt4v293Ev();
extern void _ZN8S40C6_nt4v294Ev();
extern void _ZN8S40C6_nt4v295Ev();
extern void _ZN8S40C6_nt4v296Ev();
extern void _ZN8S40C6_nt4v297Ev();
extern void _ZN8S40C6_nt4v298Ev();
extern void _ZN8S40C6_nt4v299Ev();
extern void _ZN8S40C6_nt4v300Ev();
extern void _ZN8S40C6_nt4v301Ev();
extern void _ZN8S40C6_nt4v302Ev();
extern void _ZN8S40C6_nt4v303Ev();
extern void _ZN8S40C6_nt4v304Ev();
extern void _ZN8S40C6_nt4v305Ev();
extern void _ZN8S40C6_nt4v306Ev();
extern void _ZN8S40C6_nt4v307Ev();
extern void _ZN8S40C6_nt4v308Ev();
extern void _ZN8S40C6_nt4v309Ev();
extern void _ZN8S40C6_nt4v310Ev();
extern void _ZN8S40C6_nt4v311Ev();
extern void _ZN8S40C6_nt4v312Ev();
extern void _ZN8S40C5_nt4v313Ev();
extern void _ZN8S40C5_nt4v314Ev();
extern void _ZN8S40C5_nt4v315Ev();
extern void _ZN8S40C5_nt4v316Ev();
extern void _ZN8S40C5_nt4v317Ev();
extern void _ZN8S40C5_nt4v318Ev();
extern void _ZN8S40C5_nt4v319Ev();
extern void _ZN8S40C5_nt4v320Ev();
extern void _ZN8S40C5_nt4v321Ev();
extern void _ZN8S40C5_nt4v322Ev();
extern void _ZN8S40C5_nt4v323Ev();
extern void _ZN8S40C5_nt4v324Ev();
extern void _ZN8S40C5_nt4v325Ev();
extern void _ZN8S40C5_nt4v326Ev();
extern void _ZN8S40C5_nt4v327Ev();
extern void _ZN8S40C5_nt4v328Ev();
extern void _ZN8S40C5_nt4v329Ev();
extern void _ZN8S40C5_nt4v330Ev();
extern void _ZN8S40C5_nt4v331Ev();
extern void _ZN8S40C5_nt4v332Ev();
extern void _ZN8S40C5_nt4v333Ev();
extern void _ZN8S40C5_nt4v334Ev();
extern void _ZN8S40C4_nt4v335Ev();
extern void _ZN8S40C4_nt4v336Ev();
extern void _ZN8S40C4_nt4v337Ev();
extern void _ZN8S40C4_nt4v338Ev();
extern void _ZN8S40C4_nt4v339Ev();
extern void _ZN8S40C4_nt4v340Ev();
extern void _ZN8S40C4_nt4v341Ev();
extern void _ZN8S40C4_nt4v342Ev();
extern void _ZN8S40C4_nt4v343Ev();
extern void _ZN8S40C4_nt4v344Ev();
extern void _ZN8S40C4_nt4v345Ev();
extern void _ZN8S40C4_nt4v346Ev();
extern void _ZN8S40C4_nt4v347Ev();
extern void _ZN8S40C4_nt4v348Ev();
extern void _ZN8S40C4_nt4v349Ev();
extern void _ZN8S40C4_nt4v350Ev();
extern void _ZN8S40C4_nt4v351Ev();
extern void _ZN8S40C4_nt4v352Ev();
extern void _ZN8S40C4_nt4v353Ev();
extern void _ZN8S40C4_nt4v354Ev();
extern void _ZN8S40C4_nt4v355Ev();
extern void _ZN8S40C4_nt4v356Ev();
extern void _ZN8S40C4_nt4v357Ev();
extern void _ZN8S40C4_nt4v358Ev();
extern void _ZN8S40C3_nt4v359Ev();
extern void _ZN8S40C3_nt4v360Ev();
extern void _ZN8S40C3_nt4v361Ev();
extern void _ZN8S40C2_nt4v362Ev();
extern void _ZN8S40C2_nt4v363Ev();
extern void _ZN8S40C2_nt4v364Ev();
extern void _ZN8S40C2_nt4v365Ev();
extern void _ZN8S40C2_nt4v366Ev();
extern void _ZN8S40C2_nt4v367Ev();
extern void _ZN8S40C2_nt4v368Ev();
extern void _ZN8S40C2_nt4v369Ev();
extern void _ZN8S40C2_nt4v370Ev();
extern void _ZN8S40C2_nt4v371Ev();
extern void _ZN8S40C2_nt4v372Ev();
extern void _ZN8S40C2_nt4v373Ev();
extern void _ZN8S40C2_nt4v374Ev();
extern void _ZN8S40C2_nt4v375Ev();
extern void _ZN8S40C2_nt4v376Ev();
extern void _ZN8S40C2_nt4v377Ev();
extern void _ZN8S40C2_nt4v378Ev();
extern void _ZN8S40C2_nt4v379Ev();
extern void _ZN8S40C2_nt4v380Ev();
extern void _ZN8S40C2_nt4v381Ev();
extern void _ZN8S40C2_nt4v382Ev();
extern void _ZN8S40C2_nt4v383Ev();
extern void _ZN8S40C2_nt4v384Ev();
extern void _ZN8S40C2_nt4v385Ev();
extern void _ZN8S40C2_nt4v386Ev();
extern void _ZN8S40C2_nt4v387Ev();
extern void _ZN8S40C2_nt4v388Ev();
extern void _ZN8S40C2_nt4v389Ev();
extern void _ZN8S40C2_nt4v390Ev();
extern void _ZN5S40C12v1Ev();
extern void _ZN5S40C12v2Ev();
extern void _ZN5S40C12v3Ev();
extern void _ZN5S40C12v4Ev();
extern void _ZN5S40C12v5Ev();
extern void _ZN5S40C12v6Ev();
extern void _ZN5S40C12v7Ev();
static  VTBL_ENTRY vtc_S40C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI5S40C1[0]),
  (VTBL_ENTRY)&_ZN5S40C1D1Ev,
  (VTBL_ENTRY)&_ZN5S40C1D0Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v11Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v13Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v14Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v15Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v16Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v17Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v18Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v22Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v23Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v24Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v25Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v26Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v27Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v28Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v29Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v30Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v31Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v32Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v33Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v34Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v35Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v36Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v37Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v38Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v39Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v40Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v41Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v42Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v43Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v44Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v45Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v46Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v47Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v48Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v49Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v50Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v51Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v52Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v53Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v54Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v55Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v56Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v57Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v58Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v59Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v60Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v61Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v62Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v63Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v64Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v65Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v66Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v67Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v68Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v69Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v70Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v71Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v72Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v73Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v74Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v75Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v76Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v77Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v78Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v79Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v80Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v81Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v82Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v83Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v84Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v85Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v86Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v87Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v88Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v89Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v90Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v91Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v92Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v93Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v94Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v95Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v96Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v97Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v98Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v99Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v100Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v101Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v102Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v103Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v104Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v105Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v106Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v107Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v108Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v109Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v110Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v111Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v112Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v113Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v114Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v115Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v116Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v117Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v118Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v119Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v120Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v121Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v122Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v123Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v124Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v125Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v126Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v127Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v128Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v129Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v130Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v131Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v132Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v133Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v134Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v135Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v136Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v137Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v138Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v139Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v140Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v141Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v142Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v143Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v144Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v145Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v146Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v147Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v148Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v149Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v150Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v151Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v152Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v153Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v154Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v155Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v156Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v157Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v158Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v159Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v160Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v161Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v162Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v163Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v164Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v165Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v166Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v167Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v168Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v169Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v170Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v171Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v172Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v173Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v174Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v175Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v176Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v177Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v178Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v179Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v180Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v181Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v182Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v183Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v184Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v185Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v186Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v187Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v188Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v189Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v190Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v191Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v192Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v193Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v194Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v195Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v196Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v197Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v198Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v199Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v200Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v201Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v202Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v203Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v204Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v205Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v206Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v207Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v208Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v209Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v210Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v211Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v212Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v213Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v214Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v215Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v216Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v217Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v218Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v219Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v220Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v221Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v222Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v223Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v224Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v225Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v226Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v227Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v228Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v229Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v230Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v231Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v232Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v233Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v234Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v235Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v236Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v237Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v238Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v239Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v240Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v241Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v242Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v243Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v244Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v245Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v246Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v247Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v248Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v249Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v250Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v251Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v252Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v253Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v254Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v255Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v256Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v257Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v258Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v259Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v260Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v261Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v262Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v263Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v264Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v265Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v266Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v267Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v268Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v269Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v270Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v271Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v272Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v273Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v274Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v275Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v276Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v277Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v278Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v279Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v280Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v281Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v282Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v283Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v284Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v285Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v286Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v287Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v288Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v289Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v290Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v291Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v292Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v293Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v294Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v295Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v296Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v297Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v298Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v299Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v300Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v301Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v302Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v303Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v304Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v305Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v306Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v307Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v308Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v309Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v310Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v311Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v312Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v313Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v314Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v315Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v316Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v317Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v318Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v319Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v320Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v321Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v322Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v323Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v324Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v325Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v326Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v327Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v328Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v329Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v330Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v331Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v332Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v333Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v334Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v335Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v336Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v337Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v338Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v339Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v340Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v341Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v342Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v343Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v344Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v345Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v346Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v347Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v348Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v349Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v350Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v351Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v352Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v353Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v354Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v355Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v356Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v357Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v358Ev,
  (VTBL_ENTRY)&_ZN8S40C3_nt4v359Ev,
  (VTBL_ENTRY)&_ZN8S40C3_nt4v360Ev,
  (VTBL_ENTRY)&_ZN8S40C3_nt4v361Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v362Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v363Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v364Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v365Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v366Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v367Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v368Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v369Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v370Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v371Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v372Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v373Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v374Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v375Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v376Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v377Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v378Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v379Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v380Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v381Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v382Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v383Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v384Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v385Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v386Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v387Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v388Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v389Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v390Ev,
  (VTBL_ENTRY)&_ZN5S40C12v1Ev,
  (VTBL_ENTRY)&_ZN5S40C12v2Ev,
  (VTBL_ENTRY)&_ZN5S40C12v3Ev,
  (VTBL_ENTRY)&_ZN5S40C12v4Ev,
  (VTBL_ENTRY)&_ZN5S40C12v5Ev,
  (VTBL_ENTRY)&_ZN5S40C12v6Ev,
  (VTBL_ENTRY)&_ZN5S40C12v7Ev,
};
extern VTBL_ENTRY _ZTI5S40C1[];
extern  VTBL_ENTRY _ZTV5S40C1[];
Class_Descriptor cd_S40C1 = {  "S40C1", // class name
  bases_S40C1, 7,
  &(vtc_S40C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(3264,2524), // object size
  NSPAIRA(_ZTI5S40C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV5S40C1),394, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  7, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S77C7  {
  int s77c7f0;
  __tsi64 s77c7f1;
  void *s77c7f2[4];
  int s77c7f3[2];
  void *s77c7f4;
  ::S40C9_nt s77c7f5;
  void *s77c7f6[2];
  virtual  ~S77C7(); // _ZN5S77C7D1Ev
  virtual void  v4(); // _ZN5S77C72v4Ev
  virtual void  v5(); // _ZN5S77C72v5Ev
  virtual void  v6(); // _ZN5S77C72v6Ev
  virtual void  v7(); // _ZN5S77C72v7Ev
  virtual void  v8(); // _ZN5S77C72v8Ev
  virtual void  v9(); // _ZN5S77C72v9Ev
  virtual void  v10(); // _ZN5S77C73v10Ev
  virtual void  v11(); // _ZN5S77C73v11Ev
  virtual void  v12(); // _ZN5S77C73v12Ev
  virtual void  v13(); // _ZN5S77C73v13Ev
  virtual void  v14(); // _ZN5S77C73v14Ev
  virtual void  v15(); // _ZN5S77C73v15Ev
  virtual void  v16(); // _ZN5S77C73v16Ev
  virtual void  v17(); // _ZN5S77C73v17Ev
  virtual void  v18(); // _ZN5S77C73v18Ev
  virtual void  v19(); // _ZN5S77C73v19Ev
  virtual void  v20(); // _ZN5S77C73v20Ev
  virtual void  v21(); // _ZN5S77C73v21Ev
  virtual void  v22(); // _ZN5S77C73v22Ev
  virtual void  v23(); // _ZN5S77C73v23Ev
  virtual void  v24(); // _ZN5S77C73v24Ev
  virtual void  v25(); // _ZN5S77C73v25Ev
  virtual void  v26(); // _ZN5S77C73v26Ev
  virtual void  v27(); // _ZN5S77C73v27Ev
  virtual void  v28(); // _ZN5S77C73v28Ev
  virtual void  v29(); // _ZN5S77C73v29Ev
  virtual void  v30(); // _ZN5S77C73v30Ev
  virtual void  v31(); // _ZN5S77C73v31Ev
  virtual void  v32(); // _ZN5S77C73v32Ev
  virtual void  v33(); // _ZN5S77C73v33Ev
  virtual void  v34(); // _ZN5S77C73v34Ev
  virtual void  v35(); // _ZN5S77C73v35Ev
  virtual void  v36(); // _ZN5S77C73v36Ev
  virtual void  v37(); // _ZN5S77C73v37Ev
  virtual void  v38(); // _ZN5S77C73v38Ev
  virtual void  v39(); // _ZN5S77C73v39Ev
  virtual void  v40(); // _ZN5S77C73v40Ev
  virtual void  v41(); // _ZN5S77C73v41Ev
  virtual void  v42(); // _ZN5S77C73v42Ev
  virtual void  v43(); // _ZN5S77C73v43Ev
  virtual void  v44(); // _ZN5S77C73v44Ev
  virtual void  v45(); // _ZN5S77C73v45Ev
  virtual void  v46(); // _ZN5S77C73v46Ev
  virtual void  v47(); // _ZN5S77C73v47Ev
  virtual void  v48(); // _ZN5S77C73v48Ev
  virtual void  v49(); // _ZN5S77C73v49Ev
  virtual void  v50(); // _ZN5S77C73v50Ev
  virtual void  v51(); // _ZN5S77C73v51Ev
  virtual void  v52(); // _ZN5S77C73v52Ev
  virtual void  v53(); // _ZN5S77C73v53Ev
  virtual void  v54(); // _ZN5S77C73v54Ev
  virtual void  v55(); // _ZN5S77C73v55Ev
  virtual void  v56(); // _ZN5S77C73v56Ev
  virtual void  v57(); // _ZN5S77C73v57Ev
  virtual void  v58(); // _ZN5S77C73v58Ev
  virtual void  v59(); // _ZN5S77C73v59Ev
  virtual void  v60(); // _ZN5S77C73v60Ev
  virtual void  v61(); // _ZN5S77C73v61Ev
  virtual void  v62(); // _ZN5S77C73v62Ev
  virtual void  v63(); // _ZN5S77C73v63Ev
  virtual void  v64(); // _ZN5S77C73v64Ev
  virtual void  v65(); // _ZN5S77C73v65Ev
  virtual void  v66(); // _ZN5S77C73v66Ev
  virtual void  v67(); // _ZN5S77C73v67Ev
  S77C7(); // tgen
};
//SIG(-1 S77C7) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 Fi FL Fp[4] Fi[2] Fp FC2{ m Fi[2]} Fp[2]}


 S77C7 ::~S77C7(){ note_dtor("S77C7", this);}
void  S77C7 ::v4(){vfunc_called(this, "_ZN5S77C72v4Ev");}
void  S77C7 ::v5(){vfunc_called(this, "_ZN5S77C72v5Ev");}
void  S77C7 ::v6(){vfunc_called(this, "_ZN5S77C72v6Ev");}
void  S77C7 ::v7(){vfunc_called(this, "_ZN5S77C72v7Ev");}
void  S77C7 ::v8(){vfunc_called(this, "_ZN5S77C72v8Ev");}
void  S77C7 ::v9(){vfunc_called(this, "_ZN5S77C72v9Ev");}
void  S77C7 ::v10(){vfunc_called(this, "_ZN5S77C73v10Ev");}
void  S77C7 ::v11(){vfunc_called(this, "_ZN5S77C73v11Ev");}
void  S77C7 ::v12(){vfunc_called(this, "_ZN5S77C73v12Ev");}
void  S77C7 ::v13(){vfunc_called(this, "_ZN5S77C73v13Ev");}
void  S77C7 ::v14(){vfunc_called(this, "_ZN5S77C73v14Ev");}
void  S77C7 ::v15(){vfunc_called(this, "_ZN5S77C73v15Ev");}
void  S77C7 ::v16(){vfunc_called(this, "_ZN5S77C73v16Ev");}
void  S77C7 ::v17(){vfunc_called(this, "_ZN5S77C73v17Ev");}
void  S77C7 ::v18(){vfunc_called(this, "_ZN5S77C73v18Ev");}
void  S77C7 ::v19(){vfunc_called(this, "_ZN5S77C73v19Ev");}
void  S77C7 ::v20(){vfunc_called(this, "_ZN5S77C73v20Ev");}
void  S77C7 ::v21(){vfunc_called(this, "_ZN5S77C73v21Ev");}
void  S77C7 ::v22(){vfunc_called(this, "_ZN5S77C73v22Ev");}
void  S77C7 ::v23(){vfunc_called(this, "_ZN5S77C73v23Ev");}
void  S77C7 ::v24(){vfunc_called(this, "_ZN5S77C73v24Ev");}
void  S77C7 ::v25(){vfunc_called(this, "_ZN5S77C73v25Ev");}
void  S77C7 ::v26(){vfunc_called(this, "_ZN5S77C73v26Ev");}
void  S77C7 ::v27(){vfunc_called(this, "_ZN5S77C73v27Ev");}
void  S77C7 ::v28(){vfunc_called(this, "_ZN5S77C73v28Ev");}
void  S77C7 ::v29(){vfunc_called(this, "_ZN5S77C73v29Ev");}
void  S77C7 ::v30(){vfunc_called(this, "_ZN5S77C73v30Ev");}
void  S77C7 ::v31(){vfunc_called(this, "_ZN5S77C73v31Ev");}
void  S77C7 ::v32(){vfunc_called(this, "_ZN5S77C73v32Ev");}
void  S77C7 ::v33(){vfunc_called(this, "_ZN5S77C73v33Ev");}
void  S77C7 ::v34(){vfunc_called(this, "_ZN5S77C73v34Ev");}
void  S77C7 ::v35(){vfunc_called(this, "_ZN5S77C73v35Ev");}
void  S77C7 ::v36(){vfunc_called(this, "_ZN5S77C73v36Ev");}
void  S77C7 ::v37(){vfunc_called(this, "_ZN5S77C73v37Ev");}
void  S77C7 ::v38(){vfunc_called(this, "_ZN5S77C73v38Ev");}
void  S77C7 ::v39(){vfunc_called(this, "_ZN5S77C73v39Ev");}
void  S77C7 ::v40(){vfunc_called(this, "_ZN5S77C73v40Ev");}
void  S77C7 ::v41(){vfunc_called(this, "_ZN5S77C73v41Ev");}
void  S77C7 ::v42(){vfunc_called(this, "_ZN5S77C73v42Ev");}
void  S77C7 ::v43(){vfunc_called(this, "_ZN5S77C73v43Ev");}
void  S77C7 ::v44(){vfunc_called(this, "_ZN5S77C73v44Ev");}
void  S77C7 ::v45(){vfunc_called(this, "_ZN5S77C73v45Ev");}
void  S77C7 ::v46(){vfunc_called(this, "_ZN5S77C73v46Ev");}
void  S77C7 ::v47(){vfunc_called(this, "_ZN5S77C73v47Ev");}
void  S77C7 ::v48(){vfunc_called(this, "_ZN5S77C73v48Ev");}
void  S77C7 ::v49(){vfunc_called(this, "_ZN5S77C73v49Ev");}
void  S77C7 ::v50(){vfunc_called(this, "_ZN5S77C73v50Ev");}
void  S77C7 ::v51(){vfunc_called(this, "_ZN5S77C73v51Ev");}
void  S77C7 ::v52(){vfunc_called(this, "_ZN5S77C73v52Ev");}
void  S77C7 ::v53(){vfunc_called(this, "_ZN5S77C73v53Ev");}
void  S77C7 ::v54(){vfunc_called(this, "_ZN5S77C73v54Ev");}
void  S77C7 ::v55(){vfunc_called(this, "_ZN5S77C73v55Ev");}
void  S77C7 ::v56(){vfunc_called(this, "_ZN5S77C73v56Ev");}
void  S77C7 ::v57(){vfunc_called(this, "_ZN5S77C73v57Ev");}
void  S77C7 ::v58(){vfunc_called(this, "_ZN5S77C73v58Ev");}
void  S77C7 ::v59(){vfunc_called(this, "_ZN5S77C73v59Ev");}
void  S77C7 ::v60(){vfunc_called(this, "_ZN5S77C73v60Ev");}
void  S77C7 ::v61(){vfunc_called(this, "_ZN5S77C73v61Ev");}
void  S77C7 ::v62(){vfunc_called(this, "_ZN5S77C73v62Ev");}
void  S77C7 ::v63(){vfunc_called(this, "_ZN5S77C73v63Ev");}
void  S77C7 ::v64(){vfunc_called(this, "_ZN5S77C73v64Ev");}
void  S77C7 ::v65(){vfunc_called(this, "_ZN5S77C73v65Ev");}
void  S77C7 ::v66(){vfunc_called(this, "_ZN5S77C73v66Ev");}
void  S77C7 ::v67(){vfunc_called(this, "_ZN5S77C73v67Ev");}
S77C7 ::S77C7(){ note_ctor("S77C7", this);} // tgen

static void Test_S77C7()
{
  extern Class_Descriptor cd_S77C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S77C7, buf);
    S77C7 *dp, &lv = *(dp=new (buf) S77C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S77C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S77C7)");
    check_field_offset(lv, s77c7f0, ABISELECT(8,4), "S77C7.s77c7f0");
    check_field_offset(lv, s77c7f1, ABISELECT(16,8), "S77C7.s77c7f1");
    check_field_offset(lv, s77c7f2, ABISELECT(24,16), "S77C7.s77c7f2");
    check_field_offset(lv, s77c7f3, ABISELECT(56,32), "S77C7.s77c7f3");
    check_field_offset(lv, s77c7f4, ABISELECT(64,40), "S77C7.s77c7f4");
    check_field_offset(lv, s77c7f5, ABISELECT(72,44), "S77C7.s77c7f5");
    check_field_offset(lv, s77c7f6, ABISELECT(80,52), "S77C7.s77c7f6");
    test_class_info(&lv, &cd_S77C7);
    dp->~S77C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS77C7(Test_S77C7, "S77C7", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN5S77C7C1Ev();
extern void _ZN5S77C7D1Ev();
Name_Map name_map_S77C7[] = {
  NSPAIR(_ZN5S77C7C1Ev),
  NSPAIR(_ZN5S77C7D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI5S77C7[];
extern void _ZN5S77C7D1Ev();
extern void _ZN5S77C7D0Ev();
extern void _ZN5S77C72v4Ev();
extern void _ZN5S77C72v5Ev();
extern void _ZN5S77C72v6Ev();
extern void _ZN5S77C72v7Ev();
extern void _ZN5S77C72v8Ev();
extern void _ZN5S77C72v9Ev();
extern void _ZN5S77C73v10Ev();
extern void _ZN5S77C73v11Ev();
extern void _ZN5S77C73v12Ev();
extern void _ZN5S77C73v13Ev();
extern void _ZN5S77C73v14Ev();
extern void _ZN5S77C73v15Ev();
extern void _ZN5S77C73v16Ev();
extern void _ZN5S77C73v17Ev();
extern void _ZN5S77C73v18Ev();
extern void _ZN5S77C73v19Ev();
extern void _ZN5S77C73v20Ev();
extern void _ZN5S77C73v21Ev();
extern void _ZN5S77C73v22Ev();
extern void _ZN5S77C73v23Ev();
extern void _ZN5S77C73v24Ev();
extern void _ZN5S77C73v25Ev();
extern void _ZN5S77C73v26Ev();
extern void _ZN5S77C73v27Ev();
extern void _ZN5S77C73v28Ev();
extern void _ZN5S77C73v29Ev();
extern void _ZN5S77C73v30Ev();
extern void _ZN5S77C73v31Ev();
extern void _ZN5S77C73v32Ev();
extern void _ZN5S77C73v33Ev();
extern void _ZN5S77C73v34Ev();
extern void _ZN5S77C73v35Ev();
extern void _ZN5S77C73v36Ev();
extern void _ZN5S77C73v37Ev();
extern void _ZN5S77C73v38Ev();
extern void _ZN5S77C73v39Ev();
extern void _ZN5S77C73v40Ev();
extern void _ZN5S77C73v41Ev();
extern void _ZN5S77C73v42Ev();
extern void _ZN5S77C73v43Ev();
extern void _ZN5S77C73v44Ev();
extern void _ZN5S77C73v45Ev();
extern void _ZN5S77C73v46Ev();
extern void _ZN5S77C73v47Ev();
extern void _ZN5S77C73v48Ev();
extern void _ZN5S77C73v49Ev();
extern void _ZN5S77C73v50Ev();
extern void _ZN5S77C73v51Ev();
extern void _ZN5S77C73v52Ev();
extern void _ZN5S77C73v53Ev();
extern void _ZN5S77C73v54Ev();
extern void _ZN5S77C73v55Ev();
extern void _ZN5S77C73v56Ev();
extern void _ZN5S77C73v57Ev();
extern void _ZN5S77C73v58Ev();
extern void _ZN5S77C73v59Ev();
extern void _ZN5S77C73v60Ev();
extern void _ZN5S77C73v61Ev();
extern void _ZN5S77C73v62Ev();
extern void _ZN5S77C73v63Ev();
extern void _ZN5S77C73v64Ev();
extern void _ZN5S77C73v65Ev();
extern void _ZN5S77C73v66Ev();
extern void _ZN5S77C73v67Ev();
static  VTBL_ENTRY vtc_S77C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI5S77C7[0]),
  (VTBL_ENTRY)&_ZN5S77C7D1Ev,
  (VTBL_ENTRY)&_ZN5S77C7D0Ev,
  (VTBL_ENTRY)&_ZN5S77C72v4Ev,
  (VTBL_ENTRY)&_ZN5S77C72v5Ev,
  (VTBL_ENTRY)&_ZN5S77C72v6Ev,
  (VTBL_ENTRY)&_ZN5S77C72v7Ev,
  (VTBL_ENTRY)&_ZN5S77C72v8Ev,
  (VTBL_ENTRY)&_ZN5S77C72v9Ev,
  (VTBL_ENTRY)&_ZN5S77C73v10Ev,
  (VTBL_ENTRY)&_ZN5S77C73v11Ev,
  (VTBL_ENTRY)&_ZN5S77C73v12Ev,
  (VTBL_ENTRY)&_ZN5S77C73v13Ev,
  (VTBL_ENTRY)&_ZN5S77C73v14Ev,
  (VTBL_ENTRY)&_ZN5S77C73v15Ev,
  (VTBL_ENTRY)&_ZN5S77C73v16Ev,
  (VTBL_ENTRY)&_ZN5S77C73v17Ev,
  (VTBL_ENTRY)&_ZN5S77C73v18Ev,
  (VTBL_ENTRY)&_ZN5S77C73v19Ev,
  (VTBL_ENTRY)&_ZN5S77C73v20Ev,
  (VTBL_ENTRY)&_ZN5S77C73v21Ev,
  (VTBL_ENTRY)&_ZN5S77C73v22Ev,
  (VTBL_ENTRY)&_ZN5S77C73v23Ev,
  (VTBL_ENTRY)&_ZN5S77C73v24Ev,
  (VTBL_ENTRY)&_ZN5S77C73v25Ev,
  (VTBL_ENTRY)&_ZN5S77C73v26Ev,
  (VTBL_ENTRY)&_ZN5S77C73v27Ev,
  (VTBL_ENTRY)&_ZN5S77C73v28Ev,
  (VTBL_ENTRY)&_ZN5S77C73v29Ev,
  (VTBL_ENTRY)&_ZN5S77C73v30Ev,
  (VTBL_ENTRY)&_ZN5S77C73v31Ev,
  (VTBL_ENTRY)&_ZN5S77C73v32Ev,
  (VTBL_ENTRY)&_ZN5S77C73v33Ev,
  (VTBL_ENTRY)&_ZN5S77C73v34Ev,
  (VTBL_ENTRY)&_ZN5S77C73v35Ev,
  (VTBL_ENTRY)&_ZN5S77C73v36Ev,
  (VTBL_ENTRY)&_ZN5S77C73v37Ev,
  (VTBL_ENTRY)&_ZN5S77C73v38Ev,
  (VTBL_ENTRY)&_ZN5S77C73v39Ev,
  (VTBL_ENTRY)&_ZN5S77C73v40Ev,
  (VTBL_ENTRY)&_ZN5S77C73v41Ev,
  (VTBL_ENTRY)&_ZN5S77C73v42Ev,
  (VTBL_ENTRY)&_ZN5S77C73v43Ev,
  (VTBL_ENTRY)&_ZN5S77C73v44Ev,
  (VTBL_ENTRY)&_ZN5S77C73v45Ev,
  (VTBL_ENTRY)&_ZN5S77C73v46Ev,
  (VTBL_ENTRY)&_ZN5S77C73v47Ev,
  (VTBL_ENTRY)&_ZN5S77C73v48Ev,
  (VTBL_ENTRY)&_ZN5S77C73v49Ev,
  (VTBL_ENTRY)&_ZN5S77C73v50Ev,
  (VTBL_ENTRY)&_ZN5S77C73v51Ev,
  (VTBL_ENTRY)&_ZN5S77C73v52Ev,
  (VTBL_ENTRY)&_ZN5S77C73v53Ev,
  (VTBL_ENTRY)&_ZN5S77C73v54Ev,
  (VTBL_ENTRY)&_ZN5S77C73v55Ev,
  (VTBL_ENTRY)&_ZN5S77C73v56Ev,
  (VTBL_ENTRY)&_ZN5S77C73v57Ev,
  (VTBL_ENTRY)&_ZN5S77C73v58Ev,
  (VTBL_ENTRY)&_ZN5S77C73v59Ev,
  (VTBL_ENTRY)&_ZN5S77C73v60Ev,
  (VTBL_ENTRY)&_ZN5S77C73v61Ev,
  (VTBL_ENTRY)&_ZN5S77C73v62Ev,
  (VTBL_ENTRY)&_ZN5S77C73v63Ev,
  (VTBL_ENTRY)&_ZN5S77C73v64Ev,
  (VTBL_ENTRY)&_ZN5S77C73v65Ev,
  (VTBL_ENTRY)&_ZN5S77C73v66Ev,
  (VTBL_ENTRY)&_ZN5S77C73v67Ev,
};
extern VTBL_ENTRY _ZTI5S77C7[];
extern  VTBL_ENTRY _ZTV5S77C7[];
Class_Descriptor cd_S77C7 = {  "S77C7", // class name
  0,0,//no base classes
  &(vtc_S77C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI5S77C7),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV5S77C7),68, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S77C13_nt  {
  void  mf77c13(); // _ZN9S77C13_nt7mf77c13Ev
};
//SIG(-1 S77C13_nt) C1{ m}


void  S77C13_nt ::mf77c13(){}

//skip512 S77C13_nt

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S77C6_nt  : S77C7 {
  int s77c6f0[2];
  void *s77c6f1;
  int s77c6f2[2];
  ::S40C26_nt s77c6f3;
  ::S40C26_nt s77c6f4;
  ::S77C13_nt s77c6f5;
  ::S40C26_nt s77c6f6;
  unsigned int s77c6f7:1;
  unsigned int s77c6f8:1;
  unsigned int s77c6f9:1;
  unsigned int s77c6f10:1;
  unsigned int s77c6f11:1;
  int s77c6f12[2];
  virtual  ~S77C6_nt(); // _ZN8S77C6_ntD1Ev
  virtual void  v68(); // _ZN8S77C6_nt3v68Ev
  virtual void  v69(); // _ZN8S77C6_nt3v69Ev
  virtual void  v70(); // _ZN8S77C6_nt3v70Ev
  virtual void  v71(); // _ZN8S77C6_nt3v71Ev
  virtual void  v72(); // _ZN8S77C6_nt3v72Ev
  virtual void  v73(); // _ZN8S77C6_nt3v73Ev
  virtual void  v74(); // _ZN8S77C6_nt3v74Ev
  virtual void  v75(); // _ZN8S77C6_nt3v75Ev
  virtual void  v76(); // _ZN8S77C6_nt3v76Ev
  virtual void  v77(); // _ZN8S77C6_nt3v77Ev
  virtual void  v78(); // _ZN8S77C6_nt3v78Ev
  virtual void  v79(); // _ZN8S77C6_nt3v79Ev
  virtual void  v80(); // _ZN8S77C6_nt3v80Ev
  virtual void  v81(); // _ZN8S77C6_nt3v81Ev
  virtual void  v82(); // _ZN8S77C6_nt3v82Ev
  virtual void  v83(); // _ZN8S77C6_nt3v83Ev
  virtual void  v84(); // _ZN8S77C6_nt3v84Ev
  virtual void  v85(); // _ZN8S77C6_nt3v85Ev
  virtual void  v86(); // _ZN8S77C6_nt3v86Ev
  virtual void  v87(); // _ZN8S77C6_nt3v87Ev
  virtual void  v88(); // _ZN8S77C6_nt3v88Ev
  virtual void  v89(); // _ZN8S77C6_nt3v89Ev
  S77C6_nt(); // tgen
};
//SIG(-1 S77C6_nt) C1{ BC2{ vd v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 Fi FL Fp[4] Fi[2] Fp FC3{ m Fi[2]} Fp[2]} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 Fi[2] Fp Fi[2] FC4{ BC5{ BC6{ BC7{ m Fp Fi[2]}}}} FC4 FC8{ m} FC4 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[2]}


 S77C6_nt ::~S77C6_nt(){ note_dtor("S77C6_nt", this);}
void  S77C6_nt ::v68(){vfunc_called(this, "_ZN8S77C6_nt3v68Ev");}
void  S77C6_nt ::v69(){vfunc_called(this, "_ZN8S77C6_nt3v69Ev");}
void  S77C6_nt ::v70(){vfunc_called(this, "_ZN8S77C6_nt3v70Ev");}
void  S77C6_nt ::v71(){vfunc_called(this, "_ZN8S77C6_nt3v71Ev");}
void  S77C6_nt ::v72(){vfunc_called(this, "_ZN8S77C6_nt3v72Ev");}
void  S77C6_nt ::v73(){vfunc_called(this, "_ZN8S77C6_nt3v73Ev");}
void  S77C6_nt ::v74(){vfunc_called(this, "_ZN8S77C6_nt3v74Ev");}
void  S77C6_nt ::v75(){vfunc_called(this, "_ZN8S77C6_nt3v75Ev");}
void  S77C6_nt ::v76(){vfunc_called(this, "_ZN8S77C6_nt3v76Ev");}
void  S77C6_nt ::v77(){vfunc_called(this, "_ZN8S77C6_nt3v77Ev");}
void  S77C6_nt ::v78(){vfunc_called(this, "_ZN8S77C6_nt3v78Ev");}
void  S77C6_nt ::v79(){vfunc_called(this, "_ZN8S77C6_nt3v79Ev");}
void  S77C6_nt ::v80(){vfunc_called(this, "_ZN8S77C6_nt3v80Ev");}
void  S77C6_nt ::v81(){vfunc_called(this, "_ZN8S77C6_nt3v81Ev");}
void  S77C6_nt ::v82(){vfunc_called(this, "_ZN8S77C6_nt3v82Ev");}
void  S77C6_nt ::v83(){vfunc_called(this, "_ZN8S77C6_nt3v83Ev");}
void  S77C6_nt ::v84(){vfunc_called(this, "_ZN8S77C6_nt3v84Ev");}
void  S77C6_nt ::v85(){vfunc_called(this, "_ZN8S77C6_nt3v85Ev");}
void  S77C6_nt ::v86(){vfunc_called(this, "_ZN8S77C6_nt3v86Ev");}
void  S77C6_nt ::v87(){vfunc_called(this, "_ZN8S77C6_nt3v87Ev");}
void  S77C6_nt ::v88(){vfunc_called(this, "_ZN8S77C6_nt3v88Ev");}
void  S77C6_nt ::v89(){vfunc_called(this, "_ZN8S77C6_nt3v89Ev");}
S77C6_nt ::S77C6_nt(){ note_ctor("S77C6_nt", this);} // tgen

//skip512 S77C6_nt

#else // __cplusplus

extern void _ZN8S77C6_ntC1Ev();
extern void _ZN8S77C6_ntD1Ev();
Name_Map name_map_S77C6_nt[] = {
  NSPAIR(_ZN8S77C6_ntC1Ev),
  NSPAIR(_ZN8S77C6_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S77C7;
extern VTBL_ENTRY _ZTI5S77C7[];
extern  VTBL_ENTRY _ZTV5S77C7[];
static Base_Class bases_S77C6_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S77C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S77C6_nt[];
extern void _ZN8S77C6_ntD1Ev();
extern void _ZN8S77C6_ntD0Ev();
extern void _ZN5S77C72v4Ev();
extern void _ZN5S77C72v5Ev();
extern void _ZN5S77C72v6Ev();
extern void _ZN5S77C72v7Ev();
extern void _ZN5S77C72v8Ev();
extern void _ZN5S77C72v9Ev();
extern void _ZN5S77C73v10Ev();
extern void _ZN5S77C73v11Ev();
extern void _ZN5S77C73v12Ev();
extern void _ZN5S77C73v13Ev();
extern void _ZN5S77C73v14Ev();
extern void _ZN5S77C73v15Ev();
extern void _ZN5S77C73v16Ev();
extern void _ZN5S77C73v17Ev();
extern void _ZN5S77C73v18Ev();
extern void _ZN5S77C73v19Ev();
extern void _ZN5S77C73v20Ev();
extern void _ZN5S77C73v21Ev();
extern void _ZN5S77C73v22Ev();
extern void _ZN5S77C73v23Ev();
extern void _ZN5S77C73v24Ev();
extern void _ZN5S77C73v25Ev();
extern void _ZN5S77C73v26Ev();
extern void _ZN5S77C73v27Ev();
extern void _ZN5S77C73v28Ev();
extern void _ZN5S77C73v29Ev();
extern void _ZN5S77C73v30Ev();
extern void _ZN5S77C73v31Ev();
extern void _ZN5S77C73v32Ev();
extern void _ZN5S77C73v33Ev();
extern void _ZN5S77C73v34Ev();
extern void _ZN5S77C73v35Ev();
extern void _ZN5S77C73v36Ev();
extern void _ZN5S77C73v37Ev();
extern void _ZN5S77C73v38Ev();
extern void _ZN5S77C73v39Ev();
extern void _ZN5S77C73v40Ev();
extern void _ZN5S77C73v41Ev();
extern void _ZN5S77C73v42Ev();
extern void _ZN5S77C73v43Ev();
extern void _ZN5S77C73v44Ev();
extern void _ZN5S77C73v45Ev();
extern void _ZN5S77C73v46Ev();
extern void _ZN5S77C73v47Ev();
extern void _ZN5S77C73v48Ev();
extern void _ZN5S77C73v49Ev();
extern void _ZN5S77C73v50Ev();
extern void _ZN5S77C73v51Ev();
extern void _ZN5S77C73v52Ev();
extern void _ZN5S77C73v53Ev();
extern void _ZN5S77C73v54Ev();
extern void _ZN5S77C73v55Ev();
extern void _ZN5S77C73v56Ev();
extern void _ZN5S77C73v57Ev();
extern void _ZN5S77C73v58Ev();
extern void _ZN5S77C73v59Ev();
extern void _ZN5S77C73v60Ev();
extern void _ZN5S77C73v61Ev();
extern void _ZN5S77C73v62Ev();
extern void _ZN5S77C73v63Ev();
extern void _ZN5S77C73v64Ev();
extern void _ZN5S77C73v65Ev();
extern void _ZN5S77C73v66Ev();
extern void _ZN5S77C73v67Ev();
extern void _ZN8S77C6_nt3v68Ev();
extern void _ZN8S77C6_nt3v69Ev();
extern void _ZN8S77C6_nt3v70Ev();
extern void _ZN8S77C6_nt3v71Ev();
extern void _ZN8S77C6_nt3v72Ev();
extern void _ZN8S77C6_nt3v73Ev();
extern void _ZN8S77C6_nt3v74Ev();
extern void _ZN8S77C6_nt3v75Ev();
extern void _ZN8S77C6_nt3v76Ev();
extern void _ZN8S77C6_nt3v77Ev();
extern void _ZN8S77C6_nt3v78Ev();
extern void _ZN8S77C6_nt3v79Ev();
extern void _ZN8S77C6_nt3v80Ev();
extern void _ZN8S77C6_nt3v81Ev();
extern void _ZN8S77C6_nt3v82Ev();
extern void _ZN8S77C6_nt3v83Ev();
extern void _ZN8S77C6_nt3v84Ev();
extern void _ZN8S77C6_nt3v85Ev();
extern void _ZN8S77C6_nt3v86Ev();
extern void _ZN8S77C6_nt3v87Ev();
extern void _ZN8S77C6_nt3v88Ev();
extern void _ZN8S77C6_nt3v89Ev();
static  VTBL_ENTRY vtc_S77C6_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S77C6_nt[0]),
  (VTBL_ENTRY)&_ZN8S77C6_ntD1Ev,
  (VTBL_ENTRY)&_ZN8S77C6_ntD0Ev,
  (VTBL_ENTRY)&_ZN5S77C72v4Ev,
  (VTBL_ENTRY)&_ZN5S77C72v5Ev,
  (VTBL_ENTRY)&_ZN5S77C72v6Ev,
  (VTBL_ENTRY)&_ZN5S77C72v7Ev,
  (VTBL_ENTRY)&_ZN5S77C72v8Ev,
  (VTBL_ENTRY)&_ZN5S77C72v9Ev,
  (VTBL_ENTRY)&_ZN5S77C73v10Ev,
  (VTBL_ENTRY)&_ZN5S77C73v11Ev,
  (VTBL_ENTRY)&_ZN5S77C73v12Ev,
  (VTBL_ENTRY)&_ZN5S77C73v13Ev,
  (VTBL_ENTRY)&_ZN5S77C73v14Ev,
  (VTBL_ENTRY)&_ZN5S77C73v15Ev,
  (VTBL_ENTRY)&_ZN5S77C73v16Ev,
  (VTBL_ENTRY)&_ZN5S77C73v17Ev,
  (VTBL_ENTRY)&_ZN5S77C73v18Ev,
  (VTBL_ENTRY)&_ZN5S77C73v19Ev,
  (VTBL_ENTRY)&_ZN5S77C73v20Ev,
  (VTBL_ENTRY)&_ZN5S77C73v21Ev,
  (VTBL_ENTRY)&_ZN5S77C73v22Ev,
  (VTBL_ENTRY)&_ZN5S77C73v23Ev,
  (VTBL_ENTRY)&_ZN5S77C73v24Ev,
  (VTBL_ENTRY)&_ZN5S77C73v25Ev,
  (VTBL_ENTRY)&_ZN5S77C73v26Ev,
  (VTBL_ENTRY)&_ZN5S77C73v27Ev,
  (VTBL_ENTRY)&_ZN5S77C73v28Ev,
  (VTBL_ENTRY)&_ZN5S77C73v29Ev,
  (VTBL_ENTRY)&_ZN5S77C73v30Ev,
  (VTBL_ENTRY)&_ZN5S77C73v31Ev,
  (VTBL_ENTRY)&_ZN5S77C73v32Ev,
  (VTBL_ENTRY)&_ZN5S77C73v33Ev,
  (VTBL_ENTRY)&_ZN5S77C73v34Ev,
  (VTBL_ENTRY)&_ZN5S77C73v35Ev,
  (VTBL_ENTRY)&_ZN5S77C73v36Ev,
  (VTBL_ENTRY)&_ZN5S77C73v37Ev,
  (VTBL_ENTRY)&_ZN5S77C73v38Ev,
  (VTBL_ENTRY)&_ZN5S77C73v39Ev,
  (VTBL_ENTRY)&_ZN5S77C73v40Ev,
  (VTBL_ENTRY)&_ZN5S77C73v41Ev,
  (VTBL_ENTRY)&_ZN5S77C73v42Ev,
  (VTBL_ENTRY)&_ZN5S77C73v43Ev,
  (VTBL_ENTRY)&_ZN5S77C73v44Ev,
  (VTBL_ENTRY)&_ZN5S77C73v45Ev,
  (VTBL_ENTRY)&_ZN5S77C73v46Ev,
  (VTBL_ENTRY)&_ZN5S77C73v47Ev,
  (VTBL_ENTRY)&_ZN5S77C73v48Ev,
  (VTBL_ENTRY)&_ZN5S77C73v49Ev,
  (VTBL_ENTRY)&_ZN5S77C73v50Ev,
  (VTBL_ENTRY)&_ZN5S77C73v51Ev,
  (VTBL_ENTRY)&_ZN5S77C73v52Ev,
  (VTBL_ENTRY)&_ZN5S77C73v53Ev,
  (VTBL_ENTRY)&_ZN5S77C73v54Ev,
  (VTBL_ENTRY)&_ZN5S77C73v55Ev,
  (VTBL_ENTRY)&_ZN5S77C73v56Ev,
  (VTBL_ENTRY)&_ZN5S77C73v57Ev,
  (VTBL_ENTRY)&_ZN5S77C73v58Ev,
  (VTBL_ENTRY)&_ZN5S77C73v59Ev,
  (VTBL_ENTRY)&_ZN5S77C73v60Ev,
  (VTBL_ENTRY)&_ZN5S77C73v61Ev,
  (VTBL_ENTRY)&_ZN5S77C73v62Ev,
  (VTBL_ENTRY)&_ZN5S77C73v63Ev,
  (VTBL_ENTRY)&_ZN5S77C73v64Ev,
  (VTBL_ENTRY)&_ZN5S77C73v65Ev,
  (VTBL_ENTRY)&_ZN5S77C73v66Ev,
  (VTBL_ENTRY)&_ZN5S77C73v67Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v68Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v69Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v70Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v71Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v72Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v73Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v74Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v75Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v76Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v77Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v78Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v79Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v80Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v81Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v82Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v83Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v84Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v85Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v86Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v87Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v88Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v89Ev,
};
extern VTBL_ENTRY _ZTI8S77C6_nt[];
VTBL_ENTRY *P__ZTI8S77C6_nt = _ZTI8S77C6_nt; 
extern  VTBL_ENTRY _ZTV8S77C6_nt[];
Class_Descriptor cd_S77C6_nt = {  "S77C6_nt", // class name
  bases_S77C6_nt, 1,
  &(vtc_S77C6_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(192,132), // object size
  NSPAIRA(_ZTI8S77C6_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S77C6_nt),90, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S77C5_nt  : S77C6_nt {
  unsigned int s77c5f0:1;
  unsigned int s77c5f1:1;
  unsigned int s77c5f2:1;
  ::S40C80 s77c5f3;
  ::S40C76 s77c5f4;
  ::S40C71 s77c5f5;
  ::S40C66 s77c5f6;
  int s77c5f7[3];
  virtual  ~S77C5_nt(); // _ZN8S77C5_ntD1Ev
  virtual void  v90(); // _ZN8S77C5_nt3v90Ev
  virtual void  v91(); // _ZN8S77C5_nt3v91Ev
  virtual void  v92(); // _ZN8S77C5_nt3v92Ev
  virtual void  v93(); // _ZN8S77C5_nt3v93Ev
  virtual void  v94(); // _ZN8S77C5_nt3v94Ev
  virtual void  v95(); // _ZN8S77C5_nt3v95Ev
  virtual void  v96(); // _ZN8S77C5_nt3v96Ev
  virtual void  v97(); // _ZN8S77C5_nt3v97Ev
  virtual void  v98(); // _ZN8S77C5_nt3v98Ev
  virtual void  v99(); // _ZN8S77C5_nt3v99Ev
  virtual void  v100(); // _ZN8S77C5_nt4v100Ev
  virtual void  v101(); // _ZN8S77C5_nt4v101Ev
  virtual void  v102(); // _ZN8S77C5_nt4v102Ev
  virtual void  v103(); // _ZN8S77C5_nt4v103Ev
  virtual void  v104(); // _ZN8S77C5_nt4v104Ev
  virtual void  v105(); // _ZN8S77C5_nt4v105Ev
  virtual void  v106(); // _ZN8S77C5_nt4v106Ev
  virtual void  v107(); // _ZN8S77C5_nt4v107Ev
  virtual void  v108(); // _ZN8S77C5_nt4v108Ev
  virtual void  v109(); // _ZN8S77C5_nt4v109Ev
  S77C5_nt(); // tgen
};
//SIG(-1 S77C5_nt) C1{ BC2{ BC3{ vd v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 Fi FL Fp[4] Fi[2] Fp FC4{ m Fi[2]} Fp[2]} vd v85 v86 v87 v88 v89 v90 v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 v102 v103 v104 v105 v106 Fi[2] Fp Fi[2] FC5{ BC6{ BC7{ BC8{ m Fp Fi[2]}}}} FC5 FC9{ m} FC5 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[2]} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 Fi:1 Fi:1 Fi:1 FC10{ BC11{ BC8}} FC12{ BC13{ BC8}} FC14{ BC15{ BC8}} FC16{ BC17{ BC8}} Fi[3]}


 S77C5_nt ::~S77C5_nt(){ note_dtor("S77C5_nt", this);}
void  S77C5_nt ::v90(){vfunc_called(this, "_ZN8S77C5_nt3v90Ev");}
void  S77C5_nt ::v91(){vfunc_called(this, "_ZN8S77C5_nt3v91Ev");}
void  S77C5_nt ::v92(){vfunc_called(this, "_ZN8S77C5_nt3v92Ev");}
void  S77C5_nt ::v93(){vfunc_called(this, "_ZN8S77C5_nt3v93Ev");}
void  S77C5_nt ::v94(){vfunc_called(this, "_ZN8S77C5_nt3v94Ev");}
void  S77C5_nt ::v95(){vfunc_called(this, "_ZN8S77C5_nt3v95Ev");}
void  S77C5_nt ::v96(){vfunc_called(this, "_ZN8S77C5_nt3v96Ev");}
void  S77C5_nt ::v97(){vfunc_called(this, "_ZN8S77C5_nt3v97Ev");}
void  S77C5_nt ::v98(){vfunc_called(this, "_ZN8S77C5_nt3v98Ev");}
void  S77C5_nt ::v99(){vfunc_called(this, "_ZN8S77C5_nt3v99Ev");}
void  S77C5_nt ::v100(){vfunc_called(this, "_ZN8S77C5_nt4v100Ev");}
void  S77C5_nt ::v101(){vfunc_called(this, "_ZN8S77C5_nt4v101Ev");}
void  S77C5_nt ::v102(){vfunc_called(this, "_ZN8S77C5_nt4v102Ev");}
void  S77C5_nt ::v103(){vfunc_called(this, "_ZN8S77C5_nt4v103Ev");}
void  S77C5_nt ::v104(){vfunc_called(this, "_ZN8S77C5_nt4v104Ev");}
void  S77C5_nt ::v105(){vfunc_called(this, "_ZN8S77C5_nt4v105Ev");}
void  S77C5_nt ::v106(){vfunc_called(this, "_ZN8S77C5_nt4v106Ev");}
void  S77C5_nt ::v107(){vfunc_called(this, "_ZN8S77C5_nt4v107Ev");}
void  S77C5_nt ::v108(){vfunc_called(this, "_ZN8S77C5_nt4v108Ev");}
void  S77C5_nt ::v109(){vfunc_called(this, "_ZN8S77C5_nt4v109Ev");}
S77C5_nt ::S77C5_nt(){ note_ctor("S77C5_nt", this);} // tgen

//skip512 S77C5_nt

#else // __cplusplus

extern void _ZN8S77C5_ntC1Ev();
extern void _ZN8S77C5_ntD1Ev();
Name_Map name_map_S77C5_nt[] = {
  NSPAIR(_ZN8S77C5_ntC1Ev),
  NSPAIR(_ZN8S77C5_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S77C7;
extern VTBL_ENTRY _ZTI5S77C7[];
extern  VTBL_ENTRY _ZTV5S77C7[];
extern Class_Descriptor cd_S77C6_nt;
extern VTBL_ENTRY _ZTI8S77C6_nt[];
extern  VTBL_ENTRY _ZTV8S77C6_nt[];
static Base_Class bases_S77C5_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S77C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S77C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S77C5_nt[];
extern void _ZN8S77C5_ntD1Ev();
extern void _ZN8S77C5_ntD0Ev();
extern void _ZN5S77C72v4Ev();
extern void _ZN5S77C72v5Ev();
extern void _ZN5S77C72v6Ev();
extern void _ZN5S77C72v7Ev();
extern void _ZN5S77C72v8Ev();
extern void _ZN5S77C72v9Ev();
extern void _ZN5S77C73v10Ev();
extern void _ZN5S77C73v11Ev();
extern void _ZN5S77C73v12Ev();
extern void _ZN5S77C73v13Ev();
extern void _ZN5S77C73v14Ev();
extern void _ZN5S77C73v15Ev();
extern void _ZN5S77C73v16Ev();
extern void _ZN5S77C73v17Ev();
extern void _ZN5S77C73v18Ev();
extern void _ZN5S77C73v19Ev();
extern void _ZN5S77C73v20Ev();
extern void _ZN5S77C73v21Ev();
extern void _ZN5S77C73v22Ev();
extern void _ZN5S77C73v23Ev();
extern void _ZN5S77C73v24Ev();
extern void _ZN5S77C73v25Ev();
extern void _ZN5S77C73v26Ev();
extern void _ZN5S77C73v27Ev();
extern void _ZN5S77C73v28Ev();
extern void _ZN5S77C73v29Ev();
extern void _ZN5S77C73v30Ev();
extern void _ZN5S77C73v31Ev();
extern void _ZN5S77C73v32Ev();
extern void _ZN5S77C73v33Ev();
extern void _ZN5S77C73v34Ev();
extern void _ZN5S77C73v35Ev();
extern void _ZN5S77C73v36Ev();
extern void _ZN5S77C73v37Ev();
extern void _ZN5S77C73v38Ev();
extern void _ZN5S77C73v39Ev();
extern void _ZN5S77C73v40Ev();
extern void _ZN5S77C73v41Ev();
extern void _ZN5S77C73v42Ev();
extern void _ZN5S77C73v43Ev();
extern void _ZN5S77C73v44Ev();
extern void _ZN5S77C73v45Ev();
extern void _ZN5S77C73v46Ev();
extern void _ZN5S77C73v47Ev();
extern void _ZN5S77C73v48Ev();
extern void _ZN5S77C73v49Ev();
extern void _ZN5S77C73v50Ev();
extern void _ZN5S77C73v51Ev();
extern void _ZN5S77C73v52Ev();
extern void _ZN5S77C73v53Ev();
extern void _ZN5S77C73v54Ev();
extern void _ZN5S77C73v55Ev();
extern void _ZN5S77C73v56Ev();
extern void _ZN5S77C73v57Ev();
extern void _ZN5S77C73v58Ev();
extern void _ZN5S77C73v59Ev();
extern void _ZN5S77C73v60Ev();
extern void _ZN5S77C73v61Ev();
extern void _ZN5S77C73v62Ev();
extern void _ZN5S77C73v63Ev();
extern void _ZN5S77C73v64Ev();
extern void _ZN5S77C73v65Ev();
extern void _ZN5S77C73v66Ev();
extern void _ZN5S77C73v67Ev();
extern void _ZN8S77C6_nt3v68Ev();
extern void _ZN8S77C6_nt3v69Ev();
extern void _ZN8S77C6_nt3v70Ev();
extern void _ZN8S77C6_nt3v71Ev();
extern void _ZN8S77C6_nt3v72Ev();
extern void _ZN8S77C6_nt3v73Ev();
extern void _ZN8S77C6_nt3v74Ev();
extern void _ZN8S77C6_nt3v75Ev();
extern void _ZN8S77C6_nt3v76Ev();
extern void _ZN8S77C6_nt3v77Ev();
extern void _ZN8S77C6_nt3v78Ev();
extern void _ZN8S77C6_nt3v79Ev();
extern void _ZN8S77C6_nt3v80Ev();
extern void _ZN8S77C6_nt3v81Ev();
extern void _ZN8S77C6_nt3v82Ev();
extern void _ZN8S77C6_nt3v83Ev();
extern void _ZN8S77C6_nt3v84Ev();
extern void _ZN8S77C6_nt3v85Ev();
extern void _ZN8S77C6_nt3v86Ev();
extern void _ZN8S77C6_nt3v87Ev();
extern void _ZN8S77C6_nt3v88Ev();
extern void _ZN8S77C6_nt3v89Ev();
extern void _ZN8S77C5_nt3v90Ev();
extern void _ZN8S77C5_nt3v91Ev();
extern void _ZN8S77C5_nt3v92Ev();
extern void _ZN8S77C5_nt3v93Ev();
extern void _ZN8S77C5_nt3v94Ev();
extern void _ZN8S77C5_nt3v95Ev();
extern void _ZN8S77C5_nt3v96Ev();
extern void _ZN8S77C5_nt3v97Ev();
extern void _ZN8S77C5_nt3v98Ev();
extern void _ZN8S77C5_nt3v99Ev();
extern void _ZN8S77C5_nt4v100Ev();
extern void _ZN8S77C5_nt4v101Ev();
extern void _ZN8S77C5_nt4v102Ev();
extern void _ZN8S77C5_nt4v103Ev();
extern void _ZN8S77C5_nt4v104Ev();
extern void _ZN8S77C5_nt4v105Ev();
extern void _ZN8S77C5_nt4v106Ev();
extern void _ZN8S77C5_nt4v107Ev();
extern void _ZN8S77C5_nt4v108Ev();
extern void _ZN8S77C5_nt4v109Ev();
static  VTBL_ENTRY vtc_S77C5_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S77C5_nt[0]),
  (VTBL_ENTRY)&_ZN8S77C5_ntD1Ev,
  (VTBL_ENTRY)&_ZN8S77C5_ntD0Ev,
  (VTBL_ENTRY)&_ZN5S77C72v4Ev,
  (VTBL_ENTRY)&_ZN5S77C72v5Ev,
  (VTBL_ENTRY)&_ZN5S77C72v6Ev,
  (VTBL_ENTRY)&_ZN5S77C72v7Ev,
  (VTBL_ENTRY)&_ZN5S77C72v8Ev,
  (VTBL_ENTRY)&_ZN5S77C72v9Ev,
  (VTBL_ENTRY)&_ZN5S77C73v10Ev,
  (VTBL_ENTRY)&_ZN5S77C73v11Ev,
  (VTBL_ENTRY)&_ZN5S77C73v12Ev,
  (VTBL_ENTRY)&_ZN5S77C73v13Ev,
  (VTBL_ENTRY)&_ZN5S77C73v14Ev,
  (VTBL_ENTRY)&_ZN5S77C73v15Ev,
  (VTBL_ENTRY)&_ZN5S77C73v16Ev,
  (VTBL_ENTRY)&_ZN5S77C73v17Ev,
  (VTBL_ENTRY)&_ZN5S77C73v18Ev,
  (VTBL_ENTRY)&_ZN5S77C73v19Ev,
  (VTBL_ENTRY)&_ZN5S77C73v20Ev,
  (VTBL_ENTRY)&_ZN5S77C73v21Ev,
  (VTBL_ENTRY)&_ZN5S77C73v22Ev,
  (VTBL_ENTRY)&_ZN5S77C73v23Ev,
  (VTBL_ENTRY)&_ZN5S77C73v24Ev,
  (VTBL_ENTRY)&_ZN5S77C73v25Ev,
  (VTBL_ENTRY)&_ZN5S77C73v26Ev,
  (VTBL_ENTRY)&_ZN5S77C73v27Ev,
  (VTBL_ENTRY)&_ZN5S77C73v28Ev,
  (VTBL_ENTRY)&_ZN5S77C73v29Ev,
  (VTBL_ENTRY)&_ZN5S77C73v30Ev,
  (VTBL_ENTRY)&_ZN5S77C73v31Ev,
  (VTBL_ENTRY)&_ZN5S77C73v32Ev,
  (VTBL_ENTRY)&_ZN5S77C73v33Ev,
  (VTBL_ENTRY)&_ZN5S77C73v34Ev,
  (VTBL_ENTRY)&_ZN5S77C73v35Ev,
  (VTBL_ENTRY)&_ZN5S77C73v36Ev,
  (VTBL_ENTRY)&_ZN5S77C73v37Ev,
  (VTBL_ENTRY)&_ZN5S77C73v38Ev,
  (VTBL_ENTRY)&_ZN5S77C73v39Ev,
  (VTBL_ENTRY)&_ZN5S77C73v40Ev,
  (VTBL_ENTRY)&_ZN5S77C73v41Ev,
  (VTBL_ENTRY)&_ZN5S77C73v42Ev,
  (VTBL_ENTRY)&_ZN5S77C73v43Ev,
  (VTBL_ENTRY)&_ZN5S77C73v44Ev,
  (VTBL_ENTRY)&_ZN5S77C73v45Ev,
  (VTBL_ENTRY)&_ZN5S77C73v46Ev,
  (VTBL_ENTRY)&_ZN5S77C73v47Ev,
  (VTBL_ENTRY)&_ZN5S77C73v48Ev,
  (VTBL_ENTRY)&_ZN5S77C73v49Ev,
  (VTBL_ENTRY)&_ZN5S77C73v50Ev,
  (VTBL_ENTRY)&_ZN5S77C73v51Ev,
  (VTBL_ENTRY)&_ZN5S77C73v52Ev,
  (VTBL_ENTRY)&_ZN5S77C73v53Ev,
  (VTBL_ENTRY)&_ZN5S77C73v54Ev,
  (VTBL_ENTRY)&_ZN5S77C73v55Ev,
  (VTBL_ENTRY)&_ZN5S77C73v56Ev,
  (VTBL_ENTRY)&_ZN5S77C73v57Ev,
  (VTBL_ENTRY)&_ZN5S77C73v58Ev,
  (VTBL_ENTRY)&_ZN5S77C73v59Ev,
  (VTBL_ENTRY)&_ZN5S77C73v60Ev,
  (VTBL_ENTRY)&_ZN5S77C73v61Ev,
  (VTBL_ENTRY)&_ZN5S77C73v62Ev,
  (VTBL_ENTRY)&_ZN5S77C73v63Ev,
  (VTBL_ENTRY)&_ZN5S77C73v64Ev,
  (VTBL_ENTRY)&_ZN5S77C73v65Ev,
  (VTBL_ENTRY)&_ZN5S77C73v66Ev,
  (VTBL_ENTRY)&_ZN5S77C73v67Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v68Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v69Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v70Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v71Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v72Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v73Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v74Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v75Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v76Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v77Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v78Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v79Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v80Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v81Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v82Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v83Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v84Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v85Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v86Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v87Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v88Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v89Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v90Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v91Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v92Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v93Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v94Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v95Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v96Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v97Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v98Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v99Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v100Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v101Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v102Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v103Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v104Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v105Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v106Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v107Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v108Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v109Ev,
};
extern VTBL_ENTRY _ZTI8S77C5_nt[];
VTBL_ENTRY *P__ZTI8S77C5_nt = _ZTI8S77C5_nt; 
extern  VTBL_ENTRY _ZTV8S77C5_nt[];
Class_Descriptor cd_S77C5_nt = {  "S77C5_nt", // class name
  bases_S77C5_nt, 2,
  &(vtc_S77C5_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(272,196), // object size
  NSPAIRA(_ZTI8S77C5_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S77C5_nt),110, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

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


 S77C4_nt ::~S77C4_nt(){ note_dtor("S77C4_nt", this);}
void  S77C4_nt ::v110(){vfunc_called(this, "_ZN8S77C4_nt4v110Ev");}
void  S77C4_nt ::v111(){vfunc_called(this, "_ZN8S77C4_nt4v111Ev");}
void  S77C4_nt ::v112(){vfunc_called(this, "_ZN8S77C4_nt4v112Ev");}
void  S77C4_nt ::v113(){vfunc_called(this, "_ZN8S77C4_nt4v113Ev");}
S77C4_nt ::S77C4_nt(){ note_ctor("S77C4_nt", this);} // tgen

//skip512 S77C4_nt

#else // __cplusplus

extern void _ZN8S77C4_ntC1Ev();
extern void _ZN8S77C4_ntD1Ev();
Name_Map name_map_S77C4_nt[] = {
  NSPAIR(_ZN8S77C4_ntC1Ev),
  NSPAIR(_ZN8S77C4_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S77C7;
extern VTBL_ENTRY _ZTI5S77C7[];
extern  VTBL_ENTRY _ZTV5S77C7[];
extern Class_Descriptor cd_S77C6_nt;
extern VTBL_ENTRY _ZTI8S77C6_nt[];
extern  VTBL_ENTRY _ZTV8S77C6_nt[];
extern Class_Descriptor cd_S77C5_nt;
extern VTBL_ENTRY _ZTI8S77C5_nt[];
extern  VTBL_ENTRY _ZTV8S77C5_nt[];
static Base_Class bases_S77C4_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S77C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S77C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S77C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S77C4_nt[];
extern void _ZN8S77C4_ntD1Ev();
extern void _ZN8S77C4_ntD0Ev();
extern void _ZN5S77C72v4Ev();
extern void _ZN5S77C72v5Ev();
extern void _ZN5S77C72v6Ev();
extern void _ZN5S77C72v7Ev();
extern void _ZN5S77C72v8Ev();
extern void _ZN5S77C72v9Ev();
extern void _ZN5S77C73v10Ev();
extern void _ZN5S77C73v11Ev();
extern void _ZN5S77C73v12Ev();
extern void _ZN5S77C73v13Ev();
extern void _ZN5S77C73v14Ev();
extern void _ZN5S77C73v15Ev();
extern void _ZN5S77C73v16Ev();
extern void _ZN5S77C73v17Ev();
extern void _ZN5S77C73v18Ev();
extern void _ZN5S77C73v19Ev();
extern void _ZN5S77C73v20Ev();
extern void _ZN5S77C73v21Ev();
extern void _ZN5S77C73v22Ev();
extern void _ZN5S77C73v23Ev();
extern void _ZN5S77C73v24Ev();
extern void _ZN5S77C73v25Ev();
extern void _ZN5S77C73v26Ev();
extern void _ZN5S77C73v27Ev();
extern void _ZN5S77C73v28Ev();
extern void _ZN5S77C73v29Ev();
extern void _ZN5S77C73v30Ev();
extern void _ZN5S77C73v31Ev();
extern void _ZN5S77C73v32Ev();
extern void _ZN5S77C73v33Ev();
extern void _ZN5S77C73v34Ev();
extern void _ZN5S77C73v35Ev();
extern void _ZN5S77C73v36Ev();
extern void _ZN5S77C73v37Ev();
extern void _ZN5S77C73v38Ev();
extern void _ZN5S77C73v39Ev();
extern void _ZN5S77C73v40Ev();
extern void _ZN5S77C73v41Ev();
extern void _ZN5S77C73v42Ev();
extern void _ZN5S77C73v43Ev();
extern void _ZN5S77C73v44Ev();
extern void _ZN5S77C73v45Ev();
extern void _ZN5S77C73v46Ev();
extern void _ZN5S77C73v47Ev();
extern void _ZN5S77C73v48Ev();
extern void _ZN5S77C73v49Ev();
extern void _ZN5S77C73v50Ev();
extern void _ZN5S77C73v51Ev();
extern void _ZN5S77C73v52Ev();
extern void _ZN5S77C73v53Ev();
extern void _ZN5S77C73v54Ev();
extern void _ZN5S77C73v55Ev();
extern void _ZN5S77C73v56Ev();
extern void _ZN5S77C73v57Ev();
extern void _ZN5S77C73v58Ev();
extern void _ZN5S77C73v59Ev();
extern void _ZN5S77C73v60Ev();
extern void _ZN5S77C73v61Ev();
extern void _ZN5S77C73v62Ev();
extern void _ZN5S77C73v63Ev();
extern void _ZN5S77C73v64Ev();
extern void _ZN5S77C73v65Ev();
extern void _ZN5S77C73v66Ev();
extern void _ZN5S77C73v67Ev();
extern void _ZN8S77C6_nt3v68Ev();
extern void _ZN8S77C6_nt3v69Ev();
extern void _ZN8S77C6_nt3v70Ev();
extern void _ZN8S77C6_nt3v71Ev();
extern void _ZN8S77C6_nt3v72Ev();
extern void _ZN8S77C6_nt3v73Ev();
extern void _ZN8S77C6_nt3v74Ev();
extern void _ZN8S77C6_nt3v75Ev();
extern void _ZN8S77C6_nt3v76Ev();
extern void _ZN8S77C6_nt3v77Ev();
extern void _ZN8S77C6_nt3v78Ev();
extern void _ZN8S77C6_nt3v79Ev();
extern void _ZN8S77C6_nt3v80Ev();
extern void _ZN8S77C6_nt3v81Ev();
extern void _ZN8S77C6_nt3v82Ev();
extern void _ZN8S77C6_nt3v83Ev();
extern void _ZN8S77C6_nt3v84Ev();
extern void _ZN8S77C6_nt3v85Ev();
extern void _ZN8S77C6_nt3v86Ev();
extern void _ZN8S77C6_nt3v87Ev();
extern void _ZN8S77C6_nt3v88Ev();
extern void _ZN8S77C6_nt3v89Ev();
extern void _ZN8S77C5_nt3v90Ev();
extern void _ZN8S77C5_nt3v91Ev();
extern void _ZN8S77C5_nt3v92Ev();
extern void _ZN8S77C5_nt3v93Ev();
extern void _ZN8S77C5_nt3v94Ev();
extern void _ZN8S77C5_nt3v95Ev();
extern void _ZN8S77C5_nt3v96Ev();
extern void _ZN8S77C5_nt3v97Ev();
extern void _ZN8S77C5_nt3v98Ev();
extern void _ZN8S77C5_nt3v99Ev();
extern void _ZN8S77C5_nt4v100Ev();
extern void _ZN8S77C5_nt4v101Ev();
extern void _ZN8S77C5_nt4v102Ev();
extern void _ZN8S77C5_nt4v103Ev();
extern void _ZN8S77C5_nt4v104Ev();
extern void _ZN8S77C5_nt4v105Ev();
extern void _ZN8S77C5_nt4v106Ev();
extern void _ZN8S77C5_nt4v107Ev();
extern void _ZN8S77C5_nt4v108Ev();
extern void _ZN8S77C5_nt4v109Ev();
extern void _ZN8S77C4_nt4v110Ev();
extern void _ZN8S77C4_nt4v111Ev();
extern void _ZN8S77C4_nt4v112Ev();
extern void _ZN8S77C4_nt4v113Ev();
static  VTBL_ENTRY vtc_S77C4_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S77C4_nt[0]),
  (VTBL_ENTRY)&_ZN8S77C4_ntD1Ev,
  (VTBL_ENTRY)&_ZN8S77C4_ntD0Ev,
  (VTBL_ENTRY)&_ZN5S77C72v4Ev,
  (VTBL_ENTRY)&_ZN5S77C72v5Ev,
  (VTBL_ENTRY)&_ZN5S77C72v6Ev,
  (VTBL_ENTRY)&_ZN5S77C72v7Ev,
  (VTBL_ENTRY)&_ZN5S77C72v8Ev,
  (VTBL_ENTRY)&_ZN5S77C72v9Ev,
  (VTBL_ENTRY)&_ZN5S77C73v10Ev,
  (VTBL_ENTRY)&_ZN5S77C73v11Ev,
  (VTBL_ENTRY)&_ZN5S77C73v12Ev,
  (VTBL_ENTRY)&_ZN5S77C73v13Ev,
  (VTBL_ENTRY)&_ZN5S77C73v14Ev,
  (VTBL_ENTRY)&_ZN5S77C73v15Ev,
  (VTBL_ENTRY)&_ZN5S77C73v16Ev,
  (VTBL_ENTRY)&_ZN5S77C73v17Ev,
  (VTBL_ENTRY)&_ZN5S77C73v18Ev,
  (VTBL_ENTRY)&_ZN5S77C73v19Ev,
  (VTBL_ENTRY)&_ZN5S77C73v20Ev,
  (VTBL_ENTRY)&_ZN5S77C73v21Ev,
  (VTBL_ENTRY)&_ZN5S77C73v22Ev,
  (VTBL_ENTRY)&_ZN5S77C73v23Ev,
  (VTBL_ENTRY)&_ZN5S77C73v24Ev,
  (VTBL_ENTRY)&_ZN5S77C73v25Ev,
  (VTBL_ENTRY)&_ZN5S77C73v26Ev,
  (VTBL_ENTRY)&_ZN5S77C73v27Ev,
  (VTBL_ENTRY)&_ZN5S77C73v28Ev,
  (VTBL_ENTRY)&_ZN5S77C73v29Ev,
  (VTBL_ENTRY)&_ZN5S77C73v30Ev,
  (VTBL_ENTRY)&_ZN5S77C73v31Ev,
  (VTBL_ENTRY)&_ZN5S77C73v32Ev,
  (VTBL_ENTRY)&_ZN5S77C73v33Ev,
  (VTBL_ENTRY)&_ZN5S77C73v34Ev,
  (VTBL_ENTRY)&_ZN5S77C73v35Ev,
  (VTBL_ENTRY)&_ZN5S77C73v36Ev,
  (VTBL_ENTRY)&_ZN5S77C73v37Ev,
  (VTBL_ENTRY)&_ZN5S77C73v38Ev,
  (VTBL_ENTRY)&_ZN5S77C73v39Ev,
  (VTBL_ENTRY)&_ZN5S77C73v40Ev,
  (VTBL_ENTRY)&_ZN5S77C73v41Ev,
  (VTBL_ENTRY)&_ZN5S77C73v42Ev,
  (VTBL_ENTRY)&_ZN5S77C73v43Ev,
  (VTBL_ENTRY)&_ZN5S77C73v44Ev,
  (VTBL_ENTRY)&_ZN5S77C73v45Ev,
  (VTBL_ENTRY)&_ZN5S77C73v46Ev,
  (VTBL_ENTRY)&_ZN5S77C73v47Ev,
  (VTBL_ENTRY)&_ZN5S77C73v48Ev,
  (VTBL_ENTRY)&_ZN5S77C73v49Ev,
  (VTBL_ENTRY)&_ZN5S77C73v50Ev,
  (VTBL_ENTRY)&_ZN5S77C73v51Ev,
  (VTBL_ENTRY)&_ZN5S77C73v52Ev,
  (VTBL_ENTRY)&_ZN5S77C73v53Ev,
  (VTBL_ENTRY)&_ZN5S77C73v54Ev,
  (VTBL_ENTRY)&_ZN5S77C73v55Ev,
  (VTBL_ENTRY)&_ZN5S77C73v56Ev,
  (VTBL_ENTRY)&_ZN5S77C73v57Ev,
  (VTBL_ENTRY)&_ZN5S77C73v58Ev,
  (VTBL_ENTRY)&_ZN5S77C73v59Ev,
  (VTBL_ENTRY)&_ZN5S77C73v60Ev,
  (VTBL_ENTRY)&_ZN5S77C73v61Ev,
  (VTBL_ENTRY)&_ZN5S77C73v62Ev,
  (VTBL_ENTRY)&_ZN5S77C73v63Ev,
  (VTBL_ENTRY)&_ZN5S77C73v64Ev,
  (VTBL_ENTRY)&_ZN5S77C73v65Ev,
  (VTBL_ENTRY)&_ZN5S77C73v66Ev,
  (VTBL_ENTRY)&_ZN5S77C73v67Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v68Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v69Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v70Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v71Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v72Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v73Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v74Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v75Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v76Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v77Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v78Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v79Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v80Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v81Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v82Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v83Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v84Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v85Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v86Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v87Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v88Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v89Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v90Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v91Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v92Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v93Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v94Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v95Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v96Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v97Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v98Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v99Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v100Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v101Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v102Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v103Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v104Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v105Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v106Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v107Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v108Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v109Ev,
  (VTBL_ENTRY)&_ZN8S77C4_nt4v110Ev,
  (VTBL_ENTRY)&_ZN8S77C4_nt4v111Ev,
  (VTBL_ENTRY)&_ZN8S77C4_nt4v112Ev,
  (VTBL_ENTRY)&_ZN8S77C4_nt4v113Ev,
};
extern VTBL_ENTRY _ZTI8S77C4_nt[];
VTBL_ENTRY *P__ZTI8S77C4_nt = _ZTI8S77C4_nt; 
extern  VTBL_ENTRY _ZTV8S77C4_nt[];
Class_Descriptor cd_S77C4_nt = {  "S77C4_nt", // class name
  bases_S77C4_nt, 3,
  &(vtc_S77C4_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(296,220), // object size
  NSPAIRA(_ZTI8S77C4_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S77C4_nt),114, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

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


 S77C3_nt ::~S77C3_nt(){ note_dtor("S77C3_nt", this);}
void  S77C3_nt ::v114(){vfunc_called(this, "_ZN8S77C3_nt4v114Ev");}
void  S77C3_nt ::v115(){vfunc_called(this, "_ZN8S77C3_nt4v115Ev");}
void  S77C3_nt ::v116(){vfunc_called(this, "_ZN8S77C3_nt4v116Ev");}
void  S77C3_nt ::v117(){vfunc_called(this, "_ZN8S77C3_nt4v117Ev");}
void  S77C3_nt ::v118(){vfunc_called(this, "_ZN8S77C3_nt4v118Ev");}
void  S77C3_nt ::v119(){vfunc_called(this, "_ZN8S77C3_nt4v119Ev");}
void  S77C3_nt ::v120(){vfunc_called(this, "_ZN8S77C3_nt4v120Ev");}
void  S77C3_nt ::v121(){vfunc_called(this, "_ZN8S77C3_nt4v121Ev");}
S77C3_nt ::S77C3_nt(){ note_ctor("S77C3_nt", this);} // tgen

//skip512 S77C3_nt

#else // __cplusplus

extern void _ZN8S77C3_ntC1Ev();
extern void _ZN8S77C3_ntD1Ev();
Name_Map name_map_S77C3_nt[] = {
  NSPAIR(_ZN8S77C3_ntC1Ev),
  NSPAIR(_ZN8S77C3_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S77C7;
extern VTBL_ENTRY _ZTI5S77C7[];
extern  VTBL_ENTRY _ZTV5S77C7[];
extern Class_Descriptor cd_S77C6_nt;
extern VTBL_ENTRY _ZTI8S77C6_nt[];
extern  VTBL_ENTRY _ZTV8S77C6_nt[];
extern Class_Descriptor cd_S77C5_nt;
extern VTBL_ENTRY _ZTI8S77C5_nt[];
extern  VTBL_ENTRY _ZTV8S77C5_nt[];
extern Class_Descriptor cd_S77C4_nt;
extern VTBL_ENTRY _ZTI8S77C4_nt[];
extern  VTBL_ENTRY _ZTV8S77C4_nt[];
static Base_Class bases_S77C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S77C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S77C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S77C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S77C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S77C3_nt[];
extern void _ZN8S77C3_ntD1Ev();
extern void _ZN8S77C3_ntD0Ev();
extern void _ZN5S77C72v4Ev();
extern void _ZN5S77C72v5Ev();
extern void _ZN5S77C72v6Ev();
extern void _ZN5S77C72v7Ev();
extern void _ZN5S77C72v8Ev();
extern void _ZN5S77C72v9Ev();
extern void _ZN5S77C73v10Ev();
extern void _ZN5S77C73v11Ev();
extern void _ZN5S77C73v12Ev();
extern void _ZN5S77C73v13Ev();
extern void _ZN5S77C73v14Ev();
extern void _ZN5S77C73v15Ev();
extern void _ZN5S77C73v16Ev();
extern void _ZN5S77C73v17Ev();
extern void _ZN5S77C73v18Ev();
extern void _ZN5S77C73v19Ev();
extern void _ZN5S77C73v20Ev();
extern void _ZN5S77C73v21Ev();
extern void _ZN5S77C73v22Ev();
extern void _ZN5S77C73v23Ev();
extern void _ZN5S77C73v24Ev();
extern void _ZN5S77C73v25Ev();
extern void _ZN5S77C73v26Ev();
extern void _ZN5S77C73v27Ev();
extern void _ZN5S77C73v28Ev();
extern void _ZN5S77C73v29Ev();
extern void _ZN5S77C73v30Ev();
extern void _ZN5S77C73v31Ev();
extern void _ZN5S77C73v32Ev();
extern void _ZN5S77C73v33Ev();
extern void _ZN5S77C73v34Ev();
extern void _ZN5S77C73v35Ev();
extern void _ZN5S77C73v36Ev();
extern void _ZN5S77C73v37Ev();
extern void _ZN5S77C73v38Ev();
extern void _ZN5S77C73v39Ev();
extern void _ZN5S77C73v40Ev();
extern void _ZN5S77C73v41Ev();
extern void _ZN5S77C73v42Ev();
extern void _ZN5S77C73v43Ev();
extern void _ZN5S77C73v44Ev();
extern void _ZN5S77C73v45Ev();
extern void _ZN5S77C73v46Ev();
extern void _ZN5S77C73v47Ev();
extern void _ZN5S77C73v48Ev();
extern void _ZN5S77C73v49Ev();
extern void _ZN5S77C73v50Ev();
extern void _ZN5S77C73v51Ev();
extern void _ZN5S77C73v52Ev();
extern void _ZN5S77C73v53Ev();
extern void _ZN5S77C73v54Ev();
extern void _ZN5S77C73v55Ev();
extern void _ZN5S77C73v56Ev();
extern void _ZN5S77C73v57Ev();
extern void _ZN5S77C73v58Ev();
extern void _ZN5S77C73v59Ev();
extern void _ZN5S77C73v60Ev();
extern void _ZN5S77C73v61Ev();
extern void _ZN5S77C73v62Ev();
extern void _ZN5S77C73v63Ev();
extern void _ZN5S77C73v64Ev();
extern void _ZN5S77C73v65Ev();
extern void _ZN5S77C73v66Ev();
extern void _ZN5S77C73v67Ev();
extern void _ZN8S77C6_nt3v68Ev();
extern void _ZN8S77C6_nt3v69Ev();
extern void _ZN8S77C6_nt3v70Ev();
extern void _ZN8S77C6_nt3v71Ev();
extern void _ZN8S77C6_nt3v72Ev();
extern void _ZN8S77C6_nt3v73Ev();
extern void _ZN8S77C6_nt3v74Ev();
extern void _ZN8S77C6_nt3v75Ev();
extern void _ZN8S77C6_nt3v76Ev();
extern void _ZN8S77C6_nt3v77Ev();
extern void _ZN8S77C6_nt3v78Ev();
extern void _ZN8S77C6_nt3v79Ev();
extern void _ZN8S77C6_nt3v80Ev();
extern void _ZN8S77C6_nt3v81Ev();
extern void _ZN8S77C6_nt3v82Ev();
extern void _ZN8S77C6_nt3v83Ev();
extern void _ZN8S77C6_nt3v84Ev();
extern void _ZN8S77C6_nt3v85Ev();
extern void _ZN8S77C6_nt3v86Ev();
extern void _ZN8S77C6_nt3v87Ev();
extern void _ZN8S77C6_nt3v88Ev();
extern void _ZN8S77C6_nt3v89Ev();
extern void _ZN8S77C5_nt3v90Ev();
extern void _ZN8S77C5_nt3v91Ev();
extern void _ZN8S77C5_nt3v92Ev();
extern void _ZN8S77C5_nt3v93Ev();
extern void _ZN8S77C5_nt3v94Ev();
extern void _ZN8S77C5_nt3v95Ev();
extern void _ZN8S77C5_nt3v96Ev();
extern void _ZN8S77C5_nt3v97Ev();
extern void _ZN8S77C5_nt3v98Ev();
extern void _ZN8S77C5_nt3v99Ev();
extern void _ZN8S77C5_nt4v100Ev();
extern void _ZN8S77C5_nt4v101Ev();
extern void _ZN8S77C5_nt4v102Ev();
extern void _ZN8S77C5_nt4v103Ev();
extern void _ZN8S77C5_nt4v104Ev();
extern void _ZN8S77C5_nt4v105Ev();
extern void _ZN8S77C5_nt4v106Ev();
extern void _ZN8S77C5_nt4v107Ev();
extern void _ZN8S77C5_nt4v108Ev();
extern void _ZN8S77C5_nt4v109Ev();
extern void _ZN8S77C4_nt4v110Ev();
extern void _ZN8S77C4_nt4v111Ev();
extern void _ZN8S77C4_nt4v112Ev();
extern void _ZN8S77C4_nt4v113Ev();
extern void _ZN8S77C3_nt4v114Ev();
extern void _ZN8S77C3_nt4v115Ev();
extern void _ZN8S77C3_nt4v116Ev();
extern void _ZN8S77C3_nt4v117Ev();
extern void _ZN8S77C3_nt4v118Ev();
extern void _ZN8S77C3_nt4v119Ev();
extern void _ZN8S77C3_nt4v120Ev();
extern void _ZN8S77C3_nt4v121Ev();
static  VTBL_ENTRY vtc_S77C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S77C3_nt[0]),
  (VTBL_ENTRY)&_ZN8S77C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN8S77C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN5S77C72v4Ev,
  (VTBL_ENTRY)&_ZN5S77C72v5Ev,
  (VTBL_ENTRY)&_ZN5S77C72v6Ev,
  (VTBL_ENTRY)&_ZN5S77C72v7Ev,
  (VTBL_ENTRY)&_ZN5S77C72v8Ev,
  (VTBL_ENTRY)&_ZN5S77C72v9Ev,
  (VTBL_ENTRY)&_ZN5S77C73v10Ev,
  (VTBL_ENTRY)&_ZN5S77C73v11Ev,
  (VTBL_ENTRY)&_ZN5S77C73v12Ev,
  (VTBL_ENTRY)&_ZN5S77C73v13Ev,
  (VTBL_ENTRY)&_ZN5S77C73v14Ev,
  (VTBL_ENTRY)&_ZN5S77C73v15Ev,
  (VTBL_ENTRY)&_ZN5S77C73v16Ev,
  (VTBL_ENTRY)&_ZN5S77C73v17Ev,
  (VTBL_ENTRY)&_ZN5S77C73v18Ev,
  (VTBL_ENTRY)&_ZN5S77C73v19Ev,
  (VTBL_ENTRY)&_ZN5S77C73v20Ev,
  (VTBL_ENTRY)&_ZN5S77C73v21Ev,
  (VTBL_ENTRY)&_ZN5S77C73v22Ev,
  (VTBL_ENTRY)&_ZN5S77C73v23Ev,
  (VTBL_ENTRY)&_ZN5S77C73v24Ev,
  (VTBL_ENTRY)&_ZN5S77C73v25Ev,
  (VTBL_ENTRY)&_ZN5S77C73v26Ev,
  (VTBL_ENTRY)&_ZN5S77C73v27Ev,
  (VTBL_ENTRY)&_ZN5S77C73v28Ev,
  (VTBL_ENTRY)&_ZN5S77C73v29Ev,
  (VTBL_ENTRY)&_ZN5S77C73v30Ev,
  (VTBL_ENTRY)&_ZN5S77C73v31Ev,
  (VTBL_ENTRY)&_ZN5S77C73v32Ev,
  (VTBL_ENTRY)&_ZN5S77C73v33Ev,
  (VTBL_ENTRY)&_ZN5S77C73v34Ev,
  (VTBL_ENTRY)&_ZN5S77C73v35Ev,
  (VTBL_ENTRY)&_ZN5S77C73v36Ev,
  (VTBL_ENTRY)&_ZN5S77C73v37Ev,
  (VTBL_ENTRY)&_ZN5S77C73v38Ev,
  (VTBL_ENTRY)&_ZN5S77C73v39Ev,
  (VTBL_ENTRY)&_ZN5S77C73v40Ev,
  (VTBL_ENTRY)&_ZN5S77C73v41Ev,
  (VTBL_ENTRY)&_ZN5S77C73v42Ev,
  (VTBL_ENTRY)&_ZN5S77C73v43Ev,
  (VTBL_ENTRY)&_ZN5S77C73v44Ev,
  (VTBL_ENTRY)&_ZN5S77C73v45Ev,
  (VTBL_ENTRY)&_ZN5S77C73v46Ev,
  (VTBL_ENTRY)&_ZN5S77C73v47Ev,
  (VTBL_ENTRY)&_ZN5S77C73v48Ev,
  (VTBL_ENTRY)&_ZN5S77C73v49Ev,
  (VTBL_ENTRY)&_ZN5S77C73v50Ev,
  (VTBL_ENTRY)&_ZN5S77C73v51Ev,
  (VTBL_ENTRY)&_ZN5S77C73v52Ev,
  (VTBL_ENTRY)&_ZN5S77C73v53Ev,
  (VTBL_ENTRY)&_ZN5S77C73v54Ev,
  (VTBL_ENTRY)&_ZN5S77C73v55Ev,
  (VTBL_ENTRY)&_ZN5S77C73v56Ev,
  (VTBL_ENTRY)&_ZN5S77C73v57Ev,
  (VTBL_ENTRY)&_ZN5S77C73v58Ev,
  (VTBL_ENTRY)&_ZN5S77C73v59Ev,
  (VTBL_ENTRY)&_ZN5S77C73v60Ev,
  (VTBL_ENTRY)&_ZN5S77C73v61Ev,
  (VTBL_ENTRY)&_ZN5S77C73v62Ev,
  (VTBL_ENTRY)&_ZN5S77C73v63Ev,
  (VTBL_ENTRY)&_ZN5S77C73v64Ev,
  (VTBL_ENTRY)&_ZN5S77C73v65Ev,
  (VTBL_ENTRY)&_ZN5S77C73v66Ev,
  (VTBL_ENTRY)&_ZN5S77C73v67Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v68Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v69Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v70Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v71Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v72Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v73Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v74Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v75Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v76Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v77Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v78Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v79Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v80Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v81Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v82Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v83Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v84Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v85Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v86Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v87Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v88Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v89Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v90Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v91Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v92Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v93Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v94Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v95Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v96Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v97Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v98Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v99Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v100Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v101Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v102Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v103Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v104Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v105Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v106Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v107Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v108Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v109Ev,
  (VTBL_ENTRY)&_ZN8S77C4_nt4v110Ev,
  (VTBL_ENTRY)&_ZN8S77C4_nt4v111Ev,
  (VTBL_ENTRY)&_ZN8S77C4_nt4v112Ev,
  (VTBL_ENTRY)&_ZN8S77C4_nt4v113Ev,
  (VTBL_ENTRY)&_ZN8S77C3_nt4v114Ev,
  (VTBL_ENTRY)&_ZN8S77C3_nt4v115Ev,
  (VTBL_ENTRY)&_ZN8S77C3_nt4v116Ev,
  (VTBL_ENTRY)&_ZN8S77C3_nt4v117Ev,
  (VTBL_ENTRY)&_ZN8S77C3_nt4v118Ev,
  (VTBL_ENTRY)&_ZN8S77C3_nt4v119Ev,
  (VTBL_ENTRY)&_ZN8S77C3_nt4v120Ev,
  (VTBL_ENTRY)&_ZN8S77C3_nt4v121Ev,
};
extern VTBL_ENTRY _ZTI8S77C3_nt[];
VTBL_ENTRY *P__ZTI8S77C3_nt = _ZTI8S77C3_nt; 
extern  VTBL_ENTRY _ZTV8S77C3_nt[];
Class_Descriptor cd_S77C3_nt = {  "S77C3_nt", // class name
  bases_S77C3_nt, 4,
  &(vtc_S77C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(304,228), // object size
  NSPAIRA(_ZTI8S77C3_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S77C3_nt),122, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  4, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

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


 S77C2 ::~S77C2(){ note_dtor("S77C2", this);}
void  S77C2 ::v122(){vfunc_called(this, "_ZN5S77C24v122Ev");}
void  S77C2 ::v123(){vfunc_called(this, "_ZN5S77C24v123Ev");}
S77C2 ::S77C2(){ note_ctor("S77C2", this);} // tgen

static void Test_S77C2()
{
  extern Class_Descriptor cd_S77C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(39,58)];
    init_test(&cd_S77C2, buf);
    S77C2 *dp, &lv = *(dp=new (buf) S77C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(304,228), "sizeof(S77C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S77C2)");
    check_base_class_offset(lv, (S77C7*)(S77C6_nt*)(S77C5_nt*)(S77C4_nt*)(S77C3_nt*), 0, "S77C2");
    check_base_class_offset(lv, (S77C6_nt*)(S77C5_nt*)(S77C4_nt*)(S77C3_nt*), 0, "S77C2");
    check_base_class_offset(lv, (S77C5_nt*)(S77C4_nt*)(S77C3_nt*), 0, "S77C2");
    check_base_class_offset(lv, (S77C4_nt*)(S77C3_nt*), 0, "S77C2");
    check_base_class_offset(lv, (S77C3_nt*), 0, "S77C2");
    test_class_info(&lv, &cd_S77C2);
    dp->~S77C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS77C2(Test_S77C2, "S77C2", ABISELECT(304,228));

#else // __cplusplus

extern void _ZN5S77C2C1Ev();
extern void _ZN5S77C2D1Ev();
Name_Map name_map_S77C2[] = {
  NSPAIR(_ZN5S77C2C1Ev),
  NSPAIR(_ZN5S77C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S77C7;
extern VTBL_ENTRY _ZTI5S77C7[];
extern  VTBL_ENTRY _ZTV5S77C7[];
extern Class_Descriptor cd_S77C6_nt;
extern VTBL_ENTRY _ZTI8S77C6_nt[];
extern  VTBL_ENTRY _ZTV8S77C6_nt[];
extern Class_Descriptor cd_S77C5_nt;
extern VTBL_ENTRY _ZTI8S77C5_nt[];
extern  VTBL_ENTRY _ZTV8S77C5_nt[];
extern Class_Descriptor cd_S77C4_nt;
extern VTBL_ENTRY _ZTI8S77C4_nt[];
extern  VTBL_ENTRY _ZTV8S77C4_nt[];
extern Class_Descriptor cd_S77C3_nt;
extern VTBL_ENTRY _ZTI8S77C3_nt[];
extern  VTBL_ENTRY _ZTV8S77C3_nt[];
static Base_Class bases_S77C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S77C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S77C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S77C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S77C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S77C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI5S77C2[];
extern void _ZN5S77C2D1Ev();
extern void _ZN5S77C2D0Ev();
extern void _ZN5S77C72v4Ev();
extern void _ZN5S77C72v5Ev();
extern void _ZN5S77C72v6Ev();
extern void _ZN5S77C72v7Ev();
extern void _ZN5S77C72v8Ev();
extern void _ZN5S77C72v9Ev();
extern void _ZN5S77C73v10Ev();
extern void _ZN5S77C73v11Ev();
extern void _ZN5S77C73v12Ev();
extern void _ZN5S77C73v13Ev();
extern void _ZN5S77C73v14Ev();
extern void _ZN5S77C73v15Ev();
extern void _ZN5S77C73v16Ev();
extern void _ZN5S77C73v17Ev();
extern void _ZN5S77C73v18Ev();
extern void _ZN5S77C73v19Ev();
extern void _ZN5S77C73v20Ev();
extern void _ZN5S77C73v21Ev();
extern void _ZN5S77C73v22Ev();
extern void _ZN5S77C73v23Ev();
extern void _ZN5S77C73v24Ev();
extern void _ZN5S77C73v25Ev();
extern void _ZN5S77C73v26Ev();
extern void _ZN5S77C73v27Ev();
extern void _ZN5S77C73v28Ev();
extern void _ZN5S77C73v29Ev();
extern void _ZN5S77C73v30Ev();
extern void _ZN5S77C73v31Ev();
extern void _ZN5S77C73v32Ev();
extern void _ZN5S77C73v33Ev();
extern void _ZN5S77C73v34Ev();
extern void _ZN5S77C73v35Ev();
extern void _ZN5S77C73v36Ev();
extern void _ZN5S77C73v37Ev();
extern void _ZN5S77C73v38Ev();
extern void _ZN5S77C73v39Ev();
extern void _ZN5S77C73v40Ev();
extern void _ZN5S77C73v41Ev();
extern void _ZN5S77C73v42Ev();
extern void _ZN5S77C73v43Ev();
extern void _ZN5S77C73v44Ev();
extern void _ZN5S77C73v45Ev();
extern void _ZN5S77C73v46Ev();
extern void _ZN5S77C73v47Ev();
extern void _ZN5S77C73v48Ev();
extern void _ZN5S77C73v49Ev();
extern void _ZN5S77C73v50Ev();
extern void _ZN5S77C73v51Ev();
extern void _ZN5S77C73v52Ev();
extern void _ZN5S77C73v53Ev();
extern void _ZN5S77C73v54Ev();
extern void _ZN5S77C73v55Ev();
extern void _ZN5S77C73v56Ev();
extern void _ZN5S77C73v57Ev();
extern void _ZN5S77C73v58Ev();
extern void _ZN5S77C73v59Ev();
extern void _ZN5S77C73v60Ev();
extern void _ZN5S77C73v61Ev();
extern void _ZN5S77C73v62Ev();
extern void _ZN5S77C73v63Ev();
extern void _ZN5S77C73v64Ev();
extern void _ZN5S77C73v65Ev();
extern void _ZN5S77C73v66Ev();
extern void _ZN5S77C73v67Ev();
extern void _ZN8S77C6_nt3v68Ev();
extern void _ZN8S77C6_nt3v69Ev();
extern void _ZN8S77C6_nt3v70Ev();
extern void _ZN8S77C6_nt3v71Ev();
extern void _ZN8S77C6_nt3v72Ev();
extern void _ZN8S77C6_nt3v73Ev();
extern void _ZN8S77C6_nt3v74Ev();
extern void _ZN8S77C6_nt3v75Ev();
extern void _ZN8S77C6_nt3v76Ev();
extern void _ZN8S77C6_nt3v77Ev();
extern void _ZN8S77C6_nt3v78Ev();
extern void _ZN8S77C6_nt3v79Ev();
extern void _ZN8S77C6_nt3v80Ev();
extern void _ZN8S77C6_nt3v81Ev();
extern void _ZN8S77C6_nt3v82Ev();
extern void _ZN8S77C6_nt3v83Ev();
extern void _ZN8S77C6_nt3v84Ev();
extern void _ZN8S77C6_nt3v85Ev();
extern void _ZN8S77C6_nt3v86Ev();
extern void _ZN8S77C6_nt3v87Ev();
extern void _ZN8S77C6_nt3v88Ev();
extern void _ZN8S77C6_nt3v89Ev();
extern void _ZN8S77C5_nt3v90Ev();
extern void _ZN8S77C5_nt3v91Ev();
extern void _ZN8S77C5_nt3v92Ev();
extern void _ZN8S77C5_nt3v93Ev();
extern void _ZN8S77C5_nt3v94Ev();
extern void _ZN8S77C5_nt3v95Ev();
extern void _ZN8S77C5_nt3v96Ev();
extern void _ZN8S77C5_nt3v97Ev();
extern void _ZN8S77C5_nt3v98Ev();
extern void _ZN8S77C5_nt3v99Ev();
extern void _ZN8S77C5_nt4v100Ev();
extern void _ZN8S77C5_nt4v101Ev();
extern void _ZN8S77C5_nt4v102Ev();
extern void _ZN8S77C5_nt4v103Ev();
extern void _ZN8S77C5_nt4v104Ev();
extern void _ZN8S77C5_nt4v105Ev();
extern void _ZN8S77C5_nt4v106Ev();
extern void _ZN8S77C5_nt4v107Ev();
extern void _ZN8S77C5_nt4v108Ev();
extern void _ZN8S77C5_nt4v109Ev();
extern void _ZN8S77C4_nt4v110Ev();
extern void _ZN8S77C4_nt4v111Ev();
extern void _ZN8S77C4_nt4v112Ev();
extern void _ZN8S77C4_nt4v113Ev();
extern void _ZN8S77C3_nt4v114Ev();
extern void _ZN8S77C3_nt4v115Ev();
extern void _ZN8S77C3_nt4v116Ev();
extern void _ZN8S77C3_nt4v117Ev();
extern void _ZN8S77C3_nt4v118Ev();
extern void _ZN8S77C3_nt4v119Ev();
extern void _ZN8S77C3_nt4v120Ev();
extern void _ZN8S77C3_nt4v121Ev();
extern void _ZN5S77C24v122Ev();
extern void _ZN5S77C24v123Ev();
static  VTBL_ENTRY vtc_S77C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI5S77C2[0]),
  (VTBL_ENTRY)&_ZN5S77C2D1Ev,
  (VTBL_ENTRY)&_ZN5S77C2D0Ev,
  (VTBL_ENTRY)&_ZN5S77C72v4Ev,
  (VTBL_ENTRY)&_ZN5S77C72v5Ev,
  (VTBL_ENTRY)&_ZN5S77C72v6Ev,
  (VTBL_ENTRY)&_ZN5S77C72v7Ev,
  (VTBL_ENTRY)&_ZN5S77C72v8Ev,
  (VTBL_ENTRY)&_ZN5S77C72v9Ev,
  (VTBL_ENTRY)&_ZN5S77C73v10Ev,
  (VTBL_ENTRY)&_ZN5S77C73v11Ev,
  (VTBL_ENTRY)&_ZN5S77C73v12Ev,
  (VTBL_ENTRY)&_ZN5S77C73v13Ev,
  (VTBL_ENTRY)&_ZN5S77C73v14Ev,
  (VTBL_ENTRY)&_ZN5S77C73v15Ev,
  (VTBL_ENTRY)&_ZN5S77C73v16Ev,
  (VTBL_ENTRY)&_ZN5S77C73v17Ev,
  (VTBL_ENTRY)&_ZN5S77C73v18Ev,
  (VTBL_ENTRY)&_ZN5S77C73v19Ev,
  (VTBL_ENTRY)&_ZN5S77C73v20Ev,
  (VTBL_ENTRY)&_ZN5S77C73v21Ev,
  (VTBL_ENTRY)&_ZN5S77C73v22Ev,
  (VTBL_ENTRY)&_ZN5S77C73v23Ev,
  (VTBL_ENTRY)&_ZN5S77C73v24Ev,
  (VTBL_ENTRY)&_ZN5S77C73v25Ev,
  (VTBL_ENTRY)&_ZN5S77C73v26Ev,
  (VTBL_ENTRY)&_ZN5S77C73v27Ev,
  (VTBL_ENTRY)&_ZN5S77C73v28Ev,
  (VTBL_ENTRY)&_ZN5S77C73v29Ev,
  (VTBL_ENTRY)&_ZN5S77C73v30Ev,
  (VTBL_ENTRY)&_ZN5S77C73v31Ev,
  (VTBL_ENTRY)&_ZN5S77C73v32Ev,
  (VTBL_ENTRY)&_ZN5S77C73v33Ev,
  (VTBL_ENTRY)&_ZN5S77C73v34Ev,
  (VTBL_ENTRY)&_ZN5S77C73v35Ev,
  (VTBL_ENTRY)&_ZN5S77C73v36Ev,
  (VTBL_ENTRY)&_ZN5S77C73v37Ev,
  (VTBL_ENTRY)&_ZN5S77C73v38Ev,
  (VTBL_ENTRY)&_ZN5S77C73v39Ev,
  (VTBL_ENTRY)&_ZN5S77C73v40Ev,
  (VTBL_ENTRY)&_ZN5S77C73v41Ev,
  (VTBL_ENTRY)&_ZN5S77C73v42Ev,
  (VTBL_ENTRY)&_ZN5S77C73v43Ev,
  (VTBL_ENTRY)&_ZN5S77C73v44Ev,
  (VTBL_ENTRY)&_ZN5S77C73v45Ev,
  (VTBL_ENTRY)&_ZN5S77C73v46Ev,
  (VTBL_ENTRY)&_ZN5S77C73v47Ev,
  (VTBL_ENTRY)&_ZN5S77C73v48Ev,
  (VTBL_ENTRY)&_ZN5S77C73v49Ev,
  (VTBL_ENTRY)&_ZN5S77C73v50Ev,
  (VTBL_ENTRY)&_ZN5S77C73v51Ev,
  (VTBL_ENTRY)&_ZN5S77C73v52Ev,
  (VTBL_ENTRY)&_ZN5S77C73v53Ev,
  (VTBL_ENTRY)&_ZN5S77C73v54Ev,
  (VTBL_ENTRY)&_ZN5S77C73v55Ev,
  (VTBL_ENTRY)&_ZN5S77C73v56Ev,
  (VTBL_ENTRY)&_ZN5S77C73v57Ev,
  (VTBL_ENTRY)&_ZN5S77C73v58Ev,
  (VTBL_ENTRY)&_ZN5S77C73v59Ev,
  (VTBL_ENTRY)&_ZN5S77C73v60Ev,
  (VTBL_ENTRY)&_ZN5S77C73v61Ev,
  (VTBL_ENTRY)&_ZN5S77C73v62Ev,
  (VTBL_ENTRY)&_ZN5S77C73v63Ev,
  (VTBL_ENTRY)&_ZN5S77C73v64Ev,
  (VTBL_ENTRY)&_ZN5S77C73v65Ev,
  (VTBL_ENTRY)&_ZN5S77C73v66Ev,
  (VTBL_ENTRY)&_ZN5S77C73v67Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v68Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v69Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v70Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v71Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v72Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v73Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v74Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v75Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v76Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v77Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v78Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v79Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v80Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v81Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v82Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v83Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v84Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v85Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v86Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v87Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v88Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v89Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v90Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v91Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v92Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v93Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v94Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v95Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v96Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v97Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v98Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v99Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v100Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v101Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v102Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v103Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v104Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v105Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v106Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v107Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v108Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v109Ev,
  (VTBL_ENTRY)&_ZN8S77C4_nt4v110Ev,
  (VTBL_ENTRY)&_ZN8S77C4_nt4v111Ev,
  (VTBL_ENTRY)&_ZN8S77C4_nt4v112Ev,
  (VTBL_ENTRY)&_ZN8S77C4_nt4v113Ev,
  (VTBL_ENTRY)&_ZN8S77C3_nt4v114Ev,
  (VTBL_ENTRY)&_ZN8S77C3_nt4v115Ev,
  (VTBL_ENTRY)&_ZN8S77C3_nt4v116Ev,
  (VTBL_ENTRY)&_ZN8S77C3_nt4v117Ev,
  (VTBL_ENTRY)&_ZN8S77C3_nt4v118Ev,
  (VTBL_ENTRY)&_ZN8S77C3_nt4v119Ev,
  (VTBL_ENTRY)&_ZN8S77C3_nt4v120Ev,
  (VTBL_ENTRY)&_ZN8S77C3_nt4v121Ev,
  (VTBL_ENTRY)&_ZN5S77C24v122Ev,
  (VTBL_ENTRY)&_ZN5S77C24v123Ev,
};
extern VTBL_ENTRY _ZTI5S77C2[];
extern  VTBL_ENTRY _ZTV5S77C2[];
Class_Descriptor cd_S77C2 = {  "S77C2", // class name
  bases_S77C2, 5,
  &(vtc_S77C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(304,228), // object size
  NSPAIRA(_ZTI5S77C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV5S77C2),124, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  5, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S77C1  : S77C2 {
  virtual  ~S77C1(); // _ZN5S77C1D1Ev
  virtual void  v1(); // _ZN5S77C12v1Ev
  virtual void  v2(); // _ZN5S77C12v2Ev
  virtual void  v3(); // _ZN5S77C12v3Ev
  S77C1(); // tgen
};
//SIG(1 S77C1) C1{ BC2{ BC3{ BC4{ BC5{ BC6{ BC7{ vd v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 Fi FL Fp[4] Fi[2] Fp FC8{ m Fi[2]} Fp[2]} vd v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 Fi[2] Fp Fi[2] FC9{ BC10{ BC11{ BC12{ m Fp Fi[2]}}}} FC9 FC13{ m} FC9 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[2]} vd v90 v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 v102 v103 v104 v105 v106 v107 v108 v109 Fi:1 Fi:1 Fi:1 FC14{ BC15{ BC12}} FC16{ BC17{ BC12}} FC18{ BC19{ BC12}} FC20{ BC21{ BC12}} Fi[3]} vd v110 v111 v112 v113 FC8 Fi:1 FC22{ BC23{ BC12}}} vd v114 v115 v116 v117 v118 v119 v120 v121 Fi Fi:1} vd v122 v123} vd v1 v2 v3}


 S77C1 ::~S77C1(){ note_dtor("S77C1", this);}
void  S77C1 ::v1(){vfunc_called(this, "_ZN5S77C12v1Ev");}
void  S77C1 ::v2(){vfunc_called(this, "_ZN5S77C12v2Ev");}
void  S77C1 ::v3(){vfunc_called(this, "_ZN5S77C12v3Ev");}
S77C1 ::S77C1(){ note_ctor("S77C1", this);} // tgen

static void Test_S77C1()
{
  extern Class_Descriptor cd_S77C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(39,58)];
    init_test(&cd_S77C1, buf);
    S77C1 *dp, &lv = *(dp=new (buf) S77C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(304,228), "sizeof(S77C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S77C1)");
    check_base_class_offset(lv, (S77C7*)(S77C6_nt*)(S77C5_nt*)(S77C4_nt*)(S77C3_nt*)(S77C2*), 0, "S77C1");
    check_base_class_offset(lv, (S77C6_nt*)(S77C5_nt*)(S77C4_nt*)(S77C3_nt*)(S77C2*), 0, "S77C1");
    check_base_class_offset(lv, (S77C5_nt*)(S77C4_nt*)(S77C3_nt*)(S77C2*), 0, "S77C1");
    check_base_class_offset(lv, (S77C4_nt*)(S77C3_nt*)(S77C2*), 0, "S77C1");
    check_base_class_offset(lv, (S77C3_nt*)(S77C2*), 0, "S77C1");
    check_base_class_offset(lv, (S77C2*), 0, "S77C1");
    test_class_info(&lv, &cd_S77C1);
    dp->~S77C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS77C1(Test_S77C1, "S77C1", ABISELECT(304,228));

#else // __cplusplus

extern void _ZN5S77C1C1Ev();
extern void _ZN5S77C1D1Ev();
Name_Map name_map_S77C1[] = {
  NSPAIR(_ZN5S77C1C1Ev),
  NSPAIR(_ZN5S77C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S77C7;
extern VTBL_ENTRY _ZTI5S77C7[];
extern  VTBL_ENTRY _ZTV5S77C7[];
extern Class_Descriptor cd_S77C6_nt;
extern VTBL_ENTRY _ZTI8S77C6_nt[];
extern  VTBL_ENTRY _ZTV8S77C6_nt[];
extern Class_Descriptor cd_S77C5_nt;
extern VTBL_ENTRY _ZTI8S77C5_nt[];
extern  VTBL_ENTRY _ZTV8S77C5_nt[];
extern Class_Descriptor cd_S77C4_nt;
extern VTBL_ENTRY _ZTI8S77C4_nt[];
extern  VTBL_ENTRY _ZTV8S77C4_nt[];
extern Class_Descriptor cd_S77C3_nt;
extern VTBL_ENTRY _ZTI8S77C3_nt[];
extern  VTBL_ENTRY _ZTV8S77C3_nt[];
extern Class_Descriptor cd_S77C2;
extern VTBL_ENTRY _ZTI5S77C2[];
extern  VTBL_ENTRY _ZTV5S77C2[];
static Base_Class bases_S77C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S77C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S77C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S77C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S77C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S77C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S77C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI5S77C1[];
extern void _ZN5S77C1D1Ev();
extern void _ZN5S77C1D0Ev();
extern void _ZN5S77C72v4Ev();
extern void _ZN5S77C72v5Ev();
extern void _ZN5S77C72v6Ev();
extern void _ZN5S77C72v7Ev();
extern void _ZN5S77C72v8Ev();
extern void _ZN5S77C72v9Ev();
extern void _ZN5S77C73v10Ev();
extern void _ZN5S77C73v11Ev();
extern void _ZN5S77C73v12Ev();
extern void _ZN5S77C73v13Ev();
extern void _ZN5S77C73v14Ev();
extern void _ZN5S77C73v15Ev();
extern void _ZN5S77C73v16Ev();
extern void _ZN5S77C73v17Ev();
extern void _ZN5S77C73v18Ev();
extern void _ZN5S77C73v19Ev();
extern void _ZN5S77C73v20Ev();
extern void _ZN5S77C73v21Ev();
extern void _ZN5S77C73v22Ev();
extern void _ZN5S77C73v23Ev();
extern void _ZN5S77C73v24Ev();
extern void _ZN5S77C73v25Ev();
extern void _ZN5S77C73v26Ev();
extern void _ZN5S77C73v27Ev();
extern void _ZN5S77C73v28Ev();
extern void _ZN5S77C73v29Ev();
extern void _ZN5S77C73v30Ev();
extern void _ZN5S77C73v31Ev();
extern void _ZN5S77C73v32Ev();
extern void _ZN5S77C73v33Ev();
extern void _ZN5S77C73v34Ev();
extern void _ZN5S77C73v35Ev();
extern void _ZN5S77C73v36Ev();
extern void _ZN5S77C73v37Ev();
extern void _ZN5S77C73v38Ev();
extern void _ZN5S77C73v39Ev();
extern void _ZN5S77C73v40Ev();
extern void _ZN5S77C73v41Ev();
extern void _ZN5S77C73v42Ev();
extern void _ZN5S77C73v43Ev();
extern void _ZN5S77C73v44Ev();
extern void _ZN5S77C73v45Ev();
extern void _ZN5S77C73v46Ev();
extern void _ZN5S77C73v47Ev();
extern void _ZN5S77C73v48Ev();
extern void _ZN5S77C73v49Ev();
extern void _ZN5S77C73v50Ev();
extern void _ZN5S77C73v51Ev();
extern void _ZN5S77C73v52Ev();
extern void _ZN5S77C73v53Ev();
extern void _ZN5S77C73v54Ev();
extern void _ZN5S77C73v55Ev();
extern void _ZN5S77C73v56Ev();
extern void _ZN5S77C73v57Ev();
extern void _ZN5S77C73v58Ev();
extern void _ZN5S77C73v59Ev();
extern void _ZN5S77C73v60Ev();
extern void _ZN5S77C73v61Ev();
extern void _ZN5S77C73v62Ev();
extern void _ZN5S77C73v63Ev();
extern void _ZN5S77C73v64Ev();
extern void _ZN5S77C73v65Ev();
extern void _ZN5S77C73v66Ev();
extern void _ZN5S77C73v67Ev();
extern void _ZN8S77C6_nt3v68Ev();
extern void _ZN8S77C6_nt3v69Ev();
extern void _ZN8S77C6_nt3v70Ev();
extern void _ZN8S77C6_nt3v71Ev();
extern void _ZN8S77C6_nt3v72Ev();
extern void _ZN8S77C6_nt3v73Ev();
extern void _ZN8S77C6_nt3v74Ev();
extern void _ZN8S77C6_nt3v75Ev();
extern void _ZN8S77C6_nt3v76Ev();
extern void _ZN8S77C6_nt3v77Ev();
extern void _ZN8S77C6_nt3v78Ev();
extern void _ZN8S77C6_nt3v79Ev();
extern void _ZN8S77C6_nt3v80Ev();
extern void _ZN8S77C6_nt3v81Ev();
extern void _ZN8S77C6_nt3v82Ev();
extern void _ZN8S77C6_nt3v83Ev();
extern void _ZN8S77C6_nt3v84Ev();
extern void _ZN8S77C6_nt3v85Ev();
extern void _ZN8S77C6_nt3v86Ev();
extern void _ZN8S77C6_nt3v87Ev();
extern void _ZN8S77C6_nt3v88Ev();
extern void _ZN8S77C6_nt3v89Ev();
extern void _ZN8S77C5_nt3v90Ev();
extern void _ZN8S77C5_nt3v91Ev();
extern void _ZN8S77C5_nt3v92Ev();
extern void _ZN8S77C5_nt3v93Ev();
extern void _ZN8S77C5_nt3v94Ev();
extern void _ZN8S77C5_nt3v95Ev();
extern void _ZN8S77C5_nt3v96Ev();
extern void _ZN8S77C5_nt3v97Ev();
extern void _ZN8S77C5_nt3v98Ev();
extern void _ZN8S77C5_nt3v99Ev();
extern void _ZN8S77C5_nt4v100Ev();
extern void _ZN8S77C5_nt4v101Ev();
extern void _ZN8S77C5_nt4v102Ev();
extern void _ZN8S77C5_nt4v103Ev();
extern void _ZN8S77C5_nt4v104Ev();
extern void _ZN8S77C5_nt4v105Ev();
extern void _ZN8S77C5_nt4v106Ev();
extern void _ZN8S77C5_nt4v107Ev();
extern void _ZN8S77C5_nt4v108Ev();
extern void _ZN8S77C5_nt4v109Ev();
extern void _ZN8S77C4_nt4v110Ev();
extern void _ZN8S77C4_nt4v111Ev();
extern void _ZN8S77C4_nt4v112Ev();
extern void _ZN8S77C4_nt4v113Ev();
extern void _ZN8S77C3_nt4v114Ev();
extern void _ZN8S77C3_nt4v115Ev();
extern void _ZN8S77C3_nt4v116Ev();
extern void _ZN8S77C3_nt4v117Ev();
extern void _ZN8S77C3_nt4v118Ev();
extern void _ZN8S77C3_nt4v119Ev();
extern void _ZN8S77C3_nt4v120Ev();
extern void _ZN8S77C3_nt4v121Ev();
extern void _ZN5S77C24v122Ev();
extern void _ZN5S77C24v123Ev();
extern void _ZN5S77C12v1Ev();
extern void _ZN5S77C12v2Ev();
extern void _ZN5S77C12v3Ev();
static  VTBL_ENTRY vtc_S77C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI5S77C1[0]),
  (VTBL_ENTRY)&_ZN5S77C1D1Ev,
  (VTBL_ENTRY)&_ZN5S77C1D0Ev,
  (VTBL_ENTRY)&_ZN5S77C72v4Ev,
  (VTBL_ENTRY)&_ZN5S77C72v5Ev,
  (VTBL_ENTRY)&_ZN5S77C72v6Ev,
  (VTBL_ENTRY)&_ZN5S77C72v7Ev,
  (VTBL_ENTRY)&_ZN5S77C72v8Ev,
  (VTBL_ENTRY)&_ZN5S77C72v9Ev,
  (VTBL_ENTRY)&_ZN5S77C73v10Ev,
  (VTBL_ENTRY)&_ZN5S77C73v11Ev,
  (VTBL_ENTRY)&_ZN5S77C73v12Ev,
  (VTBL_ENTRY)&_ZN5S77C73v13Ev,
  (VTBL_ENTRY)&_ZN5S77C73v14Ev,
  (VTBL_ENTRY)&_ZN5S77C73v15Ev,
  (VTBL_ENTRY)&_ZN5S77C73v16Ev,
  (VTBL_ENTRY)&_ZN5S77C73v17Ev,
  (VTBL_ENTRY)&_ZN5S77C73v18Ev,
  (VTBL_ENTRY)&_ZN5S77C73v19Ev,
  (VTBL_ENTRY)&_ZN5S77C73v20Ev,
  (VTBL_ENTRY)&_ZN5S77C73v21Ev,
  (VTBL_ENTRY)&_ZN5S77C73v22Ev,
  (VTBL_ENTRY)&_ZN5S77C73v23Ev,
  (VTBL_ENTRY)&_ZN5S77C73v24Ev,
  (VTBL_ENTRY)&_ZN5S77C73v25Ev,
  (VTBL_ENTRY)&_ZN5S77C73v26Ev,
  (VTBL_ENTRY)&_ZN5S77C73v27Ev,
  (VTBL_ENTRY)&_ZN5S77C73v28Ev,
  (VTBL_ENTRY)&_ZN5S77C73v29Ev,
  (VTBL_ENTRY)&_ZN5S77C73v30Ev,
  (VTBL_ENTRY)&_ZN5S77C73v31Ev,
  (VTBL_ENTRY)&_ZN5S77C73v32Ev,
  (VTBL_ENTRY)&_ZN5S77C73v33Ev,
  (VTBL_ENTRY)&_ZN5S77C73v34Ev,
  (VTBL_ENTRY)&_ZN5S77C73v35Ev,
  (VTBL_ENTRY)&_ZN5S77C73v36Ev,
  (VTBL_ENTRY)&_ZN5S77C73v37Ev,
  (VTBL_ENTRY)&_ZN5S77C73v38Ev,
  (VTBL_ENTRY)&_ZN5S77C73v39Ev,
  (VTBL_ENTRY)&_ZN5S77C73v40Ev,
  (VTBL_ENTRY)&_ZN5S77C73v41Ev,
  (VTBL_ENTRY)&_ZN5S77C73v42Ev,
  (VTBL_ENTRY)&_ZN5S77C73v43Ev,
  (VTBL_ENTRY)&_ZN5S77C73v44Ev,
  (VTBL_ENTRY)&_ZN5S77C73v45Ev,
  (VTBL_ENTRY)&_ZN5S77C73v46Ev,
  (VTBL_ENTRY)&_ZN5S77C73v47Ev,
  (VTBL_ENTRY)&_ZN5S77C73v48Ev,
  (VTBL_ENTRY)&_ZN5S77C73v49Ev,
  (VTBL_ENTRY)&_ZN5S77C73v50Ev,
  (VTBL_ENTRY)&_ZN5S77C73v51Ev,
  (VTBL_ENTRY)&_ZN5S77C73v52Ev,
  (VTBL_ENTRY)&_ZN5S77C73v53Ev,
  (VTBL_ENTRY)&_ZN5S77C73v54Ev,
  (VTBL_ENTRY)&_ZN5S77C73v55Ev,
  (VTBL_ENTRY)&_ZN5S77C73v56Ev,
  (VTBL_ENTRY)&_ZN5S77C73v57Ev,
  (VTBL_ENTRY)&_ZN5S77C73v58Ev,
  (VTBL_ENTRY)&_ZN5S77C73v59Ev,
  (VTBL_ENTRY)&_ZN5S77C73v60Ev,
  (VTBL_ENTRY)&_ZN5S77C73v61Ev,
  (VTBL_ENTRY)&_ZN5S77C73v62Ev,
  (VTBL_ENTRY)&_ZN5S77C73v63Ev,
  (VTBL_ENTRY)&_ZN5S77C73v64Ev,
  (VTBL_ENTRY)&_ZN5S77C73v65Ev,
  (VTBL_ENTRY)&_ZN5S77C73v66Ev,
  (VTBL_ENTRY)&_ZN5S77C73v67Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v68Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v69Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v70Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v71Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v72Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v73Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v74Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v75Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v76Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v77Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v78Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v79Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v80Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v81Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v82Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v83Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v84Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v85Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v86Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v87Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v88Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v89Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v90Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v91Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v92Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v93Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v94Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v95Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v96Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v97Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v98Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v99Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v100Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v101Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v102Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v103Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v104Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v105Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v106Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v107Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v108Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v109Ev,
  (VTBL_ENTRY)&_ZN8S77C4_nt4v110Ev,
  (VTBL_ENTRY)&_ZN8S77C4_nt4v111Ev,
  (VTBL_ENTRY)&_ZN8S77C4_nt4v112Ev,
  (VTBL_ENTRY)&_ZN8S77C4_nt4v113Ev,
  (VTBL_ENTRY)&_ZN8S77C3_nt4v114Ev,
  (VTBL_ENTRY)&_ZN8S77C3_nt4v115Ev,
  (VTBL_ENTRY)&_ZN8S77C3_nt4v116Ev,
  (VTBL_ENTRY)&_ZN8S77C3_nt4v117Ev,
  (VTBL_ENTRY)&_ZN8S77C3_nt4v118Ev,
  (VTBL_ENTRY)&_ZN8S77C3_nt4v119Ev,
  (VTBL_ENTRY)&_ZN8S77C3_nt4v120Ev,
  (VTBL_ENTRY)&_ZN8S77C3_nt4v121Ev,
  (VTBL_ENTRY)&_ZN5S77C24v122Ev,
  (VTBL_ENTRY)&_ZN5S77C24v123Ev,
  (VTBL_ENTRY)&_ZN5S77C12v1Ev,
  (VTBL_ENTRY)&_ZN5S77C12v2Ev,
  (VTBL_ENTRY)&_ZN5S77C12v3Ev,
};
extern VTBL_ENTRY _ZTI5S77C1[];
extern  VTBL_ENTRY _ZTV5S77C1[];
Class_Descriptor cd_S77C1 = {  "S77C1", // class name
  bases_S77C1, 6,
  &(vtc_S77C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(304,228), // object size
  NSPAIRA(_ZTI5S77C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV5S77C1),127, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  6, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S580C5  {
  int s580c5f0;
  __tsi64 s580c5f1;
  void *s580c5f2[4];
  int s580c5f3[2];
  void *s580c5f4;
  ::S40C9_nt s580c5f5;
  void *s580c5f6[2];
  virtual  ~S580C5(); // _ZN6S580C5D1Ev
  virtual void  v4(); // _ZN6S580C52v4Ev
  virtual void  v5(); // _ZN6S580C52v5Ev
  virtual void  v6(); // _ZN6S580C52v6Ev
  virtual void  v7(); // _ZN6S580C52v7Ev
  virtual void  v8(); // _ZN6S580C52v8Ev
  virtual void  v9(); // _ZN6S580C52v9Ev
  virtual void  v10(); // _ZN6S580C53v10Ev
  virtual void  v11(); // _ZN6S580C53v11Ev
  virtual void  v12(); // _ZN6S580C53v12Ev
  virtual void  v13(); // _ZN6S580C53v13Ev
  virtual void  v14(); // _ZN6S580C53v14Ev
  virtual void  v15(); // _ZN6S580C53v15Ev
  virtual void  v16(); // _ZN6S580C53v16Ev
  virtual void  v17(); // _ZN6S580C53v17Ev
  virtual void  v18(); // _ZN6S580C53v18Ev
  virtual void  v19(); // _ZN6S580C53v19Ev
  virtual void  v20(); // _ZN6S580C53v20Ev
  virtual void  v21(); // _ZN6S580C53v21Ev
  virtual void  v22(); // _ZN6S580C53v22Ev
  virtual void  v23(); // _ZN6S580C53v23Ev
  virtual void  v24(); // _ZN6S580C53v24Ev
  virtual void  v25(); // _ZN6S580C53v25Ev
  virtual void  v26(); // _ZN6S580C53v26Ev
  virtual void  v27(); // _ZN6S580C53v27Ev
  virtual void  v28(); // _ZN6S580C53v28Ev
  virtual void  v29(); // _ZN6S580C53v29Ev
  virtual void  v30(); // _ZN6S580C53v30Ev
  virtual void  v31(); // _ZN6S580C53v31Ev
  virtual void  v32(); // _ZN6S580C53v32Ev
  virtual void  v33(); // _ZN6S580C53v33Ev
  virtual void  v34(); // _ZN6S580C53v34Ev
  virtual void  v35(); // _ZN6S580C53v35Ev
  virtual void  v36(); // _ZN6S580C53v36Ev
  virtual void  v37(); // _ZN6S580C53v37Ev
  virtual void  v38(); // _ZN6S580C53v38Ev
  virtual void  v39(); // _ZN6S580C53v39Ev
  virtual void  v40(); // _ZN6S580C53v40Ev
  virtual void  v41(); // _ZN6S580C53v41Ev
  virtual void  v42(); // _ZN6S580C53v42Ev
  virtual void  v43(); // _ZN6S580C53v43Ev
  virtual void  v44(); // _ZN6S580C53v44Ev
  virtual void  v45(); // _ZN6S580C53v45Ev
  virtual void  v46(); // _ZN6S580C53v46Ev
  virtual void  v47(); // _ZN6S580C53v47Ev
  virtual void  v48(); // _ZN6S580C53v48Ev
  virtual void  v49(); // _ZN6S580C53v49Ev
  virtual void  v50(); // _ZN6S580C53v50Ev
  virtual void  v51(); // _ZN6S580C53v51Ev
  virtual void  v52(); // _ZN6S580C53v52Ev
  virtual void  v53(); // _ZN6S580C53v53Ev
  virtual void  v54(); // _ZN6S580C53v54Ev
  virtual void  v55(); // _ZN6S580C53v55Ev
  virtual void  v56(); // _ZN6S580C53v56Ev
  virtual void  v57(); // _ZN6S580C53v57Ev
  virtual void  v58(); // _ZN6S580C53v58Ev
  virtual void  v59(); // _ZN6S580C53v59Ev
  virtual void  v60(); // _ZN6S580C53v60Ev
  virtual void  v61(); // _ZN6S580C53v61Ev
  virtual void  v62(); // _ZN6S580C53v62Ev
  virtual void  v63(); // _ZN6S580C53v63Ev
  virtual void  v64(); // _ZN6S580C53v64Ev
  virtual void  v65(); // _ZN6S580C53v65Ev
  virtual void  v66(); // _ZN6S580C53v66Ev
  virtual void  v67(); // _ZN6S580C53v67Ev
  S580C5(); // tgen
};
//SIG(-1 S580C5) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 Fi FL Fp[4] Fi[2] Fp FC2{ m Fi[2]} Fp[2]}


 S580C5 ::~S580C5(){ note_dtor("S580C5", this);}
void  S580C5 ::v4(){vfunc_called(this, "_ZN6S580C52v4Ev");}
void  S580C5 ::v5(){vfunc_called(this, "_ZN6S580C52v5Ev");}
void  S580C5 ::v6(){vfunc_called(this, "_ZN6S580C52v6Ev");}
void  S580C5 ::v7(){vfunc_called(this, "_ZN6S580C52v7Ev");}
void  S580C5 ::v8(){vfunc_called(this, "_ZN6S580C52v8Ev");}
void  S580C5 ::v9(){vfunc_called(this, "_ZN6S580C52v9Ev");}
void  S580C5 ::v10(){vfunc_called(this, "_ZN6S580C53v10Ev");}
void  S580C5 ::v11(){vfunc_called(this, "_ZN6S580C53v11Ev");}
void  S580C5 ::v12(){vfunc_called(this, "_ZN6S580C53v12Ev");}
void  S580C5 ::v13(){vfunc_called(this, "_ZN6S580C53v13Ev");}
void  S580C5 ::v14(){vfunc_called(this, "_ZN6S580C53v14Ev");}
void  S580C5 ::v15(){vfunc_called(this, "_ZN6S580C53v15Ev");}
void  S580C5 ::v16(){vfunc_called(this, "_ZN6S580C53v16Ev");}
void  S580C5 ::v17(){vfunc_called(this, "_ZN6S580C53v17Ev");}
void  S580C5 ::v18(){vfunc_called(this, "_ZN6S580C53v18Ev");}
void  S580C5 ::v19(){vfunc_called(this, "_ZN6S580C53v19Ev");}
void  S580C5 ::v20(){vfunc_called(this, "_ZN6S580C53v20Ev");}
void  S580C5 ::v21(){vfunc_called(this, "_ZN6S580C53v21Ev");}
void  S580C5 ::v22(){vfunc_called(this, "_ZN6S580C53v22Ev");}
void  S580C5 ::v23(){vfunc_called(this, "_ZN6S580C53v23Ev");}
void  S580C5 ::v24(){vfunc_called(this, "_ZN6S580C53v24Ev");}
void  S580C5 ::v25(){vfunc_called(this, "_ZN6S580C53v25Ev");}
void  S580C5 ::v26(){vfunc_called(this, "_ZN6S580C53v26Ev");}
void  S580C5 ::v27(){vfunc_called(this, "_ZN6S580C53v27Ev");}
void  S580C5 ::v28(){vfunc_called(this, "_ZN6S580C53v28Ev");}
void  S580C5 ::v29(){vfunc_called(this, "_ZN6S580C53v29Ev");}
void  S580C5 ::v30(){vfunc_called(this, "_ZN6S580C53v30Ev");}
void  S580C5 ::v31(){vfunc_called(this, "_ZN6S580C53v31Ev");}
void  S580C5 ::v32(){vfunc_called(this, "_ZN6S580C53v32Ev");}
void  S580C5 ::v33(){vfunc_called(this, "_ZN6S580C53v33Ev");}
void  S580C5 ::v34(){vfunc_called(this, "_ZN6S580C53v34Ev");}
void  S580C5 ::v35(){vfunc_called(this, "_ZN6S580C53v35Ev");}
void  S580C5 ::v36(){vfunc_called(this, "_ZN6S580C53v36Ev");}
void  S580C5 ::v37(){vfunc_called(this, "_ZN6S580C53v37Ev");}
void  S580C5 ::v38(){vfunc_called(this, "_ZN6S580C53v38Ev");}
void  S580C5 ::v39(){vfunc_called(this, "_ZN6S580C53v39Ev");}
void  S580C5 ::v40(){vfunc_called(this, "_ZN6S580C53v40Ev");}
void  S580C5 ::v41(){vfunc_called(this, "_ZN6S580C53v41Ev");}
void  S580C5 ::v42(){vfunc_called(this, "_ZN6S580C53v42Ev");}
void  S580C5 ::v43(){vfunc_called(this, "_ZN6S580C53v43Ev");}
void  S580C5 ::v44(){vfunc_called(this, "_ZN6S580C53v44Ev");}
void  S580C5 ::v45(){vfunc_called(this, "_ZN6S580C53v45Ev");}
void  S580C5 ::v46(){vfunc_called(this, "_ZN6S580C53v46Ev");}
void  S580C5 ::v47(){vfunc_called(this, "_ZN6S580C53v47Ev");}
void  S580C5 ::v48(){vfunc_called(this, "_ZN6S580C53v48Ev");}
void  S580C5 ::v49(){vfunc_called(this, "_ZN6S580C53v49Ev");}
void  S580C5 ::v50(){vfunc_called(this, "_ZN6S580C53v50Ev");}
void  S580C5 ::v51(){vfunc_called(this, "_ZN6S580C53v51Ev");}
void  S580C5 ::v52(){vfunc_called(this, "_ZN6S580C53v52Ev");}
void  S580C5 ::v53(){vfunc_called(this, "_ZN6S580C53v53Ev");}
void  S580C5 ::v54(){vfunc_called(this, "_ZN6S580C53v54Ev");}
void  S580C5 ::v55(){vfunc_called(this, "_ZN6S580C53v55Ev");}
void  S580C5 ::v56(){vfunc_called(this, "_ZN6S580C53v56Ev");}
void  S580C5 ::v57(){vfunc_called(this, "_ZN6S580C53v57Ev");}
void  S580C5 ::v58(){vfunc_called(this, "_ZN6S580C53v58Ev");}
void  S580C5 ::v59(){vfunc_called(this, "_ZN6S580C53v59Ev");}
void  S580C5 ::v60(){vfunc_called(this, "_ZN6S580C53v60Ev");}
void  S580C5 ::v61(){vfunc_called(this, "_ZN6S580C53v61Ev");}
void  S580C5 ::v62(){vfunc_called(this, "_ZN6S580C53v62Ev");}
void  S580C5 ::v63(){vfunc_called(this, "_ZN6S580C53v63Ev");}
void  S580C5 ::v64(){vfunc_called(this, "_ZN6S580C53v64Ev");}
void  S580C5 ::v65(){vfunc_called(this, "_ZN6S580C53v65Ev");}
void  S580C5 ::v66(){vfunc_called(this, "_ZN6S580C53v66Ev");}
void  S580C5 ::v67(){vfunc_called(this, "_ZN6S580C53v67Ev");}
S580C5 ::S580C5(){ note_ctor("S580C5", this);} // tgen

static void Test_S580C5()
{
  extern Class_Descriptor cd_S580C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S580C5, buf);
    S580C5 *dp, &lv = *(dp=new (buf) S580C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S580C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S580C5)");
    check_field_offset(lv, s580c5f0, ABISELECT(8,4), "S580C5.s580c5f0");
    check_field_offset(lv, s580c5f1, ABISELECT(16,8), "S580C5.s580c5f1");
    check_field_offset(lv, s580c5f2, ABISELECT(24,16), "S580C5.s580c5f2");
    check_field_offset(lv, s580c5f3, ABISELECT(56,32), "S580C5.s580c5f3");
    check_field_offset(lv, s580c5f4, ABISELECT(64,40), "S580C5.s580c5f4");
    check_field_offset(lv, s580c5f5, ABISELECT(72,44), "S580C5.s580c5f5");
    check_field_offset(lv, s580c5f6, ABISELECT(80,52), "S580C5.s580c5f6");
    test_class_info(&lv, &cd_S580C5);
    dp->~S580C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS580C5(Test_S580C5, "S580C5", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN6S580C5C1Ev();
extern void _ZN6S580C5D1Ev();
Name_Map name_map_S580C5[] = {
  NSPAIR(_ZN6S580C5C1Ev),
  NSPAIR(_ZN6S580C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI6S580C5[];
extern void _ZN6S580C5D1Ev();
extern void _ZN6S580C5D0Ev();
extern void _ZN6S580C52v4Ev();
extern void _ZN6S580C52v5Ev();
extern void _ZN6S580C52v6Ev();
extern void _ZN6S580C52v7Ev();
extern void _ZN6S580C52v8Ev();
extern void _ZN6S580C52v9Ev();
extern void _ZN6S580C53v10Ev();
extern void _ZN6S580C53v11Ev();
extern void _ZN6S580C53v12Ev();
extern void _ZN6S580C53v13Ev();
extern void _ZN6S580C53v14Ev();
extern void _ZN6S580C53v15Ev();
extern void _ZN6S580C53v16Ev();
extern void _ZN6S580C53v17Ev();
extern void _ZN6S580C53v18Ev();
extern void _ZN6S580C53v19Ev();
extern void _ZN6S580C53v20Ev();
extern void _ZN6S580C53v21Ev();
extern void _ZN6S580C53v22Ev();
extern void _ZN6S580C53v23Ev();
extern void _ZN6S580C53v24Ev();
extern void _ZN6S580C53v25Ev();
extern void _ZN6S580C53v26Ev();
extern void _ZN6S580C53v27Ev();
extern void _ZN6S580C53v28Ev();
extern void _ZN6S580C53v29Ev();
extern void _ZN6S580C53v30Ev();
extern void _ZN6S580C53v31Ev();
extern void _ZN6S580C53v32Ev();
extern void _ZN6S580C53v33Ev();
extern void _ZN6S580C53v34Ev();
extern void _ZN6S580C53v35Ev();
extern void _ZN6S580C53v36Ev();
extern void _ZN6S580C53v37Ev();
extern void _ZN6S580C53v38Ev();
extern void _ZN6S580C53v39Ev();
extern void _ZN6S580C53v40Ev();
extern void _ZN6S580C53v41Ev();
extern void _ZN6S580C53v42Ev();
extern void _ZN6S580C53v43Ev();
extern void _ZN6S580C53v44Ev();
extern void _ZN6S580C53v45Ev();
extern void _ZN6S580C53v46Ev();
extern void _ZN6S580C53v47Ev();
extern void _ZN6S580C53v48Ev();
extern void _ZN6S580C53v49Ev();
extern void _ZN6S580C53v50Ev();
extern void _ZN6S580C53v51Ev();
extern void _ZN6S580C53v52Ev();
extern void _ZN6S580C53v53Ev();
extern void _ZN6S580C53v54Ev();
extern void _ZN6S580C53v55Ev();
extern void _ZN6S580C53v56Ev();
extern void _ZN6S580C53v57Ev();
extern void _ZN6S580C53v58Ev();
extern void _ZN6S580C53v59Ev();
extern void _ZN6S580C53v60Ev();
extern void _ZN6S580C53v61Ev();
extern void _ZN6S580C53v62Ev();
extern void _ZN6S580C53v63Ev();
extern void _ZN6S580C53v64Ev();
extern void _ZN6S580C53v65Ev();
extern void _ZN6S580C53v66Ev();
extern void _ZN6S580C53v67Ev();
static  VTBL_ENTRY vtc_S580C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S580C5[0]),
  (VTBL_ENTRY)&_ZN6S580C5D1Ev,
  (VTBL_ENTRY)&_ZN6S580C5D0Ev,
  (VTBL_ENTRY)&_ZN6S580C52v4Ev,
  (VTBL_ENTRY)&_ZN6S580C52v5Ev,
  (VTBL_ENTRY)&_ZN6S580C52v6Ev,
  (VTBL_ENTRY)&_ZN6S580C52v7Ev,
  (VTBL_ENTRY)&_ZN6S580C52v8Ev,
  (VTBL_ENTRY)&_ZN6S580C52v9Ev,
  (VTBL_ENTRY)&_ZN6S580C53v10Ev,
  (VTBL_ENTRY)&_ZN6S580C53v11Ev,
  (VTBL_ENTRY)&_ZN6S580C53v12Ev,
  (VTBL_ENTRY)&_ZN6S580C53v13Ev,
  (VTBL_ENTRY)&_ZN6S580C53v14Ev,
  (VTBL_ENTRY)&_ZN6S580C53v15Ev,
  (VTBL_ENTRY)&_ZN6S580C53v16Ev,
  (VTBL_ENTRY)&_ZN6S580C53v17Ev,
  (VTBL_ENTRY)&_ZN6S580C53v18Ev,
  (VTBL_ENTRY)&_ZN6S580C53v19Ev,
  (VTBL_ENTRY)&_ZN6S580C53v20Ev,
  (VTBL_ENTRY)&_ZN6S580C53v21Ev,
  (VTBL_ENTRY)&_ZN6S580C53v22Ev,
  (VTBL_ENTRY)&_ZN6S580C53v23Ev,
  (VTBL_ENTRY)&_ZN6S580C53v24Ev,
  (VTBL_ENTRY)&_ZN6S580C53v25Ev,
  (VTBL_ENTRY)&_ZN6S580C53v26Ev,
  (VTBL_ENTRY)&_ZN6S580C53v27Ev,
  (VTBL_ENTRY)&_ZN6S580C53v28Ev,
  (VTBL_ENTRY)&_ZN6S580C53v29Ev,
  (VTBL_ENTRY)&_ZN6S580C53v30Ev,
  (VTBL_ENTRY)&_ZN6S580C53v31Ev,
  (VTBL_ENTRY)&_ZN6S580C53v32Ev,
  (VTBL_ENTRY)&_ZN6S580C53v33Ev,
  (VTBL_ENTRY)&_ZN6S580C53v34Ev,
  (VTBL_ENTRY)&_ZN6S580C53v35Ev,
  (VTBL_ENTRY)&_ZN6S580C53v36Ev,
  (VTBL_ENTRY)&_ZN6S580C53v37Ev,
  (VTBL_ENTRY)&_ZN6S580C53v38Ev,
  (VTBL_ENTRY)&_ZN6S580C53v39Ev,
  (VTBL_ENTRY)&_ZN6S580C53v40Ev,
  (VTBL_ENTRY)&_ZN6S580C53v41Ev,
  (VTBL_ENTRY)&_ZN6S580C53v42Ev,
  (VTBL_ENTRY)&_ZN6S580C53v43Ev,
  (VTBL_ENTRY)&_ZN6S580C53v44Ev,
  (VTBL_ENTRY)&_ZN6S580C53v45Ev,
  (VTBL_ENTRY)&_ZN6S580C53v46Ev,
  (VTBL_ENTRY)&_ZN6S580C53v47Ev,
  (VTBL_ENTRY)&_ZN6S580C53v48Ev,
  (VTBL_ENTRY)&_ZN6S580C53v49Ev,
  (VTBL_ENTRY)&_ZN6S580C53v50Ev,
  (VTBL_ENTRY)&_ZN6S580C53v51Ev,
  (VTBL_ENTRY)&_ZN6S580C53v52Ev,
  (VTBL_ENTRY)&_ZN6S580C53v53Ev,
  (VTBL_ENTRY)&_ZN6S580C53v54Ev,
  (VTBL_ENTRY)&_ZN6S580C53v55Ev,
  (VTBL_ENTRY)&_ZN6S580C53v56Ev,
  (VTBL_ENTRY)&_ZN6S580C53v57Ev,
  (VTBL_ENTRY)&_ZN6S580C53v58Ev,
  (VTBL_ENTRY)&_ZN6S580C53v59Ev,
  (VTBL_ENTRY)&_ZN6S580C53v60Ev,
  (VTBL_ENTRY)&_ZN6S580C53v61Ev,
  (VTBL_ENTRY)&_ZN6S580C53v62Ev,
  (VTBL_ENTRY)&_ZN6S580C53v63Ev,
  (VTBL_ENTRY)&_ZN6S580C53v64Ev,
  (VTBL_ENTRY)&_ZN6S580C53v65Ev,
  (VTBL_ENTRY)&_ZN6S580C53v66Ev,
  (VTBL_ENTRY)&_ZN6S580C53v67Ev,
};
extern VTBL_ENTRY _ZTI6S580C5[];
extern  VTBL_ENTRY _ZTV6S580C5[];
Class_Descriptor cd_S580C5 = {  "S580C5", // class name
  0,0,//no base classes
  &(vtc_S580C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI6S580C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV6S580C5),68, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S580C4  : S580C5 {
  int s580c4f0[2];
  void *s580c4f1;
  int s580c4f2[2];
  ::S40C26_nt s580c4f3;
  ::S40C26_nt s580c4f4;
  ::S77C13_nt s580c4f5;
  ::S40C26_nt s580c4f6;
  unsigned int s580c4f7:1;
  unsigned int s580c4f8:1;
  unsigned int s580c4f9:1;
  unsigned int s580c4f10:1;
  unsigned int s580c4f11:1;
  int s580c4f12[2];
  virtual  ~S580C4(); // _ZN6S580C4D1Ev
  virtual void  v68(); // _ZN6S580C43v68Ev
  virtual void  v69(); // _ZN6S580C43v69Ev
  virtual void  v70(); // _ZN6S580C43v70Ev
  virtual void  v71(); // _ZN6S580C43v71Ev
  virtual void  v72(); // _ZN6S580C43v72Ev
  virtual void  v73(); // _ZN6S580C43v73Ev
  virtual void  v74(); // _ZN6S580C43v74Ev
  virtual void  v75(); // _ZN6S580C43v75Ev
  virtual void  v76(); // _ZN6S580C43v76Ev
  virtual void  v77(); // _ZN6S580C43v77Ev
  virtual void  v78(); // _ZN6S580C43v78Ev
  virtual void  v79(); // _ZN6S580C43v79Ev
  virtual void  v80(); // _ZN6S580C43v80Ev
  virtual void  v81(); // _ZN6S580C43v81Ev
  virtual void  v82(); // _ZN6S580C43v82Ev
  virtual void  v83(); // _ZN6S580C43v83Ev
  virtual void  v84(); // _ZN6S580C43v84Ev
  virtual void  v85(); // _ZN6S580C43v85Ev
  virtual void  v86(); // _ZN6S580C43v86Ev
  virtual void  v87(); // _ZN6S580C43v87Ev
  virtual void  v88(); // _ZN6S580C43v88Ev
  virtual void  v89(); // _ZN6S580C43v89Ev
  S580C4(); // tgen
};
//SIG(-1 S580C4) C1{ BC2{ vd v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 Fi FL Fp[4] Fi[2] Fp FC3{ m Fi[2]} Fp[2]} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 Fi[2] Fp Fi[2] FC4{ BC5{ BC6{ BC7{ m Fp Fi[2]}}}} FC4 FC8{ m} FC4 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[2]}


 S580C4 ::~S580C4(){ note_dtor("S580C4", this);}
void  S580C4 ::v68(){vfunc_called(this, "_ZN6S580C43v68Ev");}
void  S580C4 ::v69(){vfunc_called(this, "_ZN6S580C43v69Ev");}
void  S580C4 ::v70(){vfunc_called(this, "_ZN6S580C43v70Ev");}
void  S580C4 ::v71(){vfunc_called(this, "_ZN6S580C43v71Ev");}
void  S580C4 ::v72(){vfunc_called(this, "_ZN6S580C43v72Ev");}
void  S580C4 ::v73(){vfunc_called(this, "_ZN6S580C43v73Ev");}
void  S580C4 ::v74(){vfunc_called(this, "_ZN6S580C43v74Ev");}
void  S580C4 ::v75(){vfunc_called(this, "_ZN6S580C43v75Ev");}
void  S580C4 ::v76(){vfunc_called(this, "_ZN6S580C43v76Ev");}
void  S580C4 ::v77(){vfunc_called(this, "_ZN6S580C43v77Ev");}
void  S580C4 ::v78(){vfunc_called(this, "_ZN6S580C43v78Ev");}
void  S580C4 ::v79(){vfunc_called(this, "_ZN6S580C43v79Ev");}
void  S580C4 ::v80(){vfunc_called(this, "_ZN6S580C43v80Ev");}
void  S580C4 ::v81(){vfunc_called(this, "_ZN6S580C43v81Ev");}
void  S580C4 ::v82(){vfunc_called(this, "_ZN6S580C43v82Ev");}
void  S580C4 ::v83(){vfunc_called(this, "_ZN6S580C43v83Ev");}
void  S580C4 ::v84(){vfunc_called(this, "_ZN6S580C43v84Ev");}
void  S580C4 ::v85(){vfunc_called(this, "_ZN6S580C43v85Ev");}
void  S580C4 ::v86(){vfunc_called(this, "_ZN6S580C43v86Ev");}
void  S580C4 ::v87(){vfunc_called(this, "_ZN6S580C43v87Ev");}
void  S580C4 ::v88(){vfunc_called(this, "_ZN6S580C43v88Ev");}
void  S580C4 ::v89(){vfunc_called(this, "_ZN6S580C43v89Ev");}
S580C4 ::S580C4(){ note_ctor("S580C4", this);} // tgen

static void Test_S580C4()
{
  extern Class_Descriptor cd_S580C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(25,34)];
    init_test(&cd_S580C4, buf);
    S580C4 *dp, &lv = *(dp=new (buf) S580C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,132), "sizeof(S580C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S580C4)");
    check_base_class_offset(lv, (S580C5*), 0, "S580C4");
    check_field_offset(lv, s580c4f0, ABISELECT(96,60), "S580C4.s580c4f0");
    check_field_offset(lv, s580c4f1, ABISELECT(104,68), "S580C4.s580c4f1");
    check_field_offset(lv, s580c4f2, ABISELECT(112,72), "S580C4.s580c4f2");
    check_field_offset(lv, s580c4f3, ABISELECT(120,80), "S580C4.s580c4f3");
    check_field_offset(lv, s580c4f4, ABISELECT(136,92), "S580C4.s580c4f4");
    check_field_offset(lv, s580c4f5, ABISELECT(152,104), "S580C4.s580c4f5");
    check_field_offset(lv, s580c4f6, ABISELECT(160,108), "S580C4.s580c4f6");
    set_bf_and_test(lv, s580c4f7, ABISELECT(176,120), 0, 1, 1, "S580C4");
    set_bf_and_test(lv, s580c4f8, ABISELECT(176,120), 1, 1, 1, "S580C4");
    set_bf_and_test(lv, s580c4f9, ABISELECT(176,120), 2, 1, 1, "S580C4");
    set_bf_and_test(lv, s580c4f10, ABISELECT(176,120), 3, 1, 1, "S580C4");
    set_bf_and_test(lv, s580c4f11, ABISELECT(176,120), 4, 1, 1, "S580C4");
    check_field_offset(lv, s580c4f12, ABISELECT(180,124), "S580C4.s580c4f12");
    test_class_info(&lv, &cd_S580C4);
    dp->~S580C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS580C4(Test_S580C4, "S580C4", ABISELECT(192,132));

#else // __cplusplus

extern void _ZN6S580C4C1Ev();
extern void _ZN6S580C4D1Ev();
Name_Map name_map_S580C4[] = {
  NSPAIR(_ZN6S580C4C1Ev),
  NSPAIR(_ZN6S580C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S580C5;
extern VTBL_ENTRY _ZTI6S580C5[];
extern  VTBL_ENTRY _ZTV6S580C5[];
static Base_Class bases_S580C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S580C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S580C4[];
extern void _ZN6S580C4D1Ev();
extern void _ZN6S580C4D0Ev();
extern void _ZN6S580C52v4Ev();
extern void _ZN6S580C52v5Ev();
extern void _ZN6S580C52v6Ev();
extern void _ZN6S580C52v7Ev();
extern void _ZN6S580C52v8Ev();
extern void _ZN6S580C52v9Ev();
extern void _ZN6S580C53v10Ev();
extern void _ZN6S580C53v11Ev();
extern void _ZN6S580C53v12Ev();
extern void _ZN6S580C53v13Ev();
extern void _ZN6S580C53v14Ev();
extern void _ZN6S580C53v15Ev();
extern void _ZN6S580C53v16Ev();
extern void _ZN6S580C53v17Ev();
extern void _ZN6S580C53v18Ev();
extern void _ZN6S580C53v19Ev();
extern void _ZN6S580C53v20Ev();
extern void _ZN6S580C53v21Ev();
extern void _ZN6S580C53v22Ev();
extern void _ZN6S580C53v23Ev();
extern void _ZN6S580C53v24Ev();
extern void _ZN6S580C53v25Ev();
extern void _ZN6S580C53v26Ev();
extern void _ZN6S580C53v27Ev();
extern void _ZN6S580C53v28Ev();
extern void _ZN6S580C53v29Ev();
extern void _ZN6S580C53v30Ev();
extern void _ZN6S580C53v31Ev();
extern void _ZN6S580C53v32Ev();
extern void _ZN6S580C53v33Ev();
extern void _ZN6S580C53v34Ev();
extern void _ZN6S580C53v35Ev();
extern void _ZN6S580C53v36Ev();
extern void _ZN6S580C53v37Ev();
extern void _ZN6S580C53v38Ev();
extern void _ZN6S580C53v39Ev();
extern void _ZN6S580C53v40Ev();
extern void _ZN6S580C53v41Ev();
extern void _ZN6S580C53v42Ev();
extern void _ZN6S580C53v43Ev();
extern void _ZN6S580C53v44Ev();
extern void _ZN6S580C53v45Ev();
extern void _ZN6S580C53v46Ev();
extern void _ZN6S580C53v47Ev();
extern void _ZN6S580C53v48Ev();
extern void _ZN6S580C53v49Ev();
extern void _ZN6S580C53v50Ev();
extern void _ZN6S580C53v51Ev();
extern void _ZN6S580C53v52Ev();
extern void _ZN6S580C53v53Ev();
extern void _ZN6S580C53v54Ev();
extern void _ZN6S580C53v55Ev();
extern void _ZN6S580C53v56Ev();
extern void _ZN6S580C53v57Ev();
extern void _ZN6S580C53v58Ev();
extern void _ZN6S580C53v59Ev();
extern void _ZN6S580C53v60Ev();
extern void _ZN6S580C53v61Ev();
extern void _ZN6S580C53v62Ev();
extern void _ZN6S580C53v63Ev();
extern void _ZN6S580C53v64Ev();
extern void _ZN6S580C53v65Ev();
extern void _ZN6S580C53v66Ev();
extern void _ZN6S580C53v67Ev();
extern void _ZN6S580C43v68Ev();
extern void _ZN6S580C43v69Ev();
extern void _ZN6S580C43v70Ev();
extern void _ZN6S580C43v71Ev();
extern void _ZN6S580C43v72Ev();
extern void _ZN6S580C43v73Ev();
extern void _ZN6S580C43v74Ev();
extern void _ZN6S580C43v75Ev();
extern void _ZN6S580C43v76Ev();
extern void _ZN6S580C43v77Ev();
extern void _ZN6S580C43v78Ev();
extern void _ZN6S580C43v79Ev();
extern void _ZN6S580C43v80Ev();
extern void _ZN6S580C43v81Ev();
extern void _ZN6S580C43v82Ev();
extern void _ZN6S580C43v83Ev();
extern void _ZN6S580C43v84Ev();
extern void _ZN6S580C43v85Ev();
extern void _ZN6S580C43v86Ev();
extern void _ZN6S580C43v87Ev();
extern void _ZN6S580C43v88Ev();
extern void _ZN6S580C43v89Ev();
static  VTBL_ENTRY vtc_S580C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S580C4[0]),
  (VTBL_ENTRY)&_ZN6S580C4D1Ev,
  (VTBL_ENTRY)&_ZN6S580C4D0Ev,
  (VTBL_ENTRY)&_ZN6S580C52v4Ev,
  (VTBL_ENTRY)&_ZN6S580C52v5Ev,
  (VTBL_ENTRY)&_ZN6S580C52v6Ev,
  (VTBL_ENTRY)&_ZN6S580C52v7Ev,
  (VTBL_ENTRY)&_ZN6S580C52v8Ev,
  (VTBL_ENTRY)&_ZN6S580C52v9Ev,
  (VTBL_ENTRY)&_ZN6S580C53v10Ev,
  (VTBL_ENTRY)&_ZN6S580C53v11Ev,
  (VTBL_ENTRY)&_ZN6S580C53v12Ev,
  (VTBL_ENTRY)&_ZN6S580C53v13Ev,
  (VTBL_ENTRY)&_ZN6S580C53v14Ev,
  (VTBL_ENTRY)&_ZN6S580C53v15Ev,
  (VTBL_ENTRY)&_ZN6S580C53v16Ev,
  (VTBL_ENTRY)&_ZN6S580C53v17Ev,
  (VTBL_ENTRY)&_ZN6S580C53v18Ev,
  (VTBL_ENTRY)&_ZN6S580C53v19Ev,
  (VTBL_ENTRY)&_ZN6S580C53v20Ev,
  (VTBL_ENTRY)&_ZN6S580C53v21Ev,
  (VTBL_ENTRY)&_ZN6S580C53v22Ev,
  (VTBL_ENTRY)&_ZN6S580C53v23Ev,
  (VTBL_ENTRY)&_ZN6S580C53v24Ev,
  (VTBL_ENTRY)&_ZN6S580C53v25Ev,
  (VTBL_ENTRY)&_ZN6S580C53v26Ev,
  (VTBL_ENTRY)&_ZN6S580C53v27Ev,
  (VTBL_ENTRY)&_ZN6S580C53v28Ev,
  (VTBL_ENTRY)&_ZN6S580C53v29Ev,
  (VTBL_ENTRY)&_ZN6S580C53v30Ev,
  (VTBL_ENTRY)&_ZN6S580C53v31Ev,
  (VTBL_ENTRY)&_ZN6S580C53v32Ev,
  (VTBL_ENTRY)&_ZN6S580C53v33Ev,
  (VTBL_ENTRY)&_ZN6S580C53v34Ev,
  (VTBL_ENTRY)&_ZN6S580C53v35Ev,
  (VTBL_ENTRY)&_ZN6S580C53v36Ev,
  (VTBL_ENTRY)&_ZN6S580C53v37Ev,
  (VTBL_ENTRY)&_ZN6S580C53v38Ev,
  (VTBL_ENTRY)&_ZN6S580C53v39Ev,
  (VTBL_ENTRY)&_ZN6S580C53v40Ev,
  (VTBL_ENTRY)&_ZN6S580C53v41Ev,
  (VTBL_ENTRY)&_ZN6S580C53v42Ev,
  (VTBL_ENTRY)&_ZN6S580C53v43Ev,
  (VTBL_ENTRY)&_ZN6S580C53v44Ev,
  (VTBL_ENTRY)&_ZN6S580C53v45Ev,
  (VTBL_ENTRY)&_ZN6S580C53v46Ev,
  (VTBL_ENTRY)&_ZN6S580C53v47Ev,
  (VTBL_ENTRY)&_ZN6S580C53v48Ev,
  (VTBL_ENTRY)&_ZN6S580C53v49Ev,
  (VTBL_ENTRY)&_ZN6S580C53v50Ev,
  (VTBL_ENTRY)&_ZN6S580C53v51Ev,
  (VTBL_ENTRY)&_ZN6S580C53v52Ev,
  (VTBL_ENTRY)&_ZN6S580C53v53Ev,
  (VTBL_ENTRY)&_ZN6S580C53v54Ev,
  (VTBL_ENTRY)&_ZN6S580C53v55Ev,
  (VTBL_ENTRY)&_ZN6S580C53v56Ev,
  (VTBL_ENTRY)&_ZN6S580C53v57Ev,
  (VTBL_ENTRY)&_ZN6S580C53v58Ev,
  (VTBL_ENTRY)&_ZN6S580C53v59Ev,
  (VTBL_ENTRY)&_ZN6S580C53v60Ev,
  (VTBL_ENTRY)&_ZN6S580C53v61Ev,
  (VTBL_ENTRY)&_ZN6S580C53v62Ev,
  (VTBL_ENTRY)&_ZN6S580C53v63Ev,
  (VTBL_ENTRY)&_ZN6S580C53v64Ev,
  (VTBL_ENTRY)&_ZN6S580C53v65Ev,
  (VTBL_ENTRY)&_ZN6S580C53v66Ev,
  (VTBL_ENTRY)&_ZN6S580C53v67Ev,
  (VTBL_ENTRY)&_ZN6S580C43v68Ev,
  (VTBL_ENTRY)&_ZN6S580C43v69Ev,
  (VTBL_ENTRY)&_ZN6S580C43v70Ev,
  (VTBL_ENTRY)&_ZN6S580C43v71Ev,
  (VTBL_ENTRY)&_ZN6S580C43v72Ev,
  (VTBL_ENTRY)&_ZN6S580C43v73Ev,
  (VTBL_ENTRY)&_ZN6S580C43v74Ev,
  (VTBL_ENTRY)&_ZN6S580C43v75Ev,
  (VTBL_ENTRY)&_ZN6S580C43v76Ev,
  (VTBL_ENTRY)&_ZN6S580C43v77Ev,
  (VTBL_ENTRY)&_ZN6S580C43v78Ev,
  (VTBL_ENTRY)&_ZN6S580C43v79Ev,
  (VTBL_ENTRY)&_ZN6S580C43v80Ev,
  (VTBL_ENTRY)&_ZN6S580C43v81Ev,
  (VTBL_ENTRY)&_ZN6S580C43v82Ev,
  (VTBL_ENTRY)&_ZN6S580C43v83Ev,
  (VTBL_ENTRY)&_ZN6S580C43v84Ev,
  (VTBL_ENTRY)&_ZN6S580C43v85Ev,
  (VTBL_ENTRY)&_ZN6S580C43v86Ev,
  (VTBL_ENTRY)&_ZN6S580C43v87Ev,
  (VTBL_ENTRY)&_ZN6S580C43v88Ev,
  (VTBL_ENTRY)&_ZN6S580C43v89Ev,
};
extern VTBL_ENTRY _ZTI6S580C4[];
extern  VTBL_ENTRY _ZTV6S580C4[];
Class_Descriptor cd_S580C4 = {  "S580C4", // class name
  bases_S580C4, 1,
  &(vtc_S580C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(192,132), // object size
  NSPAIRA(_ZTI6S580C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S580C4),90, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S580C3  : S580C4 {
  unsigned int s580c3f0:1;
  unsigned int s580c3f1:1;
  unsigned int s580c3f2:1;
  ::S40C80 s580c3f3;
  ::S40C76 s580c3f4;
  ::S40C71 s580c3f5;
  ::S40C66 s580c3f6;
  int s580c3f7[3];
  virtual  ~S580C3(); // _ZN6S580C3D1Ev
  virtual void  v90(); // _ZN6S580C33v90Ev
  virtual void  v91(); // _ZN6S580C33v91Ev
  virtual void  v92(); // _ZN6S580C33v92Ev
  virtual void  v93(); // _ZN6S580C33v93Ev
  virtual void  v94(); // _ZN6S580C33v94Ev
  virtual void  v95(); // _ZN6S580C33v95Ev
  virtual void  v96(); // _ZN6S580C33v96Ev
  virtual void  v97(); // _ZN6S580C33v97Ev
  virtual void  v98(); // _ZN6S580C33v98Ev
  virtual void  v99(); // _ZN6S580C33v99Ev
  virtual void  v100(); // _ZN6S580C34v100Ev
  virtual void  v101(); // _ZN6S580C34v101Ev
  virtual void  v102(); // _ZN6S580C34v102Ev
  virtual void  v103(); // _ZN6S580C34v103Ev
  virtual void  v104(); // _ZN6S580C34v104Ev
  virtual void  v105(); // _ZN6S580C34v105Ev
  virtual void  v106(); // _ZN6S580C34v106Ev
  virtual void  v107(); // _ZN6S580C34v107Ev
  virtual void  v108(); // _ZN6S580C34v108Ev
  virtual void  v109(); // _ZN6S580C34v109Ev
  S580C3(); // tgen
};
//SIG(-1 S580C3) C1{ BC2{ BC3{ vd v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 Fi FL Fp[4] Fi[2] Fp FC4{ m Fi[2]} Fp[2]} vd v85 v86 v87 v88 v89 v90 v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 v102 v103 v104 v105 v106 Fi[2] Fp Fi[2] FC5{ BC6{ BC7{ BC8{ m Fp Fi[2]}}}} FC5 FC9{ m} FC5 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[2]} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 Fi:1 Fi:1 Fi:1 FC10{ BC11{ BC8}} FC12{ BC13{ BC8}} FC14{ BC15{ BC8}} FC16{ BC17{ BC8}} Fi[3]}


 S580C3 ::~S580C3(){ note_dtor("S580C3", this);}
void  S580C3 ::v90(){vfunc_called(this, "_ZN6S580C33v90Ev");}
void  S580C3 ::v91(){vfunc_called(this, "_ZN6S580C33v91Ev");}
void  S580C3 ::v92(){vfunc_called(this, "_ZN6S580C33v92Ev");}
void  S580C3 ::v93(){vfunc_called(this, "_ZN6S580C33v93Ev");}
void  S580C3 ::v94(){vfunc_called(this, "_ZN6S580C33v94Ev");}
void  S580C3 ::v95(){vfunc_called(this, "_ZN6S580C33v95Ev");}
void  S580C3 ::v96(){vfunc_called(this, "_ZN6S580C33v96Ev");}
void  S580C3 ::v97(){vfunc_called(this, "_ZN6S580C33v97Ev");}
void  S580C3 ::v98(){vfunc_called(this, "_ZN6S580C33v98Ev");}
void  S580C3 ::v99(){vfunc_called(this, "_ZN6S580C33v99Ev");}
void  S580C3 ::v100(){vfunc_called(this, "_ZN6S580C34v100Ev");}
void  S580C3 ::v101(){vfunc_called(this, "_ZN6S580C34v101Ev");}
void  S580C3 ::v102(){vfunc_called(this, "_ZN6S580C34v102Ev");}
void  S580C3 ::v103(){vfunc_called(this, "_ZN6S580C34v103Ev");}
void  S580C3 ::v104(){vfunc_called(this, "_ZN6S580C34v104Ev");}
void  S580C3 ::v105(){vfunc_called(this, "_ZN6S580C34v105Ev");}
void  S580C3 ::v106(){vfunc_called(this, "_ZN6S580C34v106Ev");}
void  S580C3 ::v107(){vfunc_called(this, "_ZN6S580C34v107Ev");}
void  S580C3 ::v108(){vfunc_called(this, "_ZN6S580C34v108Ev");}
void  S580C3 ::v109(){vfunc_called(this, "_ZN6S580C34v109Ev");}
S580C3 ::S580C3(){ note_ctor("S580C3", this);} // tgen

static void Test_S580C3()
{
  extern Class_Descriptor cd_S580C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(35,50)];
    init_test(&cd_S580C3, buf);
    S580C3 *dp, &lv = *(dp=new (buf) S580C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(272,196), "sizeof(S580C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S580C3)");
    check_base_class_offset(lv, (S580C5*)(S580C4*), 0, "S580C3");
    check_base_class_offset(lv, (S580C4*), 0, "S580C3");
    set_bf_and_test(lv, s580c3f0, ABISELECT(188,132), 0, 1, 1, "S580C3");
    set_bf_and_test(lv, s580c3f1, ABISELECT(188,132), 1, 1, 1, "S580C3");
    set_bf_and_test(lv, s580c3f2, ABISELECT(188,132), 2, 1, 1, "S580C3");
    check_field_offset(lv, s580c3f3, ABISELECT(192,136), "S580C3.s580c3f3");
    check_field_offset(lv, s580c3f4, ABISELECT(208,148), "S580C3.s580c3f4");
    check_field_offset(lv, s580c3f5, ABISELECT(224,160), "S580C3.s580c3f5");
    check_field_offset(lv, s580c3f6, ABISELECT(240,172), "S580C3.s580c3f6");
    check_field_offset(lv, s580c3f7, ABISELECT(256,184), "S580C3.s580c3f7");
    test_class_info(&lv, &cd_S580C3);
    dp->~S580C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS580C3(Test_S580C3, "S580C3", ABISELECT(272,196));

#else // __cplusplus

extern void _ZN6S580C3C1Ev();
extern void _ZN6S580C3D1Ev();
Name_Map name_map_S580C3[] = {
  NSPAIR(_ZN6S580C3C1Ev),
  NSPAIR(_ZN6S580C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S580C5;
extern VTBL_ENTRY _ZTI6S580C5[];
extern  VTBL_ENTRY _ZTV6S580C5[];
extern Class_Descriptor cd_S580C4;
extern VTBL_ENTRY _ZTI6S580C4[];
extern  VTBL_ENTRY _ZTV6S580C4[];
static Base_Class bases_S580C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S580C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S580C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S580C3[];
extern void _ZN6S580C3D1Ev();
extern void _ZN6S580C3D0Ev();
extern void _ZN6S580C52v4Ev();
extern void _ZN6S580C52v5Ev();
extern void _ZN6S580C52v6Ev();
extern void _ZN6S580C52v7Ev();
extern void _ZN6S580C52v8Ev();
extern void _ZN6S580C52v9Ev();
extern void _ZN6S580C53v10Ev();
extern void _ZN6S580C53v11Ev();
extern void _ZN6S580C53v12Ev();
extern void _ZN6S580C53v13Ev();
extern void _ZN6S580C53v14Ev();
extern void _ZN6S580C53v15Ev();
extern void _ZN6S580C53v16Ev();
extern void _ZN6S580C53v17Ev();
extern void _ZN6S580C53v18Ev();
extern void _ZN6S580C53v19Ev();
extern void _ZN6S580C53v20Ev();
extern void _ZN6S580C53v21Ev();
extern void _ZN6S580C53v22Ev();
extern void _ZN6S580C53v23Ev();
extern void _ZN6S580C53v24Ev();
extern void _ZN6S580C53v25Ev();
extern void _ZN6S580C53v26Ev();
extern void _ZN6S580C53v27Ev();
extern void _ZN6S580C53v28Ev();
extern void _ZN6S580C53v29Ev();
extern void _ZN6S580C53v30Ev();
extern void _ZN6S580C53v31Ev();
extern void _ZN6S580C53v32Ev();
extern void _ZN6S580C53v33Ev();
extern void _ZN6S580C53v34Ev();
extern void _ZN6S580C53v35Ev();
extern void _ZN6S580C53v36Ev();
extern void _ZN6S580C53v37Ev();
extern void _ZN6S580C53v38Ev();
extern void _ZN6S580C53v39Ev();
extern void _ZN6S580C53v40Ev();
extern void _ZN6S580C53v41Ev();
extern void _ZN6S580C53v42Ev();
extern void _ZN6S580C53v43Ev();
extern void _ZN6S580C53v44Ev();
extern void _ZN6S580C53v45Ev();
extern void _ZN6S580C53v46Ev();
extern void _ZN6S580C53v47Ev();
extern void _ZN6S580C53v48Ev();
extern void _ZN6S580C53v49Ev();
extern void _ZN6S580C53v50Ev();
extern void _ZN6S580C53v51Ev();
extern void _ZN6S580C53v52Ev();
extern void _ZN6S580C53v53Ev();
extern void _ZN6S580C53v54Ev();
extern void _ZN6S580C53v55Ev();
extern void _ZN6S580C53v56Ev();
extern void _ZN6S580C53v57Ev();
extern void _ZN6S580C53v58Ev();
extern void _ZN6S580C53v59Ev();
extern void _ZN6S580C53v60Ev();
extern void _ZN6S580C53v61Ev();
extern void _ZN6S580C53v62Ev();
extern void _ZN6S580C53v63Ev();
extern void _ZN6S580C53v64Ev();
extern void _ZN6S580C53v65Ev();
extern void _ZN6S580C53v66Ev();
extern void _ZN6S580C53v67Ev();
extern void _ZN6S580C43v68Ev();
extern void _ZN6S580C43v69Ev();
extern void _ZN6S580C43v70Ev();
extern void _ZN6S580C43v71Ev();
extern void _ZN6S580C43v72Ev();
extern void _ZN6S580C43v73Ev();
extern void _ZN6S580C43v74Ev();
extern void _ZN6S580C43v75Ev();
extern void _ZN6S580C43v76Ev();
extern void _ZN6S580C43v77Ev();
extern void _ZN6S580C43v78Ev();
extern void _ZN6S580C43v79Ev();
extern void _ZN6S580C43v80Ev();
extern void _ZN6S580C43v81Ev();
extern void _ZN6S580C43v82Ev();
extern void _ZN6S580C43v83Ev();
extern void _ZN6S580C43v84Ev();
extern void _ZN6S580C43v85Ev();
extern void _ZN6S580C43v86Ev();
extern void _ZN6S580C43v87Ev();
extern void _ZN6S580C43v88Ev();
extern void _ZN6S580C43v89Ev();
extern void _ZN6S580C33v90Ev();
extern void _ZN6S580C33v91Ev();
extern void _ZN6S580C33v92Ev();
extern void _ZN6S580C33v93Ev();
extern void _ZN6S580C33v94Ev();
extern void _ZN6S580C33v95Ev();
extern void _ZN6S580C33v96Ev();
extern void _ZN6S580C33v97Ev();
extern void _ZN6S580C33v98Ev();
extern void _ZN6S580C33v99Ev();
extern void _ZN6S580C34v100Ev();
extern void _ZN6S580C34v101Ev();
extern void _ZN6S580C34v102Ev();
extern void _ZN6S580C34v103Ev();
extern void _ZN6S580C34v104Ev();
extern void _ZN6S580C34v105Ev();
extern void _ZN6S580C34v106Ev();
extern void _ZN6S580C34v107Ev();
extern void _ZN6S580C34v108Ev();
extern void _ZN6S580C34v109Ev();
static  VTBL_ENTRY vtc_S580C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S580C3[0]),
  (VTBL_ENTRY)&_ZN6S580C3D1Ev,
  (VTBL_ENTRY)&_ZN6S580C3D0Ev,
  (VTBL_ENTRY)&_ZN6S580C52v4Ev,
  (VTBL_ENTRY)&_ZN6S580C52v5Ev,
  (VTBL_ENTRY)&_ZN6S580C52v6Ev,
  (VTBL_ENTRY)&_ZN6S580C52v7Ev,
  (VTBL_ENTRY)&_ZN6S580C52v8Ev,
  (VTBL_ENTRY)&_ZN6S580C52v9Ev,
  (VTBL_ENTRY)&_ZN6S580C53v10Ev,
  (VTBL_ENTRY)&_ZN6S580C53v11Ev,
  (VTBL_ENTRY)&_ZN6S580C53v12Ev,
  (VTBL_ENTRY)&_ZN6S580C53v13Ev,
  (VTBL_ENTRY)&_ZN6S580C53v14Ev,
  (VTBL_ENTRY)&_ZN6S580C53v15Ev,
  (VTBL_ENTRY)&_ZN6S580C53v16Ev,
  (VTBL_ENTRY)&_ZN6S580C53v17Ev,
  (VTBL_ENTRY)&_ZN6S580C53v18Ev,
  (VTBL_ENTRY)&_ZN6S580C53v19Ev,
  (VTBL_ENTRY)&_ZN6S580C53v20Ev,
  (VTBL_ENTRY)&_ZN6S580C53v21Ev,
  (VTBL_ENTRY)&_ZN6S580C53v22Ev,
  (VTBL_ENTRY)&_ZN6S580C53v23Ev,
  (VTBL_ENTRY)&_ZN6S580C53v24Ev,
  (VTBL_ENTRY)&_ZN6S580C53v25Ev,
  (VTBL_ENTRY)&_ZN6S580C53v26Ev,
  (VTBL_ENTRY)&_ZN6S580C53v27Ev,
  (VTBL_ENTRY)&_ZN6S580C53v28Ev,
  (VTBL_ENTRY)&_ZN6S580C53v29Ev,
  (VTBL_ENTRY)&_ZN6S580C53v30Ev,
  (VTBL_ENTRY)&_ZN6S580C53v31Ev,
  (VTBL_ENTRY)&_ZN6S580C53v32Ev,
  (VTBL_ENTRY)&_ZN6S580C53v33Ev,
  (VTBL_ENTRY)&_ZN6S580C53v34Ev,
  (VTBL_ENTRY)&_ZN6S580C53v35Ev,
  (VTBL_ENTRY)&_ZN6S580C53v36Ev,
  (VTBL_ENTRY)&_ZN6S580C53v37Ev,
  (VTBL_ENTRY)&_ZN6S580C53v38Ev,
  (VTBL_ENTRY)&_ZN6S580C53v39Ev,
  (VTBL_ENTRY)&_ZN6S580C53v40Ev,
  (VTBL_ENTRY)&_ZN6S580C53v41Ev,
  (VTBL_ENTRY)&_ZN6S580C53v42Ev,
  (VTBL_ENTRY)&_ZN6S580C53v43Ev,
  (VTBL_ENTRY)&_ZN6S580C53v44Ev,
  (VTBL_ENTRY)&_ZN6S580C53v45Ev,
  (VTBL_ENTRY)&_ZN6S580C53v46Ev,
  (VTBL_ENTRY)&_ZN6S580C53v47Ev,
  (VTBL_ENTRY)&_ZN6S580C53v48Ev,
  (VTBL_ENTRY)&_ZN6S580C53v49Ev,
  (VTBL_ENTRY)&_ZN6S580C53v50Ev,
  (VTBL_ENTRY)&_ZN6S580C53v51Ev,
  (VTBL_ENTRY)&_ZN6S580C53v52Ev,
  (VTBL_ENTRY)&_ZN6S580C53v53Ev,
  (VTBL_ENTRY)&_ZN6S580C53v54Ev,
  (VTBL_ENTRY)&_ZN6S580C53v55Ev,
  (VTBL_ENTRY)&_ZN6S580C53v56Ev,
  (VTBL_ENTRY)&_ZN6S580C53v57Ev,
  (VTBL_ENTRY)&_ZN6S580C53v58Ev,
  (VTBL_ENTRY)&_ZN6S580C53v59Ev,
  (VTBL_ENTRY)&_ZN6S580C53v60Ev,
  (VTBL_ENTRY)&_ZN6S580C53v61Ev,
  (VTBL_ENTRY)&_ZN6S580C53v62Ev,
  (VTBL_ENTRY)&_ZN6S580C53v63Ev,
  (VTBL_ENTRY)&_ZN6S580C53v64Ev,
  (VTBL_ENTRY)&_ZN6S580C53v65Ev,
  (VTBL_ENTRY)&_ZN6S580C53v66Ev,
  (VTBL_ENTRY)&_ZN6S580C53v67Ev,
  (VTBL_ENTRY)&_ZN6S580C43v68Ev,
  (VTBL_ENTRY)&_ZN6S580C43v69Ev,
  (VTBL_ENTRY)&_ZN6S580C43v70Ev,
  (VTBL_ENTRY)&_ZN6S580C43v71Ev,
  (VTBL_ENTRY)&_ZN6S580C43v72Ev,
  (VTBL_ENTRY)&_ZN6S580C43v73Ev,
  (VTBL_ENTRY)&_ZN6S580C43v74Ev,
  (VTBL_ENTRY)&_ZN6S580C43v75Ev,
  (VTBL_ENTRY)&_ZN6S580C43v76Ev,
  (VTBL_ENTRY)&_ZN6S580C43v77Ev,
  (VTBL_ENTRY)&_ZN6S580C43v78Ev,
  (VTBL_ENTRY)&_ZN6S580C43v79Ev,
  (VTBL_ENTRY)&_ZN6S580C43v80Ev,
  (VTBL_ENTRY)&_ZN6S580C43v81Ev,
  (VTBL_ENTRY)&_ZN6S580C43v82Ev,
  (VTBL_ENTRY)&_ZN6S580C43v83Ev,
  (VTBL_ENTRY)&_ZN6S580C43v84Ev,
  (VTBL_ENTRY)&_ZN6S580C43v85Ev,
  (VTBL_ENTRY)&_ZN6S580C43v86Ev,
  (VTBL_ENTRY)&_ZN6S580C43v87Ev,
  (VTBL_ENTRY)&_ZN6S580C43v88Ev,
  (VTBL_ENTRY)&_ZN6S580C43v89Ev,
  (VTBL_ENTRY)&_ZN6S580C33v90Ev,
  (VTBL_ENTRY)&_ZN6S580C33v91Ev,
  (VTBL_ENTRY)&_ZN6S580C33v92Ev,
  (VTBL_ENTRY)&_ZN6S580C33v93Ev,
  (VTBL_ENTRY)&_ZN6S580C33v94Ev,
  (VTBL_ENTRY)&_ZN6S580C33v95Ev,
  (VTBL_ENTRY)&_ZN6S580C33v96Ev,
  (VTBL_ENTRY)&_ZN6S580C33v97Ev,
  (VTBL_ENTRY)&_ZN6S580C33v98Ev,
  (VTBL_ENTRY)&_ZN6S580C33v99Ev,
  (VTBL_ENTRY)&_ZN6S580C34v100Ev,
  (VTBL_ENTRY)&_ZN6S580C34v101Ev,
  (VTBL_ENTRY)&_ZN6S580C34v102Ev,
  (VTBL_ENTRY)&_ZN6S580C34v103Ev,
  (VTBL_ENTRY)&_ZN6S580C34v104Ev,
  (VTBL_ENTRY)&_ZN6S580C34v105Ev,
  (VTBL_ENTRY)&_ZN6S580C34v106Ev,
  (VTBL_ENTRY)&_ZN6S580C34v107Ev,
  (VTBL_ENTRY)&_ZN6S580C34v108Ev,
  (VTBL_ENTRY)&_ZN6S580C34v109Ev,
};
extern VTBL_ENTRY _ZTI6S580C3[];
extern  VTBL_ENTRY _ZTV6S580C3[];
Class_Descriptor cd_S580C3 = {  "S580C3", // class name
  bases_S580C3, 2,
  &(vtc_S580C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(272,196), // object size
  NSPAIRA(_ZTI6S580C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S580C3),110, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

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


 S580C2 ::~S580C2(){ note_dtor("S580C2", this);}
void  S580C2 ::v110(){vfunc_called(this, "_ZN6S580C24v110Ev");}
void  S580C2 ::v111(){vfunc_called(this, "_ZN6S580C24v111Ev");}
void  S580C2 ::v112(){vfunc_called(this, "_ZN6S580C24v112Ev");}
void  S580C2 ::v113(){vfunc_called(this, "_ZN6S580C24v113Ev");}
S580C2 ::S580C2(){ note_ctor("S580C2", this);} // tgen

static void Test_S580C2()
{
  extern Class_Descriptor cd_S580C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(38,56)];
    init_test(&cd_S580C2, buf);
    S580C2 *dp, &lv = *(dp=new (buf) S580C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(296,220), "sizeof(S580C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S580C2)");
    check_base_class_offset(lv, (S580C5*)(S580C4*)(S580C3*), 0, "S580C2");
    check_base_class_offset(lv, (S580C4*)(S580C3*), 0, "S580C2");
    check_base_class_offset(lv, (S580C3*), 0, "S580C2");
    check_field_offset(lv, s580c2f0, ABISELECT(268,196), "S580C2.s580c2f0");
    set_bf_and_test(lv, s580c2f1, ABISELECT(276,204), 0, 1, 1, "S580C2");
    check_field_offset(lv, s580c2f2, ABISELECT(280,208), "S580C2.s580c2f2");
    test_class_info(&lv, &cd_S580C2);
    dp->~S580C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS580C2(Test_S580C2, "S580C2", ABISELECT(296,220));

#else // __cplusplus

extern void _ZN6S580C2C1Ev();
extern void _ZN6S580C2D1Ev();
Name_Map name_map_S580C2[] = {
  NSPAIR(_ZN6S580C2C1Ev),
  NSPAIR(_ZN6S580C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S580C5;
extern VTBL_ENTRY _ZTI6S580C5[];
extern  VTBL_ENTRY _ZTV6S580C5[];
extern Class_Descriptor cd_S580C4;
extern VTBL_ENTRY _ZTI6S580C4[];
extern  VTBL_ENTRY _ZTV6S580C4[];
extern Class_Descriptor cd_S580C3;
extern VTBL_ENTRY _ZTI6S580C3[];
extern  VTBL_ENTRY _ZTV6S580C3[];
static Base_Class bases_S580C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S580C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S580C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S580C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S580C2[];
extern void _ZN6S580C2D1Ev();
extern void _ZN6S580C2D0Ev();
extern void _ZN6S580C52v4Ev();
extern void _ZN6S580C52v5Ev();
extern void _ZN6S580C52v6Ev();
extern void _ZN6S580C52v7Ev();
extern void _ZN6S580C52v8Ev();
extern void _ZN6S580C52v9Ev();
extern void _ZN6S580C53v10Ev();
extern void _ZN6S580C53v11Ev();
extern void _ZN6S580C53v12Ev();
extern void _ZN6S580C53v13Ev();
extern void _ZN6S580C53v14Ev();
extern void _ZN6S580C53v15Ev();
extern void _ZN6S580C53v16Ev();
extern void _ZN6S580C53v17Ev();
extern void _ZN6S580C53v18Ev();
extern void _ZN6S580C53v19Ev();
extern void _ZN6S580C53v20Ev();
extern void _ZN6S580C53v21Ev();
extern void _ZN6S580C53v22Ev();
extern void _ZN6S580C53v23Ev();
extern void _ZN6S580C53v24Ev();
extern void _ZN6S580C53v25Ev();
extern void _ZN6S580C53v26Ev();
extern void _ZN6S580C53v27Ev();
extern void _ZN6S580C53v28Ev();
extern void _ZN6S580C53v29Ev();
extern void _ZN6S580C53v30Ev();
extern void _ZN6S580C53v31Ev();
extern void _ZN6S580C53v32Ev();
extern void _ZN6S580C53v33Ev();
extern void _ZN6S580C53v34Ev();
extern void _ZN6S580C53v35Ev();
extern void _ZN6S580C53v36Ev();
extern void _ZN6S580C53v37Ev();
extern void _ZN6S580C53v38Ev();
extern void _ZN6S580C53v39Ev();
extern void _ZN6S580C53v40Ev();
extern void _ZN6S580C53v41Ev();
extern void _ZN6S580C53v42Ev();
extern void _ZN6S580C53v43Ev();
extern void _ZN6S580C53v44Ev();
extern void _ZN6S580C53v45Ev();
extern void _ZN6S580C53v46Ev();
extern void _ZN6S580C53v47Ev();
extern void _ZN6S580C53v48Ev();
extern void _ZN6S580C53v49Ev();
extern void _ZN6S580C53v50Ev();
extern void _ZN6S580C53v51Ev();
extern void _ZN6S580C53v52Ev();
extern void _ZN6S580C53v53Ev();
extern void _ZN6S580C53v54Ev();
extern void _ZN6S580C53v55Ev();
extern void _ZN6S580C53v56Ev();
extern void _ZN6S580C53v57Ev();
extern void _ZN6S580C53v58Ev();
extern void _ZN6S580C53v59Ev();
extern void _ZN6S580C53v60Ev();
extern void _ZN6S580C53v61Ev();
extern void _ZN6S580C53v62Ev();
extern void _ZN6S580C53v63Ev();
extern void _ZN6S580C53v64Ev();
extern void _ZN6S580C53v65Ev();
extern void _ZN6S580C53v66Ev();
extern void _ZN6S580C53v67Ev();
extern void _ZN6S580C43v68Ev();
extern void _ZN6S580C43v69Ev();
extern void _ZN6S580C43v70Ev();
extern void _ZN6S580C43v71Ev();
extern void _ZN6S580C43v72Ev();
extern void _ZN6S580C43v73Ev();
extern void _ZN6S580C43v74Ev();
extern void _ZN6S580C43v75Ev();
extern void _ZN6S580C43v76Ev();
extern void _ZN6S580C43v77Ev();
extern void _ZN6S580C43v78Ev();
extern void _ZN6S580C43v79Ev();
extern void _ZN6S580C43v80Ev();
extern void _ZN6S580C43v81Ev();
extern void _ZN6S580C43v82Ev();
extern void _ZN6S580C43v83Ev();
extern void _ZN6S580C43v84Ev();
extern void _ZN6S580C43v85Ev();
extern void _ZN6S580C43v86Ev();
extern void _ZN6S580C43v87Ev();
extern void _ZN6S580C43v88Ev();
extern void _ZN6S580C43v89Ev();
extern void _ZN6S580C33v90Ev();
extern void _ZN6S580C33v91Ev();
extern void _ZN6S580C33v92Ev();
extern void _ZN6S580C33v93Ev();
extern void _ZN6S580C33v94Ev();
extern void _ZN6S580C33v95Ev();
extern void _ZN6S580C33v96Ev();
extern void _ZN6S580C33v97Ev();
extern void _ZN6S580C33v98Ev();
extern void _ZN6S580C33v99Ev();
extern void _ZN6S580C34v100Ev();
extern void _ZN6S580C34v101Ev();
extern void _ZN6S580C34v102Ev();
extern void _ZN6S580C34v103Ev();
extern void _ZN6S580C34v104Ev();
extern void _ZN6S580C34v105Ev();
extern void _ZN6S580C34v106Ev();
extern void _ZN6S580C34v107Ev();
extern void _ZN6S580C34v108Ev();
extern void _ZN6S580C34v109Ev();
extern void _ZN6S580C24v110Ev();
extern void _ZN6S580C24v111Ev();
extern void _ZN6S580C24v112Ev();
extern void _ZN6S580C24v113Ev();
static  VTBL_ENTRY vtc_S580C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S580C2[0]),
  (VTBL_ENTRY)&_ZN6S580C2D1Ev,
  (VTBL_ENTRY)&_ZN6S580C2D0Ev,
  (VTBL_ENTRY)&_ZN6S580C52v4Ev,
  (VTBL_ENTRY)&_ZN6S580C52v5Ev,
  (VTBL_ENTRY)&_ZN6S580C52v6Ev,
  (VTBL_ENTRY)&_ZN6S580C52v7Ev,
  (VTBL_ENTRY)&_ZN6S580C52v8Ev,
  (VTBL_ENTRY)&_ZN6S580C52v9Ev,
  (VTBL_ENTRY)&_ZN6S580C53v10Ev,
  (VTBL_ENTRY)&_ZN6S580C53v11Ev,
  (VTBL_ENTRY)&_ZN6S580C53v12Ev,
  (VTBL_ENTRY)&_ZN6S580C53v13Ev,
  (VTBL_ENTRY)&_ZN6S580C53v14Ev,
  (VTBL_ENTRY)&_ZN6S580C53v15Ev,
  (VTBL_ENTRY)&_ZN6S580C53v16Ev,
  (VTBL_ENTRY)&_ZN6S580C53v17Ev,
  (VTBL_ENTRY)&_ZN6S580C53v18Ev,
  (VTBL_ENTRY)&_ZN6S580C53v19Ev,
  (VTBL_ENTRY)&_ZN6S580C53v20Ev,
  (VTBL_ENTRY)&_ZN6S580C53v21Ev,
  (VTBL_ENTRY)&_ZN6S580C53v22Ev,
  (VTBL_ENTRY)&_ZN6S580C53v23Ev,
  (VTBL_ENTRY)&_ZN6S580C53v24Ev,
  (VTBL_ENTRY)&_ZN6S580C53v25Ev,
  (VTBL_ENTRY)&_ZN6S580C53v26Ev,
  (VTBL_ENTRY)&_ZN6S580C53v27Ev,
  (VTBL_ENTRY)&_ZN6S580C53v28Ev,
  (VTBL_ENTRY)&_ZN6S580C53v29Ev,
  (VTBL_ENTRY)&_ZN6S580C53v30Ev,
  (VTBL_ENTRY)&_ZN6S580C53v31Ev,
  (VTBL_ENTRY)&_ZN6S580C53v32Ev,
  (VTBL_ENTRY)&_ZN6S580C53v33Ev,
  (VTBL_ENTRY)&_ZN6S580C53v34Ev,
  (VTBL_ENTRY)&_ZN6S580C53v35Ev,
  (VTBL_ENTRY)&_ZN6S580C53v36Ev,
  (VTBL_ENTRY)&_ZN6S580C53v37Ev,
  (VTBL_ENTRY)&_ZN6S580C53v38Ev,
  (VTBL_ENTRY)&_ZN6S580C53v39Ev,
  (VTBL_ENTRY)&_ZN6S580C53v40Ev,
  (VTBL_ENTRY)&_ZN6S580C53v41Ev,
  (VTBL_ENTRY)&_ZN6S580C53v42Ev,
  (VTBL_ENTRY)&_ZN6S580C53v43Ev,
  (VTBL_ENTRY)&_ZN6S580C53v44Ev,
  (VTBL_ENTRY)&_ZN6S580C53v45Ev,
  (VTBL_ENTRY)&_ZN6S580C53v46Ev,
  (VTBL_ENTRY)&_ZN6S580C53v47Ev,
  (VTBL_ENTRY)&_ZN6S580C53v48Ev,
  (VTBL_ENTRY)&_ZN6S580C53v49Ev,
  (VTBL_ENTRY)&_ZN6S580C53v50Ev,
  (VTBL_ENTRY)&_ZN6S580C53v51Ev,
  (VTBL_ENTRY)&_ZN6S580C53v52Ev,
  (VTBL_ENTRY)&_ZN6S580C53v53Ev,
  (VTBL_ENTRY)&_ZN6S580C53v54Ev,
  (VTBL_ENTRY)&_ZN6S580C53v55Ev,
  (VTBL_ENTRY)&_ZN6S580C53v56Ev,
  (VTBL_ENTRY)&_ZN6S580C53v57Ev,
  (VTBL_ENTRY)&_ZN6S580C53v58Ev,
  (VTBL_ENTRY)&_ZN6S580C53v59Ev,
  (VTBL_ENTRY)&_ZN6S580C53v60Ev,
  (VTBL_ENTRY)&_ZN6S580C53v61Ev,
  (VTBL_ENTRY)&_ZN6S580C53v62Ev,
  (VTBL_ENTRY)&_ZN6S580C53v63Ev,
  (VTBL_ENTRY)&_ZN6S580C53v64Ev,
  (VTBL_ENTRY)&_ZN6S580C53v65Ev,
  (VTBL_ENTRY)&_ZN6S580C53v66Ev,
  (VTBL_ENTRY)&_ZN6S580C53v67Ev,
  (VTBL_ENTRY)&_ZN6S580C43v68Ev,
  (VTBL_ENTRY)&_ZN6S580C43v69Ev,
  (VTBL_ENTRY)&_ZN6S580C43v70Ev,
  (VTBL_ENTRY)&_ZN6S580C43v71Ev,
  (VTBL_ENTRY)&_ZN6S580C43v72Ev,
  (VTBL_ENTRY)&_ZN6S580C43v73Ev,
  (VTBL_ENTRY)&_ZN6S580C43v74Ev,
  (VTBL_ENTRY)&_ZN6S580C43v75Ev,
  (VTBL_ENTRY)&_ZN6S580C43v76Ev,
  (VTBL_ENTRY)&_ZN6S580C43v77Ev,
  (VTBL_ENTRY)&_ZN6S580C43v78Ev,
  (VTBL_ENTRY)&_ZN6S580C43v79Ev,
  (VTBL_ENTRY)&_ZN6S580C43v80Ev,
  (VTBL_ENTRY)&_ZN6S580C43v81Ev,
  (VTBL_ENTRY)&_ZN6S580C43v82Ev,
  (VTBL_ENTRY)&_ZN6S580C43v83Ev,
  (VTBL_ENTRY)&_ZN6S580C43v84Ev,
  (VTBL_ENTRY)&_ZN6S580C43v85Ev,
  (VTBL_ENTRY)&_ZN6S580C43v86Ev,
  (VTBL_ENTRY)&_ZN6S580C43v87Ev,
  (VTBL_ENTRY)&_ZN6S580C43v88Ev,
  (VTBL_ENTRY)&_ZN6S580C43v89Ev,
  (VTBL_ENTRY)&_ZN6S580C33v90Ev,
  (VTBL_ENTRY)&_ZN6S580C33v91Ev,
  (VTBL_ENTRY)&_ZN6S580C33v92Ev,
  (VTBL_ENTRY)&_ZN6S580C33v93Ev,
  (VTBL_ENTRY)&_ZN6S580C33v94Ev,
  (VTBL_ENTRY)&_ZN6S580C33v95Ev,
  (VTBL_ENTRY)&_ZN6S580C33v96Ev,
  (VTBL_ENTRY)&_ZN6S580C33v97Ev,
  (VTBL_ENTRY)&_ZN6S580C33v98Ev,
  (VTBL_ENTRY)&_ZN6S580C33v99Ev,
  (VTBL_ENTRY)&_ZN6S580C34v100Ev,
  (VTBL_ENTRY)&_ZN6S580C34v101Ev,
  (VTBL_ENTRY)&_ZN6S580C34v102Ev,
  (VTBL_ENTRY)&_ZN6S580C34v103Ev,
  (VTBL_ENTRY)&_ZN6S580C34v104Ev,
  (VTBL_ENTRY)&_ZN6S580C34v105Ev,
  (VTBL_ENTRY)&_ZN6S580C34v106Ev,
  (VTBL_ENTRY)&_ZN6S580C34v107Ev,
  (VTBL_ENTRY)&_ZN6S580C34v108Ev,
  (VTBL_ENTRY)&_ZN6S580C34v109Ev,
  (VTBL_ENTRY)&_ZN6S580C24v110Ev,
  (VTBL_ENTRY)&_ZN6S580C24v111Ev,
  (VTBL_ENTRY)&_ZN6S580C24v112Ev,
  (VTBL_ENTRY)&_ZN6S580C24v113Ev,
};
extern VTBL_ENTRY _ZTI6S580C2[];
extern  VTBL_ENTRY _ZTV6S580C2[];
Class_Descriptor cd_S580C2 = {  "S580C2", // class name
  bases_S580C2, 3,
  &(vtc_S580C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(296,220), // object size
  NSPAIRA(_ZTI6S580C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S580C2),114, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S580C22_nt  {
  int s580c22f0;
  char s580c22f1;
  int s580c22f2;
  void  mf580c22(); // _ZN10S580C22_nt8mf580c22Ev
};
//SIG(-1 S580C22_nt) C1{ m Fi Fc Fi}


void  S580C22_nt ::mf580c22(){}

//skip512 S580C22_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

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


 S580C1 ::~S580C1(){ note_dtor("S580C1", this);}
void  S580C1 ::v1(){vfunc_called(this, "_ZN6S580C12v1Ev");}
void  S580C1 ::v2(){vfunc_called(this, "_ZN6S580C12v2Ev");}
void  S580C1 ::v3(){vfunc_called(this, "_ZN6S580C12v3Ev");}
S580C1 ::S580C1(){ note_ctor("S580C1", this);} // tgen

static void Test_S580C1()
{
  extern Class_Descriptor cd_S580C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(41,60)];
    init_test(&cd_S580C1, buf);
    S580C1 *dp, &lv = *(dp=new (buf) S580C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,236), "sizeof(S580C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S580C1)");
    check_base_class_offset(lv, (S580C5*)(S580C4*)(S580C3*)(S580C2*), 0, "S580C1");
    check_base_class_offset(lv, (S580C4*)(S580C3*)(S580C2*), 0, "S580C1");
    check_base_class_offset(lv, (S580C3*)(S580C2*), 0, "S580C1");
    check_base_class_offset(lv, (S580C2*), 0, "S580C1");
    check_field_offset(lv, s580c1f0, ABISELECT(296,220), "S580C1.s580c1f0");
    check_field_offset(lv, s580c1f1, ABISELECT(304,224), "S580C1.s580c1f1");
    test_class_info(&lv, &cd_S580C1);
    dp->~S580C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS580C1(Test_S580C1, "S580C1", ABISELECT(320,236));

#else // __cplusplus

extern void _ZN6S580C1C1Ev();
extern void _ZN6S580C1D1Ev();
Name_Map name_map_S580C1[] = {
  NSPAIR(_ZN6S580C1C1Ev),
  NSPAIR(_ZN6S580C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S580C5;
extern VTBL_ENTRY _ZTI6S580C5[];
extern  VTBL_ENTRY _ZTV6S580C5[];
extern Class_Descriptor cd_S580C4;
extern VTBL_ENTRY _ZTI6S580C4[];
extern  VTBL_ENTRY _ZTV6S580C4[];
extern Class_Descriptor cd_S580C3;
extern VTBL_ENTRY _ZTI6S580C3[];
extern  VTBL_ENTRY _ZTV6S580C3[];
extern Class_Descriptor cd_S580C2;
extern VTBL_ENTRY _ZTI6S580C2[];
extern  VTBL_ENTRY _ZTV6S580C2[];
static Base_Class bases_S580C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S580C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S580C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S580C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S580C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S580C1[];
extern void _ZN6S580C1D1Ev();
extern void _ZN6S580C1D0Ev();
extern void _ZN6S580C52v4Ev();
extern void _ZN6S580C52v5Ev();
extern void _ZN6S580C52v6Ev();
extern void _ZN6S580C52v7Ev();
extern void _ZN6S580C52v8Ev();
extern void _ZN6S580C52v9Ev();
extern void _ZN6S580C53v10Ev();
extern void _ZN6S580C53v11Ev();
extern void _ZN6S580C53v12Ev();
extern void _ZN6S580C53v13Ev();
extern void _ZN6S580C53v14Ev();
extern void _ZN6S580C53v15Ev();
extern void _ZN6S580C53v16Ev();
extern void _ZN6S580C53v17Ev();
extern void _ZN6S580C53v18Ev();
extern void _ZN6S580C53v19Ev();
extern void _ZN6S580C53v20Ev();
extern void _ZN6S580C53v21Ev();
extern void _ZN6S580C53v22Ev();
extern void _ZN6S580C53v23Ev();
extern void _ZN6S580C53v24Ev();
extern void _ZN6S580C53v25Ev();
extern void _ZN6S580C53v26Ev();
extern void _ZN6S580C53v27Ev();
extern void _ZN6S580C53v28Ev();
extern void _ZN6S580C53v29Ev();
extern void _ZN6S580C53v30Ev();
extern void _ZN6S580C53v31Ev();
extern void _ZN6S580C53v32Ev();
extern void _ZN6S580C53v33Ev();
extern void _ZN6S580C53v34Ev();
extern void _ZN6S580C53v35Ev();
extern void _ZN6S580C53v36Ev();
extern void _ZN6S580C53v37Ev();
extern void _ZN6S580C53v38Ev();
extern void _ZN6S580C53v39Ev();
extern void _ZN6S580C53v40Ev();
extern void _ZN6S580C53v41Ev();
extern void _ZN6S580C53v42Ev();
extern void _ZN6S580C53v43Ev();
extern void _ZN6S580C53v44Ev();
extern void _ZN6S580C53v45Ev();
extern void _ZN6S580C53v46Ev();
extern void _ZN6S580C53v47Ev();
extern void _ZN6S580C53v48Ev();
extern void _ZN6S580C53v49Ev();
extern void _ZN6S580C53v50Ev();
extern void _ZN6S580C53v51Ev();
extern void _ZN6S580C53v52Ev();
extern void _ZN6S580C53v53Ev();
extern void _ZN6S580C53v54Ev();
extern void _ZN6S580C53v55Ev();
extern void _ZN6S580C53v56Ev();
extern void _ZN6S580C53v57Ev();
extern void _ZN6S580C53v58Ev();
extern void _ZN6S580C53v59Ev();
extern void _ZN6S580C53v60Ev();
extern void _ZN6S580C53v61Ev();
extern void _ZN6S580C53v62Ev();
extern void _ZN6S580C53v63Ev();
extern void _ZN6S580C53v64Ev();
extern void _ZN6S580C53v65Ev();
extern void _ZN6S580C53v66Ev();
extern void _ZN6S580C53v67Ev();
extern void _ZN6S580C43v68Ev();
extern void _ZN6S580C43v69Ev();
extern void _ZN6S580C43v70Ev();
extern void _ZN6S580C43v71Ev();
extern void _ZN6S580C43v72Ev();
extern void _ZN6S580C43v73Ev();
extern void _ZN6S580C43v74Ev();
extern void _ZN6S580C43v75Ev();
extern void _ZN6S580C43v76Ev();
extern void _ZN6S580C43v77Ev();
extern void _ZN6S580C43v78Ev();
extern void _ZN6S580C43v79Ev();
extern void _ZN6S580C43v80Ev();
extern void _ZN6S580C43v81Ev();
extern void _ZN6S580C43v82Ev();
extern void _ZN6S580C43v83Ev();
extern void _ZN6S580C43v84Ev();
extern void _ZN6S580C43v85Ev();
extern void _ZN6S580C43v86Ev();
extern void _ZN6S580C43v87Ev();
extern void _ZN6S580C43v88Ev();
extern void _ZN6S580C43v89Ev();
extern void _ZN6S580C33v90Ev();
extern void _ZN6S580C33v91Ev();
extern void _ZN6S580C33v92Ev();
extern void _ZN6S580C33v93Ev();
extern void _ZN6S580C33v94Ev();
extern void _ZN6S580C33v95Ev();
extern void _ZN6S580C33v96Ev();
extern void _ZN6S580C33v97Ev();
extern void _ZN6S580C33v98Ev();
extern void _ZN6S580C33v99Ev();
extern void _ZN6S580C34v100Ev();
extern void _ZN6S580C34v101Ev();
extern void _ZN6S580C34v102Ev();
extern void _ZN6S580C34v103Ev();
extern void _ZN6S580C34v104Ev();
extern void _ZN6S580C34v105Ev();
extern void _ZN6S580C34v106Ev();
extern void _ZN6S580C34v107Ev();
extern void _ZN6S580C34v108Ev();
extern void _ZN6S580C34v109Ev();
extern void _ZN6S580C24v110Ev();
extern void _ZN6S580C24v111Ev();
extern void _ZN6S580C24v112Ev();
extern void _ZN6S580C24v113Ev();
extern void _ZN6S580C12v1Ev();
extern void _ZN6S580C12v2Ev();
extern void _ZN6S580C12v3Ev();
static  VTBL_ENTRY vtc_S580C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S580C1[0]),
  (VTBL_ENTRY)&_ZN6S580C1D1Ev,
  (VTBL_ENTRY)&_ZN6S580C1D0Ev,
  (VTBL_ENTRY)&_ZN6S580C52v4Ev,
  (VTBL_ENTRY)&_ZN6S580C52v5Ev,
  (VTBL_ENTRY)&_ZN6S580C52v6Ev,
  (VTBL_ENTRY)&_ZN6S580C52v7Ev,
  (VTBL_ENTRY)&_ZN6S580C52v8Ev,
  (VTBL_ENTRY)&_ZN6S580C52v9Ev,
  (VTBL_ENTRY)&_ZN6S580C53v10Ev,
  (VTBL_ENTRY)&_ZN6S580C53v11Ev,
  (VTBL_ENTRY)&_ZN6S580C53v12Ev,
  (VTBL_ENTRY)&_ZN6S580C53v13Ev,
  (VTBL_ENTRY)&_ZN6S580C53v14Ev,
  (VTBL_ENTRY)&_ZN6S580C53v15Ev,
  (VTBL_ENTRY)&_ZN6S580C53v16Ev,
  (VTBL_ENTRY)&_ZN6S580C53v17Ev,
  (VTBL_ENTRY)&_ZN6S580C53v18Ev,
  (VTBL_ENTRY)&_ZN6S580C53v19Ev,
  (VTBL_ENTRY)&_ZN6S580C53v20Ev,
  (VTBL_ENTRY)&_ZN6S580C53v21Ev,
  (VTBL_ENTRY)&_ZN6S580C53v22Ev,
  (VTBL_ENTRY)&_ZN6S580C53v23Ev,
  (VTBL_ENTRY)&_ZN6S580C53v24Ev,
  (VTBL_ENTRY)&_ZN6S580C53v25Ev,
  (VTBL_ENTRY)&_ZN6S580C53v26Ev,
  (VTBL_ENTRY)&_ZN6S580C53v27Ev,
  (VTBL_ENTRY)&_ZN6S580C53v28Ev,
  (VTBL_ENTRY)&_ZN6S580C53v29Ev,
  (VTBL_ENTRY)&_ZN6S580C53v30Ev,
  (VTBL_ENTRY)&_ZN6S580C53v31Ev,
  (VTBL_ENTRY)&_ZN6S580C53v32Ev,
  (VTBL_ENTRY)&_ZN6S580C53v33Ev,
  (VTBL_ENTRY)&_ZN6S580C53v34Ev,
  (VTBL_ENTRY)&_ZN6S580C53v35Ev,
  (VTBL_ENTRY)&_ZN6S580C53v36Ev,
  (VTBL_ENTRY)&_ZN6S580C53v37Ev,
  (VTBL_ENTRY)&_ZN6S580C53v38Ev,
  (VTBL_ENTRY)&_ZN6S580C53v39Ev,
  (VTBL_ENTRY)&_ZN6S580C53v40Ev,
  (VTBL_ENTRY)&_ZN6S580C53v41Ev,
  (VTBL_ENTRY)&_ZN6S580C53v42Ev,
  (VTBL_ENTRY)&_ZN6S580C53v43Ev,
  (VTBL_ENTRY)&_ZN6S580C53v44Ev,
  (VTBL_ENTRY)&_ZN6S580C53v45Ev,
  (VTBL_ENTRY)&_ZN6S580C53v46Ev,
  (VTBL_ENTRY)&_ZN6S580C53v47Ev,
  (VTBL_ENTRY)&_ZN6S580C53v48Ev,
  (VTBL_ENTRY)&_ZN6S580C53v49Ev,
  (VTBL_ENTRY)&_ZN6S580C53v50Ev,
  (VTBL_ENTRY)&_ZN6S580C53v51Ev,
  (VTBL_ENTRY)&_ZN6S580C53v52Ev,
  (VTBL_ENTRY)&_ZN6S580C53v53Ev,
  (VTBL_ENTRY)&_ZN6S580C53v54Ev,
  (VTBL_ENTRY)&_ZN6S580C53v55Ev,
  (VTBL_ENTRY)&_ZN6S580C53v56Ev,
  (VTBL_ENTRY)&_ZN6S580C53v57Ev,
  (VTBL_ENTRY)&_ZN6S580C53v58Ev,
  (VTBL_ENTRY)&_ZN6S580C53v59Ev,
  (VTBL_ENTRY)&_ZN6S580C53v60Ev,
  (VTBL_ENTRY)&_ZN6S580C53v61Ev,
  (VTBL_ENTRY)&_ZN6S580C53v62Ev,
  (VTBL_ENTRY)&_ZN6S580C53v63Ev,
  (VTBL_ENTRY)&_ZN6S580C53v64Ev,
  (VTBL_ENTRY)&_ZN6S580C53v65Ev,
  (VTBL_ENTRY)&_ZN6S580C53v66Ev,
  (VTBL_ENTRY)&_ZN6S580C53v67Ev,
  (VTBL_ENTRY)&_ZN6S580C43v68Ev,
  (VTBL_ENTRY)&_ZN6S580C43v69Ev,
  (VTBL_ENTRY)&_ZN6S580C43v70Ev,
  (VTBL_ENTRY)&_ZN6S580C43v71Ev,
  (VTBL_ENTRY)&_ZN6S580C43v72Ev,
  (VTBL_ENTRY)&_ZN6S580C43v73Ev,
  (VTBL_ENTRY)&_ZN6S580C43v74Ev,
  (VTBL_ENTRY)&_ZN6S580C43v75Ev,
  (VTBL_ENTRY)&_ZN6S580C43v76Ev,
  (VTBL_ENTRY)&_ZN6S580C43v77Ev,
  (VTBL_ENTRY)&_ZN6S580C43v78Ev,
  (VTBL_ENTRY)&_ZN6S580C43v79Ev,
  (VTBL_ENTRY)&_ZN6S580C43v80Ev,
  (VTBL_ENTRY)&_ZN6S580C43v81Ev,
  (VTBL_ENTRY)&_ZN6S580C43v82Ev,
  (VTBL_ENTRY)&_ZN6S580C43v83Ev,
  (VTBL_ENTRY)&_ZN6S580C43v84Ev,
  (VTBL_ENTRY)&_ZN6S580C43v85Ev,
  (VTBL_ENTRY)&_ZN6S580C43v86Ev,
  (VTBL_ENTRY)&_ZN6S580C43v87Ev,
  (VTBL_ENTRY)&_ZN6S580C43v88Ev,
  (VTBL_ENTRY)&_ZN6S580C43v89Ev,
  (VTBL_ENTRY)&_ZN6S580C33v90Ev,
  (VTBL_ENTRY)&_ZN6S580C33v91Ev,
  (VTBL_ENTRY)&_ZN6S580C33v92Ev,
  (VTBL_ENTRY)&_ZN6S580C33v93Ev,
  (VTBL_ENTRY)&_ZN6S580C33v94Ev,
  (VTBL_ENTRY)&_ZN6S580C33v95Ev,
  (VTBL_ENTRY)&_ZN6S580C33v96Ev,
  (VTBL_ENTRY)&_ZN6S580C33v97Ev,
  (VTBL_ENTRY)&_ZN6S580C33v98Ev,
  (VTBL_ENTRY)&_ZN6S580C33v99Ev,
  (VTBL_ENTRY)&_ZN6S580C34v100Ev,
  (VTBL_ENTRY)&_ZN6S580C34v101Ev,
  (VTBL_ENTRY)&_ZN6S580C34v102Ev,
  (VTBL_ENTRY)&_ZN6S580C34v103Ev,
  (VTBL_ENTRY)&_ZN6S580C34v104Ev,
  (VTBL_ENTRY)&_ZN6S580C34v105Ev,
  (VTBL_ENTRY)&_ZN6S580C34v106Ev,
  (VTBL_ENTRY)&_ZN6S580C34v107Ev,
  (VTBL_ENTRY)&_ZN6S580C34v108Ev,
  (VTBL_ENTRY)&_ZN6S580C34v109Ev,
  (VTBL_ENTRY)&_ZN6S580C24v110Ev,
  (VTBL_ENTRY)&_ZN6S580C24v111Ev,
  (VTBL_ENTRY)&_ZN6S580C24v112Ev,
  (VTBL_ENTRY)&_ZN6S580C24v113Ev,
  (VTBL_ENTRY)&_ZN6S580C12v1Ev,
  (VTBL_ENTRY)&_ZN6S580C12v2Ev,
  (VTBL_ENTRY)&_ZN6S580C12v3Ev,
};
extern VTBL_ENTRY _ZTI6S580C1[];
extern  VTBL_ENTRY _ZTV6S580C1[];
Class_Descriptor cd_S580C1 = {  "S580C1", // class name
  bases_S580C1, 4,
  &(vtc_S580C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(320,236), // object size
  NSPAIRA(_ZTI6S580C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S580C1),117, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  4, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S567C5  {
  int s567c5f0;
  __tsi64 s567c5f1;
  void *s567c5f2[4];
  int s567c5f3[2];
  void *s567c5f4;
  ::S40C9_nt s567c5f5;
  void *s567c5f6[2];
  virtual  ~S567C5(); // _ZN6S567C5D1Ev
  virtual void  v4(); // _ZN6S567C52v4Ev
  virtual void  v5(); // _ZN6S567C52v5Ev
  virtual void  v6(); // _ZN6S567C52v6Ev
  virtual void  v7(); // _ZN6S567C52v7Ev
  virtual void  v8(); // _ZN6S567C52v8Ev
  virtual void  v9(); // _ZN6S567C52v9Ev
  virtual void  v10(); // _ZN6S567C53v10Ev
  virtual void  v11(); // _ZN6S567C53v11Ev
  virtual void  v12(); // _ZN6S567C53v12Ev
  virtual void  v13(); // _ZN6S567C53v13Ev
  virtual void  v14(); // _ZN6S567C53v14Ev
  virtual void  v15(); // _ZN6S567C53v15Ev
  virtual void  v16(); // _ZN6S567C53v16Ev
  virtual void  v17(); // _ZN6S567C53v17Ev
  virtual void  v18(); // _ZN6S567C53v18Ev
  virtual void  v19(); // _ZN6S567C53v19Ev
  virtual void  v20(); // _ZN6S567C53v20Ev
  virtual void  v21(); // _ZN6S567C53v21Ev
  virtual void  v22(); // _ZN6S567C53v22Ev
  virtual void  v23(); // _ZN6S567C53v23Ev
  virtual void  v24(); // _ZN6S567C53v24Ev
  virtual void  v25(); // _ZN6S567C53v25Ev
  virtual void  v26(); // _ZN6S567C53v26Ev
  virtual void  v27(); // _ZN6S567C53v27Ev
  virtual void  v28(); // _ZN6S567C53v28Ev
  virtual void  v29(); // _ZN6S567C53v29Ev
  virtual void  v30(); // _ZN6S567C53v30Ev
  virtual void  v31(); // _ZN6S567C53v31Ev
  virtual void  v32(); // _ZN6S567C53v32Ev
  virtual void  v33(); // _ZN6S567C53v33Ev
  virtual void  v34(); // _ZN6S567C53v34Ev
  virtual void  v35(); // _ZN6S567C53v35Ev
  virtual void  v36(); // _ZN6S567C53v36Ev
  virtual void  v37(); // _ZN6S567C53v37Ev
  virtual void  v38(); // _ZN6S567C53v38Ev
  virtual void  v39(); // _ZN6S567C53v39Ev
  virtual void  v40(); // _ZN6S567C53v40Ev
  virtual void  v41(); // _ZN6S567C53v41Ev
  virtual void  v42(); // _ZN6S567C53v42Ev
  virtual void  v43(); // _ZN6S567C53v43Ev
  virtual void  v44(); // _ZN6S567C53v44Ev
  virtual void  v45(); // _ZN6S567C53v45Ev
  virtual void  v46(); // _ZN6S567C53v46Ev
  virtual void  v47(); // _ZN6S567C53v47Ev
  virtual void  v48(); // _ZN6S567C53v48Ev
  virtual void  v49(); // _ZN6S567C53v49Ev
  virtual void  v50(); // _ZN6S567C53v50Ev
  virtual void  v51(); // _ZN6S567C53v51Ev
  virtual void  v52(); // _ZN6S567C53v52Ev
  virtual void  v53(); // _ZN6S567C53v53Ev
  virtual void  v54(); // _ZN6S567C53v54Ev
  virtual void  v55(); // _ZN6S567C53v55Ev
  virtual void  v56(); // _ZN6S567C53v56Ev
  virtual void  v57(); // _ZN6S567C53v57Ev
  virtual void  v58(); // _ZN6S567C53v58Ev
  virtual void  v59(); // _ZN6S567C53v59Ev
  virtual void  v60(); // _ZN6S567C53v60Ev
  virtual void  v61(); // _ZN6S567C53v61Ev
  virtual void  v62(); // _ZN6S567C53v62Ev
  virtual void  v63(); // _ZN6S567C53v63Ev
  virtual void  v64(); // _ZN6S567C53v64Ev
  virtual void  v65(); // _ZN6S567C53v65Ev
  virtual void  v66(); // _ZN6S567C53v66Ev
  virtual void  v67(); // _ZN6S567C53v67Ev
  S567C5(); // tgen
};
//SIG(-1 S567C5) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 Fi FL Fp[4] Fi[2] Fp FC2{ m Fi[2]} Fp[2]}


 S567C5 ::~S567C5(){ note_dtor("S567C5", this);}
void  S567C5 ::v4(){vfunc_called(this, "_ZN6S567C52v4Ev");}
void  S567C5 ::v5(){vfunc_called(this, "_ZN6S567C52v5Ev");}
void  S567C5 ::v6(){vfunc_called(this, "_ZN6S567C52v6Ev");}
void  S567C5 ::v7(){vfunc_called(this, "_ZN6S567C52v7Ev");}
void  S567C5 ::v8(){vfunc_called(this, "_ZN6S567C52v8Ev");}
void  S567C5 ::v9(){vfunc_called(this, "_ZN6S567C52v9Ev");}
void  S567C5 ::v10(){vfunc_called(this, "_ZN6S567C53v10Ev");}
void  S567C5 ::v11(){vfunc_called(this, "_ZN6S567C53v11Ev");}
void  S567C5 ::v12(){vfunc_called(this, "_ZN6S567C53v12Ev");}
void  S567C5 ::v13(){vfunc_called(this, "_ZN6S567C53v13Ev");}
void  S567C5 ::v14(){vfunc_called(this, "_ZN6S567C53v14Ev");}
void  S567C5 ::v15(){vfunc_called(this, "_ZN6S567C53v15Ev");}
void  S567C5 ::v16(){vfunc_called(this, "_ZN6S567C53v16Ev");}
void  S567C5 ::v17(){vfunc_called(this, "_ZN6S567C53v17Ev");}
void  S567C5 ::v18(){vfunc_called(this, "_ZN6S567C53v18Ev");}
void  S567C5 ::v19(){vfunc_called(this, "_ZN6S567C53v19Ev");}
void  S567C5 ::v20(){vfunc_called(this, "_ZN6S567C53v20Ev");}
void  S567C5 ::v21(){vfunc_called(this, "_ZN6S567C53v21Ev");}
void  S567C5 ::v22(){vfunc_called(this, "_ZN6S567C53v22Ev");}
void  S567C5 ::v23(){vfunc_called(this, "_ZN6S567C53v23Ev");}
void  S567C5 ::v24(){vfunc_called(this, "_ZN6S567C53v24Ev");}
void  S567C5 ::v25(){vfunc_called(this, "_ZN6S567C53v25Ev");}
void  S567C5 ::v26(){vfunc_called(this, "_ZN6S567C53v26Ev");}
void  S567C5 ::v27(){vfunc_called(this, "_ZN6S567C53v27Ev");}
void  S567C5 ::v28(){vfunc_called(this, "_ZN6S567C53v28Ev");}
void  S567C5 ::v29(){vfunc_called(this, "_ZN6S567C53v29Ev");}
void  S567C5 ::v30(){vfunc_called(this, "_ZN6S567C53v30Ev");}
void  S567C5 ::v31(){vfunc_called(this, "_ZN6S567C53v31Ev");}
void  S567C5 ::v32(){vfunc_called(this, "_ZN6S567C53v32Ev");}
void  S567C5 ::v33(){vfunc_called(this, "_ZN6S567C53v33Ev");}
void  S567C5 ::v34(){vfunc_called(this, "_ZN6S567C53v34Ev");}
void  S567C5 ::v35(){vfunc_called(this, "_ZN6S567C53v35Ev");}
void  S567C5 ::v36(){vfunc_called(this, "_ZN6S567C53v36Ev");}
void  S567C5 ::v37(){vfunc_called(this, "_ZN6S567C53v37Ev");}
void  S567C5 ::v38(){vfunc_called(this, "_ZN6S567C53v38Ev");}
void  S567C5 ::v39(){vfunc_called(this, "_ZN6S567C53v39Ev");}
void  S567C5 ::v40(){vfunc_called(this, "_ZN6S567C53v40Ev");}
void  S567C5 ::v41(){vfunc_called(this, "_ZN6S567C53v41Ev");}
void  S567C5 ::v42(){vfunc_called(this, "_ZN6S567C53v42Ev");}
void  S567C5 ::v43(){vfunc_called(this, "_ZN6S567C53v43Ev");}
void  S567C5 ::v44(){vfunc_called(this, "_ZN6S567C53v44Ev");}
void  S567C5 ::v45(){vfunc_called(this, "_ZN6S567C53v45Ev");}
void  S567C5 ::v46(){vfunc_called(this, "_ZN6S567C53v46Ev");}
void  S567C5 ::v47(){vfunc_called(this, "_ZN6S567C53v47Ev");}
void  S567C5 ::v48(){vfunc_called(this, "_ZN6S567C53v48Ev");}
void  S567C5 ::v49(){vfunc_called(this, "_ZN6S567C53v49Ev");}
void  S567C5 ::v50(){vfunc_called(this, "_ZN6S567C53v50Ev");}
void  S567C5 ::v51(){vfunc_called(this, "_ZN6S567C53v51Ev");}
void  S567C5 ::v52(){vfunc_called(this, "_ZN6S567C53v52Ev");}
void  S567C5 ::v53(){vfunc_called(this, "_ZN6S567C53v53Ev");}
void  S567C5 ::v54(){vfunc_called(this, "_ZN6S567C53v54Ev");}
void  S567C5 ::v55(){vfunc_called(this, "_ZN6S567C53v55Ev");}
void  S567C5 ::v56(){vfunc_called(this, "_ZN6S567C53v56Ev");}
void  S567C5 ::v57(){vfunc_called(this, "_ZN6S567C53v57Ev");}
void  S567C5 ::v58(){vfunc_called(this, "_ZN6S567C53v58Ev");}
void  S567C5 ::v59(){vfunc_called(this, "_ZN6S567C53v59Ev");}
void  S567C5 ::v60(){vfunc_called(this, "_ZN6S567C53v60Ev");}
void  S567C5 ::v61(){vfunc_called(this, "_ZN6S567C53v61Ev");}
void  S567C5 ::v62(){vfunc_called(this, "_ZN6S567C53v62Ev");}
void  S567C5 ::v63(){vfunc_called(this, "_ZN6S567C53v63Ev");}
void  S567C5 ::v64(){vfunc_called(this, "_ZN6S567C53v64Ev");}
void  S567C5 ::v65(){vfunc_called(this, "_ZN6S567C53v65Ev");}
void  S567C5 ::v66(){vfunc_called(this, "_ZN6S567C53v66Ev");}
void  S567C5 ::v67(){vfunc_called(this, "_ZN6S567C53v67Ev");}
S567C5 ::S567C5(){ note_ctor("S567C5", this);} // tgen

static void Test_S567C5()
{
  extern Class_Descriptor cd_S567C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S567C5, buf);
    S567C5 *dp, &lv = *(dp=new (buf) S567C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S567C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S567C5)");
    check_field_offset(lv, s567c5f0, ABISELECT(8,4), "S567C5.s567c5f0");
    check_field_offset(lv, s567c5f1, ABISELECT(16,8), "S567C5.s567c5f1");
    check_field_offset(lv, s567c5f2, ABISELECT(24,16), "S567C5.s567c5f2");
    check_field_offset(lv, s567c5f3, ABISELECT(56,32), "S567C5.s567c5f3");
    check_field_offset(lv, s567c5f4, ABISELECT(64,40), "S567C5.s567c5f4");
    check_field_offset(lv, s567c5f5, ABISELECT(72,44), "S567C5.s567c5f5");
    check_field_offset(lv, s567c5f6, ABISELECT(80,52), "S567C5.s567c5f6");
    test_class_info(&lv, &cd_S567C5);
    dp->~S567C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS567C5(Test_S567C5, "S567C5", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN6S567C5C1Ev();
extern void _ZN6S567C5D1Ev();
Name_Map name_map_S567C5[] = {
  NSPAIR(_ZN6S567C5C1Ev),
  NSPAIR(_ZN6S567C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI6S567C5[];
extern void _ZN6S567C5D1Ev();
extern void _ZN6S567C5D0Ev();
extern void _ZN6S567C52v4Ev();
extern void _ZN6S567C52v5Ev();
extern void _ZN6S567C52v6Ev();
extern void _ZN6S567C52v7Ev();
extern void _ZN6S567C52v8Ev();
extern void _ZN6S567C52v9Ev();
extern void _ZN6S567C53v10Ev();
extern void _ZN6S567C53v11Ev();
extern void _ZN6S567C53v12Ev();
extern void _ZN6S567C53v13Ev();
extern void _ZN6S567C53v14Ev();
extern void _ZN6S567C53v15Ev();
extern void _ZN6S567C53v16Ev();
extern void _ZN6S567C53v17Ev();
extern void _ZN6S567C53v18Ev();
extern void _ZN6S567C53v19Ev();
extern void _ZN6S567C53v20Ev();
extern void _ZN6S567C53v21Ev();
extern void _ZN6S567C53v22Ev();
extern void _ZN6S567C53v23Ev();
extern void _ZN6S567C53v24Ev();
extern void _ZN6S567C53v25Ev();
extern void _ZN6S567C53v26Ev();
extern void _ZN6S567C53v27Ev();
extern void _ZN6S567C53v28Ev();
extern void _ZN6S567C53v29Ev();
extern void _ZN6S567C53v30Ev();
extern void _ZN6S567C53v31Ev();
extern void _ZN6S567C53v32Ev();
extern void _ZN6S567C53v33Ev();
extern void _ZN6S567C53v34Ev();
extern void _ZN6S567C53v35Ev();
extern void _ZN6S567C53v36Ev();
extern void _ZN6S567C53v37Ev();
extern void _ZN6S567C53v38Ev();
extern void _ZN6S567C53v39Ev();
extern void _ZN6S567C53v40Ev();
extern void _ZN6S567C53v41Ev();
extern void _ZN6S567C53v42Ev();
extern void _ZN6S567C53v43Ev();
extern void _ZN6S567C53v44Ev();
extern void _ZN6S567C53v45Ev();
extern void _ZN6S567C53v46Ev();
extern void _ZN6S567C53v47Ev();
extern void _ZN6S567C53v48Ev();
extern void _ZN6S567C53v49Ev();
extern void _ZN6S567C53v50Ev();
extern void _ZN6S567C53v51Ev();
extern void _ZN6S567C53v52Ev();
extern void _ZN6S567C53v53Ev();
extern void _ZN6S567C53v54Ev();
extern void _ZN6S567C53v55Ev();
extern void _ZN6S567C53v56Ev();
extern void _ZN6S567C53v57Ev();
extern void _ZN6S567C53v58Ev();
extern void _ZN6S567C53v59Ev();
extern void _ZN6S567C53v60Ev();
extern void _ZN6S567C53v61Ev();
extern void _ZN6S567C53v62Ev();
extern void _ZN6S567C53v63Ev();
extern void _ZN6S567C53v64Ev();
extern void _ZN6S567C53v65Ev();
extern void _ZN6S567C53v66Ev();
extern void _ZN6S567C53v67Ev();
static  VTBL_ENTRY vtc_S567C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S567C5[0]),
  (VTBL_ENTRY)&_ZN6S567C5D1Ev,
  (VTBL_ENTRY)&_ZN6S567C5D0Ev,
  (VTBL_ENTRY)&_ZN6S567C52v4Ev,
  (VTBL_ENTRY)&_ZN6S567C52v5Ev,
  (VTBL_ENTRY)&_ZN6S567C52v6Ev,
  (VTBL_ENTRY)&_ZN6S567C52v7Ev,
  (VTBL_ENTRY)&_ZN6S567C52v8Ev,
  (VTBL_ENTRY)&_ZN6S567C52v9Ev,
  (VTBL_ENTRY)&_ZN6S567C53v10Ev,
  (VTBL_ENTRY)&_ZN6S567C53v11Ev,
  (VTBL_ENTRY)&_ZN6S567C53v12Ev,
  (VTBL_ENTRY)&_ZN6S567C53v13Ev,
  (VTBL_ENTRY)&_ZN6S567C53v14Ev,
  (VTBL_ENTRY)&_ZN6S567C53v15Ev,
  (VTBL_ENTRY)&_ZN6S567C53v16Ev,
  (VTBL_ENTRY)&_ZN6S567C53v17Ev,
  (VTBL_ENTRY)&_ZN6S567C53v18Ev,
  (VTBL_ENTRY)&_ZN6S567C53v19Ev,
  (VTBL_ENTRY)&_ZN6S567C53v20Ev,
  (VTBL_ENTRY)&_ZN6S567C53v21Ev,
  (VTBL_ENTRY)&_ZN6S567C53v22Ev,
  (VTBL_ENTRY)&_ZN6S567C53v23Ev,
  (VTBL_ENTRY)&_ZN6S567C53v24Ev,
  (VTBL_ENTRY)&_ZN6S567C53v25Ev,
  (VTBL_ENTRY)&_ZN6S567C53v26Ev,
  (VTBL_ENTRY)&_ZN6S567C53v27Ev,
  (VTBL_ENTRY)&_ZN6S567C53v28Ev,
  (VTBL_ENTRY)&_ZN6S567C53v29Ev,
  (VTBL_ENTRY)&_ZN6S567C53v30Ev,
  (VTBL_ENTRY)&_ZN6S567C53v31Ev,
  (VTBL_ENTRY)&_ZN6S567C53v32Ev,
  (VTBL_ENTRY)&_ZN6S567C53v33Ev,
  (VTBL_ENTRY)&_ZN6S567C53v34Ev,
  (VTBL_ENTRY)&_ZN6S567C53v35Ev,
  (VTBL_ENTRY)&_ZN6S567C53v36Ev,
  (VTBL_ENTRY)&_ZN6S567C53v37Ev,
  (VTBL_ENTRY)&_ZN6S567C53v38Ev,
  (VTBL_ENTRY)&_ZN6S567C53v39Ev,
  (VTBL_ENTRY)&_ZN6S567C53v40Ev,
  (VTBL_ENTRY)&_ZN6S567C53v41Ev,
  (VTBL_ENTRY)&_ZN6S567C53v42Ev,
  (VTBL_ENTRY)&_ZN6S567C53v43Ev,
  (VTBL_ENTRY)&_ZN6S567C53v44Ev,
  (VTBL_ENTRY)&_ZN6S567C53v45Ev,
  (VTBL_ENTRY)&_ZN6S567C53v46Ev,
  (VTBL_ENTRY)&_ZN6S567C53v47Ev,
  (VTBL_ENTRY)&_ZN6S567C53v48Ev,
  (VTBL_ENTRY)&_ZN6S567C53v49Ev,
  (VTBL_ENTRY)&_ZN6S567C53v50Ev,
  (VTBL_ENTRY)&_ZN6S567C53v51Ev,
  (VTBL_ENTRY)&_ZN6S567C53v52Ev,
  (VTBL_ENTRY)&_ZN6S567C53v53Ev,
  (VTBL_ENTRY)&_ZN6S567C53v54Ev,
  (VTBL_ENTRY)&_ZN6S567C53v55Ev,
  (VTBL_ENTRY)&_ZN6S567C53v56Ev,
  (VTBL_ENTRY)&_ZN6S567C53v57Ev,
  (VTBL_ENTRY)&_ZN6S567C53v58Ev,
  (VTBL_ENTRY)&_ZN6S567C53v59Ev,
  (VTBL_ENTRY)&_ZN6S567C53v60Ev,
  (VTBL_ENTRY)&_ZN6S567C53v61Ev,
  (VTBL_ENTRY)&_ZN6S567C53v62Ev,
  (VTBL_ENTRY)&_ZN6S567C53v63Ev,
  (VTBL_ENTRY)&_ZN6S567C53v64Ev,
  (VTBL_ENTRY)&_ZN6S567C53v65Ev,
  (VTBL_ENTRY)&_ZN6S567C53v66Ev,
  (VTBL_ENTRY)&_ZN6S567C53v67Ev,
};
extern VTBL_ENTRY _ZTI6S567C5[];
extern  VTBL_ENTRY _ZTV6S567C5[];
Class_Descriptor cd_S567C5 = {  "S567C5", // class name
  0,0,//no base classes
  &(vtc_S567C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI6S567C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV6S567C5),68, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S567C12_nt  {
  ::S40C35_nt s567c12f0;
  ::S40C18_nt s567c12f1;
  int s567c12f2;
  void  mf567c12(); // _ZN10S567C12_nt8mf567c12Ev
};
//SIG(-1 S567C12_nt) C1{ m FC2{ m Fi[4]} FC3{ m Fi[3]} Fi}


void  S567C12_nt ::mf567c12(){}

//skip512 S567C12_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S567C4_nt  : S567C5 {
  void *s567c4f0;
  ::S40C80 s567c4f1;
  ::S40C9_nt s567c4f2;
  ::S40C76 s567c4f3;
  ::S567C12_nt s567c4f4;
  int s567c4f5;
  unsigned int s567c4f6:1;
  unsigned int s567c4f7:1;
  unsigned int s567c4f8:1;
  unsigned int s567c4f9:1;
  int s567c4f10[11];
  virtual  ~S567C4_nt(); // _ZN9S567C4_ntD1Ev
  virtual void  v68(); // _ZN9S567C4_nt3v68Ev
  virtual void  v69(); // _ZN9S567C4_nt3v69Ev
  virtual void  v70(); // _ZN9S567C4_nt3v70Ev
  virtual void  v71(); // _ZN9S567C4_nt3v71Ev
  virtual void  v72(); // _ZN9S567C4_nt3v72Ev
  virtual void  v73(); // _ZN9S567C4_nt3v73Ev
  virtual void  v74(); // _ZN9S567C4_nt3v74Ev
  virtual void  v75(); // _ZN9S567C4_nt3v75Ev
  virtual void  v76(); // _ZN9S567C4_nt3v76Ev
  virtual void  v77(); // _ZN9S567C4_nt3v77Ev
  virtual void  v78(); // _ZN9S567C4_nt3v78Ev
  virtual void  v79(); // _ZN9S567C4_nt3v79Ev
  virtual void  v80(); // _ZN9S567C4_nt3v80Ev
  virtual void  v81(); // _ZN9S567C4_nt3v81Ev
  virtual void  v82(); // _ZN9S567C4_nt3v82Ev
  virtual void  v83(); // _ZN9S567C4_nt3v83Ev
  virtual void  v84(); // _ZN9S567C4_nt3v84Ev
  virtual void  v85(); // _ZN9S567C4_nt3v85Ev
  virtual void  v86(); // _ZN9S567C4_nt3v86Ev
  virtual void  v87(); // _ZN9S567C4_nt3v87Ev
  virtual void  v88(); // _ZN9S567C4_nt3v88Ev
  virtual void  v89(); // _ZN9S567C4_nt3v89Ev
  virtual void  v90(); // _ZN9S567C4_nt3v90Ev
  virtual void  v91(); // _ZN9S567C4_nt3v91Ev
  virtual void  v92(); // _ZN9S567C4_nt3v92Ev
  virtual void  v93(); // _ZN9S567C4_nt3v93Ev
  virtual void  v94(); // _ZN9S567C4_nt3v94Ev
  S567C4_nt(); // tgen
};
//SIG(-1 S567C4_nt) C1{ BC2{ vd v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 v90 v91 Fi FL Fp[4] Fi[2] Fp FC3{ m Fi[2]} Fp[2]} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 Fp FC4{ BC5{ BC6{ m Fp Fi[2]}}} FC3 FC7{ BC8{ BC6}} FC9{ m FC10{ m Fi[4]} FC11{ m Fi[3]} Fi} Fi Fi:1 Fi:1 Fi:1 Fi:1 Fi[11]}


 S567C4_nt ::~S567C4_nt(){ note_dtor("S567C4_nt", this);}
void  S567C4_nt ::v68(){vfunc_called(this, "_ZN9S567C4_nt3v68Ev");}
void  S567C4_nt ::v69(){vfunc_called(this, "_ZN9S567C4_nt3v69Ev");}
void  S567C4_nt ::v70(){vfunc_called(this, "_ZN9S567C4_nt3v70Ev");}
void  S567C4_nt ::v71(){vfunc_called(this, "_ZN9S567C4_nt3v71Ev");}
void  S567C4_nt ::v72(){vfunc_called(this, "_ZN9S567C4_nt3v72Ev");}
void  S567C4_nt ::v73(){vfunc_called(this, "_ZN9S567C4_nt3v73Ev");}
void  S567C4_nt ::v74(){vfunc_called(this, "_ZN9S567C4_nt3v74Ev");}
void  S567C4_nt ::v75(){vfunc_called(this, "_ZN9S567C4_nt3v75Ev");}
void  S567C4_nt ::v76(){vfunc_called(this, "_ZN9S567C4_nt3v76Ev");}
void  S567C4_nt ::v77(){vfunc_called(this, "_ZN9S567C4_nt3v77Ev");}
void  S567C4_nt ::v78(){vfunc_called(this, "_ZN9S567C4_nt3v78Ev");}
void  S567C4_nt ::v79(){vfunc_called(this, "_ZN9S567C4_nt3v79Ev");}
void  S567C4_nt ::v80(){vfunc_called(this, "_ZN9S567C4_nt3v80Ev");}
void  S567C4_nt ::v81(){vfunc_called(this, "_ZN9S567C4_nt3v81Ev");}
void  S567C4_nt ::v82(){vfunc_called(this, "_ZN9S567C4_nt3v82Ev");}
void  S567C4_nt ::v83(){vfunc_called(this, "_ZN9S567C4_nt3v83Ev");}
void  S567C4_nt ::v84(){vfunc_called(this, "_ZN9S567C4_nt3v84Ev");}
void  S567C4_nt ::v85(){vfunc_called(this, "_ZN9S567C4_nt3v85Ev");}
void  S567C4_nt ::v86(){vfunc_called(this, "_ZN9S567C4_nt3v86Ev");}
void  S567C4_nt ::v87(){vfunc_called(this, "_ZN9S567C4_nt3v87Ev");}
void  S567C4_nt ::v88(){vfunc_called(this, "_ZN9S567C4_nt3v88Ev");}
void  S567C4_nt ::v89(){vfunc_called(this, "_ZN9S567C4_nt3v89Ev");}
void  S567C4_nt ::v90(){vfunc_called(this, "_ZN9S567C4_nt3v90Ev");}
void  S567C4_nt ::v91(){vfunc_called(this, "_ZN9S567C4_nt3v91Ev");}
void  S567C4_nt ::v92(){vfunc_called(this, "_ZN9S567C4_nt3v92Ev");}
void  S567C4_nt ::v93(){vfunc_called(this, "_ZN9S567C4_nt3v93Ev");}
void  S567C4_nt ::v94(){vfunc_called(this, "_ZN9S567C4_nt3v94Ev");}
S567C4_nt ::S567C4_nt(){ note_ctor("S567C4_nt", this);} // tgen

//skip512 S567C4_nt

#else // __cplusplus

extern void _ZN9S567C4_ntC1Ev();
extern void _ZN9S567C4_ntD1Ev();
Name_Map name_map_S567C4_nt[] = {
  NSPAIR(_ZN9S567C4_ntC1Ev),
  NSPAIR(_ZN9S567C4_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S567C5;
extern VTBL_ENTRY _ZTI6S567C5[];
extern  VTBL_ENTRY _ZTV6S567C5[];
static Base_Class bases_S567C4_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S567C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S567C4_nt[];
extern void _ZN9S567C4_ntD1Ev();
extern void _ZN9S567C4_ntD0Ev();
extern void _ZN6S567C52v4Ev();
extern void _ZN6S567C52v5Ev();
extern void _ZN6S567C52v6Ev();
extern void _ZN6S567C52v7Ev();
extern void _ZN6S567C52v8Ev();
extern void _ZN6S567C52v9Ev();
extern void _ZN6S567C53v10Ev();
extern void _ZN6S567C53v11Ev();
extern void _ZN6S567C53v12Ev();
extern void _ZN6S567C53v13Ev();
extern void _ZN6S567C53v14Ev();
extern void _ZN6S567C53v15Ev();
extern void _ZN6S567C53v16Ev();
extern void _ZN6S567C53v17Ev();
extern void _ZN6S567C53v18Ev();
extern void _ZN6S567C53v19Ev();
extern void _ZN6S567C53v20Ev();
extern void _ZN6S567C53v21Ev();
extern void _ZN6S567C53v22Ev();
extern void _ZN6S567C53v23Ev();
extern void _ZN6S567C53v24Ev();
extern void _ZN6S567C53v25Ev();
extern void _ZN6S567C53v26Ev();
extern void _ZN6S567C53v27Ev();
extern void _ZN6S567C53v28Ev();
extern void _ZN6S567C53v29Ev();
extern void _ZN6S567C53v30Ev();
extern void _ZN6S567C53v31Ev();
extern void _ZN6S567C53v32Ev();
extern void _ZN6S567C53v33Ev();
extern void _ZN6S567C53v34Ev();
extern void _ZN6S567C53v35Ev();
extern void _ZN6S567C53v36Ev();
extern void _ZN6S567C53v37Ev();
extern void _ZN6S567C53v38Ev();
extern void _ZN6S567C53v39Ev();
extern void _ZN6S567C53v40Ev();
extern void _ZN6S567C53v41Ev();
extern void _ZN6S567C53v42Ev();
extern void _ZN6S567C53v43Ev();
extern void _ZN6S567C53v44Ev();
extern void _ZN6S567C53v45Ev();
extern void _ZN6S567C53v46Ev();
extern void _ZN6S567C53v47Ev();
extern void _ZN6S567C53v48Ev();
extern void _ZN6S567C53v49Ev();
extern void _ZN6S567C53v50Ev();
extern void _ZN6S567C53v51Ev();
extern void _ZN6S567C53v52Ev();
extern void _ZN6S567C53v53Ev();
extern void _ZN6S567C53v54Ev();
extern void _ZN6S567C53v55Ev();
extern void _ZN6S567C53v56Ev();
extern void _ZN6S567C53v57Ev();
extern void _ZN6S567C53v58Ev();
extern void _ZN6S567C53v59Ev();
extern void _ZN6S567C53v60Ev();
extern void _ZN6S567C53v61Ev();
extern void _ZN6S567C53v62Ev();
extern void _ZN6S567C53v63Ev();
extern void _ZN6S567C53v64Ev();
extern void _ZN6S567C53v65Ev();
extern void _ZN6S567C53v66Ev();
extern void _ZN6S567C53v67Ev();
extern void _ZN9S567C4_nt3v68Ev();
extern void _ZN9S567C4_nt3v69Ev();
extern void _ZN9S567C4_nt3v70Ev();
extern void _ZN9S567C4_nt3v71Ev();
extern void _ZN9S567C4_nt3v72Ev();
extern void _ZN9S567C4_nt3v73Ev();
extern void _ZN9S567C4_nt3v74Ev();
extern void _ZN9S567C4_nt3v75Ev();
extern void _ZN9S567C4_nt3v76Ev();
extern void _ZN9S567C4_nt3v77Ev();
extern void _ZN9S567C4_nt3v78Ev();
extern void _ZN9S567C4_nt3v79Ev();
extern void _ZN9S567C4_nt3v80Ev();
extern void _ZN9S567C4_nt3v81Ev();
extern void _ZN9S567C4_nt3v82Ev();
extern void _ZN9S567C4_nt3v83Ev();
extern void _ZN9S567C4_nt3v84Ev();
extern void _ZN9S567C4_nt3v85Ev();
extern void _ZN9S567C4_nt3v86Ev();
extern void _ZN9S567C4_nt3v87Ev();
extern void _ZN9S567C4_nt3v88Ev();
extern void _ZN9S567C4_nt3v89Ev();
extern void _ZN9S567C4_nt3v90Ev();
extern void _ZN9S567C4_nt3v91Ev();
extern void _ZN9S567C4_nt3v92Ev();
extern void _ZN9S567C4_nt3v93Ev();
extern void _ZN9S567C4_nt3v94Ev();
static  VTBL_ENTRY vtc_S567C4_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S567C4_nt[0]),
  (VTBL_ENTRY)&_ZN9S567C4_ntD1Ev,
  (VTBL_ENTRY)&_ZN9S567C4_ntD0Ev,
  (VTBL_ENTRY)&_ZN6S567C52v4Ev,
  (VTBL_ENTRY)&_ZN6S567C52v5Ev,
  (VTBL_ENTRY)&_ZN6S567C52v6Ev,
  (VTBL_ENTRY)&_ZN6S567C52v7Ev,
  (VTBL_ENTRY)&_ZN6S567C52v8Ev,
  (VTBL_ENTRY)&_ZN6S567C52v9Ev,
  (VTBL_ENTRY)&_ZN6S567C53v10Ev,
  (VTBL_ENTRY)&_ZN6S567C53v11Ev,
  (VTBL_ENTRY)&_ZN6S567C53v12Ev,
  (VTBL_ENTRY)&_ZN6S567C53v13Ev,
  (VTBL_ENTRY)&_ZN6S567C53v14Ev,
  (VTBL_ENTRY)&_ZN6S567C53v15Ev,
  (VTBL_ENTRY)&_ZN6S567C53v16Ev,
  (VTBL_ENTRY)&_ZN6S567C53v17Ev,
  (VTBL_ENTRY)&_ZN6S567C53v18Ev,
  (VTBL_ENTRY)&_ZN6S567C53v19Ev,
  (VTBL_ENTRY)&_ZN6S567C53v20Ev,
  (VTBL_ENTRY)&_ZN6S567C53v21Ev,
  (VTBL_ENTRY)&_ZN6S567C53v22Ev,
  (VTBL_ENTRY)&_ZN6S567C53v23Ev,
  (VTBL_ENTRY)&_ZN6S567C53v24Ev,
  (VTBL_ENTRY)&_ZN6S567C53v25Ev,
  (VTBL_ENTRY)&_ZN6S567C53v26Ev,
  (VTBL_ENTRY)&_ZN6S567C53v27Ev,
  (VTBL_ENTRY)&_ZN6S567C53v28Ev,
  (VTBL_ENTRY)&_ZN6S567C53v29Ev,
  (VTBL_ENTRY)&_ZN6S567C53v30Ev,
  (VTBL_ENTRY)&_ZN6S567C53v31Ev,
  (VTBL_ENTRY)&_ZN6S567C53v32Ev,
  (VTBL_ENTRY)&_ZN6S567C53v33Ev,
  (VTBL_ENTRY)&_ZN6S567C53v34Ev,
  (VTBL_ENTRY)&_ZN6S567C53v35Ev,
  (VTBL_ENTRY)&_ZN6S567C53v36Ev,
  (VTBL_ENTRY)&_ZN6S567C53v37Ev,
  (VTBL_ENTRY)&_ZN6S567C53v38Ev,
  (VTBL_ENTRY)&_ZN6S567C53v39Ev,
  (VTBL_ENTRY)&_ZN6S567C53v40Ev,
  (VTBL_ENTRY)&_ZN6S567C53v41Ev,
  (VTBL_ENTRY)&_ZN6S567C53v42Ev,
  (VTBL_ENTRY)&_ZN6S567C53v43Ev,
  (VTBL_ENTRY)&_ZN6S567C53v44Ev,
  (VTBL_ENTRY)&_ZN6S567C53v45Ev,
  (VTBL_ENTRY)&_ZN6S567C53v46Ev,
  (VTBL_ENTRY)&_ZN6S567C53v47Ev,
  (VTBL_ENTRY)&_ZN6S567C53v48Ev,
  (VTBL_ENTRY)&_ZN6S567C53v49Ev,
  (VTBL_ENTRY)&_ZN6S567C53v50Ev,
  (VTBL_ENTRY)&_ZN6S567C53v51Ev,
  (VTBL_ENTRY)&_ZN6S567C53v52Ev,
  (VTBL_ENTRY)&_ZN6S567C53v53Ev,
  (VTBL_ENTRY)&_ZN6S567C53v54Ev,
  (VTBL_ENTRY)&_ZN6S567C53v55Ev,
  (VTBL_ENTRY)&_ZN6S567C53v56Ev,
  (VTBL_ENTRY)&_ZN6S567C53v57Ev,
  (VTBL_ENTRY)&_ZN6S567C53v58Ev,
  (VTBL_ENTRY)&_ZN6S567C53v59Ev,
  (VTBL_ENTRY)&_ZN6S567C53v60Ev,
  (VTBL_ENTRY)&_ZN6S567C53v61Ev,
  (VTBL_ENTRY)&_ZN6S567C53v62Ev,
  (VTBL_ENTRY)&_ZN6S567C53v63Ev,
  (VTBL_ENTRY)&_ZN6S567C53v64Ev,
  (VTBL_ENTRY)&_ZN6S567C53v65Ev,
  (VTBL_ENTRY)&_ZN6S567C53v66Ev,
  (VTBL_ENTRY)&_ZN6S567C53v67Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v68Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v69Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v70Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v71Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v72Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v73Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v74Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v75Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v76Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v77Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v78Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v79Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v80Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v81Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v82Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v83Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v84Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v85Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v86Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v87Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v88Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v89Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v90Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v91Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v92Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v93Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v94Ev,
};
extern VTBL_ENTRY _ZTI9S567C4_nt[];
VTBL_ENTRY *P__ZTI9S567C4_nt = _ZTI9S567C4_nt; 
extern  VTBL_ENTRY _ZTV9S567C4_nt[];
Class_Descriptor cd_S567C4_nt = {  "S567C4_nt", // class name
  bases_S567C4_nt, 1,
  &(vtc_S567C4_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(232,180), // object size
  NSPAIRA(_ZTI9S567C4_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S567C4_nt),95, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S567C3_nt  : S567C4_nt {
  ::S40C71 s567c3f0;
  unsigned int s567c3f1:1;
  virtual  ~S567C3_nt(); // _ZN9S567C3_ntD1Ev
  virtual void  v95(); // _ZN9S567C3_nt3v95Ev
  virtual void  v96(); // _ZN9S567C3_nt3v96Ev
  virtual void  v97(); // _ZN9S567C3_nt3v97Ev
  virtual void  v98(); // _ZN9S567C3_nt3v98Ev
  virtual void  v99(); // _ZN9S567C3_nt3v99Ev
  virtual void  v100(); // _ZN9S567C3_nt4v100Ev
  virtual void  v101(); // _ZN9S567C3_nt4v101Ev
  virtual void  v102(); // _ZN9S567C3_nt4v102Ev
  virtual void  v103(); // _ZN9S567C3_nt4v103Ev
  virtual void  v104(); // _ZN9S567C3_nt4v104Ev
  virtual void  v105(); // _ZN9S567C3_nt4v105Ev
  virtual void  v106(); // _ZN9S567C3_nt4v106Ev
  virtual void  v107(); // _ZN9S567C3_nt4v107Ev
  virtual void  v108(); // _ZN9S567C3_nt4v108Ev
  virtual void  v109(); // _ZN9S567C3_nt4v109Ev
  virtual void  v110(); // _ZN9S567C3_nt4v110Ev
  virtual void  v111(); // _ZN9S567C3_nt4v111Ev
  virtual void  v112(); // _ZN9S567C3_nt4v112Ev
  S567C3_nt(); // tgen
};
//SIG(-1 S567C3_nt) C1{ BC2{ BC3{ vd v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 Fi FL Fp[4] Fi[2] Fp FC4{ m Fi[2]} Fp[2]} vd v83 v84 v85 v86 v87 v88 v89 v90 v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 v102 v103 v104 v105 v106 v107 v108 v109 Fp FC5{ BC6{ BC7{ m Fp Fi[2]}}} FC4 FC8{ BC9{ BC7}} FC10{ m FC11{ m Fi[4]} FC12{ m Fi[3]} Fi} Fi Fi:1 Fi:1 Fi:1 Fi:1 Fi[11]} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 FC13{ BC14{ BC7}} Fi:1}


 S567C3_nt ::~S567C3_nt(){ note_dtor("S567C3_nt", this);}
void  S567C3_nt ::v95(){vfunc_called(this, "_ZN9S567C3_nt3v95Ev");}
void  S567C3_nt ::v96(){vfunc_called(this, "_ZN9S567C3_nt3v96Ev");}
void  S567C3_nt ::v97(){vfunc_called(this, "_ZN9S567C3_nt3v97Ev");}
void  S567C3_nt ::v98(){vfunc_called(this, "_ZN9S567C3_nt3v98Ev");}
void  S567C3_nt ::v99(){vfunc_called(this, "_ZN9S567C3_nt3v99Ev");}
void  S567C3_nt ::v100(){vfunc_called(this, "_ZN9S567C3_nt4v100Ev");}
void  S567C3_nt ::v101(){vfunc_called(this, "_ZN9S567C3_nt4v101Ev");}
void  S567C3_nt ::v102(){vfunc_called(this, "_ZN9S567C3_nt4v102Ev");}
void  S567C3_nt ::v103(){vfunc_called(this, "_ZN9S567C3_nt4v103Ev");}
void  S567C3_nt ::v104(){vfunc_called(this, "_ZN9S567C3_nt4v104Ev");}
void  S567C3_nt ::v105(){vfunc_called(this, "_ZN9S567C3_nt4v105Ev");}
void  S567C3_nt ::v106(){vfunc_called(this, "_ZN9S567C3_nt4v106Ev");}
void  S567C3_nt ::v107(){vfunc_called(this, "_ZN9S567C3_nt4v107Ev");}
void  S567C3_nt ::v108(){vfunc_called(this, "_ZN9S567C3_nt4v108Ev");}
void  S567C3_nt ::v109(){vfunc_called(this, "_ZN9S567C3_nt4v109Ev");}
void  S567C3_nt ::v110(){vfunc_called(this, "_ZN9S567C3_nt4v110Ev");}
void  S567C3_nt ::v111(){vfunc_called(this, "_ZN9S567C3_nt4v111Ev");}
void  S567C3_nt ::v112(){vfunc_called(this, "_ZN9S567C3_nt4v112Ev");}
S567C3_nt ::S567C3_nt(){ note_ctor("S567C3_nt", this);} // tgen

//skip512 S567C3_nt

#else // __cplusplus

extern void _ZN9S567C3_ntC1Ev();
extern void _ZN9S567C3_ntD1Ev();
Name_Map name_map_S567C3_nt[] = {
  NSPAIR(_ZN9S567C3_ntC1Ev),
  NSPAIR(_ZN9S567C3_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S567C5;
extern VTBL_ENTRY _ZTI6S567C5[];
extern  VTBL_ENTRY _ZTV6S567C5[];
extern Class_Descriptor cd_S567C4_nt;
extern VTBL_ENTRY _ZTI9S567C4_nt[];
extern  VTBL_ENTRY _ZTV9S567C4_nt[];
static Base_Class bases_S567C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S567C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S567C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S567C3_nt[];
extern void _ZN9S567C3_ntD1Ev();
extern void _ZN9S567C3_ntD0Ev();
extern void _ZN6S567C52v4Ev();
extern void _ZN6S567C52v5Ev();
extern void _ZN6S567C52v6Ev();
extern void _ZN6S567C52v7Ev();
extern void _ZN6S567C52v8Ev();
extern void _ZN6S567C52v9Ev();
extern void _ZN6S567C53v10Ev();
extern void _ZN6S567C53v11Ev();
extern void _ZN6S567C53v12Ev();
extern void _ZN6S567C53v13Ev();
extern void _ZN6S567C53v14Ev();
extern void _ZN6S567C53v15Ev();
extern void _ZN6S567C53v16Ev();
extern void _ZN6S567C53v17Ev();
extern void _ZN6S567C53v18Ev();
extern void _ZN6S567C53v19Ev();
extern void _ZN6S567C53v20Ev();
extern void _ZN6S567C53v21Ev();
extern void _ZN6S567C53v22Ev();
extern void _ZN6S567C53v23Ev();
extern void _ZN6S567C53v24Ev();
extern void _ZN6S567C53v25Ev();
extern void _ZN6S567C53v26Ev();
extern void _ZN6S567C53v27Ev();
extern void _ZN6S567C53v28Ev();
extern void _ZN6S567C53v29Ev();
extern void _ZN6S567C53v30Ev();
extern void _ZN6S567C53v31Ev();
extern void _ZN6S567C53v32Ev();
extern void _ZN6S567C53v33Ev();
extern void _ZN6S567C53v34Ev();
extern void _ZN6S567C53v35Ev();
extern void _ZN6S567C53v36Ev();
extern void _ZN6S567C53v37Ev();
extern void _ZN6S567C53v38Ev();
extern void _ZN6S567C53v39Ev();
extern void _ZN6S567C53v40Ev();
extern void _ZN6S567C53v41Ev();
extern void _ZN6S567C53v42Ev();
extern void _ZN6S567C53v43Ev();
extern void _ZN6S567C53v44Ev();
extern void _ZN6S567C53v45Ev();
extern void _ZN6S567C53v46Ev();
extern void _ZN6S567C53v47Ev();
extern void _ZN6S567C53v48Ev();
extern void _ZN6S567C53v49Ev();
extern void _ZN6S567C53v50Ev();
extern void _ZN6S567C53v51Ev();
extern void _ZN6S567C53v52Ev();
extern void _ZN6S567C53v53Ev();
extern void _ZN6S567C53v54Ev();
extern void _ZN6S567C53v55Ev();
extern void _ZN6S567C53v56Ev();
extern void _ZN6S567C53v57Ev();
extern void _ZN6S567C53v58Ev();
extern void _ZN6S567C53v59Ev();
extern void _ZN6S567C53v60Ev();
extern void _ZN6S567C53v61Ev();
extern void _ZN6S567C53v62Ev();
extern void _ZN6S567C53v63Ev();
extern void _ZN6S567C53v64Ev();
extern void _ZN6S567C53v65Ev();
extern void _ZN6S567C53v66Ev();
extern void _ZN6S567C53v67Ev();
extern void _ZN9S567C4_nt3v68Ev();
extern void _ZN9S567C4_nt3v69Ev();
extern void _ZN9S567C4_nt3v70Ev();
extern void _ZN9S567C4_nt3v71Ev();
extern void _ZN9S567C4_nt3v72Ev();
extern void _ZN9S567C4_nt3v73Ev();
extern void _ZN9S567C4_nt3v74Ev();
extern void _ZN9S567C4_nt3v75Ev();
extern void _ZN9S567C4_nt3v76Ev();
extern void _ZN9S567C4_nt3v77Ev();
extern void _ZN9S567C4_nt3v78Ev();
extern void _ZN9S567C4_nt3v79Ev();
extern void _ZN9S567C4_nt3v80Ev();
extern void _ZN9S567C4_nt3v81Ev();
extern void _ZN9S567C4_nt3v82Ev();
extern void _ZN9S567C4_nt3v83Ev();
extern void _ZN9S567C4_nt3v84Ev();
extern void _ZN9S567C4_nt3v85Ev();
extern void _ZN9S567C4_nt3v86Ev();
extern void _ZN9S567C4_nt3v87Ev();
extern void _ZN9S567C4_nt3v88Ev();
extern void _ZN9S567C4_nt3v89Ev();
extern void _ZN9S567C4_nt3v90Ev();
extern void _ZN9S567C4_nt3v91Ev();
extern void _ZN9S567C4_nt3v92Ev();
extern void _ZN9S567C4_nt3v93Ev();
extern void _ZN9S567C4_nt3v94Ev();
extern void _ZN9S567C3_nt3v95Ev();
extern void _ZN9S567C3_nt3v96Ev();
extern void _ZN9S567C3_nt3v97Ev();
extern void _ZN9S567C3_nt3v98Ev();
extern void _ZN9S567C3_nt3v99Ev();
extern void _ZN9S567C3_nt4v100Ev();
extern void _ZN9S567C3_nt4v101Ev();
extern void _ZN9S567C3_nt4v102Ev();
extern void _ZN9S567C3_nt4v103Ev();
extern void _ZN9S567C3_nt4v104Ev();
extern void _ZN9S567C3_nt4v105Ev();
extern void _ZN9S567C3_nt4v106Ev();
extern void _ZN9S567C3_nt4v107Ev();
extern void _ZN9S567C3_nt4v108Ev();
extern void _ZN9S567C3_nt4v109Ev();
extern void _ZN9S567C3_nt4v110Ev();
extern void _ZN9S567C3_nt4v111Ev();
extern void _ZN9S567C3_nt4v112Ev();
static  VTBL_ENTRY vtc_S567C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S567C3_nt[0]),
  (VTBL_ENTRY)&_ZN9S567C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN9S567C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN6S567C52v4Ev,
  (VTBL_ENTRY)&_ZN6S567C52v5Ev,
  (VTBL_ENTRY)&_ZN6S567C52v6Ev,
  (VTBL_ENTRY)&_ZN6S567C52v7Ev,
  (VTBL_ENTRY)&_ZN6S567C52v8Ev,
  (VTBL_ENTRY)&_ZN6S567C52v9Ev,
  (VTBL_ENTRY)&_ZN6S567C53v10Ev,
  (VTBL_ENTRY)&_ZN6S567C53v11Ev,
  (VTBL_ENTRY)&_ZN6S567C53v12Ev,
  (VTBL_ENTRY)&_ZN6S567C53v13Ev,
  (VTBL_ENTRY)&_ZN6S567C53v14Ev,
  (VTBL_ENTRY)&_ZN6S567C53v15Ev,
  (VTBL_ENTRY)&_ZN6S567C53v16Ev,
  (VTBL_ENTRY)&_ZN6S567C53v17Ev,
  (VTBL_ENTRY)&_ZN6S567C53v18Ev,
  (VTBL_ENTRY)&_ZN6S567C53v19Ev,
  (VTBL_ENTRY)&_ZN6S567C53v20Ev,
  (VTBL_ENTRY)&_ZN6S567C53v21Ev,
  (VTBL_ENTRY)&_ZN6S567C53v22Ev,
  (VTBL_ENTRY)&_ZN6S567C53v23Ev,
  (VTBL_ENTRY)&_ZN6S567C53v24Ev,
  (VTBL_ENTRY)&_ZN6S567C53v25Ev,
  (VTBL_ENTRY)&_ZN6S567C53v26Ev,
  (VTBL_ENTRY)&_ZN6S567C53v27Ev,
  (VTBL_ENTRY)&_ZN6S567C53v28Ev,
  (VTBL_ENTRY)&_ZN6S567C53v29Ev,
  (VTBL_ENTRY)&_ZN6S567C53v30Ev,
  (VTBL_ENTRY)&_ZN6S567C53v31Ev,
  (VTBL_ENTRY)&_ZN6S567C53v32Ev,
  (VTBL_ENTRY)&_ZN6S567C53v33Ev,
  (VTBL_ENTRY)&_ZN6S567C53v34Ev,
  (VTBL_ENTRY)&_ZN6S567C53v35Ev,
  (VTBL_ENTRY)&_ZN6S567C53v36Ev,
  (VTBL_ENTRY)&_ZN6S567C53v37Ev,
  (VTBL_ENTRY)&_ZN6S567C53v38Ev,
  (VTBL_ENTRY)&_ZN6S567C53v39Ev,
  (VTBL_ENTRY)&_ZN6S567C53v40Ev,
  (VTBL_ENTRY)&_ZN6S567C53v41Ev,
  (VTBL_ENTRY)&_ZN6S567C53v42Ev,
  (VTBL_ENTRY)&_ZN6S567C53v43Ev,
  (VTBL_ENTRY)&_ZN6S567C53v44Ev,
  (VTBL_ENTRY)&_ZN6S567C53v45Ev,
  (VTBL_ENTRY)&_ZN6S567C53v46Ev,
  (VTBL_ENTRY)&_ZN6S567C53v47Ev,
  (VTBL_ENTRY)&_ZN6S567C53v48Ev,
  (VTBL_ENTRY)&_ZN6S567C53v49Ev,
  (VTBL_ENTRY)&_ZN6S567C53v50Ev,
  (VTBL_ENTRY)&_ZN6S567C53v51Ev,
  (VTBL_ENTRY)&_ZN6S567C53v52Ev,
  (VTBL_ENTRY)&_ZN6S567C53v53Ev,
  (VTBL_ENTRY)&_ZN6S567C53v54Ev,
  (VTBL_ENTRY)&_ZN6S567C53v55Ev,
  (VTBL_ENTRY)&_ZN6S567C53v56Ev,
  (VTBL_ENTRY)&_ZN6S567C53v57Ev,
  (VTBL_ENTRY)&_ZN6S567C53v58Ev,
  (VTBL_ENTRY)&_ZN6S567C53v59Ev,
  (VTBL_ENTRY)&_ZN6S567C53v60Ev,
  (VTBL_ENTRY)&_ZN6S567C53v61Ev,
  (VTBL_ENTRY)&_ZN6S567C53v62Ev,
  (VTBL_ENTRY)&_ZN6S567C53v63Ev,
  (VTBL_ENTRY)&_ZN6S567C53v64Ev,
  (VTBL_ENTRY)&_ZN6S567C53v65Ev,
  (VTBL_ENTRY)&_ZN6S567C53v66Ev,
  (VTBL_ENTRY)&_ZN6S567C53v67Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v68Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v69Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v70Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v71Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v72Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v73Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v74Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v75Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v76Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v77Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v78Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v79Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v80Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v81Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v82Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v83Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v84Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v85Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v86Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v87Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v88Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v89Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v90Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v91Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v92Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v93Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v94Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt3v95Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt3v96Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt3v97Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt3v98Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt3v99Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v100Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v101Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v102Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v103Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v104Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v105Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v106Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v107Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v108Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v109Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v110Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v111Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v112Ev,
};
extern VTBL_ENTRY _ZTI9S567C3_nt[];
VTBL_ENTRY *P__ZTI9S567C3_nt = _ZTI9S567C3_nt; 
extern  VTBL_ENTRY _ZTV9S567C3_nt[];
Class_Descriptor cd_S567C3_nt = {  "S567C3_nt", // class name
  bases_S567C3_nt, 2,
  &(vtc_S567C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(256,196), // object size
  NSPAIRA(_ZTI9S567C3_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S567C3_nt),113, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S567C2_nt  : S567C3_nt {
  int s567c2f0[3];
  virtual  ~S567C2_nt(); // _ZN9S567C2_ntD1Ev
  virtual void  v113(); // _ZN9S567C2_nt4v113Ev
  virtual void  v114(); // _ZN9S567C2_nt4v114Ev
  virtual void  v115(); // _ZN9S567C2_nt4v115Ev
  virtual void  v116(); // _ZN9S567C2_nt4v116Ev
  virtual void  v117(); // _ZN9S567C2_nt4v117Ev
  virtual void  v118(); // _ZN9S567C2_nt4v118Ev
  virtual void  v119(); // _ZN9S567C2_nt4v119Ev
  S567C2_nt(); // tgen
};
//SIG(-1 S567C2_nt) C1{ BC2{ BC3{ BC4{ vd v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 Fi FL Fp[4] Fi[2] Fp FC5{ m Fi[2]} Fp[2]} vd v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 v90 v91 v92 v93 v94 v95 v96 v97 v98 Fp FC6{ BC7{ BC8{ m Fp Fi[2]}}} FC5 FC9{ BC10{ BC8}} FC11{ m FC12{ m Fi[4]} FC13{ m Fi[3]} Fi} Fi Fi:1 Fi:1 Fi:1 Fi:1 Fi[11]} vd v99 v100 v101 v102 v103 v104 v105 v106 v107 v108 v109 v110 v111 v112 v113 v114 v115 v116 FC14{ BC15{ BC8}} Fi:1} vd v1 v2 v3 v4 v5 v6 v7 Fi[3]}


 S567C2_nt ::~S567C2_nt(){ note_dtor("S567C2_nt", this);}
void  S567C2_nt ::v113(){vfunc_called(this, "_ZN9S567C2_nt4v113Ev");}
void  S567C2_nt ::v114(){vfunc_called(this, "_ZN9S567C2_nt4v114Ev");}
void  S567C2_nt ::v115(){vfunc_called(this, "_ZN9S567C2_nt4v115Ev");}
void  S567C2_nt ::v116(){vfunc_called(this, "_ZN9S567C2_nt4v116Ev");}
void  S567C2_nt ::v117(){vfunc_called(this, "_ZN9S567C2_nt4v117Ev");}
void  S567C2_nt ::v118(){vfunc_called(this, "_ZN9S567C2_nt4v118Ev");}
void  S567C2_nt ::v119(){vfunc_called(this, "_ZN9S567C2_nt4v119Ev");}
S567C2_nt ::S567C2_nt(){ note_ctor("S567C2_nt", this);} // tgen

//skip512 S567C2_nt

#else // __cplusplus

extern void _ZN9S567C2_ntC1Ev();
extern void _ZN9S567C2_ntD1Ev();
Name_Map name_map_S567C2_nt[] = {
  NSPAIR(_ZN9S567C2_ntC1Ev),
  NSPAIR(_ZN9S567C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S567C5;
extern VTBL_ENTRY _ZTI6S567C5[];
extern  VTBL_ENTRY _ZTV6S567C5[];
extern Class_Descriptor cd_S567C4_nt;
extern VTBL_ENTRY _ZTI9S567C4_nt[];
extern  VTBL_ENTRY _ZTV9S567C4_nt[];
extern Class_Descriptor cd_S567C3_nt;
extern VTBL_ENTRY _ZTI9S567C3_nt[];
extern  VTBL_ENTRY _ZTV9S567C3_nt[];
static Base_Class bases_S567C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S567C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S567C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S567C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S567C2_nt[];
extern void _ZN9S567C2_ntD1Ev();
extern void _ZN9S567C2_ntD0Ev();
extern void _ZN6S567C52v4Ev();
extern void _ZN6S567C52v5Ev();
extern void _ZN6S567C52v6Ev();
extern void _ZN6S567C52v7Ev();
extern void _ZN6S567C52v8Ev();
extern void _ZN6S567C52v9Ev();
extern void _ZN6S567C53v10Ev();
extern void _ZN6S567C53v11Ev();
extern void _ZN6S567C53v12Ev();
extern void _ZN6S567C53v13Ev();
extern void _ZN6S567C53v14Ev();
extern void _ZN6S567C53v15Ev();
extern void _ZN6S567C53v16Ev();
extern void _ZN6S567C53v17Ev();
extern void _ZN6S567C53v18Ev();
extern void _ZN6S567C53v19Ev();
extern void _ZN6S567C53v20Ev();
extern void _ZN6S567C53v21Ev();
extern void _ZN6S567C53v22Ev();
extern void _ZN6S567C53v23Ev();
extern void _ZN6S567C53v24Ev();
extern void _ZN6S567C53v25Ev();
extern void _ZN6S567C53v26Ev();
extern void _ZN6S567C53v27Ev();
extern void _ZN6S567C53v28Ev();
extern void _ZN6S567C53v29Ev();
extern void _ZN6S567C53v30Ev();
extern void _ZN6S567C53v31Ev();
extern void _ZN6S567C53v32Ev();
extern void _ZN6S567C53v33Ev();
extern void _ZN6S567C53v34Ev();
extern void _ZN6S567C53v35Ev();
extern void _ZN6S567C53v36Ev();
extern void _ZN6S567C53v37Ev();
extern void _ZN6S567C53v38Ev();
extern void _ZN6S567C53v39Ev();
extern void _ZN6S567C53v40Ev();
extern void _ZN6S567C53v41Ev();
extern void _ZN6S567C53v42Ev();
extern void _ZN6S567C53v43Ev();
extern void _ZN6S567C53v44Ev();
extern void _ZN6S567C53v45Ev();
extern void _ZN6S567C53v46Ev();
extern void _ZN6S567C53v47Ev();
extern void _ZN6S567C53v48Ev();
extern void _ZN6S567C53v49Ev();
extern void _ZN6S567C53v50Ev();
extern void _ZN6S567C53v51Ev();
extern void _ZN6S567C53v52Ev();
extern void _ZN6S567C53v53Ev();
extern void _ZN6S567C53v54Ev();
extern void _ZN6S567C53v55Ev();
extern void _ZN6S567C53v56Ev();
extern void _ZN6S567C53v57Ev();
extern void _ZN6S567C53v58Ev();
extern void _ZN6S567C53v59Ev();
extern void _ZN6S567C53v60Ev();
extern void _ZN6S567C53v61Ev();
extern void _ZN6S567C53v62Ev();
extern void _ZN6S567C53v63Ev();
extern void _ZN6S567C53v64Ev();
extern void _ZN6S567C53v65Ev();
extern void _ZN6S567C53v66Ev();
extern void _ZN6S567C53v67Ev();
extern void _ZN9S567C4_nt3v68Ev();
extern void _ZN9S567C4_nt3v69Ev();
extern void _ZN9S567C4_nt3v70Ev();
extern void _ZN9S567C4_nt3v71Ev();
extern void _ZN9S567C4_nt3v72Ev();
extern void _ZN9S567C4_nt3v73Ev();
extern void _ZN9S567C4_nt3v74Ev();
extern void _ZN9S567C4_nt3v75Ev();
extern void _ZN9S567C4_nt3v76Ev();
extern void _ZN9S567C4_nt3v77Ev();
extern void _ZN9S567C4_nt3v78Ev();
extern void _ZN9S567C4_nt3v79Ev();
extern void _ZN9S567C4_nt3v80Ev();
extern void _ZN9S567C4_nt3v81Ev();
extern void _ZN9S567C4_nt3v82Ev();
extern void _ZN9S567C4_nt3v83Ev();
extern void _ZN9S567C4_nt3v84Ev();
extern void _ZN9S567C4_nt3v85Ev();
extern void _ZN9S567C4_nt3v86Ev();
extern void _ZN9S567C4_nt3v87Ev();
extern void _ZN9S567C4_nt3v88Ev();
extern void _ZN9S567C4_nt3v89Ev();
extern void _ZN9S567C4_nt3v90Ev();
extern void _ZN9S567C4_nt3v91Ev();
extern void _ZN9S567C4_nt3v92Ev();
extern void _ZN9S567C4_nt3v93Ev();
extern void _ZN9S567C4_nt3v94Ev();
extern void _ZN9S567C3_nt3v95Ev();
extern void _ZN9S567C3_nt3v96Ev();
extern void _ZN9S567C3_nt3v97Ev();
extern void _ZN9S567C3_nt3v98Ev();
extern void _ZN9S567C3_nt3v99Ev();
extern void _ZN9S567C3_nt4v100Ev();
extern void _ZN9S567C3_nt4v101Ev();
extern void _ZN9S567C3_nt4v102Ev();
extern void _ZN9S567C3_nt4v103Ev();
extern void _ZN9S567C3_nt4v104Ev();
extern void _ZN9S567C3_nt4v105Ev();
extern void _ZN9S567C3_nt4v106Ev();
extern void _ZN9S567C3_nt4v107Ev();
extern void _ZN9S567C3_nt4v108Ev();
extern void _ZN9S567C3_nt4v109Ev();
extern void _ZN9S567C3_nt4v110Ev();
extern void _ZN9S567C3_nt4v111Ev();
extern void _ZN9S567C3_nt4v112Ev();
extern void _ZN9S567C2_nt4v113Ev();
extern void _ZN9S567C2_nt4v114Ev();
extern void _ZN9S567C2_nt4v115Ev();
extern void _ZN9S567C2_nt4v116Ev();
extern void _ZN9S567C2_nt4v117Ev();
extern void _ZN9S567C2_nt4v118Ev();
extern void _ZN9S567C2_nt4v119Ev();
static  VTBL_ENTRY vtc_S567C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S567C2_nt[0]),
  (VTBL_ENTRY)&_ZN9S567C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN9S567C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN6S567C52v4Ev,
  (VTBL_ENTRY)&_ZN6S567C52v5Ev,
  (VTBL_ENTRY)&_ZN6S567C52v6Ev,
  (VTBL_ENTRY)&_ZN6S567C52v7Ev,
  (VTBL_ENTRY)&_ZN6S567C52v8Ev,
  (VTBL_ENTRY)&_ZN6S567C52v9Ev,
  (VTBL_ENTRY)&_ZN6S567C53v10Ev,
  (VTBL_ENTRY)&_ZN6S567C53v11Ev,
  (VTBL_ENTRY)&_ZN6S567C53v12Ev,
  (VTBL_ENTRY)&_ZN6S567C53v13Ev,
  (VTBL_ENTRY)&_ZN6S567C53v14Ev,
  (VTBL_ENTRY)&_ZN6S567C53v15Ev,
  (VTBL_ENTRY)&_ZN6S567C53v16Ev,
  (VTBL_ENTRY)&_ZN6S567C53v17Ev,
  (VTBL_ENTRY)&_ZN6S567C53v18Ev,
  (VTBL_ENTRY)&_ZN6S567C53v19Ev,
  (VTBL_ENTRY)&_ZN6S567C53v20Ev,
  (VTBL_ENTRY)&_ZN6S567C53v21Ev,
  (VTBL_ENTRY)&_ZN6S567C53v22Ev,
  (VTBL_ENTRY)&_ZN6S567C53v23Ev,
  (VTBL_ENTRY)&_ZN6S567C53v24Ev,
  (VTBL_ENTRY)&_ZN6S567C53v25Ev,
  (VTBL_ENTRY)&_ZN6S567C53v26Ev,
  (VTBL_ENTRY)&_ZN6S567C53v27Ev,
  (VTBL_ENTRY)&_ZN6S567C53v28Ev,
  (VTBL_ENTRY)&_ZN6S567C53v29Ev,
  (VTBL_ENTRY)&_ZN6S567C53v30Ev,
  (VTBL_ENTRY)&_ZN6S567C53v31Ev,
  (VTBL_ENTRY)&_ZN6S567C53v32Ev,
  (VTBL_ENTRY)&_ZN6S567C53v33Ev,
  (VTBL_ENTRY)&_ZN6S567C53v34Ev,
  (VTBL_ENTRY)&_ZN6S567C53v35Ev,
  (VTBL_ENTRY)&_ZN6S567C53v36Ev,
  (VTBL_ENTRY)&_ZN6S567C53v37Ev,
  (VTBL_ENTRY)&_ZN6S567C53v38Ev,
  (VTBL_ENTRY)&_ZN6S567C53v39Ev,
  (VTBL_ENTRY)&_ZN6S567C53v40Ev,
  (VTBL_ENTRY)&_ZN6S567C53v41Ev,
  (VTBL_ENTRY)&_ZN6S567C53v42Ev,
  (VTBL_ENTRY)&_ZN6S567C53v43Ev,
  (VTBL_ENTRY)&_ZN6S567C53v44Ev,
  (VTBL_ENTRY)&_ZN6S567C53v45Ev,
  (VTBL_ENTRY)&_ZN6S567C53v46Ev,
  (VTBL_ENTRY)&_ZN6S567C53v47Ev,
  (VTBL_ENTRY)&_ZN6S567C53v48Ev,
  (VTBL_ENTRY)&_ZN6S567C53v49Ev,
  (VTBL_ENTRY)&_ZN6S567C53v50Ev,
  (VTBL_ENTRY)&_ZN6S567C53v51Ev,
  (VTBL_ENTRY)&_ZN6S567C53v52Ev,
  (VTBL_ENTRY)&_ZN6S567C53v53Ev,
  (VTBL_ENTRY)&_ZN6S567C53v54Ev,
  (VTBL_ENTRY)&_ZN6S567C53v55Ev,
  (VTBL_ENTRY)&_ZN6S567C53v56Ev,
  (VTBL_ENTRY)&_ZN6S567C53v57Ev,
  (VTBL_ENTRY)&_ZN6S567C53v58Ev,
  (VTBL_ENTRY)&_ZN6S567C53v59Ev,
  (VTBL_ENTRY)&_ZN6S567C53v60Ev,
  (VTBL_ENTRY)&_ZN6S567C53v61Ev,
  (VTBL_ENTRY)&_ZN6S567C53v62Ev,
  (VTBL_ENTRY)&_ZN6S567C53v63Ev,
  (VTBL_ENTRY)&_ZN6S567C53v64Ev,
  (VTBL_ENTRY)&_ZN6S567C53v65Ev,
  (VTBL_ENTRY)&_ZN6S567C53v66Ev,
  (VTBL_ENTRY)&_ZN6S567C53v67Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v68Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v69Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v70Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v71Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v72Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v73Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v74Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v75Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v76Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v77Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v78Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v79Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v80Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v81Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v82Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v83Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v84Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v85Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v86Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v87Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v88Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v89Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v90Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v91Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v92Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v93Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v94Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt3v95Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt3v96Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt3v97Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt3v98Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt3v99Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v100Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v101Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v102Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v103Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v104Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v105Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v106Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v107Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v108Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v109Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v110Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v111Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v112Ev,
  (VTBL_ENTRY)&_ZN9S567C2_nt4v113Ev,
  (VTBL_ENTRY)&_ZN9S567C2_nt4v114Ev,
  (VTBL_ENTRY)&_ZN9S567C2_nt4v115Ev,
  (VTBL_ENTRY)&_ZN9S567C2_nt4v116Ev,
  (VTBL_ENTRY)&_ZN9S567C2_nt4v117Ev,
  (VTBL_ENTRY)&_ZN9S567C2_nt4v118Ev,
  (VTBL_ENTRY)&_ZN9S567C2_nt4v119Ev,
};
extern VTBL_ENTRY _ZTI9S567C2_nt[];
VTBL_ENTRY *P__ZTI9S567C2_nt = _ZTI9S567C2_nt; 
extern  VTBL_ENTRY _ZTV9S567C2_nt[];
Class_Descriptor cd_S567C2_nt = {  "S567C2_nt", // class name
  bases_S567C2_nt, 3,
  &(vtc_S567C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(264,208), // object size
  NSPAIRA(_ZTI9S567C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S567C2_nt),120, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

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


 S567C1 ::~S567C1(){ note_dtor("S567C1", this);}
void  S567C1 ::v1(){vfunc_called(this, "_ZN6S567C12v1Ev");}
void  S567C1 ::v2(){vfunc_called(this, "_ZN6S567C12v2Ev");}
void  S567C1 ::v3(){vfunc_called(this, "_ZN6S567C12v3Ev");}
S567C1 ::S567C1(){ note_ctor("S567C1", this);} // tgen

static void Test_S567C1()
{
  extern Class_Descriptor cd_S567C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(35,55)];
    init_test(&cd_S567C1, buf);
    S567C1 *dp, &lv = *(dp=new (buf) S567C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(272,216), "sizeof(S567C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S567C1)");
    check_base_class_offset(lv, (S567C5*)(S567C4_nt*)(S567C3_nt*)(S567C2_nt*), 0, "S567C1");
    check_base_class_offset(lv, (S567C4_nt*)(S567C3_nt*)(S567C2_nt*), 0, "S567C1");
    check_base_class_offset(lv, (S567C3_nt*)(S567C2_nt*), 0, "S567C1");
    check_base_class_offset(lv, (S567C2_nt*), 0, "S567C1");
    check_field_offset(lv, s567c1f0, ABISELECT(264,208), "S567C1.s567c1f0");
    test_class_info(&lv, &cd_S567C1);
    dp->~S567C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS567C1(Test_S567C1, "S567C1", ABISELECT(272,216));

#else // __cplusplus

extern void _ZN6S567C1C1Ev();
extern void _ZN6S567C1D1Ev();
Name_Map name_map_S567C1[] = {
  NSPAIR(_ZN6S567C1C1Ev),
  NSPAIR(_ZN6S567C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S567C5;
extern VTBL_ENTRY _ZTI6S567C5[];
extern  VTBL_ENTRY _ZTV6S567C5[];
extern Class_Descriptor cd_S567C4_nt;
extern VTBL_ENTRY _ZTI9S567C4_nt[];
extern  VTBL_ENTRY _ZTV9S567C4_nt[];
extern Class_Descriptor cd_S567C3_nt;
extern VTBL_ENTRY _ZTI9S567C3_nt[];
extern  VTBL_ENTRY _ZTV9S567C3_nt[];
extern Class_Descriptor cd_S567C2_nt;
extern VTBL_ENTRY _ZTI9S567C2_nt[];
extern  VTBL_ENTRY _ZTV9S567C2_nt[];
static Base_Class bases_S567C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S567C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S567C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S567C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S567C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S567C1[];
extern void _ZN6S567C1D1Ev();
extern void _ZN6S567C1D0Ev();
extern void _ZN6S567C52v4Ev();
extern void _ZN6S567C52v5Ev();
extern void _ZN6S567C52v6Ev();
extern void _ZN6S567C52v7Ev();
extern void _ZN6S567C52v8Ev();
extern void _ZN6S567C52v9Ev();
extern void _ZN6S567C53v10Ev();
extern void _ZN6S567C53v11Ev();
extern void _ZN6S567C53v12Ev();
extern void _ZN6S567C53v13Ev();
extern void _ZN6S567C53v14Ev();
extern void _ZN6S567C53v15Ev();
extern void _ZN6S567C53v16Ev();
extern void _ZN6S567C53v17Ev();
extern void _ZN6S567C53v18Ev();
extern void _ZN6S567C53v19Ev();
extern void _ZN6S567C53v20Ev();
extern void _ZN6S567C53v21Ev();
extern void _ZN6S567C53v22Ev();
extern void _ZN6S567C53v23Ev();
extern void _ZN6S567C53v24Ev();
extern void _ZN6S567C53v25Ev();
extern void _ZN6S567C53v26Ev();
extern void _ZN6S567C53v27Ev();
extern void _ZN6S567C53v28Ev();
extern void _ZN6S567C53v29Ev();
extern void _ZN6S567C53v30Ev();
extern void _ZN6S567C53v31Ev();
extern void _ZN6S567C53v32Ev();
extern void _ZN6S567C53v33Ev();
extern void _ZN6S567C53v34Ev();
extern void _ZN6S567C53v35Ev();
extern void _ZN6S567C53v36Ev();
extern void _ZN6S567C53v37Ev();
extern void _ZN6S567C53v38Ev();
extern void _ZN6S567C53v39Ev();
extern void _ZN6S567C53v40Ev();
extern void _ZN6S567C53v41Ev();
extern void _ZN6S567C53v42Ev();
extern void _ZN6S567C53v43Ev();
extern void _ZN6S567C53v44Ev();
extern void _ZN6S567C53v45Ev();
extern void _ZN6S567C53v46Ev();
extern void _ZN6S567C53v47Ev();
extern void _ZN6S567C53v48Ev();
extern void _ZN6S567C53v49Ev();
extern void _ZN6S567C53v50Ev();
extern void _ZN6S567C53v51Ev();
extern void _ZN6S567C53v52Ev();
extern void _ZN6S567C53v53Ev();
extern void _ZN6S567C53v54Ev();
extern void _ZN6S567C53v55Ev();
extern void _ZN6S567C53v56Ev();
extern void _ZN6S567C53v57Ev();
extern void _ZN6S567C53v58Ev();
extern void _ZN6S567C53v59Ev();
extern void _ZN6S567C53v60Ev();
extern void _ZN6S567C53v61Ev();
extern void _ZN6S567C53v62Ev();
extern void _ZN6S567C53v63Ev();
extern void _ZN6S567C53v64Ev();
extern void _ZN6S567C53v65Ev();
extern void _ZN6S567C53v66Ev();
extern void _ZN6S567C53v67Ev();
extern void _ZN9S567C4_nt3v68Ev();
extern void _ZN9S567C4_nt3v69Ev();
extern void _ZN9S567C4_nt3v70Ev();
extern void _ZN9S567C4_nt3v71Ev();
extern void _ZN9S567C4_nt3v72Ev();
extern void _ZN9S567C4_nt3v73Ev();
extern void _ZN9S567C4_nt3v74Ev();
extern void _ZN9S567C4_nt3v75Ev();
extern void _ZN9S567C4_nt3v76Ev();
extern void _ZN9S567C4_nt3v77Ev();
extern void _ZN9S567C4_nt3v78Ev();
extern void _ZN9S567C4_nt3v79Ev();
extern void _ZN9S567C4_nt3v80Ev();
extern void _ZN9S567C4_nt3v81Ev();
extern void _ZN9S567C4_nt3v82Ev();
extern void _ZN9S567C4_nt3v83Ev();
extern void _ZN9S567C4_nt3v84Ev();
extern void _ZN9S567C4_nt3v85Ev();
extern void _ZN9S567C4_nt3v86Ev();
extern void _ZN9S567C4_nt3v87Ev();
extern void _ZN9S567C4_nt3v88Ev();
extern void _ZN9S567C4_nt3v89Ev();
extern void _ZN9S567C4_nt3v90Ev();
extern void _ZN9S567C4_nt3v91Ev();
extern void _ZN9S567C4_nt3v92Ev();
extern void _ZN9S567C4_nt3v93Ev();
extern void _ZN9S567C4_nt3v94Ev();
extern void _ZN9S567C3_nt3v95Ev();
extern void _ZN9S567C3_nt3v96Ev();
extern void _ZN9S567C3_nt3v97Ev();
extern void _ZN9S567C3_nt3v98Ev();
extern void _ZN9S567C3_nt3v99Ev();
extern void _ZN9S567C3_nt4v100Ev();
extern void _ZN9S567C3_nt4v101Ev();
extern void _ZN9S567C3_nt4v102Ev();
extern void _ZN9S567C3_nt4v103Ev();
extern void _ZN9S567C3_nt4v104Ev();
extern void _ZN9S567C3_nt4v105Ev();
extern void _ZN9S567C3_nt4v106Ev();
extern void _ZN9S567C3_nt4v107Ev();
extern void _ZN9S567C3_nt4v108Ev();
extern void _ZN9S567C3_nt4v109Ev();
extern void _ZN9S567C3_nt4v110Ev();
extern void _ZN9S567C3_nt4v111Ev();
extern void _ZN9S567C3_nt4v112Ev();
extern void _ZN9S567C2_nt4v113Ev();
extern void _ZN9S567C2_nt4v114Ev();
extern void _ZN9S567C2_nt4v115Ev();
extern void _ZN9S567C2_nt4v116Ev();
extern void _ZN9S567C2_nt4v117Ev();
extern void _ZN9S567C2_nt4v118Ev();
extern void _ZN9S567C2_nt4v119Ev();
extern void _ZN6S567C12v1Ev();
extern void _ZN6S567C12v2Ev();
extern void _ZN6S567C12v3Ev();
static  VTBL_ENTRY vtc_S567C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S567C1[0]),
  (VTBL_ENTRY)&_ZN6S567C1D1Ev,
  (VTBL_ENTRY)&_ZN6S567C1D0Ev,
  (VTBL_ENTRY)&_ZN6S567C52v4Ev,
  (VTBL_ENTRY)&_ZN6S567C52v5Ev,
  (VTBL_ENTRY)&_ZN6S567C52v6Ev,
  (VTBL_ENTRY)&_ZN6S567C52v7Ev,
  (VTBL_ENTRY)&_ZN6S567C52v8Ev,
  (VTBL_ENTRY)&_ZN6S567C52v9Ev,
  (VTBL_ENTRY)&_ZN6S567C53v10Ev,
  (VTBL_ENTRY)&_ZN6S567C53v11Ev,
  (VTBL_ENTRY)&_ZN6S567C53v12Ev,
  (VTBL_ENTRY)&_ZN6S567C53v13Ev,
  (VTBL_ENTRY)&_ZN6S567C53v14Ev,
  (VTBL_ENTRY)&_ZN6S567C53v15Ev,
  (VTBL_ENTRY)&_ZN6S567C53v16Ev,
  (VTBL_ENTRY)&_ZN6S567C53v17Ev,
  (VTBL_ENTRY)&_ZN6S567C53v18Ev,
  (VTBL_ENTRY)&_ZN6S567C53v19Ev,
  (VTBL_ENTRY)&_ZN6S567C53v20Ev,
  (VTBL_ENTRY)&_ZN6S567C53v21Ev,
  (VTBL_ENTRY)&_ZN6S567C53v22Ev,
  (VTBL_ENTRY)&_ZN6S567C53v23Ev,
  (VTBL_ENTRY)&_ZN6S567C53v24Ev,
  (VTBL_ENTRY)&_ZN6S567C53v25Ev,
  (VTBL_ENTRY)&_ZN6S567C53v26Ev,
  (VTBL_ENTRY)&_ZN6S567C53v27Ev,
  (VTBL_ENTRY)&_ZN6S567C53v28Ev,
  (VTBL_ENTRY)&_ZN6S567C53v29Ev,
  (VTBL_ENTRY)&_ZN6S567C53v30Ev,
  (VTBL_ENTRY)&_ZN6S567C53v31Ev,
  (VTBL_ENTRY)&_ZN6S567C53v32Ev,
  (VTBL_ENTRY)&_ZN6S567C53v33Ev,
  (VTBL_ENTRY)&_ZN6S567C53v34Ev,
  (VTBL_ENTRY)&_ZN6S567C53v35Ev,
  (VTBL_ENTRY)&_ZN6S567C53v36Ev,
  (VTBL_ENTRY)&_ZN6S567C53v37Ev,
  (VTBL_ENTRY)&_ZN6S567C53v38Ev,
  (VTBL_ENTRY)&_ZN6S567C53v39Ev,
  (VTBL_ENTRY)&_ZN6S567C53v40Ev,
  (VTBL_ENTRY)&_ZN6S567C53v41Ev,
  (VTBL_ENTRY)&_ZN6S567C53v42Ev,
  (VTBL_ENTRY)&_ZN6S567C53v43Ev,
  (VTBL_ENTRY)&_ZN6S567C53v44Ev,
  (VTBL_ENTRY)&_ZN6S567C53v45Ev,
  (VTBL_ENTRY)&_ZN6S567C53v46Ev,
  (VTBL_ENTRY)&_ZN6S567C53v47Ev,
  (VTBL_ENTRY)&_ZN6S567C53v48Ev,
  (VTBL_ENTRY)&_ZN6S567C53v49Ev,
  (VTBL_ENTRY)&_ZN6S567C53v50Ev,
  (VTBL_ENTRY)&_ZN6S567C53v51Ev,
  (VTBL_ENTRY)&_ZN6S567C53v52Ev,
  (VTBL_ENTRY)&_ZN6S567C53v53Ev,
  (VTBL_ENTRY)&_ZN6S567C53v54Ev,
  (VTBL_ENTRY)&_ZN6S567C53v55Ev,
  (VTBL_ENTRY)&_ZN6S567C53v56Ev,
  (VTBL_ENTRY)&_ZN6S567C53v57Ev,
  (VTBL_ENTRY)&_ZN6S567C53v58Ev,
  (VTBL_ENTRY)&_ZN6S567C53v59Ev,
  (VTBL_ENTRY)&_ZN6S567C53v60Ev,
  (VTBL_ENTRY)&_ZN6S567C53v61Ev,
  (VTBL_ENTRY)&_ZN6S567C53v62Ev,
  (VTBL_ENTRY)&_ZN6S567C53v63Ev,
  (VTBL_ENTRY)&_ZN6S567C53v64Ev,
  (VTBL_ENTRY)&_ZN6S567C53v65Ev,
  (VTBL_ENTRY)&_ZN6S567C53v66Ev,
  (VTBL_ENTRY)&_ZN6S567C53v67Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v68Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v69Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v70Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v71Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v72Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v73Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v74Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v75Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v76Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v77Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v78Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v79Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v80Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v81Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v82Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v83Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v84Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v85Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v86Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v87Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v88Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v89Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v90Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v91Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v92Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v93Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v94Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt3v95Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt3v96Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt3v97Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt3v98Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt3v99Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v100Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v101Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v102Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v103Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v104Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v105Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v106Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v107Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v108Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v109Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v110Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v111Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v112Ev,
  (VTBL_ENTRY)&_ZN9S567C2_nt4v113Ev,
  (VTBL_ENTRY)&_ZN9S567C2_nt4v114Ev,
  (VTBL_ENTRY)&_ZN9S567C2_nt4v115Ev,
  (VTBL_ENTRY)&_ZN9S567C2_nt4v116Ev,
  (VTBL_ENTRY)&_ZN9S567C2_nt4v117Ev,
  (VTBL_ENTRY)&_ZN9S567C2_nt4v118Ev,
  (VTBL_ENTRY)&_ZN9S567C2_nt4v119Ev,
  (VTBL_ENTRY)&_ZN6S567C12v1Ev,
  (VTBL_ENTRY)&_ZN6S567C12v2Ev,
  (VTBL_ENTRY)&_ZN6S567C12v3Ev,
};
extern VTBL_ENTRY _ZTI6S567C1[];
extern  VTBL_ENTRY _ZTV6S567C1[];
Class_Descriptor cd_S567C1 = {  "S567C1", // class name
  bases_S567C1, 4,
  &(vtc_S567C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(272,216), // object size
  NSPAIRA(_ZTI6S567C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S567C1),123, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  4, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19993C2  {
  void *s19993c2f0;
  long double s19993c2f1[7];
  virtual void  v10(); // _ZN8S19993C23v10Ev
  ~S19993C2(); // tgen
  S19993C2(); // tgen
};
//SIG(-1 S19993C2) C1{ v1 Fp FD[7]}


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

static void Test_S19993C2()
{
  extern Class_Descriptor cd_S19993C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(9,24)];
    init_test(&cd_S19993C2, buf);
    S19993C2 *dp, &lv = *(dp=new (buf) S19993C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,92), "sizeof(S19993C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19993C2)");
    check_field_offset(lv, s19993c2f0, ABISELECT(8,4), "S19993C2.s19993c2f0");
    check_field_offset(lv, s19993c2f1, ABISELECT(16,8), "S19993C2.s19993c2f1");
    test_class_info(&lv, &cd_S19993C2);
    dp->~S19993C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19993C2(Test_S19993C2, "S19993C2", ABISELECT(128,92));

#else // __cplusplus

extern void _ZN8S19993C2C1Ev();
extern void _ZN8S19993C2D1Ev();
Name_Map name_map_S19993C2[] = {
  NSPAIR(_ZN8S19993C2C1Ev),
  NSPAIR(_ZN8S19993C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19993C2[];
extern void _ZN8S19993C23v10Ev();
static  VTBL_ENTRY vtc_S19993C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19993C2[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
};
extern VTBL_ENTRY _ZTI8S19993C2[];
extern  VTBL_ENTRY _ZTV8S19993C2[];
Class_Descriptor cd_S19993C2 = {  "S19993C2", // class name
  0,0,//no base classes
  &(vtc_S19993C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(128,92), // object size
  NSPAIRA(_ZTI8S19993C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19993C2),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19993C6_nt  {
  virtual void  v11(); // _ZN11S19993C6_nt3v11Ev
  virtual void  v12(); // _ZN11S19993C6_nt3v12Ev
  ~S19993C6_nt(); // tgen
  S19993C6_nt(); // tgen
};
//SIG(-1 S19993C6_nt) C1{ v1 v2}


void  S19993C6_nt ::v11(){vfunc_called(this, "_ZN11S19993C6_nt3v11Ev");}
void  S19993C6_nt ::v12(){vfunc_called(this, "_ZN11S19993C6_nt3v12Ev");}
S19993C6_nt ::~S19993C6_nt(){ note_dtor("S19993C6_nt", this);} // tgen
S19993C6_nt ::S19993C6_nt(){ note_ctor("S19993C6_nt", this);} // tgen

//skip512 S19993C6_nt

#else // __cplusplus

extern void _ZN11S19993C6_ntC1Ev();
extern void _ZN11S19993C6_ntD1Ev();
Name_Map name_map_S19993C6_nt[] = {
  NSPAIR(_ZN11S19993C6_ntC1Ev),
  NSPAIR(_ZN11S19993C6_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
static  VTBL_ENTRY vtc_S19993C6_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S19993C6_nt[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
};
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
VTBL_ENTRY *P__ZTI11S19993C6_nt = _ZTI11S19993C6_nt; 
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
Class_Descriptor cd_S19993C6_nt = {  "S19993C6_nt", // class name
  0,0,//no base classes
  &(vtc_S19993C6_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI11S19993C6_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S19993C6_nt),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19993C9  {
  virtual void  v13(); // _ZN8S19993C93v13Ev
  virtual void  v14(); // _ZN8S19993C93v14Ev
  ~S19993C9(); // tgen
  S19993C9(); // tgen
};
//SIG(-1 S19993C9) C1{ v1 v2}


void  S19993C9 ::v13(){vfunc_called(this, "_ZN8S19993C93v13Ev");}
void  S19993C9 ::v14(){vfunc_called(this, "_ZN8S19993C93v14Ev");}
S19993C9 ::~S19993C9(){ note_dtor("S19993C9", this);} // tgen
S19993C9 ::S19993C9(){ note_ctor("S19993C9", this);} // tgen

static void Test_S19993C9()
{
  extern Class_Descriptor cd_S19993C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S19993C9, buf);
    S19993C9 *dp, &lv = *(dp=new (buf) S19993C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S19993C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19993C9)");
    test_class_info(&lv, &cd_S19993C9);
    dp->~S19993C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19993C9(Test_S19993C9, "S19993C9", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S19993C9C1Ev();
extern void _ZN8S19993C9D1Ev();
Name_Map name_map_S19993C9[] = {
  NSPAIR(_ZN8S19993C9C1Ev),
  NSPAIR(_ZN8S19993C9D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19993C9[];
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
static  VTBL_ENTRY vtc_S19993C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19993C9[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
};
extern VTBL_ENTRY _ZTI8S19993C9[];
extern  VTBL_ENTRY _ZTV8S19993C9[];
Class_Descriptor cd_S19993C9 = {  "S19993C9", // class name
  0,0,//no base classes
  &(vtc_S19993C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S19993C9),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19993C9),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19993C10  : S19993C6_nt {
  int s19993c10f0[5];
  void *s19993c10f1;
  __tsi64 s19993c10f2[4];
  virtual void  v15(); // _ZN9S19993C103v15Ev
  virtual void  v16(); // _ZN9S19993C103v16Ev
  virtual void  v17(); // _ZN9S19993C103v17Ev
  virtual void  v18(); // _ZN9S19993C103v18Ev
  ~S19993C10(); // tgen
  S19993C10(); // tgen
};
//SIG(-1 S19993C10) C1{ BC2{ v5 v6} v1 v2 v3 v4 Fi[5] Fp FL[4]}


void  S19993C10 ::v15(){vfunc_called(this, "_ZN9S19993C103v15Ev");}
void  S19993C10 ::v16(){vfunc_called(this, "_ZN9S19993C103v16Ev");}
void  S19993C10 ::v17(){vfunc_called(this, "_ZN9S19993C103v17Ev");}
void  S19993C10 ::v18(){vfunc_called(this, "_ZN9S19993C103v18Ev");}
S19993C10 ::~S19993C10(){ note_dtor("S19993C10", this);} // tgen
S19993C10 ::S19993C10(){ note_ctor("S19993C10", this);} // tgen

static void Test_S19993C10()
{
  extern Class_Descriptor cd_S19993C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,16)];
    init_test(&cd_S19993C10, buf);
    S19993C10 *dp, &lv = *(dp=new (buf) S19993C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,60), "sizeof(S19993C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19993C10)");
    check_base_class_offset(lv, (S19993C6_nt*), 0, "S19993C10");
    check_field_offset(lv, s19993c10f0, ABISELECT(8,4), "S19993C10.s19993c10f0");
    check_field_offset(lv, s19993c10f1, ABISELECT(32,24), "S19993C10.s19993c10f1");
    check_field_offset(lv, s19993c10f2, ABISELECT(40,28), "S19993C10.s19993c10f2");
    test_class_info(&lv, &cd_S19993C10);
    dp->~S19993C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19993C10(Test_S19993C10, "S19993C10", ABISELECT(72,60));

#else // __cplusplus

extern void _ZN9S19993C10C1Ev();
extern void _ZN9S19993C10D1Ev();
Name_Map name_map_S19993C10[] = {
  NSPAIR(_ZN9S19993C10C1Ev),
  NSPAIR(_ZN9S19993C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
static Base_Class bases_S19993C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19993C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19993C10[];
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY vtc_S19993C10[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C10[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern VTBL_ENTRY _ZTI9S19993C10[];
extern  VTBL_ENTRY _ZTV9S19993C10[];
Class_Descriptor cd_S19993C10 = {  "S19993C10", // class name
  bases_S19993C10, 1,
  &(vtc_S19993C10[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,60), // object size
  NSPAIRA(_ZTI9S19993C10),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S19993C10),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19993C8  : virtual S77C13_nt , virtual S19993C6_nt , S19993C9 , virtual S19993C10 {
  virtual void  v19(); // _ZN8S19993C83v19Ev
  ~S19993C8(); // tgen
  S19993C8(); // tgen
};
//SIG(-1 S19993C8) C1{ VBC2{ m} VBC3{ v2 v3} BC4{ v4 v5} VBC5{ BC3 v6 v7 v8 v9 Fi[5] Fp FL[4]} v1}


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

static void Test_S19993C8()
{
  extern Class_Descriptor cd_S19993C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,18)];
    init_test(&cd_S19993C8, buf);
    S19993C8 *dp, &lv = *(dp=new (buf) S19993C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,68), "sizeof(S19993C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19993C8)");
    check_base_class_offset(lv, (S77C13_nt*), 0, "S19993C8");
    /*is_ambiguous_... S19993C8::S19993C6_nt */ AMB_check_base_class_offset(lv, (S19993C6_nt*), ABISELECT(8,4), "S19993C8");
    check_base_class_offset(lv, (S19993C9*), 0, "S19993C8");
    check_base_class_offset(lv, (S19993C6_nt*)(S19993C10*), ABISELECT(16,8), "S19993C8");
    check_base_class_offset(lv, (S19993C10*), ABISELECT(16,8), "S19993C8");
    test_class_info(&lv, &cd_S19993C8);
    dp->~S19993C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19993C8(Test_S19993C8, "S19993C8", ABISELECT(88,68));

#else // __cplusplus

extern void _ZN8S19993C8C1Ev();
extern void _ZN8S19993C8D1Ev();
Name_Map name_map_S19993C8[] = {
  NSPAIR(_ZN8S19993C8C1Ev),
  NSPAIR(_ZN8S19993C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C9;
extern VTBL_ENTRY _ZTI8S19993C9[];
extern  VTBL_ENTRY _ZTV8S19993C9[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C10;
extern VTBL_ENTRY _ZTI9S19993C10[];
extern  VTBL_ENTRY _ZTV9S19993C10[];
static Base_Class bases_S19993C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19993C6_nt,    ABISELECT(8,4), //bcp->offset
    8, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19993C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19993C6_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19993C10,    ABISELECT(16,8), //bcp->offset
    14, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19993C8[];
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY vtc_S19993C8[] = {
  ABISELECT(16,8),
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19993C8[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19993C8[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19993C8[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern VTBL_ENTRY _ZTV8S19993C8[];
static  VTT_ENTRY vtt_S19993C8[] = {
  {&(_ZTV8S19993C8[5]),  5,28},
  {&(_ZTV8S19993C8[12]),  12,28},
  {&(_ZTV8S19993C8[22]),  22,28},
};
extern VTBL_ENTRY _ZTI8S19993C8[];
extern  VTBL_ENTRY _ZTV8S19993C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19993C8[];
Class_Descriptor cd_S19993C8 = {  "S19993C8", // class name
  bases_S19993C8, 5,
  &(vtc_S19993C8[0]), // expected_vtbl_contents
  &(vtt_S19993C8[0]), // expected_vtt_contents
  ABISELECT(88,68), // object size
  NSPAIRA(_ZTI8S19993C8),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19993C8),28, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19993C8),3, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19993C7  : S19993C8 , virtual S19993C2 {
  void *s19993c7f0;
  virtual  ~S19993C7(); // _ZN8S19993C7D2Ev
  virtual void  v20(); // _ZN8S19993C73v20Ev
  S19993C7(); // tgen
};
//SIG(-1 S19993C7) C1{ BC2{ VBC3{ m} VBC4{ v2 v3} BC5{ v4 v5} VBC6{ BC4 v6 v7 v8 v9 Fi[5] Fp FL[4]} v10} VBC7{ v11 Fp FD[7]} vd v1 Fp}


 S19993C7 ::~S19993C7(){ note_dtor("S19993C7", this);}
void  S19993C7 ::v20(){vfunc_called(this, "_ZN8S19993C73v20Ev");}
S19993C7 ::S19993C7(){ note_ctor("S19993C7", this);} // tgen

static void Test_S19993C7()
{
  extern Class_Descriptor cd_S19993C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(15,42)];
    init_test(&cd_S19993C7, buf);
    S19993C7 *dp, &lv = *(dp=new (buf) S19993C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(224,164), "sizeof(S19993C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19993C7)");
    check_base_class_offset(lv, (S77C13_nt*)(S19993C8*), 0, "S19993C7");
    /*is_ambiguous_... S19993C8::S19993C6_nt */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C8*), ABISELECT(16,8), "S19993C7");
    check_base_class_offset(lv, (S19993C9*)(S19993C8*), 0, "S19993C7");
    check_base_class_offset(lv, (S19993C6_nt*)(S19993C10*), ABISELECT(24,12), "S19993C7");
    check_base_class_offset(lv, (S19993C10*)(S19993C8*), ABISELECT(24,12), "S19993C7");
    check_base_class_offset(lv, (S19993C8*), 0, "S19993C7");
    check_base_class_offset(lv, (S19993C2*), ABISELECT(96,72), "S19993C7");
    check_field_offset(lv, s19993c7f0, ABISELECT(8,4), "S19993C7.s19993c7f0");
    test_class_info(&lv, &cd_S19993C7);
    dp->~S19993C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19993C7(Test_S19993C7, "S19993C7", ABISELECT(224,164));

#else // __cplusplus

extern void _ZN8S19993C7C1Ev();
extern void _ZN8S19993C7D2Ev();
Name_Map name_map_S19993C7[] = {
  NSPAIR(_ZN8S19993C7C1Ev),
  NSPAIR(_ZN8S19993C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C9;
extern VTBL_ENTRY _ZTI8S19993C9[];
extern  VTBL_ENTRY _ZTV8S19993C9[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C10;
extern VTBL_ENTRY _ZTI9S19993C10[];
extern  VTBL_ENTRY _ZTV9S19993C10[];
extern Class_Descriptor cd_S19993C8;
extern VTBL_ENTRY _ZTI8S19993C8[];
extern  VTBL_ENTRY _ZTV8S19993C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19993C8[];
extern Class_Descriptor cd_S19993C2;
extern VTBL_ENTRY _ZTI8S19993C2[];
extern  VTBL_ENTRY _ZTV8S19993C2[];
static Base_Class bases_S19993C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19993C6_nt,    ABISELECT(16,8), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19993C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19993C6_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19993C10,    ABISELECT(24,12), //bcp->offset
    18, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19993C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19993C2,    ABISELECT(96,72), //bcp->offset
    32, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19993C7[];
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
extern void _ZN8S19993C7D1Ev();
extern void _ZN8S19993C7D0Ev();
extern void _ZN8S19993C73v20Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
extern void _ZN8S19993C23v10Ev();
static  VTBL_ENTRY vtc_S19993C7[] = {
  ABISELECT(96,72),
  ABISELECT(24,12),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19993C7[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
  (VTBL_ENTRY)&_ZN8S19993C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19993C7D0Ev,
  (VTBL_ENTRY)&_ZN8S19993C73v20Ev,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19993C7[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19993C7[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
  0,
  ABISELECT(-96,-72),
  (VTBL_ENTRY)&(_ZTI8S19993C7[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
};
extern VTBL_ENTRY _ZTV8S19993C7[];
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C8__8S19993C7[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19993C8[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
static  VTBL_ENTRY _tg__ZTV11S19993C6_nt__8S19993C8__8S19993C7[] = {
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19993C8[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C10__8S19993C8__8S19993C7[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19993C8[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
static  VTT_ENTRY vtt_S19993C7[] = {
  {&(_ZTV8S19993C7[6]),  6,36},
  {&(_tg__ZTV8S19993C8__8S19993C7[5]),  5,8},
  {&(_tg__ZTV11S19993C6_nt__8S19993C8__8S19993C7[4]),  4,6},
  {&(_tg__ZTV9S19993C10__8S19993C8__8S19993C7[8]),  8,14},
  {&(_ZTV8S19993C7[16]),  16,36},
  {&(_ZTV8S19993C7[26]),  26,36},
  {&(_ZTV8S19993C7[35]),  35,36},
};
extern VTBL_ENTRY _ZTI8S19993C7[];
extern  VTBL_ENTRY _ZTV8S19993C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19993C7[];
Class_Descriptor cd_S19993C7 = {  "S19993C7", // class name
  bases_S19993C7, 7,
  &(vtc_S19993C7[0]), // expected_vtbl_contents
  &(vtt_S19993C7[0]), // expected_vtt_contents
  ABISELECT(224,164), // object size
  NSPAIRA(_ZTI8S19993C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19993C7),36, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19993C7),7, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19993C12  {
  ::S77C13_nt s19993c12f0;
  int s19993c12f1[4];
  virtual void  v21(); // _ZN9S19993C123v21Ev
  ~S19993C12(); // tgen
  S19993C12(); // tgen
};
//SIG(-1 S19993C12) C1{ v1 FC2{ m} Fi[4]}


void  S19993C12 ::v21(){vfunc_called(this, "_ZN9S19993C123v21Ev");}
S19993C12 ::~S19993C12(){ note_dtor("S19993C12", this);} // tgen
S19993C12 ::S19993C12(){ note_ctor("S19993C12", this);} // tgen

static void Test_S19993C12()
{
  extern Class_Descriptor cd_S19993C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,7)];
    init_test(&cd_S19993C12, buf);
    S19993C12 *dp, &lv = *(dp=new (buf) S19993C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S19993C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19993C12)");
    check_field_offset(lv, s19993c12f0, ABISELECT(8,4), "S19993C12.s19993c12f0");
    check_field_offset(lv, s19993c12f1, ABISELECT(12,8), "S19993C12.s19993c12f1");
    test_class_info(&lv, &cd_S19993C12);
    dp->~S19993C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19993C12(Test_S19993C12, "S19993C12", ABISELECT(32,24));

#else // __cplusplus

extern void _ZN9S19993C12C1Ev();
extern void _ZN9S19993C12D1Ev();
Name_Map name_map_S19993C12[] = {
  NSPAIR(_ZN9S19993C12C1Ev),
  NSPAIR(_ZN9S19993C12D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S19993C12[];
extern void _ZN9S19993C123v21Ev();
static  VTBL_ENTRY vtc_S19993C12[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C12[0]),
  (VTBL_ENTRY)&_ZN9S19993C123v21Ev,
};
extern VTBL_ENTRY _ZTI9S19993C12[];
extern  VTBL_ENTRY _ZTV9S19993C12[];
Class_Descriptor cd_S19993C12 = {  "S19993C12", // class name
  0,0,//no base classes
  &(vtc_S19993C12[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,24), // object size
  NSPAIRA(_ZTI9S19993C12),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S19993C12),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19993C11  : virtual S19993C9 , virtual S77C13_nt , S19993C12 , S19993C10 {
  virtual void  v22(); // _ZN9S19993C113v22Ev
  virtual void  v23(); // _ZN9S19993C113v23Ev
  virtual void  v24(); // _ZN9S19993C113v24Ev
  ~S19993C11(); // tgen
  S19993C11(); // tgen
};
//SIG(-1 S19993C11) C1{ VBC2{ v4 v5} VBC3{ m} BC4{ v6 FC3 Fi[4]} BC5{ BC6{ v7 v8} v9 v10 v11 v12 Fi[5] Fp FL[4]} v1 v2 v3}


void  S19993C11 ::v22(){vfunc_called(this, "_ZN9S19993C113v22Ev");}
void  S19993C11 ::v23(){vfunc_called(this, "_ZN9S19993C113v23Ev");}
void  S19993C11 ::v24(){vfunc_called(this, "_ZN9S19993C113v24Ev");}
S19993C11 ::~S19993C11(){ note_dtor("S19993C11", this);} // tgen
S19993C11 ::S19993C11(){ note_ctor("S19993C11", this);} // tgen

static void Test_S19993C11()
{
  extern Class_Descriptor cd_S19993C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,23)];
    init_test(&cd_S19993C11, buf);
    S19993C11 *dp, &lv = *(dp=new (buf) S19993C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,88), "sizeof(S19993C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19993C11)");
    check_base_class_offset(lv, (S19993C9*), ABISELECT(104,84), "S19993C11");
    check_base_class_offset(lv, (S77C13_nt*), 0, "S19993C11");
    check_base_class_offset(lv, (S19993C12*), 0, "S19993C11");
    check_base_class_offset(lv, (S19993C6_nt*)(S19993C10*), ABISELECT(32,24), "S19993C11");
    check_base_class_offset(lv, (S19993C10*), ABISELECT(32,24), "S19993C11");
    test_class_info(&lv, &cd_S19993C11);
    dp->~S19993C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19993C11(Test_S19993C11, "S19993C11", ABISELECT(112,88));

#else // __cplusplus

extern void _ZN9S19993C11C1Ev();
extern void _ZN9S19993C11D1Ev();
Name_Map name_map_S19993C11[] = {
  NSPAIR(_ZN9S19993C11C1Ev),
  NSPAIR(_ZN9S19993C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19993C9;
extern VTBL_ENTRY _ZTI8S19993C9[];
extern  VTBL_ENTRY _ZTV8S19993C9[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19993C12;
extern VTBL_ENTRY _ZTI9S19993C12[];
extern  VTBL_ENTRY _ZTV9S19993C12[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C10;
extern VTBL_ENTRY _ZTI9S19993C10[];
extern  VTBL_ENTRY _ZTV9S19993C10[];
static Base_Class bases_S19993C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19993C9,    ABISELECT(104,84), //bcp->offset
    16, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19993C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19993C6_nt,    ABISELECT(32,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19993C10,    ABISELECT(32,24), //bcp->offset
    8, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19993C11[];
extern void _ZN9S19993C123v21Ev();
extern void _ZN9S19993C113v22Ev();
extern void _ZN9S19993C113v23Ev();
extern void _ZN9S19993C113v24Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
static  VTBL_ENTRY vtc_S19993C11[] = {
  0,
  ABISELECT(104,84),
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C11[0]),
  (VTBL_ENTRY)&_ZN9S19993C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v22Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v23Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v24Ev,
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI9S19993C11[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
  0,
  0,
  ABISELECT(-104,-84),
  (VTBL_ENTRY)&(_ZTI9S19993C11[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
};
extern VTBL_ENTRY _ZTV9S19993C11[];
static  VTT_ENTRY vtt_S19993C11[] = {
  {&(_ZTV9S19993C11[4]),  4,22},
  {&(_ZTV9S19993C11[20]),  20,22},
};
extern VTBL_ENTRY _ZTI9S19993C11[];
extern  VTBL_ENTRY _ZTV9S19993C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C11[];
Class_Descriptor cd_S19993C11 = {  "S19993C11", // class name
  bases_S19993C11, 5,
  &(vtc_S19993C11[0]), // expected_vtbl_contents
  &(vtt_S19993C11[0]), // expected_vtt_contents
  ABISELECT(112,88), // object size
  NSPAIRA(_ZTI9S19993C11),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19993C11),22, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19993C11),2, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19993C15  : S19993C9 , virtual S19993C8 , S77C13_nt , S19993C10 , S19993C6_nt {
  virtual void  v53(); // _ZN9S19993C153v53Ev
  ~S19993C15(); // tgen
  S19993C15(); // tgen
};
//SIG(-1 S19993C15) C1{ BC2{ v2 v3} VBC3{ VBC4{ m} VBC5{ v4 v5} BC2 VBC6{ BC5 v6 v7 v8 v9 Fi[5] Fp FL[4]} v10} BC4 BC6 BC5 v1}


void  S19993C15 ::v53(){vfunc_called(this, "_ZN9S19993C153v53Ev");}
S19993C15 ::~S19993C15(){ note_dtor("S19993C15", this);} // tgen
S19993C15 ::S19993C15(){ note_ctor("S19993C15", this);} // tgen

static void Test_S19993C15()
{
  extern Class_Descriptor cd_S19993C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,35)];
    init_test(&cd_S19993C15, buf);
    S19993C15 *dp, &lv = *(dp=new (buf) S19993C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,136), "sizeof(S19993C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19993C15)");
    /*is_ambiguous_... S19993C15::S19993C9 */ AMB_check_base_class_offset(lv, (S19993C9*), 0, "S19993C15");
    check_base_class_offset(lv, (S77C13_nt*)(S19993C8*), ABISELECT(96,72), "S19993C15");
    /*is_ambiguous_... S19993C8::S19993C6_nt */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C8*), ABISELECT(96,72), "S19993C15");
    check_base_class_offset(lv, (S19993C9*)(S19993C8*), ABISELECT(88,68), "S19993C15");
    /*is_ambiguous_... S19993C15::S19993C10 */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C10*), ABISELECT(104,76), "S19993C15");
    check_base_class_offset(lv, (S19993C10*)(S19993C8*), ABISELECT(104,76), "S19993C15");
    check_base_class_offset(lv, (S19993C8*), ABISELECT(88,68), "S19993C15");
    /*is_ambiguous_... S19993C15::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*), 0, "S19993C15");
    /*is_ambiguous_... S19993C15::S19993C10 */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C10*), ABISELECT(8,4), "S19993C15");
    /*is_ambiguous_... S19993C15::S19993C10 */ AMB_check_base_class_offset(lv, (S19993C10*), ABISELECT(8,4), "S19993C15");
    /*is_ambiguous_... S19993C15::S19993C6_nt */ AMB_check_base_class_offset(lv, (S19993C6_nt*), ABISELECT(80,64), "S19993C15");
    test_class_info(&lv, &cd_S19993C15);
    dp->~S19993C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19993C15(Test_S19993C15, "S19993C15", ABISELECT(176,136));

#else // __cplusplus

extern void _ZN9S19993C15C1Ev();
extern void _ZN9S19993C15D1Ev();
Name_Map name_map_S19993C15[] = {
  NSPAIR(_ZN9S19993C15C1Ev),
  NSPAIR(_ZN9S19993C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19993C9;
extern VTBL_ENTRY _ZTI8S19993C9[];
extern  VTBL_ENTRY _ZTV8S19993C9[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C9;
extern VTBL_ENTRY _ZTI8S19993C9[];
extern  VTBL_ENTRY _ZTV8S19993C9[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C10;
extern VTBL_ENTRY _ZTI9S19993C10[];
extern  VTBL_ENTRY _ZTV9S19993C10[];
extern Class_Descriptor cd_S19993C8;
extern VTBL_ENTRY _ZTI8S19993C8[];
extern  VTBL_ENTRY _ZTV8S19993C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19993C8[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C10;
extern VTBL_ENTRY _ZTI9S19993C10[];
extern  VTBL_ENTRY _ZTV9S19993C10[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
static Base_Class bases_S19993C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19993C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S77C13_nt,    ABISELECT(96,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19993C6_nt,    ABISELECT(96,72), //bcp->offset
    32, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19993C9,    ABISELECT(88,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19993C6_nt,    ABISELECT(104,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19993C10,    ABISELECT(104,76), //bcp->offset
    38, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19993C8,    ABISELECT(88,68), //bcp->offset
    21, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19993C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19993C10,    ABISELECT(8,4), //bcp->offset
    9, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19993C6_nt,    ABISELECT(80,64), //bcp->offset
    17, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19993C15[];
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN9S19993C153v53Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY vtc_S19993C15[] = {
  ABISELECT(104,76),
  ABISELECT(96,72),
  ABISELECT(96,72),
  ABISELECT(88,68),
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C15[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19993C153v53Ev,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19993C15[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
  ABISELECT(-80,-64),
  (VTBL_ENTRY)&(_ZTI9S19993C15[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  0,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(-88,-68),
  (VTBL_ENTRY)&(_ZTI9S19993C15[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
  0,
  0,
  ABISELECT(-96,-72),
  (VTBL_ENTRY)&(_ZTI9S19993C15[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-104,-76),
  (VTBL_ENTRY)&(_ZTI9S19993C15[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern VTBL_ENTRY _ZTV9S19993C15[];
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C8__9S19993C15[] = {
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19993C8[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
static  VTBL_ENTRY _tg__ZTV11S19993C6_nt__8S19993C8__9S19993C15[] = {
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19993C8[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C10__8S19993C8__9S19993C15[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19993C8[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
static  VTT_ENTRY vtt_S19993C15[] = {
  {&(_ZTV9S19993C15[6]),  6,52},
  {&(_ZTV9S19993C15[29]),  29,52},
  {&(_ZTV9S19993C15[36]),  36,52},
  {&(_ZTV9S19993C15[46]),  46,52},
  {&(_tg__ZTV8S19993C8__9S19993C15[5]),  5,8},
  {&(_tg__ZTV11S19993C6_nt__8S19993C8__9S19993C15[4]),  4,6},
  {&(_tg__ZTV9S19993C10__8S19993C8__9S19993C15[8]),  8,14},
};
extern VTBL_ENTRY _ZTI9S19993C15[];
extern  VTBL_ENTRY _ZTV9S19993C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C15[];
Class_Descriptor cd_S19993C15 = {  "S19993C15", // class name
  bases_S19993C15, 11,
  &(vtc_S19993C15[0]), // expected_vtbl_contents
  &(vtt_S19993C15[0]), // expected_vtt_contents
  ABISELECT(176,136), // object size
  NSPAIRA(_ZTI9S19993C15),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19993C15),52, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19993C15),7, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19993C14  : virtual S77C13_nt , S19993C2 , S19993C10 {
  int s19993c14f0[10];
  ::S19993C15 s19993c14f1;
  virtual void  v25(); // _ZN9S19993C143v25Ev
  virtual void  v26(); // _ZN9S19993C143v26Ev
  virtual void  v27(); // _ZN9S19993C143v27Ev
  virtual void  v28(); // _ZN9S19993C143v28Ev
  virtual void  v29(); // _ZN9S19993C143v29Ev
  ~S19993C14(); // tgen
  S19993C14(); // tgen
};
//SIG(-1 S19993C14) C1{ VBC2{ m} BC3{ v6 Fp FD[7]} BC4{ BC5{ v7 v8} v9 v10 v11 v12 Fi[5] Fp FL[4]} v1 v2 v3 v4 v5 Fi[10] FC6{ BC7{ v14 v15} VBC8{ VBC2 VBC5 BC7 VBC4 v16} BC2 BC4 BC5 v13}}


void  S19993C14 ::v25(){vfunc_called(this, "_ZN9S19993C143v25Ev");}
void  S19993C14 ::v26(){vfunc_called(this, "_ZN9S19993C143v26Ev");}
void  S19993C14 ::v27(){vfunc_called(this, "_ZN9S19993C143v27Ev");}
void  S19993C14 ::v28(){vfunc_called(this, "_ZN9S19993C143v28Ev");}
void  S19993C14 ::v29(){vfunc_called(this, "_ZN9S19993C143v29Ev");}
S19993C14 ::~S19993C14(){ note_dtor("S19993C14", this);} // tgen
S19993C14 ::S19993C14(){ note_ctor("S19993C14", this);} // tgen

static void Test_S19993C14()
{
  extern Class_Descriptor cd_S19993C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(27,83)];
    init_test(&cd_S19993C14, buf);
    S19993C14 *dp, &lv = *(dp=new (buf) S19993C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(416,328), "sizeof(S19993C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19993C14)");
    check_base_class_offset(lv, (S77C13_nt*), 0, "S19993C14");
    check_base_class_offset(lv, (S19993C2*), 0, "S19993C14");
    check_base_class_offset(lv, (S19993C6_nt*)(S19993C10*), ABISELECT(128,92), "S19993C14");
    check_base_class_offset(lv, (S19993C10*), ABISELECT(128,92), "S19993C14");
    check_field_offset(lv, s19993c14f0, ABISELECT(200,152), "S19993C14.s19993c14f0");
    check_field_offset(lv, s19993c14f1, ABISELECT(240,192), "S19993C14.s19993c14f1");
    test_class_info(&lv, &cd_S19993C14);
    dp->~S19993C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19993C14(Test_S19993C14, "S19993C14", ABISELECT(416,328));

#else // __cplusplus

extern void _ZN9S19993C14C1Ev();
extern void _ZN9S19993C14D1Ev();
Name_Map name_map_S19993C14[] = {
  NSPAIR(_ZN9S19993C14C1Ev),
  NSPAIR(_ZN9S19993C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19993C2;
extern VTBL_ENTRY _ZTI8S19993C2[];
extern  VTBL_ENTRY _ZTV8S19993C2[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C10;
extern VTBL_ENTRY _ZTI9S19993C10[];
extern  VTBL_ENTRY _ZTV9S19993C10[];
static Base_Class bases_S19993C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19993C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19993C6_nt,    ABISELECT(128,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19993C10,    ABISELECT(128,92), //bcp->offset
    9, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19993C14[];
extern void _ZN8S19993C23v10Ev();
extern void _ZN9S19993C143v25Ev();
extern void _ZN9S19993C143v26Ev();
extern void _ZN9S19993C143v27Ev();
extern void _ZN9S19993C143v28Ev();
extern void _ZN9S19993C143v29Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY vtc_S19993C14[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C14[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v29Ev,
  ABISELECT(-128,-92),
  (VTBL_ENTRY)&(_ZTI9S19993C14[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern VTBL_ENTRY _ZTV9S19993C14[];
static  VTT_ENTRY vtt_S19993C14[] = {
  {&(_ZTV9S19993C14[3]),  3,17},
};
extern VTBL_ENTRY _ZTI9S19993C14[];
extern  VTBL_ENTRY _ZTV9S19993C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C14[];
Class_Descriptor cd_S19993C14 = {  "S19993C14", // class name
  bases_S19993C14, 4,
  &(vtc_S19993C14[0]), // expected_vtbl_contents
  &(vtt_S19993C14[0]), // expected_vtt_contents
  ABISELECT(416,328), // object size
  NSPAIRA(_ZTI9S19993C14),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19993C14),17, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19993C14),1, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19993C13  : virtual S19993C14 {
  int s19993c13f0[2];
  virtual void  v30(); // _ZN9S19993C133v30Ev
  virtual void  v31(); // _ZN9S19993C133v31Ev
  virtual void  v32(); // _ZN9S19993C133v32Ev
  ~S19993C13(); // tgen
  S19993C13(); // tgen
};
//SIG(-1 S19993C13) C1{ VBC2{ VBC3{ m} BC4{ v4 Fp FD[7]} BC5{ BC6{ v5 v6} v7 v8 v9 v10 Fi[5] Fp FL[4]} v11 v12 v13 v14 v15 Fi[10] FC7{ BC8{ v17 v18} VBC9{ VBC3 VBC6 BC8 VBC5 v19} BC3 BC5 BC6 v16}} v1 v2 v3 Fi[2]}


void  S19993C13 ::v30(){vfunc_called(this, "_ZN9S19993C133v30Ev");}
void  S19993C13 ::v31(){vfunc_called(this, "_ZN9S19993C133v31Ev");}
void  S19993C13 ::v32(){vfunc_called(this, "_ZN9S19993C133v32Ev");}
S19993C13 ::~S19993C13(){ note_dtor("S19993C13", this);} // tgen
S19993C13 ::S19993C13(){ note_ctor("S19993C13", this);} // tgen

static void Test_S19993C13()
{
  extern Class_Descriptor cd_S19993C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(28,86)];
    init_test(&cd_S19993C13, buf);
    S19993C13 *dp, &lv = *(dp=new (buf) S19993C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(432,340), "sizeof(S19993C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19993C13)");
    check_base_class_offset(lv, (S77C13_nt*)(S19993C14*), 0, "S19993C13");
    check_base_class_offset(lv, (S19993C2*)(S19993C14*), ABISELECT(16,12), "S19993C13");
    check_base_class_offset(lv, (S19993C6_nt*)(S19993C10*)(S19993C14*), ABISELECT(144,104), "S19993C13");
    check_base_class_offset(lv, (S19993C10*)(S19993C14*), ABISELECT(144,104), "S19993C13");
    check_base_class_offset(lv, (S19993C14*), ABISELECT(16,12), "S19993C13");
    check_field_offset(lv, s19993c13f0, ABISELECT(8,4), "S19993C13.s19993c13f0");
    test_class_info(&lv, &cd_S19993C13);
    dp->~S19993C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19993C13(Test_S19993C13, "S19993C13", ABISELECT(432,340));

#else // __cplusplus

extern void _ZN9S19993C13C1Ev();
extern void _ZN9S19993C13D1Ev();
Name_Map name_map_S19993C13[] = {
  NSPAIR(_ZN9S19993C13C1Ev),
  NSPAIR(_ZN9S19993C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19993C2;
extern VTBL_ENTRY _ZTI8S19993C2[];
extern  VTBL_ENTRY _ZTV8S19993C2[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C10;
extern VTBL_ENTRY _ZTI9S19993C10[];
extern  VTBL_ENTRY _ZTV9S19993C10[];
extern Class_Descriptor cd_S19993C14;
extern VTBL_ENTRY _ZTI9S19993C14[];
extern  VTBL_ENTRY _ZTV9S19993C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C14[];
static Base_Class bases_S19993C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19993C2,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19993C6_nt,    ABISELECT(144,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19993C10,    ABISELECT(144,104), //bcp->offset
    28, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19993C14,    ABISELECT(16,12), //bcp->offset
    7, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19993C13[];
extern void _ZN9S19993C133v30Ev();
extern void _ZN9S19993C133v31Ev();
extern void _ZN9S19993C133v32Ev();
extern void _ZN8S19993C23v10Ev();
extern void _ZN9S19993C143v25Ev();
extern void _ZN9S19993C143v26Ev();
extern void _ZN9S19993C143v27Ev();
extern void _ZN9S19993C143v28Ev();
extern void _ZN9S19993C143v29Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY vtc_S19993C13[] = {
  0,
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C13[0]),
  (VTBL_ENTRY)&_ZN9S19993C133v30Ev,
  (VTBL_ENTRY)&_ZN9S19993C133v31Ev,
  (VTBL_ENTRY)&_ZN9S19993C133v32Ev,
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19993C13[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v29Ev,
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI9S19993C13[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern VTBL_ENTRY _ZTV9S19993C13[];
extern void _ZN8S19993C23v10Ev();
extern void _ZN9S19993C143v25Ev();
extern void _ZN9S19993C143v26Ev();
extern void _ZN9S19993C143v27Ev();
extern void _ZN9S19993C143v28Ev();
extern void _ZN9S19993C143v29Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C14__9S19993C13[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C14[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v29Ev,
};
static  VTT_ENTRY vtt_S19993C13[] = {
  {&(_ZTV9S19993C13[4]),  4,36},
  {&(_ZTV9S19993C13[22]),  22,36},
  {&(_ZTV9S19993C13[30]),  30,36},
  {&(_tg__ZTV9S19993C14__9S19993C13[3]),  3,9},
};
extern VTBL_ENTRY _ZTI9S19993C13[];
extern  VTBL_ENTRY _ZTV9S19993C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C13[];
Class_Descriptor cd_S19993C13 = {  "S19993C13", // class name
  bases_S19993C13, 5,
  &(vtc_S19993C13[0]), // expected_vtbl_contents
  &(vtt_S19993C13[0]), // expected_vtt_contents
  ABISELECT(432,340), // object size
  NSPAIRA(_ZTI9S19993C13),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19993C13),36, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19993C13),4, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19993C5  : virtual S19993C6_nt , S19993C7 , S19993C11 , virtual S19993C12 , virtual S19993C13 {
  void *s19993c5f0;
  virtual void  v33(); // _ZN8S19993C53v33Ev
  virtual void  v34(); // _ZN8S19993C53v34Ev
  virtual void  v35(); // _ZN8S19993C53v35Ev
  virtual void  v36(); // _ZN8S19993C53v36Ev
  virtual void  v37(); // _ZN8S19993C53v37Ev
  virtual void  v38(); // _ZN8S19993C53v38Ev
  virtual void  v39(); // _ZN8S19993C53v39Ev
  virtual void  v40(); // _ZN8S19993C53v40Ev
  ~S19993C5(); // tgen
  S19993C5(); // tgen
};
//SIG(-1 S19993C5) C1{ VBC2{ v9 v10} BC3{ BC4{ VBC5{ m} VBC2 BC6{ v11 v12} VBC7{ BC2 v13 v14 v15 v16 Fi[5] Fp FL[4]} v17} VBC8{ v18 Fp FD[7]} vd v19 Fp} BC9{ VBC6 VBC5 BC10{ v20 FC5 Fi[4]} BC7 v21 v22 v23} VBC10 VBC11{ VBC12{ VBC5 BC8 BC7 v24 v25 v26 v27 v28 Fi[10] FC13{ BC6 VBC4 BC5 BC7 BC2 v32}} v29 v30 v31 Fi[2]} v1 v2 v3 v4 v5 v6 v7 v8 Fp}


void  S19993C5 ::v33(){vfunc_called(this, "_ZN8S19993C53v33Ev");}
void  S19993C5 ::v34(){vfunc_called(this, "_ZN8S19993C53v34Ev");}
void  S19993C5 ::v35(){vfunc_called(this, "_ZN8S19993C53v35Ev");}
void  S19993C5 ::v36(){vfunc_called(this, "_ZN8S19993C53v36Ev");}
void  S19993C5 ::v37(){vfunc_called(this, "_ZN8S19993C53v37Ev");}
void  S19993C5 ::v38(){vfunc_called(this, "_ZN8S19993C53v38Ev");}
void  S19993C5 ::v39(){vfunc_called(this, "_ZN8S19993C53v39Ev");}
void  S19993C5 ::v40(){vfunc_called(this, "_ZN8S19993C53v40Ev");}
S19993C5 ::~S19993C5(){ note_dtor("S19993C5", this);} // tgen
S19993C5 ::S19993C5(){ note_ctor("S19993C5", this);} // tgen

static void Test_S19993C5()
{
  extern Class_Descriptor cd_S19993C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(52,156)];
    init_test(&cd_S19993C5, buf);
    S19993C5 *dp, &lv = *(dp=new (buf) S19993C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(816,620), "sizeof(S19993C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19993C5)");
    /*is_ambiguous_... S19993C5::S19993C6_nt */ AMB_check_base_class_offset(lv, (S19993C6_nt*), ABISELECT(128,96), "S19993C5");
    /*is_ambiguous_... S19993C8::S19993C6_nt */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C8*)(S19993C7*), ABISELECT(128,96), "S19993C5");
    check_base_class_offset(lv, (S77C13_nt*)(S19993C8*)(S19993C7*), 0, "S19993C5");
    check_base_class_offset(lv, (S77C13_nt*)(S19993C11*), 0, "S19993C5");
    check_base_class_offset(lv, (S77C13_nt*)(S19993C14*), 0, "S19993C5");
    check_base_class_offset(lv, (S19993C9*)(S19993C8*)(S19993C7*), 0, "S19993C5");
    /*is_ambiguous_... S19993C5::S19993C10 */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C10*), ABISELECT(136,100), "S19993C5");
    check_base_class_offset(lv, (S19993C10*)(S19993C8*)(S19993C7*), ABISELECT(136,100), "S19993C5");
    check_base_class_offset(lv, (S19993C8*)(S19993C7*), 0, "S19993C5");
    check_base_class_offset(lv, (S19993C2*)(S19993C7*), ABISELECT(208,160), "S19993C5");
    check_base_class_offset(lv, (S19993C7*), 0, "S19993C5");
    check_base_class_offset(lv, (S19993C9*)(S19993C11*), ABISELECT(336,252), "S19993C5");
    check_base_class_offset(lv, (S19993C12*)(S19993C11*), ABISELECT(16,8), "S19993C5");
    check_base_class_offset(lv, (S19993C6_nt*)(S19993C10*)(S19993C11*), ABISELECT(48,32), "S19993C5");
    check_base_class_offset(lv, (S19993C10*)(S19993C11*), ABISELECT(48,32), "S19993C5");
    check_base_class_offset(lv, (S19993C11*), ABISELECT(16,8), "S19993C5");
    /*is_ambiguous_... S19993C5::S19993C12 */ AMB_check_base_class_offset(lv, (S19993C12*), ABISELECT(344,256), "S19993C5");
    check_base_class_offset(lv, (S19993C2*)(S19993C14*), ABISELECT(400,292), "S19993C5");
    check_base_class_offset(lv, (S19993C6_nt*)(S19993C10*)(S19993C14*), ABISELECT(528,384), "S19993C5");
    check_base_class_offset(lv, (S19993C10*)(S19993C14*), ABISELECT(528,384), "S19993C5");
    check_base_class_offset(lv, (S19993C14*)(S19993C13*), ABISELECT(400,292), "S19993C5");
    check_base_class_offset(lv, (S19993C13*), ABISELECT(376,280), "S19993C5");
    check_field_offset(lv, s19993c5f0, ABISELECT(120,92), "S19993C5.s19993c5f0");
    test_class_info(&lv, &cd_S19993C5);
    dp->~S19993C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19993C5(Test_S19993C5, "S19993C5", ABISELECT(816,620));

#else // __cplusplus

extern void _ZN8S19993C5C1Ev();
extern void _ZN8S19993C5D1Ev();
Name_Map name_map_S19993C5[] = {
  NSPAIR(_ZN8S19993C5C1Ev),
  NSPAIR(_ZN8S19993C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19993C9;
extern VTBL_ENTRY _ZTI8S19993C9[];
extern  VTBL_ENTRY _ZTV8S19993C9[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C10;
extern VTBL_ENTRY _ZTI9S19993C10[];
extern  VTBL_ENTRY _ZTV9S19993C10[];
extern Class_Descriptor cd_S19993C8;
extern VTBL_ENTRY _ZTI8S19993C8[];
extern  VTBL_ENTRY _ZTV8S19993C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19993C8[];
extern Class_Descriptor cd_S19993C2;
extern VTBL_ENTRY _ZTI8S19993C2[];
extern  VTBL_ENTRY _ZTV8S19993C2[];
extern Class_Descriptor cd_S19993C7;
extern VTBL_ENTRY _ZTI8S19993C7[];
extern  VTBL_ENTRY _ZTV8S19993C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19993C7[];
extern Class_Descriptor cd_S19993C9;
extern VTBL_ENTRY _ZTI8S19993C9[];
extern  VTBL_ENTRY _ZTV8S19993C9[];
extern Class_Descriptor cd_S19993C12;
extern VTBL_ENTRY _ZTI9S19993C12[];
extern  VTBL_ENTRY _ZTV9S19993C12[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C10;
extern VTBL_ENTRY _ZTI9S19993C10[];
extern  VTBL_ENTRY _ZTV9S19993C10[];
extern Class_Descriptor cd_S19993C11;
extern VTBL_ENTRY _ZTI9S19993C11[];
extern  VTBL_ENTRY _ZTV9S19993C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C11[];
extern Class_Descriptor cd_S19993C12;
extern VTBL_ENTRY _ZTI9S19993C12[];
extern  VTBL_ENTRY _ZTV9S19993C12[];
extern Class_Descriptor cd_S19993C2;
extern VTBL_ENTRY _ZTI8S19993C2[];
extern  VTBL_ENTRY _ZTV8S19993C2[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C10;
extern VTBL_ENTRY _ZTI9S19993C10[];
extern  VTBL_ENTRY _ZTV9S19993C10[];
extern Class_Descriptor cd_S19993C14;
extern VTBL_ENTRY _ZTI9S19993C14[];
extern  VTBL_ENTRY _ZTV9S19993C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C14[];
extern Class_Descriptor cd_S19993C13;
extern VTBL_ENTRY _ZTI9S19993C13[];
extern  VTBL_ENTRY _ZTV9S19993C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C13[];
static Base_Class bases_S19993C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19993C6_nt,    ABISELECT(128,96), //bcp->offset
    40, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19993C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19993C6_nt,    ABISELECT(136,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19993C10,    ABISELECT(136,100), //bcp->offset
    46, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19993C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19993C2,    ABISELECT(208,160), //bcp->offset
    60, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19993C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19993C9,    ABISELECT(336,252), //bcp->offset
    64, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19993C12,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19993C6_nt,    ABISELECT(48,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19993C10,    ABISELECT(48,32), //bcp->offset
    32, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19993C11,    ABISELECT(16,8), //bcp->offset
    24, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19993C12,    ABISELECT(344,256), //bcp->offset
    70, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19993C2,    ABISELECT(400,292), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19993C6_nt,    ABISELECT(528,384), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19993C10,    ABISELECT(528,384), //bcp->offset
    105, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19993C14,    ABISELECT(400,292), //bcp->offset
    84, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S19993C13,    ABISELECT(376,280), //bcp->offset
    74, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19993C5[];
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
extern void _ZN8S19993C5D1Ev();
extern void _ZN8S19993C5D0Ev();
extern void _ZN8S19993C73v20Ev();
extern void _ZN8S19993C53v33Ev();
extern void _ZN8S19993C53v34Ev();
extern void _ZN8S19993C53v35Ev();
extern void _ZN8S19993C53v36Ev();
extern void _ZN8S19993C53v37Ev();
extern void _ZN8S19993C53v38Ev();
extern void _ZN8S19993C53v39Ev();
extern void _ZN8S19993C53v40Ev();
extern void _ZN9S19993C123v21Ev();
extern void _ZN9S19993C113v22Ev();
extern void _ZN9S19993C113v23Ev();
extern void _ZN9S19993C113v24Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
extern void _ZN8S19993C23v10Ev();
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN9S19993C123v21Ev();
extern void _ZN9S19993C133v30Ev();
extern void _ZN9S19993C133v31Ev();
extern void _ZN9S19993C133v32Ev();
extern void _ZN8S19993C23v10Ev();
extern void _ZN9S19993C143v25Ev();
extern void _ZN9S19993C143v26Ev();
extern void _ZN9S19993C143v27Ev();
extern void _ZN9S19993C143v28Ev();
extern void _ZN9S19993C143v29Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY vtc_S19993C5[] = {
  ABISELECT(400,292),
  ABISELECT(376,280),
  ABISELECT(344,256),
  ABISELECT(336,252),
  ABISELECT(208,160),
  ABISELECT(136,100),
  ABISELECT(128,96),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19993C5[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
  (VTBL_ENTRY)&_ZN8S19993C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19993C5D0Ev,
  (VTBL_ENTRY)&_ZN8S19993C73v20Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v33Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v34Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v35Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v36Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v37Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v38Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v39Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v40Ev,
  ABISELECT(-16,-8),
  ABISELECT(320,244),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19993C5[0]),
  (VTBL_ENTRY)&_ZN9S19993C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v22Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v23Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v24Ev,
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S19993C5[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
  0,
  0,
  ABISELECT(-128,-96),
  (VTBL_ENTRY)&(_ZTI8S19993C5[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-136,-100),
  (VTBL_ENTRY)&(_ZTI8S19993C5[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
  0,
  ABISELECT(-208,-160),
  (VTBL_ENTRY)&(_ZTI8S19993C5[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
  0,
  0,
  ABISELECT(-336,-252),
  (VTBL_ENTRY)&(_ZTI8S19993C5[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  0,
  ABISELECT(-344,-256),
  (VTBL_ENTRY)&(_ZTI8S19993C5[0]),
  (VTBL_ENTRY)&_ZN9S19993C123v21Ev,
  0,
  0,
  0,
  ABISELECT(-376,-280),
  ABISELECT(24,12),
  ABISELECT(-376,-280),
  (VTBL_ENTRY)&(_ZTI8S19993C5[0]),
  (VTBL_ENTRY)&_ZN9S19993C133v30Ev,
  (VTBL_ENTRY)&_ZN9S19993C133v31Ev,
  (VTBL_ENTRY)&_ZN9S19993C133v32Ev,
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-400,-292),
  ABISELECT(-400,-292),
  (VTBL_ENTRY)&(_ZTI8S19993C5[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v29Ev,
  ABISELECT(-528,-384),
  (VTBL_ENTRY)&(_ZTI8S19993C5[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern VTBL_ENTRY _ZTV8S19993C5[];
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
extern void _ZN8S19993C7D1Ev();
extern void _ZN8S19993C7D0Ev();
extern void _ZN8S19993C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C7__8S19993C5[] = {
  ABISELECT(208,160),
  ABISELECT(136,100),
  ABISELECT(128,96),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19993C7[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
  (VTBL_ENTRY)&_ZN8S19993C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19993C7D0Ev,
  (VTBL_ENTRY)&_ZN8S19993C73v20Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C88S19993C7__8S19993C5[] = {
  ABISELECT(136,100),
  ABISELECT(128,96),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19993C8[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
static  VTBL_ENTRY _tg__ZTV11S19993C6_nt__8S19993C88S19993C7__8S19993C5[] = {
  0,
  0,
  ABISELECT(-128,-96),
  (VTBL_ENTRY)&(_ZTI8S19993C8[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C10__8S19993C88S19993C7__8S19993C5[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-136,-100),
  (VTBL_ENTRY)&(_ZTI8S19993C8[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
static  VTBL_ENTRY _tg__ZTV11S19993C6_nt__8S19993C7__8S19993C5[] = {
  0,
  0,
  ABISELECT(-128,-96),
  (VTBL_ENTRY)&(_ZTI8S19993C7[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C10__8S19993C7__8S19993C5[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-136,-100),
  (VTBL_ENTRY)&(_ZTI8S19993C7[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern void _ZN8S19993C23v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C2__8S19993C7__8S19993C5[] = {
  0,
  ABISELECT(-208,-160),
  (VTBL_ENTRY)&(_ZTI8S19993C7[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
};
extern void _ZN9S19993C123v21Ev();
extern void _ZN9S19993C113v22Ev();
extern void _ZN9S19993C113v23Ev();
extern void _ZN9S19993C113v24Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C11__8S19993C5[] = {
  ABISELECT(-16,-8),
  ABISELECT(320,244),
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C11[0]),
  (VTBL_ENTRY)&_ZN9S19993C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v22Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v23Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v24Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C9__9S19993C11__8S19993C5[] = {
  0,
  0,
  ABISELECT(-320,-244),
  (VTBL_ENTRY)&(_ZTI9S19993C11[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
};
extern void _ZN9S19993C133v30Ev();
extern void _ZN9S19993C133v31Ev();
extern void _ZN9S19993C133v32Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C13__8S19993C5[] = {
  ABISELECT(-376,-280),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C13[0]),
  (VTBL_ENTRY)&_ZN9S19993C133v30Ev,
  (VTBL_ENTRY)&_ZN9S19993C133v31Ev,
  (VTBL_ENTRY)&_ZN9S19993C133v32Ev,
};
extern void _ZN8S19993C23v10Ev();
extern void _ZN9S19993C143v25Ev();
extern void _ZN9S19993C143v26Ev();
extern void _ZN9S19993C143v27Ev();
extern void _ZN9S19993C143v28Ev();
extern void _ZN9S19993C143v29Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C14__9S19993C13__8S19993C5[] = {
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-400,-292),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19993C13[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v29Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C109S19993C14__9S19993C13__8S19993C5[] = {
  ABISELECT(-152,-104),
  (VTBL_ENTRY)&(_ZTI9S19993C13[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern void _ZN8S19993C23v10Ev();
extern void _ZN9S19993C143v25Ev();
extern void _ZN9S19993C143v26Ev();
extern void _ZN9S19993C143v27Ev();
extern void _ZN9S19993C143v28Ev();
extern void _ZN9S19993C143v29Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C14__8S19993C5[] = {
  ABISELECT(-400,-292),
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C14[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v29Ev,
};
static  VTT_ENTRY vtt_S19993C5[] = {
  {&(_ZTV8S19993C5[10]),  10,113},
  {&(_tg__ZTV8S19993C7__8S19993C5[6]),  6,12},
  {&(_tg__ZTV8S19993C88S19993C7__8S19993C5[5]),  5,8},
  {&(_tg__ZTV11S19993C6_nt__8S19993C88S19993C7__8S19993C5[4]),  4,6},
  {&(_tg__ZTV9S19993C10__8S19993C88S19993C7__8S19993C5[8]),  8,14},
  {&(_tg__ZTV11S19993C6_nt__8S19993C7__8S19993C5[4]),  4,6},
  {&(_tg__ZTV9S19993C10__8S19993C7__8S19993C5[8]),  8,14},
  {&(_tg__ZTV8S19993C2__8S19993C7__8S19993C5[3]),  3,4},
  {&(_tg__ZTV9S19993C11__8S19993C5[4]),  4,8},
  {&(_tg__ZTV8S19993C9__9S19993C11__8S19993C5[4]),  4,6},
  {&(_ZTV8S19993C5[44]),  44,113},
  {&(_ZTV8S19993C5[54]),  54,113},
  {&(_ZTV8S19993C5[63]),  63,113},
  {&(_ZTV8S19993C5[28]),  28,113},
  {&(_ZTV8S19993C5[68]),  68,113},
  {&(_ZTV8S19993C5[73]),  73,113},
  {&(_ZTV8S19993C5[81]),  81,113},
  {&(_ZTV8S19993C5[99]),  99,113},
  {&(_ZTV8S19993C5[107]),  107,113},
  {&(_tg__ZTV9S19993C13__8S19993C5[4]),  4,7},
  {&(_tg__ZTV9S19993C14__9S19993C13__8S19993C5[15]),  15,21},
  {&(_tg__ZTV9S19993C109S19993C14__9S19993C13__8S19993C5[2]),  2,8},
  {&(_tg__ZTV9S19993C14__8S19993C5[3]),  3,9},
};
extern VTBL_ENTRY _ZTI8S19993C5[];
extern  VTBL_ENTRY _ZTV8S19993C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19993C5[];
Class_Descriptor cd_S19993C5 = {  "S19993C5", // class name
  bases_S19993C5, 19,
  &(vtc_S19993C5[0]), // expected_vtbl_contents
  &(vtt_S19993C5[0]), // expected_vtt_contents
  ABISELECT(816,620), // object size
  NSPAIRA(_ZTI8S19993C5),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19993C5),113, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19993C5),23, //virtual table table var
  18, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19993C3  : S77C13_nt , virtual S19993C5 {
  int s19993c3f0;
  virtual  ~S19993C3(); // _ZN8S19993C3D2Ev
  virtual void  v41(); // _ZN8S19993C33v41Ev
  virtual void  v42(); // _ZN8S19993C33v42Ev
  virtual void  v43(); // _ZN8S19993C33v43Ev
  S19993C3(); // tgen
};
//SIG(-1 S19993C3) C1{ BC2{ m} VBC3{ VBC4{ v4 v5} BC5{ BC6{ VBC2 VBC4 BC7{ v6 v7} VBC8{ BC4 v8 v9 v10 v11 Fi[5] Fp FL[4]} v12} VBC9{ v13 Fp FD[7]} vd v14 Fp} BC10{ VBC7 VBC2 BC11{ v15 FC2 Fi[4]} BC8 v16 v17 v18} VBC11 VBC12{ VBC13{ VBC2 BC9 BC8 v19 v20 v21 v22 v23 Fi[10] FC14{ BC7 VBC6 BC2 BC8 BC4 v35}} v24 v25 v26 Fi[2]} v27 v28 v29 v30 v31 v32 v33 v34 Fp} vd v1 v2 v3 Fi}


 S19993C3 ::~S19993C3(){ note_dtor("S19993C3", this);}
void  S19993C3 ::v41(){vfunc_called(this, "_ZN8S19993C33v41Ev");}
void  S19993C3 ::v42(){vfunc_called(this, "_ZN8S19993C33v42Ev");}
void  S19993C3 ::v43(){vfunc_called(this, "_ZN8S19993C33v43Ev");}
S19993C3 ::S19993C3(){ note_ctor("S19993C3", this);} // tgen

static void Test_S19993C3()
{
  extern Class_Descriptor cd_S19993C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(53,157)];
    init_test(&cd_S19993C3, buf);
    S19993C3 *dp, &lv = *(dp=new (buf) S19993C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(832,624), "sizeof(S19993C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19993C3)");
    /*is_ambiguous_... S19993C3::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*), 0, "S19993C3");
    /*is_ambiguous_... S19993C5::S19993C6_nt */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C5*), 0, "S19993C3");
    /*is_ambiguous_... S19993C8::S19993C6_nt */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C8*)(S19993C7*)(S19993C5*), 0, "S19993C3");
    check_base_class_offset(lv, (S77C13_nt*)(S19993C8*)(S19993C7*)(S19993C5*), ABISELECT(144,104), "S19993C3");
    check_base_class_offset(lv, (S77C13_nt*)(S19993C11*)(S19993C5*), ABISELECT(144,104), "S19993C3");
    check_base_class_offset(lv, (S77C13_nt*)(S19993C14*), ABISELECT(144,104), "S19993C3");
    check_base_class_offset(lv, (S19993C9*)(S19993C8*)(S19993C7*)(S19993C5*), ABISELECT(16,8), "S19993C3");
    /*is_ambiguous_... S19993C3::S19993C10 */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C10*), ABISELECT(144,104), "S19993C3");
    check_base_class_offset(lv, (S19993C10*)(S19993C8*)(S19993C7*)(S19993C5*), ABISELECT(144,104), "S19993C3");
    check_base_class_offset(lv, (S19993C8*)(S19993C7*)(S19993C5*), ABISELECT(16,8), "S19993C3");
    check_base_class_offset(lv, (S19993C2*)(S19993C7*)(S19993C5*), ABISELECT(224,164), "S19993C3");
    check_base_class_offset(lv, (S19993C7*)(S19993C5*), ABISELECT(16,8), "S19993C3");
    check_base_class_offset(lv, (S19993C9*)(S19993C11*)(S19993C5*), ABISELECT(352,256), "S19993C3");
    check_base_class_offset(lv, (S19993C12*)(S19993C11*)(S19993C5*), ABISELECT(32,16), "S19993C3");
    check_base_class_offset(lv, (S19993C6_nt*)(S19993C10*)(S19993C11*)(S19993C5*), ABISELECT(64,40), "S19993C3");
    check_base_class_offset(lv, (S19993C10*)(S19993C11*)(S19993C5*), ABISELECT(64,40), "S19993C3");
    check_base_class_offset(lv, (S19993C11*)(S19993C5*), ABISELECT(32,16), "S19993C3");
    /*is_ambiguous_... S19993C5::S19993C12 */ AMB_check_base_class_offset(lv, (S19993C12*)(S19993C5*), ABISELECT(360,260), "S19993C3");
    check_base_class_offset(lv, (S19993C2*)(S19993C14*), ABISELECT(416,296), "S19993C3");
    check_base_class_offset(lv, (S19993C6_nt*)(S19993C10*)(S19993C14*), ABISELECT(544,388), "S19993C3");
    check_base_class_offset(lv, (S19993C10*)(S19993C14*), ABISELECT(544,388), "S19993C3");
    check_base_class_offset(lv, (S19993C14*)(S19993C13*), ABISELECT(416,296), "S19993C3");
    check_base_class_offset(lv, (S19993C13*)(S19993C5*), ABISELECT(392,284), "S19993C3");
    check_base_class_offset(lv, (S19993C5*), ABISELECT(16,8), "S19993C3");
    check_field_offset(lv, s19993c3f0, ABISELECT(8,4), "S19993C3.s19993c3f0");
    test_class_info(&lv, &cd_S19993C3);
    dp->~S19993C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19993C3(Test_S19993C3, "S19993C3", ABISELECT(832,624));

#else // __cplusplus

extern void _ZN8S19993C3C1Ev();
extern void _ZN8S19993C3D2Ev();
Name_Map name_map_S19993C3[] = {
  NSPAIR(_ZN8S19993C3C1Ev),
  NSPAIR(_ZN8S19993C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19993C9;
extern VTBL_ENTRY _ZTI8S19993C9[];
extern  VTBL_ENTRY _ZTV8S19993C9[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C10;
extern VTBL_ENTRY _ZTI9S19993C10[];
extern  VTBL_ENTRY _ZTV9S19993C10[];
extern Class_Descriptor cd_S19993C8;
extern VTBL_ENTRY _ZTI8S19993C8[];
extern  VTBL_ENTRY _ZTV8S19993C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19993C8[];
extern Class_Descriptor cd_S19993C2;
extern VTBL_ENTRY _ZTI8S19993C2[];
extern  VTBL_ENTRY _ZTV8S19993C2[];
extern Class_Descriptor cd_S19993C7;
extern VTBL_ENTRY _ZTI8S19993C7[];
extern  VTBL_ENTRY _ZTV8S19993C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19993C7[];
extern Class_Descriptor cd_S19993C9;
extern VTBL_ENTRY _ZTI8S19993C9[];
extern  VTBL_ENTRY _ZTV8S19993C9[];
extern Class_Descriptor cd_S19993C12;
extern VTBL_ENTRY _ZTI9S19993C12[];
extern  VTBL_ENTRY _ZTV9S19993C12[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C10;
extern VTBL_ENTRY _ZTI9S19993C10[];
extern  VTBL_ENTRY _ZTV9S19993C10[];
extern Class_Descriptor cd_S19993C11;
extern VTBL_ENTRY _ZTI9S19993C11[];
extern  VTBL_ENTRY _ZTV9S19993C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C11[];
extern Class_Descriptor cd_S19993C12;
extern VTBL_ENTRY _ZTI9S19993C12[];
extern  VTBL_ENTRY _ZTV9S19993C12[];
extern Class_Descriptor cd_S19993C2;
extern VTBL_ENTRY _ZTI8S19993C2[];
extern  VTBL_ENTRY _ZTV8S19993C2[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C10;
extern VTBL_ENTRY _ZTI9S19993C10[];
extern  VTBL_ENTRY _ZTV9S19993C10[];
extern Class_Descriptor cd_S19993C14;
extern VTBL_ENTRY _ZTI9S19993C14[];
extern  VTBL_ENTRY _ZTV9S19993C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C14[];
extern Class_Descriptor cd_S19993C13;
extern VTBL_ENTRY _ZTI9S19993C13[];
extern  VTBL_ENTRY _ZTV9S19993C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C13[];
extern Class_Descriptor cd_S19993C5;
extern VTBL_ENTRY _ZTI8S19993C5[];
extern  VTBL_ENTRY _ZTV8S19993C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19993C5[];
static Base_Class bases_S19993C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19993C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S77C13_nt,    ABISELECT(144,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19993C9,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19993C6_nt,    ABISELECT(144,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19993C10,    ABISELECT(144,104), //bcp->offset
    83, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19993C8,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19993C2,    ABISELECT(224,164), //bcp->offset
    97, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19993C7,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19993C9,    ABISELECT(352,256), //bcp->offset
    101, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19993C12,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19993C6_nt,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19993C10,    ABISELECT(64,40), //bcp->offset
    75, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19993C11,    ABISELECT(32,16), //bcp->offset
    67, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19993C12,    ABISELECT(360,260), //bcp->offset
    107, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S19993C2,    ABISELECT(416,296), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19993C6_nt,    ABISELECT(544,388), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19993C10,    ABISELECT(544,388), //bcp->offset
    142, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19993C14,    ABISELECT(416,296), //bcp->offset
    121, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S19993C13,    ABISELECT(392,284), //bcp->offset
    111, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S19993C5,    ABISELECT(16,8), //bcp->offset
    20, //bcp->virtual_function_table_offset
    33, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19993C3[];
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN8S19993C3D1Ev();
extern void _ZN8S19993C3D0Ev();
extern void _ZN8S19993C33v41Ev();
extern void _ZN8S19993C33v42Ev();
extern void _ZN8S19993C33v43Ev();
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
extern void ABISELECT(_ZTv0_n112_N8S19993C3D1Ev,_ZTv0_n56_N8S19993C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S19993C3D1Ev,_ZThn8_N8S19993C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n112_N8S19993C3D0Ev,_ZTv0_n56_N8S19993C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S19993C3D0Ev,_ZThn8_N8S19993C3D0Ev)() __attribute__((weak));
extern void _ZN8S19993C73v20Ev();
extern void _ZN8S19993C53v33Ev();
extern void _ZN8S19993C53v34Ev();
extern void _ZN8S19993C53v35Ev();
extern void _ZN8S19993C53v36Ev();
extern void _ZN8S19993C53v37Ev();
extern void _ZN8S19993C53v38Ev();
extern void _ZN8S19993C53v39Ev();
extern void _ZN8S19993C53v40Ev();
extern void _ZN9S19993C123v21Ev();
extern void _ZN9S19993C113v22Ev();
extern void _ZN9S19993C113v23Ev();
extern void _ZN9S19993C113v24Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
extern void _ZN8S19993C23v10Ev();
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN9S19993C123v21Ev();
extern void _ZN9S19993C133v30Ev();
extern void _ZN9S19993C133v31Ev();
extern void _ZN9S19993C133v32Ev();
extern void _ZN8S19993C23v10Ev();
extern void _ZN9S19993C143v25Ev();
extern void _ZN9S19993C143v26Ev();
extern void _ZN9S19993C143v27Ev();
extern void _ZN9S19993C143v28Ev();
extern void _ZN9S19993C143v29Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY vtc_S19993C3[] = {
  ABISELECT(416,296),
  ABISELECT(392,284),
  ABISELECT(360,260),
  ABISELECT(352,256),
  ABISELECT(224,164),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  ABISELECT(16,8),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19993C3[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S19993C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19993C3D0Ev,
  (VTBL_ENTRY)&_ZN8S19993C33v41Ev,
  (VTBL_ENTRY)&_ZN8S19993C33v42Ev,
  (VTBL_ENTRY)&_ZN8S19993C33v43Ev,
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  0,
  0,
  0,
  ABISELECT(400,288),
  ABISELECT(376,276),
  ABISELECT(344,252),
  ABISELECT(336,248),
  ABISELECT(208,156),
  ABISELECT(128,96),
  ABISELECT(-16,-8),
  ABISELECT(128,96),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19993C3[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N8S19993C3D1Ev,_ZTv0_n56_N8S19993C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N8S19993C3D0Ev,_ZTv0_n56_N8S19993C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19993C73v20Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v33Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v34Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v35Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v36Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v37Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v38Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v39Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v40Ev,
  ABISELECT(112,88),
  ABISELECT(320,240),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19993C3[0]),
  (VTBL_ENTRY)&_ZN9S19993C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v22Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v23Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v24Ev,
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S19993C3[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S19993C3[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
  0,
  ABISELECT(-224,-164),
  (VTBL_ENTRY)&(_ZTI8S19993C3[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
  0,
  0,
  ABISELECT(-352,-256),
  (VTBL_ENTRY)&(_ZTI8S19993C3[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  0,
  ABISELECT(-360,-260),
  (VTBL_ENTRY)&(_ZTI8S19993C3[0]),
  (VTBL_ENTRY)&_ZN9S19993C123v21Ev,
  0,
  0,
  0,
  ABISELECT(-248,-180),
  ABISELECT(24,12),
  ABISELECT(-392,-284),
  (VTBL_ENTRY)&(_ZTI8S19993C3[0]),
  (VTBL_ENTRY)&_ZN9S19993C133v30Ev,
  (VTBL_ENTRY)&_ZN9S19993C133v31Ev,
  (VTBL_ENTRY)&_ZN9S19993C133v32Ev,
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-272,-192),
  ABISELECT(-416,-296),
  (VTBL_ENTRY)&(_ZTI8S19993C3[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v29Ev,
  ABISELECT(-544,-388),
  (VTBL_ENTRY)&(_ZTI8S19993C3[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern VTBL_ENTRY _ZTV8S19993C3[];
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
extern void _ZN8S19993C5D1Ev();
extern void _ZN8S19993C5D0Ev();
extern void _ZN8S19993C73v20Ev();
extern void _ZN8S19993C53v33Ev();
extern void _ZN8S19993C53v34Ev();
extern void _ZN8S19993C53v35Ev();
extern void _ZN8S19993C53v36Ev();
extern void _ZN8S19993C53v37Ev();
extern void _ZN8S19993C53v38Ev();
extern void _ZN8S19993C53v39Ev();
extern void _ZN8S19993C53v40Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C5__8S19993C3[] = {
  ABISELECT(400,288),
  ABISELECT(376,276),
  ABISELECT(344,252),
  ABISELECT(336,248),
  ABISELECT(208,156),
  ABISELECT(128,96),
  ABISELECT(-16,-8),
  ABISELECT(128,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S19993C5[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
  (VTBL_ENTRY)&_ZN8S19993C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19993C5D0Ev,
  (VTBL_ENTRY)&_ZN8S19993C73v20Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v33Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v34Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v35Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v36Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v37Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v38Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v39Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v40Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
extern void _ZN8S19993C7D1Ev();
extern void _ZN8S19993C7D0Ev();
extern void _ZN8S19993C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C78S19993C5__8S19993C3[] = {
  ABISELECT(208,156),
  ABISELECT(128,96),
  ABISELECT(-16,-8),
  ABISELECT(128,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S19993C7[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
  (VTBL_ENTRY)&_ZN8S19993C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19993C7D0Ev,
  (VTBL_ENTRY)&_ZN8S19993C73v20Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C88S19993C78S19993C5__8S19993C3[] = {
  ABISELECT(128,96),
  ABISELECT(-16,-8),
  ABISELECT(128,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S19993C8[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
static  VTBL_ENTRY _tg__ZTV11S19993C6_nt__8S19993C88S19993C78S19993C5__8S19993C3[] = {
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19993C8[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C10__8S19993C88S19993C78S19993C5__8S19993C3[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-96),
  (VTBL_ENTRY)&(_ZTI8S19993C8[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
static  VTBL_ENTRY _tg__ZTV11S19993C6_nt__8S19993C78S19993C5__8S19993C3[] = {
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19993C7[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C10__8S19993C78S19993C5__8S19993C3[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-96),
  (VTBL_ENTRY)&(_ZTI8S19993C7[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern void _ZN8S19993C23v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C2__8S19993C78S19993C5__8S19993C3[] = {
  0,
  ABISELECT(-208,-156),
  (VTBL_ENTRY)&(_ZTI8S19993C7[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
};
extern void _ZN9S19993C123v21Ev();
extern void _ZN9S19993C113v22Ev();
extern void _ZN9S19993C113v23Ev();
extern void _ZN9S19993C113v24Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C118S19993C5__8S19993C3[] = {
  ABISELECT(112,88),
  ABISELECT(320,240),
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C11[0]),
  (VTBL_ENTRY)&_ZN9S19993C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v22Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v23Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v24Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C9__9S19993C118S19993C5__8S19993C3[] = {
  0,
  0,
  ABISELECT(-320,-240),
  (VTBL_ENTRY)&(_ZTI9S19993C11[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
static  VTBL_ENTRY _tg__ZTV11S19993C6_nt__8S19993C5__8S19993C3[] = {
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19993C5[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C10__8S19993C5__8S19993C3[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-96),
  (VTBL_ENTRY)&(_ZTI8S19993C5[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern void _ZN8S19993C23v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C2__8S19993C5__8S19993C3[] = {
  0,
  ABISELECT(-208,-156),
  (VTBL_ENTRY)&(_ZTI8S19993C5[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
};
extern void _ZN9S19993C123v21Ev();
extern void _ZN9S19993C113v22Ev();
extern void _ZN9S19993C113v23Ev();
extern void _ZN9S19993C113v24Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C11__8S19993C5__8S19993C3[] = {
  ABISELECT(112,88),
  ABISELECT(320,240),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19993C5[0]),
  (VTBL_ENTRY)&_ZN9S19993C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v22Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v23Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v24Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C9__A1__8S19993C5__8S19993C3[] = {
  0,
  0,
  ABISELECT(-336,-248),
  (VTBL_ENTRY)&(_ZTI8S19993C5[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
};
extern void _ZN9S19993C123v21Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C12__A1__8S19993C5__8S19993C3[] = {
  0,
  ABISELECT(-344,-252),
  (VTBL_ENTRY)&(_ZTI8S19993C5[0]),
  (VTBL_ENTRY)&_ZN9S19993C123v21Ev,
};
extern void _ZN9S19993C133v30Ev();
extern void _ZN9S19993C133v31Ev();
extern void _ZN9S19993C133v32Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C13__8S19993C5__8S19993C3[] = {
  0,
  0,
  0,
  ABISELECT(-248,-180),
  ABISELECT(24,12),
  ABISELECT(-376,-276),
  (VTBL_ENTRY)&(_ZTI8S19993C5[0]),
  (VTBL_ENTRY)&_ZN9S19993C133v30Ev,
  (VTBL_ENTRY)&_ZN9S19993C133v31Ev,
  (VTBL_ENTRY)&_ZN9S19993C133v32Ev,
};
extern void _ZN8S19993C23v10Ev();
extern void _ZN9S19993C143v25Ev();
extern void _ZN9S19993C143v26Ev();
extern void _ZN9S19993C143v27Ev();
extern void _ZN9S19993C143v28Ev();
extern void _ZN9S19993C143v29Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C14__8S19993C5__8S19993C3[] = {
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-272,-192),
  ABISELECT(-400,-288),
  (VTBL_ENTRY)&(_ZTI8S19993C5[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v29Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C109S19993C14__A2__8S19993C5__8S19993C3[] = {
  ABISELECT(-528,-380),
  (VTBL_ENTRY)&(_ZTI8S19993C5[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern void _ZN9S19993C133v30Ev();
extern void _ZN9S19993C133v31Ev();
extern void _ZN9S19993C133v32Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C13__8S19993C3[] = {
  ABISELECT(-248,-180),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C13[0]),
  (VTBL_ENTRY)&_ZN9S19993C133v30Ev,
  (VTBL_ENTRY)&_ZN9S19993C133v31Ev,
  (VTBL_ENTRY)&_ZN9S19993C133v32Ev,
};
extern void _ZN8S19993C23v10Ev();
extern void _ZN9S19993C143v25Ev();
extern void _ZN9S19993C143v26Ev();
extern void _ZN9S19993C143v27Ev();
extern void _ZN9S19993C143v28Ev();
extern void _ZN9S19993C143v29Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C14__9S19993C13__8S19993C3[] = {
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-272,-192),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19993C13[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v29Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C109S19993C14__9S19993C13__8S19993C3[] = {
  ABISELECT(-152,-104),
  (VTBL_ENTRY)&(_ZTI9S19993C13[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern void _ZN8S19993C23v10Ev();
extern void _ZN9S19993C143v25Ev();
extern void _ZN9S19993C143v26Ev();
extern void _ZN9S19993C143v27Ev();
extern void _ZN9S19993C143v28Ev();
extern void _ZN9S19993C143v29Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C14__8S19993C3[] = {
  ABISELECT(-272,-192),
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C14[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v29Ev,
};
static  VTT_ENTRY vtt_S19993C3[] = {
  {&(_ZTV8S19993C3[13]),  13,150},
  {&(_ZTV8S19993C3[53]),  53,150},
  {&(_ZTV8S19993C3[13]),  13,150},
  {&(_ZTV8S19993C3[91]),  91,150},
  {&(_ZTV8S19993C3[100]),  100,150},
  {&(_ZTV8S19993C3[71]),  71,150},
  {&(_ZTV8S19993C3[105]),  105,150},
  {&(_ZTV8S19993C3[77]),  77,150},
  {&(_ZTV8S19993C3[110]),  110,150},
  {&(_ZTV8S19993C3[118]),  118,150},
  {&(_ZTV8S19993C3[136]),  136,150},
  {&(_ZTV8S19993C3[144]),  144,150},
  {&(_tg__ZTV8S19993C5__8S19993C3[10]),  10,24},
  {&(_tg__ZTV8S19993C78S19993C5__8S19993C3[6]),  6,12},
  {&(_tg__ZTV8S19993C88S19993C78S19993C5__8S19993C3[5]),  5,8},
  {&(_tg__ZTV11S19993C6_nt__8S19993C88S19993C78S19993C5__8S19993C3[4]),  4,6},
  {&(_tg__ZTV9S19993C10__8S19993C88S19993C78S19993C5__8S19993C3[8]),  8,14},
  {&(_tg__ZTV11S19993C6_nt__8S19993C78S19993C5__8S19993C3[4]),  4,6},
  {&(_tg__ZTV9S19993C10__8S19993C78S19993C5__8S19993C3[8]),  8,14},
  {&(_tg__ZTV8S19993C2__8S19993C78S19993C5__8S19993C3[3]),  3,4},
  {&(_tg__ZTV9S19993C118S19993C5__8S19993C3[4]),  4,8},
  {&(_tg__ZTV8S19993C9__9S19993C118S19993C5__8S19993C3[4]),  4,6},
  {&(_tg__ZTV11S19993C6_nt__8S19993C5__8S19993C3[4]),  4,6},
  {&(_tg__ZTV9S19993C10__8S19993C5__8S19993C3[8]),  8,14},
  {&(_tg__ZTV8S19993C2__8S19993C5__8S19993C3[3]),  3,4},
  {&(_tg__ZTV9S19993C11__8S19993C5__8S19993C3[4]),  4,8},
  {&(_tg__ZTV8S19993C9__A1__8S19993C5__8S19993C3[4]),  4,6},
  {&(_tg__ZTV9S19993C12__A1__8S19993C5__8S19993C3[3]),  3,4},
  {&(_tg__ZTV9S19993C13__8S19993C5__8S19993C3[7]),  7,10},
  {&(_tg__ZTV9S19993C14__8S19993C5__8S19993C3[15]),  15,21},
  {&(_tg__ZTV9S19993C109S19993C14__A2__8S19993C5__8S19993C3[2]),  2,8},
  {&(_tg__ZTV9S19993C13__8S19993C3[4]),  4,7},
  {&(_tg__ZTV9S19993C14__9S19993C13__8S19993C3[15]),  15,21},
  {&(_tg__ZTV9S19993C109S19993C14__9S19993C13__8S19993C3[2]),  2,8},
  {&(_tg__ZTV9S19993C14__8S19993C3[3]),  3,9},
};
extern VTBL_ENTRY _ZTI8S19993C3[];
extern  VTBL_ENTRY _ZTV8S19993C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19993C3[];
static VTBL_ENTRY alt_thunk_names1[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N8S19993C3D0Ev,_ZTv0_n56_N8S19993C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19993C3D0Ev,_ZThn8_N8S19993C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N8S19993C3D1Ev,_ZTv0_n56_N8S19993C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19993C3D1Ev,_ZThn8_N8S19993C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19993C3 = {  "S19993C3", // class name
  bases_S19993C3, 21,
  &(vtc_S19993C3[0]), // expected_vtbl_contents
  &(vtt_S19993C3[0]), // expected_vtt_contents
  ABISELECT(832,624), // object size
  NSPAIRA(_ZTI8S19993C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19993C3),150, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19993C3),35, //virtual table table var
  19, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names1,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19993C18  : virtual S19993C12 , S19993C9 , virtual S19993C6_nt , S19993C15 , S19993C2 {
  int s19993c18f0;
  virtual void  v54(); // _ZN9S19993C183v54Ev
  virtual void  v55(); // _ZN9S19993C183v55Ev
  virtual void  v56(); // _ZN9S19993C183v56Ev
  ~S19993C18(); // tgen
  S19993C18(); // tgen
};
//SIG(-1 S19993C18) C1{ VBC2{ v4 FC3{ m} Fi[4]} BC4{ v5 v6} VBC5{ v7 v8} BC6{ BC4 VBC7{ VBC3 VBC5 BC4 VBC8{ BC5 v9 v10 v11 v12 Fi[5] Fp FL[4]} v13} BC3 BC8 BC5 v14} BC9{ v15 Fp FD[7]} v1 v2 v3 Fi}


void  S19993C18 ::v54(){vfunc_called(this, "_ZN9S19993C183v54Ev");}
void  S19993C18 ::v55(){vfunc_called(this, "_ZN9S19993C183v55Ev");}
void  S19993C18 ::v56(){vfunc_called(this, "_ZN9S19993C183v56Ev");}
S19993C18 ::~S19993C18(){ note_dtor("S19993C18", this);} // tgen
S19993C18 ::S19993C18(){ note_ctor("S19993C18", this);} // tgen

static void Test_S19993C18()
{
  extern Class_Descriptor cd_S19993C18;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(23,66)];
    init_test(&cd_S19993C18, buf);
    S19993C18 *dp, &lv = *(dp=new (buf) S19993C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(352,260), "sizeof(S19993C18)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19993C18)");
    check_base_class_offset(lv, (S19993C12*), ABISELECT(232,168), "S19993C18");
    /*is_ambiguous_... S19993C18::S19993C9 */ AMB_check_base_class_offset(lv, (S19993C9*), 0, "S19993C18");
    /*is_ambiguous_... S19993C18::S19993C6_nt */ AMB_check_base_class_offset(lv, (S19993C6_nt*), ABISELECT(264,192), "S19993C18");
    /*is_ambiguous_... S19993C8::S19993C6_nt */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C8*), ABISELECT(264,192), "S19993C18");
    /*is_ambiguous_... S19993C15::S19993C9 */ AMB_check_base_class_offset(lv, (S19993C9*)(S19993C15*), ABISELECT(8,4), "S19993C18");
    check_base_class_offset(lv, (S77C13_nt*)(S19993C8*), 0, "S19993C18");
    check_base_class_offset(lv, (S19993C9*)(S19993C8*), ABISELECT(272,196), "S19993C18");
    /*is_ambiguous_... S19993C18::S19993C10 */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C10*), ABISELECT(280,200), "S19993C18");
    check_base_class_offset(lv, (S19993C10*)(S19993C8*), ABISELECT(280,200), "S19993C18");
    check_base_class_offset(lv, (S19993C8*)(S19993C15*), ABISELECT(272,196), "S19993C18");
    /*is_ambiguous_... S19993C15::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S19993C15*), ABISELECT(8,4), "S19993C18");
    /*is_ambiguous_... S19993C15::S19993C10 */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C10*)(S19993C15*), ABISELECT(16,8), "S19993C18");
    /*is_ambiguous_... S19993C15::S19993C10 */ AMB_check_base_class_offset(lv, (S19993C10*)(S19993C15*), ABISELECT(16,8), "S19993C18");
    /*is_ambiguous_... S19993C15::S19993C6_nt */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C15*), ABISELECT(88,68), "S19993C18");
    check_base_class_offset(lv, (S19993C15*), ABISELECT(8,4), "S19993C18");
    check_base_class_offset(lv, (S19993C2*), ABISELECT(96,72), "S19993C18");
    check_field_offset(lv, s19993c18f0, ABISELECT(224,164), "S19993C18.s19993c18f0");
    test_class_info(&lv, &cd_S19993C18);
    dp->~S19993C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19993C18(Test_S19993C18, "S19993C18", ABISELECT(352,260));

#else // __cplusplus

extern void _ZN9S19993C18C1Ev();
extern void _ZN9S19993C18D1Ev();
Name_Map name_map_S19993C18[] = {
  NSPAIR(_ZN9S19993C18C1Ev),
  NSPAIR(_ZN9S19993C18D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19993C12;
extern VTBL_ENTRY _ZTI9S19993C12[];
extern  VTBL_ENTRY _ZTV9S19993C12[];
extern Class_Descriptor cd_S19993C9;
extern VTBL_ENTRY _ZTI8S19993C9[];
extern  VTBL_ENTRY _ZTV8S19993C9[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C9;
extern VTBL_ENTRY _ZTI8S19993C9[];
extern  VTBL_ENTRY _ZTV8S19993C9[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19993C9;
extern VTBL_ENTRY _ZTI8S19993C9[];
extern  VTBL_ENTRY _ZTV8S19993C9[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C10;
extern VTBL_ENTRY _ZTI9S19993C10[];
extern  VTBL_ENTRY _ZTV9S19993C10[];
extern Class_Descriptor cd_S19993C8;
extern VTBL_ENTRY _ZTI8S19993C8[];
extern  VTBL_ENTRY _ZTV8S19993C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19993C8[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C10;
extern VTBL_ENTRY _ZTI9S19993C10[];
extern  VTBL_ENTRY _ZTV9S19993C10[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C15;
extern VTBL_ENTRY _ZTI9S19993C15[];
extern  VTBL_ENTRY _ZTV9S19993C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C15[];
extern Class_Descriptor cd_S19993C2;
extern VTBL_ENTRY _ZTI8S19993C2[];
extern  VTBL_ENTRY _ZTV8S19993C2[];
static Base_Class bases_S19993C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19993C12,    ABISELECT(232,168), //bcp->offset
    36, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19993C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19993C6_nt,    ABISELECT(264,192), //bcp->offset
    40, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19993C9,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19993C9,    ABISELECT(272,196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19993C6_nt,    ABISELECT(280,200), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19993C10,    ABISELECT(280,200), //bcp->offset
    57, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19993C8,    ABISELECT(272,196), //bcp->offset
    46, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S77C13_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19993C6_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19993C10,    ABISELECT(16,8), //bcp->offset
    21, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19993C6_nt,    ABISELECT(88,68), //bcp->offset
    29, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19993C15,    ABISELECT(8,4), //bcp->offset
    12, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19993C2,    ABISELECT(96,72), //bcp->offset
    33, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19993C18[];
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN9S19993C183v54Ev();
extern void _ZN9S19993C183v55Ev();
extern void _ZN9S19993C183v56Ev();
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN9S19993C153v53Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN8S19993C23v10Ev();
extern void _ZN9S19993C123v21Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY vtc_S19993C18[] = {
  ABISELECT(280,200),
  0,
  ABISELECT(272,196),
  ABISELECT(264,192),
  ABISELECT(232,168),
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C18[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19993C183v54Ev,
  (VTBL_ENTRY)&_ZN9S19993C183v55Ev,
  (VTBL_ENTRY)&_ZN9S19993C183v56Ev,
  ABISELECT(272,196),
  ABISELECT(256,188),
  ABISELECT(-8,-4),
  ABISELECT(264,192),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19993C18[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19993C153v53Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19993C18[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
  ABISELECT(-88,-68),
  (VTBL_ENTRY)&(_ZTI9S19993C18[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  ABISELECT(-96,-72),
  (VTBL_ENTRY)&(_ZTI9S19993C18[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
  0,
  ABISELECT(-232,-168),
  (VTBL_ENTRY)&(_ZTI9S19993C18[0]),
  (VTBL_ENTRY)&_ZN9S19993C123v21Ev,
  0,
  0,
  ABISELECT(-264,-192),
  (VTBL_ENTRY)&(_ZTI9S19993C18[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  0,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  ABISELECT(-272,-196),
  ABISELECT(-272,-196),
  (VTBL_ENTRY)&(_ZTI9S19993C18[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-280,-200),
  (VTBL_ENTRY)&(_ZTI9S19993C18[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern VTBL_ENTRY _ZTV9S19993C18[];
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN9S19993C153v53Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C15__9S19993C18[] = {
  ABISELECT(272,196),
  ABISELECT(256,188),
  ABISELECT(-8,-4),
  ABISELECT(264,192),
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C15[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19993C153v53Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C8__9S19993C15__9S19993C18[] = {
  0,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  ABISELECT(-272,-196),
  ABISELECT(-264,-192),
  (VTBL_ENTRY)&(_ZTI9S19993C15[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
static  VTBL_ENTRY _tg__ZTV11S19993C6_nt__9S19993C15__9S19993C18[] = {
  0,
  0,
  ABISELECT(-256,-188),
  (VTBL_ENTRY)&(_ZTI9S19993C15[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C10__9S19993C15__9S19993C18[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-272,-196),
  (VTBL_ENTRY)&(_ZTI9S19993C15[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C8__9S19993C18[] = {
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  ABISELECT(-272,-196),
  0,
  (VTBL_ENTRY)&(_ZTI8S19993C8[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
static  VTBL_ENTRY _tg__ZTV11S19993C6_nt__8S19993C8__9S19993C18[] = {
  0,
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S19993C8[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C10__8S19993C8__9S19993C18[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19993C8[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
static  VTT_ENTRY vtt_S19993C18[] = {
  {&(_ZTV9S19993C18[7]),  7,71},
  {&(_tg__ZTV9S19993C15__9S19993C18[6]),  6,9},
  {&(_tg__ZTV8S19993C8__9S19993C15__9S19993C18[8]),  8,11},
  {&(_tg__ZTV11S19993C6_nt__9S19993C15__9S19993C18[4]),  4,6},
  {&(_tg__ZTV9S19993C10__9S19993C15__9S19993C18[8]),  8,14},
  {&(_ZTV9S19993C18[39]),  39,71},
  {&(_ZTV9S19993C18[44]),  44,71},
  {&(_ZTV9S19993C18[18]),  18,71},
  {&(_ZTV9S19993C18[54]),  54,71},
  {&(_ZTV9S19993C18[65]),  65,71},
  {&(_tg__ZTV8S19993C8__9S19993C18[5]),  5,8},
  {&(_tg__ZTV11S19993C6_nt__8S19993C8__9S19993C18[4]),  4,6},
  {&(_tg__ZTV9S19993C10__8S19993C8__9S19993C18[8]),  8,14},
};
extern VTBL_ENTRY _ZTI9S19993C18[];
extern  VTBL_ENTRY _ZTV9S19993C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C18[];
Class_Descriptor cd_S19993C18 = {  "S19993C18", // class name
  bases_S19993C18, 15,
  &(vtc_S19993C18[0]), // expected_vtbl_contents
  &(vtt_S19993C18[0]), // expected_vtt_contents
  ABISELECT(352,260), // object size
  NSPAIRA(_ZTI9S19993C18),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19993C18),71, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19993C18),13, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19993C17  : virtual S19993C11 {
  ::S19993C18 s19993c17f0;
  ::S19993C10 s19993c17f1;
  int s19993c17f2;
  ::S19993C7 s19993c17f3;
  virtual void  v44(); // _ZN9S19993C173v44Ev
  virtual void  v45(); // _ZN9S19993C173v45Ev
  virtual void  v46(); // _ZN9S19993C173v46Ev
  virtual void  v47(); // _ZN9S19993C173v47Ev
  ~S19993C17(); // tgen
  S19993C17(); // tgen
};
//SIG(-1 S19993C17) C1{ VBC2{ VBC3{ v5 v6} VBC4{ m} BC5{ v7 FC4 Fi[4]} BC6{ BC7{ v8 v9} v10 v11 v12 v13 Fi[5] Fp FL[4]} v14 v15 v16} v1 v2 v3 v4 FC8{ VBC5 BC3 VBC7 BC9{ BC3 VBC10{ VBC4 VBC7 BC3 VBC6 v20} BC4 BC6 BC7 v21} BC11{ v22 Fp FD[7]} v17 v18 v19 Fi} FC6 Fi FC12{ BC10 VBC11 vd v23 Fp}}


void  S19993C17 ::v44(){vfunc_called(this, "_ZN9S19993C173v44Ev");}
void  S19993C17 ::v45(){vfunc_called(this, "_ZN9S19993C173v45Ev");}
void  S19993C17 ::v46(){vfunc_called(this, "_ZN9S19993C173v46Ev");}
void  S19993C17 ::v47(){vfunc_called(this, "_ZN9S19993C173v47Ev");}
S19993C17 ::~S19993C17(){ note_dtor("S19993C17", this);} // tgen
S19993C17 ::S19993C17(){ note_ctor("S19993C17", this);} // tgen

static void Test_S19993C17()
{
  extern Class_Descriptor cd_S19993C17;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(50,145)];
    init_test(&cd_S19993C17, buf);
    S19993C17 *dp, &lv = *(dp=new (buf) S19993C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(784,576), "sizeof(S19993C17)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19993C17)");
    check_base_class_offset(lv, (S19993C9*)(S19993C11*), 0, "S19993C17");
    check_base_class_offset(lv, (S77C13_nt*)(S19993C11*), 0, "S19993C17");
    check_base_class_offset(lv, (S19993C12*)(S19993C11*), ABISELECT(672,492), "S19993C17");
    check_base_class_offset(lv, (S19993C6_nt*)(S19993C10*)(S19993C11*), ABISELECT(704,516), "S19993C17");
    check_base_class_offset(lv, (S19993C10*)(S19993C11*), ABISELECT(704,516), "S19993C17");
    check_base_class_offset(lv, (S19993C11*), ABISELECT(672,492), "S19993C17");
    check_field_offset(lv, s19993c17f0, ABISELECT(16,4), "S19993C17.s19993c17f0");
    check_field_offset(lv, s19993c17f1, ABISELECT(368,264), "S19993C17.s19993c17f1");
    check_field_offset(lv, s19993c17f2, ABISELECT(440,324), "S19993C17.s19993c17f2");
    check_field_offset(lv, s19993c17f3, ABISELECT(448,328), "S19993C17.s19993c17f3");
    test_class_info(&lv, &cd_S19993C17);
    dp->~S19993C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19993C17(Test_S19993C17, "S19993C17", ABISELECT(784,576));

#else // __cplusplus

extern void _ZN9S19993C17C1Ev();
extern void _ZN9S19993C17D1Ev();
Name_Map name_map_S19993C17[] = {
  NSPAIR(_ZN9S19993C17C1Ev),
  NSPAIR(_ZN9S19993C17D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19993C9;
extern VTBL_ENTRY _ZTI8S19993C9[];
extern  VTBL_ENTRY _ZTV8S19993C9[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19993C12;
extern VTBL_ENTRY _ZTI9S19993C12[];
extern  VTBL_ENTRY _ZTV9S19993C12[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C10;
extern VTBL_ENTRY _ZTI9S19993C10[];
extern  VTBL_ENTRY _ZTV9S19993C10[];
extern Class_Descriptor cd_S19993C11;
extern VTBL_ENTRY _ZTI9S19993C11[];
extern  VTBL_ENTRY _ZTV9S19993C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C11[];
static Base_Class bases_S19993C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19993C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19993C12,    ABISELECT(672,492), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19993C6_nt,    ABISELECT(704,516), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19993C10,    ABISELECT(704,516), //bcp->offset
    31, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19993C11,    ABISELECT(672,492), //bcp->offset
    13, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19993C17[];
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN9S19993C173v44Ev();
extern void _ZN9S19993C173v45Ev();
extern void _ZN9S19993C173v46Ev();
extern void _ZN9S19993C173v47Ev();
extern void _ZN9S19993C123v21Ev();
extern void _ZN9S19993C113v22Ev();
extern void _ZN9S19993C113v23Ev();
extern void _ZN9S19993C113v24Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY vtc_S19993C17[] = {
  0,
  0,
  ABISELECT(672,492),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C17[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19993C173v44Ev,
  (VTBL_ENTRY)&_ZN9S19993C173v45Ev,
  (VTBL_ENTRY)&_ZN9S19993C173v46Ev,
  (VTBL_ENTRY)&_ZN9S19993C173v47Ev,
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  0,
  0,
  0,
  0,
  ABISELECT(-672,-492),
  ABISELECT(-672,-492),
  ABISELECT(-672,-492),
  (VTBL_ENTRY)&(_ZTI9S19993C17[0]),
  (VTBL_ENTRY)&_ZN9S19993C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v22Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v23Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v24Ev,
  ABISELECT(-704,-516),
  (VTBL_ENTRY)&(_ZTI9S19993C17[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern VTBL_ENTRY _ZTV9S19993C17[];
extern void _ZN9S19993C123v21Ev();
extern void _ZN9S19993C113v22Ev();
extern void _ZN9S19993C113v23Ev();
extern void _ZN9S19993C113v24Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C11__9S19993C17[] = {
  ABISELECT(-672,-492),
  ABISELECT(-672,-492),
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C11[0]),
  (VTBL_ENTRY)&_ZN9S19993C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v22Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v23Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v24Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C9__9S19993C11__9S19993C17[] = {
  0,
  0,
  ABISELECT(672,492),
  (VTBL_ENTRY)&(_ZTI9S19993C11[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
};
static  VTT_ENTRY vtt_S19993C17[] = {
  {&(_ZTV9S19993C17[7]),  7,39},
  {&(_ZTV9S19993C17[27]),  27,39},
  {&(_ZTV9S19993C17[7]),  7,39},
  {&(_ZTV9S19993C17[33]),  33,39},
  {&(_tg__ZTV9S19993C11__9S19993C17[4]),  4,8},
  {&(_tg__ZTV8S19993C9__9S19993C11__9S19993C17[4]),  4,6},
};
extern VTBL_ENTRY _ZTI9S19993C17[];
extern  VTBL_ENTRY _ZTV9S19993C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C17[];
Class_Descriptor cd_S19993C17 = {  "S19993C17", // class name
  bases_S19993C17, 6,
  &(vtc_S19993C17[0]), // expected_vtbl_contents
  &(vtt_S19993C17[0]), // expected_vtt_contents
  ABISELECT(784,576), // object size
  NSPAIRA(_ZTI9S19993C17),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19993C17),39, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19993C17),6, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19993C16  : virtual S19993C11 , virtual S19993C17 , S19993C13 , S19993C7 {
  int s19993c16f0:13;
  virtual  ~S19993C16(); // _ZN9S19993C16D2Ev
  virtual void  v48(); // _ZN9S19993C163v48Ev
  virtual void  v49(); // _ZN9S19993C163v49Ev
  virtual void  v50(); // _ZN9S19993C163v50Ev
  virtual void  v51(); // _ZN9S19993C163v51Ev
  virtual void  v52(); // _ZN9S19993C163v52Ev
  S19993C16(); // tgen
};
//SIG(-1 S19993C16) C1{ VBC2{ VBC3{ v6 v7} VBC4{ m} BC5{ v8 FC4 Fi[4]} BC6{ BC7{ v9 v10} v11 v12 v13 v14 Fi[5] Fp FL[4]} v15 v16 v17} VBC8{ VBC2 v18 v19 v20 v21 FC9{ VBC5 BC3 VBC7 BC10{ BC3 VBC11{ VBC4 VBC7 BC3 VBC6 v31} BC4 BC6 BC7 v36} BC12{ v22 Fp FD[7]} v33 v34 v35 Fi} FC6 Fi FC13{ BC11 VBC12 vd v32 Fp}} BC14{ VBC15{ VBC4 BC12 BC6 v23 v24 v25 v26 v27 Fi[10] FC10} v28 v29 v30 Fi[2]} BC13 vd v1 v2 v3 v4 v5 Fi:13}


 S19993C16 ::~S19993C16(){ note_dtor("S19993C16", this);}
void  S19993C16 ::v48(){vfunc_called(this, "_ZN9S19993C163v48Ev");}
void  S19993C16 ::v49(){vfunc_called(this, "_ZN9S19993C163v49Ev");}
void  S19993C16 ::v50(){vfunc_called(this, "_ZN9S19993C163v50Ev");}
void  S19993C16 ::v51(){vfunc_called(this, "_ZN9S19993C163v51Ev");}
void  S19993C16 ::v52(){vfunc_called(this, "_ZN9S19993C163v52Ev");}
S19993C16 ::S19993C16(){ note_ctor("S19993C16", this);} // tgen

static void Test_S19993C16()
{
  extern Class_Descriptor cd_S19993C16;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(91,272)];
    init_test(&cd_S19993C16, buf);
    S19993C16 *dp, &lv = *(dp=new (buf) S19993C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1440,1084), "sizeof(S19993C16)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19993C16)");
    check_base_class_offset(lv, (S19993C9*)(S19993C11*), ABISELECT(144,108), "S19993C16");
    check_base_class_offset(lv, (S77C13_nt*)(S19993C11*), 0, "S19993C16");
    check_base_class_offset(lv, (S77C13_nt*)(S19993C14*), 0, "S19993C16");
    check_base_class_offset(lv, (S77C13_nt*)(S19993C8*)(S19993C7*), 0, "S19993C16");
    check_base_class_offset(lv, (S19993C12*)(S19993C11*), ABISELECT(40,24), "S19993C16");
    check_base_class_offset(lv, (S19993C6_nt*)(S19993C10*)(S19993C11*), ABISELECT(72,48), "S19993C16");
    check_base_class_offset(lv, (S19993C10*)(S19993C11*), ABISELECT(72,48), "S19993C16");
    check_base_class_offset(lv, (S19993C11*), ABISELECT(40,24), "S19993C16");
    check_base_class_offset(lv, (S19993C11*)(S19993C17*), ABISELECT(40,24), "S19993C16");
    check_base_class_offset(lv, (S19993C17*), ABISELECT(144,108), "S19993C16");
    check_base_class_offset(lv, (S19993C2*)(S19993C14*), ABISELECT(816,600), "S19993C16");
    check_base_class_offset(lv, (S19993C6_nt*)(S19993C10*)(S19993C14*), ABISELECT(944,692), "S19993C16");
    check_base_class_offset(lv, (S19993C10*)(S19993C14*), ABISELECT(944,692), "S19993C16");
    check_base_class_offset(lv, (S19993C14*)(S19993C13*), ABISELECT(816,600), "S19993C16");
    check_base_class_offset(lv, (S19993C13*), 0, "S19993C16");
    /*is_ambiguous_... S19993C8::S19993C6_nt */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C8*)(S19993C7*), ABISELECT(1232,928), "S19993C16");
    check_base_class_offset(lv, (S19993C9*)(S19993C8*)(S19993C7*), ABISELECT(16,12), "S19993C16");
    /*is_ambiguous_... S19993C16::S19993C10 */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C10*), ABISELECT(1240,932), "S19993C16");
    check_base_class_offset(lv, (S19993C10*)(S19993C8*)(S19993C7*), ABISELECT(1240,932), "S19993C16");
    check_base_class_offset(lv, (S19993C8*)(S19993C7*), ABISELECT(16,12), "S19993C16");
    check_base_class_offset(lv, (S19993C2*)(S19993C7*), ABISELECT(1312,992), "S19993C16");
    check_base_class_offset(lv, (S19993C7*), ABISELECT(16,12), "S19993C16");
    set_bf_and_test(lv, s19993c16f0, ABISELECT(32,20), 0, 13, 1, "S19993C16");
    set_bf_and_test(lv, s19993c16f0, ABISELECT(32,20), 0, 13, hide_sll(1LL<<12), "S19993C16");
    test_class_info(&lv, &cd_S19993C16);
    dp->~S19993C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19993C16(Test_S19993C16, "S19993C16", ABISELECT(1440,1084));

#else // __cplusplus

extern void _ZN9S19993C16C1Ev();
extern void _ZN9S19993C16D2Ev();
Name_Map name_map_S19993C16[] = {
  NSPAIR(_ZN9S19993C16C1Ev),
  NSPAIR(_ZN9S19993C16D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19993C9;
extern VTBL_ENTRY _ZTI8S19993C9[];
extern  VTBL_ENTRY _ZTV8S19993C9[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19993C12;
extern VTBL_ENTRY _ZTI9S19993C12[];
extern  VTBL_ENTRY _ZTV9S19993C12[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C10;
extern VTBL_ENTRY _ZTI9S19993C10[];
extern  VTBL_ENTRY _ZTV9S19993C10[];
extern Class_Descriptor cd_S19993C11;
extern VTBL_ENTRY _ZTI9S19993C11[];
extern  VTBL_ENTRY _ZTV9S19993C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C11[];
extern Class_Descriptor cd_S19993C17;
extern VTBL_ENTRY _ZTI9S19993C17[];
extern  VTBL_ENTRY _ZTV9S19993C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C17[];
extern Class_Descriptor cd_S19993C2;
extern VTBL_ENTRY _ZTI8S19993C2[];
extern  VTBL_ENTRY _ZTV8S19993C2[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C10;
extern VTBL_ENTRY _ZTI9S19993C10[];
extern  VTBL_ENTRY _ZTV9S19993C10[];
extern Class_Descriptor cd_S19993C14;
extern VTBL_ENTRY _ZTI9S19993C14[];
extern  VTBL_ENTRY _ZTV9S19993C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C14[];
extern Class_Descriptor cd_S19993C13;
extern VTBL_ENTRY _ZTI9S19993C13[];
extern  VTBL_ENTRY _ZTV9S19993C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C13[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C9;
extern VTBL_ENTRY _ZTI8S19993C9[];
extern  VTBL_ENTRY _ZTV8S19993C9[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C10;
extern VTBL_ENTRY _ZTI9S19993C10[];
extern  VTBL_ENTRY _ZTV9S19993C10[];
extern Class_Descriptor cd_S19993C8;
extern VTBL_ENTRY _ZTI8S19993C8[];
extern  VTBL_ENTRY _ZTV8S19993C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19993C8[];
extern Class_Descriptor cd_S19993C2;
extern VTBL_ENTRY _ZTI8S19993C2[];
extern  VTBL_ENTRY _ZTV8S19993C2[];
extern Class_Descriptor cd_S19993C7;
extern VTBL_ENTRY _ZTI8S19993C7[];
extern  VTBL_ENTRY _ZTV8S19993C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19993C7[];
static Base_Class bases_S19993C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19993C9,    ABISELECT(144,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19993C12,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19993C6_nt,    ABISELECT(72,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19993C10,    ABISELECT(72,48), //bcp->offset
    50, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19993C11,    ABISELECT(40,24), //bcp->offset
    32, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19993C17,    ABISELECT(144,108), //bcp->offset
    58, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19993C2,    ABISELECT(816,600), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19993C6_nt,    ABISELECT(944,692), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19993C10,    ABISELECT(944,692), //bcp->offset
    96, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19993C14,    ABISELECT(816,600), //bcp->offset
    75, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19993C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19993C6_nt,    ABISELECT(1232,928), //bcp->offset
    104, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S19993C9,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19993C6_nt,    ABISELECT(1240,932), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19993C10,    ABISELECT(1240,932), //bcp->offset
    110, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S19993C8,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19993C2,    ABISELECT(1312,992), //bcp->offset
    124, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S19993C7,    ABISELECT(16,12), //bcp->offset
    20, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19993C16[];
extern void _ZN9S19993C133v30Ev();
extern void _ZN9S19993C133v31Ev();
extern void _ZN9S19993C133v32Ev();
extern void _ZN9S19993C16D1Ev();
extern void _ZN9S19993C16D0Ev();
extern void _ZN9S19993C163v48Ev();
extern void _ZN9S19993C163v49Ev();
extern void _ZN9S19993C163v50Ev();
extern void _ZN9S19993C163v51Ev();
extern void _ZN9S19993C163v52Ev();
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
extern void ABISELECT(_ZThn16_N9S19993C16D1Ev,_ZThn12_N9S19993C16D1Ev)();
extern void ABISELECT(_ZThn16_N9S19993C16D0Ev,_ZThn12_N9S19993C16D0Ev)();
extern void _ZN8S19993C73v20Ev();
extern void _ZN9S19993C123v21Ev();
extern void _ZN9S19993C113v22Ev();
extern void _ZN9S19993C113v23Ev();
extern void _ZN9S19993C113v24Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN9S19993C173v44Ev();
extern void _ZN9S19993C173v45Ev();
extern void _ZN9S19993C173v46Ev();
extern void _ZN9S19993C173v47Ev();
extern void _ZN8S19993C23v10Ev();
extern void _ZN9S19993C143v25Ev();
extern void _ZN9S19993C143v26Ev();
extern void _ZN9S19993C143v27Ev();
extern void _ZN9S19993C143v28Ev();
extern void _ZN9S19993C143v29Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
extern void _ZN8S19993C23v10Ev();
static  VTBL_ENTRY vtc_S19993C16[] = {
  ABISELECT(1312,992),
  ABISELECT(1240,932),
  ABISELECT(1232,928),
  ABISELECT(144,108),
  ABISELECT(144,108),
  ABISELECT(40,24),
  0,
  ABISELECT(816,600),
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C16[0]),
  (VTBL_ENTRY)&_ZN9S19993C133v30Ev,
  (VTBL_ENTRY)&_ZN9S19993C133v31Ev,
  (VTBL_ENTRY)&_ZN9S19993C133v32Ev,
  (VTBL_ENTRY)&_ZN9S19993C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19993C16D0Ev,
  (VTBL_ENTRY)&_ZN9S19993C163v48Ev,
  (VTBL_ENTRY)&_ZN9S19993C163v49Ev,
  (VTBL_ENTRY)&_ZN9S19993C163v50Ev,
  (VTBL_ENTRY)&_ZN9S19993C163v51Ev,
  (VTBL_ENTRY)&_ZN9S19993C163v52Ev,
  ABISELECT(1296,980),
  ABISELECT(1224,920),
  ABISELECT(1216,916),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19993C16[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19993C16D1Ev,_ZThn12_N9S19993C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19993C16D0Ev,_ZThn12_N9S19993C16D0Ev),
  (VTBL_ENTRY)&_ZN8S19993C73v20Ev,
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  0,
  0,
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(104,84),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI9S19993C16[0]),
  (VTBL_ENTRY)&_ZN9S19993C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v22Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v23Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v24Ev,
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI9S19993C16[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-144,-108),
  0,
  ABISELECT(-104,-84),
  0,
  0,
  ABISELECT(-144,-108),
  (VTBL_ENTRY)&(_ZTI9S19993C16[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19993C173v44Ev,
  (VTBL_ENTRY)&_ZN9S19993C173v45Ev,
  (VTBL_ENTRY)&_ZN9S19993C173v46Ev,
  (VTBL_ENTRY)&_ZN9S19993C173v47Ev,
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-816,-600),
  ABISELECT(-816,-600),
  (VTBL_ENTRY)&(_ZTI9S19993C16[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v29Ev,
  ABISELECT(-944,-692),
  (VTBL_ENTRY)&(_ZTI9S19993C16[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
  0,
  0,
  ABISELECT(-1232,-928),
  (VTBL_ENTRY)&(_ZTI9S19993C16[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-1240,-932),
  (VTBL_ENTRY)&(_ZTI9S19993C16[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
  0,
  ABISELECT(-1312,-992),
  (VTBL_ENTRY)&(_ZTI9S19993C16[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
};
extern VTBL_ENTRY _ZTV9S19993C16[];
extern void _ZN9S19993C133v30Ev();
extern void _ZN9S19993C133v31Ev();
extern void _ZN9S19993C133v32Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C13__9S19993C16[] = {
  0,
  ABISELECT(816,600),
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C13[0]),
  (VTBL_ENTRY)&_ZN9S19993C133v30Ev,
  (VTBL_ENTRY)&_ZN9S19993C133v31Ev,
  (VTBL_ENTRY)&_ZN9S19993C133v32Ev,
};
extern void _ZN8S19993C23v10Ev();
extern void _ZN9S19993C143v25Ev();
extern void _ZN9S19993C143v26Ev();
extern void _ZN9S19993C143v27Ev();
extern void _ZN9S19993C143v28Ev();
extern void _ZN9S19993C143v29Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C14__9S19993C13__9S19993C16[] = {
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-816,-600),
  ABISELECT(-816,-600),
  (VTBL_ENTRY)&(_ZTI9S19993C13[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v29Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C109S19993C14__9S19993C13__9S19993C16[] = {
  ABISELECT(-944,-692),
  (VTBL_ENTRY)&(_ZTI9S19993C13[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
extern void _ZN8S19993C7D1Ev();
extern void _ZN8S19993C7D0Ev();
extern void _ZN8S19993C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C7__9S19993C16[] = {
  ABISELECT(1296,980),
  ABISELECT(1224,920),
  ABISELECT(1216,916),
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19993C7[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
  (VTBL_ENTRY)&_ZN8S19993C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19993C7D0Ev,
  (VTBL_ENTRY)&_ZN8S19993C73v20Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C88S19993C7__9S19993C16[] = {
  ABISELECT(1224,920),
  ABISELECT(1216,916),
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19993C8[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
static  VTBL_ENTRY _tg__ZTV11S19993C6_nt__8S19993C88S19993C7__9S19993C16[] = {
  0,
  0,
  ABISELECT(-1216,-916),
  (VTBL_ENTRY)&(_ZTI8S19993C8[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C10__8S19993C88S19993C7__9S19993C16[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-1224,-920),
  (VTBL_ENTRY)&(_ZTI8S19993C8[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
static  VTBL_ENTRY _tg__ZTV11S19993C6_nt__8S19993C7__9S19993C16[] = {
  0,
  0,
  ABISELECT(-1216,-916),
  (VTBL_ENTRY)&(_ZTI8S19993C7[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C10__8S19993C7__9S19993C16[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-1224,-920),
  (VTBL_ENTRY)&(_ZTI8S19993C7[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern void _ZN8S19993C23v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C2__8S19993C7__9S19993C16[] = {
  0,
  ABISELECT(-1296,-980),
  (VTBL_ENTRY)&(_ZTI8S19993C7[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
};
extern void _ZN9S19993C123v21Ev();
extern void _ZN9S19993C113v22Ev();
extern void _ZN9S19993C113v23Ev();
extern void _ZN9S19993C113v24Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C11__9S19993C16[] = {
  ABISELECT(-40,-24),
  ABISELECT(104,84),
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C11[0]),
  (VTBL_ENTRY)&_ZN9S19993C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v22Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v23Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v24Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C9__9S19993C11__9S19993C16[] = {
  0,
  0,
  ABISELECT(-104,-84),
  (VTBL_ENTRY)&(_ZTI9S19993C11[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN9S19993C173v44Ev();
extern void _ZN9S19993C173v45Ev();
extern void _ZN9S19993C173v46Ev();
extern void _ZN9S19993C173v47Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C17__9S19993C16[] = {
  ABISELECT(-144,-108),
  0,
  ABISELECT(-104,-84),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C17[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19993C173v44Ev,
  (VTBL_ENTRY)&_ZN9S19993C173v45Ev,
  (VTBL_ENTRY)&_ZN9S19993C173v46Ev,
  (VTBL_ENTRY)&_ZN9S19993C173v47Ev,
};
extern void _ZN9S19993C123v21Ev();
extern void _ZN9S19993C113v22Ev();
extern void _ZN9S19993C113v23Ev();
extern void _ZN9S19993C113v24Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C11__9S19993C17__9S19993C16[] = {
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  0,
  0,
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(104,84),
  ABISELECT(104,84),
  (VTBL_ENTRY)&(_ZTI9S19993C17[0]),
  (VTBL_ENTRY)&_ZN9S19993C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v22Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v23Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v24Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C109S19993C11__9S19993C17__9S19993C16[] = {
  ABISELECT(72,60),
  (VTBL_ENTRY)&(_ZTI9S19993C17[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern void _ZN8S19993C23v10Ev();
extern void _ZN9S19993C143v25Ev();
extern void _ZN9S19993C143v26Ev();
extern void _ZN9S19993C143v27Ev();
extern void _ZN9S19993C143v28Ev();
extern void _ZN9S19993C143v29Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C14__9S19993C16[] = {
  ABISELECT(-816,-600),
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C14[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v29Ev,
};
static  VTT_ENTRY vtt_S19993C16[] = {
  {&(_ZTV9S19993C16[10]),  10,128},
  {&(_tg__ZTV9S19993C13__9S19993C16[4]),  4,7},
  {&(_tg__ZTV9S19993C14__9S19993C13__9S19993C16[15]),  15,21},
  {&(_tg__ZTV9S19993C109S19993C14__9S19993C13__9S19993C16[2]),  2,8},
  {&(_tg__ZTV8S19993C7__9S19993C16[6]),  6,12},
  {&(_tg__ZTV8S19993C88S19993C7__9S19993C16[5]),  5,8},
  {&(_tg__ZTV11S19993C6_nt__8S19993C88S19993C7__9S19993C16[4]),  4,6},
  {&(_tg__ZTV9S19993C10__8S19993C88S19993C7__9S19993C16[8]),  8,14},
  {&(_tg__ZTV11S19993C6_nt__8S19993C7__9S19993C16[4]),  4,6},
  {&(_tg__ZTV9S19993C10__8S19993C7__9S19993C16[8]),  8,14},
  {&(_tg__ZTV8S19993C2__8S19993C7__9S19993C16[3]),  3,4},
  {&(_ZTV9S19993C16[46]),  46,128},
  {&(_ZTV9S19993C16[69]),  69,128},
  {&(_ZTV9S19993C16[52]),  52,128},
  {&(_ZTV9S19993C16[69]),  69,128},
  {&(_ZTV9S19993C16[90]),  90,128},
  {&(_ZTV9S19993C16[98]),  98,128},
  {&(_ZTV9S19993C16[26]),  26,128},
  {&(_ZTV9S19993C16[108]),  108,128},
  {&(_ZTV9S19993C16[118]),  118,128},
  {&(_ZTV9S19993C16[127]),  127,128},
  {&(_tg__ZTV9S19993C11__9S19993C16[4]),  4,8},
  {&(_tg__ZTV8S19993C9__9S19993C11__9S19993C16[4]),  4,6},
  {&(_tg__ZTV9S19993C17__9S19993C16[7]),  7,13},
  {&(_tg__ZTV9S19993C11__9S19993C17__9S19993C16[14]),  14,18},
  {&(_tg__ZTV9S19993C17__9S19993C16[7]),  7,13},
  {&(_tg__ZTV9S19993C109S19993C11__9S19993C17__9S19993C16[2]),  2,8},
  {&(_tg__ZTV9S19993C14__9S19993C16[3]),  3,9},
};
extern VTBL_ENTRY _ZTI9S19993C16[];
extern  VTBL_ENTRY _ZTV9S19993C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C16[];
Class_Descriptor cd_S19993C16 = {  "S19993C16", // class name
  bases_S19993C16, 19,
  &(vtc_S19993C16[0]), // expected_vtbl_contents
  &(vtt_S19993C16[0]), // expected_vtt_contents
  ABISELECT(1440,1084), // object size
  NSPAIRA(_ZTI9S19993C16),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19993C16),128, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19993C16),28, //virtual table table var
  18, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

union  S19993C22_nt  {
  int s19993c22f0;
  void  mf19993c22(); // _ZN12S19993C22_nt10mf19993c22Ev
};
//SIG(1 S19993C22_nt) U1{ m Fi}

#endif // __cplusplus
#ifdef __cplusplus

struct  S19993C21  {
  ::S19993C22_nt s19993c21f0;
  virtual void  v57(); // _ZN9S19993C213v57Ev
  virtual void  v58(); // _ZN9S19993C213v58Ev
  virtual void  v59(); // _ZN9S19993C213v59Ev
  virtual void  v60(); // _ZN9S19993C213v60Ev
  virtual void  v61(); // _ZN9S19993C213v61Ev
  virtual void  v62(); // _ZN9S19993C213v62Ev
  ~S19993C21(); // tgen
  S19993C21(); // tgen
};
//SIG(-1 S19993C21) C1{ v1 v2 v3 v4 v5 v6 FU2{ m Fi}}


void  S19993C21 ::v57(){vfunc_called(this, "_ZN9S19993C213v57Ev");}
void  S19993C21 ::v58(){vfunc_called(this, "_ZN9S19993C213v58Ev");}
void  S19993C21 ::v59(){vfunc_called(this, "_ZN9S19993C213v59Ev");}
void  S19993C21 ::v60(){vfunc_called(this, "_ZN9S19993C213v60Ev");}
void  S19993C21 ::v61(){vfunc_called(this, "_ZN9S19993C213v61Ev");}
void  S19993C21 ::v62(){vfunc_called(this, "_ZN9S19993C213v62Ev");}
S19993C21 ::~S19993C21(){ note_dtor("S19993C21", this);} // tgen
S19993C21 ::S19993C21(){ note_ctor("S19993C21", this);} // tgen

static void Test_S19993C21()
{
  extern Class_Descriptor cd_S19993C21;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19993C21, buf);
    S19993C21 *dp, &lv = *(dp=new (buf) S19993C21());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19993C21)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19993C21)");
    check_field_offset(lv, s19993c21f0, ABISELECT(8,4), "S19993C21.s19993c21f0");
    test_class_info(&lv, &cd_S19993C21);
    dp->~S19993C21();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19993C21(Test_S19993C21, "S19993C21", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN9S19993C21C1Ev();
extern void _ZN9S19993C21D1Ev();
Name_Map name_map_S19993C21[] = {
  NSPAIR(_ZN9S19993C21C1Ev),
  NSPAIR(_ZN9S19993C21D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S19993C21[];
extern void _ZN9S19993C213v57Ev();
extern void _ZN9S19993C213v58Ev();
extern void _ZN9S19993C213v59Ev();
extern void _ZN9S19993C213v60Ev();
extern void _ZN9S19993C213v61Ev();
extern void _ZN9S19993C213v62Ev();
static  VTBL_ENTRY vtc_S19993C21[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C21[0]),
  (VTBL_ENTRY)&_ZN9S19993C213v57Ev,
  (VTBL_ENTRY)&_ZN9S19993C213v58Ev,
  (VTBL_ENTRY)&_ZN9S19993C213v59Ev,
  (VTBL_ENTRY)&_ZN9S19993C213v60Ev,
  (VTBL_ENTRY)&_ZN9S19993C213v61Ev,
  (VTBL_ENTRY)&_ZN9S19993C213v62Ev,
};
extern VTBL_ENTRY _ZTI9S19993C21[];
extern  VTBL_ENTRY _ZTV9S19993C21[];
Class_Descriptor cd_S19993C21 = {  "S19993C21", // class name
  0,0,//no base classes
  &(vtc_S19993C21[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI9S19993C21),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S19993C21),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19993C20  : S19993C6_nt , virtual S19993C8 , S19993C2 , S19993C18 , virtual S19993C21 {
  virtual void  v63(); // _ZN9S19993C203v63Ev
  virtual void  v64(); // _ZN9S19993C203v64Ev
  ~S19993C20(); // tgen
  S19993C20(); // tgen
};
//SIG(-1 S19993C20) C1{ BC2{ v3 v4} VBC3{ VBC4{ m} VBC2 BC5{ v5 v6} VBC6{ BC2 v7 v8 v9 v10 Fi[5] Fp FL[4]} v11} BC7{ v12 Fp FD[7]} BC8{ VBC9{ v13 FC4 Fi[4]} BC5 VBC2 BC10{ BC5 VBC3 BC4 BC6 BC2 v14} BC7 v15 v16 v17 Fi} VBC11{ v18 v19 v20 v21 v22 v23 FU12{ m Fi}} v1 v2}


void  S19993C20 ::v63(){vfunc_called(this, "_ZN9S19993C203v63Ev");}
void  S19993C20 ::v64(){vfunc_called(this, "_ZN9S19993C203v64Ev");}
S19993C20 ::~S19993C20(){ note_dtor("S19993C20", this);} // tgen
S19993C20 ::S19993C20(){ note_ctor("S19993C20", this);} // tgen

static void Test_S19993C20()
{
  extern Class_Descriptor cd_S19993C20;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(33,92)];
    init_test(&cd_S19993C20, buf);
    S19993C20 *dp, &lv = *(dp=new (buf) S19993C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(512,364), "sizeof(S19993C20)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19993C20)");
    /*is_ambiguous_... S19993C20::S19993C6_nt */ AMB_check_base_class_offset(lv, (S19993C6_nt*), 0, "S19993C20");
    check_base_class_offset(lv, (S77C13_nt*)(S19993C8*), 0, "S19993C20");
    /*is_ambiguous_... S19993C8::S19993C6_nt */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C8*), ABISELECT(384,268), "S19993C20");
    /*is_ambiguous_... S19993C18::S19993C6_nt */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C18*), ABISELECT(384,268), "S19993C20");
    check_base_class_offset(lv, (S19993C9*)(S19993C8*), ABISELECT(376,264), "S19993C20");
    /*is_ambiguous_... S19993C20::S19993C10 */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C10*), ABISELECT(392,272), "S19993C20");
    check_base_class_offset(lv, (S19993C10*)(S19993C8*), ABISELECT(392,272), "S19993C20");
    check_base_class_offset(lv, (S19993C8*), ABISELECT(376,264), "S19993C20");
    check_base_class_offset(lv, (S19993C8*)(S19993C15*)(S19993C18*), ABISELECT(376,264), "S19993C20");
    /*is_ambiguous_... S19993C20::S19993C2 */ AMB_check_base_class_offset(lv, (S19993C2*), ABISELECT(16,4), "S19993C20");
    check_base_class_offset(lv, (S19993C12*)(S19993C18*), ABISELECT(464,332), "S19993C20");
    /*is_ambiguous_... S19993C18::S19993C9 */ AMB_check_base_class_offset(lv, (S19993C9*)(S19993C18*), ABISELECT(144,96), "S19993C20");
    /*is_ambiguous_... S19993C15::S19993C9 */ AMB_check_base_class_offset(lv, (S19993C9*)(S19993C15*)(S19993C18*), ABISELECT(152,100), "S19993C20");
    /*is_ambiguous_... S19993C15::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S19993C15*)(S19993C18*), ABISELECT(152,100), "S19993C20");
    /*is_ambiguous_... S19993C15::S19993C10 */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C10*)(S19993C15*)(S19993C18*), ABISELECT(160,104), "S19993C20");
    /*is_ambiguous_... S19993C15::S19993C10 */ AMB_check_base_class_offset(lv, (S19993C10*)(S19993C15*)(S19993C18*), ABISELECT(160,104), "S19993C20");
    /*is_ambiguous_... S19993C15::S19993C6_nt */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C15*)(S19993C18*), ABISELECT(232,164), "S19993C20");
    check_base_class_offset(lv, (S19993C15*)(S19993C18*), ABISELECT(152,100), "S19993C20");
    check_base_class_offset(lv, (S19993C2*)(S19993C18*), ABISELECT(240,168), "S19993C20");
    check_base_class_offset(lv, (S19993C18*), ABISELECT(144,96), "S19993C20");
    check_base_class_offset(lv, (S19993C21*), ABISELECT(496,356), "S19993C20");
    test_class_info(&lv, &cd_S19993C20);
    dp->~S19993C20();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19993C20(Test_S19993C20, "S19993C20", ABISELECT(512,364));

#else // __cplusplus

extern void _ZN9S19993C20C1Ev();
extern void _ZN9S19993C20D1Ev();
Name_Map name_map_S19993C20[] = {
  NSPAIR(_ZN9S19993C20C1Ev),
  NSPAIR(_ZN9S19993C20D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C9;
extern VTBL_ENTRY _ZTI8S19993C9[];
extern  VTBL_ENTRY _ZTV8S19993C9[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C10;
extern VTBL_ENTRY _ZTI9S19993C10[];
extern  VTBL_ENTRY _ZTV9S19993C10[];
extern Class_Descriptor cd_S19993C8;
extern VTBL_ENTRY _ZTI8S19993C8[];
extern  VTBL_ENTRY _ZTV8S19993C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19993C8[];
extern Class_Descriptor cd_S19993C2;
extern VTBL_ENTRY _ZTI8S19993C2[];
extern  VTBL_ENTRY _ZTV8S19993C2[];
extern Class_Descriptor cd_S19993C12;
extern VTBL_ENTRY _ZTI9S19993C12[];
extern  VTBL_ENTRY _ZTV9S19993C12[];
extern Class_Descriptor cd_S19993C9;
extern VTBL_ENTRY _ZTI8S19993C9[];
extern  VTBL_ENTRY _ZTV8S19993C9[];
extern Class_Descriptor cd_S19993C9;
extern VTBL_ENTRY _ZTI8S19993C9[];
extern  VTBL_ENTRY _ZTV8S19993C9[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C10;
extern VTBL_ENTRY _ZTI9S19993C10[];
extern  VTBL_ENTRY _ZTV9S19993C10[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C15;
extern VTBL_ENTRY _ZTI9S19993C15[];
extern  VTBL_ENTRY _ZTV9S19993C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C15[];
extern Class_Descriptor cd_S19993C2;
extern VTBL_ENTRY _ZTI8S19993C2[];
extern  VTBL_ENTRY _ZTV8S19993C2[];
extern Class_Descriptor cd_S19993C18;
extern VTBL_ENTRY _ZTI9S19993C18[];
extern  VTBL_ENTRY _ZTV9S19993C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C18[];
extern Class_Descriptor cd_S19993C21;
extern VTBL_ENTRY _ZTI9S19993C21[];
extern  VTBL_ENTRY _ZTV9S19993C21[];
static Base_Class bases_S19993C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19993C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19993C6_nt,    ABISELECT(384,268), //bcp->offset
    62, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19993C9,    ABISELECT(376,264), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19993C6_nt,    ABISELECT(392,272), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19993C10,    ABISELECT(392,272), //bcp->offset
    68, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19993C8,    ABISELECT(376,264), //bcp->offset
    51, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19993C2,    ABISELECT(16,4), //bcp->offset
    12, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19993C12,    ABISELECT(464,332), //bcp->offset
    82, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S19993C9,    ABISELECT(144,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19993C9,    ABISELECT(152,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(152,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19993C6_nt,    ABISELECT(160,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19993C10,    ABISELECT(160,104), //bcp->offset
    36, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19993C6_nt,    ABISELECT(232,164), //bcp->offset
    44, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19993C15,    ABISELECT(152,100), //bcp->offset
    27, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19993C2,    ABISELECT(240,168), //bcp->offset
    48, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19993C18,    ABISELECT(144,96), //bcp->offset
    15, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19993C21,    ABISELECT(496,356), //bcp->offset
    86, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19993C20[];
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C203v63Ev();
extern void _ZN9S19993C203v64Ev();
extern void _ZN8S19993C23v10Ev();
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN9S19993C183v54Ev();
extern void _ZN9S19993C183v55Ev();
extern void _ZN9S19993C183v56Ev();
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN9S19993C153v53Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN8S19993C23v10Ev();
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
extern void _ZN9S19993C123v21Ev();
extern void _ZN9S19993C213v57Ev();
extern void _ZN9S19993C213v58Ev();
extern void _ZN9S19993C213v59Ev();
extern void _ZN9S19993C213v60Ev();
extern void _ZN9S19993C213v61Ev();
extern void _ZN9S19993C213v62Ev();
static  VTBL_ENTRY vtc_S19993C20[] = {
  ABISELECT(496,356),
  ABISELECT(464,332),
  ABISELECT(392,272),
  ABISELECT(384,268),
  0,
  ABISELECT(376,264),
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C20[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C203v63Ev,
  (VTBL_ENTRY)&_ZN9S19993C203v64Ev,
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI9S19993C20[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
  ABISELECT(248,176),
  ABISELECT(-144,-96),
  ABISELECT(232,168),
  ABISELECT(240,172),
  ABISELECT(320,236),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI9S19993C20[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19993C183v54Ev,
  (VTBL_ENTRY)&_ZN9S19993C183v55Ev,
  (VTBL_ENTRY)&_ZN9S19993C183v56Ev,
  ABISELECT(240,172),
  ABISELECT(232,168),
  ABISELECT(-152,-100),
  ABISELECT(224,164),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI9S19993C20[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19993C153v53Ev,
  ABISELECT(-160,-104),
  (VTBL_ENTRY)&(_ZTI9S19993C20[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
  ABISELECT(-232,-164),
  (VTBL_ENTRY)&(_ZTI9S19993C20[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  ABISELECT(-240,-168),
  (VTBL_ENTRY)&(_ZTI9S19993C20[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
  0,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(-376,-264),
  ABISELECT(-376,-264),
  (VTBL_ENTRY)&(_ZTI9S19993C20[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
  0,
  0,
  ABISELECT(-384,-268),
  (VTBL_ENTRY)&(_ZTI9S19993C20[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-392,-272),
  (VTBL_ENTRY)&(_ZTI9S19993C20[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
  0,
  ABISELECT(-464,-332),
  (VTBL_ENTRY)&(_ZTI9S19993C20[0]),
  (VTBL_ENTRY)&_ZN9S19993C123v21Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-496,-356),
  (VTBL_ENTRY)&(_ZTI9S19993C20[0]),
  (VTBL_ENTRY)&_ZN9S19993C213v57Ev,
  (VTBL_ENTRY)&_ZN9S19993C213v58Ev,
  (VTBL_ENTRY)&_ZN9S19993C213v59Ev,
  (VTBL_ENTRY)&_ZN9S19993C213v60Ev,
  (VTBL_ENTRY)&_ZN9S19993C213v61Ev,
  (VTBL_ENTRY)&_ZN9S19993C213v62Ev,
};
extern VTBL_ENTRY _ZTV9S19993C20[];
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN9S19993C183v54Ev();
extern void _ZN9S19993C183v55Ev();
extern void _ZN9S19993C183v56Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C18__9S19993C20[] = {
  ABISELECT(248,176),
  ABISELECT(-144,-96),
  ABISELECT(232,168),
  ABISELECT(240,172),
  ABISELECT(320,236),
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C18[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19993C183v54Ev,
  (VTBL_ENTRY)&_ZN9S19993C183v55Ev,
  (VTBL_ENTRY)&_ZN9S19993C183v56Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN9S19993C153v53Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C159S19993C18__9S19993C20[] = {
  ABISELECT(240,172),
  ABISELECT(232,168),
  ABISELECT(-152,-100),
  ABISELECT(224,164),
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C15[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19993C153v53Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C8__9S19993C159S19993C18__9S19993C20[] = {
  0,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(-376,-264),
  ABISELECT(-224,-164),
  (VTBL_ENTRY)&(_ZTI9S19993C15[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
static  VTBL_ENTRY _tg__ZTV11S19993C6_nt__9S19993C159S19993C18__9S19993C20[] = {
  0,
  0,
  ABISELECT(-232,-168),
  (VTBL_ENTRY)&(_ZTI9S19993C15[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C10__9S19993C159S19993C18__9S19993C20[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-240,-172),
  (VTBL_ENTRY)&(_ZTI9S19993C15[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern void _ZN9S19993C123v21Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C12__9S19993C18__9S19993C20[] = {
  0,
  ABISELECT(-320,-236),
  (VTBL_ENTRY)&(_ZTI9S19993C18[0]),
  (VTBL_ENTRY)&_ZN9S19993C123v21Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
static  VTBL_ENTRY _tg__ZTV11S19993C6_nt__9S19993C18__9S19993C20[] = {
  0,
  0,
  ABISELECT(-240,-172),
  (VTBL_ENTRY)&(_ZTI9S19993C18[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN9S19993C153v53Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C15__9S19993C18__9S19993C20[] = {
  ABISELECT(240,172),
  ABISELECT(232,168),
  ABISELECT(-152,-100),
  ABISELECT(224,164),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19993C18[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19993C153v53Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C8__9S19993C18__9S19993C20[] = {
  0,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(-376,-264),
  ABISELECT(-232,-168),
  (VTBL_ENTRY)&(_ZTI9S19993C18[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C10__9S19993C18__9S19993C20[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-248,-176),
  (VTBL_ENTRY)&(_ZTI9S19993C18[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C8__9S19993C20[] = {
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(-376,-264),
  0,
  (VTBL_ENTRY)&(_ZTI8S19993C8[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
static  VTBL_ENTRY _tg__ZTV11S19993C6_nt__8S19993C8__9S19993C20[] = {
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19993C8[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C10__8S19993C8__9S19993C20[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19993C8[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
static  VTT_ENTRY vtt_S19993C20[] = {
  {&(_ZTV9S19993C20[8]),  8,100},
  {&(_tg__ZTV9S19993C18__9S19993C20[7]),  7,12},
  {&(_tg__ZTV9S19993C159S19993C18__9S19993C20[6]),  6,9},
  {&(_tg__ZTV8S19993C8__9S19993C159S19993C18__9S19993C20[8]),  8,11},
  {&(_tg__ZTV11S19993C6_nt__9S19993C159S19993C18__9S19993C20[4]),  4,6},
  {&(_tg__ZTV9S19993C10__9S19993C159S19993C18__9S19993C20[8]),  8,14},
  {&(_tg__ZTV9S19993C12__9S19993C18__9S19993C20[3]),  3,4},
  {&(_tg__ZTV11S19993C6_nt__9S19993C18__9S19993C20[4]),  4,6},
  {&(_tg__ZTV9S19993C15__9S19993C18__9S19993C20[6]),  6,9},
  {&(_tg__ZTV8S19993C8__9S19993C18__9S19993C20[8]),  8,11},
  {&(_tg__ZTV9S19993C10__9S19993C18__9S19993C20[8]),  8,14},
  {&(_ZTV9S19993C20[59]),  59,100},
  {&(_ZTV9S19993C20[66]),  66,100},
  {&(_ZTV9S19993C20[76]),  76,100},
  {&(_ZTV9S19993C20[22]),  22,100},
  {&(_ZTV9S19993C20[85]),  85,100},
  {&(_ZTV9S19993C20[33]),  33,100},
  {&(_ZTV9S19993C20[94]),  94,100},
  {&(_tg__ZTV8S19993C8__9S19993C20[5]),  5,8},
  {&(_tg__ZTV11S19993C6_nt__8S19993C8__9S19993C20[4]),  4,6},
  {&(_tg__ZTV9S19993C10__8S19993C8__9S19993C20[8]),  8,14},
};
extern VTBL_ENTRY _ZTI9S19993C20[];
extern  VTBL_ENTRY _ZTV9S19993C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C20[];
Class_Descriptor cd_S19993C20 = {  "S19993C20", // class name
  bases_S19993C20, 19,
  &(vtc_S19993C20[0]), // expected_vtbl_contents
  &(vtt_S19993C20[0]), // expected_vtt_contents
  ABISELECT(512,364), // object size
  NSPAIRA(_ZTI9S19993C20),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19993C20),100, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19993C20),21, //virtual table table var
  17, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19993C19  : virtual S19993C12 , virtual S19993C6_nt , virtual S19993C8 , S19993C20 {
  long double s19993c19f0;
  __tsi64 s19993c19f1[8];
  virtual void  v65(); // _ZN9S19993C193v65Ev
  virtual void  v66(); // _ZN9S19993C193v66Ev
  virtual void  v67(); // _ZN9S19993C193v67Ev
  virtual void  v68(); // _ZN9S19993C193v68Ev
  virtual void  v69(); // _ZN9S19993C193v69Ev
  virtual void  v70(); // _ZN9S19993C193v70Ev
  virtual void  v71(); // _ZN9S19993C193v71Ev
  ~S19993C19(); // tgen
  S19993C19(); // tgen
};
//SIG(-1 S19993C19) C1{ VBC2{ v8 FC3{ m} Fi[4]} VBC4{ v9 v10} VBC5{ VBC3 VBC4 BC6{ v11 v12} VBC7{ BC4 v13 v14 v15 v16 Fi[5] Fp FL[4]} v17} BC8{ BC4 VBC5 BC9{ v18 Fp FD[7]} BC10{ VBC2 BC6 VBC4 BC11{ BC6 VBC5 BC3 BC7 BC4 v19} BC9 v20 v21 v22 Fi} VBC12{ v23 v24 v25 v26 v27 v28 FU13{ m Fi}} v29 v30} v1 v2 v3 v4 v5 v6 v7 FD FL[8]}


void  S19993C19 ::v65(){vfunc_called(this, "_ZN9S19993C193v65Ev");}
void  S19993C19 ::v66(){vfunc_called(this, "_ZN9S19993C193v66Ev");}
void  S19993C19 ::v67(){vfunc_called(this, "_ZN9S19993C193v67Ev");}
void  S19993C19 ::v68(){vfunc_called(this, "_ZN9S19993C193v68Ev");}
void  S19993C19 ::v69(){vfunc_called(this, "_ZN9S19993C193v69Ev");}
void  S19993C19 ::v70(){vfunc_called(this, "_ZN9S19993C193v70Ev");}
void  S19993C19 ::v71(){vfunc_called(this, "_ZN9S19993C193v71Ev");}
S19993C19 ::~S19993C19(){ note_dtor("S19993C19", this);} // tgen
S19993C19 ::S19993C19(){ note_ctor("S19993C19", this);} // tgen

static void Test_S19993C19()
{
  extern Class_Descriptor cd_S19993C19;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(39,111)];
    init_test(&cd_S19993C19, buf);
    S19993C19 *dp, &lv = *(dp=new (buf) S19993C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(608,440), "sizeof(S19993C19)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19993C19)");
    check_base_class_offset(lv, (S19993C12*), ABISELECT(464,340), "S19993C19");
    check_base_class_offset(lv, (S19993C12*)(S19993C18*)(S19993C20*), ABISELECT(464,340), "S19993C19");
    /*is_ambiguous_... S19993C19::S19993C6_nt */ AMB_check_base_class_offset(lv, (S19993C6_nt*), ABISELECT(496,364), "S19993C19");
    /*is_ambiguous_... S19993C8::S19993C6_nt */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C8*), ABISELECT(496,364), "S19993C19");
    /*is_ambiguous_... S19993C18::S19993C6_nt */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C18*)(S19993C20*), ABISELECT(496,364), "S19993C19");
    check_base_class_offset(lv, (S77C13_nt*)(S19993C8*), 0, "S19993C19");
    check_base_class_offset(lv, (S19993C9*)(S19993C8*), ABISELECT(504,368), "S19993C19");
    /*is_ambiguous_... S19993C19::S19993C10 */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C10*), ABISELECT(512,372), "S19993C19");
    check_base_class_offset(lv, (S19993C10*)(S19993C8*), ABISELECT(512,372), "S19993C19");
    check_base_class_offset(lv, (S19993C8*), ABISELECT(504,368), "S19993C19");
    check_base_class_offset(lv, (S19993C8*)(S19993C20*), ABISELECT(504,368), "S19993C19");
    check_base_class_offset(lv, (S19993C8*)(S19993C15*)(S19993C18*)(S19993C20*), ABISELECT(504,368), "S19993C19");
    /*is_ambiguous_... S19993C20::S19993C6_nt */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C20*), 0, "S19993C19");
    /*is_ambiguous_... S19993C20::S19993C2 */ AMB_check_base_class_offset(lv, (S19993C2*)(S19993C20*), ABISELECT(16,4), "S19993C19");
    /*is_ambiguous_... S19993C18::S19993C9 */ AMB_check_base_class_offset(lv, (S19993C9*)(S19993C18*)(S19993C20*), ABISELECT(144,96), "S19993C19");
    /*is_ambiguous_... S19993C15::S19993C9 */ AMB_check_base_class_offset(lv, (S19993C9*)(S19993C15*)(S19993C18*)(S19993C20*), ABISELECT(152,100), "S19993C19");
    /*is_ambiguous_... S19993C15::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S19993C15*)(S19993C18*)(S19993C20*), ABISELECT(152,100), "S19993C19");
    /*is_ambiguous_... S19993C15::S19993C10 */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C10*)(S19993C15*)(S19993C18*)(S19993C20*), ABISELECT(160,104), "S19993C19");
    /*is_ambiguous_... S19993C15::S19993C10 */ AMB_check_base_class_offset(lv, (S19993C10*)(S19993C15*)(S19993C18*)(S19993C20*), ABISELECT(160,104), "S19993C19");
    /*is_ambiguous_... S19993C15::S19993C6_nt */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C15*)(S19993C18*)(S19993C20*), ABISELECT(232,164), "S19993C19");
    check_base_class_offset(lv, (S19993C15*)(S19993C18*)(S19993C20*), ABISELECT(152,100), "S19993C19");
    check_base_class_offset(lv, (S19993C2*)(S19993C18*)(S19993C20*), ABISELECT(240,168), "S19993C19");
    check_base_class_offset(lv, (S19993C18*)(S19993C20*), ABISELECT(144,96), "S19993C19");
    check_base_class_offset(lv, (S19993C21*)(S19993C20*), ABISELECT(584,432), "S19993C19");
    check_base_class_offset(lv, (S19993C20*), 0, "S19993C19");
    check_field_offset(lv, s19993c19f0, ABISELECT(384,264), "S19993C19.s19993c19f0");
    check_field_offset(lv, s19993c19f1, ABISELECT(400,276), "S19993C19.s19993c19f1");
    test_class_info(&lv, &cd_S19993C19);
    dp->~S19993C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19993C19(Test_S19993C19, "S19993C19", ABISELECT(608,440));

#else // __cplusplus

extern void _ZN9S19993C19C1Ev();
extern void _ZN9S19993C19D1Ev();
Name_Map name_map_S19993C19[] = {
  NSPAIR(_ZN9S19993C19C1Ev),
  NSPAIR(_ZN9S19993C19D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19993C12;
extern VTBL_ENTRY _ZTI9S19993C12[];
extern  VTBL_ENTRY _ZTV9S19993C12[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19993C9;
extern VTBL_ENTRY _ZTI8S19993C9[];
extern  VTBL_ENTRY _ZTV8S19993C9[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C10;
extern VTBL_ENTRY _ZTI9S19993C10[];
extern  VTBL_ENTRY _ZTV9S19993C10[];
extern Class_Descriptor cd_S19993C8;
extern VTBL_ENTRY _ZTI8S19993C8[];
extern  VTBL_ENTRY _ZTV8S19993C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19993C8[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C2;
extern VTBL_ENTRY _ZTI8S19993C2[];
extern  VTBL_ENTRY _ZTV8S19993C2[];
extern Class_Descriptor cd_S19993C9;
extern VTBL_ENTRY _ZTI8S19993C9[];
extern  VTBL_ENTRY _ZTV8S19993C9[];
extern Class_Descriptor cd_S19993C9;
extern VTBL_ENTRY _ZTI8S19993C9[];
extern  VTBL_ENTRY _ZTV8S19993C9[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C10;
extern VTBL_ENTRY _ZTI9S19993C10[];
extern  VTBL_ENTRY _ZTV9S19993C10[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C15;
extern VTBL_ENTRY _ZTI9S19993C15[];
extern  VTBL_ENTRY _ZTV9S19993C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C15[];
extern Class_Descriptor cd_S19993C2;
extern VTBL_ENTRY _ZTI8S19993C2[];
extern  VTBL_ENTRY _ZTV8S19993C2[];
extern Class_Descriptor cd_S19993C18;
extern VTBL_ENTRY _ZTI9S19993C18[];
extern  VTBL_ENTRY _ZTV9S19993C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C18[];
extern Class_Descriptor cd_S19993C21;
extern VTBL_ENTRY _ZTI9S19993C21[];
extern  VTBL_ENTRY _ZTV9S19993C21[];
extern Class_Descriptor cd_S19993C20;
extern VTBL_ENTRY _ZTI9S19993C20[];
extern  VTBL_ENTRY _ZTV9S19993C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C20[];
static Base_Class bases_S19993C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19993C12,    ABISELECT(464,340), //bcp->offset
    58, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19993C6_nt,    ABISELECT(496,364), //bcp->offset
    62, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19993C9,    ABISELECT(504,368), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19993C6_nt,    ABISELECT(512,372), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19993C10,    ABISELECT(512,372), //bcp->offset
    79, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19993C8,    ABISELECT(504,368), //bcp->offset
    68, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19993C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19993C2,    ABISELECT(16,4), //bcp->offset
    19, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19993C9,    ABISELECT(144,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19993C9,    ABISELECT(152,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(152,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19993C6_nt,    ABISELECT(160,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19993C10,    ABISELECT(160,104), //bcp->offset
    43, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19993C6_nt,    ABISELECT(232,164), //bcp->offset
    51, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19993C15,    ABISELECT(152,100), //bcp->offset
    34, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19993C2,    ABISELECT(240,168), //bcp->offset
    55, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19993C18,    ABISELECT(144,96), //bcp->offset
    22, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19993C21,    ABISELECT(584,432), //bcp->offset
    93, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S19993C20,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19993C19[];
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C203v63Ev();
extern void _ZN9S19993C203v64Ev();
extern void _ZN9S19993C193v65Ev();
extern void _ZN9S19993C193v66Ev();
extern void _ZN9S19993C193v67Ev();
extern void _ZN9S19993C193v68Ev();
extern void _ZN9S19993C193v69Ev();
extern void _ZN9S19993C193v70Ev();
extern void _ZN9S19993C193v71Ev();
extern void _ZN8S19993C23v10Ev();
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN9S19993C183v54Ev();
extern void _ZN9S19993C183v55Ev();
extern void _ZN9S19993C183v56Ev();
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN9S19993C153v53Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN8S19993C23v10Ev();
extern void _ZN9S19993C123v21Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
extern void _ZN9S19993C213v57Ev();
extern void _ZN9S19993C213v58Ev();
extern void _ZN9S19993C213v59Ev();
extern void _ZN9S19993C213v60Ev();
extern void _ZN9S19993C213v61Ev();
extern void _ZN9S19993C213v62Ev();
static  VTBL_ENTRY vtc_S19993C19[] = {
  ABISELECT(584,432),
  ABISELECT(464,340),
  ABISELECT(512,372),
  ABISELECT(496,364),
  0,
  ABISELECT(504,368),
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C19[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C203v63Ev,
  (VTBL_ENTRY)&_ZN9S19993C203v64Ev,
  (VTBL_ENTRY)&_ZN9S19993C193v65Ev,
  (VTBL_ENTRY)&_ZN9S19993C193v66Ev,
  (VTBL_ENTRY)&_ZN9S19993C193v67Ev,
  (VTBL_ENTRY)&_ZN9S19993C193v68Ev,
  (VTBL_ENTRY)&_ZN9S19993C193v69Ev,
  (VTBL_ENTRY)&_ZN9S19993C193v70Ev,
  (VTBL_ENTRY)&_ZN9S19993C193v71Ev,
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI9S19993C19[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
  ABISELECT(368,276),
  ABISELECT(-144,-96),
  ABISELECT(360,272),
  ABISELECT(352,268),
  ABISELECT(320,244),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI9S19993C19[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19993C183v54Ev,
  (VTBL_ENTRY)&_ZN9S19993C183v55Ev,
  (VTBL_ENTRY)&_ZN9S19993C183v56Ev,
  ABISELECT(360,272),
  ABISELECT(344,264),
  ABISELECT(-152,-100),
  ABISELECT(352,268),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI9S19993C19[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19993C153v53Ev,
  ABISELECT(-160,-104),
  (VTBL_ENTRY)&(_ZTI9S19993C19[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
  ABISELECT(-232,-164),
  (VTBL_ENTRY)&(_ZTI9S19993C19[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  ABISELECT(-240,-168),
  (VTBL_ENTRY)&(_ZTI9S19993C19[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
  0,
  ABISELECT(-464,-340),
  (VTBL_ENTRY)&(_ZTI9S19993C19[0]),
  (VTBL_ENTRY)&_ZN9S19993C123v21Ev,
  0,
  0,
  ABISELECT(-496,-364),
  (VTBL_ENTRY)&(_ZTI9S19993C19[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  0,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  ABISELECT(-504,-368),
  ABISELECT(-504,-368),
  (VTBL_ENTRY)&(_ZTI9S19993C19[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-512,-372),
  (VTBL_ENTRY)&(_ZTI9S19993C19[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-584,-432),
  (VTBL_ENTRY)&(_ZTI9S19993C19[0]),
  (VTBL_ENTRY)&_ZN9S19993C213v57Ev,
  (VTBL_ENTRY)&_ZN9S19993C213v58Ev,
  (VTBL_ENTRY)&_ZN9S19993C213v59Ev,
  (VTBL_ENTRY)&_ZN9S19993C213v60Ev,
  (VTBL_ENTRY)&_ZN9S19993C213v61Ev,
  (VTBL_ENTRY)&_ZN9S19993C213v62Ev,
};
extern VTBL_ENTRY _ZTV9S19993C19[];
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C203v63Ev();
extern void _ZN9S19993C203v64Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C20__9S19993C19[] = {
  ABISELECT(584,432),
  ABISELECT(464,340),
  ABISELECT(512,372),
  ABISELECT(496,364),
  0,
  ABISELECT(504,368),
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C20[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C203v63Ev,
  (VTBL_ENTRY)&_ZN9S19993C203v64Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN9S19993C183v54Ev();
extern void _ZN9S19993C183v55Ev();
extern void _ZN9S19993C183v56Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C189S19993C20__9S19993C19[] = {
  ABISELECT(368,276),
  ABISELECT(-144,-96),
  ABISELECT(360,272),
  ABISELECT(352,268),
  ABISELECT(320,244),
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C18[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19993C183v54Ev,
  (VTBL_ENTRY)&_ZN9S19993C183v55Ev,
  (VTBL_ENTRY)&_ZN9S19993C183v56Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN9S19993C153v53Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C159S19993C189S19993C20__9S19993C19[] = {
  ABISELECT(360,272),
  ABISELECT(344,264),
  ABISELECT(-152,-100),
  ABISELECT(352,268),
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C15[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19993C153v53Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C8__9S19993C159S19993C189S19993C20__9S19993C19[] = {
  0,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  ABISELECT(-504,-368),
  ABISELECT(-352,-268),
  (VTBL_ENTRY)&(_ZTI9S19993C15[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
static  VTBL_ENTRY _tg__ZTV11S19993C6_nt__9S19993C159S19993C189S19993C20__9S19993C19[] = {
  0,
  0,
  ABISELECT(-344,-264),
  (VTBL_ENTRY)&(_ZTI9S19993C15[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C10__9S19993C159S19993C189S19993C20__9S19993C19[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-360,-272),
  (VTBL_ENTRY)&(_ZTI9S19993C15[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern void _ZN9S19993C123v21Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C12__9S19993C189S19993C20__9S19993C19[] = {
  0,
  ABISELECT(-320,-244),
  (VTBL_ENTRY)&(_ZTI9S19993C18[0]),
  (VTBL_ENTRY)&_ZN9S19993C123v21Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
static  VTBL_ENTRY _tg__ZTV11S19993C6_nt__9S19993C189S19993C20__9S19993C19[] = {
  0,
  0,
  ABISELECT(-352,-268),
  (VTBL_ENTRY)&(_ZTI9S19993C18[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN9S19993C153v53Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C15__9S19993C189S19993C20__9S19993C19[] = {
  ABISELECT(360,272),
  ABISELECT(344,264),
  ABISELECT(-152,-100),
  ABISELECT(352,268),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19993C18[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19993C153v53Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C8__9S19993C189S19993C20__9S19993C19[] = {
  0,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  ABISELECT(-504,-368),
  ABISELECT(-360,-272),
  (VTBL_ENTRY)&(_ZTI9S19993C18[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C10__9S19993C189S19993C20__9S19993C19[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-368,-276),
  (VTBL_ENTRY)&(_ZTI9S19993C18[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C8__9S19993C20__9S19993C19[] = {
  0,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  ABISELECT(-504,-368),
  ABISELECT(-504,-368),
  (VTBL_ENTRY)&(_ZTI9S19993C20[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
static  VTBL_ENTRY _tg__ZTV11S19993C6_nt__A1__9S19993C20__9S19993C19[] = {
  0,
  0,
  ABISELECT(-496,-364),
  (VTBL_ENTRY)&(_ZTI9S19993C20[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C10__9S19993C20__9S19993C19[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-512,-372),
  (VTBL_ENTRY)&(_ZTI9S19993C20[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN9S19993C183v54Ev();
extern void _ZN9S19993C183v55Ev();
extern void _ZN9S19993C183v56Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C18__9S19993C20__9S19993C19[] = {
  ABISELECT(368,276),
  ABISELECT(-144,-96),
  ABISELECT(360,272),
  ABISELECT(352,268),
  ABISELECT(320,244),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI9S19993C20[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19993C183v54Ev,
  (VTBL_ENTRY)&_ZN9S19993C183v55Ev,
  (VTBL_ENTRY)&_ZN9S19993C183v56Ev,
};
extern void _ZN9S19993C123v21Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C12__9S19993C20__9S19993C19[] = {
  0,
  ABISELECT(-464,-340),
  (VTBL_ENTRY)&(_ZTI9S19993C20[0]),
  (VTBL_ENTRY)&_ZN9S19993C123v21Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN9S19993C153v53Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C159S19993C18__9S19993C20__9S19993C19[] = {
  ABISELECT(360,272),
  ABISELECT(344,264),
  ABISELECT(-152,-100),
  ABISELECT(352,268),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI9S19993C20[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19993C153v53Ev,
};
extern void _ZN9S19993C213v57Ev();
extern void _ZN9S19993C213v58Ev();
extern void _ZN9S19993C213v59Ev();
extern void _ZN9S19993C213v60Ev();
extern void _ZN9S19993C213v61Ev();
extern void _ZN9S19993C213v62Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C21__9S19993C20__9S19993C19[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-584,-432),
  (VTBL_ENTRY)&(_ZTI9S19993C20[0]),
  (VTBL_ENTRY)&_ZN9S19993C213v57Ev,
  (VTBL_ENTRY)&_ZN9S19993C213v58Ev,
  (VTBL_ENTRY)&_ZN9S19993C213v59Ev,
  (VTBL_ENTRY)&_ZN9S19993C213v60Ev,
  (VTBL_ENTRY)&_ZN9S19993C213v61Ev,
  (VTBL_ENTRY)&_ZN9S19993C213v62Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C8__9S19993C19[] = {
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  ABISELECT(-504,-368),
  0,
  (VTBL_ENTRY)&(_ZTI8S19993C8[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
static  VTBL_ENTRY _tg__ZTV11S19993C6_nt__8S19993C8__9S19993C19[] = {
  0,
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S19993C8[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C10__8S19993C8__9S19993C19[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19993C8[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
static  VTT_ENTRY vtt_S19993C19[] = {
  {&(_ZTV9S19993C19[8]),  8,107},
  {&(_tg__ZTV9S19993C20__9S19993C19[8]),  8,12},
  {&(_tg__ZTV9S19993C189S19993C20__9S19993C19[7]),  7,12},
  {&(_tg__ZTV9S19993C159S19993C189S19993C20__9S19993C19[6]),  6,9},
  {&(_tg__ZTV8S19993C8__9S19993C159S19993C189S19993C20__9S19993C19[8]),  8,11},
  {&(_tg__ZTV11S19993C6_nt__9S19993C159S19993C189S19993C20__9S19993C19[4]),  4,6},
  {&(_tg__ZTV9S19993C10__9S19993C159S19993C189S19993C20__9S19993C19[8]),  8,14},
  {&(_tg__ZTV9S19993C12__9S19993C189S19993C20__9S19993C19[3]),  3,4},
  {&(_tg__ZTV11S19993C6_nt__9S19993C189S19993C20__9S19993C19[4]),  4,6},
  {&(_tg__ZTV9S19993C15__9S19993C189S19993C20__9S19993C19[6]),  6,9},
  {&(_tg__ZTV8S19993C8__9S19993C189S19993C20__9S19993C19[8]),  8,11},
  {&(_tg__ZTV9S19993C10__9S19993C189S19993C20__9S19993C19[8]),  8,14},
  {&(_tg__ZTV8S19993C8__9S19993C20__9S19993C19[8]),  8,11},
  {&(_tg__ZTV11S19993C6_nt__A1__9S19993C20__9S19993C19[4]),  4,6},
  {&(_tg__ZTV9S19993C10__9S19993C20__9S19993C19[8]),  8,14},
  {&(_tg__ZTV9S19993C18__9S19993C20__9S19993C19[7]),  7,12},
  {&(_tg__ZTV9S19993C12__9S19993C20__9S19993C19[3]),  3,4},
  {&(_tg__ZTV9S19993C159S19993C18__9S19993C20__9S19993C19[6]),  6,9},
  {&(_tg__ZTV9S19993C21__9S19993C20__9S19993C19[8]),  8,14},
  {&(_ZTV9S19993C19[61]),  61,107},
  {&(_ZTV9S19993C19[66]),  66,107},
  {&(_ZTV9S19993C19[76]),  76,107},
  {&(_ZTV9S19993C19[87]),  87,107},
  {&(_ZTV9S19993C19[29]),  29,107},
  {&(_ZTV9S19993C19[40]),  40,107},
  {&(_ZTV9S19993C19[101]),  101,107},
  {&(_tg__ZTV8S19993C8__9S19993C19[5]),  5,8},
  {&(_tg__ZTV11S19993C6_nt__8S19993C8__9S19993C19[4]),  4,6},
  {&(_tg__ZTV9S19993C10__8S19993C8__9S19993C19[8]),  8,14},
};
extern VTBL_ENTRY _ZTI9S19993C19[];
extern  VTBL_ENTRY _ZTV9S19993C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C19[];
Class_Descriptor cd_S19993C19 = {  "S19993C19", // class name
  bases_S19993C19, 20,
  &(vtc_S19993C19[0]), // expected_vtbl_contents
  &(vtt_S19993C19[0]), // expected_vtt_contents
  ABISELECT(608,440), // object size
  NSPAIRA(_ZTI9S19993C19),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19993C19),107, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19993C19),29, //virtual table table var
  18, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19993C1  : virtual S19993C2 , S19993C3 , S19993C16 , S19993C14 , S19993C19 {
  long s19993c1f0;
  virtual  ~S19993C1(); // _ZN8S19993C1D2Ev
  virtual void  v1(); // _ZN8S19993C12v1Ev
  virtual void  v2(); // _ZN8S19993C12v2Ev
  virtual void  v3(); // _ZN8S19993C12v3Ev
  virtual void  v4(); // _ZN8S19993C12v4Ev
  virtual void  v5(); // _ZN8S19993C12v5Ev
  virtual void  v6(); // _ZN8S19993C12v6Ev
  virtual void  v7(); // _ZN8S19993C12v7Ev
  virtual void  v8(); // _ZN8S19993C12v8Ev
  virtual void  v9(); // _ZN8S19993C12v9Ev
  S19993C1(); // tgen
};
//SIG(1 S19993C1) C1{ VBC2{ v10 Fp FD[7]} BC3{ BC4{ m} VBC5{ VBC6{ v11 v12} BC7{ BC8{ VBC4 VBC6 BC9{ v13 v14} VBC10{ BC6 v15 v16 v17 v18 Fi[5] Fp FL[4]} v19} VBC2 vd v20 Fp} BC11{ VBC9 VBC4 BC12{ v21 FC4 Fi[4]} BC10 v22 v23 v24} VBC12 VBC13{ VBC14{ VBC4 BC2 BC10 v25 v26 v27 v28 v29 Fi[10] FC15{ BC9 VBC8 BC4 BC10 BC6 v53}} v30 v31 v32 Fi[2]} v33 v34 v35 v36 v37 v38 v39 v40 Fp} vd v41 v42 v43 Fi} BC16{ VBC11 VBC17{ VBC11 v44 v45 v46 v47 FC18{ VBC12 BC9 VBC6 BC15 BC2 v54 v55 v56 Fi} FC10 Fi FC7} BC13 BC7 vd v48 v49 v50 v51 v52 Fi:13} BC14 BC19{ VBC12 VBC6 VBC8 BC20{ BC6 VBC8 BC2 BC18 VBC21{ v57 v58 v59 v60 v61 v62 FU22{ m Fi}} v63 v64} v65 v66 v67 v68 v69 v70 v71 FD FL[8]} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 Fl}


 S19993C1 ::~S19993C1(){ note_dtor("S19993C1", this);}
void  S19993C1 ::v1(){vfunc_called(this, "_ZN8S19993C12v1Ev");}
void  S19993C1 ::v2(){vfunc_called(this, "_ZN8S19993C12v2Ev");}
void  S19993C1 ::v3(){vfunc_called(this, "_ZN8S19993C12v3Ev");}
void  S19993C1 ::v4(){vfunc_called(this, "_ZN8S19993C12v4Ev");}
void  S19993C1 ::v5(){vfunc_called(this, "_ZN8S19993C12v5Ev");}
void  S19993C1 ::v6(){vfunc_called(this, "_ZN8S19993C12v6Ev");}
void  S19993C1 ::v7(){vfunc_called(this, "_ZN8S19993C12v7Ev");}
void  S19993C1 ::v8(){vfunc_called(this, "_ZN8S19993C12v8Ev");}
void  S19993C1 ::v9(){vfunc_called(this, "_ZN8S19993C12v9Ev");}
S19993C1 ::S19993C1(){ note_ctor("S19993C1", this);} // tgen

static void Test_S19993C1()
{
  extern Class_Descriptor cd_S19993C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(162,477)];
    init_test(&cd_S19993C1, buf);
    S19993C1 *dp, &lv = *(dp=new (buf) S19993C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2576,1904), "sizeof(S19993C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19993C1)");
    /*is_ambiguous_... S19993C1::S19993C2 */ AMB_check_base_class_offset(lv, (S19993C2*), ABISELECT(960,704), "S19993C1");
    check_base_class_offset(lv, (S19993C2*)(S19993C7*)(S19993C5*), ABISELECT(960,704), "S19993C1");
    check_base_class_offset(lv, (S19993C2*)(S19993C7*)(S19993C16*), ABISELECT(960,704), "S19993C1");
    /*is_ambiguous_... S19993C3::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S19993C3*), 0, "S19993C1");
    /*is_ambiguous_... S19993C5::S19993C6_nt */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C5*), 0, "S19993C1");
    /*is_ambiguous_... S19993C8::S19993C6_nt */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C8*)(S19993C7*)(S19993C5*), 0, "S19993C1");
    /*is_ambiguous_... S19993C8::S19993C6_nt */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C8*)(S19993C7*)(S19993C16*), 0, "S19993C1");
    /*is_ambiguous_... S19993C19::S19993C6_nt */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C19*), 0, "S19993C1");
    /*is_ambiguous_... S19993C1::S19993C8 */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C8*), 0, "S19993C1");
    /*is_ambiguous_... S19993C18::S19993C6_nt */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C18*)(S19993C20*)(S19993C19*), 0, "S19993C1");
    check_base_class_offset(lv, (S77C13_nt*)(S19993C8*)(S19993C7*)(S19993C5*), ABISELECT(1216,892), "S19993C1");
    check_base_class_offset(lv, (S77C13_nt*)(S19993C11*)(S19993C5*), ABISELECT(1216,892), "S19993C1");
    /*is_ambiguous_... S19993C1::S19993C14 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S19993C14*), ABISELECT(1216,892), "S19993C1");
    /*is_ambiguous_... S19993C1::S19993C11 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S19993C11*), ABISELECT(1216,892), "S19993C1");
    check_base_class_offset(lv, (S77C13_nt*)(S19993C8*)(S19993C7*)(S19993C16*), ABISELECT(1216,892), "S19993C1");
    /*is_ambiguous_... S19993C1::S19993C14 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S19993C14*), ABISELECT(1216,892), "S19993C1");
    /*is_ambiguous_... S19993C1::S19993C8 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S19993C8*), ABISELECT(1216,892), "S19993C1");
    check_base_class_offset(lv, (S19993C9*)(S19993C8*)(S19993C7*)(S19993C5*), ABISELECT(1088,796), "S19993C1");
    /*is_ambiguous_... S19993C1::S19993C10 */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C10*), ABISELECT(1216,892), "S19993C1");
    check_base_class_offset(lv, (S19993C10*)(S19993C8*)(S19993C7*)(S19993C5*), ABISELECT(1216,892), "S19993C1");
    check_base_class_offset(lv, (S19993C10*)(S19993C8*)(S19993C7*)(S19993C16*), ABISELECT(1216,892), "S19993C1");
    /*is_ambiguous_... S19993C1::S19993C8 */ AMB_check_base_class_offset(lv, (S19993C10*)(S19993C8*), ABISELECT(1216,892), "S19993C1");
    check_base_class_offset(lv, (S19993C8*)(S19993C7*)(S19993C5*), ABISELECT(1088,796), "S19993C1");
    check_base_class_offset(lv, (S19993C7*)(S19993C5*), ABISELECT(1088,796), "S19993C1");
    check_base_class_offset(lv, (S19993C9*)(S19993C11*)(S19993C5*), ABISELECT(1872,1400), "S19993C1");
    /*is_ambiguous_... S19993C1::S19993C11 */ AMB_check_base_class_offset(lv, (S19993C9*)(S19993C11*), ABISELECT(1872,1400), "S19993C1");
    check_base_class_offset(lv, (S19993C12*)(S19993C11*)(S19993C5*), ABISELECT(1104,804), "S19993C1");
    check_base_class_offset(lv, (S19993C6_nt*)(S19993C10*)(S19993C11*)(S19993C5*), ABISELECT(1136,828), "S19993C1");
    check_base_class_offset(lv, (S19993C10*)(S19993C11*)(S19993C5*), ABISELECT(1136,828), "S19993C1");
    check_base_class_offset(lv, (S19993C11*)(S19993C5*), ABISELECT(1104,804), "S19993C1");
    /*is_ambiguous_... S19993C5::S19993C12 */ AMB_check_base_class_offset(lv, (S19993C12*)(S19993C5*), ABISELECT(1288,952), "S19993C1");
    check_base_class_offset(lv, (S19993C12*)(S19993C19*), ABISELECT(1288,952), "S19993C1");
    check_base_class_offset(lv, (S19993C12*)(S19993C18*)(S19993C20*)(S19993C19*), ABISELECT(1288,952), "S19993C1");
    /*is_ambiguous_... S19993C1::S19993C14 */ AMB_check_base_class_offset(lv, (S19993C2*)(S19993C14*), ABISELECT(1344,988), "S19993C1");
    /*is_ambiguous_... S19993C1::S19993C14 */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C10*)(S19993C14*), ABISELECT(1472,1080), "S19993C1");
    /*is_ambiguous_... S19993C1::S19993C14 */ AMB_check_base_class_offset(lv, (S19993C10*)(S19993C14*), ABISELECT(1472,1080), "S19993C1");
    /*is_ambiguous_... S19993C1::S19993C13 */ AMB_check_base_class_offset(lv, (S19993C14*)(S19993C13*), ABISELECT(1344,988), "S19993C1");
    check_base_class_offset(lv, (S19993C14*)(S19993C13*)(S19993C16*), ABISELECT(1344,988), "S19993C1");
    check_base_class_offset(lv, (S19993C13*)(S19993C5*), ABISELECT(1320,976), "S19993C1");
    check_base_class_offset(lv, (S19993C5*)(S19993C3*), ABISELECT(1088,796), "S19993C1");
    check_base_class_offset(lv, (S19993C3*), 0, "S19993C1");
    /*is_ambiguous_... S19993C1::S19993C11 */ AMB_check_base_class_offset(lv, (S19993C12*)(S19993C11*), ABISELECT(1760,1316), "S19993C1");
    /*is_ambiguous_... S19993C1::S19993C11 */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C10*)(S19993C11*), ABISELECT(1792,1340), "S19993C1");
    /*is_ambiguous_... S19993C1::S19993C11 */ AMB_check_base_class_offset(lv, (S19993C10*)(S19993C11*), ABISELECT(1792,1340), "S19993C1");
    check_base_class_offset(lv, (S19993C11*)(S19993C16*), ABISELECT(1760,1316), "S19993C1");
    check_base_class_offset(lv, (S19993C11*)(S19993C17*), ABISELECT(1760,1316), "S19993C1");
    check_base_class_offset(lv, (S19993C17*)(S19993C16*), ABISELECT(1872,1400), "S19993C1");
    check_base_class_offset(lv, (S19993C13*)(S19993C16*), ABISELECT(16,8), "S19993C1");
    check_base_class_offset(lv, (S19993C9*)(S19993C8*)(S19993C7*)(S19993C16*), ABISELECT(32,20), "S19993C1");
    check_base_class_offset(lv, (S19993C8*)(S19993C7*)(S19993C16*), ABISELECT(32,20), "S19993C1");
    check_base_class_offset(lv, (S19993C7*)(S19993C16*), ABISELECT(32,20), "S19993C1");
    check_base_class_offset(lv, (S19993C16*), ABISELECT(16,8), "S19993C1");
    /*is_ambiguous_... S19993C1::S19993C14 */ AMB_check_base_class_offset(lv, (S19993C2*)(S19993C14*), ABISELECT(64,32), "S19993C1");
    /*is_ambiguous_... S19993C1::S19993C14 */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C10*)(S19993C14*), ABISELECT(192,124), "S19993C1");
    /*is_ambiguous_... S19993C1::S19993C14 */ AMB_check_base_class_offset(lv, (S19993C10*)(S19993C14*), ABISELECT(192,124), "S19993C1");
    /*is_ambiguous_... S19993C1::S19993C14 */ AMB_check_base_class_offset(lv, (S19993C14*), ABISELECT(64,32), "S19993C1");
    /*is_ambiguous_... S19993C1::S19993C8 */ AMB_check_base_class_offset(lv, (S19993C9*)(S19993C8*), ABISELECT(2544,1892), "S19993C1");
    check_base_class_offset(lv, (S19993C8*)(S19993C19*), ABISELECT(2544,1892), "S19993C1");
    check_base_class_offset(lv, (S19993C8*)(S19993C20*)(S19993C19*), ABISELECT(2544,1892), "S19993C1");
    check_base_class_offset(lv, (S19993C8*)(S19993C15*)(S19993C18*)(S19993C20*)(S19993C19*), ABISELECT(2544,1892), "S19993C1");
    /*is_ambiguous_... S19993C20::S19993C6_nt */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C20*)(S19993C19*), ABISELECT(480,360), "S19993C1");
    /*is_ambiguous_... S19993C20::S19993C2 */ AMB_check_base_class_offset(lv, (S19993C2*)(S19993C20*)(S19993C19*), ABISELECT(496,364), "S19993C1");
    /*is_ambiguous_... S19993C18::S19993C9 */ AMB_check_base_class_offset(lv, (S19993C9*)(S19993C18*)(S19993C20*)(S19993C19*), ABISELECT(624,456), "S19993C1");
    /*is_ambiguous_... S19993C15::S19993C9 */ AMB_check_base_class_offset(lv, (S19993C9*)(S19993C15*)(S19993C18*)(S19993C20*)(S19993C19*), ABISELECT(632,460), "S19993C1");
    /*is_ambiguous_... S19993C15::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S19993C15*)(S19993C18*)(S19993C20*)(S19993C19*), ABISELECT(632,460), "S19993C1");
    /*is_ambiguous_... S19993C15::S19993C10 */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C10*)(S19993C15*)(S19993C18*)(S19993C20*)(S19993C19*), ABISELECT(640,464), "S19993C1");
    /*is_ambiguous_... S19993C15::S19993C10 */ AMB_check_base_class_offset(lv, (S19993C10*)(S19993C15*)(S19993C18*)(S19993C20*)(S19993C19*), ABISELECT(640,464), "S19993C1");
    /*is_ambiguous_... S19993C15::S19993C6_nt */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C15*)(S19993C18*)(S19993C20*)(S19993C19*), ABISELECT(712,524), "S19993C1");
    check_base_class_offset(lv, (S19993C15*)(S19993C18*)(S19993C20*)(S19993C19*), ABISELECT(632,460), "S19993C1");
    check_base_class_offset(lv, (S19993C2*)(S19993C18*)(S19993C20*)(S19993C19*), ABISELECT(720,528), "S19993C1");
    check_base_class_offset(lv, (S19993C18*)(S19993C20*)(S19993C19*), ABISELECT(624,456), "S19993C1");
    check_base_class_offset(lv, (S19993C21*)(S19993C20*)(S19993C19*), ABISELECT(2552,1896), "S19993C1");
    check_base_class_offset(lv, (S19993C20*)(S19993C19*), ABISELECT(480,360), "S19993C1");
    check_base_class_offset(lv, (S19993C19*), ABISELECT(480,360), "S19993C1");
    check_field_offset(lv, s19993c1f0, ABISELECT(944,700), "S19993C1.s19993c1f0");
    test_class_info(&lv, &cd_S19993C1);
    dp->~S19993C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19993C1(Test_S19993C1, "S19993C1", ABISELECT(2576,1904));

#else // __cplusplus

extern void _ZN8S19993C1C1Ev();
extern void _ZN8S19993C1D2Ev();
Name_Map name_map_S19993C1[] = {
  NSPAIR(_ZN8S19993C1C1Ev),
  NSPAIR(_ZN8S19993C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19993C2;
extern VTBL_ENTRY _ZTI8S19993C2[];
extern  VTBL_ENTRY _ZTV8S19993C2[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19993C9;
extern VTBL_ENTRY _ZTI8S19993C9[];
extern  VTBL_ENTRY _ZTV8S19993C9[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C10;
extern VTBL_ENTRY _ZTI9S19993C10[];
extern  VTBL_ENTRY _ZTV9S19993C10[];
extern Class_Descriptor cd_S19993C8;
extern VTBL_ENTRY _ZTI8S19993C8[];
extern  VTBL_ENTRY _ZTV8S19993C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19993C8[];
extern Class_Descriptor cd_S19993C7;
extern VTBL_ENTRY _ZTI8S19993C7[];
extern  VTBL_ENTRY _ZTV8S19993C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19993C7[];
extern Class_Descriptor cd_S19993C9;
extern VTBL_ENTRY _ZTI8S19993C9[];
extern  VTBL_ENTRY _ZTV8S19993C9[];
extern Class_Descriptor cd_S19993C12;
extern VTBL_ENTRY _ZTI9S19993C12[];
extern  VTBL_ENTRY _ZTV9S19993C12[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C10;
extern VTBL_ENTRY _ZTI9S19993C10[];
extern  VTBL_ENTRY _ZTV9S19993C10[];
extern Class_Descriptor cd_S19993C11;
extern VTBL_ENTRY _ZTI9S19993C11[];
extern  VTBL_ENTRY _ZTV9S19993C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C11[];
extern Class_Descriptor cd_S19993C12;
extern VTBL_ENTRY _ZTI9S19993C12[];
extern  VTBL_ENTRY _ZTV9S19993C12[];
extern Class_Descriptor cd_S19993C2;
extern VTBL_ENTRY _ZTI8S19993C2[];
extern  VTBL_ENTRY _ZTV8S19993C2[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C10;
extern VTBL_ENTRY _ZTI9S19993C10[];
extern  VTBL_ENTRY _ZTV9S19993C10[];
extern Class_Descriptor cd_S19993C14;
extern VTBL_ENTRY _ZTI9S19993C14[];
extern  VTBL_ENTRY _ZTV9S19993C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C14[];
extern Class_Descriptor cd_S19993C13;
extern VTBL_ENTRY _ZTI9S19993C13[];
extern  VTBL_ENTRY _ZTV9S19993C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C13[];
extern Class_Descriptor cd_S19993C5;
extern VTBL_ENTRY _ZTI8S19993C5[];
extern  VTBL_ENTRY _ZTV8S19993C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19993C5[];
extern Class_Descriptor cd_S19993C3;
extern VTBL_ENTRY _ZTI8S19993C3[];
extern  VTBL_ENTRY _ZTV8S19993C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19993C3[];
extern Class_Descriptor cd_S19993C12;
extern VTBL_ENTRY _ZTI9S19993C12[];
extern  VTBL_ENTRY _ZTV9S19993C12[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C10;
extern VTBL_ENTRY _ZTI9S19993C10[];
extern  VTBL_ENTRY _ZTV9S19993C10[];
extern Class_Descriptor cd_S19993C11;
extern VTBL_ENTRY _ZTI9S19993C11[];
extern  VTBL_ENTRY _ZTV9S19993C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C11[];
extern Class_Descriptor cd_S19993C17;
extern VTBL_ENTRY _ZTI9S19993C17[];
extern  VTBL_ENTRY _ZTV9S19993C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C17[];
extern Class_Descriptor cd_S19993C13;
extern VTBL_ENTRY _ZTI9S19993C13[];
extern  VTBL_ENTRY _ZTV9S19993C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C13[];
extern Class_Descriptor cd_S19993C9;
extern VTBL_ENTRY _ZTI8S19993C9[];
extern  VTBL_ENTRY _ZTV8S19993C9[];
extern Class_Descriptor cd_S19993C8;
extern VTBL_ENTRY _ZTI8S19993C8[];
extern  VTBL_ENTRY _ZTV8S19993C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19993C8[];
extern Class_Descriptor cd_S19993C7;
extern VTBL_ENTRY _ZTI8S19993C7[];
extern  VTBL_ENTRY _ZTV8S19993C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19993C7[];
extern Class_Descriptor cd_S19993C16;
extern VTBL_ENTRY _ZTI9S19993C16[];
extern  VTBL_ENTRY _ZTV9S19993C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C16[];
extern Class_Descriptor cd_S19993C2;
extern VTBL_ENTRY _ZTI8S19993C2[];
extern  VTBL_ENTRY _ZTV8S19993C2[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C10;
extern VTBL_ENTRY _ZTI9S19993C10[];
extern  VTBL_ENTRY _ZTV9S19993C10[];
extern Class_Descriptor cd_S19993C14;
extern VTBL_ENTRY _ZTI9S19993C14[];
extern  VTBL_ENTRY _ZTV9S19993C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C14[];
extern Class_Descriptor cd_S19993C9;
extern VTBL_ENTRY _ZTI8S19993C9[];
extern  VTBL_ENTRY _ZTV8S19993C9[];
extern Class_Descriptor cd_S19993C8;
extern VTBL_ENTRY _ZTI8S19993C8[];
extern  VTBL_ENTRY _ZTV8S19993C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19993C8[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C2;
extern VTBL_ENTRY _ZTI8S19993C2[];
extern  VTBL_ENTRY _ZTV8S19993C2[];
extern Class_Descriptor cd_S19993C9;
extern VTBL_ENTRY _ZTI8S19993C9[];
extern  VTBL_ENTRY _ZTV8S19993C9[];
extern Class_Descriptor cd_S19993C9;
extern VTBL_ENTRY _ZTI8S19993C9[];
extern  VTBL_ENTRY _ZTV8S19993C9[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C10;
extern VTBL_ENTRY _ZTI9S19993C10[];
extern  VTBL_ENTRY _ZTV9S19993C10[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C15;
extern VTBL_ENTRY _ZTI9S19993C15[];
extern  VTBL_ENTRY _ZTV9S19993C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C15[];
extern Class_Descriptor cd_S19993C2;
extern VTBL_ENTRY _ZTI8S19993C2[];
extern  VTBL_ENTRY _ZTV8S19993C2[];
extern Class_Descriptor cd_S19993C18;
extern VTBL_ENTRY _ZTI9S19993C18[];
extern  VTBL_ENTRY _ZTV9S19993C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C18[];
extern Class_Descriptor cd_S19993C21;
extern VTBL_ENTRY _ZTI9S19993C21[];
extern  VTBL_ENTRY _ZTV9S19993C21[];
extern Class_Descriptor cd_S19993C20;
extern VTBL_ENTRY _ZTI9S19993C20[];
extern  VTBL_ENTRY _ZTV9S19993C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C20[];
extern Class_Descriptor cd_S19993C19;
extern VTBL_ENTRY _ZTI9S19993C19[];
extern  VTBL_ENTRY _ZTV9S19993C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C19[];
static Base_Class bases_S19993C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19993C2,    ABISELECT(960,704), //bcp->offset
    140, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    62, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19993C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    64, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S77C13_nt,    ABISELECT(1216,892), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19993C9,    ABISELECT(1088,796), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19993C6_nt,    ABISELECT(1216,892), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19993C10,    ABISELECT(1216,892), //bcp->offset
    207, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    65, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19993C8,    ABISELECT(1088,796), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    86, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19993C7,    ABISELECT(1088,796), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    85, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19993C9,    ABISELECT(1872,1400), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    67, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19993C12,    ABISELECT(1104,804), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19993C6_nt,    ABISELECT(1136,828), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19993C10,    ABISELECT(1136,828), //bcp->offset
    199, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    68, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19993C11,    ABISELECT(1104,804), //bcp->offset
    191, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    66, //bcp->index_in_construction_vtbl_array
    92, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19993C12,    ABISELECT(1288,952), //bcp->offset
    221, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    69, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S19993C2,    ABISELECT(1344,988), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19993C6_nt,    ABISELECT(1472,1080), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19993C10,    ABISELECT(1472,1080), //bcp->offset
    256, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    72, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19993C14,    ABISELECT(1344,988), //bcp->offset
    235, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    71, //bcp->index_in_construction_vtbl_array
    106, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S19993C13,    ABISELECT(1320,976), //bcp->offset
    225, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    70, //bcp->index_in_construction_vtbl_array
    103, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S19993C5,    ABISELECT(1088,796), //bcp->offset
    144, //bcp->virtual_function_table_offset
    33, //num_negative_vtable_entries(t, bcp)
    63, //bcp->index_in_construction_vtbl_array
    84, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S19993C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19993C12,    ABISELECT(1760,1316), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S19993C6_nt,    ABISELECT(1792,1340), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19993C10,    ABISELECT(1792,1340), //bcp->offset
    282, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    75, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S19993C11,    ABISELECT(1760,1316), //bcp->offset
    264, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    74, //bcp->index_in_construction_vtbl_array
    107, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S19993C17,    ABISELECT(1872,1400), //bcp->offset
    290, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    76, //bcp->index_in_construction_vtbl_array
    109, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S19993C13,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19993C9,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S19993C8,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S19993C7,    ABISELECT(32,20), //bcp->offset
    53, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    77, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19993C16,    ABISELECT(16,8), //bcp->offset
    33, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    73, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19993C2,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S19993C6_nt,    ABISELECT(192,124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S19993C10,    ABISELECT(192,124), //bcp->offset
    74, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S19993C14,    ABISELECT(64,32), //bcp->offset
    65, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    78, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19993C9,    ABISELECT(2544,1892), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S19993C8,    ABISELECT(2544,1892), //bcp->offset
    307, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    80, //bcp->index_in_construction_vtbl_array
    113, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    46, //immediately_derived
  0, 1},
  {&cd_S19993C6_nt,    ABISELECT(480,360), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S19993C2,    ABISELECT(496,364), //bcp->offset
    101, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S19993C9,    ABISELECT(624,456), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    40, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S19993C9,    ABISELECT(632,460), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    41, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(632,460), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S19993C6_nt,    ABISELECT(640,464), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    42, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S19993C10,    ABISELECT(640,464), //bcp->offset
    125, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    43, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S19993C6_nt,    ABISELECT(712,524), //bcp->offset
    133, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    44, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S19993C15,    ABISELECT(632,460), //bcp->offset
    116, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    82, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    45, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S19993C2,    ABISELECT(720,528), //bcp->offset
    137, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    46, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S19993C18,    ABISELECT(624,456), //bcp->offset
    104, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    81, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    47, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S19993C21,    ABISELECT(2552,1896), //bcp->offset
    318, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    83, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    50, //immediately_derived
  0, 1},
  {&cd_S19993C20,    ABISELECT(480,360), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    48, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S19993C19,    ABISELECT(480,360), //bcp->offset
    82, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    79, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    49, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19993C1[];
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN8S19993C1D1Ev();
extern void _ZN8S19993C1D0Ev();
extern void _ZN8S19993C33v41Ev();
extern void _ZN8S19993C33v42Ev();
extern void _ZN8S19993C33v43Ev();
extern void _ZN8S19993C12v1Ev();
extern void _ZN8S19993C12v2Ev();
extern void _ZN8S19993C12v3Ev();
extern void _ZN8S19993C12v4Ev();
extern void _ZN8S19993C12v5Ev();
extern void _ZN8S19993C12v6Ev();
extern void _ZN8S19993C12v7Ev();
extern void _ZN8S19993C12v8Ev();
extern void _ZN8S19993C12v9Ev();
extern void _ZN9S19993C133v30Ev();
extern void _ZN9S19993C133v31Ev();
extern void _ZN9S19993C133v32Ev();
extern void ABISELECT(_ZThn16_N8S19993C1D1Ev,_ZThn8_N8S19993C1D1Ev)();
extern void ABISELECT(_ZThn16_N8S19993C1D0Ev,_ZThn8_N8S19993C1D0Ev)();
extern void _ZN9S19993C163v48Ev();
extern void _ZN9S19993C163v49Ev();
extern void _ZN9S19993C163v50Ev();
extern void _ZN9S19993C163v51Ev();
extern void _ZN9S19993C163v52Ev();
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
extern void ABISELECT(_ZThn32_N8S19993C1D1Ev,_ZThn20_N8S19993C1D1Ev)();
extern void ABISELECT(_ZThn32_N8S19993C1D0Ev,_ZThn20_N8S19993C1D0Ev)();
extern void _ZN8S19993C73v20Ev();
extern void _ZN8S19993C23v10Ev();
extern void _ZN9S19993C143v25Ev();
extern void _ZN9S19993C143v26Ev();
extern void _ZN9S19993C143v27Ev();
extern void _ZN9S19993C143v28Ev();
extern void _ZN9S19993C143v29Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C203v63Ev();
extern void _ZN9S19993C203v64Ev();
extern void _ZN9S19993C193v65Ev();
extern void _ZN9S19993C193v66Ev();
extern void _ZN9S19993C193v67Ev();
extern void _ZN9S19993C193v68Ev();
extern void _ZN9S19993C193v69Ev();
extern void _ZN9S19993C193v70Ev();
extern void _ZN9S19993C193v71Ev();
extern void _ZN8S19993C23v10Ev();
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN9S19993C183v54Ev();
extern void _ZN9S19993C183v55Ev();
extern void _ZN9S19993C183v56Ev();
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN9S19993C153v53Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN8S19993C23v10Ev();
extern void _ZN8S19993C23v10Ev();
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
extern void ABISELECT(_ZTv0_n112_N8S19993C1D1Ev,_ZTv0_n56_N8S19993C1D1Ev)();
extern void ABISELECT(_ZThn1088_N8S19993C1D1Ev,_ZThn796_N8S19993C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n112_N8S19993C1D0Ev,_ZTv0_n56_N8S19993C1D0Ev)();
extern void ABISELECT(_ZThn1088_N8S19993C1D0Ev,_ZThn796_N8S19993C1D0Ev)() __attribute__((weak));
extern void _ZN8S19993C73v20Ev();
extern void _ZN8S19993C53v33Ev();
extern void _ZN8S19993C53v34Ev();
extern void _ZN8S19993C53v35Ev();
extern void _ZN8S19993C53v36Ev();
extern void _ZN8S19993C53v37Ev();
extern void _ZN8S19993C53v38Ev();
extern void _ZN8S19993C53v39Ev();
extern void _ZN8S19993C53v40Ev();
extern void _ZN9S19993C123v21Ev();
extern void _ZN9S19993C113v22Ev();
extern void _ZN9S19993C113v23Ev();
extern void _ZN9S19993C113v24Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
extern void _ZN9S19993C123v21Ev();
extern void _ZN9S19993C133v30Ev();
extern void _ZN9S19993C133v31Ev();
extern void _ZN9S19993C133v32Ev();
extern void _ZN8S19993C23v10Ev();
extern void _ZN9S19993C143v25Ev();
extern void _ZN9S19993C143v26Ev();
extern void _ZN9S19993C143v27Ev();
extern void _ZN9S19993C143v28Ev();
extern void _ZN9S19993C143v29Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
extern void _ZN9S19993C123v21Ev();
extern void _ZN9S19993C113v22Ev();
extern void _ZN9S19993C113v23Ev();
extern void _ZN9S19993C113v24Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN9S19993C173v44Ev();
extern void _ZN9S19993C173v45Ev();
extern void _ZN9S19993C173v46Ev();
extern void _ZN9S19993C173v47Ev();
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
extern void _ZN9S19993C213v57Ev();
extern void _ZN9S19993C213v58Ev();
extern void _ZN9S19993C213v59Ev();
extern void _ZN9S19993C213v60Ev();
extern void _ZN9S19993C213v61Ev();
extern void _ZN9S19993C213v62Ev();
static  VTBL_ENTRY vtc_S19993C1[] = {
  ABISELECT(2552,1896),
  ABISELECT(2544,1892),
  ABISELECT(1872,1400),
  ABISELECT(1760,1316),
  ABISELECT(1344,988),
  ABISELECT(1320,976),
  ABISELECT(1288,952),
  ABISELECT(1872,1400),
  ABISELECT(960,704),
  ABISELECT(1216,892),
  ABISELECT(1216,892),
  0,
  ABISELECT(1088,796),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19993C1[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S19993C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19993C1D0Ev,
  (VTBL_ENTRY)&_ZN8S19993C33v41Ev,
  (VTBL_ENTRY)&_ZN8S19993C33v42Ev,
  (VTBL_ENTRY)&_ZN8S19993C33v43Ev,
  (VTBL_ENTRY)&_ZN8S19993C12v1Ev,
  (VTBL_ENTRY)&_ZN8S19993C12v2Ev,
  (VTBL_ENTRY)&_ZN8S19993C12v3Ev,
  (VTBL_ENTRY)&_ZN8S19993C12v4Ev,
  (VTBL_ENTRY)&_ZN8S19993C12v5Ev,
  (VTBL_ENTRY)&_ZN8S19993C12v6Ev,
  (VTBL_ENTRY)&_ZN8S19993C12v7Ev,
  (VTBL_ENTRY)&_ZN8S19993C12v8Ev,
  (VTBL_ENTRY)&_ZN8S19993C12v9Ev,
  ABISELECT(944,696),
  ABISELECT(1200,884),
  ABISELECT(-16,-8),
  ABISELECT(1856,1392),
  ABISELECT(1856,1392),
  ABISELECT(1744,1308),
  ABISELECT(1200,884),
  ABISELECT(1328,980),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19993C1[0]),
  (VTBL_ENTRY)&_ZN9S19993C133v30Ev,
  (VTBL_ENTRY)&_ZN9S19993C133v31Ev,
  (VTBL_ENTRY)&_ZN9S19993C133v32Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19993C1D1Ev,_ZThn8_N8S19993C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19993C1D0Ev,_ZThn8_N8S19993C1D0Ev),
  (VTBL_ENTRY)&_ZN9S19993C163v48Ev,
  (VTBL_ENTRY)&_ZN9S19993C163v49Ev,
  (VTBL_ENTRY)&_ZN9S19993C163v50Ev,
  (VTBL_ENTRY)&_ZN9S19993C163v51Ev,
  (VTBL_ENTRY)&_ZN9S19993C163v52Ev,
  ABISELECT(928,684),
  ABISELECT(1184,872),
  ABISELECT(-32,-20),
  ABISELECT(1184,872),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19993C1[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S19993C1D1Ev,_ZThn20_N8S19993C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S19993C1D0Ev,_ZThn20_N8S19993C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19993C73v20Ev,
  ABISELECT(1152,860),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S19993C1[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v29Ev,
  ABISELECT(-192,-124),
  (VTBL_ENTRY)&(_ZTI8S19993C1[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
  ABISELECT(2072,1536),
  ABISELECT(808,592),
  ABISELECT(736,532),
  ABISELECT(-480,-360),
  ABISELECT(736,532),
  ABISELECT(2064,1532),
  ABISELECT(-480,-360),
  (VTBL_ENTRY)&(_ZTI8S19993C1[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C203v63Ev,
  (VTBL_ENTRY)&_ZN9S19993C203v64Ev,
  (VTBL_ENTRY)&_ZN9S19993C193v65Ev,
  (VTBL_ENTRY)&_ZN9S19993C193v66Ev,
  (VTBL_ENTRY)&_ZN9S19993C193v67Ev,
  (VTBL_ENTRY)&_ZN9S19993C193v68Ev,
  (VTBL_ENTRY)&_ZN9S19993C193v69Ev,
  (VTBL_ENTRY)&_ZN9S19993C193v70Ev,
  (VTBL_ENTRY)&_ZN9S19993C193v71Ev,
  ABISELECT(-496,-364),
  (VTBL_ENTRY)&(_ZTI8S19993C1[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
  ABISELECT(592,436),
  ABISELECT(592,436),
  ABISELECT(1920,1436),
  ABISELECT(-624,-456),
  ABISELECT(664,496),
  ABISELECT(-624,-456),
  (VTBL_ENTRY)&(_ZTI8S19993C1[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19993C183v54Ev,
  (VTBL_ENTRY)&_ZN9S19993C183v55Ev,
  (VTBL_ENTRY)&_ZN9S19993C183v56Ev,
  ABISELECT(584,432),
  ABISELECT(-632,-460),
  ABISELECT(584,432),
  ABISELECT(1912,1432),
  ABISELECT(-632,-460),
  (VTBL_ENTRY)&(_ZTI8S19993C1[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19993C153v53Ev,
  ABISELECT(-640,-464),
  (VTBL_ENTRY)&(_ZTI8S19993C1[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
  ABISELECT(-712,-524),
  (VTBL_ENTRY)&(_ZTI8S19993C1[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  ABISELECT(-720,-528),
  (VTBL_ENTRY)&(_ZTI8S19993C1[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
  0,
  ABISELECT(-960,-704),
  (VTBL_ENTRY)&(_ZTI8S19993C1[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-1088,-796),
  0,
  0,
  0,
  ABISELECT(256,192),
  ABISELECT(232,180),
  ABISELECT(200,156),
  ABISELECT(784,604),
  ABISELECT(-128,-92),
  ABISELECT(128,96),
  ABISELECT(-1088,-796),
  ABISELECT(128,96),
  ABISELECT(-1088,-796),
  (VTBL_ENTRY)&(_ZTI8S19993C1[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N8S19993C1D1Ev,_ZTv0_n56_N8S19993C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N8S19993C1D0Ev,_ZTv0_n56_N8S19993C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19993C73v20Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v33Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v34Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v35Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v36Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v37Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v38Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v39Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v40Ev,
  ABISELECT(112,88),
  ABISELECT(768,596),
  ABISELECT(-1104,-804),
  (VTBL_ENTRY)&(_ZTI8S19993C1[0]),
  (VTBL_ENTRY)&_ZN9S19993C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v22Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v23Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v24Ev,
  ABISELECT(-1136,-828),
  (VTBL_ENTRY)&(_ZTI8S19993C1[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-1216,-892),
  (VTBL_ENTRY)&(_ZTI8S19993C1[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
  0,
  ABISELECT(-1288,-952),
  (VTBL_ENTRY)&(_ZTI8S19993C1[0]),
  (VTBL_ENTRY)&_ZN9S19993C123v21Ev,
  0,
  0,
  0,
  ABISELECT(-104,-84),
  ABISELECT(24,12),
  ABISELECT(-1320,-976),
  (VTBL_ENTRY)&(_ZTI8S19993C1[0]),
  (VTBL_ENTRY)&_ZN9S19993C133v30Ev,
  (VTBL_ENTRY)&_ZN9S19993C133v31Ev,
  (VTBL_ENTRY)&_ZN9S19993C133v32Ev,
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-96),
  ABISELECT(-1344,-988),
  (VTBL_ENTRY)&(_ZTI8S19993C1[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v29Ev,
  ABISELECT(-1472,-1080),
  (VTBL_ENTRY)&(_ZTI8S19993C1[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  0,
  0,
  0,
  0,
  ABISELECT(-544,-424),
  ABISELECT(112,84),
  ABISELECT(-1760,-1316),
  (VTBL_ENTRY)&(_ZTI8S19993C1[0]),
  (VTBL_ENTRY)&_ZN9S19993C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v22Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v23Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v24Ev,
  ABISELECT(-1792,-1340),
  (VTBL_ENTRY)&(_ZTI8S19993C1[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-656,-508),
  0,
  ABISELECT(-112,-84),
  0,
  0,
  ABISELECT(-1872,-1400),
  (VTBL_ENTRY)&(_ZTI8S19993C1[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19993C173v44Ev,
  (VTBL_ENTRY)&_ZN9S19993C173v45Ev,
  (VTBL_ENTRY)&_ZN9S19993C173v46Ev,
  (VTBL_ENTRY)&_ZN9S19993C173v47Ev,
  0,
  0,
  0,
  ABISELECT(-1328,-1000),
  ABISELECT(-2544,-1892),
  ABISELECT(-1328,-1000),
  ABISELECT(-2544,-1892),
  (VTBL_ENTRY)&(_ZTI8S19993C1[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-2552,-1896),
  (VTBL_ENTRY)&(_ZTI8S19993C1[0]),
  (VTBL_ENTRY)&_ZN9S19993C213v57Ev,
  (VTBL_ENTRY)&_ZN9S19993C213v58Ev,
  (VTBL_ENTRY)&_ZN9S19993C213v59Ev,
  (VTBL_ENTRY)&_ZN9S19993C213v60Ev,
  (VTBL_ENTRY)&_ZN9S19993C213v61Ev,
  (VTBL_ENTRY)&_ZN9S19993C213v62Ev,
};
extern VTBL_ENTRY _ZTV8S19993C1[];
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN8S19993C3D1Ev();
extern void _ZN8S19993C3D0Ev();
extern void _ZN8S19993C33v41Ev();
extern void _ZN8S19993C33v42Ev();
extern void _ZN8S19993C33v43Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C3__8S19993C1[] = {
  ABISELECT(1344,988),
  ABISELECT(1320,976),
  ABISELECT(1288,952),
  ABISELECT(1872,1400),
  ABISELECT(960,704),
  ABISELECT(1216,892),
  ABISELECT(1216,892),
  0,
  ABISELECT(1088,796),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19993C3[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S19993C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19993C3D0Ev,
  (VTBL_ENTRY)&_ZN8S19993C33v41Ev,
  (VTBL_ENTRY)&_ZN8S19993C33v42Ev,
  (VTBL_ENTRY)&_ZN8S19993C33v43Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
extern void ABISELECT(_ZTv0_n112_N8S19993C3D1Ev,_ZTv0_n56_N8S19993C3D1Ev)();
extern void ABISELECT(_ZThn1088_N8S19993C3D1Ev,_ZThn796_N8S19993C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n112_N8S19993C3D0Ev,_ZTv0_n56_N8S19993C3D0Ev)();
extern void ABISELECT(_ZThn1088_N8S19993C3D0Ev,_ZThn796_N8S19993C3D0Ev)() __attribute__((weak));
extern void _ZN8S19993C73v20Ev();
extern void _ZN8S19993C53v33Ev();
extern void _ZN8S19993C53v34Ev();
extern void _ZN8S19993C53v35Ev();
extern void _ZN8S19993C53v36Ev();
extern void _ZN8S19993C53v37Ev();
extern void _ZN8S19993C53v38Ev();
extern void _ZN8S19993C53v39Ev();
extern void _ZN8S19993C53v40Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C5__8S19993C3__8S19993C1[] = {
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-1088,-796),
  0,
  0,
  0,
  ABISELECT(256,192),
  ABISELECT(232,180),
  ABISELECT(200,156),
  ABISELECT(784,604),
  ABISELECT(-128,-92),
  ABISELECT(128,96),
  ABISELECT(-1088,-796),
  ABISELECT(128,96),
  ABISELECT(-1088,-796),
  (VTBL_ENTRY)&(_ZTI8S19993C3[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N8S19993C3D1Ev,_ZTv0_n56_N8S19993C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N8S19993C3D0Ev,_ZTv0_n56_N8S19993C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19993C73v20Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v33Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v34Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v35Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v36Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v37Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v38Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v39Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v40Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C10__8S19993C3__8S19993C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-1216,-892),
  (VTBL_ENTRY)&(_ZTI8S19993C3[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern void _ZN8S19993C23v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C2__8S19993C3__8S19993C1[] = {
  0,
  ABISELECT(-960,-704),
  (VTBL_ENTRY)&(_ZTI8S19993C3[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
};
extern void _ZN9S19993C123v21Ev();
extern void _ZN9S19993C113v22Ev();
extern void _ZN9S19993C113v23Ev();
extern void _ZN9S19993C113v24Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C118S19993C5__8S19993C3__8S19993C1[] = {
  ABISELECT(112,88),
  ABISELECT(768,596),
  ABISELECT(-1104,-804),
  (VTBL_ENTRY)&(_ZTI8S19993C3[0]),
  (VTBL_ENTRY)&_ZN9S19993C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v22Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v23Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v24Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C9__A1__8S19993C3__8S19993C1[] = {
  0,
  0,
  ABISELECT(-1872,-1400),
  (VTBL_ENTRY)&(_ZTI8S19993C3[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C109S19993C118S19993C5__A1__8S19993C3__8S19993C1[] = {
  ABISELECT(-1136,-828),
  (VTBL_ENTRY)&(_ZTI8S19993C3[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern void _ZN9S19993C123v21Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C12__A1__8S19993C3__8S19993C1[] = {
  0,
  ABISELECT(-1288,-952),
  (VTBL_ENTRY)&(_ZTI8S19993C3[0]),
  (VTBL_ENTRY)&_ZN9S19993C123v21Ev,
};
extern void _ZN9S19993C133v30Ev();
extern void _ZN9S19993C133v31Ev();
extern void _ZN9S19993C133v32Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C13__8S19993C3__8S19993C1[] = {
  0,
  0,
  0,
  ABISELECT(-104,-84),
  ABISELECT(24,12),
  ABISELECT(-1320,-976),
  (VTBL_ENTRY)&(_ZTI8S19993C3[0]),
  (VTBL_ENTRY)&_ZN9S19993C133v30Ev,
  (VTBL_ENTRY)&_ZN9S19993C133v31Ev,
  (VTBL_ENTRY)&_ZN9S19993C133v32Ev,
};
extern void _ZN8S19993C23v10Ev();
extern void _ZN9S19993C143v25Ev();
extern void _ZN9S19993C143v26Ev();
extern void _ZN9S19993C143v27Ev();
extern void _ZN9S19993C143v28Ev();
extern void _ZN9S19993C143v29Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C14__8S19993C3__8S19993C1[] = {
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-96),
  ABISELECT(-1344,-988),
  (VTBL_ENTRY)&(_ZTI8S19993C3[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v29Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C109S19993C14__A2__8S19993C3__8S19993C1[] = {
  ABISELECT(-1472,-1080),
  (VTBL_ENTRY)&(_ZTI8S19993C3[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern void _ZN9S19993C133v30Ev();
extern void _ZN9S19993C133v31Ev();
extern void _ZN9S19993C133v32Ev();
extern void _ZN9S19993C16D1Ev();
extern void _ZN9S19993C16D0Ev();
extern void _ZN9S19993C163v48Ev();
extern void _ZN9S19993C163v49Ev();
extern void _ZN9S19993C163v50Ev();
extern void _ZN9S19993C163v51Ev();
extern void _ZN9S19993C163v52Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C16__8S19993C1[] = {
  ABISELECT(944,696),
  ABISELECT(1200,884),
  ABISELECT(-16,-8),
  ABISELECT(1856,1392),
  ABISELECT(1856,1392),
  ABISELECT(1744,1308),
  ABISELECT(1200,884),
  ABISELECT(1328,980),
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C16[0]),
  (VTBL_ENTRY)&_ZN9S19993C133v30Ev,
  (VTBL_ENTRY)&_ZN9S19993C133v31Ev,
  (VTBL_ENTRY)&_ZN9S19993C133v32Ev,
  (VTBL_ENTRY)&_ZN9S19993C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19993C16D0Ev,
  (VTBL_ENTRY)&_ZN9S19993C163v48Ev,
  (VTBL_ENTRY)&_ZN9S19993C163v49Ev,
  (VTBL_ENTRY)&_ZN9S19993C163v50Ev,
  (VTBL_ENTRY)&_ZN9S19993C163v51Ev,
  (VTBL_ENTRY)&_ZN9S19993C163v52Ev,
};
extern void _ZN9S19993C133v30Ev();
extern void _ZN9S19993C133v31Ev();
extern void _ZN9S19993C133v32Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C139S19993C16__A1__8S19993C1[] = {
  ABISELECT(1200,884),
  ABISELECT(1328,980),
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C13[0]),
  (VTBL_ENTRY)&_ZN9S19993C133v30Ev,
  (VTBL_ENTRY)&_ZN9S19993C133v31Ev,
  (VTBL_ENTRY)&_ZN9S19993C133v32Ev,
};
extern void _ZN8S19993C23v10Ev();
extern void _ZN9S19993C143v25Ev();
extern void _ZN9S19993C143v26Ev();
extern void _ZN9S19993C143v27Ev();
extern void _ZN9S19993C143v28Ev();
extern void _ZN9S19993C143v29Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C14__9S19993C139S19993C16__A1__8S19993C1[] = {
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-96),
  ABISELECT(-1328,-980),
  (VTBL_ENTRY)&(_ZTI9S19993C13[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v29Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C109S19993C14__9S19993C139S19993C16__A1__8S19993C1[] = {
  ABISELECT(-1456,-1072),
  (VTBL_ENTRY)&(_ZTI9S19993C13[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
extern void _ZN8S19993C7D1Ev();
extern void _ZN8S19993C7D0Ev();
extern void _ZN8S19993C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C79S19993C16__A1__8S19993C1[] = {
  ABISELECT(928,684),
  ABISELECT(1184,872),
  ABISELECT(-32,-20),
  ABISELECT(1184,872),
  0,
  (VTBL_ENTRY)&(_ZTI8S19993C7[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
  (VTBL_ENTRY)&_ZN8S19993C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19993C7D0Ev,
  (VTBL_ENTRY)&_ZN8S19993C73v20Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C88S19993C79S19993C16__A1__8S19993C1[] = {
  ABISELECT(1184,872),
  ABISELECT(-32,-20),
  ABISELECT(1184,872),
  0,
  (VTBL_ENTRY)&(_ZTI8S19993C8[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
static  VTBL_ENTRY _tg__ZTV11S19993C6_nt__8S19993C88S19993C79S19993C16__A1__8S19993C1[] = {
  0,
  0,
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI8S19993C8[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C10__8S19993C88S19993C79S19993C16__A1__8S19993C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-1184,-872),
  (VTBL_ENTRY)&(_ZTI8S19993C8[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
static  VTBL_ENTRY _tg__ZTV11S19993C6_nt__8S19993C79S19993C16__A1__8S19993C1[] = {
  0,
  0,
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI8S19993C7[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C10__8S19993C79S19993C16__A1__8S19993C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-1184,-872),
  (VTBL_ENTRY)&(_ZTI8S19993C7[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern void _ZN8S19993C23v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C2__8S19993C79S19993C16__A1__8S19993C1[] = {
  0,
  ABISELECT(-928,-684),
  (VTBL_ENTRY)&(_ZTI8S19993C7[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
};
extern void _ZN9S19993C123v21Ev();
extern void _ZN9S19993C113v22Ev();
extern void _ZN9S19993C113v23Ev();
extern void _ZN9S19993C113v24Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C11__9S19993C16__8S19993C1[] = {
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  0,
  0,
  0,
  0,
  ABISELECT(-544,-424),
  ABISELECT(112,84),
  ABISELECT(-1744,-1308),
  (VTBL_ENTRY)&(_ZTI9S19993C16[0]),
  (VTBL_ENTRY)&_ZN9S19993C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v22Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v23Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v24Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN9S19993C173v44Ev();
extern void _ZN9S19993C173v45Ev();
extern void _ZN9S19993C173v46Ev();
extern void _ZN9S19993C173v47Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C17__9S19993C16__8S19993C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-656,-508),
  0,
  ABISELECT(-112,-84),
  0,
  0,
  ABISELECT(-1856,-1392),
  (VTBL_ENTRY)&(_ZTI9S19993C16[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19993C173v44Ev,
  (VTBL_ENTRY)&_ZN9S19993C173v45Ev,
  (VTBL_ENTRY)&_ZN9S19993C173v46Ev,
  (VTBL_ENTRY)&_ZN9S19993C173v47Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C109S19993C11__9S19993C16__8S19993C1[] = {
  ABISELECT(-1776,-1332),
  (VTBL_ENTRY)&(_ZTI9S19993C16[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern void _ZN8S19993C23v10Ev();
extern void _ZN9S19993C143v25Ev();
extern void _ZN9S19993C143v26Ev();
extern void _ZN9S19993C143v27Ev();
extern void _ZN9S19993C143v28Ev();
extern void _ZN9S19993C143v29Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C14__9S19993C16__8S19993C1[] = {
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-96),
  ABISELECT(-1328,-980),
  (VTBL_ENTRY)&(_ZTI9S19993C16[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v29Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C109S19993C14__A1__9S19993C16__8S19993C1[] = {
  ABISELECT(-1456,-1072),
  (VTBL_ENTRY)&(_ZTI9S19993C16[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
extern void ABISELECT(_ZThn16_N9S19993C16D1Ev,_ZThn12_N9S19993C16D1Ev)();
extern void ABISELECT(_ZThn16_N9S19993C16D0Ev,_ZThn12_N9S19993C16D0Ev)();
extern void _ZN8S19993C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C7__9S19993C16__8S19993C1[] = {
  ABISELECT(928,684),
  ABISELECT(1184,872),
  ABISELECT(-32,-20),
  ABISELECT(1184,872),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19993C16[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19993C16D1Ev,_ZThn12_N9S19993C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19993C16D0Ev,_ZThn12_N9S19993C16D0Ev),
  (VTBL_ENTRY)&_ZN8S19993C73v20Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
static  VTBL_ENTRY _tg__ZTV11S19993C6_nt__A2__9S19993C16__8S19993C1[] = {
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S19993C16[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C10__A2__9S19993C16__8S19993C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-1200,-884),
  (VTBL_ENTRY)&(_ZTI9S19993C16[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern void _ZN8S19993C23v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C2__A1__9S19993C16__8S19993C1[] = {
  0,
  ABISELECT(-944,-696),
  (VTBL_ENTRY)&(_ZTI9S19993C16[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
};
extern void _ZN8S19993C23v10Ev();
extern void _ZN9S19993C143v25Ev();
extern void _ZN9S19993C143v26Ev();
extern void _ZN9S19993C143v27Ev();
extern void _ZN9S19993C143v28Ev();
extern void _ZN9S19993C143v29Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C14__A__8S19993C1[] = {
  ABISELECT(1152,860),
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C14[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v29Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C203v63Ev();
extern void _ZN9S19993C203v64Ev();
extern void _ZN9S19993C193v65Ev();
extern void _ZN9S19993C193v66Ev();
extern void _ZN9S19993C193v67Ev();
extern void _ZN9S19993C193v68Ev();
extern void _ZN9S19993C193v69Ev();
extern void _ZN9S19993C193v70Ev();
extern void _ZN9S19993C193v71Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C19__8S19993C1[] = {
  ABISELECT(2072,1536),
  ABISELECT(808,592),
  ABISELECT(736,532),
  ABISELECT(-480,-360),
  ABISELECT(736,532),
  ABISELECT(2064,1532),
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C19[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C203v63Ev,
  (VTBL_ENTRY)&_ZN9S19993C203v64Ev,
  (VTBL_ENTRY)&_ZN9S19993C193v65Ev,
  (VTBL_ENTRY)&_ZN9S19993C193v66Ev,
  (VTBL_ENTRY)&_ZN9S19993C193v67Ev,
  (VTBL_ENTRY)&_ZN9S19993C193v68Ev,
  (VTBL_ENTRY)&_ZN9S19993C193v69Ev,
  (VTBL_ENTRY)&_ZN9S19993C193v70Ev,
  (VTBL_ENTRY)&_ZN9S19993C193v71Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C203v63Ev();
extern void _ZN9S19993C203v64Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C209S19993C19__8S19993C1[] = {
  ABISELECT(2072,1536),
  ABISELECT(808,592),
  ABISELECT(736,532),
  ABISELECT(-480,-360),
  ABISELECT(736,532),
  ABISELECT(2064,1532),
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C20[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C203v63Ev,
  (VTBL_ENTRY)&_ZN9S19993C203v64Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN9S19993C183v54Ev();
extern void _ZN9S19993C183v55Ev();
extern void _ZN9S19993C183v56Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C189S19993C209S19993C19__8S19993C1[] = {
  ABISELECT(592,436),
  ABISELECT(592,436),
  ABISELECT(1920,1436),
  ABISELECT(-624,-456),
  ABISELECT(664,496),
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C18[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19993C183v54Ev,
  (VTBL_ENTRY)&_ZN9S19993C183v55Ev,
  (VTBL_ENTRY)&_ZN9S19993C183v56Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN9S19993C153v53Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C159S19993C189S19993C209S19993C19__8S19993C1[] = {
  ABISELECT(584,432),
  ABISELECT(-632,-460),
  ABISELECT(584,432),
  ABISELECT(1912,1432),
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C15[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19993C153v53Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C8__9S19993C159S19993C189S19993C209S19993C19__8S19993C1[] = {
  0,
  0,
  0,
  ABISELECT(-1328,-1000),
  ABISELECT(-2544,-1892),
  ABISELECT(-1328,-1000),
  ABISELECT(-1912,-1432),
  (VTBL_ENTRY)&(_ZTI9S19993C15[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
static  VTBL_ENTRY _tg__ZTV11S19993C6_nt__9S19993C159S19993C189S19993C209S19993C19__8S19993C1[] = {
  0,
  0,
  ABISELECT(632,460),
  (VTBL_ENTRY)&(_ZTI9S19993C15[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C10__9S19993C159S19993C189S19993C209S19993C19__8S19993C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-584,-432),
  (VTBL_ENTRY)&(_ZTI9S19993C15[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern void _ZN9S19993C123v21Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C12__9S19993C189S19993C209S19993C19__8S19993C1[] = {
  0,
  ABISELECT(-664,-496),
  (VTBL_ENTRY)&(_ZTI9S19993C18[0]),
  (VTBL_ENTRY)&_ZN9S19993C123v21Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
static  VTBL_ENTRY _tg__ZTV11S19993C6_nt__9S19993C189S19993C209S19993C19__8S19993C1[] = {
  0,
  0,
  ABISELECT(624,456),
  (VTBL_ENTRY)&(_ZTI9S19993C18[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN9S19993C153v53Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C15__9S19993C189S19993C209S19993C19__8S19993C1[] = {
  ABISELECT(584,432),
  ABISELECT(-632,-460),
  ABISELECT(584,432),
  ABISELECT(1912,1432),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19993C18[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19993C153v53Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C8__9S19993C189S19993C209S19993C19__8S19993C1[] = {
  0,
  0,
  0,
  ABISELECT(-1328,-1000),
  ABISELECT(-2544,-1892),
  ABISELECT(-1328,-1000),
  ABISELECT(-1920,-1436),
  (VTBL_ENTRY)&(_ZTI9S19993C18[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C10__9S19993C189S19993C209S19993C19__8S19993C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-592,-436),
  (VTBL_ENTRY)&(_ZTI9S19993C18[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C8__9S19993C209S19993C19__8S19993C1[] = {
  0,
  0,
  0,
  ABISELECT(-1328,-1000),
  ABISELECT(-2544,-1892),
  ABISELECT(-1328,-1000),
  ABISELECT(-2064,-1532),
  (VTBL_ENTRY)&(_ZTI9S19993C20[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
static  VTBL_ENTRY _tg__ZTV11S19993C6_nt__A1__9S19993C209S19993C19__8S19993C1[] = {
  0,
  0,
  ABISELECT(480,360),
  (VTBL_ENTRY)&(_ZTI9S19993C20[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C10__9S19993C209S19993C19__8S19993C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-736,-532),
  (VTBL_ENTRY)&(_ZTI9S19993C20[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN9S19993C183v54Ev();
extern void _ZN9S19993C183v55Ev();
extern void _ZN9S19993C183v56Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C18__9S19993C209S19993C19__8S19993C1[] = {
  ABISELECT(592,436),
  ABISELECT(592,436),
  ABISELECT(1920,1436),
  ABISELECT(-624,-456),
  ABISELECT(664,496),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI9S19993C20[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19993C183v54Ev,
  (VTBL_ENTRY)&_ZN9S19993C183v55Ev,
  (VTBL_ENTRY)&_ZN9S19993C183v56Ev,
};
extern void _ZN9S19993C123v21Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C12__9S19993C209S19993C19__8S19993C1[] = {
  0,
  ABISELECT(-808,-592),
  (VTBL_ENTRY)&(_ZTI9S19993C20[0]),
  (VTBL_ENTRY)&_ZN9S19993C123v21Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN9S19993C153v53Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C159S19993C18__9S19993C209S19993C19__8S19993C1[] = {
  ABISELECT(584,432),
  ABISELECT(-632,-460),
  ABISELECT(584,432),
  ABISELECT(1912,1432),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI9S19993C20[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19993C153v53Ev,
};
extern void _ZN9S19993C213v57Ev();
extern void _ZN9S19993C213v58Ev();
extern void _ZN9S19993C213v59Ev();
extern void _ZN9S19993C213v60Ev();
extern void _ZN9S19993C213v61Ev();
extern void _ZN9S19993C213v62Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C21__9S19993C209S19993C19__8S19993C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-2072,-1536),
  (VTBL_ENTRY)&(_ZTI9S19993C20[0]),
  (VTBL_ENTRY)&_ZN9S19993C213v57Ev,
  (VTBL_ENTRY)&_ZN9S19993C213v58Ev,
  (VTBL_ENTRY)&_ZN9S19993C213v59Ev,
  (VTBL_ENTRY)&_ZN9S19993C213v60Ev,
  (VTBL_ENTRY)&_ZN9S19993C213v61Ev,
  (VTBL_ENTRY)&_ZN9S19993C213v62Ev,
};
extern void _ZN9S19993C123v21Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C12__9S19993C19__8S19993C1[] = {
  0,
  ABISELECT(-808,-592),
  (VTBL_ENTRY)&(_ZTI9S19993C19[0]),
  (VTBL_ENTRY)&_ZN9S19993C123v21Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
static  VTBL_ENTRY _tg__ZTV11S19993C6_nt__9S19993C19__8S19993C1[] = {
  0,
  0,
  ABISELECT(480,360),
  (VTBL_ENTRY)&(_ZTI9S19993C19[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C8__9S19993C19__8S19993C1[] = {
  0,
  0,
  0,
  ABISELECT(-1328,-1000),
  ABISELECT(-2544,-1892),
  ABISELECT(-1328,-1000),
  ABISELECT(-2064,-1532),
  (VTBL_ENTRY)&(_ZTI9S19993C19[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C10__9S19993C19__8S19993C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-736,-532),
  (VTBL_ENTRY)&(_ZTI9S19993C19[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN9S19993C183v54Ev();
extern void _ZN9S19993C183v55Ev();
extern void _ZN9S19993C183v56Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C189S19993C20__9S19993C19__8S19993C1[] = {
  ABISELECT(592,436),
  ABISELECT(592,436),
  ABISELECT(1920,1436),
  ABISELECT(-624,-456),
  ABISELECT(664,496),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI9S19993C19[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19993C183v54Ev,
  (VTBL_ENTRY)&_ZN9S19993C183v55Ev,
  (VTBL_ENTRY)&_ZN9S19993C183v56Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN9S19993C153v53Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C159S19993C189S19993C20__9S19993C19__8S19993C1[] = {
  ABISELECT(584,432),
  ABISELECT(-632,-460),
  ABISELECT(584,432),
  ABISELECT(1912,1432),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI9S19993C19[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19993C153v53Ev,
};
extern void _ZN9S19993C213v57Ev();
extern void _ZN9S19993C213v58Ev();
extern void _ZN9S19993C213v59Ev();
extern void _ZN9S19993C213v60Ev();
extern void _ZN9S19993C213v61Ev();
extern void _ZN9S19993C213v62Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C21__9S19993C19__8S19993C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-2072,-1536),
  (VTBL_ENTRY)&(_ZTI9S19993C19[0]),
  (VTBL_ENTRY)&_ZN9S19993C213v57Ev,
  (VTBL_ENTRY)&_ZN9S19993C213v58Ev,
  (VTBL_ENTRY)&_ZN9S19993C213v59Ev,
  (VTBL_ENTRY)&_ZN9S19993C213v60Ev,
  (VTBL_ENTRY)&_ZN9S19993C213v61Ev,
  (VTBL_ENTRY)&_ZN9S19993C213v62Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
extern void _ZN8S19993C5D1Ev();
extern void _ZN8S19993C5D0Ev();
extern void _ZN8S19993C73v20Ev();
extern void _ZN8S19993C53v33Ev();
extern void _ZN8S19993C53v34Ev();
extern void _ZN8S19993C53v35Ev();
extern void _ZN8S19993C53v36Ev();
extern void _ZN8S19993C53v37Ev();
extern void _ZN8S19993C53v38Ev();
extern void _ZN8S19993C53v39Ev();
extern void _ZN8S19993C53v40Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C5__8S19993C1[] = {
  ABISELECT(256,192),
  ABISELECT(232,180),
  ABISELECT(200,156),
  ABISELECT(784,604),
  ABISELECT(-128,-92),
  ABISELECT(128,96),
  ABISELECT(-1088,-796),
  ABISELECT(128,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S19993C5[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
  (VTBL_ENTRY)&_ZN8S19993C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19993C5D0Ev,
  (VTBL_ENTRY)&_ZN8S19993C73v20Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v33Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v34Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v35Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v36Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v37Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v38Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v39Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v40Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
extern void _ZN8S19993C7D1Ev();
extern void _ZN8S19993C7D0Ev();
extern void _ZN8S19993C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C78S19993C5__8S19993C1[] = {
  ABISELECT(-128,-92),
  ABISELECT(128,96),
  ABISELECT(-1088,-796),
  ABISELECT(128,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S19993C7[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
  (VTBL_ENTRY)&_ZN8S19993C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19993C7D0Ev,
  (VTBL_ENTRY)&_ZN8S19993C73v20Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C88S19993C78S19993C5__8S19993C1[] = {
  ABISELECT(128,96),
  ABISELECT(-1088,-796),
  ABISELECT(128,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S19993C8[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
static  VTBL_ENTRY _tg__ZTV11S19993C6_nt__8S19993C88S19993C78S19993C5__8S19993C1[] = {
  0,
  0,
  ABISELECT(1088,796),
  (VTBL_ENTRY)&(_ZTI8S19993C8[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C10__8S19993C88S19993C78S19993C5__8S19993C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-96),
  (VTBL_ENTRY)&(_ZTI8S19993C8[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
static  VTBL_ENTRY _tg__ZTV11S19993C6_nt__8S19993C78S19993C5__8S19993C1[] = {
  0,
  0,
  ABISELECT(1088,796),
  (VTBL_ENTRY)&(_ZTI8S19993C7[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C10__8S19993C78S19993C5__8S19993C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-96),
  (VTBL_ENTRY)&(_ZTI8S19993C7[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern void _ZN8S19993C23v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C2__8S19993C78S19993C5__8S19993C1[] = {
  0,
  ABISELECT(128,92),
  (VTBL_ENTRY)&(_ZTI8S19993C7[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
};
extern void _ZN9S19993C123v21Ev();
extern void _ZN9S19993C113v22Ev();
extern void _ZN9S19993C113v23Ev();
extern void _ZN9S19993C113v24Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C118S19993C5__8S19993C1[] = {
  ABISELECT(112,88),
  ABISELECT(768,596),
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C11[0]),
  (VTBL_ENTRY)&_ZN9S19993C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v22Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v23Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v24Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C9__9S19993C118S19993C5__8S19993C1[] = {
  0,
  0,
  ABISELECT(-768,-596),
  (VTBL_ENTRY)&(_ZTI9S19993C11[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
static  VTBL_ENTRY _tg__ZTV11S19993C6_nt__8S19993C5__8S19993C1[] = {
  0,
  0,
  ABISELECT(1088,796),
  (VTBL_ENTRY)&(_ZTI8S19993C5[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C10__8S19993C5__8S19993C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-96),
  (VTBL_ENTRY)&(_ZTI8S19993C5[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern void _ZN8S19993C23v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C2__8S19993C5__8S19993C1[] = {
  0,
  ABISELECT(128,92),
  (VTBL_ENTRY)&(_ZTI8S19993C5[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
};
extern void _ZN9S19993C123v21Ev();
extern void _ZN9S19993C113v22Ev();
extern void _ZN9S19993C113v23Ev();
extern void _ZN9S19993C113v24Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C11__8S19993C5__8S19993C1[] = {
  ABISELECT(112,88),
  ABISELECT(768,596),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19993C5[0]),
  (VTBL_ENTRY)&_ZN9S19993C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v22Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v23Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v24Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C9__A1__8S19993C5__8S19993C1[] = {
  0,
  0,
  ABISELECT(-784,-604),
  (VTBL_ENTRY)&(_ZTI8S19993C5[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
};
extern void _ZN9S19993C123v21Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C12__A1__8S19993C5__8S19993C1[] = {
  0,
  ABISELECT(-200,-156),
  (VTBL_ENTRY)&(_ZTI8S19993C5[0]),
  (VTBL_ENTRY)&_ZN9S19993C123v21Ev,
};
extern void _ZN9S19993C133v30Ev();
extern void _ZN9S19993C133v31Ev();
extern void _ZN9S19993C133v32Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C13__8S19993C5__8S19993C1[] = {
  0,
  0,
  0,
  ABISELECT(-104,-84),
  ABISELECT(24,12),
  ABISELECT(-232,-180),
  (VTBL_ENTRY)&(_ZTI8S19993C5[0]),
  (VTBL_ENTRY)&_ZN9S19993C133v30Ev,
  (VTBL_ENTRY)&_ZN9S19993C133v31Ev,
  (VTBL_ENTRY)&_ZN9S19993C133v32Ev,
};
extern void _ZN8S19993C23v10Ev();
extern void _ZN9S19993C143v25Ev();
extern void _ZN9S19993C143v26Ev();
extern void _ZN9S19993C143v27Ev();
extern void _ZN9S19993C143v28Ev();
extern void _ZN9S19993C143v29Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C14__8S19993C5__8S19993C1[] = {
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-96),
  ABISELECT(-256,-192),
  (VTBL_ENTRY)&(_ZTI8S19993C5[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v29Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C109S19993C14__A2__8S19993C5__8S19993C1[] = {
  ABISELECT(-384,-284),
  (VTBL_ENTRY)&(_ZTI8S19993C5[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern void _ZN9S19993C133v30Ev();
extern void _ZN9S19993C133v31Ev();
extern void _ZN9S19993C133v32Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C13__8S19993C1[] = {
  ABISELECT(-104,-84),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C13[0]),
  (VTBL_ENTRY)&_ZN9S19993C133v30Ev,
  (VTBL_ENTRY)&_ZN9S19993C133v31Ev,
  (VTBL_ENTRY)&_ZN9S19993C133v32Ev,
};
extern void _ZN8S19993C23v10Ev();
extern void _ZN9S19993C143v25Ev();
extern void _ZN9S19993C143v26Ev();
extern void _ZN9S19993C143v27Ev();
extern void _ZN9S19993C143v28Ev();
extern void _ZN9S19993C143v29Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C14__9S19993C13__8S19993C1[] = {
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-96),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19993C13[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v29Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C109S19993C14__9S19993C13__8S19993C1[] = {
  ABISELECT(-152,-104),
  (VTBL_ENTRY)&(_ZTI9S19993C13[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern void _ZN8S19993C23v10Ev();
extern void _ZN9S19993C143v25Ev();
extern void _ZN9S19993C143v26Ev();
extern void _ZN9S19993C143v27Ev();
extern void _ZN9S19993C143v28Ev();
extern void _ZN9S19993C143v29Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C14__8S19993C1[] = {
  ABISELECT(-128,-96),
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C14[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v29Ev,
};
extern void _ZN9S19993C123v21Ev();
extern void _ZN9S19993C113v22Ev();
extern void _ZN9S19993C113v23Ev();
extern void _ZN9S19993C113v24Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C11__A1__8S19993C1[] = {
  ABISELECT(-544,-424),
  ABISELECT(112,84),
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C11[0]),
  (VTBL_ENTRY)&_ZN9S19993C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v22Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v23Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v24Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C9__9S19993C11__A1__8S19993C1[] = {
  0,
  0,
  ABISELECT(-112,-84),
  (VTBL_ENTRY)&(_ZTI9S19993C11[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN9S19993C173v44Ev();
extern void _ZN9S19993C173v45Ev();
extern void _ZN9S19993C173v46Ev();
extern void _ZN9S19993C173v47Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C17__8S19993C1[] = {
  ABISELECT(-656,-508),
  0,
  ABISELECT(-112,-84),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C17[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19993C173v44Ev,
  (VTBL_ENTRY)&_ZN9S19993C173v45Ev,
  (VTBL_ENTRY)&_ZN9S19993C173v46Ev,
  (VTBL_ENTRY)&_ZN9S19993C173v47Ev,
};
extern void _ZN9S19993C123v21Ev();
extern void _ZN9S19993C113v22Ev();
extern void _ZN9S19993C113v23Ev();
extern void _ZN9S19993C113v24Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C11__9S19993C17__8S19993C1[] = {
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  0,
  0,
  0,
  0,
  ABISELECT(-544,-424),
  ABISELECT(112,84),
  ABISELECT(112,84),
  (VTBL_ENTRY)&(_ZTI9S19993C17[0]),
  (VTBL_ENTRY)&_ZN9S19993C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v22Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v23Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v24Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C109S19993C11__9S19993C17__8S19993C1[] = {
  ABISELECT(80,60),
  (VTBL_ENTRY)&(_ZTI9S19993C17[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C8__A2__8S19993C1[] = {
  ABISELECT(-1328,-1000),
  ABISELECT(-2544,-1892),
  ABISELECT(-1328,-1000),
  0,
  (VTBL_ENTRY)&(_ZTI8S19993C8[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
static  VTBL_ENTRY _tg__ZTV11S19993C6_nt__8S19993C8__A2__8S19993C1[] = {
  0,
  0,
  ABISELECT(2544,1892),
  (VTBL_ENTRY)&(_ZTI8S19993C8[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C10__8S19993C8__A2__8S19993C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(1328,1000),
  (VTBL_ENTRY)&(_ZTI8S19993C8[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
static  VTT_ENTRY vtt_S19993C1[] = {
  {&(_ZTV8S19993C1[17]),  17,332},
  {&(_tg__ZTV8S19993C3__8S19993C1[13]),  13,20},
  {&(_tg__ZTV8S19993C5__8S19993C3__8S19993C1[33]),  33,47},
  {&(_tg__ZTV8S19993C3__8S19993C1[13]),  13,20},
  {&(_tg__ZTV9S19993C10__8S19993C3__8S19993C1[8]),  8,14},
  {&(_tg__ZTV8S19993C2__8S19993C3__8S19993C1[3]),  3,4},
  {&(_tg__ZTV9S19993C118S19993C5__8S19993C3__8S19993C1[4]),  4,8},
  {&(_tg__ZTV8S19993C9__A1__8S19993C3__8S19993C1[4]),  4,6},
  {&(_tg__ZTV9S19993C109S19993C118S19993C5__A1__8S19993C3__8S19993C1[2]),  2,8},
  {&(_tg__ZTV9S19993C12__A1__8S19993C3__8S19993C1[3]),  3,4},
  {&(_tg__ZTV9S19993C13__8S19993C3__8S19993C1[7]),  7,10},
  {&(_tg__ZTV9S19993C14__8S19993C3__8S19993C1[15]),  15,21},
  {&(_tg__ZTV9S19993C109S19993C14__A2__8S19993C3__8S19993C1[2]),  2,8},
  {&(_tg__ZTV9S19993C16__8S19993C1[10]),  10,20},
  {&(_tg__ZTV9S19993C139S19993C16__A1__8S19993C1[4]),  4,7},
  {&(_tg__ZTV9S19993C14__9S19993C139S19993C16__A1__8S19993C1[15]),  15,21},
  {&(_tg__ZTV9S19993C109S19993C14__9S19993C139S19993C16__A1__8S19993C1[2]),  2,8},
  {&(_tg__ZTV8S19993C79S19993C16__A1__8S19993C1[6]),  6,12},
  {&(_tg__ZTV8S19993C88S19993C79S19993C16__A1__8S19993C1[5]),  5,8},
  {&(_tg__ZTV11S19993C6_nt__8S19993C88S19993C79S19993C16__A1__8S19993C1[4]),  4,6},
  {&(_tg__ZTV9S19993C10__8S19993C88S19993C79S19993C16__A1__8S19993C1[8]),  8,14},
  {&(_tg__ZTV11S19993C6_nt__8S19993C79S19993C16__A1__8S19993C1[4]),  4,6},
  {&(_tg__ZTV9S19993C10__8S19993C79S19993C16__A1__8S19993C1[8]),  8,14},
  {&(_tg__ZTV8S19993C2__8S19993C79S19993C16__A1__8S19993C1[3]),  3,4},
  {&(_tg__ZTV9S19993C11__9S19993C16__8S19993C1[14]),  14,18},
  {&(_tg__ZTV9S19993C17__9S19993C16__8S19993C1[11]),  11,17},
  {&(_tg__ZTV9S19993C109S19993C11__9S19993C16__8S19993C1[2]),  2,8},
  {&(_tg__ZTV9S19993C17__9S19993C16__8S19993C1[11]),  11,17},
  {&(_tg__ZTV9S19993C14__9S19993C16__8S19993C1[15]),  15,21},
  {&(_tg__ZTV9S19993C109S19993C14__A1__9S19993C16__8S19993C1[2]),  2,8},
  {&(_tg__ZTV8S19993C7__9S19993C16__8S19993C1[6]),  6,12},
  {&(_tg__ZTV11S19993C6_nt__A2__9S19993C16__8S19993C1[4]),  4,6},
  {&(_tg__ZTV9S19993C10__A2__9S19993C16__8S19993C1[8]),  8,14},
  {&(_tg__ZTV8S19993C2__A1__9S19993C16__8S19993C1[3]),  3,4},
  {&(_tg__ZTV9S19993C14__A__8S19993C1[3]),  3,9},
  {&(_tg__ZTV9S19993C19__8S19993C1[8]),  8,19},
  {&(_tg__ZTV9S19993C209S19993C19__8S19993C1[8]),  8,12},
  {&(_tg__ZTV9S19993C189S19993C209S19993C19__8S19993C1[7]),  7,12},
  {&(_tg__ZTV9S19993C159S19993C189S19993C209S19993C19__8S19993C1[6]),  6,9},
  {&(_tg__ZTV8S19993C8__9S19993C159S19993C189S19993C209S19993C19__8S19993C1[8]),  8,11},
  {&(_tg__ZTV11S19993C6_nt__9S19993C159S19993C189S19993C209S19993C19__8S19993C1[4]),  4,6},
  {&(_tg__ZTV9S19993C10__9S19993C159S19993C189S19993C209S19993C19__8S19993C1[8]),  8,14},
  {&(_tg__ZTV9S19993C12__9S19993C189S19993C209S19993C19__8S19993C1[3]),  3,4},
  {&(_tg__ZTV11S19993C6_nt__9S19993C189S19993C209S19993C19__8S19993C1[4]),  4,6},
  {&(_tg__ZTV9S19993C15__9S19993C189S19993C209S19993C19__8S19993C1[6]),  6,9},
  {&(_tg__ZTV8S19993C8__9S19993C189S19993C209S19993C19__8S19993C1[8]),  8,11},
  {&(_tg__ZTV9S19993C10__9S19993C189S19993C209S19993C19__8S19993C1[8]),  8,14},
  {&(_tg__ZTV8S19993C8__9S19993C209S19993C19__8S19993C1[8]),  8,11},
  {&(_tg__ZTV11S19993C6_nt__A1__9S19993C209S19993C19__8S19993C1[4]),  4,6},
  {&(_tg__ZTV9S19993C10__9S19993C209S19993C19__8S19993C1[8]),  8,14},
  {&(_tg__ZTV9S19993C18__9S19993C209S19993C19__8S19993C1[7]),  7,12},
  {&(_tg__ZTV9S19993C12__9S19993C209S19993C19__8S19993C1[3]),  3,4},
  {&(_tg__ZTV9S19993C159S19993C18__9S19993C209S19993C19__8S19993C1[6]),  6,9},
  {&(_tg__ZTV9S19993C21__9S19993C209S19993C19__8S19993C1[8]),  8,14},
  {&(_tg__ZTV9S19993C12__9S19993C19__8S19993C1[3]),  3,4},
  {&(_tg__ZTV11S19993C6_nt__9S19993C19__8S19993C1[4]),  4,6},
  {&(_tg__ZTV8S19993C8__9S19993C19__8S19993C1[8]),  8,11},
  {&(_tg__ZTV9S19993C10__9S19993C19__8S19993C1[8]),  8,14},
  {&(_tg__ZTV9S19993C189S19993C20__9S19993C19__8S19993C1[7]),  7,12},
  {&(_tg__ZTV9S19993C159S19993C189S19993C20__9S19993C19__8S19993C1[6]),  6,9},
  {&(_tg__ZTV9S19993C21__9S19993C19__8S19993C1[8]),  8,14},
  {&(_ZTV8S19993C1[143]),  143,332},
  {&(_ZTV8S19993C1[177]),  177,332},
  {&(_ZTV8S19993C1[17]),  17,332},
  {&(_ZTV8S19993C1[215]),  215,332},
  {&(_ZTV8S19993C1[195]),  195,332},
  {&(_ZTV8S19993C1[301]),  301,332},
  {&(_ZTV8S19993C1[201]),  201,332},
  {&(_ZTV8S19993C1[224]),  224,332},
  {&(_ZTV8S19993C1[232]),  232,332},
  {&(_ZTV8S19993C1[250]),  250,332},
  {&(_ZTV8S19993C1[258]),  258,332},
  {&(_ZTV8S19993C1[43]),  43,332},
  {&(_ZTV8S19993C1[278]),  278,332},
  {&(_ZTV8S19993C1[284]),  284,332},
  {&(_ZTV8S19993C1[301]),  301,332},
  {&(_ZTV8S19993C1[59]),  59,332},
  {&(_ZTV8S19993C1[68]),  68,332},
  {&(_ZTV8S19993C1[90]),  90,332},
  {&(_ZTV8S19993C1[315]),  315,332},
  {&(_ZTV8S19993C1[111]),  111,332},
  {&(_ZTV8S19993C1[122]),  122,332},
  {&(_ZTV8S19993C1[326]),  326,332},
  {&(_tg__ZTV8S19993C5__8S19993C1[10]),  10,24},
  {&(_tg__ZTV8S19993C78S19993C5__8S19993C1[6]),  6,12},
  {&(_tg__ZTV8S19993C88S19993C78S19993C5__8S19993C1[5]),  5,8},
  {&(_tg__ZTV11S19993C6_nt__8S19993C88S19993C78S19993C5__8S19993C1[4]),  4,6},
  {&(_tg__ZTV9S19993C10__8S19993C88S19993C78S19993C5__8S19993C1[8]),  8,14},
  {&(_tg__ZTV11S19993C6_nt__8S19993C78S19993C5__8S19993C1[4]),  4,6},
  {&(_tg__ZTV9S19993C10__8S19993C78S19993C5__8S19993C1[8]),  8,14},
  {&(_tg__ZTV8S19993C2__8S19993C78S19993C5__8S19993C1[3]),  3,4},
  {&(_tg__ZTV9S19993C118S19993C5__8S19993C1[4]),  4,8},
  {&(_tg__ZTV8S19993C9__9S19993C118S19993C5__8S19993C1[4]),  4,6},
  {&(_tg__ZTV11S19993C6_nt__8S19993C5__8S19993C1[4]),  4,6},
  {&(_tg__ZTV9S19993C10__8S19993C5__8S19993C1[8]),  8,14},
  {&(_tg__ZTV8S19993C2__8S19993C5__8S19993C1[3]),  3,4},
  {&(_tg__ZTV9S19993C11__8S19993C5__8S19993C1[4]),  4,8},
  {&(_tg__ZTV8S19993C9__A1__8S19993C5__8S19993C1[4]),  4,6},
  {&(_tg__ZTV9S19993C12__A1__8S19993C5__8S19993C1[3]),  3,4},
  {&(_tg__ZTV9S19993C13__8S19993C5__8S19993C1[7]),  7,10},
  {&(_tg__ZTV9S19993C14__8S19993C5__8S19993C1[15]),  15,21},
  {&(_tg__ZTV9S19993C109S19993C14__A2__8S19993C5__8S19993C1[2]),  2,8},
  {&(_tg__ZTV9S19993C13__8S19993C1[4]),  4,7},
  {&(_tg__ZTV9S19993C14__9S19993C13__8S19993C1[15]),  15,21},
  {&(_tg__ZTV9S19993C109S19993C14__9S19993C13__8S19993C1[2]),  2,8},
  {&(_tg__ZTV9S19993C14__8S19993C1[3]),  3,9},
  {&(_tg__ZTV9S19993C11__A1__8S19993C1[4]),  4,8},
  {&(_tg__ZTV8S19993C9__9S19993C11__A1__8S19993C1[4]),  4,6},
  {&(_tg__ZTV9S19993C17__8S19993C1[7]),  7,13},
  {&(_tg__ZTV9S19993C11__9S19993C17__8S19993C1[14]),  14,18},
  {&(_tg__ZTV9S19993C17__8S19993C1[7]),  7,13},
  {&(_tg__ZTV9S19993C109S19993C11__9S19993C17__8S19993C1[2]),  2,8},
  {&(_tg__ZTV8S19993C8__A2__8S19993C1[5]),  5,8},
  {&(_tg__ZTV11S19993C6_nt__8S19993C8__A2__8S19993C1[4]),  4,6},
  {&(_tg__ZTV9S19993C10__8S19993C8__A2__8S19993C1[8]),  8,14},
};
extern VTBL_ENTRY _ZTI8S19993C1[];
extern  VTBL_ENTRY _ZTV8S19993C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19993C1[];
static VTBL_ENTRY alt_thunk_names2[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N8S19993C3D0Ev,_ZTv0_n56_N8S19993C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1088_N8S19993C3D0Ev,_ZThn796_N8S19993C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N8S19993C3D1Ev,_ZTv0_n56_N8S19993C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1088_N8S19993C3D1Ev,_ZThn796_N8S19993C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N8S19993C1D0Ev,_ZTv0_n56_N8S19993C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1088_N8S19993C1D0Ev,_ZThn796_N8S19993C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N8S19993C1D1Ev,_ZTv0_n56_N8S19993C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1088_N8S19993C1D1Ev,_ZThn796_N8S19993C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19993C1 = {  "S19993C1", // class name
  bases_S19993C1, 52,
  &(vtc_S19993C1[0]), // expected_vtbl_contents
  &(vtt_S19993C1[0]), // expected_vtt_contents
  ABISELECT(2576,1904), // object size
  NSPAIRA(_ZTI8S19993C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19993C1),332, //virtual function table var
  17, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19993C1),115, //virtual table table var
  49, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names2,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19994C2  {
  void *s19994c2f0;
  long double s19994c2f1[7];
  virtual void  v10(); // _ZN8S19994C23v10Ev
  ~S19994C2(); // tgen
  S19994C2(); // tgen
};
//SIG(-1 S19994C2) C1{ v1 Fp FD[7]}


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

static void Test_S19994C2()
{
  extern Class_Descriptor cd_S19994C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(9,24)];
    init_test(&cd_S19994C2, buf);
    S19994C2 *dp, &lv = *(dp=new (buf) S19994C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,92), "sizeof(S19994C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19994C2)");
    check_field_offset(lv, s19994c2f0, ABISELECT(8,4), "S19994C2.s19994c2f0");
    check_field_offset(lv, s19994c2f1, ABISELECT(16,8), "S19994C2.s19994c2f1");
    test_class_info(&lv, &cd_S19994C2);
    dp->~S19994C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19994C2(Test_S19994C2, "S19994C2", ABISELECT(128,92));

#else // __cplusplus

extern void _ZN8S19994C2C1Ev();
extern void _ZN8S19994C2D1Ev();
Name_Map name_map_S19994C2[] = {
  NSPAIR(_ZN8S19994C2C1Ev),
  NSPAIR(_ZN8S19994C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19994C2[];
extern void _ZN8S19994C23v10Ev();
static  VTBL_ENTRY vtc_S19994C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19994C2[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
};
extern VTBL_ENTRY _ZTI8S19994C2[];
extern  VTBL_ENTRY _ZTV8S19994C2[];
Class_Descriptor cd_S19994C2 = {  "S19994C2", // class name
  0,0,//no base classes
  &(vtc_S19994C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(128,92), // object size
  NSPAIRA(_ZTI8S19994C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19994C2),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19994C6  {
  virtual void  v11(); // _ZN8S19994C63v11Ev
  virtual void  v12(); // _ZN8S19994C63v12Ev
  ~S19994C6(); // tgen
  S19994C6(); // tgen
};
//SIG(-1 S19994C6) C1{ v1 v2}


void  S19994C6 ::v11(){vfunc_called(this, "_ZN8S19994C63v11Ev");}
void  S19994C6 ::v12(){vfunc_called(this, "_ZN8S19994C63v12Ev");}
S19994C6 ::~S19994C6(){ note_dtor("S19994C6", this);} // tgen
S19994C6 ::S19994C6(){ note_ctor("S19994C6", this);} // tgen

static void Test_S19994C6()
{
  extern Class_Descriptor cd_S19994C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S19994C6, buf);
    S19994C6 *dp, &lv = *(dp=new (buf) S19994C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S19994C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19994C6)");
    test_class_info(&lv, &cd_S19994C6);
    dp->~S19994C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19994C6(Test_S19994C6, "S19994C6", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S19994C6C1Ev();
extern void _ZN8S19994C6D1Ev();
Name_Map name_map_S19994C6[] = {
  NSPAIR(_ZN8S19994C6C1Ev),
  NSPAIR(_ZN8S19994C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19994C6[];
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
static  VTBL_ENTRY vtc_S19994C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19994C6[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
};
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
Class_Descriptor cd_S19994C6 = {  "S19994C6", // class name
  0,0,//no base classes
  &(vtc_S19994C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S19994C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19994C6),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19994C9  {
  virtual void  v13(); // _ZN8S19994C93v13Ev
  virtual void  v14(); // _ZN8S19994C93v14Ev
  ~S19994C9(); // tgen
  S19994C9(); // tgen
};
//SIG(-1 S19994C9) C1{ v1 v2}


void  S19994C9 ::v13(){vfunc_called(this, "_ZN8S19994C93v13Ev");}
void  S19994C9 ::v14(){vfunc_called(this, "_ZN8S19994C93v14Ev");}
S19994C9 ::~S19994C9(){ note_dtor("S19994C9", this);} // tgen
S19994C9 ::S19994C9(){ note_ctor("S19994C9", this);} // tgen

static void Test_S19994C9()
{
  extern Class_Descriptor cd_S19994C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S19994C9, buf);
    S19994C9 *dp, &lv = *(dp=new (buf) S19994C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S19994C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19994C9)");
    test_class_info(&lv, &cd_S19994C9);
    dp->~S19994C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19994C9(Test_S19994C9, "S19994C9", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S19994C9C1Ev();
extern void _ZN8S19994C9D1Ev();
Name_Map name_map_S19994C9[] = {
  NSPAIR(_ZN8S19994C9C1Ev),
  NSPAIR(_ZN8S19994C9D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19994C9[];
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
static  VTBL_ENTRY vtc_S19994C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19994C9[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
};
extern VTBL_ENTRY _ZTI8S19994C9[];
extern  VTBL_ENTRY _ZTV8S19994C9[];
Class_Descriptor cd_S19994C9 = {  "S19994C9", // class name
  0,0,//no base classes
  &(vtc_S19994C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S19994C9),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19994C9),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19994C10  : S19994C6 {
  int s19994c10f0[5];
  void *s19994c10f1;
  __tsi64 s19994c10f2[4];
  virtual void  v15(); // _ZN9S19994C103v15Ev
  virtual void  v16(); // _ZN9S19994C103v16Ev
  virtual void  v17(); // _ZN9S19994C103v17Ev
  virtual void  v18(); // _ZN9S19994C103v18Ev
  ~S19994C10(); // tgen
  S19994C10(); // tgen
};
//SIG(-1 S19994C10) C1{ BC2{ v5 v6} v1 v2 v3 v4 Fi[5] Fp FL[4]}


void  S19994C10 ::v15(){vfunc_called(this, "_ZN9S19994C103v15Ev");}
void  S19994C10 ::v16(){vfunc_called(this, "_ZN9S19994C103v16Ev");}
void  S19994C10 ::v17(){vfunc_called(this, "_ZN9S19994C103v17Ev");}
void  S19994C10 ::v18(){vfunc_called(this, "_ZN9S19994C103v18Ev");}
S19994C10 ::~S19994C10(){ note_dtor("S19994C10", this);} // tgen
S19994C10 ::S19994C10(){ note_ctor("S19994C10", this);} // tgen

static void Test_S19994C10()
{
  extern Class_Descriptor cd_S19994C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,16)];
    init_test(&cd_S19994C10, buf);
    S19994C10 *dp, &lv = *(dp=new (buf) S19994C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,60), "sizeof(S19994C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19994C10)");
    check_base_class_offset(lv, (S19994C6*), 0, "S19994C10");
    check_field_offset(lv, s19994c10f0, ABISELECT(8,4), "S19994C10.s19994c10f0");
    check_field_offset(lv, s19994c10f1, ABISELECT(32,24), "S19994C10.s19994c10f1");
    check_field_offset(lv, s19994c10f2, ABISELECT(40,28), "S19994C10.s19994c10f2");
    test_class_info(&lv, &cd_S19994C10);
    dp->~S19994C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19994C10(Test_S19994C10, "S19994C10", ABISELECT(72,60));

#else // __cplusplus

extern void _ZN9S19994C10C1Ev();
extern void _ZN9S19994C10D1Ev();
Name_Map name_map_S19994C10[] = {
  NSPAIR(_ZN9S19994C10C1Ev),
  NSPAIR(_ZN9S19994C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
static Base_Class bases_S19994C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19994C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19994C10[];
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY vtc_S19994C10[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C10[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern VTBL_ENTRY _ZTI9S19994C10[];
extern  VTBL_ENTRY _ZTV9S19994C10[];
Class_Descriptor cd_S19994C10 = {  "S19994C10", // class name
  bases_S19994C10, 1,
  &(vtc_S19994C10[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,60), // object size
  NSPAIRA(_ZTI9S19994C10),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S19994C10),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19994C8  : virtual S77C13_nt , virtual S19994C6 , S19994C9 , virtual S19994C10 {
  virtual void  v19(); // _ZN8S19994C83v19Ev
  ~S19994C8(); // tgen
  S19994C8(); // tgen
};
//SIG(-1 S19994C8) C1{ VBC2{ m} VBC3{ v2 v3} BC4{ v4 v5} VBC5{ BC3 v6 v7 v8 v9 Fi[5] Fp FL[4]} v1}


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

static void Test_S19994C8()
{
  extern Class_Descriptor cd_S19994C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,18)];
    init_test(&cd_S19994C8, buf);
    S19994C8 *dp, &lv = *(dp=new (buf) S19994C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,68), "sizeof(S19994C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19994C8)");
    check_base_class_offset(lv, (S77C13_nt*), 0, "S19994C8");
    /*is_ambiguous_... S19994C8::S19994C6 */ AMB_check_base_class_offset(lv, (S19994C6*), ABISELECT(8,4), "S19994C8");
    check_base_class_offset(lv, (S19994C9*), 0, "S19994C8");
    check_base_class_offset(lv, (S19994C6*)(S19994C10*), ABISELECT(16,8), "S19994C8");
    check_base_class_offset(lv, (S19994C10*), ABISELECT(16,8), "S19994C8");
    test_class_info(&lv, &cd_S19994C8);
    dp->~S19994C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19994C8(Test_S19994C8, "S19994C8", ABISELECT(88,68));

#else // __cplusplus

extern void _ZN8S19994C8C1Ev();
extern void _ZN8S19994C8D1Ev();
Name_Map name_map_S19994C8[] = {
  NSPAIR(_ZN8S19994C8C1Ev),
  NSPAIR(_ZN8S19994C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C9;
extern VTBL_ENTRY _ZTI8S19994C9[];
extern  VTBL_ENTRY _ZTV8S19994C9[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C10;
extern VTBL_ENTRY _ZTI9S19994C10[];
extern  VTBL_ENTRY _ZTV9S19994C10[];
static Base_Class bases_S19994C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19994C6,    ABISELECT(8,4), //bcp->offset
    8, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19994C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19994C6,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19994C10,    ABISELECT(16,8), //bcp->offset
    14, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19994C8[];
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY vtc_S19994C8[] = {
  ABISELECT(16,8),
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19994C8[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19994C8[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19994C8[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern VTBL_ENTRY _ZTV8S19994C8[];
static  VTT_ENTRY vtt_S19994C8[] = {
  {&(_ZTV8S19994C8[5]),  5,28},
  {&(_ZTV8S19994C8[12]),  12,28},
  {&(_ZTV8S19994C8[22]),  22,28},
};
extern VTBL_ENTRY _ZTI8S19994C8[];
extern  VTBL_ENTRY _ZTV8S19994C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19994C8[];
Class_Descriptor cd_S19994C8 = {  "S19994C8", // class name
  bases_S19994C8, 5,
  &(vtc_S19994C8[0]), // expected_vtbl_contents
  &(vtt_S19994C8[0]), // expected_vtt_contents
  ABISELECT(88,68), // object size
  NSPAIRA(_ZTI8S19994C8),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19994C8),28, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19994C8),3, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19994C7  : S19994C8 , virtual S19994C2 {
  void *s19994c7f0;
  virtual  ~S19994C7(); // _ZN8S19994C7D2Ev
  virtual void  v20(); // _ZN8S19994C73v20Ev
  S19994C7(); // tgen
};
//SIG(-1 S19994C7) C1{ BC2{ VBC3{ m} VBC4{ v2 v3} BC5{ v4 v5} VBC6{ BC4 v6 v7 v8 v9 Fi[5] Fp FL[4]} v10} VBC7{ v11 Fp FD[7]} vd v1 Fp}


 S19994C7 ::~S19994C7(){ note_dtor("S19994C7", this);}
void  S19994C7 ::v20(){vfunc_called(this, "_ZN8S19994C73v20Ev");}
S19994C7 ::S19994C7(){ note_ctor("S19994C7", this);} // tgen

static void Test_S19994C7()
{
  extern Class_Descriptor cd_S19994C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(15,42)];
    init_test(&cd_S19994C7, buf);
    S19994C7 *dp, &lv = *(dp=new (buf) S19994C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(224,164), "sizeof(S19994C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19994C7)");
    check_base_class_offset(lv, (S77C13_nt*)(S19994C8*), 0, "S19994C7");
    /*is_ambiguous_... S19994C8::S19994C6 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C8*), ABISELECT(16,8), "S19994C7");
    check_base_class_offset(lv, (S19994C9*)(S19994C8*), 0, "S19994C7");
    check_base_class_offset(lv, (S19994C6*)(S19994C10*), ABISELECT(24,12), "S19994C7");
    check_base_class_offset(lv, (S19994C10*)(S19994C8*), ABISELECT(24,12), "S19994C7");
    check_base_class_offset(lv, (S19994C8*), 0, "S19994C7");
    check_base_class_offset(lv, (S19994C2*), ABISELECT(96,72), "S19994C7");
    check_field_offset(lv, s19994c7f0, ABISELECT(8,4), "S19994C7.s19994c7f0");
    test_class_info(&lv, &cd_S19994C7);
    dp->~S19994C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19994C7(Test_S19994C7, "S19994C7", ABISELECT(224,164));

#else // __cplusplus

extern void _ZN8S19994C7C1Ev();
extern void _ZN8S19994C7D2Ev();
Name_Map name_map_S19994C7[] = {
  NSPAIR(_ZN8S19994C7C1Ev),
  NSPAIR(_ZN8S19994C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C9;
extern VTBL_ENTRY _ZTI8S19994C9[];
extern  VTBL_ENTRY _ZTV8S19994C9[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C10;
extern VTBL_ENTRY _ZTI9S19994C10[];
extern  VTBL_ENTRY _ZTV9S19994C10[];
extern Class_Descriptor cd_S19994C8;
extern VTBL_ENTRY _ZTI8S19994C8[];
extern  VTBL_ENTRY _ZTV8S19994C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19994C8[];
extern Class_Descriptor cd_S19994C2;
extern VTBL_ENTRY _ZTI8S19994C2[];
extern  VTBL_ENTRY _ZTV8S19994C2[];
static Base_Class bases_S19994C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19994C6,    ABISELECT(16,8), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19994C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19994C6,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19994C10,    ABISELECT(24,12), //bcp->offset
    18, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19994C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19994C2,    ABISELECT(96,72), //bcp->offset
    32, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19994C7[];
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
extern void _ZN8S19994C7D1Ev();
extern void _ZN8S19994C7D0Ev();
extern void _ZN8S19994C73v20Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
extern void _ZN8S19994C23v10Ev();
static  VTBL_ENTRY vtc_S19994C7[] = {
  ABISELECT(96,72),
  ABISELECT(24,12),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19994C7[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
  (VTBL_ENTRY)&_ZN8S19994C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19994C7D0Ev,
  (VTBL_ENTRY)&_ZN8S19994C73v20Ev,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19994C7[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19994C7[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
  0,
  ABISELECT(-96,-72),
  (VTBL_ENTRY)&(_ZTI8S19994C7[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
};
extern VTBL_ENTRY _ZTV8S19994C7[];
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C8__8S19994C7[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19994C8[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C6__8S19994C8__8S19994C7[] = {
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19994C8[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C10__8S19994C8__8S19994C7[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19994C8[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
static  VTT_ENTRY vtt_S19994C7[] = {
  {&(_ZTV8S19994C7[6]),  6,36},
  {&(_tg__ZTV8S19994C8__8S19994C7[5]),  5,8},
  {&(_tg__ZTV8S19994C6__8S19994C8__8S19994C7[4]),  4,6},
  {&(_tg__ZTV9S19994C10__8S19994C8__8S19994C7[8]),  8,14},
  {&(_ZTV8S19994C7[16]),  16,36},
  {&(_ZTV8S19994C7[26]),  26,36},
  {&(_ZTV8S19994C7[35]),  35,36},
};
extern VTBL_ENTRY _ZTI8S19994C7[];
extern  VTBL_ENTRY _ZTV8S19994C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19994C7[];
Class_Descriptor cd_S19994C7 = {  "S19994C7", // class name
  bases_S19994C7, 7,
  &(vtc_S19994C7[0]), // expected_vtbl_contents
  &(vtt_S19994C7[0]), // expected_vtt_contents
  ABISELECT(224,164), // object size
  NSPAIRA(_ZTI8S19994C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19994C7),36, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19994C7),7, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19994C12  {
  ::S77C13_nt s19994c12f0;
  int s19994c12f1[4];
  virtual void  v21(); // _ZN9S19994C123v21Ev
  ~S19994C12(); // tgen
  S19994C12(); // tgen
};
//SIG(-1 S19994C12) C1{ v1 FC2{ m} Fi[4]}


void  S19994C12 ::v21(){vfunc_called(this, "_ZN9S19994C123v21Ev");}
S19994C12 ::~S19994C12(){ note_dtor("S19994C12", this);} // tgen
S19994C12 ::S19994C12(){ note_ctor("S19994C12", this);} // tgen

static void Test_S19994C12()
{
  extern Class_Descriptor cd_S19994C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,7)];
    init_test(&cd_S19994C12, buf);
    S19994C12 *dp, &lv = *(dp=new (buf) S19994C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S19994C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19994C12)");
    check_field_offset(lv, s19994c12f0, ABISELECT(8,4), "S19994C12.s19994c12f0");
    check_field_offset(lv, s19994c12f1, ABISELECT(12,8), "S19994C12.s19994c12f1");
    test_class_info(&lv, &cd_S19994C12);
    dp->~S19994C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19994C12(Test_S19994C12, "S19994C12", ABISELECT(32,24));

#else // __cplusplus

extern void _ZN9S19994C12C1Ev();
extern void _ZN9S19994C12D1Ev();
Name_Map name_map_S19994C12[] = {
  NSPAIR(_ZN9S19994C12C1Ev),
  NSPAIR(_ZN9S19994C12D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S19994C12[];
extern void _ZN9S19994C123v21Ev();
static  VTBL_ENTRY vtc_S19994C12[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C12[0]),
  (VTBL_ENTRY)&_ZN9S19994C123v21Ev,
};
extern VTBL_ENTRY _ZTI9S19994C12[];
extern  VTBL_ENTRY _ZTV9S19994C12[];
Class_Descriptor cd_S19994C12 = {  "S19994C12", // class name
  0,0,//no base classes
  &(vtc_S19994C12[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,24), // object size
  NSPAIRA(_ZTI9S19994C12),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S19994C12),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19994C11  : virtual S19994C9 , virtual S77C13_nt , S19994C12 , S19994C10 {
  virtual void  v22(); // _ZN9S19994C113v22Ev
  virtual void  v23(); // _ZN9S19994C113v23Ev
  virtual void  v24(); // _ZN9S19994C113v24Ev
  ~S19994C11(); // tgen
  S19994C11(); // tgen
};
//SIG(-1 S19994C11) C1{ VBC2{ v4 v5} VBC3{ m} BC4{ v6 FC3 Fi[4]} BC5{ BC6{ v7 v8} v9 v10 v11 v12 Fi[5] Fp FL[4]} v1 v2 v3}


void  S19994C11 ::v22(){vfunc_called(this, "_ZN9S19994C113v22Ev");}
void  S19994C11 ::v23(){vfunc_called(this, "_ZN9S19994C113v23Ev");}
void  S19994C11 ::v24(){vfunc_called(this, "_ZN9S19994C113v24Ev");}
S19994C11 ::~S19994C11(){ note_dtor("S19994C11", this);} // tgen
S19994C11 ::S19994C11(){ note_ctor("S19994C11", this);} // tgen

static void Test_S19994C11()
{
  extern Class_Descriptor cd_S19994C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,23)];
    init_test(&cd_S19994C11, buf);
    S19994C11 *dp, &lv = *(dp=new (buf) S19994C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,88), "sizeof(S19994C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19994C11)");
    check_base_class_offset(lv, (S19994C9*), ABISELECT(104,84), "S19994C11");
    check_base_class_offset(lv, (S77C13_nt*), 0, "S19994C11");
    check_base_class_offset(lv, (S19994C12*), 0, "S19994C11");
    check_base_class_offset(lv, (S19994C6*)(S19994C10*), ABISELECT(32,24), "S19994C11");
    check_base_class_offset(lv, (S19994C10*), ABISELECT(32,24), "S19994C11");
    test_class_info(&lv, &cd_S19994C11);
    dp->~S19994C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19994C11(Test_S19994C11, "S19994C11", ABISELECT(112,88));

#else // __cplusplus

extern void _ZN9S19994C11C1Ev();
extern void _ZN9S19994C11D1Ev();
Name_Map name_map_S19994C11[] = {
  NSPAIR(_ZN9S19994C11C1Ev),
  NSPAIR(_ZN9S19994C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19994C9;
extern VTBL_ENTRY _ZTI8S19994C9[];
extern  VTBL_ENTRY _ZTV8S19994C9[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19994C12;
extern VTBL_ENTRY _ZTI9S19994C12[];
extern  VTBL_ENTRY _ZTV9S19994C12[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C10;
extern VTBL_ENTRY _ZTI9S19994C10[];
extern  VTBL_ENTRY _ZTV9S19994C10[];
static Base_Class bases_S19994C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19994C9,    ABISELECT(104,84), //bcp->offset
    16, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19994C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19994C6,    ABISELECT(32,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19994C10,    ABISELECT(32,24), //bcp->offset
    8, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19994C11[];
extern void _ZN9S19994C123v21Ev();
extern void _ZN9S19994C113v22Ev();
extern void _ZN9S19994C113v23Ev();
extern void _ZN9S19994C113v24Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
static  VTBL_ENTRY vtc_S19994C11[] = {
  0,
  ABISELECT(104,84),
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C11[0]),
  (VTBL_ENTRY)&_ZN9S19994C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v22Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v23Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v24Ev,
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI9S19994C11[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
  0,
  0,
  ABISELECT(-104,-84),
  (VTBL_ENTRY)&(_ZTI9S19994C11[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
};
extern VTBL_ENTRY _ZTV9S19994C11[];
static  VTT_ENTRY vtt_S19994C11[] = {
  {&(_ZTV9S19994C11[4]),  4,22},
  {&(_ZTV9S19994C11[20]),  20,22},
};
extern VTBL_ENTRY _ZTI9S19994C11[];
extern  VTBL_ENTRY _ZTV9S19994C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C11[];
Class_Descriptor cd_S19994C11 = {  "S19994C11", // class name
  bases_S19994C11, 5,
  &(vtc_S19994C11[0]), // expected_vtbl_contents
  &(vtt_S19994C11[0]), // expected_vtt_contents
  ABISELECT(112,88), // object size
  NSPAIRA(_ZTI9S19994C11),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19994C11),22, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19994C11),2, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19994C15  : S19994C9 , virtual S19994C8 , S77C13_nt , S19994C10 , S19994C6 {
  virtual void  v53(); // _ZN9S19994C153v53Ev
  ~S19994C15(); // tgen
  S19994C15(); // tgen
};
//SIG(-1 S19994C15) C1{ BC2{ v2 v3} VBC3{ VBC4{ m} VBC5{ v4 v5} BC2 VBC6{ BC5 v6 v7 v8 v9 Fi[5] Fp FL[4]} v10} BC4 BC6 BC5 v1}


void  S19994C15 ::v53(){vfunc_called(this, "_ZN9S19994C153v53Ev");}
S19994C15 ::~S19994C15(){ note_dtor("S19994C15", this);} // tgen
S19994C15 ::S19994C15(){ note_ctor("S19994C15", this);} // tgen

static void Test_S19994C15()
{
  extern Class_Descriptor cd_S19994C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,35)];
    init_test(&cd_S19994C15, buf);
    S19994C15 *dp, &lv = *(dp=new (buf) S19994C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,136), "sizeof(S19994C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19994C15)");
    /*is_ambiguous_... S19994C15::S19994C9 */ AMB_check_base_class_offset(lv, (S19994C9*), 0, "S19994C15");
    check_base_class_offset(lv, (S77C13_nt*)(S19994C8*), ABISELECT(96,72), "S19994C15");
    /*is_ambiguous_... S19994C8::S19994C6 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C8*), ABISELECT(96,72), "S19994C15");
    check_base_class_offset(lv, (S19994C9*)(S19994C8*), ABISELECT(88,68), "S19994C15");
    /*is_ambiguous_... S19994C15::S19994C10 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C10*), ABISELECT(104,76), "S19994C15");
    check_base_class_offset(lv, (S19994C10*)(S19994C8*), ABISELECT(104,76), "S19994C15");
    check_base_class_offset(lv, (S19994C8*), ABISELECT(88,68), "S19994C15");
    /*is_ambiguous_... S19994C15::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*), 0, "S19994C15");
    /*is_ambiguous_... S19994C15::S19994C10 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C10*), ABISELECT(8,4), "S19994C15");
    /*is_ambiguous_... S19994C15::S19994C10 */ AMB_check_base_class_offset(lv, (S19994C10*), ABISELECT(8,4), "S19994C15");
    /*is_ambiguous_... S19994C15::S19994C6 */ AMB_check_base_class_offset(lv, (S19994C6*), ABISELECT(80,64), "S19994C15");
    test_class_info(&lv, &cd_S19994C15);
    dp->~S19994C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19994C15(Test_S19994C15, "S19994C15", ABISELECT(176,136));

#else // __cplusplus

extern void _ZN9S19994C15C1Ev();
extern void _ZN9S19994C15D1Ev();
Name_Map name_map_S19994C15[] = {
  NSPAIR(_ZN9S19994C15C1Ev),
  NSPAIR(_ZN9S19994C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19994C9;
extern VTBL_ENTRY _ZTI8S19994C9[];
extern  VTBL_ENTRY _ZTV8S19994C9[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C9;
extern VTBL_ENTRY _ZTI8S19994C9[];
extern  VTBL_ENTRY _ZTV8S19994C9[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C10;
extern VTBL_ENTRY _ZTI9S19994C10[];
extern  VTBL_ENTRY _ZTV9S19994C10[];
extern Class_Descriptor cd_S19994C8;
extern VTBL_ENTRY _ZTI8S19994C8[];
extern  VTBL_ENTRY _ZTV8S19994C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19994C8[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C10;
extern VTBL_ENTRY _ZTI9S19994C10[];
extern  VTBL_ENTRY _ZTV9S19994C10[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
static Base_Class bases_S19994C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19994C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S77C13_nt,    ABISELECT(96,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19994C6,    ABISELECT(96,72), //bcp->offset
    32, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19994C9,    ABISELECT(88,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19994C6,    ABISELECT(104,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19994C10,    ABISELECT(104,76), //bcp->offset
    38, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19994C8,    ABISELECT(88,68), //bcp->offset
    21, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19994C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19994C10,    ABISELECT(8,4), //bcp->offset
    9, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19994C6,    ABISELECT(80,64), //bcp->offset
    17, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19994C15[];
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN9S19994C153v53Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY vtc_S19994C15[] = {
  ABISELECT(104,76),
  ABISELECT(96,72),
  ABISELECT(96,72),
  ABISELECT(88,68),
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C15[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19994C153v53Ev,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19994C15[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
  ABISELECT(-80,-64),
  (VTBL_ENTRY)&(_ZTI9S19994C15[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  0,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(-88,-68),
  (VTBL_ENTRY)&(_ZTI9S19994C15[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
  0,
  0,
  ABISELECT(-96,-72),
  (VTBL_ENTRY)&(_ZTI9S19994C15[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-104,-76),
  (VTBL_ENTRY)&(_ZTI9S19994C15[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern VTBL_ENTRY _ZTV9S19994C15[];
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C8__9S19994C15[] = {
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19994C8[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C6__8S19994C8__9S19994C15[] = {
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19994C8[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C10__8S19994C8__9S19994C15[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19994C8[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
static  VTT_ENTRY vtt_S19994C15[] = {
  {&(_ZTV9S19994C15[6]),  6,52},
  {&(_ZTV9S19994C15[29]),  29,52},
  {&(_ZTV9S19994C15[36]),  36,52},
  {&(_ZTV9S19994C15[46]),  46,52},
  {&(_tg__ZTV8S19994C8__9S19994C15[5]),  5,8},
  {&(_tg__ZTV8S19994C6__8S19994C8__9S19994C15[4]),  4,6},
  {&(_tg__ZTV9S19994C10__8S19994C8__9S19994C15[8]),  8,14},
};
extern VTBL_ENTRY _ZTI9S19994C15[];
extern  VTBL_ENTRY _ZTV9S19994C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C15[];
Class_Descriptor cd_S19994C15 = {  "S19994C15", // class name
  bases_S19994C15, 11,
  &(vtc_S19994C15[0]), // expected_vtbl_contents
  &(vtt_S19994C15[0]), // expected_vtt_contents
  ABISELECT(176,136), // object size
  NSPAIRA(_ZTI9S19994C15),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19994C15),52, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19994C15),7, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19994C14  : virtual S77C13_nt , S19994C2 , S19994C10 {
  int s19994c14f0[10];
  ::S19994C15 s19994c14f1;
  virtual void  v25(); // _ZN9S19994C143v25Ev
  virtual void  v26(); // _ZN9S19994C143v26Ev
  virtual void  v27(); // _ZN9S19994C143v27Ev
  virtual void  v28(); // _ZN9S19994C143v28Ev
  virtual void  v29(); // _ZN9S19994C143v29Ev
  ~S19994C14(); // tgen
  S19994C14(); // tgen
};
//SIG(-1 S19994C14) C1{ VBC2{ m} BC3{ v6 Fp FD[7]} BC4{ BC5{ v7 v8} v9 v10 v11 v12 Fi[5] Fp FL[4]} v1 v2 v3 v4 v5 Fi[10] FC6{ BC7{ v14 v15} VBC8{ VBC2 VBC5 BC7 VBC4 v16} BC2 BC4 BC5 v13}}


void  S19994C14 ::v25(){vfunc_called(this, "_ZN9S19994C143v25Ev");}
void  S19994C14 ::v26(){vfunc_called(this, "_ZN9S19994C143v26Ev");}
void  S19994C14 ::v27(){vfunc_called(this, "_ZN9S19994C143v27Ev");}
void  S19994C14 ::v28(){vfunc_called(this, "_ZN9S19994C143v28Ev");}
void  S19994C14 ::v29(){vfunc_called(this, "_ZN9S19994C143v29Ev");}
S19994C14 ::~S19994C14(){ note_dtor("S19994C14", this);} // tgen
S19994C14 ::S19994C14(){ note_ctor("S19994C14", this);} // tgen

static void Test_S19994C14()
{
  extern Class_Descriptor cd_S19994C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(27,83)];
    init_test(&cd_S19994C14, buf);
    S19994C14 *dp, &lv = *(dp=new (buf) S19994C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(416,328), "sizeof(S19994C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19994C14)");
    check_base_class_offset(lv, (S77C13_nt*), 0, "S19994C14");
    check_base_class_offset(lv, (S19994C2*), 0, "S19994C14");
    check_base_class_offset(lv, (S19994C6*)(S19994C10*), ABISELECT(128,92), "S19994C14");
    check_base_class_offset(lv, (S19994C10*), ABISELECT(128,92), "S19994C14");
    check_field_offset(lv, s19994c14f0, ABISELECT(200,152), "S19994C14.s19994c14f0");
    check_field_offset(lv, s19994c14f1, ABISELECT(240,192), "S19994C14.s19994c14f1");
    test_class_info(&lv, &cd_S19994C14);
    dp->~S19994C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19994C14(Test_S19994C14, "S19994C14", ABISELECT(416,328));

#else // __cplusplus

extern void _ZN9S19994C14C1Ev();
extern void _ZN9S19994C14D1Ev();
Name_Map name_map_S19994C14[] = {
  NSPAIR(_ZN9S19994C14C1Ev),
  NSPAIR(_ZN9S19994C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19994C2;
extern VTBL_ENTRY _ZTI8S19994C2[];
extern  VTBL_ENTRY _ZTV8S19994C2[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C10;
extern VTBL_ENTRY _ZTI9S19994C10[];
extern  VTBL_ENTRY _ZTV9S19994C10[];
static Base_Class bases_S19994C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19994C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19994C6,    ABISELECT(128,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19994C10,    ABISELECT(128,92), //bcp->offset
    9, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19994C14[];
extern void _ZN8S19994C23v10Ev();
extern void _ZN9S19994C143v25Ev();
extern void _ZN9S19994C143v26Ev();
extern void _ZN9S19994C143v27Ev();
extern void _ZN9S19994C143v28Ev();
extern void _ZN9S19994C143v29Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY vtc_S19994C14[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C14[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v29Ev,
  ABISELECT(-128,-92),
  (VTBL_ENTRY)&(_ZTI9S19994C14[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern VTBL_ENTRY _ZTV9S19994C14[];
static  VTT_ENTRY vtt_S19994C14[] = {
  {&(_ZTV9S19994C14[3]),  3,17},
};
extern VTBL_ENTRY _ZTI9S19994C14[];
extern  VTBL_ENTRY _ZTV9S19994C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C14[];
Class_Descriptor cd_S19994C14 = {  "S19994C14", // class name
  bases_S19994C14, 4,
  &(vtc_S19994C14[0]), // expected_vtbl_contents
  &(vtt_S19994C14[0]), // expected_vtt_contents
  ABISELECT(416,328), // object size
  NSPAIRA(_ZTI9S19994C14),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19994C14),17, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19994C14),1, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19994C13  : virtual S19994C14 {
  int s19994c13f0[2];
  virtual void  v30(); // _ZN9S19994C133v30Ev
  virtual void  v31(); // _ZN9S19994C133v31Ev
  virtual void  v32(); // _ZN9S19994C133v32Ev
  ~S19994C13(); // tgen
  S19994C13(); // tgen
};
//SIG(-1 S19994C13) C1{ VBC2{ VBC3{ m} BC4{ v4 Fp FD[7]} BC5{ BC6{ v5 v6} v7 v8 v9 v10 Fi[5] Fp FL[4]} v11 v12 v13 v14 v15 Fi[10] FC7{ BC8{ v17 v18} VBC9{ VBC3 VBC6 BC8 VBC5 v19} BC3 BC5 BC6 v16}} v1 v2 v3 Fi[2]}


void  S19994C13 ::v30(){vfunc_called(this, "_ZN9S19994C133v30Ev");}
void  S19994C13 ::v31(){vfunc_called(this, "_ZN9S19994C133v31Ev");}
void  S19994C13 ::v32(){vfunc_called(this, "_ZN9S19994C133v32Ev");}
S19994C13 ::~S19994C13(){ note_dtor("S19994C13", this);} // tgen
S19994C13 ::S19994C13(){ note_ctor("S19994C13", this);} // tgen

static void Test_S19994C13()
{
  extern Class_Descriptor cd_S19994C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(28,86)];
    init_test(&cd_S19994C13, buf);
    S19994C13 *dp, &lv = *(dp=new (buf) S19994C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(432,340), "sizeof(S19994C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19994C13)");
    check_base_class_offset(lv, (S77C13_nt*)(S19994C14*), 0, "S19994C13");
    check_base_class_offset(lv, (S19994C2*)(S19994C14*), ABISELECT(16,12), "S19994C13");
    check_base_class_offset(lv, (S19994C6*)(S19994C10*)(S19994C14*), ABISELECT(144,104), "S19994C13");
    check_base_class_offset(lv, (S19994C10*)(S19994C14*), ABISELECT(144,104), "S19994C13");
    check_base_class_offset(lv, (S19994C14*), ABISELECT(16,12), "S19994C13");
    check_field_offset(lv, s19994c13f0, ABISELECT(8,4), "S19994C13.s19994c13f0");
    test_class_info(&lv, &cd_S19994C13);
    dp->~S19994C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19994C13(Test_S19994C13, "S19994C13", ABISELECT(432,340));

#else // __cplusplus

extern void _ZN9S19994C13C1Ev();
extern void _ZN9S19994C13D1Ev();
Name_Map name_map_S19994C13[] = {
  NSPAIR(_ZN9S19994C13C1Ev),
  NSPAIR(_ZN9S19994C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19994C2;
extern VTBL_ENTRY _ZTI8S19994C2[];
extern  VTBL_ENTRY _ZTV8S19994C2[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C10;
extern VTBL_ENTRY _ZTI9S19994C10[];
extern  VTBL_ENTRY _ZTV9S19994C10[];
extern Class_Descriptor cd_S19994C14;
extern VTBL_ENTRY _ZTI9S19994C14[];
extern  VTBL_ENTRY _ZTV9S19994C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C14[];
static Base_Class bases_S19994C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19994C2,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19994C6,    ABISELECT(144,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19994C10,    ABISELECT(144,104), //bcp->offset
    28, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19994C14,    ABISELECT(16,12), //bcp->offset
    7, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19994C13[];
extern void _ZN9S19994C133v30Ev();
extern void _ZN9S19994C133v31Ev();
extern void _ZN9S19994C133v32Ev();
extern void _ZN8S19994C23v10Ev();
extern void _ZN9S19994C143v25Ev();
extern void _ZN9S19994C143v26Ev();
extern void _ZN9S19994C143v27Ev();
extern void _ZN9S19994C143v28Ev();
extern void _ZN9S19994C143v29Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY vtc_S19994C13[] = {
  0,
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C13[0]),
  (VTBL_ENTRY)&_ZN9S19994C133v30Ev,
  (VTBL_ENTRY)&_ZN9S19994C133v31Ev,
  (VTBL_ENTRY)&_ZN9S19994C133v32Ev,
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19994C13[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v29Ev,
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI9S19994C13[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern VTBL_ENTRY _ZTV9S19994C13[];
extern void _ZN8S19994C23v10Ev();
extern void _ZN9S19994C143v25Ev();
extern void _ZN9S19994C143v26Ev();
extern void _ZN9S19994C143v27Ev();
extern void _ZN9S19994C143v28Ev();
extern void _ZN9S19994C143v29Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C14__9S19994C13[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C14[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v29Ev,
};
static  VTT_ENTRY vtt_S19994C13[] = {
  {&(_ZTV9S19994C13[4]),  4,36},
  {&(_ZTV9S19994C13[22]),  22,36},
  {&(_ZTV9S19994C13[30]),  30,36},
  {&(_tg__ZTV9S19994C14__9S19994C13[3]),  3,9},
};
extern VTBL_ENTRY _ZTI9S19994C13[];
extern  VTBL_ENTRY _ZTV9S19994C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C13[];
Class_Descriptor cd_S19994C13 = {  "S19994C13", // class name
  bases_S19994C13, 5,
  &(vtc_S19994C13[0]), // expected_vtbl_contents
  &(vtt_S19994C13[0]), // expected_vtt_contents
  ABISELECT(432,340), // object size
  NSPAIRA(_ZTI9S19994C13),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19994C13),36, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19994C13),4, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19994C5  : virtual S19994C6 , S19994C7 , S19994C11 , virtual S19994C12 , virtual S19994C13 {
  void *s19994c5f0;
  virtual void  v33(); // _ZN8S19994C53v33Ev
  virtual void  v34(); // _ZN8S19994C53v34Ev
  virtual void  v35(); // _ZN8S19994C53v35Ev
  virtual void  v36(); // _ZN8S19994C53v36Ev
  virtual void  v37(); // _ZN8S19994C53v37Ev
  virtual void  v38(); // _ZN8S19994C53v38Ev
  virtual void  v39(); // _ZN8S19994C53v39Ev
  virtual void  v40(); // _ZN8S19994C53v40Ev
  ~S19994C5(); // tgen
  S19994C5(); // tgen
};
//SIG(-1 S19994C5) C1{ VBC2{ v9 v10} BC3{ BC4{ VBC5{ m} VBC2 BC6{ v11 v12} VBC7{ BC2 v13 v14 v15 v16 Fi[5] Fp FL[4]} v17} VBC8{ v18 Fp FD[7]} vd v19 Fp} BC9{ VBC6 VBC5 BC10{ v20 FC5 Fi[4]} BC7 v21 v22 v23} VBC10 VBC11{ VBC12{ VBC5 BC8 BC7 v24 v25 v26 v27 v28 Fi[10] FC13{ BC6 VBC4 BC5 BC7 BC2 v32}} v29 v30 v31 Fi[2]} v1 v2 v3 v4 v5 v6 v7 v8 Fp}


void  S19994C5 ::v33(){vfunc_called(this, "_ZN8S19994C53v33Ev");}
void  S19994C5 ::v34(){vfunc_called(this, "_ZN8S19994C53v34Ev");}
void  S19994C5 ::v35(){vfunc_called(this, "_ZN8S19994C53v35Ev");}
void  S19994C5 ::v36(){vfunc_called(this, "_ZN8S19994C53v36Ev");}
void  S19994C5 ::v37(){vfunc_called(this, "_ZN8S19994C53v37Ev");}
void  S19994C5 ::v38(){vfunc_called(this, "_ZN8S19994C53v38Ev");}
void  S19994C5 ::v39(){vfunc_called(this, "_ZN8S19994C53v39Ev");}
void  S19994C5 ::v40(){vfunc_called(this, "_ZN8S19994C53v40Ev");}
S19994C5 ::~S19994C5(){ note_dtor("S19994C5", this);} // tgen
S19994C5 ::S19994C5(){ note_ctor("S19994C5", this);} // tgen

static void Test_S19994C5()
{
  extern Class_Descriptor cd_S19994C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(52,156)];
    init_test(&cd_S19994C5, buf);
    S19994C5 *dp, &lv = *(dp=new (buf) S19994C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(816,620), "sizeof(S19994C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19994C5)");
    /*is_ambiguous_... S19994C5::S19994C6 */ AMB_check_base_class_offset(lv, (S19994C6*), ABISELECT(128,96), "S19994C5");
    /*is_ambiguous_... S19994C8::S19994C6 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C8*)(S19994C7*), ABISELECT(128,96), "S19994C5");
    check_base_class_offset(lv, (S77C13_nt*)(S19994C8*)(S19994C7*), 0, "S19994C5");
    check_base_class_offset(lv, (S77C13_nt*)(S19994C11*), 0, "S19994C5");
    check_base_class_offset(lv, (S77C13_nt*)(S19994C14*), 0, "S19994C5");
    check_base_class_offset(lv, (S19994C9*)(S19994C8*)(S19994C7*), 0, "S19994C5");
    /*is_ambiguous_... S19994C5::S19994C10 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C10*), ABISELECT(136,100), "S19994C5");
    check_base_class_offset(lv, (S19994C10*)(S19994C8*)(S19994C7*), ABISELECT(136,100), "S19994C5");
    check_base_class_offset(lv, (S19994C8*)(S19994C7*), 0, "S19994C5");
    check_base_class_offset(lv, (S19994C2*)(S19994C7*), ABISELECT(208,160), "S19994C5");
    check_base_class_offset(lv, (S19994C7*), 0, "S19994C5");
    check_base_class_offset(lv, (S19994C9*)(S19994C11*), ABISELECT(336,252), "S19994C5");
    check_base_class_offset(lv, (S19994C12*)(S19994C11*), ABISELECT(16,8), "S19994C5");
    check_base_class_offset(lv, (S19994C6*)(S19994C10*)(S19994C11*), ABISELECT(48,32), "S19994C5");
    check_base_class_offset(lv, (S19994C10*)(S19994C11*), ABISELECT(48,32), "S19994C5");
    check_base_class_offset(lv, (S19994C11*), ABISELECT(16,8), "S19994C5");
    /*is_ambiguous_... S19994C5::S19994C12 */ AMB_check_base_class_offset(lv, (S19994C12*), ABISELECT(344,256), "S19994C5");
    check_base_class_offset(lv, (S19994C2*)(S19994C14*), ABISELECT(400,292), "S19994C5");
    check_base_class_offset(lv, (S19994C6*)(S19994C10*)(S19994C14*), ABISELECT(528,384), "S19994C5");
    check_base_class_offset(lv, (S19994C10*)(S19994C14*), ABISELECT(528,384), "S19994C5");
    check_base_class_offset(lv, (S19994C14*)(S19994C13*), ABISELECT(400,292), "S19994C5");
    check_base_class_offset(lv, (S19994C13*), ABISELECT(376,280), "S19994C5");
    check_field_offset(lv, s19994c5f0, ABISELECT(120,92), "S19994C5.s19994c5f0");
    test_class_info(&lv, &cd_S19994C5);
    dp->~S19994C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19994C5(Test_S19994C5, "S19994C5", ABISELECT(816,620));

#else // __cplusplus

extern void _ZN8S19994C5C1Ev();
extern void _ZN8S19994C5D1Ev();
Name_Map name_map_S19994C5[] = {
  NSPAIR(_ZN8S19994C5C1Ev),
  NSPAIR(_ZN8S19994C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19994C9;
extern VTBL_ENTRY _ZTI8S19994C9[];
extern  VTBL_ENTRY _ZTV8S19994C9[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C10;
extern VTBL_ENTRY _ZTI9S19994C10[];
extern  VTBL_ENTRY _ZTV9S19994C10[];
extern Class_Descriptor cd_S19994C8;
extern VTBL_ENTRY _ZTI8S19994C8[];
extern  VTBL_ENTRY _ZTV8S19994C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19994C8[];
extern Class_Descriptor cd_S19994C2;
extern VTBL_ENTRY _ZTI8S19994C2[];
extern  VTBL_ENTRY _ZTV8S19994C2[];
extern Class_Descriptor cd_S19994C7;
extern VTBL_ENTRY _ZTI8S19994C7[];
extern  VTBL_ENTRY _ZTV8S19994C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19994C7[];
extern Class_Descriptor cd_S19994C9;
extern VTBL_ENTRY _ZTI8S19994C9[];
extern  VTBL_ENTRY _ZTV8S19994C9[];
extern Class_Descriptor cd_S19994C12;
extern VTBL_ENTRY _ZTI9S19994C12[];
extern  VTBL_ENTRY _ZTV9S19994C12[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C10;
extern VTBL_ENTRY _ZTI9S19994C10[];
extern  VTBL_ENTRY _ZTV9S19994C10[];
extern Class_Descriptor cd_S19994C11;
extern VTBL_ENTRY _ZTI9S19994C11[];
extern  VTBL_ENTRY _ZTV9S19994C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C11[];
extern Class_Descriptor cd_S19994C12;
extern VTBL_ENTRY _ZTI9S19994C12[];
extern  VTBL_ENTRY _ZTV9S19994C12[];
extern Class_Descriptor cd_S19994C2;
extern VTBL_ENTRY _ZTI8S19994C2[];
extern  VTBL_ENTRY _ZTV8S19994C2[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C10;
extern VTBL_ENTRY _ZTI9S19994C10[];
extern  VTBL_ENTRY _ZTV9S19994C10[];
extern Class_Descriptor cd_S19994C14;
extern VTBL_ENTRY _ZTI9S19994C14[];
extern  VTBL_ENTRY _ZTV9S19994C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C14[];
extern Class_Descriptor cd_S19994C13;
extern VTBL_ENTRY _ZTI9S19994C13[];
extern  VTBL_ENTRY _ZTV9S19994C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C13[];
static Base_Class bases_S19994C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19994C6,    ABISELECT(128,96), //bcp->offset
    40, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19994C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19994C6,    ABISELECT(136,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19994C10,    ABISELECT(136,100), //bcp->offset
    46, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19994C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19994C2,    ABISELECT(208,160), //bcp->offset
    60, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19994C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19994C9,    ABISELECT(336,252), //bcp->offset
    64, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19994C12,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19994C6,    ABISELECT(48,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19994C10,    ABISELECT(48,32), //bcp->offset
    32, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19994C11,    ABISELECT(16,8), //bcp->offset
    24, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19994C12,    ABISELECT(344,256), //bcp->offset
    70, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19994C2,    ABISELECT(400,292), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19994C6,    ABISELECT(528,384), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19994C10,    ABISELECT(528,384), //bcp->offset
    105, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19994C14,    ABISELECT(400,292), //bcp->offset
    84, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S19994C13,    ABISELECT(376,280), //bcp->offset
    74, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19994C5[];
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
extern void _ZN8S19994C5D1Ev();
extern void _ZN8S19994C5D0Ev();
extern void _ZN8S19994C73v20Ev();
extern void _ZN8S19994C53v33Ev();
extern void _ZN8S19994C53v34Ev();
extern void _ZN8S19994C53v35Ev();
extern void _ZN8S19994C53v36Ev();
extern void _ZN8S19994C53v37Ev();
extern void _ZN8S19994C53v38Ev();
extern void _ZN8S19994C53v39Ev();
extern void _ZN8S19994C53v40Ev();
extern void _ZN9S19994C123v21Ev();
extern void _ZN9S19994C113v22Ev();
extern void _ZN9S19994C113v23Ev();
extern void _ZN9S19994C113v24Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
extern void _ZN8S19994C23v10Ev();
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN9S19994C123v21Ev();
extern void _ZN9S19994C133v30Ev();
extern void _ZN9S19994C133v31Ev();
extern void _ZN9S19994C133v32Ev();
extern void _ZN8S19994C23v10Ev();
extern void _ZN9S19994C143v25Ev();
extern void _ZN9S19994C143v26Ev();
extern void _ZN9S19994C143v27Ev();
extern void _ZN9S19994C143v28Ev();
extern void _ZN9S19994C143v29Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY vtc_S19994C5[] = {
  ABISELECT(400,292),
  ABISELECT(376,280),
  ABISELECT(344,256),
  ABISELECT(336,252),
  ABISELECT(208,160),
  ABISELECT(136,100),
  ABISELECT(128,96),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19994C5[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
  (VTBL_ENTRY)&_ZN8S19994C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19994C5D0Ev,
  (VTBL_ENTRY)&_ZN8S19994C73v20Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v33Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v34Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v35Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v36Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v37Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v38Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v39Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v40Ev,
  ABISELECT(-16,-8),
  ABISELECT(320,244),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19994C5[0]),
  (VTBL_ENTRY)&_ZN9S19994C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v22Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v23Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v24Ev,
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S19994C5[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
  0,
  0,
  ABISELECT(-128,-96),
  (VTBL_ENTRY)&(_ZTI8S19994C5[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-136,-100),
  (VTBL_ENTRY)&(_ZTI8S19994C5[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
  0,
  ABISELECT(-208,-160),
  (VTBL_ENTRY)&(_ZTI8S19994C5[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
  0,
  0,
  ABISELECT(-336,-252),
  (VTBL_ENTRY)&(_ZTI8S19994C5[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  0,
  ABISELECT(-344,-256),
  (VTBL_ENTRY)&(_ZTI8S19994C5[0]),
  (VTBL_ENTRY)&_ZN9S19994C123v21Ev,
  0,
  0,
  0,
  ABISELECT(-376,-280),
  ABISELECT(24,12),
  ABISELECT(-376,-280),
  (VTBL_ENTRY)&(_ZTI8S19994C5[0]),
  (VTBL_ENTRY)&_ZN9S19994C133v30Ev,
  (VTBL_ENTRY)&_ZN9S19994C133v31Ev,
  (VTBL_ENTRY)&_ZN9S19994C133v32Ev,
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-400,-292),
  ABISELECT(-400,-292),
  (VTBL_ENTRY)&(_ZTI8S19994C5[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v29Ev,
  ABISELECT(-528,-384),
  (VTBL_ENTRY)&(_ZTI8S19994C5[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern VTBL_ENTRY _ZTV8S19994C5[];
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
extern void _ZN8S19994C7D1Ev();
extern void _ZN8S19994C7D0Ev();
extern void _ZN8S19994C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C7__8S19994C5[] = {
  ABISELECT(208,160),
  ABISELECT(136,100),
  ABISELECT(128,96),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19994C7[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
  (VTBL_ENTRY)&_ZN8S19994C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19994C7D0Ev,
  (VTBL_ENTRY)&_ZN8S19994C73v20Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C88S19994C7__8S19994C5[] = {
  ABISELECT(136,100),
  ABISELECT(128,96),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19994C8[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C6__8S19994C88S19994C7__8S19994C5[] = {
  0,
  0,
  ABISELECT(-128,-96),
  (VTBL_ENTRY)&(_ZTI8S19994C8[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C10__8S19994C88S19994C7__8S19994C5[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-136,-100),
  (VTBL_ENTRY)&(_ZTI8S19994C8[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C6__8S19994C7__8S19994C5[] = {
  0,
  0,
  ABISELECT(-128,-96),
  (VTBL_ENTRY)&(_ZTI8S19994C7[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C10__8S19994C7__8S19994C5[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-136,-100),
  (VTBL_ENTRY)&(_ZTI8S19994C7[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern void _ZN8S19994C23v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C2__8S19994C7__8S19994C5[] = {
  0,
  ABISELECT(-208,-160),
  (VTBL_ENTRY)&(_ZTI8S19994C7[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
};
extern void _ZN9S19994C123v21Ev();
extern void _ZN9S19994C113v22Ev();
extern void _ZN9S19994C113v23Ev();
extern void _ZN9S19994C113v24Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C11__8S19994C5[] = {
  ABISELECT(-16,-8),
  ABISELECT(320,244),
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C11[0]),
  (VTBL_ENTRY)&_ZN9S19994C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v22Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v23Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v24Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C9__9S19994C11__8S19994C5[] = {
  0,
  0,
  ABISELECT(-320,-244),
  (VTBL_ENTRY)&(_ZTI9S19994C11[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
};
extern void _ZN9S19994C133v30Ev();
extern void _ZN9S19994C133v31Ev();
extern void _ZN9S19994C133v32Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C13__8S19994C5[] = {
  ABISELECT(-376,-280),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C13[0]),
  (VTBL_ENTRY)&_ZN9S19994C133v30Ev,
  (VTBL_ENTRY)&_ZN9S19994C133v31Ev,
  (VTBL_ENTRY)&_ZN9S19994C133v32Ev,
};
extern void _ZN8S19994C23v10Ev();
extern void _ZN9S19994C143v25Ev();
extern void _ZN9S19994C143v26Ev();
extern void _ZN9S19994C143v27Ev();
extern void _ZN9S19994C143v28Ev();
extern void _ZN9S19994C143v29Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C14__9S19994C13__8S19994C5[] = {
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-400,-292),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19994C13[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v29Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C109S19994C14__9S19994C13__8S19994C5[] = {
  ABISELECT(-152,-104),
  (VTBL_ENTRY)&(_ZTI9S19994C13[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern void _ZN8S19994C23v10Ev();
extern void _ZN9S19994C143v25Ev();
extern void _ZN9S19994C143v26Ev();
extern void _ZN9S19994C143v27Ev();
extern void _ZN9S19994C143v28Ev();
extern void _ZN9S19994C143v29Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C14__8S19994C5[] = {
  ABISELECT(-400,-292),
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C14[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v29Ev,
};
static  VTT_ENTRY vtt_S19994C5[] = {
  {&(_ZTV8S19994C5[10]),  10,113},
  {&(_tg__ZTV8S19994C7__8S19994C5[6]),  6,12},
  {&(_tg__ZTV8S19994C88S19994C7__8S19994C5[5]),  5,8},
  {&(_tg__ZTV8S19994C6__8S19994C88S19994C7__8S19994C5[4]),  4,6},
  {&(_tg__ZTV9S19994C10__8S19994C88S19994C7__8S19994C5[8]),  8,14},
  {&(_tg__ZTV8S19994C6__8S19994C7__8S19994C5[4]),  4,6},
  {&(_tg__ZTV9S19994C10__8S19994C7__8S19994C5[8]),  8,14},
  {&(_tg__ZTV8S19994C2__8S19994C7__8S19994C5[3]),  3,4},
  {&(_tg__ZTV9S19994C11__8S19994C5[4]),  4,8},
  {&(_tg__ZTV8S19994C9__9S19994C11__8S19994C5[4]),  4,6},
  {&(_ZTV8S19994C5[44]),  44,113},
  {&(_ZTV8S19994C5[54]),  54,113},
  {&(_ZTV8S19994C5[63]),  63,113},
  {&(_ZTV8S19994C5[28]),  28,113},
  {&(_ZTV8S19994C5[68]),  68,113},
  {&(_ZTV8S19994C5[73]),  73,113},
  {&(_ZTV8S19994C5[81]),  81,113},
  {&(_ZTV8S19994C5[99]),  99,113},
  {&(_ZTV8S19994C5[107]),  107,113},
  {&(_tg__ZTV9S19994C13__8S19994C5[4]),  4,7},
  {&(_tg__ZTV9S19994C14__9S19994C13__8S19994C5[15]),  15,21},
  {&(_tg__ZTV9S19994C109S19994C14__9S19994C13__8S19994C5[2]),  2,8},
  {&(_tg__ZTV9S19994C14__8S19994C5[3]),  3,9},
};
extern VTBL_ENTRY _ZTI8S19994C5[];
extern  VTBL_ENTRY _ZTV8S19994C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19994C5[];
Class_Descriptor cd_S19994C5 = {  "S19994C5", // class name
  bases_S19994C5, 19,
  &(vtc_S19994C5[0]), // expected_vtbl_contents
  &(vtt_S19994C5[0]), // expected_vtt_contents
  ABISELECT(816,620), // object size
  NSPAIRA(_ZTI8S19994C5),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19994C5),113, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19994C5),23, //virtual table table var
  18, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19994C3  : S77C13_nt , virtual S19994C5 {
  int s19994c3f0;
  virtual  ~S19994C3(); // _ZN8S19994C3D2Ev
  virtual void  v41(); // _ZN8S19994C33v41Ev
  virtual void  v42(); // _ZN8S19994C33v42Ev
  virtual void  v43(); // _ZN8S19994C33v43Ev
  S19994C3(); // tgen
};
//SIG(-1 S19994C3) C1{ BC2{ m} VBC3{ VBC4{ v4 v5} BC5{ BC6{ VBC2 VBC4 BC7{ v6 v7} VBC8{ BC4 v8 v9 v10 v11 Fi[5] Fp FL[4]} v12} VBC9{ v13 Fp FD[7]} vd v14 Fp} BC10{ VBC7 VBC2 BC11{ v15 FC2 Fi[4]} BC8 v16 v17 v18} VBC11 VBC12{ VBC13{ VBC2 BC9 BC8 v19 v20 v21 v22 v23 Fi[10] FC14{ BC7 VBC6 BC2 BC8 BC4 v35}} v24 v25 v26 Fi[2]} v27 v28 v29 v30 v31 v32 v33 v34 Fp} vd v1 v2 v3 Fi}


 S19994C3 ::~S19994C3(){ note_dtor("S19994C3", this);}
void  S19994C3 ::v41(){vfunc_called(this, "_ZN8S19994C33v41Ev");}
void  S19994C3 ::v42(){vfunc_called(this, "_ZN8S19994C33v42Ev");}
void  S19994C3 ::v43(){vfunc_called(this, "_ZN8S19994C33v43Ev");}
S19994C3 ::S19994C3(){ note_ctor("S19994C3", this);} // tgen

static void Test_S19994C3()
{
  extern Class_Descriptor cd_S19994C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(53,157)];
    init_test(&cd_S19994C3, buf);
    S19994C3 *dp, &lv = *(dp=new (buf) S19994C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(832,624), "sizeof(S19994C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19994C3)");
    /*is_ambiguous_... S19994C3::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*), 0, "S19994C3");
    /*is_ambiguous_... S19994C5::S19994C6 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C5*), 0, "S19994C3");
    /*is_ambiguous_... S19994C8::S19994C6 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C8*)(S19994C7*)(S19994C5*), 0, "S19994C3");
    check_base_class_offset(lv, (S77C13_nt*)(S19994C8*)(S19994C7*)(S19994C5*), ABISELECT(144,104), "S19994C3");
    check_base_class_offset(lv, (S77C13_nt*)(S19994C11*)(S19994C5*), ABISELECT(144,104), "S19994C3");
    check_base_class_offset(lv, (S77C13_nt*)(S19994C14*), ABISELECT(144,104), "S19994C3");
    check_base_class_offset(lv, (S19994C9*)(S19994C8*)(S19994C7*)(S19994C5*), ABISELECT(16,8), "S19994C3");
    /*is_ambiguous_... S19994C3::S19994C10 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C10*), ABISELECT(144,104), "S19994C3");
    check_base_class_offset(lv, (S19994C10*)(S19994C8*)(S19994C7*)(S19994C5*), ABISELECT(144,104), "S19994C3");
    check_base_class_offset(lv, (S19994C8*)(S19994C7*)(S19994C5*), ABISELECT(16,8), "S19994C3");
    check_base_class_offset(lv, (S19994C2*)(S19994C7*)(S19994C5*), ABISELECT(224,164), "S19994C3");
    check_base_class_offset(lv, (S19994C7*)(S19994C5*), ABISELECT(16,8), "S19994C3");
    check_base_class_offset(lv, (S19994C9*)(S19994C11*)(S19994C5*), ABISELECT(352,256), "S19994C3");
    check_base_class_offset(lv, (S19994C12*)(S19994C11*)(S19994C5*), ABISELECT(32,16), "S19994C3");
    check_base_class_offset(lv, (S19994C6*)(S19994C10*)(S19994C11*)(S19994C5*), ABISELECT(64,40), "S19994C3");
    check_base_class_offset(lv, (S19994C10*)(S19994C11*)(S19994C5*), ABISELECT(64,40), "S19994C3");
    check_base_class_offset(lv, (S19994C11*)(S19994C5*), ABISELECT(32,16), "S19994C3");
    /*is_ambiguous_... S19994C5::S19994C12 */ AMB_check_base_class_offset(lv, (S19994C12*)(S19994C5*), ABISELECT(360,260), "S19994C3");
    check_base_class_offset(lv, (S19994C2*)(S19994C14*), ABISELECT(416,296), "S19994C3");
    check_base_class_offset(lv, (S19994C6*)(S19994C10*)(S19994C14*), ABISELECT(544,388), "S19994C3");
    check_base_class_offset(lv, (S19994C10*)(S19994C14*), ABISELECT(544,388), "S19994C3");
    check_base_class_offset(lv, (S19994C14*)(S19994C13*), ABISELECT(416,296), "S19994C3");
    check_base_class_offset(lv, (S19994C13*)(S19994C5*), ABISELECT(392,284), "S19994C3");
    check_base_class_offset(lv, (S19994C5*), ABISELECT(16,8), "S19994C3");
    check_field_offset(lv, s19994c3f0, ABISELECT(8,4), "S19994C3.s19994c3f0");
    test_class_info(&lv, &cd_S19994C3);
    dp->~S19994C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19994C3(Test_S19994C3, "S19994C3", ABISELECT(832,624));

#else // __cplusplus

extern void _ZN8S19994C3C1Ev();
extern void _ZN8S19994C3D2Ev();
Name_Map name_map_S19994C3[] = {
  NSPAIR(_ZN8S19994C3C1Ev),
  NSPAIR(_ZN8S19994C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19994C9;
extern VTBL_ENTRY _ZTI8S19994C9[];
extern  VTBL_ENTRY _ZTV8S19994C9[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C10;
extern VTBL_ENTRY _ZTI9S19994C10[];
extern  VTBL_ENTRY _ZTV9S19994C10[];
extern Class_Descriptor cd_S19994C8;
extern VTBL_ENTRY _ZTI8S19994C8[];
extern  VTBL_ENTRY _ZTV8S19994C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19994C8[];
extern Class_Descriptor cd_S19994C2;
extern VTBL_ENTRY _ZTI8S19994C2[];
extern  VTBL_ENTRY _ZTV8S19994C2[];
extern Class_Descriptor cd_S19994C7;
extern VTBL_ENTRY _ZTI8S19994C7[];
extern  VTBL_ENTRY _ZTV8S19994C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19994C7[];
extern Class_Descriptor cd_S19994C9;
extern VTBL_ENTRY _ZTI8S19994C9[];
extern  VTBL_ENTRY _ZTV8S19994C9[];
extern Class_Descriptor cd_S19994C12;
extern VTBL_ENTRY _ZTI9S19994C12[];
extern  VTBL_ENTRY _ZTV9S19994C12[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C10;
extern VTBL_ENTRY _ZTI9S19994C10[];
extern  VTBL_ENTRY _ZTV9S19994C10[];
extern Class_Descriptor cd_S19994C11;
extern VTBL_ENTRY _ZTI9S19994C11[];
extern  VTBL_ENTRY _ZTV9S19994C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C11[];
extern Class_Descriptor cd_S19994C12;
extern VTBL_ENTRY _ZTI9S19994C12[];
extern  VTBL_ENTRY _ZTV9S19994C12[];
extern Class_Descriptor cd_S19994C2;
extern VTBL_ENTRY _ZTI8S19994C2[];
extern  VTBL_ENTRY _ZTV8S19994C2[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C10;
extern VTBL_ENTRY _ZTI9S19994C10[];
extern  VTBL_ENTRY _ZTV9S19994C10[];
extern Class_Descriptor cd_S19994C14;
extern VTBL_ENTRY _ZTI9S19994C14[];
extern  VTBL_ENTRY _ZTV9S19994C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C14[];
extern Class_Descriptor cd_S19994C13;
extern VTBL_ENTRY _ZTI9S19994C13[];
extern  VTBL_ENTRY _ZTV9S19994C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C13[];
extern Class_Descriptor cd_S19994C5;
extern VTBL_ENTRY _ZTI8S19994C5[];
extern  VTBL_ENTRY _ZTV8S19994C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19994C5[];
static Base_Class bases_S19994C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19994C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S77C13_nt,    ABISELECT(144,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19994C9,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19994C6,    ABISELECT(144,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19994C10,    ABISELECT(144,104), //bcp->offset
    83, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19994C8,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19994C2,    ABISELECT(224,164), //bcp->offset
    97, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19994C7,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19994C9,    ABISELECT(352,256), //bcp->offset
    101, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19994C12,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19994C6,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19994C10,    ABISELECT(64,40), //bcp->offset
    75, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19994C11,    ABISELECT(32,16), //bcp->offset
    67, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19994C12,    ABISELECT(360,260), //bcp->offset
    107, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S19994C2,    ABISELECT(416,296), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19994C6,    ABISELECT(544,388), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19994C10,    ABISELECT(544,388), //bcp->offset
    142, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19994C14,    ABISELECT(416,296), //bcp->offset
    121, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S19994C13,    ABISELECT(392,284), //bcp->offset
    111, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S19994C5,    ABISELECT(16,8), //bcp->offset
    20, //bcp->virtual_function_table_offset
    33, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19994C3[];
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN8S19994C3D1Ev();
extern void _ZN8S19994C3D0Ev();
extern void _ZN8S19994C33v41Ev();
extern void _ZN8S19994C33v42Ev();
extern void _ZN8S19994C33v43Ev();
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
extern void ABISELECT(_ZTv0_n112_N8S19994C3D1Ev,_ZTv0_n56_N8S19994C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S19994C3D1Ev,_ZThn8_N8S19994C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n112_N8S19994C3D0Ev,_ZTv0_n56_N8S19994C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S19994C3D0Ev,_ZThn8_N8S19994C3D0Ev)() __attribute__((weak));
extern void _ZN8S19994C73v20Ev();
extern void _ZN8S19994C53v33Ev();
extern void _ZN8S19994C53v34Ev();
extern void _ZN8S19994C53v35Ev();
extern void _ZN8S19994C53v36Ev();
extern void _ZN8S19994C53v37Ev();
extern void _ZN8S19994C53v38Ev();
extern void _ZN8S19994C53v39Ev();
extern void _ZN8S19994C53v40Ev();
extern void _ZN9S19994C123v21Ev();
extern void _ZN9S19994C113v22Ev();
extern void _ZN9S19994C113v23Ev();
extern void _ZN9S19994C113v24Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
extern void _ZN8S19994C23v10Ev();
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN9S19994C123v21Ev();
extern void _ZN9S19994C133v30Ev();
extern void _ZN9S19994C133v31Ev();
extern void _ZN9S19994C133v32Ev();
extern void _ZN8S19994C23v10Ev();
extern void _ZN9S19994C143v25Ev();
extern void _ZN9S19994C143v26Ev();
extern void _ZN9S19994C143v27Ev();
extern void _ZN9S19994C143v28Ev();
extern void _ZN9S19994C143v29Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY vtc_S19994C3[] = {
  ABISELECT(416,296),
  ABISELECT(392,284),
  ABISELECT(360,260),
  ABISELECT(352,256),
  ABISELECT(224,164),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  ABISELECT(16,8),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19994C3[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19994C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19994C3D0Ev,
  (VTBL_ENTRY)&_ZN8S19994C33v41Ev,
  (VTBL_ENTRY)&_ZN8S19994C33v42Ev,
  (VTBL_ENTRY)&_ZN8S19994C33v43Ev,
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  0,
  0,
  0,
  ABISELECT(400,288),
  ABISELECT(376,276),
  ABISELECT(344,252),
  ABISELECT(336,248),
  ABISELECT(208,156),
  ABISELECT(128,96),
  ABISELECT(-16,-8),
  ABISELECT(128,96),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19994C3[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N8S19994C3D1Ev,_ZTv0_n56_N8S19994C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N8S19994C3D0Ev,_ZTv0_n56_N8S19994C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19994C73v20Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v33Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v34Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v35Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v36Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v37Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v38Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v39Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v40Ev,
  ABISELECT(112,88),
  ABISELECT(320,240),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19994C3[0]),
  (VTBL_ENTRY)&_ZN9S19994C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v22Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v23Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v24Ev,
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S19994C3[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S19994C3[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
  0,
  ABISELECT(-224,-164),
  (VTBL_ENTRY)&(_ZTI8S19994C3[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
  0,
  0,
  ABISELECT(-352,-256),
  (VTBL_ENTRY)&(_ZTI8S19994C3[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  0,
  ABISELECT(-360,-260),
  (VTBL_ENTRY)&(_ZTI8S19994C3[0]),
  (VTBL_ENTRY)&_ZN9S19994C123v21Ev,
  0,
  0,
  0,
  ABISELECT(-248,-180),
  ABISELECT(24,12),
  ABISELECT(-392,-284),
  (VTBL_ENTRY)&(_ZTI8S19994C3[0]),
  (VTBL_ENTRY)&_ZN9S19994C133v30Ev,
  (VTBL_ENTRY)&_ZN9S19994C133v31Ev,
  (VTBL_ENTRY)&_ZN9S19994C133v32Ev,
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-272,-192),
  ABISELECT(-416,-296),
  (VTBL_ENTRY)&(_ZTI8S19994C3[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v29Ev,
  ABISELECT(-544,-388),
  (VTBL_ENTRY)&(_ZTI8S19994C3[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern VTBL_ENTRY _ZTV8S19994C3[];
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
extern void _ZN8S19994C5D1Ev();
extern void _ZN8S19994C5D0Ev();
extern void _ZN8S19994C73v20Ev();
extern void _ZN8S19994C53v33Ev();
extern void _ZN8S19994C53v34Ev();
extern void _ZN8S19994C53v35Ev();
extern void _ZN8S19994C53v36Ev();
extern void _ZN8S19994C53v37Ev();
extern void _ZN8S19994C53v38Ev();
extern void _ZN8S19994C53v39Ev();
extern void _ZN8S19994C53v40Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C5__8S19994C3[] = {
  ABISELECT(400,288),
  ABISELECT(376,276),
  ABISELECT(344,252),
  ABISELECT(336,248),
  ABISELECT(208,156),
  ABISELECT(128,96),
  ABISELECT(-16,-8),
  ABISELECT(128,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S19994C5[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
  (VTBL_ENTRY)&_ZN8S19994C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19994C5D0Ev,
  (VTBL_ENTRY)&_ZN8S19994C73v20Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v33Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v34Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v35Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v36Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v37Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v38Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v39Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v40Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
extern void _ZN8S19994C7D1Ev();
extern void _ZN8S19994C7D0Ev();
extern void _ZN8S19994C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C78S19994C5__8S19994C3[] = {
  ABISELECT(208,156),
  ABISELECT(128,96),
  ABISELECT(-16,-8),
  ABISELECT(128,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S19994C7[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
  (VTBL_ENTRY)&_ZN8S19994C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19994C7D0Ev,
  (VTBL_ENTRY)&_ZN8S19994C73v20Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C88S19994C78S19994C5__8S19994C3[] = {
  ABISELECT(128,96),
  ABISELECT(-16,-8),
  ABISELECT(128,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S19994C8[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C6__8S19994C88S19994C78S19994C5__8S19994C3[] = {
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19994C8[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C10__8S19994C88S19994C78S19994C5__8S19994C3[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-96),
  (VTBL_ENTRY)&(_ZTI8S19994C8[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C6__8S19994C78S19994C5__8S19994C3[] = {
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19994C7[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C10__8S19994C78S19994C5__8S19994C3[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-96),
  (VTBL_ENTRY)&(_ZTI8S19994C7[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern void _ZN8S19994C23v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C2__8S19994C78S19994C5__8S19994C3[] = {
  0,
  ABISELECT(-208,-156),
  (VTBL_ENTRY)&(_ZTI8S19994C7[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
};
extern void _ZN9S19994C123v21Ev();
extern void _ZN9S19994C113v22Ev();
extern void _ZN9S19994C113v23Ev();
extern void _ZN9S19994C113v24Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C118S19994C5__8S19994C3[] = {
  ABISELECT(112,88),
  ABISELECT(320,240),
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C11[0]),
  (VTBL_ENTRY)&_ZN9S19994C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v22Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v23Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v24Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C9__9S19994C118S19994C5__8S19994C3[] = {
  0,
  0,
  ABISELECT(-320,-240),
  (VTBL_ENTRY)&(_ZTI9S19994C11[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C6__8S19994C5__8S19994C3[] = {
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19994C5[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C10__8S19994C5__8S19994C3[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-96),
  (VTBL_ENTRY)&(_ZTI8S19994C5[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern void _ZN8S19994C23v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C2__8S19994C5__8S19994C3[] = {
  0,
  ABISELECT(-208,-156),
  (VTBL_ENTRY)&(_ZTI8S19994C5[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
};
extern void _ZN9S19994C123v21Ev();
extern void _ZN9S19994C113v22Ev();
extern void _ZN9S19994C113v23Ev();
extern void _ZN9S19994C113v24Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C11__8S19994C5__8S19994C3[] = {
  ABISELECT(112,88),
  ABISELECT(320,240),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19994C5[0]),
  (VTBL_ENTRY)&_ZN9S19994C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v22Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v23Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v24Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C9__A1__8S19994C5__8S19994C3[] = {
  0,
  0,
  ABISELECT(-336,-248),
  (VTBL_ENTRY)&(_ZTI8S19994C5[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
};
extern void _ZN9S19994C123v21Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C12__A1__8S19994C5__8S19994C3[] = {
  0,
  ABISELECT(-344,-252),
  (VTBL_ENTRY)&(_ZTI8S19994C5[0]),
  (VTBL_ENTRY)&_ZN9S19994C123v21Ev,
};
extern void _ZN9S19994C133v30Ev();
extern void _ZN9S19994C133v31Ev();
extern void _ZN9S19994C133v32Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C13__8S19994C5__8S19994C3[] = {
  0,
  0,
  0,
  ABISELECT(-248,-180),
  ABISELECT(24,12),
  ABISELECT(-376,-276),
  (VTBL_ENTRY)&(_ZTI8S19994C5[0]),
  (VTBL_ENTRY)&_ZN9S19994C133v30Ev,
  (VTBL_ENTRY)&_ZN9S19994C133v31Ev,
  (VTBL_ENTRY)&_ZN9S19994C133v32Ev,
};
extern void _ZN8S19994C23v10Ev();
extern void _ZN9S19994C143v25Ev();
extern void _ZN9S19994C143v26Ev();
extern void _ZN9S19994C143v27Ev();
extern void _ZN9S19994C143v28Ev();
extern void _ZN9S19994C143v29Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C14__8S19994C5__8S19994C3[] = {
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-272,-192),
  ABISELECT(-400,-288),
  (VTBL_ENTRY)&(_ZTI8S19994C5[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v29Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C109S19994C14__A2__8S19994C5__8S19994C3[] = {
  ABISELECT(-528,-380),
  (VTBL_ENTRY)&(_ZTI8S19994C5[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern void _ZN9S19994C133v30Ev();
extern void _ZN9S19994C133v31Ev();
extern void _ZN9S19994C133v32Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C13__8S19994C3[] = {
  ABISELECT(-248,-180),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C13[0]),
  (VTBL_ENTRY)&_ZN9S19994C133v30Ev,
  (VTBL_ENTRY)&_ZN9S19994C133v31Ev,
  (VTBL_ENTRY)&_ZN9S19994C133v32Ev,
};
extern void _ZN8S19994C23v10Ev();
extern void _ZN9S19994C143v25Ev();
extern void _ZN9S19994C143v26Ev();
extern void _ZN9S19994C143v27Ev();
extern void _ZN9S19994C143v28Ev();
extern void _ZN9S19994C143v29Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C14__9S19994C13__8S19994C3[] = {
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-272,-192),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19994C13[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v29Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C109S19994C14__9S19994C13__8S19994C3[] = {
  ABISELECT(-152,-104),
  (VTBL_ENTRY)&(_ZTI9S19994C13[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern void _ZN8S19994C23v10Ev();
extern void _ZN9S19994C143v25Ev();
extern void _ZN9S19994C143v26Ev();
extern void _ZN9S19994C143v27Ev();
extern void _ZN9S19994C143v28Ev();
extern void _ZN9S19994C143v29Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C14__8S19994C3[] = {
  ABISELECT(-272,-192),
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C14[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v29Ev,
};
static  VTT_ENTRY vtt_S19994C3[] = {
  {&(_ZTV8S19994C3[13]),  13,150},
  {&(_ZTV8S19994C3[53]),  53,150},
  {&(_ZTV8S19994C3[13]),  13,150},
  {&(_ZTV8S19994C3[91]),  91,150},
  {&(_ZTV8S19994C3[100]),  100,150},
  {&(_ZTV8S19994C3[71]),  71,150},
  {&(_ZTV8S19994C3[105]),  105,150},
  {&(_ZTV8S19994C3[77]),  77,150},
  {&(_ZTV8S19994C3[110]),  110,150},
  {&(_ZTV8S19994C3[118]),  118,150},
  {&(_ZTV8S19994C3[136]),  136,150},
  {&(_ZTV8S19994C3[144]),  144,150},
  {&(_tg__ZTV8S19994C5__8S19994C3[10]),  10,24},
  {&(_tg__ZTV8S19994C78S19994C5__8S19994C3[6]),  6,12},
  {&(_tg__ZTV8S19994C88S19994C78S19994C5__8S19994C3[5]),  5,8},
  {&(_tg__ZTV8S19994C6__8S19994C88S19994C78S19994C5__8S19994C3[4]),  4,6},
  {&(_tg__ZTV9S19994C10__8S19994C88S19994C78S19994C5__8S19994C3[8]),  8,14},
  {&(_tg__ZTV8S19994C6__8S19994C78S19994C5__8S19994C3[4]),  4,6},
  {&(_tg__ZTV9S19994C10__8S19994C78S19994C5__8S19994C3[8]),  8,14},
  {&(_tg__ZTV8S19994C2__8S19994C78S19994C5__8S19994C3[3]),  3,4},
  {&(_tg__ZTV9S19994C118S19994C5__8S19994C3[4]),  4,8},
  {&(_tg__ZTV8S19994C9__9S19994C118S19994C5__8S19994C3[4]),  4,6},
  {&(_tg__ZTV8S19994C6__8S19994C5__8S19994C3[4]),  4,6},
  {&(_tg__ZTV9S19994C10__8S19994C5__8S19994C3[8]),  8,14},
  {&(_tg__ZTV8S19994C2__8S19994C5__8S19994C3[3]),  3,4},
  {&(_tg__ZTV9S19994C11__8S19994C5__8S19994C3[4]),  4,8},
  {&(_tg__ZTV8S19994C9__A1__8S19994C5__8S19994C3[4]),  4,6},
  {&(_tg__ZTV9S19994C12__A1__8S19994C5__8S19994C3[3]),  3,4},
  {&(_tg__ZTV9S19994C13__8S19994C5__8S19994C3[7]),  7,10},
  {&(_tg__ZTV9S19994C14__8S19994C5__8S19994C3[15]),  15,21},
  {&(_tg__ZTV9S19994C109S19994C14__A2__8S19994C5__8S19994C3[2]),  2,8},
  {&(_tg__ZTV9S19994C13__8S19994C3[4]),  4,7},
  {&(_tg__ZTV9S19994C14__9S19994C13__8S19994C3[15]),  15,21},
  {&(_tg__ZTV9S19994C109S19994C14__9S19994C13__8S19994C3[2]),  2,8},
  {&(_tg__ZTV9S19994C14__8S19994C3[3]),  3,9},
};
extern VTBL_ENTRY _ZTI8S19994C3[];
extern  VTBL_ENTRY _ZTV8S19994C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19994C3[];
static VTBL_ENTRY alt_thunk_names3[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N8S19994C3D0Ev,_ZTv0_n56_N8S19994C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19994C3D0Ev,_ZThn8_N8S19994C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N8S19994C3D1Ev,_ZTv0_n56_N8S19994C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19994C3D1Ev,_ZThn8_N8S19994C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19994C3 = {  "S19994C3", // class name
  bases_S19994C3, 21,
  &(vtc_S19994C3[0]), // expected_vtbl_contents
  &(vtt_S19994C3[0]), // expected_vtt_contents
  ABISELECT(832,624), // object size
  NSPAIRA(_ZTI8S19994C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19994C3),150, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19994C3),35, //virtual table table var
  19, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names3,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19994C18  : virtual S19994C12 , S19994C9 , virtual S19994C6 , S19994C15 , S19994C2 {
  int s19994c18f0;
  virtual void  v54(); // _ZN9S19994C183v54Ev
  virtual void  v55(); // _ZN9S19994C183v55Ev
  virtual void  v56(); // _ZN9S19994C183v56Ev
  ~S19994C18(); // tgen
  S19994C18(); // tgen
};
//SIG(-1 S19994C18) C1{ VBC2{ v4 FC3{ m} Fi[4]} BC4{ v5 v6} VBC5{ v7 v8} BC6{ BC4 VBC7{ VBC3 VBC5 BC4 VBC8{ BC5 v9 v10 v11 v12 Fi[5] Fp FL[4]} v13} BC3 BC8 BC5 v14} BC9{ v15 Fp FD[7]} v1 v2 v3 Fi}


void  S19994C18 ::v54(){vfunc_called(this, "_ZN9S19994C183v54Ev");}
void  S19994C18 ::v55(){vfunc_called(this, "_ZN9S19994C183v55Ev");}
void  S19994C18 ::v56(){vfunc_called(this, "_ZN9S19994C183v56Ev");}
S19994C18 ::~S19994C18(){ note_dtor("S19994C18", this);} // tgen
S19994C18 ::S19994C18(){ note_ctor("S19994C18", this);} // tgen

static void Test_S19994C18()
{
  extern Class_Descriptor cd_S19994C18;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(23,66)];
    init_test(&cd_S19994C18, buf);
    S19994C18 *dp, &lv = *(dp=new (buf) S19994C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(352,260), "sizeof(S19994C18)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19994C18)");
    check_base_class_offset(lv, (S19994C12*), ABISELECT(232,168), "S19994C18");
    /*is_ambiguous_... S19994C18::S19994C9 */ AMB_check_base_class_offset(lv, (S19994C9*), 0, "S19994C18");
    /*is_ambiguous_... S19994C18::S19994C6 */ AMB_check_base_class_offset(lv, (S19994C6*), ABISELECT(264,192), "S19994C18");
    /*is_ambiguous_... S19994C8::S19994C6 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C8*), ABISELECT(264,192), "S19994C18");
    /*is_ambiguous_... S19994C15::S19994C9 */ AMB_check_base_class_offset(lv, (S19994C9*)(S19994C15*), ABISELECT(8,4), "S19994C18");
    check_base_class_offset(lv, (S77C13_nt*)(S19994C8*), 0, "S19994C18");
    check_base_class_offset(lv, (S19994C9*)(S19994C8*), ABISELECT(272,196), "S19994C18");
    /*is_ambiguous_... S19994C18::S19994C10 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C10*), ABISELECT(280,200), "S19994C18");
    check_base_class_offset(lv, (S19994C10*)(S19994C8*), ABISELECT(280,200), "S19994C18");
    check_base_class_offset(lv, (S19994C8*)(S19994C15*), ABISELECT(272,196), "S19994C18");
    /*is_ambiguous_... S19994C15::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S19994C15*), ABISELECT(8,4), "S19994C18");
    /*is_ambiguous_... S19994C15::S19994C10 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C10*)(S19994C15*), ABISELECT(16,8), "S19994C18");
    /*is_ambiguous_... S19994C15::S19994C10 */ AMB_check_base_class_offset(lv, (S19994C10*)(S19994C15*), ABISELECT(16,8), "S19994C18");
    /*is_ambiguous_... S19994C15::S19994C6 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C15*), ABISELECT(88,68), "S19994C18");
    check_base_class_offset(lv, (S19994C15*), ABISELECT(8,4), "S19994C18");
    check_base_class_offset(lv, (S19994C2*), ABISELECT(96,72), "S19994C18");
    check_field_offset(lv, s19994c18f0, ABISELECT(224,164), "S19994C18.s19994c18f0");
    test_class_info(&lv, &cd_S19994C18);
    dp->~S19994C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19994C18(Test_S19994C18, "S19994C18", ABISELECT(352,260));

#else // __cplusplus

extern void _ZN9S19994C18C1Ev();
extern void _ZN9S19994C18D1Ev();
Name_Map name_map_S19994C18[] = {
  NSPAIR(_ZN9S19994C18C1Ev),
  NSPAIR(_ZN9S19994C18D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19994C12;
extern VTBL_ENTRY _ZTI9S19994C12[];
extern  VTBL_ENTRY _ZTV9S19994C12[];
extern Class_Descriptor cd_S19994C9;
extern VTBL_ENTRY _ZTI8S19994C9[];
extern  VTBL_ENTRY _ZTV8S19994C9[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C9;
extern VTBL_ENTRY _ZTI8S19994C9[];
extern  VTBL_ENTRY _ZTV8S19994C9[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19994C9;
extern VTBL_ENTRY _ZTI8S19994C9[];
extern  VTBL_ENTRY _ZTV8S19994C9[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C10;
extern VTBL_ENTRY _ZTI9S19994C10[];
extern  VTBL_ENTRY _ZTV9S19994C10[];
extern Class_Descriptor cd_S19994C8;
extern VTBL_ENTRY _ZTI8S19994C8[];
extern  VTBL_ENTRY _ZTV8S19994C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19994C8[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C10;
extern VTBL_ENTRY _ZTI9S19994C10[];
extern  VTBL_ENTRY _ZTV9S19994C10[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C15;
extern VTBL_ENTRY _ZTI9S19994C15[];
extern  VTBL_ENTRY _ZTV9S19994C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C15[];
extern Class_Descriptor cd_S19994C2;
extern VTBL_ENTRY _ZTI8S19994C2[];
extern  VTBL_ENTRY _ZTV8S19994C2[];
static Base_Class bases_S19994C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19994C12,    ABISELECT(232,168), //bcp->offset
    36, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19994C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19994C6,    ABISELECT(264,192), //bcp->offset
    40, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19994C9,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19994C9,    ABISELECT(272,196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19994C6,    ABISELECT(280,200), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19994C10,    ABISELECT(280,200), //bcp->offset
    57, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19994C8,    ABISELECT(272,196), //bcp->offset
    46, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S77C13_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19994C6,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19994C10,    ABISELECT(16,8), //bcp->offset
    21, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19994C6,    ABISELECT(88,68), //bcp->offset
    29, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19994C15,    ABISELECT(8,4), //bcp->offset
    12, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19994C2,    ABISELECT(96,72), //bcp->offset
    33, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19994C18[];
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN9S19994C183v54Ev();
extern void _ZN9S19994C183v55Ev();
extern void _ZN9S19994C183v56Ev();
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN9S19994C153v53Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN8S19994C23v10Ev();
extern void _ZN9S19994C123v21Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY vtc_S19994C18[] = {
  ABISELECT(280,200),
  0,
  ABISELECT(272,196),
  ABISELECT(264,192),
  ABISELECT(232,168),
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C18[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19994C183v54Ev,
  (VTBL_ENTRY)&_ZN9S19994C183v55Ev,
  (VTBL_ENTRY)&_ZN9S19994C183v56Ev,
  ABISELECT(272,196),
  ABISELECT(256,188),
  ABISELECT(-8,-4),
  ABISELECT(264,192),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19994C18[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19994C153v53Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19994C18[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
  ABISELECT(-88,-68),
  (VTBL_ENTRY)&(_ZTI9S19994C18[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  ABISELECT(-96,-72),
  (VTBL_ENTRY)&(_ZTI9S19994C18[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
  0,
  ABISELECT(-232,-168),
  (VTBL_ENTRY)&(_ZTI9S19994C18[0]),
  (VTBL_ENTRY)&_ZN9S19994C123v21Ev,
  0,
  0,
  ABISELECT(-264,-192),
  (VTBL_ENTRY)&(_ZTI9S19994C18[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  0,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  ABISELECT(-272,-196),
  ABISELECT(-272,-196),
  (VTBL_ENTRY)&(_ZTI9S19994C18[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-280,-200),
  (VTBL_ENTRY)&(_ZTI9S19994C18[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern VTBL_ENTRY _ZTV9S19994C18[];
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN9S19994C153v53Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C15__9S19994C18[] = {
  ABISELECT(272,196),
  ABISELECT(256,188),
  ABISELECT(-8,-4),
  ABISELECT(264,192),
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C15[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19994C153v53Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C8__9S19994C15__9S19994C18[] = {
  0,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  ABISELECT(-272,-196),
  ABISELECT(-264,-192),
  (VTBL_ENTRY)&(_ZTI9S19994C15[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C6__9S19994C15__9S19994C18[] = {
  0,
  0,
  ABISELECT(-256,-188),
  (VTBL_ENTRY)&(_ZTI9S19994C15[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C10__9S19994C15__9S19994C18[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-272,-196),
  (VTBL_ENTRY)&(_ZTI9S19994C15[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C8__9S19994C18[] = {
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  ABISELECT(-272,-196),
  0,
  (VTBL_ENTRY)&(_ZTI8S19994C8[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C6__8S19994C8__9S19994C18[] = {
  0,
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S19994C8[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C10__8S19994C8__9S19994C18[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19994C8[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
static  VTT_ENTRY vtt_S19994C18[] = {
  {&(_ZTV9S19994C18[7]),  7,71},
  {&(_tg__ZTV9S19994C15__9S19994C18[6]),  6,9},
  {&(_tg__ZTV8S19994C8__9S19994C15__9S19994C18[8]),  8,11},
  {&(_tg__ZTV8S19994C6__9S19994C15__9S19994C18[4]),  4,6},
  {&(_tg__ZTV9S19994C10__9S19994C15__9S19994C18[8]),  8,14},
  {&(_ZTV9S19994C18[39]),  39,71},
  {&(_ZTV9S19994C18[44]),  44,71},
  {&(_ZTV9S19994C18[18]),  18,71},
  {&(_ZTV9S19994C18[54]),  54,71},
  {&(_ZTV9S19994C18[65]),  65,71},
  {&(_tg__ZTV8S19994C8__9S19994C18[5]),  5,8},
  {&(_tg__ZTV8S19994C6__8S19994C8__9S19994C18[4]),  4,6},
  {&(_tg__ZTV9S19994C10__8S19994C8__9S19994C18[8]),  8,14},
};
extern VTBL_ENTRY _ZTI9S19994C18[];
extern  VTBL_ENTRY _ZTV9S19994C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C18[];
Class_Descriptor cd_S19994C18 = {  "S19994C18", // class name
  bases_S19994C18, 15,
  &(vtc_S19994C18[0]), // expected_vtbl_contents
  &(vtt_S19994C18[0]), // expected_vtt_contents
  ABISELECT(352,260), // object size
  NSPAIRA(_ZTI9S19994C18),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19994C18),71, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19994C18),13, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19994C17  : virtual S19994C11 {
  ::S19994C18 s19994c17f0;
  ::S19994C10 s19994c17f1;
  int s19994c17f2;
  ::S19994C7 s19994c17f3;
  virtual void  v44(); // _ZN9S19994C173v44Ev
  virtual void  v45(); // _ZN9S19994C173v45Ev
  virtual void  v46(); // _ZN9S19994C173v46Ev
  virtual void  v47(); // _ZN9S19994C173v47Ev
  ~S19994C17(); // tgen
  S19994C17(); // tgen
};
//SIG(-1 S19994C17) C1{ VBC2{ VBC3{ v5 v6} VBC4{ m} BC5{ v7 FC4 Fi[4]} BC6{ BC7{ v8 v9} v10 v11 v12 v13 Fi[5] Fp FL[4]} v14 v15 v16} v1 v2 v3 v4 FC8{ VBC5 BC3 VBC7 BC9{ BC3 VBC10{ VBC4 VBC7 BC3 VBC6 v20} BC4 BC6 BC7 v21} BC11{ v22 Fp FD[7]} v17 v18 v19 Fi} FC6 Fi FC12{ BC10 VBC11 vd v23 Fp}}


void  S19994C17 ::v44(){vfunc_called(this, "_ZN9S19994C173v44Ev");}
void  S19994C17 ::v45(){vfunc_called(this, "_ZN9S19994C173v45Ev");}
void  S19994C17 ::v46(){vfunc_called(this, "_ZN9S19994C173v46Ev");}
void  S19994C17 ::v47(){vfunc_called(this, "_ZN9S19994C173v47Ev");}
S19994C17 ::~S19994C17(){ note_dtor("S19994C17", this);} // tgen
S19994C17 ::S19994C17(){ note_ctor("S19994C17", this);} // tgen

static void Test_S19994C17()
{
  extern Class_Descriptor cd_S19994C17;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(50,145)];
    init_test(&cd_S19994C17, buf);
    S19994C17 *dp, &lv = *(dp=new (buf) S19994C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(784,576), "sizeof(S19994C17)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19994C17)");
    check_base_class_offset(lv, (S19994C9*)(S19994C11*), 0, "S19994C17");
    check_base_class_offset(lv, (S77C13_nt*)(S19994C11*), 0, "S19994C17");
    check_base_class_offset(lv, (S19994C12*)(S19994C11*), ABISELECT(672,492), "S19994C17");
    check_base_class_offset(lv, (S19994C6*)(S19994C10*)(S19994C11*), ABISELECT(704,516), "S19994C17");
    check_base_class_offset(lv, (S19994C10*)(S19994C11*), ABISELECT(704,516), "S19994C17");
    check_base_class_offset(lv, (S19994C11*), ABISELECT(672,492), "S19994C17");
    check_field_offset(lv, s19994c17f0, ABISELECT(16,4), "S19994C17.s19994c17f0");
    check_field_offset(lv, s19994c17f1, ABISELECT(368,264), "S19994C17.s19994c17f1");
    check_field_offset(lv, s19994c17f2, ABISELECT(440,324), "S19994C17.s19994c17f2");
    check_field_offset(lv, s19994c17f3, ABISELECT(448,328), "S19994C17.s19994c17f3");
    test_class_info(&lv, &cd_S19994C17);
    dp->~S19994C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19994C17(Test_S19994C17, "S19994C17", ABISELECT(784,576));

#else // __cplusplus

extern void _ZN9S19994C17C1Ev();
extern void _ZN9S19994C17D1Ev();
Name_Map name_map_S19994C17[] = {
  NSPAIR(_ZN9S19994C17C1Ev),
  NSPAIR(_ZN9S19994C17D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19994C9;
extern VTBL_ENTRY _ZTI8S19994C9[];
extern  VTBL_ENTRY _ZTV8S19994C9[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19994C12;
extern VTBL_ENTRY _ZTI9S19994C12[];
extern  VTBL_ENTRY _ZTV9S19994C12[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C10;
extern VTBL_ENTRY _ZTI9S19994C10[];
extern  VTBL_ENTRY _ZTV9S19994C10[];
extern Class_Descriptor cd_S19994C11;
extern VTBL_ENTRY _ZTI9S19994C11[];
extern  VTBL_ENTRY _ZTV9S19994C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C11[];
static Base_Class bases_S19994C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19994C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19994C12,    ABISELECT(672,492), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19994C6,    ABISELECT(704,516), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19994C10,    ABISELECT(704,516), //bcp->offset
    31, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19994C11,    ABISELECT(672,492), //bcp->offset
    13, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19994C17[];
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN9S19994C173v44Ev();
extern void _ZN9S19994C173v45Ev();
extern void _ZN9S19994C173v46Ev();
extern void _ZN9S19994C173v47Ev();
extern void _ZN9S19994C123v21Ev();
extern void _ZN9S19994C113v22Ev();
extern void _ZN9S19994C113v23Ev();
extern void _ZN9S19994C113v24Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY vtc_S19994C17[] = {
  0,
  0,
  ABISELECT(672,492),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C17[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19994C173v44Ev,
  (VTBL_ENTRY)&_ZN9S19994C173v45Ev,
  (VTBL_ENTRY)&_ZN9S19994C173v46Ev,
  (VTBL_ENTRY)&_ZN9S19994C173v47Ev,
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  0,
  0,
  0,
  0,
  ABISELECT(-672,-492),
  ABISELECT(-672,-492),
  ABISELECT(-672,-492),
  (VTBL_ENTRY)&(_ZTI9S19994C17[0]),
  (VTBL_ENTRY)&_ZN9S19994C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v22Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v23Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v24Ev,
  ABISELECT(-704,-516),
  (VTBL_ENTRY)&(_ZTI9S19994C17[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern VTBL_ENTRY _ZTV9S19994C17[];
extern void _ZN9S19994C123v21Ev();
extern void _ZN9S19994C113v22Ev();
extern void _ZN9S19994C113v23Ev();
extern void _ZN9S19994C113v24Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C11__9S19994C17[] = {
  ABISELECT(-672,-492),
  ABISELECT(-672,-492),
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C11[0]),
  (VTBL_ENTRY)&_ZN9S19994C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v22Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v23Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v24Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C9__9S19994C11__9S19994C17[] = {
  0,
  0,
  ABISELECT(672,492),
  (VTBL_ENTRY)&(_ZTI9S19994C11[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
};
static  VTT_ENTRY vtt_S19994C17[] = {
  {&(_ZTV9S19994C17[7]),  7,39},
  {&(_ZTV9S19994C17[27]),  27,39},
  {&(_ZTV9S19994C17[7]),  7,39},
  {&(_ZTV9S19994C17[33]),  33,39},
  {&(_tg__ZTV9S19994C11__9S19994C17[4]),  4,8},
  {&(_tg__ZTV8S19994C9__9S19994C11__9S19994C17[4]),  4,6},
};
extern VTBL_ENTRY _ZTI9S19994C17[];
extern  VTBL_ENTRY _ZTV9S19994C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C17[];
Class_Descriptor cd_S19994C17 = {  "S19994C17", // class name
  bases_S19994C17, 6,
  &(vtc_S19994C17[0]), // expected_vtbl_contents
  &(vtt_S19994C17[0]), // expected_vtt_contents
  ABISELECT(784,576), // object size
  NSPAIRA(_ZTI9S19994C17),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19994C17),39, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19994C17),6, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19994C16  : virtual S19994C11 , virtual S19994C17 , S19994C13 , S19994C7 {
  int s19994c16f0:13;
  virtual  ~S19994C16(); // _ZN9S19994C16D2Ev
  virtual void  v48(); // _ZN9S19994C163v48Ev
  virtual void  v49(); // _ZN9S19994C163v49Ev
  virtual void  v50(); // _ZN9S19994C163v50Ev
  virtual void  v51(); // _ZN9S19994C163v51Ev
  virtual void  v52(); // _ZN9S19994C163v52Ev
  S19994C16(); // tgen
};
//SIG(-1 S19994C16) C1{ VBC2{ VBC3{ v6 v7} VBC4{ m} BC5{ v8 FC4 Fi[4]} BC6{ BC7{ v9 v10} v11 v12 v13 v14 Fi[5] Fp FL[4]} v15 v16 v17} VBC8{ VBC2 v18 v19 v20 v21 FC9{ VBC5 BC3 VBC7 BC10{ BC3 VBC11{ VBC4 VBC7 BC3 VBC6 v31} BC4 BC6 BC7 v36} BC12{ v22 Fp FD[7]} v33 v34 v35 Fi} FC6 Fi FC13{ BC11 VBC12 vd v32 Fp}} BC14{ VBC15{ VBC4 BC12 BC6 v23 v24 v25 v26 v27 Fi[10] FC10} v28 v29 v30 Fi[2]} BC13 vd v1 v2 v3 v4 v5 Fi:13}


 S19994C16 ::~S19994C16(){ note_dtor("S19994C16", this);}
void  S19994C16 ::v48(){vfunc_called(this, "_ZN9S19994C163v48Ev");}
void  S19994C16 ::v49(){vfunc_called(this, "_ZN9S19994C163v49Ev");}
void  S19994C16 ::v50(){vfunc_called(this, "_ZN9S19994C163v50Ev");}
void  S19994C16 ::v51(){vfunc_called(this, "_ZN9S19994C163v51Ev");}
void  S19994C16 ::v52(){vfunc_called(this, "_ZN9S19994C163v52Ev");}
S19994C16 ::S19994C16(){ note_ctor("S19994C16", this);} // tgen

static void Test_S19994C16()
{
  extern Class_Descriptor cd_S19994C16;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(91,272)];
    init_test(&cd_S19994C16, buf);
    S19994C16 *dp, &lv = *(dp=new (buf) S19994C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1440,1084), "sizeof(S19994C16)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19994C16)");
    check_base_class_offset(lv, (S19994C9*)(S19994C11*), ABISELECT(144,108), "S19994C16");
    check_base_class_offset(lv, (S77C13_nt*)(S19994C11*), 0, "S19994C16");
    check_base_class_offset(lv, (S77C13_nt*)(S19994C14*), 0, "S19994C16");
    check_base_class_offset(lv, (S77C13_nt*)(S19994C8*)(S19994C7*), 0, "S19994C16");
    check_base_class_offset(lv, (S19994C12*)(S19994C11*), ABISELECT(40,24), "S19994C16");
    check_base_class_offset(lv, (S19994C6*)(S19994C10*)(S19994C11*), ABISELECT(72,48), "S19994C16");
    check_base_class_offset(lv, (S19994C10*)(S19994C11*), ABISELECT(72,48), "S19994C16");
    check_base_class_offset(lv, (S19994C11*), ABISELECT(40,24), "S19994C16");
    check_base_class_offset(lv, (S19994C11*)(S19994C17*), ABISELECT(40,24), "S19994C16");
    check_base_class_offset(lv, (S19994C17*), ABISELECT(144,108), "S19994C16");
    check_base_class_offset(lv, (S19994C2*)(S19994C14*), ABISELECT(816,600), "S19994C16");
    check_base_class_offset(lv, (S19994C6*)(S19994C10*)(S19994C14*), ABISELECT(944,692), "S19994C16");
    check_base_class_offset(lv, (S19994C10*)(S19994C14*), ABISELECT(944,692), "S19994C16");
    check_base_class_offset(lv, (S19994C14*)(S19994C13*), ABISELECT(816,600), "S19994C16");
    check_base_class_offset(lv, (S19994C13*), 0, "S19994C16");
    /*is_ambiguous_... S19994C8::S19994C6 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C8*)(S19994C7*), ABISELECT(1232,928), "S19994C16");
    check_base_class_offset(lv, (S19994C9*)(S19994C8*)(S19994C7*), ABISELECT(16,12), "S19994C16");
    /*is_ambiguous_... S19994C16::S19994C10 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C10*), ABISELECT(1240,932), "S19994C16");
    check_base_class_offset(lv, (S19994C10*)(S19994C8*)(S19994C7*), ABISELECT(1240,932), "S19994C16");
    check_base_class_offset(lv, (S19994C8*)(S19994C7*), ABISELECT(16,12), "S19994C16");
    check_base_class_offset(lv, (S19994C2*)(S19994C7*), ABISELECT(1312,992), "S19994C16");
    check_base_class_offset(lv, (S19994C7*), ABISELECT(16,12), "S19994C16");
    set_bf_and_test(lv, s19994c16f0, ABISELECT(32,20), 0, 13, 1, "S19994C16");
    set_bf_and_test(lv, s19994c16f0, ABISELECT(32,20), 0, 13, hide_sll(1LL<<12), "S19994C16");
    test_class_info(&lv, &cd_S19994C16);
    dp->~S19994C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19994C16(Test_S19994C16, "S19994C16", ABISELECT(1440,1084));

#else // __cplusplus

extern void _ZN9S19994C16C1Ev();
extern void _ZN9S19994C16D2Ev();
Name_Map name_map_S19994C16[] = {
  NSPAIR(_ZN9S19994C16C1Ev),
  NSPAIR(_ZN9S19994C16D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19994C9;
extern VTBL_ENTRY _ZTI8S19994C9[];
extern  VTBL_ENTRY _ZTV8S19994C9[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19994C12;
extern VTBL_ENTRY _ZTI9S19994C12[];
extern  VTBL_ENTRY _ZTV9S19994C12[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C10;
extern VTBL_ENTRY _ZTI9S19994C10[];
extern  VTBL_ENTRY _ZTV9S19994C10[];
extern Class_Descriptor cd_S19994C11;
extern VTBL_ENTRY _ZTI9S19994C11[];
extern  VTBL_ENTRY _ZTV9S19994C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C11[];
extern Class_Descriptor cd_S19994C17;
extern VTBL_ENTRY _ZTI9S19994C17[];
extern  VTBL_ENTRY _ZTV9S19994C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C17[];
extern Class_Descriptor cd_S19994C2;
extern VTBL_ENTRY _ZTI8S19994C2[];
extern  VTBL_ENTRY _ZTV8S19994C2[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C10;
extern VTBL_ENTRY _ZTI9S19994C10[];
extern  VTBL_ENTRY _ZTV9S19994C10[];
extern Class_Descriptor cd_S19994C14;
extern VTBL_ENTRY _ZTI9S19994C14[];
extern  VTBL_ENTRY _ZTV9S19994C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C14[];
extern Class_Descriptor cd_S19994C13;
extern VTBL_ENTRY _ZTI9S19994C13[];
extern  VTBL_ENTRY _ZTV9S19994C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C13[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C9;
extern VTBL_ENTRY _ZTI8S19994C9[];
extern  VTBL_ENTRY _ZTV8S19994C9[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C10;
extern VTBL_ENTRY _ZTI9S19994C10[];
extern  VTBL_ENTRY _ZTV9S19994C10[];
extern Class_Descriptor cd_S19994C8;
extern VTBL_ENTRY _ZTI8S19994C8[];
extern  VTBL_ENTRY _ZTV8S19994C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19994C8[];
extern Class_Descriptor cd_S19994C2;
extern VTBL_ENTRY _ZTI8S19994C2[];
extern  VTBL_ENTRY _ZTV8S19994C2[];
extern Class_Descriptor cd_S19994C7;
extern VTBL_ENTRY _ZTI8S19994C7[];
extern  VTBL_ENTRY _ZTV8S19994C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19994C7[];
static Base_Class bases_S19994C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19994C9,    ABISELECT(144,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19994C12,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19994C6,    ABISELECT(72,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19994C10,    ABISELECT(72,48), //bcp->offset
    50, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19994C11,    ABISELECT(40,24), //bcp->offset
    32, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19994C17,    ABISELECT(144,108), //bcp->offset
    58, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19994C2,    ABISELECT(816,600), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19994C6,    ABISELECT(944,692), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19994C10,    ABISELECT(944,692), //bcp->offset
    96, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19994C14,    ABISELECT(816,600), //bcp->offset
    75, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19994C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19994C6,    ABISELECT(1232,928), //bcp->offset
    104, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S19994C9,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19994C6,    ABISELECT(1240,932), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19994C10,    ABISELECT(1240,932), //bcp->offset
    110, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S19994C8,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19994C2,    ABISELECT(1312,992), //bcp->offset
    124, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S19994C7,    ABISELECT(16,12), //bcp->offset
    20, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19994C16[];
extern void _ZN9S19994C133v30Ev();
extern void _ZN9S19994C133v31Ev();
extern void _ZN9S19994C133v32Ev();
extern void _ZN9S19994C16D1Ev();
extern void _ZN9S19994C16D0Ev();
extern void _ZN9S19994C163v48Ev();
extern void _ZN9S19994C163v49Ev();
extern void _ZN9S19994C163v50Ev();
extern void _ZN9S19994C163v51Ev();
extern void _ZN9S19994C163v52Ev();
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
extern void ABISELECT(_ZThn16_N9S19994C16D1Ev,_ZThn12_N9S19994C16D1Ev)();
extern void ABISELECT(_ZThn16_N9S19994C16D0Ev,_ZThn12_N9S19994C16D0Ev)();
extern void _ZN8S19994C73v20Ev();
extern void _ZN9S19994C123v21Ev();
extern void _ZN9S19994C113v22Ev();
extern void _ZN9S19994C113v23Ev();
extern void _ZN9S19994C113v24Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN9S19994C173v44Ev();
extern void _ZN9S19994C173v45Ev();
extern void _ZN9S19994C173v46Ev();
extern void _ZN9S19994C173v47Ev();
extern void _ZN8S19994C23v10Ev();
extern void _ZN9S19994C143v25Ev();
extern void _ZN9S19994C143v26Ev();
extern void _ZN9S19994C143v27Ev();
extern void _ZN9S19994C143v28Ev();
extern void _ZN9S19994C143v29Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
extern void _ZN8S19994C23v10Ev();
static  VTBL_ENTRY vtc_S19994C16[] = {
  ABISELECT(1312,992),
  ABISELECT(1240,932),
  ABISELECT(1232,928),
  ABISELECT(144,108),
  ABISELECT(144,108),
  ABISELECT(40,24),
  0,
  ABISELECT(816,600),
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C16[0]),
  (VTBL_ENTRY)&_ZN9S19994C133v30Ev,
  (VTBL_ENTRY)&_ZN9S19994C133v31Ev,
  (VTBL_ENTRY)&_ZN9S19994C133v32Ev,
  (VTBL_ENTRY)&_ZN9S19994C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19994C16D0Ev,
  (VTBL_ENTRY)&_ZN9S19994C163v48Ev,
  (VTBL_ENTRY)&_ZN9S19994C163v49Ev,
  (VTBL_ENTRY)&_ZN9S19994C163v50Ev,
  (VTBL_ENTRY)&_ZN9S19994C163v51Ev,
  (VTBL_ENTRY)&_ZN9S19994C163v52Ev,
  ABISELECT(1296,980),
  ABISELECT(1224,920),
  ABISELECT(1216,916),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19994C16[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19994C16D1Ev,_ZThn12_N9S19994C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19994C16D0Ev,_ZThn12_N9S19994C16D0Ev),
  (VTBL_ENTRY)&_ZN8S19994C73v20Ev,
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  0,
  0,
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(104,84),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI9S19994C16[0]),
  (VTBL_ENTRY)&_ZN9S19994C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v22Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v23Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v24Ev,
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI9S19994C16[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-144,-108),
  0,
  ABISELECT(-104,-84),
  0,
  0,
  ABISELECT(-144,-108),
  (VTBL_ENTRY)&(_ZTI9S19994C16[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19994C173v44Ev,
  (VTBL_ENTRY)&_ZN9S19994C173v45Ev,
  (VTBL_ENTRY)&_ZN9S19994C173v46Ev,
  (VTBL_ENTRY)&_ZN9S19994C173v47Ev,
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-816,-600),
  ABISELECT(-816,-600),
  (VTBL_ENTRY)&(_ZTI9S19994C16[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v29Ev,
  ABISELECT(-944,-692),
  (VTBL_ENTRY)&(_ZTI9S19994C16[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
  0,
  0,
  ABISELECT(-1232,-928),
  (VTBL_ENTRY)&(_ZTI9S19994C16[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-1240,-932),
  (VTBL_ENTRY)&(_ZTI9S19994C16[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
  0,
  ABISELECT(-1312,-992),
  (VTBL_ENTRY)&(_ZTI9S19994C16[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
};
extern VTBL_ENTRY _ZTV9S19994C16[];
extern void _ZN9S19994C133v30Ev();
extern void _ZN9S19994C133v31Ev();
extern void _ZN9S19994C133v32Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C13__9S19994C16[] = {
  0,
  ABISELECT(816,600),
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C13[0]),
  (VTBL_ENTRY)&_ZN9S19994C133v30Ev,
  (VTBL_ENTRY)&_ZN9S19994C133v31Ev,
  (VTBL_ENTRY)&_ZN9S19994C133v32Ev,
};
extern void _ZN8S19994C23v10Ev();
extern void _ZN9S19994C143v25Ev();
extern void _ZN9S19994C143v26Ev();
extern void _ZN9S19994C143v27Ev();
extern void _ZN9S19994C143v28Ev();
extern void _ZN9S19994C143v29Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C14__9S19994C13__9S19994C16[] = {
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-816,-600),
  ABISELECT(-816,-600),
  (VTBL_ENTRY)&(_ZTI9S19994C13[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v29Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C109S19994C14__9S19994C13__9S19994C16[] = {
  ABISELECT(-944,-692),
  (VTBL_ENTRY)&(_ZTI9S19994C13[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
extern void _ZN8S19994C7D1Ev();
extern void _ZN8S19994C7D0Ev();
extern void _ZN8S19994C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C7__9S19994C16[] = {
  ABISELECT(1296,980),
  ABISELECT(1224,920),
  ABISELECT(1216,916),
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19994C7[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
  (VTBL_ENTRY)&_ZN8S19994C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19994C7D0Ev,
  (VTBL_ENTRY)&_ZN8S19994C73v20Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C88S19994C7__9S19994C16[] = {
  ABISELECT(1224,920),
  ABISELECT(1216,916),
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19994C8[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C6__8S19994C88S19994C7__9S19994C16[] = {
  0,
  0,
  ABISELECT(-1216,-916),
  (VTBL_ENTRY)&(_ZTI8S19994C8[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C10__8S19994C88S19994C7__9S19994C16[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-1224,-920),
  (VTBL_ENTRY)&(_ZTI8S19994C8[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C6__8S19994C7__9S19994C16[] = {
  0,
  0,
  ABISELECT(-1216,-916),
  (VTBL_ENTRY)&(_ZTI8S19994C7[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C10__8S19994C7__9S19994C16[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-1224,-920),
  (VTBL_ENTRY)&(_ZTI8S19994C7[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern void _ZN8S19994C23v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C2__8S19994C7__9S19994C16[] = {
  0,
  ABISELECT(-1296,-980),
  (VTBL_ENTRY)&(_ZTI8S19994C7[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
};
extern void _ZN9S19994C123v21Ev();
extern void _ZN9S19994C113v22Ev();
extern void _ZN9S19994C113v23Ev();
extern void _ZN9S19994C113v24Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C11__9S19994C16[] = {
  ABISELECT(-40,-24),
  ABISELECT(104,84),
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C11[0]),
  (VTBL_ENTRY)&_ZN9S19994C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v22Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v23Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v24Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C9__9S19994C11__9S19994C16[] = {
  0,
  0,
  ABISELECT(-104,-84),
  (VTBL_ENTRY)&(_ZTI9S19994C11[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN9S19994C173v44Ev();
extern void _ZN9S19994C173v45Ev();
extern void _ZN9S19994C173v46Ev();
extern void _ZN9S19994C173v47Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C17__9S19994C16[] = {
  ABISELECT(-144,-108),
  0,
  ABISELECT(-104,-84),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C17[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19994C173v44Ev,
  (VTBL_ENTRY)&_ZN9S19994C173v45Ev,
  (VTBL_ENTRY)&_ZN9S19994C173v46Ev,
  (VTBL_ENTRY)&_ZN9S19994C173v47Ev,
};
extern void _ZN9S19994C123v21Ev();
extern void _ZN9S19994C113v22Ev();
extern void _ZN9S19994C113v23Ev();
extern void _ZN9S19994C113v24Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C11__9S19994C17__9S19994C16[] = {
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  0,
  0,
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(104,84),
  ABISELECT(104,84),
  (VTBL_ENTRY)&(_ZTI9S19994C17[0]),
  (VTBL_ENTRY)&_ZN9S19994C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v22Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v23Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v24Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C109S19994C11__9S19994C17__9S19994C16[] = {
  ABISELECT(72,60),
  (VTBL_ENTRY)&(_ZTI9S19994C17[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern void _ZN8S19994C23v10Ev();
extern void _ZN9S19994C143v25Ev();
extern void _ZN9S19994C143v26Ev();
extern void _ZN9S19994C143v27Ev();
extern void _ZN9S19994C143v28Ev();
extern void _ZN9S19994C143v29Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C14__9S19994C16[] = {
  ABISELECT(-816,-600),
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C14[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v29Ev,
};
static  VTT_ENTRY vtt_S19994C16[] = {
  {&(_ZTV9S19994C16[10]),  10,128},
  {&(_tg__ZTV9S19994C13__9S19994C16[4]),  4,7},
  {&(_tg__ZTV9S19994C14__9S19994C13__9S19994C16[15]),  15,21},
  {&(_tg__ZTV9S19994C109S19994C14__9S19994C13__9S19994C16[2]),  2,8},
  {&(_tg__ZTV8S19994C7__9S19994C16[6]),  6,12},
  {&(_tg__ZTV8S19994C88S19994C7__9S19994C16[5]),  5,8},
  {&(_tg__ZTV8S19994C6__8S19994C88S19994C7__9S19994C16[4]),  4,6},
  {&(_tg__ZTV9S19994C10__8S19994C88S19994C7__9S19994C16[8]),  8,14},
  {&(_tg__ZTV8S19994C6__8S19994C7__9S19994C16[4]),  4,6},
  {&(_tg__ZTV9S19994C10__8S19994C7__9S19994C16[8]),  8,14},
  {&(_tg__ZTV8S19994C2__8S19994C7__9S19994C16[3]),  3,4},
  {&(_ZTV9S19994C16[46]),  46,128},
  {&(_ZTV9S19994C16[69]),  69,128},
  {&(_ZTV9S19994C16[52]),  52,128},
  {&(_ZTV9S19994C16[69]),  69,128},
  {&(_ZTV9S19994C16[90]),  90,128},
  {&(_ZTV9S19994C16[98]),  98,128},
  {&(_ZTV9S19994C16[26]),  26,128},
  {&(_ZTV9S19994C16[108]),  108,128},
  {&(_ZTV9S19994C16[118]),  118,128},
  {&(_ZTV9S19994C16[127]),  127,128},
  {&(_tg__ZTV9S19994C11__9S19994C16[4]),  4,8},
  {&(_tg__ZTV8S19994C9__9S19994C11__9S19994C16[4]),  4,6},
  {&(_tg__ZTV9S19994C17__9S19994C16[7]),  7,13},
  {&(_tg__ZTV9S19994C11__9S19994C17__9S19994C16[14]),  14,18},
  {&(_tg__ZTV9S19994C17__9S19994C16[7]),  7,13},
  {&(_tg__ZTV9S19994C109S19994C11__9S19994C17__9S19994C16[2]),  2,8},
  {&(_tg__ZTV9S19994C14__9S19994C16[3]),  3,9},
};
extern VTBL_ENTRY _ZTI9S19994C16[];
extern  VTBL_ENTRY _ZTV9S19994C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C16[];
Class_Descriptor cd_S19994C16 = {  "S19994C16", // class name
  bases_S19994C16, 19,
  &(vtc_S19994C16[0]), // expected_vtbl_contents
  &(vtt_S19994C16[0]), // expected_vtt_contents
  ABISELECT(1440,1084), // object size
  NSPAIRA(_ZTI9S19994C16),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19994C16),128, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19994C16),28, //virtual table table var
  18, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19994C21  {
  ::S19993C22_nt s19994c21f0;
  virtual void  v57(); // _ZN9S19994C213v57Ev
  virtual void  v58(); // _ZN9S19994C213v58Ev
  virtual void  v59(); // _ZN9S19994C213v59Ev
  virtual void  v60(); // _ZN9S19994C213v60Ev
  virtual void  v61(); // _ZN9S19994C213v61Ev
  virtual void  v62(); // _ZN9S19994C213v62Ev
  ~S19994C21(); // tgen
  S19994C21(); // tgen
};
//SIG(-1 S19994C21) C1{ v1 v2 v3 v4 v5 v6 FU2{ m Fi}}


void  S19994C21 ::v57(){vfunc_called(this, "_ZN9S19994C213v57Ev");}
void  S19994C21 ::v58(){vfunc_called(this, "_ZN9S19994C213v58Ev");}
void  S19994C21 ::v59(){vfunc_called(this, "_ZN9S19994C213v59Ev");}
void  S19994C21 ::v60(){vfunc_called(this, "_ZN9S19994C213v60Ev");}
void  S19994C21 ::v61(){vfunc_called(this, "_ZN9S19994C213v61Ev");}
void  S19994C21 ::v62(){vfunc_called(this, "_ZN9S19994C213v62Ev");}
S19994C21 ::~S19994C21(){ note_dtor("S19994C21", this);} // tgen
S19994C21 ::S19994C21(){ note_ctor("S19994C21", this);} // tgen

static void Test_S19994C21()
{
  extern Class_Descriptor cd_S19994C21;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19994C21, buf);
    S19994C21 *dp, &lv = *(dp=new (buf) S19994C21());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19994C21)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19994C21)");
    check_field_offset(lv, s19994c21f0, ABISELECT(8,4), "S19994C21.s19994c21f0");
    test_class_info(&lv, &cd_S19994C21);
    dp->~S19994C21();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19994C21(Test_S19994C21, "S19994C21", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN9S19994C21C1Ev();
extern void _ZN9S19994C21D1Ev();
Name_Map name_map_S19994C21[] = {
  NSPAIR(_ZN9S19994C21C1Ev),
  NSPAIR(_ZN9S19994C21D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S19994C21[];
extern void _ZN9S19994C213v57Ev();
extern void _ZN9S19994C213v58Ev();
extern void _ZN9S19994C213v59Ev();
extern void _ZN9S19994C213v60Ev();
extern void _ZN9S19994C213v61Ev();
extern void _ZN9S19994C213v62Ev();
static  VTBL_ENTRY vtc_S19994C21[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C21[0]),
  (VTBL_ENTRY)&_ZN9S19994C213v57Ev,
  (VTBL_ENTRY)&_ZN9S19994C213v58Ev,
  (VTBL_ENTRY)&_ZN9S19994C213v59Ev,
  (VTBL_ENTRY)&_ZN9S19994C213v60Ev,
  (VTBL_ENTRY)&_ZN9S19994C213v61Ev,
  (VTBL_ENTRY)&_ZN9S19994C213v62Ev,
};
extern VTBL_ENTRY _ZTI9S19994C21[];
extern  VTBL_ENTRY _ZTV9S19994C21[];
Class_Descriptor cd_S19994C21 = {  "S19994C21", // class name
  0,0,//no base classes
  &(vtc_S19994C21[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI9S19994C21),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S19994C21),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19994C20  : S19994C6 , virtual S19994C8 , S19994C2 , S19994C18 , virtual S19994C21 {
  virtual void  v63(); // _ZN9S19994C203v63Ev
  virtual void  v64(); // _ZN9S19994C203v64Ev
  ~S19994C20(); // tgen
  S19994C20(); // tgen
};
//SIG(-1 S19994C20) C1{ BC2{ v3 v4} VBC3{ VBC4{ m} VBC2 BC5{ v5 v6} VBC6{ BC2 v7 v8 v9 v10 Fi[5] Fp FL[4]} v11} BC7{ v12 Fp FD[7]} BC8{ VBC9{ v13 FC4 Fi[4]} BC5 VBC2 BC10{ BC5 VBC3 BC4 BC6 BC2 v14} BC7 v15 v16 v17 Fi} VBC11{ v18 v19 v20 v21 v22 v23 FU12{ m Fi}} v1 v2}


void  S19994C20 ::v63(){vfunc_called(this, "_ZN9S19994C203v63Ev");}
void  S19994C20 ::v64(){vfunc_called(this, "_ZN9S19994C203v64Ev");}
S19994C20 ::~S19994C20(){ note_dtor("S19994C20", this);} // tgen
S19994C20 ::S19994C20(){ note_ctor("S19994C20", this);} // tgen

static void Test_S19994C20()
{
  extern Class_Descriptor cd_S19994C20;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(33,92)];
    init_test(&cd_S19994C20, buf);
    S19994C20 *dp, &lv = *(dp=new (buf) S19994C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(512,364), "sizeof(S19994C20)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19994C20)");
    /*is_ambiguous_... S19994C20::S19994C6 */ AMB_check_base_class_offset(lv, (S19994C6*), 0, "S19994C20");
    check_base_class_offset(lv, (S77C13_nt*)(S19994C8*), 0, "S19994C20");
    /*is_ambiguous_... S19994C8::S19994C6 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C8*), ABISELECT(384,268), "S19994C20");
    /*is_ambiguous_... S19994C18::S19994C6 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C18*), ABISELECT(384,268), "S19994C20");
    check_base_class_offset(lv, (S19994C9*)(S19994C8*), ABISELECT(376,264), "S19994C20");
    /*is_ambiguous_... S19994C20::S19994C10 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C10*), ABISELECT(392,272), "S19994C20");
    check_base_class_offset(lv, (S19994C10*)(S19994C8*), ABISELECT(392,272), "S19994C20");
    check_base_class_offset(lv, (S19994C8*), ABISELECT(376,264), "S19994C20");
    check_base_class_offset(lv, (S19994C8*)(S19994C15*)(S19994C18*), ABISELECT(376,264), "S19994C20");
    /*is_ambiguous_... S19994C20::S19994C2 */ AMB_check_base_class_offset(lv, (S19994C2*), ABISELECT(16,4), "S19994C20");
    check_base_class_offset(lv, (S19994C12*)(S19994C18*), ABISELECT(464,332), "S19994C20");
    /*is_ambiguous_... S19994C18::S19994C9 */ AMB_check_base_class_offset(lv, (S19994C9*)(S19994C18*), ABISELECT(144,96), "S19994C20");
    /*is_ambiguous_... S19994C15::S19994C9 */ AMB_check_base_class_offset(lv, (S19994C9*)(S19994C15*)(S19994C18*), ABISELECT(152,100), "S19994C20");
    /*is_ambiguous_... S19994C15::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S19994C15*)(S19994C18*), ABISELECT(152,100), "S19994C20");
    /*is_ambiguous_... S19994C15::S19994C10 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C10*)(S19994C15*)(S19994C18*), ABISELECT(160,104), "S19994C20");
    /*is_ambiguous_... S19994C15::S19994C10 */ AMB_check_base_class_offset(lv, (S19994C10*)(S19994C15*)(S19994C18*), ABISELECT(160,104), "S19994C20");
    /*is_ambiguous_... S19994C15::S19994C6 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C15*)(S19994C18*), ABISELECT(232,164), "S19994C20");
    check_base_class_offset(lv, (S19994C15*)(S19994C18*), ABISELECT(152,100), "S19994C20");
    check_base_class_offset(lv, (S19994C2*)(S19994C18*), ABISELECT(240,168), "S19994C20");
    check_base_class_offset(lv, (S19994C18*), ABISELECT(144,96), "S19994C20");
    check_base_class_offset(lv, (S19994C21*), ABISELECT(496,356), "S19994C20");
    test_class_info(&lv, &cd_S19994C20);
    dp->~S19994C20();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19994C20(Test_S19994C20, "S19994C20", ABISELECT(512,364));

#else // __cplusplus

extern void _ZN9S19994C20C1Ev();
extern void _ZN9S19994C20D1Ev();
Name_Map name_map_S19994C20[] = {
  NSPAIR(_ZN9S19994C20C1Ev),
  NSPAIR(_ZN9S19994C20D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C9;
extern VTBL_ENTRY _ZTI8S19994C9[];
extern  VTBL_ENTRY _ZTV8S19994C9[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C10;
extern VTBL_ENTRY _ZTI9S19994C10[];
extern  VTBL_ENTRY _ZTV9S19994C10[];
extern Class_Descriptor cd_S19994C8;
extern VTBL_ENTRY _ZTI8S19994C8[];
extern  VTBL_ENTRY _ZTV8S19994C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19994C8[];
extern Class_Descriptor cd_S19994C2;
extern VTBL_ENTRY _ZTI8S19994C2[];
extern  VTBL_ENTRY _ZTV8S19994C2[];
extern Class_Descriptor cd_S19994C12;
extern VTBL_ENTRY _ZTI9S19994C12[];
extern  VTBL_ENTRY _ZTV9S19994C12[];
extern Class_Descriptor cd_S19994C9;
extern VTBL_ENTRY _ZTI8S19994C9[];
extern  VTBL_ENTRY _ZTV8S19994C9[];
extern Class_Descriptor cd_S19994C9;
extern VTBL_ENTRY _ZTI8S19994C9[];
extern  VTBL_ENTRY _ZTV8S19994C9[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C10;
extern VTBL_ENTRY _ZTI9S19994C10[];
extern  VTBL_ENTRY _ZTV9S19994C10[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C15;
extern VTBL_ENTRY _ZTI9S19994C15[];
extern  VTBL_ENTRY _ZTV9S19994C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C15[];
extern Class_Descriptor cd_S19994C2;
extern VTBL_ENTRY _ZTI8S19994C2[];
extern  VTBL_ENTRY _ZTV8S19994C2[];
extern Class_Descriptor cd_S19994C18;
extern VTBL_ENTRY _ZTI9S19994C18[];
extern  VTBL_ENTRY _ZTV9S19994C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C18[];
extern Class_Descriptor cd_S19994C21;
extern VTBL_ENTRY _ZTI9S19994C21[];
extern  VTBL_ENTRY _ZTV9S19994C21[];
static Base_Class bases_S19994C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19994C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19994C6,    ABISELECT(384,268), //bcp->offset
    62, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19994C9,    ABISELECT(376,264), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19994C6,    ABISELECT(392,272), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19994C10,    ABISELECT(392,272), //bcp->offset
    68, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19994C8,    ABISELECT(376,264), //bcp->offset
    51, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19994C2,    ABISELECT(16,4), //bcp->offset
    12, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19994C12,    ABISELECT(464,332), //bcp->offset
    82, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S19994C9,    ABISELECT(144,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19994C9,    ABISELECT(152,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(152,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19994C6,    ABISELECT(160,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19994C10,    ABISELECT(160,104), //bcp->offset
    36, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19994C6,    ABISELECT(232,164), //bcp->offset
    44, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19994C15,    ABISELECT(152,100), //bcp->offset
    27, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19994C2,    ABISELECT(240,168), //bcp->offset
    48, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19994C18,    ABISELECT(144,96), //bcp->offset
    15, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19994C21,    ABISELECT(496,356), //bcp->offset
    86, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19994C20[];
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C203v63Ev();
extern void _ZN9S19994C203v64Ev();
extern void _ZN8S19994C23v10Ev();
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN9S19994C183v54Ev();
extern void _ZN9S19994C183v55Ev();
extern void _ZN9S19994C183v56Ev();
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN9S19994C153v53Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN8S19994C23v10Ev();
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
extern void _ZN9S19994C123v21Ev();
extern void _ZN9S19994C213v57Ev();
extern void _ZN9S19994C213v58Ev();
extern void _ZN9S19994C213v59Ev();
extern void _ZN9S19994C213v60Ev();
extern void _ZN9S19994C213v61Ev();
extern void _ZN9S19994C213v62Ev();
static  VTBL_ENTRY vtc_S19994C20[] = {
  ABISELECT(496,356),
  ABISELECT(464,332),
  ABISELECT(392,272),
  ABISELECT(384,268),
  0,
  ABISELECT(376,264),
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C20[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C203v63Ev,
  (VTBL_ENTRY)&_ZN9S19994C203v64Ev,
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI9S19994C20[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
  ABISELECT(248,176),
  ABISELECT(-144,-96),
  ABISELECT(232,168),
  ABISELECT(240,172),
  ABISELECT(320,236),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI9S19994C20[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19994C183v54Ev,
  (VTBL_ENTRY)&_ZN9S19994C183v55Ev,
  (VTBL_ENTRY)&_ZN9S19994C183v56Ev,
  ABISELECT(240,172),
  ABISELECT(232,168),
  ABISELECT(-152,-100),
  ABISELECT(224,164),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI9S19994C20[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19994C153v53Ev,
  ABISELECT(-160,-104),
  (VTBL_ENTRY)&(_ZTI9S19994C20[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
  ABISELECT(-232,-164),
  (VTBL_ENTRY)&(_ZTI9S19994C20[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  ABISELECT(-240,-168),
  (VTBL_ENTRY)&(_ZTI9S19994C20[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
  0,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(-376,-264),
  ABISELECT(-376,-264),
  (VTBL_ENTRY)&(_ZTI9S19994C20[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
  0,
  0,
  ABISELECT(-384,-268),
  (VTBL_ENTRY)&(_ZTI9S19994C20[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-392,-272),
  (VTBL_ENTRY)&(_ZTI9S19994C20[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
  0,
  ABISELECT(-464,-332),
  (VTBL_ENTRY)&(_ZTI9S19994C20[0]),
  (VTBL_ENTRY)&_ZN9S19994C123v21Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-496,-356),
  (VTBL_ENTRY)&(_ZTI9S19994C20[0]),
  (VTBL_ENTRY)&_ZN9S19994C213v57Ev,
  (VTBL_ENTRY)&_ZN9S19994C213v58Ev,
  (VTBL_ENTRY)&_ZN9S19994C213v59Ev,
  (VTBL_ENTRY)&_ZN9S19994C213v60Ev,
  (VTBL_ENTRY)&_ZN9S19994C213v61Ev,
  (VTBL_ENTRY)&_ZN9S19994C213v62Ev,
};
extern VTBL_ENTRY _ZTV9S19994C20[];
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN9S19994C183v54Ev();
extern void _ZN9S19994C183v55Ev();
extern void _ZN9S19994C183v56Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C18__9S19994C20[] = {
  ABISELECT(248,176),
  ABISELECT(-144,-96),
  ABISELECT(232,168),
  ABISELECT(240,172),
  ABISELECT(320,236),
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C18[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19994C183v54Ev,
  (VTBL_ENTRY)&_ZN9S19994C183v55Ev,
  (VTBL_ENTRY)&_ZN9S19994C183v56Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN9S19994C153v53Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C159S19994C18__9S19994C20[] = {
  ABISELECT(240,172),
  ABISELECT(232,168),
  ABISELECT(-152,-100),
  ABISELECT(224,164),
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C15[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19994C153v53Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C8__9S19994C159S19994C18__9S19994C20[] = {
  0,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(-376,-264),
  ABISELECT(-224,-164),
  (VTBL_ENTRY)&(_ZTI9S19994C15[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C6__9S19994C159S19994C18__9S19994C20[] = {
  0,
  0,
  ABISELECT(-232,-168),
  (VTBL_ENTRY)&(_ZTI9S19994C15[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C10__9S19994C159S19994C18__9S19994C20[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-240,-172),
  (VTBL_ENTRY)&(_ZTI9S19994C15[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern void _ZN9S19994C123v21Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C12__9S19994C18__9S19994C20[] = {
  0,
  ABISELECT(-320,-236),
  (VTBL_ENTRY)&(_ZTI9S19994C18[0]),
  (VTBL_ENTRY)&_ZN9S19994C123v21Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C6__9S19994C18__9S19994C20[] = {
  0,
  0,
  ABISELECT(-240,-172),
  (VTBL_ENTRY)&(_ZTI9S19994C18[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN9S19994C153v53Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C15__9S19994C18__9S19994C20[] = {
  ABISELECT(240,172),
  ABISELECT(232,168),
  ABISELECT(-152,-100),
  ABISELECT(224,164),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19994C18[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19994C153v53Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C8__9S19994C18__9S19994C20[] = {
  0,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(-376,-264),
  ABISELECT(-232,-168),
  (VTBL_ENTRY)&(_ZTI9S19994C18[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C10__9S19994C18__9S19994C20[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-248,-176),
  (VTBL_ENTRY)&(_ZTI9S19994C18[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C8__9S19994C20[] = {
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(-376,-264),
  0,
  (VTBL_ENTRY)&(_ZTI8S19994C8[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C6__8S19994C8__9S19994C20[] = {
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19994C8[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C10__8S19994C8__9S19994C20[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19994C8[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
static  VTT_ENTRY vtt_S19994C20[] = {
  {&(_ZTV9S19994C20[8]),  8,100},
  {&(_tg__ZTV9S19994C18__9S19994C20[7]),  7,12},
  {&(_tg__ZTV9S19994C159S19994C18__9S19994C20[6]),  6,9},
  {&(_tg__ZTV8S19994C8__9S19994C159S19994C18__9S19994C20[8]),  8,11},
  {&(_tg__ZTV8S19994C6__9S19994C159S19994C18__9S19994C20[4]),  4,6},
  {&(_tg__ZTV9S19994C10__9S19994C159S19994C18__9S19994C20[8]),  8,14},
  {&(_tg__ZTV9S19994C12__9S19994C18__9S19994C20[3]),  3,4},
  {&(_tg__ZTV8S19994C6__9S19994C18__9S19994C20[4]),  4,6},
  {&(_tg__ZTV9S19994C15__9S19994C18__9S19994C20[6]),  6,9},
  {&(_tg__ZTV8S19994C8__9S19994C18__9S19994C20[8]),  8,11},
  {&(_tg__ZTV9S19994C10__9S19994C18__9S19994C20[8]),  8,14},
  {&(_ZTV9S19994C20[59]),  59,100},
  {&(_ZTV9S19994C20[66]),  66,100},
  {&(_ZTV9S19994C20[76]),  76,100},
  {&(_ZTV9S19994C20[22]),  22,100},
  {&(_ZTV9S19994C20[85]),  85,100},
  {&(_ZTV9S19994C20[33]),  33,100},
  {&(_ZTV9S19994C20[94]),  94,100},
  {&(_tg__ZTV8S19994C8__9S19994C20[5]),  5,8},
  {&(_tg__ZTV8S19994C6__8S19994C8__9S19994C20[4]),  4,6},
  {&(_tg__ZTV9S19994C10__8S19994C8__9S19994C20[8]),  8,14},
};
extern VTBL_ENTRY _ZTI9S19994C20[];
extern  VTBL_ENTRY _ZTV9S19994C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C20[];
Class_Descriptor cd_S19994C20 = {  "S19994C20", // class name
  bases_S19994C20, 19,
  &(vtc_S19994C20[0]), // expected_vtbl_contents
  &(vtt_S19994C20[0]), // expected_vtt_contents
  ABISELECT(512,364), // object size
  NSPAIRA(_ZTI9S19994C20),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19994C20),100, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19994C20),21, //virtual table table var
  17, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19994C19  : virtual S19994C12 , virtual S19994C6 , virtual S19994C8 , S19994C20 {
  long double s19994c19f0;
  __tsi64 s19994c19f1[8];
  virtual void  v65(); // _ZN9S19994C193v65Ev
  virtual void  v66(); // _ZN9S19994C193v66Ev
  virtual void  v67(); // _ZN9S19994C193v67Ev
  virtual void  v68(); // _ZN9S19994C193v68Ev
  virtual void  v69(); // _ZN9S19994C193v69Ev
  virtual void  v70(); // _ZN9S19994C193v70Ev
  virtual void  v71(); // _ZN9S19994C193v71Ev
  ~S19994C19(); // tgen
  S19994C19(); // tgen
};
//SIG(-1 S19994C19) C1{ VBC2{ v8 FC3{ m} Fi[4]} VBC4{ v9 v10} VBC5{ VBC3 VBC4 BC6{ v11 v12} VBC7{ BC4 v13 v14 v15 v16 Fi[5] Fp FL[4]} v17} BC8{ BC4 VBC5 BC9{ v18 Fp FD[7]} BC10{ VBC2 BC6 VBC4 BC11{ BC6 VBC5 BC3 BC7 BC4 v19} BC9 v20 v21 v22 Fi} VBC12{ v23 v24 v25 v26 v27 v28 FU13{ m Fi}} v29 v30} v1 v2 v3 v4 v5 v6 v7 FD FL[8]}


void  S19994C19 ::v65(){vfunc_called(this, "_ZN9S19994C193v65Ev");}
void  S19994C19 ::v66(){vfunc_called(this, "_ZN9S19994C193v66Ev");}
void  S19994C19 ::v67(){vfunc_called(this, "_ZN9S19994C193v67Ev");}
void  S19994C19 ::v68(){vfunc_called(this, "_ZN9S19994C193v68Ev");}
void  S19994C19 ::v69(){vfunc_called(this, "_ZN9S19994C193v69Ev");}
void  S19994C19 ::v70(){vfunc_called(this, "_ZN9S19994C193v70Ev");}
void  S19994C19 ::v71(){vfunc_called(this, "_ZN9S19994C193v71Ev");}
S19994C19 ::~S19994C19(){ note_dtor("S19994C19", this);} // tgen
S19994C19 ::S19994C19(){ note_ctor("S19994C19", this);} // tgen

static void Test_S19994C19()
{
  extern Class_Descriptor cd_S19994C19;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(39,111)];
    init_test(&cd_S19994C19, buf);
    S19994C19 *dp, &lv = *(dp=new (buf) S19994C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(608,440), "sizeof(S19994C19)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19994C19)");
    check_base_class_offset(lv, (S19994C12*), ABISELECT(464,340), "S19994C19");
    check_base_class_offset(lv, (S19994C12*)(S19994C18*)(S19994C20*), ABISELECT(464,340), "S19994C19");
    /*is_ambiguous_... S19994C19::S19994C6 */ AMB_check_base_class_offset(lv, (S19994C6*), ABISELECT(496,364), "S19994C19");
    /*is_ambiguous_... S19994C8::S19994C6 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C8*), ABISELECT(496,364), "S19994C19");
    /*is_ambiguous_... S19994C18::S19994C6 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C18*)(S19994C20*), ABISELECT(496,364), "S19994C19");
    check_base_class_offset(lv, (S77C13_nt*)(S19994C8*), 0, "S19994C19");
    check_base_class_offset(lv, (S19994C9*)(S19994C8*), ABISELECT(504,368), "S19994C19");
    /*is_ambiguous_... S19994C19::S19994C10 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C10*), ABISELECT(512,372), "S19994C19");
    check_base_class_offset(lv, (S19994C10*)(S19994C8*), ABISELECT(512,372), "S19994C19");
    check_base_class_offset(lv, (S19994C8*), ABISELECT(504,368), "S19994C19");
    check_base_class_offset(lv, (S19994C8*)(S19994C20*), ABISELECT(504,368), "S19994C19");
    check_base_class_offset(lv, (S19994C8*)(S19994C15*)(S19994C18*)(S19994C20*), ABISELECT(504,368), "S19994C19");
    /*is_ambiguous_... S19994C20::S19994C6 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C20*), 0, "S19994C19");
    /*is_ambiguous_... S19994C20::S19994C2 */ AMB_check_base_class_offset(lv, (S19994C2*)(S19994C20*), ABISELECT(16,4), "S19994C19");
    /*is_ambiguous_... S19994C18::S19994C9 */ AMB_check_base_class_offset(lv, (S19994C9*)(S19994C18*)(S19994C20*), ABISELECT(144,96), "S19994C19");
    /*is_ambiguous_... S19994C15::S19994C9 */ AMB_check_base_class_offset(lv, (S19994C9*)(S19994C15*)(S19994C18*)(S19994C20*), ABISELECT(152,100), "S19994C19");
    /*is_ambiguous_... S19994C15::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S19994C15*)(S19994C18*)(S19994C20*), ABISELECT(152,100), "S19994C19");
    /*is_ambiguous_... S19994C15::S19994C10 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C10*)(S19994C15*)(S19994C18*)(S19994C20*), ABISELECT(160,104), "S19994C19");
    /*is_ambiguous_... S19994C15::S19994C10 */ AMB_check_base_class_offset(lv, (S19994C10*)(S19994C15*)(S19994C18*)(S19994C20*), ABISELECT(160,104), "S19994C19");
    /*is_ambiguous_... S19994C15::S19994C6 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C15*)(S19994C18*)(S19994C20*), ABISELECT(232,164), "S19994C19");
    check_base_class_offset(lv, (S19994C15*)(S19994C18*)(S19994C20*), ABISELECT(152,100), "S19994C19");
    check_base_class_offset(lv, (S19994C2*)(S19994C18*)(S19994C20*), ABISELECT(240,168), "S19994C19");
    check_base_class_offset(lv, (S19994C18*)(S19994C20*), ABISELECT(144,96), "S19994C19");
    check_base_class_offset(lv, (S19994C21*)(S19994C20*), ABISELECT(584,432), "S19994C19");
    check_base_class_offset(lv, (S19994C20*), 0, "S19994C19");
    check_field_offset(lv, s19994c19f0, ABISELECT(384,264), "S19994C19.s19994c19f0");
    check_field_offset(lv, s19994c19f1, ABISELECT(400,276), "S19994C19.s19994c19f1");
    test_class_info(&lv, &cd_S19994C19);
    dp->~S19994C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19994C19(Test_S19994C19, "S19994C19", ABISELECT(608,440));

#else // __cplusplus

extern void _ZN9S19994C19C1Ev();
extern void _ZN9S19994C19D1Ev();
Name_Map name_map_S19994C19[] = {
  NSPAIR(_ZN9S19994C19C1Ev),
  NSPAIR(_ZN9S19994C19D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19994C12;
extern VTBL_ENTRY _ZTI9S19994C12[];
extern  VTBL_ENTRY _ZTV9S19994C12[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19994C9;
extern VTBL_ENTRY _ZTI8S19994C9[];
extern  VTBL_ENTRY _ZTV8S19994C9[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C10;
extern VTBL_ENTRY _ZTI9S19994C10[];
extern  VTBL_ENTRY _ZTV9S19994C10[];
extern Class_Descriptor cd_S19994C8;
extern VTBL_ENTRY _ZTI8S19994C8[];
extern  VTBL_ENTRY _ZTV8S19994C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19994C8[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C2;
extern VTBL_ENTRY _ZTI8S19994C2[];
extern  VTBL_ENTRY _ZTV8S19994C2[];
extern Class_Descriptor cd_S19994C9;
extern VTBL_ENTRY _ZTI8S19994C9[];
extern  VTBL_ENTRY _ZTV8S19994C9[];
extern Class_Descriptor cd_S19994C9;
extern VTBL_ENTRY _ZTI8S19994C9[];
extern  VTBL_ENTRY _ZTV8S19994C9[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C10;
extern VTBL_ENTRY _ZTI9S19994C10[];
extern  VTBL_ENTRY _ZTV9S19994C10[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C15;
extern VTBL_ENTRY _ZTI9S19994C15[];
extern  VTBL_ENTRY _ZTV9S19994C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C15[];
extern Class_Descriptor cd_S19994C2;
extern VTBL_ENTRY _ZTI8S19994C2[];
extern  VTBL_ENTRY _ZTV8S19994C2[];
extern Class_Descriptor cd_S19994C18;
extern VTBL_ENTRY _ZTI9S19994C18[];
extern  VTBL_ENTRY _ZTV9S19994C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C18[];
extern Class_Descriptor cd_S19994C21;
extern VTBL_ENTRY _ZTI9S19994C21[];
extern  VTBL_ENTRY _ZTV9S19994C21[];
extern Class_Descriptor cd_S19994C20;
extern VTBL_ENTRY _ZTI9S19994C20[];
extern  VTBL_ENTRY _ZTV9S19994C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C20[];
static Base_Class bases_S19994C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19994C12,    ABISELECT(464,340), //bcp->offset
    58, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19994C6,    ABISELECT(496,364), //bcp->offset
    62, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19994C9,    ABISELECT(504,368), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19994C6,    ABISELECT(512,372), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19994C10,    ABISELECT(512,372), //bcp->offset
    79, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19994C8,    ABISELECT(504,368), //bcp->offset
    68, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19994C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19994C2,    ABISELECT(16,4), //bcp->offset
    19, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19994C9,    ABISELECT(144,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19994C9,    ABISELECT(152,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(152,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19994C6,    ABISELECT(160,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19994C10,    ABISELECT(160,104), //bcp->offset
    43, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19994C6,    ABISELECT(232,164), //bcp->offset
    51, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19994C15,    ABISELECT(152,100), //bcp->offset
    34, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19994C2,    ABISELECT(240,168), //bcp->offset
    55, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19994C18,    ABISELECT(144,96), //bcp->offset
    22, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19994C21,    ABISELECT(584,432), //bcp->offset
    93, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S19994C20,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19994C19[];
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C203v63Ev();
extern void _ZN9S19994C203v64Ev();
extern void _ZN9S19994C193v65Ev();
extern void _ZN9S19994C193v66Ev();
extern void _ZN9S19994C193v67Ev();
extern void _ZN9S19994C193v68Ev();
extern void _ZN9S19994C193v69Ev();
extern void _ZN9S19994C193v70Ev();
extern void _ZN9S19994C193v71Ev();
extern void _ZN8S19994C23v10Ev();
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN9S19994C183v54Ev();
extern void _ZN9S19994C183v55Ev();
extern void _ZN9S19994C183v56Ev();
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN9S19994C153v53Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN8S19994C23v10Ev();
extern void _ZN9S19994C123v21Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
extern void _ZN9S19994C213v57Ev();
extern void _ZN9S19994C213v58Ev();
extern void _ZN9S19994C213v59Ev();
extern void _ZN9S19994C213v60Ev();
extern void _ZN9S19994C213v61Ev();
extern void _ZN9S19994C213v62Ev();
static  VTBL_ENTRY vtc_S19994C19[] = {
  ABISELECT(584,432),
  ABISELECT(464,340),
  ABISELECT(512,372),
  ABISELECT(496,364),
  0,
  ABISELECT(504,368),
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C19[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C203v63Ev,
  (VTBL_ENTRY)&_ZN9S19994C203v64Ev,
  (VTBL_ENTRY)&_ZN9S19994C193v65Ev,
  (VTBL_ENTRY)&_ZN9S19994C193v66Ev,
  (VTBL_ENTRY)&_ZN9S19994C193v67Ev,
  (VTBL_ENTRY)&_ZN9S19994C193v68Ev,
  (VTBL_ENTRY)&_ZN9S19994C193v69Ev,
  (VTBL_ENTRY)&_ZN9S19994C193v70Ev,
  (VTBL_ENTRY)&_ZN9S19994C193v71Ev,
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI9S19994C19[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
  ABISELECT(368,276),
  ABISELECT(-144,-96),
  ABISELECT(360,272),
  ABISELECT(352,268),
  ABISELECT(320,244),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI9S19994C19[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19994C183v54Ev,
  (VTBL_ENTRY)&_ZN9S19994C183v55Ev,
  (VTBL_ENTRY)&_ZN9S19994C183v56Ev,
  ABISELECT(360,272),
  ABISELECT(344,264),
  ABISELECT(-152,-100),
  ABISELECT(352,268),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI9S19994C19[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19994C153v53Ev,
  ABISELECT(-160,-104),
  (VTBL_ENTRY)&(_ZTI9S19994C19[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
  ABISELECT(-232,-164),
  (VTBL_ENTRY)&(_ZTI9S19994C19[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  ABISELECT(-240,-168),
  (VTBL_ENTRY)&(_ZTI9S19994C19[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
  0,
  ABISELECT(-464,-340),
  (VTBL_ENTRY)&(_ZTI9S19994C19[0]),
  (VTBL_ENTRY)&_ZN9S19994C123v21Ev,
  0,
  0,
  ABISELECT(-496,-364),
  (VTBL_ENTRY)&(_ZTI9S19994C19[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  0,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  ABISELECT(-504,-368),
  ABISELECT(-504,-368),
  (VTBL_ENTRY)&(_ZTI9S19994C19[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-512,-372),
  (VTBL_ENTRY)&(_ZTI9S19994C19[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-584,-432),
  (VTBL_ENTRY)&(_ZTI9S19994C19[0]),
  (VTBL_ENTRY)&_ZN9S19994C213v57Ev,
  (VTBL_ENTRY)&_ZN9S19994C213v58Ev,
  (VTBL_ENTRY)&_ZN9S19994C213v59Ev,
  (VTBL_ENTRY)&_ZN9S19994C213v60Ev,
  (VTBL_ENTRY)&_ZN9S19994C213v61Ev,
  (VTBL_ENTRY)&_ZN9S19994C213v62Ev,
};
extern VTBL_ENTRY _ZTV9S19994C19[];
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C203v63Ev();
extern void _ZN9S19994C203v64Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C20__9S19994C19[] = {
  ABISELECT(584,432),
  ABISELECT(464,340),
  ABISELECT(512,372),
  ABISELECT(496,364),
  0,
  ABISELECT(504,368),
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C20[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C203v63Ev,
  (VTBL_ENTRY)&_ZN9S19994C203v64Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN9S19994C183v54Ev();
extern void _ZN9S19994C183v55Ev();
extern void _ZN9S19994C183v56Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C189S19994C20__9S19994C19[] = {
  ABISELECT(368,276),
  ABISELECT(-144,-96),
  ABISELECT(360,272),
  ABISELECT(352,268),
  ABISELECT(320,244),
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C18[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19994C183v54Ev,
  (VTBL_ENTRY)&_ZN9S19994C183v55Ev,
  (VTBL_ENTRY)&_ZN9S19994C183v56Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN9S19994C153v53Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C159S19994C189S19994C20__9S19994C19[] = {
  ABISELECT(360,272),
  ABISELECT(344,264),
  ABISELECT(-152,-100),
  ABISELECT(352,268),
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C15[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19994C153v53Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C8__9S19994C159S19994C189S19994C20__9S19994C19[] = {
  0,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  ABISELECT(-504,-368),
  ABISELECT(-352,-268),
  (VTBL_ENTRY)&(_ZTI9S19994C15[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C6__9S19994C159S19994C189S19994C20__9S19994C19[] = {
  0,
  0,
  ABISELECT(-344,-264),
  (VTBL_ENTRY)&(_ZTI9S19994C15[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C10__9S19994C159S19994C189S19994C20__9S19994C19[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-360,-272),
  (VTBL_ENTRY)&(_ZTI9S19994C15[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern void _ZN9S19994C123v21Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C12__9S19994C189S19994C20__9S19994C19[] = {
  0,
  ABISELECT(-320,-244),
  (VTBL_ENTRY)&(_ZTI9S19994C18[0]),
  (VTBL_ENTRY)&_ZN9S19994C123v21Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C6__9S19994C189S19994C20__9S19994C19[] = {
  0,
  0,
  ABISELECT(-352,-268),
  (VTBL_ENTRY)&(_ZTI9S19994C18[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN9S19994C153v53Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C15__9S19994C189S19994C20__9S19994C19[] = {
  ABISELECT(360,272),
  ABISELECT(344,264),
  ABISELECT(-152,-100),
  ABISELECT(352,268),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19994C18[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19994C153v53Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C8__9S19994C189S19994C20__9S19994C19[] = {
  0,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  ABISELECT(-504,-368),
  ABISELECT(-360,-272),
  (VTBL_ENTRY)&(_ZTI9S19994C18[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C10__9S19994C189S19994C20__9S19994C19[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-368,-276),
  (VTBL_ENTRY)&(_ZTI9S19994C18[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C8__9S19994C20__9S19994C19[] = {
  0,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  ABISELECT(-504,-368),
  ABISELECT(-504,-368),
  (VTBL_ENTRY)&(_ZTI9S19994C20[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C6__A1__9S19994C20__9S19994C19[] = {
  0,
  0,
  ABISELECT(-496,-364),
  (VTBL_ENTRY)&(_ZTI9S19994C20[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C10__9S19994C20__9S19994C19[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-512,-372),
  (VTBL_ENTRY)&(_ZTI9S19994C20[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN9S19994C183v54Ev();
extern void _ZN9S19994C183v55Ev();
extern void _ZN9S19994C183v56Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C18__9S19994C20__9S19994C19[] = {
  ABISELECT(368,276),
  ABISELECT(-144,-96),
  ABISELECT(360,272),
  ABISELECT(352,268),
  ABISELECT(320,244),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI9S19994C20[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19994C183v54Ev,
  (VTBL_ENTRY)&_ZN9S19994C183v55Ev,
  (VTBL_ENTRY)&_ZN9S19994C183v56Ev,
};
extern void _ZN9S19994C123v21Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C12__9S19994C20__9S19994C19[] = {
  0,
  ABISELECT(-464,-340),
  (VTBL_ENTRY)&(_ZTI9S19994C20[0]),
  (VTBL_ENTRY)&_ZN9S19994C123v21Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN9S19994C153v53Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C159S19994C18__9S19994C20__9S19994C19[] = {
  ABISELECT(360,272),
  ABISELECT(344,264),
  ABISELECT(-152,-100),
  ABISELECT(352,268),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI9S19994C20[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19994C153v53Ev,
};
extern void _ZN9S19994C213v57Ev();
extern void _ZN9S19994C213v58Ev();
extern void _ZN9S19994C213v59Ev();
extern void _ZN9S19994C213v60Ev();
extern void _ZN9S19994C213v61Ev();
extern void _ZN9S19994C213v62Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C21__9S19994C20__9S19994C19[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-584,-432),
  (VTBL_ENTRY)&(_ZTI9S19994C20[0]),
  (VTBL_ENTRY)&_ZN9S19994C213v57Ev,
  (VTBL_ENTRY)&_ZN9S19994C213v58Ev,
  (VTBL_ENTRY)&_ZN9S19994C213v59Ev,
  (VTBL_ENTRY)&_ZN9S19994C213v60Ev,
  (VTBL_ENTRY)&_ZN9S19994C213v61Ev,
  (VTBL_ENTRY)&_ZN9S19994C213v62Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C8__9S19994C19[] = {
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  ABISELECT(-504,-368),
  0,
  (VTBL_ENTRY)&(_ZTI8S19994C8[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C6__8S19994C8__9S19994C19[] = {
  0,
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S19994C8[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C10__8S19994C8__9S19994C19[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19994C8[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
static  VTT_ENTRY vtt_S19994C19[] = {
  {&(_ZTV9S19994C19[8]),  8,107},
  {&(_tg__ZTV9S19994C20__9S19994C19[8]),  8,12},
  {&(_tg__ZTV9S19994C189S19994C20__9S19994C19[7]),  7,12},
  {&(_tg__ZTV9S19994C159S19994C189S19994C20__9S19994C19[6]),  6,9},
  {&(_tg__ZTV8S19994C8__9S19994C159S19994C189S19994C20__9S19994C19[8]),  8,11},
  {&(_tg__ZTV8S19994C6__9S19994C159S19994C189S19994C20__9S19994C19[4]),  4,6},
  {&(_tg__ZTV9S19994C10__9S19994C159S19994C189S19994C20__9S19994C19[8]),  8,14},
  {&(_tg__ZTV9S19994C12__9S19994C189S19994C20__9S19994C19[3]),  3,4},
  {&(_tg__ZTV8S19994C6__9S19994C189S19994C20__9S19994C19[4]),  4,6},
  {&(_tg__ZTV9S19994C15__9S19994C189S19994C20__9S19994C19[6]),  6,9},
  {&(_tg__ZTV8S19994C8__9S19994C189S19994C20__9S19994C19[8]),  8,11},
  {&(_tg__ZTV9S19994C10__9S19994C189S19994C20__9S19994C19[8]),  8,14},
  {&(_tg__ZTV8S19994C8__9S19994C20__9S19994C19[8]),  8,11},
  {&(_tg__ZTV8S19994C6__A1__9S19994C20__9S19994C19[4]),  4,6},
  {&(_tg__ZTV9S19994C10__9S19994C20__9S19994C19[8]),  8,14},
  {&(_tg__ZTV9S19994C18__9S19994C20__9S19994C19[7]),  7,12},
  {&(_tg__ZTV9S19994C12__9S19994C20__9S19994C19[3]),  3,4},
  {&(_tg__ZTV9S19994C159S19994C18__9S19994C20__9S19994C19[6]),  6,9},
  {&(_tg__ZTV9S19994C21__9S19994C20__9S19994C19[8]),  8,14},
  {&(_ZTV9S19994C19[61]),  61,107},
  {&(_ZTV9S19994C19[66]),  66,107},
  {&(_ZTV9S19994C19[76]),  76,107},
  {&(_ZTV9S19994C19[87]),  87,107},
  {&(_ZTV9S19994C19[29]),  29,107},
  {&(_ZTV9S19994C19[40]),  40,107},
  {&(_ZTV9S19994C19[101]),  101,107},
  {&(_tg__ZTV8S19994C8__9S19994C19[5]),  5,8},
  {&(_tg__ZTV8S19994C6__8S19994C8__9S19994C19[4]),  4,6},
  {&(_tg__ZTV9S19994C10__8S19994C8__9S19994C19[8]),  8,14},
};
extern VTBL_ENTRY _ZTI9S19994C19[];
extern  VTBL_ENTRY _ZTV9S19994C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C19[];
Class_Descriptor cd_S19994C19 = {  "S19994C19", // class name
  bases_S19994C19, 20,
  &(vtc_S19994C19[0]), // expected_vtbl_contents
  &(vtt_S19994C19[0]), // expected_vtt_contents
  ABISELECT(608,440), // object size
  NSPAIRA(_ZTI9S19994C19),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19994C19),107, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19994C19),29, //virtual table table var
  18, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19994C1  : virtual S19994C2 , S19994C3 , S19994C16 , S19994C14 , S19994C19 {
  __tsi64 s19994c1f0;
  virtual  ~S19994C1(); // _ZN8S19994C1D2Ev
  virtual void  v1(); // _ZN8S19994C12v1Ev
  virtual void  v2(); // _ZN8S19994C12v2Ev
  virtual void  v3(); // _ZN8S19994C12v3Ev
  virtual void  v4(); // _ZN8S19994C12v4Ev
  virtual void  v5(); // _ZN8S19994C12v5Ev
  virtual void  v6(); // _ZN8S19994C12v6Ev
  virtual void  v7(); // _ZN8S19994C12v7Ev
  virtual void  v8(); // _ZN8S19994C12v8Ev
  virtual void  v9(); // _ZN8S19994C12v9Ev
  S19994C1(); // tgen
};
//SIG(1 S19994C1) C1{ VBC2{ v10 Fp FD[7]} BC3{ BC4{ m} VBC5{ VBC6{ v11 v12} BC7{ BC8{ VBC4 VBC6 BC9{ v13 v14} VBC10{ BC6 v15 v16 v17 v18 Fi[5] Fp FL[4]} v19} VBC2 vd v20 Fp} BC11{ VBC9 VBC4 BC12{ v21 FC4 Fi[4]} BC10 v22 v23 v24} VBC12 VBC13{ VBC14{ VBC4 BC2 BC10 v25 v26 v27 v28 v29 Fi[10] FC15{ BC9 VBC8 BC4 BC10 BC6 v53}} v30 v31 v32 Fi[2]} v33 v34 v35 v36 v37 v38 v39 v40 Fp} vd v41 v42 v43 Fi} BC16{ VBC11 VBC17{ VBC11 v44 v45 v46 v47 FC18{ VBC12 BC9 VBC6 BC15 BC2 v54 v55 v56 Fi} FC10 Fi FC7} BC13 BC7 vd v48 v49 v50 v51 v52 Fi:13} BC14 BC19{ VBC12 VBC6 VBC8 BC20{ BC6 VBC8 BC2 BC18 VBC21{ v57 v58 v59 v60 v61 v62 FU22{ m Fi}} v63 v64} v65 v66 v67 v68 v69 v70 v71 FD FL[8]} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 FL}


 S19994C1 ::~S19994C1(){ note_dtor("S19994C1", this);}
void  S19994C1 ::v1(){vfunc_called(this, "_ZN8S19994C12v1Ev");}
void  S19994C1 ::v2(){vfunc_called(this, "_ZN8S19994C12v2Ev");}
void  S19994C1 ::v3(){vfunc_called(this, "_ZN8S19994C12v3Ev");}
void  S19994C1 ::v4(){vfunc_called(this, "_ZN8S19994C12v4Ev");}
void  S19994C1 ::v5(){vfunc_called(this, "_ZN8S19994C12v5Ev");}
void  S19994C1 ::v6(){vfunc_called(this, "_ZN8S19994C12v6Ev");}
void  S19994C1 ::v7(){vfunc_called(this, "_ZN8S19994C12v7Ev");}
void  S19994C1 ::v8(){vfunc_called(this, "_ZN8S19994C12v8Ev");}
void  S19994C1 ::v9(){vfunc_called(this, "_ZN8S19994C12v9Ev");}
S19994C1 ::S19994C1(){ note_ctor("S19994C1", this);} // tgen

static void Test_S19994C1()
{
  extern Class_Descriptor cd_S19994C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(162,478)];
    init_test(&cd_S19994C1, buf);
    S19994C1 *dp, &lv = *(dp=new (buf) S19994C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2576,1908), "sizeof(S19994C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19994C1)");
    /*is_ambiguous_... S19994C1::S19994C2 */ AMB_check_base_class_offset(lv, (S19994C2*), ABISELECT(960,708), "S19994C1");
    check_base_class_offset(lv, (S19994C2*)(S19994C7*)(S19994C5*), ABISELECT(960,708), "S19994C1");
    check_base_class_offset(lv, (S19994C2*)(S19994C7*)(S19994C16*), ABISELECT(960,708), "S19994C1");
    /*is_ambiguous_... S19994C3::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S19994C3*), 0, "S19994C1");
    /*is_ambiguous_... S19994C5::S19994C6 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C5*), 0, "S19994C1");
    /*is_ambiguous_... S19994C8::S19994C6 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C8*)(S19994C7*)(S19994C5*), 0, "S19994C1");
    /*is_ambiguous_... S19994C8::S19994C6 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C8*)(S19994C7*)(S19994C16*), 0, "S19994C1");
    /*is_ambiguous_... S19994C19::S19994C6 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C19*), 0, "S19994C1");
    /*is_ambiguous_... S19994C1::S19994C8 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C8*), 0, "S19994C1");
    /*is_ambiguous_... S19994C18::S19994C6 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C18*)(S19994C20*)(S19994C19*), 0, "S19994C1");
    check_base_class_offset(lv, (S77C13_nt*)(S19994C8*)(S19994C7*)(S19994C5*), ABISELECT(1216,896), "S19994C1");
    check_base_class_offset(lv, (S77C13_nt*)(S19994C11*)(S19994C5*), ABISELECT(1216,896), "S19994C1");
    /*is_ambiguous_... S19994C1::S19994C14 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S19994C14*), ABISELECT(1216,896), "S19994C1");
    /*is_ambiguous_... S19994C1::S19994C11 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S19994C11*), ABISELECT(1216,896), "S19994C1");
    check_base_class_offset(lv, (S77C13_nt*)(S19994C8*)(S19994C7*)(S19994C16*), ABISELECT(1216,896), "S19994C1");
    /*is_ambiguous_... S19994C1::S19994C14 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S19994C14*), ABISELECT(1216,896), "S19994C1");
    /*is_ambiguous_... S19994C1::S19994C8 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S19994C8*), ABISELECT(1216,896), "S19994C1");
    check_base_class_offset(lv, (S19994C9*)(S19994C8*)(S19994C7*)(S19994C5*), ABISELECT(1088,800), "S19994C1");
    /*is_ambiguous_... S19994C1::S19994C10 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C10*), ABISELECT(1216,896), "S19994C1");
    check_base_class_offset(lv, (S19994C10*)(S19994C8*)(S19994C7*)(S19994C5*), ABISELECT(1216,896), "S19994C1");
    check_base_class_offset(lv, (S19994C10*)(S19994C8*)(S19994C7*)(S19994C16*), ABISELECT(1216,896), "S19994C1");
    /*is_ambiguous_... S19994C1::S19994C8 */ AMB_check_base_class_offset(lv, (S19994C10*)(S19994C8*), ABISELECT(1216,896), "S19994C1");
    check_base_class_offset(lv, (S19994C8*)(S19994C7*)(S19994C5*), ABISELECT(1088,800), "S19994C1");
    check_base_class_offset(lv, (S19994C7*)(S19994C5*), ABISELECT(1088,800), "S19994C1");
    check_base_class_offset(lv, (S19994C9*)(S19994C11*)(S19994C5*), ABISELECT(1872,1404), "S19994C1");
    /*is_ambiguous_... S19994C1::S19994C11 */ AMB_check_base_class_offset(lv, (S19994C9*)(S19994C11*), ABISELECT(1872,1404), "S19994C1");
    check_base_class_offset(lv, (S19994C12*)(S19994C11*)(S19994C5*), ABISELECT(1104,808), "S19994C1");
    check_base_class_offset(lv, (S19994C6*)(S19994C10*)(S19994C11*)(S19994C5*), ABISELECT(1136,832), "S19994C1");
    check_base_class_offset(lv, (S19994C10*)(S19994C11*)(S19994C5*), ABISELECT(1136,832), "S19994C1");
    check_base_class_offset(lv, (S19994C11*)(S19994C5*), ABISELECT(1104,808), "S19994C1");
    /*is_ambiguous_... S19994C5::S19994C12 */ AMB_check_base_class_offset(lv, (S19994C12*)(S19994C5*), ABISELECT(1288,956), "S19994C1");
    check_base_class_offset(lv, (S19994C12*)(S19994C19*), ABISELECT(1288,956), "S19994C1");
    check_base_class_offset(lv, (S19994C12*)(S19994C18*)(S19994C20*)(S19994C19*), ABISELECT(1288,956), "S19994C1");
    /*is_ambiguous_... S19994C1::S19994C14 */ AMB_check_base_class_offset(lv, (S19994C2*)(S19994C14*), ABISELECT(1344,992), "S19994C1");
    /*is_ambiguous_... S19994C1::S19994C14 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C10*)(S19994C14*), ABISELECT(1472,1084), "S19994C1");
    /*is_ambiguous_... S19994C1::S19994C14 */ AMB_check_base_class_offset(lv, (S19994C10*)(S19994C14*), ABISELECT(1472,1084), "S19994C1");
    /*is_ambiguous_... S19994C1::S19994C13 */ AMB_check_base_class_offset(lv, (S19994C14*)(S19994C13*), ABISELECT(1344,992), "S19994C1");
    check_base_class_offset(lv, (S19994C14*)(S19994C13*)(S19994C16*), ABISELECT(1344,992), "S19994C1");
    check_base_class_offset(lv, (S19994C13*)(S19994C5*), ABISELECT(1320,980), "S19994C1");
    check_base_class_offset(lv, (S19994C5*)(S19994C3*), ABISELECT(1088,800), "S19994C1");
    check_base_class_offset(lv, (S19994C3*), 0, "S19994C1");
    /*is_ambiguous_... S19994C1::S19994C11 */ AMB_check_base_class_offset(lv, (S19994C12*)(S19994C11*), ABISELECT(1760,1320), "S19994C1");
    /*is_ambiguous_... S19994C1::S19994C11 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C10*)(S19994C11*), ABISELECT(1792,1344), "S19994C1");
    /*is_ambiguous_... S19994C1::S19994C11 */ AMB_check_base_class_offset(lv, (S19994C10*)(S19994C11*), ABISELECT(1792,1344), "S19994C1");
    check_base_class_offset(lv, (S19994C11*)(S19994C16*), ABISELECT(1760,1320), "S19994C1");
    check_base_class_offset(lv, (S19994C11*)(S19994C17*), ABISELECT(1760,1320), "S19994C1");
    check_base_class_offset(lv, (S19994C17*)(S19994C16*), ABISELECT(1872,1404), "S19994C1");
    check_base_class_offset(lv, (S19994C13*)(S19994C16*), ABISELECT(16,8), "S19994C1");
    check_base_class_offset(lv, (S19994C9*)(S19994C8*)(S19994C7*)(S19994C16*), ABISELECT(32,20), "S19994C1");
    check_base_class_offset(lv, (S19994C8*)(S19994C7*)(S19994C16*), ABISELECT(32,20), "S19994C1");
    check_base_class_offset(lv, (S19994C7*)(S19994C16*), ABISELECT(32,20), "S19994C1");
    check_base_class_offset(lv, (S19994C16*), ABISELECT(16,8), "S19994C1");
    /*is_ambiguous_... S19994C1::S19994C14 */ AMB_check_base_class_offset(lv, (S19994C2*)(S19994C14*), ABISELECT(64,32), "S19994C1");
    /*is_ambiguous_... S19994C1::S19994C14 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C10*)(S19994C14*), ABISELECT(192,124), "S19994C1");
    /*is_ambiguous_... S19994C1::S19994C14 */ AMB_check_base_class_offset(lv, (S19994C10*)(S19994C14*), ABISELECT(192,124), "S19994C1");
    /*is_ambiguous_... S19994C1::S19994C14 */ AMB_check_base_class_offset(lv, (S19994C14*), ABISELECT(64,32), "S19994C1");
    /*is_ambiguous_... S19994C1::S19994C8 */ AMB_check_base_class_offset(lv, (S19994C9*)(S19994C8*), ABISELECT(2544,1896), "S19994C1");
    check_base_class_offset(lv, (S19994C8*)(S19994C19*), ABISELECT(2544,1896), "S19994C1");
    check_base_class_offset(lv, (S19994C8*)(S19994C20*)(S19994C19*), ABISELECT(2544,1896), "S19994C1");
    check_base_class_offset(lv, (S19994C8*)(S19994C15*)(S19994C18*)(S19994C20*)(S19994C19*), ABISELECT(2544,1896), "S19994C1");
    /*is_ambiguous_... S19994C20::S19994C6 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C20*)(S19994C19*), ABISELECT(480,360), "S19994C1");
    /*is_ambiguous_... S19994C20::S19994C2 */ AMB_check_base_class_offset(lv, (S19994C2*)(S19994C20*)(S19994C19*), ABISELECT(496,364), "S19994C1");
    /*is_ambiguous_... S19994C18::S19994C9 */ AMB_check_base_class_offset(lv, (S19994C9*)(S19994C18*)(S19994C20*)(S19994C19*), ABISELECT(624,456), "S19994C1");
    /*is_ambiguous_... S19994C15::S19994C9 */ AMB_check_base_class_offset(lv, (S19994C9*)(S19994C15*)(S19994C18*)(S19994C20*)(S19994C19*), ABISELECT(632,460), "S19994C1");
    /*is_ambiguous_... S19994C15::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S19994C15*)(S19994C18*)(S19994C20*)(S19994C19*), ABISELECT(632,460), "S19994C1");
    /*is_ambiguous_... S19994C15::S19994C10 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C10*)(S19994C15*)(S19994C18*)(S19994C20*)(S19994C19*), ABISELECT(640,464), "S19994C1");
    /*is_ambiguous_... S19994C15::S19994C10 */ AMB_check_base_class_offset(lv, (S19994C10*)(S19994C15*)(S19994C18*)(S19994C20*)(S19994C19*), ABISELECT(640,464), "S19994C1");
    /*is_ambiguous_... S19994C15::S19994C6 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C15*)(S19994C18*)(S19994C20*)(S19994C19*), ABISELECT(712,524), "S19994C1");
    check_base_class_offset(lv, (S19994C15*)(S19994C18*)(S19994C20*)(S19994C19*), ABISELECT(632,460), "S19994C1");
    check_base_class_offset(lv, (S19994C2*)(S19994C18*)(S19994C20*)(S19994C19*), ABISELECT(720,528), "S19994C1");
    check_base_class_offset(lv, (S19994C18*)(S19994C20*)(S19994C19*), ABISELECT(624,456), "S19994C1");
    check_base_class_offset(lv, (S19994C21*)(S19994C20*)(S19994C19*), ABISELECT(2552,1900), "S19994C1");
    check_base_class_offset(lv, (S19994C20*)(S19994C19*), ABISELECT(480,360), "S19994C1");
    check_base_class_offset(lv, (S19994C19*), ABISELECT(480,360), "S19994C1");
    check_field_offset(lv, s19994c1f0, ABISELECT(944,700), "S19994C1.s19994c1f0");
    test_class_info(&lv, &cd_S19994C1);
    dp->~S19994C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19994C1(Test_S19994C1, "S19994C1", ABISELECT(2576,1908));

#else // __cplusplus

extern void _ZN8S19994C1C1Ev();
extern void _ZN8S19994C1D2Ev();
Name_Map name_map_S19994C1[] = {
  NSPAIR(_ZN8S19994C1C1Ev),
  NSPAIR(_ZN8S19994C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19994C2;
extern VTBL_ENTRY _ZTI8S19994C2[];
extern  VTBL_ENTRY _ZTV8S19994C2[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19994C9;
extern VTBL_ENTRY _ZTI8S19994C9[];
extern  VTBL_ENTRY _ZTV8S19994C9[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C10;
extern VTBL_ENTRY _ZTI9S19994C10[];
extern  VTBL_ENTRY _ZTV9S19994C10[];
extern Class_Descriptor cd_S19994C8;
extern VTBL_ENTRY _ZTI8S19994C8[];
extern  VTBL_ENTRY _ZTV8S19994C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19994C8[];
extern Class_Descriptor cd_S19994C7;
extern VTBL_ENTRY _ZTI8S19994C7[];
extern  VTBL_ENTRY _ZTV8S19994C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19994C7[];
extern Class_Descriptor cd_S19994C9;
extern VTBL_ENTRY _ZTI8S19994C9[];
extern  VTBL_ENTRY _ZTV8S19994C9[];
extern Class_Descriptor cd_S19994C12;
extern VTBL_ENTRY _ZTI9S19994C12[];
extern  VTBL_ENTRY _ZTV9S19994C12[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C10;
extern VTBL_ENTRY _ZTI9S19994C10[];
extern  VTBL_ENTRY _ZTV9S19994C10[];
extern Class_Descriptor cd_S19994C11;
extern VTBL_ENTRY _ZTI9S19994C11[];
extern  VTBL_ENTRY _ZTV9S19994C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C11[];
extern Class_Descriptor cd_S19994C12;
extern VTBL_ENTRY _ZTI9S19994C12[];
extern  VTBL_ENTRY _ZTV9S19994C12[];
extern Class_Descriptor cd_S19994C2;
extern VTBL_ENTRY _ZTI8S19994C2[];
extern  VTBL_ENTRY _ZTV8S19994C2[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C10;
extern VTBL_ENTRY _ZTI9S19994C10[];
extern  VTBL_ENTRY _ZTV9S19994C10[];
extern Class_Descriptor cd_S19994C14;
extern VTBL_ENTRY _ZTI9S19994C14[];
extern  VTBL_ENTRY _ZTV9S19994C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C14[];
extern Class_Descriptor cd_S19994C13;
extern VTBL_ENTRY _ZTI9S19994C13[];
extern  VTBL_ENTRY _ZTV9S19994C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C13[];
extern Class_Descriptor cd_S19994C5;
extern VTBL_ENTRY _ZTI8S19994C5[];
extern  VTBL_ENTRY _ZTV8S19994C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19994C5[];
extern Class_Descriptor cd_S19994C3;
extern VTBL_ENTRY _ZTI8S19994C3[];
extern  VTBL_ENTRY _ZTV8S19994C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19994C3[];
extern Class_Descriptor cd_S19994C12;
extern VTBL_ENTRY _ZTI9S19994C12[];
extern  VTBL_ENTRY _ZTV9S19994C12[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C10;
extern VTBL_ENTRY _ZTI9S19994C10[];
extern  VTBL_ENTRY _ZTV9S19994C10[];
extern Class_Descriptor cd_S19994C11;
extern VTBL_ENTRY _ZTI9S19994C11[];
extern  VTBL_ENTRY _ZTV9S19994C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C11[];
extern Class_Descriptor cd_S19994C17;
extern VTBL_ENTRY _ZTI9S19994C17[];
extern  VTBL_ENTRY _ZTV9S19994C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C17[];
extern Class_Descriptor cd_S19994C13;
extern VTBL_ENTRY _ZTI9S19994C13[];
extern  VTBL_ENTRY _ZTV9S19994C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C13[];
extern Class_Descriptor cd_S19994C9;
extern VTBL_ENTRY _ZTI8S19994C9[];
extern  VTBL_ENTRY _ZTV8S19994C9[];
extern Class_Descriptor cd_S19994C8;
extern VTBL_ENTRY _ZTI8S19994C8[];
extern  VTBL_ENTRY _ZTV8S19994C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19994C8[];
extern Class_Descriptor cd_S19994C7;
extern VTBL_ENTRY _ZTI8S19994C7[];
extern  VTBL_ENTRY _ZTV8S19994C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19994C7[];
extern Class_Descriptor cd_S19994C16;
extern VTBL_ENTRY _ZTI9S19994C16[];
extern  VTBL_ENTRY _ZTV9S19994C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C16[];
extern Class_Descriptor cd_S19994C2;
extern VTBL_ENTRY _ZTI8S19994C2[];
extern  VTBL_ENTRY _ZTV8S19994C2[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C10;
extern VTBL_ENTRY _ZTI9S19994C10[];
extern  VTBL_ENTRY _ZTV9S19994C10[];
extern Class_Descriptor cd_S19994C14;
extern VTBL_ENTRY _ZTI9S19994C14[];
extern  VTBL_ENTRY _ZTV9S19994C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C14[];
extern Class_Descriptor cd_S19994C9;
extern VTBL_ENTRY _ZTI8S19994C9[];
extern  VTBL_ENTRY _ZTV8S19994C9[];
extern Class_Descriptor cd_S19994C8;
extern VTBL_ENTRY _ZTI8S19994C8[];
extern  VTBL_ENTRY _ZTV8S19994C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19994C8[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C2;
extern VTBL_ENTRY _ZTI8S19994C2[];
extern  VTBL_ENTRY _ZTV8S19994C2[];
extern Class_Descriptor cd_S19994C9;
extern VTBL_ENTRY _ZTI8S19994C9[];
extern  VTBL_ENTRY _ZTV8S19994C9[];
extern Class_Descriptor cd_S19994C9;
extern VTBL_ENTRY _ZTI8S19994C9[];
extern  VTBL_ENTRY _ZTV8S19994C9[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C10;
extern VTBL_ENTRY _ZTI9S19994C10[];
extern  VTBL_ENTRY _ZTV9S19994C10[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C15;
extern VTBL_ENTRY _ZTI9S19994C15[];
extern  VTBL_ENTRY _ZTV9S19994C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C15[];
extern Class_Descriptor cd_S19994C2;
extern VTBL_ENTRY _ZTI8S19994C2[];
extern  VTBL_ENTRY _ZTV8S19994C2[];
extern Class_Descriptor cd_S19994C18;
extern VTBL_ENTRY _ZTI9S19994C18[];
extern  VTBL_ENTRY _ZTV9S19994C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C18[];
extern Class_Descriptor cd_S19994C21;
extern VTBL_ENTRY _ZTI9S19994C21[];
extern  VTBL_ENTRY _ZTV9S19994C21[];
extern Class_Descriptor cd_S19994C20;
extern VTBL_ENTRY _ZTI9S19994C20[];
extern  VTBL_ENTRY _ZTV9S19994C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C20[];
extern Class_Descriptor cd_S19994C19;
extern VTBL_ENTRY _ZTI9S19994C19[];
extern  VTBL_ENTRY _ZTV9S19994C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C19[];
static Base_Class bases_S19994C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19994C2,    ABISELECT(960,708), //bcp->offset
    140, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    62, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19994C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    64, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S77C13_nt,    ABISELECT(1216,896), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19994C9,    ABISELECT(1088,800), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19994C6,    ABISELECT(1216,896), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19994C10,    ABISELECT(1216,896), //bcp->offset
    207, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    65, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19994C8,    ABISELECT(1088,800), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    86, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19994C7,    ABISELECT(1088,800), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    85, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19994C9,    ABISELECT(1872,1404), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    67, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19994C12,    ABISELECT(1104,808), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19994C6,    ABISELECT(1136,832), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19994C10,    ABISELECT(1136,832), //bcp->offset
    199, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    68, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19994C11,    ABISELECT(1104,808), //bcp->offset
    191, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    66, //bcp->index_in_construction_vtbl_array
    92, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19994C12,    ABISELECT(1288,956), //bcp->offset
    221, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    69, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S19994C2,    ABISELECT(1344,992), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19994C6,    ABISELECT(1472,1084), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19994C10,    ABISELECT(1472,1084), //bcp->offset
    256, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    72, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19994C14,    ABISELECT(1344,992), //bcp->offset
    235, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    71, //bcp->index_in_construction_vtbl_array
    106, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S19994C13,    ABISELECT(1320,980), //bcp->offset
    225, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    70, //bcp->index_in_construction_vtbl_array
    103, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S19994C5,    ABISELECT(1088,800), //bcp->offset
    144, //bcp->virtual_function_table_offset
    33, //num_negative_vtable_entries(t, bcp)
    63, //bcp->index_in_construction_vtbl_array
    84, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S19994C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19994C12,    ABISELECT(1760,1320), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S19994C6,    ABISELECT(1792,1344), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19994C10,    ABISELECT(1792,1344), //bcp->offset
    282, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    75, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S19994C11,    ABISELECT(1760,1320), //bcp->offset
    264, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    74, //bcp->index_in_construction_vtbl_array
    107, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S19994C17,    ABISELECT(1872,1404), //bcp->offset
    290, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    76, //bcp->index_in_construction_vtbl_array
    109, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S19994C13,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19994C9,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S19994C8,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S19994C7,    ABISELECT(32,20), //bcp->offset
    53, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    77, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19994C16,    ABISELECT(16,8), //bcp->offset
    33, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    73, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19994C2,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S19994C6,    ABISELECT(192,124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S19994C10,    ABISELECT(192,124), //bcp->offset
    74, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S19994C14,    ABISELECT(64,32), //bcp->offset
    65, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    78, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19994C9,    ABISELECT(2544,1896), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S19994C8,    ABISELECT(2544,1896), //bcp->offset
    307, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    80, //bcp->index_in_construction_vtbl_array
    113, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    46, //immediately_derived
  0, 1},
  {&cd_S19994C6,    ABISELECT(480,360), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S19994C2,    ABISELECT(496,364), //bcp->offset
    101, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S19994C9,    ABISELECT(624,456), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    40, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S19994C9,    ABISELECT(632,460), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    41, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(632,460), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S19994C6,    ABISELECT(640,464), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    42, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S19994C10,    ABISELECT(640,464), //bcp->offset
    125, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    43, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S19994C6,    ABISELECT(712,524), //bcp->offset
    133, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    44, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S19994C15,    ABISELECT(632,460), //bcp->offset
    116, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    82, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    45, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S19994C2,    ABISELECT(720,528), //bcp->offset
    137, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    46, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S19994C18,    ABISELECT(624,456), //bcp->offset
    104, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    81, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    47, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S19994C21,    ABISELECT(2552,1900), //bcp->offset
    318, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    83, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    50, //immediately_derived
  0, 1},
  {&cd_S19994C20,    ABISELECT(480,360), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    48, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S19994C19,    ABISELECT(480,360), //bcp->offset
    82, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    79, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    49, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19994C1[];
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN8S19994C1D1Ev();
extern void _ZN8S19994C1D0Ev();
extern void _ZN8S19994C33v41Ev();
extern void _ZN8S19994C33v42Ev();
extern void _ZN8S19994C33v43Ev();
extern void _ZN8S19994C12v1Ev();
extern void _ZN8S19994C12v2Ev();
extern void _ZN8S19994C12v3Ev();
extern void _ZN8S19994C12v4Ev();
extern void _ZN8S19994C12v5Ev();
extern void _ZN8S19994C12v6Ev();
extern void _ZN8S19994C12v7Ev();
extern void _ZN8S19994C12v8Ev();
extern void _ZN8S19994C12v9Ev();
extern void _ZN9S19994C133v30Ev();
extern void _ZN9S19994C133v31Ev();
extern void _ZN9S19994C133v32Ev();
extern void ABISELECT(_ZThn16_N8S19994C1D1Ev,_ZThn8_N8S19994C1D1Ev)();
extern void ABISELECT(_ZThn16_N8S19994C1D0Ev,_ZThn8_N8S19994C1D0Ev)();
extern void _ZN9S19994C163v48Ev();
extern void _ZN9S19994C163v49Ev();
extern void _ZN9S19994C163v50Ev();
extern void _ZN9S19994C163v51Ev();
extern void _ZN9S19994C163v52Ev();
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
extern void ABISELECT(_ZThn32_N8S19994C1D1Ev,_ZThn20_N8S19994C1D1Ev)();
extern void ABISELECT(_ZThn32_N8S19994C1D0Ev,_ZThn20_N8S19994C1D0Ev)();
extern void _ZN8S19994C73v20Ev();
extern void _ZN8S19994C23v10Ev();
extern void _ZN9S19994C143v25Ev();
extern void _ZN9S19994C143v26Ev();
extern void _ZN9S19994C143v27Ev();
extern void _ZN9S19994C143v28Ev();
extern void _ZN9S19994C143v29Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C203v63Ev();
extern void _ZN9S19994C203v64Ev();
extern void _ZN9S19994C193v65Ev();
extern void _ZN9S19994C193v66Ev();
extern void _ZN9S19994C193v67Ev();
extern void _ZN9S19994C193v68Ev();
extern void _ZN9S19994C193v69Ev();
extern void _ZN9S19994C193v70Ev();
extern void _ZN9S19994C193v71Ev();
extern void _ZN8S19994C23v10Ev();
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN9S19994C183v54Ev();
extern void _ZN9S19994C183v55Ev();
extern void _ZN9S19994C183v56Ev();
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN9S19994C153v53Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN8S19994C23v10Ev();
extern void _ZN8S19994C23v10Ev();
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
extern void ABISELECT(_ZTv0_n112_N8S19994C1D1Ev,_ZTv0_n56_N8S19994C1D1Ev)();
extern void ABISELECT(_ZThn1088_N8S19994C1D1Ev,_ZThn800_N8S19994C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n112_N8S19994C1D0Ev,_ZTv0_n56_N8S19994C1D0Ev)();
extern void ABISELECT(_ZThn1088_N8S19994C1D0Ev,_ZThn800_N8S19994C1D0Ev)() __attribute__((weak));
extern void _ZN8S19994C73v20Ev();
extern void _ZN8S19994C53v33Ev();
extern void _ZN8S19994C53v34Ev();
extern void _ZN8S19994C53v35Ev();
extern void _ZN8S19994C53v36Ev();
extern void _ZN8S19994C53v37Ev();
extern void _ZN8S19994C53v38Ev();
extern void _ZN8S19994C53v39Ev();
extern void _ZN8S19994C53v40Ev();
extern void _ZN9S19994C123v21Ev();
extern void _ZN9S19994C113v22Ev();
extern void _ZN9S19994C113v23Ev();
extern void _ZN9S19994C113v24Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
extern void _ZN9S19994C123v21Ev();
extern void _ZN9S19994C133v30Ev();
extern void _ZN9S19994C133v31Ev();
extern void _ZN9S19994C133v32Ev();
extern void _ZN8S19994C23v10Ev();
extern void _ZN9S19994C143v25Ev();
extern void _ZN9S19994C143v26Ev();
extern void _ZN9S19994C143v27Ev();
extern void _ZN9S19994C143v28Ev();
extern void _ZN9S19994C143v29Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
extern void _ZN9S19994C123v21Ev();
extern void _ZN9S19994C113v22Ev();
extern void _ZN9S19994C113v23Ev();
extern void _ZN9S19994C113v24Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN9S19994C173v44Ev();
extern void _ZN9S19994C173v45Ev();
extern void _ZN9S19994C173v46Ev();
extern void _ZN9S19994C173v47Ev();
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
extern void _ZN9S19994C213v57Ev();
extern void _ZN9S19994C213v58Ev();
extern void _ZN9S19994C213v59Ev();
extern void _ZN9S19994C213v60Ev();
extern void _ZN9S19994C213v61Ev();
extern void _ZN9S19994C213v62Ev();
static  VTBL_ENTRY vtc_S19994C1[] = {
  ABISELECT(2552,1900),
  ABISELECT(2544,1896),
  ABISELECT(1872,1404),
  ABISELECT(1760,1320),
  ABISELECT(1344,992),
  ABISELECT(1320,980),
  ABISELECT(1288,956),
  ABISELECT(1872,1404),
  ABISELECT(960,708),
  ABISELECT(1216,896),
  ABISELECT(1216,896),
  0,
  ABISELECT(1088,800),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19994C1[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19994C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19994C1D0Ev,
  (VTBL_ENTRY)&_ZN8S19994C33v41Ev,
  (VTBL_ENTRY)&_ZN8S19994C33v42Ev,
  (VTBL_ENTRY)&_ZN8S19994C33v43Ev,
  (VTBL_ENTRY)&_ZN8S19994C12v1Ev,
  (VTBL_ENTRY)&_ZN8S19994C12v2Ev,
  (VTBL_ENTRY)&_ZN8S19994C12v3Ev,
  (VTBL_ENTRY)&_ZN8S19994C12v4Ev,
  (VTBL_ENTRY)&_ZN8S19994C12v5Ev,
  (VTBL_ENTRY)&_ZN8S19994C12v6Ev,
  (VTBL_ENTRY)&_ZN8S19994C12v7Ev,
  (VTBL_ENTRY)&_ZN8S19994C12v8Ev,
  (VTBL_ENTRY)&_ZN8S19994C12v9Ev,
  ABISELECT(944,700),
  ABISELECT(1200,888),
  ABISELECT(-16,-8),
  ABISELECT(1856,1396),
  ABISELECT(1856,1396),
  ABISELECT(1744,1312),
  ABISELECT(1200,888),
  ABISELECT(1328,984),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19994C1[0]),
  (VTBL_ENTRY)&_ZN9S19994C133v30Ev,
  (VTBL_ENTRY)&_ZN9S19994C133v31Ev,
  (VTBL_ENTRY)&_ZN9S19994C133v32Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19994C1D1Ev,_ZThn8_N8S19994C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19994C1D0Ev,_ZThn8_N8S19994C1D0Ev),
  (VTBL_ENTRY)&_ZN9S19994C163v48Ev,
  (VTBL_ENTRY)&_ZN9S19994C163v49Ev,
  (VTBL_ENTRY)&_ZN9S19994C163v50Ev,
  (VTBL_ENTRY)&_ZN9S19994C163v51Ev,
  (VTBL_ENTRY)&_ZN9S19994C163v52Ev,
  ABISELECT(928,688),
  ABISELECT(1184,876),
  ABISELECT(-32,-20),
  ABISELECT(1184,876),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19994C1[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S19994C1D1Ev,_ZThn20_N8S19994C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S19994C1D0Ev,_ZThn20_N8S19994C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19994C73v20Ev,
  ABISELECT(1152,864),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S19994C1[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v29Ev,
  ABISELECT(-192,-124),
  (VTBL_ENTRY)&(_ZTI8S19994C1[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
  ABISELECT(2072,1540),
  ABISELECT(808,596),
  ABISELECT(736,536),
  ABISELECT(-480,-360),
  ABISELECT(736,536),
  ABISELECT(2064,1536),
  ABISELECT(-480,-360),
  (VTBL_ENTRY)&(_ZTI8S19994C1[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C203v63Ev,
  (VTBL_ENTRY)&_ZN9S19994C203v64Ev,
  (VTBL_ENTRY)&_ZN9S19994C193v65Ev,
  (VTBL_ENTRY)&_ZN9S19994C193v66Ev,
  (VTBL_ENTRY)&_ZN9S19994C193v67Ev,
  (VTBL_ENTRY)&_ZN9S19994C193v68Ev,
  (VTBL_ENTRY)&_ZN9S19994C193v69Ev,
  (VTBL_ENTRY)&_ZN9S19994C193v70Ev,
  (VTBL_ENTRY)&_ZN9S19994C193v71Ev,
  ABISELECT(-496,-364),
  (VTBL_ENTRY)&(_ZTI8S19994C1[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
  ABISELECT(592,440),
  ABISELECT(592,440),
  ABISELECT(1920,1440),
  ABISELECT(-624,-456),
  ABISELECT(664,500),
  ABISELECT(-624,-456),
  (VTBL_ENTRY)&(_ZTI8S19994C1[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19994C183v54Ev,
  (VTBL_ENTRY)&_ZN9S19994C183v55Ev,
  (VTBL_ENTRY)&_ZN9S19994C183v56Ev,
  ABISELECT(584,436),
  ABISELECT(-632,-460),
  ABISELECT(584,436),
  ABISELECT(1912,1436),
  ABISELECT(-632,-460),
  (VTBL_ENTRY)&(_ZTI8S19994C1[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19994C153v53Ev,
  ABISELECT(-640,-464),
  (VTBL_ENTRY)&(_ZTI8S19994C1[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
  ABISELECT(-712,-524),
  (VTBL_ENTRY)&(_ZTI8S19994C1[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  ABISELECT(-720,-528),
  (VTBL_ENTRY)&(_ZTI8S19994C1[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
  0,
  ABISELECT(-960,-708),
  (VTBL_ENTRY)&(_ZTI8S19994C1[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-1088,-800),
  0,
  0,
  0,
  ABISELECT(256,192),
  ABISELECT(232,180),
  ABISELECT(200,156),
  ABISELECT(784,604),
  ABISELECT(-128,-92),
  ABISELECT(128,96),
  ABISELECT(-1088,-800),
  ABISELECT(128,96),
  ABISELECT(-1088,-800),
  (VTBL_ENTRY)&(_ZTI8S19994C1[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N8S19994C1D1Ev,_ZTv0_n56_N8S19994C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N8S19994C1D0Ev,_ZTv0_n56_N8S19994C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19994C73v20Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v33Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v34Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v35Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v36Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v37Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v38Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v39Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v40Ev,
  ABISELECT(112,88),
  ABISELECT(768,596),
  ABISELECT(-1104,-808),
  (VTBL_ENTRY)&(_ZTI8S19994C1[0]),
  (VTBL_ENTRY)&_ZN9S19994C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v22Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v23Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v24Ev,
  ABISELECT(-1136,-832),
  (VTBL_ENTRY)&(_ZTI8S19994C1[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-1216,-896),
  (VTBL_ENTRY)&(_ZTI8S19994C1[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
  0,
  ABISELECT(-1288,-956),
  (VTBL_ENTRY)&(_ZTI8S19994C1[0]),
  (VTBL_ENTRY)&_ZN9S19994C123v21Ev,
  0,
  0,
  0,
  ABISELECT(-104,-84),
  ABISELECT(24,12),
  ABISELECT(-1320,-980),
  (VTBL_ENTRY)&(_ZTI8S19994C1[0]),
  (VTBL_ENTRY)&_ZN9S19994C133v30Ev,
  (VTBL_ENTRY)&_ZN9S19994C133v31Ev,
  (VTBL_ENTRY)&_ZN9S19994C133v32Ev,
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-96),
  ABISELECT(-1344,-992),
  (VTBL_ENTRY)&(_ZTI8S19994C1[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v29Ev,
  ABISELECT(-1472,-1084),
  (VTBL_ENTRY)&(_ZTI8S19994C1[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  0,
  0,
  0,
  0,
  ABISELECT(-544,-424),
  ABISELECT(112,84),
  ABISELECT(-1760,-1320),
  (VTBL_ENTRY)&(_ZTI8S19994C1[0]),
  (VTBL_ENTRY)&_ZN9S19994C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v22Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v23Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v24Ev,
  ABISELECT(-1792,-1344),
  (VTBL_ENTRY)&(_ZTI8S19994C1[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-656,-508),
  0,
  ABISELECT(-112,-84),
  0,
  0,
  ABISELECT(-1872,-1404),
  (VTBL_ENTRY)&(_ZTI8S19994C1[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19994C173v44Ev,
  (VTBL_ENTRY)&_ZN9S19994C173v45Ev,
  (VTBL_ENTRY)&_ZN9S19994C173v46Ev,
  (VTBL_ENTRY)&_ZN9S19994C173v47Ev,
  0,
  0,
  0,
  ABISELECT(-1328,-1000),
  ABISELECT(-2544,-1896),
  ABISELECT(-1328,-1000),
  ABISELECT(-2544,-1896),
  (VTBL_ENTRY)&(_ZTI8S19994C1[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-2552,-1900),
  (VTBL_ENTRY)&(_ZTI8S19994C1[0]),
  (VTBL_ENTRY)&_ZN9S19994C213v57Ev,
  (VTBL_ENTRY)&_ZN9S19994C213v58Ev,
  (VTBL_ENTRY)&_ZN9S19994C213v59Ev,
  (VTBL_ENTRY)&_ZN9S19994C213v60Ev,
  (VTBL_ENTRY)&_ZN9S19994C213v61Ev,
  (VTBL_ENTRY)&_ZN9S19994C213v62Ev,
};
extern VTBL_ENTRY _ZTV8S19994C1[];
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN8S19994C3D1Ev();
extern void _ZN8S19994C3D0Ev();
extern void _ZN8S19994C33v41Ev();
extern void _ZN8S19994C33v42Ev();
extern void _ZN8S19994C33v43Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C3__8S19994C1[] = {
  ABISELECT(1344,992),
  ABISELECT(1320,980),
  ABISELECT(1288,956),
  ABISELECT(1872,1404),
  ABISELECT(960,708),
  ABISELECT(1216,896),
  ABISELECT(1216,896),
  0,
  ABISELECT(1088,800),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19994C3[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19994C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19994C3D0Ev,
  (VTBL_ENTRY)&_ZN8S19994C33v41Ev,
  (VTBL_ENTRY)&_ZN8S19994C33v42Ev,
  (VTBL_ENTRY)&_ZN8S19994C33v43Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
extern void ABISELECT(_ZTv0_n112_N8S19994C3D1Ev,_ZTv0_n56_N8S19994C3D1Ev)();
extern void ABISELECT(_ZThn1088_N8S19994C3D1Ev,_ZThn800_N8S19994C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n112_N8S19994C3D0Ev,_ZTv0_n56_N8S19994C3D0Ev)();
extern void ABISELECT(_ZThn1088_N8S19994C3D0Ev,_ZThn800_N8S19994C3D0Ev)() __attribute__((weak));
extern void _ZN8S19994C73v20Ev();
extern void _ZN8S19994C53v33Ev();
extern void _ZN8S19994C53v34Ev();
extern void _ZN8S19994C53v35Ev();
extern void _ZN8S19994C53v36Ev();
extern void _ZN8S19994C53v37Ev();
extern void _ZN8S19994C53v38Ev();
extern void _ZN8S19994C53v39Ev();
extern void _ZN8S19994C53v40Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C5__8S19994C3__8S19994C1[] = {
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-1088,-800),
  0,
  0,
  0,
  ABISELECT(256,192),
  ABISELECT(232,180),
  ABISELECT(200,156),
  ABISELECT(784,604),
  ABISELECT(-128,-92),
  ABISELECT(128,96),
  ABISELECT(-1088,-800),
  ABISELECT(128,96),
  ABISELECT(-1088,-800),
  (VTBL_ENTRY)&(_ZTI8S19994C3[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N8S19994C3D1Ev,_ZTv0_n56_N8S19994C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N8S19994C3D0Ev,_ZTv0_n56_N8S19994C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19994C73v20Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v33Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v34Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v35Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v36Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v37Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v38Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v39Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v40Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C10__8S19994C3__8S19994C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-1216,-896),
  (VTBL_ENTRY)&(_ZTI8S19994C3[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern void _ZN8S19994C23v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C2__8S19994C3__8S19994C1[] = {
  0,
  ABISELECT(-960,-708),
  (VTBL_ENTRY)&(_ZTI8S19994C3[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
};
extern void _ZN9S19994C123v21Ev();
extern void _ZN9S19994C113v22Ev();
extern void _ZN9S19994C113v23Ev();
extern void _ZN9S19994C113v24Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C118S19994C5__8S19994C3__8S19994C1[] = {
  ABISELECT(112,88),
  ABISELECT(768,596),
  ABISELECT(-1104,-808),
  (VTBL_ENTRY)&(_ZTI8S19994C3[0]),
  (VTBL_ENTRY)&_ZN9S19994C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v22Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v23Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v24Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C9__A1__8S19994C3__8S19994C1[] = {
  0,
  0,
  ABISELECT(-1872,-1404),
  (VTBL_ENTRY)&(_ZTI8S19994C3[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C109S19994C118S19994C5__A1__8S19994C3__8S19994C1[] = {
  ABISELECT(-1136,-832),
  (VTBL_ENTRY)&(_ZTI8S19994C3[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern void _ZN9S19994C123v21Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C12__A1__8S19994C3__8S19994C1[] = {
  0,
  ABISELECT(-1288,-956),
  (VTBL_ENTRY)&(_ZTI8S19994C3[0]),
  (VTBL_ENTRY)&_ZN9S19994C123v21Ev,
};
extern void _ZN9S19994C133v30Ev();
extern void _ZN9S19994C133v31Ev();
extern void _ZN9S19994C133v32Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C13__8S19994C3__8S19994C1[] = {
  0,
  0,
  0,
  ABISELECT(-104,-84),
  ABISELECT(24,12),
  ABISELECT(-1320,-980),
  (VTBL_ENTRY)&(_ZTI8S19994C3[0]),
  (VTBL_ENTRY)&_ZN9S19994C133v30Ev,
  (VTBL_ENTRY)&_ZN9S19994C133v31Ev,
  (VTBL_ENTRY)&_ZN9S19994C133v32Ev,
};
extern void _ZN8S19994C23v10Ev();
extern void _ZN9S19994C143v25Ev();
extern void _ZN9S19994C143v26Ev();
extern void _ZN9S19994C143v27Ev();
extern void _ZN9S19994C143v28Ev();
extern void _ZN9S19994C143v29Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C14__8S19994C3__8S19994C1[] = {
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-96),
  ABISELECT(-1344,-992),
  (VTBL_ENTRY)&(_ZTI8S19994C3[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v29Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C109S19994C14__A2__8S19994C3__8S19994C1[] = {
  ABISELECT(-1472,-1084),
  (VTBL_ENTRY)&(_ZTI8S19994C3[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern void _ZN9S19994C133v30Ev();
extern void _ZN9S19994C133v31Ev();
extern void _ZN9S19994C133v32Ev();
extern void _ZN9S19994C16D1Ev();
extern void _ZN9S19994C16D0Ev();
extern void _ZN9S19994C163v48Ev();
extern void _ZN9S19994C163v49Ev();
extern void _ZN9S19994C163v50Ev();
extern void _ZN9S19994C163v51Ev();
extern void _ZN9S19994C163v52Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C16__8S19994C1[] = {
  ABISELECT(944,700),
  ABISELECT(1200,888),
  ABISELECT(-16,-8),
  ABISELECT(1856,1396),
  ABISELECT(1856,1396),
  ABISELECT(1744,1312),
  ABISELECT(1200,888),
  ABISELECT(1328,984),
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C16[0]),
  (VTBL_ENTRY)&_ZN9S19994C133v30Ev,
  (VTBL_ENTRY)&_ZN9S19994C133v31Ev,
  (VTBL_ENTRY)&_ZN9S19994C133v32Ev,
  (VTBL_ENTRY)&_ZN9S19994C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19994C16D0Ev,
  (VTBL_ENTRY)&_ZN9S19994C163v48Ev,
  (VTBL_ENTRY)&_ZN9S19994C163v49Ev,
  (VTBL_ENTRY)&_ZN9S19994C163v50Ev,
  (VTBL_ENTRY)&_ZN9S19994C163v51Ev,
  (VTBL_ENTRY)&_ZN9S19994C163v52Ev,
};
extern void _ZN9S19994C133v30Ev();
extern void _ZN9S19994C133v31Ev();
extern void _ZN9S19994C133v32Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C139S19994C16__A1__8S19994C1[] = {
  ABISELECT(1200,888),
  ABISELECT(1328,984),
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C13[0]),
  (VTBL_ENTRY)&_ZN9S19994C133v30Ev,
  (VTBL_ENTRY)&_ZN9S19994C133v31Ev,
  (VTBL_ENTRY)&_ZN9S19994C133v32Ev,
};
extern void _ZN8S19994C23v10Ev();
extern void _ZN9S19994C143v25Ev();
extern void _ZN9S19994C143v26Ev();
extern void _ZN9S19994C143v27Ev();
extern void _ZN9S19994C143v28Ev();
extern void _ZN9S19994C143v29Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C14__9S19994C139S19994C16__A1__8S19994C1[] = {
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-96),
  ABISELECT(-1328,-984),
  (VTBL_ENTRY)&(_ZTI9S19994C13[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v29Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C109S19994C14__9S19994C139S19994C16__A1__8S19994C1[] = {
  ABISELECT(-1456,-1076),
  (VTBL_ENTRY)&(_ZTI9S19994C13[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
extern void _ZN8S19994C7D1Ev();
extern void _ZN8S19994C7D0Ev();
extern void _ZN8S19994C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C79S19994C16__A1__8S19994C1[] = {
  ABISELECT(928,688),
  ABISELECT(1184,876),
  ABISELECT(-32,-20),
  ABISELECT(1184,876),
  0,
  (VTBL_ENTRY)&(_ZTI8S19994C7[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
  (VTBL_ENTRY)&_ZN8S19994C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19994C7D0Ev,
  (VTBL_ENTRY)&_ZN8S19994C73v20Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C88S19994C79S19994C16__A1__8S19994C1[] = {
  ABISELECT(1184,876),
  ABISELECT(-32,-20),
  ABISELECT(1184,876),
  0,
  (VTBL_ENTRY)&(_ZTI8S19994C8[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C6__8S19994C88S19994C79S19994C16__A1__8S19994C1[] = {
  0,
  0,
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI8S19994C8[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C10__8S19994C88S19994C79S19994C16__A1__8S19994C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-1184,-876),
  (VTBL_ENTRY)&(_ZTI8S19994C8[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C6__8S19994C79S19994C16__A1__8S19994C1[] = {
  0,
  0,
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI8S19994C7[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C10__8S19994C79S19994C16__A1__8S19994C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-1184,-876),
  (VTBL_ENTRY)&(_ZTI8S19994C7[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern void _ZN8S19994C23v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C2__8S19994C79S19994C16__A1__8S19994C1[] = {
  0,
  ABISELECT(-928,-688),
  (VTBL_ENTRY)&(_ZTI8S19994C7[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
};
extern void _ZN9S19994C123v21Ev();
extern void _ZN9S19994C113v22Ev();
extern void _ZN9S19994C113v23Ev();
extern void _ZN9S19994C113v24Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C11__9S19994C16__8S19994C1[] = {
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  0,
  0,
  0,
  0,
  ABISELECT(-544,-424),
  ABISELECT(112,84),
  ABISELECT(-1744,-1312),
  (VTBL_ENTRY)&(_ZTI9S19994C16[0]),
  (VTBL_ENTRY)&_ZN9S19994C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v22Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v23Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v24Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN9S19994C173v44Ev();
extern void _ZN9S19994C173v45Ev();
extern void _ZN9S19994C173v46Ev();
extern void _ZN9S19994C173v47Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C17__9S19994C16__8S19994C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-656,-508),
  0,
  ABISELECT(-112,-84),
  0,
  0,
  ABISELECT(-1856,-1396),
  (VTBL_ENTRY)&(_ZTI9S19994C16[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19994C173v44Ev,
  (VTBL_ENTRY)&_ZN9S19994C173v45Ev,
  (VTBL_ENTRY)&_ZN9S19994C173v46Ev,
  (VTBL_ENTRY)&_ZN9S19994C173v47Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C109S19994C11__9S19994C16__8S19994C1[] = {
  ABISELECT(-1776,-1336),
  (VTBL_ENTRY)&(_ZTI9S19994C16[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern void _ZN8S19994C23v10Ev();
extern void _ZN9S19994C143v25Ev();
extern void _ZN9S19994C143v26Ev();
extern void _ZN9S19994C143v27Ev();
extern void _ZN9S19994C143v28Ev();
extern void _ZN9S19994C143v29Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C14__9S19994C16__8S19994C1[] = {
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-96),
  ABISELECT(-1328,-984),
  (VTBL_ENTRY)&(_ZTI9S19994C16[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v29Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C109S19994C14__A1__9S19994C16__8S19994C1[] = {
  ABISELECT(-1456,-1076),
  (VTBL_ENTRY)&(_ZTI9S19994C16[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
extern void ABISELECT(_ZThn16_N9S19994C16D1Ev,_ZThn12_N9S19994C16D1Ev)();
extern void ABISELECT(_ZThn16_N9S19994C16D0Ev,_ZThn12_N9S19994C16D0Ev)();
extern void _ZN8S19994C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C7__9S19994C16__8S19994C1[] = {
  ABISELECT(928,688),
  ABISELECT(1184,876),
  ABISELECT(-32,-20),
  ABISELECT(1184,876),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19994C16[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19994C16D1Ev,_ZThn12_N9S19994C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19994C16D0Ev,_ZThn12_N9S19994C16D0Ev),
  (VTBL_ENTRY)&_ZN8S19994C73v20Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C6__A2__9S19994C16__8S19994C1[] = {
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S19994C16[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C10__A2__9S19994C16__8S19994C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-1200,-888),
  (VTBL_ENTRY)&(_ZTI9S19994C16[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern void _ZN8S19994C23v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C2__A1__9S19994C16__8S19994C1[] = {
  0,
  ABISELECT(-944,-700),
  (VTBL_ENTRY)&(_ZTI9S19994C16[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
};
extern void _ZN8S19994C23v10Ev();
extern void _ZN9S19994C143v25Ev();
extern void _ZN9S19994C143v26Ev();
extern void _ZN9S19994C143v27Ev();
extern void _ZN9S19994C143v28Ev();
extern void _ZN9S19994C143v29Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C14__A__8S19994C1[] = {
  ABISELECT(1152,864),
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C14[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v29Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C203v63Ev();
extern void _ZN9S19994C203v64Ev();
extern void _ZN9S19994C193v65Ev();
extern void _ZN9S19994C193v66Ev();
extern void _ZN9S19994C193v67Ev();
extern void _ZN9S19994C193v68Ev();
extern void _ZN9S19994C193v69Ev();
extern void _ZN9S19994C193v70Ev();
extern void _ZN9S19994C193v71Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C19__8S19994C1[] = {
  ABISELECT(2072,1540),
  ABISELECT(808,596),
  ABISELECT(736,536),
  ABISELECT(-480,-360),
  ABISELECT(736,536),
  ABISELECT(2064,1536),
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C19[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C203v63Ev,
  (VTBL_ENTRY)&_ZN9S19994C203v64Ev,
  (VTBL_ENTRY)&_ZN9S19994C193v65Ev,
  (VTBL_ENTRY)&_ZN9S19994C193v66Ev,
  (VTBL_ENTRY)&_ZN9S19994C193v67Ev,
  (VTBL_ENTRY)&_ZN9S19994C193v68Ev,
  (VTBL_ENTRY)&_ZN9S19994C193v69Ev,
  (VTBL_ENTRY)&_ZN9S19994C193v70Ev,
  (VTBL_ENTRY)&_ZN9S19994C193v71Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C203v63Ev();
extern void _ZN9S19994C203v64Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C209S19994C19__8S19994C1[] = {
  ABISELECT(2072,1540),
  ABISELECT(808,596),
  ABISELECT(736,536),
  ABISELECT(-480,-360),
  ABISELECT(736,536),
  ABISELECT(2064,1536),
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C20[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C203v63Ev,
  (VTBL_ENTRY)&_ZN9S19994C203v64Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN9S19994C183v54Ev();
extern void _ZN9S19994C183v55Ev();
extern void _ZN9S19994C183v56Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C189S19994C209S19994C19__8S19994C1[] = {
  ABISELECT(592,440),
  ABISELECT(592,440),
  ABISELECT(1920,1440),
  ABISELECT(-624,-456),
  ABISELECT(664,500),
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C18[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19994C183v54Ev,
  (VTBL_ENTRY)&_ZN9S19994C183v55Ev,
  (VTBL_ENTRY)&_ZN9S19994C183v56Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN9S19994C153v53Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C159S19994C189S19994C209S19994C19__8S19994C1[] = {
  ABISELECT(584,436),
  ABISELECT(-632,-460),
  ABISELECT(584,436),
  ABISELECT(1912,1436),
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C15[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19994C153v53Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C8__9S19994C159S19994C189S19994C209S19994C19__8S19994C1[] = {
  0,
  0,
  0,
  ABISELECT(-1328,-1000),
  ABISELECT(-2544,-1896),
  ABISELECT(-1328,-1000),
  ABISELECT(-1912,-1436),
  (VTBL_ENTRY)&(_ZTI9S19994C15[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C6__9S19994C159S19994C189S19994C209S19994C19__8S19994C1[] = {
  0,
  0,
  ABISELECT(632,460),
  (VTBL_ENTRY)&(_ZTI9S19994C15[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C10__9S19994C159S19994C189S19994C209S19994C19__8S19994C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-584,-436),
  (VTBL_ENTRY)&(_ZTI9S19994C15[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern void _ZN9S19994C123v21Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C12__9S19994C189S19994C209S19994C19__8S19994C1[] = {
  0,
  ABISELECT(-664,-500),
  (VTBL_ENTRY)&(_ZTI9S19994C18[0]),
  (VTBL_ENTRY)&_ZN9S19994C123v21Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C6__9S19994C189S19994C209S19994C19__8S19994C1[] = {
  0,
  0,
  ABISELECT(624,456),
  (VTBL_ENTRY)&(_ZTI9S19994C18[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN9S19994C153v53Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C15__9S19994C189S19994C209S19994C19__8S19994C1[] = {
  ABISELECT(584,436),
  ABISELECT(-632,-460),
  ABISELECT(584,436),
  ABISELECT(1912,1436),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19994C18[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19994C153v53Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C8__9S19994C189S19994C209S19994C19__8S19994C1[] = {
  0,
  0,
  0,
  ABISELECT(-1328,-1000),
  ABISELECT(-2544,-1896),
  ABISELECT(-1328,-1000),
  ABISELECT(-1920,-1440),
  (VTBL_ENTRY)&(_ZTI9S19994C18[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C10__9S19994C189S19994C209S19994C19__8S19994C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-592,-440),
  (VTBL_ENTRY)&(_ZTI9S19994C18[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C8__9S19994C209S19994C19__8S19994C1[] = {
  0,
  0,
  0,
  ABISELECT(-1328,-1000),
  ABISELECT(-2544,-1896),
  ABISELECT(-1328,-1000),
  ABISELECT(-2064,-1536),
  (VTBL_ENTRY)&(_ZTI9S19994C20[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C6__A1__9S19994C209S19994C19__8S19994C1[] = {
  0,
  0,
  ABISELECT(480,360),
  (VTBL_ENTRY)&(_ZTI9S19994C20[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C10__9S19994C209S19994C19__8S19994C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-736,-536),
  (VTBL_ENTRY)&(_ZTI9S19994C20[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN9S19994C183v54Ev();
extern void _ZN9S19994C183v55Ev();
extern void _ZN9S19994C183v56Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C18__9S19994C209S19994C19__8S19994C1[] = {
  ABISELECT(592,440),
  ABISELECT(592,440),
  ABISELECT(1920,1440),
  ABISELECT(-624,-456),
  ABISELECT(664,500),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI9S19994C20[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19994C183v54Ev,
  (VTBL_ENTRY)&_ZN9S19994C183v55Ev,
  (VTBL_ENTRY)&_ZN9S19994C183v56Ev,
};
extern void _ZN9S19994C123v21Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C12__9S19994C209S19994C19__8S19994C1[] = {
  0,
  ABISELECT(-808,-596),
  (VTBL_ENTRY)&(_ZTI9S19994C20[0]),
  (VTBL_ENTRY)&_ZN9S19994C123v21Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN9S19994C153v53Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C159S19994C18__9S19994C209S19994C19__8S19994C1[] = {
  ABISELECT(584,436),
  ABISELECT(-632,-460),
  ABISELECT(584,436),
  ABISELECT(1912,1436),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI9S19994C20[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19994C153v53Ev,
};
extern void _ZN9S19994C213v57Ev();
extern void _ZN9S19994C213v58Ev();
extern void _ZN9S19994C213v59Ev();
extern void _ZN9S19994C213v60Ev();
extern void _ZN9S19994C213v61Ev();
extern void _ZN9S19994C213v62Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C21__9S19994C209S19994C19__8S19994C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-2072,-1540),
  (VTBL_ENTRY)&(_ZTI9S19994C20[0]),
  (VTBL_ENTRY)&_ZN9S19994C213v57Ev,
  (VTBL_ENTRY)&_ZN9S19994C213v58Ev,
  (VTBL_ENTRY)&_ZN9S19994C213v59Ev,
  (VTBL_ENTRY)&_ZN9S19994C213v60Ev,
  (VTBL_ENTRY)&_ZN9S19994C213v61Ev,
  (VTBL_ENTRY)&_ZN9S19994C213v62Ev,
};
extern void _ZN9S19994C123v21Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C12__9S19994C19__8S19994C1[] = {
  0,
  ABISELECT(-808,-596),
  (VTBL_ENTRY)&(_ZTI9S19994C19[0]),
  (VTBL_ENTRY)&_ZN9S19994C123v21Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C6__9S19994C19__8S19994C1[] = {
  0,
  0,
  ABISELECT(480,360),
  (VTBL_ENTRY)&(_ZTI9S19994C19[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C8__9S19994C19__8S19994C1[] = {
  0,
  0,
  0,
  ABISELECT(-1328,-1000),
  ABISELECT(-2544,-1896),
  ABISELECT(-1328,-1000),
  ABISELECT(-2064,-1536),
  (VTBL_ENTRY)&(_ZTI9S19994C19[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C10__9S19994C19__8S19994C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-736,-536),
  (VTBL_ENTRY)&(_ZTI9S19994C19[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN9S19994C183v54Ev();
extern void _ZN9S19994C183v55Ev();
extern void _ZN9S19994C183v56Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C189S19994C20__9S19994C19__8S19994C1[] = {
  ABISELECT(592,440),
  ABISELECT(592,440),
  ABISELECT(1920,1440),
  ABISELECT(-624,-456),
  ABISELECT(664,500),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI9S19994C19[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19994C183v54Ev,
  (VTBL_ENTRY)&_ZN9S19994C183v55Ev,
  (VTBL_ENTRY)&_ZN9S19994C183v56Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN9S19994C153v53Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C159S19994C189S19994C20__9S19994C19__8S19994C1[] = {
  ABISELECT(584,436),
  ABISELECT(-632,-460),
  ABISELECT(584,436),
  ABISELECT(1912,1436),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI9S19994C19[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19994C153v53Ev,
};
extern void _ZN9S19994C213v57Ev();
extern void _ZN9S19994C213v58Ev();
extern void _ZN9S19994C213v59Ev();
extern void _ZN9S19994C213v60Ev();
extern void _ZN9S19994C213v61Ev();
extern void _ZN9S19994C213v62Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C21__9S19994C19__8S19994C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-2072,-1540),
  (VTBL_ENTRY)&(_ZTI9S19994C19[0]),
  (VTBL_ENTRY)&_ZN9S19994C213v57Ev,
  (VTBL_ENTRY)&_ZN9S19994C213v58Ev,
  (VTBL_ENTRY)&_ZN9S19994C213v59Ev,
  (VTBL_ENTRY)&_ZN9S19994C213v60Ev,
  (VTBL_ENTRY)&_ZN9S19994C213v61Ev,
  (VTBL_ENTRY)&_ZN9S19994C213v62Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
extern void _ZN8S19994C5D1Ev();
extern void _ZN8S19994C5D0Ev();
extern void _ZN8S19994C73v20Ev();
extern void _ZN8S19994C53v33Ev();
extern void _ZN8S19994C53v34Ev();
extern void _ZN8S19994C53v35Ev();
extern void _ZN8S19994C53v36Ev();
extern void _ZN8S19994C53v37Ev();
extern void _ZN8S19994C53v38Ev();
extern void _ZN8S19994C53v39Ev();
extern void _ZN8S19994C53v40Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C5__8S19994C1[] = {
  ABISELECT(256,192),
  ABISELECT(232,180),
  ABISELECT(200,156),
  ABISELECT(784,604),
  ABISELECT(-128,-92),
  ABISELECT(128,96),
  ABISELECT(-1088,-800),
  ABISELECT(128,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S19994C5[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
  (VTBL_ENTRY)&_ZN8S19994C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19994C5D0Ev,
  (VTBL_ENTRY)&_ZN8S19994C73v20Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v33Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v34Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v35Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v36Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v37Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v38Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v39Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v40Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
extern void _ZN8S19994C7D1Ev();
extern void _ZN8S19994C7D0Ev();
extern void _ZN8S19994C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C78S19994C5__8S19994C1[] = {
  ABISELECT(-128,-92),
  ABISELECT(128,96),
  ABISELECT(-1088,-800),
  ABISELECT(128,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S19994C7[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
  (VTBL_ENTRY)&_ZN8S19994C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19994C7D0Ev,
  (VTBL_ENTRY)&_ZN8S19994C73v20Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C88S19994C78S19994C5__8S19994C1[] = {
  ABISELECT(128,96),
  ABISELECT(-1088,-800),
  ABISELECT(128,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S19994C8[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C6__8S19994C88S19994C78S19994C5__8S19994C1[] = {
  0,
  0,
  ABISELECT(1088,800),
  (VTBL_ENTRY)&(_ZTI8S19994C8[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C10__8S19994C88S19994C78S19994C5__8S19994C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-96),
  (VTBL_ENTRY)&(_ZTI8S19994C8[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C6__8S19994C78S19994C5__8S19994C1[] = {
  0,
  0,
  ABISELECT(1088,800),
  (VTBL_ENTRY)&(_ZTI8S19994C7[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C10__8S19994C78S19994C5__8S19994C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-96),
  (VTBL_ENTRY)&(_ZTI8S19994C7[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern void _ZN8S19994C23v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C2__8S19994C78S19994C5__8S19994C1[] = {
  0,
  ABISELECT(128,92),
  (VTBL_ENTRY)&(_ZTI8S19994C7[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
};
extern void _ZN9S19994C123v21Ev();
extern void _ZN9S19994C113v22Ev();
extern void _ZN9S19994C113v23Ev();
extern void _ZN9S19994C113v24Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C118S19994C5__8S19994C1[] = {
  ABISELECT(112,88),
  ABISELECT(768,596),
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C11[0]),
  (VTBL_ENTRY)&_ZN9S19994C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v22Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v23Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v24Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C9__9S19994C118S19994C5__8S19994C1[] = {
  0,
  0,
  ABISELECT(-768,-596),
  (VTBL_ENTRY)&(_ZTI9S19994C11[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C6__8S19994C5__8S19994C1[] = {
  0,
  0,
  ABISELECT(1088,800),
  (VTBL_ENTRY)&(_ZTI8S19994C5[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C10__8S19994C5__8S19994C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-96),
  (VTBL_ENTRY)&(_ZTI8S19994C5[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern void _ZN8S19994C23v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C2__8S19994C5__8S19994C1[] = {
  0,
  ABISELECT(128,92),
  (VTBL_ENTRY)&(_ZTI8S19994C5[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
};
extern void _ZN9S19994C123v21Ev();
extern void _ZN9S19994C113v22Ev();
extern void _ZN9S19994C113v23Ev();
extern void _ZN9S19994C113v24Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C11__8S19994C5__8S19994C1[] = {
  ABISELECT(112,88),
  ABISELECT(768,596),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19994C5[0]),
  (VTBL_ENTRY)&_ZN9S19994C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v22Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v23Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v24Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C9__A1__8S19994C5__8S19994C1[] = {
  0,
  0,
  ABISELECT(-784,-604),
  (VTBL_ENTRY)&(_ZTI8S19994C5[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
};
extern void _ZN9S19994C123v21Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C12__A1__8S19994C5__8S19994C1[] = {
  0,
  ABISELECT(-200,-156),
  (VTBL_ENTRY)&(_ZTI8S19994C5[0]),
  (VTBL_ENTRY)&_ZN9S19994C123v21Ev,
};
extern void _ZN9S19994C133v30Ev();
extern void _ZN9S19994C133v31Ev();
extern void _ZN9S19994C133v32Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C13__8S19994C5__8S19994C1[] = {
  0,
  0,
  0,
  ABISELECT(-104,-84),
  ABISELECT(24,12),
  ABISELECT(-232,-180),
  (VTBL_ENTRY)&(_ZTI8S19994C5[0]),
  (VTBL_ENTRY)&_ZN9S19994C133v30Ev,
  (VTBL_ENTRY)&_ZN9S19994C133v31Ev,
  (VTBL_ENTRY)&_ZN9S19994C133v32Ev,
};
extern void _ZN8S19994C23v10Ev();
extern void _ZN9S19994C143v25Ev();
extern void _ZN9S19994C143v26Ev();
extern void _ZN9S19994C143v27Ev();
extern void _ZN9S19994C143v28Ev();
extern void _ZN9S19994C143v29Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C14__8S19994C5__8S19994C1[] = {
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-96),
  ABISELECT(-256,-192),
  (VTBL_ENTRY)&(_ZTI8S19994C5[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v29Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C109S19994C14__A2__8S19994C5__8S19994C1[] = {
  ABISELECT(-384,-284),
  (VTBL_ENTRY)&(_ZTI8S19994C5[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern void _ZN9S19994C133v30Ev();
extern void _ZN9S19994C133v31Ev();
extern void _ZN9S19994C133v32Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C13__8S19994C1[] = {
  ABISELECT(-104,-84),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C13[0]),
  (VTBL_ENTRY)&_ZN9S19994C133v30Ev,
  (VTBL_ENTRY)&_ZN9S19994C133v31Ev,
  (VTBL_ENTRY)&_ZN9S19994C133v32Ev,
};
extern void _ZN8S19994C23v10Ev();
extern void _ZN9S19994C143v25Ev();
extern void _ZN9S19994C143v26Ev();
extern void _ZN9S19994C143v27Ev();
extern void _ZN9S19994C143v28Ev();
extern void _ZN9S19994C143v29Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C14__9S19994C13__8S19994C1[] = {
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-96),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19994C13[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v29Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C109S19994C14__9S19994C13__8S19994C1[] = {
  ABISELECT(-152,-104),
  (VTBL_ENTRY)&(_ZTI9S19994C13[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern void _ZN8S19994C23v10Ev();
extern void _ZN9S19994C143v25Ev();
extern void _ZN9S19994C143v26Ev();
extern void _ZN9S19994C143v27Ev();
extern void _ZN9S19994C143v28Ev();
extern void _ZN9S19994C143v29Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C14__8S19994C1[] = {
  ABISELECT(-128,-96),
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C14[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v29Ev,
};
extern void _ZN9S19994C123v21Ev();
extern void _ZN9S19994C113v22Ev();
extern void _ZN9S19994C113v23Ev();
extern void _ZN9S19994C113v24Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C11__A1__8S19994C1[] = {
  ABISELECT(-544,-424),
  ABISELECT(112,84),
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C11[0]),
  (VTBL_ENTRY)&_ZN9S19994C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v22Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v23Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v24Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C9__9S19994C11__A1__8S19994C1[] = {
  0,
  0,
  ABISELECT(-112,-84),
  (VTBL_ENTRY)&(_ZTI9S19994C11[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN9S19994C173v44Ev();
extern void _ZN9S19994C173v45Ev();
extern void _ZN9S19994C173v46Ev();
extern void _ZN9S19994C173v47Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C17__8S19994C1[] = {
  ABISELECT(-656,-508),
  0,
  ABISELECT(-112,-84),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C17[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19994C173v44Ev,
  (VTBL_ENTRY)&_ZN9S19994C173v45Ev,
  (VTBL_ENTRY)&_ZN9S19994C173v46Ev,
  (VTBL_ENTRY)&_ZN9S19994C173v47Ev,
};
extern void _ZN9S19994C123v21Ev();
extern void _ZN9S19994C113v22Ev();
extern void _ZN9S19994C113v23Ev();
extern void _ZN9S19994C113v24Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C11__9S19994C17__8S19994C1[] = {
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  0,
  0,
  0,
  0,
  ABISELECT(-544,-424),
  ABISELECT(112,84),
  ABISELECT(112,84),
  (VTBL_ENTRY)&(_ZTI9S19994C17[0]),
  (VTBL_ENTRY)&_ZN9S19994C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v22Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v23Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v24Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C109S19994C11__9S19994C17__8S19994C1[] = {
  ABISELECT(80,60),
  (VTBL_ENTRY)&(_ZTI9S19994C17[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C8__A2__8S19994C1[] = {
  ABISELECT(-1328,-1000),
  ABISELECT(-2544,-1896),
  ABISELECT(-1328,-1000),
  0,
  (VTBL_ENTRY)&(_ZTI8S19994C8[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C6__8S19994C8__A2__8S19994C1[] = {
  0,
  0,
  ABISELECT(2544,1896),
  (VTBL_ENTRY)&(_ZTI8S19994C8[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C10__8S19994C8__A2__8S19994C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(1328,1000),
  (VTBL_ENTRY)&(_ZTI8S19994C8[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
static  VTT_ENTRY vtt_S19994C1[] = {
  {&(_ZTV8S19994C1[17]),  17,332},
  {&(_tg__ZTV8S19994C3__8S19994C1[13]),  13,20},
  {&(_tg__ZTV8S19994C5__8S19994C3__8S19994C1[33]),  33,47},
  {&(_tg__ZTV8S19994C3__8S19994C1[13]),  13,20},
  {&(_tg__ZTV9S19994C10__8S19994C3__8S19994C1[8]),  8,14},
  {&(_tg__ZTV8S19994C2__8S19994C3__8S19994C1[3]),  3,4},
  {&(_tg__ZTV9S19994C118S19994C5__8S19994C3__8S19994C1[4]),  4,8},
  {&(_tg__ZTV8S19994C9__A1__8S19994C3__8S19994C1[4]),  4,6},
  {&(_tg__ZTV9S19994C109S19994C118S19994C5__A1__8S19994C3__8S19994C1[2]),  2,8},
  {&(_tg__ZTV9S19994C12__A1__8S19994C3__8S19994C1[3]),  3,4},
  {&(_tg__ZTV9S19994C13__8S19994C3__8S19994C1[7]),  7,10},
  {&(_tg__ZTV9S19994C14__8S19994C3__8S19994C1[15]),  15,21},
  {&(_tg__ZTV9S19994C109S19994C14__A2__8S19994C3__8S19994C1[2]),  2,8},
  {&(_tg__ZTV9S19994C16__8S19994C1[10]),  10,20},
  {&(_tg__ZTV9S19994C139S19994C16__A1__8S19994C1[4]),  4,7},
  {&(_tg__ZTV9S19994C14__9S19994C139S19994C16__A1__8S19994C1[15]),  15,21},
  {&(_tg__ZTV9S19994C109S19994C14__9S19994C139S19994C16__A1__8S19994C1[2]),  2,8},
  {&(_tg__ZTV8S19994C79S19994C16__A1__8S19994C1[6]),  6,12},
  {&(_tg__ZTV8S19994C88S19994C79S19994C16__A1__8S19994C1[5]),  5,8},
  {&(_tg__ZTV8S19994C6__8S19994C88S19994C79S19994C16__A1__8S19994C1[4]),  4,6},
  {&(_tg__ZTV9S19994C10__8S19994C88S19994C79S19994C16__A1__8S19994C1[8]),  8,14},
  {&(_tg__ZTV8S19994C6__8S19994C79S19994C16__A1__8S19994C1[4]),  4,6},
  {&(_tg__ZTV9S19994C10__8S19994C79S19994C16__A1__8S19994C1[8]),  8,14},
  {&(_tg__ZTV8S19994C2__8S19994C79S19994C16__A1__8S19994C1[3]),  3,4},
  {&(_tg__ZTV9S19994C11__9S19994C16__8S19994C1[14]),  14,18},
  {&(_tg__ZTV9S19994C17__9S19994C16__8S19994C1[11]),  11,17},
  {&(_tg__ZTV9S19994C109S19994C11__9S19994C16__8S19994C1[2]),  2,8},
  {&(_tg__ZTV9S19994C17__9S19994C16__8S19994C1[11]),  11,17},
  {&(_tg__ZTV9S19994C14__9S19994C16__8S19994C1[15]),  15,21},
  {&(_tg__ZTV9S19994C109S19994C14__A1__9S19994C16__8S19994C1[2]),  2,8},
  {&(_tg__ZTV8S19994C7__9S19994C16__8S19994C1[6]),  6,12},
  {&(_tg__ZTV8S19994C6__A2__9S19994C16__8S19994C1[4]),  4,6},
  {&(_tg__ZTV9S19994C10__A2__9S19994C16__8S19994C1[8]),  8,14},
  {&(_tg__ZTV8S19994C2__A1__9S19994C16__8S19994C1[3]),  3,4},
  {&(_tg__ZTV9S19994C14__A__8S19994C1[3]),  3,9},
  {&(_tg__ZTV9S19994C19__8S19994C1[8]),  8,19},
  {&(_tg__ZTV9S19994C209S19994C19__8S19994C1[8]),  8,12},
  {&(_tg__ZTV9S19994C189S19994C209S19994C19__8S19994C1[7]),  7,12},
  {&(_tg__ZTV9S19994C159S19994C189S19994C209S19994C19__8S19994C1[6]),  6,9},
  {&(_tg__ZTV8S19994C8__9S19994C159S19994C189S19994C209S19994C19__8S19994C1[8]),  8,11},
  {&(_tg__ZTV8S19994C6__9S19994C159S19994C189S19994C209S19994C19__8S19994C1[4]),  4,6},
  {&(_tg__ZTV9S19994C10__9S19994C159S19994C189S19994C209S19994C19__8S19994C1[8]),  8,14},
  {&(_tg__ZTV9S19994C12__9S19994C189S19994C209S19994C19__8S19994C1[3]),  3,4},
  {&(_tg__ZTV8S19994C6__9S19994C189S19994C209S19994C19__8S19994C1[4]),  4,6},
  {&(_tg__ZTV9S19994C15__9S19994C189S19994C209S19994C19__8S19994C1[6]),  6,9},
  {&(_tg__ZTV8S19994C8__9S19994C189S19994C209S19994C19__8S19994C1[8]),  8,11},
  {&(_tg__ZTV9S19994C10__9S19994C189S19994C209S19994C19__8S19994C1[8]),  8,14},
  {&(_tg__ZTV8S19994C8__9S19994C209S19994C19__8S19994C1[8]),  8,11},
  {&(_tg__ZTV8S19994C6__A1__9S19994C209S19994C19__8S19994C1[4]),  4,6},
  {&(_tg__ZTV9S19994C10__9S19994C209S19994C19__8S19994C1[8]),  8,14},
  {&(_tg__ZTV9S19994C18__9S19994C209S19994C19__8S19994C1[7]),  7,12},
  {&(_tg__ZTV9S19994C12__9S19994C209S19994C19__8S19994C1[3]),  3,4},
  {&(_tg__ZTV9S19994C159S19994C18__9S19994C209S19994C19__8S19994C1[6]),  6,9},
  {&(_tg__ZTV9S19994C21__9S19994C209S19994C19__8S19994C1[8]),  8,14},
  {&(_tg__ZTV9S19994C12__9S19994C19__8S19994C1[3]),  3,4},
  {&(_tg__ZTV8S19994C6__9S19994C19__8S19994C1[4]),  4,6},
  {&(_tg__ZTV8S19994C8__9S19994C19__8S19994C1[8]),  8,11},
  {&(_tg__ZTV9S19994C10__9S19994C19__8S19994C1[8]),  8,14},
  {&(_tg__ZTV9S19994C189S19994C20__9S19994C19__8S19994C1[7]),  7,12},
  {&(_tg__ZTV9S19994C159S19994C189S19994C20__9S19994C19__8S19994C1[6]),  6,9},
  {&(_tg__ZTV9S19994C21__9S19994C19__8S19994C1[8]),  8,14},
  {&(_ZTV8S19994C1[143]),  143,332},
  {&(_ZTV8S19994C1[177]),  177,332},
  {&(_ZTV8S19994C1[17]),  17,332},
  {&(_ZTV8S19994C1[215]),  215,332},
  {&(_ZTV8S19994C1[195]),  195,332},
  {&(_ZTV8S19994C1[301]),  301,332},
  {&(_ZTV8S19994C1[201]),  201,332},
  {&(_ZTV8S19994C1[224]),  224,332},
  {&(_ZTV8S19994C1[232]),  232,332},
  {&(_ZTV8S19994C1[250]),  250,332},
  {&(_ZTV8S19994C1[258]),  258,332},
  {&(_ZTV8S19994C1[43]),  43,332},
  {&(_ZTV8S19994C1[278]),  278,332},
  {&(_ZTV8S19994C1[284]),  284,332},
  {&(_ZTV8S19994C1[301]),  301,332},
  {&(_ZTV8S19994C1[59]),  59,332},
  {&(_ZTV8S19994C1[68]),  68,332},
  {&(_ZTV8S19994C1[90]),  90,332},
  {&(_ZTV8S19994C1[315]),  315,332},
  {&(_ZTV8S19994C1[111]),  111,332},
  {&(_ZTV8S19994C1[122]),  122,332},
  {&(_ZTV8S19994C1[326]),  326,332},
  {&(_tg__ZTV8S19994C5__8S19994C1[10]),  10,24},
  {&(_tg__ZTV8S19994C78S19994C5__8S19994C1[6]),  6,12},
  {&(_tg__ZTV8S19994C88S19994C78S19994C5__8S19994C1[5]),  5,8},
  {&(_tg__ZTV8S19994C6__8S19994C88S19994C78S19994C5__8S19994C1[4]),  4,6},
  {&(_tg__ZTV9S19994C10__8S19994C88S19994C78S19994C5__8S19994C1[8]),  8,14},
  {&(_tg__ZTV8S19994C6__8S19994C78S19994C5__8S19994C1[4]),  4,6},
  {&(_tg__ZTV9S19994C10__8S19994C78S19994C5__8S19994C1[8]),  8,14},
  {&(_tg__ZTV8S19994C2__8S19994C78S19994C5__8S19994C1[3]),  3,4},
  {&(_tg__ZTV9S19994C118S19994C5__8S19994C1[4]),  4,8},
  {&(_tg__ZTV8S19994C9__9S19994C118S19994C5__8S19994C1[4]),  4,6},
  {&(_tg__ZTV8S19994C6__8S19994C5__8S19994C1[4]),  4,6},
  {&(_tg__ZTV9S19994C10__8S19994C5__8S19994C1[8]),  8,14},
  {&(_tg__ZTV8S19994C2__8S19994C5__8S19994C1[3]),  3,4},
  {&(_tg__ZTV9S19994C11__8S19994C5__8S19994C1[4]),  4,8},
  {&(_tg__ZTV8S19994C9__A1__8S19994C5__8S19994C1[4]),  4,6},
  {&(_tg__ZTV9S19994C12__A1__8S19994C5__8S19994C1[3]),  3,4},
  {&(_tg__ZTV9S19994C13__8S19994C5__8S19994C1[7]),  7,10},
  {&(_tg__ZTV9S19994C14__8S19994C5__8S19994C1[15]),  15,21},
  {&(_tg__ZTV9S19994C109S19994C14__A2__8S19994C5__8S19994C1[2]),  2,8},
  {&(_tg__ZTV9S19994C13__8S19994C1[4]),  4,7},
  {&(_tg__ZTV9S19994C14__9S19994C13__8S19994C1[15]),  15,21},
  {&(_tg__ZTV9S19994C109S19994C14__9S19994C13__8S19994C1[2]),  2,8},
  {&(_tg__ZTV9S19994C14__8S19994C1[3]),  3,9},
  {&(_tg__ZTV9S19994C11__A1__8S19994C1[4]),  4,8},
  {&(_tg__ZTV8S19994C9__9S19994C11__A1__8S19994C1[4]),  4,6},
  {&(_tg__ZTV9S19994C17__8S19994C1[7]),  7,13},
  {&(_tg__ZTV9S19994C11__9S19994C17__8S19994C1[14]),  14,18},
  {&(_tg__ZTV9S19994C17__8S19994C1[7]),  7,13},
  {&(_tg__ZTV9S19994C109S19994C11__9S19994C17__8S19994C1[2]),  2,8},
  {&(_tg__ZTV8S19994C8__A2__8S19994C1[5]),  5,8},
  {&(_tg__ZTV8S19994C6__8S19994C8__A2__8S19994C1[4]),  4,6},
  {&(_tg__ZTV9S19994C10__8S19994C8__A2__8S19994C1[8]),  8,14},
};
extern VTBL_ENTRY _ZTI8S19994C1[];
extern  VTBL_ENTRY _ZTV8S19994C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19994C1[];
static VTBL_ENTRY alt_thunk_names4[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N8S19994C3D0Ev,_ZTv0_n56_N8S19994C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1088_N8S19994C3D0Ev,_ZThn800_N8S19994C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N8S19994C3D1Ev,_ZTv0_n56_N8S19994C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1088_N8S19994C3D1Ev,_ZThn800_N8S19994C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N8S19994C1D0Ev,_ZTv0_n56_N8S19994C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1088_N8S19994C1D0Ev,_ZThn800_N8S19994C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N8S19994C1D1Ev,_ZTv0_n56_N8S19994C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1088_N8S19994C1D1Ev,_ZThn800_N8S19994C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19994C1 = {  "S19994C1", // class name
  bases_S19994C1, 52,
  &(vtc_S19994C1[0]), // expected_vtbl_contents
  &(vtt_S19994C1[0]), // expected_vtt_contents
  ABISELECT(2576,1908), // object size
  NSPAIRA(_ZTI8S19994C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19994C1),332, //virtual function table var
  17, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19994C1),115, //virtual table table var
  49, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names4,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20291C2_nt  {
  short s20291c2f0:6;
  long s20291c2f1;
  short s20291c2f2:4;
  __tsi64 s20291c2f3[13];
  void *s20291c2f4;
  virtual void  v6(); // _ZN11S20291C2_nt2v6Ev
  ~S20291C2_nt(); // tgen
  S20291C2_nt(); // tgen
};
//SIG(-1 S20291C2_nt) C1{ v1 Fs:6 Fl Fs:4 FL[13] Fp}


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

//skip512 S20291C2_nt

#else // __cplusplus

extern void _ZN11S20291C2_ntC1Ev();
extern void _ZN11S20291C2_ntD1Ev();
Name_Map name_map_S20291C2_nt[] = {
  NSPAIR(_ZN11S20291C2_ntC1Ev),
  NSPAIR(_ZN11S20291C2_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY vtc_S20291C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S20291C2_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
VTBL_ENTRY *P__ZTI11S20291C2_nt = _ZTI11S20291C2_nt; 
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
Class_Descriptor cd_S20291C2_nt = {  "S20291C2_nt", // class name
  0,0,//no base classes
  &(vtc_S20291C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,124), // object size
  NSPAIRA(_ZTI11S20291C2_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S20291C2_nt),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20291C3_nt  : virtual S20291C2_nt {
  void *s20291c3f0;
  ::S20291C2_nt s20291c3f1;
  int s20291c3f2:3;
  ~S20291C3_nt(); // tgen
  S20291C3_nt(); // tgen
};
//SIG(-1 S20291C3_nt) C1{ VBC2{ v1 Fs:6 Fl Fs:4 FL[13] Fp} Fp FC2 Fi:3}


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

//skip512 S20291C3_nt

#else // __cplusplus

extern void _ZN11S20291C3_ntC1Ev();
extern void _ZN11S20291C3_ntD1Ev();
Name_Map name_map_S20291C3_nt[] = {
  NSPAIR(_ZN11S20291C3_ntC1Ev),
  NSPAIR(_ZN11S20291C3_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
static Base_Class bases_S20291C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20291C2_nt,    ABISELECT(168,136), //bcp->offset
    3, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI11S20291C3_nt[];
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY vtc_S20291C3_nt[] = {
  ABISELECT(168,136),
  0,
  (VTBL_ENTRY)&(_ZTI11S20291C3_nt[0]),
  0,
  ABISELECT(-168,-136),
  (VTBL_ENTRY)&(_ZTI11S20291C3_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern VTBL_ENTRY _ZTV11S20291C3_nt[];
static  VTT_ENTRY vtt_S20291C3_nt[] = {
  {&(_ZTV11S20291C3_nt[3]),  3,7},
  {&(_ZTV11S20291C3_nt[6]),  6,7},
};
extern VTBL_ENTRY _ZTI11S20291C3_nt[];
VTBL_ENTRY *P__ZTI11S20291C3_nt = _ZTI11S20291C3_nt; 
extern  VTBL_ENTRY _ZTV11S20291C3_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20291C3_nt[];
Class_Descriptor cd_S20291C3_nt = {  "S20291C3_nt", // class name
  bases_S20291C3_nt, 1,
  &(vtc_S20291C3_nt[0]), // expected_vtbl_contents
  &(vtt_S20291C3_nt[0]), // expected_vtt_contents
  ABISELECT(312,260), // object size
  NSPAIRA(_ZTI11S20291C3_nt),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV11S20291C3_nt),7, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT11S20291C3_nt),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20291C7_nt  {
  __tsi64 s20291c7f0;
  long double s20291c7f1;
  void *s20291c7f2;
  char s20291c7f3;
  ::S20291C2_nt s20291c7f4;
  void *s20291c7f5[2];
  __tsi64 s20291c7f6[8];
  short s20291c7f7;
  void *s20291c7f8;
  __tsi64 s20291c7f9:64;
  virtual void  v7(); // _ZN11S20291C7_nt2v7Ev
  ~S20291C7_nt(); // tgen
  S20291C7_nt(); // tgen
};
//SIG(-1 S20291C7_nt) C1{ v1 FL FD Fp Fc FC2{ v2 Fs:6 Fl Fs:4 FL[13] Fp} Fp[2] FL[8] Fs Fp FL:64}


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

//skip512 S20291C7_nt

#else // __cplusplus

extern void _ZN11S20291C7_ntC1Ev();
extern void _ZN11S20291C7_ntD1Ev();
Name_Map name_map_S20291C7_nt[] = {
  NSPAIR(_ZN11S20291C7_ntC1Ev),
  NSPAIR(_ZN11S20291C7_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S20291C7_nt[];
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY vtc_S20291C7_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S20291C7_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern VTBL_ENTRY _ZTI11S20291C7_nt[];
VTBL_ENTRY *P__ZTI11S20291C7_nt = _ZTI11S20291C7_nt; 
extern  VTBL_ENTRY _ZTV11S20291C7_nt[];
Class_Descriptor cd_S20291C7_nt = {  "S20291C7_nt", // class name
  0,0,//no base classes
  &(vtc_S20291C7_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(304,244), // object size
  NSPAIRA(_ZTI11S20291C7_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S20291C7_nt),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20291C8_nt  {
  int s20291c8f0[2];
  __tsi64 s20291c8f1[2];
  ::S20291C2_nt s20291c8f2[3];
  virtual void  v8(); // _ZN11S20291C8_nt2v8Ev
  virtual void  v9(); // _ZN11S20291C8_nt2v9Ev
  virtual void  v10(); // _ZN11S20291C8_nt3v10Ev
  ~S20291C8_nt(); // tgen
  S20291C8_nt(); // tgen
};
//SIG(-1 S20291C8_nt) C1{ v1 v2 v3 Fi[2] FL[2] FC2{ v4 Fs:6 Fl Fs:4 FL[13] Fp}[3]}


void  S20291C8_nt ::v8(){vfunc_called(this, "_ZN11S20291C8_nt2v8Ev");}
void  S20291C8_nt ::v9(){vfunc_called(this, "_ZN11S20291C8_nt2v9Ev");}
void  S20291C8_nt ::v10(){vfunc_called(this, "_ZN11S20291C8_nt3v10Ev");}
S20291C8_nt ::~S20291C8_nt(){ note_dtor("S20291C8_nt", this);} // tgen
S20291C8_nt ::S20291C8_nt(){ note_ctor("S20291C8_nt", this);} // tgen

//skip512 S20291C8_nt

#else // __cplusplus

extern void _ZN11S20291C8_ntC1Ev();
extern void _ZN11S20291C8_ntD1Ev();
Name_Map name_map_S20291C8_nt[] = {
  NSPAIR(_ZN11S20291C8_ntC1Ev),
  NSPAIR(_ZN11S20291C8_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S20291C8_nt[];
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY vtc_S20291C8_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S20291C8_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern VTBL_ENTRY _ZTI11S20291C8_nt[];
VTBL_ENTRY *P__ZTI11S20291C8_nt = _ZTI11S20291C8_nt; 
extern  VTBL_ENTRY _ZTV11S20291C8_nt[];
Class_Descriptor cd_S20291C8_nt = {  "S20291C8_nt", // class name
  0,0,//no base classes
  &(vtc_S20291C8_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(464,400), // object size
  NSPAIRA(_ZTI11S20291C8_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S20291C8_nt),5, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20291C9_nt  : S20291C2_nt , virtual S20291C8_nt , virtual S20291C3_nt , virtual S20291C7_nt {
  ::S20291C7_nt s20291c9f0;
  short s20291c9f1;
  int s20291c9f2[2];
  ~S20291C9_nt(); // tgen
  S20291C9_nt(); // tgen
};
//SIG(-1 S20291C9_nt) C1{ BC2{ v1 Fs:6 Fl Fs:4 FL[13] Fp} VBC3{ v2 v3 v4 Fi[2] FL[2] FC2[3]} VBC4{ VBC2 Fp FC2 Fi:3} VBC5{ v5 FL FD Fp Fc FC2 Fp[2] FL[8] Fs Fp FL:64} FC5 Fs Fi[2]}


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

//skip512 S20291C9_nt

#else // __cplusplus

extern void _ZN11S20291C9_ntC1Ev();
extern void _ZN11S20291C9_ntD1Ev();
Name_Map name_map_S20291C9_nt[] = {
  NSPAIR(_ZN11S20291C9_ntC1Ev),
  NSPAIR(_ZN11S20291C9_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
extern Class_Descriptor cd_S20291C8_nt;
extern VTBL_ENTRY _ZTI11S20291C8_nt[];
extern  VTBL_ENTRY _ZTV11S20291C8_nt[];
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
extern Class_Descriptor cd_S20291C3_nt;
extern VTBL_ENTRY _ZTI11S20291C3_nt[];
extern  VTBL_ENTRY _ZTV11S20291C3_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20291C3_nt[];
extern Class_Descriptor cd_S20291C7_nt;
extern VTBL_ENTRY _ZTI11S20291C7_nt[];
extern  VTBL_ENTRY _ZTV11S20291C7_nt[];
static Base_Class bases_S20291C9_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20291C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20291C8_nt,    ABISELECT(464,380), //bcp->offset
    7, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20291C2_nt,    ABISELECT(1096,916), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20291C3_nt,    ABISELECT(928,780), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20291C7_nt,    ABISELECT(1248,1040), //bcp->offset
    22, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI11S20291C9_nt[];
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY vtc_S20291C9_nt[] = {
  ABISELECT(1248,1040),
  ABISELECT(1096,916),
  ABISELECT(928,780),
  ABISELECT(464,380),
  0,
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  0,
  0,
  0,
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
  ABISELECT(168,136),
  ABISELECT(-928,-780),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  0,
  ABISELECT(-1096,-916),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  0,
  ABISELECT(-1248,-1040),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern VTBL_ENTRY _ZTV11S20291C9_nt[];
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__11S20291C9_nt[] = {
  ABISELECT(168,136),
  0,
  (VTBL_ENTRY)&(_ZTI11S20291C3_nt[0]),
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__11S20291C3_nt__11S20291C9_nt[] = {
  0,
  ABISELECT(-168,-136),
  (VTBL_ENTRY)&(_ZTI11S20291C3_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
static  VTT_ENTRY vtt_S20291C9_nt[] = {
  {&(_ZTV11S20291C9_nt[6]),  6,26},
  {&(_ZTV11S20291C9_nt[12]),  12,26},
  {&(_ZTV11S20291C9_nt[18]),  18,26},
  {&(_ZTV11S20291C9_nt[21]),  21,26},
  {&(_ZTV11S20291C9_nt[25]),  25,26},
  {&(_tg__ZTV11S20291C3_nt__11S20291C9_nt[3]),  3,3},
  {&(_tg__ZTV11S20291C2_nt__11S20291C3_nt__11S20291C9_nt[3]),  3,4},
};
extern VTBL_ENTRY _ZTI11S20291C9_nt[];
VTBL_ENTRY *P__ZTI11S20291C9_nt = _ZTI11S20291C9_nt; 
extern  VTBL_ENTRY _ZTV11S20291C9_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20291C9_nt[];
Class_Descriptor cd_S20291C9_nt = {  "S20291C9_nt", // class name
  bases_S20291C9_nt, 5,
  &(vtc_S20291C9_nt[0]), // expected_vtbl_contents
  &(vtt_S20291C9_nt[0]), // expected_vtt_contents
  ABISELECT(1552,1284), // object size
  NSPAIRA(_ZTI11S20291C9_nt),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV11S20291C9_nt),26, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT11S20291C9_nt),7, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20291C6_nt  : S20291C7_nt , S20291C8_nt , S20291C2_nt {
  __tsi64 s20291c6f0[2];
  void *s20291c6f1[8];
  ::S20291C9_nt s20291c6f2;
  void *s20291c6f3;
  int s20291c6f4;
  ::S20291C9_nt s20291c6f5;
  int s20291c6f6;
  virtual  ~S20291C6_nt(); // _ZN11S20291C6_ntD1Ev
  virtual void  v11(); // _ZN11S20291C6_nt3v11Ev
  S20291C6_nt(); // tgen
};
//SIG(-1 S20291C6_nt) C1{ BC2{ v2 FL FD Fp Fc FC3{ v6 Fs:6 Fl Fs:4 FL[13] Fp} Fp[2] FL[8] Fs Fp FL:64} BC4{ v3 v4 v5 Fi[2] FL[2] FC3[3]} BC3 vd v1 FL[2] Fp[8] FC5{ BC3 VBC4 VBC6{ VBC3 Fp FC3 Fi:3} VBC2 FC2 Fs Fi[2]} Fp Fi FC5 Fi}


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

//skip512 S20291C6_nt

#else // __cplusplus

extern void _ZN11S20291C6_ntC1Ev();
extern void _ZN11S20291C6_ntD1Ev();
Name_Map name_map_S20291C6_nt[] = {
  NSPAIR(_ZN11S20291C6_ntC1Ev),
  NSPAIR(_ZN11S20291C6_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20291C7_nt;
extern VTBL_ENTRY _ZTI11S20291C7_nt[];
extern  VTBL_ENTRY _ZTV11S20291C7_nt[];
extern Class_Descriptor cd_S20291C8_nt;
extern VTBL_ENTRY _ZTI11S20291C8_nt[];
extern  VTBL_ENTRY _ZTV11S20291C8_nt[];
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
static Base_Class bases_S20291C6_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20291C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20291C8_nt,    ABISELECT(296,244), //bcp->offset
    6, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20291C2_nt,    ABISELECT(760,644), //bcp->offset
    11, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI11S20291C6_nt[];
extern void _ZN11S20291C7_nt2v7Ev();
extern void _ZN11S20291C6_ntD1Ev();
extern void _ZN11S20291C6_ntD0Ev();
extern void _ZN11S20291C6_nt3v11Ev();
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY vtc_S20291C6_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S20291C6_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20291C6_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S20291C6_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S20291C6_nt3v11Ev,
  ABISELECT(-296,-244),
  (VTBL_ENTRY)&(_ZTI11S20291C6_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
  ABISELECT(-760,-644),
  (VTBL_ENTRY)&(_ZTI11S20291C6_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern VTBL_ENTRY _ZTI11S20291C6_nt[];
VTBL_ENTRY *P__ZTI11S20291C6_nt = _ZTI11S20291C6_nt; 
extern  VTBL_ENTRY _ZTV11S20291C6_nt[];
Class_Descriptor cd_S20291C6_nt = {  "S20291C6_nt", // class name
  bases_S20291C6_nt, 3,
  &(vtc_S20291C6_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(4128,3396), // object size
  NSPAIRA(_ZTI11S20291C6_nt),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV11S20291C6_nt),14, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20291C11_nt  : S20291C7_nt {
  ::S20291C3_nt s20291c11f0;
  int s20291c11f1;
  void *s20291c11f2;
  int s20291c11f3;
  virtual  ~S20291C11_nt(); // _ZN12S20291C11_ntD1Ev
  virtual void  v13(); // _ZN12S20291C11_nt3v13Ev
  S20291C11_nt(); // tgen
};
//SIG(-1 S20291C11_nt) C1{ BC2{ v2 FL FD Fp Fc FC3{ v3 Fs:6 Fl Fs:4 FL[13] Fp} Fp[2] FL[8] Fs Fp FL:64} vd v1 FC4{ VBC3 Fp FC3 Fi:3} Fi Fp Fi}


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

//skip512 S20291C11_nt

#else // __cplusplus

extern void _ZN12S20291C11_ntC1Ev();
extern void _ZN12S20291C11_ntD1Ev();
Name_Map name_map_S20291C11_nt[] = {
  NSPAIR(_ZN12S20291C11_ntC1Ev),
  NSPAIR(_ZN12S20291C11_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20291C7_nt;
extern VTBL_ENTRY _ZTI11S20291C7_nt[];
extern  VTBL_ENTRY _ZTV11S20291C7_nt[];
static Base_Class bases_S20291C11_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20291C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI12S20291C11_nt[];
extern void _ZN11S20291C7_nt2v7Ev();
extern void _ZN12S20291C11_ntD1Ev();
extern void _ZN12S20291C11_ntD0Ev();
extern void _ZN12S20291C11_nt3v13Ev();
static  VTBL_ENTRY vtc_S20291C11_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI12S20291C11_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&_ZN12S20291C11_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S20291C11_ntD0Ev,
  (VTBL_ENTRY)&_ZN12S20291C11_nt3v13Ev,
};
extern VTBL_ENTRY _ZTI12S20291C11_nt[];
VTBL_ENTRY *P__ZTI12S20291C11_nt = _ZTI12S20291C11_nt; 
extern  VTBL_ENTRY _ZTV12S20291C11_nt[];
Class_Descriptor cd_S20291C11_nt = {  "S20291C11_nt", // class name
  bases_S20291C11_nt, 1,
  &(vtc_S20291C11_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(640,516), // object size
  NSPAIRA(_ZTI12S20291C11_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV12S20291C11_nt),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20291C10_nt  : virtual S20291C7_nt , virtual S20291C6_nt , virtual S20291C2_nt , virtual S20291C3_nt {
  __tsi64 s20291c10f0:44;
  void *s20291c10f1;
  int s20291c10f2;
  ::S20291C9_nt s20291c10f3;
  __tsi64 s20291c10f4[2];
  int s20291c10f5[3];
  ::S20291C6_nt s20291c10f6;
  char s20291c10f7:7;
  ::S20291C11_nt s20291c10f8;
  ~S20291C10_nt(); // tgen
  S20291C10_nt(); // tgen
};
//SIG(-1 S20291C10_nt) C1{ VBC2{ v1 FL FD Fp Fc FC3{ v5 Fs:6 Fl Fs:4 FL[13] Fp} Fp[2] FL[8] Fs Fp FL:64} VBC4{ BC2 BC5{ v2 v3 v4 Fi[2] FL[2] FC3[3]} BC3 vd v6 FL[2] Fp[8] FC6{ BC3 VBC5 VBC7{ VBC3 Fp FC3 Fi:3} VBC2 FC2 Fs Fi[2]} Fp Fi FC6 Fi} VBC3 VBC7 FL:44 Fp Fi FC6 FL[2] Fi[3] FC4 Fc:7 FC8{ BC2 vd v7 FC7 Fi Fp Fi}}


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

//skip512 S20291C10_nt

#else // __cplusplus

extern void _ZN12S20291C10_ntC1Ev();
extern void _ZN12S20291C10_ntD1Ev();
Name_Map name_map_S20291C10_nt[] = {
  NSPAIR(_ZN12S20291C10_ntC1Ev),
  NSPAIR(_ZN12S20291C10_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20291C7_nt;
extern VTBL_ENTRY _ZTI11S20291C7_nt[];
extern  VTBL_ENTRY _ZTV11S20291C7_nt[];
extern Class_Descriptor cd_S20291C7_nt;
extern VTBL_ENTRY _ZTI11S20291C7_nt[];
extern  VTBL_ENTRY _ZTV11S20291C7_nt[];
extern Class_Descriptor cd_S20291C8_nt;
extern VTBL_ENTRY _ZTI11S20291C8_nt[];
extern  VTBL_ENTRY _ZTV11S20291C8_nt[];
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
extern Class_Descriptor cd_S20291C6_nt;
extern VTBL_ENTRY _ZTI11S20291C6_nt[];
extern  VTBL_ENTRY _ZTV11S20291C6_nt[];
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
extern Class_Descriptor cd_S20291C3_nt;
extern VTBL_ENTRY _ZTI11S20291C3_nt[];
extern  VTBL_ENTRY _ZTV11S20291C3_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20291C3_nt[];
static Base_Class bases_S20291C10_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20291C7_nt,    ABISELECT(6400,5248), //bcp->offset
    8, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20291C7_nt,    ABISELECT(6704,5492), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20291C8_nt,    ABISELECT(7000,5736), //bcp->offset
    25, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20291C2_nt,    ABISELECT(7464,6136), //bcp->offset
    30, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20291C6_nt,    ABISELECT(6704,5492), //bcp->offset
    12, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20291C2_nt,    ABISELECT(10824,8888), //bcp->offset
    33, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20291C3_nt,    ABISELECT(10968,9012), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI12S20291C10_nt[];
extern void _ZN12S20291C10_ntD1Ev();
extern void _ZN12S20291C10_ntD0Ev();
extern void _ZN11S20291C7_nt2v7Ev();
extern void _ZN11S20291C7_nt2v7Ev();
extern void ABISELECT(_ZTv0_n32_N12S20291C10_ntD1Ev,_ZTv0_n16_N12S20291C10_ntD1Ev)();
extern void ABISELECT(_ZThn6704_N12S20291C10_ntD1Ev,_ZThn5492_N12S20291C10_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N12S20291C10_ntD0Ev,_ZTv0_n16_N12S20291C10_ntD0Ev)();
extern void ABISELECT(_ZThn6704_N12S20291C10_ntD0Ev,_ZThn5492_N12S20291C10_ntD0Ev)() __attribute__((weak));
extern void _ZN11S20291C6_nt3v11Ev();
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY vtc_S20291C10_nt[] = {
  ABISELECT(10968,9012),
  ABISELECT(10824,8888),
  ABISELECT(6704,5492),
  ABISELECT(6400,5248),
  0,
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN12S20291C10_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S20291C10_ntD0Ev,
  0,
  ABISELECT(-6400,-5248),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-6704,-5492),
  0,
  ABISELECT(-6704,-5492),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C10_ntD1Ev,_ZTv0_n16_N12S20291C10_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C10_ntD0Ev,_ZTv0_n16_N12S20291C10_ntD0Ev),
  (VTBL_ENTRY)&_ZN11S20291C6_nt3v11Ev,
  ABISELECT(-7000,-5736),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
  ABISELECT(-7464,-6136),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  0,
  ABISELECT(-10824,-8888),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  ABISELECT(-144,-124),
  ABISELECT(-10968,-9012),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
};
extern VTBL_ENTRY _ZTV12S20291C10_nt[];
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__12S20291C10_nt[] = {
  ABISELECT(-144,-124),
  0,
  (VTBL_ENTRY)&(_ZTI11S20291C3_nt[0]),
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__11S20291C3_nt__12S20291C10_nt[] = {
  0,
  ABISELECT(144,124),
  (VTBL_ENTRY)&(_ZTI11S20291C3_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
static  VTT_ENTRY vtt_S20291C10_nt[] = {
  {&(_ZTV12S20291C10_nt[6]),  6,40},
  {&(_ZTV12S20291C10_nt[11]),  11,40},
  {&(_ZTV12S20291C10_nt[21]),  21,40},
  {&(_ZTV12S20291C10_nt[27]),  27,40},
  {&(_ZTV12S20291C10_nt[32]),  32,40},
  {&(_ZTV12S20291C10_nt[36]),  36,40},
  {&(_ZTV12S20291C10_nt[40]),  40,40},
  {&(_tg__ZTV11S20291C3_nt__12S20291C10_nt[3]),  3,3},
  {&(_tg__ZTV11S20291C2_nt__11S20291C3_nt__12S20291C10_nt[3]),  3,4},
};
extern VTBL_ENTRY _ZTI12S20291C10_nt[];
VTBL_ENTRY *P__ZTI12S20291C10_nt = _ZTI12S20291C10_nt; 
extern  VTBL_ENTRY _ZTV12S20291C10_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20291C10_nt[];
static VTBL_ENTRY alt_thunk_names5[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N12S20291C10_ntD0Ev,_ZTv0_n16_N12S20291C10_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6704_N12S20291C10_ntD0Ev,_ZThn5492_N12S20291C10_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N12S20291C10_ntD1Ev,_ZTv0_n16_N12S20291C10_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6704_N12S20291C10_ntD1Ev,_ZThn5492_N12S20291C10_ntD1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20291C10_nt = {  "S20291C10_nt", // class name
  bases_S20291C10_nt, 7,
  &(vtc_S20291C10_nt[0]), // expected_vtbl_contents
  &(vtt_S20291C10_nt[0]), // expected_vtt_contents
  ABISELECT(11136,9148), // object size
  NSPAIRA(_ZTI12S20291C10_nt),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV12S20291C10_nt),40, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT12S20291C10_nt),9, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names5,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20291C5_nt  : virtual S20291C6_nt , virtual S20291C2_nt , virtual S20291C3_nt , S20291C9_nt , S20291C10_nt {
  ::S20291C6_nt s20291c5f0;
  __tsi64 s20291c5f1;
  char s20291c5f2:7;
  virtual void  v12(); // _ZN11S20291C5_nt3v12Ev
  ~S20291C5_nt(); // tgen
  S20291C5_nt(); // tgen
};
//SIG(-1 S20291C5_nt) C1{ VBC2{ BC3{ v2 FL FD Fp Fc FC4{ v6 Fs:6 Fl Fs:4 FL[13] Fp} Fp[2] FL[8] Fs Fp FL:64} BC5{ v3 v4 v5 Fi[2] FL[2] FC4[3]} BC4 vd v7 FL[2] Fp[8] FC6{ BC4 VBC5 VBC7{ VBC4 Fp FC4 Fi:3} VBC3 FC3 Fs Fi[2]} Fp Fi FC6 Fi} VBC4 VBC7 BC6 BC8{ VBC3 VBC2 VBC4 VBC7 FL:44 Fp Fi FC6 FL[2] Fi[3] FC2 Fc:7 FC9{ BC3 vd v8 FC7 Fi Fp Fi}} v1 FC2 FL Fc:7}


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

//skip512 S20291C5_nt

#else // __cplusplus

extern void _ZN11S20291C5_ntC1Ev();
extern void _ZN11S20291C5_ntD1Ev();
Name_Map name_map_S20291C5_nt[] = {
  NSPAIR(_ZN11S20291C5_ntC1Ev),
  NSPAIR(_ZN11S20291C5_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20291C7_nt;
extern VTBL_ENTRY _ZTI11S20291C7_nt[];
extern  VTBL_ENTRY _ZTV11S20291C7_nt[];
extern Class_Descriptor cd_S20291C8_nt;
extern VTBL_ENTRY _ZTI11S20291C8_nt[];
extern  VTBL_ENTRY _ZTV11S20291C8_nt[];
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
extern Class_Descriptor cd_S20291C6_nt;
extern VTBL_ENTRY _ZTI11S20291C6_nt[];
extern  VTBL_ENTRY _ZTV11S20291C6_nt[];
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
extern Class_Descriptor cd_S20291C3_nt;
extern VTBL_ENTRY _ZTI11S20291C3_nt[];
extern  VTBL_ENTRY _ZTV11S20291C3_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20291C3_nt[];
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
extern Class_Descriptor cd_S20291C8_nt;
extern VTBL_ENTRY _ZTI11S20291C8_nt[];
extern  VTBL_ENTRY _ZTV11S20291C8_nt[];
extern Class_Descriptor cd_S20291C7_nt;
extern VTBL_ENTRY _ZTI11S20291C7_nt[];
extern  VTBL_ENTRY _ZTV11S20291C7_nt[];
extern Class_Descriptor cd_S20291C9_nt;
extern VTBL_ENTRY _ZTI11S20291C9_nt[];
extern  VTBL_ENTRY _ZTV11S20291C9_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20291C9_nt[];
extern Class_Descriptor cd_S20291C10_nt;
extern VTBL_ENTRY _ZTI12S20291C10_nt[];
extern  VTBL_ENTRY _ZTV12S20291C10_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20291C10_nt[];
static Base_Class bases_S20291C5_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20291C7_nt,    ABISELECT(11008,9036), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20291C8_nt,    ABISELECT(11304,9280), //bcp->offset
    32, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20291C2_nt,    ABISELECT(11768,9680), //bcp->offset
    37, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20291C6_nt,    ABISELECT(11008,9036), //bcp->offset
    19, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20291C2_nt,    ABISELECT(15128,12432), //bcp->offset
    40, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20291C3_nt,    ABISELECT(15272,12556), //bcp->offset
    44, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20291C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20291C8_nt,    ABISELECT(15440,12692), //bcp->offset
    47, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S20291C7_nt,    ABISELECT(15904,13092), //bcp->offset
    55, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S20291C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20291C10_nt,    ABISELECT(464,380), //bcp->offset
    11, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI11S20291C5_nt[];
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C5_nt3v12Ev();
extern void _ZN11S20291C5_ntD1Ev();
extern void _ZN11S20291C5_ntD0Ev();
extern void ABISELECT(_ZThn464_N11S20291C5_ntD1Ev,_ZThn380_N11S20291C5_ntD1Ev)();
extern void ABISELECT(_ZThn464_N11S20291C5_ntD0Ev,_ZThn380_N11S20291C5_ntD0Ev)();
extern void _ZN11S20291C7_nt2v7Ev();
extern void ABISELECT(_ZTv0_n32_N11S20291C5_ntD1Ev,_ZTv0_n16_N11S20291C5_ntD1Ev)();
extern void ABISELECT(_ZThn11008_N11S20291C5_ntD1Ev,_ZThn9036_N11S20291C5_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N11S20291C5_ntD0Ev,_ZTv0_n16_N11S20291C5_ntD0Ev)();
extern void ABISELECT(_ZThn11008_N11S20291C5_ntD0Ev,_ZThn9036_N11S20291C5_ntD0Ev)() __attribute__((weak));
extern void _ZN11S20291C6_nt3v11Ev();
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY vtc_S20291C5_nt[] = {
  ABISELECT(11008,9036),
  ABISELECT(15904,13092),
  ABISELECT(15128,12432),
  ABISELECT(15272,12556),
  ABISELECT(15440,12692),
  0,
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S20291C5_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S20291C5_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S20291C5_ntD0Ev,
  ABISELECT(14808,12176),
  ABISELECT(14664,12052),
  ABISELECT(10544,8656),
  ABISELECT(15440,12712),
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N11S20291C5_ntD1Ev,_ZThn380_N11S20291C5_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N11S20291C5_ntD0Ev,_ZThn380_N11S20291C5_ntD0Ev),
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-11008,-9036),
  0,
  ABISELECT(-11008,-9036),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N11S20291C5_ntD1Ev,_ZTv0_n16_N11S20291C5_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N11S20291C5_ntD0Ev,_ZTv0_n16_N11S20291C5_ntD0Ev),
  (VTBL_ENTRY)&_ZN11S20291C6_nt3v11Ev,
  ABISELECT(-11304,-9280),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
  ABISELECT(-11768,-9680),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  0,
  ABISELECT(-15128,-12432),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  ABISELECT(-144,-124),
  ABISELECT(-15272,-12556),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  0,
  0,
  0,
  ABISELECT(-15440,-12692),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
  0,
  ABISELECT(-15904,-13092),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern VTBL_ENTRY _ZTV11S20291C5_nt[];
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C9_nt__11S20291C5_nt[] = {
  ABISELECT(15904,13092),
  ABISELECT(15128,12432),
  ABISELECT(15272,12556),
  ABISELECT(15440,12692),
  0,
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt__11S20291C9_nt__11S20291C5_nt[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-12692),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__11S20291C9_nt__11S20291C5_nt[] = {
  ABISELECT(-144,-124),
  ABISELECT(-15272,-12556),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__A1__11S20291C9_nt__11S20291C5_nt[] = {
  0,
  ABISELECT(-15128,-12432),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__11S20291C9_nt__11S20291C5_nt[] = {
  0,
  ABISELECT(-15904,-13092),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern void _ZN12S20291C10_ntD1Ev();
extern void _ZN12S20291C10_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV12S20291C10_nt__11S20291C5_nt[] = {
  ABISELECT(14808,12176),
  ABISELECT(14664,12052),
  ABISELECT(10544,8656),
  ABISELECT(15440,12712),
  0,
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN12S20291C10_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S20291C10_ntD0Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__12S20291C10_nt__11S20291C5_nt[] = {
  0,
  ABISELECT(-15440,-12712),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
extern void ABISELECT(_ZTv0_n32_N12S20291C10_ntD1Ev,_ZTv0_n16_N12S20291C10_ntD1Ev)();
extern void ABISELECT(_ZThn10544_N12S20291C10_ntD1Ev,_ZThn8656_N12S20291C10_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N12S20291C10_ntD0Ev,_ZTv0_n16_N12S20291C10_ntD0Ev)();
extern void ABISELECT(_ZThn10544_N12S20291C10_ntD0Ev,_ZThn8656_N12S20291C10_ntD0Ev)() __attribute__((weak));
extern void _ZN11S20291C6_nt3v11Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C6_nt__12S20291C10_nt__11S20291C5_nt[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-10544,-8656),
  0,
  ABISELECT(-10544,-8656),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C10_ntD1Ev,_ZTv0_n16_N12S20291C10_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C10_ntD0Ev,_ZTv0_n16_N12S20291C10_ntD0Ev),
  (VTBL_ENTRY)&_ZN11S20291C6_nt3v11Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt11S20291C6_nt__12S20291C10_nt__11S20291C5_nt[] = {
  ABISELECT(-10840,-8900),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt11S20291C6_nt__12S20291C10_nt__11S20291C5_nt[] = {
  ABISELECT(-11304,-9300),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__A1__12S20291C10_nt__11S20291C5_nt[] = {
  0,
  ABISELECT(-14664,-12052),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__12S20291C10_nt__11S20291C5_nt[] = {
  ABISELECT(-144,-124),
  ABISELECT(-14808,-12176),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__11S20291C5_nt[] = {
  ABISELECT(-144,-124),
  0,
  (VTBL_ENTRY)&(_ZTI11S20291C3_nt[0]),
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__11S20291C3_nt__11S20291C5_nt[] = {
  0,
  ABISELECT(144,124),
  (VTBL_ENTRY)&(_ZTI11S20291C3_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
static  VTT_ENTRY vtt_S20291C5_nt[] = {
  {&(_ZTV11S20291C5_nt[7]),  7,59},
  {&(_tg__ZTV11S20291C9_nt__11S20291C5_nt[6]),  6,7},
  {&(_tg__ZTV11S20291C8_nt__11S20291C9_nt__11S20291C5_nt[5]),  5,8},
  {&(_tg__ZTV11S20291C3_nt__11S20291C9_nt__11S20291C5_nt[3]),  3,3},
  {&(_tg__ZTV11S20291C2_nt__A1__11S20291C9_nt__11S20291C5_nt[3]),  3,4},
  {&(_tg__ZTV11S20291C7_nt__11S20291C9_nt__11S20291C5_nt[3]),  3,4},
  {&(_tg__ZTV12S20291C10_nt__11S20291C5_nt[6]),  6,8},
  {&(_tg__ZTV11S20291C7_nt__12S20291C10_nt__11S20291C5_nt[3]),  3,4},
  {&(_tg__ZTV11S20291C6_nt__12S20291C10_nt__11S20291C5_nt[9]),  9,13},
  {&(_tg__ZTV11S20291C8_nt11S20291C6_nt__12S20291C10_nt__11S20291C5_nt[2]),  2,5},
  {&(_tg__ZTV11S20291C2_nt11S20291C6_nt__12S20291C10_nt__11S20291C5_nt[2]),  2,3},
  {&(_tg__ZTV11S20291C2_nt__A1__12S20291C10_nt__11S20291C5_nt[3]),  3,4},
  {&(_tg__ZTV11S20291C3_nt__12S20291C10_nt__11S20291C5_nt[3]),  3,3},
  {&(_ZTV11S20291C5_nt[28]),  28,59},
  {&(_ZTV11S20291C5_nt[34]),  34,59},
  {&(_ZTV11S20291C5_nt[39]),  39,59},
  {&(_ZTV11S20291C5_nt[43]),  43,59},
  {&(_ZTV11S20291C5_nt[47]),  47,59},
  {&(_ZTV11S20291C5_nt[52]),  52,59},
  {&(_ZTV11S20291C5_nt[58]),  58,59},
  {&(_ZTV11S20291C5_nt[17]),  17,59},
  {&(_tg__ZTV11S20291C3_nt__11S20291C5_nt[3]),  3,3},
  {&(_tg__ZTV11S20291C2_nt__11S20291C3_nt__11S20291C5_nt[3]),  3,4},
};
extern VTBL_ENTRY _ZTI11S20291C5_nt[];
VTBL_ENTRY *P__ZTI11S20291C5_nt = _ZTI11S20291C5_nt; 
extern  VTBL_ENTRY _ZTV11S20291C5_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20291C5_nt[];
static VTBL_ENTRY alt_thunk_names6[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N12S20291C10_ntD0Ev,_ZTv0_n16_N12S20291C10_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N12S20291C10_ntD0Ev,_ZThn8656_N12S20291C10_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N12S20291C10_ntD1Ev,_ZTv0_n16_N12S20291C10_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N12S20291C10_ntD1Ev,_ZThn8656_N12S20291C10_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N11S20291C5_ntD0Ev,_ZTv0_n16_N11S20291C5_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N11S20291C5_ntD0Ev,_ZThn9036_N11S20291C5_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N11S20291C5_ntD1Ev,_ZTv0_n16_N11S20291C5_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N11S20291C5_ntD1Ev,_ZThn9036_N11S20291C5_ntD1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20291C5_nt = {  "S20291C5_nt", // class name
  bases_S20291C5_nt, 11,
  &(vtc_S20291C5_nt[0]), // expected_vtbl_contents
  &(vtt_S20291C5_nt[0]), // expected_vtt_contents
  ABISELECT(16208,13336), // object size
  NSPAIRA(_ZTI11S20291C5_nt),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV11S20291C5_nt),59, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT11S20291C5_nt),23, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names6,
};
#endif // __cplusplus

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

#ifdef __cplusplus

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


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

//skip512 S20291C13_nt

#else // __cplusplus

extern void _ZN12S20291C13_ntC1Ev();
extern void _ZN12S20291C13_ntD1Ev();
Name_Map name_map_S20291C13_nt[] = {
  NSPAIR(_ZN12S20291C13_ntC1Ev),
  NSPAIR(_ZN12S20291C13_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20291C7_nt;
extern VTBL_ENTRY _ZTI11S20291C7_nt[];
extern  VTBL_ENTRY _ZTV11S20291C7_nt[];
extern Class_Descriptor cd_S20291C8_nt;
extern VTBL_ENTRY _ZTI11S20291C8_nt[];
extern  VTBL_ENTRY _ZTV11S20291C8_nt[];
extern Class_Descriptor cd_S20291C7_nt;
extern VTBL_ENTRY _ZTI11S20291C7_nt[];
extern  VTBL_ENTRY _ZTV11S20291C7_nt[];
extern Class_Descriptor cd_S20291C8_nt;
extern VTBL_ENTRY _ZTI11S20291C8_nt[];
extern  VTBL_ENTRY _ZTV11S20291C8_nt[];
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
extern Class_Descriptor cd_S20291C6_nt;
extern VTBL_ENTRY _ZTI11S20291C6_nt[];
extern  VTBL_ENTRY _ZTV11S20291C6_nt[];
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
extern Class_Descriptor cd_S20291C3_nt;
extern VTBL_ENTRY _ZTI11S20291C3_nt[];
extern  VTBL_ENTRY _ZTV11S20291C3_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20291C3_nt[];
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
extern Class_Descriptor cd_S20291C8_nt;
extern VTBL_ENTRY _ZTI11S20291C8_nt[];
extern  VTBL_ENTRY _ZTV11S20291C8_nt[];
extern Class_Descriptor cd_S20291C9_nt;
extern VTBL_ENTRY _ZTI11S20291C9_nt[];
extern  VTBL_ENTRY _ZTV11S20291C9_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20291C9_nt[];
extern Class_Descriptor cd_S20291C10_nt;
extern VTBL_ENTRY _ZTI12S20291C10_nt[];
extern  VTBL_ENTRY _ZTV12S20291C10_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20291C10_nt[];
extern Class_Descriptor cd_S20291C5_nt;
extern VTBL_ENTRY _ZTI11S20291C5_nt[];
extern  VTBL_ENTRY _ZTV11S20291C5_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20291C5_nt[];
static Base_Class bases_S20291C13_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20291C7_nt,    ABISELECT(480,408), //bcp->offset
    13, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20291C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20291C7_nt,    ABISELECT(11792,9688), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20291C8_nt,    ABISELECT(12088,9932), //bcp->offset
    52, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20291C2_nt,    ABISELECT(12552,10332), //bcp->offset
    57, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20291C6_nt,    ABISELECT(11792,9688), //bcp->offset
    39, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S20291C2_nt,    ABISELECT(15912,13084), //bcp->offset
    60, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20291C3_nt,    ABISELECT(16056,13208), //bcp->offset
    64, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S20291C2_nt,    ABISELECT(784,652), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20291C8_nt,    ABISELECT(16224,13344), //bcp->offset
    67, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S20291C9_nt,    ABISELECT(784,652), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20291C10_nt,    ABISELECT(1248,1032), //bcp->offset
    31, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20291C5_nt,    ABISELECT(784,652), //bcp->offset
    17, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI12S20291C13_nt[];
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
extern void _ZN12S20291C13_ntD1Ev();
extern void _ZN12S20291C13_ntD0Ev();
extern void _ZN11S20291C7_nt2v7Ev();
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C5_nt3v12Ev();
extern void ABISELECT(_ZTv0_n80_N12S20291C13_ntD1Ev,_ZTv0_n40_N12S20291C13_ntD1Ev)();
extern void ABISELECT(_ZThn784_N12S20291C13_ntD1Ev,_ZThn652_N12S20291C13_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N12S20291C13_ntD0Ev,_ZTv0_n40_N12S20291C13_ntD0Ev)();
extern void ABISELECT(_ZThn784_N12S20291C13_ntD0Ev,_ZThn652_N12S20291C13_ntD0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn464_n80_N12S20291C13_ntD1Ev,_ZTvn380_n40_N12S20291C13_ntD1Ev)();
extern void ABISELECT(_ZTvn464_n80_N12S20291C13_ntD0Ev,_ZTvn380_n40_N12S20291C13_ntD0Ev)();
extern void _ZN11S20291C7_nt2v7Ev();
extern void ABISELECT(_ZTv0_n32_N12S20291C13_ntD1Ev,_ZTv0_n16_N12S20291C13_ntD1Ev)();
extern void ABISELECT(_ZThn11792_N12S20291C13_ntD1Ev,_ZThn9688_N12S20291C13_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N12S20291C13_ntD0Ev,_ZTv0_n16_N12S20291C13_ntD0Ev)();
extern void ABISELECT(_ZThn11792_N12S20291C13_ntD0Ev,_ZThn9688_N12S20291C13_ntD0Ev)() __attribute__((weak));
extern void _ZN11S20291C6_nt3v11Ev();
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY vtc_S20291C13_nt[] = {
  ABISELECT(16224,13344),
  ABISELECT(16056,13208),
  ABISELECT(15912,13084),
  ABISELECT(11792,9688),
  ABISELECT(784,652),
  ABISELECT(480,408),
  0,
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
  (VTBL_ENTRY)&_ZN12S20291C13_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S20291C13_ntD0Ev,
  0,
  ABISELECT(-480,-408),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  ABISELECT(-784,-652),
  0,
  0,
  ABISELECT(11008,9036),
  ABISELECT(-304,-244),
  ABISELECT(15128,12432),
  ABISELECT(15272,12556),
  ABISELECT(15440,12692),
  ABISELECT(-784,-652),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S20291C5_nt3v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N12S20291C13_ntD1Ev,_ZTv0_n40_N12S20291C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N12S20291C13_ntD0Ev,_ZTv0_n40_N12S20291C13_ntD0Ev),
  ABISELECT(14808,12176),
  ABISELECT(14664,12052),
  ABISELECT(10544,8656),
  ABISELECT(-768,-624),
  ABISELECT(-1248,-1032),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N12S20291C13_ntD1Ev,_ZTvn380_n40_N12S20291C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N12S20291C13_ntD0Ev,_ZTvn380_n40_N12S20291C13_ntD0Ev),
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-11792,-9688),
  0,
  ABISELECT(-11792,-9688),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C13_ntD1Ev,_ZTv0_n16_N12S20291C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C13_ntD0Ev,_ZTv0_n16_N12S20291C13_ntD0Ev),
  (VTBL_ENTRY)&_ZN11S20291C6_nt3v11Ev,
  ABISELECT(-12088,-9932),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
  ABISELECT(-12552,-10332),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  0,
  ABISELECT(-15912,-13084),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  ABISELECT(-144,-124),
  ABISELECT(-16056,-13208),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  0,
  0,
  0,
  ABISELECT(-16224,-13344),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern VTBL_ENTRY _ZTV12S20291C13_nt[];
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C5_nt3v12Ev();
extern void _ZN11S20291C5_ntD1Ev();
extern void _ZN11S20291C5_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C5_nt__12S20291C13_nt[] = {
  ABISELECT(11008,9036),
  ABISELECT(-304,-244),
  ABISELECT(15128,12432),
  ABISELECT(15272,12556),
  ABISELECT(15440,12692),
  0,
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S20291C5_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S20291C5_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S20291C5_ntD0Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C9_nt11S20291C5_nt__12S20291C13_nt[] = {
  ABISELECT(-304,-244),
  ABISELECT(15128,12432),
  ABISELECT(15272,12556),
  ABISELECT(15440,12692),
  0,
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt__11S20291C9_nt11S20291C5_nt__12S20291C13_nt[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-12692),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__11S20291C9_nt11S20291C5_nt__12S20291C13_nt[] = {
  ABISELECT(-144,-124),
  ABISELECT(-15272,-12556),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__A1__11S20291C9_nt11S20291C5_nt__12S20291C13_nt[] = {
  0,
  ABISELECT(-15128,-12432),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__11S20291C9_nt11S20291C5_nt__12S20291C13_nt[] = {
  0,
  ABISELECT(304,244),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern void _ZN12S20291C10_ntD1Ev();
extern void _ZN12S20291C10_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV12S20291C10_nt11S20291C5_nt__12S20291C13_nt[] = {
  ABISELECT(14808,12176),
  ABISELECT(14664,12052),
  ABISELECT(10544,8656),
  ABISELECT(-768,-624),
  0,
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN12S20291C10_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S20291C10_ntD0Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__12S20291C10_nt11S20291C5_nt__12S20291C13_nt[] = {
  0,
  ABISELECT(768,624),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
extern void ABISELECT(_ZTv0_n32_N12S20291C10_ntD1Ev,_ZTv0_n16_N12S20291C10_ntD1Ev)();
extern void ABISELECT(_ZThn10544_N12S20291C10_ntD1Ev,_ZThn8656_N12S20291C10_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N12S20291C10_ntD0Ev,_ZTv0_n16_N12S20291C10_ntD0Ev)();
extern void ABISELECT(_ZThn10544_N12S20291C10_ntD0Ev,_ZThn8656_N12S20291C10_ntD0Ev)() __attribute__((weak));
extern void _ZN11S20291C6_nt3v11Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C6_nt__12S20291C10_nt11S20291C5_nt__12S20291C13_nt[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-10544,-8656),
  0,
  ABISELECT(-10544,-8656),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C10_ntD1Ev,_ZTv0_n16_N12S20291C10_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C10_ntD0Ev,_ZTv0_n16_N12S20291C10_ntD0Ev),
  (VTBL_ENTRY)&_ZN11S20291C6_nt3v11Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt11S20291C6_nt__12S20291C10_nt11S20291C5_nt__12S20291C13_nt[] = {
  ABISELECT(-10840,-8900),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt11S20291C6_nt__12S20291C10_nt11S20291C5_nt__12S20291C13_nt[] = {
  ABISELECT(-11304,-9300),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__A1__12S20291C10_nt11S20291C5_nt__12S20291C13_nt[] = {
  0,
  ABISELECT(-14664,-12052),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__12S20291C10_nt11S20291C5_nt__12S20291C13_nt[] = {
  ABISELECT(-144,-124),
  ABISELECT(-14808,-12176),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
};
extern void _ZN11S20291C7_nt2v7Ev();
extern void ABISELECT(_ZTv0_n32_N11S20291C5_ntD1Ev,_ZTv0_n16_N11S20291C5_ntD1Ev)();
extern void ABISELECT(_ZThn11008_N11S20291C5_ntD1Ev,_ZThn9036_N11S20291C5_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N11S20291C5_ntD0Ev,_ZTv0_n16_N11S20291C5_ntD0Ev)();
extern void ABISELECT(_ZThn11008_N11S20291C5_ntD0Ev,_ZThn9036_N11S20291C5_ntD0Ev)() __attribute__((weak));
extern void _ZN11S20291C6_nt3v11Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C6_nt__11S20291C5_nt__12S20291C13_nt[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-11008,-9036),
  0,
  ABISELECT(-11008,-9036),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N11S20291C5_ntD1Ev,_ZTv0_n16_N11S20291C5_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N11S20291C5_ntD0Ev,_ZTv0_n16_N11S20291C5_ntD0Ev),
  (VTBL_ENTRY)&_ZN11S20291C6_nt3v11Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt11S20291C6_nt__11S20291C5_nt__12S20291C13_nt[] = {
  ABISELECT(-11304,-9280),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt11S20291C6_nt__11S20291C5_nt__12S20291C13_nt[] = {
  ABISELECT(-11768,-9680),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__A1__11S20291C5_nt__12S20291C13_nt[] = {
  0,
  ABISELECT(-15128,-12432),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__11S20291C5_nt__12S20291C13_nt[] = {
  ABISELECT(-144,-124),
  ABISELECT(-15272,-12556),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt__A1__11S20291C5_nt__12S20291C13_nt[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-12692),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__A1__11S20291C5_nt__12S20291C13_nt[] = {
  0,
  ABISELECT(304,244),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern void ABISELECT(_ZThn464_N11S20291C5_ntD1Ev,_ZThn380_N11S20291C5_ntD1Ev)();
extern void ABISELECT(_ZThn464_N11S20291C5_ntD0Ev,_ZThn380_N11S20291C5_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV12S20291C10_nt__11S20291C5_nt__12S20291C13_nt[] = {
  ABISELECT(14808,12176),
  ABISELECT(14664,12052),
  ABISELECT(10544,8656),
  ABISELECT(-768,-624),
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N11S20291C5_ntD1Ev,_ZThn380_N11S20291C5_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N11S20291C5_ntD0Ev,_ZThn380_N11S20291C5_ntD0Ev),
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__12S20291C13_nt[] = {
  ABISELECT(-144,-124),
  0,
  (VTBL_ENTRY)&(_ZTI11S20291C3_nt[0]),
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__11S20291C3_nt__12S20291C13_nt[] = {
  0,
  ABISELECT(144,124),
  (VTBL_ENTRY)&(_ZTI11S20291C3_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
static  VTT_ENTRY vtt_S20291C13_nt[] = {
  {&(_ZTV12S20291C13_nt[8]),  8,75},
  {&(_ZTV12S20291C13_nt[16]),  16,75},
  {&(_ZTV12S20291C13_nt[27]),  27,75},
  {&(_ZTV12S20291C13_nt[48]),  48,75},
  {&(_ZTV12S20291C13_nt[54]),  54,75},
  {&(_ZTV12S20291C13_nt[59]),  59,75},
  {&(_ZTV12S20291C13_nt[63]),  63,75},
  {&(_ZTV12S20291C13_nt[67]),  67,75},
  {&(_ZTV12S20291C13_nt[72]),  72,75},
  {&(_ZTV12S20291C13_nt[37]),  37,75},
  {&(_tg__ZTV11S20291C5_nt__12S20291C13_nt[7]),  7,11},
  {&(_tg__ZTV11S20291C9_nt11S20291C5_nt__12S20291C13_nt[6]),  6,7},
  {&(_tg__ZTV11S20291C8_nt__11S20291C9_nt11S20291C5_nt__12S20291C13_nt[5]),  5,8},
  {&(_tg__ZTV11S20291C3_nt__11S20291C9_nt11S20291C5_nt__12S20291C13_nt[3]),  3,3},
  {&(_tg__ZTV11S20291C2_nt__A1__11S20291C9_nt11S20291C5_nt__12S20291C13_nt[3]),  3,4},
  {&(_tg__ZTV11S20291C7_nt__11S20291C9_nt11S20291C5_nt__12S20291C13_nt[3]),  3,4},
  {&(_tg__ZTV12S20291C10_nt11S20291C5_nt__12S20291C13_nt[6]),  6,8},
  {&(_tg__ZTV11S20291C7_nt__12S20291C10_nt11S20291C5_nt__12S20291C13_nt[3]),  3,4},
  {&(_tg__ZTV11S20291C6_nt__12S20291C10_nt11S20291C5_nt__12S20291C13_nt[9]),  9,13},
  {&(_tg__ZTV11S20291C8_nt11S20291C6_nt__12S20291C10_nt11S20291C5_nt__12S20291C13_nt[2]),  2,5},
  {&(_tg__ZTV11S20291C2_nt11S20291C6_nt__12S20291C10_nt11S20291C5_nt__12S20291C13_nt[2]),  2,3},
  {&(_tg__ZTV11S20291C2_nt__A1__12S20291C10_nt11S20291C5_nt__12S20291C13_nt[3]),  3,4},
  {&(_tg__ZTV11S20291C3_nt__12S20291C10_nt11S20291C5_nt__12S20291C13_nt[3]),  3,3},
  {&(_tg__ZTV11S20291C6_nt__11S20291C5_nt__12S20291C13_nt[9]),  9,13},
  {&(_tg__ZTV11S20291C8_nt11S20291C6_nt__11S20291C5_nt__12S20291C13_nt[2]),  2,5},
  {&(_tg__ZTV11S20291C2_nt11S20291C6_nt__11S20291C5_nt__12S20291C13_nt[2]),  2,3},
  {&(_tg__ZTV11S20291C2_nt__A1__11S20291C5_nt__12S20291C13_nt[3]),  3,4},
  {&(_tg__ZTV11S20291C3_nt__11S20291C5_nt__12S20291C13_nt[3]),  3,3},
  {&(_tg__ZTV11S20291C8_nt__A1__11S20291C5_nt__12S20291C13_nt[5]),  5,8},
  {&(_tg__ZTV11S20291C7_nt__A1__11S20291C5_nt__12S20291C13_nt[3]),  3,4},
  {&(_tg__ZTV12S20291C10_nt__11S20291C5_nt__12S20291C13_nt[6]),  6,8},
  {&(_tg__ZTV11S20291C3_nt__12S20291C13_nt[3]),  3,3},
  {&(_tg__ZTV11S20291C2_nt__11S20291C3_nt__12S20291C13_nt[3]),  3,4},
};
extern VTBL_ENTRY _ZTI12S20291C13_nt[];
VTBL_ENTRY *P__ZTI12S20291C13_nt = _ZTI12S20291C13_nt; 
extern  VTBL_ENTRY _ZTV12S20291C13_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20291C13_nt[];
static VTBL_ENTRY alt_thunk_names7[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N11S20291C5_ntD0Ev,_ZTv0_n16_N11S20291C5_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N11S20291C5_ntD0Ev,_ZThn9036_N11S20291C5_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N11S20291C5_ntD1Ev,_ZTv0_n16_N11S20291C5_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N11S20291C5_ntD1Ev,_ZThn9036_N11S20291C5_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N12S20291C10_ntD0Ev,_ZTv0_n16_N12S20291C10_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N12S20291C10_ntD0Ev,_ZThn8656_N12S20291C10_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N12S20291C10_ntD1Ev,_ZTv0_n16_N12S20291C10_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N12S20291C10_ntD1Ev,_ZThn8656_N12S20291C10_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N12S20291C13_ntD0Ev,_ZTv0_n16_N12S20291C13_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11792_N12S20291C13_ntD0Ev,_ZThn9688_N12S20291C13_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N12S20291C13_ntD1Ev,_ZTv0_n16_N12S20291C13_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11792_N12S20291C13_ntD1Ev,_ZThn9688_N12S20291C13_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N12S20291C13_ntD0Ev,_ZTv0_n40_N12S20291C13_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N12S20291C13_ntD0Ev,_ZThn652_N12S20291C13_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N12S20291C13_ntD1Ev,_ZTv0_n40_N12S20291C13_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N12S20291C13_ntD1Ev,_ZThn652_N12S20291C13_ntD1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20291C13_nt = {  "S20291C13_nt", // class name
  bases_S20291C13_nt, 13,
  &(vtc_S20291C13_nt[0]), // expected_vtbl_contents
  &(vtt_S20291C13_nt[0]), // expected_vtt_contents
  ABISELECT(16688,13744), // object size
  NSPAIRA(_ZTI12S20291C13_nt),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV12S20291C13_nt),75, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT12S20291C13_nt),33, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names7,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20291C12_nt  : S20291C2_nt , virtual S20291C7_nt , virtual S20291C13_nt , S20291C9_nt , S20291C11_nt {
  int s20291c12f0;
  ::S20291C9_nt s20291c12f1;
  int s20291c12f2;
  short s20291c12f3;
  __tsi64 s20291c12f4:8;
  int s20291c12f5;
  virtual  ~S20291C12_nt(); // _ZN12S20291C12_ntD2Ev
  virtual void  v14(); // _ZN12S20291C12_nt3v14Ev
  S20291C12_nt(); // tgen
};
//SIG(-1 S20291C12_nt) C1{ BC2{ v2 Fs:6 Fl Fs:4 FL[13] Fp} VBC3{ v3 FL FD Fp Fc FC2 Fp[2] FL[8] Fs Fp FL:64} VBC4{ VBC3 BC5{ v4 v5 v6 Fi[2] FL[2] FC2[3]} VBC6{ VBC7{ BC3 BC5 BC2 vd v7 FL[2] Fp[8] FC8{ BC2 VBC5 VBC9{ VBC2 Fp FC2 Fi:3} VBC3 FC3 Fs Fi[2]} Fp Fi FC8 Fi} VBC2 VBC9 BC8 BC10{ VBC3 VBC7 VBC2 VBC9 FL:44 Fp Fi FC8 FL[2] Fi[3] FC7 Fc:7 FC11{ BC3 vd v9 FC9 Fi Fp Fi}} v8 FC7 FL Fc:7} Fc:8 Fi} BC8 BC11 vd v1 Fi FC8 Fi Fs FL:8 Fi}


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

//skip512 S20291C12_nt

#else // __cplusplus

extern void _ZN12S20291C12_ntC1Ev();
extern void _ZN12S20291C12_ntD2Ev();
Name_Map name_map_S20291C12_nt[] = {
  NSPAIR(_ZN12S20291C12_ntC1Ev),
  NSPAIR(_ZN12S20291C12_ntD2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
extern Class_Descriptor cd_S20291C7_nt;
extern VTBL_ENTRY _ZTI11S20291C7_nt[];
extern  VTBL_ENTRY _ZTV11S20291C7_nt[];
extern Class_Descriptor cd_S20291C8_nt;
extern VTBL_ENTRY _ZTI11S20291C8_nt[];
extern  VTBL_ENTRY _ZTV11S20291C8_nt[];
extern Class_Descriptor cd_S20291C7_nt;
extern VTBL_ENTRY _ZTI11S20291C7_nt[];
extern  VTBL_ENTRY _ZTV11S20291C7_nt[];
extern Class_Descriptor cd_S20291C8_nt;
extern VTBL_ENTRY _ZTI11S20291C8_nt[];
extern  VTBL_ENTRY _ZTV11S20291C8_nt[];
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
extern Class_Descriptor cd_S20291C6_nt;
extern VTBL_ENTRY _ZTI11S20291C6_nt[];
extern  VTBL_ENTRY _ZTV11S20291C6_nt[];
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
extern Class_Descriptor cd_S20291C3_nt;
extern VTBL_ENTRY _ZTI11S20291C3_nt[];
extern  VTBL_ENTRY _ZTV11S20291C3_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20291C3_nt[];
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
extern Class_Descriptor cd_S20291C8_nt;
extern VTBL_ENTRY _ZTI11S20291C8_nt[];
extern  VTBL_ENTRY _ZTV11S20291C8_nt[];
extern Class_Descriptor cd_S20291C9_nt;
extern VTBL_ENTRY _ZTI11S20291C9_nt[];
extern  VTBL_ENTRY _ZTV11S20291C9_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20291C9_nt[];
extern Class_Descriptor cd_S20291C10_nt;
extern VTBL_ENTRY _ZTI12S20291C10_nt[];
extern  VTBL_ENTRY _ZTV12S20291C10_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20291C10_nt[];
extern Class_Descriptor cd_S20291C5_nt;
extern VTBL_ENTRY _ZTI11S20291C5_nt[];
extern  VTBL_ENTRY _ZTV11S20291C5_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20291C5_nt[];
extern Class_Descriptor cd_S20291C13_nt;
extern VTBL_ENTRY _ZTI12S20291C13_nt[];
extern  VTBL_ENTRY _ZTV12S20291C13_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20291C13_nt[];
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
extern Class_Descriptor cd_S20291C9_nt;
extern VTBL_ENTRY _ZTI11S20291C9_nt[];
extern  VTBL_ENTRY _ZTV11S20291C9_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20291C9_nt[];
extern Class_Descriptor cd_S20291C7_nt;
extern VTBL_ENTRY _ZTI11S20291C7_nt[];
extern  VTBL_ENTRY _ZTV11S20291C7_nt[];
extern Class_Descriptor cd_S20291C11_nt;
extern VTBL_ENTRY _ZTI12S20291C11_nt[];
extern  VTBL_ENTRY _ZTV12S20291C11_nt[];
static Base_Class bases_S20291C12_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20291C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20291C7_nt,    ABISELECT(2816,2320), //bcp->offset
    26, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20291C8_nt,    ABISELECT(3112,2564), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20291C7_nt,    ABISELECT(14592,12008), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20291C8_nt,    ABISELECT(14888,12252), //bcp->offset
    82, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20291C2_nt,    ABISELECT(15352,12652), //bcp->offset
    87, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20291C6_nt,    ABISELECT(14592,12008), //bcp->offset
    69, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S20291C2_nt,    ABISELECT(18712,15404), //bcp->offset
    90, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S20291C3_nt,    ABISELECT(18856,15528), //bcp->offset
    94, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S20291C2_nt,    ABISELECT(3584,2972), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20291C8_nt,    ABISELECT(19024,15664), //bcp->offset
    97, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S20291C9_nt,    ABISELECT(3584,2972), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20291C10_nt,    ABISELECT(4048,3352), //bcp->offset
    61, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20291C5_nt,    ABISELECT(3584,2972), //bcp->offset
    47, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S20291C13_nt,    ABISELECT(3112,2564), //bcp->offset
    30, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20291C2_nt,    ABISELECT(144,124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20291C9_nt,    ABISELECT(144,124), //bcp->offset
    13, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20291C7_nt,    ABISELECT(608,504), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20291C11_nt,    ABISELECT(608,504), //bcp->offset
    20, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI12S20291C12_nt[];
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN12S20291C12_ntD1Ev();
extern void _ZN12S20291C12_ntD0Ev();
extern void _ZN12S20291C12_nt3v14Ev();
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C7_nt2v7Ev();
extern void ABISELECT(_ZThn608_N12S20291C12_ntD1Ev,_ZThn504_N12S20291C12_ntD1Ev)();
extern void ABISELECT(_ZThn608_N12S20291C12_ntD0Ev,_ZThn504_N12S20291C12_ntD0Ev)();
extern void _ZN12S20291C11_nt3v13Ev();
extern void _ZN11S20291C7_nt2v7Ev();
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
extern void ABISELECT(_ZTv0_n96_N12S20291C12_ntD1Ev,_ZTv0_n48_N12S20291C12_ntD1Ev)();
extern void ABISELECT(_ZThn3112_N12S20291C12_ntD1Ev,_ZThn2564_N12S20291C12_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N12S20291C12_ntD0Ev,_ZTv0_n48_N12S20291C12_ntD0Ev)();
extern void ABISELECT(_ZThn3112_N12S20291C12_ntD0Ev,_ZThn2564_N12S20291C12_ntD0Ev)() __attribute__((weak));
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C5_nt3v12Ev();
extern void ABISELECT(_ZTv0_n80_N12S20291C12_ntD1Ev,_ZTv0_n40_N12S20291C12_ntD1Ev)();
extern void ABISELECT(_ZThn3584_N12S20291C12_ntD1Ev,_ZThn2972_N12S20291C12_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N12S20291C12_ntD0Ev,_ZTv0_n40_N12S20291C12_ntD0Ev)();
extern void ABISELECT(_ZThn3584_N12S20291C12_ntD0Ev,_ZThn2972_N12S20291C12_ntD0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn464_n80_N12S20291C12_ntD1Ev,_ZTvn380_n40_N12S20291C12_ntD1Ev)();
extern void ABISELECT(_ZTvn464_n80_N12S20291C12_ntD0Ev,_ZTvn380_n40_N12S20291C12_ntD0Ev)();
extern void _ZN11S20291C7_nt2v7Ev();
extern void ABISELECT(_ZTv0_n32_N12S20291C12_ntD1Ev,_ZTv0_n16_N12S20291C12_ntD1Ev)();
extern void ABISELECT(_ZThn14592_N12S20291C12_ntD1Ev,_ZThn12008_N12S20291C12_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N12S20291C12_ntD0Ev,_ZTv0_n16_N12S20291C12_ntD0Ev)();
extern void ABISELECT(_ZThn14592_N12S20291C12_ntD0Ev,_ZThn12008_N12S20291C12_ntD0Ev)() __attribute__((weak));
extern void _ZN11S20291C6_nt3v11Ev();
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY vtc_S20291C12_nt[] = {
  ABISELECT(19024,15664),
  ABISELECT(18856,15528),
  ABISELECT(18712,15404),
  ABISELECT(14592,12008),
  ABISELECT(3584,2972),
  ABISELECT(3112,2564),
  ABISELECT(2816,2320),
  0,
  (VTBL_ENTRY)&(_ZTI12S20291C12_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN12S20291C12_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S20291C12_ntD0Ev,
  (VTBL_ENTRY)&_ZN12S20291C12_nt3v14Ev,
  ABISELECT(2672,2196),
  ABISELECT(18568,15280),
  ABISELECT(18712,15404),
  ABISELECT(18880,15540),
  ABISELECT(-144,-124),
  (VTBL_ENTRY)&(_ZTI12S20291C12_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  ABISELECT(-608,-504),
  (VTBL_ENTRY)&(_ZTI12S20291C12_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn608_N12S20291C12_ntD1Ev,_ZThn504_N12S20291C12_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn608_N12S20291C12_ntD0Ev,_ZThn504_N12S20291C12_ntD0Ev),
  (VTBL_ENTRY)&_ZN12S20291C11_nt3v13Ev,
  0,
  ABISELECT(-2816,-2320),
  (VTBL_ENTRY)&(_ZTI12S20291C12_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  ABISELECT(-3112,-2564),
  0,
  0,
  0,
  ABISELECT(15912,13100),
  ABISELECT(15744,12964),
  ABISELECT(15600,12840),
  ABISELECT(11480,9444),
  ABISELECT(472,408),
  ABISELECT(-296,-244),
  ABISELECT(-3112,-2564),
  (VTBL_ENTRY)&(_ZTI12S20291C12_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N12S20291C12_ntD1Ev,_ZTv0_n48_N12S20291C12_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N12S20291C12_ntD0Ev,_ZTv0_n48_N12S20291C12_ntD0Ev),
  ABISELECT(-3584,-2972),
  0,
  0,
  ABISELECT(11008,9036),
  ABISELECT(-768,-652),
  ABISELECT(15128,12432),
  ABISELECT(15272,12556),
  ABISELECT(15440,12692),
  ABISELECT(-3584,-2972),
  (VTBL_ENTRY)&(_ZTI12S20291C12_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S20291C5_nt3v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N12S20291C12_ntD1Ev,_ZTv0_n40_N12S20291C12_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N12S20291C12_ntD0Ev,_ZTv0_n40_N12S20291C12_ntD0Ev),
  ABISELECT(14808,12176),
  ABISELECT(14664,12052),
  ABISELECT(10544,8656),
  ABISELECT(-1232,-1032),
  ABISELECT(-4048,-3352),
  (VTBL_ENTRY)&(_ZTI12S20291C12_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N12S20291C12_ntD1Ev,_ZTvn380_n40_N12S20291C12_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N12S20291C12_ntD0Ev,_ZTvn380_n40_N12S20291C12_ntD0Ev),
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-14592,-12008),
  0,
  ABISELECT(-14592,-12008),
  (VTBL_ENTRY)&(_ZTI12S20291C12_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C12_ntD1Ev,_ZTv0_n16_N12S20291C12_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C12_ntD0Ev,_ZTv0_n16_N12S20291C12_ntD0Ev),
  (VTBL_ENTRY)&_ZN11S20291C6_nt3v11Ev,
  ABISELECT(-14888,-12252),
  (VTBL_ENTRY)&(_ZTI12S20291C12_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
  ABISELECT(-15352,-12652),
  (VTBL_ENTRY)&(_ZTI12S20291C12_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  0,
  ABISELECT(-18712,-15404),
  (VTBL_ENTRY)&(_ZTI12S20291C12_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  ABISELECT(-144,-124),
  ABISELECT(-18856,-15528),
  (VTBL_ENTRY)&(_ZTI12S20291C12_nt[0]),
  0,
  0,
  0,
  ABISELECT(-19024,-15664),
  (VTBL_ENTRY)&(_ZTI12S20291C12_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern VTBL_ENTRY _ZTV12S20291C12_nt[];
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C9_nt__A1__12S20291C12_nt[] = {
  ABISELECT(2672,2196),
  ABISELECT(18568,15280),
  ABISELECT(18712,15404),
  ABISELECT(18880,15540),
  0,
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt__11S20291C9_nt__A1__12S20291C12_nt[] = {
  0,
  0,
  0,
  ABISELECT(-18880,-15540),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__11S20291C9_nt__A1__12S20291C12_nt[] = {
  ABISELECT(-144,-124),
  ABISELECT(-18712,-15404),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__A1__11S20291C9_nt__A1__12S20291C12_nt[] = {
  0,
  ABISELECT(-18568,-15280),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__11S20291C9_nt__A1__12S20291C12_nt[] = {
  0,
  ABISELECT(-2672,-2196),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
extern void _ZN12S20291C13_ntD1Ev();
extern void _ZN12S20291C13_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV12S20291C13_nt__12S20291C12_nt[] = {
  ABISELECT(15912,13100),
  ABISELECT(15744,12964),
  ABISELECT(15600,12840),
  ABISELECT(11480,9444),
  ABISELECT(472,408),
  ABISELECT(-296,-244),
  0,
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
  (VTBL_ENTRY)&_ZN12S20291C13_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S20291C13_ntD0Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__12S20291C13_nt__12S20291C12_nt[] = {
  0,
  ABISELECT(296,244),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C5_nt3v12Ev();
extern void ABISELECT(_ZTv0_n80_N12S20291C13_ntD1Ev,_ZTv0_n40_N12S20291C13_ntD1Ev)();
extern void ABISELECT(_ZThn472_N12S20291C13_ntD1Ev,_ZThn408_N12S20291C13_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N12S20291C13_ntD0Ev,_ZTv0_n40_N12S20291C13_ntD0Ev)();
extern void ABISELECT(_ZThn472_N12S20291C13_ntD0Ev,_ZThn408_N12S20291C13_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20291C5_nt__12S20291C13_nt__12S20291C12_nt[] = {
  ABISELECT(-472,-408),
  0,
  0,
  ABISELECT(11008,9036),
  ABISELECT(-768,-652),
  ABISELECT(15128,12432),
  ABISELECT(15272,12556),
  ABISELECT(15440,12692),
  ABISELECT(-472,-408),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S20291C5_nt3v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N12S20291C13_ntD1Ev,_ZTv0_n40_N12S20291C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N12S20291C13_ntD0Ev,_ZTv0_n40_N12S20291C13_ntD0Ev),
};
extern void _ZN11S20291C7_nt2v7Ev();
extern void ABISELECT(_ZTv0_n32_N12S20291C13_ntD1Ev,_ZTv0_n16_N12S20291C13_ntD1Ev)();
extern void ABISELECT(_ZThn11480_N12S20291C13_ntD1Ev,_ZThn9444_N12S20291C13_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N12S20291C13_ntD0Ev,_ZTv0_n16_N12S20291C13_ntD0Ev)();
extern void ABISELECT(_ZThn11480_N12S20291C13_ntD0Ev,_ZThn9444_N12S20291C13_ntD0Ev)() __attribute__((weak));
extern void _ZN11S20291C6_nt3v11Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C6_nt__12S20291C13_nt__12S20291C12_nt[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-11480,-9444),
  0,
  ABISELECT(-11480,-9444),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C13_ntD1Ev,_ZTv0_n16_N12S20291C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C13_ntD0Ev,_ZTv0_n16_N12S20291C13_ntD0Ev),
  (VTBL_ENTRY)&_ZN11S20291C6_nt3v11Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt11S20291C6_nt__A1__12S20291C13_nt__12S20291C12_nt[] = {
  ABISELECT(-11776,-9688),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt11S20291C6_nt__12S20291C13_nt__12S20291C12_nt[] = {
  ABISELECT(-12240,-10088),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__A1__12S20291C13_nt__12S20291C12_nt[] = {
  0,
  ABISELECT(-15600,-12840),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__12S20291C13_nt__12S20291C12_nt[] = {
  ABISELECT(-144,-124),
  ABISELECT(-15744,-12964),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt__A2__12S20291C13_nt__12S20291C12_nt[] = {
  0,
  0,
  0,
  ABISELECT(-15912,-13100),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void ABISELECT(_ZTvn464_n80_N12S20291C13_ntD1Ev,_ZTvn380_n40_N12S20291C13_ntD1Ev)();
extern void ABISELECT(_ZTvn464_n80_N12S20291C13_ntD0Ev,_ZTvn380_n40_N12S20291C13_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV12S20291C10_nt11S20291C5_nt__12S20291C13_nt__12S20291C12_nt[] = {
  ABISELECT(14808,12176),
  ABISELECT(14664,12052),
  ABISELECT(10544,8656),
  ABISELECT(-1232,-1032),
  ABISELECT(-936,-788),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N12S20291C13_ntD1Ev,_ZTvn380_n40_N12S20291C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N12S20291C13_ntD0Ev,_ZTvn380_n40_N12S20291C13_ntD0Ev),
};
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C5_nt3v12Ev();
extern void _ZN11S20291C5_ntD1Ev();
extern void _ZN11S20291C5_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C5_nt__12S20291C12_nt[] = {
  ABISELECT(11008,9036),
  ABISELECT(-768,-652),
  ABISELECT(15128,12432),
  ABISELECT(15272,12556),
  ABISELECT(15440,12692),
  0,
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S20291C5_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S20291C5_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S20291C5_ntD0Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C9_nt11S20291C5_nt__12S20291C12_nt[] = {
  ABISELECT(-768,-652),
  ABISELECT(15128,12432),
  ABISELECT(15272,12556),
  ABISELECT(15440,12692),
  0,
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt__11S20291C9_nt11S20291C5_nt__12S20291C12_nt[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-12692),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__11S20291C9_nt11S20291C5_nt__12S20291C12_nt[] = {
  ABISELECT(-144,-124),
  ABISELECT(-15272,-12556),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__A1__11S20291C9_nt11S20291C5_nt__12S20291C12_nt[] = {
  0,
  ABISELECT(-15128,-12432),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__11S20291C9_nt11S20291C5_nt__12S20291C12_nt[] = {
  0,
  ABISELECT(768,652),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern void _ZN12S20291C10_ntD1Ev();
extern void _ZN12S20291C10_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV12S20291C10_nt11S20291C5_nt__12S20291C12_nt[] = {
  ABISELECT(14808,12176),
  ABISELECT(14664,12052),
  ABISELECT(10544,8656),
  ABISELECT(-1232,-1032),
  0,
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN12S20291C10_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S20291C10_ntD0Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__12S20291C10_nt11S20291C5_nt__12S20291C12_nt[] = {
  0,
  ABISELECT(1232,1032),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
extern void ABISELECT(_ZTv0_n32_N12S20291C10_ntD1Ev,_ZTv0_n16_N12S20291C10_ntD1Ev)();
extern void ABISELECT(_ZThn10544_N12S20291C10_ntD1Ev,_ZThn8656_N12S20291C10_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N12S20291C10_ntD0Ev,_ZTv0_n16_N12S20291C10_ntD0Ev)();
extern void ABISELECT(_ZThn10544_N12S20291C10_ntD0Ev,_ZThn8656_N12S20291C10_ntD0Ev)() __attribute__((weak));
extern void _ZN11S20291C6_nt3v11Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C6_nt__12S20291C10_nt11S20291C5_nt__12S20291C12_nt[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-10544,-8656),
  0,
  ABISELECT(-10544,-8656),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C10_ntD1Ev,_ZTv0_n16_N12S20291C10_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C10_ntD0Ev,_ZTv0_n16_N12S20291C10_ntD0Ev),
  (VTBL_ENTRY)&_ZN11S20291C6_nt3v11Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt11S20291C6_nt__12S20291C10_nt11S20291C5_nt__12S20291C12_nt[] = {
  ABISELECT(-10840,-8900),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt11S20291C6_nt__12S20291C10_nt11S20291C5_nt__12S20291C12_nt[] = {
  ABISELECT(-11304,-9300),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__A1__12S20291C10_nt11S20291C5_nt__12S20291C12_nt[] = {
  0,
  ABISELECT(-14664,-12052),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__12S20291C10_nt11S20291C5_nt__12S20291C12_nt[] = {
  ABISELECT(-144,-124),
  ABISELECT(-14808,-12176),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
};
extern void _ZN11S20291C7_nt2v7Ev();
extern void ABISELECT(_ZTv0_n32_N11S20291C5_ntD1Ev,_ZTv0_n16_N11S20291C5_ntD1Ev)();
extern void ABISELECT(_ZThn11008_N11S20291C5_ntD1Ev,_ZThn9036_N11S20291C5_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N11S20291C5_ntD0Ev,_ZTv0_n16_N11S20291C5_ntD0Ev)();
extern void ABISELECT(_ZThn11008_N11S20291C5_ntD0Ev,_ZThn9036_N11S20291C5_ntD0Ev)() __attribute__((weak));
extern void _ZN11S20291C6_nt3v11Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C6_nt__11S20291C5_nt__12S20291C12_nt[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-11008,-9036),
  0,
  ABISELECT(-11008,-9036),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N11S20291C5_ntD1Ev,_ZTv0_n16_N11S20291C5_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N11S20291C5_ntD0Ev,_ZTv0_n16_N11S20291C5_ntD0Ev),
  (VTBL_ENTRY)&_ZN11S20291C6_nt3v11Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt11S20291C6_nt__11S20291C5_nt__12S20291C12_nt[] = {
  ABISELECT(-11304,-9280),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt11S20291C6_nt__11S20291C5_nt__12S20291C12_nt[] = {
  ABISELECT(-11768,-9680),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__A1__11S20291C5_nt__12S20291C12_nt[] = {
  0,
  ABISELECT(-15128,-12432),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__11S20291C5_nt__12S20291C12_nt[] = {
  ABISELECT(-144,-124),
  ABISELECT(-15272,-12556),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt__A1__11S20291C5_nt__12S20291C12_nt[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-12692),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__A1__11S20291C5_nt__12S20291C12_nt[] = {
  0,
  ABISELECT(768,652),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern void ABISELECT(_ZThn464_N11S20291C5_ntD1Ev,_ZThn380_N11S20291C5_ntD1Ev)();
extern void ABISELECT(_ZThn464_N11S20291C5_ntD0Ev,_ZThn380_N11S20291C5_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV12S20291C10_nt__11S20291C5_nt__12S20291C12_nt[] = {
  ABISELECT(14808,12176),
  ABISELECT(14664,12052),
  ABISELECT(10544,8656),
  ABISELECT(-1232,-1032),
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N11S20291C5_ntD1Ev,_ZThn380_N11S20291C5_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N11S20291C5_ntD0Ev,_ZThn380_N11S20291C5_ntD0Ev),
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__12S20291C12_nt[] = {
  ABISELECT(-144,-124),
  0,
  (VTBL_ENTRY)&(_ZTI11S20291C3_nt[0]),
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__11S20291C3_nt__12S20291C12_nt[] = {
  0,
  ABISELECT(144,124),
  (VTBL_ENTRY)&(_ZTI11S20291C3_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
static  VTT_ENTRY vtt_S20291C12_nt[] = {
  {&(_ZTV12S20291C12_nt[9]),  9,105},
  {&(_tg__ZTV11S20291C9_nt__A1__12S20291C12_nt[6]),  6,7},
  {&(_tg__ZTV11S20291C8_nt__11S20291C9_nt__A1__12S20291C12_nt[5]),  5,8},
  {&(_tg__ZTV11S20291C3_nt__11S20291C9_nt__A1__12S20291C12_nt[3]),  3,3},
  {&(_tg__ZTV11S20291C2_nt__A1__11S20291C9_nt__A1__12S20291C12_nt[3]),  3,4},
  {&(_tg__ZTV11S20291C7_nt__11S20291C9_nt__A1__12S20291C12_nt[3]),  3,4},
  {&(_ZTV12S20291C12_nt[29]),  29,105},
  {&(_ZTV12S20291C12_nt[42]),  42,105},
  {&(_ZTV12S20291C12_nt[57]),  57,105},
  {&(_ZTV12S20291C12_nt[78]),  78,105},
  {&(_ZTV12S20291C12_nt[84]),  84,105},
  {&(_ZTV12S20291C12_nt[89]),  89,105},
  {&(_ZTV12S20291C12_nt[93]),  93,105},
  {&(_ZTV12S20291C12_nt[97]),  97,105},
  {&(_ZTV12S20291C12_nt[102]),  102,105},
  {&(_ZTV12S20291C12_nt[67]),  67,105},
  {&(_ZTV12S20291C12_nt[19]),  19,105},
  {&(_tg__ZTV12S20291C13_nt__12S20291C12_nt[8]),  8,13},
  {&(_tg__ZTV11S20291C7_nt__12S20291C13_nt__12S20291C12_nt[3]),  3,4},
  {&(_tg__ZTV11S20291C5_nt__12S20291C13_nt__12S20291C12_nt[10]),  10,14},
  {&(_tg__ZTV11S20291C6_nt__12S20291C13_nt__12S20291C12_nt[9]),  9,13},
  {&(_tg__ZTV11S20291C8_nt11S20291C6_nt__A1__12S20291C13_nt__12S20291C12_nt[2]),  2,5},
  {&(_tg__ZTV11S20291C2_nt11S20291C6_nt__12S20291C13_nt__12S20291C12_nt[2]),  2,3},
  {&(_tg__ZTV11S20291C2_nt__A1__12S20291C13_nt__12S20291C12_nt[3]),  3,4},
  {&(_tg__ZTV11S20291C3_nt__12S20291C13_nt__12S20291C12_nt[3]),  3,3},
  {&(_tg__ZTV11S20291C8_nt__A2__12S20291C13_nt__12S20291C12_nt[5]),  5,8},
  {&(_tg__ZTV12S20291C10_nt11S20291C5_nt__12S20291C13_nt__12S20291C12_nt[6]),  6,8},
  {&(_tg__ZTV11S20291C5_nt__12S20291C12_nt[7]),  7,11},
  {&(_tg__ZTV11S20291C9_nt11S20291C5_nt__12S20291C12_nt[6]),  6,7},
  {&(_tg__ZTV11S20291C8_nt__11S20291C9_nt11S20291C5_nt__12S20291C12_nt[5]),  5,8},
  {&(_tg__ZTV11S20291C3_nt__11S20291C9_nt11S20291C5_nt__12S20291C12_nt[3]),  3,3},
  {&(_tg__ZTV11S20291C2_nt__A1__11S20291C9_nt11S20291C5_nt__12S20291C12_nt[3]),  3,4},
  {&(_tg__ZTV11S20291C7_nt__11S20291C9_nt11S20291C5_nt__12S20291C12_nt[3]),  3,4},
  {&(_tg__ZTV12S20291C10_nt11S20291C5_nt__12S20291C12_nt[6]),  6,8},
  {&(_tg__ZTV11S20291C7_nt__12S20291C10_nt11S20291C5_nt__12S20291C12_nt[3]),  3,4},
  {&(_tg__ZTV11S20291C6_nt__12S20291C10_nt11S20291C5_nt__12S20291C12_nt[9]),  9,13},
  {&(_tg__ZTV11S20291C8_nt11S20291C6_nt__12S20291C10_nt11S20291C5_nt__12S20291C12_nt[2]),  2,5},
  {&(_tg__ZTV11S20291C2_nt11S20291C6_nt__12S20291C10_nt11S20291C5_nt__12S20291C12_nt[2]),  2,3},
  {&(_tg__ZTV11S20291C2_nt__A1__12S20291C10_nt11S20291C5_nt__12S20291C12_nt[3]),  3,4},
  {&(_tg__ZTV11S20291C3_nt__12S20291C10_nt11S20291C5_nt__12S20291C12_nt[3]),  3,3},
  {&(_tg__ZTV11S20291C6_nt__11S20291C5_nt__12S20291C12_nt[9]),  9,13},
  {&(_tg__ZTV11S20291C8_nt11S20291C6_nt__11S20291C5_nt__12S20291C12_nt[2]),  2,5},
  {&(_tg__ZTV11S20291C2_nt11S20291C6_nt__11S20291C5_nt__12S20291C12_nt[2]),  2,3},
  {&(_tg__ZTV11S20291C2_nt__A1__11S20291C5_nt__12S20291C12_nt[3]),  3,4},
  {&(_tg__ZTV11S20291C3_nt__11S20291C5_nt__12S20291C12_nt[3]),  3,3},
  {&(_tg__ZTV11S20291C8_nt__A1__11S20291C5_nt__12S20291C12_nt[5]),  5,8},
  {&(_tg__ZTV11S20291C7_nt__A1__11S20291C5_nt__12S20291C12_nt[3]),  3,4},
  {&(_tg__ZTV12S20291C10_nt__11S20291C5_nt__12S20291C12_nt[6]),  6,8},
  {&(_tg__ZTV11S20291C3_nt__12S20291C12_nt[3]),  3,3},
  {&(_tg__ZTV11S20291C2_nt__11S20291C3_nt__12S20291C12_nt[3]),  3,4},
};
extern VTBL_ENTRY _ZTI12S20291C12_nt[];
VTBL_ENTRY *P__ZTI12S20291C12_nt = _ZTI12S20291C12_nt; 
extern  VTBL_ENTRY _ZTV12S20291C12_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20291C12_nt[];
static VTBL_ENTRY alt_thunk_names8[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N11S20291C5_ntD0Ev,_ZTv0_n16_N11S20291C5_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N11S20291C5_ntD0Ev,_ZThn9036_N11S20291C5_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N11S20291C5_ntD1Ev,_ZTv0_n16_N11S20291C5_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N11S20291C5_ntD1Ev,_ZThn9036_N11S20291C5_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N12S20291C10_ntD0Ev,_ZTv0_n16_N12S20291C10_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N12S20291C10_ntD0Ev,_ZThn8656_N12S20291C10_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N12S20291C10_ntD1Ev,_ZTv0_n16_N12S20291C10_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N12S20291C10_ntD1Ev,_ZThn8656_N12S20291C10_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N12S20291C13_ntD0Ev,_ZTv0_n16_N12S20291C13_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11480_N12S20291C13_ntD0Ev,_ZThn9444_N12S20291C13_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N12S20291C13_ntD1Ev,_ZTv0_n16_N12S20291C13_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11480_N12S20291C13_ntD1Ev,_ZThn9444_N12S20291C13_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N12S20291C13_ntD0Ev,_ZTv0_n40_N12S20291C13_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N12S20291C13_ntD0Ev,_ZThn408_N12S20291C13_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N12S20291C13_ntD1Ev,_ZTv0_n40_N12S20291C13_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N12S20291C13_ntD1Ev,_ZThn408_N12S20291C13_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N12S20291C12_ntD0Ev,_ZTv0_n16_N12S20291C12_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn14592_N12S20291C12_ntD0Ev,_ZThn12008_N12S20291C12_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N12S20291C12_ntD1Ev,_ZTv0_n16_N12S20291C12_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn14592_N12S20291C12_ntD1Ev,_ZThn12008_N12S20291C12_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N12S20291C12_ntD0Ev,_ZTv0_n40_N12S20291C12_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3584_N12S20291C12_ntD0Ev,_ZThn2972_N12S20291C12_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N12S20291C12_ntD1Ev,_ZTv0_n40_N12S20291C12_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3584_N12S20291C12_ntD1Ev,_ZThn2972_N12S20291C12_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N12S20291C12_ntD0Ev,_ZTv0_n48_N12S20291C12_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3112_N12S20291C12_ntD0Ev,_ZThn2564_N12S20291C12_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N12S20291C12_ntD1Ev,_ZTv0_n48_N12S20291C12_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3112_N12S20291C12_ntD1Ev,_ZThn2564_N12S20291C12_ntD1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20291C12_nt = {  "S20291C12_nt", // class name
  bases_S20291C12_nt, 19,
  &(vtc_S20291C12_nt[0]), // expected_vtbl_contents
  &(vtt_S20291C12_nt[0]), // expected_vtt_contents
  ABISELECT(19488,16064), // object size
  NSPAIRA(_ZTI12S20291C12_nt),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV12S20291C12_nt),105, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT12S20291C12_nt),50, //virtual table table var
  19, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names8,
};
#endif // __cplusplus

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

#ifdef __cplusplus

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



//skip512 S20291C14_nt

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S20291C4  : virtual S20291C5_nt , virtual S20291C12_nt , S20291C3_nt , S20291C13_nt {
  char s20291c4f0;
  ::S20291C14_nt s20291c4f1;
  void *s20291c4f2;
  ~S20291C4(); // tgen
  S20291C4(); // tgen
};
//SIG(-1 S20291C4) C1{ VBC2{ VBC3{ BC4{ v1 FL FD Fp Fc FC5{ v5 Fs:6 Fl Fs:4 FL[13] Fp} Fp[2] FL[8] Fs Fp FL:64} BC6{ v2 v3 v4 Fi[2] FL[2] FC5[3]} BC5 vd v6 FL[2] Fp[8] FC7{ BC5 VBC6 VBC8{ VBC5 Fp FC5 Fi:3} VBC4 FC4 Fs Fi[2]} Fp Fi FC7 Fi} VBC5 VBC8 BC7 BC9{ VBC4 VBC3 VBC5 VBC8 FL:44 Fp Fi FC7 FL[2] Fi[3] FC3 Fc:7 FC10{ BC4 vd v8 FC8 Fi Fp Fi}} v7 FC3 FL Fc:7} VBC11{ BC5 VBC4 VBC12{ VBC4 BC6 VBC2 Fc:8 Fi} BC7 BC10 vd v9 Fi FC7 Fi Fs FL:8 Fi} BC8 BC12 Fc FC13{} Fp}


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

static void Test_S20291C4()
{
  extern Class_Descriptor cd_S20291C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1261,4155)];
    init_test(&cd_S20291C4, buf);
    S20291C4 *dp, &lv = *(dp=new (buf) S20291C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(20160,16616), "sizeof(S20291C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20291C4)");
    check_base_class_offset(lv, (S20291C7_nt*)(S20291C6_nt*), ABISELECT(11664,9588), "S20291C4");
    check_base_class_offset(lv, (S20291C8_nt*)(S20291C6_nt*), ABISELECT(11960,9832), "S20291C4");
    check_base_class_offset(lv, (S20291C2_nt*)(S20291C6_nt*), ABISELECT(12424,10232), "S20291C4");
    check_base_class_offset(lv, (S20291C6_nt*)(S20291C5_nt*), ABISELECT(11664,9588), "S20291C4");
    check_base_class_offset(lv, (S20291C6_nt*)(S20291C10_nt*)(S20291C5_nt*), ABISELECT(11664,9588), "S20291C4");
    /*is_ambiguous_... S20291C5_nt::S20291C2_nt */ AMB_check_base_class_offset(lv, (S20291C2_nt*)(S20291C5_nt*), ABISELECT(15784,12984), "S20291C4");
    /*is_ambiguous_... S20291C4::S20291C3_nt */ AMB_check_base_class_offset(lv, (S20291C2_nt*)(S20291C3_nt*), ABISELECT(15784,12984), "S20291C4");
    /*is_ambiguous_... S20291C10_nt::S20291C2_nt */ AMB_check_base_class_offset(lv, (S20291C2_nt*)(S20291C10_nt*)(S20291C5_nt*), ABISELECT(15784,12984), "S20291C4");
    /*is_ambiguous_... S20291C4::S20291C3_nt */ AMB_check_base_class_offset(lv, (S20291C2_nt*)(S20291C3_nt*), ABISELECT(15784,12984), "S20291C4");
    check_base_class_offset(lv, (S20291C3_nt*)(S20291C5_nt*), ABISELECT(15928,13108), "S20291C4");
    check_base_class_offset(lv, (S20291C3_nt*)(S20291C9_nt*)(S20291C5_nt*), ABISELECT(15928,13108), "S20291C4");
    check_base_class_offset(lv, (S20291C3_nt*)(S20291C10_nt*)(S20291C5_nt*), ABISELECT(15928,13108), "S20291C4");
    /*is_ambiguous_... S20291C12_nt::S20291C9_nt */ AMB_check_base_class_offset(lv, (S20291C3_nt*)(S20291C9_nt*)(S20291C12_nt*), ABISELECT(15928,13108), "S20291C4");
    /*is_ambiguous_... S20291C9_nt::S20291C2_nt */ AMB_check_base_class_offset(lv, (S20291C2_nt*)(S20291C9_nt*)(S20291C5_nt*), ABISELECT(656,552), "S20291C4");
    check_base_class_offset(lv, (S20291C8_nt*)(S20291C9_nt*)(S20291C5_nt*), ABISELECT(16096,13244), "S20291C4");
    /*is_ambiguous_... S20291C12_nt::S20291C9_nt */ AMB_check_base_class_offset(lv, (S20291C8_nt*)(S20291C9_nt*)(S20291C12_nt*), ABISELECT(16096,13244), "S20291C4");
    check_base_class_offset(lv, (S20291C7_nt*)(S20291C9_nt*)(S20291C5_nt*), ABISELECT(16560,13644), "S20291C4");
    /*is_ambiguous_... S20291C10_nt::S20291C7_nt */ AMB_check_base_class_offset(lv, (S20291C7_nt*)(S20291C10_nt*)(S20291C5_nt*), ABISELECT(16560,13644), "S20291C4");
    /*is_ambiguous_... S20291C12_nt::S20291C7_nt */ AMB_check_base_class_offset(lv, (S20291C7_nt*)(S20291C12_nt*), ABISELECT(16560,13644), "S20291C4");
    /*is_ambiguous_... S20291C4::S20291C13_nt */ AMB_check_base_class_offset(lv, (S20291C7_nt*)(S20291C13_nt*), ABISELECT(16560,13644), "S20291C4");
    /*is_ambiguous_... S20291C12_nt::S20291C9_nt */ AMB_check_base_class_offset(lv, (S20291C7_nt*)(S20291C9_nt*)(S20291C12_nt*), ABISELECT(16560,13644), "S20291C4");
    /*is_ambiguous_... S20291C4::S20291C13_nt */ AMB_check_base_class_offset(lv, (S20291C7_nt*)(S20291C13_nt*), ABISELECT(16560,13644), "S20291C4");
    check_base_class_offset(lv, (S20291C9_nt*)(S20291C5_nt*), ABISELECT(656,552), "S20291C4");
    check_base_class_offset(lv, (S20291C10_nt*)(S20291C5_nt*), ABISELECT(1120,932), "S20291C4");
    check_base_class_offset(lv, (S20291C5_nt*), ABISELECT(656,552), "S20291C4");
    /*is_ambiguous_... S20291C4::S20291C13_nt */ AMB_check_base_class_offset(lv, (S20291C5_nt*)(S20291C13_nt*), ABISELECT(656,552), "S20291C4");
    /*is_ambiguous_... S20291C4::S20291C13_nt */ AMB_check_base_class_offset(lv, (S20291C5_nt*)(S20291C13_nt*), ABISELECT(656,552), "S20291C4");
    /*is_ambiguous_... S20291C12_nt::S20291C2_nt */ AMB_check_base_class_offset(lv, (S20291C2_nt*)(S20291C12_nt*), ABISELECT(16864,13888), "S20291C4");
    /*is_ambiguous_... S20291C4::S20291C13_nt */ AMB_check_base_class_offset(lv, (S20291C8_nt*)(S20291C13_nt*), ABISELECT(19680,16208), "S20291C4");
    check_base_class_offset(lv, (S20291C13_nt*)(S20291C12_nt*), ABISELECT(19680,16208), "S20291C4");
    /*is_ambiguous_... S20291C12_nt::S20291C9_nt */ AMB_check_base_class_offset(lv, (S20291C2_nt*)(S20291C9_nt*)(S20291C12_nt*), ABISELECT(17008,14012), "S20291C4");
    /*is_ambiguous_... S20291C12_nt::S20291C9_nt */ AMB_check_base_class_offset(lv, (S20291C9_nt*)(S20291C12_nt*), ABISELECT(17008,14012), "S20291C4");
    check_base_class_offset(lv, (S20291C7_nt*)(S20291C11_nt*)(S20291C12_nt*), ABISELECT(17472,14392), "S20291C4");
    check_base_class_offset(lv, (S20291C11_nt*)(S20291C12_nt*), ABISELECT(17472,14392), "S20291C4");
    check_base_class_offset(lv, (S20291C12_nt*), ABISELECT(16864,13888), "S20291C4");
    /*is_ambiguous_... S20291C4::S20291C3_nt */ AMB_check_base_class_offset(lv, (S20291C3_nt*), 0, "S20291C4");
    /*is_ambiguous_... S20291C4::S20291C13_nt */ AMB_check_base_class_offset(lv, (S20291C8_nt*)(S20291C13_nt*), ABISELECT(168,136), "S20291C4");
    /*is_ambiguous_... S20291C4::S20291C13_nt */ AMB_check_base_class_offset(lv, (S20291C13_nt*), ABISELECT(168,136), "S20291C4");
    check_field_offset(lv, s20291c4f0, ABISELECT(640,544), "S20291C4.s20291c4f0");
    check_field_offset(lv, s20291c4f1, ABISELECT(641,545), "S20291C4.s20291c4f1");
    check_field_offset(lv, s20291c4f2, ABISELECT(648,548), "S20291C4.s20291c4f2");
    test_class_info(&lv, &cd_S20291C4);
    dp->~S20291C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20291C4(Test_S20291C4, "S20291C4", ABISELECT(20160,16616));

#else // __cplusplus

extern void _ZN8S20291C4C1Ev();
extern void _ZN8S20291C4D1Ev();
Name_Map name_map_S20291C4[] = {
  NSPAIR(_ZN8S20291C4C1Ev),
  NSPAIR(_ZN8S20291C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20291C7_nt;
extern VTBL_ENTRY _ZTI11S20291C7_nt[];
extern  VTBL_ENTRY _ZTV11S20291C7_nt[];
extern Class_Descriptor cd_S20291C8_nt;
extern VTBL_ENTRY _ZTI11S20291C8_nt[];
extern  VTBL_ENTRY _ZTV11S20291C8_nt[];
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
extern Class_Descriptor cd_S20291C6_nt;
extern VTBL_ENTRY _ZTI11S20291C6_nt[];
extern  VTBL_ENTRY _ZTV11S20291C6_nt[];
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
extern Class_Descriptor cd_S20291C3_nt;
extern VTBL_ENTRY _ZTI11S20291C3_nt[];
extern  VTBL_ENTRY _ZTV11S20291C3_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20291C3_nt[];
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
extern Class_Descriptor cd_S20291C8_nt;
extern VTBL_ENTRY _ZTI11S20291C8_nt[];
extern  VTBL_ENTRY _ZTV11S20291C8_nt[];
extern Class_Descriptor cd_S20291C7_nt;
extern VTBL_ENTRY _ZTI11S20291C7_nt[];
extern  VTBL_ENTRY _ZTV11S20291C7_nt[];
extern Class_Descriptor cd_S20291C9_nt;
extern VTBL_ENTRY _ZTI11S20291C9_nt[];
extern  VTBL_ENTRY _ZTV11S20291C9_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20291C9_nt[];
extern Class_Descriptor cd_S20291C10_nt;
extern VTBL_ENTRY _ZTI12S20291C10_nt[];
extern  VTBL_ENTRY _ZTV12S20291C10_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20291C10_nt[];
extern Class_Descriptor cd_S20291C5_nt;
extern VTBL_ENTRY _ZTI11S20291C5_nt[];
extern  VTBL_ENTRY _ZTV11S20291C5_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20291C5_nt[];
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
extern Class_Descriptor cd_S20291C8_nt;
extern VTBL_ENTRY _ZTI11S20291C8_nt[];
extern  VTBL_ENTRY _ZTV11S20291C8_nt[];
extern Class_Descriptor cd_S20291C13_nt;
extern VTBL_ENTRY _ZTI12S20291C13_nt[];
extern  VTBL_ENTRY _ZTV12S20291C13_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20291C13_nt[];
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
extern Class_Descriptor cd_S20291C9_nt;
extern VTBL_ENTRY _ZTI11S20291C9_nt[];
extern  VTBL_ENTRY _ZTV11S20291C9_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20291C9_nt[];
extern Class_Descriptor cd_S20291C7_nt;
extern VTBL_ENTRY _ZTI11S20291C7_nt[];
extern  VTBL_ENTRY _ZTV11S20291C7_nt[];
extern Class_Descriptor cd_S20291C11_nt;
extern VTBL_ENTRY _ZTI12S20291C11_nt[];
extern  VTBL_ENTRY _ZTV12S20291C11_nt[];
extern Class_Descriptor cd_S20291C12_nt;
extern VTBL_ENTRY _ZTI12S20291C12_nt[];
extern  VTBL_ENTRY _ZTV12S20291C12_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20291C12_nt[];
extern Class_Descriptor cd_S20291C3_nt;
extern VTBL_ENTRY _ZTI11S20291C3_nt[];
extern  VTBL_ENTRY _ZTV11S20291C3_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20291C3_nt[];
extern Class_Descriptor cd_S20291C8_nt;
extern VTBL_ENTRY _ZTI11S20291C8_nt[];
extern  VTBL_ENTRY _ZTV11S20291C8_nt[];
extern Class_Descriptor cd_S20291C13_nt;
extern VTBL_ENTRY _ZTI12S20291C13_nt[];
extern  VTBL_ENTRY _ZTV12S20291C13_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20291C13_nt[];
static Base_Class bases_S20291C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20291C7_nt,    ABISELECT(11664,9588), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20291C8_nt,    ABISELECT(11960,9832), //bcp->offset
    60, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20291C2_nt,    ABISELECT(12424,10232), //bcp->offset
    65, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20291C6_nt,    ABISELECT(11664,9588), //bcp->offset
    47, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S20291C2_nt,    ABISELECT(15784,12984), //bcp->offset
    68, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20291C3_nt,    ABISELECT(15928,13108), //bcp->offset
    72, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S20291C2_nt,    ABISELECT(656,552), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20291C8_nt,    ABISELECT(16096,13244), //bcp->offset
    75, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S20291C7_nt,    ABISELECT(16560,13644), //bcp->offset
    83, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S20291C9_nt,    ABISELECT(656,552), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20291C10_nt,    ABISELECT(1120,932), //bcp->offset
    39, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20291C5_nt,    ABISELECT(656,552), //bcp->offset
    25, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20291C2_nt,    ABISELECT(16864,13888), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20291C8_nt,    ABISELECT(19680,16208), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20291C13_nt,    ABISELECT(19680,16208), //bcp->offset
    118, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S20291C2_nt,    ABISELECT(17008,14012), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20291C9_nt,    ABISELECT(17008,14012), //bcp->offset
    105, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20291C7_nt,    ABISELECT(17472,14392), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20291C11_nt,    ABISELECT(17472,14392), //bcp->offset
    112, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20291C12_nt,    ABISELECT(16864,13888), //bcp->offset
    87, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20291C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20291C8_nt,    ABISELECT(168,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S20291C13_nt,    ABISELECT(168,136), //bcp->offset
    12, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20291C4[];
extern void _ZN8S20291C4D1Ev();
extern void _ZN8S20291C4D0Ev();
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
extern void ABISELECT(_ZThn168_N8S20291C4D1Ev,_ZThn136_N8S20291C4D1Ev)();
extern void ABISELECT(_ZThn168_N8S20291C4D0Ev,_ZThn136_N8S20291C4D0Ev)();
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C5_nt3v12Ev();
extern void ABISELECT(_ZTv0_n80_N8S20291C4D1Ev,_ZTv0_n40_N8S20291C4D1Ev)();
extern void ABISELECT(_ZThn656_N8S20291C4D1Ev,_ZThn552_N8S20291C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S20291C4D0Ev,_ZTv0_n40_N8S20291C4D0Ev)();
extern void ABISELECT(_ZThn656_N8S20291C4D0Ev,_ZThn552_N8S20291C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn464_n80_N8S20291C4D1Ev,_ZTvn380_n40_N8S20291C4D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N8S20291C4D0Ev,_ZTvn380_n40_N8S20291C4D0Ev)();
extern void _ZN11S20291C7_nt2v7Ev();
extern void ABISELECT(_ZTv0_n32_N8S20291C4D1Ev,_ZTv0_n16_N8S20291C4D1Ev)();
extern void ABISELECT(_ZThn11664_N8S20291C4D1Ev,_ZThn9588_N8S20291C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20291C4D0Ev,_ZTv0_n16_N8S20291C4D0Ev)();
extern void ABISELECT(_ZThn11664_N8S20291C4D0Ev,_ZThn9588_N8S20291C4D0Ev)() __attribute__((weak));
extern void _ZN11S20291C6_nt3v11Ev();
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
extern void _ZN11S20291C7_nt2v7Ev();
extern void _ZN11S20291C2_nt2v6Ev();
extern void ABISELECT(_ZTv0_n88_N8S20291C4D1Ev,_ZTv0_n44_N8S20291C4D1Ev)();
extern void ABISELECT(_ZThn16864_N8S20291C4D1Ev,_ZThn13888_N8S20291C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S20291C4D0Ev,_ZTv0_n44_N8S20291C4D0Ev)();
extern void ABISELECT(_ZThn16864_N8S20291C4D0Ev,_ZThn13888_N8S20291C4D0Ev)() __attribute__((weak));
extern void _ZN12S20291C12_nt3v14Ev();
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C7_nt2v7Ev();
extern void ABISELECT(_ZTvn608_n88_N8S20291C4D1Ev,_ZTvn504_n44_N8S20291C4D1Ev)();
extern void ABISELECT(_ZTvn608_n88_N8S20291C4D0Ev,_ZTvn504_n44_N8S20291C4D0Ev)();
extern void _ZN12S20291C11_nt3v13Ev();
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
extern void ABISELECT(_ZTv0_n96_N8S20291C4D1Ev,_ZTv0_n48_N8S20291C4D1Ev)();
extern void ABISELECT(_ZThn19680_N8S20291C4D1Ev,_ZThn16208_N8S20291C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S20291C4D0Ev,_ZTv0_n48_N8S20291C4D0Ev)();
extern void ABISELECT(_ZThn19680_N8S20291C4D0Ev,_ZThn16208_N8S20291C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20291C4[] = {
  ABISELECT(19680,16208),
  ABISELECT(16864,13888),
  ABISELECT(16560,13644),
  ABISELECT(16096,13244),
  ABISELECT(15928,13108),
  ABISELECT(11664,9588),
  ABISELECT(656,552),
  ABISELECT(15784,12984),
  0,
  (VTBL_ENTRY)&(_ZTI8S20291C4[0]),
  (VTBL_ENTRY)&_ZN8S20291C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20291C4D0Ev,
  ABISELECT(15928,13108),
  ABISELECT(15760,12972),
  ABISELECT(15616,12848),
  ABISELECT(11496,9452),
  ABISELECT(488,416),
  ABISELECT(16392,13508),
  ABISELECT(-168,-136),
  (VTBL_ENTRY)&(_ZTI8S20291C4[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn168_N8S20291C4D1Ev,_ZThn136_N8S20291C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn168_N8S20291C4D0Ev,_ZThn136_N8S20291C4D0Ev),
  ABISELECT(-656,-552),
  0,
  0,
  ABISELECT(11008,9036),
  ABISELECT(15904,13092),
  ABISELECT(15128,12432),
  ABISELECT(15272,12556),
  ABISELECT(15440,12692),
  ABISELECT(-656,-552),
  (VTBL_ENTRY)&(_ZTI8S20291C4[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S20291C5_nt3v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20291C4D1Ev,_ZTv0_n40_N8S20291C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20291C4D0Ev,_ZTv0_n40_N8S20291C4D0Ev),
  ABISELECT(14808,12176),
  ABISELECT(14664,12052),
  ABISELECT(10544,8656),
  ABISELECT(15440,12712),
  ABISELECT(-1120,-932),
  (VTBL_ENTRY)&(_ZTI8S20291C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S20291C4D1Ev,_ZTvn380_n40_N8S20291C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S20291C4D0Ev,_ZTvn380_n40_N8S20291C4D0Ev),
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-11664,-9588),
  0,
  ABISELECT(-11664,-9588),
  (VTBL_ENTRY)&(_ZTI8S20291C4[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20291C4D1Ev,_ZTv0_n16_N8S20291C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20291C4D0Ev,_ZTv0_n16_N8S20291C4D0Ev),
  (VTBL_ENTRY)&_ZN11S20291C6_nt3v11Ev,
  ABISELECT(-11960,-9832),
  (VTBL_ENTRY)&(_ZTI8S20291C4[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
  ABISELECT(-12424,-10232),
  (VTBL_ENTRY)&(_ZTI8S20291C4[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  0,
  ABISELECT(-15784,-12984),
  (VTBL_ENTRY)&(_ZTI8S20291C4[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  ABISELECT(-144,-124),
  ABISELECT(-15928,-13108),
  (VTBL_ENTRY)&(_ZTI8S20291C4[0]),
  0,
  0,
  0,
  ABISELECT(-16096,-13244),
  (VTBL_ENTRY)&(_ZTI8S20291C4[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
  0,
  ABISELECT(-16560,-13644),
  (VTBL_ENTRY)&(_ZTI8S20291C4[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  ABISELECT(608,504),
  ABISELECT(608,504),
  0,
  ABISELECT(-16864,-13888),
  0,
  ABISELECT(-768,-644),
  ABISELECT(-936,-780),
  ABISELECT(-1080,-904),
  ABISELECT(-5200,-4300),
  ABISELECT(-16208,-13336),
  ABISELECT(2816,2320),
  ABISELECT(-304,-244),
  ABISELECT(-16864,-13888),
  (VTBL_ENTRY)&(_ZTI8S20291C4[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S20291C4D1Ev,_ZTv0_n44_N8S20291C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S20291C4D0Ev,_ZTv0_n44_N8S20291C4D0Ev),
  (VTBL_ENTRY)&_ZN12S20291C12_nt3v14Ev,
  ABISELECT(-448,-368),
  ABISELECT(-1224,-1028),
  ABISELECT(-1080,-904),
  ABISELECT(-912,-768),
  ABISELECT(-17008,-14012),
  (VTBL_ENTRY)&(_ZTI8S20291C4[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  ABISELECT(-17472,-14392),
  (VTBL_ENTRY)&(_ZTI8S20291C4[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn608_n88_N8S20291C4D1Ev,_ZTvn504_n44_N8S20291C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn608_n88_N8S20291C4D0Ev,_ZTvn504_n44_N8S20291C4D0Ev),
  (VTBL_ENTRY)&_ZN12S20291C11_nt3v13Ev,
  ABISELECT(-19680,-16208),
  0,
  0,
  0,
  ABISELECT(-3584,-2964),
  ABISELECT(-3752,-3100),
  ABISELECT(-3896,-3224),
  ABISELECT(-8016,-6620),
  ABISELECT(-19024,-15656),
  ABISELECT(-3120,-2564),
  ABISELECT(-19680,-16208),
  (VTBL_ENTRY)&(_ZTI8S20291C4[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20291C4D1Ev,_ZTv0_n48_N8S20291C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20291C4D0Ev,_ZTv0_n48_N8S20291C4D0Ev),
};
extern VTBL_ENTRY _ZTV8S20291C4[];
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__A__8S20291C4[] = {
  ABISELECT(15784,12984),
  0,
  (VTBL_ENTRY)&(_ZTI11S20291C3_nt[0]),
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__11S20291C3_nt__A__8S20291C4[] = {
  0,
  ABISELECT(-15784,-12984),
  (VTBL_ENTRY)&(_ZTI11S20291C3_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
extern void _ZN12S20291C13_ntD1Ev();
extern void _ZN12S20291C13_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV12S20291C13_nt__A__8S20291C4[] = {
  ABISELECT(15928,13108),
  ABISELECT(15760,12972),
  ABISELECT(15616,12848),
  ABISELECT(11496,9452),
  ABISELECT(488,416),
  ABISELECT(16392,13508),
  0,
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
  (VTBL_ENTRY)&_ZN12S20291C13_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S20291C13_ntD0Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__12S20291C13_nt__A__8S20291C4[] = {
  0,
  ABISELECT(-16392,-13508),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C5_nt3v12Ev();
extern void ABISELECT(_ZTv0_n80_N12S20291C13_ntD1Ev,_ZTv0_n40_N12S20291C13_ntD1Ev)();
extern void ABISELECT(_ZThn488_N12S20291C13_ntD1Ev,_ZThn416_N12S20291C13_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N12S20291C13_ntD0Ev,_ZTv0_n40_N12S20291C13_ntD0Ev)();
extern void ABISELECT(_ZThn488_N12S20291C13_ntD0Ev,_ZThn416_N12S20291C13_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20291C5_nt__12S20291C13_nt__A__8S20291C4[] = {
  ABISELECT(-488,-416),
  0,
  0,
  ABISELECT(11008,9036),
  ABISELECT(15904,13092),
  ABISELECT(15128,12432),
  ABISELECT(15272,12556),
  ABISELECT(15440,12692),
  ABISELECT(-488,-416),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S20291C5_nt3v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N12S20291C13_ntD1Ev,_ZTv0_n40_N12S20291C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N12S20291C13_ntD0Ev,_ZTv0_n40_N12S20291C13_ntD0Ev),
};
extern void _ZN11S20291C7_nt2v7Ev();
extern void ABISELECT(_ZTv0_n32_N12S20291C13_ntD1Ev,_ZTv0_n16_N12S20291C13_ntD1Ev)();
extern void ABISELECT(_ZThn11496_N12S20291C13_ntD1Ev,_ZThn9452_N12S20291C13_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N12S20291C13_ntD0Ev,_ZTv0_n16_N12S20291C13_ntD0Ev)();
extern void ABISELECT(_ZThn11496_N12S20291C13_ntD0Ev,_ZThn9452_N12S20291C13_ntD0Ev)() __attribute__((weak));
extern void _ZN11S20291C6_nt3v11Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C6_nt__12S20291C13_nt__A__8S20291C4[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-11496,-9452),
  0,
  ABISELECT(-11496,-9452),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C13_ntD1Ev,_ZTv0_n16_N12S20291C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C13_ntD0Ev,_ZTv0_n16_N12S20291C13_ntD0Ev),
  (VTBL_ENTRY)&_ZN11S20291C6_nt3v11Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt11S20291C6_nt__A1__12S20291C13_nt__A__8S20291C4[] = {
  ABISELECT(-11792,-9696),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt11S20291C6_nt__12S20291C13_nt__A__8S20291C4[] = {
  ABISELECT(-12256,-10096),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__A1__12S20291C13_nt__A__8S20291C4[] = {
  0,
  ABISELECT(-15616,-12848),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__12S20291C13_nt__A__8S20291C4[] = {
  ABISELECT(-144,-124),
  ABISELECT(-15760,-12972),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt__A2__12S20291C13_nt__A__8S20291C4[] = {
  0,
  0,
  0,
  ABISELECT(-15928,-13108),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void ABISELECT(_ZTvn464_n80_N12S20291C13_ntD1Ev,_ZTvn380_n40_N12S20291C13_ntD1Ev)();
extern void ABISELECT(_ZTvn464_n80_N12S20291C13_ntD0Ev,_ZTvn380_n40_N12S20291C13_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV12S20291C10_nt11S20291C5_nt__12S20291C13_nt__A__8S20291C4[] = {
  ABISELECT(14808,12176),
  ABISELECT(14664,12052),
  ABISELECT(10544,8656),
  ABISELECT(15440,12712),
  ABISELECT(-952,-796),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N12S20291C13_ntD1Ev,_ZTvn380_n40_N12S20291C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N12S20291C13_ntD0Ev,_ZTvn380_n40_N12S20291C13_ntD0Ev),
};
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C5_nt3v12Ev();
extern void _ZN11S20291C5_ntD1Ev();
extern void _ZN11S20291C5_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C5_nt__8S20291C4[] = {
  ABISELECT(11008,9036),
  ABISELECT(15904,13092),
  ABISELECT(15128,12432),
  ABISELECT(15272,12556),
  ABISELECT(15440,12692),
  0,
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S20291C5_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S20291C5_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S20291C5_ntD0Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C9_nt11S20291C5_nt__8S20291C4[] = {
  ABISELECT(15904,13092),
  ABISELECT(15128,12432),
  ABISELECT(15272,12556),
  ABISELECT(15440,12692),
  0,
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt__11S20291C9_nt11S20291C5_nt__8S20291C4[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-12692),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__11S20291C9_nt11S20291C5_nt__8S20291C4[] = {
  ABISELECT(-144,-124),
  ABISELECT(-15272,-12556),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__A1__11S20291C9_nt11S20291C5_nt__8S20291C4[] = {
  0,
  ABISELECT(-15128,-12432),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__11S20291C9_nt11S20291C5_nt__8S20291C4[] = {
  0,
  ABISELECT(-15904,-13092),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern void _ZN12S20291C10_ntD1Ev();
extern void _ZN12S20291C10_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV12S20291C10_nt11S20291C5_nt__8S20291C4[] = {
  ABISELECT(14808,12176),
  ABISELECT(14664,12052),
  ABISELECT(10544,8656),
  ABISELECT(15440,12712),
  0,
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN12S20291C10_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S20291C10_ntD0Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__12S20291C10_nt11S20291C5_nt__8S20291C4[] = {
  0,
  ABISELECT(-15440,-12712),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
extern void ABISELECT(_ZTv0_n32_N12S20291C10_ntD1Ev,_ZTv0_n16_N12S20291C10_ntD1Ev)();
extern void ABISELECT(_ZThn10544_N12S20291C10_ntD1Ev,_ZThn8656_N12S20291C10_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N12S20291C10_ntD0Ev,_ZTv0_n16_N12S20291C10_ntD0Ev)();
extern void ABISELECT(_ZThn10544_N12S20291C10_ntD0Ev,_ZThn8656_N12S20291C10_ntD0Ev)() __attribute__((weak));
extern void _ZN11S20291C6_nt3v11Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C6_nt__12S20291C10_nt11S20291C5_nt__8S20291C4[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-10544,-8656),
  0,
  ABISELECT(-10544,-8656),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C10_ntD1Ev,_ZTv0_n16_N12S20291C10_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C10_ntD0Ev,_ZTv0_n16_N12S20291C10_ntD0Ev),
  (VTBL_ENTRY)&_ZN11S20291C6_nt3v11Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt11S20291C6_nt__12S20291C10_nt11S20291C5_nt__8S20291C4[] = {
  ABISELECT(-10840,-8900),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt11S20291C6_nt__12S20291C10_nt11S20291C5_nt__8S20291C4[] = {
  ABISELECT(-11304,-9300),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__A1__12S20291C10_nt11S20291C5_nt__8S20291C4[] = {
  0,
  ABISELECT(-14664,-12052),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__12S20291C10_nt11S20291C5_nt__8S20291C4[] = {
  ABISELECT(-144,-124),
  ABISELECT(-14808,-12176),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
};
extern void _ZN11S20291C7_nt2v7Ev();
extern void ABISELECT(_ZTv0_n32_N11S20291C5_ntD1Ev,_ZTv0_n16_N11S20291C5_ntD1Ev)();
extern void ABISELECT(_ZThn11008_N11S20291C5_ntD1Ev,_ZThn9036_N11S20291C5_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N11S20291C5_ntD0Ev,_ZTv0_n16_N11S20291C5_ntD0Ev)();
extern void ABISELECT(_ZThn11008_N11S20291C5_ntD0Ev,_ZThn9036_N11S20291C5_ntD0Ev)() __attribute__((weak));
extern void _ZN11S20291C6_nt3v11Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C6_nt__11S20291C5_nt__8S20291C4[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-11008,-9036),
  0,
  ABISELECT(-11008,-9036),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N11S20291C5_ntD1Ev,_ZTv0_n16_N11S20291C5_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N11S20291C5_ntD0Ev,_ZTv0_n16_N11S20291C5_ntD0Ev),
  (VTBL_ENTRY)&_ZN11S20291C6_nt3v11Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt11S20291C6_nt__11S20291C5_nt__8S20291C4[] = {
  ABISELECT(-11304,-9280),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt11S20291C6_nt__11S20291C5_nt__8S20291C4[] = {
  ABISELECT(-11768,-9680),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__A1__11S20291C5_nt__8S20291C4[] = {
  0,
  ABISELECT(-15128,-12432),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__11S20291C5_nt__8S20291C4[] = {
  ABISELECT(-144,-124),
  ABISELECT(-15272,-12556),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt__A1__11S20291C5_nt__8S20291C4[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-12692),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__A1__11S20291C5_nt__8S20291C4[] = {
  0,
  ABISELECT(-15904,-13092),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern void ABISELECT(_ZThn464_N11S20291C5_ntD1Ev,_ZThn380_N11S20291C5_ntD1Ev)();
extern void ABISELECT(_ZThn464_N11S20291C5_ntD0Ev,_ZThn380_N11S20291C5_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV12S20291C10_nt__11S20291C5_nt__8S20291C4[] = {
  ABISELECT(14808,12176),
  ABISELECT(14664,12052),
  ABISELECT(10544,8656),
  ABISELECT(15440,12712),
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N11S20291C5_ntD1Ev,_ZThn380_N11S20291C5_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N11S20291C5_ntD0Ev,_ZThn380_N11S20291C5_ntD0Ev),
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__8S20291C4[] = {
  ABISELECT(-144,-124),
  0,
  (VTBL_ENTRY)&(_ZTI11S20291C3_nt[0]),
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__11S20291C3_nt__8S20291C4[] = {
  0,
  ABISELECT(144,124),
  (VTBL_ENTRY)&(_ZTI11S20291C3_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN12S20291C12_ntD1Ev();
extern void _ZN12S20291C12_ntD0Ev();
extern void _ZN12S20291C12_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV12S20291C12_nt__8S20291C4[] = {
  ABISELECT(-768,-644),
  ABISELECT(-936,-780),
  ABISELECT(-1080,-904),
  ABISELECT(-5200,-4300),
  ABISELECT(-16208,-13336),
  ABISELECT(2816,2320),
  ABISELECT(-304,-244),
  0,
  (VTBL_ENTRY)&(_ZTI12S20291C12_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN12S20291C12_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S20291C12_ntD0Ev,
  (VTBL_ENTRY)&_ZN12S20291C12_nt3v14Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C9_nt12S20291C12_nt__A1__8S20291C4[] = {
  ABISELECT(-448,-368),
  ABISELECT(-1224,-1028),
  ABISELECT(-1080,-904),
  ABISELECT(-912,-768),
  0,
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt__11S20291C9_nt12S20291C12_nt__A1__8S20291C4[] = {
  0,
  0,
  0,
  ABISELECT(912,768),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__11S20291C9_nt12S20291C12_nt__A1__8S20291C4[] = {
  ABISELECT(-144,-124),
  ABISELECT(1080,904),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__A1__11S20291C9_nt12S20291C12_nt__A1__8S20291C4[] = {
  0,
  ABISELECT(1224,1028),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__11S20291C9_nt12S20291C12_nt__A1__8S20291C4[] = {
  0,
  ABISELECT(448,368),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__12S20291C12_nt__8S20291C4[] = {
  0,
  ABISELECT(304,244),
  (VTBL_ENTRY)&(_ZTI12S20291C12_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
extern void ABISELECT(_ZTv0_n96_N12S20291C12_ntD1Ev,_ZTv0_n48_N12S20291C12_ntD1Ev)();
extern void ABISELECT(_ZThn2816_N12S20291C12_ntD1Ev,_ZThn2320_N12S20291C12_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N12S20291C12_ntD0Ev,_ZTv0_n48_N12S20291C12_ntD0Ev)();
extern void ABISELECT(_ZThn2816_N12S20291C12_ntD0Ev,_ZThn2320_N12S20291C12_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S20291C13_nt__12S20291C12_nt__8S20291C4[] = {
  ABISELECT(-2816,-2320),
  0,
  0,
  0,
  ABISELECT(-3584,-2964),
  ABISELECT(-3752,-3100),
  ABISELECT(-3896,-3224),
  ABISELECT(-8016,-6620),
  ABISELECT(-19024,-15656),
  ABISELECT(-3120,-2564),
  ABISELECT(-2816,-2320),
  (VTBL_ENTRY)&(_ZTI12S20291C12_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N12S20291C12_ntD1Ev,_ZTv0_n48_N12S20291C12_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N12S20291C12_ntD0Ev,_ZTv0_n48_N12S20291C12_ntD0Ev),
};
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C5_nt3v12Ev();
extern void ABISELECT(_ZTv0_n80_N12S20291C12_ntD1Ev,_ZTv0_n40_N12S20291C12_ntD1Ev)();
extern void ABISELECT(_ZTv0_n80_N12S20291C12_ntD0Ev,_ZTv0_n40_N12S20291C12_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20291C5_nt__12S20291C12_nt__8S20291C4[] = {
  ABISELECT(16208,13336),
  0,
  0,
  ABISELECT(11008,9036),
  ABISELECT(15904,13092),
  ABISELECT(15128,12432),
  ABISELECT(15272,12556),
  ABISELECT(15440,12692),
  ABISELECT(16208,13336),
  (VTBL_ENTRY)&(_ZTI12S20291C12_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S20291C5_nt3v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N12S20291C12_ntD1Ev,_ZTv0_n40_N12S20291C12_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N12S20291C12_ntD0Ev,_ZTv0_n40_N12S20291C12_ntD0Ev),
};
extern void _ZN11S20291C7_nt2v7Ev();
extern void ABISELECT(_ZTv0_n32_N12S20291C12_ntD1Ev,_ZTv0_n16_N12S20291C12_ntD1Ev)();
extern void ABISELECT(_ZTv0_n32_N12S20291C12_ntD0Ev,_ZTv0_n16_N12S20291C12_ntD0Ev)();
extern void _ZN11S20291C6_nt3v11Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C6_nt__12S20291C12_nt__8S20291C4[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(5200,4300),
  0,
  ABISELECT(5200,4300),
  (VTBL_ENTRY)&(_ZTI12S20291C12_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C12_ntD1Ev,_ZTv0_n16_N12S20291C12_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C12_ntD0Ev,_ZTv0_n16_N12S20291C12_ntD0Ev),
  (VTBL_ENTRY)&_ZN11S20291C6_nt3v11Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt11S20291C6_nt__A1__12S20291C12_nt__8S20291C4[] = {
  ABISELECT(4904,4056),
  (VTBL_ENTRY)&(_ZTI12S20291C12_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt11S20291C6_nt__A1__12S20291C12_nt__8S20291C4[] = {
  ABISELECT(4440,3656),
  (VTBL_ENTRY)&(_ZTI12S20291C12_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__A2__12S20291C12_nt__8S20291C4[] = {
  0,
  ABISELECT(1080,904),
  (VTBL_ENTRY)&(_ZTI12S20291C12_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__12S20291C12_nt__8S20291C4[] = {
  ABISELECT(-144,-124),
  ABISELECT(936,780),
  (VTBL_ENTRY)&(_ZTI12S20291C12_nt[0]),
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt__A2__12S20291C12_nt__8S20291C4[] = {
  0,
  0,
  0,
  ABISELECT(768,644),
  (VTBL_ENTRY)&(_ZTI12S20291C12_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void ABISELECT(_ZTvn464_n80_N12S20291C12_ntD1Ev,_ZTvn380_n40_N12S20291C12_ntD1Ev)();
extern void ABISELECT(_ZTvn464_n80_N12S20291C12_ntD0Ev,_ZTvn380_n40_N12S20291C12_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV12S20291C10_nt11S20291C5_nt__12S20291C12_nt__8S20291C4[] = {
  ABISELECT(14808,12176),
  ABISELECT(14664,12052),
  ABISELECT(10544,8656),
  ABISELECT(15440,12712),
  ABISELECT(15744,12956),
  (VTBL_ENTRY)&(_ZTI12S20291C12_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N12S20291C12_ntD1Ev,_ZTvn380_n40_N12S20291C12_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N12S20291C12_ntD0Ev,_ZTvn380_n40_N12S20291C12_ntD0Ev),
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C9_nt__A1__12S20291C12_nt__8S20291C4[] = {
  ABISELECT(-448,-368),
  ABISELECT(-1224,-1028),
  ABISELECT(-1080,-904),
  ABISELECT(-912,-768),
  ABISELECT(-144,-124),
  (VTBL_ENTRY)&(_ZTI12S20291C12_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
extern void _ZN12S20291C13_ntD1Ev();
extern void _ZN12S20291C13_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV12S20291C13_nt__8S20291C4[] = {
  ABISELECT(-3584,-2964),
  ABISELECT(-3752,-3100),
  ABISELECT(-3896,-3224),
  ABISELECT(-8016,-6620),
  ABISELECT(-19024,-15656),
  ABISELECT(-3120,-2564),
  0,
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
  (VTBL_ENTRY)&_ZN12S20291C13_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S20291C13_ntD0Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__12S20291C13_nt__8S20291C4[] = {
  0,
  ABISELECT(3120,2564),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C5_nt3v12Ev();
extern void ABISELECT(_ZTv0_n80_N12S20291C13_ntD1Ev,_ZTv0_n40_N12S20291C13_ntD1Ev)();
extern void ABISELECT(_ZTv0_n80_N12S20291C13_ntD0Ev,_ZTv0_n40_N12S20291C13_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20291C5_nt__12S20291C13_nt__8S20291C4[] = {
  ABISELECT(19024,15656),
  0,
  0,
  ABISELECT(11008,9036),
  ABISELECT(15904,13092),
  ABISELECT(15128,12432),
  ABISELECT(15272,12556),
  ABISELECT(15440,12692),
  ABISELECT(19024,15656),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S20291C5_nt3v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N12S20291C13_ntD1Ev,_ZTv0_n40_N12S20291C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N12S20291C13_ntD0Ev,_ZTv0_n40_N12S20291C13_ntD0Ev),
};
extern void _ZN11S20291C7_nt2v7Ev();
extern void ABISELECT(_ZTv0_n32_N12S20291C13_ntD1Ev,_ZTv0_n16_N12S20291C13_ntD1Ev)();
extern void ABISELECT(_ZTv0_n32_N12S20291C13_ntD0Ev,_ZTv0_n16_N12S20291C13_ntD0Ev)();
extern void _ZN11S20291C6_nt3v11Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C6_nt__12S20291C13_nt__8S20291C4[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(8016,6620),
  0,
  ABISELECT(8016,6620),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C13_ntD1Ev,_ZTv0_n16_N12S20291C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C13_ntD0Ev,_ZTv0_n16_N12S20291C13_ntD0Ev),
  (VTBL_ENTRY)&_ZN11S20291C6_nt3v11Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt11S20291C6_nt__A1__12S20291C13_nt__8S20291C4[] = {
  ABISELECT(7720,6376),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt11S20291C6_nt__12S20291C13_nt__8S20291C4[] = {
  ABISELECT(7256,5976),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__A1__12S20291C13_nt__8S20291C4[] = {
  0,
  ABISELECT(3896,3224),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__12S20291C13_nt__8S20291C4[] = {
  ABISELECT(-144,-124),
  ABISELECT(3752,3100),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt__A2__12S20291C13_nt__8S20291C4[] = {
  0,
  0,
  0,
  ABISELECT(3584,2964),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void ABISELECT(_ZTvn464_n80_N12S20291C13_ntD1Ev,_ZTvn380_n40_N12S20291C13_ntD1Ev)();
extern void ABISELECT(_ZTvn464_n80_N12S20291C13_ntD0Ev,_ZTvn380_n40_N12S20291C13_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV12S20291C10_nt11S20291C5_nt__12S20291C13_nt__8S20291C4[] = {
  ABISELECT(14808,12176),
  ABISELECT(14664,12052),
  ABISELECT(10544,8656),
  ABISELECT(15440,12712),
  ABISELECT(18560,15276),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N12S20291C13_ntD1Ev,_ZTvn380_n40_N12S20291C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N12S20291C13_ntD0Ev,_ZTvn380_n40_N12S20291C13_ntD0Ev),
};
static  VTT_ENTRY vtt_S20291C4[] = {
  {&(_ZTV8S20291C4[10]),  10,135},
  {&(_tg__ZTV11S20291C3_nt__A__8S20291C4[3]),  3,3},
  {&(_tg__ZTV11S20291C2_nt__11S20291C3_nt__A__8S20291C4[3]),  3,4},
  {&(_tg__ZTV12S20291C13_nt__A__8S20291C4[8]),  8,13},
  {&(_tg__ZTV11S20291C7_nt__12S20291C13_nt__A__8S20291C4[3]),  3,4},
  {&(_tg__ZTV11S20291C5_nt__12S20291C13_nt__A__8S20291C4[10]),  10,14},
  {&(_tg__ZTV11S20291C6_nt__12S20291C13_nt__A__8S20291C4[9]),  9,13},
  {&(_tg__ZTV11S20291C8_nt11S20291C6_nt__A1__12S20291C13_nt__A__8S20291C4[2]),  2,5},
  {&(_tg__ZTV11S20291C2_nt11S20291C6_nt__12S20291C13_nt__A__8S20291C4[2]),  2,3},
  {&(_tg__ZTV11S20291C2_nt__A1__12S20291C13_nt__A__8S20291C4[3]),  3,4},
  {&(_tg__ZTV11S20291C3_nt__12S20291C13_nt__A__8S20291C4[3]),  3,3},
  {&(_tg__ZTV11S20291C8_nt__A2__12S20291C13_nt__A__8S20291C4[5]),  5,8},
  {&(_tg__ZTV12S20291C10_nt11S20291C5_nt__12S20291C13_nt__A__8S20291C4[6]),  6,8},
  {&(_ZTV8S20291C4[35]),  35,135},
  {&(_ZTV8S20291C4[56]),  56,135},
  {&(_ZTV8S20291C4[62]),  62,135},
  {&(_ZTV8S20291C4[67]),  67,135},
  {&(_ZTV8S20291C4[71]),  71,135},
  {&(_ZTV8S20291C4[75]),  75,135},
  {&(_ZTV8S20291C4[80]),  80,135},
  {&(_ZTV8S20291C4[86]),  86,135},
  {&(_ZTV8S20291C4[45]),  45,135},
  {&(_ZTV8S20291C4[101]),  101,135},
  {&(_ZTV8S20291C4[130]),  130,135},
  {&(_ZTV8S20291C4[111]),  111,135},
  {&(_ZTV8S20291C4[114]),  114,135},
  {&(_ZTV8S20291C4[20]),  20,135},
  {&(_tg__ZTV11S20291C5_nt__8S20291C4[7]),  7,11},
  {&(_tg__ZTV11S20291C9_nt11S20291C5_nt__8S20291C4[6]),  6,7},
  {&(_tg__ZTV11S20291C8_nt__11S20291C9_nt11S20291C5_nt__8S20291C4[5]),  5,8},
  {&(_tg__ZTV11S20291C3_nt__11S20291C9_nt11S20291C5_nt__8S20291C4[3]),  3,3},
  {&(_tg__ZTV11S20291C2_nt__A1__11S20291C9_nt11S20291C5_nt__8S20291C4[3]),  3,4},
  {&(_tg__ZTV11S20291C7_nt__11S20291C9_nt11S20291C5_nt__8S20291C4[3]),  3,4},
  {&(_tg__ZTV12S20291C10_nt11S20291C5_nt__8S20291C4[6]),  6,8},
  {&(_tg__ZTV11S20291C7_nt__12S20291C10_nt11S20291C5_nt__8S20291C4[3]),  3,4},
  {&(_tg__ZTV11S20291C6_nt__12S20291C10_nt11S20291C5_nt__8S20291C4[9]),  9,13},
  {&(_tg__ZTV11S20291C8_nt11S20291C6_nt__12S20291C10_nt11S20291C5_nt__8S20291C4[2]),  2,5},
  {&(_tg__ZTV11S20291C2_nt11S20291C6_nt__12S20291C10_nt11S20291C5_nt__8S20291C4[2]),  2,3},
  {&(_tg__ZTV11S20291C2_nt__A1__12S20291C10_nt11S20291C5_nt__8S20291C4[3]),  3,4},
  {&(_tg__ZTV11S20291C3_nt__12S20291C10_nt11S20291C5_nt__8S20291C4[3]),  3,3},
  {&(_tg__ZTV11S20291C6_nt__11S20291C5_nt__8S20291C4[9]),  9,13},
  {&(_tg__ZTV11S20291C8_nt11S20291C6_nt__11S20291C5_nt__8S20291C4[2]),  2,5},
  {&(_tg__ZTV11S20291C2_nt11S20291C6_nt__11S20291C5_nt__8S20291C4[2]),  2,3},
  {&(_tg__ZTV11S20291C2_nt__A1__11S20291C5_nt__8S20291C4[3]),  3,4},
  {&(_tg__ZTV11S20291C3_nt__11S20291C5_nt__8S20291C4[3]),  3,3},
  {&(_tg__ZTV11S20291C8_nt__A1__11S20291C5_nt__8S20291C4[5]),  5,8},
  {&(_tg__ZTV11S20291C7_nt__A1__11S20291C5_nt__8S20291C4[3]),  3,4},
  {&(_tg__ZTV12S20291C10_nt__11S20291C5_nt__8S20291C4[6]),  6,8},
  {&(_tg__ZTV11S20291C3_nt__8S20291C4[3]),  3,3},
  {&(_tg__ZTV11S20291C2_nt__11S20291C3_nt__8S20291C4[3]),  3,4},
  {&(_tg__ZTV12S20291C12_nt__8S20291C4[9]),  9,13},
  {&(_tg__ZTV11S20291C9_nt12S20291C12_nt__A1__8S20291C4[6]),  6,7},
  {&(_tg__ZTV11S20291C8_nt__11S20291C9_nt12S20291C12_nt__A1__8S20291C4[5]),  5,8},
  {&(_tg__ZTV11S20291C3_nt__11S20291C9_nt12S20291C12_nt__A1__8S20291C4[3]),  3,3},
  {&(_tg__ZTV11S20291C2_nt__A1__11S20291C9_nt12S20291C12_nt__A1__8S20291C4[3]),  3,4},
  {&(_tg__ZTV11S20291C7_nt__11S20291C9_nt12S20291C12_nt__A1__8S20291C4[3]),  3,4},
  {&(_tg__ZTV11S20291C7_nt__12S20291C12_nt__8S20291C4[3]),  3,4},
  {&(_tg__ZTV12S20291C13_nt__12S20291C12_nt__8S20291C4[12]),  12,17},
  {&(_tg__ZTV11S20291C5_nt__12S20291C12_nt__8S20291C4[10]),  10,14},
  {&(_tg__ZTV11S20291C6_nt__12S20291C12_nt__8S20291C4[9]),  9,13},
  {&(_tg__ZTV11S20291C8_nt11S20291C6_nt__A1__12S20291C12_nt__8S20291C4[2]),  2,5},
  {&(_tg__ZTV11S20291C2_nt11S20291C6_nt__A1__12S20291C12_nt__8S20291C4[2]),  2,3},
  {&(_tg__ZTV11S20291C2_nt__A2__12S20291C12_nt__8S20291C4[3]),  3,4},
  {&(_tg__ZTV11S20291C3_nt__12S20291C12_nt__8S20291C4[3]),  3,3},
  {&(_tg__ZTV11S20291C8_nt__A2__12S20291C12_nt__8S20291C4[5]),  5,8},
  {&(_tg__ZTV12S20291C10_nt11S20291C5_nt__12S20291C12_nt__8S20291C4[6]),  6,8},
  {&(_tg__ZTV11S20291C9_nt__A1__12S20291C12_nt__8S20291C4[6]),  6,7},
  {&(_tg__ZTV12S20291C13_nt__8S20291C4[8]),  8,13},
  {&(_tg__ZTV11S20291C7_nt__12S20291C13_nt__8S20291C4[3]),  3,4},
  {&(_tg__ZTV11S20291C5_nt__12S20291C13_nt__8S20291C4[10]),  10,14},
  {&(_tg__ZTV11S20291C6_nt__12S20291C13_nt__8S20291C4[9]),  9,13},
  {&(_tg__ZTV11S20291C8_nt11S20291C6_nt__A1__12S20291C13_nt__8S20291C4[2]),  2,5},
  {&(_tg__ZTV11S20291C2_nt11S20291C6_nt__12S20291C13_nt__8S20291C4[2]),  2,3},
  {&(_tg__ZTV11S20291C2_nt__A1__12S20291C13_nt__8S20291C4[3]),  3,4},
  {&(_tg__ZTV11S20291C3_nt__12S20291C13_nt__8S20291C4[3]),  3,3},
  {&(_tg__ZTV11S20291C8_nt__A2__12S20291C13_nt__8S20291C4[5]),  5,8},
  {&(_tg__ZTV12S20291C10_nt11S20291C5_nt__12S20291C13_nt__8S20291C4[6]),  6,8},
};
extern VTBL_ENTRY _ZTI8S20291C4[];
extern  VTBL_ENTRY _ZTV8S20291C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20291C4[];
static VTBL_ENTRY alt_thunk_names9[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N12S20291C12_ntD0Ev,_ZTv0_n48_N12S20291C12_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2816_N12S20291C12_ntD0Ev,_ZThn2320_N12S20291C12_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N12S20291C12_ntD1Ev,_ZTv0_n48_N12S20291C12_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2816_N12S20291C12_ntD1Ev,_ZThn2320_N12S20291C12_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N11S20291C5_ntD0Ev,_ZTv0_n16_N11S20291C5_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N11S20291C5_ntD0Ev,_ZThn9036_N11S20291C5_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N11S20291C5_ntD1Ev,_ZTv0_n16_N11S20291C5_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N11S20291C5_ntD1Ev,_ZThn9036_N11S20291C5_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N12S20291C10_ntD0Ev,_ZTv0_n16_N12S20291C10_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N12S20291C10_ntD0Ev,_ZThn8656_N12S20291C10_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N12S20291C10_ntD1Ev,_ZTv0_n16_N12S20291C10_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N12S20291C10_ntD1Ev,_ZThn8656_N12S20291C10_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N12S20291C13_ntD0Ev,_ZTv0_n16_N12S20291C13_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11496_N12S20291C13_ntD0Ev,_ZThn9452_N12S20291C13_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N12S20291C13_ntD1Ev,_ZTv0_n16_N12S20291C13_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11496_N12S20291C13_ntD1Ev,_ZThn9452_N12S20291C13_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N12S20291C13_ntD0Ev,_ZTv0_n40_N12S20291C13_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn488_N12S20291C13_ntD0Ev,_ZThn416_N12S20291C13_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N12S20291C13_ntD1Ev,_ZTv0_n40_N12S20291C13_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn488_N12S20291C13_ntD1Ev,_ZThn416_N12S20291C13_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20291C4D0Ev,_ZTv0_n48_N8S20291C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn19680_N8S20291C4D0Ev,_ZThn16208_N8S20291C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20291C4D1Ev,_ZTv0_n48_N8S20291C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn19680_N8S20291C4D1Ev,_ZThn16208_N8S20291C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S20291C4D0Ev,_ZTv0_n44_N8S20291C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16864_N8S20291C4D0Ev,_ZThn13888_N8S20291C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S20291C4D1Ev,_ZTv0_n44_N8S20291C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16864_N8S20291C4D1Ev,_ZThn13888_N8S20291C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20291C4D0Ev,_ZTv0_n16_N8S20291C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11664_N8S20291C4D0Ev,_ZThn9588_N8S20291C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20291C4D1Ev,_ZTv0_n16_N8S20291C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11664_N8S20291C4D1Ev,_ZThn9588_N8S20291C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20291C4D0Ev,_ZTv0_n40_N8S20291C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S20291C4D0Ev,_ZThn552_N8S20291C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20291C4D1Ev,_ZTv0_n40_N8S20291C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S20291C4D1Ev,_ZThn552_N8S20291C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20291C4 = {  "S20291C4", // class name
  bases_S20291C4, 23,
  &(vtc_S20291C4[0]), // expected_vtbl_contents
  &(vtt_S20291C4[0]), // expected_vtt_contents
  ABISELECT(20160,16616), // object size
  NSPAIRA(_ZTI8S20291C4),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20291C4),135, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20291C4),77, //virtual table table var
  23, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names9,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20291C15_nt  : S20291C9_nt , S20291C10_nt {
  int s20291c15f0:13;
  __tsi64 s20291c15f1;
  int s20291c15f2;
  void *s20291c15f3[2];
  __tsi64 s20291c15f4;
  ::S20291C8_nt s20291c15f5;
  virtual  ~S20291C15_nt(); // _ZN12S20291C15_ntD2Ev
  virtual void  v15(); // _ZN12S20291C15_nt3v15Ev
  virtual void  v16(); // _ZN12S20291C15_nt3v16Ev
  S20291C15_nt(); // tgen
};
//SIG(-1 S20291C15_nt) C1{ BC2{ BC3{ v3 Fs:6 Fl Fs:4 FL[13] Fp} VBC4{ v4 v5 v6 Fi[2] FL[2] FC3[3]} VBC5{ VBC3 Fp FC3 Fi:3} VBC6{ v7 FL FD Fp Fc FC3 Fp[2] FL[8] Fs Fp FL:64} FC6 Fs Fi[2]} BC7{ VBC6 VBC8{ BC6 BC4 BC3 vd v8 FL[2] Fp[8] FC2 Fp Fi FC2 Fi} VBC3 VBC5 FL:44 Fp Fi FC2 FL[2] Fi[3] FC8 Fc:7 FC9{ BC6 vd v9 FC5 Fi Fp Fi}} vd v1 v2 Fi:13 FL Fi Fp[2] FL FC4}


 S20291C15_nt ::~S20291C15_nt(){ note_dtor("S20291C15_nt", this);}
void  S20291C15_nt ::v15(){vfunc_called(this, "_ZN12S20291C15_nt3v15Ev");}
void  S20291C15_nt ::v16(){vfunc_called(this, "_ZN12S20291C15_nt3v16Ev");}
S20291C15_nt ::S20291C15_nt(){ note_ctor("S20291C15_nt", this);} // tgen

//skip512 S20291C15_nt

#else // __cplusplus

extern void _ZN12S20291C15_ntC1Ev();
extern void _ZN12S20291C15_ntD2Ev();
Name_Map name_map_S20291C15_nt[] = {
  NSPAIR(_ZN12S20291C15_ntC1Ev),
  NSPAIR(_ZN12S20291C15_ntD2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
extern Class_Descriptor cd_S20291C8_nt;
extern VTBL_ENTRY _ZTI11S20291C8_nt[];
extern  VTBL_ENTRY _ZTV11S20291C8_nt[];
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
extern Class_Descriptor cd_S20291C3_nt;
extern VTBL_ENTRY _ZTI11S20291C3_nt[];
extern  VTBL_ENTRY _ZTV11S20291C3_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20291C3_nt[];
extern Class_Descriptor cd_S20291C7_nt;
extern VTBL_ENTRY _ZTI11S20291C7_nt[];
extern  VTBL_ENTRY _ZTV11S20291C7_nt[];
extern Class_Descriptor cd_S20291C9_nt;
extern VTBL_ENTRY _ZTI11S20291C9_nt[];
extern  VTBL_ENTRY _ZTV11S20291C9_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20291C9_nt[];
extern Class_Descriptor cd_S20291C7_nt;
extern VTBL_ENTRY _ZTI11S20291C7_nt[];
extern  VTBL_ENTRY _ZTV11S20291C7_nt[];
extern Class_Descriptor cd_S20291C8_nt;
extern VTBL_ENTRY _ZTI11S20291C8_nt[];
extern  VTBL_ENTRY _ZTV11S20291C8_nt[];
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
extern Class_Descriptor cd_S20291C6_nt;
extern VTBL_ENTRY _ZTI11S20291C6_nt[];
extern  VTBL_ENTRY _ZTV11S20291C6_nt[];
extern Class_Descriptor cd_S20291C10_nt;
extern VTBL_ENTRY _ZTI12S20291C10_nt[];
extern  VTBL_ENTRY _ZTV12S20291C10_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20291C10_nt[];
static Base_Class bases_S20291C15_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20291C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20291C8_nt,    ABISELECT(7376,6060), //bcp->offset
    20, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20291C2_nt,    ABISELECT(8008,6596), //bcp->offset
    31, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20291C3_nt,    ABISELECT(7840,6460), //bcp->offset
    28, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20291C7_nt,    ABISELECT(8160,6720), //bcp->offset
    35, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20291C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20291C7_nt,    ABISELECT(8464,6964), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20291C8_nt,    ABISELECT(8760,7208), //bcp->offset
    52, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20291C2_nt,    ABISELECT(9224,7608), //bcp->offset
    57, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20291C6_nt,    ABISELECT(8464,6964), //bcp->offset
    39, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S20291C10_nt,    ABISELECT(464,380), //bcp->offset
    12, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI12S20291C15_nt[];
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN12S20291C15_ntD1Ev();
extern void _ZN12S20291C15_ntD0Ev();
extern void _ZN12S20291C15_nt3v15Ev();
extern void _ZN12S20291C15_nt3v16Ev();
extern void ABISELECT(_ZThn464_N12S20291C15_ntD1Ev,_ZThn380_N12S20291C15_ntD1Ev)();
extern void ABISELECT(_ZThn464_N12S20291C15_ntD0Ev,_ZThn380_N12S20291C15_ntD0Ev)();
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C7_nt2v7Ev();
extern void _ZN11S20291C7_nt2v7Ev();
extern void ABISELECT(_ZTv0_n32_N12S20291C15_ntD1Ev,_ZTv0_n16_N12S20291C15_ntD1Ev)();
extern void ABISELECT(_ZThn8464_N12S20291C15_ntD1Ev,_ZThn6964_N12S20291C15_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N12S20291C15_ntD0Ev,_ZTv0_n16_N12S20291C15_ntD0Ev)();
extern void ABISELECT(_ZThn8464_N12S20291C15_ntD0Ev,_ZThn6964_N12S20291C15_ntD0Ev)() __attribute__((weak));
extern void _ZN11S20291C6_nt3v11Ev();
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY vtc_S20291C15_nt[] = {
  ABISELECT(8464,6964),
  ABISELECT(8160,6720),
  ABISELECT(8008,6596),
  ABISELECT(7840,6460),
  ABISELECT(7376,6060),
  0,
  (VTBL_ENTRY)&(_ZTI12S20291C15_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN12S20291C15_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S20291C15_ntD0Ev,
  (VTBL_ENTRY)&_ZN12S20291C15_nt3v15Ev,
  (VTBL_ENTRY)&_ZN12S20291C15_nt3v16Ev,
  ABISELECT(7376,6080),
  ABISELECT(7544,6216),
  ABISELECT(8000,6584),
  ABISELECT(7696,6340),
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI12S20291C15_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N12S20291C15_ntD1Ev,_ZThn380_N12S20291C15_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N12S20291C15_ntD0Ev,_ZThn380_N12S20291C15_ntD0Ev),
  0,
  0,
  0,
  ABISELECT(-7376,-6060),
  (VTBL_ENTRY)&(_ZTI12S20291C15_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
  ABISELECT(168,136),
  ABISELECT(-7840,-6460),
  (VTBL_ENTRY)&(_ZTI12S20291C15_nt[0]),
  0,
  ABISELECT(-8008,-6596),
  (VTBL_ENTRY)&(_ZTI12S20291C15_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  0,
  ABISELECT(-8160,-6720),
  (VTBL_ENTRY)&(_ZTI12S20291C15_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-8464,-6964),
  0,
  ABISELECT(-8464,-6964),
  (VTBL_ENTRY)&(_ZTI12S20291C15_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C15_ntD1Ev,_ZTv0_n16_N12S20291C15_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C15_ntD0Ev,_ZTv0_n16_N12S20291C15_ntD0Ev),
  (VTBL_ENTRY)&_ZN11S20291C6_nt3v11Ev,
  ABISELECT(-8760,-7208),
  (VTBL_ENTRY)&(_ZTI12S20291C15_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
  ABISELECT(-9224,-7608),
  (VTBL_ENTRY)&(_ZTI12S20291C15_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern VTBL_ENTRY _ZTV12S20291C15_nt[];
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C9_nt__12S20291C15_nt[] = {
  ABISELECT(8160,6720),
  ABISELECT(8008,6596),
  ABISELECT(7840,6460),
  ABISELECT(7376,6060),
  0,
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt__11S20291C9_nt__12S20291C15_nt[] = {
  0,
  0,
  0,
  ABISELECT(-7376,-6060),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__11S20291C9_nt__12S20291C15_nt[] = {
  ABISELECT(168,136),
  ABISELECT(-7840,-6460),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__A1__11S20291C9_nt__12S20291C15_nt[] = {
  0,
  ABISELECT(-8008,-6596),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__11S20291C9_nt__12S20291C15_nt[] = {
  0,
  ABISELECT(-8160,-6720),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern void _ZN12S20291C10_ntD1Ev();
extern void _ZN12S20291C10_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV12S20291C10_nt__12S20291C15_nt[] = {
  ABISELECT(7376,6080),
  ABISELECT(7544,6216),
  ABISELECT(8000,6584),
  ABISELECT(7696,6340),
  0,
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN12S20291C10_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S20291C10_ntD0Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__12S20291C10_nt__12S20291C15_nt[] = {
  0,
  ABISELECT(-7696,-6340),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
extern void ABISELECT(_ZTv0_n32_N12S20291C10_ntD1Ev,_ZTv0_n16_N12S20291C10_ntD1Ev)();
extern void ABISELECT(_ZThn8000_N12S20291C10_ntD1Ev,_ZThn6584_N12S20291C10_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N12S20291C10_ntD0Ev,_ZTv0_n16_N12S20291C10_ntD0Ev)();
extern void ABISELECT(_ZThn8000_N12S20291C10_ntD0Ev,_ZThn6584_N12S20291C10_ntD0Ev)() __attribute__((weak));
extern void _ZN11S20291C6_nt3v11Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C6_nt__12S20291C10_nt__12S20291C15_nt[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-8000,-6584),
  0,
  ABISELECT(-8000,-6584),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C10_ntD1Ev,_ZTv0_n16_N12S20291C10_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C10_ntD0Ev,_ZTv0_n16_N12S20291C10_ntD0Ev),
  (VTBL_ENTRY)&_ZN11S20291C6_nt3v11Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt11S20291C6_nt__12S20291C10_nt__12S20291C15_nt[] = {
  ABISELECT(-8296,-6828),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt11S20291C6_nt__12S20291C10_nt__12S20291C15_nt[] = {
  ABISELECT(-8760,-7228),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__A1__12S20291C10_nt__12S20291C15_nt[] = {
  0,
  ABISELECT(-7544,-6216),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__12S20291C10_nt__12S20291C15_nt[] = {
  ABISELECT(168,136),
  ABISELECT(-7376,-6080),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__12S20291C15_nt[] = {
  ABISELECT(168,136),
  0,
  (VTBL_ENTRY)&(_ZTI11S20291C3_nt[0]),
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__11S20291C3_nt__12S20291C15_nt[] = {
  0,
  ABISELECT(-168,-136),
  (VTBL_ENTRY)&(_ZTI11S20291C3_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
static  VTT_ENTRY vtt_S20291C15_nt[] = {
  {&(_ZTV12S20291C15_nt[7]),  7,60},
  {&(_tg__ZTV11S20291C9_nt__12S20291C15_nt[6]),  6,7},
  {&(_tg__ZTV11S20291C8_nt__11S20291C9_nt__12S20291C15_nt[5]),  5,8},
  {&(_tg__ZTV11S20291C3_nt__11S20291C9_nt__12S20291C15_nt[3]),  3,3},
  {&(_tg__ZTV11S20291C2_nt__A1__11S20291C9_nt__12S20291C15_nt[3]),  3,4},
  {&(_tg__ZTV11S20291C7_nt__11S20291C9_nt__12S20291C15_nt[3]),  3,4},
  {&(_tg__ZTV12S20291C10_nt__12S20291C15_nt[6]),  6,8},
  {&(_tg__ZTV11S20291C7_nt__12S20291C10_nt__12S20291C15_nt[3]),  3,4},
  {&(_tg__ZTV11S20291C6_nt__12S20291C10_nt__12S20291C15_nt[9]),  9,13},
  {&(_tg__ZTV11S20291C8_nt11S20291C6_nt__12S20291C10_nt__12S20291C15_nt[2]),  2,5},
  {&(_tg__ZTV11S20291C2_nt11S20291C6_nt__12S20291C10_nt__12S20291C15_nt[2]),  2,3},
  {&(_tg__ZTV11S20291C2_nt__A1__12S20291C10_nt__12S20291C15_nt[3]),  3,4},
  {&(_tg__ZTV11S20291C3_nt__12S20291C10_nt__12S20291C15_nt[3]),  3,3},
  {&(_ZTV12S20291C15_nt[25]),  25,60},
  {&(_ZTV12S20291C15_nt[31]),  31,60},
  {&(_ZTV12S20291C15_nt[34]),  34,60},
  {&(_ZTV12S20291C15_nt[38]),  38,60},
  {&(_ZTV12S20291C15_nt[18]),  18,60},
  {&(_ZTV12S20291C15_nt[48]),  48,60},
  {&(_ZTV12S20291C15_nt[54]),  54,60},
  {&(_ZTV12S20291C15_nt[59]),  59,60},
  {&(_tg__ZTV11S20291C3_nt__12S20291C15_nt[3]),  3,3},
  {&(_tg__ZTV11S20291C2_nt__11S20291C3_nt__12S20291C15_nt[3]),  3,4},
};
extern VTBL_ENTRY _ZTI12S20291C15_nt[];
VTBL_ENTRY *P__ZTI12S20291C15_nt = _ZTI12S20291C15_nt; 
extern  VTBL_ENTRY _ZTV12S20291C15_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20291C15_nt[];
static VTBL_ENTRY alt_thunk_names10[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N12S20291C10_ntD0Ev,_ZTv0_n16_N12S20291C10_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8000_N12S20291C10_ntD0Ev,_ZThn6584_N12S20291C10_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N12S20291C10_ntD1Ev,_ZTv0_n16_N12S20291C10_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8000_N12S20291C10_ntD1Ev,_ZThn6584_N12S20291C10_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N12S20291C15_ntD0Ev,_ZTv0_n16_N12S20291C15_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8464_N12S20291C15_ntD0Ev,_ZThn6964_N12S20291C15_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N12S20291C15_ntD1Ev,_ZTv0_n16_N12S20291C15_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8464_N12S20291C15_ntD1Ev,_ZThn6964_N12S20291C15_ntD1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20291C15_nt = {  "S20291C15_nt", // class name
  bases_S20291C15_nt, 11,
  &(vtc_S20291C15_nt[0]), // expected_vtbl_contents
  &(vtt_S20291C15_nt[0]), // expected_vtt_contents
  ABISELECT(12592,10360), // object size
  NSPAIRA(_ZTI12S20291C15_nt),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV12S20291C15_nt),60, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT12S20291C15_nt),23, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names10,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20291C16_nt  : virtual S20291C2_nt , virtual S20291C9_nt , S20291C6_nt , S20291C5_nt {
  ::S20291C10_nt s20291c16f0;
  short s20291c16f1;
  int s20291c16f2:8;
  virtual void  v17(); // _ZN12S20291C16_nt3v17Ev
  virtual void  v18(); // _ZN12S20291C16_nt3v18Ev
  ~S20291C16_nt(); // tgen
  S20291C16_nt(); // tgen
};
//SIG(-1 S20291C16_nt) C1{ VBC2{ v3 Fs:6 Fl Fs:4 FL[13] Fp} VBC3{ BC2 VBC4{ v4 v5 v6 Fi[2] FL[2] FC2[3]} VBC5{ VBC2 Fp FC2 Fi:3} VBC6{ v7 FL FD Fp Fc FC2 Fp[2] FL[8] Fs Fp FL:64} FC6 Fs Fi[2]} BC7{ BC6 BC4 BC2 vd v8 FL[2] Fp[8] FC3 Fp Fi FC3 Fi} BC8{ VBC7 VBC2 VBC5 BC3 BC9{ VBC6 VBC7 VBC2 VBC5 FL:44 Fp Fi FC3 FL[2] Fi[3] FC7 Fc:7 FC10{ BC6 vd v10 FC5 Fi Fp Fi}} v9 FC7 FL Fc:7} v1 v2 FC9 Fs Fi:8}


void  S20291C16_nt ::v17(){vfunc_called(this, "_ZN12S20291C16_nt3v17Ev");}
void  S20291C16_nt ::v18(){vfunc_called(this, "_ZN12S20291C16_nt3v18Ev");}
S20291C16_nt ::~S20291C16_nt(){ note_dtor("S20291C16_nt", this);} // tgen
S20291C16_nt ::S20291C16_nt(){ note_ctor("S20291C16_nt", this);} // tgen

//skip512 S20291C16_nt

#else // __cplusplus

extern void _ZN12S20291C16_ntC1Ev();
extern void _ZN12S20291C16_ntD1Ev();
Name_Map name_map_S20291C16_nt[] = {
  NSPAIR(_ZN12S20291C16_ntC1Ev),
  NSPAIR(_ZN12S20291C16_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
extern Class_Descriptor cd_S20291C8_nt;
extern VTBL_ENTRY _ZTI11S20291C8_nt[];
extern  VTBL_ENTRY _ZTV11S20291C8_nt[];
extern Class_Descriptor cd_S20291C3_nt;
extern VTBL_ENTRY _ZTI11S20291C3_nt[];
extern  VTBL_ENTRY _ZTV11S20291C3_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20291C3_nt[];
extern Class_Descriptor cd_S20291C7_nt;
extern VTBL_ENTRY _ZTI11S20291C7_nt[];
extern  VTBL_ENTRY _ZTV11S20291C7_nt[];
extern Class_Descriptor cd_S20291C9_nt;
extern VTBL_ENTRY _ZTI11S20291C9_nt[];
extern  VTBL_ENTRY _ZTV11S20291C9_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20291C9_nt[];
extern Class_Descriptor cd_S20291C7_nt;
extern VTBL_ENTRY _ZTI11S20291C7_nt[];
extern  VTBL_ENTRY _ZTV11S20291C7_nt[];
extern Class_Descriptor cd_S20291C8_nt;
extern VTBL_ENTRY _ZTI11S20291C8_nt[];
extern  VTBL_ENTRY _ZTV11S20291C8_nt[];
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
extern Class_Descriptor cd_S20291C6_nt;
extern VTBL_ENTRY _ZTI11S20291C6_nt[];
extern  VTBL_ENTRY _ZTV11S20291C6_nt[];
extern Class_Descriptor cd_S20291C7_nt;
extern VTBL_ENTRY _ZTI11S20291C7_nt[];
extern  VTBL_ENTRY _ZTV11S20291C7_nt[];
extern Class_Descriptor cd_S20291C8_nt;
extern VTBL_ENTRY _ZTI11S20291C8_nt[];
extern  VTBL_ENTRY _ZTV11S20291C8_nt[];
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
extern Class_Descriptor cd_S20291C6_nt;
extern VTBL_ENTRY _ZTI11S20291C6_nt[];
extern  VTBL_ENTRY _ZTV11S20291C6_nt[];
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
extern Class_Descriptor cd_S20291C9_nt;
extern VTBL_ENTRY _ZTI11S20291C9_nt[];
extern  VTBL_ENTRY _ZTV11S20291C9_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20291C9_nt[];
extern Class_Descriptor cd_S20291C10_nt;
extern VTBL_ENTRY _ZTI12S20291C10_nt[];
extern  VTBL_ENTRY _ZTV12S20291C10_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20291C10_nt[];
extern Class_Descriptor cd_S20291C5_nt;
extern VTBL_ENTRY _ZTI11S20291C5_nt[];
extern  VTBL_ENTRY _ZTV11S20291C5_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20291C5_nt[];
static Base_Class bases_S20291C16_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20291C2_nt,    ABISELECT(26280,21584), //bcp->offset
    41, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20291C2_nt,    ABISELECT(26432,21708), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20291C8_nt,    ABISELECT(26896,22088), //bcp->offset
    53, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20291C3_nt,    ABISELECT(27360,22488), //bcp->offset
    61, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20291C7_nt,    ABISELECT(27536,22624), //bcp->offset
    64, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20291C9_nt,    ABISELECT(26432,21708), //bcp->offset
    45, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20291C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20291C8_nt,    ABISELECT(296,244), //bcp->offset
    14, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20291C2_nt,    ABISELECT(760,644), //bcp->offset
    19, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20291C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20291C7_nt,    ABISELECT(27840,22868), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20291C8_nt,    ABISELECT(28136,23112), //bcp->offset
    81, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20291C2_nt,    ABISELECT(28600,23512), //bcp->offset
    86, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20291C6_nt,    ABISELECT(27840,22868), //bcp->offset
    68, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S20291C2_nt,    ABISELECT(4128,3396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20291C9_nt,    ABISELECT(4128,3396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20291C10_nt,    ABISELECT(4592,3776), //bcp->offset
    33, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20291C5_nt,    ABISELECT(4128,3396), //bcp->offset
    22, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI12S20291C16_nt[];
extern void _ZN11S20291C7_nt2v7Ev();
extern void _ZN12S20291C16_ntD1Ev();
extern void _ZN12S20291C16_ntD0Ev();
extern void _ZN11S20291C6_nt3v11Ev();
extern void _ZN12S20291C16_nt3v17Ev();
extern void _ZN12S20291C16_nt3v18Ev();
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C5_nt3v12Ev();
extern void ABISELECT(_ZThn4128_N12S20291C16_ntD1Ev,_ZThn3396_N12S20291C16_ntD1Ev)();
extern void ABISELECT(_ZThn4128_N12S20291C16_ntD0Ev,_ZThn3396_N12S20291C16_ntD0Ev)();
extern void ABISELECT(_ZThn4592_N12S20291C16_ntD1Ev,_ZThn3776_N12S20291C16_ntD1Ev)();
extern void ABISELECT(_ZThn4592_N12S20291C16_ntD0Ev,_ZThn3776_N12S20291C16_ntD0Ev)();
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
extern void _ZN11S20291C7_nt2v7Ev();
extern void _ZN11S20291C7_nt2v7Ev();
extern void ABISELECT(_ZTv0_n32_N12S20291C16_ntD1Ev,_ZTv0_n16_N12S20291C16_ntD1Ev)();
extern void ABISELECT(_ZThn27840_N12S20291C16_ntD1Ev,_ZThn22868_N12S20291C16_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N12S20291C16_ntD0Ev,_ZTv0_n16_N12S20291C16_ntD0Ev)();
extern void ABISELECT(_ZThn27840_N12S20291C16_ntD0Ev,_ZThn22868_N12S20291C16_ntD0Ev)() __attribute__((weak));
extern void _ZN11S20291C6_nt3v11Ev();
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY vtc_S20291C16_nt[] = {
  ABISELECT(27840,22868),
  ABISELECT(27536,22624),
  ABISELECT(27360,22488),
  ABISELECT(26896,22088),
  ABISELECT(26432,21708),
  ABISELECT(26280,21584),
  0,
  (VTBL_ENTRY)&(_ZTI12S20291C16_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&_ZN12S20291C16_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S20291C16_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S20291C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN12S20291C16_nt3v17Ev,
  (VTBL_ENTRY)&_ZN12S20291C16_nt3v18Ev,
  ABISELECT(-296,-244),
  (VTBL_ENTRY)&(_ZTI12S20291C16_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
  ABISELECT(-760,-644),
  (VTBL_ENTRY)&(_ZTI12S20291C16_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  ABISELECT(23712,19472),
  ABISELECT(23408,19228),
  ABISELECT(22152,18188),
  ABISELECT(23232,19092),
  ABISELECT(22768,18692),
  ABISELECT(-4128,-3396),
  (VTBL_ENTRY)&(_ZTI12S20291C16_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S20291C5_nt3v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N12S20291C16_ntD1Ev,_ZThn3396_N12S20291C16_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N12S20291C16_ntD0Ev,_ZThn3396_N12S20291C16_ntD0Ev),
  ABISELECT(22768,18712),
  ABISELECT(21688,17808),
  ABISELECT(23248,19092),
  ABISELECT(22944,18848),
  ABISELECT(-4592,-3776),
  (VTBL_ENTRY)&(_ZTI12S20291C16_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N12S20291C16_ntD1Ev,_ZThn3776_N12S20291C16_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N12S20291C16_ntD0Ev,_ZThn3776_N12S20291C16_ntD0Ev),
  0,
  ABISELECT(-26280,-21584),
  (VTBL_ENTRY)&(_ZTI12S20291C16_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  0,
  ABISELECT(1104,916),
  ABISELECT(-152,-124),
  ABISELECT(928,780),
  ABISELECT(464,380),
  ABISELECT(-26432,-21708),
  (VTBL_ENTRY)&(_ZTI12S20291C16_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  0,
  0,
  0,
  ABISELECT(-26896,-22088),
  (VTBL_ENTRY)&(_ZTI12S20291C16_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
  ABISELECT(-1080,-904),
  ABISELECT(-27360,-22488),
  (VTBL_ENTRY)&(_ZTI12S20291C16_nt[0]),
  0,
  ABISELECT(-27536,-22624),
  (VTBL_ENTRY)&(_ZTI12S20291C16_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-27840,-22868),
  0,
  ABISELECT(-27840,-22868),
  (VTBL_ENTRY)&(_ZTI12S20291C16_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C16_ntD1Ev,_ZTv0_n16_N12S20291C16_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C16_ntD0Ev,_ZTv0_n16_N12S20291C16_ntD0Ev),
  (VTBL_ENTRY)&_ZN11S20291C6_nt3v11Ev,
  ABISELECT(-28136,-23112),
  (VTBL_ENTRY)&(_ZTI12S20291C16_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
  ABISELECT(-28600,-23512),
  (VTBL_ENTRY)&(_ZTI12S20291C16_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern VTBL_ENTRY _ZTV12S20291C16_nt[];
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C5_nt3v12Ev();
extern void _ZN11S20291C5_ntD1Ev();
extern void _ZN11S20291C5_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C5_nt__12S20291C16_nt[] = {
  ABISELECT(23712,19472),
  ABISELECT(23408,19228),
  ABISELECT(22152,18188),
  ABISELECT(23232,19092),
  ABISELECT(22768,18692),
  0,
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S20291C5_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S20291C5_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S20291C5_ntD0Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C9_nt11S20291C5_nt__A1__12S20291C16_nt[] = {
  ABISELECT(23408,19228),
  ABISELECT(22152,18188),
  ABISELECT(23232,19092),
  ABISELECT(22768,18692),
  0,
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt__11S20291C9_nt11S20291C5_nt__A1__12S20291C16_nt[] = {
  0,
  0,
  0,
  ABISELECT(-22768,-18692),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__11S20291C9_nt11S20291C5_nt__A1__12S20291C16_nt[] = {
  ABISELECT(-1080,-904),
  ABISELECT(-23232,-19092),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__A1__11S20291C9_nt11S20291C5_nt__A1__12S20291C16_nt[] = {
  0,
  ABISELECT(-22152,-18188),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__11S20291C9_nt11S20291C5_nt__A1__12S20291C16_nt[] = {
  0,
  ABISELECT(-23408,-19228),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern void _ZN12S20291C10_ntD1Ev();
extern void _ZN12S20291C10_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV12S20291C10_nt11S20291C5_nt__12S20291C16_nt[] = {
  ABISELECT(22768,18712),
  ABISELECT(21688,17808),
  ABISELECT(23248,19092),
  ABISELECT(22944,18848),
  0,
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN12S20291C10_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S20291C10_ntD0Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__12S20291C10_nt11S20291C5_nt__12S20291C16_nt[] = {
  0,
  ABISELECT(-22944,-18848),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
extern void ABISELECT(_ZTv0_n32_N12S20291C10_ntD1Ev,_ZTv0_n16_N12S20291C10_ntD1Ev)();
extern void ABISELECT(_ZThn23248_N12S20291C10_ntD1Ev,_ZThn19092_N12S20291C10_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N12S20291C10_ntD0Ev,_ZTv0_n16_N12S20291C10_ntD0Ev)();
extern void ABISELECT(_ZThn23248_N12S20291C10_ntD0Ev,_ZThn19092_N12S20291C10_ntD0Ev)() __attribute__((weak));
extern void _ZN11S20291C6_nt3v11Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C6_nt__12S20291C10_nt11S20291C5_nt__12S20291C16_nt[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-23248,-19092),
  0,
  ABISELECT(-23248,-19092),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C10_ntD1Ev,_ZTv0_n16_N12S20291C10_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C10_ntD0Ev,_ZTv0_n16_N12S20291C10_ntD0Ev),
  (VTBL_ENTRY)&_ZN11S20291C6_nt3v11Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt11S20291C6_nt__12S20291C10_nt11S20291C5_nt__12S20291C16_nt[] = {
  ABISELECT(-23544,-19336),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt11S20291C6_nt__12S20291C10_nt11S20291C5_nt__12S20291C16_nt[] = {
  ABISELECT(-24008,-19736),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__A1__12S20291C10_nt11S20291C5_nt__12S20291C16_nt[] = {
  0,
  ABISELECT(-21688,-17808),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__12S20291C10_nt11S20291C5_nt__12S20291C16_nt[] = {
  ABISELECT(-1080,-904),
  ABISELECT(-22768,-18712),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
};
extern void _ZN11S20291C7_nt2v7Ev();
extern void ABISELECT(_ZTv0_n32_N11S20291C5_ntD1Ev,_ZTv0_n16_N11S20291C5_ntD1Ev)();
extern void ABISELECT(_ZThn23712_N11S20291C5_ntD1Ev,_ZThn19472_N11S20291C5_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N11S20291C5_ntD0Ev,_ZTv0_n16_N11S20291C5_ntD0Ev)();
extern void ABISELECT(_ZThn23712_N11S20291C5_ntD0Ev,_ZThn19472_N11S20291C5_ntD0Ev)() __attribute__((weak));
extern void _ZN11S20291C6_nt3v11Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C6_nt__11S20291C5_nt__12S20291C16_nt[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-23712,-19472),
  0,
  ABISELECT(-23712,-19472),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N11S20291C5_ntD1Ev,_ZTv0_n16_N11S20291C5_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N11S20291C5_ntD0Ev,_ZTv0_n16_N11S20291C5_ntD0Ev),
  (VTBL_ENTRY)&_ZN11S20291C6_nt3v11Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt11S20291C6_nt__11S20291C5_nt__12S20291C16_nt[] = {
  ABISELECT(-24008,-19716),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt11S20291C6_nt__11S20291C5_nt__12S20291C16_nt[] = {
  ABISELECT(-24472,-20116),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__A1__11S20291C5_nt__12S20291C16_nt[] = {
  0,
  ABISELECT(-22152,-18188),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__11S20291C5_nt__12S20291C16_nt[] = {
  ABISELECT(-1080,-904),
  ABISELECT(-23232,-19092),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt__A1__11S20291C5_nt__12S20291C16_nt[] = {
  0,
  0,
  0,
  ABISELECT(-22768,-18692),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__A1__11S20291C5_nt__12S20291C16_nt[] = {
  0,
  ABISELECT(-23408,-19228),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern void ABISELECT(_ZThn464_N11S20291C5_ntD1Ev,_ZThn380_N11S20291C5_ntD1Ev)();
extern void ABISELECT(_ZThn464_N11S20291C5_ntD0Ev,_ZThn380_N11S20291C5_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV12S20291C10_nt__11S20291C5_nt__12S20291C16_nt[] = {
  ABISELECT(22768,18712),
  ABISELECT(21688,17808),
  ABISELECT(23248,19092),
  ABISELECT(22944,18848),
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N11S20291C5_ntD1Ev,_ZThn380_N11S20291C5_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N11S20291C5_ntD0Ev,_ZThn380_N11S20291C5_ntD0Ev),
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C9_nt__12S20291C16_nt[] = {
  ABISELECT(1104,916),
  ABISELECT(-152,-124),
  ABISELECT(928,780),
  ABISELECT(464,380),
  0,
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt__11S20291C9_nt__12S20291C16_nt[] = {
  0,
  0,
  0,
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__11S20291C9_nt__12S20291C16_nt[] = {
  ABISELECT(-1080,-904),
  ABISELECT(-928,-780),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__A1__11S20291C9_nt__12S20291C16_nt[] = {
  0,
  ABISELECT(152,124),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__11S20291C9_nt__12S20291C16_nt[] = {
  0,
  ABISELECT(-1104,-916),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__12S20291C16_nt[] = {
  ABISELECT(-1080,-904),
  0,
  (VTBL_ENTRY)&(_ZTI11S20291C3_nt[0]),
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__11S20291C3_nt__12S20291C16_nt[] = {
  0,
  ABISELECT(1080,904),
  (VTBL_ENTRY)&(_ZTI11S20291C3_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
static  VTT_ENTRY vtt_S20291C16_nt[] = {
  {&(_ZTV12S20291C16_nt[8]),  8,89},
  {&(_tg__ZTV11S20291C5_nt__12S20291C16_nt[7]),  7,11},
  {&(_tg__ZTV11S20291C9_nt11S20291C5_nt__A1__12S20291C16_nt[6]),  6,7},
  {&(_tg__ZTV11S20291C8_nt__11S20291C9_nt11S20291C5_nt__A1__12S20291C16_nt[5]),  5,8},
  {&(_tg__ZTV11S20291C3_nt__11S20291C9_nt11S20291C5_nt__A1__12S20291C16_nt[3]),  3,3},
  {&(_tg__ZTV11S20291C2_nt__A1__11S20291C9_nt11S20291C5_nt__A1__12S20291C16_nt[3]),  3,4},
  {&(_tg__ZTV11S20291C7_nt__11S20291C9_nt11S20291C5_nt__A1__12S20291C16_nt[3]),  3,4},
  {&(_tg__ZTV12S20291C10_nt11S20291C5_nt__12S20291C16_nt[6]),  6,8},
  {&(_tg__ZTV11S20291C7_nt__12S20291C10_nt11S20291C5_nt__12S20291C16_nt[3]),  3,4},
  {&(_tg__ZTV11S20291C6_nt__12S20291C10_nt11S20291C5_nt__12S20291C16_nt[9]),  9,13},
  {&(_tg__ZTV11S20291C8_nt11S20291C6_nt__12S20291C10_nt11S20291C5_nt__12S20291C16_nt[2]),  2,5},
  {&(_tg__ZTV11S20291C2_nt11S20291C6_nt__12S20291C10_nt11S20291C5_nt__12S20291C16_nt[2]),  2,3},
  {&(_tg__ZTV11S20291C2_nt__A1__12S20291C10_nt11S20291C5_nt__12S20291C16_nt[3]),  3,4},
  {&(_tg__ZTV11S20291C3_nt__12S20291C10_nt11S20291C5_nt__12S20291C16_nt[3]),  3,3},
  {&(_tg__ZTV11S20291C6_nt__11S20291C5_nt__12S20291C16_nt[9]),  9,13},
  {&(_tg__ZTV11S20291C8_nt11S20291C6_nt__11S20291C5_nt__12S20291C16_nt[2]),  2,5},
  {&(_tg__ZTV11S20291C2_nt11S20291C6_nt__11S20291C5_nt__12S20291C16_nt[2]),  2,3},
  {&(_tg__ZTV11S20291C2_nt__A1__11S20291C5_nt__12S20291C16_nt[3]),  3,4},
  {&(_tg__ZTV11S20291C3_nt__11S20291C5_nt__12S20291C16_nt[3]),  3,3},
  {&(_tg__ZTV11S20291C8_nt__A1__11S20291C5_nt__12S20291C16_nt[5]),  5,8},
  {&(_tg__ZTV11S20291C7_nt__A1__11S20291C5_nt__12S20291C16_nt[3]),  3,4},
  {&(_tg__ZTV12S20291C10_nt__11S20291C5_nt__12S20291C16_nt[6]),  6,8},
  {&(_ZTV12S20291C16_nt[44]),  44,89},
  {&(_ZTV12S20291C16_nt[52]),  52,89},
  {&(_ZTV12S20291C16_nt[58]),  58,89},
  {&(_ZTV12S20291C16_nt[64]),  64,89},
  {&(_ZTV12S20291C16_nt[67]),  67,89},
  {&(_ZTV12S20291C16_nt[29]),  29,89},
  {&(_ZTV12S20291C16_nt[77]),  77,89},
  {&(_ZTV12S20291C16_nt[83]),  83,89},
  {&(_ZTV12S20291C16_nt[88]),  88,89},
  {&(_ZTV12S20291C16_nt[39]),  39,89},
  {&(_tg__ZTV11S20291C9_nt__12S20291C16_nt[6]),  6,7},
  {&(_tg__ZTV11S20291C8_nt__11S20291C9_nt__12S20291C16_nt[5]),  5,8},
  {&(_tg__ZTV11S20291C3_nt__11S20291C9_nt__12S20291C16_nt[3]),  3,3},
  {&(_tg__ZTV11S20291C2_nt__A1__11S20291C9_nt__12S20291C16_nt[3]),  3,4},
  {&(_tg__ZTV11S20291C7_nt__11S20291C9_nt__12S20291C16_nt[3]),  3,4},
  {&(_tg__ZTV11S20291C3_nt__12S20291C16_nt[3]),  3,3},
  {&(_tg__ZTV11S20291C2_nt__11S20291C3_nt__12S20291C16_nt[3]),  3,4},
};
extern VTBL_ENTRY _ZTI12S20291C16_nt[];
VTBL_ENTRY *P__ZTI12S20291C16_nt = _ZTI12S20291C16_nt; 
extern  VTBL_ENTRY _ZTV12S20291C16_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20291C16_nt[];
static VTBL_ENTRY alt_thunk_names11[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N11S20291C5_ntD0Ev,_ZTv0_n16_N11S20291C5_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23712_N11S20291C5_ntD0Ev,_ZThn19472_N11S20291C5_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N11S20291C5_ntD1Ev,_ZTv0_n16_N11S20291C5_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23712_N11S20291C5_ntD1Ev,_ZThn19472_N11S20291C5_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N12S20291C10_ntD0Ev,_ZTv0_n16_N12S20291C10_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23248_N12S20291C10_ntD0Ev,_ZThn19092_N12S20291C10_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N12S20291C10_ntD1Ev,_ZTv0_n16_N12S20291C10_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23248_N12S20291C10_ntD1Ev,_ZThn19092_N12S20291C10_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N12S20291C16_ntD0Ev,_ZTv0_n16_N12S20291C16_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn27840_N12S20291C16_ntD0Ev,_ZThn22868_N12S20291C16_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N12S20291C16_ntD1Ev,_ZTv0_n16_N12S20291C16_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn27840_N12S20291C16_ntD1Ev,_ZThn22868_N12S20291C16_ntD1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20291C16_nt = {  "S20291C16_nt", // class name
  bases_S20291C16_nt, 18,
  &(vtc_S20291C16_nt[0]), // expected_vtbl_contents
  &(vtt_S20291C16_nt[0]), // expected_vtt_contents
  ABISELECT(31968,26264), // object size
  NSPAIRA(_ZTI12S20291C16_nt),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV12S20291C16_nt),89, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT12S20291C16_nt),39, //virtual table table var
  18, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names11,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20291C1  : virtual S20291C2_nt , virtual S20291C3_nt , virtual S20291C4 , S20291C15_nt , virtual S20291C16_nt {
  __tsi64 s20291c1f0[4];
  int s20291c1f1[2];
  ::S20291C13_nt s20291c1f2;
  int s20291c1f3;
  short s20291c1f4;
  int s20291c1f5[4];
  virtual  ~S20291C1(); // _ZN8S20291C1D2Ev
  virtual void  v1(); // _ZN8S20291C12v1Ev
  virtual void  v2(); // _ZN8S20291C12v2Ev
  virtual void  v3(); // _ZN8S20291C12v3Ev
  virtual void  v4(); // _ZN8S20291C12v4Ev
  virtual void  v5(); // _ZN8S20291C12v5Ev
  S20291C1(); // tgen
};
//SIG(1 S20291C1) C1{ VBC2{ v6 Fs:6 Fl Fs:4 FL[13] Fp} VBC3{ VBC2 Fp FC2 Fi:3} VBC4{ VBC5{ VBC6{ BC7{ v7 FL FD Fp Fc FC2 Fp[2] FL[8] Fs Fp FL:64} BC8{ v8 v9 v10 Fi[2] FL[2] FC2[3]} BC2 vd v11 FL[2] Fp[8] FC9{ BC2 VBC8 VBC3 VBC7 FC7 Fs Fi[2]} Fp Fi FC9 Fi} VBC2 VBC3 BC9 BC10{ VBC7 VBC6 VBC2 VBC3 FL:44 Fp Fi FC9 FL[2] Fi[3] FC6 Fc:7 FC11{ BC7 vd v13 FC3 Fi Fp Fi}} v12 FC6 FL Fc:7} VBC12{ BC2 VBC7 VBC13{ VBC7 BC8 VBC5 Fc:8 Fi} BC9 BC11 vd v14 Fi FC9 Fi Fs FL:8 Fi} BC3 BC13 Fc FC14{} Fp} BC15{ BC9 BC10 vd v15 v16 Fi:13 FL Fi Fp[2] FL FC8} VBC16{ VBC2 VBC9 BC6 BC5 v17 v18 FC10 Fs Fi:8} vd v1 v2 v3 v4 v5 FL[4] Fi[2] FC13 Fi Fs Fi[4]}


 S20291C1 ::~S20291C1(){ note_dtor("S20291C1", this);}
void  S20291C1 ::v1(){vfunc_called(this, "_ZN8S20291C12v1Ev");}
void  S20291C1 ::v2(){vfunc_called(this, "_ZN8S20291C12v2Ev");}
void  S20291C1 ::v3(){vfunc_called(this, "_ZN8S20291C12v3Ev");}
void  S20291C1 ::v4(){vfunc_called(this, "_ZN8S20291C12v4Ev");}
void  S20291C1 ::v5(){vfunc_called(this, "_ZN8S20291C12v5Ev");}
S20291C1 ::S20291C1(){ note_ctor("S20291C1", this);} // tgen

static void Test_S20291C1()
{
  extern Class_Descriptor cd_S20291C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4442,14613)];
    init_test(&cd_S20291C1, buf);
    S20291C1 *dp, &lv = *(dp=new (buf) S20291C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(71056,58448), "sizeof(S20291C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20291C1)");
    /*is_ambiguous_... S20291C1::S20291C2_nt */ AMB_check_base_class_offset(lv, (S20291C2_nt*), ABISELECT(24136,19868), "S20291C1");
    /*is_ambiguous_... S20291C1::S20291C3_nt */ AMB_check_base_class_offset(lv, (S20291C2_nt*)(S20291C3_nt*), ABISELECT(24136,19868), "S20291C1");
    /*is_ambiguous_... S20291C1::S20291C5_nt */ AMB_check_base_class_offset(lv, (S20291C2_nt*)(S20291C5_nt*), ABISELECT(24136,19868), "S20291C1");
    /*is_ambiguous_... S20291C1::S20291C5_nt */ AMB_check_base_class_offset(lv, (S20291C2_nt*)(S20291C10_nt*)(S20291C5_nt*), ABISELECT(24136,19868), "S20291C1");
    /*is_ambiguous_... S20291C4::S20291C3_nt */ AMB_check_base_class_offset(lv, (S20291C2_nt*)(S20291C3_nt*)(S20291C4*), ABISELECT(24136,19868), "S20291C1");
    /*is_ambiguous_... S20291C10_nt::S20291C2_nt */ AMB_check_base_class_offset(lv, (S20291C2_nt*)(S20291C10_nt*)(S20291C15_nt*), ABISELECT(24136,19868), "S20291C1");
    /*is_ambiguous_... S20291C16_nt::S20291C2_nt */ AMB_check_base_class_offset(lv, (S20291C2_nt*)(S20291C16_nt*), ABISELECT(24136,19868), "S20291C1");
    /*is_ambiguous_... S20291C5_nt::S20291C2_nt */ AMB_check_base_class_offset(lv, (S20291C2_nt*)(S20291C5_nt*)(S20291C16_nt*), ABISELECT(24136,19868), "S20291C1");
    /*is_ambiguous_... S20291C10_nt::S20291C2_nt */ AMB_check_base_class_offset(lv, (S20291C2_nt*)(S20291C10_nt*)(S20291C5_nt*)(S20291C16_nt*), ABISELECT(24136,19868), "S20291C1");
    /*is_ambiguous_... S20291C1::S20291C3_nt */ AMB_check_base_class_offset(lv, (S20291C3_nt*), ABISELECT(24280,19992), "S20291C1");
    /*is_ambiguous_... S20291C1::S20291C5_nt */ AMB_check_base_class_offset(lv, (S20291C3_nt*)(S20291C5_nt*), ABISELECT(24280,19992), "S20291C1");
    /*is_ambiguous_... S20291C1::S20291C5_nt */ AMB_check_base_class_offset(lv, (S20291C3_nt*)(S20291C9_nt*)(S20291C5_nt*), ABISELECT(24280,19992), "S20291C1");
    /*is_ambiguous_... S20291C1::S20291C5_nt */ AMB_check_base_class_offset(lv, (S20291C3_nt*)(S20291C10_nt*)(S20291C5_nt*), ABISELECT(24280,19992), "S20291C1");
    /*is_ambiguous_... S20291C12_nt::S20291C9_nt */ AMB_check_base_class_offset(lv, (S20291C3_nt*)(S20291C9_nt*)(S20291C12_nt*), ABISELECT(24280,19992), "S20291C1");
    check_base_class_offset(lv, (S20291C3_nt*)(S20291C9_nt*)(S20291C15_nt*), ABISELECT(24280,19992), "S20291C1");
    check_base_class_offset(lv, (S20291C3_nt*)(S20291C10_nt*)(S20291C15_nt*), ABISELECT(24280,19992), "S20291C1");
    /*is_ambiguous_... S20291C1::S20291C9_nt */ AMB_check_base_class_offset(lv, (S20291C3_nt*)(S20291C9_nt*), ABISELECT(24280,19992), "S20291C1");
    check_base_class_offset(lv, (S20291C3_nt*)(S20291C5_nt*)(S20291C16_nt*), ABISELECT(24280,19992), "S20291C1");
    check_base_class_offset(lv, (S20291C3_nt*)(S20291C9_nt*)(S20291C5_nt*)(S20291C16_nt*), ABISELECT(24280,19992), "S20291C1");
    check_base_class_offset(lv, (S20291C3_nt*)(S20291C10_nt*)(S20291C5_nt*)(S20291C16_nt*), ABISELECT(24280,19992), "S20291C1");
    /*is_ambiguous_... S20291C1::S20291C6_nt */ AMB_check_base_class_offset(lv, (S20291C7_nt*)(S20291C6_nt*), ABISELECT(36112,29716), "S20291C1");
    /*is_ambiguous_... S20291C1::S20291C6_nt */ AMB_check_base_class_offset(lv, (S20291C8_nt*)(S20291C6_nt*), ABISELECT(36408,29960), "S20291C1");
    /*is_ambiguous_... S20291C1::S20291C6_nt */ AMB_check_base_class_offset(lv, (S20291C2_nt*)(S20291C6_nt*), ABISELECT(36872,30360), "S20291C1");
    /*is_ambiguous_... S20291C1::S20291C5_nt */ AMB_check_base_class_offset(lv, (S20291C6_nt*)(S20291C5_nt*), ABISELECT(36112,29716), "S20291C1");
    /*is_ambiguous_... S20291C1::S20291C5_nt */ AMB_check_base_class_offset(lv, (S20291C6_nt*)(S20291C10_nt*)(S20291C5_nt*), ABISELECT(36112,29716), "S20291C1");
    check_base_class_offset(lv, (S20291C6_nt*)(S20291C10_nt*)(S20291C15_nt*), ABISELECT(36112,29716), "S20291C1");
    check_base_class_offset(lv, (S20291C6_nt*)(S20291C5_nt*)(S20291C16_nt*), ABISELECT(36112,29716), "S20291C1");
    check_base_class_offset(lv, (S20291C6_nt*)(S20291C10_nt*)(S20291C5_nt*)(S20291C16_nt*), ABISELECT(36112,29716), "S20291C1");
    /*is_ambiguous_... S20291C1::S20291C5_nt */ AMB_check_base_class_offset(lv, (S20291C2_nt*)(S20291C9_nt*)(S20291C5_nt*), ABISELECT(25104,20680), "S20291C1");
    /*is_ambiguous_... S20291C1::S20291C5_nt */ AMB_check_base_class_offset(lv, (S20291C8_nt*)(S20291C9_nt*)(S20291C5_nt*), ABISELECT(40232,33112), "S20291C1");
    /*is_ambiguous_... S20291C12_nt::S20291C9_nt */ AMB_check_base_class_offset(lv, (S20291C8_nt*)(S20291C9_nt*)(S20291C12_nt*), ABISELECT(40232,33112), "S20291C1");
    check_base_class_offset(lv, (S20291C8_nt*)(S20291C9_nt*)(S20291C15_nt*), ABISELECT(40232,33112), "S20291C1");
    /*is_ambiguous_... S20291C1::S20291C9_nt */ AMB_check_base_class_offset(lv, (S20291C8_nt*)(S20291C9_nt*), ABISELECT(40232,33112), "S20291C1");
    check_base_class_offset(lv, (S20291C8_nt*)(S20291C9_nt*)(S20291C5_nt*)(S20291C16_nt*), ABISELECT(40232,33112), "S20291C1");
    /*is_ambiguous_... S20291C1::S20291C5_nt */ AMB_check_base_class_offset(lv, (S20291C7_nt*)(S20291C9_nt*)(S20291C5_nt*), ABISELECT(40704,33512), "S20291C1");
    /*is_ambiguous_... S20291C1::S20291C5_nt */ AMB_check_base_class_offset(lv, (S20291C7_nt*)(S20291C10_nt*)(S20291C5_nt*), ABISELECT(40704,33512), "S20291C1");
    /*is_ambiguous_... S20291C12_nt::S20291C7_nt */ AMB_check_base_class_offset(lv, (S20291C7_nt*)(S20291C12_nt*), ABISELECT(40704,33512), "S20291C1");
    /*is_ambiguous_... S20291C1::S20291C13_nt */ AMB_check_base_class_offset(lv, (S20291C7_nt*)(S20291C13_nt*), ABISELECT(40704,33512), "S20291C1");
    /*is_ambiguous_... S20291C12_nt::S20291C9_nt */ AMB_check_base_class_offset(lv, (S20291C7_nt*)(S20291C9_nt*)(S20291C12_nt*), ABISELECT(40704,33512), "S20291C1");
    /*is_ambiguous_... S20291C4::S20291C13_nt */ AMB_check_base_class_offset(lv, (S20291C7_nt*)(S20291C13_nt*)(S20291C4*), ABISELECT(40704,33512), "S20291C1");
    check_base_class_offset(lv, (S20291C7_nt*)(S20291C9_nt*)(S20291C15_nt*), ABISELECT(40704,33512), "S20291C1");
    /*is_ambiguous_... S20291C10_nt::S20291C7_nt */ AMB_check_base_class_offset(lv, (S20291C7_nt*)(S20291C10_nt*)(S20291C15_nt*), ABISELECT(40704,33512), "S20291C1");
    /*is_ambiguous_... S20291C1::S20291C9_nt */ AMB_check_base_class_offset(lv, (S20291C7_nt*)(S20291C9_nt*), ABISELECT(40704,33512), "S20291C1");
    check_base_class_offset(lv, (S20291C7_nt*)(S20291C9_nt*)(S20291C5_nt*)(S20291C16_nt*), ABISELECT(40704,33512), "S20291C1");
    /*is_ambiguous_... S20291C10_nt::S20291C7_nt */ AMB_check_base_class_offset(lv, (S20291C7_nt*)(S20291C10_nt*)(S20291C5_nt*)(S20291C16_nt*), ABISELECT(40704,33512), "S20291C1");
    /*is_ambiguous_... S20291C1::S20291C5_nt */ AMB_check_base_class_offset(lv, (S20291C9_nt*)(S20291C5_nt*), ABISELECT(25104,20680), "S20291C1");
    /*is_ambiguous_... S20291C1::S20291C5_nt */ AMB_check_base_class_offset(lv, (S20291C10_nt*)(S20291C5_nt*), ABISELECT(25568,21060), "S20291C1");
    check_base_class_offset(lv, (S20291C5_nt*)(S20291C4*), ABISELECT(25104,20680), "S20291C1");
    /*is_ambiguous_... S20291C1::S20291C13_nt */ AMB_check_base_class_offset(lv, (S20291C5_nt*)(S20291C13_nt*), ABISELECT(25104,20680), "S20291C1");
    /*is_ambiguous_... S20291C4::S20291C13_nt */ AMB_check_base_class_offset(lv, (S20291C5_nt*)(S20291C13_nt*)(S20291C4*), ABISELECT(25104,20680), "S20291C1");
    /*is_ambiguous_... S20291C12_nt::S20291C2_nt */ AMB_check_base_class_offset(lv, (S20291C2_nt*)(S20291C12_nt*), ABISELECT(41008,33756), "S20291C1");
    /*is_ambiguous_... S20291C1::S20291C13_nt */ AMB_check_base_class_offset(lv, (S20291C8_nt*)(S20291C13_nt*), ABISELECT(43824,36076), "S20291C1");
    check_base_class_offset(lv, (S20291C13_nt*)(S20291C12_nt*), ABISELECT(43824,36076), "S20291C1");
    /*is_ambiguous_... S20291C12_nt::S20291C9_nt */ AMB_check_base_class_offset(lv, (S20291C2_nt*)(S20291C9_nt*)(S20291C12_nt*), ABISELECT(41152,33880), "S20291C1");
    /*is_ambiguous_... S20291C12_nt::S20291C9_nt */ AMB_check_base_class_offset(lv, (S20291C9_nt*)(S20291C12_nt*), ABISELECT(41152,33880), "S20291C1");
    check_base_class_offset(lv, (S20291C7_nt*)(S20291C11_nt*)(S20291C12_nt*), ABISELECT(41616,34260), "S20291C1");
    check_base_class_offset(lv, (S20291C11_nt*)(S20291C12_nt*), ABISELECT(41616,34260), "S20291C1");
    check_base_class_offset(lv, (S20291C12_nt*)(S20291C4*), ABISELECT(41008,33756), "S20291C1");
    /*is_ambiguous_... S20291C4::S20291C3_nt */ AMB_check_base_class_offset(lv, (S20291C3_nt*)(S20291C4*), ABISELECT(24448,20128), "S20291C1");
    /*is_ambiguous_... S20291C4::S20291C13_nt */ AMB_check_base_class_offset(lv, (S20291C8_nt*)(S20291C13_nt*)(S20291C4*), ABISELECT(24616,20264), "S20291C1");
    /*is_ambiguous_... S20291C4::S20291C13_nt */ AMB_check_base_class_offset(lv, (S20291C13_nt*)(S20291C4*), ABISELECT(24616,20264), "S20291C1");
    check_base_class_offset(lv, (S20291C4*), ABISELECT(24448,20128), "S20291C1");
    /*is_ambiguous_... S20291C9_nt::S20291C2_nt */ AMB_check_base_class_offset(lv, (S20291C2_nt*)(S20291C9_nt*)(S20291C15_nt*), 0, "S20291C1");
    check_base_class_offset(lv, (S20291C9_nt*)(S20291C15_nt*), 0, "S20291C1");
    check_base_class_offset(lv, (S20291C10_nt*)(S20291C15_nt*), ABISELECT(464,380), "S20291C1");
    check_base_class_offset(lv, (S20291C15_nt*), 0, "S20291C1");
    /*is_ambiguous_... S20291C1::S20291C9_nt */ AMB_check_base_class_offset(lv, (S20291C2_nt*)(S20291C9_nt*), ABISELECT(70592,58068), "S20291C1");
    /*is_ambiguous_... S20291C16_nt::S20291C9_nt */ AMB_check_base_class_offset(lv, (S20291C9_nt*)(S20291C16_nt*), ABISELECT(70592,58068), "S20291C1");
    /*is_ambiguous_... S20291C16_nt::S20291C6_nt */ AMB_check_base_class_offset(lv, (S20291C7_nt*)(S20291C6_nt*)(S20291C16_nt*), ABISELECT(44304,36484), "S20291C1");
    /*is_ambiguous_... S20291C16_nt::S20291C6_nt */ AMB_check_base_class_offset(lv, (S20291C8_nt*)(S20291C6_nt*)(S20291C16_nt*), ABISELECT(44600,36728), "S20291C1");
    /*is_ambiguous_... S20291C16_nt::S20291C6_nt */ AMB_check_base_class_offset(lv, (S20291C2_nt*)(S20291C6_nt*)(S20291C16_nt*), ABISELECT(45064,37128), "S20291C1");
    /*is_ambiguous_... S20291C16_nt::S20291C6_nt */ AMB_check_base_class_offset(lv, (S20291C6_nt*)(S20291C16_nt*), ABISELECT(44304,36484), "S20291C1");
    /*is_ambiguous_... S20291C9_nt::S20291C2_nt */ AMB_check_base_class_offset(lv, (S20291C2_nt*)(S20291C9_nt*)(S20291C5_nt*)(S20291C16_nt*), ABISELECT(48432,39880), "S20291C1");
    check_base_class_offset(lv, (S20291C9_nt*)(S20291C5_nt*)(S20291C16_nt*), ABISELECT(48432,39880), "S20291C1");
    check_base_class_offset(lv, (S20291C10_nt*)(S20291C5_nt*)(S20291C16_nt*), ABISELECT(48896,40260), "S20291C1");
    check_base_class_offset(lv, (S20291C5_nt*)(S20291C16_nt*), ABISELECT(48432,39880), "S20291C1");
    check_base_class_offset(lv, (S20291C16_nt*), ABISELECT(44304,36484), "S20291C1");
    check_field_offset(lv, s20291c1f0, ABISELECT(7376,6060), "S20291C1.s20291c1f0");
    check_field_offset(lv, s20291c1f1, ABISELECT(7408,6092), "S20291C1.s20291c1f1");
    check_field_offset(lv, s20291c1f2, ABISELECT(7424,6100), "S20291C1.s20291c1f2");
    check_field_offset(lv, s20291c1f3, ABISELECT(24112,19844), "S20291C1.s20291c1f3");
    check_field_offset(lv, s20291c1f4, ABISELECT(24116,19848), "S20291C1.s20291c1f4");
    check_field_offset(lv, s20291c1f5, ABISELECT(24120,19852), "S20291C1.s20291c1f5");
    test_class_info(&lv, &cd_S20291C1);
    dp->~S20291C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20291C1(Test_S20291C1, "S20291C1", ABISELECT(71056,58448));

#else // __cplusplus

extern void _ZN8S20291C1C1Ev();
extern void _ZN8S20291C1D2Ev();
Name_Map name_map_S20291C1[] = {
  NSPAIR(_ZN8S20291C1C1Ev),
  NSPAIR(_ZN8S20291C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
extern Class_Descriptor cd_S20291C3_nt;
extern VTBL_ENTRY _ZTI11S20291C3_nt[];
extern  VTBL_ENTRY _ZTV11S20291C3_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20291C3_nt[];
extern Class_Descriptor cd_S20291C7_nt;
extern VTBL_ENTRY _ZTI11S20291C7_nt[];
extern  VTBL_ENTRY _ZTV11S20291C7_nt[];
extern Class_Descriptor cd_S20291C8_nt;
extern VTBL_ENTRY _ZTI11S20291C8_nt[];
extern  VTBL_ENTRY _ZTV11S20291C8_nt[];
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
extern Class_Descriptor cd_S20291C6_nt;
extern VTBL_ENTRY _ZTI11S20291C6_nt[];
extern  VTBL_ENTRY _ZTV11S20291C6_nt[];
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
extern Class_Descriptor cd_S20291C8_nt;
extern VTBL_ENTRY _ZTI11S20291C8_nt[];
extern  VTBL_ENTRY _ZTV11S20291C8_nt[];
extern Class_Descriptor cd_S20291C7_nt;
extern VTBL_ENTRY _ZTI11S20291C7_nt[];
extern  VTBL_ENTRY _ZTV11S20291C7_nt[];
extern Class_Descriptor cd_S20291C9_nt;
extern VTBL_ENTRY _ZTI11S20291C9_nt[];
extern  VTBL_ENTRY _ZTV11S20291C9_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20291C9_nt[];
extern Class_Descriptor cd_S20291C10_nt;
extern VTBL_ENTRY _ZTI12S20291C10_nt[];
extern  VTBL_ENTRY _ZTV12S20291C10_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20291C10_nt[];
extern Class_Descriptor cd_S20291C5_nt;
extern VTBL_ENTRY _ZTI11S20291C5_nt[];
extern  VTBL_ENTRY _ZTV11S20291C5_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20291C5_nt[];
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
extern Class_Descriptor cd_S20291C8_nt;
extern VTBL_ENTRY _ZTI11S20291C8_nt[];
extern  VTBL_ENTRY _ZTV11S20291C8_nt[];
extern Class_Descriptor cd_S20291C13_nt;
extern VTBL_ENTRY _ZTI12S20291C13_nt[];
extern  VTBL_ENTRY _ZTV12S20291C13_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20291C13_nt[];
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
extern Class_Descriptor cd_S20291C9_nt;
extern VTBL_ENTRY _ZTI11S20291C9_nt[];
extern  VTBL_ENTRY _ZTV11S20291C9_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20291C9_nt[];
extern Class_Descriptor cd_S20291C7_nt;
extern VTBL_ENTRY _ZTI11S20291C7_nt[];
extern  VTBL_ENTRY _ZTV11S20291C7_nt[];
extern Class_Descriptor cd_S20291C11_nt;
extern VTBL_ENTRY _ZTI12S20291C11_nt[];
extern  VTBL_ENTRY _ZTV12S20291C11_nt[];
extern Class_Descriptor cd_S20291C12_nt;
extern VTBL_ENTRY _ZTI12S20291C12_nt[];
extern  VTBL_ENTRY _ZTV12S20291C12_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20291C12_nt[];
extern Class_Descriptor cd_S20291C3_nt;
extern VTBL_ENTRY _ZTI11S20291C3_nt[];
extern  VTBL_ENTRY _ZTV11S20291C3_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20291C3_nt[];
extern Class_Descriptor cd_S20291C8_nt;
extern VTBL_ENTRY _ZTI11S20291C8_nt[];
extern  VTBL_ENTRY _ZTV11S20291C8_nt[];
extern Class_Descriptor cd_S20291C13_nt;
extern VTBL_ENTRY _ZTI12S20291C13_nt[];
extern  VTBL_ENTRY _ZTV12S20291C13_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20291C13_nt[];
extern Class_Descriptor cd_S20291C4;
extern VTBL_ENTRY _ZTI8S20291C4[];
extern  VTBL_ENTRY _ZTV8S20291C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20291C4[];
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
extern Class_Descriptor cd_S20291C9_nt;
extern VTBL_ENTRY _ZTI11S20291C9_nt[];
extern  VTBL_ENTRY _ZTV11S20291C9_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20291C9_nt[];
extern Class_Descriptor cd_S20291C10_nt;
extern VTBL_ENTRY _ZTI12S20291C10_nt[];
extern  VTBL_ENTRY _ZTV12S20291C10_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20291C10_nt[];
extern Class_Descriptor cd_S20291C15_nt;
extern VTBL_ENTRY _ZTI12S20291C15_nt[];
extern  VTBL_ENTRY _ZTV12S20291C15_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20291C15_nt[];
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
extern Class_Descriptor cd_S20291C9_nt;
extern VTBL_ENTRY _ZTI11S20291C9_nt[];
extern  VTBL_ENTRY _ZTV11S20291C9_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20291C9_nt[];
extern Class_Descriptor cd_S20291C7_nt;
extern VTBL_ENTRY _ZTI11S20291C7_nt[];
extern  VTBL_ENTRY _ZTV11S20291C7_nt[];
extern Class_Descriptor cd_S20291C8_nt;
extern VTBL_ENTRY _ZTI11S20291C8_nt[];
extern  VTBL_ENTRY _ZTV11S20291C8_nt[];
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
extern Class_Descriptor cd_S20291C6_nt;
extern VTBL_ENTRY _ZTI11S20291C6_nt[];
extern  VTBL_ENTRY _ZTV11S20291C6_nt[];
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
extern Class_Descriptor cd_S20291C9_nt;
extern VTBL_ENTRY _ZTI11S20291C9_nt[];
extern  VTBL_ENTRY _ZTV11S20291C9_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20291C9_nt[];
extern Class_Descriptor cd_S20291C10_nt;
extern VTBL_ENTRY _ZTI12S20291C10_nt[];
extern  VTBL_ENTRY _ZTV12S20291C10_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20291C10_nt[];
extern Class_Descriptor cd_S20291C5_nt;
extern VTBL_ENTRY _ZTI11S20291C5_nt[];
extern  VTBL_ENTRY _ZTV11S20291C5_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20291C5_nt[];
extern Class_Descriptor cd_S20291C16_nt;
extern VTBL_ENTRY _ZTI12S20291C16_nt[];
extern  VTBL_ENTRY _ZTV12S20291C16_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20291C16_nt[];
static Base_Class bases_S20291C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20291C2_nt,    ABISELECT(24136,19868), //bcp->offset
    31, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20291C3_nt,    ABISELECT(24280,19992), //bcp->offset
    35, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20291C7_nt,    ABISELECT(36112,29716), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20291C8_nt,    ABISELECT(36408,29960), //bcp->offset
    102, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20291C2_nt,    ABISELECT(36872,30360), //bcp->offset
    107, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20291C6_nt,    ABISELECT(36112,29716), //bcp->offset
    89, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S20291C2_nt,    ABISELECT(25104,20680), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20291C8_nt,    ABISELECT(40232,33112), //bcp->offset
    110, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S20291C7_nt,    ABISELECT(40704,33512), //bcp->offset
    118, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S20291C9_nt,    ABISELECT(25104,20680), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20291C10_nt,    ABISELECT(25568,21060), //bcp->offset
    81, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20291C5_nt,    ABISELECT(25104,20680), //bcp->offset
    67, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S20291C2_nt,    ABISELECT(41008,33756), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20291C8_nt,    ABISELECT(43824,36076), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20291C13_nt,    ABISELECT(43824,36076), //bcp->offset
    153, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    112, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S20291C2_nt,    ABISELECT(41152,33880), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20291C9_nt,    ABISELECT(41152,33880), //bcp->offset
    140, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    96, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20291C7_nt,    ABISELECT(41616,34260), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20291C11_nt,    ABISELECT(41616,34260), //bcp->offset
    147, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20291C12_nt,    ABISELECT(41008,33756), //bcp->offset
    122, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    95, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S20291C3_nt,    ABISELECT(24448,20128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S20291C8_nt,    ABISELECT(24616,20264), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S20291C13_nt,    ABISELECT(24616,20264), //bcp->offset
    54, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S20291C4,    ABISELECT(24448,20128), //bcp->offset
    38, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20291C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S20291C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S20291C10_nt,    ABISELECT(464,380), //bcp->offset
    23, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S20291C15_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20291C2_nt,    ABISELECT(70592,58068), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S20291C9_nt,    ABISELECT(70592,58068), //bcp->offset
    221, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    154, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    38, //immediately_derived
  0, 1},
  {&cd_S20291C7_nt,    ABISELECT(44304,36484), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S20291C8_nt,    ABISELECT(44600,36728), //bcp->offset
    194, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S20291C2_nt,    ABISELECT(45064,37128), //bcp->offset
    199, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S20291C6_nt,    ABISELECT(44304,36484), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S20291C2_nt,    ABISELECT(48432,39880), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S20291C9_nt,    ABISELECT(48432,39880), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    124, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S20291C10_nt,    ABISELECT(48896,40260), //bcp->offset
    213, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    129, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S20291C5_nt,    ABISELECT(48432,39880), //bcp->offset
    202, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    123, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S20291C16_nt,    ABISELECT(44304,36484), //bcp->offset
    170, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    122, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20291C1[];
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN8S20291C1D1Ev();
extern void _ZN8S20291C1D0Ev();
extern void _ZN12S20291C15_nt3v15Ev();
extern void _ZN12S20291C15_nt3v16Ev();
extern void _ZN8S20291C12v1Ev();
extern void _ZN8S20291C12v2Ev();
extern void _ZN8S20291C12v3Ev();
extern void _ZN8S20291C12v4Ev();
extern void _ZN8S20291C12v5Ev();
extern void ABISELECT(_ZThn464_N8S20291C1D1Ev,_ZThn380_N8S20291C1D1Ev)();
extern void ABISELECT(_ZThn464_N8S20291C1D0Ev,_ZThn380_N8S20291C1D0Ev)();
extern void _ZN11S20291C2_nt2v6Ev();
extern void ABISELECT(_ZTv0_n88_N8S20291C1D1Ev,_ZTv0_n44_N8S20291C1D1Ev)();
extern void ABISELECT(_ZThn24448_N8S20291C1D1Ev,_ZThn20128_N8S20291C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S20291C1D0Ev,_ZTv0_n44_N8S20291C1D0Ev)();
extern void ABISELECT(_ZThn24448_N8S20291C1D0Ev,_ZThn20128_N8S20291C1D0Ev)() __attribute__((weak));
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
extern void ABISELECT(_ZTvn168_n88_N8S20291C1D1Ev,_ZTvn136_n44_N8S20291C1D1Ev)();
extern void ABISELECT(_ZTvn168_n88_N8S20291C1D0Ev,_ZTvn136_n44_N8S20291C1D0Ev)();
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C5_nt3v12Ev();
extern void ABISELECT(_ZTv0_n80_N8S20291C1D1Ev,_ZTv0_n40_N8S20291C1D1Ev)();
extern void ABISELECT(_ZThn25104_N8S20291C1D1Ev,_ZThn20680_N8S20291C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S20291C1D0Ev,_ZTv0_n40_N8S20291C1D0Ev)();
extern void ABISELECT(_ZThn25104_N8S20291C1D0Ev,_ZThn20680_N8S20291C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn464_n80_N8S20291C1D1Ev,_ZTvn380_n40_N8S20291C1D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N8S20291C1D0Ev,_ZTvn380_n40_N8S20291C1D0Ev)();
extern void _ZN11S20291C7_nt2v7Ev();
extern void ABISELECT(_ZTv0_n32_N8S20291C1D1Ev,_ZTv0_n16_N8S20291C1D1Ev)();
extern void ABISELECT(_ZThn36112_N8S20291C1D1Ev,_ZThn29716_N8S20291C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20291C1D0Ev,_ZTv0_n16_N8S20291C1D0Ev)();
extern void ABISELECT(_ZThn36112_N8S20291C1D0Ev,_ZThn29716_N8S20291C1D0Ev)() __attribute__((weak));
extern void _ZN11S20291C6_nt3v11Ev();
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
extern void _ZN11S20291C7_nt2v7Ev();
extern void _ZN11S20291C2_nt2v6Ev();
extern void ABISELECT(_ZTv0_n88_N8S20291C1D1Ev,_ZTv0_n44_N8S20291C1D1Ev)();
extern void ABISELECT(_ZThn41008_N8S20291C1D1Ev,_ZThn33756_N8S20291C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S20291C1D0Ev,_ZTv0_n44_N8S20291C1D0Ev)();
extern void ABISELECT(_ZThn41008_N8S20291C1D0Ev,_ZThn33756_N8S20291C1D0Ev)() __attribute__((weak));
extern void _ZN12S20291C12_nt3v14Ev();
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C7_nt2v7Ev();
extern void ABISELECT(_ZTvn608_n88_N8S20291C1D1Ev,_ZTvn504_n44_N8S20291C1D1Ev)();
extern void ABISELECT(_ZTvn608_n88_N8S20291C1D0Ev,_ZTvn504_n44_N8S20291C1D0Ev)();
extern void _ZN12S20291C11_nt3v13Ev();
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
extern void ABISELECT(_ZTv0_n96_N8S20291C1D1Ev,_ZTv0_n48_N8S20291C1D1Ev)();
extern void ABISELECT(_ZThn43824_N8S20291C1D1Ev,_ZThn36076_N8S20291C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S20291C1D0Ev,_ZTv0_n48_N8S20291C1D0Ev)();
extern void ABISELECT(_ZThn43824_N8S20291C1D0Ev,_ZThn36076_N8S20291C1D0Ev)() __attribute__((weak));
extern void _ZN11S20291C7_nt2v7Ev();
extern void ABISELECT(_ZTv0_n80_N8S20291C1D1Ev,_ZTv0_n40_N8S20291C1D1Ev)();
extern void ABISELECT(_ZThn44304_N8S20291C1D1Ev,_ZThn36484_N8S20291C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S20291C1D0Ev,_ZTv0_n40_N8S20291C1D0Ev)();
extern void ABISELECT(_ZThn44304_N8S20291C1D0Ev,_ZThn36484_N8S20291C1D0Ev)() __attribute__((weak));
extern void _ZN11S20291C6_nt3v11Ev();
extern void _ZN12S20291C16_nt3v17Ev();
extern void _ZN12S20291C16_nt3v18Ev();
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C5_nt3v12Ev();
extern void ABISELECT(_ZTvn4128_n80_N8S20291C1D1Ev,_ZTvn3396_n40_N8S20291C1D1Ev)();
extern void ABISELECT(_ZTvn4128_n80_N8S20291C1D0Ev,_ZTvn3396_n40_N8S20291C1D0Ev)();
extern void ABISELECT(_ZTvn4592_n80_N8S20291C1D1Ev,_ZTvn3776_n40_N8S20291C1D1Ev)();
extern void ABISELECT(_ZTvn4592_n80_N8S20291C1D0Ev,_ZTvn3776_n40_N8S20291C1D0Ev)();
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY vtc_S20291C1[] = {
  ABISELECT(70592,58068),
  ABISELECT(44304,36484),
  ABISELECT(43824,36076),
  ABISELECT(41008,33756),
  ABISELECT(25104,20680),
  ABISELECT(24448,20128),
  ABISELECT(36112,29716),
  ABISELECT(40704,33512),
  ABISELECT(24136,19868),
  ABISELECT(24280,19992),
  ABISELECT(40232,33112),
  0,
  (VTBL_ENTRY)&(_ZTI8S20291C1[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN8S20291C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20291C1D0Ev,
  (VTBL_ENTRY)&_ZN12S20291C15_nt3v15Ev,
  (VTBL_ENTRY)&_ZN12S20291C15_nt3v16Ev,
  (VTBL_ENTRY)&_ZN8S20291C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20291C12v2Ev,
  (VTBL_ENTRY)&_ZN8S20291C12v3Ev,
  (VTBL_ENTRY)&_ZN8S20291C12v4Ev,
  (VTBL_ENTRY)&_ZN8S20291C12v5Ev,
  ABISELECT(23816,19612),
  ABISELECT(23672,19488),
  ABISELECT(35648,29336),
  ABISELECT(40240,33132),
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI8S20291C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S20291C1D1Ev,_ZThn380_N8S20291C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S20291C1D0Ev,_ZThn380_N8S20291C1D0Ev),
  0,
  ABISELECT(-24136,-19868),
  (VTBL_ENTRY)&(_ZTI8S20291C1[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  ABISELECT(-144,-124),
  ABISELECT(-24280,-19992),
  (VTBL_ENTRY)&(_ZTI8S20291C1[0]),
  ABISELECT(168,136),
  ABISELECT(168,136),
  ABISELECT(168,136),
  ABISELECT(-24448,-20128),
  ABISELECT(19376,15948),
  ABISELECT(16560,13628),
  ABISELECT(16256,13384),
  ABISELECT(15784,12984),
  ABISELECT(-168,-136),
  ABISELECT(11664,9588),
  ABISELECT(656,552),
  ABISELECT(-312,-260),
  ABISELECT(-24448,-20128),
  (VTBL_ENTRY)&(_ZTI8S20291C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S20291C1D1Ev,_ZTv0_n44_N8S20291C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S20291C1D0Ev,_ZTv0_n44_N8S20291C1D0Ev),
  ABISELECT(15616,12848),
  ABISELECT(-336,-272),
  ABISELECT(-480,-396),
  ABISELECT(11496,9452),
  ABISELECT(488,416),
  ABISELECT(16088,13248),
  ABISELECT(-24616,-20264),
  (VTBL_ENTRY)&(_ZTI8S20291C1[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn168_n88_N8S20291C1D1Ev,_ZTvn136_n44_N8S20291C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn168_n88_N8S20291C1D0Ev,_ZTvn136_n44_N8S20291C1D0Ev),
  ABISELECT(-25104,-20680),
  0,
  0,
  ABISELECT(11008,9036),
  ABISELECT(15600,12832),
  ABISELECT(-968,-812),
  ABISELECT(-824,-688),
  ABISELECT(15128,12432),
  ABISELECT(-25104,-20680),
  (VTBL_ENTRY)&(_ZTI8S20291C1[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S20291C5_nt3v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20291C1D1Ev,_ZTv0_n40_N8S20291C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20291C1D0Ev,_ZTv0_n40_N8S20291C1D0Ev),
  ABISELECT(-1288,-1068),
  ABISELECT(-1432,-1192),
  ABISELECT(10544,8656),
  ABISELECT(15136,12452),
  ABISELECT(-25568,-21060),
  (VTBL_ENTRY)&(_ZTI8S20291C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S20291C1D1Ev,_ZTvn380_n40_N8S20291C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S20291C1D0Ev,_ZTvn380_n40_N8S20291C1D0Ev),
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-36112,-29716),
  0,
  ABISELECT(-36112,-29716),
  (VTBL_ENTRY)&(_ZTI8S20291C1[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20291C1D1Ev,_ZTv0_n16_N8S20291C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20291C1D0Ev,_ZTv0_n16_N8S20291C1D0Ev),
  (VTBL_ENTRY)&_ZN11S20291C6_nt3v11Ev,
  ABISELECT(-36408,-29960),
  (VTBL_ENTRY)&(_ZTI8S20291C1[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
  ABISELECT(-36872,-30360),
  (VTBL_ENTRY)&(_ZTI8S20291C1[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  0,
  0,
  0,
  ABISELECT(-40232,-33112),
  (VTBL_ENTRY)&(_ZTI8S20291C1[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
  0,
  ABISELECT(-40704,-33512),
  (VTBL_ENTRY)&(_ZTI8S20291C1[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  ABISELECT(608,504),
  ABISELECT(608,504),
  0,
  ABISELECT(-41008,-33756),
  0,
  ABISELECT(-776,-644),
  ABISELECT(-16728,-13764),
  ABISELECT(-16872,-13888),
  ABISELECT(-4896,-4040),
  ABISELECT(-15904,-13076),
  ABISELECT(2816,2320),
  ABISELECT(-304,-244),
  ABISELECT(-41008,-33756),
  (VTBL_ENTRY)&(_ZTI8S20291C1[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S20291C1D1Ev,_ZTv0_n44_N8S20291C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S20291C1D0Ev,_ZTv0_n44_N8S20291C1D0Ev),
  (VTBL_ENTRY)&_ZN12S20291C12_nt3v14Ev,
  ABISELECT(-448,-368),
  ABISELECT(-17016,-14012),
  ABISELECT(-16872,-13888),
  ABISELECT(-920,-768),
  ABISELECT(-41152,-33880),
  (VTBL_ENTRY)&(_ZTI8S20291C1[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  ABISELECT(-41616,-34260),
  (VTBL_ENTRY)&(_ZTI8S20291C1[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn608_n88_N8S20291C1D1Ev,_ZTvn504_n44_N8S20291C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn608_n88_N8S20291C1D0Ev,_ZTvn504_n44_N8S20291C1D0Ev),
  (VTBL_ENTRY)&_ZN12S20291C11_nt3v13Ev,
  ABISELECT(-43824,-36076),
  0,
  0,
  0,
  ABISELECT(-3592,-2964),
  ABISELECT(-19544,-16084),
  ABISELECT(-19688,-16208),
  ABISELECT(-7712,-6360),
  ABISELECT(-18720,-15396),
  ABISELECT(-3120,-2564),
  ABISELECT(-43824,-36076),
  (VTBL_ENTRY)&(_ZTI8S20291C1[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20291C1D1Ev,_ZTv0_n48_N8S20291C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20291C1D0Ev,_ZTv0_n48_N8S20291C1D0Ev),
  ABISELECT(4128,3396),
  0,
  0,
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-44304,-36484),
  0,
  ABISELECT(-8192,-6768),
  ABISELECT(-3600,-2972),
  ABISELECT(-20024,-16492),
  ABISELECT(-4072,-3372),
  ABISELECT(26288,21584),
  ABISELECT(-20168,-16616),
  ABISELECT(-44304,-36484),
  (VTBL_ENTRY)&(_ZTI8S20291C1[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20291C1D1Ev,_ZTv0_n40_N8S20291C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20291C1D0Ev,_ZTv0_n40_N8S20291C1D0Ev),
  (VTBL_ENTRY)&_ZN11S20291C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN12S20291C16_nt3v17Ev,
  (VTBL_ENTRY)&_ZN12S20291C16_nt3v18Ev,
  ABISELECT(-44600,-36728),
  (VTBL_ENTRY)&(_ZTI8S20291C1[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
  ABISELECT(-45064,-37128),
  (VTBL_ENTRY)&(_ZTI8S20291C1[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  ABISELECT(-12320,-10164),
  ABISELECT(-7728,-6368),
  ABISELECT(-24296,-20012),
  ABISELECT(-24152,-19888),
  ABISELECT(-8200,-6768),
  ABISELECT(-48432,-39880),
  (VTBL_ENTRY)&(_ZTI8S20291C1[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S20291C5_nt3v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn4128_n80_N8S20291C1D1Ev,_ZTvn3396_n40_N8S20291C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn4128_n80_N8S20291C1D0Ev,_ZTvn3396_n40_N8S20291C1D0Ev),
  ABISELECT(-24616,-20268),
  ABISELECT(-24760,-20392),
  ABISELECT(-12784,-10544),
  ABISELECT(-8192,-6748),
  ABISELECT(-48896,-40260),
  (VTBL_ENTRY)&(_ZTI8S20291C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn4592_n80_N8S20291C1D1Ev,_ZTvn3776_n40_N8S20291C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn4592_n80_N8S20291C1D0Ev,_ZTvn3776_n40_N8S20291C1D0Ev),
  0,
  ABISELECT(-29888,-24556),
  ABISELECT(-46456,-38200),
  ABISELECT(-46312,-38076),
  ABISELECT(-30360,-24956),
  ABISELECT(-70592,-58068),
  (VTBL_ENTRY)&(_ZTI8S20291C1[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern VTBL_ENTRY _ZTV8S20291C1[];
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN12S20291C15_ntD1Ev();
extern void _ZN12S20291C15_ntD0Ev();
extern void _ZN12S20291C15_nt3v15Ev();
extern void _ZN12S20291C15_nt3v16Ev();
static  VTBL_ENTRY _tg__ZTV12S20291C15_nt__8S20291C1[] = {
  ABISELECT(36112,29716),
  ABISELECT(40704,33512),
  ABISELECT(24136,19868),
  ABISELECT(24280,19992),
  ABISELECT(40232,33112),
  0,
  (VTBL_ENTRY)&(_ZTI12S20291C15_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN12S20291C15_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S20291C15_ntD0Ev,
  (VTBL_ENTRY)&_ZN12S20291C15_nt3v15Ev,
  (VTBL_ENTRY)&_ZN12S20291C15_nt3v16Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C9_nt12S20291C15_nt__A2__8S20291C1[] = {
  ABISELECT(40704,33512),
  ABISELECT(24136,19868),
  ABISELECT(24280,19992),
  ABISELECT(40232,33112),
  0,
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt__11S20291C9_nt12S20291C15_nt__A2__8S20291C1[] = {
  0,
  0,
  0,
  ABISELECT(-40232,-33112),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__11S20291C9_nt12S20291C15_nt__A2__8S20291C1[] = {
  ABISELECT(-144,-124),
  ABISELECT(-24280,-19992),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__A1__11S20291C9_nt12S20291C15_nt__A2__8S20291C1[] = {
  0,
  ABISELECT(-24136,-19868),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__11S20291C9_nt12S20291C15_nt__A2__8S20291C1[] = {
  0,
  ABISELECT(-40704,-33512),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern void _ZN12S20291C10_ntD1Ev();
extern void _ZN12S20291C10_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV12S20291C10_nt12S20291C15_nt__A1__8S20291C1[] = {
  ABISELECT(23816,19612),
  ABISELECT(23672,19488),
  ABISELECT(35648,29336),
  ABISELECT(40240,33132),
  0,
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN12S20291C10_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S20291C10_ntD0Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__12S20291C10_nt12S20291C15_nt__A1__8S20291C1[] = {
  0,
  ABISELECT(-40240,-33132),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
extern void ABISELECT(_ZTv0_n32_N12S20291C10_ntD1Ev,_ZTv0_n16_N12S20291C10_ntD1Ev)();
extern void ABISELECT(_ZThn35648_N12S20291C10_ntD1Ev,_ZThn29336_N12S20291C10_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N12S20291C10_ntD0Ev,_ZTv0_n16_N12S20291C10_ntD0Ev)();
extern void ABISELECT(_ZThn35648_N12S20291C10_ntD0Ev,_ZThn29336_N12S20291C10_ntD0Ev)() __attribute__((weak));
extern void _ZN11S20291C6_nt3v11Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C6_nt__12S20291C10_nt12S20291C15_nt__A1__8S20291C1[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-35648,-29336),
  0,
  ABISELECT(-35648,-29336),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C10_ntD1Ev,_ZTv0_n16_N12S20291C10_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C10_ntD0Ev,_ZTv0_n16_N12S20291C10_ntD0Ev),
  (VTBL_ENTRY)&_ZN11S20291C6_nt3v11Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt11S20291C6_nt__12S20291C10_nt12S20291C15_nt__A1__8S20291C1[] = {
  ABISELECT(-35944,-29580),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt11S20291C6_nt__12S20291C10_nt12S20291C15_nt__A1__8S20291C1[] = {
  ABISELECT(-36408,-29980),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__A1__12S20291C10_nt12S20291C15_nt__A1__8S20291C1[] = {
  0,
  ABISELECT(-23672,-19488),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__12S20291C10_nt12S20291C15_nt__A1__8S20291C1[] = {
  ABISELECT(-144,-124),
  ABISELECT(-23816,-19612),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt__12S20291C15_nt__8S20291C1[] = {
  0,
  0,
  0,
  ABISELECT(-40232,-33112),
  (VTBL_ENTRY)&(_ZTI12S20291C15_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__12S20291C15_nt__8S20291C1[] = {
  ABISELECT(-144,-124),
  ABISELECT(-24280,-19992),
  (VTBL_ENTRY)&(_ZTI12S20291C15_nt[0]),
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__A1__12S20291C15_nt__8S20291C1[] = {
  0,
  ABISELECT(-24136,-19868),
  (VTBL_ENTRY)&(_ZTI12S20291C15_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__12S20291C15_nt__8S20291C1[] = {
  0,
  ABISELECT(-40704,-33512),
  (VTBL_ENTRY)&(_ZTI12S20291C15_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern void ABISELECT(_ZThn464_N12S20291C15_ntD1Ev,_ZThn380_N12S20291C15_ntD1Ev)();
extern void ABISELECT(_ZThn464_N12S20291C15_ntD0Ev,_ZThn380_N12S20291C15_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV12S20291C10_nt__12S20291C15_nt__8S20291C1[] = {
  ABISELECT(23816,19612),
  ABISELECT(23672,19488),
  ABISELECT(35648,29336),
  ABISELECT(40240,33132),
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI12S20291C15_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N12S20291C15_ntD1Ev,_ZThn380_N12S20291C15_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N12S20291C15_ntD0Ev,_ZThn380_N12S20291C15_ntD0Ev),
};
extern void _ZN11S20291C7_nt2v7Ev();
extern void ABISELECT(_ZTv0_n32_N12S20291C15_ntD1Ev,_ZTv0_n16_N12S20291C15_ntD1Ev)();
extern void ABISELECT(_ZThn36112_N12S20291C15_ntD1Ev,_ZThn29716_N12S20291C15_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N12S20291C15_ntD0Ev,_ZTv0_n16_N12S20291C15_ntD0Ev)();
extern void ABISELECT(_ZThn36112_N12S20291C15_ntD0Ev,_ZThn29716_N12S20291C15_ntD0Ev)() __attribute__((weak));
extern void _ZN11S20291C6_nt3v11Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C6_nt__12S20291C15_nt__8S20291C1[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-36112,-29716),
  0,
  ABISELECT(-36112,-29716),
  (VTBL_ENTRY)&(_ZTI12S20291C15_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C15_ntD1Ev,_ZTv0_n16_N12S20291C15_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C15_ntD0Ev,_ZTv0_n16_N12S20291C15_ntD0Ev),
  (VTBL_ENTRY)&_ZN11S20291C6_nt3v11Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt11S20291C6_nt__A1__12S20291C15_nt__8S20291C1[] = {
  ABISELECT(-36408,-29960),
  (VTBL_ENTRY)&(_ZTI12S20291C15_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt11S20291C6_nt__A2__12S20291C15_nt__8S20291C1[] = {
  ABISELECT(-36872,-30360),
  (VTBL_ENTRY)&(_ZTI12S20291C15_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__8S20291C1[] = {
  ABISELECT(-144,-124),
  0,
  (VTBL_ENTRY)&(_ZTI11S20291C3_nt[0]),
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__11S20291C3_nt__8S20291C1[] = {
  0,
  ABISELECT(144,124),
  (VTBL_ENTRY)&(_ZTI11S20291C3_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN8S20291C4D1Ev();
extern void _ZN8S20291C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20291C4__8S20291C1[] = {
  ABISELECT(19376,15948),
  ABISELECT(16560,13628),
  ABISELECT(16256,13384),
  ABISELECT(15784,12984),
  ABISELECT(-168,-136),
  ABISELECT(11664,9588),
  ABISELECT(656,552),
  ABISELECT(-312,-260),
  0,
  (VTBL_ENTRY)&(_ZTI8S20291C4[0]),
  (VTBL_ENTRY)&_ZN8S20291C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20291C4D0Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt8S20291C4__A1__8S20291C1[] = {
  ABISELECT(-312,-260),
  0,
  (VTBL_ENTRY)&(_ZTI11S20291C3_nt[0]),
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__11S20291C3_nt8S20291C4__A1__8S20291C1[] = {
  0,
  ABISELECT(312,260),
  (VTBL_ENTRY)&(_ZTI11S20291C3_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
extern void _ZN12S20291C13_ntD1Ev();
extern void _ZN12S20291C13_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV12S20291C13_nt8S20291C4__A1__8S20291C1[] = {
  ABISELECT(15616,12848),
  ABISELECT(-336,-272),
  ABISELECT(-480,-396),
  ABISELECT(11496,9452),
  ABISELECT(488,416),
  ABISELECT(16088,13248),
  0,
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
  (VTBL_ENTRY)&_ZN12S20291C13_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S20291C13_ntD0Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__12S20291C13_nt8S20291C4__A1__8S20291C1[] = {
  0,
  ABISELECT(-16088,-13248),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C5_nt3v12Ev();
extern void ABISELECT(_ZTv0_n80_N12S20291C13_ntD1Ev,_ZTv0_n40_N12S20291C13_ntD1Ev)();
extern void ABISELECT(_ZThn488_N12S20291C13_ntD1Ev,_ZThn416_N12S20291C13_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N12S20291C13_ntD0Ev,_ZTv0_n40_N12S20291C13_ntD0Ev)();
extern void ABISELECT(_ZThn488_N12S20291C13_ntD0Ev,_ZThn416_N12S20291C13_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20291C5_nt__12S20291C13_nt8S20291C4__A1__8S20291C1[] = {
  ABISELECT(-488,-416),
  0,
  0,
  ABISELECT(11008,9036),
  ABISELECT(15600,12832),
  ABISELECT(-968,-812),
  ABISELECT(-824,-688),
  ABISELECT(15128,12432),
  ABISELECT(-488,-416),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S20291C5_nt3v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N12S20291C13_ntD1Ev,_ZTv0_n40_N12S20291C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N12S20291C13_ntD0Ev,_ZTv0_n40_N12S20291C13_ntD0Ev),
};
extern void _ZN11S20291C7_nt2v7Ev();
extern void ABISELECT(_ZTv0_n32_N12S20291C13_ntD1Ev,_ZTv0_n16_N12S20291C13_ntD1Ev)();
extern void ABISELECT(_ZThn11496_N12S20291C13_ntD1Ev,_ZThn9452_N12S20291C13_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N12S20291C13_ntD0Ev,_ZTv0_n16_N12S20291C13_ntD0Ev)();
extern void ABISELECT(_ZThn11496_N12S20291C13_ntD0Ev,_ZThn9452_N12S20291C13_ntD0Ev)() __attribute__((weak));
extern void _ZN11S20291C6_nt3v11Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C6_nt__12S20291C13_nt8S20291C4__A1__8S20291C1[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-11496,-9452),
  0,
  ABISELECT(-11496,-9452),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C13_ntD1Ev,_ZTv0_n16_N12S20291C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C13_ntD0Ev,_ZTv0_n16_N12S20291C13_ntD0Ev),
  (VTBL_ENTRY)&_ZN11S20291C6_nt3v11Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt11S20291C6_nt__A1__12S20291C13_nt8S20291C4__A1__8S20291C1[] = {
  ABISELECT(-11792,-9696),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt11S20291C6_nt__12S20291C13_nt8S20291C4__A1__8S20291C1[] = {
  ABISELECT(-12256,-10096),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__A1__12S20291C13_nt8S20291C4__A1__8S20291C1[] = {
  0,
  ABISELECT(480,396),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__12S20291C13_nt8S20291C4__A1__8S20291C1[] = {
  ABISELECT(-144,-124),
  ABISELECT(336,272),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt__A2__12S20291C13_nt8S20291C4__A1__8S20291C1[] = {
  0,
  0,
  0,
  ABISELECT(-15616,-12848),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void ABISELECT(_ZTvn464_n80_N12S20291C13_ntD1Ev,_ZTvn380_n40_N12S20291C13_ntD1Ev)();
extern void ABISELECT(_ZTvn464_n80_N12S20291C13_ntD0Ev,_ZTvn380_n40_N12S20291C13_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV12S20291C10_nt11S20291C5_nt__12S20291C13_nt8S20291C4__A1__8S20291C1[] = {
  ABISELECT(-1288,-1068),
  ABISELECT(-1432,-1192),
  ABISELECT(10544,8656),
  ABISELECT(15136,12452),
  ABISELECT(-952,-796),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N12S20291C13_ntD1Ev,_ZTvn380_n40_N12S20291C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N12S20291C13_ntD0Ev,_ZTvn380_n40_N12S20291C13_ntD0Ev),
};
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C5_nt3v12Ev();
extern void ABISELECT(_ZTv0_n80_N8S20291C4D1Ev,_ZTv0_n40_N8S20291C4D1Ev)();
extern void ABISELECT(_ZThn656_N8S20291C4D1Ev,_ZThn552_N8S20291C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S20291C4D0Ev,_ZTv0_n40_N8S20291C4D0Ev)();
extern void ABISELECT(_ZThn656_N8S20291C4D0Ev,_ZThn552_N8S20291C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20291C5_nt__8S20291C4__8S20291C1[] = {
  ABISELECT(-656,-552),
  0,
  0,
  ABISELECT(11008,9036),
  ABISELECT(15600,12832),
  ABISELECT(-968,-812),
  ABISELECT(-824,-688),
  ABISELECT(15128,12432),
  ABISELECT(-656,-552),
  (VTBL_ENTRY)&(_ZTI8S20291C4[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S20291C5_nt3v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20291C4D1Ev,_ZTv0_n40_N8S20291C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20291C4D0Ev,_ZTv0_n40_N8S20291C4D0Ev),
};
extern void _ZN11S20291C7_nt2v7Ev();
extern void ABISELECT(_ZTv0_n32_N8S20291C4D1Ev,_ZTv0_n16_N8S20291C4D1Ev)();
extern void ABISELECT(_ZThn11664_N8S20291C4D1Ev,_ZThn9588_N8S20291C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20291C4D0Ev,_ZTv0_n16_N8S20291C4D0Ev)();
extern void ABISELECT(_ZThn11664_N8S20291C4D0Ev,_ZThn9588_N8S20291C4D0Ev)() __attribute__((weak));
extern void _ZN11S20291C6_nt3v11Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C6_nt__8S20291C4__8S20291C1[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-11664,-9588),
  0,
  ABISELECT(-11664,-9588),
  (VTBL_ENTRY)&(_ZTI8S20291C4[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20291C4D1Ev,_ZTv0_n16_N8S20291C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20291C4D0Ev,_ZTv0_n16_N8S20291C4D0Ev),
  (VTBL_ENTRY)&_ZN11S20291C6_nt3v11Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt11S20291C6_nt__8S20291C4__8S20291C1[] = {
  ABISELECT(-11960,-9832),
  (VTBL_ENTRY)&(_ZTI8S20291C4[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt11S20291C6_nt__8S20291C4__8S20291C1[] = {
  ABISELECT(-12424,-10232),
  (VTBL_ENTRY)&(_ZTI8S20291C4[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__A1__8S20291C4__8S20291C1[] = {
  0,
  ABISELECT(312,260),
  (VTBL_ENTRY)&(_ZTI8S20291C4[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__8S20291C4__8S20291C1[] = {
  ABISELECT(-144,-124),
  ABISELECT(168,136),
  (VTBL_ENTRY)&(_ZTI8S20291C4[0]),
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt__A1__8S20291C4__8S20291C1[] = {
  0,
  0,
  0,
  ABISELECT(-15784,-12984),
  (VTBL_ENTRY)&(_ZTI8S20291C4[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__A1__8S20291C4__8S20291C1[] = {
  0,
  ABISELECT(-16256,-13384),
  (VTBL_ENTRY)&(_ZTI8S20291C4[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern void ABISELECT(_ZTvn464_n80_N8S20291C4D1Ev,_ZTvn380_n40_N8S20291C4D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N8S20291C4D0Ev,_ZTvn380_n40_N8S20291C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S20291C10_nt11S20291C5_nt__8S20291C4__8S20291C1[] = {
  ABISELECT(-1288,-1068),
  ABISELECT(-1432,-1192),
  ABISELECT(10544,8656),
  ABISELECT(15136,12452),
  ABISELECT(-1120,-932),
  (VTBL_ENTRY)&(_ZTI8S20291C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S20291C4D1Ev,_ZTvn380_n40_N8S20291C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S20291C4D0Ev,_ZTvn380_n40_N8S20291C4D0Ev),
};
extern void _ZN11S20291C2_nt2v6Ev();
extern void ABISELECT(_ZTv0_n88_N8S20291C4D1Ev,_ZTv0_n44_N8S20291C4D1Ev)();
extern void ABISELECT(_ZThn16560_N8S20291C4D1Ev,_ZThn13628_N8S20291C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S20291C4D0Ev,_ZTv0_n44_N8S20291C4D0Ev)();
extern void ABISELECT(_ZThn16560_N8S20291C4D0Ev,_ZThn13628_N8S20291C4D0Ev)() __attribute__((weak));
extern void _ZN12S20291C12_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV12S20291C12_nt__8S20291C4__8S20291C1[] = {
  ABISELECT(608,504),
  ABISELECT(608,504),
  0,
  ABISELECT(-16560,-13628),
  0,
  ABISELECT(-776,-644),
  ABISELECT(-16728,-13764),
  ABISELECT(-16872,-13888),
  ABISELECT(-4896,-4040),
  ABISELECT(-15904,-13076),
  ABISELECT(2816,2320),
  ABISELECT(-304,-244),
  ABISELECT(-16560,-13628),
  (VTBL_ENTRY)&(_ZTI8S20291C4[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S20291C4D1Ev,_ZTv0_n44_N8S20291C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S20291C4D0Ev,_ZTv0_n44_N8S20291C4D0Ev),
  (VTBL_ENTRY)&_ZN12S20291C12_nt3v14Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
extern void ABISELECT(_ZTv0_n96_N8S20291C4D1Ev,_ZTv0_n48_N8S20291C4D1Ev)();
extern void ABISELECT(_ZThn19376_N8S20291C4D1Ev,_ZThn15948_N8S20291C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S20291C4D0Ev,_ZTv0_n48_N8S20291C4D0Ev)();
extern void ABISELECT(_ZThn19376_N8S20291C4D0Ev,_ZThn15948_N8S20291C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S20291C13_nt__8S20291C4__8S20291C1[] = {
  ABISELECT(-19376,-15948),
  0,
  0,
  0,
  ABISELECT(-3592,-2964),
  ABISELECT(-19544,-16084),
  ABISELECT(-19688,-16208),
  ABISELECT(-7712,-6360),
  ABISELECT(-18720,-15396),
  ABISELECT(-3120,-2564),
  ABISELECT(-19376,-15948),
  (VTBL_ENTRY)&(_ZTI8S20291C4[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20291C4D1Ev,_ZTv0_n48_N8S20291C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20291C4D0Ev,_ZTv0_n48_N8S20291C4D0Ev),
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C9_nt12S20291C12_nt__A1__8S20291C4__8S20291C1[] = {
  ABISELECT(-448,-368),
  ABISELECT(-17016,-14012),
  ABISELECT(-16872,-13888),
  ABISELECT(-920,-768),
  ABISELECT(-16704,-13752),
  (VTBL_ENTRY)&(_ZTI8S20291C4[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
extern void ABISELECT(_ZTvn608_n88_N8S20291C4D1Ev,_ZTvn504_n44_N8S20291C4D1Ev)();
extern void ABISELECT(_ZTvn608_n88_N8S20291C4D0Ev,_ZTvn504_n44_N8S20291C4D0Ev)();
extern void _ZN12S20291C11_nt3v13Ev();
static  VTBL_ENTRY _tg__ZTV12S20291C11_nt12S20291C12_nt__8S20291C4__8S20291C1[] = {
  ABISELECT(-17168,-14132),
  (VTBL_ENTRY)&(_ZTI8S20291C4[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn608_n88_N8S20291C4D1Ev,_ZTvn504_n44_N8S20291C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn608_n88_N8S20291C4D0Ev,_ZTvn504_n44_N8S20291C4D0Ev),
  (VTBL_ENTRY)&_ZN12S20291C11_nt3v13Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
extern void ABISELECT(_ZThn168_N8S20291C4D1Ev,_ZThn136_N8S20291C4D1Ev)();
extern void ABISELECT(_ZThn168_N8S20291C4D0Ev,_ZThn136_N8S20291C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S20291C13_nt__A__8S20291C4__8S20291C1[] = {
  ABISELECT(15616,12848),
  ABISELECT(-336,-272),
  ABISELECT(-480,-396),
  ABISELECT(11496,9452),
  ABISELECT(488,416),
  ABISELECT(16088,13248),
  ABISELECT(-168,-136),
  (VTBL_ENTRY)&(_ZTI8S20291C4[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn168_N8S20291C4D1Ev,_ZThn136_N8S20291C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn168_N8S20291C4D0Ev,_ZThn136_N8S20291C4D0Ev),
};
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C5_nt3v12Ev();
extern void _ZN11S20291C5_ntD1Ev();
extern void _ZN11S20291C5_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C5_nt__8S20291C1[] = {
  ABISELECT(11008,9036),
  ABISELECT(15600,12832),
  ABISELECT(-968,-812),
  ABISELECT(-824,-688),
  ABISELECT(15128,12432),
  0,
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S20291C5_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S20291C5_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S20291C5_ntD0Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C9_nt11S20291C5_nt__8S20291C1[] = {
  ABISELECT(15600,12832),
  ABISELECT(-968,-812),
  ABISELECT(-824,-688),
  ABISELECT(15128,12432),
  0,
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt__11S20291C9_nt11S20291C5_nt__8S20291C1[] = {
  0,
  0,
  0,
  ABISELECT(-15128,-12432),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__11S20291C9_nt11S20291C5_nt__8S20291C1[] = {
  ABISELECT(-144,-124),
  ABISELECT(824,688),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__A1__11S20291C9_nt11S20291C5_nt__8S20291C1[] = {
  0,
  ABISELECT(968,812),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__11S20291C9_nt11S20291C5_nt__8S20291C1[] = {
  0,
  ABISELECT(-15600,-12832),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern void _ZN12S20291C10_ntD1Ev();
extern void _ZN12S20291C10_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV12S20291C10_nt11S20291C5_nt__8S20291C1[] = {
  ABISELECT(-1288,-1068),
  ABISELECT(-1432,-1192),
  ABISELECT(10544,8656),
  ABISELECT(15136,12452),
  0,
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN12S20291C10_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S20291C10_ntD0Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__12S20291C10_nt11S20291C5_nt__8S20291C1[] = {
  0,
  ABISELECT(-15136,-12452),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
extern void ABISELECT(_ZTv0_n32_N12S20291C10_ntD1Ev,_ZTv0_n16_N12S20291C10_ntD1Ev)();
extern void ABISELECT(_ZThn10544_N12S20291C10_ntD1Ev,_ZThn8656_N12S20291C10_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N12S20291C10_ntD0Ev,_ZTv0_n16_N12S20291C10_ntD0Ev)();
extern void ABISELECT(_ZThn10544_N12S20291C10_ntD0Ev,_ZThn8656_N12S20291C10_ntD0Ev)() __attribute__((weak));
extern void _ZN11S20291C6_nt3v11Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C6_nt__12S20291C10_nt11S20291C5_nt__8S20291C1[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-10544,-8656),
  0,
  ABISELECT(-10544,-8656),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C10_ntD1Ev,_ZTv0_n16_N12S20291C10_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C10_ntD0Ev,_ZTv0_n16_N12S20291C10_ntD0Ev),
  (VTBL_ENTRY)&_ZN11S20291C6_nt3v11Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt11S20291C6_nt__12S20291C10_nt11S20291C5_nt__8S20291C1[] = {
  ABISELECT(-10840,-8900),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt11S20291C6_nt__12S20291C10_nt11S20291C5_nt__8S20291C1[] = {
  ABISELECT(-11304,-9300),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__A1__12S20291C10_nt11S20291C5_nt__8S20291C1[] = {
  0,
  ABISELECT(1432,1192),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__12S20291C10_nt11S20291C5_nt__8S20291C1[] = {
  ABISELECT(-144,-124),
  ABISELECT(1288,1068),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
};
extern void _ZN11S20291C7_nt2v7Ev();
extern void ABISELECT(_ZTv0_n32_N11S20291C5_ntD1Ev,_ZTv0_n16_N11S20291C5_ntD1Ev)();
extern void ABISELECT(_ZThn11008_N11S20291C5_ntD1Ev,_ZThn9036_N11S20291C5_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N11S20291C5_ntD0Ev,_ZTv0_n16_N11S20291C5_ntD0Ev)();
extern void ABISELECT(_ZThn11008_N11S20291C5_ntD0Ev,_ZThn9036_N11S20291C5_ntD0Ev)() __attribute__((weak));
extern void _ZN11S20291C6_nt3v11Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C6_nt__11S20291C5_nt__8S20291C1[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-11008,-9036),
  0,
  ABISELECT(-11008,-9036),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N11S20291C5_ntD1Ev,_ZTv0_n16_N11S20291C5_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N11S20291C5_ntD0Ev,_ZTv0_n16_N11S20291C5_ntD0Ev),
  (VTBL_ENTRY)&_ZN11S20291C6_nt3v11Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt11S20291C6_nt__11S20291C5_nt__8S20291C1[] = {
  ABISELECT(-11304,-9280),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt11S20291C6_nt__11S20291C5_nt__8S20291C1[] = {
  ABISELECT(-11768,-9680),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__A1__11S20291C5_nt__8S20291C1[] = {
  0,
  ABISELECT(968,812),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__11S20291C5_nt__8S20291C1[] = {
  ABISELECT(-144,-124),
  ABISELECT(824,688),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt__A1__11S20291C5_nt__8S20291C1[] = {
  0,
  0,
  0,
  ABISELECT(-15128,-12432),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__A1__11S20291C5_nt__8S20291C1[] = {
  0,
  ABISELECT(-15600,-12832),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern void ABISELECT(_ZThn464_N11S20291C5_ntD1Ev,_ZThn380_N11S20291C5_ntD1Ev)();
extern void ABISELECT(_ZThn464_N11S20291C5_ntD0Ev,_ZThn380_N11S20291C5_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV12S20291C10_nt__11S20291C5_nt__8S20291C1[] = {
  ABISELECT(-1288,-1068),
  ABISELECT(-1432,-1192),
  ABISELECT(10544,8656),
  ABISELECT(15136,12452),
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N11S20291C5_ntD1Ev,_ZThn380_N11S20291C5_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N11S20291C5_ntD0Ev,_ZThn380_N11S20291C5_ntD0Ev),
};
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN12S20291C12_ntD1Ev();
extern void _ZN12S20291C12_ntD0Ev();
extern void _ZN12S20291C12_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV12S20291C12_nt__8S20291C1[] = {
  ABISELECT(-776,-644),
  ABISELECT(-16728,-13764),
  ABISELECT(-16872,-13888),
  ABISELECT(-4896,-4040),
  ABISELECT(-15904,-13076),
  ABISELECT(2816,2320),
  ABISELECT(-304,-244),
  0,
  (VTBL_ENTRY)&(_ZTI12S20291C12_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN12S20291C12_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S20291C12_ntD0Ev,
  (VTBL_ENTRY)&_ZN12S20291C12_nt3v14Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C9_nt12S20291C12_nt__A1__8S20291C1[] = {
  ABISELECT(-448,-368),
  ABISELECT(-17016,-14012),
  ABISELECT(-16872,-13888),
  ABISELECT(-920,-768),
  0,
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt__11S20291C9_nt12S20291C12_nt__A1__8S20291C1[] = {
  0,
  0,
  0,
  ABISELECT(920,768),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__11S20291C9_nt12S20291C12_nt__A1__8S20291C1[] = {
  ABISELECT(-144,-124),
  ABISELECT(16872,13888),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__A1__11S20291C9_nt12S20291C12_nt__A1__8S20291C1[] = {
  0,
  ABISELECT(17016,14012),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__11S20291C9_nt12S20291C12_nt__A1__8S20291C1[] = {
  0,
  ABISELECT(448,368),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__12S20291C12_nt__8S20291C1[] = {
  0,
  ABISELECT(304,244),
  (VTBL_ENTRY)&(_ZTI12S20291C12_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
extern void ABISELECT(_ZTv0_n96_N12S20291C12_ntD1Ev,_ZTv0_n48_N12S20291C12_ntD1Ev)();
extern void ABISELECT(_ZThn2816_N12S20291C12_ntD1Ev,_ZThn2320_N12S20291C12_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N12S20291C12_ntD0Ev,_ZTv0_n48_N12S20291C12_ntD0Ev)();
extern void ABISELECT(_ZThn2816_N12S20291C12_ntD0Ev,_ZThn2320_N12S20291C12_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S20291C13_nt__12S20291C12_nt__8S20291C1[] = {
  ABISELECT(-2816,-2320),
  0,
  0,
  0,
  ABISELECT(-3592,-2964),
  ABISELECT(-19544,-16084),
  ABISELECT(-19688,-16208),
  ABISELECT(-7712,-6360),
  ABISELECT(-18720,-15396),
  ABISELECT(-3120,-2564),
  ABISELECT(-2816,-2320),
  (VTBL_ENTRY)&(_ZTI12S20291C12_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N12S20291C12_ntD1Ev,_ZTv0_n48_N12S20291C12_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N12S20291C12_ntD0Ev,_ZTv0_n48_N12S20291C12_ntD0Ev),
};
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C5_nt3v12Ev();
extern void ABISELECT(_ZTv0_n80_N12S20291C12_ntD1Ev,_ZTv0_n40_N12S20291C12_ntD1Ev)();
extern void ABISELECT(_ZTv0_n80_N12S20291C12_ntD0Ev,_ZTv0_n40_N12S20291C12_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20291C5_nt__12S20291C12_nt__8S20291C1[] = {
  ABISELECT(15904,13076),
  0,
  0,
  ABISELECT(11008,9036),
  ABISELECT(15600,12832),
  ABISELECT(-968,-812),
  ABISELECT(-824,-688),
  ABISELECT(15128,12432),
  ABISELECT(15904,13076),
  (VTBL_ENTRY)&(_ZTI12S20291C12_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S20291C5_nt3v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N12S20291C12_ntD1Ev,_ZTv0_n40_N12S20291C12_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N12S20291C12_ntD0Ev,_ZTv0_n40_N12S20291C12_ntD0Ev),
};
extern void _ZN11S20291C7_nt2v7Ev();
extern void ABISELECT(_ZTv0_n32_N12S20291C12_ntD1Ev,_ZTv0_n16_N12S20291C12_ntD1Ev)();
extern void ABISELECT(_ZTv0_n32_N12S20291C12_ntD0Ev,_ZTv0_n16_N12S20291C12_ntD0Ev)();
extern void _ZN11S20291C6_nt3v11Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C6_nt__12S20291C12_nt__8S20291C1[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(4896,4040),
  0,
  ABISELECT(4896,4040),
  (VTBL_ENTRY)&(_ZTI12S20291C12_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C12_ntD1Ev,_ZTv0_n16_N12S20291C12_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C12_ntD0Ev,_ZTv0_n16_N12S20291C12_ntD0Ev),
  (VTBL_ENTRY)&_ZN11S20291C6_nt3v11Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt11S20291C6_nt__A1__12S20291C12_nt__8S20291C1[] = {
  ABISELECT(4600,3796),
  (VTBL_ENTRY)&(_ZTI12S20291C12_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt11S20291C6_nt__A1__12S20291C12_nt__8S20291C1[] = {
  ABISELECT(4136,3396),
  (VTBL_ENTRY)&(_ZTI12S20291C12_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__A2__12S20291C12_nt__8S20291C1[] = {
  0,
  ABISELECT(16872,13888),
  (VTBL_ENTRY)&(_ZTI12S20291C12_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__12S20291C12_nt__8S20291C1[] = {
  ABISELECT(-144,-124),
  ABISELECT(16728,13764),
  (VTBL_ENTRY)&(_ZTI12S20291C12_nt[0]),
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt__A2__12S20291C12_nt__8S20291C1[] = {
  0,
  0,
  0,
  ABISELECT(776,644),
  (VTBL_ENTRY)&(_ZTI12S20291C12_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void ABISELECT(_ZTvn464_n80_N12S20291C12_ntD1Ev,_ZTvn380_n40_N12S20291C12_ntD1Ev)();
extern void ABISELECT(_ZTvn464_n80_N12S20291C12_ntD0Ev,_ZTvn380_n40_N12S20291C12_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV12S20291C10_nt11S20291C5_nt__12S20291C12_nt__8S20291C1[] = {
  ABISELECT(-1288,-1068),
  ABISELECT(-1432,-1192),
  ABISELECT(10544,8656),
  ABISELECT(15136,12452),
  ABISELECT(15440,12696),
  (VTBL_ENTRY)&(_ZTI12S20291C12_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N12S20291C12_ntD1Ev,_ZTvn380_n40_N12S20291C12_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N12S20291C12_ntD0Ev,_ZTvn380_n40_N12S20291C12_ntD0Ev),
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C9_nt__A1__12S20291C12_nt__8S20291C1[] = {
  ABISELECT(-448,-368),
  ABISELECT(-17016,-14012),
  ABISELECT(-16872,-13888),
  ABISELECT(-920,-768),
  ABISELECT(-144,-124),
  (VTBL_ENTRY)&(_ZTI12S20291C12_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
extern void _ZN12S20291C13_ntD1Ev();
extern void _ZN12S20291C13_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV12S20291C13_nt__8S20291C1[] = {
  ABISELECT(-3592,-2964),
  ABISELECT(-19544,-16084),
  ABISELECT(-19688,-16208),
  ABISELECT(-7712,-6360),
  ABISELECT(-18720,-15396),
  ABISELECT(-3120,-2564),
  0,
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
  (VTBL_ENTRY)&_ZN12S20291C13_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S20291C13_ntD0Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__12S20291C13_nt__8S20291C1[] = {
  0,
  ABISELECT(3120,2564),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C5_nt3v12Ev();
extern void ABISELECT(_ZTv0_n80_N12S20291C13_ntD1Ev,_ZTv0_n40_N12S20291C13_ntD1Ev)();
extern void ABISELECT(_ZTv0_n80_N12S20291C13_ntD0Ev,_ZTv0_n40_N12S20291C13_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20291C5_nt__12S20291C13_nt__8S20291C1[] = {
  ABISELECT(18720,15396),
  0,
  0,
  ABISELECT(11008,9036),
  ABISELECT(15600,12832),
  ABISELECT(-968,-812),
  ABISELECT(-824,-688),
  ABISELECT(15128,12432),
  ABISELECT(18720,15396),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S20291C5_nt3v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N12S20291C13_ntD1Ev,_ZTv0_n40_N12S20291C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N12S20291C13_ntD0Ev,_ZTv0_n40_N12S20291C13_ntD0Ev),
};
extern void _ZN11S20291C7_nt2v7Ev();
extern void ABISELECT(_ZTv0_n32_N12S20291C13_ntD1Ev,_ZTv0_n16_N12S20291C13_ntD1Ev)();
extern void ABISELECT(_ZTv0_n32_N12S20291C13_ntD0Ev,_ZTv0_n16_N12S20291C13_ntD0Ev)();
extern void _ZN11S20291C6_nt3v11Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C6_nt__12S20291C13_nt__8S20291C1[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(7712,6360),
  0,
  ABISELECT(7712,6360),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C13_ntD1Ev,_ZTv0_n16_N12S20291C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C13_ntD0Ev,_ZTv0_n16_N12S20291C13_ntD0Ev),
  (VTBL_ENTRY)&_ZN11S20291C6_nt3v11Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt11S20291C6_nt__A1__12S20291C13_nt__8S20291C1[] = {
  ABISELECT(7416,6116),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt11S20291C6_nt__12S20291C13_nt__8S20291C1[] = {
  ABISELECT(6952,5716),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__A1__12S20291C13_nt__8S20291C1[] = {
  0,
  ABISELECT(19688,16208),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__12S20291C13_nt__8S20291C1[] = {
  ABISELECT(-144,-124),
  ABISELECT(19544,16084),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt__A2__12S20291C13_nt__8S20291C1[] = {
  0,
  0,
  0,
  ABISELECT(3592,2964),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void ABISELECT(_ZTvn464_n80_N12S20291C13_ntD1Ev,_ZTvn380_n40_N12S20291C13_ntD1Ev)();
extern void ABISELECT(_ZTvn464_n80_N12S20291C13_ntD0Ev,_ZTvn380_n40_N12S20291C13_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV12S20291C10_nt11S20291C5_nt__12S20291C13_nt__8S20291C1[] = {
  ABISELECT(-1288,-1068),
  ABISELECT(-1432,-1192),
  ABISELECT(10544,8656),
  ABISELECT(15136,12452),
  ABISELECT(18256,15016),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N12S20291C13_ntD1Ev,_ZTvn380_n40_N12S20291C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N12S20291C13_ntD0Ev,_ZTvn380_n40_N12S20291C13_ntD0Ev),
};
extern void _ZN11S20291C7_nt2v7Ev();
extern void _ZN12S20291C16_ntD1Ev();
extern void _ZN12S20291C16_ntD0Ev();
extern void _ZN11S20291C6_nt3v11Ev();
extern void _ZN12S20291C16_nt3v17Ev();
extern void _ZN12S20291C16_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV12S20291C16_nt__8S20291C1[] = {
  ABISELECT(-8192,-6768),
  ABISELECT(-3600,-2972),
  ABISELECT(-20024,-16492),
  ABISELECT(-4072,-3372),
  ABISELECT(26288,21584),
  ABISELECT(-20168,-16616),
  0,
  (VTBL_ENTRY)&(_ZTI12S20291C16_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&_ZN12S20291C16_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S20291C16_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S20291C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN12S20291C16_nt3v17Ev,
  (VTBL_ENTRY)&_ZN12S20291C16_nt3v18Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C5_nt3v12Ev();
extern void _ZN11S20291C5_ntD1Ev();
extern void _ZN11S20291C5_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C5_nt12S20291C16_nt__A1__8S20291C1[] = {
  ABISELECT(-12320,-10164),
  ABISELECT(-7728,-6368),
  ABISELECT(-24296,-20012),
  ABISELECT(-24152,-19888),
  ABISELECT(-8200,-6768),
  0,
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S20291C5_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S20291C5_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S20291C5_ntD0Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C9_nt11S20291C5_nt12S20291C16_nt__A4__8S20291C1[] = {
  ABISELECT(-7728,-6368),
  ABISELECT(-24296,-20012),
  ABISELECT(-24152,-19888),
  ABISELECT(-8200,-6768),
  0,
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt__11S20291C9_nt11S20291C5_nt12S20291C16_nt__A4__8S20291C1[] = {
  0,
  0,
  0,
  ABISELECT(8200,6768),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__11S20291C9_nt11S20291C5_nt12S20291C16_nt__A4__8S20291C1[] = {
  ABISELECT(-144,-124),
  ABISELECT(24152,19888),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__A1__11S20291C9_nt11S20291C5_nt12S20291C16_nt__A4__8S20291C1[] = {
  0,
  ABISELECT(24296,20012),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__11S20291C9_nt11S20291C5_nt12S20291C16_nt__A4__8S20291C1[] = {
  0,
  ABISELECT(7728,6368),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern void _ZN12S20291C10_ntD1Ev();
extern void _ZN12S20291C10_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV12S20291C10_nt11S20291C5_nt12S20291C16_nt__A2__8S20291C1[] = {
  ABISELECT(-24616,-20268),
  ABISELECT(-24760,-20392),
  ABISELECT(-12784,-10544),
  ABISELECT(-8192,-6748),
  0,
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN12S20291C10_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S20291C10_ntD0Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__12S20291C10_nt11S20291C5_nt12S20291C16_nt__A2__8S20291C1[] = {
  0,
  ABISELECT(8192,6748),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
extern void ABISELECT(_ZTv0_n32_N12S20291C10_ntD1Ev,_ZTv0_n16_N12S20291C10_ntD1Ev)();
extern void ABISELECT(_ZTv0_n32_N12S20291C10_ntD0Ev,_ZTv0_n16_N12S20291C10_ntD0Ev)();
extern void _ZN11S20291C6_nt3v11Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C6_nt__12S20291C10_nt11S20291C5_nt12S20291C16_nt__A2__8S20291C1[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(12784,10544),
  0,
  ABISELECT(12784,10544),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C10_ntD1Ev,_ZTv0_n16_N12S20291C10_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C10_ntD0Ev,_ZTv0_n16_N12S20291C10_ntD0Ev),
  (VTBL_ENTRY)&_ZN11S20291C6_nt3v11Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt11S20291C6_nt__12S20291C10_nt11S20291C5_nt12S20291C16_nt__A2__8S20291C1[] = {
  ABISELECT(12488,10300),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt11S20291C6_nt__12S20291C10_nt11S20291C5_nt12S20291C16_nt__A2__8S20291C1[] = {
  ABISELECT(12024,9900),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__A1__12S20291C10_nt11S20291C5_nt12S20291C16_nt__A2__8S20291C1[] = {
  0,
  ABISELECT(24760,20392),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__12S20291C10_nt11S20291C5_nt12S20291C16_nt__A2__8S20291C1[] = {
  ABISELECT(-144,-124),
  ABISELECT(24616,20268),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
};
extern void _ZN11S20291C7_nt2v7Ev();
extern void ABISELECT(_ZTv0_n32_N11S20291C5_ntD1Ev,_ZTv0_n16_N11S20291C5_ntD1Ev)();
extern void ABISELECT(_ZTv0_n32_N11S20291C5_ntD0Ev,_ZTv0_n16_N11S20291C5_ntD0Ev)();
extern void _ZN11S20291C6_nt3v11Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C6_nt__11S20291C5_nt12S20291C16_nt__A1__8S20291C1[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(12320,10164),
  0,
  ABISELECT(12320,10164),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N11S20291C5_ntD1Ev,_ZTv0_n16_N11S20291C5_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N11S20291C5_ntD0Ev,_ZTv0_n16_N11S20291C5_ntD0Ev),
  (VTBL_ENTRY)&_ZN11S20291C6_nt3v11Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt11S20291C6_nt__11S20291C5_nt12S20291C16_nt__A1__8S20291C1[] = {
  ABISELECT(12024,9920),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt11S20291C6_nt__11S20291C5_nt12S20291C16_nt__A1__8S20291C1[] = {
  ABISELECT(11560,9520),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__A1__11S20291C5_nt12S20291C16_nt__A1__8S20291C1[] = {
  0,
  ABISELECT(24296,20012),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__11S20291C5_nt12S20291C16_nt__A1__8S20291C1[] = {
  ABISELECT(-144,-124),
  ABISELECT(24152,19888),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt__A1__11S20291C5_nt12S20291C16_nt__A1__8S20291C1[] = {
  0,
  0,
  0,
  ABISELECT(8200,6768),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__A1__11S20291C5_nt12S20291C16_nt__A1__8S20291C1[] = {
  0,
  ABISELECT(7728,6368),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern void ABISELECT(_ZThn464_N11S20291C5_ntD1Ev,_ZThn380_N11S20291C5_ntD1Ev)();
extern void ABISELECT(_ZThn464_N11S20291C5_ntD0Ev,_ZThn380_N11S20291C5_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV12S20291C10_nt__11S20291C5_nt12S20291C16_nt__A1__8S20291C1[] = {
  ABISELECT(-24616,-20268),
  ABISELECT(-24760,-20392),
  ABISELECT(-12784,-10544),
  ABISELECT(-8192,-6748),
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N11S20291C5_ntD1Ev,_ZThn380_N11S20291C5_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N11S20291C5_ntD0Ev,_ZThn380_N11S20291C5_ntD0Ev),
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__12S20291C16_nt__8S20291C1[] = {
  0,
  ABISELECT(20168,16616),
  (VTBL_ENTRY)&(_ZTI12S20291C16_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C9_nt__12S20291C16_nt__8S20291C1[] = {
  0,
  ABISELECT(-29888,-24556),
  ABISELECT(-46456,-38200),
  ABISELECT(-46312,-38076),
  ABISELECT(-30360,-24956),
  ABISELECT(-26288,-21584),
  (VTBL_ENTRY)&(_ZTI12S20291C16_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt__12S20291C16_nt__8S20291C1[] = {
  0,
  0,
  0,
  ABISELECT(4072,3372),
  (VTBL_ENTRY)&(_ZTI12S20291C16_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__12S20291C16_nt__8S20291C1[] = {
  ABISELECT(-144,-124),
  ABISELECT(20024,16492),
  (VTBL_ENTRY)&(_ZTI12S20291C16_nt[0]),
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__12S20291C16_nt__8S20291C1[] = {
  0,
  ABISELECT(3600,2972),
  (VTBL_ENTRY)&(_ZTI12S20291C16_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C5_nt3v12Ev();
extern void ABISELECT(_ZThn4128_N12S20291C16_ntD1Ev,_ZThn3396_N12S20291C16_ntD1Ev)();
extern void ABISELECT(_ZThn4128_N12S20291C16_ntD0Ev,_ZThn3396_N12S20291C16_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20291C5_nt__12S20291C16_nt__8S20291C1[] = {
  ABISELECT(-12320,-10164),
  ABISELECT(-7728,-6368),
  ABISELECT(-24296,-20012),
  ABISELECT(-24152,-19888),
  ABISELECT(-8200,-6768),
  ABISELECT(-4128,-3396),
  (VTBL_ENTRY)&(_ZTI12S20291C16_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S20291C5_nt3v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N12S20291C16_ntD1Ev,_ZThn3396_N12S20291C16_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N12S20291C16_ntD0Ev,_ZThn3396_N12S20291C16_ntD0Ev),
};
extern void _ZN11S20291C7_nt2v7Ev();
extern void ABISELECT(_ZTv0_n32_N12S20291C16_ntD1Ev,_ZTv0_n16_N12S20291C16_ntD1Ev)();
extern void ABISELECT(_ZTv0_n32_N12S20291C16_ntD0Ev,_ZTv0_n16_N12S20291C16_ntD0Ev)();
extern void _ZN11S20291C6_nt3v11Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C6_nt__A1__12S20291C16_nt__8S20291C1[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(8192,6768),
  0,
  ABISELECT(8192,6768),
  (VTBL_ENTRY)&(_ZTI12S20291C16_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C16_ntD1Ev,_ZTv0_n16_N12S20291C16_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C16_ntD0Ev,_ZTv0_n16_N12S20291C16_ntD0Ev),
  (VTBL_ENTRY)&_ZN11S20291C6_nt3v11Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt11S20291C6_nt__A2__12S20291C16_nt__8S20291C1[] = {
  ABISELECT(7896,6524),
  (VTBL_ENTRY)&(_ZTI12S20291C16_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt11S20291C6_nt__A3__12S20291C16_nt__8S20291C1[] = {
  ABISELECT(7432,6124),
  (VTBL_ENTRY)&(_ZTI12S20291C16_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void ABISELECT(_ZThn4592_N12S20291C16_ntD1Ev,_ZThn3776_N12S20291C16_ntD1Ev)();
extern void ABISELECT(_ZThn4592_N12S20291C16_ntD0Ev,_ZThn3776_N12S20291C16_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV12S20291C10_nt11S20291C5_nt__12S20291C16_nt__8S20291C1[] = {
  ABISELECT(-24616,-20268),
  ABISELECT(-24760,-20392),
  ABISELECT(-12784,-10544),
  ABISELECT(-8192,-6748),
  ABISELECT(-4592,-3776),
  (VTBL_ENTRY)&(_ZTI12S20291C16_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N12S20291C16_ntD1Ev,_ZThn3776_N12S20291C16_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N12S20291C16_ntD0Ev,_ZThn3776_N12S20291C16_ntD0Ev),
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C9_nt__A3__8S20291C1[] = {
  ABISELECT(-29888,-24556),
  ABISELECT(-46456,-38200),
  ABISELECT(-46312,-38076),
  ABISELECT(-30360,-24956),
  0,
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt__11S20291C9_nt__A3__8S20291C1[] = {
  0,
  0,
  0,
  ABISELECT(30360,24956),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__11S20291C9_nt__A3__8S20291C1[] = {
  ABISELECT(-144,-124),
  ABISELECT(46312,38076),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__A1__11S20291C9_nt__A3__8S20291C1[] = {
  0,
  ABISELECT(46456,38200),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__11S20291C9_nt__A3__8S20291C1[] = {
  0,
  ABISELECT(29888,24556),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
static  VTT_ENTRY vtt_S20291C1[] = {
  {&(_ZTV8S20291C1[13]),  13,229},
  {&(_tg__ZTV12S20291C15_nt__8S20291C1[7]),  7,12},
  {&(_tg__ZTV11S20291C9_nt12S20291C15_nt__A2__8S20291C1[6]),  6,7},
  {&(_tg__ZTV11S20291C8_nt__11S20291C9_nt12S20291C15_nt__A2__8S20291C1[5]),  5,8},
  {&(_tg__ZTV11S20291C3_nt__11S20291C9_nt12S20291C15_nt__A2__8S20291C1[3]),  3,3},
  {&(_tg__ZTV11S20291C2_nt__A1__11S20291C9_nt12S20291C15_nt__A2__8S20291C1[3]),  3,4},
  {&(_tg__ZTV11S20291C7_nt__11S20291C9_nt12S20291C15_nt__A2__8S20291C1[3]),  3,4},
  {&(_tg__ZTV12S20291C10_nt12S20291C15_nt__A1__8S20291C1[6]),  6,8},
  {&(_tg__ZTV11S20291C7_nt__12S20291C10_nt12S20291C15_nt__A1__8S20291C1[3]),  3,4},
  {&(_tg__ZTV11S20291C6_nt__12S20291C10_nt12S20291C15_nt__A1__8S20291C1[9]),  9,13},
  {&(_tg__ZTV11S20291C8_nt11S20291C6_nt__12S20291C10_nt12S20291C15_nt__A1__8S20291C1[2]),  2,5},
  {&(_tg__ZTV11S20291C2_nt11S20291C6_nt__12S20291C10_nt12S20291C15_nt__A1__8S20291C1[2]),  2,3},
  {&(_tg__ZTV11S20291C2_nt__A1__12S20291C10_nt12S20291C15_nt__A1__8S20291C1[3]),  3,4},
  {&(_tg__ZTV11S20291C3_nt__12S20291C10_nt12S20291C15_nt__A1__8S20291C1[3]),  3,3},
  {&(_tg__ZTV11S20291C8_nt__12S20291C15_nt__8S20291C1[5]),  5,8},
  {&(_tg__ZTV11S20291C3_nt__12S20291C15_nt__8S20291C1[3]),  3,3},
  {&(_tg__ZTV11S20291C2_nt__A1__12S20291C15_nt__8S20291C1[3]),  3,4},
  {&(_tg__ZTV11S20291C7_nt__12S20291C15_nt__8S20291C1[3]),  3,4},
  {&(_tg__ZTV12S20291C10_nt__12S20291C15_nt__8S20291C1[6]),  6,8},
  {&(_tg__ZTV11S20291C6_nt__12S20291C15_nt__8S20291C1[9]),  9,13},
  {&(_tg__ZTV11S20291C8_nt11S20291C6_nt__A1__12S20291C15_nt__8S20291C1[2]),  2,5},
  {&(_tg__ZTV11S20291C2_nt11S20291C6_nt__A2__12S20291C15_nt__8S20291C1[2]),  2,3},
  {&(_ZTV8S20291C1[34]),  34,229},
  {&(_ZTV8S20291C1[38]),  38,229},
  {&(_ZTV8S20291C1[52]),  52,229},
  {&(_ZTV8S20291C1[77]),  77,229},
  {&(_ZTV8S20291C1[98]),  98,229},
  {&(_ZTV8S20291C1[104]),  104,229},
  {&(_ZTV8S20291C1[109]),  109,229},
  {&(_ZTV8S20291C1[115]),  115,229},
  {&(_ZTV8S20291C1[121]),  121,229},
  {&(_ZTV8S20291C1[87]),  87,229},
  {&(_ZTV8S20291C1[136]),  136,229},
  {&(_ZTV8S20291C1[165]),  165,229},
  {&(_ZTV8S20291C1[146]),  146,229},
  {&(_ZTV8S20291C1[149]),  149,229},
  {&(_ZTV8S20291C1[62]),  62,229},
  {&(_ZTV8S20291C1[29]),  29,229},
  {&(_ZTV8S20291C1[188]),  188,229},
  {&(_ZTV8S20291C1[228]),  228,229},
  {&(_ZTV8S20291C1[196]),  196,229},
  {&(_ZTV8S20291C1[201]),  201,229},
  {&(_ZTV8S20291C1[209]),  209,229},
  {&(_ZTV8S20291C1[219]),  219,229},
  {&(_tg__ZTV11S20291C3_nt__8S20291C1[3]),  3,3},
  {&(_tg__ZTV11S20291C2_nt__11S20291C3_nt__8S20291C1[3]),  3,4},
  {&(_tg__ZTV8S20291C4__8S20291C1[10]),  10,12},
  {&(_tg__ZTV11S20291C3_nt8S20291C4__A1__8S20291C1[3]),  3,3},
  {&(_tg__ZTV11S20291C2_nt__11S20291C3_nt8S20291C4__A1__8S20291C1[3]),  3,4},
  {&(_tg__ZTV12S20291C13_nt8S20291C4__A1__8S20291C1[8]),  8,13},
  {&(_tg__ZTV11S20291C7_nt__12S20291C13_nt8S20291C4__A1__8S20291C1[3]),  3,4},
  {&(_tg__ZTV11S20291C5_nt__12S20291C13_nt8S20291C4__A1__8S20291C1[10]),  10,14},
  {&(_tg__ZTV11S20291C6_nt__12S20291C13_nt8S20291C4__A1__8S20291C1[9]),  9,13},
  {&(_tg__ZTV11S20291C8_nt11S20291C6_nt__A1__12S20291C13_nt8S20291C4__A1__8S20291C1[2]),  2,5},
  {&(_tg__ZTV11S20291C2_nt11S20291C6_nt__12S20291C13_nt8S20291C4__A1__8S20291C1[2]),  2,3},
  {&(_tg__ZTV11S20291C2_nt__A1__12S20291C13_nt8S20291C4__A1__8S20291C1[3]),  3,4},
  {&(_tg__ZTV11S20291C3_nt__12S20291C13_nt8S20291C4__A1__8S20291C1[3]),  3,3},
  {&(_tg__ZTV11S20291C8_nt__A2__12S20291C13_nt8S20291C4__A1__8S20291C1[5]),  5,8},
  {&(_tg__ZTV12S20291C10_nt11S20291C5_nt__12S20291C13_nt8S20291C4__A1__8S20291C1[6]),  6,8},
  {&(_tg__ZTV11S20291C5_nt__8S20291C4__8S20291C1[10]),  10,14},
  {&(_tg__ZTV11S20291C6_nt__8S20291C4__8S20291C1[9]),  9,13},
  {&(_tg__ZTV11S20291C8_nt11S20291C6_nt__8S20291C4__8S20291C1[2]),  2,5},
  {&(_tg__ZTV11S20291C2_nt11S20291C6_nt__8S20291C4__8S20291C1[2]),  2,3},
  {&(_tg__ZTV11S20291C2_nt__A1__8S20291C4__8S20291C1[3]),  3,4},
  {&(_tg__ZTV11S20291C3_nt__8S20291C4__8S20291C1[3]),  3,3},
  {&(_tg__ZTV11S20291C8_nt__A1__8S20291C4__8S20291C1[5]),  5,8},
  {&(_tg__ZTV11S20291C7_nt__A1__8S20291C4__8S20291C1[3]),  3,4},
  {&(_tg__ZTV12S20291C10_nt11S20291C5_nt__8S20291C4__8S20291C1[6]),  6,8},
  {&(_tg__ZTV12S20291C12_nt__8S20291C4__8S20291C1[14]),  14,18},
  {&(_tg__ZTV12S20291C13_nt__8S20291C4__8S20291C1[12]),  12,17},
  {&(_tg__ZTV11S20291C9_nt12S20291C12_nt__A1__8S20291C4__8S20291C1[6]),  6,7},
  {&(_tg__ZTV12S20291C11_nt12S20291C12_nt__8S20291C4__8S20291C1[2]),  2,6},
  {&(_tg__ZTV12S20291C13_nt__A__8S20291C4__8S20291C1[8]),  8,13},
  {&(_tg__ZTV11S20291C5_nt__8S20291C1[7]),  7,11},
  {&(_tg__ZTV11S20291C9_nt11S20291C5_nt__8S20291C1[6]),  6,7},
  {&(_tg__ZTV11S20291C8_nt__11S20291C9_nt11S20291C5_nt__8S20291C1[5]),  5,8},
  {&(_tg__ZTV11S20291C3_nt__11S20291C9_nt11S20291C5_nt__8S20291C1[3]),  3,3},
  {&(_tg__ZTV11S20291C2_nt__A1__11S20291C9_nt11S20291C5_nt__8S20291C1[3]),  3,4},
  {&(_tg__ZTV11S20291C7_nt__11S20291C9_nt11S20291C5_nt__8S20291C1[3]),  3,4},
  {&(_tg__ZTV12S20291C10_nt11S20291C5_nt__8S20291C1[6]),  6,8},
  {&(_tg__ZTV11S20291C7_nt__12S20291C10_nt11S20291C5_nt__8S20291C1[3]),  3,4},
  {&(_tg__ZTV11S20291C6_nt__12S20291C10_nt11S20291C5_nt__8S20291C1[9]),  9,13},
  {&(_tg__ZTV11S20291C8_nt11S20291C6_nt__12S20291C10_nt11S20291C5_nt__8S20291C1[2]),  2,5},
  {&(_tg__ZTV11S20291C2_nt11S20291C6_nt__12S20291C10_nt11S20291C5_nt__8S20291C1[2]),  2,3},
  {&(_tg__ZTV11S20291C2_nt__A1__12S20291C10_nt11S20291C5_nt__8S20291C1[3]),  3,4},
  {&(_tg__ZTV11S20291C3_nt__12S20291C10_nt11S20291C5_nt__8S20291C1[3]),  3,3},
  {&(_tg__ZTV11S20291C6_nt__11S20291C5_nt__8S20291C1[9]),  9,13},
  {&(_tg__ZTV11S20291C8_nt11S20291C6_nt__11S20291C5_nt__8S20291C1[2]),  2,5},
  {&(_tg__ZTV11S20291C2_nt11S20291C6_nt__11S20291C5_nt__8S20291C1[2]),  2,3},
  {&(_tg__ZTV11S20291C2_nt__A1__11S20291C5_nt__8S20291C1[3]),  3,4},
  {&(_tg__ZTV11S20291C3_nt__11S20291C5_nt__8S20291C1[3]),  3,3},
  {&(_tg__ZTV11S20291C8_nt__A1__11S20291C5_nt__8S20291C1[5]),  5,8},
  {&(_tg__ZTV11S20291C7_nt__A1__11S20291C5_nt__8S20291C1[3]),  3,4},
  {&(_tg__ZTV12S20291C10_nt__11S20291C5_nt__8S20291C1[6]),  6,8},
  {&(_tg__ZTV12S20291C12_nt__8S20291C1[9]),  9,13},
  {&(_tg__ZTV11S20291C9_nt12S20291C12_nt__A1__8S20291C1[6]),  6,7},
  {&(_tg__ZTV11S20291C8_nt__11S20291C9_nt12S20291C12_nt__A1__8S20291C1[5]),  5,8},
  {&(_tg__ZTV11S20291C3_nt__11S20291C9_nt12S20291C12_nt__A1__8S20291C1[3]),  3,3},
  {&(_tg__ZTV11S20291C2_nt__A1__11S20291C9_nt12S20291C12_nt__A1__8S20291C1[3]),  3,4},
  {&(_tg__ZTV11S20291C7_nt__11S20291C9_nt12S20291C12_nt__A1__8S20291C1[3]),  3,4},
  {&(_tg__ZTV11S20291C7_nt__12S20291C12_nt__8S20291C1[3]),  3,4},
  {&(_tg__ZTV12S20291C13_nt__12S20291C12_nt__8S20291C1[12]),  12,17},
  {&(_tg__ZTV11S20291C5_nt__12S20291C12_nt__8S20291C1[10]),  10,14},
  {&(_tg__ZTV11S20291C6_nt__12S20291C12_nt__8S20291C1[9]),  9,13},
  {&(_tg__ZTV11S20291C8_nt11S20291C6_nt__A1__12S20291C12_nt__8S20291C1[2]),  2,5},
  {&(_tg__ZTV11S20291C2_nt11S20291C6_nt__A1__12S20291C12_nt__8S20291C1[2]),  2,3},
  {&(_tg__ZTV11S20291C2_nt__A2__12S20291C12_nt__8S20291C1[3]),  3,4},
  {&(_tg__ZTV11S20291C3_nt__12S20291C12_nt__8S20291C1[3]),  3,3},
  {&(_tg__ZTV11S20291C8_nt__A2__12S20291C12_nt__8S20291C1[5]),  5,8},
  {&(_tg__ZTV12S20291C10_nt11S20291C5_nt__12S20291C12_nt__8S20291C1[6]),  6,8},
  {&(_tg__ZTV11S20291C9_nt__A1__12S20291C12_nt__8S20291C1[6]),  6,7},
  {&(_tg__ZTV12S20291C13_nt__8S20291C1[8]),  8,13},
  {&(_tg__ZTV11S20291C7_nt__12S20291C13_nt__8S20291C1[3]),  3,4},
  {&(_tg__ZTV11S20291C5_nt__12S20291C13_nt__8S20291C1[10]),  10,14},
  {&(_tg__ZTV11S20291C6_nt__12S20291C13_nt__8S20291C1[9]),  9,13},
  {&(_tg__ZTV11S20291C8_nt11S20291C6_nt__A1__12S20291C13_nt__8S20291C1[2]),  2,5},
  {&(_tg__ZTV11S20291C2_nt11S20291C6_nt__12S20291C13_nt__8S20291C1[2]),  2,3},
  {&(_tg__ZTV11S20291C2_nt__A1__12S20291C13_nt__8S20291C1[3]),  3,4},
  {&(_tg__ZTV11S20291C3_nt__12S20291C13_nt__8S20291C1[3]),  3,3},
  {&(_tg__ZTV11S20291C8_nt__A2__12S20291C13_nt__8S20291C1[5]),  5,8},
  {&(_tg__ZTV12S20291C10_nt11S20291C5_nt__12S20291C13_nt__8S20291C1[6]),  6,8},
  {&(_tg__ZTV12S20291C16_nt__8S20291C1[8]),  8,14},
  {&(_tg__ZTV11S20291C5_nt12S20291C16_nt__A1__8S20291C1[7]),  7,11},
  {&(_tg__ZTV11S20291C9_nt11S20291C5_nt12S20291C16_nt__A4__8S20291C1[6]),  6,7},
  {&(_tg__ZTV11S20291C8_nt__11S20291C9_nt11S20291C5_nt12S20291C16_nt__A4__8S20291C1[5]),  5,8},
  {&(_tg__ZTV11S20291C3_nt__11S20291C9_nt11S20291C5_nt12S20291C16_nt__A4__8S20291C1[3]),  3,3},
  {&(_tg__ZTV11S20291C2_nt__A1__11S20291C9_nt11S20291C5_nt12S20291C16_nt__A4__8S20291C1[3]),  3,4},
  {&(_tg__ZTV11S20291C7_nt__11S20291C9_nt11S20291C5_nt12S20291C16_nt__A4__8S20291C1[3]),  3,4},
  {&(_tg__ZTV12S20291C10_nt11S20291C5_nt12S20291C16_nt__A2__8S20291C1[6]),  6,8},
  {&(_tg__ZTV11S20291C7_nt__12S20291C10_nt11S20291C5_nt12S20291C16_nt__A2__8S20291C1[3]),  3,4},
  {&(_tg__ZTV11S20291C6_nt__12S20291C10_nt11S20291C5_nt12S20291C16_nt__A2__8S20291C1[9]),  9,13},
  {&(_tg__ZTV11S20291C8_nt11S20291C6_nt__12S20291C10_nt11S20291C5_nt12S20291C16_nt__A2__8S20291C1[2]),  2,5},
  {&(_tg__ZTV11S20291C2_nt11S20291C6_nt__12S20291C10_nt11S20291C5_nt12S20291C16_nt__A2__8S20291C1[2]),  2,3},
  {&(_tg__ZTV11S20291C2_nt__A1__12S20291C10_nt11S20291C5_nt12S20291C16_nt__A2__8S20291C1[3]),  3,4},
  {&(_tg__ZTV11S20291C3_nt__12S20291C10_nt11S20291C5_nt12S20291C16_nt__A2__8S20291C1[3]),  3,3},
  {&(_tg__ZTV11S20291C6_nt__11S20291C5_nt12S20291C16_nt__A1__8S20291C1[9]),  9,13},
  {&(_tg__ZTV11S20291C8_nt11S20291C6_nt__11S20291C5_nt12S20291C16_nt__A1__8S20291C1[2]),  2,5},
  {&(_tg__ZTV11S20291C2_nt11S20291C6_nt__11S20291C5_nt12S20291C16_nt__A1__8S20291C1[2]),  2,3},
  {&(_tg__ZTV11S20291C2_nt__A1__11S20291C5_nt12S20291C16_nt__A1__8S20291C1[3]),  3,4},
  {&(_tg__ZTV11S20291C3_nt__11S20291C5_nt12S20291C16_nt__A1__8S20291C1[3]),  3,3},
  {&(_tg__ZTV11S20291C8_nt__A1__11S20291C5_nt12S20291C16_nt__A1__8S20291C1[5]),  5,8},
  {&(_tg__ZTV11S20291C7_nt__A1__11S20291C5_nt12S20291C16_nt__A1__8S20291C1[3]),  3,4},
  {&(_tg__ZTV12S20291C10_nt__11S20291C5_nt12S20291C16_nt__A1__8S20291C1[6]),  6,8},
  {&(_tg__ZTV11S20291C2_nt__12S20291C16_nt__8S20291C1[3]),  3,4},
  {&(_tg__ZTV11S20291C9_nt__12S20291C16_nt__8S20291C1[7]),  7,8},
  {&(_tg__ZTV11S20291C8_nt__12S20291C16_nt__8S20291C1[5]),  5,8},
  {&(_tg__ZTV11S20291C3_nt__12S20291C16_nt__8S20291C1[3]),  3,3},
  {&(_tg__ZTV11S20291C7_nt__12S20291C16_nt__8S20291C1[3]),  3,4},
  {&(_tg__ZTV11S20291C5_nt__12S20291C16_nt__8S20291C1[7]),  7,11},
  {&(_tg__ZTV11S20291C6_nt__A1__12S20291C16_nt__8S20291C1[9]),  9,13},
  {&(_tg__ZTV11S20291C8_nt11S20291C6_nt__A2__12S20291C16_nt__8S20291C1[2]),  2,5},
  {&(_tg__ZTV11S20291C2_nt11S20291C6_nt__A3__12S20291C16_nt__8S20291C1[2]),  2,3},
  {&(_tg__ZTV12S20291C10_nt11S20291C5_nt__12S20291C16_nt__8S20291C1[6]),  6,8},
  {&(_tg__ZTV11S20291C9_nt__A3__8S20291C1[6]),  6,7},
  {&(_tg__ZTV11S20291C8_nt__11S20291C9_nt__A3__8S20291C1[5]),  5,8},
  {&(_tg__ZTV11S20291C3_nt__11S20291C9_nt__A3__8S20291C1[3]),  3,3},
  {&(_tg__ZTV11S20291C2_nt__A1__11S20291C9_nt__A3__8S20291C1[3]),  3,4},
  {&(_tg__ZTV11S20291C7_nt__11S20291C9_nt__A3__8S20291C1[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S20291C1[];
extern  VTBL_ENTRY _ZTV8S20291C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20291C1[];
static VTBL_ENTRY alt_thunk_names12[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N12S20291C12_ntD0Ev,_ZTv0_n48_N12S20291C12_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2816_N12S20291C12_ntD0Ev,_ZThn2320_N12S20291C12_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N12S20291C12_ntD1Ev,_ZTv0_n48_N12S20291C12_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2816_N12S20291C12_ntD1Ev,_ZThn2320_N12S20291C12_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N11S20291C5_ntD0Ev,_ZTv0_n16_N11S20291C5_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N11S20291C5_ntD0Ev,_ZThn9036_N11S20291C5_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N11S20291C5_ntD1Ev,_ZTv0_n16_N11S20291C5_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N11S20291C5_ntD1Ev,_ZThn9036_N11S20291C5_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20291C4D0Ev,_ZTv0_n48_N8S20291C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn19376_N8S20291C4D0Ev,_ZThn15948_N8S20291C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20291C4D1Ev,_ZTv0_n48_N8S20291C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn19376_N8S20291C4D1Ev,_ZThn15948_N8S20291C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S20291C4D0Ev,_ZTv0_n44_N8S20291C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16560_N8S20291C4D0Ev,_ZThn13628_N8S20291C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S20291C4D1Ev,_ZTv0_n44_N8S20291C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16560_N8S20291C4D1Ev,_ZThn13628_N8S20291C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20291C4D0Ev,_ZTv0_n16_N8S20291C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11664_N8S20291C4D0Ev,_ZThn9588_N8S20291C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20291C4D1Ev,_ZTv0_n16_N8S20291C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11664_N8S20291C4D1Ev,_ZThn9588_N8S20291C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20291C4D0Ev,_ZTv0_n40_N8S20291C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S20291C4D0Ev,_ZThn552_N8S20291C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20291C4D1Ev,_ZTv0_n40_N8S20291C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S20291C4D1Ev,_ZThn552_N8S20291C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N12S20291C13_ntD0Ev,_ZTv0_n16_N12S20291C13_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11496_N12S20291C13_ntD0Ev,_ZThn9452_N12S20291C13_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N12S20291C13_ntD1Ev,_ZTv0_n16_N12S20291C13_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11496_N12S20291C13_ntD1Ev,_ZThn9452_N12S20291C13_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N12S20291C13_ntD0Ev,_ZTv0_n40_N12S20291C13_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn488_N12S20291C13_ntD0Ev,_ZThn416_N12S20291C13_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N12S20291C13_ntD1Ev,_ZTv0_n40_N12S20291C13_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn488_N12S20291C13_ntD1Ev,_ZThn416_N12S20291C13_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N12S20291C15_ntD0Ev,_ZTv0_n16_N12S20291C15_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn36112_N12S20291C15_ntD0Ev,_ZThn29716_N12S20291C15_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N12S20291C15_ntD1Ev,_ZTv0_n16_N12S20291C15_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn36112_N12S20291C15_ntD1Ev,_ZThn29716_N12S20291C15_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N12S20291C10_ntD0Ev,_ZTv0_n16_N12S20291C10_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N12S20291C10_ntD0Ev,_ZThn8656_N12S20291C10_ntD0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35648_N12S20291C10_ntD0Ev,_ZThn29336_N12S20291C10_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N12S20291C10_ntD1Ev,_ZTv0_n16_N12S20291C10_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N12S20291C10_ntD1Ev,_ZThn8656_N12S20291C10_ntD1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35648_N12S20291C10_ntD1Ev,_ZThn29336_N12S20291C10_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20291C1D0Ev,_ZTv0_n48_N8S20291C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn43824_N8S20291C1D0Ev,_ZThn36076_N8S20291C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20291C1D1Ev,_ZTv0_n48_N8S20291C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn43824_N8S20291C1D1Ev,_ZThn36076_N8S20291C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20291C1D0Ev,_ZTv0_n16_N8S20291C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn36112_N8S20291C1D0Ev,_ZThn29716_N8S20291C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20291C1D1Ev,_ZTv0_n16_N8S20291C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn36112_N8S20291C1D1Ev,_ZThn29716_N8S20291C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20291C1D0Ev,_ZTv0_n40_N8S20291C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn44304_N8S20291C1D0Ev,_ZThn36484_N8S20291C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn25104_N8S20291C1D0Ev,_ZThn20680_N8S20291C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20291C1D1Ev,_ZTv0_n40_N8S20291C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn44304_N8S20291C1D1Ev,_ZThn36484_N8S20291C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn25104_N8S20291C1D1Ev,_ZThn20680_N8S20291C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S20291C1D0Ev,_ZTv0_n44_N8S20291C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn41008_N8S20291C1D0Ev,_ZThn33756_N8S20291C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24448_N8S20291C1D0Ev,_ZThn20128_N8S20291C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S20291C1D1Ev,_ZTv0_n44_N8S20291C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn41008_N8S20291C1D1Ev,_ZThn33756_N8S20291C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24448_N8S20291C1D1Ev,_ZThn20128_N8S20291C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20291C1 = {  "S20291C1", // class name
  bases_S20291C1, 39,
  &(vtc_S20291C1[0]), // expected_vtbl_contents
  &(vtt_S20291C1[0]), // expected_vtt_contents
  ABISELECT(71056,58448), // object size
  NSPAIRA(_ZTI8S20291C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S20291C1),229, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20291C1),158, //virtual table table var
  39, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names12,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7856C9_nt  {
  void  mf7856c9(); // _ZN10S7856C9_nt8mf7856c9Ev
};
//SIG(-1 S7856C9_nt) C1{ m}


void  S7856C9_nt ::mf7856c9(){}

//skip512 S7856C9_nt

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S7856C12  {
  void  mf7856c12(); // _ZN8S7856C129mf7856c12Ev
};
//SIG(-1 S7856C12) C1{ m}


void  S7856C12 ::mf7856c12(){}

static void Test_S7856C12()
{
  {
    init_simple_test("S7856C12");
    S7856C12 lv;
    check2(sizeof(lv), 1, "sizeof(S7856C12)");
    check2(__alignof__(lv), 1, "__alignof__(S7856C12)");
  }
}
static Arrange_To_Call_Me vS7856C12(Test_S7856C12, "S7856C12", 1);

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S7856C11  : virtual S77C13_nt , S7856C9_nt , virtual S7856C12 {
  ~S7856C11(); // tgen
  S7856C11(); // tgen
};
//SIG(-1 S7856C11) C1{ VBC2{ m} BC3{ m} VBC4{ m}}


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

static void Test_S7856C11()
{
  extern Class_Descriptor cd_S7856C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7856C11, buf);
    S7856C11 *dp, &lv = *(dp=new (buf) S7856C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7856C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7856C11)");
    check_base_class_offset(lv, (S77C13_nt*), 0, "S7856C11");
    check_base_class_offset(lv, (S7856C9_nt*), 0, "S7856C11");
    check_base_class_offset(lv, (S7856C12*), 0, "S7856C11");
    test_class_info(&lv, &cd_S7856C11);
    dp->~S7856C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7856C11(Test_S7856C11, "S7856C11", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S7856C11C1Ev();
extern void _ZN8S7856C11D1Ev();
Name_Map name_map_S7856C11[] = {
  NSPAIR(_ZN8S7856C11C1Ev),
  NSPAIR(_ZN8S7856C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
static Base_Class bases_S7856C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7856C11[];
static  VTBL_ENTRY vtc_S7856C11[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
extern VTBL_ENTRY _ZTV8S7856C11[];
static  VTT_ENTRY vtt_S7856C11[] = {
  {&(_ZTV8S7856C11[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
Class_Descriptor cd_S7856C11 = {  "S7856C11", // class name
  bases_S7856C11, 3,
  &(vtc_S7856C11[0]), // expected_vtbl_contents
  &(vtt_S7856C11[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S7856C11),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7856C11),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7856C11),1, //virtual table table var
  0, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7856C10  : S77C13_nt , virtual S7856C11 , virtual S7856C9_nt {
  ~S7856C10(); // tgen
  S7856C10(); // tgen
};
//SIG(-1 S7856C10) C1{ BC2{ m} VBC3{ VBC2 BC4{ m} VBC5{ m}} VBC4}


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

static void Test_S7856C10()
{
  extern Class_Descriptor cd_S7856C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S7856C10, buf);
    S7856C10 *dp, &lv = *(dp=new (buf) S7856C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S7856C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7856C10)");
    /*is_ambiguous_... S7856C10::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*), 0, "S7856C10");
    check_base_class_offset(lv, (S77C13_nt*)(S7856C11*), ABISELECT(8,4), "S7856C10");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*), 0, "S7856C10");
    check_base_class_offset(lv, (S7856C12*)(S7856C11*), 0, "S7856C10");
    check_base_class_offset(lv, (S7856C11*), 0, "S7856C10");
    /*is_ambiguous_... S7856C10::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*), ABISELECT(8,4), "S7856C10");
    test_class_info(&lv, &cd_S7856C10);
    dp->~S7856C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7856C10(Test_S7856C10, "S7856C10", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S7856C10C1Ev();
extern void _ZN8S7856C10D1Ev();
Name_Map name_map_S7856C10[] = {
  NSPAIR(_ZN8S7856C10C1Ev),
  NSPAIR(_ZN8S7856C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
static Base_Class bases_S7856C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S77C13_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7856C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C9_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7856C10[];
static  VTBL_ENTRY vtc_S7856C10[] = {
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern VTBL_ENTRY _ZTV8S7856C10[];
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C10[] = {
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTT_ENTRY vtt_S7856C10[] = {
  {&(_ZTV8S7856C10[6]),  6,6},
  {&(_ZTV8S7856C10[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C10[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
Class_Descriptor cd_S7856C10 = {  "S7856C10", // class name
  bases_S7856C10, 6,
  &(vtc_S7856C10[0]), // expected_vtbl_contents
  &(vtt_S7856C10[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S7856C10),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7856C10),6, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7856C10),3, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7856C13  : S7856C9_nt , virtual S77C13_nt , virtual S7856C12 , S7856C11 , virtual S7856C10 {
  virtual  ~S7856C13(); // _ZN8S7856C13D2Ev
  S7856C13(); // tgen
};
//SIG(-1 S7856C13) C1{ BC2{ m} VBC3{ m} VBC4{ m} BC5{ VBC3 BC2 VBC4} VBC6{ BC3 VBC5 VBC2} vd}


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

static void Test_S7856C13()
{
  extern Class_Descriptor cd_S7856C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S7856C13, buf);
    S7856C13 *dp, &lv = *(dp=new (buf) S7856C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S7856C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7856C13)");
    /*is_ambiguous_... S7856C13::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*), ABISELECT(8,4), "S7856C13");
    /*is_ambiguous_... S7856C13::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*), 0, "S7856C13");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*), 0, "S7856C13");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*), 0, "S7856C13");
    check_base_class_offset(lv, (S7856C12*), 0, "S7856C13");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*), 0, "S7856C13");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*), 0, "S7856C13");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*), 0, "S7856C13");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C11*), 0, "S7856C13");
    /*is_ambiguous_... S7856C10::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*), ABISELECT(16,8), "S7856C13");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*), ABISELECT(16,8), "S7856C13");
    check_base_class_offset(lv, (S7856C11*)(S7856C10*), ABISELECT(16,8), "S7856C13");
    /*is_ambiguous_... S7856C10::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*), ABISELECT(24,12), "S7856C13");
    check_base_class_offset(lv, (S7856C10*), ABISELECT(16,8), "S7856C13");
    test_class_info(&lv, &cd_S7856C13);
    dp->~S7856C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7856C13(Test_S7856C13, "S7856C13", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S7856C13C1Ev();
extern void _ZN8S7856C13D2Ev();
Name_Map name_map_S7856C13[] = {
  NSPAIR(_ZN8S7856C13C1Ev),
  NSPAIR(_ZN8S7856C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
static Base_Class bases_S7856C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C9_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7856C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S77C13_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7856C10,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7856C13[];
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY vtc_S7856C13[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
  ABISELECT(8,4),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
extern VTBL_ENTRY _ZTV8S7856C13[];
static  VTBL_ENTRY _tg__ZTV8S7856C11__A__8S7856C13[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C13[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__A1__8S7856C13[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTT_ENTRY vtt_S7856C13[] = {
  {&(_ZTV8S7856C13[7]),  7,15},
  {&(_tg__ZTV8S7856C11__A__8S7856C13[4]),  4,4},
  {&(_ZTV8S7856C13[15]),  15,15},
  {&(_ZTV8S7856C13[15]),  15,15},
  {&(_tg__ZTV8S7856C10__8S7856C13[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C13[6]),  6,6},
  {&(_tg__ZTV8S7856C11__A1__8S7856C13[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
Class_Descriptor cd_S7856C13 = {  "S7856C13", // class name
  bases_S7856C13, 10,
  &(vtc_S7856C13[0]), // expected_vtbl_contents
  &(vtt_S7856C13[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S7856C13),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S7856C13),15, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7856C13),7, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7856C7  : virtual S77C13_nt , virtual S7856C9_nt , virtual S7856C10 , S7856C12 , S7856C13 {
  virtual  ~S7856C7(); // _ZN7S7856C7D2Ev
  S7856C7(); // tgen
};
//SIG(-1 S7856C7) C1{ VBC2{ m} VBC3{ m} VBC4{ BC2 VBC5{ VBC2 BC3 VBC6{ m}} VBC3} BC6 BC7{ BC3 VBC2 VBC6 BC5 VBC4 vd} vd}


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

static void Test_S7856C7()
{
  extern Class_Descriptor cd_S7856C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S7856C7, buf);
    S7856C7 *dp, &lv = *(dp=new (buf) S7856C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S7856C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7856C7)");
    /*is_ambiguous_... S7856C7::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*), 0, "S7856C7");
    /*is_ambiguous_... S7856C7::S7856C11 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*), 0, "S7856C7");
    /*is_ambiguous_... S7856C13::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*), 0, "S7856C7");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*), 0, "S7856C7");
    /*is_ambiguous_... S7856C7::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*), ABISELECT(9,5), "S7856C7");
    /*is_ambiguous_... S7856C10::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*), ABISELECT(9,5), "S7856C7");
    /*is_ambiguous_... S7856C10::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*), ABISELECT(16,8), "S7856C7");
    /*is_ambiguous_... S7856C7::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*), ABISELECT(16,8), "S7856C7");
    /*is_ambiguous_... S7856C7::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*), ABISELECT(24,12), "S7856C7");
    check_base_class_offset(lv, (S7856C12*)(S7856C13*), ABISELECT(24,12), "S7856C7");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*), ABISELECT(24,12), "S7856C7");
    check_base_class_offset(lv, (S7856C11*)(S7856C10*), ABISELECT(16,8), "S7856C7");
    check_base_class_offset(lv, (S7856C10*), ABISELECT(16,8), "S7856C7");
    check_base_class_offset(lv, (S7856C10*)(S7856C13*), ABISELECT(16,8), "S7856C7");
    /*is_ambiguous_... S7856C7::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), 0, "S7856C7");
    /*is_ambiguous_... S7856C13::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*), ABISELECT(8,4), "S7856C7");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*), 0, "S7856C7");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*), 0, "S7856C7");
    check_base_class_offset(lv, (S7856C13*), 0, "S7856C7");
    test_class_info(&lv, &cd_S7856C7);
    dp->~S7856C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7856C7(Test_S7856C7, "S7856C7", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN7S7856C7C1Ev();
extern void _ZN7S7856C7D2Ev();
Name_Map name_map_S7856C7[] = {
  NSPAIR(_ZN7S7856C7C1Ev),
  NSPAIR(_ZN7S7856C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
static Base_Class bases_S7856C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C9_nt,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S77C13_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C11,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C10,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C9_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7856C7[];
extern void _ZN7S7856C7D1Ev();
extern void _ZN7S7856C7D0Ev();
static  VTBL_ENTRY vtc_S7856C7[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
  (VTBL_ENTRY)&_ZN7S7856C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C7D0Ev,
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
};
extern VTBL_ENTRY _ZTV7S7856C7[];
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C13__7S7856C7[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C13__A1__7S7856C7[] = {
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C13__7S7856C7[] = {
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C7[] = {
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__7S7856C7[] = {
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTT_ENTRY vtt_S7856C7[] = {
  {&(_ZTV7S7856C7[7]),  7,15},
  {&(_tg__ZTV8S7856C13__7S7856C7[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C13__A1__7S7856C7[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C13__7S7856C7[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C13__7S7856C7[6]),  6,6},
  {&(_ZTV7S7856C7[15]),  15,15},
  {&(_ZTV7S7856C7[15]),  15,15},
  {&(_tg__ZTV8S7856C10__7S7856C7[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C7[6]),  6,6},
  {&(_tg__ZTV8S7856C11__7S7856C7[4]),  4,4},
};
extern VTBL_ENTRY _ZTI7S7856C7[];
extern  VTBL_ENTRY _ZTV7S7856C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C7[];
Class_Descriptor cd_S7856C7 = {  "S7856C7", // class name
  bases_S7856C7, 12,
  &(vtc_S7856C7[0]), // expected_vtbl_contents
  &(vtt_S7856C7[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI7S7856C7),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S7856C7),15, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7856C7),10, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7856C14  : S7856C12 , S7856C9_nt , S7856C11 {
  int s7856c14f0;
  ~S7856C14(); // tgen
  S7856C14(); // tgen
};
//SIG(-1 S7856C14) C1{ BC2{ m} BC3{ m} BC4{ VBC5{ m} BC3 VBC2} Fi}


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

static void Test_S7856C14()
{
  extern Class_Descriptor cd_S7856C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S7856C14, buf);
    S7856C14 *dp, &lv = *(dp=new (buf) S7856C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S7856C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7856C14)");
    /*is_ambiguous_... S7856C14::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), 0, "S7856C14");
    /*is_ambiguous_... S7856C14::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*), ABISELECT(8,4), "S7856C14");
    check_base_class_offset(lv, (S77C13_nt*)(S7856C11*), 0, "S7856C14");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*), 0, "S7856C14");
    check_base_class_offset(lv, (S7856C12*)(S7856C11*), ABISELECT(12,8), "S7856C14");
    check_base_class_offset(lv, (S7856C11*), 0, "S7856C14");
    check_field_offset(lv, s7856c14f0, ABISELECT(8,4), "S7856C14.s7856c14f0");
    test_class_info(&lv, &cd_S7856C14);
    dp->~S7856C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7856C14(Test_S7856C14, "S7856C14", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S7856C14C1Ev();
extern void _ZN8S7856C14D1Ev();
Name_Map name_map_S7856C14[] = {
  NSPAIR(_ZN8S7856C14C1Ev),
  NSPAIR(_ZN8S7856C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
static Base_Class bases_S7856C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C9_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7856C14[];
static  VTBL_ENTRY vtc_S7856C14[] = {
  ABISELECT(12,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
extern VTBL_ENTRY _ZTV8S7856C14[];
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C14[] = {
  ABISELECT(12,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTT_ENTRY vtt_S7856C14[] = {
  {&(_ZTV8S7856C14[4]),  4,4},
  {&(_tg__ZTV8S7856C11__8S7856C14[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
Class_Descriptor cd_S7856C14 = {  "S7856C14", // class name
  bases_S7856C14, 6,
  &(vtc_S7856C14[0]), // expected_vtbl_contents
  &(vtt_S7856C14[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S7856C14),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7856C14),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7856C14),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7856C6  : virtual S7856C7 , virtual S7856C14 , virtual S7856C13 {
  int s7856c6f0[2];
  virtual  ~S7856C6(); // _ZN7S7856C6D2Ev
  S7856C6(); // tgen
};
//SIG(-1 S7856C6) C1{ VBC2{ VBC3{ m} VBC4{ m} VBC5{ BC3 VBC6{ VBC3 BC4 VBC7{ m}} VBC4} BC7 BC8{ BC4 VBC3 VBC7 BC6 VBC5 vd} vd} VBC9{ BC7 BC4 BC6 Fi} VBC8 vd Fi[2]}


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

static void Test_S7856C6()
{
  extern Class_Descriptor cd_S7856C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,10)];
    init_test(&cd_S7856C6, buf);
    S7856C6 *dp, &lv = *(dp=new (buf) S7856C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S7856C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7856C6)");
    /*is_ambiguous_... S7856C7::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C7*), ABISELECT(25,17), "S7856C6");
    /*is_ambiguous_... S7856C6::S7856C11 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*), ABISELECT(25,17), "S7856C6");
    /*is_ambiguous_... S7856C13::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*)(S7856C7*), ABISELECT(25,17), "S7856C6");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(25,17), "S7856C6");
    check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*), ABISELECT(25,17), "S7856C6");
    /*is_ambiguous_... S7856C6::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*), ABISELECT(25,17), "S7856C6");
    /*is_ambiguous_... S7856C6::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*), ABISELECT(25,17), "S7856C6");
    /*is_ambiguous_... S7856C7::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C7*), ABISELECT(25,17), "S7856C6");
    /*is_ambiguous_... S7856C10::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*), ABISELECT(25,17), "S7856C6");
    /*is_ambiguous_... S7856C10::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*), 0, "S7856C6");
    /*is_ambiguous_... S7856C6::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*), 0, "S7856C6");
    /*is_ambiguous_... S7856C6::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*), 0, "S7856C6");
    check_base_class_offset(lv, (S7856C12*)(S7856C13*)(S7856C7*), 0, "S7856C6");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*)(S7856C7*), 0, "S7856C6");
    check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*), 0, "S7856C6");
    /*is_ambiguous_... S7856C6::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*), 0, "S7856C6");
    /*is_ambiguous_... S7856C6::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*), 0, "S7856C6");
    check_base_class_offset(lv, (S7856C11*)(S7856C10*), 0, "S7856C6");
    check_base_class_offset(lv, (S7856C10*)(S7856C7*), 0, "S7856C6");
    check_base_class_offset(lv, (S7856C10*)(S7856C13*)(S7856C7*), 0, "S7856C6");
    /*is_ambiguous_... S7856C6::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*), 0, "S7856C6");
    /*is_ambiguous_... S7856C7::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C7*), ABISELECT(16,12), "S7856C6");
    /*is_ambiguous_... S7856C13::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*)(S7856C7*), ABISELECT(24,16), "S7856C6");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(16,12), "S7856C6");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(16,12), "S7856C6");
    check_base_class_offset(lv, (S7856C13*)(S7856C7*), ABISELECT(16,12), "S7856C6");
    check_base_class_offset(lv, (S7856C7*), ABISELECT(16,12), "S7856C6");
    /*is_ambiguous_... S7856C14::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*), ABISELECT(32,20), "S7856C6");
    /*is_ambiguous_... S7856C14::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*), ABISELECT(40,24), "S7856C6");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*), ABISELECT(32,20), "S7856C6");
    check_base_class_offset(lv, (S7856C11*)(S7856C14*), ABISELECT(32,20), "S7856C6");
    check_base_class_offset(lv, (S7856C14*), ABISELECT(32,20), "S7856C6");
    /*is_ambiguous_... S7856C6::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*), ABISELECT(56,32), "S7856C6");
    /*is_ambiguous_... S7856C6::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*), ABISELECT(48,28), "S7856C6");
    /*is_ambiguous_... S7856C6::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*), ABISELECT(48,28), "S7856C6");
    /*is_ambiguous_... S7856C6::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C13*), ABISELECT(48,28), "S7856C6");
    check_field_offset(lv, s7856c6f0, ABISELECT(8,4), "S7856C6.s7856c6f0");
    test_class_info(&lv, &cd_S7856C6);
    dp->~S7856C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7856C6(Test_S7856C6, "S7856C6", ABISELECT(64,36));

#else // __cplusplus

extern void _ZN7S7856C6C1Ev();
extern void _ZN7S7856C6D2Ev();
Name_Map name_map_S7856C6[] = {
  NSPAIR(_ZN7S7856C6C1Ev),
  NSPAIR(_ZN7S7856C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C7;
extern VTBL_ENTRY _ZTI7S7856C7[];
extern  VTBL_ENTRY _ZTV7S7856C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C7[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
static Base_Class bases_S7856C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S77C13_nt,    ABISELECT(25,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(25,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C7,    ABISELECT(16,12), //bcp->offset
    12, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(32,20), //bcp->offset
    22, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C9_nt,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(48,28), //bcp->offset
    26, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7856C6[];
extern void _ZN7S7856C6D1Ev();
extern void _ZN7S7856C6D0Ev();
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn16_N7S7856C6D1Ev,_ZThn12_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn16_N7S7856C6D0Ev,_ZThn12_N7S7856C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn48_N7S7856C6D1Ev,_ZThn28_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn48_N7S7856C6D0Ev,_ZThn28_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7856C6[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&_ZN7S7856C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C6D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
  ABISELECT(-32,-20),
  ABISELECT(-7,-3),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
extern VTBL_ENTRY _ZTV7S7856C6[];
extern void _ZN7S7856C7D1Ev();
extern void _ZN7S7856C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C6[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
  (VTBL_ENTRY)&_ZN7S7856C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C7D0Ev,
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C137S7856C7__7S7856C6[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C137S7856C7__A1__7S7856C6[] = {
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C137S7856C7__7S7856C6[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C7__7S7856C6[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C6[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__7S7856C6[] = {
  0,
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C6[] = {
  ABISELECT(-32,-20),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C14__A2__7S7856C6[] = {
  ABISELECT(-32,-20),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C6[] = {
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C13__A3__7S7856C6[] = {
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C13__A1__7S7856C6[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTT_ENTRY vtt_S7856C6[] = {
  {&(_ZTV7S7856C6[10]),  10,36},
  {&(_ZTV7S7856C6[20]),  20,36},
  {&(_ZTV7S7856C6[10]),  10,36},
  {&(_ZTV7S7856C6[10]),  10,36},
  {&(_ZTV7S7856C6[26]),  26,36},
  {&(_ZTV7S7856C6[34]),  34,36},
  {&(_tg__ZTV7S7856C7__7S7856C6[7]),  7,9},
  {&(_tg__ZTV8S7856C137S7856C7__7S7856C6[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C137S7856C7__A1__7S7856C6[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C7__7S7856C6[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C7__7S7856C6[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C7__7S7856C6[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C7__7S7856C6[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C6[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C6[6]),  6,6},
  {&(_tg__ZTV8S7856C11__7S7856C6[4]),  4,4},
  {&(_tg__ZTV8S7856C14__7S7856C6[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C14__A2__7S7856C6[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C6[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C13__A3__7S7856C6[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C13__A1__7S7856C6[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C13__A1__7S7856C6[6]),  6,6},
};
extern VTBL_ENTRY _ZTI7S7856C6[];
extern  VTBL_ENTRY _ZTV7S7856C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C6[];
static VTBL_ENTRY alt_thunk_names13[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C6D0Ev,_ZThn28_N7S7856C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7856C6D0Ev,_ZThn12_N7S7856C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C6D1Ev,_ZThn28_N7S7856C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7856C6D1Ev,_ZThn12_N7S7856C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7856C6 = {  "S7856C6", // class name
  bases_S7856C6, 22,
  &(vtc_S7856C6[0]), // expected_vtbl_contents
  &(vtt_S7856C6[0]), // expected_vtt_contents
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI7S7856C6),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7856C6),36, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7856C6),22, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names13,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7856C15  {
  void  mf7856c15(); // _ZN8S7856C159mf7856c15Ev
};
//SIG(-1 S7856C15) C1{ m}


void  S7856C15 ::mf7856c15(){}

static void Test_S7856C15()
{
  {
    init_simple_test("S7856C15");
    S7856C15 lv;
    check2(sizeof(lv), 1, "sizeof(S7856C15)");
    check2(__alignof__(lv), 1, "__alignof__(S7856C15)");
  }
}
static Arrange_To_Call_Me vS7856C15(Test_S7856C15, "S7856C15", 1);

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S7856C17_nt  : virtual S7856C9_nt {
  ~S7856C17_nt(); // tgen
  S7856C17_nt(); // tgen
};
//SIG(-1 S7856C17_nt) C1{ VBC2{ m}}


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

//skip512 S7856C17_nt

#else // __cplusplus

extern void _ZN11S7856C17_ntC1Ev();
extern void _ZN11S7856C17_ntD1Ev();
Name_Map name_map_S7856C17_nt[] = {
  NSPAIR(_ZN11S7856C17_ntC1Ev),
  NSPAIR(_ZN11S7856C17_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
static Base_Class bases_S7856C17_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI11S7856C17_nt[];
static  VTBL_ENTRY vtc_S7856C17_nt[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI11S7856C17_nt[0]),
};
extern VTBL_ENTRY _ZTV11S7856C17_nt[];
static  VTT_ENTRY vtt_S7856C17_nt[] = {
  {&(_ZTV11S7856C17_nt[3]),  3,3},
};
extern VTBL_ENTRY _ZTI11S7856C17_nt[];
VTBL_ENTRY *P__ZTI11S7856C17_nt = _ZTI11S7856C17_nt; 
extern  VTBL_ENTRY _ZTV11S7856C17_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S7856C17_nt[];
Class_Descriptor cd_S7856C17_nt = {  "S7856C17_nt", // class name
  bases_S7856C17_nt, 1,
  &(vtc_S7856C17_nt[0]), // expected_vtbl_contents
  &(vtt_S7856C17_nt[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI11S7856C17_nt),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV11S7856C17_nt),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT11S7856C17_nt),1, //virtual table table var
  0, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7856C16  : virtual S7856C11 , virtual S7856C17_nt , virtual S7856C14 , S7856C12 , virtual S7856C7 {
  int s7856c16f0;
  virtual  ~S7856C16(); // _ZN8S7856C16D2Ev
  S7856C16(); // tgen
};
//SIG(-1 S7856C16) C1{ VBC2{ VBC3{ m} BC4{ m} VBC5{ m}} VBC6{ VBC4} VBC7{ BC5 BC4 BC2 Fi} BC5 VBC8{ VBC3 VBC4 VBC9{ BC3 VBC2 VBC4} BC5 BC10{ BC4 VBC3 VBC5 BC2 VBC9 vd} vd} vd Fi}


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

static void Test_S7856C16()
{
  extern Class_Descriptor cd_S7856C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S7856C16, buf);
    S7856C16 *dp, &lv = *(dp=new (buf) S7856C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S7856C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7856C16)");
    /*is_ambiguous_... S7856C16::S7856C11 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*), 0, "S7856C16");
    check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*), 0, "S7856C16");
    /*is_ambiguous_... S7856C7::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C7*), 0, "S7856C16");
    /*is_ambiguous_... S7856C13::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*)(S7856C7*), 0, "S7856C16");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*)(S7856C7*), 0, "S7856C16");
    /*is_ambiguous_... S7856C16::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*), ABISELECT(48,28), "S7856C16");
    /*is_ambiguous_... S7856C16::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*), ABISELECT(12,8), "S7856C16");
    check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*), ABISELECT(12,8), "S7856C16");
    check_base_class_offset(lv, (S7856C12*)(S7856C13*)(S7856C7*), ABISELECT(12,8), "S7856C16");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(12,8), "S7856C16");
    /*is_ambiguous_... S7856C16::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C11*), ABISELECT(48,28), "S7856C16");
    check_base_class_offset(lv, (S7856C11*)(S7856C10*), ABISELECT(48,28), "S7856C16");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C17_nt*), 0, "S7856C16");
    /*is_ambiguous_... S7856C7::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C7*), 0, "S7856C16");
    /*is_ambiguous_... S7856C10::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*), 0, "S7856C16");
    check_base_class_offset(lv, (S7856C17_nt*), 0, "S7856C16");
    /*is_ambiguous_... S7856C14::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*), ABISELECT(16,12), "S7856C16");
    /*is_ambiguous_... S7856C14::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*), ABISELECT(24,16), "S7856C16");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*), ABISELECT(16,12), "S7856C16");
    check_base_class_offset(lv, (S7856C11*)(S7856C14*), ABISELECT(16,12), "S7856C16");
    check_base_class_offset(lv, (S7856C14*), ABISELECT(16,12), "S7856C16");
    /*is_ambiguous_... S7856C16::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), 0, "S7856C16");
    /*is_ambiguous_... S7856C10::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*), ABISELECT(48,28), "S7856C16");
    check_base_class_offset(lv, (S7856C10*)(S7856C7*), ABISELECT(48,28), "S7856C16");
    check_base_class_offset(lv, (S7856C10*)(S7856C13*)(S7856C7*), ABISELECT(48,28), "S7856C16");
    /*is_ambiguous_... S7856C7::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C7*), ABISELECT(32,20), "S7856C16");
    /*is_ambiguous_... S7856C13::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*)(S7856C7*), ABISELECT(40,24), "S7856C16");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(32,20), "S7856C16");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(32,20), "S7856C16");
    check_base_class_offset(lv, (S7856C13*)(S7856C7*), ABISELECT(32,20), "S7856C16");
    check_base_class_offset(lv, (S7856C7*), ABISELECT(32,20), "S7856C16");
    check_field_offset(lv, s7856c16f0, ABISELECT(8,4), "S7856C16.s7856c16f0");
    test_class_info(&lv, &cd_S7856C16);
    dp->~S7856C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7856C16(Test_S7856C16, "S7856C16", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN8S7856C16C1Ev();
extern void _ZN8S7856C16D2Ev();
Name_Map name_map_S7856C16[] = {
  NSPAIR(_ZN8S7856C16C1Ev),
  NSPAIR(_ZN8S7856C16D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C17_nt;
extern VTBL_ENTRY _ZTI11S7856C17_nt[];
extern  VTBL_ENTRY _ZTV11S7856C17_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S7856C17_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C7;
extern VTBL_ENTRY _ZTI7S7856C7[];
extern  VTBL_ENTRY _ZTV7S7856C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C7[];
static Base_Class bases_S7856C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7856C11,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(16,12), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S77C13_nt,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(48,28), //bcp->offset
    26, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7856C7,    ABISELECT(32,20), //bcp->offset
    16, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7856C16[];
extern void _ZN8S7856C16D1Ev();
extern void _ZN8S7856C16D0Ev();
extern void ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev)();
extern void ABISELECT(_ZThn32_N8S7856C16D1Ev,_ZThn20_N8S7856C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev)();
extern void ABISELECT(_ZThn32_N8S7856C16D0Ev,_ZThn20_N8S7856C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7856C16[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  ABISELECT(12,8),
  0,
  ABISELECT(48,28),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&_ZN8S7856C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C16D0Ev,
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev),
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
extern VTBL_ENTRY _ZTV8S7856C16[];
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C16[] = {
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt__8S7856C16[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI11S7856C17_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C16[] = {
  -4,
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C14__A1__8S7856C16[] = {
  -4,
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
extern void _ZN7S7856C7D1Ev();
extern void _ZN7S7856C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C16[] = {
  ABISELECT(-32,-20),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
  (VTBL_ENTRY)&_ZN7S7856C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C7D0Ev,
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C137S7856C7__8S7856C16[] = {
  ABISELECT(-32,-20),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C137S7856C7__A2__8S7856C16[] = {
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C137S7856C7__8S7856C16[] = {
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C7__8S7856C16[] = {
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C16[] = {
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTT_ENTRY vtt_S7856C16[] = {
  {&(_ZTV8S7856C16[10]),  10,32},
  {&(_ZTV8S7856C16[32]),  32,32},
  {&(_ZTV8S7856C16[10]),  10,32},
  {&(_ZTV8S7856C16[16]),  16,32},
  {&(_ZTV8S7856C16[24]),  24,32},
  {&(_ZTV8S7856C16[32]),  32,32},
  {&(_tg__ZTV8S7856C11__8S7856C16[4]),  4,4},
  {&(_tg__ZTV11S7856C17_nt__8S7856C16[3]),  3,3},
  {&(_tg__ZTV8S7856C14__8S7856C16[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C14__A1__8S7856C16[4]),  4,4},
  {&(_tg__ZTV7S7856C7__8S7856C16[7]),  7,9},
  {&(_tg__ZTV8S7856C137S7856C7__8S7856C16[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C137S7856C7__A2__8S7856C16[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C7__8S7856C16[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C7__8S7856C16[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C7__8S7856C16[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C7__8S7856C16[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C16[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C16[6]),  6,6},
};
extern VTBL_ENTRY _ZTI8S7856C16[];
extern  VTBL_ENTRY _ZTV8S7856C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C16[];
static VTBL_ENTRY alt_thunk_names14[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7856C16D0Ev,_ZThn20_N8S7856C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7856C16D1Ev,_ZThn20_N8S7856C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7856C16 = {  "S7856C16", // class name
  bases_S7856C16, 20,
  &(vtc_S7856C16[0]), // expected_vtbl_contents
  &(vtt_S7856C16[0]), // expected_vtt_contents
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI8S7856C16),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S7856C16),32, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7856C16),19, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names14,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7856C18  : virtual S7856C13 , S7856C14 , S7856C10 , S7856C12 {
  virtual  ~S7856C18(); // _ZN8S7856C18D2Ev
  S7856C18(); // tgen
};
//SIG(-1 S7856C18) C1{ VBC2{ BC3{ m} VBC4{ m} VBC5{ m} BC6{ VBC4 BC3 VBC5} VBC7{ BC4 VBC6 VBC3} vd} BC8{ BC5 BC3 BC6 Fi} BC7 BC5 vd}


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

static void Test_S7856C18()
{
  extern Class_Descriptor cd_S7856C18;
  void *lvp;
  {
    ABISELECT(double,int) buf[8];
    init_test(&cd_S7856C18, buf);
    S7856C18 *dp, &lv = *(dp=new (buf) S7856C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,28), "sizeof(S7856C18)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7856C18)");
    /*is_ambiguous_... S7856C13::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*), ABISELECT(32,16), "S7856C18");
    /*is_ambiguous_... S7856C13::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*), 0, "S7856C18");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*), 0, "S7856C18");
    /*is_ambiguous_... S7856C18::S7856C11 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*), 0, "S7856C18");
    check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*), 0, "S7856C18");
    check_base_class_offset(lv, (S7856C12*)(S7856C13*), ABISELECT(33,17), "S7856C18");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*), ABISELECT(33,17), "S7856C18");
    /*is_ambiguous_... S7856C18::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*), ABISELECT(33,17), "S7856C18");
    check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*), ABISELECT(33,17), "S7856C18");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*), ABISELECT(24,12), "S7856C18");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*), ABISELECT(24,12), "S7856C18");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*), ABISELECT(40,20), "S7856C18");
    /*is_ambiguous_... S7856C18::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*), ABISELECT(40,20), "S7856C18");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*), ABISELECT(40,20), "S7856C18");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*), ABISELECT(40,20), "S7856C18");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*), ABISELECT(48,24), "S7856C18");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*), ABISELECT(48,24), "S7856C18");
    check_base_class_offset(lv, (S7856C10*)(S7856C13*), ABISELECT(40,20), "S7856C18");
    check_base_class_offset(lv, (S7856C13*), ABISELECT(24,12), "S7856C18");
    /*is_ambiguous_... S7856C14::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*), 0, "S7856C18");
    /*is_ambiguous_... S7856C14::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*), ABISELECT(8,4), "S7856C18");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*), 0, "S7856C18");
    check_base_class_offset(lv, (S7856C11*)(S7856C14*), 0, "S7856C18");
    check_base_class_offset(lv, (S7856C14*), 0, "S7856C18");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*), ABISELECT(16,8), "S7856C18");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C10*), ABISELECT(16,8), "S7856C18");
    /*is_ambiguous_... S7856C18::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), ABISELECT(24,12), "S7856C18");
    test_class_info(&lv, &cd_S7856C18);
    dp->~S7856C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7856C18(Test_S7856C18, "S7856C18", ABISELECT(56,28));

#else // __cplusplus

extern void _ZN8S7856C18C1Ev();
extern void _ZN8S7856C18D2Ev();
Name_Map name_map_S7856C18[] = {
  NSPAIR(_ZN8S7856C18C1Ev),
  NSPAIR(_ZN8S7856C18D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
static Base_Class bases_S7856C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C9_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(33,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7856C10,    ABISELECT(40,20), //bcp->offset
    26, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S7856C13,    ABISELECT(24,12), //bcp->offset
    16, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7856C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7856C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S77C13_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(16,8), //bcp->offset
    10, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7856C18[];
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZThn24_N8S7856C18D1Ev,_ZThn12_N8S7856C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
extern void ABISELECT(_ZThn24_N8S7856C18D0Ev,_ZThn12_N8S7856C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7856C18[] = {
  ABISELECT(48,24),
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(24,12),
  ABISELECT(33,17),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
  ABISELECT(32,16),
  ABISELECT(24,12),
  ABISELECT(17,9),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  ABISELECT(-24,-12),
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(9,5),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
  ABISELECT(8,4),
  0,
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern VTBL_ENTRY _ZTV8S7856C18[];
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C18[] = {
  ABISELECT(33,17),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C14__A2__8S7856C18[] = {
  ABISELECT(33,17),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C18[] = {
  ABISELECT(32,16),
  ABISELECT(24,12),
  ABISELECT(17,9),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C10__A__8S7856C18[] = {
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C18[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(9,5),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C13__8S7856C18[] = {
  ABISELECT(9,5),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C13__8S7856C18[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C18[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__A1__8S7856C18[] = {
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTT_ENTRY vtt_S7856C18[] = {
  {&(_ZTV8S7856C18[8]),  8,32},
  {&(_tg__ZTV8S7856C14__8S7856C18[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C14__A2__8S7856C18[4]),  4,4},
  {&(_tg__ZTV8S7856C10__A__8S7856C18[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C10__A__8S7856C18[4]),  4,4},
  {&(_ZTV8S7856C18[24]),  24,32},
  {&(_ZTV8S7856C18[32]),  32,32},
  {&(_ZTV8S7856C18[32]),  32,32},
  {&(_ZTV8S7856C18[16]),  16,32},
  {&(_tg__ZTV8S7856C13__8S7856C18[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C13__8S7856C18[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C13__8S7856C18[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C13__8S7856C18[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C18[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C18[6]),  6,6},
  {&(_tg__ZTV8S7856C11__A1__8S7856C18[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
static VTBL_ENTRY alt_thunk_names15[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7856C18D0Ev,_ZThn12_N8S7856C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7856C18D1Ev,_ZThn12_N8S7856C18D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7856C18 = {  "S7856C18", // class name
  bases_S7856C18, 19,
  &(vtc_S7856C18[0]), // expected_vtbl_contents
  &(vtt_S7856C18[0]), // expected_vtt_contents
  ABISELECT(56,28), // object size
  NSPAIRA(_ZTI8S7856C18),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S7856C18),32, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7856C18),16, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names15,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7856C5  : virtual S7856C6 , virtual S7856C15 , virtual S7856C16 , S7856C18 {
  virtual  ~S7856C5(); // _ZN7S7856C5D2Ev
  S7856C5(); // tgen
};
//SIG(-1 S7856C5) C1{ VBC2{ VBC3{ VBC4{ m} VBC5{ m} VBC6{ BC4 VBC7{ VBC4 BC5 VBC8{ m}} VBC5} BC8 BC9{ BC5 VBC4 VBC8 BC7 VBC6 vd} vd} VBC10{ BC8 BC5 BC7 Fi} VBC9 vd Fi[2]} VBC11{ m} VBC12{ VBC7 VBC13{ VBC5} VBC10 BC8 VBC3 vd Fi} BC14{ VBC9 BC10 BC6 BC8 vd} vd}


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

static void Test_S7856C5()
{
  extern Class_Descriptor cd_S7856C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,16)];
    init_test(&cd_S7856C5, buf);
    S7856C5 *dp, &lv = *(dp=new (buf) S7856C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,60), "sizeof(S7856C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7856C5)");
    /*is_ambiguous_... S7856C7::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C7*), 0, "S7856C5");
    /*is_ambiguous_... S7856C5::S7856C11 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*), 0, "S7856C5");
    /*is_ambiguous_... S7856C13::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*)(S7856C7*), 0, "S7856C5");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*)(S7856C7*), 0, "S7856C5");
    /*is_ambiguous_... S7856C5::S7856C14 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*), 0, "S7856C5");
    /*is_ambiguous_... S7856C5::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*), 0, "S7856C5");
    /*is_ambiguous_... S7856C5::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*), 0, "S7856C5");
    check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*), 0, "S7856C5");
    /*is_ambiguous_... S7856C7::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C7*), ABISELECT(57,33), "S7856C5");
    /*is_ambiguous_... S7856C5::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*), ABISELECT(57,33), "S7856C5");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C17_nt*), ABISELECT(57,33), "S7856C5");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*), ABISELECT(57,33), "S7856C5");
    /*is_ambiguous_... S7856C5::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*), ABISELECT(32,16), "S7856C5");
    /*is_ambiguous_... S7856C5::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*), ABISELECT(32,16), "S7856C5");
    /*is_ambiguous_... S7856C5::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*), ABISELECT(57,33), "S7856C5");
    check_base_class_offset(lv, (S7856C12*)(S7856C13*)(S7856C7*), ABISELECT(57,33), "S7856C5");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(57,33), "S7856C5");
    /*is_ambiguous_... S7856C5::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*), ABISELECT(57,33), "S7856C5");
    /*is_ambiguous_... S7856C5::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*), ABISELECT(57,33), "S7856C5");
    /*is_ambiguous_... S7856C5::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*), ABISELECT(57,33), "S7856C5");
    check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*), ABISELECT(57,33), "S7856C5");
    /*is_ambiguous_... S7856C5::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*), ABISELECT(32,16), "S7856C5");
    /*is_ambiguous_... S7856C16::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C16*), ABISELECT(32,16), "S7856C5");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*), ABISELECT(32,16), "S7856C5");
    check_base_class_offset(lv, (S7856C10*)(S7856C7*), ABISELECT(32,16), "S7856C5");
    check_base_class_offset(lv, (S7856C10*)(S7856C13*)(S7856C7*), ABISELECT(32,16), "S7856C5");
    /*is_ambiguous_... S7856C5::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*), ABISELECT(32,16), "S7856C5");
    /*is_ambiguous_... S7856C7::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C7*), ABISELECT(48,28), "S7856C5");
    /*is_ambiguous_... S7856C13::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*)(S7856C7*), ABISELECT(56,32), "S7856C5");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(48,28), "S7856C5");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(48,28), "S7856C5");
    check_base_class_offset(lv, (S7856C13*)(S7856C7*), ABISELECT(48,28), "S7856C5");
    check_base_class_offset(lv, (S7856C7*)(S7856C6*), ABISELECT(48,28), "S7856C5");
    check_base_class_offset(lv, (S7856C7*)(S7856C16*), ABISELECT(48,28), "S7856C5");
    /*is_ambiguous_... S7856C5::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*), ABISELECT(64,36), "S7856C5");
    /*is_ambiguous_... S7856C5::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*), ABISELECT(72,40), "S7856C5");
    /*is_ambiguous_... S7856C5::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*), ABISELECT(64,36), "S7856C5");
    /*is_ambiguous_... S7856C5::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*), ABISELECT(64,36), "S7856C5");
    check_base_class_offset(lv, (S7856C14*)(S7856C6*), ABISELECT(64,36), "S7856C5");
    check_base_class_offset(lv, (S7856C14*)(S7856C16*), ABISELECT(64,36), "S7856C5");
    /*is_ambiguous_... S7856C5::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*), ABISELECT(88,48), "S7856C5");
    /*is_ambiguous_... S7856C5::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*), ABISELECT(80,44), "S7856C5");
    /*is_ambiguous_... S7856C5::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*), ABISELECT(80,44), "S7856C5");
    /*is_ambiguous_... S7856C6::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C6*), ABISELECT(80,44), "S7856C5");
    check_base_class_offset(lv, (S7856C13*)(S7856C18*), ABISELECT(80,44), "S7856C5");
    check_base_class_offset(lv, (S7856C6*), ABISELECT(32,16), "S7856C5");
    check_base_class_offset(lv, (S7856C15*), 0, "S7856C5");
    check_base_class_offset(lv, (S7856C17_nt*)(S7856C16*), ABISELECT(96,52), "S7856C5");
    /*is_ambiguous_... S7856C16::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C16*), ABISELECT(96,52), "S7856C5");
    check_base_class_offset(lv, (S7856C16*), ABISELECT(96,52), "S7856C5");
    /*is_ambiguous_... S7856C14::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*), 0, "S7856C5");
    /*is_ambiguous_... S7856C14::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*), ABISELECT(8,4), "S7856C5");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*), 0, "S7856C5");
    check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*), 0, "S7856C5");
    check_base_class_offset(lv, (S7856C14*)(S7856C18*), 0, "S7856C5");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*), ABISELECT(16,8), "S7856C5");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*), ABISELECT(16,8), "S7856C5");
    /*is_ambiguous_... S7856C18::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*), ABISELECT(24,12), "S7856C5");
    check_base_class_offset(lv, (S7856C18*), 0, "S7856C5");
    test_class_info(&lv, &cd_S7856C5);
    dp->~S7856C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7856C5(Test_S7856C5, "S7856C5", ABISELECT(112,60));

#else // __cplusplus

extern void _ZN7S7856C5C1Ev();
extern void _ZN7S7856C5D2Ev();
Name_Map name_map_S7856C5[] = {
  NSPAIR(_ZN7S7856C5C1Ev),
  NSPAIR(_ZN7S7856C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C7;
extern VTBL_ENTRY _ZTI7S7856C7[];
extern  VTBL_ENTRY _ZTV7S7856C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C7[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C6;
extern VTBL_ENTRY _ZTI7S7856C6[];
extern  VTBL_ENTRY _ZTV7S7856C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C6[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C17_nt;
extern VTBL_ENTRY _ZTI11S7856C17_nt[];
extern  VTBL_ENTRY _ZTV11S7856C17_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S7856C17_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C16;
extern VTBL_ENTRY _ZTI8S7856C16[];
extern  VTBL_ENTRY _ZTV8S7856C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C16[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
static Base_Class bases_S7856C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(57,33), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S77C13_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(57,33), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C11,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C10,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C7,    ABISELECT(48,28), //bcp->offset
    35, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(64,36), //bcp->offset
    45, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(80,44), //bcp->offset
    49, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C6,    ABISELECT(32,16), //bcp->offset
    22, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C17_nt,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7856C16,    ABISELECT(96,52), //bcp->offset
    59, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S7856C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7856C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(16,8), //bcp->offset
    16, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7856C5[];
extern void _ZN7S7856C5D1Ev();
extern void _ZN7S7856C5D0Ev();
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn32_N7S7856C5D1Ev,_ZThn16_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn32_N7S7856C5D0Ev,_ZThn16_N7S7856C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn48_N7S7856C5D1Ev,_ZThn28_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn48_N7S7856C5D0Ev,_ZThn28_N7S7856C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn80_N7S7856C5D1Ev,_ZThn44_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn80_N7S7856C5D0Ev,_ZThn44_N7S7856C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn96_N7S7856C5D1Ev,_ZThn52_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn96_N7S7856C5D0Ev,_ZThn52_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7856C5[] = {
  ABISELECT(96,52),
  ABISELECT(96,52),
  0,
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(57,33),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&_ZN7S7856C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C5D0Ev,
  ABISELECT(41,25),
  ABISELECT(16,8),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  ABISELECT(-32,-16),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
  ABISELECT(-48,-28),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  ABISELECT(-80,-44),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-39,-19),
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-39,-19),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
extern VTBL_ENTRY _ZTV7S7856C5[];
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C18__7S7856C5[] = {
  ABISELECT(57,33),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C18__A1__7S7856C5[] = {
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C18__A4__7S7856C5[] = {
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__7S7856C5[] = {
  ABISELECT(41,25),
  ABISELECT(16,8),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C18__A1__7S7856C5[] = {
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZThn80_N8S7856C18D1Ev,_ZThn44_N8S7856C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
extern void ABISELECT(_ZThn80_N8S7856C18D0Ev,_ZThn44_N8S7856C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C18__7S7856C5[] = {
  ABISELECT(-80,-44),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C18__7S7856C5[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C18__7S7856C5[] = {
  ABISELECT(41,25),
  ABISELECT(16,8),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern void _ZN7S7856C6D1Ev();
extern void _ZN7S7856C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C5[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&_ZN7S7856C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C6D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn16_N7S7856C6D1Ev,_ZThn12_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn16_N7S7856C6D0Ev,_ZThn12_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C6__7S7856C5[] = {
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C6__7S7856C5[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn48_N7S7856C6D1Ev,_ZThn28_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn48_N7S7856C6D0Ev,_ZThn28_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C6__7S7856C5[] = {
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
extern void _ZN7S7856C7D1Ev();
extern void _ZN7S7856C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C5[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
  (VTBL_ENTRY)&_ZN7S7856C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C7D0Ev,
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C137S7856C7__7S7856C5[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C137S7856C7__A1__7S7856C5[] = {
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C137S7856C7__7S7856C5[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C7__7S7856C5[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C5[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__7S7856C5[] = {
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C5[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C14__A2__7S7856C5[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C5[] = {
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C13__A3__7S7856C5[] = {
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C13__A1__7S7856C5[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
extern void _ZN8S7856C16D1Ev();
extern void _ZN8S7856C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C5[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-39,-19),
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-39,-19),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&_ZN8S7856C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C16__7S7856C5[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C16__7S7856C5[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C16__7S7856C5[] = {
  ABISELECT(48,24),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt__7S7856C5[] = {
  ABISELECT(-39,-19),
  0,
  (VTBL_ENTRY)&(_ZTI11S7856C17_nt[0]),
};
static  VTT_ENTRY vtt_S7856C5[] = {
  {&(_ZTV7S7856C5[14]),  14,72},
  {&(_tg__ZTV8S7856C18__7S7856C5[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C18__A1__7S7856C5[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C18__A4__7S7856C5[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C18__A1__7S7856C5[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C18__A1__7S7856C5[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C18__7S7856C5[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C18__7S7856C5[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C18__7S7856C5[6]),  6,6},
  {&(_tg__ZTV8S7856C10__A__8S7856C18__7S7856C5[6]),  6,6},
  {&(_ZTV7S7856C5[33]),  33,72},
  {&(_ZTV7S7856C5[43]),  43,72},
  {&(_ZTV7S7856C5[33]),  33,72},
  {&(_ZTV7S7856C5[33]),  33,72},
  {&(_ZTV7S7856C5[49]),  49,72},
  {&(_ZTV7S7856C5[57]),  57,72},
  {&(_ZTV7S7856C5[70]),  70,72},
  {&(_ZTV7S7856C5[70]),  70,72},
  {&(_ZTV7S7856C5[22]),  22,72},
  {&(_tg__ZTV7S7856C6__7S7856C5[10]),  10,12},
  {&(_tg__ZTV7S7856C7__7S7856C6__7S7856C5[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C5[10]),  10,12},
  {&(_tg__ZTV7S7856C6__7S7856C5[10]),  10,12},
  {&(_tg__ZTV8S7856C14__7S7856C6__7S7856C5[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C6__7S7856C5[8]),  8,10},
  {&(_tg__ZTV7S7856C7__7S7856C5[7]),  7,9},
  {&(_tg__ZTV8S7856C137S7856C7__7S7856C5[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C137S7856C7__A1__7S7856C5[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C7__7S7856C5[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C7__7S7856C5[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C7__7S7856C5[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C7__7S7856C5[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C5[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C5[6]),  6,6},
  {&(_tg__ZTV8S7856C11__7S7856C5[4]),  4,4},
  {&(_tg__ZTV8S7856C14__7S7856C5[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C14__A2__7S7856C5[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C5[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C13__A3__7S7856C5[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C13__A1__7S7856C5[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C13__A1__7S7856C5[6]),  6,6},
  {&(_tg__ZTV8S7856C16__7S7856C5[10]),  10,12},
  {&(_tg__ZTV8S7856C10__8S7856C16__7S7856C5[6]),  6,6},
  {&(_tg__ZTV8S7856C16__7S7856C5[10]),  10,12},
  {&(_tg__ZTV8S7856C14__8S7856C16__7S7856C5[4]),  4,4},
  {&(_tg__ZTV7S7856C7__8S7856C16__7S7856C5[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C16__7S7856C5[6]),  6,6},
  {&(_tg__ZTV11S7856C17_nt__7S7856C5[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7856C5[];
extern  VTBL_ENTRY _ZTV7S7856C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C5[];
static VTBL_ENTRY alt_thunk_names16[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C6D0Ev,_ZThn28_N7S7856C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7856C6D0Ev,_ZThn12_N7S7856C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C6D1Ev,_ZThn28_N7S7856C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7856C6D1Ev,_ZThn12_N7S7856C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7856C18D0Ev,_ZThn44_N8S7856C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7856C18D1Ev,_ZThn44_N8S7856C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7856C5D0Ev,_ZThn44_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C5D0Ev,_ZThn28_N7S7856C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7856C5D1Ev,_ZThn44_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C5D1Ev,_ZThn28_N7S7856C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7856C5D0Ev,_ZThn52_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7856C5D0Ev,_ZThn16_N7S7856C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7856C5D1Ev,_ZThn52_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7856C5D1Ev,_ZThn16_N7S7856C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7856C5 = {  "S7856C5", // class name
  bases_S7856C5, 36,
  &(vtc_S7856C5[0]), // expected_vtbl_contents
  &(vtt_S7856C5[0]), // expected_vtt_contents
  ABISELECT(112,60), // object size
  NSPAIRA(_ZTI7S7856C5),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7856C5),72, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7856C5),48, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names16,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7856C19  : S7856C15 , virtual S77C13_nt , S7856C6 , virtual S7856C18 {
  virtual  ~S7856C19(); // _ZN8S7856C19D2Ev
  virtual void  v1(); // _ZN8S7856C192v1Ev
  S7856C19(); // tgen
};
//SIG(-1 S7856C19) C1{ BC2{ m} VBC3{ m} BC4{ VBC5{ VBC3 VBC6{ m} VBC7{ BC3 VBC8{ VBC3 BC6 VBC9{ m}} VBC6} BC9 BC10{ BC6 VBC3 VBC9 BC8 VBC7 vd} vd} VBC11{ BC9 BC6 BC8 Fi} VBC10 vd Fi[2]} VBC12{ VBC10 BC11 BC7 BC9 vd} vd v1}


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

static void Test_S7856C19()
{
  extern Class_Descriptor cd_S7856C19;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,14)];
    init_test(&cd_S7856C19, buf);
    S7856C19 *dp, &lv = *(dp=new (buf) S7856C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,52), "sizeof(S7856C19)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7856C19)");
    check_base_class_offset(lv, (S7856C15*), 0, "S7856C19");
    /*is_ambiguous_... S7856C19::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*), ABISELECT(16,12), "S7856C19");
    /*is_ambiguous_... S7856C7::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C7*), ABISELECT(16,12), "S7856C19");
    /*is_ambiguous_... S7856C19::S7856C11 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*), ABISELECT(16,12), "S7856C19");
    /*is_ambiguous_... S7856C13::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*)(S7856C7*), ABISELECT(16,12), "S7856C19");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(16,12), "S7856C19");
    /*is_ambiguous_... S7856C19::S7856C14 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*), ABISELECT(16,12), "S7856C19");
    /*is_ambiguous_... S7856C19::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*), ABISELECT(16,12), "S7856C19");
    /*is_ambiguous_... S7856C19::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*), ABISELECT(16,12), "S7856C19");
    check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*), ABISELECT(16,12), "S7856C19");
    /*is_ambiguous_... S7856C7::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C7*), ABISELECT(25,17), "S7856C19");
    /*is_ambiguous_... S7856C19::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*), ABISELECT(25,17), "S7856C19");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*), ABISELECT(25,17), "S7856C19");
    /*is_ambiguous_... S7856C19::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*), 0, "S7856C19");
    /*is_ambiguous_... S7856C19::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*), 0, "S7856C19");
    /*is_ambiguous_... S7856C19::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*), 0, "S7856C19");
    check_base_class_offset(lv, (S7856C12*)(S7856C13*)(S7856C7*), 0, "S7856C19");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*)(S7856C7*), 0, "S7856C19");
    /*is_ambiguous_... S7856C19::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*), 0, "S7856C19");
    /*is_ambiguous_... S7856C19::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*), 0, "S7856C19");
    /*is_ambiguous_... S7856C19::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*), 0, "S7856C19");
    check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*), 0, "S7856C19");
    /*is_ambiguous_... S7856C19::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*), 0, "S7856C19");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*), 0, "S7856C19");
    check_base_class_offset(lv, (S7856C10*)(S7856C7*), 0, "S7856C19");
    check_base_class_offset(lv, (S7856C10*)(S7856C13*)(S7856C7*), 0, "S7856C19");
    /*is_ambiguous_... S7856C19::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*), 0, "S7856C19");
    /*is_ambiguous_... S7856C7::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C7*), ABISELECT(16,12), "S7856C19");
    /*is_ambiguous_... S7856C13::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*)(S7856C7*), ABISELECT(24,16), "S7856C19");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(16,12), "S7856C19");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(16,12), "S7856C19");
    check_base_class_offset(lv, (S7856C13*)(S7856C7*), ABISELECT(16,12), "S7856C19");
    check_base_class_offset(lv, (S7856C7*)(S7856C6*), ABISELECT(16,12), "S7856C19");
    /*is_ambiguous_... S7856C19::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*), ABISELECT(32,20), "S7856C19");
    /*is_ambiguous_... S7856C19::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*), ABISELECT(40,24), "S7856C19");
    /*is_ambiguous_... S7856C19::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*), ABISELECT(32,20), "S7856C19");
    /*is_ambiguous_... S7856C19::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*), ABISELECT(32,20), "S7856C19");
    check_base_class_offset(lv, (S7856C14*)(S7856C6*), ABISELECT(32,20), "S7856C19");
    /*is_ambiguous_... S7856C19::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*), ABISELECT(56,32), "S7856C19");
    /*is_ambiguous_... S7856C19::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*), ABISELECT(48,28), "S7856C19");
    /*is_ambiguous_... S7856C19::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*), ABISELECT(48,28), "S7856C19");
    /*is_ambiguous_... S7856C6::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C6*), ABISELECT(48,28), "S7856C19");
    check_base_class_offset(lv, (S7856C13*)(S7856C18*), ABISELECT(48,28), "S7856C19");
    check_base_class_offset(lv, (S7856C6*), 0, "S7856C19");
    /*is_ambiguous_... S7856C14::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*), ABISELECT(64,36), "S7856C19");
    /*is_ambiguous_... S7856C14::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*), ABISELECT(72,40), "S7856C19");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*), ABISELECT(64,36), "S7856C19");
    check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*), ABISELECT(64,36), "S7856C19");
    check_base_class_offset(lv, (S7856C14*)(S7856C18*), ABISELECT(64,36), "S7856C19");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*), ABISELECT(80,44), "S7856C19");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*), ABISELECT(80,44), "S7856C19");
    /*is_ambiguous_... S7856C18::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*), ABISELECT(88,48), "S7856C19");
    check_base_class_offset(lv, (S7856C18*), ABISELECT(64,36), "S7856C19");
    test_class_info(&lv, &cd_S7856C19);
    dp->~S7856C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7856C19(Test_S7856C19, "S7856C19", ABISELECT(96,52));

#else // __cplusplus

extern void _ZN8S7856C19C1Ev();
extern void _ZN8S7856C19D2Ev();
Name_Map name_map_S7856C19[] = {
  NSPAIR(_ZN8S7856C19C1Ev),
  NSPAIR(_ZN8S7856C19D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C7;
extern VTBL_ENTRY _ZTI7S7856C7[];
extern  VTBL_ENTRY _ZTV7S7856C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C7[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C6;
extern VTBL_ENTRY _ZTI7S7856C6[];
extern  VTBL_ENTRY _ZTV7S7856C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C6[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
static Base_Class bases_S7856C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S77C13_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C9_nt,    ABISELECT(25,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S7856C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7856C7,    ABISELECT(16,12), //bcp->offset
    14, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(32,20), //bcp->offset
    24, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(48,28), //bcp->offset
    28, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S7856C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(80,44), //bcp->offset
    49, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(64,36), //bcp->offset
    38, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7856C19[];
extern void _ZN8S7856C19D1Ev();
extern void _ZN8S7856C19D0Ev();
extern void _ZN8S7856C192v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev)();
extern void ABISELECT(_ZThn16_N8S7856C19D1Ev,_ZThn12_N8S7856C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev)();
extern void ABISELECT(_ZThn16_N8S7856C19D0Ev,_ZThn12_N8S7856C19D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev)();
extern void ABISELECT(_ZThn48_N8S7856C19D1Ev,_ZThn28_N8S7856C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev)();
extern void ABISELECT(_ZThn48_N8S7856C19D0Ev,_ZThn28_N8S7856C19D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7856C19D1Ev,_ZTv0_n36_N8S7856C19D1Ev)();
extern void ABISELECT(_ZThn64_N8S7856C19D1Ev,_ZThn36_N8S7856C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7856C19D0Ev,_ZTv0_n36_N8S7856C19D0Ev)();
extern void ABISELECT(_ZThn64_N8S7856C19D0Ev,_ZThn36_N8S7856C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7856C19[] = {
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&_ZN8S7856C19D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C19D0Ev,
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  0,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev),
  ABISELECT(-32,-20),
  ABISELECT(-16,-8),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-16,-8),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C19D1Ev,_ZTv0_n36_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C19D0Ev,_ZTv0_n36_N8S7856C19D0Ev),
  ABISELECT(-55,-27),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-64,-32),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
extern VTBL_ENTRY _ZTV8S7856C19[];
extern void _ZN7S7856C6D1Ev();
extern void _ZN7S7856C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C19[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&_ZN7S7856C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C6D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn16_N7S7856C6D1Ev,_ZThn12_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn16_N7S7856C6D0Ev,_ZThn12_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C6__8S7856C19[] = {
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  0,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C6__8S7856C19[] = {
  ABISELECT(-32,-20),
  ABISELECT(-16,-8),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn48_N7S7856C6D1Ev,_ZThn28_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn48_N7S7856C6D0Ev,_ZThn28_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C6__8S7856C19[] = {
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
extern void _ZN7S7856C7D1Ev();
extern void _ZN7S7856C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C19[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
  (VTBL_ENTRY)&_ZN7S7856C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C7D0Ev,
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C137S7856C7__8S7856C19[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C137S7856C7__A1__8S7856C19[] = {
  ABISELECT(-16,-12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C137S7856C7__8S7856C19[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C7__8S7856C19[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C19[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C19[] = {
  0,
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C19[] = {
  ABISELECT(-32,-20),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C14__A2__8S7856C19[] = {
  ABISELECT(-32,-20),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__8S7856C19[] = {
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C13__A3__8S7856C19[] = {
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C13__A1__8S7856C19[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(16,12),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C18__8S7856C19[] = {
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-16,-8),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C18__A1__8S7856C19[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C18__A4__8S7856C19[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__8S7856C19[] = {
  ABISELECT(-55,-27),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-64,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C18__A1__8S7856C19[] = {
  0,
  ABISELECT(16,12),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C18__8S7856C19[] = {
  ABISELECT(16,8),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C18__8S7856C19[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(16,12),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C18__8S7856C19[] = {
  ABISELECT(-55,-27),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-64,-32),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTT_ENTRY vtt_S7856C19[] = {
  {&(_ZTV8S7856C19[11]),  11,55},
  {&(_tg__ZTV7S7856C6__8S7856C19[10]),  10,12},
  {&(_tg__ZTV7S7856C7__7S7856C6__8S7856C19[8]),  8,10},
  {&(_tg__ZTV7S7856C6__8S7856C19[10]),  10,12},
  {&(_tg__ZTV7S7856C6__8S7856C19[10]),  10,12},
  {&(_tg__ZTV8S7856C14__7S7856C6__8S7856C19[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C6__8S7856C19[8]),  8,10},
  {&(_ZTV8S7856C19[22]),  22,55},
  {&(_ZTV8S7856C19[11]),  11,55},
  {&(_ZTV8S7856C19[11]),  11,55},
  {&(_ZTV8S7856C19[28]),  28,55},
  {&(_ZTV8S7856C19[36]),  36,55},
  {&(_ZTV8S7856C19[47]),  47,55},
  {&(_ZTV8S7856C19[55]),  55,55},
  {&(_tg__ZTV7S7856C7__8S7856C19[7]),  7,9},
  {&(_tg__ZTV8S7856C137S7856C7__8S7856C19[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C137S7856C7__A1__8S7856C19[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C7__8S7856C19[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C7__8S7856C19[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C7__8S7856C19[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C7__8S7856C19[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C19[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C19[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C19[4]),  4,4},
  {&(_tg__ZTV8S7856C14__8S7856C19[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C14__A2__8S7856C19[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__8S7856C19[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C13__A3__8S7856C19[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C13__A1__8S7856C19[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C13__A1__8S7856C19[6]),  6,6},
  {&(_tg__ZTV8S7856C18__8S7856C19[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C18__A1__8S7856C19[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C18__A4__8S7856C19[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C18__A1__8S7856C19[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C18__A1__8S7856C19[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C18__8S7856C19[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C18__8S7856C19[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C18__8S7856C19[6]),  6,6},
  {&(_tg__ZTV8S7856C10__A__8S7856C18__8S7856C19[6]),  6,6},
};
extern VTBL_ENTRY _ZTI8S7856C19[];
extern  VTBL_ENTRY _ZTV8S7856C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C19[];
static VTBL_ENTRY alt_thunk_names17[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C6D0Ev,_ZThn28_N7S7856C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7856C6D0Ev,_ZThn12_N7S7856C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C6D1Ev,_ZThn28_N7S7856C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7856C6D1Ev,_ZThn12_N7S7856C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C19D0Ev,_ZTv0_n36_N8S7856C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7856C19D0Ev,_ZThn36_N8S7856C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C19D1Ev,_ZTv0_n36_N8S7856C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7856C19D1Ev,_ZThn36_N8S7856C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7856C19D0Ev,_ZThn28_N8S7856C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7856C19D0Ev,_ZThn12_N8S7856C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7856C19D1Ev,_ZThn28_N8S7856C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7856C19D1Ev,_ZThn12_N8S7856C19D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7856C19 = {  "S7856C19", // class name
  bases_S7856C19, 33,
  &(vtc_S7856C19[0]), // expected_vtbl_contents
  &(vtt_S7856C19[0]), // expected_vtt_contents
  ABISELECT(96,52), // object size
  NSPAIRA(_ZTI8S7856C19),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S7856C19),55, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7856C19),39, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names17,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7856C4  : virtual S7856C5 , S77C13_nt , S7856C10 , S7856C19 {
  virtual  ~S7856C4(); // _ZN7S7856C4D2Ev
  S7856C4(); // tgen
};
//SIG(-1 S7856C4) C1{ VBC2{ VBC3{ VBC4{ VBC5{ m} VBC6{ m} VBC7{ BC5 VBC8{ VBC5 BC6 VBC9{ m}} VBC6} BC9 BC10{ BC6 VBC5 VBC9 BC8 VBC7 vd} vd} VBC11{ BC9 BC6 BC8 Fi} VBC10 vd Fi[2]} VBC12{ m} VBC13{ VBC8 VBC14{ VBC6} VBC11 BC9 VBC4 vd Fi} BC15{ VBC10 BC11 BC7 BC9 vd} vd} BC5 BC7 BC16{ BC12 VBC5 BC3 VBC15 vd v1} vd}


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

static void Test_S7856C4()
{
  extern Class_Descriptor cd_S7856C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(22,24)];
    init_test(&cd_S7856C4, buf);
    S7856C4 *dp, &lv = *(dp=new (buf) S7856C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(168,92), "sizeof(S7856C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7856C4)");
    /*is_ambiguous_... S7856C7::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C7*), ABISELECT(81,49), "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C11 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*), ABISELECT(81,49), "S7856C4");
    /*is_ambiguous_... S7856C13::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*)(S7856C7*), ABISELECT(81,49), "S7856C4");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(81,49), "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C14 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*), ABISELECT(81,49), "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*), ABISELECT(81,49), "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*), ABISELECT(81,49), "S7856C4");
    check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(81,49), "S7856C4");
    /*is_ambiguous_... S7856C19::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C19*), ABISELECT(81,49), "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C18 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*), ABISELECT(81,49), "S7856C4");
    /*is_ambiguous_... S7856C7::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C7*), 0, "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*), 0, "S7856C4");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C17_nt*), 0, "S7856C4");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*)(S7856C5*), 0, "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*), 0, "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*), 0, "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*), ABISELECT(56,32), "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*), ABISELECT(56,32), "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*), 0, "S7856C4");
    check_base_class_offset(lv, (S7856C12*)(S7856C13*)(S7856C7*), 0, "S7856C4");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*)(S7856C7*), 0, "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*), 0, "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*), 0, "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*), 0, "S7856C4");
    check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), 0, "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*), 0, "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*), ABISELECT(56,32), "S7856C4");
    /*is_ambiguous_... S7856C16::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C16*), ABISELECT(56,32), "S7856C4");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(56,32), "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*), ABISELECT(56,32), "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*), ABISELECT(56,32), "S7856C4");
    check_base_class_offset(lv, (S7856C10*)(S7856C7*), ABISELECT(56,32), "S7856C4");
    check_base_class_offset(lv, (S7856C10*)(S7856C13*)(S7856C7*), ABISELECT(56,32), "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*), ABISELECT(56,32), "S7856C4");
    /*is_ambiguous_... S7856C7::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C7*), ABISELECT(72,44), "S7856C4");
    /*is_ambiguous_... S7856C13::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*)(S7856C7*), ABISELECT(80,48), "S7856C4");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(72,44), "S7856C4");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(72,44), "S7856C4");
    check_base_class_offset(lv, (S7856C13*)(S7856C7*), ABISELECT(72,44), "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C6 */ AMB_check_base_class_offset(lv, (S7856C7*)(S7856C6*), ABISELECT(72,44), "S7856C4");
    check_base_class_offset(lv, (S7856C7*)(S7856C16*), ABISELECT(72,44), "S7856C4");
    check_base_class_offset(lv, (S7856C7*)(S7856C6*)(S7856C19*), ABISELECT(72,44), "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*), ABISELECT(88,52), "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*), ABISELECT(96,56), "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*), ABISELECT(88,52), "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*), ABISELECT(88,52), "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C6 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C6*), ABISELECT(88,52), "S7856C4");
    check_base_class_offset(lv, (S7856C14*)(S7856C16*), ABISELECT(88,52), "S7856C4");
    check_base_class_offset(lv, (S7856C14*)(S7856C6*)(S7856C19*), ABISELECT(88,52), "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*), ABISELECT(112,64), "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*), ABISELECT(104,60), "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*), ABISELECT(104,60), "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C6 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C6*), ABISELECT(104,60), "S7856C4");
    check_base_class_offset(lv, (S7856C13*)(S7856C18*)(S7856C5*), ABISELECT(104,60), "S7856C4");
    /*is_ambiguous_... S7856C6::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C6*)(S7856C19*), ABISELECT(104,60), "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C18*), ABISELECT(104,60), "S7856C4");
    check_base_class_offset(lv, (S7856C6*)(S7856C5*), ABISELECT(56,32), "S7856C4");
    check_base_class_offset(lv, (S7856C15*)(S7856C5*), 0, "S7856C4");
    check_base_class_offset(lv, (S7856C17_nt*)(S7856C16*), ABISELECT(120,68), "S7856C4");
    /*is_ambiguous_... S7856C16::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C16*), ABISELECT(120,68), "S7856C4");
    check_base_class_offset(lv, (S7856C16*)(S7856C5*), ABISELECT(120,68), "S7856C4");
    /*is_ambiguous_... S7856C14::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(24,16), "S7856C4");
    /*is_ambiguous_... S7856C14::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(32,20), "S7856C4");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(24,16), "S7856C4");
    check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(24,16), "S7856C4");
    check_base_class_offset(lv, (S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(24,16), "S7856C4");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(40,24), "S7856C4");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(40,24), "S7856C4");
    /*is_ambiguous_... S7856C18::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*)(S7856C5*), ABISELECT(48,28), "S7856C4");
    check_base_class_offset(lv, (S7856C18*)(S7856C5*), ABISELECT(24,16), "S7856C4");
    check_base_class_offset(lv, (S7856C5*), ABISELECT(24,16), "S7856C4");
    /*is_ambiguous_... S7856C4::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*), ABISELECT(8,4), "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*), 0, "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C10*), 0, "S7856C4");
    check_base_class_offset(lv, (S7856C15*)(S7856C19*), ABISELECT(8,4), "S7856C4");
    check_base_class_offset(lv, (S7856C6*)(S7856C19*), ABISELECT(8,4), "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*), ABISELECT(136,76), "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*), ABISELECT(144,80), "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*), ABISELECT(136,76), "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*), ABISELECT(136,76), "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C18*), ABISELECT(136,76), "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C18 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*), ABISELECT(152,84), "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*), ABISELECT(152,84), "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*), ABISELECT(160,88), "S7856C4");
    check_base_class_offset(lv, (S7856C18*)(S7856C19*), ABISELECT(136,76), "S7856C4");
    check_base_class_offset(lv, (S7856C19*), ABISELECT(8,4), "S7856C4");
    test_class_info(&lv, &cd_S7856C4);
    dp->~S7856C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7856C4(Test_S7856C4, "S7856C4", ABISELECT(168,92));

#else // __cplusplus

extern void _ZN7S7856C4C1Ev();
extern void _ZN7S7856C4D2Ev();
Name_Map name_map_S7856C4[] = {
  NSPAIR(_ZN7S7856C4C1Ev),
  NSPAIR(_ZN7S7856C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C7;
extern VTBL_ENTRY _ZTI7S7856C7[];
extern  VTBL_ENTRY _ZTV7S7856C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C7[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C6;
extern VTBL_ENTRY _ZTI7S7856C6[];
extern  VTBL_ENTRY _ZTV7S7856C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C6[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C17_nt;
extern VTBL_ENTRY _ZTI11S7856C17_nt[];
extern  VTBL_ENTRY _ZTV11S7856C17_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S7856C17_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C16;
extern VTBL_ENTRY _ZTI8S7856C16[];
extern  VTBL_ENTRY _ZTV8S7856C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C16[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C5;
extern VTBL_ENTRY _ZTI7S7856C5[];
extern  VTBL_ENTRY _ZTV7S7856C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C5[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C6;
extern VTBL_ENTRY _ZTI7S7856C6[];
extern  VTBL_ENTRY _ZTV7S7856C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C6[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C19;
extern VTBL_ENTRY _ZTI8S7856C19[];
extern  VTBL_ENTRY _ZTV8S7856C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C19[];
static Base_Class bases_S7856C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S77C13_nt,    ABISELECT(81,49), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S77C13_nt,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C11,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C10,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(72,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(72,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(72,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(72,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C7,    ABISELECT(72,44), //bcp->offset
    68, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(88,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(96,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(88,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(88,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(88,52), //bcp->offset
    78, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    66, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(112,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(104,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(104,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    69, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(104,60), //bcp->offset
    82, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C6,    ABISELECT(56,32), //bcp->offset
    55, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S7856C17_nt,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7856C16,    ABISELECT(120,68), //bcp->offset
    92, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(40,24), //bcp->offset
    49, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S7856C5,    ABISELECT(24,16), //bcp->offset
    32, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S77C13_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S7856C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S7856C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(136,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(144,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(136,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(136,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(136,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(152,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(152,84), //bcp->offset
    116, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    82, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(136,76), //bcp->offset
    105, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    79, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    51, //immediately_derived
  0, 1},
  {&cd_S7856C19,    ABISELECT(8,4), //bcp->offset
    18, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7856C4[];
extern void _ZN7S7856C4D1Ev();
extern void _ZN7S7856C4D0Ev();
extern void ABISELECT(_ZThn8_N7S7856C4D1Ev,_ZThn4_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn8_N7S7856C4D0Ev,_ZThn4_N7S7856C4D0Ev)();
extern void _ZN8S7856C192v1Ev();
extern void ABISELECT(_ZTv0_n120_N7S7856C4D1Ev,_ZTv0_n60_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn24_N7S7856C4D1Ev,_ZThn16_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S7856C4D0Ev,_ZTv0_n60_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn24_N7S7856C4D0Ev,_ZThn16_N7S7856C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn56_N7S7856C4D1Ev,_ZThn32_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn56_N7S7856C4D0Ev,_ZThn32_N7S7856C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn72_N7S7856C4D1Ev,_ZThn44_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn72_N7S7856C4D0Ev,_ZThn44_N7S7856C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn104_N7S7856C4D1Ev,_ZThn60_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn104_N7S7856C4D0Ev,_ZThn60_N7S7856C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn120_N7S7856C4D1Ev,_ZThn68_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn120_N7S7856C4D0Ev,_ZThn68_N7S7856C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7856C4D1Ev,_ZTv0_n36_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn136_N7S7856C4D1Ev,_ZThn76_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7856C4D0Ev,_ZTv0_n36_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn136_N7S7856C4D0Ev,_ZThn76_N7S7856C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7856C4[] = {
  ABISELECT(136,76),
  ABISELECT(120,68),
  ABISELECT(120,68),
  0,
  ABISELECT(104,60),
  ABISELECT(88,52),
  ABISELECT(56,32),
  ABISELECT(72,44),
  ABISELECT(56,32),
  ABISELECT(24,16),
  0,
  ABISELECT(56,32),
  0,
  ABISELECT(81,49),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&_ZN7S7856C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C4D0Ev,
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(48,28),
  ABISELECT(64,40),
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  ABISELECT(-8,-4),
  ABISELECT(73,45),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7856C4D1Ev,_ZThn4_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7856C4D0Ev,_ZThn4_N7S7856C4D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
  ABISELECT(-24,-16),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-24,-16),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-24,-16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-24,-16),
  ABISELECT(57,33),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C4D1Ev,_ZTv0_n60_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C4D0Ev,_ZTv0_n60_N7S7856C4D0Ev),
  ABISELECT(-40,-24),
  ABISELECT(16,8),
  ABISELECT(-40,-24),
  ABISELECT(41,25),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  ABISELECT(-56,-32),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev),
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-72,-44),
  ABISELECT(9,5),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev),
  ABISELECT(-88,-52),
  ABISELECT(-7,-3),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-104,-60),
  ABISELECT(-23,-11),
  ABISELECT(-104,-60),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev),
  ABISELECT(-120,-68),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-120,-68),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev),
  ABISELECT(-136,-76),
  ABISELECT(-136,-76),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-136,-76),
  ABISELECT(-55,-27),
  ABISELECT(-136,-76),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7856C4D1Ev,_ZTv0_n36_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7856C4D0Ev,_ZTv0_n36_N7S7856C4D0Ev),
  ABISELECT(-152,-84),
  ABISELECT(-96,-52),
  ABISELECT(-152,-84),
  ABISELECT(-71,-35),
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
extern VTBL_ENTRY _ZTV7S7856C4[];
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__7S7856C4[] = {
  0,
  ABISELECT(56,32),
  0,
  ABISELECT(81,49),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C10__A__7S7856C4[] = {
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void _ZN8S7856C19D1Ev();
extern void _ZN8S7856C19D0Ev();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C19__7S7856C4[] = {
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(48,28),
  ABISELECT(64,40),
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  ABISELECT(-8,-4),
  ABISELECT(73,45),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&_ZN8S7856C19D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C19D0Ev,
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void _ZN7S7856C6D1Ev();
extern void _ZN7S7856C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C68S7856C19__A1__7S7856C4[] = {
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(48,28),
  ABISELECT(64,40),
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  ABISELECT(-8,-4),
  ABISELECT(73,45),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&_ZN7S7856C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C6D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn64_N7S7856C6D1Ev,_ZThn40_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn64_N7S7856C6D0Ev,_ZThn40_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C68S7856C19__A1__7S7856C4[] = {
  ABISELECT(-64,-40),
  ABISELECT(-72,-44),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-72,-44),
  ABISELECT(9,5),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C68S7856C19__A1__7S7856C4[] = {
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C68S7856C19__A1__7S7856C4[] = {
  ABISELECT(-88,-52),
  ABISELECT(-7,-3),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn96_N7S7856C6D1Ev,_ZThn56_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn96_N7S7856C6D0Ev,_ZThn56_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C68S7856C19__A1__7S7856C4[] = {
  ABISELECT(-96,-56),
  ABISELECT(-104,-60),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-104,-60),
  ABISELECT(-23,-11),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev)();
extern void ABISELECT(_ZThn64_N8S7856C19D1Ev,_ZThn40_N8S7856C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev)();
extern void ABISELECT(_ZThn64_N8S7856C19D0Ev,_ZThn40_N8S7856C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C19__7S7856C4[] = {
  ABISELECT(-64,-40),
  ABISELECT(-72,-44),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-72,-44),
  ABISELECT(9,5),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C19__7S7856C4[] = {
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C19__7S7856C4[] = {
  ABISELECT(-88,-52),
  ABISELECT(-7,-3),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev)();
extern void ABISELECT(_ZThn96_N8S7856C19D1Ev,_ZThn56_N8S7856C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev)();
extern void ABISELECT(_ZThn96_N8S7856C19D0Ev,_ZThn56_N8S7856C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__8S7856C19__7S7856C4[] = {
  ABISELECT(-96,-56),
  ABISELECT(-104,-60),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-104,-60),
  ABISELECT(-23,-11),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev),
};
extern void ABISELECT(_ZTv0_n72_N8S7856C19D1Ev,_ZTv0_n36_N8S7856C19D1Ev)();
extern void ABISELECT(_ZThn128_N8S7856C19D1Ev,_ZThn72_N8S7856C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7856C19D0Ev,_ZTv0_n36_N8S7856C19D0Ev)();
extern void ABISELECT(_ZThn128_N8S7856C19D0Ev,_ZThn72_N8S7856C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C18__8S7856C19__7S7856C4[] = {
  ABISELECT(-128,-72),
  ABISELECT(-136,-76),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-136,-76),
  ABISELECT(-55,-27),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C19D1Ev,_ZTv0_n36_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C19D0Ev,_ZTv0_n36_N8S7856C19D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__8S7856C19__7S7856C4[] = {
  ABISELECT(-152,-84),
  ABISELECT(-96,-52),
  ABISELECT(-152,-84),
  ABISELECT(-71,-35),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
extern void _ZN7S7856C5D1Ev();
extern void _ZN7S7856C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C5__7S7856C4[] = {
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-24,-16),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-24,-16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-24,-16),
  ABISELECT(57,33),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&_ZN7S7856C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C5D0Ev,
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C187S7856C5__7S7856C4[] = {
  ABISELECT(-24,-16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-24,-16),
  ABISELECT(57,33),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C187S7856C5__A1__7S7856C4[] = {
  ABISELECT(-24,-16),
  ABISELECT(57,33),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C187S7856C5__A4__7S7856C4[] = {
  ABISELECT(-24,-16),
  ABISELECT(57,33),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__7S7856C4[] = {
  ABISELECT(-40,-24),
  ABISELECT(16,8),
  ABISELECT(-40,-24),
  ABISELECT(41,25),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C187S7856C5__A1__7S7856C4[] = {
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZThn80_N8S7856C18D1Ev,_ZThn44_N8S7856C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
extern void ABISELECT(_ZThn80_N8S7856C18D0Ev,_ZThn44_N8S7856C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C187S7856C5__7S7856C4[] = {
  ABISELECT(-80,-44),
  ABISELECT(-104,-60),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-104,-60),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C187S7856C5__7S7856C4[] = {
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C187S7856C5__7S7856C4[] = {
  ABISELECT(-40,-24),
  ABISELECT(16,8),
  ABISELECT(-40,-24),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn32_N7S7856C5D1Ev,_ZThn16_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn32_N7S7856C5D0Ev,_ZThn16_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C5__7S7856C4[] = {
  ABISELECT(-32,-16),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn48_N7S7856C5D1Ev,_ZThn28_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn48_N7S7856C5D0Ev,_ZThn28_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C5__7S7856C4[] = {
  ABISELECT(-48,-28),
  ABISELECT(-72,-44),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-72,-44),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C5__7S7856C4[] = {
  ABISELECT(-88,-52),
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn80_N7S7856C5D1Ev,_ZThn44_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn80_N7S7856C5D0Ev,_ZThn44_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C5__7S7856C4[] = {
  ABISELECT(-80,-44),
  ABISELECT(-104,-60),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-104,-60),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn96_N7S7856C5D1Ev,_ZThn52_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn96_N7S7856C5D0Ev,_ZThn52_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C5__7S7856C4[] = {
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-120,-68),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-120,-68),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__7S7856C5__7S7856C4[] = {
  ABISELECT(-40,-24),
  ABISELECT(16,8),
  ABISELECT(-40,-24),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void _ZN7S7856C6D1Ev();
extern void _ZN7S7856C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C4[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&_ZN7S7856C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C6D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn16_N7S7856C6D1Ev,_ZThn12_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn16_N7S7856C6D0Ev,_ZThn12_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C6__7S7856C4[] = {
  ABISELECT(-16,-12),
  ABISELECT(-72,-44),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-72,-44),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C6__7S7856C4[] = {
  ABISELECT(-88,-52),
  ABISELECT(-7,-3),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn48_N7S7856C6D1Ev,_ZThn28_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn48_N7S7856C6D0Ev,_ZThn28_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C6__7S7856C4[] = {
  ABISELECT(-48,-28),
  ABISELECT(-104,-60),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-104,-60),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
extern void _ZN7S7856C7D1Ev();
extern void _ZN7S7856C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C4[] = {
  ABISELECT(-72,-44),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-72,-44),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
  (VTBL_ENTRY)&_ZN7S7856C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C7D0Ev,
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C137S7856C7__7S7856C4[] = {
  ABISELECT(-72,-44),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-72,-44),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C137S7856C7__A1__7S7856C4[] = {
  ABISELECT(-72,-44),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C137S7856C7__7S7856C4[] = {
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C7__7S7856C4[] = {
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C4[] = {
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__7S7856C4[] = {
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C4[] = {
  ABISELECT(-88,-52),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C14__A2__7S7856C4[] = {
  ABISELECT(-88,-52),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C4[] = {
  ABISELECT(-104,-60),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-104,-60),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C13__A3__7S7856C4[] = {
  ABISELECT(-104,-60),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C13__A1__7S7856C4[] = {
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
extern void _ZN8S7856C16D1Ev();
extern void _ZN8S7856C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C4[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-120,-68),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-120,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&_ZN8S7856C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C16__7S7856C4[] = {
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C16__7S7856C4[] = {
  ABISELECT(-88,-52),
  ABISELECT(-7,-3),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C16__7S7856C4[] = {
  ABISELECT(48,24),
  ABISELECT(-72,-44),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-72,-44),
  ABISELECT(9,5),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt__7S7856C4[] = {
  ABISELECT(-120,-68),
  0,
  (VTBL_ENTRY)&(_ZTI11S7856C17_nt[0]),
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C18__A1__7S7856C4[] = {
  ABISELECT(-136,-76),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-136,-76),
  ABISELECT(-55,-27),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C18__A2__7S7856C4[] = {
  ABISELECT(-136,-76),
  ABISELECT(-55,-27),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C18__A5__7S7856C4[] = {
  ABISELECT(-136,-76),
  ABISELECT(-55,-27),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A3__7S7856C4[] = {
  ABISELECT(-152,-84),
  ABISELECT(-96,-52),
  ABISELECT(-152,-84),
  ABISELECT(-71,-35),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C18__A3__7S7856C4[] = {
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(96,52),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C18__A1__7S7856C4[] = {
  ABISELECT(32,16),
  ABISELECT(-104,-60),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-104,-60),
  ABISELECT(-23,-11),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C18__A1__7S7856C4[] = {
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C18__A1__7S7856C4[] = {
  ABISELECT(-152,-84),
  ABISELECT(-96,-52),
  ABISELECT(-152,-84),
  ABISELECT(-71,-35),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTT_ENTRY vtt_S7856C4[] = {
  {&(_ZTV7S7856C4[16]),  16,122},
  {&(_tg__ZTV8S7856C10__A__7S7856C4[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C10__A__7S7856C4[4]),  4,4},
  {&(_tg__ZTV8S7856C19__7S7856C4[11]),  11,14},
  {&(_tg__ZTV7S7856C68S7856C19__A1__7S7856C4[10]),  10,12},
  {&(_tg__ZTV7S7856C7__7S7856C68S7856C19__A1__7S7856C4[8]),  8,10},
  {&(_tg__ZTV8S7856C10__7S7856C68S7856C19__A1__7S7856C4[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C68S7856C19__A1__7S7856C4[6]),  6,6},
  {&(_tg__ZTV8S7856C14__7S7856C68S7856C19__A1__7S7856C4[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C68S7856C19__A1__7S7856C4[8]),  8,10},
  {&(_tg__ZTV7S7856C7__8S7856C19__7S7856C4[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C19__7S7856C4[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C19__7S7856C4[6]),  6,6},
  {&(_tg__ZTV8S7856C14__8S7856C19__7S7856C4[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__8S7856C19__7S7856C4[8]),  8,10},
  {&(_tg__ZTV8S7856C18__8S7856C19__7S7856C4[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A1__8S7856C19__7S7856C4[6]),  6,6},
  {&(_ZTV7S7856C4[47]),  47,122},
  {&(_ZTV7S7856C4[66]),  66,122},
  {&(_ZTV7S7856C4[76]),  76,122},
  {&(_ZTV7S7856C4[66]),  66,122},
  {&(_ZTV7S7856C4[66]),  66,122},
  {&(_ZTV7S7856C4[82]),  82,122},
  {&(_ZTV7S7856C4[90]),  90,122},
  {&(_ZTV7S7856C4[103]),  103,122},
  {&(_ZTV7S7856C4[103]),  103,122},
  {&(_ZTV7S7856C4[55]),  55,122},
  {&(_ZTV7S7856C4[29]),  29,122},
  {&(_ZTV7S7856C4[114]),  114,122},
  {&(_ZTV7S7856C4[122]),  122,122},
  {&(_tg__ZTV7S7856C5__7S7856C4[14]),  14,16},
  {&(_tg__ZTV8S7856C187S7856C5__7S7856C4[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C187S7856C5__A1__7S7856C4[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C187S7856C5__A4__7S7856C4[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__7S7856C4[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C187S7856C5__A1__7S7856C4[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C187S7856C5__7S7856C4[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C5__7S7856C4[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C5__7S7856C4[6]),  6,6},
  {&(_tg__ZTV8S7856C10__A__8S7856C187S7856C5__7S7856C4[6]),  6,6},
  {&(_tg__ZTV7S7856C6__7S7856C5__7S7856C4[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C5__7S7856C4[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C5__7S7856C4[11]),  11,13},
  {&(_tg__ZTV7S7856C6__7S7856C5__7S7856C4[11]),  11,13},
  {&(_tg__ZTV8S7856C14__7S7856C5__7S7856C4[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C5__7S7856C4[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C5__7S7856C4[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C5__7S7856C4[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C18__A1__7S7856C5__7S7856C4[6]),  6,6},
  {&(_tg__ZTV7S7856C6__7S7856C4[10]),  10,12},
  {&(_tg__ZTV7S7856C7__7S7856C6__7S7856C4[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C4[10]),  10,12},
  {&(_tg__ZTV7S7856C6__7S7856C4[10]),  10,12},
  {&(_tg__ZTV8S7856C14__7S7856C6__7S7856C4[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C6__7S7856C4[8]),  8,10},
  {&(_tg__ZTV7S7856C7__7S7856C4[7]),  7,9},
  {&(_tg__ZTV8S7856C137S7856C7__7S7856C4[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C137S7856C7__A1__7S7856C4[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C7__7S7856C4[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C7__7S7856C4[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C7__7S7856C4[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C7__7S7856C4[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C4[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C4[6]),  6,6},
  {&(_tg__ZTV8S7856C11__7S7856C4[4]),  4,4},
  {&(_tg__ZTV8S7856C14__7S7856C4[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C14__A2__7S7856C4[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C4[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C13__A3__7S7856C4[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C13__A1__7S7856C4[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C13__A1__7S7856C4[6]),  6,6},
  {&(_tg__ZTV8S7856C16__7S7856C4[10]),  10,12},
  {&(_tg__ZTV8S7856C10__8S7856C16__7S7856C4[6]),  6,6},
  {&(_tg__ZTV8S7856C16__7S7856C4[10]),  10,12},
  {&(_tg__ZTV8S7856C14__8S7856C16__7S7856C4[4]),  4,4},
  {&(_tg__ZTV7S7856C7__8S7856C16__7S7856C4[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C16__7S7856C4[6]),  6,6},
  {&(_tg__ZTV11S7856C17_nt__7S7856C4[3]),  3,3},
  {&(_tg__ZTV8S7856C18__A1__7S7856C4[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C18__A2__7S7856C4[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C18__A5__7S7856C4[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C18__A3__7S7856C4[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C18__A3__7S7856C4[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C18__A1__7S7856C4[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C18__A1__7S7856C4[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C18__A1__7S7856C4[6]),  6,6},
  {&(_tg__ZTV8S7856C10__A__8S7856C18__A1__7S7856C4[6]),  6,6},
};
extern VTBL_ENTRY _ZTI7S7856C4[];
extern  VTBL_ENTRY _ZTV7S7856C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C4[];
static VTBL_ENTRY alt_thunk_names18[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7856C5D0Ev,_ZThn44_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C5D0Ev,_ZThn28_N7S7856C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7856C5D1Ev,_ZThn44_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C5D1Ev,_ZThn28_N7S7856C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7856C5D0Ev,_ZThn52_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7856C5D0Ev,_ZThn16_N7S7856C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7856C5D1Ev,_ZThn52_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7856C5D1Ev,_ZThn16_N7S7856C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7856C18D0Ev,_ZThn44_N8S7856C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7856C18D1Ev,_ZThn44_N8S7856C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C19D0Ev,_ZTv0_n36_N8S7856C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7856C19D0Ev,_ZThn72_N8S7856C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C19D1Ev,_ZTv0_n36_N8S7856C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7856C19D1Ev,_ZThn72_N8S7856C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7856C19D0Ev,_ZThn56_N8S7856C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7856C19D0Ev,_ZThn40_N8S7856C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7856C19D1Ev,_ZThn56_N8S7856C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7856C19D1Ev,_ZThn40_N8S7856C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C6D0Ev,_ZThn28_N7S7856C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7856C6D0Ev,_ZThn12_N7S7856C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7856C6D0Ev,_ZThn56_N7S7856C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7856C6D0Ev,_ZThn40_N7S7856C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C6D1Ev,_ZThn28_N7S7856C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7856C6D1Ev,_ZThn12_N7S7856C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7856C6D1Ev,_ZThn56_N7S7856C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7856C6D1Ev,_ZThn40_N7S7856C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7856C4D0Ev,_ZTv0_n36_N7S7856C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7856C4D0Ev,_ZThn76_N7S7856C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7856C4D1Ev,_ZTv0_n36_N7S7856C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7856C4D1Ev,_ZThn76_N7S7856C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7856C4D0Ev,_ZThn60_N7S7856C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7856C4D0Ev,_ZThn44_N7S7856C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7856C4D1Ev,_ZThn60_N7S7856C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7856C4D1Ev,_ZThn44_N7S7856C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7856C4D0Ev,_ZThn68_N7S7856C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7856C4D0Ev,_ZThn32_N7S7856C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7856C4D1Ev,_ZThn68_N7S7856C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7856C4D1Ev,_ZThn32_N7S7856C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7856C4D0Ev,_ZTv0_n60_N7S7856C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7856C4D0Ev,_ZThn16_N7S7856C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7856C4D1Ev,_ZTv0_n60_N7S7856C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7856C4D1Ev,_ZThn16_N7S7856C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7856C4 = {  "S7856C4", // class name
  bases_S7856C4, 52,
  &(vtc_S7856C4[0]), // expected_vtbl_contents
  &(vtt_S7856C4[0]), // expected_vtt_contents
  ABISELECT(168,92), // object size
  NSPAIRA(_ZTI7S7856C4),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7856C4),122, //virtual function table var
  16, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7856C4),87, //virtual table table var
  24, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names18,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7856C21  : S7856C9_nt , S7856C17_nt {
  virtual  ~S7856C21(); // _ZN8S7856C21D2Ev
  S7856C21(); // tgen
};
//SIG(-1 S7856C21) C1{ BC2{ m} BC3{ VBC2} vd}


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

static void Test_S7856C21()
{
  extern Class_Descriptor cd_S7856C21;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S7856C21, buf);
    S7856C21 *dp, &lv = *(dp=new (buf) S7856C21());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S7856C21)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7856C21)");
    /*is_ambiguous_... S7856C21::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*), 0, "S7856C21");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C17_nt*), ABISELECT(8,4), "S7856C21");
    check_base_class_offset(lv, (S7856C17_nt*), 0, "S7856C21");
    test_class_info(&lv, &cd_S7856C21);
    dp->~S7856C21();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7856C21(Test_S7856C21, "S7856C21", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S7856C21C1Ev();
extern void _ZN8S7856C21D2Ev();
Name_Map name_map_S7856C21[] = {
  NSPAIR(_ZN8S7856C21C1Ev),
  NSPAIR(_ZN8S7856C21D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C17_nt;
extern VTBL_ENTRY _ZTI11S7856C17_nt[];
extern  VTBL_ENTRY _ZTV11S7856C17_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S7856C17_nt[];
static Base_Class bases_S7856C21[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C9_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7856C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7856C21[];
extern void _ZN8S7856C21D1Ev();
extern void _ZN8S7856C21D0Ev();
static  VTBL_ENTRY vtc_S7856C21[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C21[0]),
  (VTBL_ENTRY)&_ZN8S7856C21D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C21D0Ev,
};
extern VTBL_ENTRY _ZTV8S7856C21[];
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt__8S7856C21[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI11S7856C17_nt[0]),
};
static  VTT_ENTRY vtt_S7856C21[] = {
  {&(_ZTV8S7856C21[3]),  3,5},
  {&(_tg__ZTV11S7856C17_nt__8S7856C21[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S7856C21[];
extern  VTBL_ENTRY _ZTV8S7856C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C21[];
Class_Descriptor cd_S7856C21 = {  "S7856C21", // class name
  bases_S7856C21, 3,
  &(vtc_S7856C21[0]), // expected_vtbl_contents
  &(vtt_S7856C21[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S7856C21),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S7856C21),5, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7856C21),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7856C20  : S7856C17_nt , virtual S7856C12 , S7856C5 , S7856C21 {
  virtual  ~S7856C20(); // _ZN8S7856C20D2Ev
  S7856C20(); // tgen
};
//SIG(-1 S7856C20) C1{ BC2{ VBC3{ m}} VBC4{ m} BC5{ VBC6{ VBC7{ VBC8{ m} VBC3 VBC9{ BC8 VBC10{ VBC8 BC3 VBC4} VBC3} BC4 BC11{ BC3 VBC8 VBC4 BC10 VBC9 vd} vd} VBC12{ BC4 BC3 BC10 Fi} VBC11 vd Fi[2]} VBC13{ m} VBC14{ VBC10 VBC2 VBC12 BC4 VBC7 vd Fi} BC15{ VBC11 BC12 BC9 BC4 vd} vd} BC16{ BC3 BC2 vd} vd}


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

static void Test_S7856C20()
{
  extern Class_Descriptor cd_S7856C20;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,18)];
    init_test(&cd_S7856C20, buf);
    S7856C20 *dp, &lv = *(dp=new (buf) S7856C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,68), "sizeof(S7856C20)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7856C20)");
    /*is_ambiguous_... S7856C20::S7856C17_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C17_nt*), 0, "S7856C20");
    /*is_ambiguous_... S7856C7::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C7*), 0, "S7856C20");
    /*is_ambiguous_... S7856C20::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*), 0, "S7856C20");
    /*is_ambiguous_... S7856C20::S7856C17_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C17_nt*), 0, "S7856C20");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*)(S7856C5*), 0, "S7856C20");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C17_nt*)(S7856C21*), 0, "S7856C20");
    /*is_ambiguous_... S7856C20::S7856C17_nt */ AMB_check_base_class_offset(lv, (S7856C17_nt*), 0, "S7856C20");
    /*is_ambiguous_... S7856C20::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), 0, "S7856C20");
    /*is_ambiguous_... S7856C20::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*), 0, "S7856C20");
    check_base_class_offset(lv, (S7856C12*)(S7856C13*)(S7856C7*), 0, "S7856C20");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*)(S7856C7*), 0, "S7856C20");
    /*is_ambiguous_... S7856C20::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*), 0, "S7856C20");
    /*is_ambiguous_... S7856C20::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*), 0, "S7856C20");
    /*is_ambiguous_... S7856C20::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*), 0, "S7856C20");
    check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), 0, "S7856C20");
    /*is_ambiguous_... S7856C7::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C7*), 0, "S7856C20");
    /*is_ambiguous_... S7856C20::S7856C11 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*), 0, "S7856C20");
    /*is_ambiguous_... S7856C13::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*)(S7856C7*), 0, "S7856C20");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*)(S7856C7*), 0, "S7856C20");
    /*is_ambiguous_... S7856C20::S7856C14 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*), 0, "S7856C20");
    /*is_ambiguous_... S7856C20::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*), 0, "S7856C20");
    /*is_ambiguous_... S7856C20::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*), 0, "S7856C20");
    check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), 0, "S7856C20");
    /*is_ambiguous_... S7856C20::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*), ABISELECT(48,24), "S7856C20");
    /*is_ambiguous_... S7856C20::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*), ABISELECT(48,24), "S7856C20");
    /*is_ambiguous_... S7856C20::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*), ABISELECT(48,24), "S7856C20");
    /*is_ambiguous_... S7856C16::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C16*), ABISELECT(48,24), "S7856C20");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(48,24), "S7856C20");
    check_base_class_offset(lv, (S7856C10*)(S7856C7*), ABISELECT(48,24), "S7856C20");
    check_base_class_offset(lv, (S7856C10*)(S7856C13*)(S7856C7*), ABISELECT(48,24), "S7856C20");
    /*is_ambiguous_... S7856C20::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*), ABISELECT(48,24), "S7856C20");
    /*is_ambiguous_... S7856C7::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C7*), ABISELECT(64,36), "S7856C20");
    /*is_ambiguous_... S7856C13::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*)(S7856C7*), ABISELECT(72,40), "S7856C20");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(64,36), "S7856C20");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(64,36), "S7856C20");
    check_base_class_offset(lv, (S7856C13*)(S7856C7*), ABISELECT(64,36), "S7856C20");
    check_base_class_offset(lv, (S7856C7*)(S7856C6*), ABISELECT(64,36), "S7856C20");
    check_base_class_offset(lv, (S7856C7*)(S7856C16*), ABISELECT(64,36), "S7856C20");
    /*is_ambiguous_... S7856C20::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*), ABISELECT(80,44), "S7856C20");
    /*is_ambiguous_... S7856C20::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*), ABISELECT(88,48), "S7856C20");
    /*is_ambiguous_... S7856C20::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*), ABISELECT(80,44), "S7856C20");
    /*is_ambiguous_... S7856C20::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*), ABISELECT(80,44), "S7856C20");
    check_base_class_offset(lv, (S7856C14*)(S7856C6*), ABISELECT(80,44), "S7856C20");
    check_base_class_offset(lv, (S7856C14*)(S7856C16*), ABISELECT(80,44), "S7856C20");
    /*is_ambiguous_... S7856C20::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*), ABISELECT(104,56), "S7856C20");
    /*is_ambiguous_... S7856C20::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*), ABISELECT(96,52), "S7856C20");
    /*is_ambiguous_... S7856C20::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*), ABISELECT(96,52), "S7856C20");
    /*is_ambiguous_... S7856C6::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C6*), ABISELECT(96,52), "S7856C20");
    check_base_class_offset(lv, (S7856C13*)(S7856C18*)(S7856C5*), ABISELECT(96,52), "S7856C20");
    check_base_class_offset(lv, (S7856C6*)(S7856C5*), ABISELECT(48,24), "S7856C20");
    check_base_class_offset(lv, (S7856C15*)(S7856C5*), 0, "S7856C20");
    check_base_class_offset(lv, (S7856C17_nt*)(S7856C16*), ABISELECT(112,60), "S7856C20");
    /*is_ambiguous_... S7856C16::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C16*), ABISELECT(112,60), "S7856C20");
    check_base_class_offset(lv, (S7856C16*)(S7856C5*), ABISELECT(112,60), "S7856C20");
    /*is_ambiguous_... S7856C14::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(8,4), "S7856C20");
    /*is_ambiguous_... S7856C14::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(16,8), "S7856C20");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(8,4), "S7856C20");
    check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(8,4), "S7856C20");
    check_base_class_offset(lv, (S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(8,4), "S7856C20");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(24,12), "S7856C20");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(24,12), "S7856C20");
    /*is_ambiguous_... S7856C18::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*)(S7856C5*), ABISELECT(32,16), "S7856C20");
    check_base_class_offset(lv, (S7856C18*)(S7856C5*), ABISELECT(8,4), "S7856C20");
    check_base_class_offset(lv, (S7856C5*), ABISELECT(8,4), "S7856C20");
    /*is_ambiguous_... S7856C21::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C21*), ABISELECT(40,20), "S7856C20");
    check_base_class_offset(lv, (S7856C17_nt*)(S7856C21*), ABISELECT(40,20), "S7856C20");
    check_base_class_offset(lv, (S7856C21*), ABISELECT(40,20), "S7856C20");
    test_class_info(&lv, &cd_S7856C20);
    dp->~S7856C20();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7856C20(Test_S7856C20, "S7856C20", ABISELECT(128,68));

#else // __cplusplus

extern void _ZN8S7856C20C1Ev();
extern void _ZN8S7856C20D2Ev();
Name_Map name_map_S7856C20[] = {
  NSPAIR(_ZN8S7856C20C1Ev),
  NSPAIR(_ZN8S7856C20D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C17_nt;
extern VTBL_ENTRY _ZTI11S7856C17_nt[];
extern  VTBL_ENTRY _ZTV11S7856C17_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S7856C17_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C7;
extern VTBL_ENTRY _ZTI7S7856C7[];
extern  VTBL_ENTRY _ZTV7S7856C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C7[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C6;
extern VTBL_ENTRY _ZTI7S7856C6[];
extern  VTBL_ENTRY _ZTV7S7856C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C6[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C17_nt;
extern VTBL_ENTRY _ZTI11S7856C17_nt[];
extern  VTBL_ENTRY _ZTV11S7856C17_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S7856C17_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C16;
extern VTBL_ENTRY _ZTI8S7856C16[];
extern  VTBL_ENTRY _ZTV8S7856C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C16[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C5;
extern VTBL_ENTRY _ZTI7S7856C5[];
extern  VTBL_ENTRY _ZTV7S7856C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C5[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C17_nt;
extern VTBL_ENTRY _ZTI11S7856C17_nt[];
extern  VTBL_ENTRY _ZTV11S7856C17_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S7856C17_nt[];
extern Class_Descriptor cd_S7856C21;
extern VTBL_ENTRY _ZTI8S7856C21[];
extern  VTBL_ENTRY _ZTV8S7856C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C21[];
static Base_Class bases_S7856C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7856C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S77C13_nt,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S7856C10,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7856C7,    ABISELECT(64,36), //bcp->offset
    56, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(80,44), //bcp->offset
    66, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(96,52), //bcp->offset
    70, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S7856C6,    ABISELECT(48,24), //bcp->offset
    43, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    37, //immediately_derived
  0, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    37, //immediately_derived
  0, 1},
  {&cd_S7856C17_nt,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S7856C16,    ABISELECT(112,60), //bcp->offset
    80, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    37, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(24,12), //bcp->offset
    32, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S7856C5,    ABISELECT(8,4), //bcp->offset
    16, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C9_nt,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S7856C17_nt,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S7856C21,    ABISELECT(40,20), //bcp->offset
    38, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7856C20[];
extern void _ZN8S7856C20D1Ev();
extern void _ZN8S7856C20D0Ev();
extern void ABISELECT(_ZThn8_N8S7856C20D1Ev,_ZThn4_N8S7856C20D1Ev)();
extern void ABISELECT(_ZThn8_N8S7856C20D0Ev,_ZThn4_N8S7856C20D0Ev)();
extern void ABISELECT(_ZThn40_N8S7856C20D1Ev,_ZThn20_N8S7856C20D1Ev)();
extern void ABISELECT(_ZThn40_N8S7856C20D0Ev,_ZThn20_N8S7856C20D0Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C20D1Ev,_ZTv0_n44_N8S7856C20D1Ev)();
extern void ABISELECT(_ZThn48_N8S7856C20D1Ev,_ZThn24_N8S7856C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C20D0Ev,_ZTv0_n44_N8S7856C20D0Ev)();
extern void ABISELECT(_ZThn48_N8S7856C20D0Ev,_ZThn24_N8S7856C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C20D1Ev,_ZTv0_n32_N8S7856C20D1Ev)();
extern void ABISELECT(_ZThn64_N8S7856C20D1Ev,_ZThn36_N8S7856C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C20D0Ev,_ZTv0_n32_N8S7856C20D0Ev)();
extern void ABISELECT(_ZThn64_N8S7856C20D0Ev,_ZThn36_N8S7856C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C20D1Ev,_ZTv0_n32_N8S7856C20D1Ev)();
extern void ABISELECT(_ZThn96_N8S7856C20D1Ev,_ZThn52_N8S7856C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C20D0Ev,_ZTv0_n32_N8S7856C20D0Ev)();
extern void ABISELECT(_ZThn96_N8S7856C20D0Ev,_ZThn52_N8S7856C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C20D1Ev,_ZTv0_n44_N8S7856C20D1Ev)();
extern void ABISELECT(_ZThn112_N8S7856C20D1Ev,_ZThn60_N8S7856C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C20D0Ev,_ZTv0_n44_N8S7856C20D0Ev)();
extern void ABISELECT(_ZThn112_N8S7856C20D0Ev,_ZThn60_N8S7856C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7856C20[] = {
  ABISELECT(112,60),
  ABISELECT(112,60),
  0,
  ABISELECT(96,52),
  ABISELECT(80,44),
  ABISELECT(48,24),
  ABISELECT(48,24),
  0,
  ABISELECT(64,36),
  ABISELECT(48,24),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C20[0]),
  (VTBL_ENTRY)&_ZN8S7856C20D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C20D0Ev,
  ABISELECT(104,56),
  ABISELECT(104,56),
  ABISELECT(-8,-4),
  ABISELECT(72,40),
  ABISELECT(56,32),
  ABISELECT(40,20),
  ABISELECT(-8,-4),
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(88,48),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7856C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7856C20D1Ev,_ZThn4_N8S7856C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7856C20D0Ev,_ZThn4_N8S7856C20D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7856C20[0]),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S7856C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S7856C20D1Ev,_ZThn20_N8S7856C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S7856C20D0Ev,_ZThn20_N8S7856C20D0Ev),
  ABISELECT(-48,-24),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S7856C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C20D1Ev,_ZTv0_n44_N8S7856C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C20D0Ev,_ZTv0_n44_N8S7856C20D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S7856C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C20D1Ev,_ZTv0_n32_N8S7856C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C20D0Ev,_ZTv0_n32_N8S7856C20D0Ev),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S7856C20[0]),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S7856C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C20D1Ev,_ZTv0_n32_N8S7856C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C20D0Ev,_ZTv0_n32_N8S7856C20D0Ev),
  ABISELECT(-112,-60),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-64,-36),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S7856C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C20D1Ev,_ZTv0_n44_N8S7856C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C20D0Ev,_ZTv0_n44_N8S7856C20D0Ev),
};
extern VTBL_ENTRY _ZTV8S7856C20[];
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt__A__8S7856C20[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI11S7856C17_nt[0]),
};
extern void _ZN7S7856C5D1Ev();
extern void _ZN7S7856C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C5__8S7856C20[] = {
  ABISELECT(104,56),
  ABISELECT(104,56),
  ABISELECT(-8,-4),
  ABISELECT(72,40),
  ABISELECT(56,32),
  ABISELECT(40,20),
  ABISELECT(-8,-4),
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(88,48),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&_ZN7S7856C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C5D0Ev,
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C187S7856C5__8S7856C20[] = {
  ABISELECT(-8,-4),
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(88,48),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C187S7856C5__A1__8S7856C20[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C187S7856C5__A4__8S7856C20[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C20[] = {
  ABISELECT(-24,-12),
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C187S7856C5__A1__8S7856C20[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZThn88_N8S7856C18D1Ev,_ZThn48_N8S7856C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
extern void ABISELECT(_ZThn88_N8S7856C18D0Ev,_ZThn48_N8S7856C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C187S7856C5__8S7856C20[] = {
  ABISELECT(-88,-48),
  ABISELECT(-96,-52),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C187S7856C5__8S7856C20[] = {
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C187S7856C5__8S7856C20[] = {
  ABISELECT(-24,-12),
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn40_N7S7856C5D1Ev,_ZThn20_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn40_N7S7856C5D0Ev,_ZThn20_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C5__8S7856C20[] = {
  ABISELECT(-40,-20),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn56_N7S7856C5D1Ev,_ZThn32_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn56_N7S7856C5D0Ev,_ZThn32_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C5__8S7856C20[] = {
  ABISELECT(-56,-32),
  ABISELECT(-64,-36),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C5__8S7856C20[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn88_N7S7856C5D1Ev,_ZThn48_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn88_N7S7856C5D0Ev,_ZThn48_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C5__8S7856C20[] = {
  ABISELECT(-88,-48),
  ABISELECT(-96,-52),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn104_N7S7856C5D1Ev,_ZThn56_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn104_N7S7856C5D0Ev,_ZThn56_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C5__8S7856C20[] = {
  ABISELECT(-104,-56),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-64,-36),
  ABISELECT(-112,-60),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__7S7856C5__8S7856C20[] = {
  ABISELECT(-24,-12),
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void _ZN8S7856C21D1Ev();
extern void _ZN8S7856C21D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C21__8S7856C20[] = {
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C21[0]),
  (VTBL_ENTRY)&_ZN8S7856C21D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C21D0Ev,
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt8S7856C21__A2__8S7856C20[] = {
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI11S7856C17_nt[0]),
};
extern void _ZN7S7856C6D1Ev();
extern void _ZN7S7856C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C20[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&_ZN7S7856C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C6D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn16_N7S7856C6D1Ev,_ZThn12_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn16_N7S7856C6D0Ev,_ZThn12_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C6__8S7856C20[] = {
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C6__8S7856C20[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn48_N7S7856C6D1Ev,_ZThn28_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn48_N7S7856C6D0Ev,_ZThn28_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C6__8S7856C20[] = {
  ABISELECT(-48,-28),
  ABISELECT(-96,-52),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
extern void _ZN7S7856C7D1Ev();
extern void _ZN7S7856C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C20[] = {
  ABISELECT(-64,-36),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
  (VTBL_ENTRY)&_ZN7S7856C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C7D0Ev,
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C137S7856C7__8S7856C20[] = {
  ABISELECT(-64,-36),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C137S7856C7__A1__8S7856C20[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C137S7856C7__8S7856C20[] = {
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C7__8S7856C20[] = {
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C20[] = {
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C20[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C20[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C14__A2__8S7856C20[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__8S7856C20[] = {
  ABISELECT(-96,-52),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C13__A3__8S7856C20[] = {
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C13__A1__8S7856C20[] = {
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
extern void _ZN8S7856C16D1Ev();
extern void _ZN8S7856C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C20[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-64,-36),
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&_ZN8S7856C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C16__8S7856C20[] = {
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C16__8S7856C20[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C16__8S7856C20[] = {
  ABISELECT(48,24),
  ABISELECT(-64,-36),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt__A1__8S7856C20[] = {
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI11S7856C17_nt[0]),
};
static  VTT_ENTRY vtt_S7856C20[] = {
  {&(_ZTV8S7856C20[14]),  14,93},
  {&(_tg__ZTV11S7856C17_nt__A__8S7856C20[3]),  3,3},
  {&(_tg__ZTV7S7856C5__8S7856C20[14]),  14,16},
  {&(_tg__ZTV8S7856C187S7856C5__8S7856C20[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C187S7856C5__A1__8S7856C20[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C187S7856C5__A4__8S7856C20[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C20[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C187S7856C5__A1__8S7856C20[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C187S7856C5__8S7856C20[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C5__8S7856C20[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C5__8S7856C20[6]),  6,6},
  {&(_tg__ZTV8S7856C10__A__8S7856C187S7856C5__8S7856C20[6]),  6,6},
  {&(_tg__ZTV7S7856C6__7S7856C5__8S7856C20[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C5__8S7856C20[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C5__8S7856C20[11]),  11,13},
  {&(_tg__ZTV7S7856C6__7S7856C5__8S7856C20[11]),  11,13},
  {&(_tg__ZTV8S7856C14__7S7856C5__8S7856C20[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C5__8S7856C20[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C5__8S7856C20[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C5__8S7856C20[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C18__A1__7S7856C5__8S7856C20[6]),  6,6},
  {&(_tg__ZTV8S7856C21__8S7856C20[3]),  3,5},
  {&(_tg__ZTV11S7856C17_nt8S7856C21__A2__8S7856C20[3]),  3,3},
  {&(_ZTV8S7856C20[30]),  30,93},
  {&(_ZTV8S7856C20[54]),  54,93},
  {&(_ZTV8S7856C20[64]),  64,93},
  {&(_ZTV8S7856C20[54]),  54,93},
  {&(_ZTV8S7856C20[54]),  54,93},
  {&(_ZTV8S7856C20[70]),  70,93},
  {&(_ZTV8S7856C20[78]),  78,93},
  {&(_ZTV8S7856C20[91]),  91,93},
  {&(_ZTV8S7856C20[91]),  91,93},
  {&(_ZTV8S7856C20[38]),  38,93},
  {&(_ZTV8S7856C20[41]),  41,93},
  {&(_tg__ZTV7S7856C6__8S7856C20[10]),  10,12},
  {&(_tg__ZTV7S7856C7__7S7856C6__8S7856C20[8]),  8,10},
  {&(_tg__ZTV7S7856C6__8S7856C20[10]),  10,12},
  {&(_tg__ZTV7S7856C6__8S7856C20[10]),  10,12},
  {&(_tg__ZTV8S7856C14__7S7856C6__8S7856C20[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C6__8S7856C20[8]),  8,10},
  {&(_tg__ZTV7S7856C7__8S7856C20[7]),  7,9},
  {&(_tg__ZTV8S7856C137S7856C7__8S7856C20[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C137S7856C7__A1__8S7856C20[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C7__8S7856C20[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C7__8S7856C20[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C7__8S7856C20[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C7__8S7856C20[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C20[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C20[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C20[4]),  4,4},
  {&(_tg__ZTV8S7856C14__8S7856C20[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C14__A2__8S7856C20[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__8S7856C20[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C13__A3__8S7856C20[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C13__A1__8S7856C20[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C13__A1__8S7856C20[6]),  6,6},
  {&(_tg__ZTV8S7856C16__8S7856C20[10]),  10,12},
  {&(_tg__ZTV8S7856C10__8S7856C16__8S7856C20[6]),  6,6},
  {&(_tg__ZTV8S7856C16__8S7856C20[10]),  10,12},
  {&(_tg__ZTV8S7856C14__8S7856C16__8S7856C20[4]),  4,4},
  {&(_tg__ZTV7S7856C7__8S7856C16__8S7856C20[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C16__8S7856C20[6]),  6,6},
  {&(_tg__ZTV11S7856C17_nt__A1__8S7856C20[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S7856C20[];
extern  VTBL_ENTRY _ZTV8S7856C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C20[];
static VTBL_ENTRY alt_thunk_names19[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C6D0Ev,_ZThn28_N7S7856C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7856C6D0Ev,_ZThn12_N7S7856C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C6D1Ev,_ZThn28_N7S7856C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7856C6D1Ev,_ZThn12_N7S7856C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7856C5D0Ev,_ZThn48_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7856C5D0Ev,_ZThn32_N7S7856C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7856C5D1Ev,_ZThn48_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7856C5D1Ev,_ZThn32_N7S7856C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7856C5D0Ev,_ZThn56_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7856C5D0Ev,_ZThn20_N7S7856C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7856C5D1Ev,_ZThn56_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7856C5D1Ev,_ZThn20_N7S7856C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7856C18D0Ev,_ZThn48_N8S7856C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7856C18D1Ev,_ZThn48_N8S7856C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C20D0Ev,_ZTv0_n32_N8S7856C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7856C20D0Ev,_ZThn52_N8S7856C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7856C20D0Ev,_ZThn36_N8S7856C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C20D1Ev,_ZTv0_n32_N8S7856C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7856C20D1Ev,_ZThn52_N8S7856C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7856C20D1Ev,_ZThn36_N8S7856C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C20D0Ev,_ZTv0_n44_N8S7856C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7856C20D0Ev,_ZThn60_N8S7856C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7856C20D0Ev,_ZThn24_N8S7856C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C20D1Ev,_ZTv0_n44_N8S7856C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7856C20D1Ev,_ZThn60_N8S7856C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7856C20D1Ev,_ZThn24_N8S7856C20D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7856C20 = {  "S7856C20", // class name
  bases_S7856C20, 41,
  &(vtc_S7856C20[0]), // expected_vtbl_contents
  &(vtt_S7856C20[0]), // expected_vtt_contents
  ABISELECT(128,68), // object size
  NSPAIRA(_ZTI8S7856C20),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S7856C20),93, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7856C20),63, //virtual table table var
  20, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names19,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7856C22  : S7856C10 , virtual S7856C6 , S7856C5 , virtual S7856C4 {
  char s7856c22f0;
  virtual  ~S7856C22(); // _ZN8S7856C22D2Ev
  S7856C22(); // tgen
};
//SIG(-1 S7856C22) C1{ BC2{ BC3{ m} VBC4{ VBC3 BC5{ m} VBC6{ m}} VBC5} VBC7{ VBC8{ VBC3 VBC5 VBC2 BC6 BC9{ BC5 VBC3 VBC6 BC4 VBC2 vd} vd} VBC10{ BC6 BC5 BC4 Fi} VBC9 vd Fi[2]} BC11{ VBC7 VBC12{ m} VBC13{ VBC4 VBC14{ VBC5} VBC10 BC6 VBC8 vd Fi} BC15{ VBC9 BC10 BC2 BC6 vd} vd} VBC16{ VBC11 BC3 BC2 BC17{ BC12 VBC3 BC7 VBC15 vd v1} vd} vd Fc}


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

static void Test_S7856C22()
{
  extern Class_Descriptor cd_S7856C22;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(27,29)];
    init_test(&cd_S7856C22, buf);
    S7856C22 *dp, &lv = *(dp=new (buf) S7856C22());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,112), "sizeof(S7856C22)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7856C22)");
    /*is_ambiguous_... S7856C22::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*), 0, "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C11 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*), ABISELECT(34,18), "S7856C22");
    /*is_ambiguous_... S7856C7::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C7*), ABISELECT(34,18), "S7856C22");
    /*is_ambiguous_... S7856C13::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*)(S7856C7*), ABISELECT(34,18), "S7856C22");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(34,18), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C14 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*), ABISELECT(34,18), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*), ABISELECT(34,18), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*), ABISELECT(34,18), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(34,18), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(34,18), "S7856C22");
    /*is_ambiguous_... S7856C19::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C19*)(S7856C4*), ABISELECT(34,18), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C18 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*), ABISELECT(34,18), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*), 0, "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*), 0, "S7856C22");
    check_base_class_offset(lv, (S7856C12*)(S7856C13*)(S7856C7*), 0, "S7856C22");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*)(S7856C7*), 0, "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*), 0, "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*), 0, "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*), 0, "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), 0, "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), 0, "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*), 0, "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*), 0, "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*), 0, "S7856C22");
    /*is_ambiguous_... S7856C16::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C16*), 0, "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*)(S7856C5*), 0, "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*)(S7856C5*), 0, "S7856C22");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C4*), 0, "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*), 0, "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*), ABISELECT(34,18), "S7856C22");
    /*is_ambiguous_... S7856C7::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C7*), ABISELECT(34,18), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*), ABISELECT(34,18), "S7856C22");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C17_nt*), ABISELECT(34,18), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(34,18), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(34,18), "S7856C22");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C4*), ABISELECT(34,18), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*), ABISELECT(34,18), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C10*), 0, "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*), ABISELECT(40,20), "S7856C22");
    check_base_class_offset(lv, (S7856C10*)(S7856C7*), ABISELECT(40,20), "S7856C22");
    check_base_class_offset(lv, (S7856C10*)(S7856C13*)(S7856C7*), ABISELECT(40,20), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*), ABISELECT(40,20), "S7856C22");
    /*is_ambiguous_... S7856C7::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C7*), ABISELECT(56,32), "S7856C22");
    /*is_ambiguous_... S7856C13::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*)(S7856C7*), ABISELECT(64,36), "S7856C22");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(56,32), "S7856C22");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(56,32), "S7856C22");
    check_base_class_offset(lv, (S7856C13*)(S7856C7*), ABISELECT(56,32), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C6 */ AMB_check_base_class_offset(lv, (S7856C7*)(S7856C6*), ABISELECT(56,32), "S7856C22");
    check_base_class_offset(lv, (S7856C7*)(S7856C16*), ABISELECT(56,32), "S7856C22");
    check_base_class_offset(lv, (S7856C7*)(S7856C6*)(S7856C19*)(S7856C4*), ABISELECT(56,32), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*), ABISELECT(72,40), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*), ABISELECT(80,44), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*), ABISELECT(72,40), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*), ABISELECT(72,40), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C6 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C6*), ABISELECT(72,40), "S7856C22");
    check_base_class_offset(lv, (S7856C14*)(S7856C16*), ABISELECT(72,40), "S7856C22");
    check_base_class_offset(lv, (S7856C14*)(S7856C6*)(S7856C19*)(S7856C4*), ABISELECT(72,40), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*), ABISELECT(96,52), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*), ABISELECT(88,48), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*), ABISELECT(88,48), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C6 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C6*), ABISELECT(88,48), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C18*)(S7856C5*), ABISELECT(88,48), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C18*)(S7856C5*), ABISELECT(88,48), "S7856C22");
    /*is_ambiguous_... S7856C6::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C6*)(S7856C19*)(S7856C4*), ABISELECT(88,48), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C18*), ABISELECT(88,48), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C6 */ AMB_check_base_class_offset(lv, (S7856C6*), ABISELECT(40,20), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C6*)(S7856C5*), ABISELECT(40,20), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C6*)(S7856C5*), ABISELECT(40,20), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7856C5*), 0, "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7856C5*), 0, "S7856C22");
    check_base_class_offset(lv, (S7856C17_nt*)(S7856C16*), ABISELECT(104,56), "S7856C22");
    /*is_ambiguous_... S7856C16::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C16*), ABISELECT(104,56), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C16*)(S7856C5*), ABISELECT(104,56), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C16*)(S7856C5*), ABISELECT(104,56), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(8,4), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(16,8), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(8,4), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(8,4), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(8,4), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(24,12), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(24,12), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*)(S7856C5*), ABISELECT(32,16), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C18*)(S7856C5*), ABISELECT(8,4), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C5*), ABISELECT(8,4), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(144,80), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(152,84), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(144,80), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(144,80), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(144,80), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(160,88), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(160,88), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*)(S7856C5*), ABISELECT(168,92), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C18*)(S7856C5*), ABISELECT(144,80), "S7856C22");
    check_base_class_offset(lv, (S7856C5*)(S7856C4*), ABISELECT(144,80), "S7856C22");
    /*is_ambiguous_... S7856C4::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C4*), ABISELECT(128,68), "S7856C22");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C4*), ABISELECT(120,64), "S7856C22");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C4*), ABISELECT(120,64), "S7856C22");
    check_base_class_offset(lv, (S7856C15*)(S7856C19*)(S7856C4*), ABISELECT(128,68), "S7856C22");
    check_base_class_offset(lv, (S7856C6*)(S7856C19*)(S7856C4*), ABISELECT(128,68), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*), ABISELECT(176,96), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*), ABISELECT(184,100), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*), ABISELECT(176,96), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*), ABISELECT(176,96), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C18*), ABISELECT(176,96), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C18 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*), ABISELECT(192,104), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*), ABISELECT(192,104), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*), ABISELECT(200,108), "S7856C22");
    check_base_class_offset(lv, (S7856C18*)(S7856C19*)(S7856C4*), ABISELECT(176,96), "S7856C22");
    check_base_class_offset(lv, (S7856C19*)(S7856C4*), ABISELECT(128,68), "S7856C22");
    check_base_class_offset(lv, (S7856C4*), ABISELECT(120,64), "S7856C22");
    check_field_offset(lv, s7856c22f0, ABISELECT(33,17), "S7856C22.s7856c22f0");
    test_class_info(&lv, &cd_S7856C22);
    dp->~S7856C22();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7856C22(Test_S7856C22, "S7856C22", ABISELECT(208,112));

#else // __cplusplus

extern void _ZN8S7856C22C1Ev();
extern void _ZN8S7856C22D2Ev();
Name_Map name_map_S7856C22[] = {
  NSPAIR(_ZN8S7856C22C1Ev),
  NSPAIR(_ZN8S7856C22D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C7;
extern VTBL_ENTRY _ZTI7S7856C7[];
extern  VTBL_ENTRY _ZTV7S7856C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C7[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C6;
extern VTBL_ENTRY _ZTI7S7856C6[];
extern  VTBL_ENTRY _ZTV7S7856C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C6[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C17_nt;
extern VTBL_ENTRY _ZTI11S7856C17_nt[];
extern  VTBL_ENTRY _ZTV11S7856C17_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S7856C17_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C16;
extern VTBL_ENTRY _ZTI8S7856C16[];
extern  VTBL_ENTRY _ZTV8S7856C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C16[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C5;
extern VTBL_ENTRY _ZTI7S7856C5[];
extern  VTBL_ENTRY _ZTV7S7856C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C5[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C5;
extern VTBL_ENTRY _ZTI7S7856C5[];
extern  VTBL_ENTRY _ZTV7S7856C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C5[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C6;
extern VTBL_ENTRY _ZTI7S7856C6[];
extern  VTBL_ENTRY _ZTV7S7856C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C6[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C19;
extern VTBL_ENTRY _ZTI8S7856C19[];
extern  VTBL_ENTRY _ZTV8S7856C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C19[];
extern Class_Descriptor cd_S7856C4;
extern VTBL_ENTRY _ZTI7S7856C4[];
extern  VTBL_ENTRY _ZTV7S7856C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C4[];
static Base_Class bases_S7856C22[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(34,18), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7856C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(34,18), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S77C13_nt,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7856C7,    ABISELECT(56,32), //bcp->offset
    54, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(72,40), //bcp->offset
    64, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(88,48), //bcp->offset
    68, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S7856C6,    ABISELECT(40,20), //bcp->offset
    41, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    38, //immediately_derived
  0, 1},
  {&cd_S7856C17_nt,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S7856C16,    ABISELECT(104,56), //bcp->offset
    78, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    38, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(24,12), //bcp->offset
    35, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S7856C5,    ABISELECT(8,4), //bcp->offset
    19, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    ABISELECT(144,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(152,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(144,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(144,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    101, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(144,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    100, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(160,88), //bcp->offset
    142, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    102, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(168,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(144,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    99, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S7856C5,    ABISELECT(144,80), //bcp->offset
    125, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    98, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    64, //immediately_derived
  0, 1},
  {&cd_S77C13_nt,    ABISELECT(128,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    64, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(120,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(120,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    69, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    64, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(128,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    63, //immediately_derived
  0, 0},
  {&cd_S7856C6,    ABISELECT(128,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    63, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(176,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(184,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(176,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(176,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    119, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(176,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    118, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(192,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    60, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(192,104), //bcp->offset
    159, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    120, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(200,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(176,96), //bcp->offset
    148, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    117, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    63, //immediately_derived
  0, 1},
  {&cd_S7856C19,    ABISELECT(128,68), //bcp->offset
    111, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    64, //immediately_derived
  0, 0},
  {&cd_S7856C4,    ABISELECT(120,64), //bcp->offset
    91, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7856C22[];
extern void _ZN8S7856C22D1Ev();
extern void _ZN8S7856C22D0Ev();
extern void ABISELECT(_ZThn8_N8S7856C22D1Ev,_ZThn4_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn8_N8S7856C22D0Ev,_ZThn4_N8S7856C22D0Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn40_N8S7856C22D1Ev,_ZThn20_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn40_N8S7856C22D0Ev,_ZThn20_N8S7856C22D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn56_N8S7856C22D1Ev,_ZThn32_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn56_N8S7856C22D0Ev,_ZThn32_N8S7856C22D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn88_N8S7856C22D1Ev,_ZThn48_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn88_N8S7856C22D0Ev,_ZThn48_N8S7856C22D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn104_N8S7856C22D1Ev,_ZThn56_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn104_N8S7856C22D0Ev,_ZThn56_N8S7856C22D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N8S7856C22D1Ev,_ZTv0_n68_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn120_N8S7856C22D1Ev,_ZThn64_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N8S7856C22D0Ev,_ZTv0_n68_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn120_N8S7856C22D0Ev,_ZThn64_N8S7856C22D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn8_n136_N8S7856C22D1Ev,_ZTvn4_n68_N8S7856C22D1Ev)();
extern void ABISELECT(_ZTvn8_n136_N8S7856C22D0Ev,_ZTvn4_n68_N8S7856C22D0Ev)();
extern void _ZN8S7856C192v1Ev();
extern void ABISELECT(_ZTv0_n120_N8S7856C22D1Ev,_ZTv0_n60_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn144_N8S7856C22D1Ev,_ZThn80_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S7856C22D0Ev,_ZTv0_n60_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn144_N8S7856C22D0Ev,_ZThn80_N8S7856C22D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7856C22D1Ev,_ZTv0_n36_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn176_N8S7856C22D1Ev,_ZThn96_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7856C22D0Ev,_ZTv0_n36_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn176_N8S7856C22D0Ev,_ZThn96_N8S7856C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7856C22[] = {
  ABISELECT(176,96),
  ABISELECT(144,80),
  ABISELECT(120,64),
  ABISELECT(104,56),
  ABISELECT(104,56),
  0,
  ABISELECT(88,48),
  ABISELECT(72,40),
  ABISELECT(40,20),
  ABISELECT(56,32),
  ABISELECT(40,20),
  ABISELECT(34,18),
  0,
  0,
  ABISELECT(34,18),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&_ZN8S7856C22D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C22D0Ev,
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-8,-4),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(26,14),
  ABISELECT(-8,-4),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-8,-4),
  ABISELECT(26,14),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7856C22D1Ev,_ZThn4_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7856C22D0Ev,_ZThn4_N8S7856C22D0Ev),
  ABISELECT(10,6),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(10,6),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  ABISELECT(-40,-20),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev),
  ABISELECT(-56,-32),
  ABISELECT(-22,-14),
  ABISELECT(-56,-32),
  ABISELECT(-16,-12),
  ABISELECT(-56,-32),
  ABISELECT(-22,-14),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev),
  ABISELECT(-72,-40),
  ABISELECT(-38,-22),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  ABISELECT(-88,-48),
  ABISELECT(-48,-28),
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev),
  ABISELECT(-104,-56),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-104,-56),
  ABISELECT(-70,-38),
  ABISELECT(-104,-56),
  ABISELECT(-70,-38),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev),
  ABISELECT(8,4),
  ABISELECT(-120,-64),
  ABISELECT(56,32),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-120,-64),
  ABISELECT(-32,-16),
  ABISELECT(-48,-24),
  ABISELECT(-80,-44),
  ABISELECT(-64,-32),
  ABISELECT(-80,-44),
  ABISELECT(24,16),
  ABISELECT(-86,-46),
  ABISELECT(-120,-64),
  ABISELECT(-120,-64),
  ABISELECT(-86,-46),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S7856C22D1Ev,_ZTv0_n68_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S7856C22D0Ev,_ZTv0_n68_N8S7856C22D0Ev),
  ABISELECT(48,28),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-88,-48),
  ABISELECT(-72,-36),
  ABISELECT(-94,-50),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-94,-50),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N8S7856C22D1Ev,_ZTvn4_n68_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N8S7856C22D0Ev,_ZTvn4_n68_N8S7856C22D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
  ABISELECT(-144,-80),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-144,-80),
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-104,-60),
  ABISELECT(-110,-62),
  ABISELECT(-144,-80),
  ABISELECT(-104,-60),
  ABISELECT(-56,-32),
  ABISELECT(-144,-80),
  ABISELECT(-110,-62),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C22D1Ev,_ZTv0_n60_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C22D0Ev,_ZTv0_n60_N8S7856C22D0Ev),
  ABISELECT(-126,-70),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  ABISELECT(-126,-70),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  ABISELECT(-176,-96),
  ABISELECT(-142,-78),
  ABISELECT(-176,-96),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-176,-96),
  ABISELECT(-142,-78),
  ABISELECT(-176,-96),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C22D1Ev,_ZTv0_n36_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C22D0Ev,_ZTv0_n36_N8S7856C22D0Ev),
  ABISELECT(-158,-86),
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  ABISELECT(-158,-86),
  ABISELECT(-192,-104),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
};
extern VTBL_ENTRY _ZTV8S7856C22[];
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C22[] = {
  ABISELECT(34,18),
  0,
  0,
  ABISELECT(34,18),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void _ZN7S7856C5D1Ev();
extern void _ZN7S7856C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C5__A__8S7856C22[] = {
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-8,-4),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(26,14),
  ABISELECT(-8,-4),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-8,-4),
  ABISELECT(26,14),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&_ZN7S7856C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C5D0Ev,
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C187S7856C5__8S7856C22[] = {
  ABISELECT(26,14),
  ABISELECT(-8,-4),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-8,-4),
  ABISELECT(26,14),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C187S7856C5__A1__8S7856C22[] = {
  ABISELECT(-8,-4),
  ABISELECT(26,14),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C187S7856C5__A4__8S7856C22[] = {
  ABISELECT(-8,-4),
  ABISELECT(26,14),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A2__8S7856C22[] = {
  ABISELECT(10,6),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(10,6),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C187S7856C5__A2__8S7856C22[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZThn80_N8S7856C18D1Ev,_ZThn44_N8S7856C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
extern void ABISELECT(_ZThn80_N8S7856C18D0Ev,_ZThn44_N8S7856C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C187S7856C5__8S7856C22[] = {
  ABISELECT(-80,-44),
  ABISELECT(-54,-30),
  ABISELECT(-88,-48),
  ABISELECT(-48,-28),
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C187S7856C5__8S7856C22[] = {
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__A1__8S7856C187S7856C5__8S7856C22[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C187S7856C5__8S7856C22[] = {
  ABISELECT(10,6),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(10,6),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn32_N7S7856C5D1Ev,_ZThn16_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn32_N7S7856C5D0Ev,_ZThn16_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C5__A__8S7856C22[] = {
  ABISELECT(-32,-16),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn48_N7S7856C5D1Ev,_ZThn28_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn48_N7S7856C5D0Ev,_ZThn28_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C5__A__8S7856C22[] = {
  ABISELECT(-48,-28),
  ABISELECT(-22,-14),
  ABISELECT(-56,-32),
  ABISELECT(-16,-12),
  ABISELECT(-56,-32),
  ABISELECT(-22,-14),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__7S7856C5__A__8S7856C22[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C5__A__8S7856C22[] = {
  ABISELECT(-72,-40),
  ABISELECT(-38,-22),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn80_N7S7856C5D1Ev,_ZThn44_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn80_N7S7856C5D0Ev,_ZThn44_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C5__A__8S7856C22[] = {
  ABISELECT(-80,-44),
  ABISELECT(-54,-30),
  ABISELECT(-88,-48),
  ABISELECT(-48,-28),
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn96_N7S7856C5D1Ev,_ZThn52_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn96_N7S7856C5D0Ev,_ZThn52_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C5__A__8S7856C22[] = {
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-104,-56),
  ABISELECT(-70,-38),
  ABISELECT(-104,-56),
  ABISELECT(-70,-38),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__7S7856C5__A__8S7856C22[] = {
  ABISELECT(10,6),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(10,6),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C22[] = {
  0,
  ABISELECT(34,18),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
extern void _ZN7S7856C6D1Ev();
extern void _ZN7S7856C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C22[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&_ZN7S7856C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C6D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn16_N7S7856C6D1Ev,_ZThn12_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn16_N7S7856C6D0Ev,_ZThn12_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C6__8S7856C22[] = {
  ABISELECT(-16,-12),
  ABISELECT(-22,-14),
  ABISELECT(-56,-32),
  ABISELECT(-16,-12),
  ABISELECT(-56,-32),
  ABISELECT(-22,-14),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__7S7856C6__8S7856C22[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C6__8S7856C22[] = {
  ABISELECT(-72,-40),
  ABISELECT(-38,-22),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn48_N7S7856C6D1Ev,_ZThn28_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn48_N7S7856C6D0Ev,_ZThn28_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C6__8S7856C22[] = {
  ABISELECT(-48,-28),
  ABISELECT(-54,-30),
  ABISELECT(-88,-48),
  ABISELECT(-48,-28),
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
extern void _ZN7S7856C7D1Ev();
extern void _ZN7S7856C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C22[] = {
  ABISELECT(-22,-14),
  ABISELECT(-56,-32),
  ABISELECT(-16,-12),
  ABISELECT(-56,-32),
  ABISELECT(-22,-14),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
  (VTBL_ENTRY)&_ZN7S7856C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C7D0Ev,
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C137S7856C7__8S7856C22[] = {
  ABISELECT(-22,-14),
  ABISELECT(-56,-32),
  ABISELECT(-16,-12),
  ABISELECT(-56,-32),
  ABISELECT(-22,-14),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C137S7856C7__A1__8S7856C22[] = {
  ABISELECT(-56,-32),
  ABISELECT(-22,-14),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C137S7856C7__8S7856C22[] = {
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__A1__8S7856C137S7856C7__8S7856C22[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C7__8S7856C22[] = {
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__7S7856C7__8S7856C22[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A1__8S7856C22[] = {
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C10__A1__8S7856C22[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C22[] = {
  ABISELECT(-72,-40),
  ABISELECT(-38,-22),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C14__A2__8S7856C22[] = {
  ABISELECT(-72,-40),
  ABISELECT(-38,-22),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__8S7856C22[] = {
  ABISELECT(-54,-30),
  ABISELECT(-88,-48),
  ABISELECT(-48,-28),
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C13__A3__8S7856C22[] = {
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C13__A1__8S7856C22[] = {
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__A1__8S7856C13__A1__8S7856C22[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
extern void _ZN8S7856C16D1Ev();
extern void _ZN8S7856C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C22[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-104,-56),
  ABISELECT(-70,-38),
  ABISELECT(-104,-56),
  ABISELECT(-70,-38),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&_ZN8S7856C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C16__8S7856C22[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(104,56),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C16__8S7856C22[] = {
  ABISELECT(-72,-40),
  ABISELECT(-38,-22),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C16__8S7856C22[] = {
  ABISELECT(48,24),
  ABISELECT(-22,-14),
  ABISELECT(-56,-32),
  ABISELECT(-16,-12),
  ABISELECT(-56,-32),
  ABISELECT(-22,-14),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C16__8S7856C22[] = {
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt__8S7856C22[] = {
  ABISELECT(-70,-38),
  0,
  (VTBL_ENTRY)&(_ZTI11S7856C17_nt[0]),
};
extern void _ZN7S7856C4D1Ev();
extern void _ZN7S7856C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C4__8S7856C22[] = {
  ABISELECT(56,32),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-120,-64),
  ABISELECT(-32,-16),
  ABISELECT(-48,-24),
  ABISELECT(-80,-44),
  ABISELECT(-64,-32),
  ABISELECT(-80,-44),
  ABISELECT(24,16),
  ABISELECT(-86,-46),
  ABISELECT(-120,-64),
  ABISELECT(-120,-64),
  ABISELECT(-86,-46),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&_ZN7S7856C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C4D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C107S7856C4__A4__8S7856C22[] = {
  ABISELECT(-86,-46),
  ABISELECT(-120,-64),
  ABISELECT(-120,-64),
  ABISELECT(-86,-46),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C107S7856C4__A4__8S7856C22[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(120,64),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void _ZN8S7856C19D1Ev();
extern void _ZN8S7856C19D0Ev();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C197S7856C4__8S7856C22[] = {
  ABISELECT(48,28),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-88,-48),
  ABISELECT(-72,-36),
  ABISELECT(-94,-50),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-94,-50),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&_ZN8S7856C19D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C19D0Ev,
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void _ZN7S7856C6D1Ev();
extern void _ZN7S7856C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C68S7856C197S7856C4__A1__8S7856C22[] = {
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-88,-48),
  ABISELECT(-72,-36),
  ABISELECT(-94,-50),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-94,-50),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&_ZN7S7856C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C6D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C68S7856C197S7856C4__A1__8S7856C22[] = {
  ABISELECT(72,36),
  ABISELECT(-22,-14),
  ABISELECT(-56,-32),
  ABISELECT(-16,-12),
  ABISELECT(-56,-32),
  ABISELECT(-22,-14),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C68S7856C197S7856C4__A1__8S7856C22[] = {
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__7S7856C68S7856C197S7856C4__A1__8S7856C22[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C68S7856C197S7856C4__A1__8S7856C22[] = {
  ABISELECT(-72,-40),
  ABISELECT(-38,-22),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C68S7856C197S7856C4__A1__8S7856C22[] = {
  ABISELECT(40,20),
  ABISELECT(-54,-30),
  ABISELECT(-88,-48),
  ABISELECT(-48,-28),
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C197S7856C4__8S7856C22[] = {
  ABISELECT(72,36),
  ABISELECT(-22,-14),
  ABISELECT(-56,-32),
  ABISELECT(-16,-12),
  ABISELECT(-56,-32),
  ABISELECT(-22,-14),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C197S7856C4__8S7856C22[] = {
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C197S7856C4__8S7856C22[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C197S7856C4__8S7856C22[] = {
  ABISELECT(-72,-40),
  ABISELECT(-38,-22),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__8S7856C197S7856C4__8S7856C22[] = {
  ABISELECT(40,20),
  ABISELECT(-54,-30),
  ABISELECT(-88,-48),
  ABISELECT(-48,-28),
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev),
};
extern void ABISELECT(_ZTv0_n72_N8S7856C19D1Ev,_ZTv0_n36_N8S7856C19D1Ev)();
extern void ABISELECT(_ZThn48_N8S7856C19D1Ev,_ZThn28_N8S7856C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7856C19D0Ev,_ZTv0_n36_N8S7856C19D0Ev)();
extern void ABISELECT(_ZThn48_N8S7856C19D0Ev,_ZThn28_N8S7856C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C18__8S7856C197S7856C4__8S7856C22[] = {
  ABISELECT(-48,-28),
  ABISELECT(-142,-78),
  ABISELECT(-176,-96),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-176,-96),
  ABISELECT(-142,-78),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C19D1Ev,_ZTv0_n36_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C19D0Ev,_ZTv0_n36_N8S7856C19D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__8S7856C197S7856C4__8S7856C22[] = {
  ABISELECT(-158,-86),
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  ABISELECT(-158,-86),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
extern void ABISELECT(_ZTv0_n120_N7S7856C4D1Ev,_ZTv0_n60_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn24_N7S7856C4D1Ev,_ZThn16_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S7856C4D0Ev,_ZTv0_n60_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn24_N7S7856C4D0Ev,_ZThn16_N7S7856C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C5__7S7856C4__8S7856C22[] = {
  ABISELECT(-24,-16),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-144,-80),
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-104,-60),
  ABISELECT(-110,-62),
  ABISELECT(-144,-80),
  ABISELECT(-104,-60),
  ABISELECT(-56,-32),
  ABISELECT(-144,-80),
  ABISELECT(-110,-62),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C4D1Ev,_ZTv0_n60_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C4D0Ev,_ZTv0_n60_N7S7856C4D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C4__8S7856C22[] = {
  ABISELECT(80,44),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C4__8S7856C22[] = {
  ABISELECT(64,32),
  ABISELECT(-22,-14),
  ABISELECT(-56,-32),
  ABISELECT(-16,-12),
  ABISELECT(-56,-32),
  ABISELECT(-22,-14),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__7S7856C4__8S7856C22[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(120,64),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C4__8S7856C22[] = {
  ABISELECT(-72,-40),
  ABISELECT(-38,-22),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C4__8S7856C22[] = {
  ABISELECT(32,16),
  ABISELECT(-54,-30),
  ABISELECT(-88,-48),
  ABISELECT(-48,-28),
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C4__8S7856C22[] = {
  ABISELECT(16,8),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-104,-56),
  ABISELECT(-70,-38),
  ABISELECT(-104,-56),
  ABISELECT(-70,-38),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__7S7856C4__8S7856C22[] = {
  ABISELECT(-126,-70),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  ABISELECT(-126,-70),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
extern void ABISELECT(_ZThn8_N7S7856C4D1Ev,_ZThn4_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn8_N7S7856C4D0Ev,_ZThn4_N7S7856C4D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C19__7S7856C4__8S7856C22[] = {
  ABISELECT(48,28),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-88,-48),
  ABISELECT(-72,-36),
  ABISELECT(-94,-50),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-94,-50),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7856C4D1Ev,_ZThn4_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7856C4D0Ev,_ZThn4_N7S7856C4D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N7S7856C4D1Ev,_ZTv0_n36_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn56_N7S7856C4D1Ev,_ZThn32_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7856C4D0Ev,_ZTv0_n36_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn56_N7S7856C4D0Ev,_ZThn32_N7S7856C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C18__A1__7S7856C4__8S7856C22[] = {
  ABISELECT(-56,-32),
  ABISELECT(-142,-78),
  ABISELECT(-176,-96),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-176,-96),
  ABISELECT(-142,-78),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7856C4D1Ev,_ZTv0_n36_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7856C4D0Ev,_ZTv0_n36_N7S7856C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A3__7S7856C4__8S7856C22[] = {
  ABISELECT(-158,-86),
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  ABISELECT(-158,-86),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
extern void _ZN7S7856C5D1Ev();
extern void _ZN7S7856C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C5__A1__8S7856C22[] = {
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-144,-80),
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-104,-60),
  ABISELECT(-110,-62),
  ABISELECT(-144,-80),
  ABISELECT(-104,-60),
  ABISELECT(-56,-32),
  ABISELECT(-144,-80),
  ABISELECT(-110,-62),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&_ZN7S7856C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C5D0Ev,
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C187S7856C5__A1__8S7856C22[] = {
  ABISELECT(-110,-62),
  ABISELECT(-144,-80),
  ABISELECT(-104,-60),
  ABISELECT(-56,-32),
  ABISELECT(-144,-80),
  ABISELECT(-110,-62),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C187S7856C5__A2__8S7856C22[] = {
  ABISELECT(-144,-80),
  ABISELECT(-110,-62),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C187S7856C5__A5__8S7856C22[] = {
  ABISELECT(-144,-80),
  ABISELECT(-110,-62),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A3__8S7856C22[] = {
  ABISELECT(-126,-70),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  ABISELECT(-126,-70),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C187S7856C5__A3__8S7856C22[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(160,88),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C187S7856C5__A1__8S7856C22[] = {
  ABISELECT(56,32),
  ABISELECT(-54,-30),
  ABISELECT(-88,-48),
  ABISELECT(-48,-28),
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C187S7856C5__A1__8S7856C22[] = {
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(104,60),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__A1__8S7856C187S7856C5__A1__8S7856C22[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(144,80),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C187S7856C5__A1__8S7856C22[] = {
  ABISELECT(-126,-70),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  ABISELECT(-126,-70),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C5__A1__8S7856C22[] = {
  ABISELECT(104,60),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(104,60),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C5__A1__8S7856C22[] = {
  ABISELECT(88,48),
  ABISELECT(-22,-14),
  ABISELECT(-56,-32),
  ABISELECT(-16,-12),
  ABISELECT(-56,-32),
  ABISELECT(-22,-14),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__7S7856C5__A1__8S7856C22[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(144,80),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C5__A1__8S7856C22[] = {
  ABISELECT(-72,-40),
  ABISELECT(-38,-22),
  ABISELECT(72,40),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C5__A1__8S7856C22[] = {
  ABISELECT(56,32),
  ABISELECT(-54,-30),
  ABISELECT(-88,-48),
  ABISELECT(-48,-28),
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C5__A1__8S7856C22[] = {
  ABISELECT(40,24),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-104,-56),
  ABISELECT(-70,-38),
  ABISELECT(-104,-56),
  ABISELECT(-70,-38),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__7S7856C5__A1__8S7856C22[] = {
  ABISELECT(-126,-70),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  ABISELECT(-126,-70),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C18__A2__8S7856C22[] = {
  ABISELECT(-142,-78),
  ABISELECT(-176,-96),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-176,-96),
  ABISELECT(-142,-78),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C18__A3__8S7856C22[] = {
  ABISELECT(-176,-96),
  ABISELECT(-142,-78),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C18__A6__8S7856C22[] = {
  ABISELECT(-176,-96),
  ABISELECT(-142,-78),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A5__8S7856C22[] = {
  ABISELECT(-158,-86),
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  ABISELECT(-158,-86),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C18__A5__8S7856C22[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(192,104),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C18__A2__8S7856C22[] = {
  ABISELECT(88,48),
  ABISELECT(-54,-30),
  ABISELECT(-88,-48),
  ABISELECT(-48,-28),
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C18__A2__8S7856C22[] = {
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(136,76),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__A1__8S7856C18__A2__8S7856C22[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(176,96),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C18__A2__8S7856C22[] = {
  ABISELECT(-158,-86),
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  ABISELECT(-158,-86),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTT_ENTRY vtt_S7856C22[] = {
  {&(_ZTV8S7856C22[17]),  17,165},
  {&(_tg__ZTV8S7856C10__A__8S7856C22[6]),  6,6},
  {&(_tg__ZTV8S7856C10__A__8S7856C22[6]),  6,6},
  {&(_tg__ZTV7S7856C5__A__8S7856C22[14]),  14,16},
  {&(_tg__ZTV8S7856C187S7856C5__8S7856C22[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C187S7856C5__A1__8S7856C22[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C187S7856C5__A4__8S7856C22[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A2__8S7856C22[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C187S7856C5__A2__8S7856C22[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C187S7856C5__8S7856C22[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C5__8S7856C22[6]),  6,6},
  {&(_tg__ZTV8S7856C11__A1__8S7856C187S7856C5__8S7856C22[4]),  4,4},
  {&(_tg__ZTV8S7856C10__A__8S7856C187S7856C5__8S7856C22[6]),  6,6},
  {&(_tg__ZTV7S7856C6__7S7856C5__A__8S7856C22[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C5__A__8S7856C22[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C5__A__8S7856C22[11]),  11,13},
  {&(_tg__ZTV8S7856C11__7S7856C5__A__8S7856C22[4]),  4,4},
  {&(_tg__ZTV8S7856C14__7S7856C5__A__8S7856C22[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C5__A__8S7856C22[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C5__A__8S7856C22[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C5__A__8S7856C22[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C18__A1__7S7856C5__A__8S7856C22[6]),  6,6},
  {&(_ZTV8S7856C22[17]),  17,165},
  {&(_ZTV8S7856C22[52]),  52,165},
  {&(_ZTV8S7856C22[62]),  62,165},
  {&(_ZTV8S7856C22[52]),  52,165},
  {&(_ZTV8S7856C22[68]),  68,165},
  {&(_ZTV8S7856C22[76]),  76,165},
  {&(_ZTV8S7856C22[33]),  33,165},
  {&(_ZTV8S7856C22[89]),  89,165},
  {&(_ZTV8S7856C22[89]),  89,165},
  {&(_ZTV8S7856C22[41]),  41,165},
  {&(_ZTV8S7856C22[109]),  109,165},
  {&(_ZTV8S7856C22[140]),  140,165},
  {&(_ZTV8S7856C22[148]),  148,165},
  {&(_ZTV8S7856C22[122]),  122,165},
  {&(_ZTV8S7856C22[157]),  157,165},
  {&(_ZTV8S7856C22[165]),  165,165},
  {&(_tg__ZTV8S7856C11__8S7856C22[4]),  4,4},
  {&(_tg__ZTV7S7856C6__8S7856C22[10]),  10,12},
  {&(_tg__ZTV7S7856C7__7S7856C6__8S7856C22[8]),  8,10},
  {&(_tg__ZTV7S7856C6__8S7856C22[10]),  10,12},
  {&(_tg__ZTV8S7856C11__7S7856C6__8S7856C22[4]),  4,4},
  {&(_tg__ZTV8S7856C14__7S7856C6__8S7856C22[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C6__8S7856C22[8]),  8,10},
  {&(_tg__ZTV7S7856C7__8S7856C22[7]),  7,9},
  {&(_tg__ZTV8S7856C137S7856C7__8S7856C22[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C137S7856C7__A1__8S7856C22[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C7__8S7856C22[6]),  6,6},
  {&(_tg__ZTV8S7856C11__A1__8S7856C137S7856C7__8S7856C22[4]),  4,4},
  {&(_tg__ZTV8S7856C10__7S7856C7__8S7856C22[6]),  6,6},
  {&(_tg__ZTV8S7856C11__7S7856C7__8S7856C22[4]),  4,4},
  {&(_tg__ZTV8S7856C10__A1__8S7856C22[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C10__A1__8S7856C22[4]),  4,4},
  {&(_tg__ZTV8S7856C14__8S7856C22[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C14__A2__8S7856C22[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__8S7856C22[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C13__A3__8S7856C22[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C13__A1__8S7856C22[6]),  6,6},
  {&(_tg__ZTV8S7856C11__A1__8S7856C13__A1__8S7856C22[4]),  4,4},
  {&(_tg__ZTV8S7856C16__8S7856C22[10]),  10,12},
  {&(_tg__ZTV8S7856C11__8S7856C16__8S7856C22[4]),  4,4},
  {&(_tg__ZTV8S7856C16__8S7856C22[10]),  10,12},
  {&(_tg__ZTV8S7856C14__8S7856C16__8S7856C22[4]),  4,4},
  {&(_tg__ZTV7S7856C7__8S7856C16__8S7856C22[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C16__8S7856C22[6]),  6,6},
  {&(_tg__ZTV11S7856C17_nt__8S7856C22[3]),  3,3},
  {&(_tg__ZTV7S7856C4__8S7856C22[16]),  16,18},
  {&(_tg__ZTV8S7856C107S7856C4__A4__8S7856C22[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C107S7856C4__A4__8S7856C22[4]),  4,4},
  {&(_tg__ZTV8S7856C197S7856C4__8S7856C22[11]),  11,14},
  {&(_tg__ZTV7S7856C68S7856C197S7856C4__A1__8S7856C22[10]),  10,12},
  {&(_tg__ZTV7S7856C7__7S7856C68S7856C197S7856C4__A1__8S7856C22[8]),  8,10},
  {&(_tg__ZTV8S7856C10__7S7856C68S7856C197S7856C4__A1__8S7856C22[6]),  6,6},
  {&(_tg__ZTV8S7856C11__7S7856C68S7856C197S7856C4__A1__8S7856C22[4]),  4,4},
  {&(_tg__ZTV8S7856C14__7S7856C68S7856C197S7856C4__A1__8S7856C22[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C68S7856C197S7856C4__A1__8S7856C22[8]),  8,10},
  {&(_tg__ZTV7S7856C7__8S7856C197S7856C4__8S7856C22[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C197S7856C4__8S7856C22[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C197S7856C4__8S7856C22[4]),  4,4},
  {&(_tg__ZTV8S7856C14__8S7856C197S7856C4__8S7856C22[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__8S7856C197S7856C4__8S7856C22[8]),  8,10},
  {&(_tg__ZTV8S7856C18__8S7856C197S7856C4__8S7856C22[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A1__8S7856C197S7856C4__8S7856C22[6]),  6,6},
  {&(_tg__ZTV7S7856C5__7S7856C4__8S7856C22[15]),  15,17},
  {&(_tg__ZTV7S7856C6__7S7856C4__8S7856C22[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C4__8S7856C22[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C4__8S7856C22[11]),  11,13},
  {&(_tg__ZTV8S7856C11__7S7856C4__8S7856C22[4]),  4,4},
  {&(_tg__ZTV8S7856C14__7S7856C4__8S7856C22[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C4__8S7856C22[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C4__8S7856C22[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C4__8S7856C22[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__7S7856C4__8S7856C22[6]),  6,6},
  {&(_tg__ZTV8S7856C19__7S7856C4__8S7856C22[11]),  11,14},
  {&(_tg__ZTV8S7856C18__A1__7S7856C4__8S7856C22[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A3__7S7856C4__8S7856C22[6]),  6,6},
  {&(_tg__ZTV7S7856C5__A1__8S7856C22[14]),  14,16},
  {&(_tg__ZTV8S7856C187S7856C5__A1__8S7856C22[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C187S7856C5__A2__8S7856C22[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C187S7856C5__A5__8S7856C22[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A3__8S7856C22[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C187S7856C5__A3__8S7856C22[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C187S7856C5__A1__8S7856C22[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C5__A1__8S7856C22[6]),  6,6},
  {&(_tg__ZTV8S7856C11__A1__8S7856C187S7856C5__A1__8S7856C22[4]),  4,4},
  {&(_tg__ZTV8S7856C10__A__8S7856C187S7856C5__A1__8S7856C22[6]),  6,6},
  {&(_tg__ZTV7S7856C6__7S7856C5__A1__8S7856C22[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C5__A1__8S7856C22[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C5__A1__8S7856C22[11]),  11,13},
  {&(_tg__ZTV8S7856C11__7S7856C5__A1__8S7856C22[4]),  4,4},
  {&(_tg__ZTV8S7856C14__7S7856C5__A1__8S7856C22[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C5__A1__8S7856C22[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C5__A1__8S7856C22[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C5__A1__8S7856C22[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C18__A1__7S7856C5__A1__8S7856C22[6]),  6,6},
  {&(_tg__ZTV8S7856C18__A2__8S7856C22[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C18__A3__8S7856C22[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C18__A6__8S7856C22[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C18__A5__8S7856C22[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C18__A5__8S7856C22[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C18__A2__8S7856C22[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C18__A2__8S7856C22[6]),  6,6},
  {&(_tg__ZTV8S7856C11__A1__8S7856C18__A2__8S7856C22[4]),  4,4},
  {&(_tg__ZTV8S7856C10__A__8S7856C18__A2__8S7856C22[6]),  6,6},
};
extern VTBL_ENTRY _ZTI8S7856C22[];
extern  VTBL_ENTRY _ZTV8S7856C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C22[];
static VTBL_ENTRY alt_thunk_names20[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7856C4D0Ev,_ZTv0_n36_N7S7856C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7856C4D0Ev,_ZThn32_N7S7856C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7856C4D1Ev,_ZTv0_n36_N7S7856C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7856C4D1Ev,_ZThn32_N7S7856C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7856C4D0Ev,_ZTv0_n60_N7S7856C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7856C4D0Ev,_ZThn16_N7S7856C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7856C4D1Ev,_ZTv0_n60_N7S7856C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7856C4D1Ev,_ZThn16_N7S7856C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C19D0Ev,_ZTv0_n36_N8S7856C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7856C19D0Ev,_ZThn28_N8S7856C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C19D1Ev,_ZTv0_n36_N8S7856C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7856C19D1Ev,_ZThn28_N8S7856C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C6D0Ev,_ZThn28_N7S7856C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7856C6D0Ev,_ZThn12_N7S7856C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C6D1Ev,_ZThn28_N7S7856C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7856C6D1Ev,_ZThn12_N7S7856C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7856C5D0Ev,_ZThn44_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C5D0Ev,_ZThn28_N7S7856C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7856C5D1Ev,_ZThn44_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C5D1Ev,_ZThn28_N7S7856C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7856C5D0Ev,_ZThn52_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7856C5D0Ev,_ZThn16_N7S7856C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7856C5D1Ev,_ZThn52_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7856C5D1Ev,_ZThn16_N7S7856C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7856C18D0Ev,_ZThn44_N8S7856C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7856C18D1Ev,_ZThn44_N8S7856C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C22D0Ev,_ZTv0_n36_N8S7856C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S7856C22D0Ev,_ZThn96_N8S7856C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C22D1Ev,_ZTv0_n36_N8S7856C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S7856C22D1Ev,_ZThn96_N8S7856C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C22D0Ev,_ZTv0_n60_N8S7856C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7856C22D0Ev,_ZThn80_N8S7856C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C22D1Ev,_ZTv0_n60_N8S7856C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7856C22D1Ev,_ZThn80_N8S7856C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N8S7856C22D0Ev,_ZTv0_n68_N8S7856C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7856C22D0Ev,_ZThn64_N8S7856C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N8S7856C22D1Ev,_ZTv0_n68_N8S7856C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7856C22D1Ev,_ZThn64_N8S7856C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7856C22D0Ev,_ZThn48_N8S7856C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7856C22D0Ev,_ZThn32_N8S7856C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7856C22D1Ev,_ZThn48_N8S7856C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7856C22D1Ev,_ZThn32_N8S7856C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7856C22D0Ev,_ZThn56_N8S7856C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S7856C22D0Ev,_ZThn20_N8S7856C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7856C22D1Ev,_ZThn56_N8S7856C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S7856C22D1Ev,_ZThn20_N8S7856C22D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7856C22 = {  "S7856C22", // class name
  bases_S7856C22, 65,
  &(vtc_S7856C22[0]), // expected_vtbl_contents
  &(vtt_S7856C22[0]), // expected_vtt_contents
  ABISELECT(208,112), // object size
  NSPAIRA(_ZTI8S7856C22),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S7856C22),165, //virtual function table var
  17, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7856C22),125, //virtual table table var
  31, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names20,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7856C24  {
  void  mf7856c24(); // _ZN8S7856C249mf7856c24Ev
};
//SIG(-1 S7856C24) C1{ m}


void  S7856C24 ::mf7856c24(){}

static void Test_S7856C24()
{
  {
    init_simple_test("S7856C24");
    S7856C24 lv;
    check2(sizeof(lv), 1, "sizeof(S7856C24)");
    check2(__alignof__(lv), 1, "__alignof__(S7856C24)");
  }
}
static Arrange_To_Call_Me vS7856C24(Test_S7856C24, "S7856C24", 1);

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S7856C26  : virtual S7856C9_nt {
  ~S7856C26(); // tgen
  S7856C26(); // tgen
};
//SIG(-1 S7856C26) C1{ VBC2{ m}}


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

static void Test_S7856C26()
{
  extern Class_Descriptor cd_S7856C26;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7856C26, buf);
    S7856C26 *dp, &lv = *(dp=new (buf) S7856C26());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7856C26)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7856C26)");
    check_base_class_offset(lv, (S7856C9_nt*), 0, "S7856C26");
    test_class_info(&lv, &cd_S7856C26);
    dp->~S7856C26();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7856C26(Test_S7856C26, "S7856C26", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S7856C26C1Ev();
extern void _ZN8S7856C26D1Ev();
Name_Map name_map_S7856C26[] = {
  NSPAIR(_ZN8S7856C26C1Ev),
  NSPAIR(_ZN8S7856C26D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
static Base_Class bases_S7856C26[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7856C26[];
static  VTBL_ENTRY vtc_S7856C26[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C26[0]),
};
extern VTBL_ENTRY _ZTV8S7856C26[];
static  VTT_ENTRY vtt_S7856C26[] = {
  {&(_ZTV8S7856C26[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S7856C26[];
extern  VTBL_ENTRY _ZTV8S7856C26[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C26[];
Class_Descriptor cd_S7856C26 = {  "S7856C26", // class name
  bases_S7856C26, 1,
  &(vtc_S7856C26[0]), // expected_vtbl_contents
  &(vtt_S7856C26[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S7856C26),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S7856C26),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7856C26),1, //virtual table table var
  0, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7856C29  : virtual S7856C7 , virtual S7856C5 {
  virtual  ~S7856C29(); // _ZN8S7856C29D2Ev
  S7856C29(); // tgen
};
//SIG(-1 S7856C29) C1{ VBC2{ VBC3{ m} VBC4{ m} VBC5{ BC3 VBC6{ VBC3 BC4 VBC7{ m}} VBC4} BC7 BC8{ BC4 VBC3 VBC7 BC6 VBC5 vd} vd} VBC9{ VBC10{ VBC2 VBC11{ BC7 BC4 BC6 Fi} VBC8 vd Fi[2]} VBC12{ m} VBC13{ VBC6 VBC14{ VBC4} VBC11 BC7 VBC2 vd Fi} BC15{ VBC8 BC11 BC5 BC7 vd} vd} vd}


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

static void Test_S7856C29()
{
  extern Class_Descriptor cd_S7856C29;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,17)];
    init_test(&cd_S7856C29, buf);
    S7856C29 *dp, &lv = *(dp=new (buf) S7856C29());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,64), "sizeof(S7856C29)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7856C29)");
    /*is_ambiguous_... S7856C7::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C7*), ABISELECT(17,9), "S7856C29");
    /*is_ambiguous_... S7856C29::S7856C11 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*), ABISELECT(17,9), "S7856C29");
    /*is_ambiguous_... S7856C13::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*)(S7856C7*), ABISELECT(17,9), "S7856C29");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(17,9), "S7856C29");
    /*is_ambiguous_... S7856C29::S7856C14 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*), ABISELECT(17,9), "S7856C29");
    /*is_ambiguous_... S7856C29::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*), ABISELECT(17,9), "S7856C29");
    /*is_ambiguous_... S7856C29::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*), ABISELECT(17,9), "S7856C29");
    check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(17,9), "S7856C29");
    /*is_ambiguous_... S7856C7::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C7*), ABISELECT(17,9), "S7856C29");
    /*is_ambiguous_... S7856C29::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*), ABISELECT(17,9), "S7856C29");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C17_nt*), ABISELECT(17,9), "S7856C29");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(17,9), "S7856C29");
    /*is_ambiguous_... S7856C29::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*), 0, "S7856C29");
    /*is_ambiguous_... S7856C29::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*), 0, "S7856C29");
    /*is_ambiguous_... S7856C29::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*), 0, "S7856C29");
    check_base_class_offset(lv, (S7856C12*)(S7856C13*)(S7856C7*), 0, "S7856C29");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*)(S7856C7*), 0, "S7856C29");
    /*is_ambiguous_... S7856C29::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*), 0, "S7856C29");
    /*is_ambiguous_... S7856C29::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*), 0, "S7856C29");
    /*is_ambiguous_... S7856C29::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*), 0, "S7856C29");
    check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), 0, "S7856C29");
    /*is_ambiguous_... S7856C29::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*), 0, "S7856C29");
    /*is_ambiguous_... S7856C16::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C16*), 0, "S7856C29");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*)(S7856C5*), 0, "S7856C29");
    check_base_class_offset(lv, (S7856C10*)(S7856C7*), 0, "S7856C29");
    check_base_class_offset(lv, (S7856C10*)(S7856C13*)(S7856C7*), 0, "S7856C29");
    /*is_ambiguous_... S7856C29::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*), 0, "S7856C29");
    /*is_ambiguous_... S7856C7::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C7*), ABISELECT(8,4), "S7856C29");
    /*is_ambiguous_... S7856C13::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*)(S7856C7*), ABISELECT(16,8), "S7856C29");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(8,4), "S7856C29");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(8,4), "S7856C29");
    check_base_class_offset(lv, (S7856C13*)(S7856C7*), ABISELECT(8,4), "S7856C29");
    check_base_class_offset(lv, (S7856C7*), ABISELECT(8,4), "S7856C29");
    check_base_class_offset(lv, (S7856C7*)(S7856C6*), ABISELECT(8,4), "S7856C29");
    check_base_class_offset(lv, (S7856C7*)(S7856C16*), ABISELECT(8,4), "S7856C29");
    /*is_ambiguous_... S7856C29::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*), ABISELECT(72,40), "S7856C29");
    /*is_ambiguous_... S7856C29::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*), ABISELECT(80,44), "S7856C29");
    /*is_ambiguous_... S7856C29::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*), ABISELECT(72,40), "S7856C29");
    /*is_ambiguous_... S7856C29::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*), ABISELECT(72,40), "S7856C29");
    check_base_class_offset(lv, (S7856C14*)(S7856C6*), ABISELECT(72,40), "S7856C29");
    check_base_class_offset(lv, (S7856C14*)(S7856C16*), ABISELECT(72,40), "S7856C29");
    /*is_ambiguous_... S7856C29::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*), ABISELECT(96,52), "S7856C29");
    /*is_ambiguous_... S7856C29::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*), ABISELECT(88,48), "S7856C29");
    /*is_ambiguous_... S7856C29::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*), ABISELECT(88,48), "S7856C29");
    /*is_ambiguous_... S7856C6::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C6*), ABISELECT(88,48), "S7856C29");
    check_base_class_offset(lv, (S7856C13*)(S7856C18*)(S7856C5*), ABISELECT(88,48), "S7856C29");
    check_base_class_offset(lv, (S7856C6*)(S7856C5*), ABISELECT(56,28), "S7856C29");
    check_base_class_offset(lv, (S7856C15*)(S7856C5*), 0, "S7856C29");
    check_base_class_offset(lv, (S7856C17_nt*)(S7856C16*), ABISELECT(104,56), "S7856C29");
    /*is_ambiguous_... S7856C16::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C16*), ABISELECT(104,56), "S7856C29");
    check_base_class_offset(lv, (S7856C16*)(S7856C5*), ABISELECT(104,56), "S7856C29");
    /*is_ambiguous_... S7856C14::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(24,12), "S7856C29");
    /*is_ambiguous_... S7856C14::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(32,16), "S7856C29");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(24,12), "S7856C29");
    check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(24,12), "S7856C29");
    check_base_class_offset(lv, (S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(24,12), "S7856C29");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(40,20), "S7856C29");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(40,20), "S7856C29");
    /*is_ambiguous_... S7856C18::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*)(S7856C5*), ABISELECT(48,24), "S7856C29");
    check_base_class_offset(lv, (S7856C18*)(S7856C5*), ABISELECT(24,12), "S7856C29");
    check_base_class_offset(lv, (S7856C5*), ABISELECT(24,12), "S7856C29");
    test_class_info(&lv, &cd_S7856C29);
    dp->~S7856C29();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7856C29(Test_S7856C29, "S7856C29", ABISELECT(120,64));

#else // __cplusplus

extern void _ZN8S7856C29C1Ev();
extern void _ZN8S7856C29D2Ev();
Name_Map name_map_S7856C29[] = {
  NSPAIR(_ZN8S7856C29C1Ev),
  NSPAIR(_ZN8S7856C29D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C7;
extern VTBL_ENTRY _ZTI7S7856C7[];
extern  VTBL_ENTRY _ZTV7S7856C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C7[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C6;
extern VTBL_ENTRY _ZTI7S7856C6[];
extern  VTBL_ENTRY _ZTV7S7856C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C6[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C17_nt;
extern VTBL_ENTRY _ZTI11S7856C17_nt[];
extern  VTBL_ENTRY _ZTV11S7856C17_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S7856C17_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C16;
extern VTBL_ENTRY _ZTI8S7856C16[];
extern  VTBL_ENTRY _ZTV8S7856C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C16[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C5;
extern VTBL_ENTRY _ZTI7S7856C5[];
extern  VTBL_ENTRY _ZTV7S7856C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C5[];
static Base_Class bases_S7856C29[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S77C13_nt,    ABISELECT(17,9), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(17,9), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C7,    ABISELECT(8,4), //bcp->offset
    17, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(72,40), //bcp->offset
    63, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(88,48), //bcp->offset
    67, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C6,    ABISELECT(56,28), //bcp->offset
    50, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S7856C17_nt,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7856C16,    ABISELECT(104,56), //bcp->offset
    77, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(40,20), //bcp->offset
    44, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S7856C5,    ABISELECT(24,12), //bcp->offset
    27, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7856C29[];
extern void _ZN8S7856C29D1Ev();
extern void _ZN8S7856C29D0Ev();
extern void ABISELECT(_ZTv0_n64_N8S7856C29D1Ev,_ZTv0_n32_N8S7856C29D1Ev)();
extern void ABISELECT(_ZThn8_N8S7856C29D1Ev,_ZThn4_N8S7856C29D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C29D0Ev,_ZTv0_n32_N8S7856C29D0Ev)();
extern void ABISELECT(_ZThn8_N8S7856C29D0Ev,_ZThn4_N8S7856C29D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S7856C29D1Ev,_ZTv0_n60_N8S7856C29D1Ev)();
extern void ABISELECT(_ZThn24_N8S7856C29D1Ev,_ZThn12_N8S7856C29D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S7856C29D0Ev,_ZTv0_n60_N8S7856C29D0Ev)();
extern void ABISELECT(_ZThn24_N8S7856C29D0Ev,_ZThn12_N8S7856C29D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C29D1Ev,_ZTv0_n44_N8S7856C29D1Ev)();
extern void ABISELECT(_ZThn56_N8S7856C29D1Ev,_ZThn28_N8S7856C29D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C29D0Ev,_ZTv0_n44_N8S7856C29D0Ev)();
extern void ABISELECT(_ZThn56_N8S7856C29D0Ev,_ZThn28_N8S7856C29D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C29D1Ev,_ZTv0_n32_N8S7856C29D1Ev)();
extern void ABISELECT(_ZThn88_N8S7856C29D1Ev,_ZThn48_N8S7856C29D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C29D0Ev,_ZTv0_n32_N8S7856C29D0Ev)();
extern void ABISELECT(_ZThn88_N8S7856C29D0Ev,_ZThn48_N8S7856C29D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C29D1Ev,_ZTv0_n44_N8S7856C29D1Ev)();
extern void ABISELECT(_ZThn104_N8S7856C29D1Ev,_ZThn56_N8S7856C29D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C29D0Ev,_ZTv0_n44_N8S7856C29D0Ev)();
extern void ABISELECT(_ZThn104_N8S7856C29D0Ev,_ZThn56_N8S7856C29D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7856C29[] = {
  ABISELECT(104,56),
  ABISELECT(104,56),
  0,
  ABISELECT(88,48),
  ABISELECT(72,40),
  ABISELECT(56,28),
  ABISELECT(24,12),
  0,
  ABISELECT(8,4),
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&_ZN8S7856C29D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C29D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C29D1Ev,_ZTv0_n32_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C29D0Ev,_ZTv0_n32_N8S7856C29D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(80,44),
  ABISELECT(80,44),
  ABISELECT(-24,-12),
  ABISELECT(48,28),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(-7,-3),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(64,36),
  ABISELECT(-24,-12),
  ABISELECT(-7,-3),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C29D1Ev,_ZTv0_n60_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C29D0Ev,_ZTv0_n60_N8S7856C29D0Ev),
  ABISELECT(-23,-11),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-23,-11),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  ABISELECT(-56,-28),
  ABISELECT(32,20),
  ABISELECT(16,12),
  ABISELECT(-56,-28),
  ABISELECT(-48,-24),
  ABISELECT(-39,-19),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-39,-19),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C29D1Ev,_ZTv0_n44_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C29D0Ev,_ZTv0_n44_N8S7856C29D0Ev),
  ABISELECT(-72,-40),
  ABISELECT(-55,-31),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  ABISELECT(-88,-48),
  ABISELECT(-71,-39),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-71,-39),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C29D1Ev,_ZTv0_n32_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C29D0Ev,_ZTv0_n32_N8S7856C29D0Ev),
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  ABISELECT(-96,-52),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-104,-56),
  ABISELECT(-87,-47),
  ABISELECT(-104,-56),
  ABISELECT(-87,-47),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C29D1Ev,_ZTv0_n44_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C29D0Ev,_ZTv0_n44_N8S7856C29D0Ev),
};
extern VTBL_ENTRY _ZTV8S7856C29[];
extern void _ZN7S7856C7D1Ev();
extern void _ZN7S7856C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C29[] = {
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
  (VTBL_ENTRY)&_ZN7S7856C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C7D0Ev,
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C137S7856C7__8S7856C29[] = {
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C137S7856C7__A1__8S7856C29[] = {
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C137S7856C7__8S7856C29[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C7__8S7856C29[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C29[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C29[] = {
  0,
  ABISELECT(17,9),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
extern void _ZN7S7856C5D1Ev();
extern void _ZN7S7856C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C5__8S7856C29[] = {
  ABISELECT(80,44),
  ABISELECT(80,44),
  ABISELECT(-24,-12),
  ABISELECT(48,28),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(-7,-3),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(64,36),
  ABISELECT(-24,-12),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&_ZN7S7856C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C5D0Ev,
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C187S7856C5__8S7856C29[] = {
  ABISELECT(-7,-3),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(64,36),
  ABISELECT(-24,-12),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C187S7856C5__A1__8S7856C29[] = {
  ABISELECT(-24,-12),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C187S7856C5__A4__8S7856C29[] = {
  ABISELECT(-24,-12),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C29[] = {
  ABISELECT(-23,-11),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C187S7856C5__A1__8S7856C29[] = {
  0,
  ABISELECT(17,9),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZThn64_N8S7856C18D1Ev,_ZThn36_N8S7856C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
extern void ABISELECT(_ZThn64_N8S7856C18D0Ev,_ZThn36_N8S7856C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C187S7856C5__8S7856C29[] = {
  ABISELECT(-64,-36),
  ABISELECT(-71,-39),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-71,-39),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C187S7856C5__8S7856C29[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C187S7856C5__8S7856C29[] = {
  ABISELECT(-23,-11),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-23,-11),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn32_N7S7856C5D1Ev,_ZThn16_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn32_N7S7856C5D0Ev,_ZThn16_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C5__8S7856C29[] = {
  ABISELECT(-32,-16),
  ABISELECT(32,20),
  ABISELECT(16,12),
  ABISELECT(-56,-28),
  ABISELECT(-48,-24),
  ABISELECT(-39,-19),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-39,-19),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C5__8S7856C29[] = {
  ABISELECT(16,8),
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C5__8S7856C29[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C5__8S7856C29[] = {
  ABISELECT(-72,-40),
  ABISELECT(-55,-31),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn64_N7S7856C5D1Ev,_ZThn36_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn64_N7S7856C5D0Ev,_ZThn36_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C5__8S7856C29[] = {
  ABISELECT(-64,-36),
  ABISELECT(-71,-39),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-71,-39),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn80_N7S7856C5D1Ev,_ZThn44_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn80_N7S7856C5D0Ev,_ZThn44_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C5__8S7856C29[] = {
  ABISELECT(-80,-44),
  ABISELECT(-104,-56),
  ABISELECT(-96,-52),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-104,-56),
  ABISELECT(-87,-47),
  ABISELECT(-104,-56),
  ABISELECT(-87,-47),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__7S7856C5__8S7856C29[] = {
  ABISELECT(-23,-11),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-23,-11),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void _ZN7S7856C6D1Ev();
extern void _ZN7S7856C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C29[] = {
  ABISELECT(32,20),
  ABISELECT(16,12),
  ABISELECT(-56,-28),
  ABISELECT(-48,-24),
  ABISELECT(-39,-19),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-39,-19),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&_ZN7S7856C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C6D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C6__8S7856C29[] = {
  ABISELECT(48,24),
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C6__8S7856C29[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C6__8S7856C29[] = {
  ABISELECT(-72,-40),
  ABISELECT(-55,-31),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn32_N7S7856C6D1Ev,_ZThn20_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn32_N7S7856C6D0Ev,_ZThn20_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C6__8S7856C29[] = {
  ABISELECT(-32,-20),
  ABISELECT(-71,-39),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-71,-39),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C29[] = {
  ABISELECT(-72,-40),
  ABISELECT(-55,-31),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C14__A2__8S7856C29[] = {
  ABISELECT(-72,-40),
  ABISELECT(-55,-31),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__8S7856C29[] = {
  ABISELECT(-71,-39),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-71,-39),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C13__A3__8S7856C29[] = {
  ABISELECT(-88,-48),
  ABISELECT(-71,-39),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C13__A1__8S7856C29[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
extern void _ZN8S7856C16D1Ev();
extern void _ZN8S7856C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C29[] = {
  ABISELECT(-104,-56),
  ABISELECT(-96,-52),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-104,-56),
  ABISELECT(-87,-47),
  ABISELECT(-104,-56),
  ABISELECT(-87,-47),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&_ZN8S7856C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C16__8S7856C29[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  ABISELECT(104,56),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C16__8S7856C29[] = {
  ABISELECT(-72,-40),
  ABISELECT(-55,-31),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C16__8S7856C29[] = {
  ABISELECT(96,52),
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  ABISELECT(96,52),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt__8S7856C29[] = {
  ABISELECT(-87,-47),
  0,
  (VTBL_ENTRY)&(_ZTI11S7856C17_nt[0]),
};
static  VTT_ENTRY vtt_S7856C29[] = {
  {&(_ZTV8S7856C29[15]),  15,90},
  {&(_ZTV8S7856C29[25]),  25,90},
  {&(_ZTV8S7856C29[15]),  15,90},
  {&(_ZTV8S7856C29[15]),  15,90},
  {&(_ZTV8S7856C29[42]),  42,90},
  {&(_ZTV8S7856C29[61]),  61,90},
  {&(_ZTV8S7856C29[67]),  67,90},
  {&(_ZTV8S7856C29[75]),  75,90},
  {&(_ZTV8S7856C29[88]),  88,90},
  {&(_ZTV8S7856C29[88]),  88,90},
  {&(_ZTV8S7856C29[50]),  50,90},
  {&(_tg__ZTV7S7856C7__8S7856C29[7]),  7,9},
  {&(_tg__ZTV8S7856C137S7856C7__8S7856C29[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C137S7856C7__A1__8S7856C29[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C7__8S7856C29[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C7__8S7856C29[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C7__8S7856C29[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C7__8S7856C29[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C29[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C29[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C29[4]),  4,4},
  {&(_tg__ZTV7S7856C5__8S7856C29[14]),  14,16},
  {&(_tg__ZTV8S7856C187S7856C5__8S7856C29[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C187S7856C5__A1__8S7856C29[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C187S7856C5__A4__8S7856C29[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C29[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C187S7856C5__A1__8S7856C29[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C187S7856C5__8S7856C29[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C5__8S7856C29[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C5__8S7856C29[6]),  6,6},
  {&(_tg__ZTV8S7856C10__A__8S7856C187S7856C5__8S7856C29[6]),  6,6},
  {&(_tg__ZTV7S7856C6__7S7856C5__8S7856C29[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C5__8S7856C29[8]),  8,10},
  {&(_tg__ZTV8S7856C10__7S7856C5__8S7856C29[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C5__8S7856C29[6]),  6,6},
  {&(_tg__ZTV8S7856C14__7S7856C5__8S7856C29[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C5__8S7856C29[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C5__8S7856C29[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C5__8S7856C29[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C18__A1__7S7856C5__8S7856C29[6]),  6,6},
  {&(_tg__ZTV7S7856C6__8S7856C29[10]),  10,12},
  {&(_tg__ZTV7S7856C7__7S7856C6__8S7856C29[8]),  8,10},
  {&(_tg__ZTV8S7856C10__7S7856C6__8S7856C29[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C6__8S7856C29[6]),  6,6},
  {&(_tg__ZTV8S7856C14__7S7856C6__8S7856C29[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C6__8S7856C29[8]),  8,10},
  {&(_tg__ZTV8S7856C14__8S7856C29[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C14__A2__8S7856C29[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__8S7856C29[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C13__A3__8S7856C29[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C13__A1__8S7856C29[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C13__A1__8S7856C29[6]),  6,6},
  {&(_tg__ZTV8S7856C16__8S7856C29[10]),  10,12},
  {&(_tg__ZTV8S7856C10__8S7856C16__8S7856C29[6]),  6,6},
  {&(_tg__ZTV8S7856C16__8S7856C29[10]),  10,12},
  {&(_tg__ZTV8S7856C14__8S7856C16__8S7856C29[4]),  4,4},
  {&(_tg__ZTV7S7856C7__8S7856C16__8S7856C29[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C16__8S7856C29[6]),  6,6},
  {&(_tg__ZTV11S7856C17_nt__8S7856C29[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S7856C29[];
extern  VTBL_ENTRY _ZTV8S7856C29[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C29[];
static VTBL_ENTRY alt_thunk_names21[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7856C6D0Ev,_ZThn20_N7S7856C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7856C6D1Ev,_ZThn20_N7S7856C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7856C5D0Ev,_ZThn36_N7S7856C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7856C5D1Ev,_ZThn36_N7S7856C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7856C5D0Ev,_ZThn44_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7856C5D0Ev,_ZThn16_N7S7856C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7856C5D1Ev,_ZThn44_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7856C5D1Ev,_ZThn16_N7S7856C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7856C18D0Ev,_ZThn36_N8S7856C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7856C18D1Ev,_ZThn36_N8S7856C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C29D0Ev,_ZTv0_n44_N8S7856C29D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7856C29D0Ev,_ZThn56_N8S7856C29D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7856C29D0Ev,_ZThn28_N8S7856C29D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C29D1Ev,_ZTv0_n44_N8S7856C29D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7856C29D1Ev,_ZThn56_N8S7856C29D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7856C29D1Ev,_ZThn28_N8S7856C29D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C29D0Ev,_ZTv0_n60_N8S7856C29D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7856C29D0Ev,_ZThn12_N8S7856C29D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C29D1Ev,_ZTv0_n60_N8S7856C29D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7856C29D1Ev,_ZThn12_N8S7856C29D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C29D0Ev,_ZTv0_n32_N8S7856C29D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7856C29D0Ev,_ZThn48_N8S7856C29D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7856C29D0Ev,_ZThn4_N8S7856C29D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C29D1Ev,_ZTv0_n32_N8S7856C29D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7856C29D1Ev,_ZThn48_N8S7856C29D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7856C29D1Ev,_ZThn4_N8S7856C29D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7856C29 = {  "S7856C29", // class name
  bases_S7856C29, 37,
  &(vtc_S7856C29[0]), // expected_vtbl_contents
  &(vtt_S7856C29[0]), // expected_vtt_contents
  ABISELECT(120,64), // object size
  NSPAIRA(_ZTI8S7856C29),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S7856C29),90, //virtual function table var
  15, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7856C29),59, //virtual table table var
  17, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names21,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7856C28  : S7856C7 , virtual S7856C14 , virtual S7856C29 , S7856C21 , S7856C24 {
  int s7856c28f0;
  ~S7856C28(); // tgen
  S7856C28(); // tgen
};
//SIG(-1 S7856C28) C1{ BC2{ VBC3{ m} VBC4{ m} VBC5{ BC3 VBC6{ VBC3 BC4 VBC7{ m}} VBC4} BC7 BC8{ BC4 VBC3 VBC7 BC6 VBC5 vd} vd} VBC9{ BC7 BC4 BC6 Fi} VBC10{ VBC2 VBC11{ VBC12{ VBC2 VBC9 VBC8 vd Fi[2]} VBC13{ m} VBC14{ VBC6 VBC15{ VBC4} VBC9 BC7 VBC2 vd Fi} BC16{ VBC8 BC9 BC5 BC7 vd} vd} vd} BC17{ BC4 BC15 vd} BC18{ m} Fi}


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

static void Test_S7856C28()
{
  extern Class_Descriptor cd_S7856C28;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(20,22)];
    init_test(&cd_S7856C28, buf);
    S7856C28 *dp, &lv = *(dp=new (buf) S7856C28());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(152,84), "sizeof(S7856C28)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7856C28)");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C7*), 0, "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C11 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*), 0, "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*)(S7856C7*), 0, "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*)(S7856C7*), 0, "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C14 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*), 0, "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C7*), 0, "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*)(S7856C7*), 0, "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*)(S7856C7*), 0, "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*), 0, "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*), 0, "S7856C28");
    check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), 0, "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C7*), ABISELECT(28,16), "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*), ABISELECT(28,16), "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C7*), ABISELECT(28,16), "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C17_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C17_nt*), ABISELECT(28,16), "S7856C28");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(28,16), "S7856C28");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C17_nt*)(S7856C21*), ABISELECT(28,16), "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*), ABISELECT(48,28), "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*), ABISELECT(48,28), "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*), ABISELECT(28,16), "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*)(S7856C7*), ABISELECT(28,16), "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(28,16), "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*), ABISELECT(28,16), "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*)(S7856C7*), ABISELECT(28,16), "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(28,16), "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*), ABISELECT(28,16), "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*), ABISELECT(28,16), "S7856C28");
    check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(28,16), "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*), ABISELECT(48,28), "S7856C28");
    /*is_ambiguous_... S7856C16::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C16*), ABISELECT(48,28), "S7856C28");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(48,28), "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C7*), ABISELECT(48,28), "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*)(S7856C7*), ABISELECT(48,28), "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C7*), ABISELECT(48,28), "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*)(S7856C7*), ABISELECT(48,28), "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*), ABISELECT(48,28), "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C7*), 0, "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*)(S7856C7*), ABISELECT(8,4), "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*)(S7856C7*), 0, "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*)(S7856C7*), 0, "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C7*), 0, "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C7*), 0, "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*), ABISELECT(32,20), "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*), ABISELECT(40,24), "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*), ABISELECT(32,20), "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*), ABISELECT(32,20), "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C14*), ABISELECT(32,20), "S7856C28");
    check_base_class_offset(lv, (S7856C14*)(S7856C6*), ABISELECT(32,20), "S7856C28");
    check_base_class_offset(lv, (S7856C14*)(S7856C16*), ABISELECT(32,20), "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C7*), ABISELECT(56,32), "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*)(S7856C7*), ABISELECT(64,36), "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(56,32), "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(56,32), "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C7*), ABISELECT(56,32), "S7856C28");
    check_base_class_offset(lv, (S7856C7*)(S7856C29*), ABISELECT(56,32), "S7856C28");
    check_base_class_offset(lv, (S7856C7*)(S7856C6*), ABISELECT(56,32), "S7856C28");
    check_base_class_offset(lv, (S7856C7*)(S7856C16*), ABISELECT(56,32), "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*), ABISELECT(128,72), "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*), ABISELECT(120,68), "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*), ABISELECT(120,68), "S7856C28");
    /*is_ambiguous_... S7856C6::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C6*), ABISELECT(120,68), "S7856C28");
    check_base_class_offset(lv, (S7856C13*)(S7856C18*)(S7856C5*), ABISELECT(120,68), "S7856C28");
    check_base_class_offset(lv, (S7856C6*)(S7856C5*), ABISELECT(104,56), "S7856C28");
    check_base_class_offset(lv, (S7856C15*)(S7856C5*), 0, "S7856C28");
    check_base_class_offset(lv, (S7856C17_nt*)(S7856C16*), ABISELECT(136,76), "S7856C28");
    /*is_ambiguous_... S7856C16::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C16*), ABISELECT(136,76), "S7856C28");
    check_base_class_offset(lv, (S7856C16*)(S7856C5*), ABISELECT(136,76), "S7856C28");
    /*is_ambiguous_... S7856C14::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(72,40), "S7856C28");
    /*is_ambiguous_... S7856C14::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(80,44), "S7856C28");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(72,40), "S7856C28");
    check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(72,40), "S7856C28");
    check_base_class_offset(lv, (S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(72,40), "S7856C28");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(88,48), "S7856C28");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(88,48), "S7856C28");
    /*is_ambiguous_... S7856C18::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*)(S7856C5*), ABISELECT(96,52), "S7856C28");
    check_base_class_offset(lv, (S7856C18*)(S7856C5*), ABISELECT(72,40), "S7856C28");
    check_base_class_offset(lv, (S7856C5*)(S7856C29*), ABISELECT(72,40), "S7856C28");
    check_base_class_offset(lv, (S7856C29*), ABISELECT(48,28), "S7856C28");
    /*is_ambiguous_... S7856C21::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C21*), ABISELECT(16,8), "S7856C28");
    check_base_class_offset(lv, (S7856C17_nt*)(S7856C21*), ABISELECT(16,8), "S7856C28");
    check_base_class_offset(lv, (S7856C21*), ABISELECT(16,8), "S7856C28");
    check_base_class_offset(lv, (S7856C24*), 0, "S7856C28");
    check_field_offset(lv, s7856c28f0, ABISELECT(24,12), "S7856C28.s7856c28f0");
    test_class_info(&lv, &cd_S7856C28);
    dp->~S7856C28();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7856C28(Test_S7856C28, "S7856C28", ABISELECT(152,84));

#else // __cplusplus

extern void _ZN8S7856C28C1Ev();
extern void _ZN8S7856C28D1Ev();
Name_Map name_map_S7856C28[] = {
  NSPAIR(_ZN8S7856C28C1Ev),
  NSPAIR(_ZN8S7856C28D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C7;
extern VTBL_ENTRY _ZTI7S7856C7[];
extern  VTBL_ENTRY _ZTV7S7856C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C7[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C7;
extern VTBL_ENTRY _ZTI7S7856C7[];
extern  VTBL_ENTRY _ZTV7S7856C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C7[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C6;
extern VTBL_ENTRY _ZTI7S7856C6[];
extern  VTBL_ENTRY _ZTV7S7856C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C6[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C17_nt;
extern VTBL_ENTRY _ZTI11S7856C17_nt[];
extern  VTBL_ENTRY _ZTV11S7856C17_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S7856C17_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C16;
extern VTBL_ENTRY _ZTI8S7856C16[];
extern  VTBL_ENTRY _ZTV8S7856C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C16[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C5;
extern VTBL_ENTRY _ZTI7S7856C5[];
extern  VTBL_ENTRY _ZTV7S7856C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C5[];
extern Class_Descriptor cd_S7856C29;
extern VTBL_ENTRY _ZTI8S7856C29[];
extern  VTBL_ENTRY _ZTV8S7856C29[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C29[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C17_nt;
extern VTBL_ENTRY _ZTI11S7856C17_nt[];
extern  VTBL_ENTRY _ZTV11S7856C17_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S7856C17_nt[];
extern Class_Descriptor cd_S7856C21;
extern VTBL_ENTRY _ZTI8S7856C21[];
extern  VTBL_ENTRY _ZTV8S7856C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C21[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
static Base_Class bases_S7856C28[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(28,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S77C13_nt,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(28,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C11,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C10,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(32,20), //bcp->offset
    23, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7856C7,    ABISELECT(56,32), //bcp->offset
    45, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(128,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(120,68), //bcp->offset
    91, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S7856C6,    ABISELECT(104,56), //bcp->offset
    78, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S7856C17_nt,    ABISELECT(136,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(136,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7856C16,    ABISELECT(136,76), //bcp->offset
    101, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(88,48), //bcp->offset
    72, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S7856C5,    ABISELECT(72,40), //bcp->offset
    55, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    43, //immediately_derived
  0, 1},
  {&cd_S7856C29,    ABISELECT(48,28), //bcp->offset
    27, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C9_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S7856C17_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S7856C21,    ABISELECT(16,8), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7856C28[];
extern void _ZN8S7856C28D1Ev();
extern void _ZN8S7856C28D0Ev();
extern void ABISELECT(_ZThn16_N8S7856C28D1Ev,_ZThn8_N8S7856C28D1Ev)();
extern void ABISELECT(_ZThn16_N8S7856C28D0Ev,_ZThn8_N8S7856C28D0Ev)();
extern void ABISELECT(_ZTv0_n128_N8S7856C28D1Ev,_ZTv0_n64_N8S7856C28D1Ev)();
extern void ABISELECT(_ZThn48_N8S7856C28D1Ev,_ZThn28_N8S7856C28D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S7856C28D0Ev,_ZTv0_n64_N8S7856C28D0Ev)();
extern void ABISELECT(_ZThn48_N8S7856C28D0Ev,_ZThn28_N8S7856C28D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C28D1Ev,_ZTv0_n32_N8S7856C28D1Ev)();
extern void ABISELECT(_ZThn56_N8S7856C28D1Ev,_ZThn32_N8S7856C28D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C28D0Ev,_ZTv0_n32_N8S7856C28D0Ev)();
extern void ABISELECT(_ZThn56_N8S7856C28D0Ev,_ZThn32_N8S7856C28D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S7856C28D1Ev,_ZTv0_n60_N8S7856C28D1Ev)();
extern void ABISELECT(_ZThn72_N8S7856C28D1Ev,_ZThn40_N8S7856C28D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S7856C28D0Ev,_ZTv0_n60_N8S7856C28D0Ev)();
extern void ABISELECT(_ZThn72_N8S7856C28D0Ev,_ZThn40_N8S7856C28D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C28D1Ev,_ZTv0_n44_N8S7856C28D1Ev)();
extern void ABISELECT(_ZThn104_N8S7856C28D1Ev,_ZThn56_N8S7856C28D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C28D0Ev,_ZTv0_n44_N8S7856C28D0Ev)();
extern void ABISELECT(_ZThn104_N8S7856C28D0Ev,_ZThn56_N8S7856C28D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C28D1Ev,_ZTv0_n32_N8S7856C28D1Ev)();
extern void ABISELECT(_ZThn120_N8S7856C28D1Ev,_ZThn68_N8S7856C28D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C28D0Ev,_ZTv0_n32_N8S7856C28D0Ev)();
extern void ABISELECT(_ZThn120_N8S7856C28D0Ev,_ZThn68_N8S7856C28D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C28D1Ev,_ZTv0_n44_N8S7856C28D1Ev)();
extern void ABISELECT(_ZThn136_N8S7856C28D1Ev,_ZThn76_N8S7856C28D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C28D0Ev,_ZTv0_n44_N8S7856C28D0Ev)();
extern void ABISELECT(_ZThn136_N8S7856C28D0Ev,_ZThn76_N8S7856C28D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7856C28[] = {
  ABISELECT(136,76),
  ABISELECT(136,76),
  0,
  ABISELECT(120,68),
  ABISELECT(104,56),
  ABISELECT(72,40),
  ABISELECT(56,32),
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(28,16),
  ABISELECT(48,28),
  ABISELECT(48,28),
  ABISELECT(28,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&_ZN8S7856C28D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C28D0Ev,
  ABISELECT(12,8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S7856C28D1Ev,_ZThn8_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S7856C28D0Ev,_ZThn8_N8S7856C28D0Ev),
  -4,
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  ABISELECT(-48,-28),
  ABISELECT(88,48),
  ABISELECT(88,48),
  ABISELECT(-48,-28),
  ABISELECT(72,40),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  ABISELECT(24,12),
  0,
  ABISELECT(8,4),
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C28D1Ev,_ZTv0_n64_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C28D0Ev,_ZTv0_n64_N8S7856C28D0Ev),
  ABISELECT(-56,-32),
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C28D1Ev,_ZTv0_n32_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C28D0Ev,_ZTv0_n32_N8S7856C28D0Ev),
  ABISELECT(-72,-40),
  ABISELECT(64,36),
  ABISELECT(64,36),
  ABISELECT(-72,-40),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(-44,-24),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(48,28),
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C28D1Ev,_ZTv0_n60_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C28D0Ev,_ZTv0_n60_N8S7856C28D0Ev),
  ABISELECT(-60,-32),
  ABISELECT(-40,-20),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  ABISELECT(-104,-56),
  ABISELECT(16,12),
  ABISELECT(-72,-36),
  ABISELECT(-56,-28),
  ABISELECT(-48,-24),
  ABISELECT(-76,-40),
  ABISELECT(-56,-28),
  ABISELECT(-76,-40),
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C28D1Ev,_ZTv0_n44_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C28D0Ev,_ZTv0_n44_N8S7856C28D0Ev),
  ABISELECT(-120,-68),
  ABISELECT(-92,-52),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C28D1Ev,_ZTv0_n32_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C28D0Ev,_ZTv0_n32_N8S7856C28D0Ev),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-80,-44),
  ABISELECT(-104,-56),
  0,
  ABISELECT(-108,-60),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-108,-60),
  ABISELECT(-136,-76),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C28D1Ev,_ZTv0_n44_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C28D0Ev,_ZTv0_n44_N8S7856C28D0Ev),
};
extern VTBL_ENTRY _ZTV8S7856C28[];
extern void _ZN7S7856C7D1Ev();
extern void _ZN7S7856C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C7__A__8S7856C28[] = {
  ABISELECT(28,16),
  ABISELECT(48,28),
  ABISELECT(48,28),
  ABISELECT(28,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
  (VTBL_ENTRY)&_ZN7S7856C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C7D0Ev,
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C137S7856C7__8S7856C28[] = {
  ABISELECT(28,16),
  ABISELECT(48,28),
  ABISELECT(48,28),
  ABISELECT(28,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C137S7856C7__A1__8S7856C28[] = {
  ABISELECT(28,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C137S7856C7__8S7856C28[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C7__A__8S7856C28[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
};
extern void _ZN8S7856C21D1Ev();
extern void _ZN8S7856C21D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C21__8S7856C28[] = {
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C21[0]),
  (VTBL_ENTRY)&_ZN8S7856C21D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C21D0Ev,
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt8S7856C21__A1__8S7856C28[] = {
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI11S7856C17_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C28[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C28[] = {
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C28[] = {
  -4,
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C14__A2__8S7856C28[] = {
  -4,
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
extern void _ZN8S7856C29D1Ev();
extern void _ZN8S7856C29D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C29__8S7856C28[] = {
  ABISELECT(88,48),
  ABISELECT(88,48),
  ABISELECT(-48,-28),
  ABISELECT(72,40),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  ABISELECT(24,12),
  0,
  ABISELECT(8,4),
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&_ZN8S7856C29D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C29D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N8S7856C29D1Ev,_ZTv0_n32_N8S7856C29D1Ev)();
extern void ABISELECT(_ZThn8_N8S7856C29D1Ev,_ZThn4_N8S7856C29D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C29D0Ev,_ZTv0_n32_N8S7856C29D0Ev)();
extern void ABISELECT(_ZThn8_N8S7856C29D0Ev,_ZThn4_N8S7856C29D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C29__8S7856C28[] = {
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C29D1Ev,_ZTv0_n32_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C29D0Ev,_ZTv0_n32_N8S7856C29D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S7856C29D1Ev,_ZTv0_n60_N8S7856C29D1Ev)();
extern void ABISELECT(_ZThn24_N8S7856C29D1Ev,_ZThn12_N8S7856C29D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S7856C29D0Ev,_ZTv0_n60_N8S7856C29D0Ev)();
extern void ABISELECT(_ZThn24_N8S7856C29D0Ev,_ZThn12_N8S7856C29D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C5__8S7856C29__8S7856C28[] = {
  ABISELECT(-24,-12),
  ABISELECT(64,36),
  ABISELECT(64,36),
  ABISELECT(-72,-40),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(-44,-24),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(48,28),
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C29D1Ev,_ZTv0_n60_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C29D0Ev,_ZTv0_n60_N8S7856C29D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C29D1Ev,_ZTv0_n44_N8S7856C29D1Ev)();
extern void ABISELECT(_ZThn56_N8S7856C29D1Ev,_ZThn28_N8S7856C29D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C29D0Ev,_ZTv0_n44_N8S7856C29D0Ev)();
extern void ABISELECT(_ZThn56_N8S7856C29D0Ev,_ZThn28_N8S7856C29D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C29__8S7856C28[] = {
  ABISELECT(-56,-28),
  ABISELECT(16,12),
  ABISELECT(-72,-36),
  ABISELECT(-56,-28),
  ABISELECT(-48,-24),
  ABISELECT(-76,-40),
  ABISELECT(-56,-28),
  ABISELECT(-76,-40),
  ABISELECT(-104,-56),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C29D1Ev,_ZTv0_n44_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C29D0Ev,_ZTv0_n44_N8S7856C29D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C29__8S7856C28[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C29D1Ev,_ZTv0_n32_N8S7856C29D1Ev)();
extern void ABISELECT(_ZThn72_N8S7856C29D1Ev,_ZThn40_N8S7856C29D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C29D0Ev,_ZTv0_n32_N8S7856C29D0Ev)();
extern void ABISELECT(_ZThn72_N8S7856C29D0Ev,_ZThn40_N8S7856C29D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__8S7856C29__8S7856C28[] = {
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C29D1Ev,_ZTv0_n32_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C29D0Ev,_ZTv0_n32_N8S7856C29D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C29D1Ev,_ZTv0_n44_N8S7856C29D1Ev)();
extern void ABISELECT(_ZThn88_N8S7856C29D1Ev,_ZThn48_N8S7856C29D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C29D0Ev,_ZTv0_n44_N8S7856C29D0Ev)();
extern void ABISELECT(_ZThn88_N8S7856C29D0Ev,_ZThn48_N8S7856C29D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C29__8S7856C28[] = {
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-80,-44),
  ABISELECT(-104,-56),
  0,
  ABISELECT(-108,-60),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-108,-60),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C29D1Ev,_ZTv0_n44_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C29D0Ev,_ZTv0_n44_N8S7856C29D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C29__8S7856C28[] = {
  ABISELECT(-60,-32),
  ABISELECT(-40,-20),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
};
extern void _ZN7S7856C7D1Ev();
extern void _ZN7S7856C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C7__A1__8S7856C28[] = {
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
  (VTBL_ENTRY)&_ZN7S7856C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C7D0Ev,
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C137S7856C7__A1__8S7856C28[] = {
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C137S7856C7__A3__8S7856C28[] = {
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C137S7856C7__A1__8S7856C28[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C7__A1__8S7856C28[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
};
extern void _ZN7S7856C5D1Ev();
extern void _ZN7S7856C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C5__8S7856C28[] = {
  ABISELECT(64,36),
  ABISELECT(64,36),
  ABISELECT(-72,-40),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(-44,-24),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(48,28),
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&_ZN7S7856C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C5D0Ev,
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C187S7856C5__8S7856C28[] = {
  ABISELECT(-44,-24),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(48,28),
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C187S7856C5__A1__8S7856C28[] = {
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C187S7856C5__A5__8S7856C28[] = {
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C28[] = {
  ABISELECT(-60,-32),
  ABISELECT(-40,-20),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C187S7856C5__A1__8S7856C28[] = {
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZThn48_N8S7856C18D1Ev,_ZThn28_N8S7856C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
extern void ABISELECT(_ZThn48_N8S7856C18D0Ev,_ZThn28_N8S7856C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C187S7856C5__8S7856C28[] = {
  ABISELECT(-48,-28),
  ABISELECT(-92,-52),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C187S7856C5__8S7856C28[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C187S7856C5__8S7856C28[] = {
  ABISELECT(-60,-32),
  ABISELECT(-40,-20),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn32_N7S7856C5D1Ev,_ZThn16_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn32_N7S7856C5D0Ev,_ZThn16_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C5__8S7856C28[] = {
  ABISELECT(-32,-16),
  ABISELECT(16,12),
  ABISELECT(-72,-36),
  ABISELECT(-56,-28),
  ABISELECT(-48,-24),
  ABISELECT(-76,-40),
  ABISELECT(-56,-28),
  ABISELECT(-76,-40),
  ABISELECT(-104,-56),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C5__8S7856C28[] = {
  ABISELECT(16,8),
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C5__8S7856C28[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C5__8S7856C28[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn48_N7S7856C5D1Ev,_ZThn28_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn48_N7S7856C5D0Ev,_ZThn28_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C5__8S7856C28[] = {
  ABISELECT(-48,-28),
  ABISELECT(-92,-52),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn64_N7S7856C5D1Ev,_ZThn36_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn64_N7S7856C5D0Ev,_ZThn36_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C5__8S7856C28[] = {
  ABISELECT(-64,-36),
  ABISELECT(-88,-48),
  ABISELECT(-80,-44),
  ABISELECT(-104,-56),
  0,
  ABISELECT(-108,-60),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-108,-60),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__7S7856C5__8S7856C28[] = {
  ABISELECT(-60,-32),
  ABISELECT(-40,-20),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void _ZN7S7856C6D1Ev();
extern void _ZN7S7856C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C28[] = {
  ABISELECT(16,12),
  ABISELECT(-72,-36),
  ABISELECT(-56,-28),
  ABISELECT(-48,-24),
  ABISELECT(-76,-40),
  ABISELECT(-56,-28),
  ABISELECT(-76,-40),
  ABISELECT(-104,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&_ZN7S7856C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C6D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C6__8S7856C28[] = {
  ABISELECT(48,24),
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C6__8S7856C28[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C6__8S7856C28[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn16_N7S7856C6D1Ev,_ZThn12_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn16_N7S7856C6D0Ev,_ZThn12_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C6__8S7856C28[] = {
  ABISELECT(-16,-12),
  ABISELECT(-92,-52),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A2__8S7856C28[] = {
  ABISELECT(-92,-52),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C13__A4__8S7856C28[] = {
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C13__A2__8S7856C28[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(72,40),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
extern void _ZN8S7856C16D1Ev();
extern void _ZN8S7856C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C28[] = {
  ABISELECT(-88,-48),
  ABISELECT(-80,-44),
  ABISELECT(-104,-56),
  0,
  ABISELECT(-108,-60),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-108,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&_ZN8S7856C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C16__8S7856C28[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C16__8S7856C28[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(104,56),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C16__8S7856C28[] = {
  ABISELECT(80,44),
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt__8S7856C28[] = {
  ABISELECT(-108,-60),
  0,
  (VTBL_ENTRY)&(_ZTI11S7856C17_nt[0]),
};
static  VTT_ENTRY vtt_S7856C28[] = {
  {&(_ZTV8S7856C28[16]),  16,114},
  {&(_tg__ZTV7S7856C7__A__8S7856C28[7]),  7,9},
  {&(_tg__ZTV8S7856C137S7856C7__8S7856C28[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C137S7856C7__A1__8S7856C28[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C7__8S7856C28[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C7__8S7856C28[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C7__A__8S7856C28[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C7__A__8S7856C28[6]),  6,6},
  {&(_tg__ZTV8S7856C21__8S7856C28[3]),  3,5},
  {&(_tg__ZTV11S7856C17_nt8S7856C21__A1__8S7856C28[3]),  3,3},
  {&(_ZTV8S7856C28[43]),  43,114},
  {&(_ZTV8S7856C28[43]),  43,114},
  {&(_ZTV8S7856C28[27]),  27,114},
  {&(_ZTV8S7856C28[43]),  43,114},
  {&(_ZTV8S7856C28[53]),  53,114},
  {&(_ZTV8S7856C28[70]),  70,114},
  {&(_ZTV8S7856C28[89]),  89,114},
  {&(_ZTV8S7856C28[99]),  99,114},
  {&(_ZTV8S7856C28[112]),  112,114},
  {&(_ZTV8S7856C28[112]),  112,114},
  {&(_ZTV8S7856C28[78]),  78,114},
  {&(_ZTV8S7856C28[21]),  21,114},
  {&(_tg__ZTV8S7856C10__8S7856C28[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C28[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C28[4]),  4,4},
  {&(_tg__ZTV8S7856C14__8S7856C28[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C14__A2__8S7856C28[4]),  4,4},
  {&(_tg__ZTV8S7856C29__8S7856C28[15]),  15,17},
  {&(_tg__ZTV7S7856C7__8S7856C29__8S7856C28[8]),  8,10},
  {&(_tg__ZTV8S7856C29__8S7856C28[15]),  15,17},
  {&(_tg__ZTV8S7856C29__8S7856C28[15]),  15,17},
  {&(_tg__ZTV7S7856C5__8S7856C29__8S7856C28[15]),  15,17},
  {&(_tg__ZTV7S7856C6__8S7856C29__8S7856C28[11]),  11,13},
  {&(_tg__ZTV8S7856C14__8S7856C29__8S7856C28[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__8S7856C29__8S7856C28[8]),  8,10},
  {&(_tg__ZTV8S7856C16__8S7856C29__8S7856C28[11]),  11,13},
  {&(_tg__ZTV8S7856C16__8S7856C29__8S7856C28[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C29__8S7856C28[6]),  6,6},
  {&(_tg__ZTV7S7856C7__A1__8S7856C28[7]),  7,9},
  {&(_tg__ZTV8S7856C137S7856C7__A1__8S7856C28[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C137S7856C7__A3__8S7856C28[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C7__A1__8S7856C28[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C7__A1__8S7856C28[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C7__A1__8S7856C28[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C7__A1__8S7856C28[6]),  6,6},
  {&(_tg__ZTV7S7856C5__8S7856C28[14]),  14,16},
  {&(_tg__ZTV8S7856C187S7856C5__8S7856C28[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C187S7856C5__A1__8S7856C28[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C187S7856C5__A5__8S7856C28[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C28[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C187S7856C5__A1__8S7856C28[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C187S7856C5__8S7856C28[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C5__8S7856C28[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C5__8S7856C28[6]),  6,6},
  {&(_tg__ZTV8S7856C10__A__8S7856C187S7856C5__8S7856C28[6]),  6,6},
  {&(_tg__ZTV7S7856C6__7S7856C5__8S7856C28[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C5__8S7856C28[8]),  8,10},
  {&(_tg__ZTV8S7856C10__7S7856C5__8S7856C28[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C5__8S7856C28[6]),  6,6},
  {&(_tg__ZTV8S7856C14__7S7856C5__8S7856C28[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C5__8S7856C28[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C5__8S7856C28[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C5__8S7856C28[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C18__A1__7S7856C5__8S7856C28[6]),  6,6},
  {&(_tg__ZTV7S7856C6__8S7856C28[10]),  10,12},
  {&(_tg__ZTV7S7856C7__7S7856C6__8S7856C28[8]),  8,10},
  {&(_tg__ZTV8S7856C10__7S7856C6__8S7856C28[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C6__8S7856C28[6]),  6,6},
  {&(_tg__ZTV8S7856C14__7S7856C6__8S7856C28[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C6__8S7856C28[8]),  8,10},
  {&(_tg__ZTV8S7856C13__A2__8S7856C28[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C13__A4__8S7856C28[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C13__A2__8S7856C28[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C13__A2__8S7856C28[6]),  6,6},
  {&(_tg__ZTV8S7856C16__8S7856C28[10]),  10,12},
  {&(_tg__ZTV8S7856C10__8S7856C16__8S7856C28[6]),  6,6},
  {&(_tg__ZTV8S7856C16__8S7856C28[10]),  10,12},
  {&(_tg__ZTV8S7856C14__8S7856C16__8S7856C28[4]),  4,4},
  {&(_tg__ZTV7S7856C7__8S7856C16__8S7856C28[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C16__8S7856C28[6]),  6,6},
  {&(_tg__ZTV11S7856C17_nt__8S7856C28[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S7856C28[];
extern  VTBL_ENTRY _ZTV8S7856C28[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C28[];
static VTBL_ENTRY alt_thunk_names22[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7856C6D0Ev,_ZThn12_N7S7856C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7856C6D1Ev,_ZThn12_N7S7856C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C5D0Ev,_ZThn28_N7S7856C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C5D1Ev,_ZThn28_N7S7856C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7856C5D0Ev,_ZThn36_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7856C5D0Ev,_ZThn16_N7S7856C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7856C5D1Ev,_ZThn36_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7856C5D1Ev,_ZThn16_N7S7856C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7856C18D0Ev,_ZThn28_N8S7856C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7856C18D1Ev,_ZThn28_N8S7856C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C29D0Ev,_ZTv0_n44_N8S7856C29D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7856C29D0Ev,_ZThn48_N8S7856C29D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7856C29D0Ev,_ZThn28_N8S7856C29D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C29D1Ev,_ZTv0_n44_N8S7856C29D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7856C29D1Ev,_ZThn48_N8S7856C29D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7856C29D1Ev,_ZThn28_N8S7856C29D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C29D0Ev,_ZTv0_n60_N8S7856C29D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7856C29D0Ev,_ZThn12_N8S7856C29D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C29D1Ev,_ZTv0_n60_N8S7856C29D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7856C29D1Ev,_ZThn12_N8S7856C29D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C29D0Ev,_ZTv0_n32_N8S7856C29D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7856C29D0Ev,_ZThn40_N8S7856C29D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7856C29D0Ev,_ZThn4_N8S7856C29D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C29D1Ev,_ZTv0_n32_N8S7856C29D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7856C29D1Ev,_ZThn40_N8S7856C29D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7856C29D1Ev,_ZThn4_N8S7856C29D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C28D0Ev,_ZTv0_n44_N8S7856C28D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7856C28D0Ev,_ZThn76_N8S7856C28D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7856C28D0Ev,_ZThn56_N8S7856C28D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C28D1Ev,_ZTv0_n44_N8S7856C28D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7856C28D1Ev,_ZThn76_N8S7856C28D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7856C28D1Ev,_ZThn56_N8S7856C28D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C28D0Ev,_ZTv0_n60_N8S7856C28D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7856C28D0Ev,_ZThn40_N8S7856C28D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C28D1Ev,_ZTv0_n60_N8S7856C28D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7856C28D1Ev,_ZThn40_N8S7856C28D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C28D0Ev,_ZTv0_n32_N8S7856C28D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7856C28D0Ev,_ZThn68_N8S7856C28D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7856C28D0Ev,_ZThn32_N8S7856C28D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C28D1Ev,_ZTv0_n32_N8S7856C28D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7856C28D1Ev,_ZThn68_N8S7856C28D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7856C28D1Ev,_ZThn32_N8S7856C28D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7856C28D0Ev,_ZTv0_n64_N8S7856C28D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7856C28D0Ev,_ZThn28_N8S7856C28D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7856C28D1Ev,_ZTv0_n64_N8S7856C28D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7856C28D1Ev,_ZThn28_N8S7856C28D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7856C28 = {  "S7856C28", // class name
  bases_S7856C28, 48,
  &(vtc_S7856C28[0]), // expected_vtbl_contents
  &(vtt_S7856C28[0]), // expected_vtt_contents
  ABISELECT(152,84), // object size
  NSPAIRA(_ZTI8S7856C28),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S7856C28),114, //virtual function table var
  16, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7856C28),81, //virtual table table var
  23, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names22,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7856C27  : S7856C16 , S7856C28 , virtual S7856C24 {
  ~S7856C27(); // tgen
  S7856C27(); // tgen
};
//SIG(-1 S7856C27) C1{ BC2{ VBC3{ VBC4{ m} BC5{ m} VBC6{ m}} VBC7{ VBC5} VBC8{ BC6 BC5 BC3 Fi} BC6 VBC9{ VBC4 VBC5 VBC10{ BC4 VBC3 VBC5} BC6 BC11{ BC5 VBC4 VBC6 BC3 VBC10 vd} vd} vd Fi} BC12{ BC9 VBC8 VBC13{ VBC9 VBC14{ VBC15{ VBC9 VBC8 VBC11 vd Fi[2]} VBC16{ m} VBC2 BC17{ VBC11 BC8 BC10 BC6 vd} vd} vd} BC18{ BC5 BC7 vd} BC19{ m} Fi} VBC19}


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

static void Test_S7856C27()
{
  extern Class_Descriptor cd_S7856C27;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(22,24)];
    init_test(&cd_S7856C27, buf);
    S7856C27 *dp, &lv = *(dp=new (buf) S7856C27());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(168,92), "sizeof(S7856C27)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7856C27)");
    /*is_ambiguous_... S7856C27::S7856C11 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*), 0, "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C14 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*), 0, "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C7*), 0, "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*)(S7856C7*), 0, "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*)(S7856C7*), 0, "S7856C27");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C7*)(S7856C28*), 0, "S7856C27");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*)(S7856C7*)(S7856C28*), 0, "S7856C27");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*)(S7856C7*)(S7856C28*), 0, "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*), 0, "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*), 0, "S7856C27");
    check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), 0, "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*), ABISELECT(80,44), "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*), ABISELECT(44,24), "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*), ABISELECT(44,24), "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*)(S7856C7*), ABISELECT(44,24), "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(44,24), "S7856C27");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*)(S7856C7*)(S7856C28*), ABISELECT(44,24), "S7856C27");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*)(S7856C7*)(S7856C28*), ABISELECT(44,24), "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*), ABISELECT(44,24), "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*), ABISELECT(44,24), "S7856C27");
    check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(44,24), "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C16*), ABISELECT(80,44), "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*), ABISELECT(80,44), "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C16*), ABISELECT(80,44), "S7856C27");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(80,44), "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C17_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C17_nt*), 0, "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C7*), 0, "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*), 0, "S7856C27");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C7*)(S7856C28*), 0, "S7856C27");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*)(S7856C5*), 0, "S7856C27");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C17_nt*)(S7856C21*)(S7856C28*), 0, "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C17_nt*)(S7856C16*), 0, "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C17_nt*)(S7856C16*), 0, "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*), ABISELECT(48,28), "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*), ABISELECT(56,32), "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*), ABISELECT(48,28), "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*), ABISELECT(48,28), "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C16*), ABISELECT(48,28), "S7856C27");
    /*is_ambiguous_... S7856C28::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C28*), ABISELECT(48,28), "S7856C27");
    check_base_class_offset(lv, (S7856C14*)(S7856C6*), ABISELECT(48,28), "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C16*), ABISELECT(48,28), "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C16*), 0, "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*), ABISELECT(80,44), "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C7*), ABISELECT(80,44), "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*)(S7856C7*), ABISELECT(80,44), "S7856C27");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C7*)(S7856C28*), ABISELECT(80,44), "S7856C27");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*)(S7856C7*)(S7856C28*), ABISELECT(80,44), "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*), ABISELECT(80,44), "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C7*), ABISELECT(64,36), "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*)(S7856C7*), ABISELECT(72,40), "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(64,36), "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(64,36), "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C7*), ABISELECT(64,36), "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C7*)(S7856C16*), ABISELECT(64,36), "S7856C27");
    check_base_class_offset(lv, (S7856C7*)(S7856C29*), ABISELECT(64,36), "S7856C27");
    check_base_class_offset(lv, (S7856C7*)(S7856C6*), ABISELECT(64,36), "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C7*)(S7856C16*), ABISELECT(64,36), "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C16*), 0, "S7856C27");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C7*)(S7856C28*), ABISELECT(16,8), "S7856C27");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*)(S7856C7*)(S7856C28*), ABISELECT(24,12), "S7856C27");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*)(S7856C7*)(S7856C28*), ABISELECT(16,8), "S7856C27");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*)(S7856C7*)(S7856C28*), ABISELECT(16,8), "S7856C27");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C7*)(S7856C28*), ABISELECT(16,8), "S7856C27");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C7*)(S7856C28*), ABISELECT(16,8), "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*), ABISELECT(144,80), "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*), ABISELECT(136,76), "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*), ABISELECT(136,76), "S7856C27");
    /*is_ambiguous_... S7856C6::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C6*), ABISELECT(136,76), "S7856C27");
    check_base_class_offset(lv, (S7856C13*)(S7856C18*)(S7856C5*), ABISELECT(136,76), "S7856C27");
    check_base_class_offset(lv, (S7856C6*)(S7856C5*), ABISELECT(120,64), "S7856C27");
    check_base_class_offset(lv, (S7856C15*)(S7856C5*), 0, "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C16*), ABISELECT(152,84), "S7856C27");
    check_base_class_offset(lv, (S7856C16*)(S7856C5*), ABISELECT(152,84), "S7856C27");
    /*is_ambiguous_... S7856C14::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(88,48), "S7856C27");
    /*is_ambiguous_... S7856C14::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(96,52), "S7856C27");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(88,48), "S7856C27");
    check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(88,48), "S7856C27");
    check_base_class_offset(lv, (S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(88,48), "S7856C27");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(104,56), "S7856C27");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(104,56), "S7856C27");
    /*is_ambiguous_... S7856C18::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*)(S7856C5*), ABISELECT(112,60), "S7856C27");
    check_base_class_offset(lv, (S7856C18*)(S7856C5*), ABISELECT(88,48), "S7856C27");
    check_base_class_offset(lv, (S7856C5*)(S7856C29*), ABISELECT(88,48), "S7856C27");
    check_base_class_offset(lv, (S7856C29*)(S7856C28*), ABISELECT(80,44), "S7856C27");
    /*is_ambiguous_... S7856C21::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C21*)(S7856C28*), ABISELECT(32,16), "S7856C27");
    check_base_class_offset(lv, (S7856C17_nt*)(S7856C21*)(S7856C28*), ABISELECT(32,16), "S7856C27");
    check_base_class_offset(lv, (S7856C21*)(S7856C28*), ABISELECT(32,16), "S7856C27");
    check_base_class_offset(lv, (S7856C24*)(S7856C28*), ABISELECT(16,8), "S7856C27");
    check_base_class_offset(lv, (S7856C28*), ABISELECT(16,8), "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), 0, "S7856C27");
    test_class_info(&lv, &cd_S7856C27);
    dp->~S7856C27();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7856C27(Test_S7856C27, "S7856C27", ABISELECT(168,92));

#else // __cplusplus

extern void _ZN8S7856C27C1Ev();
extern void _ZN8S7856C27D1Ev();
Name_Map name_map_S7856C27[] = {
  NSPAIR(_ZN8S7856C27C1Ev),
  NSPAIR(_ZN8S7856C27D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C17_nt;
extern VTBL_ENTRY _ZTI11S7856C17_nt[];
extern  VTBL_ENTRY _ZTV11S7856C17_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S7856C17_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C7;
extern VTBL_ENTRY _ZTI7S7856C7[];
extern  VTBL_ENTRY _ZTV7S7856C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C7[];
extern Class_Descriptor cd_S7856C16;
extern VTBL_ENTRY _ZTI8S7856C16[];
extern  VTBL_ENTRY _ZTV8S7856C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C16[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C7;
extern VTBL_ENTRY _ZTI7S7856C7[];
extern  VTBL_ENTRY _ZTV7S7856C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C7[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C6;
extern VTBL_ENTRY _ZTI7S7856C6[];
extern  VTBL_ENTRY _ZTV7S7856C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C6[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C16;
extern VTBL_ENTRY _ZTI8S7856C16[];
extern  VTBL_ENTRY _ZTV8S7856C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C16[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C5;
extern VTBL_ENTRY _ZTI7S7856C5[];
extern  VTBL_ENTRY _ZTV7S7856C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C5[];
extern Class_Descriptor cd_S7856C29;
extern VTBL_ENTRY _ZTI8S7856C29[];
extern  VTBL_ENTRY _ZTV8S7856C29[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C29[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C17_nt;
extern VTBL_ENTRY _ZTI11S7856C17_nt[];
extern  VTBL_ENTRY _ZTV11S7856C17_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S7856C17_nt[];
extern Class_Descriptor cd_S7856C21;
extern VTBL_ENTRY _ZTI8S7856C21[];
extern  VTBL_ENTRY _ZTV8S7856C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C21[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C28;
extern VTBL_ENTRY _ZTI8S7856C28[];
extern  VTBL_ENTRY _ZTV8S7856C28[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C28[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
static Base_Class bases_S7856C27[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(44,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7856C11,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(48,28), //bcp->offset
    42, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7856C7,    ABISELECT(64,36), //bcp->offset
    46, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S7856C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7856C7,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(144,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(136,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(136,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    93, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(136,76), //bcp->offset
    110, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    92, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S7856C6,    ABISELECT(120,64), //bcp->offset
    97, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    86, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    44, //immediately_derived
  0, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    44, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(152,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S7856C16,    ABISELECT(152,84), //bcp->offset
    120, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    96, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    44, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    69, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(104,56), //bcp->offset
    91, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S7856C5,    ABISELECT(88,48), //bcp->offset
    74, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    45, //immediately_derived
  0, 1},
  {&cd_S7856C29,    ABISELECT(80,44), //bcp->offset
    56, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    50, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S7856C17_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S7856C21,    ABISELECT(32,16), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S7856C28,    ABISELECT(16,8), //bcp->offset
    19, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7856C27[];
extern void _ZN8S7856C27D1Ev();
extern void _ZN8S7856C27D0Ev();
extern void ABISELECT(_ZThn16_N8S7856C27D1Ev,_ZThn8_N8S7856C27D1Ev)();
extern void ABISELECT(_ZThn16_N8S7856C27D0Ev,_ZThn8_N8S7856C27D0Ev)();
extern void ABISELECT(_ZThn32_N8S7856C27D1Ev,_ZThn16_N8S7856C27D1Ev)();
extern void ABISELECT(_ZThn32_N8S7856C27D0Ev,_ZThn16_N8S7856C27D0Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C27D1Ev,_ZTv0_n32_N8S7856C27D1Ev)();
extern void ABISELECT(_ZThn64_N8S7856C27D1Ev,_ZThn36_N8S7856C27D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C27D0Ev,_ZTv0_n32_N8S7856C27D0Ev)();
extern void ABISELECT(_ZThn64_N8S7856C27D0Ev,_ZThn36_N8S7856C27D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S7856C27D1Ev,_ZTv0_n64_N8S7856C27D1Ev)();
extern void ABISELECT(_ZThn80_N8S7856C27D1Ev,_ZThn44_N8S7856C27D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S7856C27D0Ev,_ZTv0_n64_N8S7856C27D0Ev)();
extern void ABISELECT(_ZThn80_N8S7856C27D0Ev,_ZThn44_N8S7856C27D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S7856C27D1Ev,_ZTv0_n60_N8S7856C27D1Ev)();
extern void ABISELECT(_ZThn88_N8S7856C27D1Ev,_ZThn48_N8S7856C27D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S7856C27D0Ev,_ZTv0_n60_N8S7856C27D0Ev)();
extern void ABISELECT(_ZThn88_N8S7856C27D0Ev,_ZThn48_N8S7856C27D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C27D1Ev,_ZTv0_n44_N8S7856C27D1Ev)();
extern void ABISELECT(_ZThn120_N8S7856C27D1Ev,_ZThn64_N8S7856C27D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C27D0Ev,_ZTv0_n44_N8S7856C27D0Ev)();
extern void ABISELECT(_ZThn120_N8S7856C27D0Ev,_ZThn64_N8S7856C27D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C27D1Ev,_ZTv0_n32_N8S7856C27D1Ev)();
extern void ABISELECT(_ZThn136_N8S7856C27D1Ev,_ZThn76_N8S7856C27D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C27D0Ev,_ZTv0_n32_N8S7856C27D0Ev)();
extern void ABISELECT(_ZThn136_N8S7856C27D0Ev,_ZThn76_N8S7856C27D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C27D1Ev,_ZTv0_n44_N8S7856C27D1Ev)();
extern void ABISELECT(_ZThn152_N8S7856C27D1Ev,_ZThn84_N8S7856C27D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C27D0Ev,_ZTv0_n44_N8S7856C27D0Ev)();
extern void ABISELECT(_ZThn152_N8S7856C27D0Ev,_ZThn84_N8S7856C27D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7856C27[] = {
  0,
  ABISELECT(152,84),
  0,
  ABISELECT(136,76),
  ABISELECT(120,64),
  ABISELECT(88,48),
  ABISELECT(80,44),
  ABISELECT(80,44),
  ABISELECT(64,36),
  ABISELECT(48,28),
  0,
  ABISELECT(44,24),
  0,
  ABISELECT(80,44),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&_ZN8S7856C27D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C27D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(136,76),
  ABISELECT(-16,-8),
  ABISELECT(120,68),
  ABISELECT(104,56),
  ABISELECT(72,40),
  ABISELECT(48,28),
  ABISELECT(64,36),
  ABISELECT(32,20),
  ABISELECT(-16,-8),
  ABISELECT(64,36),
  ABISELECT(64,36),
  ABISELECT(28,16),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S7856C27D1Ev,_ZThn8_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S7856C27D0Ev,_ZThn8_N8S7856C27D0Ev),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S7856C27D1Ev,_ZThn16_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S7856C27D0Ev,_ZThn16_N8S7856C27D0Ev),
  -4,
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C27D1Ev,_ZTv0_n32_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C27D0Ev,_ZTv0_n32_N8S7856C27D0Ev),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(72,40),
  ABISELECT(-80,-44),
  ABISELECT(56,32),
  ABISELECT(-32,-16),
  ABISELECT(40,20),
  ABISELECT(8,4),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-80,-44),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C27D1Ev,_ZTv0_n64_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C27D0Ev,_ZTv0_n64_N8S7856C27D0Ev),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(64,36),
  ABISELECT(-88,-48),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  ABISELECT(32,16),
  ABISELECT(-88,-48),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  ABISELECT(-44,-24),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C27D1Ev,_ZTv0_n60_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C27D0Ev,_ZTv0_n60_N8S7856C27D0Ev),
  ABISELECT(-104,-56),
  ABISELECT(-24,-12),
  ABISELECT(-60,-32),
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  ABISELECT(-120,-64),
  ABISELECT(16,12),
  ABISELECT(-72,-36),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-120,-64),
  ABISELECT(-40,-20),
  ABISELECT(-76,-40),
  ABISELECT(-120,-64),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C27D1Ev,_ZTv0_n44_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C27D0Ev,_ZTv0_n44_N8S7856C27D0Ev),
  ABISELECT(-136,-76),
  ABISELECT(-136,-76),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-92,-52),
  ABISELECT(-136,-76),
  ABISELECT(-136,-76),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C27D1Ev,_ZTv0_n32_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C27D0Ev,_ZTv0_n32_N8S7856C27D0Ev),
  ABISELECT(-152,-84),
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-104,-56),
  ABISELECT(-152,-84),
  ABISELECT(-108,-60),
  ABISELECT(-152,-84),
  ABISELECT(-72,-40),
  ABISELECT(-152,-84),
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C27D1Ev,_ZTv0_n44_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C27D0Ev,_ZTv0_n44_N8S7856C27D0Ev),
};
extern VTBL_ENTRY _ZTV8S7856C27[];
extern void _ZN8S7856C16D1Ev();
extern void _ZN8S7856C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C16__A__8S7856C27[] = {
  ABISELECT(80,44),
  ABISELECT(64,36),
  ABISELECT(48,28),
  0,
  ABISELECT(44,24),
  0,
  ABISELECT(80,44),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&_ZN8S7856C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C16__A__8S7856C27[] = {
  ABISELECT(-80,-44),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C16__A__8S7856C27[] = {
  -4,
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev)();
extern void ABISELECT(_ZThn64_N8S7856C16D1Ev,_ZThn36_N8S7856C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev)();
extern void ABISELECT(_ZThn64_N8S7856C16D0Ev,_ZThn36_N8S7856C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C16__A__8S7856C27[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev),
};
extern void _ZN8S7856C28D1Ev();
extern void _ZN8S7856C28D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C28__8S7856C27[] = {
  ABISELECT(-16,-8),
  ABISELECT(136,76),
  ABISELECT(-16,-8),
  ABISELECT(120,68),
  ABISELECT(104,56),
  ABISELECT(72,40),
  ABISELECT(48,28),
  ABISELECT(64,36),
  ABISELECT(32,20),
  ABISELECT(-16,-8),
  ABISELECT(64,36),
  ABISELECT(64,36),
  ABISELECT(28,16),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&_ZN8S7856C28D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C28D0Ev,
};
extern void _ZN7S7856C7D1Ev();
extern void _ZN7S7856C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C78S7856C28__A1__8S7856C27[] = {
  ABISELECT(-16,-8),
  ABISELECT(64,36),
  ABISELECT(64,36),
  ABISELECT(28,16),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
  (VTBL_ENTRY)&_ZN7S7856C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C7D0Ev,
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C137S7856C78S7856C28__A1__8S7856C27[] = {
  ABISELECT(-16,-8),
  ABISELECT(64,36),
  ABISELECT(64,36),
  ABISELECT(28,16),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C137S7856C78S7856C28__A3__8S7856C27[] = {
  ABISELECT(28,16),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C137S7856C78S7856C28__A1__8S7856C27[] = {
  ABISELECT(-80,-44),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-80,-44),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C78S7856C28__A1__8S7856C27[] = {
  ABISELECT(-80,-44),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-80,-44),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
};
extern void _ZN8S7856C21D1Ev();
extern void _ZN8S7856C21D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C218S7856C28__8S7856C27[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C21[0]),
  (VTBL_ENTRY)&_ZN8S7856C21D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C21D0Ev,
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt8S7856C218S7856C28__A1__8S7856C27[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI11S7856C17_nt[0]),
};
extern void ABISELECT(_ZTv0_n128_N8S7856C28D1Ev,_ZTv0_n64_N8S7856C28D1Ev)();
extern void ABISELECT(_ZThn64_N8S7856C28D1Ev,_ZThn36_N8S7856C28D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S7856C28D0Ev,_ZTv0_n64_N8S7856C28D0Ev)();
extern void ABISELECT(_ZThn64_N8S7856C28D0Ev,_ZThn36_N8S7856C28D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C29__8S7856C28__8S7856C27[] = {
  ABISELECT(-64,-36),
  ABISELECT(-80,-44),
  ABISELECT(72,40),
  ABISELECT(-80,-44),
  ABISELECT(56,32),
  ABISELECT(-32,-16),
  ABISELECT(40,20),
  ABISELECT(8,4),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-80,-44),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-80,-44),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C28D1Ev,_ZTv0_n64_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C28D0Ev,_ZTv0_n64_N8S7856C28D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C28__8S7856C27[] = {
  -4,
  ABISELECT(-48,-28),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C28D1Ev,_ZTv0_n32_N8S7856C28D1Ev)();
extern void ABISELECT(_ZThn48_N8S7856C28D1Ev,_ZThn28_N8S7856C28D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C28D0Ev,_ZTv0_n32_N8S7856C28D0Ev)();
extern void ABISELECT(_ZThn48_N8S7856C28D0Ev,_ZThn28_N8S7856C28D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__A1__8S7856C28__8S7856C27[] = {
  ABISELECT(-48,-28),
  ABISELECT(-64,-36),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-64,-36),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C28D1Ev,_ZTv0_n32_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C28D0Ev,_ZTv0_n32_N8S7856C28D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S7856C28D1Ev,_ZTv0_n60_N8S7856C28D1Ev)();
extern void ABISELECT(_ZThn72_N8S7856C28D1Ev,_ZThn40_N8S7856C28D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S7856C28D0Ev,_ZTv0_n60_N8S7856C28D0Ev)();
extern void ABISELECT(_ZThn72_N8S7856C28D0Ev,_ZThn40_N8S7856C28D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C5__8S7856C28__8S7856C27[] = {
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(64,36),
  ABISELECT(-88,-48),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  ABISELECT(32,16),
  ABISELECT(-88,-48),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  ABISELECT(-44,-24),
  ABISELECT(-88,-48),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C28D1Ev,_ZTv0_n60_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C28D0Ev,_ZTv0_n60_N8S7856C28D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C28D1Ev,_ZTv0_n44_N8S7856C28D1Ev)();
extern void ABISELECT(_ZThn104_N8S7856C28D1Ev,_ZThn56_N8S7856C28D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C28D0Ev,_ZTv0_n44_N8S7856C28D0Ev)();
extern void ABISELECT(_ZThn104_N8S7856C28D0Ev,_ZThn56_N8S7856C28D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C28__8S7856C27[] = {
  ABISELECT(-104,-56),
  ABISELECT(16,12),
  ABISELECT(-72,-36),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-120,-64),
  ABISELECT(-40,-20),
  ABISELECT(-76,-40),
  ABISELECT(-120,-64),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C28D1Ev,_ZTv0_n44_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C28D0Ev,_ZTv0_n44_N8S7856C28D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C28D1Ev,_ZTv0_n32_N8S7856C28D1Ev)();
extern void ABISELECT(_ZThn120_N8S7856C28D1Ev,_ZThn68_N8S7856C28D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C28D0Ev,_ZTv0_n32_N8S7856C28D0Ev)();
extern void ABISELECT(_ZThn120_N8S7856C28D0Ev,_ZThn68_N8S7856C28D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A2__8S7856C28__8S7856C27[] = {
  ABISELECT(-120,-68),
  ABISELECT(-136,-76),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-92,-52),
  ABISELECT(-136,-76),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C28D1Ev,_ZTv0_n32_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C28D0Ev,_ZTv0_n32_N8S7856C28D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C28D1Ev,_ZTv0_n44_N8S7856C28D1Ev)();
extern void ABISELECT(_ZThn136_N8S7856C28D1Ev,_ZThn76_N8S7856C28D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C28D0Ev,_ZTv0_n44_N8S7856C28D0Ev)();
extern void ABISELECT(_ZThn136_N8S7856C28D0Ev,_ZThn76_N8S7856C28D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C28__8S7856C27[] = {
  ABISELECT(-136,-76),
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-104,-56),
  ABISELECT(-152,-84),
  ABISELECT(-108,-60),
  ABISELECT(-152,-84),
  ABISELECT(-72,-40),
  ABISELECT(-152,-84),
  ABISELECT(-136,-76),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C28D1Ev,_ZTv0_n44_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C28D0Ev,_ZTv0_n44_N8S7856C28D0Ev),
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt__8S7856C28__8S7856C27[] = {
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C28__8S7856C27[] = {
  ABISELECT(-104,-56),
  ABISELECT(-24,-12),
  ABISELECT(-60,-32),
  ABISELECT(-104,-56),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
};
extern void ABISELECT(_ZThn16_N8S7856C28D1Ev,_ZThn8_N8S7856C28D1Ev)();
extern void ABISELECT(_ZThn16_N8S7856C28D0Ev,_ZThn8_N8S7856C28D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C21__8S7856C28__8S7856C27[] = {
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S7856C28D1Ev,_ZThn8_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S7856C28D0Ev,_ZThn8_N8S7856C28D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C27[] = {
  ABISELECT(-36,-20),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt__8S7856C27[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI11S7856C17_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C27[] = {
  -4,
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C14__A1__8S7856C27[] = {
  -4,
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
extern void _ZN7S7856C7D1Ev();
extern void _ZN7S7856C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C27[] = {
  ABISELECT(-64,-36),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
  (VTBL_ENTRY)&_ZN7S7856C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C7D0Ev,
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C137S7856C7__8S7856C27[] = {
  ABISELECT(-64,-36),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C137S7856C7__A2__8S7856C27[] = {
  ABISELECT(-20,-12),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C137S7856C7__8S7856C27[] = {
  ABISELECT(-80,-44),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-80,-44),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C7__8S7856C27[] = {
  ABISELECT(-80,-44),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-80,-44),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C27[] = {
  ABISELECT(-80,-44),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void _ZN8S7856C29D1Ev();
extern void _ZN8S7856C29D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C29__8S7856C27[] = {
  ABISELECT(-80,-44),
  ABISELECT(72,40),
  ABISELECT(-80,-44),
  ABISELECT(56,32),
  ABISELECT(-32,-16),
  ABISELECT(40,20),
  ABISELECT(8,4),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-80,-44),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&_ZN8S7856C29D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C29D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N8S7856C29D1Ev,_ZTv0_n32_N8S7856C29D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C29D0Ev,_ZTv0_n32_N8S7856C29D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C29__8S7856C27[] = {
  ABISELECT(16,8),
  ABISELECT(-64,-36),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-64,-36),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C29D1Ev,_ZTv0_n32_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C29D0Ev,_ZTv0_n32_N8S7856C29D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S7856C29D1Ev,_ZTv0_n60_N8S7856C29D1Ev)();
extern void ABISELECT(_ZThn8_N8S7856C29D1Ev,_ZThn4_N8S7856C29D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S7856C29D0Ev,_ZTv0_n60_N8S7856C29D0Ev)();
extern void ABISELECT(_ZThn8_N8S7856C29D0Ev,_ZThn4_N8S7856C29D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C5__8S7856C29__8S7856C27[] = {
  ABISELECT(-8,-4),
  ABISELECT(-88,-48),
  ABISELECT(64,36),
  ABISELECT(-88,-48),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  ABISELECT(32,16),
  ABISELECT(-88,-48),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  ABISELECT(-44,-24),
  ABISELECT(-88,-48),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C29D1Ev,_ZTv0_n60_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C29D0Ev,_ZTv0_n60_N8S7856C29D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C29D1Ev,_ZTv0_n44_N8S7856C29D1Ev)();
extern void ABISELECT(_ZThn40_N8S7856C29D1Ev,_ZThn20_N8S7856C29D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C29D0Ev,_ZTv0_n44_N8S7856C29D0Ev)();
extern void ABISELECT(_ZThn40_N8S7856C29D0Ev,_ZThn20_N8S7856C29D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C29__8S7856C27[] = {
  ABISELECT(-40,-20),
  ABISELECT(16,12),
  ABISELECT(-72,-36),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-120,-64),
  ABISELECT(-40,-20),
  ABISELECT(-76,-40),
  ABISELECT(-120,-64),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C29D1Ev,_ZTv0_n44_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C29D0Ev,_ZTv0_n44_N8S7856C29D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C29__8S7856C27[] = {
  -4,
  ABISELECT(-48,-28),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C29D1Ev,_ZTv0_n32_N8S7856C29D1Ev)();
extern void ABISELECT(_ZThn56_N8S7856C29D1Ev,_ZThn32_N8S7856C29D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C29D0Ev,_ZTv0_n32_N8S7856C29D0Ev)();
extern void ABISELECT(_ZThn56_N8S7856C29D0Ev,_ZThn32_N8S7856C29D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__8S7856C29__8S7856C27[] = {
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-92,-52),
  ABISELECT(-136,-76),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C29D1Ev,_ZTv0_n32_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C29D0Ev,_ZTv0_n32_N8S7856C29D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C29D1Ev,_ZTv0_n44_N8S7856C29D1Ev)();
extern void ABISELECT(_ZThn72_N8S7856C29D1Ev,_ZThn40_N8S7856C29D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C29D0Ev,_ZTv0_n44_N8S7856C29D0Ev)();
extern void ABISELECT(_ZThn72_N8S7856C29D0Ev,_ZThn40_N8S7856C29D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C29__8S7856C27[] = {
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-104,-56),
  ABISELECT(-152,-84),
  ABISELECT(-108,-60),
  ABISELECT(-152,-84),
  ABISELECT(-72,-40),
  ABISELECT(-152,-84),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C29D1Ev,_ZTv0_n44_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C29D0Ev,_ZTv0_n44_N8S7856C29D0Ev),
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt__8S7856C29__8S7856C27[] = {
  0,
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C29__8S7856C27[] = {
  ABISELECT(-104,-56),
  ABISELECT(-24,-12),
  ABISELECT(-60,-32),
  ABISELECT(-104,-56),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
};
extern void _ZN7S7856C5D1Ev();
extern void _ZN7S7856C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C5__8S7856C27[] = {
  ABISELECT(-88,-48),
  ABISELECT(64,36),
  ABISELECT(-88,-48),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  ABISELECT(32,16),
  ABISELECT(-88,-48),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  ABISELECT(-44,-24),
  ABISELECT(-88,-48),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&_ZN7S7856C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C5D0Ev,
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C187S7856C5__8S7856C27[] = {
  ABISELECT(-88,-48),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  ABISELECT(-44,-24),
  ABISELECT(-88,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C187S7856C5__A1__8S7856C27[] = {
  ABISELECT(-44,-24),
  ABISELECT(-88,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C187S7856C5__A5__8S7856C27[] = {
  ABISELECT(-44,-24),
  ABISELECT(-88,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C27[] = {
  ABISELECT(-104,-56),
  ABISELECT(-24,-12),
  ABISELECT(-60,-32),
  ABISELECT(-104,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C187S7856C5__A1__8S7856C27[] = {
  ABISELECT(-36,-20),
  ABISELECT(-80,-44),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZThn48_N8S7856C18D1Ev,_ZThn28_N8S7856C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
extern void ABISELECT(_ZThn48_N8S7856C18D0Ev,_ZThn28_N8S7856C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C187S7856C5__8S7856C27[] = {
  ABISELECT(-48,-28),
  ABISELECT(-136,-76),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-92,-52),
  ABISELECT(-136,-76),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C187S7856C5__8S7856C27[] = {
  ABISELECT(-80,-44),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-80,-44),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C187S7856C5__8S7856C27[] = {
  ABISELECT(-104,-56),
  ABISELECT(-24,-12),
  ABISELECT(-60,-32),
  ABISELECT(-104,-56),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn32_N7S7856C5D1Ev,_ZThn16_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn32_N7S7856C5D0Ev,_ZThn16_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C5__8S7856C27[] = {
  ABISELECT(-32,-16),
  ABISELECT(16,12),
  ABISELECT(-72,-36),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-120,-64),
  ABISELECT(-40,-20),
  ABISELECT(-76,-40),
  ABISELECT(-120,-64),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C5__8S7856C27[] = {
  ABISELECT(24,12),
  ABISELECT(-64,-36),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-64,-36),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C5__8S7856C27[] = {
  ABISELECT(-80,-44),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-80,-44),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C5__8S7856C27[] = {
  -4,
  ABISELECT(-48,-28),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn48_N7S7856C5D1Ev,_ZThn28_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn48_N7S7856C5D0Ev,_ZThn28_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C5__8S7856C27[] = {
  ABISELECT(-48,-28),
  ABISELECT(-136,-76),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-92,-52),
  ABISELECT(-136,-76),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn64_N7S7856C5D1Ev,_ZThn36_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn64_N7S7856C5D0Ev,_ZThn36_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C5__8S7856C27[] = {
  ABISELECT(-64,-36),
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-104,-56),
  ABISELECT(-152,-84),
  ABISELECT(-108,-60),
  ABISELECT(-152,-84),
  ABISELECT(-72,-40),
  ABISELECT(-152,-84),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt__7S7856C5__8S7856C27[] = {
  0,
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__7S7856C5__8S7856C27[] = {
  ABISELECT(-104,-56),
  ABISELECT(-24,-12),
  ABISELECT(-60,-32),
  ABISELECT(-104,-56),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void _ZN7S7856C6D1Ev();
extern void _ZN7S7856C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C27[] = {
  ABISELECT(16,12),
  ABISELECT(-72,-36),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-120,-64),
  ABISELECT(-40,-20),
  ABISELECT(-76,-40),
  ABISELECT(-120,-64),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&_ZN7S7856C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C6D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C6__8S7856C27[] = {
  ABISELECT(56,28),
  ABISELECT(-64,-36),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-64,-36),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C6__8S7856C27[] = {
  ABISELECT(-80,-44),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-80,-44),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C6__8S7856C27[] = {
  -4,
  ABISELECT(-48,-28),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn16_N7S7856C6D1Ev,_ZThn12_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn16_N7S7856C6D0Ev,_ZThn12_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C6__8S7856C27[] = {
  ABISELECT(-16,-12),
  ABISELECT(-136,-76),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-92,-52),
  ABISELECT(-136,-76),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A2__8S7856C27[] = {
  ABISELECT(-136,-76),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-92,-52),
  ABISELECT(-136,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C13__A4__8S7856C27[] = {
  ABISELECT(-92,-52),
  ABISELECT(-136,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C13__A2__8S7856C27[] = {
  ABISELECT(-80,-44),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-80,-44),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
extern void _ZN8S7856C16D1Ev();
extern void _ZN8S7856C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C16__A1__8S7856C27[] = {
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-104,-56),
  ABISELECT(-152,-84),
  ABISELECT(-108,-60),
  ABISELECT(-152,-84),
  ABISELECT(-72,-40),
  ABISELECT(-152,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&_ZN8S7856C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C16__A1__8S7856C27[] = {
  ABISELECT(-80,-44),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-80,-44),
  ABISELECT(72,40),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt__8S7856C16__A1__8S7856C27[] = {
  0,
  ABISELECT(152,84),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C16__A1__8S7856C27[] = {
  -4,
  ABISELECT(-48,-28),
  ABISELECT(104,56),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C16__A1__8S7856C27[] = {
  ABISELECT(88,48),
  ABISELECT(-64,-36),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-64,-36),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev),
};
static  VTT_ENTRY vtt_S7856C27[] = {
  {&(_ZTV8S7856C27[17]),  17,133},
  {&(_tg__ZTV8S7856C16__A__8S7856C27[10]),  10,12},
  {&(_tg__ZTV8S7856C10__8S7856C16__A__8S7856C27[6]),  6,6},
  {&(_tg__ZTV8S7856C16__A__8S7856C27[10]),  10,12},
  {&(_tg__ZTV8S7856C14__8S7856C16__A__8S7856C27[4]),  4,4},
  {&(_tg__ZTV7S7856C7__8S7856C16__A__8S7856C27[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C16__A__8S7856C27[6]),  6,6},
  {&(_tg__ZTV8S7856C28__8S7856C27[16]),  16,18},
  {&(_tg__ZTV7S7856C78S7856C28__A1__8S7856C27[7]),  7,9},
  {&(_tg__ZTV8S7856C137S7856C78S7856C28__A1__8S7856C27[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C137S7856C78S7856C28__A3__8S7856C27[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C78S7856C28__A1__8S7856C27[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C78S7856C28__A1__8S7856C27[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C78S7856C28__A1__8S7856C27[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C78S7856C28__A1__8S7856C27[6]),  6,6},
  {&(_tg__ZTV8S7856C218S7856C28__8S7856C27[3]),  3,5},
  {&(_tg__ZTV11S7856C17_nt8S7856C218S7856C28__A1__8S7856C27[3]),  3,3},
  {&(_tg__ZTV8S7856C29__8S7856C28__8S7856C27[16]),  16,18},
  {&(_tg__ZTV8S7856C29__8S7856C28__8S7856C27[16]),  16,18},
  {&(_tg__ZTV8S7856C14__8S7856C28__8S7856C27[4]),  4,4},
  {&(_tg__ZTV8S7856C29__8S7856C28__8S7856C27[16]),  16,18},
  {&(_tg__ZTV7S7856C7__A1__8S7856C28__8S7856C27[8]),  8,10},
  {&(_tg__ZTV7S7856C5__8S7856C28__8S7856C27[15]),  15,17},
  {&(_tg__ZTV7S7856C6__8S7856C28__8S7856C27[11]),  11,13},
  {&(_tg__ZTV8S7856C13__A2__8S7856C28__8S7856C27[8]),  8,10},
  {&(_tg__ZTV8S7856C16__8S7856C28__8S7856C27[11]),  11,13},
  {&(_tg__ZTV11S7856C17_nt__8S7856C28__8S7856C27[3]),  3,3},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C28__8S7856C27[6]),  6,6},
  {&(_tg__ZTV8S7856C21__8S7856C28__8S7856C27[3]),  3,5},
  {&(_ZTV8S7856C27[72]),  72,133},
  {&(_ZTV8S7856C27[17]),  17,133},
  {&(_ZTV8S7856C27[46]),  46,133},
  {&(_ZTV8S7856C27[54]),  54,133},
  {&(_ZTV8S7856C27[72]),  72,133},
  {&(_ZTV8S7856C27[35]),  35,133},
  {&(_ZTV8S7856C27[72]),  72,133},
  {&(_ZTV8S7856C27[89]),  89,133},
  {&(_ZTV8S7856C27[108]),  108,133},
  {&(_ZTV8S7856C27[118]),  118,133},
  {&(_ZTV8S7856C27[131]),  131,133},
  {&(_ZTV8S7856C27[97]),  97,133},
  {&(_ZTV8S7856C27[40]),  40,133},
  {&(_tg__ZTV8S7856C11__8S7856C27[4]),  4,4},
  {&(_tg__ZTV11S7856C17_nt__8S7856C27[3]),  3,3},
  {&(_tg__ZTV8S7856C14__8S7856C27[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C14__A1__8S7856C27[4]),  4,4},
  {&(_tg__ZTV7S7856C7__8S7856C27[7]),  7,9},
  {&(_tg__ZTV8S7856C137S7856C7__8S7856C27[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C137S7856C7__A2__8S7856C27[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C7__8S7856C27[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C7__8S7856C27[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C7__8S7856C27[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C7__8S7856C27[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C27[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C27[6]),  6,6},
  {&(_tg__ZTV8S7856C29__8S7856C27[15]),  15,17},
  {&(_tg__ZTV7S7856C7__8S7856C29__8S7856C27[8]),  8,10},
  {&(_tg__ZTV8S7856C29__8S7856C27[15]),  15,17},
  {&(_tg__ZTV8S7856C29__8S7856C27[15]),  15,17},
  {&(_tg__ZTV7S7856C5__8S7856C29__8S7856C27[15]),  15,17},
  {&(_tg__ZTV7S7856C6__8S7856C29__8S7856C27[11]),  11,13},
  {&(_tg__ZTV8S7856C14__8S7856C29__8S7856C27[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__8S7856C29__8S7856C27[8]),  8,10},
  {&(_tg__ZTV8S7856C16__8S7856C29__8S7856C27[11]),  11,13},
  {&(_tg__ZTV11S7856C17_nt__8S7856C29__8S7856C27[3]),  3,3},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C29__8S7856C27[6]),  6,6},
  {&(_tg__ZTV7S7856C5__8S7856C27[14]),  14,16},
  {&(_tg__ZTV8S7856C187S7856C5__8S7856C27[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C187S7856C5__A1__8S7856C27[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C187S7856C5__A5__8S7856C27[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C27[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C187S7856C5__A1__8S7856C27[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C187S7856C5__8S7856C27[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C5__8S7856C27[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C5__8S7856C27[6]),  6,6},
  {&(_tg__ZTV8S7856C10__A__8S7856C187S7856C5__8S7856C27[6]),  6,6},
  {&(_tg__ZTV7S7856C6__7S7856C5__8S7856C27[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C5__8S7856C27[8]),  8,10},
  {&(_tg__ZTV8S7856C10__7S7856C5__8S7856C27[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C5__8S7856C27[6]),  6,6},
  {&(_tg__ZTV8S7856C14__7S7856C5__8S7856C27[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C5__8S7856C27[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C5__8S7856C27[11]),  11,13},
  {&(_tg__ZTV11S7856C17_nt__7S7856C5__8S7856C27[3]),  3,3},
  {&(_tg__ZTV8S7856C108S7856C18__A1__7S7856C5__8S7856C27[6]),  6,6},
  {&(_tg__ZTV7S7856C6__8S7856C27[10]),  10,12},
  {&(_tg__ZTV7S7856C7__7S7856C6__8S7856C27[8]),  8,10},
  {&(_tg__ZTV8S7856C10__7S7856C6__8S7856C27[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C6__8S7856C27[6]),  6,6},
  {&(_tg__ZTV8S7856C14__7S7856C6__8S7856C27[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C6__8S7856C27[8]),  8,10},
  {&(_tg__ZTV8S7856C13__A2__8S7856C27[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C13__A4__8S7856C27[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C13__A2__8S7856C27[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C13__A2__8S7856C27[6]),  6,6},
  {&(_tg__ZTV8S7856C16__A1__8S7856C27[10]),  10,12},
  {&(_tg__ZTV8S7856C10__8S7856C16__A1__8S7856C27[6]),  6,6},
  {&(_tg__ZTV11S7856C17_nt__8S7856C16__A1__8S7856C27[3]),  3,3},
  {&(_tg__ZTV8S7856C14__8S7856C16__A1__8S7856C27[4]),  4,4},
  {&(_tg__ZTV7S7856C7__8S7856C16__A1__8S7856C27[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C16__A1__8S7856C27[6]),  6,6},
};
extern VTBL_ENTRY _ZTI8S7856C27[];
extern  VTBL_ENTRY _ZTV8S7856C27[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C27[];
static VTBL_ENTRY alt_thunk_names23[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7856C6D0Ev,_ZThn12_N7S7856C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7856C6D1Ev,_ZThn12_N7S7856C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C5D0Ev,_ZThn28_N7S7856C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C5D1Ev,_ZThn28_N7S7856C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7856C5D0Ev,_ZThn36_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7856C5D0Ev,_ZThn16_N7S7856C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7856C5D1Ev,_ZThn36_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7856C5D1Ev,_ZThn16_N7S7856C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7856C18D0Ev,_ZThn28_N8S7856C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7856C18D1Ev,_ZThn28_N8S7856C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C29D0Ev,_ZTv0_n32_N8S7856C29D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7856C29D0Ev,_ZThn32_N8S7856C29D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C29D1Ev,_ZTv0_n32_N8S7856C29D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7856C29D1Ev,_ZThn32_N8S7856C29D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C29D0Ev,_ZTv0_n44_N8S7856C29D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7856C29D0Ev,_ZThn40_N8S7856C29D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S7856C29D0Ev,_ZThn20_N8S7856C29D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C29D1Ev,_ZTv0_n44_N8S7856C29D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7856C29D1Ev,_ZThn40_N8S7856C29D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S7856C29D1Ev,_ZThn20_N8S7856C29D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C29D0Ev,_ZTv0_n60_N8S7856C29D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7856C29D0Ev,_ZThn4_N8S7856C29D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C29D1Ev,_ZTv0_n60_N8S7856C29D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7856C29D1Ev,_ZThn4_N8S7856C29D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C28D0Ev,_ZTv0_n44_N8S7856C28D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7856C28D0Ev,_ZThn76_N8S7856C28D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7856C28D0Ev,_ZThn56_N8S7856C28D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C28D1Ev,_ZTv0_n44_N8S7856C28D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7856C28D1Ev,_ZThn76_N8S7856C28D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7856C28D1Ev,_ZThn56_N8S7856C28D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C28D0Ev,_ZTv0_n60_N8S7856C28D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7856C28D0Ev,_ZThn40_N8S7856C28D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C28D1Ev,_ZTv0_n60_N8S7856C28D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7856C28D1Ev,_ZThn40_N8S7856C28D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C28D0Ev,_ZTv0_n32_N8S7856C28D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7856C28D0Ev,_ZThn68_N8S7856C28D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7856C28D0Ev,_ZThn28_N8S7856C28D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C28D1Ev,_ZTv0_n32_N8S7856C28D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7856C28D1Ev,_ZThn68_N8S7856C28D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7856C28D1Ev,_ZThn28_N8S7856C28D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7856C28D0Ev,_ZTv0_n64_N8S7856C28D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7856C28D0Ev,_ZThn36_N8S7856C28D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7856C28D1Ev,_ZTv0_n64_N8S7856C28D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7856C28D1Ev,_ZThn36_N8S7856C28D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7856C16D0Ev,_ZThn36_N8S7856C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7856C16D1Ev,_ZThn36_N8S7856C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C27D0Ev,_ZTv0_n44_N8S7856C27D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S7856C27D0Ev,_ZThn84_N8S7856C27D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7856C27D0Ev,_ZThn64_N8S7856C27D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C27D1Ev,_ZTv0_n44_N8S7856C27D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S7856C27D1Ev,_ZThn84_N8S7856C27D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7856C27D1Ev,_ZThn64_N8S7856C27D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C27D0Ev,_ZTv0_n60_N8S7856C27D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7856C27D0Ev,_ZThn48_N8S7856C27D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C27D1Ev,_ZTv0_n60_N8S7856C27D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7856C27D1Ev,_ZThn48_N8S7856C27D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7856C27D0Ev,_ZTv0_n64_N8S7856C27D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7856C27D0Ev,_ZThn44_N8S7856C27D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7856C27D1Ev,_ZTv0_n64_N8S7856C27D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7856C27D1Ev,_ZThn44_N8S7856C27D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C27D0Ev,_ZTv0_n32_N8S7856C27D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7856C27D0Ev,_ZThn76_N8S7856C27D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7856C27D0Ev,_ZThn36_N8S7856C27D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C27D1Ev,_ZTv0_n32_N8S7856C27D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7856C27D1Ev,_ZThn76_N8S7856C27D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7856C27D1Ev,_ZThn36_N8S7856C27D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7856C27 = {  "S7856C27", // class name
  bases_S7856C27, 52,
  &(vtc_S7856C27[0]), // expected_vtbl_contents
  &(vtt_S7856C27[0]), // expected_vtt_contents
  ABISELECT(168,92), // object size
  NSPAIRA(_ZTI8S7856C27),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7856C27),133, //virtual function table var
  17, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7856C27),101, //virtual table table var
  25, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names23,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7856C25  : S7856C13 , S7856C26 , S7856C4 , virtual S7856C27 , S7856C5 {
  ~S7856C25(); // tgen
  S7856C25(); // tgen
};
//SIG(-1 S7856C25) C1{ BC2{ BC3{ m} VBC4{ m} VBC5{ m} BC6{ VBC4 BC3 VBC5} VBC7{ BC4 VBC6 VBC3} vd} BC8{ VBC3} BC9{ VBC10{ VBC11{ VBC12{ VBC4 VBC3 VBC7 BC5 BC2 vd} VBC13{ BC5 BC3 BC6 Fi} VBC2 vd Fi[2]} VBC14{ m} VBC15{ VBC6 VBC16{ VBC3} VBC13 BC5 VBC12 vd Fi} BC17{ VBC2 BC13 BC7 BC5 vd} vd} BC4 BC7 BC18{ BC14 VBC4 BC11 VBC17 vd v1} vd} VBC19{ BC15 BC20{ BC12 VBC13 VBC21{ VBC12 VBC10 vd} BC22{ BC3 BC16 vd} BC23{ m} Fi} VBC23} BC10}


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

static void Test_S7856C25()
{
  extern Class_Descriptor cd_S7856C25;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(36,38)];
    init_test(&cd_S7856C25, buf);
    S7856C25 *dp, &lv = *(dp=new (buf) S7856C25());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(280,148), "sizeof(S7856C25)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7856C25)");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*), ABISELECT(8,4), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*), 0, "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*), 0, "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C11 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*), 0, "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C7*), 0, "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*)(S7856C7*), 0, "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*)(S7856C7*), 0, "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C14 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*), 0, "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*), 0, "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*), 0, "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), 0, "S7856C25");
    /*is_ambiguous_... S7856C19::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C19*)(S7856C4*), 0, "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C18 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*), 0, "S7856C25");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C7*)(S7856C28*)(S7856C27*), 0, "S7856C25");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), 0, "S7856C25");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), 0, "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), 0, "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*), 0, "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*), 0, "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*), 0, "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*)(S7856C7*), 0, "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*)(S7856C7*), 0, "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*), 0, "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*), 0, "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*), 0, "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), 0, "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*), 0, "S7856C25");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), 0, "S7856C25");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), 0, "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), 0, "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*), 0, "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*), 0, "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*), ABISELECT(112,60), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*), ABISELECT(112,60), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*), ABISELECT(112,60), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C16*), ABISELECT(112,60), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(112,60), "S7856C25");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C4*), ABISELECT(112,60), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*), ABISELECT(112,60), "S7856C25");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C16*)(S7856C27*), ABISELECT(112,60), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(112,60), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*), ABISELECT(73,41), "S7856C25");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C26*), ABISELECT(73,41), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C7*), ABISELECT(73,41), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C17_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C17_nt*), ABISELECT(73,41), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(73,41), "S7856C25");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C4*), ABISELECT(73,41), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*), ABISELECT(73,41), "S7856C25");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(73,41), "S7856C25");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C17_nt*)(S7856C21*)(S7856C28*)(S7856C27*), ABISELECT(73,41), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(73,41), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*), ABISELECT(112,60), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C7*), ABISELECT(112,60), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*)(S7856C7*), ABISELECT(112,60), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*), ABISELECT(112,60), "S7856C25");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(112,60), "S7856C25");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(112,60), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C13*), 0, "S7856C25");
    check_base_class_offset(lv, (S7856C26*), ABISELECT(16,8), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C7*), ABISELECT(128,72), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*)(S7856C7*), ABISELECT(136,76), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(128,72), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(128,72), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C7*), ABISELECT(128,72), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C6 */ AMB_check_base_class_offset(lv, (S7856C7*)(S7856C6*), ABISELECT(128,72), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C7*)(S7856C16*), ABISELECT(128,72), "S7856C25");
    check_base_class_offset(lv, (S7856C7*)(S7856C6*)(S7856C19*)(S7856C4*), ABISELECT(128,72), "S7856C25");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C7*)(S7856C16*)(S7856C27*), ABISELECT(128,72), "S7856C25");
    check_base_class_offset(lv, (S7856C7*)(S7856C29*), ABISELECT(128,72), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*), ABISELECT(144,80), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*), ABISELECT(152,84), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*), ABISELECT(144,80), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*), ABISELECT(144,80), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C6 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C6*), ABISELECT(144,80), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C16*), ABISELECT(144,80), "S7856C25");
    check_base_class_offset(lv, (S7856C14*)(S7856C6*)(S7856C19*)(S7856C4*), ABISELECT(144,80), "S7856C25");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C16*)(S7856C27*), ABISELECT(144,80), "S7856C25");
    /*is_ambiguous_... S7856C28::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C28*)(S7856C27*), ABISELECT(144,80), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*), ABISELECT(168,92), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*), ABISELECT(160,88), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*), ABISELECT(160,88), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C6 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C6*), ABISELECT(160,88), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C18*)(S7856C5*), ABISELECT(160,88), "S7856C25");
    /*is_ambiguous_... S7856C6::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C6*)(S7856C19*)(S7856C4*), ABISELECT(160,88), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C18*), ABISELECT(160,88), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C18*)(S7856C5*), ABISELECT(160,88), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C6*)(S7856C5*), ABISELECT(112,60), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C6*)(S7856C5*), ABISELECT(112,60), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7856C5*), 0, "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7856C5*), 0, "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C17_nt*)(S7856C16*), ABISELECT(176,96), "S7856C25");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C17_nt*)(S7856C16*)(S7856C27*), ABISELECT(176,96), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C16*), ABISELECT(176,96), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C16*)(S7856C5*), ABISELECT(176,96), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C16*)(S7856C5*), ABISELECT(176,96), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(80,44), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(88,48), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(80,44), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(80,44), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(80,44), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(96,52), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(96,52), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*)(S7856C5*), ABISELECT(104,56), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C18*)(S7856C5*), ABISELECT(80,44), "S7856C25");
    check_base_class_offset(lv, (S7856C5*)(S7856C4*), ABISELECT(80,44), "S7856C25");
    check_base_class_offset(lv, (S7856C5*)(S7856C29*), ABISELECT(80,44), "S7856C25");
    /*is_ambiguous_... S7856C4::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C4*), ABISELECT(32,16), "S7856C25");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C4*), ABISELECT(24,12), "S7856C25");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C4*), ABISELECT(24,12), "S7856C25");
    check_base_class_offset(lv, (S7856C15*)(S7856C19*)(S7856C4*), ABISELECT(32,16), "S7856C25");
    check_base_class_offset(lv, (S7856C6*)(S7856C19*)(S7856C4*), ABISELECT(32,16), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*), ABISELECT(192,104), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*), ABISELECT(200,108), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*), ABISELECT(192,104), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*), ABISELECT(192,104), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C18*), ABISELECT(192,104), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C18 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*), ABISELECT(208,112), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*), ABISELECT(208,112), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*), ABISELECT(216,116), "S7856C25");
    check_base_class_offset(lv, (S7856C18*)(S7856C19*)(S7856C4*), ABISELECT(192,104), "S7856C25");
    check_base_class_offset(lv, (S7856C19*)(S7856C4*), ABISELECT(32,16), "S7856C25");
    check_base_class_offset(lv, (S7856C4*), ABISELECT(24,12), "S7856C25");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C16*)(S7856C27*), ABISELECT(224,120), "S7856C25");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C16*)(S7856C27*), ABISELECT(224,120), "S7856C25");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(240,128), "S7856C25");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(248,132), "S7856C25");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(240,128), "S7856C25");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(240,128), "S7856C25");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(240,128), "S7856C25");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(240,128), "S7856C25");
    check_base_class_offset(lv, (S7856C29*)(S7856C28*)(S7856C27*), ABISELECT(272,144), "S7856C25");
    /*is_ambiguous_... S7856C21::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C21*)(S7856C28*)(S7856C27*), ABISELECT(256,136), "S7856C25");
    check_base_class_offset(lv, (S7856C17_nt*)(S7856C21*)(S7856C28*)(S7856C27*), ABISELECT(256,136), "S7856C25");
    check_base_class_offset(lv, (S7856C21*)(S7856C28*)(S7856C27*), ABISELECT(256,136), "S7856C25");
    check_base_class_offset(lv, (S7856C24*)(S7856C28*)(S7856C27*), ABISELECT(240,128), "S7856C25");
    check_base_class_offset(lv, (S7856C28*)(S7856C27*), ABISELECT(240,128), "S7856C25");
    /*is_ambiguous_... S7856C27::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7856C27*), 0, "S7856C25");
    check_base_class_offset(lv, (S7856C27*), ABISELECT(224,120), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(48,28), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(56,32), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(48,28), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(48,28), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(48,28), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(64,36), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(64,36), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*)(S7856C5*), ABISELECT(72,40), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C18*)(S7856C5*), ABISELECT(48,28), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C5*), ABISELECT(48,28), "S7856C25");
    test_class_info(&lv, &cd_S7856C25);
    dp->~S7856C25();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7856C25(Test_S7856C25, "S7856C25", ABISELECT(280,148));

#else // __cplusplus

extern void _ZN8S7856C25C1Ev();
extern void _ZN8S7856C25D1Ev();
Name_Map name_map_S7856C25[] = {
  NSPAIR(_ZN8S7856C25C1Ev),
  NSPAIR(_ZN8S7856C25D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C26;
extern VTBL_ENTRY _ZTI8S7856C26[];
extern  VTBL_ENTRY _ZTV8S7856C26[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C26[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C7;
extern VTBL_ENTRY _ZTI7S7856C7[];
extern  VTBL_ENTRY _ZTV7S7856C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C7[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C6;
extern VTBL_ENTRY _ZTI7S7856C6[];
extern  VTBL_ENTRY _ZTV7S7856C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C6[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C17_nt;
extern VTBL_ENTRY _ZTI11S7856C17_nt[];
extern  VTBL_ENTRY _ZTV11S7856C17_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S7856C17_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C16;
extern VTBL_ENTRY _ZTI8S7856C16[];
extern  VTBL_ENTRY _ZTV8S7856C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C16[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C5;
extern VTBL_ENTRY _ZTI7S7856C5[];
extern  VTBL_ENTRY _ZTV7S7856C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C5[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C6;
extern VTBL_ENTRY _ZTI7S7856C6[];
extern  VTBL_ENTRY _ZTV7S7856C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C6[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C19;
extern VTBL_ENTRY _ZTI8S7856C19[];
extern  VTBL_ENTRY _ZTV8S7856C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C19[];
extern Class_Descriptor cd_S7856C4;
extern VTBL_ENTRY _ZTI7S7856C4[];
extern  VTBL_ENTRY _ZTV7S7856C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C4[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C16;
extern VTBL_ENTRY _ZTI8S7856C16[];
extern  VTBL_ENTRY _ZTV8S7856C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C16[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C7;
extern VTBL_ENTRY _ZTI7S7856C7[];
extern  VTBL_ENTRY _ZTV7S7856C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C7[];
extern Class_Descriptor cd_S7856C29;
extern VTBL_ENTRY _ZTI8S7856C29[];
extern  VTBL_ENTRY _ZTV8S7856C29[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C29[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C17_nt;
extern VTBL_ENTRY _ZTI11S7856C17_nt[];
extern  VTBL_ENTRY _ZTV11S7856C17_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S7856C17_nt[];
extern Class_Descriptor cd_S7856C21;
extern VTBL_ENTRY _ZTI8S7856C21[];
extern  VTBL_ENTRY _ZTV8S7856C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C21[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C28;
extern VTBL_ENTRY _ZTI8S7856C28[];
extern  VTBL_ENTRY _ZTV8S7856C28[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C28[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C27;
extern VTBL_ENTRY _ZTI8S7856C27[];
extern  VTBL_ENTRY _ZTV8S7856C27[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C27[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C5;
extern VTBL_ENTRY _ZTI7S7856C5[];
extern  VTBL_ENTRY _ZTV7S7856C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C5[];
static Base_Class bases_S7856C25[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C9_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7856C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    57, //bcp->index_in_construction_vtbl_array
    79, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(73,41), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7856C10,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    56, //bcp->index_in_construction_vtbl_array
    77, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S7856C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C26,    ABISELECT(16,8), //bcp->offset
    21, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    58, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    ABISELECT(128,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(136,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(128,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(128,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    107, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(128,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    106, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C7,    ABISELECT(128,72), //bcp->offset
    114, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    62, //bcp->index_in_construction_vtbl_array
    105, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(144,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(152,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(144,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(144,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    113, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(144,80), //bcp->offset
    124, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    63, //bcp->index_in_construction_vtbl_array
    112, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(168,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    115, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(160,88), //bcp->offset
    128, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    64, //bcp->index_in_construction_vtbl_array
    114, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S7856C6,    ABISELECT(112,60), //bcp->offset
    101, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    61, //bcp->index_in_construction_vtbl_array
    99, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    41, //immediately_derived
  0, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    41, //immediately_derived
  0, 1},
  {&cd_S7856C17_nt,    ABISELECT(176,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    66, //bcp->index_in_construction_vtbl_array
    124, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(176,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7856C16,    ABISELECT(176,96), //bcp->offset
    138, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    65, //bcp->index_in_construction_vtbl_array
    118, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    41, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    83, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    82, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(96,52), //bcp->offset
    95, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    67, //bcp->index_in_construction_vtbl_array
    84, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S7856C5,    ABISELECT(80,44), //bcp->offset
    78, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    60, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    57, //immediately_derived
  0, 1},
  {&cd_S77C13_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    56, //immediately_derived
  0, 0},
  {&cd_S7856C6,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    56, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(192,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(200,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(192,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(192,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    127, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(192,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    126, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(208,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    53, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(208,112), //bcp->offset
    162, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    70, //bcp->index_in_construction_vtbl_array
    128, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(216,116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(192,104), //bcp->offset
    151, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    69, //bcp->index_in_construction_vtbl_array
    125, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    56, //immediately_derived
  0, 1},
  {&cd_S7856C19,    ABISELECT(32,16), //bcp->offset
    42, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    68, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S7856C4,    ABISELECT(24,12), //bcp->offset
    24, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    59, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    ABISELECT(224,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    59, //immediately_derived
  0, 0},
  {&cd_S7856C16,    ABISELECT(224,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    135, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    73, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(240,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    65, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(248,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    64, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(240,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    63, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(240,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    144, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    64, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(240,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    143, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    65, //immediately_derived
  0, 0},
  {&cd_S7856C7,    ABISELECT(240,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    142, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    71, //immediately_derived
  0, 0},
  {&cd_S7856C29,    ABISELECT(272,144), //bcp->offset
    211, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    73, //bcp->index_in_construction_vtbl_array
    176, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    71, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(256,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    69, //immediately_derived
  0, 0},
  {&cd_S7856C17_nt,    ABISELECT(256,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    150, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    69, //immediately_derived
  0, 0},
  {&cd_S7856C21,    ABISELECT(256,136), //bcp->offset
    206, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    74, //bcp->index_in_construction_vtbl_array
    149, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    71, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(240,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    71, //immediately_derived
  0, 0},
  {&cd_S7856C28,    ABISELECT(240,128), //bcp->offset
    188, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    72, //bcp->index_in_construction_vtbl_array
    141, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    73, //immediately_derived
  0, 0},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    73, //immediately_derived
  0, 1},
  {&cd_S7856C27,    ABISELECT(224,120), //bcp->offset
    168, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    71, //bcp->index_in_construction_vtbl_array
    134, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    78, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    78, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    77, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    78, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    82, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    80, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(64,36), //bcp->offset
    72, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    76, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    40, //init_seq
    82, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    82, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    41, //init_seq
    83, //immediately_derived
  0, 0},
  {&cd_S7856C5,    ABISELECT(48,28), //bcp->offset
    56, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    75, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    42, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7856C25[];
extern void _ZN8S7856C25D1Ev();
extern void _ZN8S7856C25D0Ev();
extern void ABISELECT(_ZThn24_N8S7856C25D1Ev,_ZThn12_N8S7856C25D1Ev)();
extern void ABISELECT(_ZThn24_N8S7856C25D0Ev,_ZThn12_N8S7856C25D0Ev)();
extern void ABISELECT(_ZThn32_N8S7856C25D1Ev,_ZThn16_N8S7856C25D1Ev)();
extern void ABISELECT(_ZThn32_N8S7856C25D0Ev,_ZThn16_N8S7856C25D0Ev)();
extern void _ZN8S7856C192v1Ev();
extern void ABISELECT(_ZThn48_N8S7856C25D1Ev,_ZThn28_N8S7856C25D1Ev)();
extern void ABISELECT(_ZThn48_N8S7856C25D0Ev,_ZThn28_N8S7856C25D0Ev)();
extern void ABISELECT(_ZTv0_n120_N8S7856C25D1Ev,_ZTv0_n60_N8S7856C25D1Ev)();
extern void ABISELECT(_ZThn80_N8S7856C25D1Ev,_ZThn44_N8S7856C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S7856C25D0Ev,_ZTv0_n60_N8S7856C25D0Ev)();
extern void ABISELECT(_ZThn80_N8S7856C25D0Ev,_ZThn44_N8S7856C25D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C25D1Ev,_ZTv0_n44_N8S7856C25D1Ev)();
extern void ABISELECT(_ZThn112_N8S7856C25D1Ev,_ZThn60_N8S7856C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C25D0Ev,_ZTv0_n44_N8S7856C25D0Ev)();
extern void ABISELECT(_ZThn112_N8S7856C25D0Ev,_ZThn60_N8S7856C25D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C25D1Ev,_ZTv0_n32_N8S7856C25D1Ev)();
extern void ABISELECT(_ZThn128_N8S7856C25D1Ev,_ZThn72_N8S7856C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C25D0Ev,_ZTv0_n32_N8S7856C25D0Ev)();
extern void ABISELECT(_ZThn128_N8S7856C25D0Ev,_ZThn72_N8S7856C25D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C25D1Ev,_ZTv0_n32_N8S7856C25D1Ev)();
extern void ABISELECT(_ZThn160_N8S7856C25D1Ev,_ZThn88_N8S7856C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C25D0Ev,_ZTv0_n32_N8S7856C25D0Ev)();
extern void ABISELECT(_ZThn160_N8S7856C25D0Ev,_ZThn88_N8S7856C25D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C25D1Ev,_ZTv0_n44_N8S7856C25D1Ev)();
extern void ABISELECT(_ZThn176_N8S7856C25D1Ev,_ZThn96_N8S7856C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C25D0Ev,_ZTv0_n44_N8S7856C25D0Ev)();
extern void ABISELECT(_ZThn176_N8S7856C25D0Ev,_ZThn96_N8S7856C25D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7856C25D1Ev,_ZTv0_n36_N8S7856C25D1Ev)();
extern void ABISELECT(_ZThn192_N8S7856C25D1Ev,_ZThn104_N8S7856C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7856C25D0Ev,_ZTv0_n36_N8S7856C25D0Ev)();
extern void ABISELECT(_ZThn192_N8S7856C25D0Ev,_ZThn104_N8S7856C25D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N8S7856C25D1Ev,_ZTv0_n72_N8S7856C25D1Ev)();
extern void ABISELECT(_ZThn224_N8S7856C25D1Ev,_ZThn120_N8S7856C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N8S7856C25D0Ev,_ZTv0_n72_N8S7856C25D0Ev)();
extern void ABISELECT(_ZThn224_N8S7856C25D0Ev,_ZThn120_N8S7856C25D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n144_N8S7856C25D1Ev,_ZTvn8_n72_N8S7856C25D1Ev)();
extern void ABISELECT(_ZTvn16_n144_N8S7856C25D0Ev,_ZTvn8_n72_N8S7856C25D0Ev)();
extern void ABISELECT(_ZTvn32_n144_N8S7856C25D1Ev,_ZTvn16_n72_N8S7856C25D1Ev)();
extern void ABISELECT(_ZTvn32_n144_N8S7856C25D0Ev,_ZTvn16_n72_N8S7856C25D0Ev)();
extern void ABISELECT(_ZTv0_n128_N8S7856C25D1Ev,_ZTv0_n64_N8S7856C25D1Ev)();
extern void ABISELECT(_ZThn272_N8S7856C25D1Ev,_ZThn144_N8S7856C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S7856C25D0Ev,_ZTv0_n64_N8S7856C25D0Ev)();
extern void ABISELECT(_ZThn272_N8S7856C25D0Ev,_ZThn144_N8S7856C25D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7856C25[] = {
  0,
  ABISELECT(272,144),
  ABISELECT(224,120),
  ABISELECT(192,104),
  ABISELECT(176,96),
  ABISELECT(176,96),
  0,
  ABISELECT(160,88),
  ABISELECT(144,80),
  ABISELECT(128,72),
  ABISELECT(112,60),
  ABISELECT(80,44),
  ABISELECT(73,41),
  ABISELECT(112,60),
  ABISELECT(112,60),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&_ZN8S7856C25D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C25D0Ev,
  ABISELECT(57,33),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  ABISELECT(168,92),
  ABISELECT(152,84),
  ABISELECT(152,84),
  ABISELECT(-24,-12),
  ABISELECT(136,76),
  ABISELECT(120,68),
  ABISELECT(88,48),
  ABISELECT(104,60),
  ABISELECT(88,48),
  ABISELECT(56,32),
  ABISELECT(49,29),
  ABISELECT(88,48),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S7856C25D1Ev,_ZThn12_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S7856C25D0Ev,_ZThn12_N8S7856C25D0Ev),
  ABISELECT(160,88),
  ABISELECT(128,72),
  ABISELECT(112,64),
  ABISELECT(80,44),
  ABISELECT(96,56),
  ABISELECT(41,25),
  ABISELECT(80,44),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S7856C25D1Ev,_ZThn16_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S7856C25D0Ev,_ZThn16_N8S7856C25D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
  ABISELECT(128,68),
  ABISELECT(128,68),
  ABISELECT(-48,-28),
  ABISELECT(96,52),
  ABISELECT(80,44),
  ABISELECT(64,32),
  ABISELECT(25,13),
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(112,60),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7856C25D1Ev,_ZThn28_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7856C25D0Ev,_ZThn28_N8S7856C25D0Ev),
  ABISELECT(9,5),
  ABISELECT(48,24),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  ABISELECT(-80,-44),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-80,-44),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-7,-3),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C25D1Ev,_ZTv0_n60_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C25D0Ev,_ZTv0_n60_N8S7856C25D0Ev),
  ABISELECT(-23,-11),
  ABISELECT(16,8),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  ABISELECT(-112,-60),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-39,-19),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C25D1Ev,_ZTv0_n44_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C25D0Ev,_ZTv0_n44_N8S7856C25D0Ev),
  ABISELECT(-128,-72),
  ABISELECT(-55,-31),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C25D1Ev,_ZTv0_n32_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C25D0Ev,_ZTv0_n32_N8S7856C25D0Ev),
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  ABISELECT(-160,-88),
  ABISELECT(-87,-47),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C25D1Ev,_ZTv0_n32_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C25D0Ev,_ZTv0_n32_N8S7856C25D0Ev),
  ABISELECT(-176,-96),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-176,-96),
  ABISELECT(-176,-96),
  ABISELECT(-64,-36),
  ABISELECT(-103,-55),
  ABISELECT(-176,-96),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C25D1Ev,_ZTv0_n44_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C25D0Ev,_ZTv0_n44_N8S7856C25D0Ev),
  ABISELECT(-192,-104),
  ABISELECT(-119,-63),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C25D1Ev,_ZTv0_n36_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C25D0Ev,_ZTv0_n36_N8S7856C25D0Ev),
  ABISELECT(-135,-71),
  ABISELECT(-96,-52),
  ABISELECT(-208,-112),
  ABISELECT(-208,-112),
  ABISELECT(-208,-112),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  ABISELECT(-224,-120),
  ABISELECT(-224,-120),
  ABISELECT(-48,-24),
  ABISELECT(-224,-120),
  ABISELECT(-64,-32),
  ABISELECT(-112,-60),
  ABISELECT(-144,-76),
  ABISELECT(48,24),
  ABISELECT(-112,-60),
  ABISELECT(-96,-48),
  ABISELECT(-80,-40),
  ABISELECT(-48,-24),
  ABISELECT(-224,-120),
  ABISELECT(-224,-120),
  ABISELECT(-112,-60),
  ABISELECT(-151,-79),
  ABISELECT(-224,-120),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S7856C25D1Ev,_ZTv0_n72_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S7856C25D0Ev,_ZTv0_n72_N8S7856C25D0Ev),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-240,-128),
  ABISELECT(-80,-40),
  ABISELECT(-128,-68),
  ABISELECT(-160,-84),
  ABISELECT(-112,-56),
  ABISELECT(32,16),
  ABISELECT(-96,-48),
  ABISELECT(-167,-87),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n144_N8S7856C25D1Ev,_ZTvn8_n72_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n144_N8S7856C25D0Ev,_ZTvn8_n72_N8S7856C25D0Ev),
  ABISELECT(-183,-95),
  ABISELECT(-256,-136),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n144_N8S7856C25D1Ev,_ZTvn16_n72_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n144_N8S7856C25D0Ev,_ZTvn16_n72_N8S7856C25D0Ev),
  ABISELECT(-272,-144),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-272,-144),
  ABISELECT(-112,-56),
  ABISELECT(-128,-64),
  ABISELECT(-160,-84),
  ABISELECT(-192,-100),
  ABISELECT(-160,-84),
  ABISELECT(-144,-72),
  ABISELECT(-199,-103),
  ABISELECT(-160,-84),
  ABISELECT(-272,-144),
  ABISELECT(-272,-144),
  ABISELECT(-272,-144),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C25D1Ev,_ZTv0_n64_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C25D0Ev,_ZTv0_n64_N8S7856C25D0Ev),
};
extern VTBL_ENTRY _ZTV8S7856C25[];
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A__8S7856C25[] = {
  ABISELECT(73,41),
  ABISELECT(112,60),
  ABISELECT(112,60),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C13__8S7856C25[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C13__A__8S7856C25[] = {
  ABISELECT(-39,-19),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C26__8S7856C25[] = {
  ABISELECT(57,33),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C26[0]),
};
extern void _ZN7S7856C4D1Ev();
extern void _ZN7S7856C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C4__8S7856C25[] = {
  ABISELECT(168,92),
  ABISELECT(152,84),
  ABISELECT(152,84),
  ABISELECT(-24,-12),
  ABISELECT(136,76),
  ABISELECT(120,68),
  ABISELECT(88,48),
  ABISELECT(104,60),
  ABISELECT(88,48),
  ABISELECT(56,32),
  ABISELECT(49,29),
  ABISELECT(88,48),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&_ZN7S7856C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C4D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C107S7856C4__A2__8S7856C25[] = {
  ABISELECT(49,29),
  ABISELECT(88,48),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C107S7856C4__A2__8S7856C25[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void _ZN8S7856C19D1Ev();
extern void _ZN8S7856C19D0Ev();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C197S7856C4__8S7856C25[] = {
  ABISELECT(160,88),
  ABISELECT(128,72),
  ABISELECT(112,64),
  ABISELECT(80,44),
  ABISELECT(96,56),
  ABISELECT(41,25),
  ABISELECT(80,44),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&_ZN8S7856C19D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C19D0Ev,
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void _ZN7S7856C6D1Ev();
extern void _ZN7S7856C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C68S7856C197S7856C4__A1__8S7856C25[] = {
  ABISELECT(128,72),
  ABISELECT(112,64),
  ABISELECT(80,44),
  ABISELECT(96,56),
  ABISELECT(41,25),
  ABISELECT(80,44),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&_ZN7S7856C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C6D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn96_N7S7856C6D1Ev,_ZThn56_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn96_N7S7856C6D0Ev,_ZThn56_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C68S7856C197S7856C4__A1__8S7856C25[] = {
  ABISELECT(-96,-56),
  ABISELECT(-55,-31),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C68S7856C197S7856C4__A1__8S7856C25[] = {
  ABISELECT(-39,-19),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C68S7856C197S7856C4__A1__8S7856C25[] = {
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn128_N7S7856C6D1Ev,_ZThn72_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn128_N7S7856C6D0Ev,_ZThn72_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C68S7856C197S7856C4__A1__8S7856C25[] = {
  ABISELECT(-128,-72),
  ABISELECT(-87,-47),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev)();
extern void ABISELECT(_ZThn96_N8S7856C19D1Ev,_ZThn56_N8S7856C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev)();
extern void ABISELECT(_ZThn96_N8S7856C19D0Ev,_ZThn56_N8S7856C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C197S7856C4__8S7856C25[] = {
  ABISELECT(-96,-56),
  ABISELECT(-55,-31),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C197S7856C4__8S7856C25[] = {
  ABISELECT(-39,-19),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C197S7856C4__8S7856C25[] = {
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev)();
extern void ABISELECT(_ZThn128_N8S7856C19D1Ev,_ZThn72_N8S7856C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev)();
extern void ABISELECT(_ZThn128_N8S7856C19D0Ev,_ZThn72_N8S7856C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__8S7856C197S7856C4__8S7856C25[] = {
  ABISELECT(-128,-72),
  ABISELECT(-87,-47),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev),
};
extern void ABISELECT(_ZTv0_n72_N8S7856C19D1Ev,_ZTv0_n36_N8S7856C19D1Ev)();
extern void ABISELECT(_ZThn160_N8S7856C19D1Ev,_ZThn88_N8S7856C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7856C19D0Ev,_ZTv0_n36_N8S7856C19D0Ev)();
extern void ABISELECT(_ZThn160_N8S7856C19D0Ev,_ZThn88_N8S7856C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C18__8S7856C197S7856C4__8S7856C25[] = {
  ABISELECT(-160,-88),
  ABISELECT(-119,-63),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C19D1Ev,_ZTv0_n36_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C19D0Ev,_ZTv0_n36_N8S7856C19D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__8S7856C197S7856C4__8S7856C25[] = {
  ABISELECT(-135,-71),
  ABISELECT(-96,-52),
  ABISELECT(-208,-112),
  ABISELECT(-208,-112),
  ABISELECT(-176,-96),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
extern void ABISELECT(_ZTv0_n120_N7S7856C4D1Ev,_ZTv0_n60_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn56_N7S7856C4D1Ev,_ZThn32_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S7856C4D0Ev,_ZTv0_n60_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn56_N7S7856C4D0Ev,_ZThn32_N7S7856C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C5__7S7856C4__8S7856C25[] = {
  ABISELECT(-56,-32),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-80,-44),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-7,-3),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C4D1Ev,_ZTv0_n60_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C4D0Ev,_ZTv0_n60_N7S7856C4D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn88_N7S7856C4D1Ev,_ZThn48_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn88_N7S7856C4D0Ev,_ZThn48_N7S7856C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C4__8S7856C25[] = {
  ABISELECT(-88,-48),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-39,-19),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn104_N7S7856C4D1Ev,_ZThn60_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn104_N7S7856C4D0Ev,_ZThn60_N7S7856C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C4__8S7856C25[] = {
  ABISELECT(-104,-60),
  ABISELECT(-55,-31),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  ABISELECT(-104,-60),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C4__8S7856C25[] = {
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn136_N7S7856C4D1Ev,_ZThn76_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn136_N7S7856C4D0Ev,_ZThn76_N7S7856C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C4__8S7856C25[] = {
  ABISELECT(-136,-76),
  ABISELECT(-87,-47),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  ABISELECT(-136,-76),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn152_N7S7856C4D1Ev,_ZThn84_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn152_N7S7856C4D0Ev,_ZThn84_N7S7856C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C4__8S7856C25[] = {
  ABISELECT(-152,-84),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-176,-96),
  ABISELECT(-176,-96),
  ABISELECT(-64,-36),
  ABISELECT(-103,-55),
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__7S7856C4__8S7856C25[] = {
  ABISELECT(-23,-11),
  ABISELECT(16,8),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
extern void ABISELECT(_ZThn8_N7S7856C4D1Ev,_ZThn4_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn8_N7S7856C4D0Ev,_ZThn4_N7S7856C4D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C19__7S7856C4__8S7856C25[] = {
  ABISELECT(160,88),
  ABISELECT(128,72),
  ABISELECT(112,64),
  ABISELECT(80,44),
  ABISELECT(96,56),
  ABISELECT(41,25),
  ABISELECT(80,44),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7856C4D1Ev,_ZThn4_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7856C4D0Ev,_ZThn4_N7S7856C4D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N7S7856C4D1Ev,_ZTv0_n36_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn168_N7S7856C4D1Ev,_ZThn92_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7856C4D0Ev,_ZTv0_n36_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn168_N7S7856C4D0Ev,_ZThn92_N7S7856C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C18__A1__7S7856C4__8S7856C25[] = {
  ABISELECT(-168,-92),
  ABISELECT(-119,-63),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  ABISELECT(-168,-92),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7856C4D1Ev,_ZTv0_n36_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7856C4D0Ev,_ZTv0_n36_N7S7856C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A3__7S7856C4__8S7856C25[] = {
  ABISELECT(-135,-71),
  ABISELECT(-96,-52),
  ABISELECT(-208,-112),
  ABISELECT(-208,-112),
  ABISELECT(-184,-100),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
extern void _ZN7S7856C5D1Ev();
extern void _ZN7S7856C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C5__A__8S7856C25[] = {
  ABISELECT(128,68),
  ABISELECT(128,68),
  ABISELECT(-48,-28),
  ABISELECT(96,52),
  ABISELECT(80,44),
  ABISELECT(64,32),
  ABISELECT(25,13),
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(112,60),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&_ZN7S7856C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C5D0Ev,
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C187S7856C5__A2__8S7856C25[] = {
  ABISELECT(25,13),
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(112,60),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C187S7856C5__A3__8S7856C25[] = {
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C187S7856C5__A8__8S7856C25[] = {
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A4__8S7856C25[] = {
  ABISELECT(9,5),
  ABISELECT(48,24),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C187S7856C5__A4__8S7856C25[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZThn112_N8S7856C18D1Ev,_ZThn60_N8S7856C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
extern void ABISELECT(_ZThn112_N8S7856C18D0Ev,_ZThn60_N8S7856C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C187S7856C5__A2__8S7856C25[] = {
  ABISELECT(-112,-60),
  ABISELECT(-87,-47),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C187S7856C5__A2__8S7856C25[] = {
  ABISELECT(-39,-19),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C187S7856C5__A2__8S7856C25[] = {
  ABISELECT(9,5),
  ABISELECT(48,24),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn64_N7S7856C5D1Ev,_ZThn32_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn64_N7S7856C5D0Ev,_ZThn32_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C5__A__8S7856C25[] = {
  ABISELECT(-64,-32),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-39,-19),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn80_N7S7856C5D1Ev,_ZThn44_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn80_N7S7856C5D0Ev,_ZThn44_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C5__A__8S7856C25[] = {
  ABISELECT(-80,-44),
  ABISELECT(-55,-31),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C5__A__8S7856C25[] = {
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn112_N7S7856C5D1Ev,_ZThn60_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn112_N7S7856C5D0Ev,_ZThn60_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C5__A__8S7856C25[] = {
  ABISELECT(-112,-60),
  ABISELECT(-87,-47),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn128_N7S7856C5D1Ev,_ZThn68_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn128_N7S7856C5D0Ev,_ZThn68_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C5__A__8S7856C25[] = {
  ABISELECT(-128,-68),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-176,-96),
  ABISELECT(-176,-96),
  ABISELECT(-64,-36),
  ABISELECT(-103,-55),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__7S7856C5__A__8S7856C25[] = {
  ABISELECT(9,5),
  ABISELECT(48,24),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C25[] = {
  ABISELECT(-39,-19),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__A1__8S7856C25[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
extern void _ZN7S7856C5D1Ev();
extern void _ZN7S7856C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C5__8S7856C25[] = {
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-80,-44),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-7,-3),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&_ZN7S7856C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C5D0Ev,
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C187S7856C5__8S7856C25[] = {
  ABISELECT(-7,-3),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C187S7856C5__A1__8S7856C25[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C187S7856C5__A5__8S7856C25[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C25[] = {
  ABISELECT(-23,-11),
  ABISELECT(16,8),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C187S7856C5__A1__8S7856C25[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZThn80_N8S7856C18D1Ev,_ZThn44_N8S7856C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
extern void ABISELECT(_ZThn80_N8S7856C18D0Ev,_ZThn44_N8S7856C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C187S7856C5__8S7856C25[] = {
  ABISELECT(-80,-44),
  ABISELECT(-87,-47),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C187S7856C5__8S7856C25[] = {
  ABISELECT(-39,-19),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C187S7856C5__8S7856C25[] = {
  ABISELECT(-23,-11),
  ABISELECT(16,8),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn32_N7S7856C5D1Ev,_ZThn16_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn32_N7S7856C5D0Ev,_ZThn16_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C5__8S7856C25[] = {
  ABISELECT(-32,-16),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-39,-19),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn48_N7S7856C5D1Ev,_ZThn28_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn48_N7S7856C5D0Ev,_ZThn28_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C5__8S7856C25[] = {
  ABISELECT(-48,-28),
  ABISELECT(-55,-31),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C5__8S7856C25[] = {
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn80_N7S7856C5D1Ev,_ZThn44_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn80_N7S7856C5D0Ev,_ZThn44_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C5__8S7856C25[] = {
  ABISELECT(-80,-44),
  ABISELECT(-87,-47),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn96_N7S7856C5D1Ev,_ZThn52_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn96_N7S7856C5D0Ev,_ZThn52_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C5__8S7856C25[] = {
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-176,-96),
  ABISELECT(-176,-96),
  ABISELECT(-64,-36),
  ABISELECT(-103,-55),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__7S7856C5__8S7856C25[] = {
  ABISELECT(-23,-11),
  ABISELECT(16,8),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void _ZN7S7856C6D1Ev();
extern void _ZN7S7856C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C25[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-39,-19),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&_ZN7S7856C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C6D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn16_N7S7856C6D1Ev,_ZThn12_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn16_N7S7856C6D0Ev,_ZThn12_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C6__8S7856C25[] = {
  ABISELECT(-16,-12),
  ABISELECT(-55,-31),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C6__8S7856C25[] = {
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn48_N7S7856C6D1Ev,_ZThn28_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn48_N7S7856C6D0Ev,_ZThn28_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C6__8S7856C25[] = {
  ABISELECT(-48,-28),
  ABISELECT(-87,-47),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
extern void _ZN7S7856C7D1Ev();
extern void _ZN7S7856C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C25[] = {
  ABISELECT(-55,-31),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
  (VTBL_ENTRY)&_ZN7S7856C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C7D0Ev,
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C137S7856C7__A1__8S7856C25[] = {
  ABISELECT(-55,-31),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C137S7856C7__A2__8S7856C25[] = {
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C137S7856C7__A1__8S7856C25[] = {
  ABISELECT(-39,-19),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C7__8S7856C25[] = {
  ABISELECT(-39,-19),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C25[] = {
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C14__A3__8S7856C25[] = {
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A2__8S7856C25[] = {
  ABISELECT(-87,-47),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C13__A4__8S7856C25[] = {
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C13__A2__8S7856C25[] = {
  ABISELECT(-39,-19),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
extern void _ZN8S7856C16D1Ev();
extern void _ZN8S7856C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C25[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-176,-96),
  ABISELECT(-176,-96),
  ABISELECT(-64,-36),
  ABISELECT(-103,-55),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&_ZN8S7856C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C16__8S7856C25[] = {
  ABISELECT(-39,-19),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C16__8S7856C25[] = {
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C16__8S7856C25[] = {
  ABISELECT(48,24),
  ABISELECT(-55,-31),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt__8S7856C25[] = {
  ABISELECT(-103,-55),
  0,
  (VTBL_ENTRY)&(_ZTI11S7856C17_nt[0]),
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C18__A1__8S7856C25[] = {
  ABISELECT(-119,-63),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C18__A2__8S7856C25[] = {
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C18__A6__8S7856C25[] = {
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A3__8S7856C25[] = {
  ABISELECT(-135,-71),
  ABISELECT(-96,-52),
  ABISELECT(-208,-112),
  ABISELECT(-208,-112),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C18__A3__8S7856C25[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(96,52),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C18__A1__8S7856C25[] = {
  ABISELECT(32,16),
  ABISELECT(-87,-47),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C18__A1__8S7856C25[] = {
  ABISELECT(-39,-19),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C18__A1__8S7856C25[] = {
  ABISELECT(-135,-71),
  ABISELECT(-96,-52),
  ABISELECT(-208,-112),
  ABISELECT(-208,-112),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern void _ZN8S7856C27D1Ev();
extern void _ZN8S7856C27D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C27__8S7856C25[] = {
  ABISELECT(-224,-120),
  ABISELECT(-48,-24),
  ABISELECT(-224,-120),
  ABISELECT(-64,-32),
  ABISELECT(-112,-60),
  ABISELECT(-144,-76),
  ABISELECT(48,24),
  ABISELECT(-112,-60),
  ABISELECT(-96,-48),
  ABISELECT(-80,-40),
  ABISELECT(-48,-24),
  ABISELECT(-224,-120),
  ABISELECT(-224,-120),
  ABISELECT(-112,-60),
  ABISELECT(-151,-79),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&_ZN8S7856C27D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C27D0Ev,
};
extern void _ZN8S7856C16D1Ev();
extern void _ZN8S7856C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C168S7856C27__A1__8S7856C25[] = {
  ABISELECT(-112,-60),
  ABISELECT(-96,-48),
  ABISELECT(-80,-40),
  ABISELECT(-48,-24),
  ABISELECT(-224,-120),
  ABISELECT(-224,-120),
  ABISELECT(-112,-60),
  ABISELECT(-151,-79),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&_ZN8S7856C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C168S7856C27__A1__8S7856C25[] = {
  ABISELECT(-39,-19),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt__8S7856C168S7856C27__A1__8S7856C25[] = {
  ABISELECT(-103,-55),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C168S7856C27__A1__8S7856C25[] = {
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C168S7856C27__A1__8S7856C25[] = {
  ABISELECT(96,48),
  ABISELECT(-55,-31),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev),
};
extern void _ZN8S7856C28D1Ev();
extern void _ZN8S7856C28D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C288S7856C27__8S7856C25[] = {
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-240,-128),
  ABISELECT(-80,-40),
  ABISELECT(-128,-68),
  ABISELECT(-160,-84),
  ABISELECT(-112,-56),
  ABISELECT(32,16),
  ABISELECT(-96,-48),
  ABISELECT(-167,-87),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&_ZN8S7856C28D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C28D0Ev,
};
extern void _ZN7S7856C7D1Ev();
extern void _ZN7S7856C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C78S7856C288S7856C27__A1__8S7856C25[] = {
  ABISELECT(-167,-87),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
  (VTBL_ENTRY)&_ZN7S7856C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C7D0Ev,
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C137S7856C78S7856C288S7856C27__A3__8S7856C25[] = {
  ABISELECT(-167,-87),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C137S7856C78S7856C288S7856C27__A7__8S7856C25[] = {
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C137S7856C78S7856C288S7856C27__A3__8S7856C25[] = {
  ABISELECT(-39,-19),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C78S7856C288S7856C27__A1__8S7856C25[] = {
  ABISELECT(-39,-19),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
};
extern void _ZN8S7856C21D1Ev();
extern void _ZN8S7856C21D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C218S7856C288S7856C27__8S7856C25[] = {
  ABISELECT(-183,-95),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C21[0]),
  (VTBL_ENTRY)&_ZN8S7856C21D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C21D0Ev,
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt8S7856C218S7856C288S7856C27__A1__8S7856C25[] = {
  ABISELECT(-183,-95),
  0,
  (VTBL_ENTRY)&(_ZTI11S7856C17_nt[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C28D1Ev,_ZTv0_n44_N8S7856C28D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C28D0Ev,_ZTv0_n44_N8S7856C28D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C288S7856C27__8S7856C25[] = {
  ABISELECT(128,68),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-39,-19),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C28D1Ev,_ZTv0_n44_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C28D0Ev,_ZTv0_n44_N8S7856C28D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C288S7856C27__8S7856C25[] = {
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
};
extern void ABISELECT(_ZTv0_n128_N8S7856C28D1Ev,_ZTv0_n64_N8S7856C28D1Ev)();
extern void ABISELECT(_ZThn32_N8S7856C28D1Ev,_ZThn16_N8S7856C28D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S7856C28D0Ev,_ZTv0_n64_N8S7856C28D0Ev)();
extern void ABISELECT(_ZThn32_N8S7856C28D0Ev,_ZThn16_N8S7856C28D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C29__8S7856C288S7856C27__8S7856C25[] = {
  ABISELECT(-32,-16),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-272,-144),
  ABISELECT(-112,-56),
  ABISELECT(-128,-64),
  ABISELECT(-160,-84),
  ABISELECT(-192,-100),
  ABISELECT(-160,-84),
  ABISELECT(-144,-72),
  ABISELECT(-199,-103),
  ABISELECT(-160,-84),
  ABISELECT(-272,-144),
  ABISELECT(-272,-144),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C28D1Ev,_ZTv0_n64_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C28D0Ev,_ZTv0_n64_N8S7856C28D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C28D1Ev,_ZTv0_n32_N8S7856C28D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C28D0Ev,_ZTv0_n32_N8S7856C28D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__A1__8S7856C288S7856C27__8S7856C25[] = {
  ABISELECT(112,56),
  ABISELECT(-55,-31),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C28D1Ev,_ZTv0_n32_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C28D0Ev,_ZTv0_n32_N8S7856C28D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S7856C28D1Ev,_ZTv0_n60_N8S7856C28D1Ev)();
extern void ABISELECT(_ZTv0_n120_N8S7856C28D0Ev,_ZTv0_n60_N8S7856C28D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__8S7856C288S7856C27__8S7856C25[] = {
  ABISELECT(160,84),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-80,-44),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-7,-3),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C28D1Ev,_ZTv0_n60_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C28D0Ev,_ZTv0_n60_N8S7856C28D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C28D1Ev,_ZTv0_n32_N8S7856C28D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C28D0Ev,_ZTv0_n32_N8S7856C28D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A2__8S7856C288S7856C27__8S7856C25[] = {
  ABISELECT(80,40),
  ABISELECT(-87,-47),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C28D1Ev,_ZTv0_n32_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C28D0Ev,_ZTv0_n32_N8S7856C28D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C28D1Ev,_ZTv0_n44_N8S7856C28D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C28D0Ev,_ZTv0_n44_N8S7856C28D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C288S7856C27__8S7856C25[] = {
  ABISELECT(64,32),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-176,-96),
  ABISELECT(-176,-96),
  ABISELECT(-64,-36),
  ABISELECT(-103,-55),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C28D1Ev,_ZTv0_n44_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C28D0Ev,_ZTv0_n44_N8S7856C28D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C288S7856C27__8S7856C25[] = {
  ABISELECT(-23,-11),
  ABISELECT(16,8),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
};
extern void ABISELECT(_ZThn16_N8S7856C28D1Ev,_ZThn8_N8S7856C28D1Ev)();
extern void ABISELECT(_ZThn16_N8S7856C28D0Ev,_ZThn8_N8S7856C28D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C21__8S7856C288S7856C27__8S7856C25[] = {
  ABISELECT(-183,-95),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S7856C28D1Ev,_ZThn8_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S7856C28D0Ev,_ZThn8_N8S7856C28D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C27D1Ev,_ZTv0_n44_N8S7856C27D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C27D0Ev,_ZTv0_n44_N8S7856C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C27__8S7856C25[] = {
  ABISELECT(112,60),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-39,-19),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C27D1Ev,_ZTv0_n44_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C27D0Ev,_ZTv0_n44_N8S7856C27D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C27D1Ev,_ZTv0_n44_N8S7856C27D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C27D0Ev,_ZTv0_n44_N8S7856C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__A1__8S7856C27__8S7856C25[] = {
  ABISELECT(48,24),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-176,-96),
  ABISELECT(-176,-96),
  ABISELECT(-64,-36),
  ABISELECT(-103,-55),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C27D1Ev,_ZTv0_n44_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C27D0Ev,_ZTv0_n44_N8S7856C27D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C27__8S7856C25[] = {
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C27D1Ev,_ZTv0_n32_N8S7856C27D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C27D0Ev,_ZTv0_n32_N8S7856C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C27__8S7856C25[] = {
  ABISELECT(96,48),
  ABISELECT(-55,-31),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C27D1Ev,_ZTv0_n32_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C27D0Ev,_ZTv0_n32_N8S7856C27D0Ev),
};
extern void ABISELECT(_ZThn16_N8S7856C27D1Ev,_ZThn8_N8S7856C27D1Ev)();
extern void ABISELECT(_ZThn16_N8S7856C27D0Ev,_ZThn8_N8S7856C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C28__8S7856C27__8S7856C25[] = {
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-240,-128),
  ABISELECT(-80,-40),
  ABISELECT(-128,-68),
  ABISELECT(-160,-84),
  ABISELECT(-112,-56),
  ABISELECT(32,16),
  ABISELECT(-96,-48),
  ABISELECT(-167,-87),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S7856C27D1Ev,_ZThn8_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S7856C27D0Ev,_ZThn8_N8S7856C27D0Ev),
};
extern void ABISELECT(_ZTv0_n128_N8S7856C27D1Ev,_ZTv0_n64_N8S7856C27D1Ev)();
extern void ABISELECT(_ZThn48_N8S7856C27D1Ev,_ZThn24_N8S7856C27D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S7856C27D0Ev,_ZTv0_n64_N8S7856C27D0Ev)();
extern void ABISELECT(_ZThn48_N8S7856C27D0Ev,_ZThn24_N8S7856C27D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C29__8S7856C27__8S7856C25[] = {
  ABISELECT(-48,-24),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-272,-144),
  ABISELECT(-112,-56),
  ABISELECT(-128,-64),
  ABISELECT(-160,-84),
  ABISELECT(-192,-100),
  ABISELECT(-160,-84),
  ABISELECT(-144,-72),
  ABISELECT(-199,-103),
  ABISELECT(-160,-84),
  ABISELECT(-272,-144),
  ABISELECT(-272,-144),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C27D1Ev,_ZTv0_n64_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C27D0Ev,_ZTv0_n64_N8S7856C27D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S7856C27D1Ev,_ZTv0_n60_N8S7856C27D1Ev)();
extern void ABISELECT(_ZTv0_n120_N8S7856C27D0Ev,_ZTv0_n60_N8S7856C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__8S7856C27__8S7856C25[] = {
  ABISELECT(144,76),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-80,-44),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-7,-3),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C27D1Ev,_ZTv0_n60_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C27D0Ev,_ZTv0_n60_N8S7856C27D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C27D1Ev,_ZTv0_n32_N8S7856C27D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C27D0Ev,_ZTv0_n32_N8S7856C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A2__8S7856C27__8S7856C25[] = {
  ABISELECT(64,32),
  ABISELECT(-87,-47),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C27D1Ev,_ZTv0_n32_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C27D0Ev,_ZTv0_n32_N8S7856C27D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C27__8S7856C25[] = {
  ABISELECT(-23,-11),
  ABISELECT(16,8),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
};
extern void ABISELECT(_ZThn32_N8S7856C27D1Ev,_ZThn16_N8S7856C27D1Ev)();
extern void ABISELECT(_ZThn32_N8S7856C27D0Ev,_ZThn16_N8S7856C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C218S7856C28__8S7856C27__8S7856C25[] = {
  ABISELECT(-183,-95),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S7856C27D1Ev,_ZThn16_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S7856C27D0Ev,_ZThn16_N8S7856C27D0Ev),
};
extern void _ZN8S7856C29D1Ev();
extern void _ZN8S7856C29D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C29__8S7856C25[] = {
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-272,-144),
  ABISELECT(-112,-56),
  ABISELECT(-128,-64),
  ABISELECT(-160,-84),
  ABISELECT(-192,-100),
  ABISELECT(-160,-84),
  ABISELECT(-144,-72),
  ABISELECT(-199,-103),
  ABISELECT(-160,-84),
  ABISELECT(-272,-144),
  ABISELECT(-272,-144),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&_ZN8S7856C29D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C29D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N8S7856C29D1Ev,_ZTv0_n32_N8S7856C29D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C29D0Ev,_ZTv0_n32_N8S7856C29D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C29__8S7856C25[] = {
  ABISELECT(144,72),
  ABISELECT(-55,-31),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  ABISELECT(144,72),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C29D1Ev,_ZTv0_n32_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C29D0Ev,_ZTv0_n32_N8S7856C29D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C29D1Ev,_ZTv0_n44_N8S7856C29D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C29D0Ev,_ZTv0_n44_N8S7856C29D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C29__8S7856C25[] = {
  ABISELECT(160,84),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-39,-19),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C29D1Ev,_ZTv0_n44_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C29D0Ev,_ZTv0_n44_N8S7856C29D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S7856C29D1Ev,_ZTv0_n60_N8S7856C29D1Ev)();
extern void ABISELECT(_ZTv0_n120_N8S7856C29D0Ev,_ZTv0_n60_N8S7856C29D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__8S7856C29__8S7856C25[] = {
  ABISELECT(192,100),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-80,-44),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-7,-3),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C29D1Ev,_ZTv0_n60_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C29D0Ev,_ZTv0_n60_N8S7856C29D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C29__8S7856C25[] = {
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  ABISELECT(128,64),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C29D1Ev,_ZTv0_n32_N8S7856C29D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C29D0Ev,_ZTv0_n32_N8S7856C29D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__8S7856C29__8S7856C25[] = {
  ABISELECT(112,56),
  ABISELECT(-87,-47),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C29D1Ev,_ZTv0_n32_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C29D0Ev,_ZTv0_n32_N8S7856C29D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C29D1Ev,_ZTv0_n44_N8S7856C29D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C29D0Ev,_ZTv0_n44_N8S7856C29D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C29__8S7856C25[] = {
  ABISELECT(96,48),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-176,-96),
  ABISELECT(-176,-96),
  ABISELECT(-64,-36),
  ABISELECT(-103,-55),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C29D1Ev,_ZTv0_n44_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C29D0Ev,_ZTv0_n44_N8S7856C29D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C29__8S7856C25[] = {
  ABISELECT(-23,-11),
  ABISELECT(16,8),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  ABISELECT(176,92),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
};
static  VTT_ENTRY vtt_S7856C25[] = {
  {&(_ZTV8S7856C25[19]),  19,229},
  {&(_tg__ZTV8S7856C13__A__8S7856C25[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C13__8S7856C25[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C13__A__8S7856C25[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C13__A__8S7856C25[6]),  6,6},
  {&(_tg__ZTV8S7856C26__8S7856C25[3]),  3,3},
  {&(_tg__ZTV7S7856C4__8S7856C25[16]),  16,18},
  {&(_tg__ZTV8S7856C107S7856C4__A2__8S7856C25[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C107S7856C4__A2__8S7856C25[4]),  4,4},
  {&(_tg__ZTV8S7856C197S7856C4__8S7856C25[11]),  11,14},
  {&(_tg__ZTV7S7856C68S7856C197S7856C4__A1__8S7856C25[10]),  10,12},
  {&(_tg__ZTV7S7856C7__7S7856C68S7856C197S7856C4__A1__8S7856C25[8]),  8,10},
  {&(_tg__ZTV8S7856C10__7S7856C68S7856C197S7856C4__A1__8S7856C25[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C68S7856C197S7856C4__A1__8S7856C25[6]),  6,6},
  {&(_tg__ZTV8S7856C14__7S7856C68S7856C197S7856C4__A1__8S7856C25[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C68S7856C197S7856C4__A1__8S7856C25[8]),  8,10},
  {&(_tg__ZTV7S7856C7__8S7856C197S7856C4__8S7856C25[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C197S7856C4__8S7856C25[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C197S7856C4__8S7856C25[6]),  6,6},
  {&(_tg__ZTV8S7856C14__8S7856C197S7856C4__8S7856C25[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__8S7856C197S7856C4__8S7856C25[8]),  8,10},
  {&(_tg__ZTV8S7856C18__8S7856C197S7856C4__8S7856C25[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A1__8S7856C197S7856C4__8S7856C25[6]),  6,6},
  {&(_tg__ZTV7S7856C5__7S7856C4__8S7856C25[15]),  15,17},
  {&(_tg__ZTV7S7856C6__7S7856C4__8S7856C25[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C4__8S7856C25[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C4__8S7856C25[11]),  11,13},
  {&(_tg__ZTV7S7856C6__7S7856C4__8S7856C25[11]),  11,13},
  {&(_tg__ZTV8S7856C14__7S7856C4__8S7856C25[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C4__8S7856C25[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C4__8S7856C25[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C4__8S7856C25[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__7S7856C4__8S7856C25[6]),  6,6},
  {&(_tg__ZTV8S7856C19__7S7856C4__8S7856C25[11]),  11,14},
  {&(_tg__ZTV8S7856C18__A1__7S7856C4__8S7856C25[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A3__7S7856C4__8S7856C25[6]),  6,6},
  {&(_tg__ZTV7S7856C5__A__8S7856C25[14]),  14,16},
  {&(_tg__ZTV8S7856C187S7856C5__A2__8S7856C25[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C187S7856C5__A3__8S7856C25[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C187S7856C5__A8__8S7856C25[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A4__8S7856C25[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C187S7856C5__A4__8S7856C25[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C187S7856C5__A2__8S7856C25[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C5__A2__8S7856C25[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C5__A2__8S7856C25[6]),  6,6},
  {&(_tg__ZTV8S7856C10__A__8S7856C187S7856C5__A2__8S7856C25[6]),  6,6},
  {&(_tg__ZTV7S7856C6__7S7856C5__A__8S7856C25[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C5__A__8S7856C25[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C5__A__8S7856C25[11]),  11,13},
  {&(_tg__ZTV7S7856C6__7S7856C5__A__8S7856C25[11]),  11,13},
  {&(_tg__ZTV8S7856C14__7S7856C5__A__8S7856C25[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C5__A__8S7856C25[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C5__A__8S7856C25[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C5__A__8S7856C25[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C18__A1__7S7856C5__A__8S7856C25[6]),  6,6},
  {&(_ZTV8S7856C25[112]),  112,229},
  {&(_ZTV8S7856C25[112]),  112,229},
  {&(_ZTV8S7856C25[24]),  24,229},
  {&(_ZTV8S7856C25[40]),  40,229},
  {&(_ZTV8S7856C25[93]),  93,229},
  {&(_ZTV8S7856C25[112]),  112,229},
  {&(_ZTV8S7856C25[122]),  122,229},
  {&(_ZTV8S7856C25[128]),  128,229},
  {&(_ZTV8S7856C25[136]),  136,229},
  {&(_ZTV8S7856C25[149]),  149,229},
  {&(_ZTV8S7856C25[149]),  149,229},
  {&(_ZTV8S7856C25[101]),  101,229},
  {&(_ZTV8S7856C25[53]),  53,229},
  {&(_ZTV8S7856C25[160]),  160,229},
  {&(_ZTV8S7856C25[168]),  168,229},
  {&(_ZTV8S7856C25[186]),  186,229},
  {&(_ZTV8S7856C25[204]),  204,229},
  {&(_ZTV8S7856C25[227]),  227,229},
  {&(_ZTV8S7856C25[209]),  209,229},
  {&(_ZTV8S7856C25[70]),  70,229},
  {&(_ZTV8S7856C25[78]),  78,229},
  {&(_tg__ZTV8S7856C10__8S7856C25[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C25[6]),  6,6},
  {&(_tg__ZTV8S7856C11__A1__8S7856C25[4]),  4,4},
  {&(_tg__ZTV7S7856C5__8S7856C25[14]),  14,16},
  {&(_tg__ZTV8S7856C187S7856C5__8S7856C25[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C187S7856C5__A1__8S7856C25[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C187S7856C5__A5__8S7856C25[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C25[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C187S7856C5__A1__8S7856C25[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C187S7856C5__8S7856C25[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C5__8S7856C25[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C5__8S7856C25[6]),  6,6},
  {&(_tg__ZTV8S7856C10__A__8S7856C187S7856C5__8S7856C25[6]),  6,6},
  {&(_tg__ZTV7S7856C6__7S7856C5__8S7856C25[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C5__8S7856C25[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C5__8S7856C25[11]),  11,13},
  {&(_tg__ZTV7S7856C6__7S7856C5__8S7856C25[11]),  11,13},
  {&(_tg__ZTV8S7856C14__7S7856C5__8S7856C25[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C5__8S7856C25[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C5__8S7856C25[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C5__8S7856C25[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C18__A1__7S7856C5__8S7856C25[6]),  6,6},
  {&(_tg__ZTV7S7856C6__8S7856C25[10]),  10,12},
  {&(_tg__ZTV7S7856C7__7S7856C6__8S7856C25[8]),  8,10},
  {&(_tg__ZTV7S7856C6__8S7856C25[10]),  10,12},
  {&(_tg__ZTV7S7856C6__8S7856C25[10]),  10,12},
  {&(_tg__ZTV8S7856C14__7S7856C6__8S7856C25[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C6__8S7856C25[8]),  8,10},
  {&(_tg__ZTV7S7856C7__8S7856C25[7]),  7,9},
  {&(_tg__ZTV8S7856C137S7856C7__A1__8S7856C25[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C137S7856C7__A2__8S7856C25[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C7__A1__8S7856C25[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C7__A1__8S7856C25[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C7__8S7856C25[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C7__8S7856C25[6]),  6,6},
  {&(_tg__ZTV8S7856C14__8S7856C25[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C14__A3__8S7856C25[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A2__8S7856C25[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C13__A4__8S7856C25[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C13__A2__8S7856C25[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C13__A2__8S7856C25[6]),  6,6},
  {&(_tg__ZTV8S7856C16__8S7856C25[10]),  10,12},
  {&(_tg__ZTV8S7856C10__8S7856C16__8S7856C25[6]),  6,6},
  {&(_tg__ZTV8S7856C16__8S7856C25[10]),  10,12},
  {&(_tg__ZTV8S7856C14__8S7856C16__8S7856C25[4]),  4,4},
  {&(_tg__ZTV7S7856C7__8S7856C16__8S7856C25[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C16__8S7856C25[6]),  6,6},
  {&(_tg__ZTV11S7856C17_nt__8S7856C25[3]),  3,3},
  {&(_tg__ZTV8S7856C18__A1__8S7856C25[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C18__A2__8S7856C25[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C18__A6__8S7856C25[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C18__A3__8S7856C25[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C18__A3__8S7856C25[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C18__A1__8S7856C25[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C18__A1__8S7856C25[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C18__A1__8S7856C25[6]),  6,6},
  {&(_tg__ZTV8S7856C10__A__8S7856C18__A1__8S7856C25[6]),  6,6},
  {&(_tg__ZTV8S7856C27__8S7856C25[17]),  17,19},
  {&(_tg__ZTV8S7856C168S7856C27__A1__8S7856C25[10]),  10,12},
  {&(_tg__ZTV8S7856C10__8S7856C168S7856C27__A1__8S7856C25[6]),  6,6},
  {&(_tg__ZTV11S7856C17_nt__8S7856C168S7856C27__A1__8S7856C25[3]),  3,3},
  {&(_tg__ZTV8S7856C14__8S7856C168S7856C27__A1__8S7856C25[4]),  4,4},
  {&(_tg__ZTV7S7856C7__8S7856C168S7856C27__A1__8S7856C25[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C168S7856C27__A1__8S7856C25[6]),  6,6},
  {&(_tg__ZTV8S7856C288S7856C27__8S7856C25[16]),  16,18},
  {&(_tg__ZTV7S7856C78S7856C288S7856C27__A1__8S7856C25[7]),  7,9},
  {&(_tg__ZTV8S7856C137S7856C78S7856C288S7856C27__A3__8S7856C25[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C137S7856C78S7856C288S7856C27__A7__8S7856C25[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C78S7856C288S7856C27__A3__8S7856C25[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C78S7856C288S7856C27__A3__8S7856C25[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C78S7856C288S7856C27__A1__8S7856C25[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C78S7856C288S7856C27__A1__8S7856C25[6]),  6,6},
  {&(_tg__ZTV8S7856C218S7856C288S7856C27__8S7856C25[3]),  3,5},
  {&(_tg__ZTV11S7856C17_nt8S7856C218S7856C288S7856C27__A1__8S7856C25[3]),  3,3},
  {&(_tg__ZTV7S7856C6__8S7856C288S7856C27__8S7856C25[11]),  11,13},
  {&(_tg__ZTV7S7856C6__8S7856C288S7856C27__8S7856C25[11]),  11,13},
  {&(_tg__ZTV8S7856C14__8S7856C288S7856C27__8S7856C25[4]),  4,4},
  {&(_tg__ZTV8S7856C29__8S7856C288S7856C27__8S7856C25[16]),  16,18},
  {&(_tg__ZTV7S7856C7__A1__8S7856C288S7856C27__8S7856C25[8]),  8,10},
  {&(_tg__ZTV7S7856C5__8S7856C288S7856C27__8S7856C25[15]),  15,17},
  {&(_tg__ZTV7S7856C6__8S7856C288S7856C27__8S7856C25[11]),  11,13},
  {&(_tg__ZTV8S7856C13__A2__8S7856C288S7856C27__8S7856C25[8]),  8,10},
  {&(_tg__ZTV8S7856C16__8S7856C288S7856C27__8S7856C25[11]),  11,13},
  {&(_tg__ZTV8S7856C16__8S7856C288S7856C27__8S7856C25[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C288S7856C27__8S7856C25[6]),  6,6},
  {&(_tg__ZTV8S7856C21__8S7856C288S7856C27__8S7856C25[3]),  3,5},
  {&(_tg__ZTV7S7856C6__8S7856C27__8S7856C25[11]),  11,13},
  {&(_tg__ZTV8S7856C16__A1__8S7856C27__8S7856C25[11]),  11,13},
  {&(_tg__ZTV8S7856C14__8S7856C27__8S7856C25[4]),  4,4},
  {&(_tg__ZTV7S7856C7__8S7856C27__8S7856C25[8]),  8,10},
  {&(_tg__ZTV7S7856C6__8S7856C27__8S7856C25[11]),  11,13},
  {&(_tg__ZTV8S7856C28__8S7856C27__8S7856C25[16]),  16,18},
  {&(_tg__ZTV8S7856C29__8S7856C27__8S7856C25[16]),  16,18},
  {&(_tg__ZTV7S7856C5__8S7856C27__8S7856C25[15]),  15,17},
  {&(_tg__ZTV7S7856C6__8S7856C27__8S7856C25[11]),  11,13},
  {&(_tg__ZTV8S7856C13__A2__8S7856C27__8S7856C25[8]),  8,10},
  {&(_tg__ZTV8S7856C16__A1__8S7856C27__8S7856C25[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C27__8S7856C25[6]),  6,6},
  {&(_tg__ZTV8S7856C218S7856C28__8S7856C27__8S7856C25[3]),  3,5},
  {&(_tg__ZTV8S7856C29__8S7856C25[15]),  15,17},
  {&(_tg__ZTV7S7856C7__8S7856C29__8S7856C25[8]),  8,10},
  {&(_tg__ZTV7S7856C6__8S7856C29__8S7856C25[11]),  11,13},
  {&(_tg__ZTV7S7856C6__8S7856C29__8S7856C25[11]),  11,13},
  {&(_tg__ZTV7S7856C5__8S7856C29__8S7856C25[15]),  15,17},
  {&(_tg__ZTV7S7856C6__8S7856C29__8S7856C25[11]),  11,13},
  {&(_tg__ZTV8S7856C14__8S7856C29__8S7856C25[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__8S7856C29__8S7856C25[8]),  8,10},
  {&(_tg__ZTV8S7856C16__8S7856C29__8S7856C25[11]),  11,13},
  {&(_tg__ZTV8S7856C16__8S7856C29__8S7856C25[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C29__8S7856C25[6]),  6,6},
};
extern VTBL_ENTRY _ZTI8S7856C25[];
extern  VTBL_ENTRY _ZTV8S7856C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C25[];
static VTBL_ENTRY alt_thunk_names24[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7856C27D0Ev,_ZTv0_n64_N8S7856C27D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7856C27D0Ev,_ZThn24_N8S7856C27D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7856C27D1Ev,_ZTv0_n64_N8S7856C27D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7856C27D1Ev,_ZThn24_N8S7856C27D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7856C28D0Ev,_ZTv0_n64_N8S7856C28D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7856C28D0Ev,_ZThn16_N8S7856C28D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7856C28D1Ev,_ZTv0_n64_N8S7856C28D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7856C28D1Ev,_ZThn16_N8S7856C28D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7856C5D0Ev,_ZThn44_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C5D0Ev,_ZThn28_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7856C5D0Ev,_ZThn60_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7856C5D0Ev,_ZThn44_N7S7856C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7856C5D1Ev,_ZThn44_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C5D1Ev,_ZThn28_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7856C5D1Ev,_ZThn60_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7856C5D1Ev,_ZThn44_N7S7856C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7856C5D0Ev,_ZThn52_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7856C5D0Ev,_ZThn16_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7856C5D0Ev,_ZThn68_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7856C5D0Ev,_ZThn32_N7S7856C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7856C5D1Ev,_ZThn52_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7856C5D1Ev,_ZThn16_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7856C5D1Ev,_ZThn68_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7856C5D1Ev,_ZThn32_N7S7856C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7856C18D0Ev,_ZThn44_N8S7856C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7856C18D0Ev,_ZThn60_N8S7856C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7856C18D1Ev,_ZThn44_N8S7856C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7856C18D1Ev,_ZThn60_N8S7856C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7856C4D0Ev,_ZTv0_n36_N7S7856C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S7856C4D0Ev,_ZThn92_N7S7856C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7856C4D1Ev,_ZTv0_n36_N7S7856C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S7856C4D1Ev,_ZThn92_N7S7856C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7856C4D0Ev,_ZThn76_N7S7856C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7856C4D0Ev,_ZThn60_N7S7856C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7856C4D1Ev,_ZThn76_N7S7856C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7856C4D1Ev,_ZThn60_N7S7856C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S7856C4D0Ev,_ZThn84_N7S7856C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7856C4D0Ev,_ZThn48_N7S7856C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S7856C4D1Ev,_ZThn84_N7S7856C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7856C4D1Ev,_ZThn48_N7S7856C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7856C4D0Ev,_ZTv0_n60_N7S7856C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7856C4D0Ev,_ZThn32_N7S7856C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7856C4D1Ev,_ZTv0_n60_N7S7856C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7856C4D1Ev,_ZThn32_N7S7856C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C19D0Ev,_ZTv0_n36_N8S7856C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7856C19D0Ev,_ZThn88_N8S7856C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C19D1Ev,_ZTv0_n36_N8S7856C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7856C19D1Ev,_ZThn88_N8S7856C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7856C19D0Ev,_ZThn72_N8S7856C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7856C19D0Ev,_ZThn56_N8S7856C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7856C19D1Ev,_ZThn72_N8S7856C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7856C19D1Ev,_ZThn56_N8S7856C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C6D0Ev,_ZThn28_N7S7856C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7856C6D0Ev,_ZThn12_N7S7856C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7856C6D0Ev,_ZThn72_N7S7856C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7856C6D0Ev,_ZThn56_N7S7856C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C6D1Ev,_ZThn28_N7S7856C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7856C6D1Ev,_ZThn12_N7S7856C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7856C6D1Ev,_ZThn72_N7S7856C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7856C6D1Ev,_ZThn56_N7S7856C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7856C25D0Ev,_ZTv0_n64_N8S7856C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S7856C25D0Ev,_ZThn144_N8S7856C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7856C25D1Ev,_ZTv0_n64_N8S7856C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S7856C25D1Ev,_ZThn144_N8S7856C25D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N8S7856C25D0Ev,_ZTv0_n72_N8S7856C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S7856C25D0Ev,_ZThn120_N8S7856C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N8S7856C25D1Ev,_ZTv0_n72_N8S7856C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S7856C25D1Ev,_ZThn120_N8S7856C25D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C25D0Ev,_ZTv0_n36_N8S7856C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S7856C25D0Ev,_ZThn104_N8S7856C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C25D1Ev,_ZTv0_n36_N8S7856C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S7856C25D1Ev,_ZThn104_N8S7856C25D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C25D0Ev,_ZTv0_n32_N8S7856C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7856C25D0Ev,_ZThn88_N8S7856C25D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7856C25D0Ev,_ZThn72_N8S7856C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C25D1Ev,_ZTv0_n32_N8S7856C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7856C25D1Ev,_ZThn88_N8S7856C25D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7856C25D1Ev,_ZThn72_N8S7856C25D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C25D0Ev,_ZTv0_n44_N8S7856C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S7856C25D0Ev,_ZThn96_N8S7856C25D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7856C25D0Ev,_ZThn60_N8S7856C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C25D1Ev,_ZTv0_n44_N8S7856C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S7856C25D1Ev,_ZThn96_N8S7856C25D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7856C25D1Ev,_ZThn60_N8S7856C25D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C25D0Ev,_ZTv0_n60_N8S7856C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7856C25D0Ev,_ZThn44_N8S7856C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C25D1Ev,_ZTv0_n60_N8S7856C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7856C25D1Ev,_ZThn44_N8S7856C25D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7856C25 = {  "S7856C25", // class name
  bases_S7856C25, 84,
  &(vtc_S7856C25[0]), // expected_vtbl_contents
  &(vtt_S7856C25[0]), // expected_vtt_contents
  ABISELECT(280,148), // object size
  NSPAIRA(_ZTI8S7856C25),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S7856C25),229, //virtual function table var
  19, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7856C25),186, //virtual table table var
  42, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names24,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7856C23  : virtual S7856C14 , virtual S7856C24 , S7856C25 , S7856C13 , virtual S7856C22 {
  ::S7856C13 s7856c23f0;
  int s7856c23f1:26;
  ~S7856C23(); // tgen
  S7856C23(); // tgen
};
//SIG(-1 S7856C23) C1{ VBC2{ BC3{ m} BC4{ m} BC5{ VBC6{ m} BC4 VBC3} Fi} VBC7{ m} BC8{ BC9{ BC4 VBC6 VBC3 BC5 VBC10{ BC6 VBC5 VBC4} vd} BC11{ VBC4} BC12{ VBC13{ VBC14{ VBC15{ VBC6 VBC4 VBC10 BC3 BC9 vd} VBC2 VBC9 vd Fi[2]} VBC16{ m} VBC17{ VBC5 VBC18{ VBC4} VBC2 BC3 VBC15 vd Fi} BC19{ VBC9 BC2 BC10 BC3 vd} vd} BC6 BC10 BC20{ BC16 VBC6 BC14 VBC19 vd v1} vd} VBC21{ BC17 BC22{ BC15 VBC2 VBC23{ VBC15 VBC13 vd} BC24{ BC4 BC18 vd} BC7 Fi} VBC7} BC13} BC9 VBC25{ BC10 VBC14 BC13 VBC12 vd Fc} FC9 Fi:26}


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

static void Test_S7856C23()
{
  extern Class_Descriptor cd_S7856C23;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(51,55)];
    init_test(&cd_S7856C23, buf);
    S7856C23 *dp, &lv = *(dp=new (buf) S7856C23());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(400,216), "sizeof(S7856C23)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7856C23)");
    /*is_ambiguous_... S7856C23::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*), ABISELECT(136,72), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*), ABISELECT(144,76), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C14 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*), 0, "S7856C23");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*)(S7856C25*), 0, "S7856C23");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*)(S7856C25*), 0, "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C11 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*), 0, "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C7*), 0, "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*)(S7856C7*), 0, "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*)(S7856C7*), 0, "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*), 0, "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*), 0, "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C5 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), 0, "S7856C23");
    /*is_ambiguous_... S7856C19::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C19*)(S7856C4*)(S7856C25*), 0, "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C18 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*), 0, "S7856C23");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C7*)(S7856C28*)(S7856C27*), 0, "S7856C23");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), 0, "S7856C23");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), 0, "S7856C23");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C25*), 0, "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*), 0, "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*), 0, "S7856C23");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), 0, "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C4 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C19*)(S7856C4*), 0, "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*), ABISELECT(136,72), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*), 0, "S7856C23");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*)(S7856C25*), 0, "S7856C23");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*)(S7856C25*), 0, "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*), 0, "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*)(S7856C7*), 0, "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*)(S7856C7*), 0, "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*), 0, "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*), 0, "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), 0, "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*), 0, "S7856C23");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), 0, "S7856C23");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), 0, "S7856C23");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C25*), 0, "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*), 0, "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*), 0, "S7856C23");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), 0, "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*), ABISELECT(136,72), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C14*), ABISELECT(136,72), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C6 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C6*), ABISELECT(136,72), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C16*), ABISELECT(136,72), "S7856C23");
    check_base_class_offset(lv, (S7856C14*)(S7856C6*)(S7856C19*)(S7856C4*)(S7856C25*), ABISELECT(136,72), "S7856C23");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C16*)(S7856C27*), ABISELECT(136,72), "S7856C23");
    /*is_ambiguous_... S7856C28::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C28*)(S7856C27*), ABISELECT(136,72), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C6*)(S7856C19*)(S7856C4*), ABISELECT(136,72), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), 0, "S7856C23");
    /*is_ambiguous_... S7856C27::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7856C27*), 0, "S7856C23");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*)(S7856C25*), ABISELECT(8,4), "S7856C23");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*)(S7856C25*), 0, "S7856C23");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*)(S7856C25*), 0, "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*), ABISELECT(184,100), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*), ABISELECT(184,100), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*), ABISELECT(184,100), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C16*), ABISELECT(184,100), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(184,100), "S7856C23");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C4*)(S7856C25*), ABISELECT(184,100), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*), ABISELECT(184,100), "S7856C23");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C16*)(S7856C27*), ABISELECT(184,100), "S7856C23");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C25*), ABISELECT(184,100), "S7856C23");
    /*is_ambiguous_... S7856C22::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C22*), ABISELECT(184,100), "S7856C23");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(184,100), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C4*), ABISELECT(184,100), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*), ABISELECT(148,80), "S7856C23");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C26*)(S7856C25*), ABISELECT(148,80), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C7*), ABISELECT(148,80), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C17_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C17_nt*), ABISELECT(148,80), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(148,80), "S7856C23");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C4*)(S7856C25*), ABISELECT(148,80), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*), ABISELECT(148,80), "S7856C23");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(148,80), "S7856C23");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C17_nt*)(S7856C21*)(S7856C28*)(S7856C27*), ABISELECT(148,80), "S7856C23");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C25*), ABISELECT(148,80), "S7856C23");
    /*is_ambiguous_... S7856C22::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C22*), ABISELECT(148,80), "S7856C23");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(148,80), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C4*), ABISELECT(148,80), "S7856C23");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*)(S7856C25*), ABISELECT(184,100), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C7*), ABISELECT(184,100), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*)(S7856C7*), ABISELECT(184,100), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*), ABISELECT(184,100), "S7856C23");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(184,100), "S7856C23");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(184,100), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*), ABISELECT(184,100), "S7856C23");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C25*), 0, "S7856C23");
    check_base_class_offset(lv, (S7856C26*)(S7856C25*), ABISELECT(16,8), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C7*), ABISELECT(200,112), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*)(S7856C7*), ABISELECT(208,116), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(200,112), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(200,112), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C7*), ABISELECT(200,112), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C6 */ AMB_check_base_class_offset(lv, (S7856C7*)(S7856C6*), ABISELECT(200,112), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C7*)(S7856C16*), ABISELECT(200,112), "S7856C23");
    check_base_class_offset(lv, (S7856C7*)(S7856C6*)(S7856C19*)(S7856C4*)(S7856C25*), ABISELECT(200,112), "S7856C23");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C7*)(S7856C16*)(S7856C27*), ABISELECT(200,112), "S7856C23");
    check_base_class_offset(lv, (S7856C7*)(S7856C29*), ABISELECT(200,112), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C7*)(S7856C6*)(S7856C19*)(S7856C4*), ABISELECT(200,112), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*), ABISELECT(224,124), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*), ABISELECT(216,120), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*), ABISELECT(216,120), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C6 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C6*), ABISELECT(216,120), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C18*)(S7856C5*), ABISELECT(216,120), "S7856C23");
    /*is_ambiguous_... S7856C6::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C6*)(S7856C19*)(S7856C4*)(S7856C25*), ABISELECT(216,120), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C18*), ABISELECT(216,120), "S7856C23");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C18*)(S7856C5*)(S7856C25*), ABISELECT(216,120), "S7856C23");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(216,120), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C6*)(S7856C19*)(S7856C4*), ABISELECT(216,120), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C6*)(S7856C5*), ABISELECT(184,100), "S7856C23");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C6*)(S7856C5*)(S7856C25*), ABISELECT(184,100), "S7856C23");
    /*is_ambiguous_... S7856C22::S7856C6 */ AMB_check_base_class_offset(lv, (S7856C6*)(S7856C22*), ABISELECT(184,100), "S7856C23");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C6*)(S7856C5*)(S7856C22*), ABISELECT(184,100), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7856C5*), 0, "S7856C23");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7856C5*)(S7856C25*), 0, "S7856C23");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7856C5*)(S7856C22*), 0, "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C17_nt*)(S7856C16*), ABISELECT(232,128), "S7856C23");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C17_nt*)(S7856C16*)(S7856C27*), ABISELECT(232,128), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C16*), ABISELECT(232,128), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C16*)(S7856C5*), ABISELECT(232,128), "S7856C23");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C16*)(S7856C5*)(S7856C25*), ABISELECT(232,128), "S7856C23");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C16*)(S7856C5*)(S7856C22*), ABISELECT(232,128), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(152,84), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(160,88), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(152,84), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(152,84), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(152,84), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C5 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(168,92), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(168,92), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*)(S7856C5*), ABISELECT(176,96), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C18*)(S7856C5*), ABISELECT(152,84), "S7856C23");
    check_base_class_offset(lv, (S7856C5*)(S7856C4*)(S7856C25*), ABISELECT(152,84), "S7856C23");
    check_base_class_offset(lv, (S7856C5*)(S7856C29*), ABISELECT(152,84), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C5*)(S7856C4*), ABISELECT(152,84), "S7856C23");
    /*is_ambiguous_... S7856C4::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C4*)(S7856C25*), ABISELECT(32,16), "S7856C23");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C4*)(S7856C25*), ABISELECT(24,12), "S7856C23");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C4*)(S7856C25*), ABISELECT(24,12), "S7856C23");
    check_base_class_offset(lv, (S7856C15*)(S7856C19*)(S7856C4*)(S7856C25*), ABISELECT(32,16), "S7856C23");
    check_base_class_offset(lv, (S7856C6*)(S7856C19*)(S7856C4*)(S7856C25*), ABISELECT(32,16), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*), ABISELECT(248,136), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*), ABISELECT(256,140), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*), ABISELECT(248,136), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*), ABISELECT(248,136), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C18*), ABISELECT(248,136), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C18 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*), ABISELECT(264,144), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*), ABISELECT(264,144), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*), ABISELECT(272,148), "S7856C23");
    check_base_class_offset(lv, (S7856C18*)(S7856C19*)(S7856C4*)(S7856C25*), ABISELECT(248,136), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C18*)(S7856C19*)(S7856C4*), ABISELECT(248,136), "S7856C23");
    check_base_class_offset(lv, (S7856C19*)(S7856C4*)(S7856C25*), ABISELECT(32,16), "S7856C23");
    check_base_class_offset(lv, (S7856C4*)(S7856C25*), ABISELECT(24,12), "S7856C23");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C16*)(S7856C27*), ABISELECT(280,152), "S7856C23");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C16*)(S7856C27*), ABISELECT(280,152), "S7856C23");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(296,160), "S7856C23");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(304,164), "S7856C23");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(296,160), "S7856C23");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(296,160), "S7856C23");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(296,160), "S7856C23");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(296,160), "S7856C23");
    check_base_class_offset(lv, (S7856C29*)(S7856C28*)(S7856C27*), ABISELECT(328,176), "S7856C23");
    /*is_ambiguous_... S7856C21::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C21*)(S7856C28*)(S7856C27*), ABISELECT(312,168), "S7856C23");
    check_base_class_offset(lv, (S7856C17_nt*)(S7856C21*)(S7856C28*)(S7856C27*), ABISELECT(312,168), "S7856C23");
    check_base_class_offset(lv, (S7856C21*)(S7856C28*)(S7856C27*), ABISELECT(312,168), "S7856C23");
    check_base_class_offset(lv, (S7856C24*)(S7856C28*)(S7856C27*), ABISELECT(296,160), "S7856C23");
    check_base_class_offset(lv, (S7856C28*)(S7856C27*), ABISELECT(296,160), "S7856C23");
    check_base_class_offset(lv, (S7856C27*)(S7856C25*), ABISELECT(280,152), "S7856C23");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C25*), ABISELECT(48,28), "S7856C23");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C25*), ABISELECT(56,32), "S7856C23");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C25*), ABISELECT(48,28), "S7856C23");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C25*), ABISELECT(48,28), "S7856C23");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C18*)(S7856C5*)(S7856C25*), ABISELECT(48,28), "S7856C23");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C25*), ABISELECT(64,36), "S7856C23");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*)(S7856C5*)(S7856C25*), ABISELECT(64,36), "S7856C23");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*)(S7856C5*)(S7856C25*), ABISELECT(72,40), "S7856C23");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C18*)(S7856C5*)(S7856C25*), ABISELECT(48,28), "S7856C23");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C5*)(S7856C25*), ABISELECT(48,28), "S7856C23");
    check_base_class_offset(lv, (S7856C25*), 0, "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*), ABISELECT(88,48), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*), ABISELECT(80,44), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*), ABISELECT(80,44), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C13*), ABISELECT(80,44), "S7856C23");
    /*is_ambiguous_... S7856C22::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C22*), ABISELECT(336,180), "S7856C23");
    /*is_ambiguous_... S7856C22::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C22*), ABISELECT(336,180), "S7856C23");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(344,184), "S7856C23");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(352,188), "S7856C23");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(344,184), "S7856C23");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(344,184), "S7856C23");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(344,184), "S7856C23");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(360,192), "S7856C23");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(360,192), "S7856C23");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(368,196), "S7856C23");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(344,184), "S7856C23");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C5*)(S7856C22*), ABISELECT(344,184), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C4 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C4*), ABISELECT(384,204), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C4 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C4*), ABISELECT(376,200), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C4*), ABISELECT(376,200), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7856C19*)(S7856C4*), ABISELECT(384,204), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C6*)(S7856C19*)(S7856C4*), ABISELECT(384,204), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C19*)(S7856C4*), ABISELECT(384,204), "S7856C23");
    check_base_class_offset(lv, (S7856C4*)(S7856C22*), ABISELECT(376,200), "S7856C23");
    check_base_class_offset(lv, (S7856C22*), ABISELECT(336,180), "S7856C23");
    check_field_offset(lv, s7856c23f0, ABISELECT(96,52), "S7856C23.s7856c23f0");
    set_bf_and_test(lv, s7856c23f1, ABISELECT(128,68), 0, 26, 1, "S7856C23");
    set_bf_and_test(lv, s7856c23f1, ABISELECT(128,68), 0, 26, hide_sll(1LL<<25), "S7856C23");
    test_class_info(&lv, &cd_S7856C23);
    dp->~S7856C23();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7856C23(Test_S7856C23, "S7856C23", ABISELECT(400,216));

#else // __cplusplus

extern void _ZN8S7856C23C1Ev();
extern void _ZN8S7856C23D1Ev();
Name_Map name_map_S7856C23[] = {
  NSPAIR(_ZN8S7856C23C1Ev),
  NSPAIR(_ZN8S7856C23D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C26;
extern VTBL_ENTRY _ZTI8S7856C26[];
extern  VTBL_ENTRY _ZTV8S7856C26[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C26[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C7;
extern VTBL_ENTRY _ZTI7S7856C7[];
extern  VTBL_ENTRY _ZTV7S7856C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C7[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C6;
extern VTBL_ENTRY _ZTI7S7856C6[];
extern  VTBL_ENTRY _ZTV7S7856C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C6[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C17_nt;
extern VTBL_ENTRY _ZTI11S7856C17_nt[];
extern  VTBL_ENTRY _ZTV11S7856C17_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S7856C17_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C16;
extern VTBL_ENTRY _ZTI8S7856C16[];
extern  VTBL_ENTRY _ZTV8S7856C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C16[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C5;
extern VTBL_ENTRY _ZTI7S7856C5[];
extern  VTBL_ENTRY _ZTV7S7856C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C5[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C6;
extern VTBL_ENTRY _ZTI7S7856C6[];
extern  VTBL_ENTRY _ZTV7S7856C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C6[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C19;
extern VTBL_ENTRY _ZTI8S7856C19[];
extern  VTBL_ENTRY _ZTV8S7856C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C19[];
extern Class_Descriptor cd_S7856C4;
extern VTBL_ENTRY _ZTI7S7856C4[];
extern  VTBL_ENTRY _ZTV7S7856C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C4[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C16;
extern VTBL_ENTRY _ZTI8S7856C16[];
extern  VTBL_ENTRY _ZTV8S7856C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C16[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C7;
extern VTBL_ENTRY _ZTI7S7856C7[];
extern  VTBL_ENTRY _ZTV7S7856C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C7[];
extern Class_Descriptor cd_S7856C29;
extern VTBL_ENTRY _ZTI8S7856C29[];
extern  VTBL_ENTRY _ZTV8S7856C29[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C29[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C17_nt;
extern VTBL_ENTRY _ZTI11S7856C17_nt[];
extern  VTBL_ENTRY _ZTV11S7856C17_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S7856C17_nt[];
extern Class_Descriptor cd_S7856C21;
extern VTBL_ENTRY _ZTI8S7856C21[];
extern  VTBL_ENTRY _ZTV8S7856C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C21[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C28;
extern VTBL_ENTRY _ZTI8S7856C28[];
extern  VTBL_ENTRY _ZTV8S7856C28[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C28[];
extern Class_Descriptor cd_S7856C27;
extern VTBL_ENTRY _ZTI8S7856C27[];
extern  VTBL_ENTRY _ZTV8S7856C27[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C27[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C5;
extern VTBL_ENTRY _ZTI7S7856C5[];
extern  VTBL_ENTRY _ZTV7S7856C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C5[];
extern Class_Descriptor cd_S7856C25;
extern VTBL_ENTRY _ZTI8S7856C25[];
extern  VTBL_ENTRY _ZTV8S7856C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C25[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C5;
extern VTBL_ENTRY _ZTI7S7856C5[];
extern  VTBL_ENTRY _ZTV7S7856C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C5[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C6;
extern VTBL_ENTRY _ZTI7S7856C6[];
extern  VTBL_ENTRY _ZTV7S7856C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C6[];
extern Class_Descriptor cd_S7856C19;
extern VTBL_ENTRY _ZTI8S7856C19[];
extern  VTBL_ENTRY _ZTV8S7856C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C19[];
extern Class_Descriptor cd_S7856C4;
extern VTBL_ENTRY _ZTI7S7856C4[];
extern  VTBL_ENTRY _ZTV7S7856C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C4[];
extern Class_Descriptor cd_S7856C22;
extern VTBL_ENTRY _ZTI8S7856C22[];
extern  VTBL_ENTRY _ZTV8S7856C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C22[];
static Base_Class bases_S7856C23[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C12,    ABISELECT(136,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(144,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(136,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C11,    ABISELECT(136,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    110, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(136,72), //bcp->offset
    89, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    82, //bcp->index_in_construction_vtbl_array
    109, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C9_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    42, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(184,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(184,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(184,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    84, //bcp->index_in_construction_vtbl_array
    113, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(148,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S7856C10,    ABISELECT(184,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    83, //bcp->index_in_construction_vtbl_array
    111, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S7856C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    43, //init_seq
    84, //immediately_derived
  0, 0},
  {&cd_S7856C26,    ABISELECT(16,8), //bcp->offset
    23, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    85, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    44, //init_seq
    84, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(200,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(208,116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(200,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(200,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    141, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(200,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    140, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7856C7,    ABISELECT(200,112), //bcp->offset
    129, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    89, //bcp->index_in_construction_vtbl_array
    139, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(224,124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(216,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(216,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    147, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(216,120), //bcp->offset
    139, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    90, //bcp->index_in_construction_vtbl_array
    146, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S7856C6,    ABISELECT(184,100), //bcp->offset
    116, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    88, //bcp->index_in_construction_vtbl_array
    133, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S7856C17_nt,    ABISELECT(232,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    92, //bcp->index_in_construction_vtbl_array
    156, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(232,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7856C16,    ABISELECT(232,128), //bcp->offset
    149, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    91, //bcp->index_in_construction_vtbl_array
    150, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(152,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(152,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(152,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    117, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(152,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    116, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(168,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(168,92), //bcp->offset
    110, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    93, //bcp->index_in_construction_vtbl_array
    118, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(176,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(152,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    115, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S7856C5,    ABISELECT(152,84), //bcp->offset
    93, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    87, //bcp->index_in_construction_vtbl_array
    114, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    58, //immediately_derived
  0, 1},
  {&cd_S77C13_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    45, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S7856C6,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    46, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(248,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    52, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(256,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    52, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(248,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(248,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    159, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    52, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(248,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    158, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    56, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(264,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    54, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(264,144), //bcp->offset
    173, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    96, //bcp->index_in_construction_vtbl_array
    160, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    56, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(272,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    56, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(248,136), //bcp->offset
    162, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    95, //bcp->index_in_construction_vtbl_array
    157, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    57, //immediately_derived
  0, 1},
  {&cd_S7856C19,    ABISELECT(32,16), //bcp->offset
    44, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    94, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    47, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S7856C4,    ABISELECT(24,12), //bcp->offset
    26, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    86, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    48, //init_seq
    84, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(280,152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    60, //immediately_derived
  0, 0},
  {&cd_S7856C16,    ABISELECT(280,152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    167, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    73, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(296,160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    66, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(304,164), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    65, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(296,160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    64, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(296,160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    176, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    65, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(296,160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    175, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    66, //immediately_derived
  0, 0},
  {&cd_S7856C7,    ABISELECT(296,160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    174, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    72, //immediately_derived
  0, 0},
  {&cd_S7856C29,    ABISELECT(328,176), //bcp->offset
    222, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    99, //bcp->index_in_construction_vtbl_array
    208, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    72, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(312,168), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    70, //immediately_derived
  0, 0},
  {&cd_S7856C17_nt,    ABISELECT(312,168), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    182, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    70, //immediately_derived
  0, 0},
  {&cd_S7856C21,    ABISELECT(312,168), //bcp->offset
    217, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    100, //bcp->index_in_construction_vtbl_array
    181, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    72, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(296,160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    72, //immediately_derived
  0, 0},
  {&cd_S7856C28,    ABISELECT(296,160), //bcp->offset
    199, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    98, //bcp->index_in_construction_vtbl_array
    173, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    73, //immediately_derived
  0, 0},
  {&cd_S7856C27,    ABISELECT(280,152), //bcp->offset
    179, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    97, //bcp->index_in_construction_vtbl_array
    166, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    84, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    78, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    78, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    77, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    49, //init_seq
    78, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    50, //init_seq
    82, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    80, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(64,36), //bcp->offset
    74, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    102, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    51, //init_seq
    82, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    82, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    52, //init_seq
    83, //immediately_derived
  0, 0},
  {&cd_S7856C5,    ABISELECT(48,28), //bcp->offset
    58, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    101, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    53, //init_seq
    84, //immediately_derived
  0, 0},
  {&cd_S7856C25,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    19, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    54, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C9_nt,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    88, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    87, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    79, //bcp->base_subarray_index_in_construction_vtbl_array
    55, //init_seq
    88, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(80,44), //bcp->offset
    80, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    103, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    56, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S77C13_nt,    ABISELECT(336,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    90, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(336,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    220, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    108, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(344,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    95, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(352,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    95, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(344,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    94, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(344,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    225, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    95, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(344,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    224, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    99, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(360,192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    97, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(360,192), //bcp->offset
    276, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    106, //bcp->index_in_construction_vtbl_array
    226, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    99, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(368,196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    99, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(344,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    223, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    100, //immediately_derived
  0, 0},
  {&cd_S7856C5,    ABISELECT(344,184), //bcp->offset
    260, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    105, //bcp->index_in_construction_vtbl_array
    222, //bcp->base_subarray_index_in_construction_vtbl_array
    40, //init_seq
    108, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(384,204), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    107, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(376,200), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    103, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(376,200), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    258, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    107, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(384,204), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    106, //immediately_derived
  0, 0},
  {&cd_S7856C6,    ABISELECT(384,204), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    261, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    106, //immediately_derived
  0, 0},
  {&cd_S7856C19,    ABISELECT(384,204), //bcp->offset
    302, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    108, //bcp->index_in_construction_vtbl_array
    260, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    107, //immediately_derived
  0, 0},
  {&cd_S7856C4,    ABISELECT(376,200), //bcp->offset
    282, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    107, //bcp->index_in_construction_vtbl_array
    257, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    108, //immediately_derived
  0, 1},
  {&cd_S7856C22,    ABISELECT(336,180), //bcp->offset
    240, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    104, //bcp->index_in_construction_vtbl_array
    219, //bcp->base_subarray_index_in_construction_vtbl_array
    41, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7856C23[];
extern void _ZN8S7856C23D1Ev();
extern void _ZN8S7856C23D0Ev();
extern void ABISELECT(_ZThn24_N8S7856C23D1Ev,_ZThn12_N8S7856C23D1Ev)();
extern void ABISELECT(_ZThn24_N8S7856C23D0Ev,_ZThn12_N8S7856C23D0Ev)();
extern void ABISELECT(_ZThn32_N8S7856C23D1Ev,_ZThn16_N8S7856C23D1Ev)();
extern void ABISELECT(_ZThn32_N8S7856C23D0Ev,_ZThn16_N8S7856C23D0Ev)();
extern void _ZN8S7856C192v1Ev();
extern void ABISELECT(_ZThn48_N8S7856C23D1Ev,_ZThn28_N8S7856C23D1Ev)();
extern void ABISELECT(_ZThn48_N8S7856C23D0Ev,_ZThn28_N8S7856C23D0Ev)();
extern void ABISELECT(_ZThn80_N8S7856C23D1Ev,_ZThn44_N8S7856C23D1Ev)();
extern void ABISELECT(_ZThn80_N8S7856C23D0Ev,_ZThn44_N8S7856C23D0Ev)();
extern void ABISELECT(_ZTv0_n120_N8S7856C23D1Ev,_ZTv0_n60_N8S7856C23D1Ev)();
extern void ABISELECT(_ZThn152_N8S7856C23D1Ev,_ZThn84_N8S7856C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S7856C23D0Ev,_ZTv0_n60_N8S7856C23D0Ev)();
extern void ABISELECT(_ZThn152_N8S7856C23D0Ev,_ZThn84_N8S7856C23D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C23D1Ev,_ZTv0_n44_N8S7856C23D1Ev)();
extern void ABISELECT(_ZThn184_N8S7856C23D1Ev,_ZThn100_N8S7856C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C23D0Ev,_ZTv0_n44_N8S7856C23D0Ev)();
extern void ABISELECT(_ZThn184_N8S7856C23D0Ev,_ZThn100_N8S7856C23D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C23D1Ev,_ZTv0_n32_N8S7856C23D1Ev)();
extern void ABISELECT(_ZThn200_N8S7856C23D1Ev,_ZThn112_N8S7856C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C23D0Ev,_ZTv0_n32_N8S7856C23D0Ev)();
extern void ABISELECT(_ZThn200_N8S7856C23D0Ev,_ZThn112_N8S7856C23D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C23D1Ev,_ZTv0_n32_N8S7856C23D1Ev)();
extern void ABISELECT(_ZThn216_N8S7856C23D1Ev,_ZThn120_N8S7856C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C23D0Ev,_ZTv0_n32_N8S7856C23D0Ev)();
extern void ABISELECT(_ZThn216_N8S7856C23D0Ev,_ZThn120_N8S7856C23D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C23D1Ev,_ZTv0_n44_N8S7856C23D1Ev)();
extern void ABISELECT(_ZThn232_N8S7856C23D1Ev,_ZThn128_N8S7856C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C23D0Ev,_ZTv0_n44_N8S7856C23D0Ev)();
extern void ABISELECT(_ZThn232_N8S7856C23D0Ev,_ZThn128_N8S7856C23D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7856C23D1Ev,_ZTv0_n36_N8S7856C23D1Ev)();
extern void ABISELECT(_ZThn248_N8S7856C23D1Ev,_ZThn136_N8S7856C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7856C23D0Ev,_ZTv0_n36_N8S7856C23D0Ev)();
extern void ABISELECT(_ZThn248_N8S7856C23D0Ev,_ZThn136_N8S7856C23D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N8S7856C23D1Ev,_ZTv0_n72_N8S7856C23D1Ev)();
extern void ABISELECT(_ZThn280_N8S7856C23D1Ev,_ZThn152_N8S7856C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N8S7856C23D0Ev,_ZTv0_n72_N8S7856C23D0Ev)();
extern void ABISELECT(_ZThn280_N8S7856C23D0Ev,_ZThn152_N8S7856C23D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n144_N8S7856C23D1Ev,_ZTvn8_n72_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTvn16_n144_N8S7856C23D0Ev,_ZTvn8_n72_N8S7856C23D0Ev)();
extern void ABISELECT(_ZTvn32_n144_N8S7856C23D1Ev,_ZTvn16_n72_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTvn32_n144_N8S7856C23D0Ev,_ZTvn16_n72_N8S7856C23D0Ev)();
extern void ABISELECT(_ZTv0_n128_N8S7856C23D1Ev,_ZTv0_n64_N8S7856C23D1Ev)();
extern void ABISELECT(_ZThn328_N8S7856C23D1Ev,_ZThn176_N8S7856C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S7856C23D0Ev,_ZTv0_n64_N8S7856C23D0Ev)();
extern void ABISELECT(_ZThn328_N8S7856C23D0Ev,_ZThn176_N8S7856C23D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N8S7856C23D1Ev,_ZTv0_n72_N8S7856C23D1Ev)();
extern void ABISELECT(_ZThn336_N8S7856C23D1Ev,_ZThn180_N8S7856C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N8S7856C23D0Ev,_ZTv0_n72_N8S7856C23D0Ev)();
extern void ABISELECT(_ZThn336_N8S7856C23D0Ev,_ZThn180_N8S7856C23D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn8_n144_N8S7856C23D1Ev,_ZTvn4_n72_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTvn8_n144_N8S7856C23D0Ev,_ZTvn4_n72_N8S7856C23D0Ev)();
extern void ABISELECT(_ZTv0_n136_N8S7856C23D1Ev,_ZTv0_n68_N8S7856C23D1Ev)();
extern void ABISELECT(_ZThn376_N8S7856C23D1Ev,_ZThn200_N8S7856C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N8S7856C23D0Ev,_ZTv0_n68_N8S7856C23D0Ev)();
extern void ABISELECT(_ZThn376_N8S7856C23D0Ev,_ZThn200_N8S7856C23D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn8_n136_N8S7856C23D1Ev,_ZTvn4_n68_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTvn8_n136_N8S7856C23D0Ev,_ZTvn4_n68_N8S7856C23D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY vtc_S7856C23[] = {
  ABISELECT(376,200),
  ABISELECT(336,180),
  0,
  ABISELECT(328,176),
  ABISELECT(280,152),
  ABISELECT(248,136),
  ABISELECT(232,128),
  ABISELECT(232,128),
  0,
  ABISELECT(216,120),
  ABISELECT(136,72),
  ABISELECT(200,112),
  ABISELECT(184,100),
  ABISELECT(152,84),
  ABISELECT(148,80),
  ABISELECT(184,100),
  ABISELECT(184,100),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&_ZN8S7856C23D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C23D0Ev,
  ABISELECT(132,72),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  ABISELECT(224,124),
  ABISELECT(208,116),
  ABISELECT(208,116),
  ABISELECT(-24,-12),
  ABISELECT(192,108),
  ABISELECT(112,60),
  ABISELECT(160,88),
  ABISELECT(176,100),
  ABISELECT(160,88),
  ABISELECT(128,72),
  ABISELECT(124,68),
  ABISELECT(160,88),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S7856C23D1Ev,_ZThn12_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S7856C23D0Ev,_ZThn12_N8S7856C23D0Ev),
  ABISELECT(216,120),
  ABISELECT(184,104),
  ABISELECT(104,56),
  ABISELECT(152,84),
  ABISELECT(168,96),
  ABISELECT(116,64),
  ABISELECT(152,84),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S7856C23D1Ev,_ZThn16_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S7856C23D0Ev,_ZThn16_N8S7856C23D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
  ABISELECT(184,100),
  ABISELECT(184,100),
  ABISELECT(-48,-28),
  ABISELECT(88,44),
  ABISELECT(152,84),
  ABISELECT(136,72),
  ABISELECT(100,52),
  ABISELECT(136,72),
  ABISELECT(136,72),
  ABISELECT(168,92),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7856C23D1Ev,_ZThn28_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7856C23D0Ev,_ZThn28_N8S7856C23D0Ev),
  ABISELECT(84,44),
  ABISELECT(120,64),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  ABISELECT(68,36),
  ABISELECT(104,56),
  ABISELECT(104,56),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S7856C23D1Ev,_ZThn44_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S7856C23D0Ev,_ZThn44_N8S7856C23D0Ev),
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  ABISELECT(-152,-84),
  ABISELECT(80,44),
  ABISELECT(80,44),
  ABISELECT(-152,-84),
  ABISELECT(-16,-12),
  ABISELECT(48,28),
  ABISELECT(32,16),
  -4,
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(64,36),
  ABISELECT(-152,-84),
  ABISELECT(-152,-84),
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C23D1Ev,_ZTv0_n60_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C23D0Ev,_ZTv0_n60_N8S7856C23D0Ev),
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  ABISELECT(-168,-92),
  ABISELECT(-168,-92),
  ABISELECT(-168,-92),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  ABISELECT(-184,-100),
  ABISELECT(32,20),
  ABISELECT(-48,-28),
  0,
  ABISELECT(16,12),
  ABISELECT(-36,-20),
  0,
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C23D1Ev,_ZTv0_n44_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C23D0Ev,_ZTv0_n44_N8S7856C23D0Ev),
  ABISELECT(-200,-112),
  ABISELECT(-52,-32),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-200,-112),
  ABISELECT(-200,-112),
  ABISELECT(-200,-112),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C23D1Ev,_ZTv0_n32_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C23D0Ev,_ZTv0_n32_N8S7856C23D0Ev),
  ABISELECT(-216,-120),
  ABISELECT(-68,-40),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-216,-120),
  ABISELECT(-216,-120),
  ABISELECT(-216,-120),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C23D1Ev,_ZTv0_n32_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C23D0Ev,_ZTv0_n32_N8S7856C23D0Ev),
  ABISELECT(-232,-128),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(-96,-56),
  0,
  ABISELECT(-232,-128),
  ABISELECT(-232,-128),
  ABISELECT(-48,-28),
  ABISELECT(-84,-48),
  ABISELECT(-232,-128),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C23D1Ev,_ZTv0_n44_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C23D0Ev,_ZTv0_n44_N8S7856C23D0Ev),
  ABISELECT(-248,-136),
  ABISELECT(-100,-56),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-32,-16),
  ABISELECT(-248,-136),
  ABISELECT(-248,-136),
  ABISELECT(-248,-136),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C23D1Ev,_ZTv0_n36_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C23D0Ev,_ZTv0_n36_N8S7856C23D0Ev),
  ABISELECT(-116,-64),
  ABISELECT(-80,-44),
  ABISELECT(-264,-144),
  ABISELECT(-264,-144),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  ABISELECT(-280,-152),
  ABISELECT(-280,-152),
  ABISELECT(-48,-24),
  ABISELECT(-280,-152),
  ABISELECT(-64,-32),
  ABISELECT(-96,-52),
  ABISELECT(-128,-68),
  ABISELECT(48,24),
  ABISELECT(-96,-52),
  ABISELECT(-80,-40),
  ABISELECT(-144,-80),
  ABISELECT(-48,-24),
  ABISELECT(-280,-152),
  ABISELECT(-280,-152),
  ABISELECT(-96,-52),
  ABISELECT(-132,-72),
  ABISELECT(-280,-152),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S7856C23D1Ev,_ZTv0_n72_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S7856C23D0Ev,_ZTv0_n72_N8S7856C23D0Ev),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-296,-160),
  ABISELECT(-80,-40),
  ABISELECT(-112,-60),
  ABISELECT(-144,-76),
  ABISELECT(-96,-48),
  ABISELECT(32,16),
  ABISELECT(-160,-88),
  ABISELECT(-148,-80),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-296,-160),
  ABISELECT(-296,-160),
  ABISELECT(-296,-160),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n144_N8S7856C23D1Ev,_ZTvn8_n72_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n144_N8S7856C23D0Ev,_ZTvn8_n72_N8S7856C23D0Ev),
  ABISELECT(-164,-88),
  ABISELECT(-312,-168),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n144_N8S7856C23D1Ev,_ZTvn16_n72_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n144_N8S7856C23D0Ev,_ZTvn16_n72_N8S7856C23D0Ev),
  ABISELECT(-328,-176),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-328,-176),
  ABISELECT(-112,-56),
  ABISELECT(-192,-104),
  ABISELECT(-144,-76),
  ABISELECT(-176,-92),
  ABISELECT(-144,-76),
  ABISELECT(-128,-64),
  ABISELECT(-180,-96),
  ABISELECT(-144,-76),
  ABISELECT(-328,-176),
  ABISELECT(-328,-176),
  ABISELECT(-328,-176),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C23D1Ev,_ZTv0_n64_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C23D0Ev,_ZTv0_n64_N8S7856C23D0Ev),
  ABISELECT(-336,-180),
  ABISELECT(-88,-44),
  ABISELECT(-184,-96),
  ABISELECT(40,20),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(-336,-180),
  ABISELECT(-120,-60),
  ABISELECT(-200,-108),
  ABISELECT(-152,-80),
  ABISELECT(-136,-68),
  ABISELECT(-152,-80),
  ABISELECT(-188,-100),
  ABISELECT(-152,-80),
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S7856C23D1Ev,_ZTv0_n72_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S7856C23D0Ev,_ZTv0_n72_N8S7856C23D0Ev),
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  ABISELECT(-344,-184),
  ABISELECT(-208,-112),
  ABISELECT(-144,-72),
  ABISELECT(-160,-84),
  ABISELECT(-196,-104),
  ABISELECT(-160,-84),
  ABISELECT(-160,-84),
  ABISELECT(-128,-64),
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n144_N8S7856C23D1Ev,_ZTvn4_n72_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n144_N8S7856C23D0Ev,_ZTvn4_n72_N8S7856C23D0Ev),
  ABISELECT(-212,-112),
  ABISELECT(-176,-92),
  ABISELECT(-360,-192),
  ABISELECT(-360,-192),
  ABISELECT(-360,-192),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  ABISELECT(8,4),
  ABISELECT(-376,-200),
  ABISELECT(-128,-64),
  ABISELECT(-144,-72),
  ABISELECT(-144,-72),
  ABISELECT(-376,-200),
  ABISELECT(-160,-80),
  ABISELECT(-240,-128),
  ABISELECT(-192,-100),
  ABISELECT(-176,-88),
  ABISELECT(-192,-100),
  ABISELECT(-224,-116),
  ABISELECT(-228,-120),
  ABISELECT(-192,-100),
  ABISELECT(-376,-200),
  ABISELECT(-376,-200),
  ABISELECT(-376,-200),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S7856C23D1Ev,_ZTv0_n68_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S7856C23D0Ev,_ZTv0_n68_N8S7856C23D0Ev),
  ABISELECT(-136,-68),
  ABISELECT(-168,-84),
  ABISELECT(-248,-132),
  ABISELECT(-200,-104),
  ABISELECT(-184,-92),
  ABISELECT(-236,-124),
  ABISELECT(-200,-104),
  ABISELECT(-384,-204),
  ABISELECT(-384,-204),
  ABISELECT(-384,-204),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N8S7856C23D1Ev,_ZTvn4_n68_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N8S7856C23D0Ev,_ZTvn4_n68_N8S7856C23D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern VTBL_ENTRY _ZTV8S7856C23[];
extern void _ZN8S7856C25D1Ev();
extern void _ZN8S7856C25D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C25__8S7856C23[] = {
  0,
  ABISELECT(328,176),
  ABISELECT(280,152),
  ABISELECT(248,136),
  ABISELECT(232,128),
  ABISELECT(232,128),
  0,
  ABISELECT(216,120),
  ABISELECT(136,72),
  ABISELECT(200,112),
  ABISELECT(184,100),
  ABISELECT(152,84),
  ABISELECT(148,80),
  ABISELECT(184,100),
  ABISELECT(184,100),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&_ZN8S7856C25D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C25D0Ev,
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C138S7856C25__8S7856C23[] = {
  ABISELECT(148,80),
  ABISELECT(184,100),
  ABISELECT(184,100),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C138S7856C25__A1__8S7856C23[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C138S7856C25__8S7856C23[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C268S7856C25__8S7856C23[] = {
  ABISELECT(132,72),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C26[0]),
};
extern void _ZN7S7856C4D1Ev();
extern void _ZN7S7856C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C48S7856C25__8S7856C23[] = {
  ABISELECT(224,124),
  ABISELECT(208,116),
  ABISELECT(208,116),
  ABISELECT(-24,-12),
  ABISELECT(192,108),
  ABISELECT(112,60),
  ABISELECT(160,88),
  ABISELECT(176,100),
  ABISELECT(160,88),
  ABISELECT(128,72),
  ABISELECT(124,68),
  ABISELECT(160,88),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&_ZN7S7856C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C4D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C107S7856C48S7856C25__A2__8S7856C23[] = {
  ABISELECT(124,68),
  ABISELECT(160,88),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C107S7856C48S7856C25__A2__8S7856C23[] = {
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void _ZN8S7856C19D1Ev();
extern void _ZN8S7856C19D0Ev();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C197S7856C48S7856C25__8S7856C23[] = {
  ABISELECT(216,120),
  ABISELECT(184,104),
  ABISELECT(104,56),
  ABISELECT(152,84),
  ABISELECT(168,96),
  ABISELECT(116,64),
  ABISELECT(152,84),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&_ZN8S7856C19D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C19D0Ev,
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void _ZN7S7856C6D1Ev();
extern void _ZN7S7856C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C68S7856C197S7856C48S7856C25__A1__8S7856C23[] = {
  ABISELECT(184,104),
  ABISELECT(104,56),
  ABISELECT(152,84),
  ABISELECT(168,96),
  ABISELECT(116,64),
  ABISELECT(152,84),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&_ZN7S7856C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C6D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn168_N7S7856C6D1Ev,_ZThn96_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn168_N7S7856C6D0Ev,_ZThn96_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C68S7856C197S7856C48S7856C25__A1__8S7856C23[] = {
  ABISELECT(-168,-96),
  ABISELECT(-52,-32),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-200,-112),
  ABISELECT(-200,-112),
  ABISELECT(-168,-96),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C68S7856C197S7856C48S7856C25__A1__8S7856C23[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C68S7856C197S7856C48S7856C25__A1__8S7856C23[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn184_N7S7856C6D1Ev,_ZThn104_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn184_N7S7856C6D0Ev,_ZThn104_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C68S7856C197S7856C48S7856C25__A1__8S7856C23[] = {
  ABISELECT(-184,-104),
  ABISELECT(-68,-40),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-216,-120),
  ABISELECT(-216,-120),
  ABISELECT(-184,-104),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev)();
extern void ABISELECT(_ZThn168_N8S7856C19D1Ev,_ZThn96_N8S7856C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev)();
extern void ABISELECT(_ZThn168_N8S7856C19D0Ev,_ZThn96_N8S7856C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C197S7856C48S7856C25__8S7856C23[] = {
  ABISELECT(-168,-96),
  ABISELECT(-52,-32),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-200,-112),
  ABISELECT(-200,-112),
  ABISELECT(-168,-96),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C197S7856C48S7856C25__8S7856C23[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C197S7856C48S7856C25__8S7856C23[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev)();
extern void ABISELECT(_ZThn184_N8S7856C19D1Ev,_ZThn104_N8S7856C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev)();
extern void ABISELECT(_ZThn184_N8S7856C19D0Ev,_ZThn104_N8S7856C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__8S7856C197S7856C48S7856C25__8S7856C23[] = {
  ABISELECT(-184,-104),
  ABISELECT(-68,-40),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-216,-120),
  ABISELECT(-216,-120),
  ABISELECT(-184,-104),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev),
};
extern void ABISELECT(_ZTv0_n72_N8S7856C19D1Ev,_ZTv0_n36_N8S7856C19D1Ev)();
extern void ABISELECT(_ZThn216_N8S7856C19D1Ev,_ZThn120_N8S7856C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7856C19D0Ev,_ZTv0_n36_N8S7856C19D0Ev)();
extern void ABISELECT(_ZThn216_N8S7856C19D0Ev,_ZThn120_N8S7856C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C18__8S7856C197S7856C48S7856C25__8S7856C23[] = {
  ABISELECT(-216,-120),
  ABISELECT(-100,-56),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-32,-16),
  ABISELECT(-248,-136),
  ABISELECT(-248,-136),
  ABISELECT(-216,-120),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C19D1Ev,_ZTv0_n36_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C19D0Ev,_ZTv0_n36_N8S7856C19D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__8S7856C197S7856C48S7856C25__8S7856C23[] = {
  ABISELECT(-116,-64),
  ABISELECT(-80,-44),
  ABISELECT(-264,-144),
  ABISELECT(-264,-144),
  ABISELECT(-232,-128),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
extern void ABISELECT(_ZTv0_n120_N7S7856C4D1Ev,_ZTv0_n60_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn128_N7S7856C4D1Ev,_ZThn72_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S7856C4D0Ev,_ZTv0_n60_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn128_N7S7856C4D0Ev,_ZThn72_N7S7856C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C5__7S7856C48S7856C25__8S7856C23[] = {
  ABISELECT(-128,-72),
  ABISELECT(80,44),
  ABISELECT(80,44),
  ABISELECT(-152,-84),
  ABISELECT(-16,-12),
  ABISELECT(48,28),
  ABISELECT(32,16),
  -4,
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(64,36),
  ABISELECT(-152,-84),
  ABISELECT(-152,-84),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C4D1Ev,_ZTv0_n60_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C4D0Ev,_ZTv0_n60_N7S7856C4D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn160_N7S7856C4D1Ev,_ZThn88_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn160_N7S7856C4D0Ev,_ZThn88_N7S7856C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C48S7856C25__8S7856C23[] = {
  ABISELECT(-160,-88),
  ABISELECT(32,20),
  ABISELECT(-48,-28),
  0,
  ABISELECT(16,12),
  ABISELECT(-36,-20),
  0,
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn176_N7S7856C4D1Ev,_ZThn100_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn176_N7S7856C4D0Ev,_ZThn100_N7S7856C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C48S7856C25__8S7856C23[] = {
  ABISELECT(-176,-100),
  ABISELECT(-52,-32),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-200,-112),
  ABISELECT(-200,-112),
  ABISELECT(-176,-100),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C48S7856C25__8S7856C23[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn192_N7S7856C4D1Ev,_ZThn108_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn192_N7S7856C4D0Ev,_ZThn108_N7S7856C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C48S7856C25__8S7856C23[] = {
  ABISELECT(-192,-108),
  ABISELECT(-68,-40),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-216,-120),
  ABISELECT(-216,-120),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn208_N7S7856C4D1Ev,_ZThn116_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn208_N7S7856C4D0Ev,_ZThn116_N7S7856C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C48S7856C25__8S7856C23[] = {
  ABISELECT(-208,-116),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(-96,-56),
  0,
  ABISELECT(-232,-128),
  ABISELECT(-232,-128),
  ABISELECT(-48,-28),
  ABISELECT(-84,-48),
  ABISELECT(-208,-116),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__7S7856C48S7856C25__8S7856C23[] = {
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  ABISELECT(-168,-92),
  ABISELECT(-168,-92),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
extern void ABISELECT(_ZThn8_N7S7856C4D1Ev,_ZThn4_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn8_N7S7856C4D0Ev,_ZThn4_N7S7856C4D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C19__7S7856C48S7856C25__8S7856C23[] = {
  ABISELECT(216,120),
  ABISELECT(184,104),
  ABISELECT(104,56),
  ABISELECT(152,84),
  ABISELECT(168,96),
  ABISELECT(116,64),
  ABISELECT(152,84),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7856C4D1Ev,_ZThn4_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7856C4D0Ev,_ZThn4_N7S7856C4D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N7S7856C4D1Ev,_ZTv0_n36_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn224_N7S7856C4D1Ev,_ZThn124_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7856C4D0Ev,_ZTv0_n36_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn224_N7S7856C4D0Ev,_ZThn124_N7S7856C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C18__A1__7S7856C48S7856C25__8S7856C23[] = {
  ABISELECT(-224,-124),
  ABISELECT(-100,-56),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-32,-16),
  ABISELECT(-248,-136),
  ABISELECT(-248,-136),
  ABISELECT(-224,-124),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7856C4D1Ev,_ZTv0_n36_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7856C4D0Ev,_ZTv0_n36_N7S7856C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A3__7S7856C48S7856C25__8S7856C23[] = {
  ABISELECT(-116,-64),
  ABISELECT(-80,-44),
  ABISELECT(-264,-144),
  ABISELECT(-264,-144),
  ABISELECT(-240,-132),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
extern void _ZN7S7856C5D1Ev();
extern void _ZN7S7856C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C58S7856C25__A1__8S7856C23[] = {
  ABISELECT(184,100),
  ABISELECT(184,100),
  ABISELECT(-48,-28),
  ABISELECT(88,44),
  ABISELECT(152,84),
  ABISELECT(136,72),
  ABISELECT(100,52),
  ABISELECT(136,72),
  ABISELECT(136,72),
  ABISELECT(168,92),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&_ZN7S7856C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C5D0Ev,
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C187S7856C58S7856C25__A2__8S7856C23[] = {
  ABISELECT(100,52),
  ABISELECT(136,72),
  ABISELECT(136,72),
  ABISELECT(168,92),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C187S7856C58S7856C25__A3__8S7856C23[] = {
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C187S7856C58S7856C25__A8__8S7856C23[] = {
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C58S7856C25__A4__8S7856C23[] = {
  ABISELECT(84,44),
  ABISELECT(120,64),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C187S7856C58S7856C25__A4__8S7856C23[] = {
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZThn168_N8S7856C18D1Ev,_ZThn92_N8S7856C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
extern void ABISELECT(_ZThn168_N8S7856C18D0Ev,_ZThn92_N8S7856C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C187S7856C58S7856C25__A2__8S7856C23[] = {
  ABISELECT(-168,-92),
  ABISELECT(-68,-40),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-216,-120),
  ABISELECT(-216,-120),
  ABISELECT(-168,-92),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C187S7856C58S7856C25__A2__8S7856C23[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C187S7856C58S7856C25__A2__8S7856C23[] = {
  ABISELECT(84,44),
  ABISELECT(120,64),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn136_N7S7856C5D1Ev,_ZThn72_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn136_N7S7856C5D0Ev,_ZThn72_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C58S7856C25__A1__8S7856C23[] = {
  ABISELECT(-136,-72),
  ABISELECT(32,20),
  ABISELECT(-48,-28),
  0,
  ABISELECT(16,12),
  ABISELECT(-36,-20),
  0,
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn152_N7S7856C5D1Ev,_ZThn84_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn152_N7S7856C5D0Ev,_ZThn84_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C58S7856C25__A1__8S7856C23[] = {
  ABISELECT(-152,-84),
  ABISELECT(-52,-32),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-200,-112),
  ABISELECT(-200,-112),
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C58S7856C25__A1__8S7856C23[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn168_N7S7856C5D1Ev,_ZThn92_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn168_N7S7856C5D0Ev,_ZThn92_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C58S7856C25__A1__8S7856C23[] = {
  ABISELECT(-168,-92),
  ABISELECT(-68,-40),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-216,-120),
  ABISELECT(-216,-120),
  ABISELECT(-168,-92),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn184_N7S7856C5D1Ev,_ZThn100_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn184_N7S7856C5D0Ev,_ZThn100_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C58S7856C25__A1__8S7856C23[] = {
  ABISELECT(-184,-100),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(-96,-56),
  0,
  ABISELECT(-232,-128),
  ABISELECT(-232,-128),
  ABISELECT(-48,-28),
  ABISELECT(-84,-48),
  ABISELECT(-184,-100),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__7S7856C58S7856C25__A1__8S7856C23[] = {
  ABISELECT(84,44),
  ABISELECT(120,64),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C25D1Ev,_ZTv0_n44_N8S7856C25D1Ev)();
extern void ABISELECT(_ZThn184_N8S7856C25D1Ev,_ZThn100_N8S7856C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C25D0Ev,_ZTv0_n44_N8S7856C25D0Ev)();
extern void ABISELECT(_ZThn184_N8S7856C25D0Ev,_ZThn100_N8S7856C25D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C25__8S7856C23[] = {
  ABISELECT(-184,-100),
  ABISELECT(32,20),
  ABISELECT(-48,-28),
  0,
  ABISELECT(16,12),
  ABISELECT(-36,-20),
  0,
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C25D1Ev,_ZTv0_n44_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C25D0Ev,_ZTv0_n44_N8S7856C25D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C26__8S7856C25__8S7856C23[] = {
  ABISELECT(132,72),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
};
extern void ABISELECT(_ZThn24_N8S7856C25D1Ev,_ZThn12_N8S7856C25D1Ev)();
extern void ABISELECT(_ZThn24_N8S7856C25D0Ev,_ZThn12_N8S7856C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C4__8S7856C25__8S7856C23[] = {
  ABISELECT(224,124),
  ABISELECT(208,116),
  ABISELECT(208,116),
  ABISELECT(-24,-12),
  ABISELECT(192,108),
  ABISELECT(112,60),
  ABISELECT(160,88),
  ABISELECT(176,100),
  ABISELECT(160,88),
  ABISELECT(128,72),
  ABISELECT(124,68),
  ABISELECT(160,88),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S7856C25D1Ev,_ZThn12_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S7856C25D0Ev,_ZThn12_N8S7856C25D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S7856C25D1Ev,_ZTv0_n60_N8S7856C25D1Ev)();
extern void ABISELECT(_ZThn152_N8S7856C25D1Ev,_ZThn84_N8S7856C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S7856C25D0Ev,_ZTv0_n60_N8S7856C25D0Ev)();
extern void ABISELECT(_ZThn152_N8S7856C25D0Ev,_ZThn84_N8S7856C25D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C5__8S7856C25__8S7856C23[] = {
  ABISELECT(-152,-84),
  ABISELECT(80,44),
  ABISELECT(80,44),
  ABISELECT(-152,-84),
  ABISELECT(-16,-12),
  ABISELECT(48,28),
  ABISELECT(32,16),
  -4,
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(64,36),
  ABISELECT(-152,-84),
  ABISELECT(-152,-84),
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C25D1Ev,_ZTv0_n60_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C25D0Ev,_ZTv0_n60_N8S7856C25D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C25D1Ev,_ZTv0_n32_N8S7856C25D1Ev)();
extern void ABISELECT(_ZThn200_N8S7856C25D1Ev,_ZThn112_N8S7856C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C25D0Ev,_ZTv0_n32_N8S7856C25D0Ev)();
extern void ABISELECT(_ZThn200_N8S7856C25D0Ev,_ZThn112_N8S7856C25D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C25__8S7856C23[] = {
  ABISELECT(-200,-112),
  ABISELECT(-52,-32),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-200,-112),
  ABISELECT(-200,-112),
  ABISELECT(-200,-112),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C25D1Ev,_ZTv0_n32_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C25D0Ev,_ZTv0_n32_N8S7856C25D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C25__8S7856C23[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C25D1Ev,_ZTv0_n32_N8S7856C25D1Ev)();
extern void ABISELECT(_ZThn216_N8S7856C25D1Ev,_ZThn120_N8S7856C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C25D0Ev,_ZTv0_n32_N8S7856C25D0Ev)();
extern void ABISELECT(_ZThn216_N8S7856C25D0Ev,_ZThn120_N8S7856C25D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A2__8S7856C25__8S7856C23[] = {
  ABISELECT(-216,-120),
  ABISELECT(-68,-40),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-216,-120),
  ABISELECT(-216,-120),
  ABISELECT(-216,-120),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C25D1Ev,_ZTv0_n32_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C25D0Ev,_ZTv0_n32_N8S7856C25D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C25D1Ev,_ZTv0_n44_N8S7856C25D1Ev)();
extern void ABISELECT(_ZThn232_N8S7856C25D1Ev,_ZThn128_N8S7856C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C25D0Ev,_ZTv0_n44_N8S7856C25D0Ev)();
extern void ABISELECT(_ZThn232_N8S7856C25D0Ev,_ZThn128_N8S7856C25D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C25__8S7856C23[] = {
  ABISELECT(-232,-128),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(-96,-56),
  0,
  ABISELECT(-232,-128),
  ABISELECT(-232,-128),
  ABISELECT(-48,-28),
  ABISELECT(-84,-48),
  ABISELECT(-232,-128),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C25D1Ev,_ZTv0_n44_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C25D0Ev,_ZTv0_n44_N8S7856C25D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C25__8S7856C23[] = {
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  ABISELECT(-168,-92),
  ABISELECT(-168,-92),
  ABISELECT(-168,-92),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
};
extern void ABISELECT(_ZThn32_N8S7856C25D1Ev,_ZThn16_N8S7856C25D1Ev)();
extern void ABISELECT(_ZThn32_N8S7856C25D0Ev,_ZThn16_N8S7856C25D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C197S7856C4__8S7856C25__8S7856C23[] = {
  ABISELECT(216,120),
  ABISELECT(184,104),
  ABISELECT(104,56),
  ABISELECT(152,84),
  ABISELECT(168,96),
  ABISELECT(116,64),
  ABISELECT(152,84),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S7856C25D1Ev,_ZThn16_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S7856C25D0Ev,_ZThn16_N8S7856C25D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N8S7856C25D1Ev,_ZTv0_n36_N8S7856C25D1Ev)();
extern void ABISELECT(_ZThn248_N8S7856C25D1Ev,_ZThn136_N8S7856C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7856C25D0Ev,_ZTv0_n36_N8S7856C25D0Ev)();
extern void ABISELECT(_ZThn248_N8S7856C25D0Ev,_ZThn136_N8S7856C25D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C18__A1__8S7856C25__8S7856C23[] = {
  ABISELECT(-248,-136),
  ABISELECT(-100,-56),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-32,-16),
  ABISELECT(-248,-136),
  ABISELECT(-248,-136),
  ABISELECT(-248,-136),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C25D1Ev,_ZTv0_n36_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C25D0Ev,_ZTv0_n36_N8S7856C25D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A3__8S7856C25__8S7856C23[] = {
  ABISELECT(-116,-64),
  ABISELECT(-80,-44),
  ABISELECT(-264,-144),
  ABISELECT(-264,-144),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
};
extern void ABISELECT(_ZTv0_n144_N8S7856C25D1Ev,_ZTv0_n72_N8S7856C25D1Ev)();
extern void ABISELECT(_ZThn280_N8S7856C25D1Ev,_ZThn152_N8S7856C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N8S7856C25D0Ev,_ZTv0_n72_N8S7856C25D0Ev)();
extern void ABISELECT(_ZThn280_N8S7856C25D0Ev,_ZThn152_N8S7856C25D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C27__8S7856C25__8S7856C23[] = {
  ABISELECT(-280,-152),
  ABISELECT(-280,-152),
  ABISELECT(-48,-24),
  ABISELECT(-280,-152),
  ABISELECT(-64,-32),
  ABISELECT(-96,-52),
  ABISELECT(-128,-68),
  ABISELECT(48,24),
  ABISELECT(-96,-52),
  ABISELECT(-80,-40),
  ABISELECT(-144,-80),
  ABISELECT(-48,-24),
  ABISELECT(-280,-152),
  ABISELECT(-280,-152),
  ABISELECT(-96,-52),
  ABISELECT(-132,-72),
  ABISELECT(-280,-152),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S7856C25D1Ev,_ZTv0_n72_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S7856C25D0Ev,_ZTv0_n72_N8S7856C25D0Ev),
};
extern void ABISELECT(_ZTvn16_n144_N8S7856C25D1Ev,_ZTvn8_n72_N8S7856C25D1Ev)();
extern void ABISELECT(_ZTvn16_n144_N8S7856C25D0Ev,_ZTvn8_n72_N8S7856C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C288S7856C27__8S7856C25__8S7856C23[] = {
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-296,-160),
  ABISELECT(-80,-40),
  ABISELECT(-112,-60),
  ABISELECT(-144,-76),
  ABISELECT(-96,-48),
  ABISELECT(32,16),
  ABISELECT(-160,-88),
  ABISELECT(-148,-80),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-296,-160),
  ABISELECT(-296,-160),
  ABISELECT(-296,-160),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n144_N8S7856C25D1Ev,_ZTvn8_n72_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n144_N8S7856C25D0Ev,_ZTvn8_n72_N8S7856C25D0Ev),
};
extern void ABISELECT(_ZTv0_n128_N8S7856C25D1Ev,_ZTv0_n64_N8S7856C25D1Ev)();
extern void ABISELECT(_ZThn328_N8S7856C25D1Ev,_ZThn176_N8S7856C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S7856C25D0Ev,_ZTv0_n64_N8S7856C25D0Ev)();
extern void ABISELECT(_ZThn328_N8S7856C25D0Ev,_ZThn176_N8S7856C25D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C29__8S7856C25__8S7856C23[] = {
  ABISELECT(-328,-176),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-328,-176),
  ABISELECT(-112,-56),
  ABISELECT(-192,-104),
  ABISELECT(-144,-76),
  ABISELECT(-176,-92),
  ABISELECT(-144,-76),
  ABISELECT(-128,-64),
  ABISELECT(-180,-96),
  ABISELECT(-144,-76),
  ABISELECT(-328,-176),
  ABISELECT(-328,-176),
  ABISELECT(-328,-176),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C25D1Ev,_ZTv0_n64_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C25D0Ev,_ZTv0_n64_N8S7856C25D0Ev),
};
extern void ABISELECT(_ZTvn32_n144_N8S7856C25D1Ev,_ZTvn16_n72_N8S7856C25D1Ev)();
extern void ABISELECT(_ZTvn32_n144_N8S7856C25D0Ev,_ZTvn16_n72_N8S7856C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C218S7856C288S7856C27__8S7856C25__8S7856C23[] = {
  ABISELECT(-164,-88),
  ABISELECT(-312,-168),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n144_N8S7856C25D1Ev,_ZTvn16_n72_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n144_N8S7856C25D0Ev,_ZTvn16_n72_N8S7856C25D0Ev),
};
extern void ABISELECT(_ZThn48_N8S7856C25D1Ev,_ZThn28_N8S7856C25D1Ev)();
extern void ABISELECT(_ZThn48_N8S7856C25D0Ev,_ZThn28_N8S7856C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__A__8S7856C25__8S7856C23[] = {
  ABISELECT(184,100),
  ABISELECT(184,100),
  ABISELECT(-48,-28),
  ABISELECT(88,44),
  ABISELECT(152,84),
  ABISELECT(136,72),
  ABISELECT(100,52),
  ABISELECT(136,72),
  ABISELECT(136,72),
  ABISELECT(168,92),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7856C25D1Ev,_ZThn28_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7856C25D0Ev,_ZThn28_N8S7856C25D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A4__8S7856C25__8S7856C23[] = {
  ABISELECT(84,44),
  ABISELECT(120,64),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A__8S7856C23[] = {
  ABISELECT(68,36),
  ABISELECT(104,56),
  ABISELECT(104,56),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C13__A9__8S7856C23[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C13__A__8S7856C23[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C23[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C14__8S7856C23[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C23[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__A2__8S7856C23[] = {
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
extern void _ZN7S7856C5D1Ev();
extern void _ZN7S7856C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C5__8S7856C23[] = {
  ABISELECT(80,44),
  ABISELECT(80,44),
  ABISELECT(-152,-84),
  ABISELECT(-16,-12),
  ABISELECT(48,28),
  ABISELECT(32,16),
  -4,
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(64,36),
  ABISELECT(-152,-84),
  ABISELECT(-152,-84),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&_ZN7S7856C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C5D0Ev,
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C187S7856C5__8S7856C23[] = {
  -4,
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(64,36),
  ABISELECT(-152,-84),
  ABISELECT(-152,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C187S7856C5__A1__8S7856C23[] = {
  ABISELECT(-152,-84),
  ABISELECT(-152,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C187S7856C5__A5__8S7856C23[] = {
  ABISELECT(-152,-84),
  ABISELECT(-152,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C23[] = {
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  ABISELECT(-168,-92),
  ABISELECT(-168,-92),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C187S7856C5__A1__8S7856C23[] = {
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZThn64_N8S7856C18D1Ev,_ZThn36_N8S7856C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
extern void ABISELECT(_ZThn64_N8S7856C18D0Ev,_ZThn36_N8S7856C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C187S7856C5__8S7856C23[] = {
  ABISELECT(-64,-36),
  ABISELECT(-68,-40),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-216,-120),
  ABISELECT(-216,-120),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C187S7856C5__8S7856C23[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C187S7856C5__8S7856C23[] = {
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  ABISELECT(-168,-92),
  ABISELECT(-168,-92),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn32_N7S7856C5D1Ev,_ZThn16_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn32_N7S7856C5D0Ev,_ZThn16_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C5__8S7856C23[] = {
  ABISELECT(-32,-16),
  ABISELECT(32,20),
  ABISELECT(-48,-28),
  0,
  ABISELECT(16,12),
  ABISELECT(-36,-20),
  0,
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn48_N7S7856C5D1Ev,_ZThn28_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn48_N7S7856C5D0Ev,_ZThn28_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C5__8S7856C23[] = {
  ABISELECT(-48,-28),
  ABISELECT(-52,-32),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-200,-112),
  ABISELECT(-200,-112),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C5__8S7856C23[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn64_N7S7856C5D1Ev,_ZThn36_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn64_N7S7856C5D0Ev,_ZThn36_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C5__8S7856C23[] = {
  ABISELECT(-64,-36),
  ABISELECT(-68,-40),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-216,-120),
  ABISELECT(-216,-120),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn80_N7S7856C5D1Ev,_ZThn44_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn80_N7S7856C5D0Ev,_ZThn44_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C5__8S7856C23[] = {
  ABISELECT(-80,-44),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(-96,-56),
  0,
  ABISELECT(-232,-128),
  ABISELECT(-232,-128),
  ABISELECT(-48,-28),
  ABISELECT(-84,-48),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__7S7856C5__8S7856C23[] = {
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  ABISELECT(-168,-92),
  ABISELECT(-168,-92),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void _ZN7S7856C6D1Ev();
extern void _ZN7S7856C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C23[] = {
  ABISELECT(32,20),
  ABISELECT(-48,-28),
  0,
  ABISELECT(16,12),
  ABISELECT(-36,-20),
  0,
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&_ZN7S7856C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C6D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn16_N7S7856C6D1Ev,_ZThn12_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn16_N7S7856C6D0Ev,_ZThn12_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C6__8S7856C23[] = {
  ABISELECT(-16,-12),
  ABISELECT(-52,-32),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-200,-112),
  ABISELECT(-200,-112),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C6__8S7856C23[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn32_N7S7856C6D1Ev,_ZThn20_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn32_N7S7856C6D0Ev,_ZThn20_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C6__8S7856C23[] = {
  ABISELECT(-32,-20),
  ABISELECT(-68,-40),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-216,-120),
  ABISELECT(-216,-120),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
extern void _ZN7S7856C7D1Ev();
extern void _ZN7S7856C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C23[] = {
  ABISELECT(-52,-32),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-200,-112),
  ABISELECT(-200,-112),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
  (VTBL_ENTRY)&_ZN7S7856C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C7D0Ev,
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C137S7856C7__A1__8S7856C23[] = {
  ABISELECT(-52,-32),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-200,-112),
  ABISELECT(-200,-112),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C137S7856C7__A3__8S7856C23[] = {
  ABISELECT(-200,-112),
  ABISELECT(-200,-112),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C137S7856C7__A1__8S7856C23[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C7__8S7856C23[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A2__8S7856C23[] = {
  ABISELECT(-68,-40),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-216,-120),
  ABISELECT(-216,-120),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C13__A4__8S7856C23[] = {
  ABISELECT(-216,-120),
  ABISELECT(-216,-120),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C13__A2__8S7856C23[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
extern void _ZN8S7856C16D1Ev();
extern void _ZN8S7856C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C23[] = {
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(-96,-56),
  0,
  ABISELECT(-232,-128),
  ABISELECT(-232,-128),
  ABISELECT(-48,-28),
  ABISELECT(-84,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&_ZN8S7856C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C16__8S7856C23[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C16__8S7856C23[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C16__8S7856C23[] = {
  ABISELECT(32,16),
  ABISELECT(-52,-32),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-200,-112),
  ABISELECT(-200,-112),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt__8S7856C23[] = {
  ABISELECT(-84,-48),
  0,
  (VTBL_ENTRY)&(_ZTI11S7856C17_nt[0]),
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C18__A1__8S7856C23[] = {
  ABISELECT(-100,-56),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-32,-16),
  ABISELECT(-248,-136),
  ABISELECT(-248,-136),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C18__A2__8S7856C23[] = {
  ABISELECT(-248,-136),
  ABISELECT(-248,-136),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C18__A6__8S7856C23[] = {
  ABISELECT(-248,-136),
  ABISELECT(-248,-136),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A3__8S7856C23[] = {
  ABISELECT(-116,-64),
  ABISELECT(-80,-44),
  ABISELECT(-264,-144),
  ABISELECT(-264,-144),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C18__A3__8S7856C23[] = {
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C18__A1__8S7856C23[] = {
  ABISELECT(32,16),
  ABISELECT(-68,-40),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-216,-120),
  ABISELECT(-216,-120),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C18__A1__8S7856C23[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C18__A1__8S7856C23[] = {
  ABISELECT(-116,-64),
  ABISELECT(-80,-44),
  ABISELECT(-264,-144),
  ABISELECT(-264,-144),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern void _ZN8S7856C27D1Ev();
extern void _ZN8S7856C27D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C27__8S7856C23[] = {
  ABISELECT(-280,-152),
  ABISELECT(-48,-24),
  ABISELECT(-280,-152),
  ABISELECT(-64,-32),
  ABISELECT(-96,-52),
  ABISELECT(-128,-68),
  ABISELECT(48,24),
  ABISELECT(-96,-52),
  ABISELECT(-80,-40),
  ABISELECT(-144,-80),
  ABISELECT(-48,-24),
  ABISELECT(-280,-152),
  ABISELECT(-280,-152),
  ABISELECT(-96,-52),
  ABISELECT(-132,-72),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&_ZN8S7856C27D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C27D0Ev,
};
extern void _ZN8S7856C16D1Ev();
extern void _ZN8S7856C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C168S7856C27__A1__8S7856C23[] = {
  ABISELECT(-96,-52),
  ABISELECT(-80,-40),
  ABISELECT(-144,-80),
  ABISELECT(-48,-24),
  ABISELECT(-280,-152),
  ABISELECT(-280,-152),
  ABISELECT(-96,-52),
  ABISELECT(-132,-72),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&_ZN8S7856C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C168S7856C27__A1__8S7856C23[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  ABISELECT(96,52),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt__8S7856C168S7856C27__A1__8S7856C23[] = {
  ABISELECT(-84,-48),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C168S7856C27__A1__8S7856C23[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(144,80),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C168S7856C27__A1__8S7856C23[] = {
  ABISELECT(80,40),
  ABISELECT(-52,-32),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-200,-112),
  ABISELECT(-200,-112),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev),
};
extern void _ZN8S7856C28D1Ev();
extern void _ZN8S7856C28D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C288S7856C27__8S7856C23[] = {
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-296,-160),
  ABISELECT(-80,-40),
  ABISELECT(-112,-60),
  ABISELECT(-144,-76),
  ABISELECT(-96,-48),
  ABISELECT(32,16),
  ABISELECT(-160,-88),
  ABISELECT(-148,-80),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-296,-160),
  ABISELECT(-296,-160),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&_ZN8S7856C28D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C28D0Ev,
};
extern void _ZN7S7856C7D1Ev();
extern void _ZN7S7856C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C78S7856C288S7856C27__A1__8S7856C23[] = {
  ABISELECT(-148,-80),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-296,-160),
  ABISELECT(-296,-160),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
  (VTBL_ENTRY)&_ZN7S7856C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C7D0Ev,
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C137S7856C78S7856C288S7856C27__A3__8S7856C23[] = {
  ABISELECT(-148,-80),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-296,-160),
  ABISELECT(-296,-160),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C137S7856C78S7856C288S7856C27__A7__8S7856C23[] = {
  ABISELECT(-296,-160),
  ABISELECT(-296,-160),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C137S7856C78S7856C288S7856C27__A3__8S7856C23[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C78S7856C288S7856C27__A1__8S7856C23[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
};
extern void _ZN8S7856C21D1Ev();
extern void _ZN8S7856C21D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C218S7856C288S7856C27__8S7856C23[] = {
  ABISELECT(-164,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C21[0]),
  (VTBL_ENTRY)&_ZN8S7856C21D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C21D0Ev,
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt8S7856C218S7856C288S7856C27__A1__8S7856C23[] = {
  ABISELECT(-164,-88),
  0,
  (VTBL_ENTRY)&(_ZTI11S7856C17_nt[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C28D1Ev,_ZTv0_n44_N8S7856C28D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C28D0Ev,_ZTv0_n44_N8S7856C28D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C288S7856C27__8S7856C23[] = {
  ABISELECT(112,60),
  ABISELECT(32,20),
  ABISELECT(-48,-28),
  0,
  ABISELECT(16,12),
  ABISELECT(-36,-20),
  0,
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C28D1Ev,_ZTv0_n44_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C28D0Ev,_ZTv0_n44_N8S7856C28D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C288S7856C27__8S7856C23[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(160,88),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
};
extern void ABISELECT(_ZTv0_n128_N8S7856C28D1Ev,_ZTv0_n64_N8S7856C28D1Ev)();
extern void ABISELECT(_ZThn32_N8S7856C28D1Ev,_ZThn16_N8S7856C28D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S7856C28D0Ev,_ZTv0_n64_N8S7856C28D0Ev)();
extern void ABISELECT(_ZThn32_N8S7856C28D0Ev,_ZThn16_N8S7856C28D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C29__8S7856C288S7856C27__8S7856C23[] = {
  ABISELECT(-32,-16),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-328,-176),
  ABISELECT(-112,-56),
  ABISELECT(-192,-104),
  ABISELECT(-144,-76),
  ABISELECT(-176,-92),
  ABISELECT(-144,-76),
  ABISELECT(-128,-64),
  ABISELECT(-180,-96),
  ABISELECT(-144,-76),
  ABISELECT(-328,-176),
  ABISELECT(-328,-176),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C28D1Ev,_ZTv0_n64_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C28D0Ev,_ZTv0_n64_N8S7856C28D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C28D1Ev,_ZTv0_n32_N8S7856C28D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C28D0Ev,_ZTv0_n32_N8S7856C28D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__A1__8S7856C288S7856C27__8S7856C23[] = {
  ABISELECT(96,48),
  ABISELECT(-52,-32),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-200,-112),
  ABISELECT(-200,-112),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C28D1Ev,_ZTv0_n32_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C28D0Ev,_ZTv0_n32_N8S7856C28D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S7856C28D1Ev,_ZTv0_n60_N8S7856C28D1Ev)();
extern void ABISELECT(_ZTv0_n120_N8S7856C28D0Ev,_ZTv0_n60_N8S7856C28D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__8S7856C288S7856C27__8S7856C23[] = {
  ABISELECT(144,76),
  ABISELECT(80,44),
  ABISELECT(80,44),
  ABISELECT(-152,-84),
  ABISELECT(-16,-12),
  ABISELECT(48,28),
  ABISELECT(32,16),
  -4,
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(64,36),
  ABISELECT(-152,-84),
  ABISELECT(-152,-84),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C28D1Ev,_ZTv0_n60_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C28D0Ev,_ZTv0_n60_N8S7856C28D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C28D1Ev,_ZTv0_n32_N8S7856C28D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C28D0Ev,_ZTv0_n32_N8S7856C28D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A2__8S7856C288S7856C27__8S7856C23[] = {
  ABISELECT(80,40),
  ABISELECT(-68,-40),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-216,-120),
  ABISELECT(-216,-120),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C28D1Ev,_ZTv0_n32_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C28D0Ev,_ZTv0_n32_N8S7856C28D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C28D1Ev,_ZTv0_n44_N8S7856C28D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C28D0Ev,_ZTv0_n44_N8S7856C28D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C288S7856C27__8S7856C23[] = {
  ABISELECT(64,32),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(-96,-56),
  0,
  ABISELECT(-232,-128),
  ABISELECT(-232,-128),
  ABISELECT(-48,-28),
  ABISELECT(-84,-48),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C28D1Ev,_ZTv0_n44_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C28D0Ev,_ZTv0_n44_N8S7856C28D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C288S7856C27__8S7856C23[] = {
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  ABISELECT(-168,-92),
  ABISELECT(-168,-92),
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
};
extern void ABISELECT(_ZThn16_N8S7856C28D1Ev,_ZThn8_N8S7856C28D1Ev)();
extern void ABISELECT(_ZThn16_N8S7856C28D0Ev,_ZThn8_N8S7856C28D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C21__8S7856C288S7856C27__8S7856C23[] = {
  ABISELECT(-164,-88),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S7856C28D1Ev,_ZThn8_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S7856C28D0Ev,_ZThn8_N8S7856C28D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C27D1Ev,_ZTv0_n44_N8S7856C27D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C27D0Ev,_ZTv0_n44_N8S7856C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C27__8S7856C23[] = {
  ABISELECT(96,52),
  ABISELECT(32,20),
  ABISELECT(-48,-28),
  0,
  ABISELECT(16,12),
  ABISELECT(-36,-20),
  0,
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  ABISELECT(96,52),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C27D1Ev,_ZTv0_n44_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C27D0Ev,_ZTv0_n44_N8S7856C27D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C27D1Ev,_ZTv0_n44_N8S7856C27D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C27D0Ev,_ZTv0_n44_N8S7856C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__A1__8S7856C27__8S7856C23[] = {
  ABISELECT(48,24),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(-96,-56),
  0,
  ABISELECT(-232,-128),
  ABISELECT(-232,-128),
  ABISELECT(-48,-28),
  ABISELECT(-84,-48),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C27D1Ev,_ZTv0_n44_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C27D0Ev,_ZTv0_n44_N8S7856C27D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C27__8S7856C23[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(144,80),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C27D1Ev,_ZTv0_n32_N8S7856C27D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C27D0Ev,_ZTv0_n32_N8S7856C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C27__8S7856C23[] = {
  ABISELECT(80,40),
  ABISELECT(-52,-32),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-200,-112),
  ABISELECT(-200,-112),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C27D1Ev,_ZTv0_n32_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C27D0Ev,_ZTv0_n32_N8S7856C27D0Ev),
};
extern void ABISELECT(_ZThn16_N8S7856C27D1Ev,_ZThn8_N8S7856C27D1Ev)();
extern void ABISELECT(_ZThn16_N8S7856C27D0Ev,_ZThn8_N8S7856C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C28__8S7856C27__8S7856C23[] = {
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-296,-160),
  ABISELECT(-80,-40),
  ABISELECT(-112,-60),
  ABISELECT(-144,-76),
  ABISELECT(-96,-48),
  ABISELECT(32,16),
  ABISELECT(-160,-88),
  ABISELECT(-148,-80),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-296,-160),
  ABISELECT(-296,-160),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S7856C27D1Ev,_ZThn8_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S7856C27D0Ev,_ZThn8_N8S7856C27D0Ev),
};
extern void ABISELECT(_ZTv0_n128_N8S7856C27D1Ev,_ZTv0_n64_N8S7856C27D1Ev)();
extern void ABISELECT(_ZThn48_N8S7856C27D1Ev,_ZThn24_N8S7856C27D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S7856C27D0Ev,_ZTv0_n64_N8S7856C27D0Ev)();
extern void ABISELECT(_ZThn48_N8S7856C27D0Ev,_ZThn24_N8S7856C27D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C29__8S7856C27__8S7856C23[] = {
  ABISELECT(-48,-24),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-328,-176),
  ABISELECT(-112,-56),
  ABISELECT(-192,-104),
  ABISELECT(-144,-76),
  ABISELECT(-176,-92),
  ABISELECT(-144,-76),
  ABISELECT(-128,-64),
  ABISELECT(-180,-96),
  ABISELECT(-144,-76),
  ABISELECT(-328,-176),
  ABISELECT(-328,-176),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C27D1Ev,_ZTv0_n64_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C27D0Ev,_ZTv0_n64_N8S7856C27D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S7856C27D1Ev,_ZTv0_n60_N8S7856C27D1Ev)();
extern void ABISELECT(_ZTv0_n120_N8S7856C27D0Ev,_ZTv0_n60_N8S7856C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__8S7856C27__8S7856C23[] = {
  ABISELECT(128,68),
  ABISELECT(80,44),
  ABISELECT(80,44),
  ABISELECT(-152,-84),
  ABISELECT(-16,-12),
  ABISELECT(48,28),
  ABISELECT(32,16),
  -4,
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(64,36),
  ABISELECT(-152,-84),
  ABISELECT(-152,-84),
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C27D1Ev,_ZTv0_n60_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C27D0Ev,_ZTv0_n60_N8S7856C27D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C27D1Ev,_ZTv0_n32_N8S7856C27D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C27D0Ev,_ZTv0_n32_N8S7856C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A2__8S7856C27__8S7856C23[] = {
  ABISELECT(64,32),
  ABISELECT(-68,-40),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-216,-120),
  ABISELECT(-216,-120),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C27D1Ev,_ZTv0_n32_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C27D0Ev,_ZTv0_n32_N8S7856C27D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C27__8S7856C23[] = {
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  ABISELECT(-168,-92),
  ABISELECT(-168,-92),
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
};
extern void ABISELECT(_ZThn32_N8S7856C27D1Ev,_ZThn16_N8S7856C27D1Ev)();
extern void ABISELECT(_ZThn32_N8S7856C27D0Ev,_ZThn16_N8S7856C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C218S7856C28__8S7856C27__8S7856C23[] = {
  ABISELECT(-164,-88),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S7856C27D1Ev,_ZThn16_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S7856C27D0Ev,_ZThn16_N8S7856C27D0Ev),
};
extern void _ZN8S7856C29D1Ev();
extern void _ZN8S7856C29D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C29__8S7856C23[] = {
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-328,-176),
  ABISELECT(-112,-56),
  ABISELECT(-192,-104),
  ABISELECT(-144,-76),
  ABISELECT(-176,-92),
  ABISELECT(-144,-76),
  ABISELECT(-128,-64),
  ABISELECT(-180,-96),
  ABISELECT(-144,-76),
  ABISELECT(-328,-176),
  ABISELECT(-328,-176),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&_ZN8S7856C29D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C29D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N8S7856C29D1Ev,_ZTv0_n32_N8S7856C29D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C29D0Ev,_ZTv0_n32_N8S7856C29D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C29__8S7856C23[] = {
  ABISELECT(128,64),
  ABISELECT(-52,-32),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-200,-112),
  ABISELECT(-200,-112),
  ABISELECT(128,64),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C29D1Ev,_ZTv0_n32_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C29D0Ev,_ZTv0_n32_N8S7856C29D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C29D1Ev,_ZTv0_n44_N8S7856C29D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C29D0Ev,_ZTv0_n44_N8S7856C29D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C29__8S7856C23[] = {
  ABISELECT(144,76),
  ABISELECT(32,20),
  ABISELECT(-48,-28),
  0,
  ABISELECT(16,12),
  ABISELECT(-36,-20),
  0,
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C29D1Ev,_ZTv0_n44_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C29D0Ev,_ZTv0_n44_N8S7856C29D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S7856C29D1Ev,_ZTv0_n60_N8S7856C29D1Ev)();
extern void ABISELECT(_ZTv0_n120_N8S7856C29D0Ev,_ZTv0_n60_N8S7856C29D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__8S7856C29__8S7856C23[] = {
  ABISELECT(176,92),
  ABISELECT(80,44),
  ABISELECT(80,44),
  ABISELECT(-152,-84),
  ABISELECT(-16,-12),
  ABISELECT(48,28),
  ABISELECT(32,16),
  -4,
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(64,36),
  ABISELECT(-152,-84),
  ABISELECT(-152,-84),
  ABISELECT(176,92),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C29D1Ev,_ZTv0_n60_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C29D0Ev,_ZTv0_n60_N8S7856C29D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C29__8S7856C23[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(192,104),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C29D1Ev,_ZTv0_n32_N8S7856C29D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C29D0Ev,_ZTv0_n32_N8S7856C29D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__8S7856C29__8S7856C23[] = {
  ABISELECT(112,56),
  ABISELECT(-68,-40),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-216,-120),
  ABISELECT(-216,-120),
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C29D1Ev,_ZTv0_n32_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C29D0Ev,_ZTv0_n32_N8S7856C29D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C29D1Ev,_ZTv0_n44_N8S7856C29D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C29D0Ev,_ZTv0_n44_N8S7856C29D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C29__8S7856C23[] = {
  ABISELECT(96,48),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(-96,-56),
  0,
  ABISELECT(-232,-128),
  ABISELECT(-232,-128),
  ABISELECT(-48,-28),
  ABISELECT(-84,-48),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C29D1Ev,_ZTv0_n44_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C29D0Ev,_ZTv0_n44_N8S7856C29D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C29__8S7856C23[] = {
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  ABISELECT(-168,-92),
  ABISELECT(-168,-92),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
};
extern void _ZN8S7856C22D1Ev();
extern void _ZN8S7856C22D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C22__8S7856C23[] = {
  ABISELECT(-88,-44),
  ABISELECT(-184,-96),
  ABISELECT(40,20),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(-336,-180),
  ABISELECT(-120,-60),
  ABISELECT(-200,-108),
  ABISELECT(-152,-80),
  ABISELECT(-136,-68),
  ABISELECT(-152,-80),
  ABISELECT(-188,-100),
  ABISELECT(-152,-80),
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&_ZN8S7856C22D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C22D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C22__A5__8S7856C23[] = {
  ABISELECT(-188,-100),
  ABISELECT(-152,-80),
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C22__A5__8S7856C23[] = {
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  ABISELECT(152,80),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void _ZN7S7856C5D1Ev();
extern void _ZN7S7856C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C58S7856C22__A2__8S7856C23[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  ABISELECT(-344,-184),
  ABISELECT(-208,-112),
  ABISELECT(-144,-72),
  ABISELECT(-160,-84),
  ABISELECT(-196,-104),
  ABISELECT(-160,-84),
  ABISELECT(-160,-84),
  ABISELECT(-128,-64),
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&_ZN7S7856C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C5D0Ev,
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C187S7856C58S7856C22__A3__8S7856C23[] = {
  ABISELECT(-196,-104),
  ABISELECT(-160,-84),
  ABISELECT(-160,-84),
  ABISELECT(-128,-64),
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C187S7856C58S7856C22__A4__8S7856C23[] = {
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C187S7856C58S7856C22__A10__8S7856C23[] = {
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C58S7856C22__A6__8S7856C23[] = {
  ABISELECT(-212,-112),
  ABISELECT(-176,-92),
  ABISELECT(-360,-192),
  ABISELECT(-360,-192),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C187S7856C58S7856C22__A6__8S7856C23[] = {
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  ABISELECT(176,92),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C187S7856C58S7856C22__A3__8S7856C23[] = {
  ABISELECT(128,64),
  ABISELECT(-68,-40),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-216,-120),
  ABISELECT(-216,-120),
  ABISELECT(128,64),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C187S7856C58S7856C22__A3__8S7856C23[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C187S7856C58S7856C22__A3__8S7856C23[] = {
  ABISELECT(-212,-112),
  ABISELECT(-176,-92),
  ABISELECT(-360,-192),
  ABISELECT(-360,-192),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C58S7856C22__A2__8S7856C23[] = {
  ABISELECT(160,84),
  ABISELECT(32,20),
  ABISELECT(-48,-28),
  0,
  ABISELECT(16,12),
  ABISELECT(-36,-20),
  0,
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C58S7856C22__A2__8S7856C23[] = {
  ABISELECT(144,72),
  ABISELECT(-52,-32),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-200,-112),
  ABISELECT(-200,-112),
  ABISELECT(144,72),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C58S7856C22__A2__8S7856C23[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(208,112),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C58S7856C22__A2__8S7856C23[] = {
  ABISELECT(128,64),
  ABISELECT(-68,-40),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-216,-120),
  ABISELECT(-216,-120),
  ABISELECT(128,64),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C58S7856C22__A2__8S7856C23[] = {
  ABISELECT(112,56),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(-96,-56),
  0,
  ABISELECT(-232,-128),
  ABISELECT(-232,-128),
  ABISELECT(-48,-28),
  ABISELECT(-84,-48),
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__7S7856C58S7856C22__A2__8S7856C23[] = {
  ABISELECT(-212,-112),
  ABISELECT(-176,-92),
  ABISELECT(-360,-192),
  ABISELECT(-360,-192),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C22__8S7856C23[] = {
  ABISELECT(152,80),
  ABISELECT(32,20),
  ABISELECT(-48,-28),
  0,
  ABISELECT(16,12),
  ABISELECT(-36,-20),
  0,
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  ABISELECT(152,80),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C22__8S7856C23[] = {
  ABISELECT(136,68),
  ABISELECT(-52,-32),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-200,-112),
  ABISELECT(-200,-112),
  ABISELECT(136,68),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C22__8S7856C23[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(200,108),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__8S7856C22__8S7856C23[] = {
  ABISELECT(120,60),
  ABISELECT(-68,-40),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-216,-120),
  ABISELECT(-216,-120),
  ABISELECT(120,60),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev),
};
extern void ABISELECT(_ZThn8_N8S7856C22D1Ev,_ZThn4_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn8_N8S7856C22D0Ev,_ZThn4_N8S7856C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__A__8S7856C22__8S7856C23[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  ABISELECT(-344,-184),
  ABISELECT(-208,-112),
  ABISELECT(-144,-72),
  ABISELECT(-160,-84),
  ABISELECT(-196,-104),
  ABISELECT(-160,-84),
  ABISELECT(-160,-84),
  ABISELECT(-128,-64),
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7856C22D1Ev,_ZThn4_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7856C22D0Ev,_ZThn4_N8S7856C22D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C22__8S7856C23[] = {
  ABISELECT(104,52),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(-96,-56),
  0,
  ABISELECT(-232,-128),
  ABISELECT(-232,-128),
  ABISELECT(-48,-28),
  ABISELECT(-84,-48),
  ABISELECT(104,52),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A2__8S7856C22__8S7856C23[] = {
  ABISELECT(-212,-112),
  ABISELECT(-176,-92),
  ABISELECT(-360,-192),
  ABISELECT(-360,-192),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
};
extern void ABISELECT(_ZTv0_n136_N8S7856C22D1Ev,_ZTv0_n68_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn40_N8S7856C22D1Ev,_ZThn20_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N8S7856C22D0Ev,_ZTv0_n68_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn40_N8S7856C22D0Ev,_ZThn20_N8S7856C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C4__8S7856C22__8S7856C23[] = {
  ABISELECT(8,4),
  ABISELECT(-40,-20),
  ABISELECT(-128,-64),
  ABISELECT(-144,-72),
  ABISELECT(-144,-72),
  ABISELECT(-376,-200),
  ABISELECT(-160,-80),
  ABISELECT(-240,-128),
  ABISELECT(-192,-100),
  ABISELECT(-176,-88),
  ABISELECT(-192,-100),
  ABISELECT(-224,-116),
  ABISELECT(-228,-120),
  ABISELECT(-192,-100),
  ABISELECT(-376,-200),
  ABISELECT(-376,-200),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S7856C22D1Ev,_ZTv0_n68_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S7856C22D0Ev,_ZTv0_n68_N8S7856C22D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S7856C22D1Ev,_ZTv0_n60_N8S7856C22D1Ev)();
extern void ABISELECT(_ZTv0_n120_N8S7856C22D0Ev,_ZTv0_n60_N8S7856C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__A1__8S7856C22__8S7856C23[] = {
  ABISELECT(184,96),
  ABISELECT(80,44),
  ABISELECT(80,44),
  ABISELECT(-152,-84),
  ABISELECT(-16,-12),
  ABISELECT(48,28),
  ABISELECT(32,16),
  -4,
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(64,36),
  ABISELECT(-152,-84),
  ABISELECT(-152,-84),
  ABISELECT(184,96),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C22D1Ev,_ZTv0_n60_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C22D0Ev,_ZTv0_n60_N8S7856C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A3__8S7856C22__8S7856C23[] = {
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  ABISELECT(-168,-92),
  ABISELECT(-168,-92),
  ABISELECT(168,88),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
};
extern void ABISELECT(_ZTvn8_n136_N8S7856C22D1Ev,_ZTvn4_n68_N8S7856C22D1Ev)();
extern void ABISELECT(_ZTvn8_n136_N8S7856C22D0Ev,_ZTvn4_n68_N8S7856C22D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C197S7856C4__8S7856C22__8S7856C23[] = {
  ABISELECT(-136,-68),
  ABISELECT(-168,-84),
  ABISELECT(-248,-132),
  ABISELECT(-200,-104),
  ABISELECT(-184,-92),
  ABISELECT(-236,-124),
  ABISELECT(-200,-104),
  ABISELECT(-384,-204),
  ABISELECT(-384,-204),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N8S7856C22D1Ev,_ZTvn4_n68_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N8S7856C22D0Ev,_ZTvn4_n68_N8S7856C22D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N8S7856C22D1Ev,_ZTv0_n36_N8S7856C22D1Ev)();
extern void ABISELECT(_ZTv0_n72_N8S7856C22D0Ev,_ZTv0_n36_N8S7856C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C18__A2__8S7856C22__8S7856C23[] = {
  ABISELECT(88,44),
  ABISELECT(-100,-56),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-32,-16),
  ABISELECT(-248,-136),
  ABISELECT(-248,-136),
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C22D1Ev,_ZTv0_n36_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C22D0Ev,_ZTv0_n36_N8S7856C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A5__8S7856C22__8S7856C23[] = {
  ABISELECT(-116,-64),
  ABISELECT(-80,-44),
  ABISELECT(-264,-144),
  ABISELECT(-264,-144),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
};
extern void _ZN7S7856C4D1Ev();
extern void _ZN7S7856C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C4__A1__8S7856C23[] = {
  ABISELECT(-128,-64),
  ABISELECT(-144,-72),
  ABISELECT(-144,-72),
  ABISELECT(-376,-200),
  ABISELECT(-160,-80),
  ABISELECT(-240,-128),
  ABISELECT(-192,-100),
  ABISELECT(-176,-88),
  ABISELECT(-192,-100),
  ABISELECT(-224,-116),
  ABISELECT(-228,-120),
  ABISELECT(-192,-100),
  ABISELECT(-376,-200),
  ABISELECT(-376,-200),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&_ZN7S7856C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C4D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C107S7856C4__A7__8S7856C23[] = {
  ABISELECT(-228,-120),
  ABISELECT(-192,-100),
  ABISELECT(-376,-200),
  ABISELECT(-376,-200),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C107S7856C4__A7__8S7856C23[] = {
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void _ZN8S7856C19D1Ev();
extern void _ZN8S7856C19D0Ev();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C197S7856C4__A1__8S7856C23[] = {
  ABISELECT(-136,-68),
  ABISELECT(-168,-84),
  ABISELECT(-248,-132),
  ABISELECT(-200,-104),
  ABISELECT(-184,-92),
  ABISELECT(-236,-124),
  ABISELECT(-200,-104),
  ABISELECT(-384,-204),
  ABISELECT(-384,-204),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&_ZN8S7856C19D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C19D0Ev,
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void _ZN7S7856C6D1Ev();
extern void _ZN7S7856C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C68S7856C197S7856C4__A2__8S7856C23[] = {
  ABISELECT(-168,-84),
  ABISELECT(-248,-132),
  ABISELECT(-200,-104),
  ABISELECT(-184,-92),
  ABISELECT(-236,-124),
  ABISELECT(-200,-104),
  ABISELECT(-384,-204),
  ABISELECT(-384,-204),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&_ZN7S7856C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C6D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C68S7856C197S7856C4__A2__8S7856C23[] = {
  ABISELECT(184,92),
  ABISELECT(-52,-32),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-200,-112),
  ABISELECT(-200,-112),
  ABISELECT(184,92),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C68S7856C197S7856C4__A2__8S7856C23[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  ABISELECT(200,104),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C68S7856C197S7856C4__A2__8S7856C23[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(248,132),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C68S7856C197S7856C4__A2__8S7856C23[] = {
  ABISELECT(168,84),
  ABISELECT(-68,-40),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-216,-120),
  ABISELECT(-216,-120),
  ABISELECT(168,84),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C197S7856C4__A1__8S7856C23[] = {
  ABISELECT(184,92),
  ABISELECT(-52,-32),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-200,-112),
  ABISELECT(-200,-112),
  ABISELECT(184,92),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C197S7856C4__A1__8S7856C23[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  ABISELECT(200,104),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C197S7856C4__A1__8S7856C23[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(248,132),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__8S7856C197S7856C4__A1__8S7856C23[] = {
  ABISELECT(168,84),
  ABISELECT(-68,-40),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-216,-120),
  ABISELECT(-216,-120),
  ABISELECT(168,84),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev),
};
extern void ABISELECT(_ZTv0_n72_N8S7856C19D1Ev,_ZTv0_n36_N8S7856C19D1Ev)();
extern void ABISELECT(_ZTv0_n72_N8S7856C19D0Ev,_ZTv0_n36_N8S7856C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C18__8S7856C197S7856C4__A1__8S7856C23[] = {
  ABISELECT(136,68),
  ABISELECT(-100,-56),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-32,-16),
  ABISELECT(-248,-136),
  ABISELECT(-248,-136),
  ABISELECT(136,68),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C19D1Ev,_ZTv0_n36_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C19D0Ev,_ZTv0_n36_N8S7856C19D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__8S7856C197S7856C4__A1__8S7856C23[] = {
  ABISELECT(-116,-64),
  ABISELECT(-80,-44),
  ABISELECT(-264,-144),
  ABISELECT(-264,-144),
  ABISELECT(120,60),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
extern void ABISELECT(_ZTv0_n120_N7S7856C4D1Ev,_ZTv0_n60_N7S7856C4D1Ev)();
extern void ABISELECT(_ZTv0_n120_N7S7856C4D0Ev,_ZTv0_n60_N7S7856C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__7S7856C4__A1__8S7856C23[] = {
  ABISELECT(224,116),
  ABISELECT(80,44),
  ABISELECT(80,44),
  ABISELECT(-152,-84),
  ABISELECT(-16,-12),
  ABISELECT(48,28),
  ABISELECT(32,16),
  -4,
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(64,36),
  ABISELECT(-152,-84),
  ABISELECT(-152,-84),
  ABISELECT(224,116),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C4D1Ev,_ZTv0_n60_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C4D0Ev,_ZTv0_n60_N7S7856C4D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C4__A1__8S7856C23[] = {
  ABISELECT(192,100),
  ABISELECT(32,20),
  ABISELECT(-48,-28),
  0,
  ABISELECT(16,12),
  ABISELECT(-36,-20),
  0,
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C4__A1__8S7856C23[] = {
  ABISELECT(176,88),
  ABISELECT(-52,-32),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-200,-112),
  ABISELECT(-200,-112),
  ABISELECT(176,88),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C4__A1__8S7856C23[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(240,128),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C4__A1__8S7856C23[] = {
  ABISELECT(160,80),
  ABISELECT(-68,-40),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-216,-120),
  ABISELECT(-216,-120),
  ABISELECT(160,80),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C4__A1__8S7856C23[] = {
  ABISELECT(144,72),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(-96,-56),
  0,
  ABISELECT(-232,-128),
  ABISELECT(-232,-128),
  ABISELECT(-48,-28),
  ABISELECT(-84,-48),
  ABISELECT(144,72),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__7S7856C4__A1__8S7856C23[] = {
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  ABISELECT(-168,-92),
  ABISELECT(-168,-92),
  ABISELECT(208,108),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
extern void ABISELECT(_ZThn8_N7S7856C4D1Ev,_ZThn4_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn8_N7S7856C4D0Ev,_ZThn4_N7S7856C4D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C19__7S7856C4__A1__8S7856C23[] = {
  ABISELECT(-136,-68),
  ABISELECT(-168,-84),
  ABISELECT(-248,-132),
  ABISELECT(-200,-104),
  ABISELECT(-184,-92),
  ABISELECT(-236,-124),
  ABISELECT(-200,-104),
  ABISELECT(-384,-204),
  ABISELECT(-384,-204),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7856C4D1Ev,_ZThn4_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7856C4D0Ev,_ZThn4_N7S7856C4D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N7S7856C4D1Ev,_ZTv0_n36_N7S7856C4D1Ev)();
extern void ABISELECT(_ZTv0_n72_N7S7856C4D0Ev,_ZTv0_n36_N7S7856C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C18__A1__7S7856C4__A1__8S7856C23[] = {
  ABISELECT(128,64),
  ABISELECT(-100,-56),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-32,-16),
  ABISELECT(-248,-136),
  ABISELECT(-248,-136),
  ABISELECT(128,64),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7856C4D1Ev,_ZTv0_n36_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7856C4D0Ev,_ZTv0_n36_N7S7856C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A3__7S7856C4__A1__8S7856C23[] = {
  ABISELECT(-116,-64),
  ABISELECT(-80,-44),
  ABISELECT(-264,-144),
  ABISELECT(-264,-144),
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
static  VTT_ENTRY vtt_S7856C23[] = {
  {&(_ZTV8S7856C23[21]),  21,316},
  {&(_tg__ZTV8S7856C25__8S7856C23[19]),  19,21},
  {&(_tg__ZTV8S7856C138S7856C25__8S7856C23[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C138S7856C25__A1__8S7856C23[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C138S7856C25__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C138S7856C25__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C268S7856C25__8S7856C23[3]),  3,3},
  {&(_tg__ZTV7S7856C48S7856C25__8S7856C23[16]),  16,18},
  {&(_tg__ZTV8S7856C107S7856C48S7856C25__A2__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C107S7856C48S7856C25__A2__8S7856C23[4]),  4,4},
  {&(_tg__ZTV8S7856C197S7856C48S7856C25__8S7856C23[11]),  11,14},
  {&(_tg__ZTV7S7856C68S7856C197S7856C48S7856C25__A1__8S7856C23[10]),  10,12},
  {&(_tg__ZTV7S7856C7__7S7856C68S7856C197S7856C48S7856C25__A1__8S7856C23[8]),  8,10},
  {&(_tg__ZTV8S7856C10__7S7856C68S7856C197S7856C48S7856C25__A1__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C68S7856C197S7856C48S7856C25__A1__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C14__7S7856C68S7856C197S7856C48S7856C25__A1__8S7856C23[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C68S7856C197S7856C48S7856C25__A1__8S7856C23[8]),  8,10},
  {&(_tg__ZTV7S7856C7__8S7856C197S7856C48S7856C25__8S7856C23[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C197S7856C48S7856C25__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C197S7856C48S7856C25__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C14__8S7856C197S7856C48S7856C25__8S7856C23[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__8S7856C197S7856C48S7856C25__8S7856C23[8]),  8,10},
  {&(_tg__ZTV8S7856C18__8S7856C197S7856C48S7856C25__8S7856C23[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A1__8S7856C197S7856C48S7856C25__8S7856C23[6]),  6,6},
  {&(_tg__ZTV7S7856C5__7S7856C48S7856C25__8S7856C23[15]),  15,17},
  {&(_tg__ZTV7S7856C6__7S7856C48S7856C25__8S7856C23[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C48S7856C25__8S7856C23[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C48S7856C25__8S7856C23[11]),  11,13},
  {&(_tg__ZTV7S7856C6__7S7856C48S7856C25__8S7856C23[11]),  11,13},
  {&(_tg__ZTV8S7856C14__7S7856C48S7856C25__8S7856C23[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C48S7856C25__8S7856C23[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C48S7856C25__8S7856C23[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C48S7856C25__8S7856C23[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__7S7856C48S7856C25__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C19__7S7856C48S7856C25__8S7856C23[11]),  11,14},
  {&(_tg__ZTV8S7856C18__A1__7S7856C48S7856C25__8S7856C23[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A3__7S7856C48S7856C25__8S7856C23[6]),  6,6},
  {&(_tg__ZTV7S7856C58S7856C25__A1__8S7856C23[14]),  14,16},
  {&(_tg__ZTV8S7856C187S7856C58S7856C25__A2__8S7856C23[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C187S7856C58S7856C25__A3__8S7856C23[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C187S7856C58S7856C25__A8__8S7856C23[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C187S7856C58S7856C25__A4__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C187S7856C58S7856C25__A4__8S7856C23[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C187S7856C58S7856C25__A2__8S7856C23[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C58S7856C25__A2__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C58S7856C25__A2__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C10__A__8S7856C187S7856C58S7856C25__A2__8S7856C23[6]),  6,6},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C25__A1__8S7856C23[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C58S7856C25__A1__8S7856C23[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C25__A1__8S7856C23[11]),  11,13},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C25__A1__8S7856C23[11]),  11,13},
  {&(_tg__ZTV8S7856C14__7S7856C58S7856C25__A1__8S7856C23[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C58S7856C25__A1__8S7856C23[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C58S7856C25__A1__8S7856C23[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C58S7856C25__A1__8S7856C23[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C18__A1__7S7856C58S7856C25__A1__8S7856C23[6]),  6,6},
  {&(_tg__ZTV7S7856C6__8S7856C25__8S7856C23[11]),  11,13},
  {&(_tg__ZTV7S7856C6__8S7856C25__8S7856C23[11]),  11,13},
  {&(_tg__ZTV8S7856C26__8S7856C25__8S7856C23[3]),  3,3},
  {&(_tg__ZTV7S7856C4__8S7856C25__8S7856C23[16]),  16,18},
  {&(_tg__ZTV7S7856C5__8S7856C25__8S7856C23[15]),  15,17},
  {&(_tg__ZTV7S7856C6__8S7856C25__8S7856C23[11]),  11,13},
  {&(_tg__ZTV7S7856C7__8S7856C25__8S7856C23[8]),  8,10},
  {&(_tg__ZTV8S7856C14__8S7856C25__8S7856C23[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A2__8S7856C25__8S7856C23[8]),  8,10},
  {&(_tg__ZTV8S7856C16__8S7856C25__8S7856C23[11]),  11,13},
  {&(_tg__ZTV8S7856C16__8S7856C25__8S7856C23[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C25__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C197S7856C4__8S7856C25__8S7856C23[11]),  11,14},
  {&(_tg__ZTV8S7856C18__A1__8S7856C25__8S7856C23[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A3__8S7856C25__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C27__8S7856C25__8S7856C23[18]),  18,20},
  {&(_tg__ZTV8S7856C288S7856C27__8S7856C25__8S7856C23[16]),  16,18},
  {&(_tg__ZTV8S7856C29__8S7856C25__8S7856C23[16]),  16,18},
  {&(_tg__ZTV8S7856C218S7856C288S7856C27__8S7856C25__8S7856C23[3]),  3,5},
  {&(_tg__ZTV7S7856C5__A__8S7856C25__8S7856C23[14]),  14,16},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A4__8S7856C25__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C13__A__8S7856C23[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C13__A9__8S7856C23[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C13__A__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C13__A__8S7856C23[6]),  6,6},
  {&(_ZTV8S7856C23[93]),  93,316},
  {&(_ZTV8S7856C23[127]),  127,316},
  {&(_ZTV8S7856C23[127]),  127,316},
  {&(_ZTV8S7856C23[26]),  26,316},
  {&(_ZTV8S7856C23[42]),  42,316},
  {&(_ZTV8S7856C23[108]),  108,316},
  {&(_ZTV8S7856C23[127]),  127,316},
  {&(_ZTV8S7856C23[137]),  137,316},
  {&(_ZTV8S7856C23[147]),  147,316},
  {&(_ZTV8S7856C23[160]),  160,316},
  {&(_ZTV8S7856C23[160]),  160,316},
  {&(_ZTV8S7856C23[116]),  116,316},
  {&(_ZTV8S7856C23[55]),  55,316},
  {&(_ZTV8S7856C23[171]),  171,316},
  {&(_ZTV8S7856C23[179]),  179,316},
  {&(_ZTV8S7856C23[197]),  197,316},
  {&(_ZTV8S7856C23[215]),  215,316},
  {&(_ZTV8S7856C23[238]),  238,316},
  {&(_ZTV8S7856C23[220]),  220,316},
  {&(_ZTV8S7856C23[72]),  72,316},
  {&(_ZTV8S7856C23[80]),  80,316},
  {&(_ZTV8S7856C23[87]),  87,316},
  {&(_ZTV8S7856C23[258]),  258,316},
  {&(_ZTV8S7856C23[274]),  274,316},
  {&(_ZTV8S7856C23[282]),  282,316},
  {&(_ZTV8S7856C23[300]),  300,316},
  {&(_ZTV8S7856C23[313]),  313,316},
  {&(_tg__ZTV8S7856C14__8S7856C23[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C14__8S7856C23[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C11__A2__8S7856C23[4]),  4,4},
  {&(_tg__ZTV7S7856C5__8S7856C23[14]),  14,16},
  {&(_tg__ZTV8S7856C187S7856C5__8S7856C23[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C187S7856C5__A1__8S7856C23[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C187S7856C5__A5__8S7856C23[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C187S7856C5__A1__8S7856C23[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C187S7856C5__8S7856C23[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C5__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C5__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C10__A__8S7856C187S7856C5__8S7856C23[6]),  6,6},
  {&(_tg__ZTV7S7856C6__7S7856C5__8S7856C23[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C5__8S7856C23[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C5__8S7856C23[11]),  11,13},
  {&(_tg__ZTV7S7856C6__7S7856C5__8S7856C23[11]),  11,13},
  {&(_tg__ZTV8S7856C14__7S7856C5__8S7856C23[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C5__8S7856C23[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C5__8S7856C23[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C5__8S7856C23[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C18__A1__7S7856C5__8S7856C23[6]),  6,6},
  {&(_tg__ZTV7S7856C6__8S7856C23[10]),  10,12},
  {&(_tg__ZTV7S7856C7__7S7856C6__8S7856C23[8]),  8,10},
  {&(_tg__ZTV7S7856C6__8S7856C23[10]),  10,12},
  {&(_tg__ZTV7S7856C6__8S7856C23[10]),  10,12},
  {&(_tg__ZTV8S7856C14__7S7856C6__8S7856C23[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C6__8S7856C23[8]),  8,10},
  {&(_tg__ZTV7S7856C7__8S7856C23[7]),  7,9},
  {&(_tg__ZTV8S7856C137S7856C7__A1__8S7856C23[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C137S7856C7__A3__8S7856C23[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C7__A1__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C7__A1__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C7__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C7__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C13__A2__8S7856C23[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C13__A4__8S7856C23[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C13__A2__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C13__A2__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C16__8S7856C23[10]),  10,12},
  {&(_tg__ZTV8S7856C10__8S7856C16__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C16__8S7856C23[10]),  10,12},
  {&(_tg__ZTV8S7856C14__8S7856C16__8S7856C23[4]),  4,4},
  {&(_tg__ZTV7S7856C7__8S7856C16__8S7856C23[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C16__8S7856C23[6]),  6,6},
  {&(_tg__ZTV11S7856C17_nt__8S7856C23[3]),  3,3},
  {&(_tg__ZTV8S7856C18__A1__8S7856C23[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C18__A2__8S7856C23[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C18__A6__8S7856C23[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C18__A3__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C18__A3__8S7856C23[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C18__A1__8S7856C23[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C18__A1__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C18__A1__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C10__A__8S7856C18__A1__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C27__8S7856C23[17]),  17,19},
  {&(_tg__ZTV8S7856C168S7856C27__A1__8S7856C23[10]),  10,12},
  {&(_tg__ZTV8S7856C10__8S7856C168S7856C27__A1__8S7856C23[6]),  6,6},
  {&(_tg__ZTV11S7856C17_nt__8S7856C168S7856C27__A1__8S7856C23[3]),  3,3},
  {&(_tg__ZTV8S7856C14__8S7856C168S7856C27__A1__8S7856C23[4]),  4,4},
  {&(_tg__ZTV7S7856C7__8S7856C168S7856C27__A1__8S7856C23[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C168S7856C27__A1__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C288S7856C27__8S7856C23[16]),  16,18},
  {&(_tg__ZTV7S7856C78S7856C288S7856C27__A1__8S7856C23[7]),  7,9},
  {&(_tg__ZTV8S7856C137S7856C78S7856C288S7856C27__A3__8S7856C23[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C137S7856C78S7856C288S7856C27__A7__8S7856C23[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C78S7856C288S7856C27__A3__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C78S7856C288S7856C27__A3__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C78S7856C288S7856C27__A1__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C78S7856C288S7856C27__A1__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C218S7856C288S7856C27__8S7856C23[3]),  3,5},
  {&(_tg__ZTV11S7856C17_nt8S7856C218S7856C288S7856C27__A1__8S7856C23[3]),  3,3},
  {&(_tg__ZTV7S7856C6__8S7856C288S7856C27__8S7856C23[11]),  11,13},
  {&(_tg__ZTV7S7856C6__8S7856C288S7856C27__8S7856C23[11]),  11,13},
  {&(_tg__ZTV8S7856C14__8S7856C288S7856C27__8S7856C23[4]),  4,4},
  {&(_tg__ZTV8S7856C29__8S7856C288S7856C27__8S7856C23[16]),  16,18},
  {&(_tg__ZTV7S7856C7__A1__8S7856C288S7856C27__8S7856C23[8]),  8,10},
  {&(_tg__ZTV7S7856C5__8S7856C288S7856C27__8S7856C23[15]),  15,17},
  {&(_tg__ZTV7S7856C6__8S7856C288S7856C27__8S7856C23[11]),  11,13},
  {&(_tg__ZTV8S7856C13__A2__8S7856C288S7856C27__8S7856C23[8]),  8,10},
  {&(_tg__ZTV8S7856C16__8S7856C288S7856C27__8S7856C23[11]),  11,13},
  {&(_tg__ZTV8S7856C16__8S7856C288S7856C27__8S7856C23[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C288S7856C27__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C21__8S7856C288S7856C27__8S7856C23[3]),  3,5},
  {&(_tg__ZTV7S7856C6__8S7856C27__8S7856C23[11]),  11,13},
  {&(_tg__ZTV8S7856C16__A1__8S7856C27__8S7856C23[11]),  11,13},
  {&(_tg__ZTV8S7856C14__8S7856C27__8S7856C23[4]),  4,4},
  {&(_tg__ZTV7S7856C7__8S7856C27__8S7856C23[8]),  8,10},
  {&(_tg__ZTV7S7856C6__8S7856C27__8S7856C23[11]),  11,13},
  {&(_tg__ZTV8S7856C28__8S7856C27__8S7856C23[16]),  16,18},
  {&(_tg__ZTV8S7856C29__8S7856C27__8S7856C23[16]),  16,18},
  {&(_tg__ZTV7S7856C5__8S7856C27__8S7856C23[15]),  15,17},
  {&(_tg__ZTV7S7856C6__8S7856C27__8S7856C23[11]),  11,13},
  {&(_tg__ZTV8S7856C13__A2__8S7856C27__8S7856C23[8]),  8,10},
  {&(_tg__ZTV8S7856C16__A1__8S7856C27__8S7856C23[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C27__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C218S7856C28__8S7856C27__8S7856C23[3]),  3,5},
  {&(_tg__ZTV8S7856C29__8S7856C23[15]),  15,17},
  {&(_tg__ZTV7S7856C7__8S7856C29__8S7856C23[8]),  8,10},
  {&(_tg__ZTV7S7856C6__8S7856C29__8S7856C23[11]),  11,13},
  {&(_tg__ZTV7S7856C6__8S7856C29__8S7856C23[11]),  11,13},
  {&(_tg__ZTV7S7856C5__8S7856C29__8S7856C23[15]),  15,17},
  {&(_tg__ZTV7S7856C6__8S7856C29__8S7856C23[11]),  11,13},
  {&(_tg__ZTV8S7856C14__8S7856C29__8S7856C23[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__8S7856C29__8S7856C23[8]),  8,10},
  {&(_tg__ZTV8S7856C16__8S7856C29__8S7856C23[11]),  11,13},
  {&(_tg__ZTV8S7856C16__8S7856C29__8S7856C23[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C29__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C22__8S7856C23[17]),  17,19},
  {&(_tg__ZTV8S7856C108S7856C22__A5__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C22__A5__8S7856C23[4]),  4,4},
  {&(_tg__ZTV7S7856C58S7856C22__A2__8S7856C23[14]),  14,16},
  {&(_tg__ZTV8S7856C187S7856C58S7856C22__A3__8S7856C23[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C187S7856C58S7856C22__A4__8S7856C23[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C187S7856C58S7856C22__A10__8S7856C23[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C187S7856C58S7856C22__A6__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C187S7856C58S7856C22__A6__8S7856C23[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C187S7856C58S7856C22__A3__8S7856C23[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C58S7856C22__A3__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C58S7856C22__A3__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C10__A__8S7856C187S7856C58S7856C22__A3__8S7856C23[6]),  6,6},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C22__A2__8S7856C23[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C58S7856C22__A2__8S7856C23[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C22__A2__8S7856C23[11]),  11,13},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C22__A2__8S7856C23[11]),  11,13},
  {&(_tg__ZTV8S7856C14__7S7856C58S7856C22__A2__8S7856C23[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C58S7856C22__A2__8S7856C23[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C58S7856C22__A2__8S7856C23[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C58S7856C22__A2__8S7856C23[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C18__A1__7S7856C58S7856C22__A2__8S7856C23[6]),  6,6},
  {&(_tg__ZTV7S7856C6__8S7856C22__8S7856C23[11]),  11,13},
  {&(_tg__ZTV7S7856C6__8S7856C22__8S7856C23[11]),  11,13},
  {&(_tg__ZTV7S7856C7__8S7856C22__8S7856C23[8]),  8,10},
  {&(_tg__ZTV7S7856C6__8S7856C22__8S7856C23[11]),  11,13},
  {&(_tg__ZTV8S7856C14__8S7856C22__8S7856C23[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__8S7856C22__8S7856C23[8]),  8,10},
  {&(_tg__ZTV7S7856C5__A__8S7856C22__8S7856C23[14]),  14,16},
  {&(_tg__ZTV8S7856C16__8S7856C22__8S7856C23[11]),  11,13},
  {&(_tg__ZTV8S7856C16__8S7856C22__8S7856C23[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A2__8S7856C22__8S7856C23[6]),  6,6},
  {&(_tg__ZTV7S7856C4__8S7856C22__8S7856C23[18]),  18,20},
  {&(_tg__ZTV7S7856C5__A1__8S7856C22__8S7856C23[15]),  15,17},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A3__8S7856C22__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C197S7856C4__8S7856C22__8S7856C23[11]),  11,14},
  {&(_tg__ZTV8S7856C18__A2__8S7856C22__8S7856C23[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A5__8S7856C22__8S7856C23[6]),  6,6},
  {&(_tg__ZTV7S7856C4__A1__8S7856C23[16]),  16,18},
  {&(_tg__ZTV8S7856C107S7856C4__A7__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C107S7856C4__A7__8S7856C23[4]),  4,4},
  {&(_tg__ZTV8S7856C197S7856C4__A1__8S7856C23[11]),  11,14},
  {&(_tg__ZTV7S7856C68S7856C197S7856C4__A2__8S7856C23[10]),  10,12},
  {&(_tg__ZTV7S7856C7__7S7856C68S7856C197S7856C4__A2__8S7856C23[8]),  8,10},
  {&(_tg__ZTV8S7856C10__7S7856C68S7856C197S7856C4__A2__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C68S7856C197S7856C4__A2__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C14__7S7856C68S7856C197S7856C4__A2__8S7856C23[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C68S7856C197S7856C4__A2__8S7856C23[8]),  8,10},
  {&(_tg__ZTV7S7856C7__8S7856C197S7856C4__A1__8S7856C23[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C197S7856C4__A1__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C197S7856C4__A1__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C14__8S7856C197S7856C4__A1__8S7856C23[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__8S7856C197S7856C4__A1__8S7856C23[8]),  8,10},
  {&(_tg__ZTV8S7856C18__8S7856C197S7856C4__A1__8S7856C23[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A1__8S7856C197S7856C4__A1__8S7856C23[6]),  6,6},
  {&(_tg__ZTV7S7856C5__7S7856C4__A1__8S7856C23[15]),  15,17},
  {&(_tg__ZTV7S7856C6__7S7856C4__A1__8S7856C23[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C4__A1__8S7856C23[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C4__A1__8S7856C23[11]),  11,13},
  {&(_tg__ZTV7S7856C6__7S7856C4__A1__8S7856C23[11]),  11,13},
  {&(_tg__ZTV8S7856C14__7S7856C4__A1__8S7856C23[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C4__A1__8S7856C23[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C4__A1__8S7856C23[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C4__A1__8S7856C23[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__7S7856C4__A1__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C19__7S7856C4__A1__8S7856C23[11]),  11,14},
  {&(_tg__ZTV8S7856C18__A1__7S7856C4__A1__8S7856C23[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A3__7S7856C4__A1__8S7856C23[6]),  6,6},
};
extern VTBL_ENTRY _ZTI8S7856C23[];
extern  VTBL_ENTRY _ZTV8S7856C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C23[];
static VTBL_ENTRY alt_thunk_names25[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N8S7856C22D0Ev,_ZTv0_n68_N8S7856C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S7856C22D0Ev,_ZThn20_N8S7856C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N8S7856C22D1Ev,_ZTv0_n68_N8S7856C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S7856C22D1Ev,_ZThn20_N8S7856C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7856C27D0Ev,_ZTv0_n64_N8S7856C27D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7856C27D0Ev,_ZThn24_N8S7856C27D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7856C27D1Ev,_ZTv0_n64_N8S7856C27D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7856C27D1Ev,_ZThn24_N8S7856C27D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7856C28D0Ev,_ZTv0_n64_N8S7856C28D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7856C28D0Ev,_ZThn16_N8S7856C28D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7856C28D1Ev,_ZTv0_n64_N8S7856C28D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7856C28D1Ev,_ZThn16_N8S7856C28D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7856C25D0Ev,_ZTv0_n64_N8S7856C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn328_N8S7856C25D0Ev,_ZThn176_N8S7856C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7856C25D1Ev,_ZTv0_n64_N8S7856C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn328_N8S7856C25D1Ev,_ZThn176_N8S7856C25D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N8S7856C25D0Ev,_ZTv0_n72_N8S7856C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S7856C25D0Ev,_ZThn152_N8S7856C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N8S7856C25D1Ev,_ZTv0_n72_N8S7856C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S7856C25D1Ev,_ZThn152_N8S7856C25D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C25D0Ev,_ZTv0_n36_N8S7856C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S7856C25D0Ev,_ZThn136_N8S7856C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C25D1Ev,_ZTv0_n36_N8S7856C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S7856C25D1Ev,_ZThn136_N8S7856C25D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C25D0Ev,_ZTv0_n32_N8S7856C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S7856C25D0Ev,_ZThn120_N8S7856C25D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S7856C25D0Ev,_ZThn112_N8S7856C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C25D1Ev,_ZTv0_n32_N8S7856C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S7856C25D1Ev,_ZThn120_N8S7856C25D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S7856C25D1Ev,_ZThn112_N8S7856C25D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C25D0Ev,_ZTv0_n60_N8S7856C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S7856C25D0Ev,_ZThn84_N8S7856C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C25D1Ev,_ZTv0_n60_N8S7856C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S7856C25D1Ev,_ZThn84_N8S7856C25D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C25D0Ev,_ZTv0_n44_N8S7856C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N8S7856C25D0Ev,_ZThn128_N8S7856C25D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7856C25D0Ev,_ZThn100_N8S7856C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C25D1Ev,_ZTv0_n44_N8S7856C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N8S7856C25D1Ev,_ZThn128_N8S7856C25D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7856C25D1Ev,_ZThn100_N8S7856C25D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7856C5D0Ev,_ZThn36_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C5D0Ev,_ZThn28_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S7856C5D0Ev,_ZThn92_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S7856C5D0Ev,_ZThn84_N7S7856C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7856C5D1Ev,_ZThn36_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C5D1Ev,_ZThn28_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S7856C5D1Ev,_ZThn92_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S7856C5D1Ev,_ZThn84_N7S7856C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7856C5D0Ev,_ZThn44_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7856C5D0Ev,_ZThn16_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S7856C5D0Ev,_ZThn100_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7856C5D0Ev,_ZThn72_N7S7856C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7856C5D1Ev,_ZThn44_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7856C5D1Ev,_ZThn16_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S7856C5D1Ev,_ZThn100_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7856C5D1Ev,_ZThn72_N7S7856C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7856C18D0Ev,_ZThn36_N8S7856C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S7856C18D0Ev,_ZThn92_N8S7856C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7856C18D1Ev,_ZThn36_N8S7856C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S7856C18D1Ev,_ZThn92_N8S7856C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7856C4D0Ev,_ZTv0_n36_N7S7856C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N7S7856C4D0Ev,_ZThn124_N7S7856C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7856C4D1Ev,_ZTv0_n36_N7S7856C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N7S7856C4D1Ev,_ZThn124_N7S7856C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S7856C4D0Ev,_ZThn108_N7S7856C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S7856C4D0Ev,_ZThn100_N7S7856C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S7856C4D1Ev,_ZThn108_N7S7856C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S7856C4D1Ev,_ZThn100_N7S7856C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7856C4D0Ev,_ZThn116_N7S7856C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7856C4D0Ev,_ZThn88_N7S7856C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7856C4D1Ev,_ZThn116_N7S7856C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7856C4D1Ev,_ZThn88_N7S7856C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7856C4D0Ev,_ZTv0_n60_N7S7856C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7856C4D0Ev,_ZThn72_N7S7856C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7856C4D1Ev,_ZTv0_n60_N7S7856C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7856C4D1Ev,_ZThn72_N7S7856C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C19D0Ev,_ZTv0_n36_N8S7856C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S7856C19D0Ev,_ZThn120_N8S7856C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C19D1Ev,_ZTv0_n36_N8S7856C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S7856C19D1Ev,_ZThn120_N8S7856C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7856C19D0Ev,_ZThn104_N8S7856C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S7856C19D0Ev,_ZThn96_N8S7856C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7856C19D1Ev,_ZThn104_N8S7856C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S7856C19D1Ev,_ZThn96_N8S7856C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7856C6D0Ev,_ZThn20_N7S7856C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7856C6D0Ev,_ZThn12_N7S7856C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S7856C6D0Ev,_ZThn104_N7S7856C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S7856C6D0Ev,_ZThn96_N7S7856C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7856C6D1Ev,_ZThn20_N7S7856C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7856C6D1Ev,_ZThn12_N7S7856C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S7856C6D1Ev,_ZThn104_N7S7856C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S7856C6D1Ev,_ZThn96_N7S7856C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N8S7856C23D0Ev,_ZTv0_n68_N8S7856C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn376_N8S7856C23D0Ev,_ZThn200_N8S7856C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N8S7856C23D1Ev,_ZTv0_n68_N8S7856C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn376_N8S7856C23D1Ev,_ZThn200_N8S7856C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7856C23D0Ev,_ZTv0_n64_N8S7856C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn328_N8S7856C23D0Ev,_ZThn176_N8S7856C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7856C23D1Ev,_ZTv0_n64_N8S7856C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn328_N8S7856C23D1Ev,_ZThn176_N8S7856C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N8S7856C23D0Ev,_ZTv0_n72_N8S7856C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S7856C23D0Ev,_ZThn180_N8S7856C23D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S7856C23D0Ev,_ZThn152_N8S7856C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N8S7856C23D1Ev,_ZTv0_n72_N8S7856C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S7856C23D1Ev,_ZThn180_N8S7856C23D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S7856C23D1Ev,_ZThn152_N8S7856C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C23D0Ev,_ZTv0_n36_N8S7856C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S7856C23D0Ev,_ZThn136_N8S7856C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C23D1Ev,_ZTv0_n36_N8S7856C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S7856C23D1Ev,_ZThn136_N8S7856C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C23D0Ev,_ZTv0_n32_N8S7856C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S7856C23D0Ev,_ZThn120_N8S7856C23D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S7856C23D0Ev,_ZThn112_N8S7856C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C23D1Ev,_ZTv0_n32_N8S7856C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S7856C23D1Ev,_ZThn120_N8S7856C23D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S7856C23D1Ev,_ZThn112_N8S7856C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C23D0Ev,_ZTv0_n44_N8S7856C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N8S7856C23D0Ev,_ZThn128_N8S7856C23D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7856C23D0Ev,_ZThn100_N8S7856C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C23D1Ev,_ZTv0_n44_N8S7856C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N8S7856C23D1Ev,_ZThn128_N8S7856C23D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7856C23D1Ev,_ZThn100_N8S7856C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C23D0Ev,_ZTv0_n60_N8S7856C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S7856C23D0Ev,_ZThn84_N8S7856C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C23D1Ev,_ZTv0_n60_N8S7856C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S7856C23D1Ev,_ZThn84_N8S7856C23D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7856C23 = {  "S7856C23", // class name
  bases_S7856C23, 109,
  &(vtc_S7856C23[0]), // expected_vtbl_contents
  &(vtt_S7856C23[0]), // expected_vtt_contents
  ABISELECT(400,216), // object size
  NSPAIRA(_ZTI8S7856C23),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S7856C23),316, //virtual function table var
  21, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7856C23),286, //virtual table table var
  56, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names25,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7856C3  : virtual S7856C4 , virtual S7856C20 , S7856C22 , virtual S7856C23 {
  void *s7856c3f0;
  virtual  ~S7856C3(); // _ZN7S7856C3D2Ev
  S7856C3(); // tgen
};
//SIG(-1 S7856C3) C1{ VBC2{ VBC3{ VBC4{ VBC5{ VBC6{ m} VBC7{ m} VBC8{ BC6 VBC9{ VBC6 BC7 VBC10{ m}} VBC7} BC10 BC11{ BC7 VBC6 VBC10 BC9 VBC8 vd} vd} VBC12{ BC10 BC7 BC9 Fi} VBC11 vd Fi[2]} VBC13{ m} VBC14{ VBC9 VBC15{ VBC7} VBC12 BC10 VBC5 vd Fi} BC16{ VBC11 BC12 BC8 BC10 vd} vd} BC6 BC8 BC17{ BC13 VBC6 BC4 VBC16 vd v1} vd} VBC18{ BC15 VBC10 BC3 BC19{ BC7 BC15 vd} vd} BC20{ BC8 VBC4 BC3 VBC2 vd Fc} VBC21{ VBC12 VBC22{ m} BC23{ BC11 BC24{ VBC7} BC2 VBC25{ BC14 BC26{ BC5 VBC12 VBC27{ VBC5 VBC3 vd} BC19 BC22 Fi} VBC22} BC3} BC11 VBC20 FC11 Fi:26} vd Fp}


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

static void Test_S7856C3()
{
  extern Class_Descriptor cd_S7856C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(63,66)];
    init_test(&cd_S7856C3, buf);
    S7856C3 *dp, &lv = *(dp=new (buf) S7856C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(496,260), "sizeof(S7856C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7856C3)");
    /*is_ambiguous_... S7856C3::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C7*), ABISELECT(129,73), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C11 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*), ABISELECT(129,73), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*)(S7856C7*), ABISELECT(129,73), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(129,73), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C14 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*), ABISELECT(129,73), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*), ABISELECT(129,73), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*), ABISELECT(129,73), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C5 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(129,73), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C4 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C19*)(S7856C4*), ABISELECT(129,73), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C18 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*), ABISELECT(129,73), "S7856C3");
    check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C20*), ABISELECT(129,73), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(129,73), "S7856C3");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*)(S7856C25*)(S7856C23*), ABISELECT(129,73), "S7856C3");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*)(S7856C25*)(S7856C23*), ABISELECT(129,73), "S7856C3");
    /*is_ambiguous_... S7856C19::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C19*)(S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(129,73), "S7856C3");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(129,73), "S7856C3");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(129,73), "S7856C3");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(129,73), "S7856C3");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(129,73), "S7856C3");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*)(S7856C23*), ABISELECT(129,73), "S7856C3");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*)(S7856C23*), ABISELECT(129,73), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(129,73), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C7*), 0, "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*), 0, "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C17_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C17_nt*), 0, "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*)(S7856C5*), 0, "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C4*), 0, "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*), 0, "S7856C3");
    /*is_ambiguous_... S7856C20::S7856C17_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C17_nt*)(S7856C20*), 0, "S7856C3");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C20*), 0, "S7856C3");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C17_nt*)(S7856C21*)(S7856C20*), 0, "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C22*), 0, "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C22*), 0, "S7856C3");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C26*)(S7856C25*)(S7856C23*), 0, "S7856C3");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C4*)(S7856C25*)(S7856C23*), 0, "S7856C3");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C7*)(S7856C28*)(S7856C27*), 0, "S7856C3");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C17_nt*)(S7856C21*)(S7856C28*)(S7856C27*), 0, "S7856C3");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), 0, "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C22*), 0, "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C22*), 0, "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*), ABISELECT(104,56), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*), ABISELECT(104,56), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*), 0, "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*)(S7856C7*), 0, "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*)(S7856C7*), 0, "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*), 0, "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*), 0, "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*), 0, "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), 0, "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*), 0, "S7856C3");
    /*is_ambiguous_... S7856C20::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C20*), 0, "S7856C3");
    check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C20*), 0, "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), 0, "S7856C3");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*)(S7856C25*)(S7856C23*), 0, "S7856C3");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*)(S7856C25*)(S7856C23*), 0, "S7856C3");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), 0, "S7856C3");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), 0, "S7856C3");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), 0, "S7856C3");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*)(S7856C23*), 0, "S7856C3");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*)(S7856C23*), 0, "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), 0, "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*), ABISELECT(104,56), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C16*), ABISELECT(104,56), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(104,56), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C4*), ABISELECT(104,56), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*), ABISELECT(104,56), "S7856C3");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C20*), ABISELECT(104,56), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C22*), ABISELECT(104,56), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(104,56), "S7856C3");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(104,56), "S7856C3");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C16*)(S7856C27*), ABISELECT(104,56), "S7856C3");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(104,56), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C22*), ABISELECT(104,56), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(104,56), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C7*), ABISELECT(104,56), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*)(S7856C7*), ABISELECT(104,56), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*), ABISELECT(104,56), "S7856C3");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*)(S7856C25*)(S7856C23*), ABISELECT(104,56), "S7856C3");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(104,56), "S7856C3");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(104,56), "S7856C3");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*)(S7856C23*), ABISELECT(104,56), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C7*), ABISELECT(120,68), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*)(S7856C7*), ABISELECT(128,72), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(120,68), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(120,68), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C7*), ABISELECT(120,68), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C6 */ AMB_check_base_class_offset(lv, (S7856C7*)(S7856C6*), ABISELECT(120,68), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C7*)(S7856C16*), ABISELECT(120,68), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C7*)(S7856C6*)(S7856C19*)(S7856C4*), ABISELECT(120,68), "S7856C3");
    check_base_class_offset(lv, (S7856C7*)(S7856C6*)(S7856C19*)(S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(120,68), "S7856C3");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C7*)(S7856C16*)(S7856C27*), ABISELECT(120,68), "S7856C3");
    check_base_class_offset(lv, (S7856C7*)(S7856C29*), ABISELECT(120,68), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*), ABISELECT(136,76), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*), ABISELECT(144,80), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*), ABISELECT(136,76), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*), ABISELECT(136,76), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C6 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C6*), ABISELECT(136,76), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C16*), ABISELECT(136,76), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C6*)(S7856C19*)(S7856C4*), ABISELECT(136,76), "S7856C3");
    /*is_ambiguous_... S7856C23::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C23*), ABISELECT(136,76), "S7856C3");
    check_base_class_offset(lv, (S7856C14*)(S7856C6*)(S7856C19*)(S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(136,76), "S7856C3");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C16*)(S7856C27*), ABISELECT(136,76), "S7856C3");
    /*is_ambiguous_... S7856C28::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C28*)(S7856C27*), ABISELECT(136,76), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*), ABISELECT(160,88), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*), ABISELECT(152,84), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*), ABISELECT(152,84), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C6 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C6*), ABISELECT(152,84), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C18*)(S7856C5*), ABISELECT(152,84), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C6*)(S7856C19*)(S7856C4*), ABISELECT(152,84), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C18*), ABISELECT(152,84), "S7856C3");
    check_base_class_offset(lv, (S7856C13*)(S7856C18*)(S7856C5*)(S7856C20*), ABISELECT(152,84), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(152,84), "S7856C3");
    /*is_ambiguous_... S7856C6::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C6*)(S7856C19*)(S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(152,84), "S7856C3");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(152,84), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(152,84), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C6*)(S7856C5*), ABISELECT(104,56), "S7856C3");
    check_base_class_offset(lv, (S7856C6*)(S7856C5*)(S7856C20*), ABISELECT(104,56), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C6*)(S7856C22*), ABISELECT(104,56), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C6*)(S7856C5*)(S7856C22*), ABISELECT(104,56), "S7856C3");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C6*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(104,56), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C6*)(S7856C22*), ABISELECT(104,56), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C6*)(S7856C5*)(S7856C22*), ABISELECT(104,56), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7856C5*), 0, "S7856C3");
    check_base_class_offset(lv, (S7856C15*)(S7856C5*)(S7856C20*), 0, "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7856C5*)(S7856C22*), 0, "S7856C3");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7856C5*)(S7856C25*)(S7856C23*), 0, "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7856C5*)(S7856C22*), 0, "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C17_nt*)(S7856C16*), ABISELECT(168,92), "S7856C3");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C17_nt*)(S7856C16*)(S7856C27*), ABISELECT(168,92), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C16*), ABISELECT(168,92), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C16*)(S7856C5*), ABISELECT(168,92), "S7856C3");
    check_base_class_offset(lv, (S7856C16*)(S7856C5*)(S7856C20*), ABISELECT(168,92), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C16*)(S7856C5*)(S7856C22*), ABISELECT(168,92), "S7856C3");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C16*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(168,92), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C16*)(S7856C5*)(S7856C22*), ABISELECT(168,92), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(72,40), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(80,44), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(72,40), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(72,40), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(72,40), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C5 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(88,48), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(88,48), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*)(S7856C5*), ABISELECT(96,52), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C18*)(S7856C5*), ABISELECT(72,40), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C5*)(S7856C4*), ABISELECT(72,40), "S7856C3");
    check_base_class_offset(lv, (S7856C5*)(S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(72,40), "S7856C3");
    check_base_class_offset(lv, (S7856C5*)(S7856C29*), ABISELECT(72,40), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C4 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C4*), ABISELECT(56,28), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C4 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C4*), ABISELECT(48,24), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C4*), ABISELECT(48,24), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7856C19*)(S7856C4*), ABISELECT(56,28), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C6*)(S7856C19*)(S7856C4*), ABISELECT(56,28), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*), ABISELECT(184,100), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*), ABISELECT(192,104), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*), ABISELECT(184,100), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*), ABISELECT(184,100), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C18*), ABISELECT(184,100), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C18 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*), ABISELECT(200,108), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*), ABISELECT(200,108), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*), ABISELECT(208,112), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C18*)(S7856C19*)(S7856C4*), ABISELECT(184,100), "S7856C3");
    check_base_class_offset(lv, (S7856C18*)(S7856C19*)(S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(184,100), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C19*)(S7856C4*), ABISELECT(56,28), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C4*), ABISELECT(48,24), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C4*)(S7856C22*), ABISELECT(48,24), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C4*)(S7856C22*), ABISELECT(48,24), "S7856C3");
    /*is_ambiguous_... S7856C20::S7856C17_nt */ AMB_check_base_class_offset(lv, (S7856C17_nt*)(S7856C20*), ABISELECT(216,116), "S7856C3");
    /*is_ambiguous_... S7856C14::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C20*), ABISELECT(224,120), "S7856C3");
    /*is_ambiguous_... S7856C14::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C20*), ABISELECT(232,124), "S7856C3");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C20*), ABISELECT(224,120), "S7856C3");
    check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C20*), ABISELECT(224,120), "S7856C3");
    check_base_class_offset(lv, (S7856C14*)(S7856C18*)(S7856C5*)(S7856C20*), ABISELECT(224,120), "S7856C3");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C20*), ABISELECT(240,128), "S7856C3");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*)(S7856C5*)(S7856C20*), ABISELECT(240,128), "S7856C3");
    /*is_ambiguous_... S7856C18::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*)(S7856C5*)(S7856C20*), ABISELECT(248,132), "S7856C3");
    check_base_class_offset(lv, (S7856C18*)(S7856C5*)(S7856C20*), ABISELECT(224,120), "S7856C3");
    check_base_class_offset(lv, (S7856C5*)(S7856C20*), ABISELECT(224,120), "S7856C3");
    /*is_ambiguous_... S7856C21::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C21*)(S7856C20*), ABISELECT(256,136), "S7856C3");
    check_base_class_offset(lv, (S7856C17_nt*)(S7856C21*)(S7856C20*), ABISELECT(256,136), "S7856C3");
    check_base_class_offset(lv, (S7856C21*)(S7856C20*), ABISELECT(256,136), "S7856C3");
    check_base_class_offset(lv, (S7856C20*), ABISELECT(216,116), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C22*), 0, "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C22*), 0, "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(8,4), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(16,8), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(8,4), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(8,4), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(8,4), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(24,12), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(24,12), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(32,16), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(8,4), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C5*)(S7856C22*), ABISELECT(8,4), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C22*), 0, "S7856C3");
    /*is_ambiguous_... S7856C23::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7856C23*), 0, "S7856C3");
    /*is_ambiguous_... S7856C27::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7856C27*), 0, "S7856C3");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*)(S7856C25*)(S7856C23*), ABISELECT(272,144), "S7856C3");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*)(S7856C25*)(S7856C23*), ABISELECT(264,140), "S7856C3");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*)(S7856C25*)(S7856C23*), ABISELECT(264,140), "S7856C3");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C25*)(S7856C23*), ABISELECT(264,140), "S7856C3");
    check_base_class_offset(lv, (S7856C26*)(S7856C25*)(S7856C23*), ABISELECT(280,148), "S7856C3");
    /*is_ambiguous_... S7856C4::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(296,156), "S7856C3");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(288,152), "S7856C3");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(288,152), "S7856C3");
    check_base_class_offset(lv, (S7856C15*)(S7856C19*)(S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(296,156), "S7856C3");
    check_base_class_offset(lv, (S7856C6*)(S7856C19*)(S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(296,156), "S7856C3");
    check_base_class_offset(lv, (S7856C19*)(S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(296,156), "S7856C3");
    check_base_class_offset(lv, (S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(288,152), "S7856C3");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C16*)(S7856C27*), ABISELECT(400,212), "S7856C3");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C16*)(S7856C27*), ABISELECT(400,212), "S7856C3");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(416,220), "S7856C3");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(424,224), "S7856C3");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(416,220), "S7856C3");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(416,220), "S7856C3");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(416,220), "S7856C3");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(416,220), "S7856C3");
    check_base_class_offset(lv, (S7856C29*)(S7856C28*)(S7856C27*), ABISELECT(448,236), "S7856C3");
    /*is_ambiguous_... S7856C21::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C21*)(S7856C28*)(S7856C27*), ABISELECT(432,228), "S7856C3");
    check_base_class_offset(lv, (S7856C17_nt*)(S7856C21*)(S7856C28*)(S7856C27*), ABISELECT(432,228), "S7856C3");
    check_base_class_offset(lv, (S7856C21*)(S7856C28*)(S7856C27*), ABISELECT(432,228), "S7856C3");
    check_base_class_offset(lv, (S7856C24*)(S7856C28*)(S7856C27*), ABISELECT(416,220), "S7856C3");
    check_base_class_offset(lv, (S7856C28*)(S7856C27*), ABISELECT(416,220), "S7856C3");
    check_base_class_offset(lv, (S7856C27*)(S7856C25*)(S7856C23*), ABISELECT(400,212), "S7856C3");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(312,168), "S7856C3");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(320,172), "S7856C3");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(312,168), "S7856C3");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(312,168), "S7856C3");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(312,168), "S7856C3");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(328,176), "S7856C3");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(328,176), "S7856C3");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(336,180), "S7856C3");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(312,168), "S7856C3");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(312,168), "S7856C3");
    check_base_class_offset(lv, (S7856C25*)(S7856C23*), ABISELECT(264,140), "S7856C3");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*)(S7856C23*), ABISELECT(352,188), "S7856C3");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*)(S7856C23*), ABISELECT(344,184), "S7856C3");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*)(S7856C23*), ABISELECT(344,184), "S7856C3");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C23*), ABISELECT(344,184), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C22*), ABISELECT(456,240), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C22*), ABISELECT(456,240), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(464,244), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(472,248), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(464,244), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(464,244), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(464,244), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(480,252), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(480,252), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(488,256), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(464,244), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C5*)(S7856C22*), ABISELECT(464,244), "S7856C3");
    check_base_class_offset(lv, (S7856C22*)(S7856C23*), ABISELECT(456,240), "S7856C3");
    check_base_class_offset(lv, (S7856C23*), ABISELECT(264,140), "S7856C3");
    check_field_offset(lv, s7856c3f0, ABISELECT(40,20), "S7856C3.s7856c3f0");
    test_class_info(&lv, &cd_S7856C3);
    dp->~S7856C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7856C3(Test_S7856C3, "S7856C3", ABISELECT(496,260));

#else // __cplusplus

extern void _ZN7S7856C3C1Ev();
extern void _ZN7S7856C3D2Ev();
Name_Map name_map_S7856C3[] = {
  NSPAIR(_ZN7S7856C3C1Ev),
  NSPAIR(_ZN7S7856C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C7;
extern VTBL_ENTRY _ZTI7S7856C7[];
extern  VTBL_ENTRY _ZTV7S7856C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C7[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C6;
extern VTBL_ENTRY _ZTI7S7856C6[];
extern  VTBL_ENTRY _ZTV7S7856C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C6[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C17_nt;
extern VTBL_ENTRY _ZTI11S7856C17_nt[];
extern  VTBL_ENTRY _ZTV11S7856C17_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S7856C17_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C16;
extern VTBL_ENTRY _ZTI8S7856C16[];
extern  VTBL_ENTRY _ZTV8S7856C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C16[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C5;
extern VTBL_ENTRY _ZTI7S7856C5[];
extern  VTBL_ENTRY _ZTV7S7856C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C5[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C6;
extern VTBL_ENTRY _ZTI7S7856C6[];
extern  VTBL_ENTRY _ZTV7S7856C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C6[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C19;
extern VTBL_ENTRY _ZTI8S7856C19[];
extern  VTBL_ENTRY _ZTV8S7856C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C19[];
extern Class_Descriptor cd_S7856C4;
extern VTBL_ENTRY _ZTI7S7856C4[];
extern  VTBL_ENTRY _ZTV7S7856C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C4[];
extern Class_Descriptor cd_S7856C17_nt;
extern VTBL_ENTRY _ZTI11S7856C17_nt[];
extern  VTBL_ENTRY _ZTV11S7856C17_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S7856C17_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C5;
extern VTBL_ENTRY _ZTI7S7856C5[];
extern  VTBL_ENTRY _ZTV7S7856C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C5[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C17_nt;
extern VTBL_ENTRY _ZTI11S7856C17_nt[];
extern  VTBL_ENTRY _ZTV11S7856C17_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S7856C17_nt[];
extern Class_Descriptor cd_S7856C21;
extern VTBL_ENTRY _ZTI8S7856C21[];
extern  VTBL_ENTRY _ZTV8S7856C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C21[];
extern Class_Descriptor cd_S7856C20;
extern VTBL_ENTRY _ZTI8S7856C20[];
extern  VTBL_ENTRY _ZTV8S7856C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C20[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C5;
extern VTBL_ENTRY _ZTI7S7856C5[];
extern  VTBL_ENTRY _ZTV7S7856C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C5[];
extern Class_Descriptor cd_S7856C22;
extern VTBL_ENTRY _ZTI8S7856C22[];
extern  VTBL_ENTRY _ZTV8S7856C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C22[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C26;
extern VTBL_ENTRY _ZTI8S7856C26[];
extern  VTBL_ENTRY _ZTV8S7856C26[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C26[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C6;
extern VTBL_ENTRY _ZTI7S7856C6[];
extern  VTBL_ENTRY _ZTV7S7856C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C6[];
extern Class_Descriptor cd_S7856C19;
extern VTBL_ENTRY _ZTI8S7856C19[];
extern  VTBL_ENTRY _ZTV8S7856C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C19[];
extern Class_Descriptor cd_S7856C4;
extern VTBL_ENTRY _ZTI7S7856C4[];
extern  VTBL_ENTRY _ZTV7S7856C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C4[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C16;
extern VTBL_ENTRY _ZTI8S7856C16[];
extern  VTBL_ENTRY _ZTV8S7856C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C16[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C7;
extern VTBL_ENTRY _ZTI7S7856C7[];
extern  VTBL_ENTRY _ZTV7S7856C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C7[];
extern Class_Descriptor cd_S7856C29;
extern VTBL_ENTRY _ZTI8S7856C29[];
extern  VTBL_ENTRY _ZTV8S7856C29[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C29[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C17_nt;
extern VTBL_ENTRY _ZTI11S7856C17_nt[];
extern  VTBL_ENTRY _ZTV11S7856C17_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S7856C17_nt[];
extern Class_Descriptor cd_S7856C21;
extern VTBL_ENTRY _ZTI8S7856C21[];
extern  VTBL_ENTRY _ZTV8S7856C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C21[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C28;
extern VTBL_ENTRY _ZTI8S7856C28[];
extern  VTBL_ENTRY _ZTV8S7856C28[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C28[];
extern Class_Descriptor cd_S7856C27;
extern VTBL_ENTRY _ZTI8S7856C27[];
extern  VTBL_ENTRY _ZTV8S7856C27[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C27[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C5;
extern VTBL_ENTRY _ZTI7S7856C5[];
extern  VTBL_ENTRY _ZTV7S7856C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C5[];
extern Class_Descriptor cd_S7856C25;
extern VTBL_ENTRY _ZTI8S7856C25[];
extern  VTBL_ENTRY _ZTV8S7856C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C25[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C5;
extern VTBL_ENTRY _ZTI7S7856C5[];
extern  VTBL_ENTRY _ZTV7S7856C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C5[];
extern Class_Descriptor cd_S7856C22;
extern VTBL_ENTRY _ZTI8S7856C22[];
extern  VTBL_ENTRY _ZTV8S7856C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C22[];
extern Class_Descriptor cd_S7856C23;
extern VTBL_ENTRY _ZTI8S7856C23[];
extern  VTBL_ENTRY _ZTV8S7856C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C23[];
static Base_Class bases_S7856C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S77C13_nt,    ABISELECT(129,73), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S77C13_nt,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C11,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    138, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C10,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    136, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(128,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    131, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    130, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C7,    ABISELECT(120,68), //bcp->offset
    117, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    129, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(136,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(144,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(136,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(136,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    140, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(136,76), //bcp->offset
    127, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    139, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(152,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(152,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    142, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(152,84), //bcp->offset
    131, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    141, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C6,    ABISELECT(104,56), //bcp->offset
    104, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    123, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S7856C17_nt,    ABISELECT(168,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    151, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(168,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7856C16,    ABISELECT(168,92), //bcp->offset
    141, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    145, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    107, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    106, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(88,48), //bcp->offset
    98, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    108, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    105, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S7856C5,    ABISELECT(72,40), //bcp->offset
    81, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    104, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    52, //immediately_derived
  0, 1},
  {&cd_S77C13_nt,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    52, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    52, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S7856C6,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(184,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(192,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(184,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(184,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    154, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(184,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    153, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(200,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(200,108), //bcp->offset
    165, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    155, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(208,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(184,100), //bcp->offset
    154, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    152, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    51, //immediately_derived
  0, 1},
  {&cd_S7856C19,    ABISELECT(56,28), //bcp->offset
    67, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    77, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    52, //immediately_derived
  0, 0},
  {&cd_S7856C4,    ABISELECT(48,24), //bcp->offset
    47, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C17_nt,    ABISELECT(216,116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    162, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    67, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(224,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(232,124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(224,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(224,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    166, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(224,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    165, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(240,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    60, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(240,128), //bcp->offset
    204, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    56, //bcp->index_in_construction_vtbl_array
    167, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(248,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(224,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    164, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    63, //immediately_derived
  0, 0},
  {&cd_S7856C5,    ABISELECT(224,120), //bcp->offset
    188, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    55, //bcp->index_in_construction_vtbl_array
    163, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    67, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(256,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    66, //immediately_derived
  0, 0},
  {&cd_S7856C17_nt,    ABISELECT(256,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    183, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    66, //immediately_derived
  0, 0},
  {&cd_S7856C21,    ABISELECT(256,136), //bcp->offset
    210, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    57, //bcp->index_in_construction_vtbl_array
    182, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    67, //immediately_derived
  0, 0},
  {&cd_S7856C20,    ABISELECT(216,116), //bcp->offset
    171, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    54, //bcp->index_in_construction_vtbl_array
    161, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    69, //immediately_derived
  0, 0},
  {&cd_S7856C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    67, //init_seq
    80, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    74, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    74, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    73, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    68, //init_seq
    74, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    69, //init_seq
    78, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    76, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(24,12), //bcp->offset
    41, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    59, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    70, //init_seq
    78, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    78, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    71, //init_seq
    79, //immediately_derived
  0, 0},
  {&cd_S7856C5,    ABISELECT(8,4), //bcp->offset
    25, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    58, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    72, //init_seq
    80, //immediately_derived
  0, 0},
  {&cd_S7856C22,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    73, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    108, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(272,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    85, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(264,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    84, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(264,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    198, //bcp->base_subarray_index_in_construction_vtbl_array
    51, //init_seq
    85, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(264,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    197, //bcp->base_subarray_index_in_construction_vtbl_array
    52, //init_seq
    119, //immediately_derived
  0, 0},
  {&cd_S7856C26,    ABISELECT(280,148), //bcp->offset
    240, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    61, //bcp->index_in_construction_vtbl_array
    201, //bcp->base_subarray_index_in_construction_vtbl_array
    53, //init_seq
    119, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(296,156), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    93, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(288,152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    89, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(288,152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    203, //bcp->base_subarray_index_in_construction_vtbl_array
    54, //init_seq
    93, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(296,156), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    92, //immediately_derived
  0, 0},
  {&cd_S7856C6,    ABISELECT(296,156), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    206, //bcp->base_subarray_index_in_construction_vtbl_array
    55, //init_seq
    92, //immediately_derived
  0, 0},
  {&cd_S7856C19,    ABISELECT(296,156), //bcp->offset
    261, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    63, //bcp->index_in_construction_vtbl_array
    205, //bcp->base_subarray_index_in_construction_vtbl_array
    56, //init_seq
    93, //immediately_derived
  0, 0},
  {&cd_S7856C4,    ABISELECT(288,152), //bcp->offset
    243, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    62, //bcp->index_in_construction_vtbl_array
    202, //bcp->base_subarray_index_in_construction_vtbl_array
    57, //init_seq
    119, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(400,212), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    95, //immediately_derived
  0, 0},
  {&cd_S7856C16,    ABISELECT(400,212), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    304, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    108, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(416,220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    101, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(424,224), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    100, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(416,220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    99, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(416,220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    313, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    100, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(416,220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    312, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    101, //immediately_derived
  0, 0},
  {&cd_S7856C7,    ABISELECT(416,220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    311, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    107, //immediately_derived
  0, 0},
  {&cd_S7856C29,    ABISELECT(448,236), //bcp->offset
    349, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    66, //bcp->index_in_construction_vtbl_array
    345, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    107, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(432,228), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    105, //immediately_derived
  0, 0},
  {&cd_S7856C17_nt,    ABISELECT(432,228), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    319, //bcp->base_subarray_index_in_construction_vtbl_array
    40, //init_seq
    105, //immediately_derived
  0, 0},
  {&cd_S7856C21,    ABISELECT(432,228), //bcp->offset
    344, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    67, //bcp->index_in_construction_vtbl_array
    318, //bcp->base_subarray_index_in_construction_vtbl_array
    41, //init_seq
    107, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(416,220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    107, //immediately_derived
  0, 0},
  {&cd_S7856C28,    ABISELECT(416,220), //bcp->offset
    326, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    65, //bcp->index_in_construction_vtbl_array
    310, //bcp->base_subarray_index_in_construction_vtbl_array
    42, //init_seq
    108, //immediately_derived
  0, 0},
  {&cd_S7856C27,    ABISELECT(400,212), //bcp->offset
    306, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    64, //bcp->index_in_construction_vtbl_array
    303, //bcp->base_subarray_index_in_construction_vtbl_array
    43, //init_seq
    119, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(312,168), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    113, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(320,172), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    113, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(312,168), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    112, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(312,168), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    235, //bcp->base_subarray_index_in_construction_vtbl_array
    58, //init_seq
    113, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(312,168), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    234, //bcp->base_subarray_index_in_construction_vtbl_array
    59, //init_seq
    117, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(328,176), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    115, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(328,176), //bcp->offset
    291, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    69, //bcp->index_in_construction_vtbl_array
    236, //bcp->base_subarray_index_in_construction_vtbl_array
    60, //init_seq
    117, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(336,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    117, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(312,168), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    233, //bcp->base_subarray_index_in_construction_vtbl_array
    61, //init_seq
    118, //immediately_derived
  0, 0},
  {&cd_S7856C5,    ABISELECT(312,168), //bcp->offset
    275, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    68, //bcp->index_in_construction_vtbl_array
    232, //bcp->base_subarray_index_in_construction_vtbl_array
    62, //init_seq
    119, //immediately_derived
  0, 0},
  {&cd_S7856C25,    ABISELECT(264,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    19, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    196, //bcp->base_subarray_index_in_construction_vtbl_array
    63, //init_seq
    137, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(352,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    123, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(344,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    122, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(344,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    273, //bcp->base_subarray_index_in_construction_vtbl_array
    64, //init_seq
    123, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(344,184), //bcp->offset
    297, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    70, //bcp->index_in_construction_vtbl_array
    272, //bcp->base_subarray_index_in_construction_vtbl_array
    65, //init_seq
    137, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(456,240), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    125, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(456,240), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    357, //bcp->base_subarray_index_in_construction_vtbl_array
    44, //init_seq
    136, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(464,244), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    130, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(472,248), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    130, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(464,244), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    129, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(464,244), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    362, //bcp->base_subarray_index_in_construction_vtbl_array
    45, //init_seq
    130, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(464,244), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    361, //bcp->base_subarray_index_in_construction_vtbl_array
    46, //init_seq
    134, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(480,252), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    132, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(480,252), //bcp->offset
    403, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    73, //bcp->index_in_construction_vtbl_array
    363, //bcp->base_subarray_index_in_construction_vtbl_array
    47, //init_seq
    134, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(488,256), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    134, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(464,244), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    360, //bcp->base_subarray_index_in_construction_vtbl_array
    48, //init_seq
    135, //immediately_derived
  0, 0},
  {&cd_S7856C5,    ABISELECT(464,244), //bcp->offset
    387, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    72, //bcp->index_in_construction_vtbl_array
    359, //bcp->base_subarray_index_in_construction_vtbl_array
    49, //init_seq
    136, //immediately_derived
  0, 0},
  {&cd_S7856C22,    ABISELECT(456,240), //bcp->offset
    367, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    71, //bcp->index_in_construction_vtbl_array
    356, //bcp->base_subarray_index_in_construction_vtbl_array
    50, //init_seq
    137, //immediately_derived
  0, 1},
  {&cd_S7856C23,    ABISELECT(264,140), //bcp->offset
    215, //bcp->virtual_function_table_offset
    23, //num_negative_vtable_entries(t, bcp)
    60, //bcp->index_in_construction_vtbl_array
    195, //bcp->base_subarray_index_in_construction_vtbl_array
    66, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7856C3[];
extern void _ZN7S7856C3D1Ev();
extern void _ZN7S7856C3D0Ev();
extern void ABISELECT(_ZThn8_N7S7856C3D1Ev,_ZThn4_N7S7856C3D1Ev)();
extern void ABISELECT(_ZThn8_N7S7856C3D0Ev,_ZThn4_N7S7856C3D0Ev)();
extern void ABISELECT(_ZTv0_n136_N7S7856C3D1Ev,_ZTv0_n68_N7S7856C3D1Ev)();
extern void ABISELECT(_ZThn48_N7S7856C3D1Ev,_ZThn24_N7S7856C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N7S7856C3D0Ev,_ZTv0_n68_N7S7856C3D0Ev)();
extern void ABISELECT(_ZThn48_N7S7856C3D0Ev,_ZThn24_N7S7856C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn8_n136_N7S7856C3D1Ev,_ZTvn4_n68_N7S7856C3D1Ev)();
extern void ABISELECT(_ZTvn8_n136_N7S7856C3D0Ev,_ZTvn4_n68_N7S7856C3D0Ev)();
extern void _ZN8S7856C192v1Ev();
extern void ABISELECT(_ZTv0_n120_N7S7856C3D1Ev,_ZTv0_n60_N7S7856C3D1Ev)();
extern void ABISELECT(_ZThn72_N7S7856C3D1Ev,_ZThn40_N7S7856C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S7856C3D0Ev,_ZTv0_n60_N7S7856C3D0Ev)();
extern void ABISELECT(_ZThn72_N7S7856C3D0Ev,_ZThn40_N7S7856C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C3D1Ev,_ZTv0_n44_N7S7856C3D1Ev)();
extern void ABISELECT(_ZThn104_N7S7856C3D1Ev,_ZThn56_N7S7856C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C3D0Ev,_ZTv0_n44_N7S7856C3D0Ev)();
extern void ABISELECT(_ZThn104_N7S7856C3D0Ev,_ZThn56_N7S7856C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C3D1Ev,_ZTv0_n32_N7S7856C3D1Ev)();
extern void ABISELECT(_ZThn120_N7S7856C3D1Ev,_ZThn68_N7S7856C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C3D0Ev,_ZTv0_n32_N7S7856C3D0Ev)();
extern void ABISELECT(_ZThn120_N7S7856C3D0Ev,_ZThn68_N7S7856C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C3D1Ev,_ZTv0_n32_N7S7856C3D1Ev)();
extern void ABISELECT(_ZThn152_N7S7856C3D1Ev,_ZThn84_N7S7856C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C3D0Ev,_ZTv0_n32_N7S7856C3D0Ev)();
extern void ABISELECT(_ZThn152_N7S7856C3D0Ev,_ZThn84_N7S7856C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C3D1Ev,_ZTv0_n44_N7S7856C3D1Ev)();
extern void ABISELECT(_ZThn168_N7S7856C3D1Ev,_ZThn92_N7S7856C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C3D0Ev,_ZTv0_n44_N7S7856C3D0Ev)();
extern void ABISELECT(_ZThn168_N7S7856C3D0Ev,_ZThn92_N7S7856C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7856C3D1Ev,_ZTv0_n36_N7S7856C3D1Ev)();
extern void ABISELECT(_ZThn184_N7S7856C3D1Ev,_ZThn100_N7S7856C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7856C3D0Ev,_ZTv0_n36_N7S7856C3D0Ev)();
extern void ABISELECT(_ZThn184_N7S7856C3D0Ev,_ZThn100_N7S7856C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S7856C3D1Ev,_ZTv0_n60_N7S7856C3D1Ev)();
extern void ABISELECT(_ZThn216_N7S7856C3D1Ev,_ZThn116_N7S7856C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S7856C3D0Ev,_ZTv0_n60_N7S7856C3D0Ev)();
extern void ABISELECT(_ZThn216_N7S7856C3D0Ev,_ZThn116_N7S7856C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn8_n120_N7S7856C3D1Ev,_ZTvn4_n60_N7S7856C3D1Ev)();
extern void ABISELECT(_ZTvn8_n120_N7S7856C3D0Ev,_ZTvn4_n60_N7S7856C3D0Ev)();
extern void ABISELECT(_ZTvn40_n120_N7S7856C3D1Ev,_ZTvn20_n60_N7S7856C3D1Ev)();
extern void ABISELECT(_ZTvn40_n120_N7S7856C3D0Ev,_ZTvn20_n60_N7S7856C3D0Ev)();
extern void ABISELECT(_ZTv0_n176_N7S7856C3D1Ev,_ZTv0_n88_N7S7856C3D1Ev)();
extern void ABISELECT(_ZThn264_N7S7856C3D1Ev,_ZThn140_N7S7856C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n176_N7S7856C3D0Ev,_ZTv0_n88_N7S7856C3D0Ev)();
extern void ABISELECT(_ZThn264_N7S7856C3D0Ev,_ZThn140_N7S7856C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn24_n176_N7S7856C3D1Ev,_ZTvn12_n88_N7S7856C3D1Ev)();
extern void ABISELECT(_ZTvn24_n176_N7S7856C3D0Ev,_ZTvn12_n88_N7S7856C3D0Ev)();
extern void ABISELECT(_ZTvn32_n176_N7S7856C3D1Ev,_ZTvn16_n88_N7S7856C3D1Ev)();
extern void ABISELECT(_ZTvn32_n176_N7S7856C3D0Ev,_ZTvn16_n88_N7S7856C3D0Ev)();
extern void _ZN8S7856C192v1Ev();
extern void ABISELECT(_ZTvn48_n176_N7S7856C3D1Ev,_ZTvn28_n88_N7S7856C3D1Ev)();
extern void ABISELECT(_ZTvn48_n176_N7S7856C3D0Ev,_ZTvn28_n88_N7S7856C3D0Ev)();
extern void ABISELECT(_ZTvn80_n176_N7S7856C3D1Ev,_ZTvn44_n88_N7S7856C3D1Ev)();
extern void ABISELECT(_ZTvn80_n176_N7S7856C3D0Ev,_ZTvn44_n88_N7S7856C3D0Ev)();
extern void ABISELECT(_ZTv0_n144_N7S7856C3D1Ev,_ZTv0_n72_N7S7856C3D1Ev)();
extern void ABISELECT(_ZThn400_N7S7856C3D1Ev,_ZThn212_N7S7856C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N7S7856C3D0Ev,_ZTv0_n72_N7S7856C3D0Ev)();
extern void ABISELECT(_ZThn400_N7S7856C3D0Ev,_ZThn212_N7S7856C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n144_N7S7856C3D1Ev,_ZTvn8_n72_N7S7856C3D1Ev)();
extern void ABISELECT(_ZTvn16_n144_N7S7856C3D0Ev,_ZTvn8_n72_N7S7856C3D0Ev)();
extern void ABISELECT(_ZTvn32_n144_N7S7856C3D1Ev,_ZTvn16_n72_N7S7856C3D1Ev)();
extern void ABISELECT(_ZTvn32_n144_N7S7856C3D0Ev,_ZTvn16_n72_N7S7856C3D0Ev)();
extern void ABISELECT(_ZTv0_n128_N7S7856C3D1Ev,_ZTv0_n64_N7S7856C3D1Ev)();
extern void ABISELECT(_ZThn448_N7S7856C3D1Ev,_ZThn236_N7S7856C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N7S7856C3D0Ev,_ZTv0_n64_N7S7856C3D0Ev)();
extern void ABISELECT(_ZThn448_N7S7856C3D0Ev,_ZThn236_N7S7856C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N7S7856C3D1Ev,_ZTv0_n72_N7S7856C3D1Ev)();
extern void ABISELECT(_ZThn456_N7S7856C3D1Ev,_ZThn240_N7S7856C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N7S7856C3D0Ev,_ZTv0_n72_N7S7856C3D0Ev)();
extern void ABISELECT(_ZThn456_N7S7856C3D0Ev,_ZThn240_N7S7856C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn8_n144_N7S7856C3D1Ev,_ZTvn4_n72_N7S7856C3D1Ev)();
extern void ABISELECT(_ZTvn8_n144_N7S7856C3D0Ev,_ZTvn4_n72_N7S7856C3D0Ev)();
static  VTBL_ENTRY vtc_S7856C3[] = {
  ABISELECT(456,240),
  ABISELECT(448,236),
  ABISELECT(400,212),
  0,
  ABISELECT(264,140),
  ABISELECT(216,116),
  ABISELECT(184,100),
  ABISELECT(72,40),
  ABISELECT(48,24),
  ABISELECT(168,92),
  ABISELECT(168,92),
  0,
  ABISELECT(152,84),
  ABISELECT(136,76),
  ABISELECT(104,56),
  ABISELECT(120,68),
  ABISELECT(104,56),
  0,
  ABISELECT(104,56),
  0,
  ABISELECT(129,73),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&_ZN7S7856C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C3D0Ev,
  ABISELECT(160,88),
  ABISELECT(160,88),
  ABISELECT(-8,-4),
  ABISELECT(128,72),
  ABISELECT(112,64),
  ABISELECT(96,52),
  ABISELECT(-8,-4),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(144,80),
  ABISELECT(-8,-4),
  ABISELECT(121,69),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7856C3D1Ev,_ZThn4_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7856C3D0Ev,_ZThn4_N7S7856C3D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(80,44),
  ABISELECT(-24,-12),
  ABISELECT(105,61),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  ABISELECT(8,4),
  ABISELECT(-48,-24),
  ABISELECT(136,76),
  ABISELECT(120,68),
  ABISELECT(120,68),
  ABISELECT(-48,-24),
  ABISELECT(104,60),
  ABISELECT(88,52),
  ABISELECT(56,32),
  ABISELECT(72,44),
  ABISELECT(56,32),
  ABISELECT(24,16),
  ABISELECT(-48,-24),
  ABISELECT(56,32),
  ABISELECT(-48,-24),
  ABISELECT(81,49),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N7S7856C3D1Ev,_ZTv0_n68_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N7S7856C3D0Ev,_ZTv0_n68_N7S7856C3D0Ev),
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(48,28),
  ABISELECT(64,40),
  ABISELECT(-56,-28),
  ABISELECT(48,28),
  ABISELECT(-56,-28),
  ABISELECT(73,45),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N7S7856C3D1Ev,_ZTvn4_n68_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N7S7856C3D0Ev,_ZTvn4_n68_N7S7856C3D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
  ABISELECT(-72,-40),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-72,-40),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-72,-40),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-72,-40),
  ABISELECT(57,33),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C3D1Ev,_ZTv0_n60_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C3D0Ev,_ZTv0_n60_N7S7856C3D0Ev),
  ABISELECT(-88,-48),
  ABISELECT(16,8),
  ABISELECT(-88,-48),
  ABISELECT(41,25),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  ABISELECT(-104,-56),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-104,-56),
  0,
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C3D1Ev,_ZTv0_n44_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C3D0Ev,_ZTv0_n44_N7S7856C3D0Ev),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-120,-68),
  ABISELECT(9,5),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C3D1Ev,_ZTv0_n32_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C3D0Ev,_ZTv0_n32_N7S7856C3D0Ev),
  ABISELECT(-136,-76),
  ABISELECT(-7,-3),
  ABISELECT(-136,-76),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  ABISELECT(-152,-84),
  ABISELECT(-152,-84),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-152,-84),
  ABISELECT(-23,-11),
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C3D1Ev,_ZTv0_n32_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C3D0Ev,_ZTv0_n32_N7S7856C3D0Ev),
  ABISELECT(-168,-92),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-168,-92),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-168,-92),
  ABISELECT(-168,-92),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C3D1Ev,_ZTv0_n44_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C3D0Ev,_ZTv0_n44_N7S7856C3D0Ev),
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-184,-100),
  ABISELECT(-55,-27),
  ABISELECT(-184,-100),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7856C3D1Ev,_ZTv0_n36_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7856C3D0Ev,_ZTv0_n36_N7S7856C3D0Ev),
  ABISELECT(-200,-108),
  ABISELECT(-96,-52),
  ABISELECT(-200,-108),
  ABISELECT(-71,-35),
  ABISELECT(-200,-108),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  ABISELECT(-216,-116),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-216,-116),
  ABISELECT(-64,-32),
  ABISELECT(-80,-40),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-87,-43),
  ABISELECT(-96,-48),
  ABISELECT(-112,-60),
  ABISELECT(-216,-116),
  ABISELECT(-216,-116),
  ABISELECT(-216,-116),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C3D1Ev,_ZTv0_n60_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C3D0Ev,_ZTv0_n60_N7S7856C3D0Ev),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-224,-120),
  ABISELECT(-88,-44),
  ABISELECT(-104,-52),
  ABISELECT(-120,-64),
  ABISELECT(-224,-120),
  ABISELECT(-120,-64),
  ABISELECT(-120,-64),
  ABISELECT(-72,-36),
  ABISELECT(-224,-120),
  ABISELECT(-95,-47),
  ABISELECT(-224,-120),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n120_N7S7856C3D1Ev,_ZTvn4_n60_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n120_N7S7856C3D0Ev,_ZTvn4_n60_N7S7856C3D0Ev),
  ABISELECT(-240,-128),
  ABISELECT(-136,-72),
  ABISELECT(-240,-128),
  ABISELECT(-111,-55),
  ABISELECT(-240,-128),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  ABISELECT(-256,-136),
  ABISELECT(-256,-136),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n120_N7S7856C3D1Ev,_ZTvn20_n60_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n120_N7S7856C3D0Ev,_ZTvn20_n60_N7S7856C3D0Ev),
  ABISELECT(32,16),
  ABISELECT(-264,-140),
  ABISELECT(-216,-116),
  ABISELECT(192,100),
  ABISELECT(-264,-140),
  ABISELECT(184,96),
  ABISELECT(136,72),
  ABISELECT(-80,-40),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-264,-140),
  ABISELECT(-112,-56),
  ABISELECT(-128,-64),
  ABISELECT(-144,-72),
  ABISELECT(-160,-84),
  ABISELECT(-192,-100),
  ABISELECT(-264,-140),
  ABISELECT(-160,-84),
  ABISELECT(-160,-84),
  ABISELECT(-264,-140),
  ABISELECT(-135,-67),
  ABISELECT(-264,-140),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n176_N7S7856C3D1Ev,_ZTv0_n88_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n176_N7S7856C3D0Ev,_ZTv0_n88_N7S7856C3D0Ev),
  ABISELECT(-280,-148),
  ABISELECT(-280,-148),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  ABISELECT(-104,-52),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-288,-152),
  ABISELECT(-136,-68),
  ABISELECT(-152,-76),
  ABISELECT(-184,-96),
  ABISELECT(-168,-84),
  ABISELECT(-184,-96),
  ABISELECT(-216,-112),
  ABISELECT(-288,-152),
  ABISELECT(-184,-96),
  ABISELECT(-288,-152),
  ABISELECT(-159,-79),
  ABISELECT(-288,-152),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n176_N7S7856C3D1Ev,_ZTvn12_n88_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n176_N7S7856C3D0Ev,_ZTvn12_n88_N7S7856C3D0Ev),
  ABISELECT(-112,-56),
  ABISELECT(-144,-72),
  ABISELECT(-160,-80),
  ABISELECT(-192,-100),
  ABISELECT(-176,-88),
  ABISELECT(-296,-156),
  ABISELECT(-192,-100),
  ABISELECT(-296,-156),
  ABISELECT(-167,-83),
  ABISELECT(-296,-156),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n176_N7S7856C3D1Ev,_ZTvn16_n88_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n176_N7S7856C3D0Ev,_ZTvn16_n88_N7S7856C3D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
  ABISELECT(-144,-76),
  ABISELECT(-144,-76),
  ABISELECT(-312,-168),
  ABISELECT(-176,-92),
  ABISELECT(-192,-100),
  ABISELECT(-208,-112),
  ABISELECT(-312,-168),
  ABISELECT(-208,-112),
  ABISELECT(-208,-112),
  ABISELECT(-160,-84),
  ABISELECT(-312,-168),
  ABISELECT(-183,-95),
  ABISELECT(-312,-168),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n176_N7S7856C3D1Ev,_ZTvn28_n88_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n176_N7S7856C3D0Ev,_ZTvn28_n88_N7S7856C3D0Ev),
  ABISELECT(-328,-176),
  ABISELECT(-224,-120),
  ABISELECT(-328,-176),
  ABISELECT(-199,-103),
  ABISELECT(-328,-176),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  ABISELECT(-344,-184),
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  ABISELECT(-344,-184),
  ABISELECT(-215,-111),
  ABISELECT(-344,-184),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n176_N7S7856C3D1Ev,_ZTvn44_n88_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n176_N7S7856C3D0Ev,_ZTvn44_n88_N7S7856C3D0Ev),
  ABISELECT(-400,-212),
  ABISELECT(-400,-212),
  ABISELECT(-232,-120),
  ABISELECT(-400,-212),
  ABISELECT(-248,-128),
  ABISELECT(-296,-156),
  ABISELECT(-328,-172),
  ABISELECT(48,24),
  ABISELECT(-296,-156),
  ABISELECT(-280,-144),
  ABISELECT(-264,-136),
  ABISELECT(-232,-120),
  ABISELECT(-400,-212),
  ABISELECT(-271,-139),
  ABISELECT(-296,-156),
  ABISELECT(-400,-212),
  ABISELECT(-400,-212),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N7S7856C3D1Ev,_ZTv0_n72_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N7S7856C3D0Ev,_ZTv0_n72_N7S7856C3D0Ev),
  ABISELECT(-248,-128),
  ABISELECT(-248,-128),
  ABISELECT(-416,-220),
  ABISELECT(-264,-136),
  ABISELECT(-312,-164),
  ABISELECT(-344,-180),
  ABISELECT(-296,-152),
  ABISELECT(32,16),
  ABISELECT(-280,-144),
  ABISELECT(-416,-220),
  ABISELECT(-312,-164),
  ABISELECT(-312,-164),
  ABISELECT(-416,-220),
  ABISELECT(-287,-147),
  ABISELECT(-416,-220),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n144_N7S7856C3D1Ev,_ZTvn8_n72_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n144_N7S7856C3D0Ev,_ZTvn8_n72_N7S7856C3D0Ev),
  ABISELECT(-432,-228),
  ABISELECT(-432,-228),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n144_N7S7856C3D1Ev,_ZTvn16_n72_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n144_N7S7856C3D0Ev,_ZTvn16_n72_N7S7856C3D0Ev),
  ABISELECT(-448,-236),
  ABISELECT(-280,-144),
  ABISELECT(-280,-144),
  ABISELECT(-448,-236),
  ABISELECT(-296,-152),
  ABISELECT(-312,-160),
  ABISELECT(-344,-180),
  ABISELECT(-376,-196),
  ABISELECT(-344,-180),
  ABISELECT(-328,-168),
  ABISELECT(-448,-236),
  ABISELECT(-344,-180),
  ABISELECT(-448,-236),
  ABISELECT(-319,-163),
  ABISELECT(-448,-236),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S7856C3D1Ev,_ZTv0_n64_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S7856C3D0Ev,_ZTv0_n64_N7S7856C3D0Ev),
  ABISELECT(-456,-240),
  ABISELECT(-272,-140),
  ABISELECT(-384,-200),
  ABISELECT(-408,-216),
  ABISELECT(-288,-148),
  ABISELECT(-288,-148),
  ABISELECT(-456,-240),
  ABISELECT(-304,-156),
  ABISELECT(-320,-164),
  ABISELECT(-352,-184),
  ABISELECT(-336,-172),
  ABISELECT(-352,-184),
  ABISELECT(-456,-240),
  ABISELECT(-352,-184),
  ABISELECT(-456,-240),
  ABISELECT(-327,-167),
  ABISELECT(-456,-240),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N7S7856C3D1Ev,_ZTv0_n72_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N7S7856C3D0Ev,_ZTv0_n72_N7S7856C3D0Ev),
  ABISELECT(-296,-152),
  ABISELECT(-296,-152),
  ABISELECT(-464,-244),
  ABISELECT(-328,-168),
  ABISELECT(-344,-176),
  ABISELECT(-360,-188),
  ABISELECT(-464,-244),
  ABISELECT(-360,-188),
  ABISELECT(-360,-188),
  ABISELECT(-312,-160),
  ABISELECT(-464,-244),
  ABISELECT(-335,-171),
  ABISELECT(-464,-244),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n144_N7S7856C3D1Ev,_ZTvn4_n72_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n144_N7S7856C3D0Ev,_ZTvn4_n72_N7S7856C3D0Ev),
  ABISELECT(-480,-252),
  ABISELECT(-376,-196),
  ABISELECT(-480,-252),
  ABISELECT(-351,-179),
  ABISELECT(-480,-252),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
};
extern VTBL_ENTRY _ZTV7S7856C3[];
extern void _ZN8S7856C22D1Ev();
extern void _ZN8S7856C22D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C22__A__7S7856C3[] = {
  ABISELECT(184,100),
  ABISELECT(72,40),
  ABISELECT(48,24),
  ABISELECT(168,92),
  ABISELECT(168,92),
  0,
  ABISELECT(152,84),
  ABISELECT(136,76),
  ABISELECT(104,56),
  ABISELECT(120,68),
  ABISELECT(104,56),
  0,
  ABISELECT(104,56),
  0,
  ABISELECT(129,73),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&_ZN8S7856C22D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C22D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C22__A5__7S7856C3[] = {
  0,
  ABISELECT(104,56),
  0,
  ABISELECT(129,73),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C22__A5__7S7856C3[] = {
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void _ZN7S7856C5D1Ev();
extern void _ZN7S7856C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C58S7856C22__A2__7S7856C3[] = {
  ABISELECT(160,88),
  ABISELECT(160,88),
  ABISELECT(-8,-4),
  ABISELECT(128,72),
  ABISELECT(112,64),
  ABISELECT(96,52),
  ABISELECT(-8,-4),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(144,80),
  ABISELECT(-8,-4),
  ABISELECT(121,69),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&_ZN7S7856C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C5D0Ev,
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C187S7856C58S7856C22__A3__7S7856C3[] = {
  ABISELECT(-8,-4),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(144,80),
  ABISELECT(-8,-4),
  ABISELECT(121,69),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C187S7856C58S7856C22__A4__7S7856C3[] = {
  ABISELECT(-8,-4),
  ABISELECT(121,69),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C187S7856C58S7856C22__A7__7S7856C3[] = {
  ABISELECT(-8,-4),
  ABISELECT(121,69),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C58S7856C22__A6__7S7856C3[] = {
  ABISELECT(-24,-12),
  ABISELECT(80,44),
  ABISELECT(-24,-12),
  ABISELECT(105,61),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C187S7856C58S7856C22__A6__7S7856C3[] = {
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZThn144_N8S7856C18D1Ev,_ZThn80_N8S7856C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
extern void ABISELECT(_ZThn144_N8S7856C18D0Ev,_ZThn80_N8S7856C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C187S7856C58S7856C22__A3__7S7856C3[] = {
  ABISELECT(-144,-80),
  ABISELECT(-152,-84),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-152,-84),
  ABISELECT(-23,-11),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C187S7856C58S7856C22__A3__7S7856C3[] = {
  ABISELECT(-104,-56),
  0,
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C187S7856C58S7856C22__A3__7S7856C3[] = {
  ABISELECT(-24,-12),
  ABISELECT(80,44),
  ABISELECT(-24,-12),
  ABISELECT(105,61),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn96_N7S7856C5D1Ev,_ZThn52_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn96_N7S7856C5D0Ev,_ZThn52_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C58S7856C22__A2__7S7856C3[] = {
  ABISELECT(-96,-52),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-104,-56),
  0,
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn112_N7S7856C5D1Ev,_ZThn64_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn112_N7S7856C5D0Ev,_ZThn64_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C58S7856C22__A2__7S7856C3[] = {
  ABISELECT(-112,-64),
  ABISELECT(-120,-68),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-120,-68),
  ABISELECT(9,5),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C58S7856C22__A2__7S7856C3[] = {
  ABISELECT(-136,-76),
  ABISELECT(-7,-3),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn144_N7S7856C5D1Ev,_ZThn80_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn144_N7S7856C5D0Ev,_ZThn80_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C58S7856C22__A2__7S7856C3[] = {
  ABISELECT(-144,-80),
  ABISELECT(-152,-84),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-152,-84),
  ABISELECT(-23,-11),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn160_N7S7856C5D1Ev,_ZThn88_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn160_N7S7856C5D0Ev,_ZThn88_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C58S7856C22__A2__7S7856C3[] = {
  ABISELECT(-160,-88),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-168,-92),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-168,-92),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__7S7856C58S7856C22__A2__7S7856C3[] = {
  ABISELECT(-24,-12),
  ABISELECT(80,44),
  ABISELECT(-24,-12),
  ABISELECT(105,61),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn104_N8S7856C22D1Ev,_ZThn56_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn104_N8S7856C22D0Ev,_ZThn56_N8S7856C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C22__A__7S7856C3[] = {
  ABISELECT(-104,-56),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-104,-56),
  0,
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn120_N8S7856C22D1Ev,_ZThn68_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn120_N8S7856C22D0Ev,_ZThn68_N8S7856C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C22__A__7S7856C3[] = {
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-120,-68),
  ABISELECT(9,5),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C22__A__7S7856C3[] = {
  ABISELECT(-136,-76),
  ABISELECT(-7,-3),
  ABISELECT(-136,-76),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn152_N8S7856C22D1Ev,_ZThn84_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn152_N8S7856C22D0Ev,_ZThn84_N8S7856C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__8S7856C22__A__7S7856C3[] = {
  ABISELECT(-152,-84),
  ABISELECT(-152,-84),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-152,-84),
  ABISELECT(-23,-11),
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev),
};
extern void ABISELECT(_ZThn8_N8S7856C22D1Ev,_ZThn4_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn8_N8S7856C22D0Ev,_ZThn4_N8S7856C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__A__8S7856C22__A__7S7856C3[] = {
  ABISELECT(160,88),
  ABISELECT(160,88),
  ABISELECT(-8,-4),
  ABISELECT(128,72),
  ABISELECT(112,64),
  ABISELECT(96,52),
  ABISELECT(-8,-4),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(144,80),
  ABISELECT(-8,-4),
  ABISELECT(121,69),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7856C22D1Ev,_ZThn4_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7856C22D0Ev,_ZThn4_N8S7856C22D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn168_N8S7856C22D1Ev,_ZThn92_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn168_N8S7856C22D0Ev,_ZThn92_N8S7856C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C22__A__7S7856C3[] = {
  ABISELECT(-168,-92),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-168,-92),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-168,-92),
  ABISELECT(-168,-92),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A2__8S7856C22__A__7S7856C3[] = {
  ABISELECT(-24,-12),
  ABISELECT(80,44),
  ABISELECT(-24,-12),
  ABISELECT(105,61),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
};
extern void ABISELECT(_ZTv0_n136_N8S7856C22D1Ev,_ZTv0_n68_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn48_N8S7856C22D1Ev,_ZThn24_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N8S7856C22D0Ev,_ZTv0_n68_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn48_N8S7856C22D0Ev,_ZThn24_N8S7856C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C4__8S7856C22__A__7S7856C3[] = {
  ABISELECT(8,4),
  ABISELECT(-48,-24),
  ABISELECT(136,76),
  ABISELECT(120,68),
  ABISELECT(120,68),
  ABISELECT(-48,-24),
  ABISELECT(104,60),
  ABISELECT(88,52),
  ABISELECT(56,32),
  ABISELECT(72,44),
  ABISELECT(56,32),
  ABISELECT(24,16),
  ABISELECT(-48,-24),
  ABISELECT(56,32),
  ABISELECT(-48,-24),
  ABISELECT(81,49),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S7856C22D1Ev,_ZTv0_n68_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S7856C22D0Ev,_ZTv0_n68_N8S7856C22D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S7856C22D1Ev,_ZTv0_n60_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn72_N8S7856C22D1Ev,_ZThn40_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S7856C22D0Ev,_ZTv0_n60_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn72_N8S7856C22D0Ev,_ZThn40_N8S7856C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C5__A1__8S7856C22__A__7S7856C3[] = {
  ABISELECT(-72,-40),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-72,-40),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-72,-40),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-72,-40),
  ABISELECT(57,33),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C22D1Ev,_ZTv0_n60_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C22D0Ev,_ZTv0_n60_N8S7856C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A3__8S7856C22__A__7S7856C3[] = {
  ABISELECT(-88,-48),
  ABISELECT(16,8),
  ABISELECT(-88,-48),
  ABISELECT(41,25),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
};
extern void ABISELECT(_ZTvn8_n136_N8S7856C22D1Ev,_ZTvn4_n68_N8S7856C22D1Ev)();
extern void ABISELECT(_ZTvn8_n136_N8S7856C22D0Ev,_ZTvn4_n68_N8S7856C22D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C197S7856C4__8S7856C22__A__7S7856C3[] = {
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(48,28),
  ABISELECT(64,40),
  ABISELECT(-56,-28),
  ABISELECT(48,28),
  ABISELECT(-56,-28),
  ABISELECT(73,45),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N8S7856C22D1Ev,_ZTvn4_n68_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N8S7856C22D0Ev,_ZTvn4_n68_N8S7856C22D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N8S7856C22D1Ev,_ZTv0_n36_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn184_N8S7856C22D1Ev,_ZThn100_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7856C22D0Ev,_ZTv0_n36_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn184_N8S7856C22D0Ev,_ZThn100_N8S7856C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C18__A2__8S7856C22__A__7S7856C3[] = {
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-184,-100),
  ABISELECT(-55,-27),
  ABISELECT(-184,-100),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C22D1Ev,_ZTv0_n36_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C22D0Ev,_ZTv0_n36_N8S7856C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A5__8S7856C22__A__7S7856C3[] = {
  ABISELECT(-200,-108),
  ABISELECT(-96,-52),
  ABISELECT(-200,-108),
  ABISELECT(-71,-35),
  ABISELECT(-200,-108),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
};
extern void _ZN7S7856C4D1Ev();
extern void _ZN7S7856C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C4__7S7856C3[] = {
  ABISELECT(136,76),
  ABISELECT(120,68),
  ABISELECT(120,68),
  ABISELECT(-48,-24),
  ABISELECT(104,60),
  ABISELECT(88,52),
  ABISELECT(56,32),
  ABISELECT(72,44),
  ABISELECT(56,32),
  ABISELECT(24,16),
  ABISELECT(-48,-24),
  ABISELECT(56,32),
  ABISELECT(-48,-24),
  ABISELECT(81,49),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&_ZN7S7856C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C4D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C107S7856C4__A2__7S7856C3[] = {
  ABISELECT(-48,-24),
  ABISELECT(56,32),
  ABISELECT(-48,-24),
  ABISELECT(81,49),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C107S7856C4__A2__7S7856C3[] = {
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void _ZN8S7856C19D1Ev();
extern void _ZN8S7856C19D0Ev();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C197S7856C4__7S7856C3[] = {
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(48,28),
  ABISELECT(64,40),
  ABISELECT(-56,-28),
  ABISELECT(48,28),
  ABISELECT(-56,-28),
  ABISELECT(73,45),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&_ZN8S7856C19D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C19D0Ev,
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void _ZN7S7856C6D1Ev();
extern void _ZN7S7856C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C68S7856C197S7856C4__A1__7S7856C3[] = {
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(48,28),
  ABISELECT(64,40),
  ABISELECT(-56,-28),
  ABISELECT(48,28),
  ABISELECT(-56,-28),
  ABISELECT(73,45),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&_ZN7S7856C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C6D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn64_N7S7856C6D1Ev,_ZThn40_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn64_N7S7856C6D0Ev,_ZThn40_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C68S7856C197S7856C4__A1__7S7856C3[] = {
  ABISELECT(-64,-40),
  ABISELECT(-120,-68),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-120,-68),
  ABISELECT(9,5),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C68S7856C197S7856C4__A1__7S7856C3[] = {
  ABISELECT(-104,-56),
  0,
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C68S7856C197S7856C4__A1__7S7856C3[] = {
  ABISELECT(-136,-76),
  ABISELECT(-7,-3),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn96_N7S7856C6D1Ev,_ZThn56_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn96_N7S7856C6D0Ev,_ZThn56_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C68S7856C197S7856C4__A1__7S7856C3[] = {
  ABISELECT(-96,-56),
  ABISELECT(-152,-84),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-152,-84),
  ABISELECT(-23,-11),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev)();
extern void ABISELECT(_ZThn64_N8S7856C19D1Ev,_ZThn40_N8S7856C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev)();
extern void ABISELECT(_ZThn64_N8S7856C19D0Ev,_ZThn40_N8S7856C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C197S7856C4__7S7856C3[] = {
  ABISELECT(-64,-40),
  ABISELECT(-120,-68),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-120,-68),
  ABISELECT(9,5),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C197S7856C4__7S7856C3[] = {
  ABISELECT(-104,-56),
  0,
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C197S7856C4__7S7856C3[] = {
  ABISELECT(-136,-76),
  ABISELECT(-7,-3),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev)();
extern void ABISELECT(_ZThn96_N8S7856C19D1Ev,_ZThn56_N8S7856C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev)();
extern void ABISELECT(_ZThn96_N8S7856C19D0Ev,_ZThn56_N8S7856C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__8S7856C197S7856C4__7S7856C3[] = {
  ABISELECT(-96,-56),
  ABISELECT(-152,-84),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-152,-84),
  ABISELECT(-23,-11),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev),
};
extern void ABISELECT(_ZTv0_n72_N8S7856C19D1Ev,_ZTv0_n36_N8S7856C19D1Ev)();
extern void ABISELECT(_ZThn128_N8S7856C19D1Ev,_ZThn72_N8S7856C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7856C19D0Ev,_ZTv0_n36_N8S7856C19D0Ev)();
extern void ABISELECT(_ZThn128_N8S7856C19D0Ev,_ZThn72_N8S7856C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C18__8S7856C197S7856C4__7S7856C3[] = {
  ABISELECT(-128,-72),
  ABISELECT(-184,-100),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-184,-100),
  ABISELECT(-55,-27),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C19D1Ev,_ZTv0_n36_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C19D0Ev,_ZTv0_n36_N8S7856C19D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__8S7856C197S7856C4__7S7856C3[] = {
  ABISELECT(-200,-108),
  ABISELECT(-96,-52),
  ABISELECT(-200,-108),
  ABISELECT(-71,-35),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
extern void ABISELECT(_ZTv0_n120_N7S7856C4D1Ev,_ZTv0_n60_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn24_N7S7856C4D1Ev,_ZThn16_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S7856C4D0Ev,_ZTv0_n60_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn24_N7S7856C4D0Ev,_ZThn16_N7S7856C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C5__7S7856C4__7S7856C3[] = {
  ABISELECT(-24,-16),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-72,-40),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-72,-40),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-72,-40),
  ABISELECT(57,33),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C4D1Ev,_ZTv0_n60_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C4D0Ev,_ZTv0_n60_N7S7856C4D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn56_N7S7856C4D1Ev,_ZThn32_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn56_N7S7856C4D0Ev,_ZThn32_N7S7856C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C4__7S7856C3[] = {
  ABISELECT(-56,-32),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-104,-56),
  0,
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn72_N7S7856C4D1Ev,_ZThn44_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn72_N7S7856C4D0Ev,_ZThn44_N7S7856C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C4__7S7856C3[] = {
  ABISELECT(-72,-44),
  ABISELECT(-120,-68),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-120,-68),
  ABISELECT(9,5),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C4__7S7856C3[] = {
  ABISELECT(-136,-76),
  ABISELECT(-7,-3),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn104_N7S7856C4D1Ev,_ZThn60_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn104_N7S7856C4D0Ev,_ZThn60_N7S7856C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C4__7S7856C3[] = {
  ABISELECT(-104,-60),
  ABISELECT(-152,-84),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-152,-84),
  ABISELECT(-23,-11),
  ABISELECT(-104,-60),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn120_N7S7856C4D1Ev,_ZThn68_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn120_N7S7856C4D0Ev,_ZThn68_N7S7856C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C4__7S7856C3[] = {
  ABISELECT(-120,-68),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-168,-92),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-168,-92),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__7S7856C4__7S7856C3[] = {
  ABISELECT(-88,-48),
  ABISELECT(16,8),
  ABISELECT(-88,-48),
  ABISELECT(41,25),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
extern void ABISELECT(_ZThn8_N7S7856C4D1Ev,_ZThn4_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn8_N7S7856C4D0Ev,_ZThn4_N7S7856C4D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C19__7S7856C4__7S7856C3[] = {
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(48,28),
  ABISELECT(64,40),
  ABISELECT(-56,-28),
  ABISELECT(48,28),
  ABISELECT(-56,-28),
  ABISELECT(73,45),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7856C4D1Ev,_ZThn4_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7856C4D0Ev,_ZThn4_N7S7856C4D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N7S7856C4D1Ev,_ZTv0_n36_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn136_N7S7856C4D1Ev,_ZThn76_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7856C4D0Ev,_ZTv0_n36_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn136_N7S7856C4D0Ev,_ZThn76_N7S7856C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C18__A1__7S7856C4__7S7856C3[] = {
  ABISELECT(-136,-76),
  ABISELECT(-184,-100),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-184,-100),
  ABISELECT(-55,-27),
  ABISELECT(-136,-76),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7856C4D1Ev,_ZTv0_n36_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7856C4D0Ev,_ZTv0_n36_N7S7856C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A3__7S7856C4__7S7856C3[] = {
  ABISELECT(-200,-108),
  ABISELECT(-96,-52),
  ABISELECT(-200,-108),
  ABISELECT(-71,-35),
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
extern void _ZN7S7856C5D1Ev();
extern void _ZN7S7856C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C5__7S7856C3[] = {
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-72,-40),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-72,-40),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-72,-40),
  ABISELECT(57,33),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&_ZN7S7856C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C5D0Ev,
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C187S7856C5__7S7856C3[] = {
  ABISELECT(-72,-40),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-72,-40),
  ABISELECT(57,33),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C187S7856C5__A1__7S7856C3[] = {
  ABISELECT(-72,-40),
  ABISELECT(57,33),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C187S7856C5__A4__7S7856C3[] = {
  ABISELECT(-72,-40),
  ABISELECT(57,33),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__7S7856C3[] = {
  ABISELECT(-88,-48),
  ABISELECT(16,8),
  ABISELECT(-88,-48),
  ABISELECT(41,25),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C187S7856C5__A1__7S7856C3[] = {
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZThn80_N8S7856C18D1Ev,_ZThn44_N8S7856C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
extern void ABISELECT(_ZThn80_N8S7856C18D0Ev,_ZThn44_N8S7856C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C187S7856C5__7S7856C3[] = {
  ABISELECT(-80,-44),
  ABISELECT(-152,-84),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-152,-84),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C187S7856C5__7S7856C3[] = {
  ABISELECT(-104,-56),
  0,
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C187S7856C5__7S7856C3[] = {
  ABISELECT(-88,-48),
  ABISELECT(16,8),
  ABISELECT(-88,-48),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn32_N7S7856C5D1Ev,_ZThn16_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn32_N7S7856C5D0Ev,_ZThn16_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C5__7S7856C3[] = {
  ABISELECT(-32,-16),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-104,-56),
  0,
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn48_N7S7856C5D1Ev,_ZThn28_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn48_N7S7856C5D0Ev,_ZThn28_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C5__7S7856C3[] = {
  ABISELECT(-48,-28),
  ABISELECT(-120,-68),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-120,-68),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C5__7S7856C3[] = {
  ABISELECT(-136,-76),
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn80_N7S7856C5D1Ev,_ZThn44_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn80_N7S7856C5D0Ev,_ZThn44_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C5__7S7856C3[] = {
  ABISELECT(-80,-44),
  ABISELECT(-152,-84),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-152,-84),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn96_N7S7856C5D1Ev,_ZThn52_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn96_N7S7856C5D0Ev,_ZThn52_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C5__7S7856C3[] = {
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-168,-92),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-168,-92),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__7S7856C5__7S7856C3[] = {
  ABISELECT(-88,-48),
  ABISELECT(16,8),
  ABISELECT(-88,-48),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void _ZN7S7856C6D1Ev();
extern void _ZN7S7856C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C3[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-104,-56),
  0,
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&_ZN7S7856C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C6D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn16_N7S7856C6D1Ev,_ZThn12_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn16_N7S7856C6D0Ev,_ZThn12_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C6__7S7856C3[] = {
  ABISELECT(-16,-12),
  ABISELECT(-120,-68),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-120,-68),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C6__7S7856C3[] = {
  ABISELECT(-136,-76),
  ABISELECT(-7,-3),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn48_N7S7856C6D1Ev,_ZThn28_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn48_N7S7856C6D0Ev,_ZThn28_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C6__7S7856C3[] = {
  ABISELECT(-48,-28),
  ABISELECT(-152,-84),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-152,-84),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
extern void _ZN7S7856C7D1Ev();
extern void _ZN7S7856C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C3[] = {
  ABISELECT(-120,-68),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-120,-68),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
  (VTBL_ENTRY)&_ZN7S7856C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C7D0Ev,
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C137S7856C7__7S7856C3[] = {
  ABISELECT(-120,-68),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-120,-68),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C137S7856C7__A1__7S7856C3[] = {
  ABISELECT(-120,-68),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C137S7856C7__7S7856C3[] = {
  ABISELECT(-104,-56),
  0,
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C7__7S7856C3[] = {
  ABISELECT(-104,-56),
  0,
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C3[] = {
  ABISELECT(-104,-56),
  0,
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__7S7856C3[] = {
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C3[] = {
  ABISELECT(-136,-76),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C14__A2__7S7856C3[] = {
  ABISELECT(-136,-76),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C3[] = {
  ABISELECT(-152,-84),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-152,-84),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C13__A3__7S7856C3[] = {
  ABISELECT(-152,-84),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C13__A1__7S7856C3[] = {
  ABISELECT(-104,-56),
  0,
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
extern void _ZN8S7856C16D1Ev();
extern void _ZN8S7856C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C3[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-168,-92),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-168,-92),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&_ZN8S7856C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C16__7S7856C3[] = {
  ABISELECT(-104,-56),
  0,
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C16__7S7856C3[] = {
  ABISELECT(-136,-76),
  ABISELECT(-7,-3),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C16__7S7856C3[] = {
  ABISELECT(48,24),
  ABISELECT(-120,-68),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-120,-68),
  ABISELECT(9,5),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt__7S7856C3[] = {
  ABISELECT(-168,-92),
  0,
  (VTBL_ENTRY)&(_ZTI11S7856C17_nt[0]),
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C18__A1__7S7856C3[] = {
  ABISELECT(-184,-100),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-184,-100),
  ABISELECT(-55,-27),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C18__A2__7S7856C3[] = {
  ABISELECT(-184,-100),
  ABISELECT(-55,-27),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C18__A5__7S7856C3[] = {
  ABISELECT(-184,-100),
  ABISELECT(-55,-27),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A3__7S7856C3[] = {
  ABISELECT(-200,-108),
  ABISELECT(-96,-52),
  ABISELECT(-200,-108),
  ABISELECT(-71,-35),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C18__A3__7S7856C3[] = {
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(96,52),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C18__A1__7S7856C3[] = {
  ABISELECT(32,16),
  ABISELECT(-152,-84),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-152,-84),
  ABISELECT(-23,-11),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C18__A1__7S7856C3[] = {
  ABISELECT(-104,-56),
  0,
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C18__A1__7S7856C3[] = {
  ABISELECT(-200,-108),
  ABISELECT(-96,-52),
  ABISELECT(-200,-108),
  ABISELECT(-71,-35),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern void _ZN8S7856C20D1Ev();
extern void _ZN8S7856C20D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C20__7S7856C3[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-216,-116),
  ABISELECT(-64,-32),
  ABISELECT(-80,-40),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-87,-43),
  ABISELECT(-96,-48),
  ABISELECT(-112,-60),
  ABISELECT(-216,-116),
  ABISELECT(-216,-116),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C20[0]),
  (VTBL_ENTRY)&_ZN8S7856C20D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C20D0Ev,
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt8S7856C20__A1__7S7856C3[] = {
  ABISELECT(-216,-116),
  0,
  (VTBL_ENTRY)&(_ZTI11S7856C17_nt[0]),
};
extern void _ZN7S7856C5D1Ev();
extern void _ZN7S7856C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C58S7856C20__A1__7S7856C3[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-224,-120),
  ABISELECT(-88,-44),
  ABISELECT(-104,-52),
  ABISELECT(-120,-64),
  ABISELECT(-224,-120),
  ABISELECT(-120,-64),
  ABISELECT(-120,-64),
  ABISELECT(-72,-36),
  ABISELECT(-224,-120),
  ABISELECT(-95,-47),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&_ZN7S7856C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C5D0Ev,
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C187S7856C58S7856C20__A2__7S7856C3[] = {
  ABISELECT(-224,-120),
  ABISELECT(-120,-64),
  ABISELECT(-120,-64),
  ABISELECT(-72,-36),
  ABISELECT(-224,-120),
  ABISELECT(-95,-47),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C187S7856C58S7856C20__A3__7S7856C3[] = {
  ABISELECT(-224,-120),
  ABISELECT(-95,-47),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C187S7856C58S7856C20__A6__7S7856C3[] = {
  ABISELECT(-224,-120),
  ABISELECT(-95,-47),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C58S7856C20__A4__7S7856C3[] = {
  ABISELECT(-240,-128),
  ABISELECT(-136,-72),
  ABISELECT(-240,-128),
  ABISELECT(-111,-55),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C187S7856C58S7856C20__A4__7S7856C3[] = {
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(136,72),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C187S7856C58S7856C20__A2__7S7856C3[] = {
  ABISELECT(72,36),
  ABISELECT(-152,-84),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-152,-84),
  ABISELECT(-23,-11),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C187S7856C58S7856C20__A2__7S7856C3[] = {
  ABISELECT(-104,-56),
  0,
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(120,64),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C187S7856C58S7856C20__A2__7S7856C3[] = {
  ABISELECT(-240,-128),
  ABISELECT(-136,-72),
  ABISELECT(-240,-128),
  ABISELECT(-111,-55),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C58S7856C20__A1__7S7856C3[] = {
  ABISELECT(120,64),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-104,-56),
  0,
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(120,64),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C58S7856C20__A1__7S7856C3[] = {
  ABISELECT(104,52),
  ABISELECT(-120,-68),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-120,-68),
  ABISELECT(9,5),
  ABISELECT(104,52),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C58S7856C20__A1__7S7856C3[] = {
  ABISELECT(-136,-76),
  ABISELECT(-7,-3),
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C58S7856C20__A1__7S7856C3[] = {
  ABISELECT(72,36),
  ABISELECT(-152,-84),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-152,-84),
  ABISELECT(-23,-11),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C58S7856C20__A1__7S7856C3[] = {
  ABISELECT(56,28),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-168,-92),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-168,-92),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__7S7856C58S7856C20__A1__7S7856C3[] = {
  ABISELECT(-240,-128),
  ABISELECT(-136,-72),
  ABISELECT(-240,-128),
  ABISELECT(-111,-55),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void _ZN8S7856C21D1Ev();
extern void _ZN8S7856C21D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C218S7856C20__7S7856C3[] = {
  ABISELECT(-256,-136),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C21[0]),
  (VTBL_ENTRY)&_ZN8S7856C21D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C21D0Ev,
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt8S7856C218S7856C20__A2__7S7856C3[] = {
  ABISELECT(-256,-136),
  0,
  (VTBL_ENTRY)&(_ZTI11S7856C17_nt[0]),
};
extern void ABISELECT(_ZThn8_N8S7856C20D1Ev,_ZThn4_N8S7856C20D1Ev)();
extern void ABISELECT(_ZThn8_N8S7856C20D0Ev,_ZThn4_N8S7856C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__8S7856C20__7S7856C3[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-224,-120),
  ABISELECT(-88,-44),
  ABISELECT(-104,-52),
  ABISELECT(-120,-64),
  ABISELECT(-224,-120),
  ABISELECT(-120,-64),
  ABISELECT(-120,-64),
  ABISELECT(-72,-36),
  ABISELECT(-224,-120),
  ABISELECT(-95,-47),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7856C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7856C20D1Ev,_ZThn4_N8S7856C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7856C20D0Ev,_ZThn4_N8S7856C20D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C20D1Ev,_ZTv0_n44_N8S7856C20D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C20D0Ev,_ZTv0_n44_N8S7856C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C20__7S7856C3[] = {
  ABISELECT(112,60),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-104,-56),
  0,
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI8S7856C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C20D1Ev,_ZTv0_n44_N8S7856C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C20D0Ev,_ZTv0_n44_N8S7856C20D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C20D1Ev,_ZTv0_n32_N8S7856C20D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C20D0Ev,_ZTv0_n32_N8S7856C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C20__7S7856C3[] = {
  ABISELECT(96,48),
  ABISELECT(-120,-68),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-120,-68),
  ABISELECT(9,5),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI8S7856C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C20D1Ev,_ZTv0_n32_N8S7856C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C20D0Ev,_ZTv0_n32_N8S7856C20D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C20__7S7856C3[] = {
  ABISELECT(-136,-76),
  ABISELECT(-7,-3),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S7856C20[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C20D1Ev,_ZTv0_n32_N8S7856C20D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C20D0Ev,_ZTv0_n32_N8S7856C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__8S7856C20__7S7856C3[] = {
  ABISELECT(64,32),
  ABISELECT(-152,-84),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-152,-84),
  ABISELECT(-23,-11),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S7856C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C20D1Ev,_ZTv0_n32_N8S7856C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C20D0Ev,_ZTv0_n32_N8S7856C20D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C20D1Ev,_ZTv0_n44_N8S7856C20D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C20D0Ev,_ZTv0_n44_N8S7856C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C20__7S7856C3[] = {
  ABISELECT(48,24),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-168,-92),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-168,-92),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S7856C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C20D1Ev,_ZTv0_n44_N8S7856C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C20D0Ev,_ZTv0_n44_N8S7856C20D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C20__7S7856C3[] = {
  ABISELECT(-240,-128),
  ABISELECT(-136,-72),
  ABISELECT(-240,-128),
  ABISELECT(-111,-55),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7856C20[0]),
};
extern void ABISELECT(_ZThn40_N8S7856C20D1Ev,_ZThn20_N8S7856C20D1Ev)();
extern void ABISELECT(_ZThn40_N8S7856C20D0Ev,_ZThn20_N8S7856C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C21__8S7856C20__7S7856C3[] = {
  ABISELECT(-256,-136),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S7856C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S7856C20D1Ev,_ZThn20_N8S7856C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S7856C20D0Ev,_ZThn20_N8S7856C20D0Ev),
};
extern void _ZN8S7856C23D1Ev();
extern void _ZN8S7856C23D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C23__7S7856C3[] = {
  ABISELECT(-216,-116),
  ABISELECT(192,100),
  ABISELECT(-264,-140),
  ABISELECT(184,96),
  ABISELECT(136,72),
  ABISELECT(-80,-40),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-264,-140),
  ABISELECT(-112,-56),
  ABISELECT(-128,-64),
  ABISELECT(-144,-72),
  ABISELECT(-160,-84),
  ABISELECT(-192,-100),
  ABISELECT(-264,-140),
  ABISELECT(-160,-84),
  ABISELECT(-160,-84),
  ABISELECT(-264,-140),
  ABISELECT(-135,-67),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&_ZN8S7856C23D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C23D0Ev,
};
extern void _ZN8S7856C25D1Ev();
extern void _ZN8S7856C25D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C258S7856C23__7S7856C3[] = {
  ABISELECT(-264,-140),
  ABISELECT(184,96),
  ABISELECT(136,72),
  ABISELECT(-80,-40),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-264,-140),
  ABISELECT(-112,-56),
  ABISELECT(-128,-64),
  ABISELECT(-144,-72),
  ABISELECT(-160,-84),
  ABISELECT(-192,-100),
  ABISELECT(-264,-140),
  ABISELECT(-160,-84),
  ABISELECT(-160,-84),
  ABISELECT(-264,-140),
  ABISELECT(-135,-67),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&_ZN8S7856C25D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C25D0Ev,
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C138S7856C258S7856C23__A2__7S7856C3[] = {
  ABISELECT(-264,-140),
  ABISELECT(-160,-84),
  ABISELECT(-160,-84),
  ABISELECT(-264,-140),
  ABISELECT(-135,-67),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C138S7856C258S7856C23__A8__7S7856C3[] = {
  ABISELECT(-264,-140),
  ABISELECT(-135,-67),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C138S7856C258S7856C23__A2__7S7856C3[] = {
  ABISELECT(-104,-56),
  0,
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C268S7856C258S7856C23__7S7856C3[] = {
  ABISELECT(-280,-148),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C26[0]),
};
extern void _ZN7S7856C4D1Ev();
extern void _ZN7S7856C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C48S7856C258S7856C23__A1__7S7856C3[] = {
  ABISELECT(-104,-52),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-288,-152),
  ABISELECT(-136,-68),
  ABISELECT(-152,-76),
  ABISELECT(-184,-96),
  ABISELECT(-168,-84),
  ABISELECT(-184,-96),
  ABISELECT(-216,-112),
  ABISELECT(-288,-152),
  ABISELECT(-184,-96),
  ABISELECT(-288,-152),
  ABISELECT(-159,-79),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&_ZN7S7856C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C4D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C107S7856C48S7856C258S7856C23__A7__7S7856C3[] = {
  ABISELECT(-288,-152),
  ABISELECT(-184,-96),
  ABISELECT(-288,-152),
  ABISELECT(-159,-79),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C107S7856C48S7856C258S7856C23__A7__7S7856C3[] = {
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(184,96),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void _ZN8S7856C19D1Ev();
extern void _ZN8S7856C19D0Ev();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C3[] = {
  ABISELECT(-112,-56),
  ABISELECT(-144,-72),
  ABISELECT(-160,-80),
  ABISELECT(-192,-100),
  ABISELECT(-176,-88),
  ABISELECT(-296,-156),
  ABISELECT(-192,-100),
  ABISELECT(-296,-156),
  ABISELECT(-167,-83),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&_ZN8S7856C19D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C19D0Ev,
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void _ZN7S7856C6D1Ev();
extern void _ZN7S7856C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C68S7856C197S7856C48S7856C258S7856C23__A2__7S7856C3[] = {
  ABISELECT(-144,-72),
  ABISELECT(-160,-80),
  ABISELECT(-192,-100),
  ABISELECT(-176,-88),
  ABISELECT(-296,-156),
  ABISELECT(-192,-100),
  ABISELECT(-296,-156),
  ABISELECT(-167,-83),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&_ZN7S7856C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C6D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C68S7856C197S7856C48S7856C258S7856C23__A2__7S7856C3[] = {
  ABISELECT(176,88),
  ABISELECT(-120,-68),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-120,-68),
  ABISELECT(9,5),
  ABISELECT(176,88),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C68S7856C197S7856C48S7856C258S7856C23__A2__7S7856C3[] = {
  ABISELECT(-104,-56),
  0,
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C68S7856C197S7856C48S7856C258S7856C23__A2__7S7856C3[] = {
  ABISELECT(-136,-76),
  ABISELECT(-7,-3),
  ABISELECT(160,80),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C68S7856C197S7856C48S7856C258S7856C23__A2__7S7856C3[] = {
  ABISELECT(144,72),
  ABISELECT(-152,-84),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-152,-84),
  ABISELECT(-23,-11),
  ABISELECT(144,72),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C3[] = {
  ABISELECT(176,88),
  ABISELECT(-120,-68),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-120,-68),
  ABISELECT(9,5),
  ABISELECT(176,88),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C3[] = {
  ABISELECT(-104,-56),
  0,
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C3[] = {
  ABISELECT(-136,-76),
  ABISELECT(-7,-3),
  ABISELECT(160,80),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C3[] = {
  ABISELECT(144,72),
  ABISELECT(-152,-84),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-152,-84),
  ABISELECT(-23,-11),
  ABISELECT(144,72),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev),
};
extern void ABISELECT(_ZTv0_n72_N8S7856C19D1Ev,_ZTv0_n36_N8S7856C19D1Ev)();
extern void ABISELECT(_ZTv0_n72_N8S7856C19D0Ev,_ZTv0_n36_N8S7856C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C18__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C3[] = {
  ABISELECT(112,56),
  ABISELECT(-184,-100),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-184,-100),
  ABISELECT(-55,-27),
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C19D1Ev,_ZTv0_n36_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C19D0Ev,_ZTv0_n36_N8S7856C19D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C3[] = {
  ABISELECT(-200,-108),
  ABISELECT(-96,-52),
  ABISELECT(-200,-108),
  ABISELECT(-71,-35),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
extern void ABISELECT(_ZTv0_n120_N7S7856C4D1Ev,_ZTv0_n60_N7S7856C4D1Ev)();
extern void ABISELECT(_ZTv0_n120_N7S7856C4D0Ev,_ZTv0_n60_N7S7856C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__7S7856C48S7856C258S7856C23__A1__7S7856C3[] = {
  ABISELECT(216,112),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-72,-40),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-72,-40),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-72,-40),
  ABISELECT(57,33),
  ABISELECT(216,112),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C4D1Ev,_ZTv0_n60_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C4D0Ev,_ZTv0_n60_N7S7856C4D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C48S7856C258S7856C23__A1__7S7856C3[] = {
  ABISELECT(184,96),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-104,-56),
  0,
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(184,96),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C48S7856C258S7856C23__A1__7S7856C3[] = {
  ABISELECT(168,84),
  ABISELECT(-120,-68),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-120,-68),
  ABISELECT(9,5),
  ABISELECT(168,84),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C48S7856C258S7856C23__A1__7S7856C3[] = {
  ABISELECT(-136,-76),
  ABISELECT(-7,-3),
  ABISELECT(152,76),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C48S7856C258S7856C23__A1__7S7856C3[] = {
  ABISELECT(136,68),
  ABISELECT(-152,-84),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-152,-84),
  ABISELECT(-23,-11),
  ABISELECT(136,68),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C48S7856C258S7856C23__A1__7S7856C3[] = {
  ABISELECT(120,60),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-168,-92),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-168,-92),
  ABISELECT(120,60),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__7S7856C48S7856C258S7856C23__A1__7S7856C3[] = {
  ABISELECT(-88,-48),
  ABISELECT(16,8),
  ABISELECT(-88,-48),
  ABISELECT(41,25),
  ABISELECT(200,104),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
extern void ABISELECT(_ZThn8_N7S7856C4D1Ev,_ZThn4_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn8_N7S7856C4D0Ev,_ZThn4_N7S7856C4D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C19__7S7856C48S7856C258S7856C23__A1__7S7856C3[] = {
  ABISELECT(-112,-56),
  ABISELECT(-144,-72),
  ABISELECT(-160,-80),
  ABISELECT(-192,-100),
  ABISELECT(-176,-88),
  ABISELECT(-296,-156),
  ABISELECT(-192,-100),
  ABISELECT(-296,-156),
  ABISELECT(-167,-83),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7856C4D1Ev,_ZThn4_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7856C4D0Ev,_ZThn4_N7S7856C4D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N7S7856C4D1Ev,_ZTv0_n36_N7S7856C4D1Ev)();
extern void ABISELECT(_ZTv0_n72_N7S7856C4D0Ev,_ZTv0_n36_N7S7856C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C18__A1__7S7856C48S7856C258S7856C23__A1__7S7856C3[] = {
  ABISELECT(104,52),
  ABISELECT(-184,-100),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-184,-100),
  ABISELECT(-55,-27),
  ABISELECT(104,52),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7856C4D1Ev,_ZTv0_n36_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7856C4D0Ev,_ZTv0_n36_N7S7856C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A3__7S7856C48S7856C258S7856C23__A1__7S7856C3[] = {
  ABISELECT(-200,-108),
  ABISELECT(-96,-52),
  ABISELECT(-200,-108),
  ABISELECT(-71,-35),
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
extern void _ZN7S7856C5D1Ev();
extern void _ZN7S7856C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C58S7856C258S7856C23__A3__7S7856C3[] = {
  ABISELECT(-144,-76),
  ABISELECT(-144,-76),
  ABISELECT(-312,-168),
  ABISELECT(-176,-92),
  ABISELECT(-192,-100),
  ABISELECT(-208,-112),
  ABISELECT(-312,-168),
  ABISELECT(-208,-112),
  ABISELECT(-208,-112),
  ABISELECT(-160,-84),
  ABISELECT(-312,-168),
  ABISELECT(-183,-95),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&_ZN7S7856C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C5D0Ev,
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C187S7856C58S7856C258S7856C23__A4__7S7856C3[] = {
  ABISELECT(-312,-168),
  ABISELECT(-208,-112),
  ABISELECT(-208,-112),
  ABISELECT(-160,-84),
  ABISELECT(-312,-168),
  ABISELECT(-183,-95),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C187S7856C58S7856C258S7856C23__A5__7S7856C3[] = {
  ABISELECT(-312,-168),
  ABISELECT(-183,-95),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C187S7856C58S7856C258S7856C23__A10__7S7856C3[] = {
  ABISELECT(-312,-168),
  ABISELECT(-183,-95),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C58S7856C258S7856C23__A8__7S7856C3[] = {
  ABISELECT(-328,-176),
  ABISELECT(-224,-120),
  ABISELECT(-328,-176),
  ABISELECT(-199,-103),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C187S7856C58S7856C258S7856C23__A8__7S7856C3[] = {
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(224,120),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C187S7856C58S7856C258S7856C23__A4__7S7856C3[] = {
  ABISELECT(160,84),
  ABISELECT(-152,-84),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-152,-84),
  ABISELECT(-23,-11),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C187S7856C58S7856C258S7856C23__A4__7S7856C3[] = {
  ABISELECT(-104,-56),
  0,
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(208,112),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C187S7856C58S7856C258S7856C23__A4__7S7856C3[] = {
  ABISELECT(-328,-176),
  ABISELECT(-224,-120),
  ABISELECT(-328,-176),
  ABISELECT(-199,-103),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C58S7856C258S7856C23__A3__7S7856C3[] = {
  ABISELECT(208,112),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-104,-56),
  0,
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(208,112),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C58S7856C258S7856C23__A3__7S7856C3[] = {
  ABISELECT(192,100),
  ABISELECT(-120,-68),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-120,-68),
  ABISELECT(9,5),
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C58S7856C258S7856C23__A3__7S7856C3[] = {
  ABISELECT(-136,-76),
  ABISELECT(-7,-3),
  ABISELECT(176,92),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C58S7856C258S7856C23__A3__7S7856C3[] = {
  ABISELECT(160,84),
  ABISELECT(-152,-84),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-152,-84),
  ABISELECT(-23,-11),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C58S7856C258S7856C23__A3__7S7856C3[] = {
  ABISELECT(144,76),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-168,-92),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-168,-92),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__7S7856C58S7856C258S7856C23__A3__7S7856C3[] = {
  ABISELECT(-328,-176),
  ABISELECT(-224,-120),
  ABISELECT(-328,-176),
  ABISELECT(-199,-103),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C25D1Ev,_ZTv0_n44_N8S7856C25D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C25D0Ev,_ZTv0_n44_N8S7856C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C258S7856C23__7S7856C3[] = {
  ABISELECT(160,84),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-104,-56),
  0,
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C25D1Ev,_ZTv0_n44_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C25D0Ev,_ZTv0_n44_N8S7856C25D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C26__8S7856C258S7856C23__7S7856C3[] = {
  ABISELECT(-280,-148),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
};
extern void ABISELECT(_ZThn24_N8S7856C25D1Ev,_ZThn12_N8S7856C25D1Ev)();
extern void ABISELECT(_ZThn24_N8S7856C25D0Ev,_ZThn12_N8S7856C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C4__8S7856C258S7856C23__7S7856C3[] = {
  ABISELECT(-104,-52),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-288,-152),
  ABISELECT(-136,-68),
  ABISELECT(-152,-76),
  ABISELECT(-184,-96),
  ABISELECT(-168,-84),
  ABISELECT(-184,-96),
  ABISELECT(-216,-112),
  ABISELECT(-288,-152),
  ABISELECT(-184,-96),
  ABISELECT(-288,-152),
  ABISELECT(-159,-79),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S7856C25D1Ev,_ZThn12_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S7856C25D0Ev,_ZThn12_N8S7856C25D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S7856C25D1Ev,_ZTv0_n60_N8S7856C25D1Ev)();
extern void ABISELECT(_ZTv0_n120_N8S7856C25D0Ev,_ZTv0_n60_N8S7856C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__8S7856C258S7856C23__7S7856C3[] = {
  ABISELECT(192,100),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-72,-40),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-72,-40),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-72,-40),
  ABISELECT(57,33),
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C25D1Ev,_ZTv0_n60_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C25D0Ev,_ZTv0_n60_N8S7856C25D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C25D1Ev,_ZTv0_n32_N8S7856C25D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C25D0Ev,_ZTv0_n32_N8S7856C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C258S7856C23__7S7856C3[] = {
  ABISELECT(144,72),
  ABISELECT(-120,-68),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-120,-68),
  ABISELECT(9,5),
  ABISELECT(144,72),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C25D1Ev,_ZTv0_n32_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C25D0Ev,_ZTv0_n32_N8S7856C25D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C258S7856C23__7S7856C3[] = {
  ABISELECT(-136,-76),
  ABISELECT(-7,-3),
  ABISELECT(128,64),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C25D1Ev,_ZTv0_n32_N8S7856C25D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C25D0Ev,_ZTv0_n32_N8S7856C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A2__8S7856C258S7856C23__7S7856C3[] = {
  ABISELECT(112,56),
  ABISELECT(-152,-84),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-152,-84),
  ABISELECT(-23,-11),
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C25D1Ev,_ZTv0_n32_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C25D0Ev,_ZTv0_n32_N8S7856C25D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C25D1Ev,_ZTv0_n44_N8S7856C25D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C25D0Ev,_ZTv0_n44_N8S7856C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C258S7856C23__7S7856C3[] = {
  ABISELECT(96,48),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-168,-92),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-168,-92),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C25D1Ev,_ZTv0_n44_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C25D0Ev,_ZTv0_n44_N8S7856C25D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C258S7856C23__7S7856C3[] = {
  ABISELECT(-88,-48),
  ABISELECT(16,8),
  ABISELECT(-88,-48),
  ABISELECT(41,25),
  ABISELECT(176,92),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
};
extern void ABISELECT(_ZThn32_N8S7856C25D1Ev,_ZThn16_N8S7856C25D1Ev)();
extern void ABISELECT(_ZThn32_N8S7856C25D0Ev,_ZThn16_N8S7856C25D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C197S7856C4__8S7856C258S7856C23__7S7856C3[] = {
  ABISELECT(-112,-56),
  ABISELECT(-144,-72),
  ABISELECT(-160,-80),
  ABISELECT(-192,-100),
  ABISELECT(-176,-88),
  ABISELECT(-296,-156),
  ABISELECT(-192,-100),
  ABISELECT(-296,-156),
  ABISELECT(-167,-83),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S7856C25D1Ev,_ZThn16_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S7856C25D0Ev,_ZThn16_N8S7856C25D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N8S7856C25D1Ev,_ZTv0_n36_N8S7856C25D1Ev)();
extern void ABISELECT(_ZTv0_n72_N8S7856C25D0Ev,_ZTv0_n36_N8S7856C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C18__A1__8S7856C258S7856C23__7S7856C3[] = {
  ABISELECT(80,40),
  ABISELECT(-184,-100),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-184,-100),
  ABISELECT(-55,-27),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C25D1Ev,_ZTv0_n36_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C25D0Ev,_ZTv0_n36_N8S7856C25D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A3__8S7856C258S7856C23__7S7856C3[] = {
  ABISELECT(-200,-108),
  ABISELECT(-96,-52),
  ABISELECT(-200,-108),
  ABISELECT(-71,-35),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
};
extern void ABISELECT(_ZTv0_n144_N8S7856C25D1Ev,_ZTv0_n72_N8S7856C25D1Ev)();
extern void ABISELECT(_ZThn136_N8S7856C25D1Ev,_ZThn72_N8S7856C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N8S7856C25D0Ev,_ZTv0_n72_N8S7856C25D0Ev)();
extern void ABISELECT(_ZThn136_N8S7856C25D0Ev,_ZThn72_N8S7856C25D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C27__8S7856C258S7856C23__7S7856C3[] = {
  ABISELECT(-136,-72),
  ABISELECT(-400,-212),
  ABISELECT(-232,-120),
  ABISELECT(-400,-212),
  ABISELECT(-248,-128),
  ABISELECT(-296,-156),
  ABISELECT(-328,-172),
  ABISELECT(48,24),
  ABISELECT(-296,-156),
  ABISELECT(-280,-144),
  ABISELECT(-264,-136),
  ABISELECT(-232,-120),
  ABISELECT(-400,-212),
  ABISELECT(-271,-139),
  ABISELECT(-296,-156),
  ABISELECT(-400,-212),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S7856C25D1Ev,_ZTv0_n72_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S7856C25D0Ev,_ZTv0_n72_N8S7856C25D0Ev),
};
extern void ABISELECT(_ZTvn16_n144_N8S7856C25D1Ev,_ZTvn8_n72_N8S7856C25D1Ev)();
extern void ABISELECT(_ZTvn16_n144_N8S7856C25D0Ev,_ZTvn8_n72_N8S7856C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C288S7856C27__8S7856C258S7856C23__7S7856C3[] = {
  ABISELECT(-248,-128),
  ABISELECT(-248,-128),
  ABISELECT(-416,-220),
  ABISELECT(-264,-136),
  ABISELECT(-312,-164),
  ABISELECT(-344,-180),
  ABISELECT(-296,-152),
  ABISELECT(32,16),
  ABISELECT(-280,-144),
  ABISELECT(-416,-220),
  ABISELECT(-312,-164),
  ABISELECT(-312,-164),
  ABISELECT(-416,-220),
  ABISELECT(-287,-147),
  ABISELECT(-152,-80),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n144_N8S7856C25D1Ev,_ZTvn8_n72_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n144_N8S7856C25D0Ev,_ZTvn8_n72_N8S7856C25D0Ev),
};
extern void ABISELECT(_ZTv0_n128_N8S7856C25D1Ev,_ZTv0_n64_N8S7856C25D1Ev)();
extern void ABISELECT(_ZThn184_N8S7856C25D1Ev,_ZThn96_N8S7856C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S7856C25D0Ev,_ZTv0_n64_N8S7856C25D0Ev)();
extern void ABISELECT(_ZThn184_N8S7856C25D0Ev,_ZThn96_N8S7856C25D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C29__8S7856C258S7856C23__7S7856C3[] = {
  ABISELECT(-184,-96),
  ABISELECT(-280,-144),
  ABISELECT(-280,-144),
  ABISELECT(-448,-236),
  ABISELECT(-296,-152),
  ABISELECT(-312,-160),
  ABISELECT(-344,-180),
  ABISELECT(-376,-196),
  ABISELECT(-344,-180),
  ABISELECT(-328,-168),
  ABISELECT(-448,-236),
  ABISELECT(-344,-180),
  ABISELECT(-448,-236),
  ABISELECT(-319,-163),
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C25D1Ev,_ZTv0_n64_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C25D0Ev,_ZTv0_n64_N8S7856C25D0Ev),
};
extern void ABISELECT(_ZTvn32_n144_N8S7856C25D1Ev,_ZTvn16_n72_N8S7856C25D1Ev)();
extern void ABISELECT(_ZTvn32_n144_N8S7856C25D0Ev,_ZTvn16_n72_N8S7856C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C218S7856C288S7856C27__8S7856C258S7856C23__7S7856C3[] = {
  ABISELECT(-432,-228),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n144_N8S7856C25D1Ev,_ZTvn16_n72_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n144_N8S7856C25D0Ev,_ZTvn16_n72_N8S7856C25D0Ev),
};
extern void ABISELECT(_ZThn48_N8S7856C25D1Ev,_ZThn28_N8S7856C25D1Ev)();
extern void ABISELECT(_ZThn48_N8S7856C25D0Ev,_ZThn28_N8S7856C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__A__8S7856C258S7856C23__7S7856C3[] = {
  ABISELECT(-144,-76),
  ABISELECT(-144,-76),
  ABISELECT(-312,-168),
  ABISELECT(-176,-92),
  ABISELECT(-192,-100),
  ABISELECT(-208,-112),
  ABISELECT(-312,-168),
  ABISELECT(-208,-112),
  ABISELECT(-208,-112),
  ABISELECT(-160,-84),
  ABISELECT(-312,-168),
  ABISELECT(-183,-95),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7856C25D1Ev,_ZThn28_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7856C25D0Ev,_ZThn28_N8S7856C25D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A4__8S7856C258S7856C23__7S7856C3[] = {
  ABISELECT(-328,-176),
  ABISELECT(-224,-120),
  ABISELECT(-328,-176),
  ABISELECT(-199,-103),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C138S7856C23__A4__7S7856C3[] = {
  ABISELECT(-344,-184),
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  ABISELECT(-344,-184),
  ABISELECT(-215,-111),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C138S7856C23__A11__7S7856C3[] = {
  ABISELECT(-344,-184),
  ABISELECT(-215,-111),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C138S7856C23__A4__7S7856C3[] = {
  ABISELECT(-104,-56),
  0,
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(240,128),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C23__7S7856C3[] = {
  ABISELECT(-136,-76),
  ABISELECT(-7,-3),
  ABISELECT(128,64),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C23D1Ev,_ZTv0_n44_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C23D0Ev,_ZTv0_n44_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C23__7S7856C3[] = {
  ABISELECT(160,84),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-104,-56),
  0,
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C23D1Ev,_ZTv0_n44_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C23D0Ev,_ZTv0_n44_N8S7856C23D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C268S7856C25__8S7856C23__7S7856C3[] = {
  ABISELECT(-280,-148),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
};
extern void ABISELECT(_ZThn24_N8S7856C23D1Ev,_ZThn12_N8S7856C23D1Ev)();
extern void ABISELECT(_ZThn24_N8S7856C23D0Ev,_ZThn12_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C48S7856C25__8S7856C23__7S7856C3[] = {
  ABISELECT(-104,-52),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-288,-152),
  ABISELECT(-136,-68),
  ABISELECT(-152,-76),
  ABISELECT(-184,-96),
  ABISELECT(-168,-84),
  ABISELECT(-184,-96),
  ABISELECT(-216,-112),
  ABISELECT(-288,-152),
  ABISELECT(-184,-96),
  ABISELECT(-288,-152),
  ABISELECT(-159,-79),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S7856C23D1Ev,_ZThn12_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S7856C23D0Ev,_ZThn12_N8S7856C23D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S7856C23D1Ev,_ZTv0_n60_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTv0_n120_N8S7856C23D0Ev,_ZTv0_n60_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__8S7856C23__7S7856C3[] = {
  ABISELECT(192,100),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-72,-40),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-72,-40),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-72,-40),
  ABISELECT(57,33),
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C23D1Ev,_ZTv0_n60_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C23D0Ev,_ZTv0_n60_N8S7856C23D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C23D1Ev,_ZTv0_n32_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C23D0Ev,_ZTv0_n32_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C23__7S7856C3[] = {
  ABISELECT(144,72),
  ABISELECT(-120,-68),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-120,-68),
  ABISELECT(9,5),
  ABISELECT(144,72),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C23D1Ev,_ZTv0_n32_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C23D0Ev,_ZTv0_n32_N8S7856C23D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C23D1Ev,_ZTv0_n32_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C23D0Ev,_ZTv0_n32_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A2__8S7856C23__7S7856C3[] = {
  ABISELECT(112,56),
  ABISELECT(-152,-84),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-152,-84),
  ABISELECT(-23,-11),
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C23D1Ev,_ZTv0_n32_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C23D0Ev,_ZTv0_n32_N8S7856C23D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C23D1Ev,_ZTv0_n44_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C23D0Ev,_ZTv0_n44_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C23__7S7856C3[] = {
  ABISELECT(96,48),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-168,-92),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-168,-92),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C23D1Ev,_ZTv0_n44_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C23D0Ev,_ZTv0_n44_N8S7856C23D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C23__7S7856C3[] = {
  ABISELECT(-88,-48),
  ABISELECT(16,8),
  ABISELECT(-88,-48),
  ABISELECT(41,25),
  ABISELECT(176,92),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
};
extern void ABISELECT(_ZThn32_N8S7856C23D1Ev,_ZThn16_N8S7856C23D1Ev)();
extern void ABISELECT(_ZThn32_N8S7856C23D0Ev,_ZThn16_N8S7856C23D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C197S7856C48S7856C25__8S7856C23__7S7856C3[] = {
  ABISELECT(-112,-56),
  ABISELECT(-144,-72),
  ABISELECT(-160,-80),
  ABISELECT(-192,-100),
  ABISELECT(-176,-88),
  ABISELECT(-296,-156),
  ABISELECT(-192,-100),
  ABISELECT(-296,-156),
  ABISELECT(-167,-83),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S7856C23D1Ev,_ZThn16_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S7856C23D0Ev,_ZThn16_N8S7856C23D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N8S7856C23D1Ev,_ZTv0_n36_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTv0_n72_N8S7856C23D0Ev,_ZTv0_n36_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C18__A1__8S7856C23__7S7856C3[] = {
  ABISELECT(80,40),
  ABISELECT(-184,-100),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-184,-100),
  ABISELECT(-55,-27),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C23D1Ev,_ZTv0_n36_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C23D0Ev,_ZTv0_n36_N8S7856C23D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A3__8S7856C23__7S7856C3[] = {
  ABISELECT(-200,-108),
  ABISELECT(-96,-52),
  ABISELECT(-200,-108),
  ABISELECT(-71,-35),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
};
extern void ABISELECT(_ZTv0_n144_N8S7856C23D1Ev,_ZTv0_n72_N8S7856C23D1Ev)();
extern void ABISELECT(_ZThn136_N8S7856C23D1Ev,_ZThn72_N8S7856C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N8S7856C23D0Ev,_ZTv0_n72_N8S7856C23D0Ev)();
extern void ABISELECT(_ZThn136_N8S7856C23D0Ev,_ZThn72_N8S7856C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C27__8S7856C23__7S7856C3[] = {
  ABISELECT(-136,-72),
  ABISELECT(-400,-212),
  ABISELECT(-232,-120),
  ABISELECT(-400,-212),
  ABISELECT(-248,-128),
  ABISELECT(-296,-156),
  ABISELECT(-328,-172),
  ABISELECT(48,24),
  ABISELECT(-296,-156),
  ABISELECT(-280,-144),
  ABISELECT(-264,-136),
  ABISELECT(-232,-120),
  ABISELECT(-400,-212),
  ABISELECT(-271,-139),
  ABISELECT(-296,-156),
  ABISELECT(-400,-212),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S7856C23D1Ev,_ZTv0_n72_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S7856C23D0Ev,_ZTv0_n72_N8S7856C23D0Ev),
};
extern void ABISELECT(_ZTvn16_n144_N8S7856C23D1Ev,_ZTvn8_n72_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTvn16_n144_N8S7856C23D0Ev,_ZTvn8_n72_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C288S7856C27__8S7856C23__7S7856C3[] = {
  ABISELECT(-248,-128),
  ABISELECT(-248,-128),
  ABISELECT(-416,-220),
  ABISELECT(-264,-136),
  ABISELECT(-312,-164),
  ABISELECT(-344,-180),
  ABISELECT(-296,-152),
  ABISELECT(32,16),
  ABISELECT(-280,-144),
  ABISELECT(-416,-220),
  ABISELECT(-312,-164),
  ABISELECT(-312,-164),
  ABISELECT(-416,-220),
  ABISELECT(-287,-147),
  ABISELECT(-152,-80),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n144_N8S7856C23D1Ev,_ZTvn8_n72_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n144_N8S7856C23D0Ev,_ZTvn8_n72_N8S7856C23D0Ev),
};
extern void ABISELECT(_ZTv0_n128_N8S7856C23D1Ev,_ZTv0_n64_N8S7856C23D1Ev)();
extern void ABISELECT(_ZThn184_N8S7856C23D1Ev,_ZThn96_N8S7856C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S7856C23D0Ev,_ZTv0_n64_N8S7856C23D0Ev)();
extern void ABISELECT(_ZThn184_N8S7856C23D0Ev,_ZThn96_N8S7856C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C29__8S7856C23__7S7856C3[] = {
  ABISELECT(-184,-96),
  ABISELECT(-280,-144),
  ABISELECT(-280,-144),
  ABISELECT(-448,-236),
  ABISELECT(-296,-152),
  ABISELECT(-312,-160),
  ABISELECT(-344,-180),
  ABISELECT(-376,-196),
  ABISELECT(-344,-180),
  ABISELECT(-328,-168),
  ABISELECT(-448,-236),
  ABISELECT(-344,-180),
  ABISELECT(-448,-236),
  ABISELECT(-319,-163),
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C23D1Ev,_ZTv0_n64_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C23D0Ev,_ZTv0_n64_N8S7856C23D0Ev),
};
extern void ABISELECT(_ZTvn32_n144_N8S7856C23D1Ev,_ZTvn16_n72_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTvn32_n144_N8S7856C23D0Ev,_ZTvn16_n72_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C218S7856C288S7856C27__8S7856C23__7S7856C3[] = {
  ABISELECT(-432,-228),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n144_N8S7856C23D1Ev,_ZTvn16_n72_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n144_N8S7856C23D0Ev,_ZTvn16_n72_N8S7856C23D0Ev),
};
extern void ABISELECT(_ZThn48_N8S7856C23D1Ev,_ZThn28_N8S7856C23D1Ev)();
extern void ABISELECT(_ZThn48_N8S7856C23D0Ev,_ZThn28_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C58S7856C25__A1__8S7856C23__7S7856C3[] = {
  ABISELECT(-144,-76),
  ABISELECT(-144,-76),
  ABISELECT(-312,-168),
  ABISELECT(-176,-92),
  ABISELECT(-192,-100),
  ABISELECT(-208,-112),
  ABISELECT(-312,-168),
  ABISELECT(-208,-112),
  ABISELECT(-208,-112),
  ABISELECT(-160,-84),
  ABISELECT(-312,-168),
  ABISELECT(-183,-95),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7856C23D1Ev,_ZThn28_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7856C23D0Ev,_ZThn28_N8S7856C23D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C58S7856C25__A4__8S7856C23__7S7856C3[] = {
  ABISELECT(-328,-176),
  ABISELECT(-224,-120),
  ABISELECT(-328,-176),
  ABISELECT(-199,-103),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
};
extern void ABISELECT(_ZThn80_N8S7856C23D1Ev,_ZThn44_N8S7856C23D1Ev)();
extern void ABISELECT(_ZThn80_N8S7856C23D0Ev,_ZThn44_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A__8S7856C23__7S7856C3[] = {
  ABISELECT(-344,-184),
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  ABISELECT(-344,-184),
  ABISELECT(-215,-111),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S7856C23D1Ev,_ZThn44_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S7856C23D0Ev,_ZThn44_N8S7856C23D0Ev),
};
extern void ABISELECT(_ZTv0_n144_N8S7856C23D1Ev,_ZTv0_n72_N8S7856C23D1Ev)();
extern void ABISELECT(_ZThn192_N8S7856C23D1Ev,_ZThn100_N8S7856C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N8S7856C23D0Ev,_ZTv0_n72_N8S7856C23D0Ev)();
extern void ABISELECT(_ZThn192_N8S7856C23D0Ev,_ZThn100_N8S7856C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C22__8S7856C23__7S7856C3[] = {
  ABISELECT(-192,-100),
  ABISELECT(-272,-140),
  ABISELECT(-384,-200),
  ABISELECT(-408,-216),
  ABISELECT(-288,-148),
  ABISELECT(-288,-148),
  ABISELECT(-456,-240),
  ABISELECT(-304,-156),
  ABISELECT(-320,-164),
  ABISELECT(-352,-184),
  ABISELECT(-336,-172),
  ABISELECT(-352,-184),
  ABISELECT(-456,-240),
  ABISELECT(-352,-184),
  ABISELECT(-456,-240),
  ABISELECT(-327,-167),
  ABISELECT(-192,-100),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S7856C23D1Ev,_ZTv0_n72_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S7856C23D0Ev,_ZTv0_n72_N8S7856C23D0Ev),
};
extern void ABISELECT(_ZTvn8_n144_N8S7856C23D1Ev,_ZTvn4_n72_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTvn8_n144_N8S7856C23D0Ev,_ZTvn4_n72_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C58S7856C22__A2__8S7856C23__7S7856C3[] = {
  ABISELECT(-296,-152),
  ABISELECT(-296,-152),
  ABISELECT(-464,-244),
  ABISELECT(-328,-168),
  ABISELECT(-344,-176),
  ABISELECT(-360,-188),
  ABISELECT(-464,-244),
  ABISELECT(-360,-188),
  ABISELECT(-360,-188),
  ABISELECT(-312,-160),
  ABISELECT(-464,-244),
  ABISELECT(-335,-171),
  ABISELECT(-200,-104),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n144_N8S7856C23D1Ev,_ZTvn4_n72_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n144_N8S7856C23D0Ev,_ZTvn4_n72_N8S7856C23D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C58S7856C22__A6__8S7856C23__7S7856C3[] = {
  ABISELECT(-480,-252),
  ABISELECT(-376,-196),
  ABISELECT(-480,-252),
  ABISELECT(-351,-179),
  ABISELECT(-216,-112),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
};
extern void ABISELECT(_ZTv0_n136_N8S7856C23D1Ev,_ZTv0_n68_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTv0_n136_N8S7856C23D0Ev,_ZTv0_n68_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C4__A1__8S7856C23__7S7856C3[] = {
  ABISELECT(8,4),
  ABISELECT(216,116),
  ABISELECT(136,76),
  ABISELECT(120,68),
  ABISELECT(120,68),
  ABISELECT(-48,-24),
  ABISELECT(104,60),
  ABISELECT(88,52),
  ABISELECT(56,32),
  ABISELECT(72,44),
  ABISELECT(56,32),
  ABISELECT(24,16),
  ABISELECT(-48,-24),
  ABISELECT(56,32),
  ABISELECT(-48,-24),
  ABISELECT(81,49),
  ABISELECT(216,116),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S7856C23D1Ev,_ZTv0_n68_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S7856C23D0Ev,_ZTv0_n68_N8S7856C23D0Ev),
};
extern void ABISELECT(_ZTvn8_n136_N8S7856C23D1Ev,_ZTvn4_n68_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTvn8_n136_N8S7856C23D0Ev,_ZTvn4_n68_N8S7856C23D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C197S7856C4__A1__8S7856C23__7S7856C3[] = {
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(48,28),
  ABISELECT(64,40),
  ABISELECT(-56,-28),
  ABISELECT(48,28),
  ABISELECT(-56,-28),
  ABISELECT(73,45),
  ABISELECT(208,112),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N8S7856C23D1Ev,_ZTvn4_n68_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N8S7856C23D0Ev,_ZTvn4_n68_N8S7856C23D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void _ZN8S7856C27D1Ev();
extern void _ZN8S7856C27D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C27__7S7856C3[] = {
  ABISELECT(-400,-212),
  ABISELECT(-232,-120),
  ABISELECT(-400,-212),
  ABISELECT(-248,-128),
  ABISELECT(-296,-156),
  ABISELECT(-328,-172),
  ABISELECT(48,24),
  ABISELECT(-296,-156),
  ABISELECT(-280,-144),
  ABISELECT(-264,-136),
  ABISELECT(-232,-120),
  ABISELECT(-400,-212),
  ABISELECT(-271,-139),
  ABISELECT(-296,-156),
  ABISELECT(-400,-212),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&_ZN8S7856C27D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C27D0Ev,
};
extern void _ZN8S7856C16D1Ev();
extern void _ZN8S7856C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C168S7856C27__A1__7S7856C3[] = {
  ABISELECT(-296,-156),
  ABISELECT(-280,-144),
  ABISELECT(-264,-136),
  ABISELECT(-232,-120),
  ABISELECT(-400,-212),
  ABISELECT(-271,-139),
  ABISELECT(-296,-156),
  ABISELECT(-400,-212),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&_ZN8S7856C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C168S7856C27__A1__7S7856C3[] = {
  ABISELECT(-104,-56),
  0,
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(296,156),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt__8S7856C168S7856C27__A1__7S7856C3[] = {
  ABISELECT(-168,-92),
  ABISELECT(232,120),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C168S7856C27__A1__7S7856C3[] = {
  ABISELECT(-136,-76),
  ABISELECT(-7,-3),
  ABISELECT(264,136),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C168S7856C27__A1__7S7856C3[] = {
  ABISELECT(280,144),
  ABISELECT(-120,-68),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-120,-68),
  ABISELECT(9,5),
  ABISELECT(280,144),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev),
};
extern void _ZN8S7856C28D1Ev();
extern void _ZN8S7856C28D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C288S7856C27__7S7856C3[] = {
  ABISELECT(-248,-128),
  ABISELECT(-248,-128),
  ABISELECT(-416,-220),
  ABISELECT(-264,-136),
  ABISELECT(-312,-164),
  ABISELECT(-344,-180),
  ABISELECT(-296,-152),
  ABISELECT(32,16),
  ABISELECT(-280,-144),
  ABISELECT(-416,-220),
  ABISELECT(-312,-164),
  ABISELECT(-312,-164),
  ABISELECT(-416,-220),
  ABISELECT(-287,-147),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&_ZN8S7856C28D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C28D0Ev,
};
extern void _ZN7S7856C7D1Ev();
extern void _ZN7S7856C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C78S7856C288S7856C27__A1__7S7856C3[] = {
  ABISELECT(-416,-220),
  ABISELECT(-312,-164),
  ABISELECT(-312,-164),
  ABISELECT(-416,-220),
  ABISELECT(-287,-147),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
  (VTBL_ENTRY)&_ZN7S7856C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C7D0Ev,
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C137S7856C78S7856C288S7856C27__A3__7S7856C3[] = {
  ABISELECT(-416,-220),
  ABISELECT(-312,-164),
  ABISELECT(-312,-164),
  ABISELECT(-416,-220),
  ABISELECT(-287,-147),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C137S7856C78S7856C288S7856C27__A9__7S7856C3[] = {
  ABISELECT(-416,-220),
  ABISELECT(-287,-147),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C137S7856C78S7856C288S7856C27__A3__7S7856C3[] = {
  ABISELECT(-104,-56),
  0,
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(312,164),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C78S7856C288S7856C27__A1__7S7856C3[] = {
  ABISELECT(-104,-56),
  0,
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(312,164),
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
};
extern void _ZN8S7856C21D1Ev();
extern void _ZN8S7856C21D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C218S7856C288S7856C27__A1__7S7856C3[] = {
  ABISELECT(-432,-228),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C21[0]),
  (VTBL_ENTRY)&_ZN8S7856C21D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C21D0Ev,
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt8S7856C218S7856C288S7856C27__A3__7S7856C3[] = {
  ABISELECT(-432,-228),
  0,
  (VTBL_ENTRY)&(_ZTI11S7856C17_nt[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C28D1Ev,_ZTv0_n44_N8S7856C28D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C28D0Ev,_ZTv0_n44_N8S7856C28D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C288S7856C27__7S7856C3[] = {
  ABISELECT(312,164),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-104,-56),
  0,
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(312,164),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C28D1Ev,_ZTv0_n44_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C28D0Ev,_ZTv0_n44_N8S7856C28D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C288S7856C27__7S7856C3[] = {
  ABISELECT(-136,-76),
  ABISELECT(-7,-3),
  ABISELECT(280,144),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
};
extern void ABISELECT(_ZTv0_n128_N8S7856C28D1Ev,_ZTv0_n64_N8S7856C28D1Ev)();
extern void ABISELECT(_ZThn32_N8S7856C28D1Ev,_ZThn16_N8S7856C28D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S7856C28D0Ev,_ZTv0_n64_N8S7856C28D0Ev)();
extern void ABISELECT(_ZThn32_N8S7856C28D0Ev,_ZThn16_N8S7856C28D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C29__8S7856C288S7856C27__7S7856C3[] = {
  ABISELECT(-32,-16),
  ABISELECT(-280,-144),
  ABISELECT(-280,-144),
  ABISELECT(-448,-236),
  ABISELECT(-296,-152),
  ABISELECT(-312,-160),
  ABISELECT(-344,-180),
  ABISELECT(-376,-196),
  ABISELECT(-344,-180),
  ABISELECT(-328,-168),
  ABISELECT(-448,-236),
  ABISELECT(-344,-180),
  ABISELECT(-448,-236),
  ABISELECT(-319,-163),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C28D1Ev,_ZTv0_n64_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C28D0Ev,_ZTv0_n64_N8S7856C28D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C28D1Ev,_ZTv0_n32_N8S7856C28D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C28D0Ev,_ZTv0_n32_N8S7856C28D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__A1__8S7856C288S7856C27__7S7856C3[] = {
  ABISELECT(296,152),
  ABISELECT(-120,-68),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-120,-68),
  ABISELECT(9,5),
  ABISELECT(296,152),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C28D1Ev,_ZTv0_n32_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C28D0Ev,_ZTv0_n32_N8S7856C28D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S7856C28D1Ev,_ZTv0_n60_N8S7856C28D1Ev)();
extern void ABISELECT(_ZTv0_n120_N8S7856C28D0Ev,_ZTv0_n60_N8S7856C28D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__8S7856C288S7856C27__7S7856C3[] = {
  ABISELECT(344,180),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-72,-40),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-72,-40),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-72,-40),
  ABISELECT(57,33),
  ABISELECT(344,180),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C28D1Ev,_ZTv0_n60_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C28D0Ev,_ZTv0_n60_N8S7856C28D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C28D1Ev,_ZTv0_n32_N8S7856C28D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C28D0Ev,_ZTv0_n32_N8S7856C28D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A2__8S7856C288S7856C27__7S7856C3[] = {
  ABISELECT(264,136),
  ABISELECT(-152,-84),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-152,-84),
  ABISELECT(-23,-11),
  ABISELECT(264,136),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C28D1Ev,_ZTv0_n32_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C28D0Ev,_ZTv0_n32_N8S7856C28D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C28D1Ev,_ZTv0_n44_N8S7856C28D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C28D0Ev,_ZTv0_n44_N8S7856C28D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C288S7856C27__7S7856C3[] = {
  ABISELECT(248,128),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-168,-92),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-168,-92),
  ABISELECT(248,128),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C28D1Ev,_ZTv0_n44_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C28D0Ev,_ZTv0_n44_N8S7856C28D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C288S7856C27__7S7856C3[] = {
  ABISELECT(-88,-48),
  ABISELECT(16,8),
  ABISELECT(-88,-48),
  ABISELECT(41,25),
  ABISELECT(328,172),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
};
extern void ABISELECT(_ZThn16_N8S7856C28D1Ev,_ZThn8_N8S7856C28D1Ev)();
extern void ABISELECT(_ZThn16_N8S7856C28D0Ev,_ZThn8_N8S7856C28D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C21__8S7856C288S7856C27__7S7856C3[] = {
  ABISELECT(-432,-228),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S7856C28D1Ev,_ZThn8_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S7856C28D0Ev,_ZThn8_N8S7856C28D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C27D1Ev,_ZTv0_n44_N8S7856C27D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C27D0Ev,_ZTv0_n44_N8S7856C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C27__7S7856C3[] = {
  ABISELECT(296,156),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-104,-56),
  0,
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(296,156),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C27D1Ev,_ZTv0_n44_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C27D0Ev,_ZTv0_n44_N8S7856C27D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C27D1Ev,_ZTv0_n44_N8S7856C27D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C27D0Ev,_ZTv0_n44_N8S7856C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__A1__8S7856C27__7S7856C3[] = {
  ABISELECT(232,120),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-168,-92),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-168,-92),
  ABISELECT(232,120),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C27D1Ev,_ZTv0_n44_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C27D0Ev,_ZTv0_n44_N8S7856C27D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C27__7S7856C3[] = {
  ABISELECT(-136,-76),
  ABISELECT(-7,-3),
  ABISELECT(264,136),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C27D1Ev,_ZTv0_n32_N8S7856C27D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C27D0Ev,_ZTv0_n32_N8S7856C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C27__7S7856C3[] = {
  ABISELECT(280,144),
  ABISELECT(-120,-68),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-120,-68),
  ABISELECT(9,5),
  ABISELECT(280,144),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C27D1Ev,_ZTv0_n32_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C27D0Ev,_ZTv0_n32_N8S7856C27D0Ev),
};
extern void ABISELECT(_ZThn16_N8S7856C27D1Ev,_ZThn8_N8S7856C27D1Ev)();
extern void ABISELECT(_ZThn16_N8S7856C27D0Ev,_ZThn8_N8S7856C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C28__8S7856C27__7S7856C3[] = {
  ABISELECT(-248,-128),
  ABISELECT(-248,-128),
  ABISELECT(-416,-220),
  ABISELECT(-264,-136),
  ABISELECT(-312,-164),
  ABISELECT(-344,-180),
  ABISELECT(-296,-152),
  ABISELECT(32,16),
  ABISELECT(-280,-144),
  ABISELECT(-416,-220),
  ABISELECT(-312,-164),
  ABISELECT(-312,-164),
  ABISELECT(-416,-220),
  ABISELECT(-287,-147),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S7856C27D1Ev,_ZThn8_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S7856C27D0Ev,_ZThn8_N8S7856C27D0Ev),
};
extern void ABISELECT(_ZTv0_n128_N8S7856C27D1Ev,_ZTv0_n64_N8S7856C27D1Ev)();
extern void ABISELECT(_ZThn48_N8S7856C27D1Ev,_ZThn24_N8S7856C27D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S7856C27D0Ev,_ZTv0_n64_N8S7856C27D0Ev)();
extern void ABISELECT(_ZThn48_N8S7856C27D0Ev,_ZThn24_N8S7856C27D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C29__8S7856C27__7S7856C3[] = {
  ABISELECT(-48,-24),
  ABISELECT(-280,-144),
  ABISELECT(-280,-144),
  ABISELECT(-448,-236),
  ABISELECT(-296,-152),
  ABISELECT(-312,-160),
  ABISELECT(-344,-180),
  ABISELECT(-376,-196),
  ABISELECT(-344,-180),
  ABISELECT(-328,-168),
  ABISELECT(-448,-236),
  ABISELECT(-344,-180),
  ABISELECT(-448,-236),
  ABISELECT(-319,-163),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C27D1Ev,_ZTv0_n64_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C27D0Ev,_ZTv0_n64_N8S7856C27D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S7856C27D1Ev,_ZTv0_n60_N8S7856C27D1Ev)();
extern void ABISELECT(_ZTv0_n120_N8S7856C27D0Ev,_ZTv0_n60_N8S7856C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__8S7856C27__7S7856C3[] = {
  ABISELECT(328,172),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-72,-40),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-72,-40),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-72,-40),
  ABISELECT(57,33),
  ABISELECT(328,172),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C27D1Ev,_ZTv0_n60_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C27D0Ev,_ZTv0_n60_N8S7856C27D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C27D1Ev,_ZTv0_n32_N8S7856C27D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C27D0Ev,_ZTv0_n32_N8S7856C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A2__8S7856C27__7S7856C3[] = {
  ABISELECT(248,128),
  ABISELECT(-152,-84),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-152,-84),
  ABISELECT(-23,-11),
  ABISELECT(248,128),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C27D1Ev,_ZTv0_n32_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C27D0Ev,_ZTv0_n32_N8S7856C27D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C27__7S7856C3[] = {
  ABISELECT(-88,-48),
  ABISELECT(16,8),
  ABISELECT(-88,-48),
  ABISELECT(41,25),
  ABISELECT(312,164),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
};
extern void ABISELECT(_ZThn32_N8S7856C27D1Ev,_ZThn16_N8S7856C27D1Ev)();
extern void ABISELECT(_ZThn32_N8S7856C27D0Ev,_ZThn16_N8S7856C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C218S7856C28__8S7856C27__7S7856C3[] = {
  ABISELECT(-432,-228),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S7856C27D1Ev,_ZThn16_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S7856C27D0Ev,_ZThn16_N8S7856C27D0Ev),
};
extern void _ZN8S7856C29D1Ev();
extern void _ZN8S7856C29D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C29__7S7856C3[] = {
  ABISELECT(-280,-144),
  ABISELECT(-280,-144),
  ABISELECT(-448,-236),
  ABISELECT(-296,-152),
  ABISELECT(-312,-160),
  ABISELECT(-344,-180),
  ABISELECT(-376,-196),
  ABISELECT(-344,-180),
  ABISELECT(-328,-168),
  ABISELECT(-448,-236),
  ABISELECT(-344,-180),
  ABISELECT(-448,-236),
  ABISELECT(-319,-163),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&_ZN8S7856C29D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C29D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N8S7856C29D1Ev,_ZTv0_n32_N8S7856C29D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C29D0Ev,_ZTv0_n32_N8S7856C29D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C29__7S7856C3[] = {
  ABISELECT(328,168),
  ABISELECT(-120,-68),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-120,-68),
  ABISELECT(9,5),
  ABISELECT(328,168),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C29D1Ev,_ZTv0_n32_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C29D0Ev,_ZTv0_n32_N8S7856C29D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C29D1Ev,_ZTv0_n44_N8S7856C29D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C29D0Ev,_ZTv0_n44_N8S7856C29D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C29__7S7856C3[] = {
  ABISELECT(344,180),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-104,-56),
  0,
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(344,180),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C29D1Ev,_ZTv0_n44_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C29D0Ev,_ZTv0_n44_N8S7856C29D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S7856C29D1Ev,_ZTv0_n60_N8S7856C29D1Ev)();
extern void ABISELECT(_ZTv0_n120_N8S7856C29D0Ev,_ZTv0_n60_N8S7856C29D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__8S7856C29__7S7856C3[] = {
  ABISELECT(376,196),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-72,-40),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-72,-40),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-72,-40),
  ABISELECT(57,33),
  ABISELECT(376,196),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C29D1Ev,_ZTv0_n60_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C29D0Ev,_ZTv0_n60_N8S7856C29D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C29__7S7856C3[] = {
  ABISELECT(-136,-76),
  ABISELECT(-7,-3),
  ABISELECT(312,160),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C29D1Ev,_ZTv0_n32_N8S7856C29D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C29D0Ev,_ZTv0_n32_N8S7856C29D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__8S7856C29__7S7856C3[] = {
  ABISELECT(296,152),
  ABISELECT(-152,-84),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-152,-84),
  ABISELECT(-23,-11),
  ABISELECT(296,152),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C29D1Ev,_ZTv0_n32_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C29D0Ev,_ZTv0_n32_N8S7856C29D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C29D1Ev,_ZTv0_n44_N8S7856C29D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C29D0Ev,_ZTv0_n44_N8S7856C29D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C29__7S7856C3[] = {
  ABISELECT(280,144),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-168,-92),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-168,-92),
  ABISELECT(280,144),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C29D1Ev,_ZTv0_n44_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C29D0Ev,_ZTv0_n44_N8S7856C29D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C29__7S7856C3[] = {
  ABISELECT(-88,-48),
  ABISELECT(16,8),
  ABISELECT(-88,-48),
  ABISELECT(41,25),
  ABISELECT(360,188),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
};
extern void _ZN8S7856C22D1Ev();
extern void _ZN8S7856C22D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C22__A1__7S7856C3[] = {
  ABISELECT(-272,-140),
  ABISELECT(-384,-200),
  ABISELECT(-408,-216),
  ABISELECT(-288,-148),
  ABISELECT(-288,-148),
  ABISELECT(-456,-240),
  ABISELECT(-304,-156),
  ABISELECT(-320,-164),
  ABISELECT(-352,-184),
  ABISELECT(-336,-172),
  ABISELECT(-352,-184),
  ABISELECT(-456,-240),
  ABISELECT(-352,-184),
  ABISELECT(-456,-240),
  ABISELECT(-327,-167),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&_ZN8S7856C22D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C22D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C22__A9__7S7856C3[] = {
  ABISELECT(-456,-240),
  ABISELECT(-352,-184),
  ABISELECT(-456,-240),
  ABISELECT(-327,-167),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C22__A9__7S7856C3[] = {
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(352,184),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void _ZN7S7856C5D1Ev();
extern void _ZN7S7856C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C58S7856C22__A4__7S7856C3[] = {
  ABISELECT(-296,-152),
  ABISELECT(-296,-152),
  ABISELECT(-464,-244),
  ABISELECT(-328,-168),
  ABISELECT(-344,-176),
  ABISELECT(-360,-188),
  ABISELECT(-464,-244),
  ABISELECT(-360,-188),
  ABISELECT(-360,-188),
  ABISELECT(-312,-160),
  ABISELECT(-464,-244),
  ABISELECT(-335,-171),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&_ZN7S7856C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C5D0Ev,
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C187S7856C58S7856C22__A5__7S7856C3[] = {
  ABISELECT(-464,-244),
  ABISELECT(-360,-188),
  ABISELECT(-360,-188),
  ABISELECT(-312,-160),
  ABISELECT(-464,-244),
  ABISELECT(-335,-171),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C187S7856C58S7856C22__A6__7S7856C3[] = {
  ABISELECT(-464,-244),
  ABISELECT(-335,-171),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C187S7856C58S7856C22__A12__7S7856C3[] = {
  ABISELECT(-464,-244),
  ABISELECT(-335,-171),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C58S7856C22__A10__7S7856C3[] = {
  ABISELECT(-480,-252),
  ABISELECT(-376,-196),
  ABISELECT(-480,-252),
  ABISELECT(-351,-179),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C187S7856C58S7856C22__A10__7S7856C3[] = {
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(376,196),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C187S7856C58S7856C22__A5__7S7856C3[] = {
  ABISELECT(312,160),
  ABISELECT(-152,-84),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-152,-84),
  ABISELECT(-23,-11),
  ABISELECT(312,160),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C187S7856C58S7856C22__A5__7S7856C3[] = {
  ABISELECT(-104,-56),
  0,
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(360,188),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C187S7856C58S7856C22__A5__7S7856C3[] = {
  ABISELECT(-480,-252),
  ABISELECT(-376,-196),
  ABISELECT(-480,-252),
  ABISELECT(-351,-179),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C58S7856C22__A4__7S7856C3[] = {
  ABISELECT(360,188),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-104,-56),
  0,
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(360,188),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C58S7856C22__A4__7S7856C3[] = {
  ABISELECT(344,176),
  ABISELECT(-120,-68),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-120,-68),
  ABISELECT(9,5),
  ABISELECT(344,176),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C58S7856C22__A4__7S7856C3[] = {
  ABISELECT(-136,-76),
  ABISELECT(-7,-3),
  ABISELECT(328,168),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C58S7856C22__A4__7S7856C3[] = {
  ABISELECT(312,160),
  ABISELECT(-152,-84),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-152,-84),
  ABISELECT(-23,-11),
  ABISELECT(312,160),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C58S7856C22__A4__7S7856C3[] = {
  ABISELECT(296,152),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-168,-92),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-168,-92),
  ABISELECT(296,152),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__7S7856C58S7856C22__A4__7S7856C3[] = {
  ABISELECT(-480,-252),
  ABISELECT(-376,-196),
  ABISELECT(-480,-252),
  ABISELECT(-351,-179),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C22__A1__7S7856C3[] = {
  ABISELECT(352,184),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-104,-56),
  0,
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(352,184),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C22__A1__7S7856C3[] = {
  ABISELECT(336,172),
  ABISELECT(-120,-68),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-120,-68),
  ABISELECT(9,5),
  ABISELECT(336,172),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C22__A1__7S7856C3[] = {
  ABISELECT(-136,-76),
  ABISELECT(-7,-3),
  ABISELECT(320,164),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__8S7856C22__A1__7S7856C3[] = {
  ABISELECT(304,156),
  ABISELECT(-152,-84),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-152,-84),
  ABISELECT(-23,-11),
  ABISELECT(304,156),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev),
};
extern void ABISELECT(_ZThn8_N8S7856C22D1Ev,_ZThn4_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn8_N8S7856C22D0Ev,_ZThn4_N8S7856C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__A__8S7856C22__A1__7S7856C3[] = {
  ABISELECT(-296,-152),
  ABISELECT(-296,-152),
  ABISELECT(-464,-244),
  ABISELECT(-328,-168),
  ABISELECT(-344,-176),
  ABISELECT(-360,-188),
  ABISELECT(-464,-244),
  ABISELECT(-360,-188),
  ABISELECT(-360,-188),
  ABISELECT(-312,-160),
  ABISELECT(-464,-244),
  ABISELECT(-335,-171),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7856C22D1Ev,_ZThn4_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7856C22D0Ev,_ZThn4_N8S7856C22D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C22__A1__7S7856C3[] = {
  ABISELECT(288,148),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-168,-92),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-168,-92),
  ABISELECT(288,148),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A2__8S7856C22__A1__7S7856C3[] = {
  ABISELECT(-480,-252),
  ABISELECT(-376,-196),
  ABISELECT(-480,-252),
  ABISELECT(-351,-179),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
};
extern void ABISELECT(_ZTv0_n136_N8S7856C22D1Ev,_ZTv0_n68_N8S7856C22D1Ev)();
extern void ABISELECT(_ZTv0_n136_N8S7856C22D0Ev,_ZTv0_n68_N8S7856C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C4__8S7856C22__A1__7S7856C3[] = {
  ABISELECT(8,4),
  ABISELECT(408,216),
  ABISELECT(136,76),
  ABISELECT(120,68),
  ABISELECT(120,68),
  ABISELECT(-48,-24),
  ABISELECT(104,60),
  ABISELECT(88,52),
  ABISELECT(56,32),
  ABISELECT(72,44),
  ABISELECT(56,32),
  ABISELECT(24,16),
  ABISELECT(-48,-24),
  ABISELECT(56,32),
  ABISELECT(-48,-24),
  ABISELECT(81,49),
  ABISELECT(408,216),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S7856C22D1Ev,_ZTv0_n68_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S7856C22D0Ev,_ZTv0_n68_N8S7856C22D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S7856C22D1Ev,_ZTv0_n60_N8S7856C22D1Ev)();
extern void ABISELECT(_ZTv0_n120_N8S7856C22D0Ev,_ZTv0_n60_N8S7856C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__A1__8S7856C22__A1__7S7856C3[] = {
  ABISELECT(384,200),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-72,-40),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-72,-40),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-72,-40),
  ABISELECT(57,33),
  ABISELECT(384,200),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C22D1Ev,_ZTv0_n60_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C22D0Ev,_ZTv0_n60_N8S7856C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A3__8S7856C22__A1__7S7856C3[] = {
  ABISELECT(-88,-48),
  ABISELECT(16,8),
  ABISELECT(-88,-48),
  ABISELECT(41,25),
  ABISELECT(368,192),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
};
extern void ABISELECT(_ZTvn8_n136_N8S7856C22D1Ev,_ZTvn4_n68_N8S7856C22D1Ev)();
extern void ABISELECT(_ZTvn8_n136_N8S7856C22D0Ev,_ZTvn4_n68_N8S7856C22D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C197S7856C4__8S7856C22__A1__7S7856C3[] = {
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(48,28),
  ABISELECT(64,40),
  ABISELECT(-56,-28),
  ABISELECT(48,28),
  ABISELECT(-56,-28),
  ABISELECT(73,45),
  ABISELECT(400,212),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N8S7856C22D1Ev,_ZTvn4_n68_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N8S7856C22D0Ev,_ZTvn4_n68_N8S7856C22D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N8S7856C22D1Ev,_ZTv0_n36_N8S7856C22D1Ev)();
extern void ABISELECT(_ZTv0_n72_N8S7856C22D0Ev,_ZTv0_n36_N8S7856C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C18__A2__8S7856C22__A1__7S7856C3[] = {
  ABISELECT(272,140),
  ABISELECT(-184,-100),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-184,-100),
  ABISELECT(-55,-27),
  ABISELECT(272,140),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C22D1Ev,_ZTv0_n36_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C22D0Ev,_ZTv0_n36_N8S7856C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A5__8S7856C22__A1__7S7856C3[] = {
  ABISELECT(-200,-108),
  ABISELECT(-96,-52),
  ABISELECT(-200,-108),
  ABISELECT(-71,-35),
  ABISELECT(256,132),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
};
static  VTT_ENTRY vtt_S7856C3[] = {
  {&(_ZTV7S7856C3[23]),  23,409},
  {&(_tg__ZTV8S7856C22__A__7S7856C3[17]),  17,19},
  {&(_tg__ZTV8S7856C108S7856C22__A5__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C22__A5__7S7856C3[4]),  4,4},
  {&(_tg__ZTV7S7856C58S7856C22__A2__7S7856C3[14]),  14,16},
  {&(_tg__ZTV8S7856C187S7856C58S7856C22__A3__7S7856C3[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C187S7856C58S7856C22__A4__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C187S7856C58S7856C22__A7__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C187S7856C58S7856C22__A6__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C187S7856C58S7856C22__A6__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C187S7856C58S7856C22__A3__7S7856C3[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C58S7856C22__A3__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C58S7856C22__A3__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C10__A__8S7856C187S7856C58S7856C22__A3__7S7856C3[6]),  6,6},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C22__A2__7S7856C3[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C58S7856C22__A2__7S7856C3[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C22__A2__7S7856C3[11]),  11,13},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C22__A2__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C14__7S7856C58S7856C22__A2__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C58S7856C22__A2__7S7856C3[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C58S7856C22__A2__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C58S7856C22__A2__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C18__A1__7S7856C58S7856C22__A2__7S7856C3[6]),  6,6},
  {&(_tg__ZTV7S7856C6__8S7856C22__A__7S7856C3[11]),  11,13},
  {&(_tg__ZTV7S7856C6__8S7856C22__A__7S7856C3[11]),  11,13},
  {&(_tg__ZTV7S7856C7__8S7856C22__A__7S7856C3[8]),  8,10},
  {&(_tg__ZTV7S7856C6__8S7856C22__A__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C14__8S7856C22__A__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__8S7856C22__A__7S7856C3[8]),  8,10},
  {&(_tg__ZTV7S7856C5__A__8S7856C22__A__7S7856C3[14]),  14,16},
  {&(_tg__ZTV8S7856C16__8S7856C22__A__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C16__8S7856C22__A__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A2__8S7856C22__A__7S7856C3[6]),  6,6},
  {&(_tg__ZTV7S7856C4__8S7856C22__A__7S7856C3[18]),  18,20},
  {&(_tg__ZTV7S7856C5__A1__8S7856C22__A__7S7856C3[15]),  15,17},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A3__8S7856C22__A__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C197S7856C4__8S7856C22__A__7S7856C3[11]),  11,14},
  {&(_tg__ZTV8S7856C18__A2__8S7856C22__A__7S7856C3[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A5__8S7856C22__A__7S7856C3[6]),  6,6},
  {&(_ZTV7S7856C3[65]),  65,409},
  {&(_ZTV7S7856C3[96]),  96,409},
  {&(_ZTV7S7856C3[115]),  115,409},
  {&(_ZTV7S7856C3[125]),  125,409},
  {&(_ZTV7S7856C3[115]),  115,409},
  {&(_ZTV7S7856C3[115]),  115,409},
  {&(_ZTV7S7856C3[131]),  131,409},
  {&(_ZTV7S7856C3[139]),  139,409},
  {&(_ZTV7S7856C3[152]),  152,409},
  {&(_ZTV7S7856C3[152]),  152,409},
  {&(_ZTV7S7856C3[104]),  104,409},
  {&(_ZTV7S7856C3[78]),  78,409},
  {&(_ZTV7S7856C3[163]),  163,409},
  {&(_ZTV7S7856C3[171]),  171,409},
  {&(_ZTV7S7856C3[186]),  186,409},
  {&(_ZTV7S7856C3[202]),  202,409},
  {&(_ZTV7S7856C3[210]),  210,409},
  {&(_ZTV7S7856C3[213]),  213,409},
  {&(_ZTV7S7856C3[39]),  39,409},
  {&(_ZTV7S7856C3[47]),  47,409},
  {&(_ZTV7S7856C3[238]),  238,409},
  {&(_ZTV7S7856C3[243]),  243,409},
  {&(_ZTV7S7856C3[259]),  259,409},
  {&(_ZTV7S7856C3[272]),  272,409},
  {&(_ZTV7S7856C3[324]),  324,409},
  {&(_ZTV7S7856C3[342]),  342,409},
  {&(_ZTV7S7856C3[365]),  365,409},
  {&(_ZTV7S7856C3[347]),  347,409},
  {&(_ZTV7S7856C3[289]),  289,409},
  {&(_ZTV7S7856C3[297]),  297,409},
  {&(_ZTV7S7856C3[304]),  304,409},
  {&(_ZTV7S7856C3[385]),  385,409},
  {&(_ZTV7S7856C3[401]),  401,409},
  {&(_ZTV7S7856C3[409]),  409,409},
  {&(_tg__ZTV7S7856C4__7S7856C3[16]),  16,18},
  {&(_tg__ZTV8S7856C107S7856C4__A2__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C107S7856C4__A2__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C197S7856C4__7S7856C3[11]),  11,14},
  {&(_tg__ZTV7S7856C68S7856C197S7856C4__A1__7S7856C3[10]),  10,12},
  {&(_tg__ZTV7S7856C7__7S7856C68S7856C197S7856C4__A1__7S7856C3[8]),  8,10},
  {&(_tg__ZTV8S7856C10__7S7856C68S7856C197S7856C4__A1__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C68S7856C197S7856C4__A1__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C14__7S7856C68S7856C197S7856C4__A1__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C68S7856C197S7856C4__A1__7S7856C3[8]),  8,10},
  {&(_tg__ZTV7S7856C7__8S7856C197S7856C4__7S7856C3[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C197S7856C4__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C197S7856C4__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C14__8S7856C197S7856C4__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__8S7856C197S7856C4__7S7856C3[8]),  8,10},
  {&(_tg__ZTV8S7856C18__8S7856C197S7856C4__7S7856C3[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A1__8S7856C197S7856C4__7S7856C3[6]),  6,6},
  {&(_tg__ZTV7S7856C5__7S7856C4__7S7856C3[15]),  15,17},
  {&(_tg__ZTV7S7856C6__7S7856C4__7S7856C3[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C4__7S7856C3[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C4__7S7856C3[11]),  11,13},
  {&(_tg__ZTV7S7856C6__7S7856C4__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C14__7S7856C4__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C4__7S7856C3[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C4__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C4__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__7S7856C4__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C19__7S7856C4__7S7856C3[11]),  11,14},
  {&(_tg__ZTV8S7856C18__A1__7S7856C4__7S7856C3[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A3__7S7856C4__7S7856C3[6]),  6,6},
  {&(_tg__ZTV7S7856C5__7S7856C3[14]),  14,16},
  {&(_tg__ZTV8S7856C187S7856C5__7S7856C3[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C187S7856C5__A1__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C187S7856C5__A4__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C187S7856C5__A1__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C187S7856C5__7S7856C3[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C5__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C5__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C10__A__8S7856C187S7856C5__7S7856C3[6]),  6,6},
  {&(_tg__ZTV7S7856C6__7S7856C5__7S7856C3[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C5__7S7856C3[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C5__7S7856C3[11]),  11,13},
  {&(_tg__ZTV7S7856C6__7S7856C5__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C14__7S7856C5__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C5__7S7856C3[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C5__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C5__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C18__A1__7S7856C5__7S7856C3[6]),  6,6},
  {&(_tg__ZTV7S7856C6__7S7856C3[10]),  10,12},
  {&(_tg__ZTV7S7856C7__7S7856C6__7S7856C3[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C3[10]),  10,12},
  {&(_tg__ZTV7S7856C6__7S7856C3[10]),  10,12},
  {&(_tg__ZTV8S7856C14__7S7856C6__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C6__7S7856C3[8]),  8,10},
  {&(_tg__ZTV7S7856C7__7S7856C3[7]),  7,9},
  {&(_tg__ZTV8S7856C137S7856C7__7S7856C3[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C137S7856C7__A1__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C7__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C7__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C7__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C7__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C11__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C14__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C14__A2__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C3[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C13__A3__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C13__A1__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C13__A1__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C16__7S7856C3[10]),  10,12},
  {&(_tg__ZTV8S7856C10__8S7856C16__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C16__7S7856C3[10]),  10,12},
  {&(_tg__ZTV8S7856C14__8S7856C16__7S7856C3[4]),  4,4},
  {&(_tg__ZTV7S7856C7__8S7856C16__7S7856C3[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C16__7S7856C3[6]),  6,6},
  {&(_tg__ZTV11S7856C17_nt__7S7856C3[3]),  3,3},
  {&(_tg__ZTV8S7856C18__A1__7S7856C3[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C18__A2__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C18__A5__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C18__A3__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C18__A3__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C18__A1__7S7856C3[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C18__A1__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C18__A1__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C10__A__8S7856C18__A1__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C20__7S7856C3[14]),  14,16},
  {&(_tg__ZTV11S7856C17_nt8S7856C20__A1__7S7856C3[3]),  3,3},
  {&(_tg__ZTV7S7856C58S7856C20__A1__7S7856C3[14]),  14,16},
  {&(_tg__ZTV8S7856C187S7856C58S7856C20__A2__7S7856C3[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C187S7856C58S7856C20__A3__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C187S7856C58S7856C20__A6__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C187S7856C58S7856C20__A4__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C187S7856C58S7856C20__A4__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C187S7856C58S7856C20__A2__7S7856C3[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C58S7856C20__A2__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C58S7856C20__A2__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C10__A__8S7856C187S7856C58S7856C20__A2__7S7856C3[6]),  6,6},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C20__A1__7S7856C3[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C58S7856C20__A1__7S7856C3[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C20__A1__7S7856C3[11]),  11,13},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C20__A1__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C14__7S7856C58S7856C20__A1__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C58S7856C20__A1__7S7856C3[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C58S7856C20__A1__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C58S7856C20__A1__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C18__A1__7S7856C58S7856C20__A1__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C218S7856C20__7S7856C3[3]),  3,5},
  {&(_tg__ZTV11S7856C17_nt8S7856C218S7856C20__A2__7S7856C3[3]),  3,3},
  {&(_tg__ZTV7S7856C5__8S7856C20__7S7856C3[14]),  14,16},
  {&(_tg__ZTV7S7856C6__8S7856C20__7S7856C3[11]),  11,13},
  {&(_tg__ZTV7S7856C7__8S7856C20__7S7856C3[8]),  8,10},
  {&(_tg__ZTV7S7856C6__8S7856C20__7S7856C3[11]),  11,13},
  {&(_tg__ZTV7S7856C6__8S7856C20__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C14__8S7856C20__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__8S7856C20__7S7856C3[8]),  8,10},
  {&(_tg__ZTV8S7856C16__8S7856C20__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C16__8S7856C20__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C20__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C21__8S7856C20__7S7856C3[3]),  3,5},
  {&(_tg__ZTV8S7856C23__7S7856C3[21]),  21,23},
  {&(_tg__ZTV8S7856C258S7856C23__7S7856C3[19]),  19,21},
  {&(_tg__ZTV8S7856C138S7856C258S7856C23__A2__7S7856C3[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C138S7856C258S7856C23__A8__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C138S7856C258S7856C23__A2__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C138S7856C258S7856C23__A2__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C268S7856C258S7856C23__7S7856C3[3]),  3,3},
  {&(_tg__ZTV7S7856C48S7856C258S7856C23__A1__7S7856C3[16]),  16,18},
  {&(_tg__ZTV8S7856C107S7856C48S7856C258S7856C23__A7__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C107S7856C48S7856C258S7856C23__A7__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C3[11]),  11,14},
  {&(_tg__ZTV7S7856C68S7856C197S7856C48S7856C258S7856C23__A2__7S7856C3[10]),  10,12},
  {&(_tg__ZTV7S7856C7__7S7856C68S7856C197S7856C48S7856C258S7856C23__A2__7S7856C3[8]),  8,10},
  {&(_tg__ZTV8S7856C10__7S7856C68S7856C197S7856C48S7856C258S7856C23__A2__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C68S7856C197S7856C48S7856C258S7856C23__A2__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C14__7S7856C68S7856C197S7856C48S7856C258S7856C23__A2__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C68S7856C197S7856C48S7856C258S7856C23__A2__7S7856C3[8]),  8,10},
  {&(_tg__ZTV7S7856C7__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C3[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C14__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C3[8]),  8,10},
  {&(_tg__ZTV8S7856C18__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C3[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A1__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C3[6]),  6,6},
  {&(_tg__ZTV7S7856C5__7S7856C48S7856C258S7856C23__A1__7S7856C3[15]),  15,17},
  {&(_tg__ZTV7S7856C6__7S7856C48S7856C258S7856C23__A1__7S7856C3[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C48S7856C258S7856C23__A1__7S7856C3[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C48S7856C258S7856C23__A1__7S7856C3[11]),  11,13},
  {&(_tg__ZTV7S7856C6__7S7856C48S7856C258S7856C23__A1__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C14__7S7856C48S7856C258S7856C23__A1__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C48S7856C258S7856C23__A1__7S7856C3[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C48S7856C258S7856C23__A1__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C48S7856C258S7856C23__A1__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__7S7856C48S7856C258S7856C23__A1__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C19__7S7856C48S7856C258S7856C23__A1__7S7856C3[11]),  11,14},
  {&(_tg__ZTV8S7856C18__A1__7S7856C48S7856C258S7856C23__A1__7S7856C3[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A3__7S7856C48S7856C258S7856C23__A1__7S7856C3[6]),  6,6},
  {&(_tg__ZTV7S7856C58S7856C258S7856C23__A3__7S7856C3[14]),  14,16},
  {&(_tg__ZTV8S7856C187S7856C58S7856C258S7856C23__A4__7S7856C3[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C187S7856C58S7856C258S7856C23__A5__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C187S7856C58S7856C258S7856C23__A10__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C187S7856C58S7856C258S7856C23__A8__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C187S7856C58S7856C258S7856C23__A8__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C187S7856C58S7856C258S7856C23__A4__7S7856C3[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C58S7856C258S7856C23__A4__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C58S7856C258S7856C23__A4__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C10__A__8S7856C187S7856C58S7856C258S7856C23__A4__7S7856C3[6]),  6,6},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C258S7856C23__A3__7S7856C3[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C58S7856C258S7856C23__A3__7S7856C3[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C258S7856C23__A3__7S7856C3[11]),  11,13},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C258S7856C23__A3__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C14__7S7856C58S7856C258S7856C23__A3__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C58S7856C258S7856C23__A3__7S7856C3[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C58S7856C258S7856C23__A3__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C58S7856C258S7856C23__A3__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C18__A1__7S7856C58S7856C258S7856C23__A3__7S7856C3[6]),  6,6},
  {&(_tg__ZTV7S7856C6__8S7856C258S7856C23__7S7856C3[11]),  11,13},
  {&(_tg__ZTV7S7856C6__8S7856C258S7856C23__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C26__8S7856C258S7856C23__7S7856C3[3]),  3,3},
  {&(_tg__ZTV7S7856C4__8S7856C258S7856C23__7S7856C3[16]),  16,18},
  {&(_tg__ZTV7S7856C5__8S7856C258S7856C23__7S7856C3[15]),  15,17},
  {&(_tg__ZTV7S7856C6__8S7856C258S7856C23__7S7856C3[11]),  11,13},
  {&(_tg__ZTV7S7856C7__8S7856C258S7856C23__7S7856C3[8]),  8,10},
  {&(_tg__ZTV8S7856C14__8S7856C258S7856C23__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A2__8S7856C258S7856C23__7S7856C3[8]),  8,10},
  {&(_tg__ZTV8S7856C16__8S7856C258S7856C23__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C16__8S7856C258S7856C23__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C258S7856C23__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C197S7856C4__8S7856C258S7856C23__7S7856C3[11]),  11,14},
  {&(_tg__ZTV8S7856C18__A1__8S7856C258S7856C23__7S7856C3[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A3__8S7856C258S7856C23__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C27__8S7856C258S7856C23__7S7856C3[18]),  18,20},
  {&(_tg__ZTV8S7856C288S7856C27__8S7856C258S7856C23__7S7856C3[16]),  16,18},
  {&(_tg__ZTV8S7856C29__8S7856C258S7856C23__7S7856C3[16]),  16,18},
  {&(_tg__ZTV8S7856C218S7856C288S7856C27__8S7856C258S7856C23__7S7856C3[3]),  3,5},
  {&(_tg__ZTV7S7856C5__A__8S7856C258S7856C23__7S7856C3[14]),  14,16},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A4__8S7856C258S7856C23__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C138S7856C23__A4__7S7856C3[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C138S7856C23__A11__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C138S7856C23__A4__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C138S7856C23__A4__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C14__8S7856C23__7S7856C3[4]),  4,4},
  {&(_tg__ZTV7S7856C6__8S7856C23__7S7856C3[11]),  11,13},
  {&(_tg__ZTV7S7856C6__8S7856C23__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C268S7856C25__8S7856C23__7S7856C3[3]),  3,3},
  {&(_tg__ZTV7S7856C48S7856C25__8S7856C23__7S7856C3[16]),  16,18},
  {&(_tg__ZTV7S7856C5__8S7856C23__7S7856C3[15]),  15,17},
  {&(_tg__ZTV7S7856C6__8S7856C23__7S7856C3[11]),  11,13},
  {&(_tg__ZTV7S7856C7__8S7856C23__7S7856C3[8]),  8,10},
  {&(_tg__ZTV8S7856C13__A2__8S7856C23__7S7856C3[8]),  8,10},
  {&(_tg__ZTV8S7856C16__8S7856C23__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C16__8S7856C23__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C23__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C197S7856C48S7856C25__8S7856C23__7S7856C3[11]),  11,14},
  {&(_tg__ZTV8S7856C18__A1__8S7856C23__7S7856C3[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A3__8S7856C23__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C27__8S7856C23__7S7856C3[18]),  18,20},
  {&(_tg__ZTV8S7856C288S7856C27__8S7856C23__7S7856C3[16]),  16,18},
  {&(_tg__ZTV8S7856C29__8S7856C23__7S7856C3[16]),  16,18},
  {&(_tg__ZTV8S7856C218S7856C288S7856C27__8S7856C23__7S7856C3[3]),  3,5},
  {&(_tg__ZTV7S7856C58S7856C25__A1__8S7856C23__7S7856C3[14]),  14,16},
  {&(_tg__ZTV8S7856C108S7856C187S7856C58S7856C25__A4__8S7856C23__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C13__A__8S7856C23__7S7856C3[7]),  7,9},
  {&(_tg__ZTV8S7856C22__8S7856C23__7S7856C3[18]),  18,20},
  {&(_tg__ZTV7S7856C58S7856C22__A2__8S7856C23__7S7856C3[14]),  14,16},
  {&(_tg__ZTV8S7856C108S7856C187S7856C58S7856C22__A6__8S7856C23__7S7856C3[6]),  6,6},
  {&(_tg__ZTV7S7856C4__A1__8S7856C23__7S7856C3[18]),  18,20},
  {&(_tg__ZTV8S7856C197S7856C4__A1__8S7856C23__7S7856C3[11]),  11,14},
  {&(_tg__ZTV8S7856C27__7S7856C3[17]),  17,19},
  {&(_tg__ZTV8S7856C168S7856C27__A1__7S7856C3[10]),  10,12},
  {&(_tg__ZTV8S7856C10__8S7856C168S7856C27__A1__7S7856C3[6]),  6,6},
  {&(_tg__ZTV11S7856C17_nt__8S7856C168S7856C27__A1__7S7856C3[3]),  3,3},
  {&(_tg__ZTV8S7856C14__8S7856C168S7856C27__A1__7S7856C3[4]),  4,4},
  {&(_tg__ZTV7S7856C7__8S7856C168S7856C27__A1__7S7856C3[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C168S7856C27__A1__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C288S7856C27__7S7856C3[16]),  16,18},
  {&(_tg__ZTV7S7856C78S7856C288S7856C27__A1__7S7856C3[7]),  7,9},
  {&(_tg__ZTV8S7856C137S7856C78S7856C288S7856C27__A3__7S7856C3[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C137S7856C78S7856C288S7856C27__A9__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C78S7856C288S7856C27__A3__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C78S7856C288S7856C27__A3__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C78S7856C288S7856C27__A1__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C78S7856C288S7856C27__A1__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C218S7856C288S7856C27__A1__7S7856C3[3]),  3,5},
  {&(_tg__ZTV11S7856C17_nt8S7856C218S7856C288S7856C27__A3__7S7856C3[3]),  3,3},
  {&(_tg__ZTV7S7856C6__8S7856C288S7856C27__7S7856C3[11]),  11,13},
  {&(_tg__ZTV7S7856C6__8S7856C288S7856C27__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C14__8S7856C288S7856C27__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C29__8S7856C288S7856C27__7S7856C3[16]),  16,18},
  {&(_tg__ZTV7S7856C7__A1__8S7856C288S7856C27__7S7856C3[8]),  8,10},
  {&(_tg__ZTV7S7856C5__8S7856C288S7856C27__7S7856C3[15]),  15,17},
  {&(_tg__ZTV7S7856C6__8S7856C288S7856C27__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C13__A2__8S7856C288S7856C27__7S7856C3[8]),  8,10},
  {&(_tg__ZTV8S7856C16__8S7856C288S7856C27__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C16__8S7856C288S7856C27__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C288S7856C27__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C21__8S7856C288S7856C27__7S7856C3[3]),  3,5},
  {&(_tg__ZTV7S7856C6__8S7856C27__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C16__A1__8S7856C27__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C14__8S7856C27__7S7856C3[4]),  4,4},
  {&(_tg__ZTV7S7856C7__8S7856C27__7S7856C3[8]),  8,10},
  {&(_tg__ZTV7S7856C6__8S7856C27__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C28__8S7856C27__7S7856C3[16]),  16,18},
  {&(_tg__ZTV8S7856C29__8S7856C27__7S7856C3[16]),  16,18},
  {&(_tg__ZTV7S7856C5__8S7856C27__7S7856C3[15]),  15,17},
  {&(_tg__ZTV7S7856C6__8S7856C27__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C13__A2__8S7856C27__7S7856C3[8]),  8,10},
  {&(_tg__ZTV8S7856C16__A1__8S7856C27__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C27__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C218S7856C28__8S7856C27__7S7856C3[3]),  3,5},
  {&(_tg__ZTV8S7856C29__7S7856C3[15]),  15,17},
  {&(_tg__ZTV7S7856C7__8S7856C29__7S7856C3[8]),  8,10},
  {&(_tg__ZTV7S7856C6__8S7856C29__7S7856C3[11]),  11,13},
  {&(_tg__ZTV7S7856C6__8S7856C29__7S7856C3[11]),  11,13},
  {&(_tg__ZTV7S7856C5__8S7856C29__7S7856C3[15]),  15,17},
  {&(_tg__ZTV7S7856C6__8S7856C29__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C14__8S7856C29__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__8S7856C29__7S7856C3[8]),  8,10},
  {&(_tg__ZTV8S7856C16__8S7856C29__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C16__8S7856C29__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C29__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C22__A1__7S7856C3[17]),  17,19},
  {&(_tg__ZTV8S7856C108S7856C22__A9__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C22__A9__7S7856C3[4]),  4,4},
  {&(_tg__ZTV7S7856C58S7856C22__A4__7S7856C3[14]),  14,16},
  {&(_tg__ZTV8S7856C187S7856C58S7856C22__A5__7S7856C3[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C187S7856C58S7856C22__A6__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C187S7856C58S7856C22__A12__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C187S7856C58S7856C22__A10__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C187S7856C58S7856C22__A10__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C187S7856C58S7856C22__A5__7S7856C3[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C58S7856C22__A5__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C58S7856C22__A5__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C10__A__8S7856C187S7856C58S7856C22__A5__7S7856C3[6]),  6,6},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C22__A4__7S7856C3[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C58S7856C22__A4__7S7856C3[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C22__A4__7S7856C3[11]),  11,13},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C22__A4__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C14__7S7856C58S7856C22__A4__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C58S7856C22__A4__7S7856C3[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C58S7856C22__A4__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C58S7856C22__A4__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C18__A1__7S7856C58S7856C22__A4__7S7856C3[6]),  6,6},
  {&(_tg__ZTV7S7856C6__8S7856C22__A1__7S7856C3[11]),  11,13},
  {&(_tg__ZTV7S7856C6__8S7856C22__A1__7S7856C3[11]),  11,13},
  {&(_tg__ZTV7S7856C7__8S7856C22__A1__7S7856C3[8]),  8,10},
  {&(_tg__ZTV7S7856C6__8S7856C22__A1__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C14__8S7856C22__A1__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__8S7856C22__A1__7S7856C3[8]),  8,10},
  {&(_tg__ZTV7S7856C5__A__8S7856C22__A1__7S7856C3[14]),  14,16},
  {&(_tg__ZTV8S7856C16__8S7856C22__A1__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C16__8S7856C22__A1__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A2__8S7856C22__A1__7S7856C3[6]),  6,6},
  {&(_tg__ZTV7S7856C4__8S7856C22__A1__7S7856C3[18]),  18,20},
  {&(_tg__ZTV7S7856C5__A1__8S7856C22__A1__7S7856C3[15]),  15,17},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A3__8S7856C22__A1__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C197S7856C4__8S7856C22__A1__7S7856C3[11]),  11,14},
  {&(_tg__ZTV8S7856C18__A2__8S7856C22__A1__7S7856C3[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A5__8S7856C22__A1__7S7856C3[6]),  6,6},
};
extern VTBL_ENTRY _ZTI7S7856C3[];
extern  VTBL_ENTRY _ZTV7S7856C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C3[];
static VTBL_ENTRY alt_thunk_names26[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7856C27D0Ev,_ZTv0_n64_N8S7856C27D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7856C27D0Ev,_ZThn24_N8S7856C27D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7856C27D1Ev,_ZTv0_n64_N8S7856C27D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7856C27D1Ev,_ZThn24_N8S7856C27D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7856C28D0Ev,_ZTv0_n64_N8S7856C28D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7856C28D0Ev,_ZThn16_N8S7856C28D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7856C28D1Ev,_ZTv0_n64_N8S7856C28D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7856C28D1Ev,_ZThn16_N8S7856C28D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7856C23D0Ev,_ZTv0_n64_N8S7856C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7856C23D0Ev,_ZThn96_N8S7856C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7856C23D1Ev,_ZTv0_n64_N8S7856C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7856C23D1Ev,_ZThn96_N8S7856C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N8S7856C23D0Ev,_ZTv0_n72_N8S7856C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S7856C23D0Ev,_ZThn100_N8S7856C23D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7856C23D0Ev,_ZThn72_N8S7856C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N8S7856C23D1Ev,_ZTv0_n72_N8S7856C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S7856C23D1Ev,_ZThn100_N8S7856C23D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7856C23D1Ev,_ZThn72_N8S7856C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7856C25D0Ev,_ZTv0_n64_N8S7856C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7856C25D0Ev,_ZThn96_N8S7856C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7856C25D1Ev,_ZTv0_n64_N8S7856C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7856C25D1Ev,_ZThn96_N8S7856C25D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N8S7856C25D0Ev,_ZTv0_n72_N8S7856C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7856C25D0Ev,_ZThn72_N8S7856C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N8S7856C25D1Ev,_ZTv0_n72_N8S7856C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7856C25D1Ev,_ZThn72_N8S7856C25D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7856C4D0Ev,_ZTv0_n36_N7S7856C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7856C4D0Ev,_ZThn76_N7S7856C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7856C4D1Ev,_ZTv0_n36_N7S7856C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7856C4D1Ev,_ZThn76_N7S7856C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7856C4D0Ev,_ZThn60_N7S7856C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7856C4D0Ev,_ZThn44_N7S7856C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7856C4D1Ev,_ZThn60_N7S7856C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7856C4D1Ev,_ZThn44_N7S7856C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7856C4D0Ev,_ZThn68_N7S7856C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7856C4D0Ev,_ZThn32_N7S7856C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7856C4D1Ev,_ZThn68_N7S7856C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7856C4D1Ev,_ZThn32_N7S7856C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7856C4D0Ev,_ZTv0_n60_N7S7856C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7856C4D0Ev,_ZThn16_N7S7856C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7856C4D1Ev,_ZTv0_n60_N7S7856C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7856C4D1Ev,_ZThn16_N7S7856C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C19D0Ev,_ZTv0_n36_N8S7856C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7856C19D0Ev,_ZThn72_N8S7856C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C19D1Ev,_ZTv0_n36_N8S7856C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7856C19D1Ev,_ZThn72_N8S7856C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7856C19D0Ev,_ZThn56_N8S7856C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7856C19D0Ev,_ZThn40_N8S7856C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7856C19D1Ev,_ZThn56_N8S7856C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7856C19D1Ev,_ZThn40_N8S7856C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C6D0Ev,_ZThn28_N7S7856C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7856C6D0Ev,_ZThn12_N7S7856C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7856C6D0Ev,_ZThn56_N7S7856C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7856C6D0Ev,_ZThn40_N7S7856C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C6D1Ev,_ZThn28_N7S7856C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7856C6D1Ev,_ZThn12_N7S7856C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7856C6D1Ev,_ZThn56_N7S7856C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7856C6D1Ev,_ZThn40_N7S7856C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C22D0Ev,_ZTv0_n36_N8S7856C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7856C22D0Ev,_ZThn100_N8S7856C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C22D1Ev,_ZTv0_n36_N8S7856C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7856C22D1Ev,_ZThn100_N8S7856C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C22D0Ev,_ZTv0_n60_N8S7856C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7856C22D0Ev,_ZThn40_N8S7856C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C22D1Ev,_ZTv0_n60_N8S7856C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7856C22D1Ev,_ZThn40_N8S7856C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N8S7856C22D0Ev,_ZTv0_n68_N8S7856C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7856C22D0Ev,_ZThn24_N8S7856C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N8S7856C22D1Ev,_ZTv0_n68_N8S7856C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7856C22D1Ev,_ZThn24_N8S7856C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S7856C22D0Ev,_ZThn84_N8S7856C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7856C22D0Ev,_ZThn68_N8S7856C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S7856C22D1Ev,_ZThn84_N8S7856C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7856C22D1Ev,_ZThn68_N8S7856C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S7856C22D0Ev,_ZThn92_N8S7856C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7856C22D0Ev,_ZThn56_N8S7856C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S7856C22D1Ev,_ZThn92_N8S7856C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7856C22D1Ev,_ZThn56_N8S7856C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7856C5D0Ev,_ZThn44_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C5D0Ev,_ZThn28_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7856C5D0Ev,_ZThn80_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7856C5D0Ev,_ZThn64_N7S7856C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7856C5D1Ev,_ZThn44_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C5D1Ev,_ZThn28_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7856C5D1Ev,_ZThn80_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7856C5D1Ev,_ZThn64_N7S7856C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7856C5D0Ev,_ZThn52_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7856C5D0Ev,_ZThn16_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7856C5D0Ev,_ZThn88_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7856C5D0Ev,_ZThn52_N7S7856C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7856C5D1Ev,_ZThn52_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7856C5D1Ev,_ZThn16_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7856C5D1Ev,_ZThn88_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7856C5D1Ev,_ZThn52_N7S7856C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7856C18D0Ev,_ZThn44_N8S7856C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7856C18D0Ev,_ZThn80_N8S7856C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7856C18D1Ev,_ZThn44_N8S7856C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7856C18D1Ev,_ZThn80_N8S7856C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N7S7856C3D0Ev,_ZTv0_n64_N7S7856C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn448_N7S7856C3D0Ev,_ZThn236_N7S7856C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N7S7856C3D1Ev,_ZTv0_n64_N7S7856C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn448_N7S7856C3D1Ev,_ZThn236_N7S7856C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N7S7856C3D0Ev,_ZTv0_n72_N7S7856C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N7S7856C3D0Ev,_ZThn240_N7S7856C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn400_N7S7856C3D0Ev,_ZThn212_N7S7856C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N7S7856C3D1Ev,_ZTv0_n72_N7S7856C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N7S7856C3D1Ev,_ZThn240_N7S7856C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn400_N7S7856C3D1Ev,_ZThn212_N7S7856C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n176_N7S7856C3D0Ev,_ZTv0_n88_N7S7856C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N7S7856C3D0Ev,_ZThn140_N7S7856C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n176_N7S7856C3D1Ev,_ZTv0_n88_N7S7856C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N7S7856C3D1Ev,_ZThn140_N7S7856C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7856C3D0Ev,_ZTv0_n36_N7S7856C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S7856C3D0Ev,_ZThn100_N7S7856C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7856C3D1Ev,_ZTv0_n36_N7S7856C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S7856C3D1Ev,_ZThn100_N7S7856C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C3D0Ev,_ZTv0_n32_N7S7856C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S7856C3D0Ev,_ZThn84_N7S7856C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7856C3D0Ev,_ZThn68_N7S7856C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C3D1Ev,_ZTv0_n32_N7S7856C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S7856C3D1Ev,_ZThn84_N7S7856C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7856C3D1Ev,_ZThn68_N7S7856C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C3D0Ev,_ZTv0_n44_N7S7856C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S7856C3D0Ev,_ZThn92_N7S7856C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7856C3D0Ev,_ZThn56_N7S7856C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C3D1Ev,_ZTv0_n44_N7S7856C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S7856C3D1Ev,_ZThn92_N7S7856C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7856C3D1Ev,_ZThn56_N7S7856C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7856C3D0Ev,_ZTv0_n60_N7S7856C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S7856C3D0Ev,_ZThn116_N7S7856C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7856C3D0Ev,_ZThn40_N7S7856C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7856C3D1Ev,_ZTv0_n60_N7S7856C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S7856C3D1Ev,_ZThn116_N7S7856C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7856C3D1Ev,_ZThn40_N7S7856C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N7S7856C3D0Ev,_ZTv0_n68_N7S7856C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C3D0Ev,_ZThn24_N7S7856C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N7S7856C3D1Ev,_ZTv0_n68_N7S7856C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C3D1Ev,_ZThn24_N7S7856C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7856C3 = {  "S7856C3", // class name
  bases_S7856C3, 138,
  &(vtc_S7856C3[0]), // expected_vtbl_contents
  &(vtt_S7856C3[0]), // expected_vtt_contents
  ABISELECT(496,260), // object size
  NSPAIRA(_ZTI7S7856C3),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7856C3),409, //virtual function table var
  23, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7856C3),393, //virtual table table var
  73, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names26,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7856C31  : virtual S7856C11 , S7856C22 {
  void *s7856c31f0;
  ~S7856C31(); // tgen
  S7856C31(); // tgen
};
//SIG(-1 S7856C31) C1{ VBC2{ VBC3{ m} BC4{ m} VBC5{ m}} BC6{ BC7{ BC3 VBC2 VBC4} VBC8{ VBC9{ VBC3 VBC4 VBC7 BC5 BC10{ BC4 VBC3 VBC5 BC2 VBC7 vd} vd} VBC11{ BC5 BC4 BC2 Fi} VBC10 vd Fi[2]} BC12{ VBC8 VBC13{ m} VBC14{ VBC2 VBC15{ VBC4} VBC11 BC5 VBC9 vd Fi} BC16{ VBC10 BC11 BC7 BC5 vd} vd} VBC17{ VBC12 BC3 BC7 BC18{ BC13 VBC3 BC8 VBC16 vd v1} vd} vd Fc} Fp}


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

static void Test_S7856C31()
{
  extern Class_Descriptor cd_S7856C31;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(29,31)];
    init_test(&cd_S7856C31, buf);
    S7856C31 *dp, &lv = *(dp=new (buf) S7856C31());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(224,120), "sizeof(S7856C31)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7856C31)");
    /*is_ambiguous_... S7856C31::S7856C11 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*), ABISELECT(48,24), "S7856C31");
    /*is_ambiguous_... S7856C7::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C7*), ABISELECT(48,24), "S7856C31");
    /*is_ambiguous_... S7856C13::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*)(S7856C7*), ABISELECT(48,24), "S7856C31");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(48,24), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C14 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*), ABISELECT(48,24), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*), ABISELECT(48,24), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*), ABISELECT(48,24), "S7856C31");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(48,24), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C5 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(48,24), "S7856C31");
    /*is_ambiguous_... S7856C19::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C19*)(S7856C4*), ABISELECT(48,24), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C18 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*), ABISELECT(48,24), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*), 0, "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*), 0, "S7856C31");
    check_base_class_offset(lv, (S7856C12*)(S7856C13*)(S7856C7*), 0, "S7856C31");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*)(S7856C7*), 0, "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*), 0, "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*), 0, "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*), 0, "S7856C31");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), 0, "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), 0, "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*), 0, "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C11*), 0, "S7856C31");
    /*is_ambiguous_... S7856C22::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C22*), 0, "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*), 0, "S7856C31");
    /*is_ambiguous_... S7856C16::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C16*), 0, "S7856C31");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C22*), 0, "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*)(S7856C5*), 0, "S7856C31");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C4*), 0, "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*), 0, "S7856C31");
    /*is_ambiguous_... S7856C22::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C22*), 0, "S7856C31");
    /*is_ambiguous_... S7856C22::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C22*), ABISELECT(48,24), "S7856C31");
    /*is_ambiguous_... S7856C7::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C7*), ABISELECT(48,24), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*), ABISELECT(48,24), "S7856C31");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C17_nt*), ABISELECT(48,24), "S7856C31");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(48,24), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(48,24), "S7856C31");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C4*), ABISELECT(48,24), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*), ABISELECT(48,24), "S7856C31");
    /*is_ambiguous_... S7856C22::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C22*), 0, "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*), ABISELECT(56,28), "S7856C31");
    check_base_class_offset(lv, (S7856C10*)(S7856C7*), ABISELECT(56,28), "S7856C31");
    check_base_class_offset(lv, (S7856C10*)(S7856C13*)(S7856C7*), ABISELECT(56,28), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*), ABISELECT(56,28), "S7856C31");
    /*is_ambiguous_... S7856C7::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C7*), ABISELECT(72,40), "S7856C31");
    /*is_ambiguous_... S7856C13::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*)(S7856C7*), ABISELECT(80,44), "S7856C31");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(72,40), "S7856C31");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(72,40), "S7856C31");
    check_base_class_offset(lv, (S7856C13*)(S7856C7*), ABISELECT(72,40), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C6 */ AMB_check_base_class_offset(lv, (S7856C7*)(S7856C6*), ABISELECT(72,40), "S7856C31");
    check_base_class_offset(lv, (S7856C7*)(S7856C16*), ABISELECT(72,40), "S7856C31");
    check_base_class_offset(lv, (S7856C7*)(S7856C6*)(S7856C19*)(S7856C4*), ABISELECT(72,40), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*), ABISELECT(88,48), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*), ABISELECT(96,52), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*), ABISELECT(88,48), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*), ABISELECT(88,48), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C6 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C6*), ABISELECT(88,48), "S7856C31");
    check_base_class_offset(lv, (S7856C14*)(S7856C16*), ABISELECT(88,48), "S7856C31");
    check_base_class_offset(lv, (S7856C14*)(S7856C6*)(S7856C19*)(S7856C4*), ABISELECT(88,48), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*), ABISELECT(112,60), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*), ABISELECT(104,56), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*), ABISELECT(104,56), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C6 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C6*), ABISELECT(104,56), "S7856C31");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(104,56), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C18*)(S7856C5*), ABISELECT(104,56), "S7856C31");
    /*is_ambiguous_... S7856C6::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C6*)(S7856C19*)(S7856C4*), ABISELECT(104,56), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C18*), ABISELECT(104,56), "S7856C31");
    /*is_ambiguous_... S7856C22::S7856C6 */ AMB_check_base_class_offset(lv, (S7856C6*)(S7856C22*), ABISELECT(56,28), "S7856C31");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C6*)(S7856C5*)(S7856C22*), ABISELECT(56,28), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C6*)(S7856C5*), ABISELECT(56,28), "S7856C31");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7856C5*)(S7856C22*), 0, "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7856C5*), 0, "S7856C31");
    check_base_class_offset(lv, (S7856C17_nt*)(S7856C16*), ABISELECT(120,64), "S7856C31");
    /*is_ambiguous_... S7856C16::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C16*), ABISELECT(120,64), "S7856C31");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C16*)(S7856C5*)(S7856C22*), ABISELECT(120,64), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C16*)(S7856C5*), ABISELECT(120,64), "S7856C31");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(8,4), "S7856C31");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(16,8), "S7856C31");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(8,4), "S7856C31");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(8,4), "S7856C31");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(8,4), "S7856C31");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(24,12), "S7856C31");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(24,12), "S7856C31");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(32,16), "S7856C31");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(8,4), "S7856C31");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C5*)(S7856C22*), ABISELECT(8,4), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(160,88), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(168,92), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(160,88), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(160,88), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(160,88), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C5 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(176,96), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(176,96), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*)(S7856C5*), ABISELECT(184,100), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C18*)(S7856C5*), ABISELECT(160,88), "S7856C31");
    check_base_class_offset(lv, (S7856C5*)(S7856C4*), ABISELECT(160,88), "S7856C31");
    /*is_ambiguous_... S7856C4::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C4*), ABISELECT(144,76), "S7856C31");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C4*), ABISELECT(136,72), "S7856C31");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C4*), ABISELECT(136,72), "S7856C31");
    check_base_class_offset(lv, (S7856C15*)(S7856C19*)(S7856C4*), ABISELECT(144,76), "S7856C31");
    check_base_class_offset(lv, (S7856C6*)(S7856C19*)(S7856C4*), ABISELECT(144,76), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*), ABISELECT(192,104), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*), ABISELECT(200,108), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*), ABISELECT(192,104), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*), ABISELECT(192,104), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C18*), ABISELECT(192,104), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C18 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*), ABISELECT(208,112), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*), ABISELECT(208,112), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*), ABISELECT(216,116), "S7856C31");
    check_base_class_offset(lv, (S7856C18*)(S7856C19*)(S7856C4*), ABISELECT(192,104), "S7856C31");
    check_base_class_offset(lv, (S7856C19*)(S7856C4*), ABISELECT(144,76), "S7856C31");
    check_base_class_offset(lv, (S7856C4*)(S7856C22*), ABISELECT(136,72), "S7856C31");
    check_base_class_offset(lv, (S7856C22*), 0, "S7856C31");
    check_field_offset(lv, s7856c31f0, ABISELECT(40,20), "S7856C31.s7856c31f0");
    test_class_info(&lv, &cd_S7856C31);
    dp->~S7856C31();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7856C31(Test_S7856C31, "S7856C31", ABISELECT(224,120));

#else // __cplusplus

extern void _ZN8S7856C31C1Ev();
extern void _ZN8S7856C31D1Ev();
Name_Map name_map_S7856C31[] = {
  NSPAIR(_ZN8S7856C31C1Ev),
  NSPAIR(_ZN8S7856C31D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C7;
extern VTBL_ENTRY _ZTI7S7856C7[];
extern  VTBL_ENTRY _ZTV7S7856C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C7[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C6;
extern VTBL_ENTRY _ZTI7S7856C6[];
extern  VTBL_ENTRY _ZTV7S7856C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C6[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C17_nt;
extern VTBL_ENTRY _ZTI11S7856C17_nt[];
extern  VTBL_ENTRY _ZTV11S7856C17_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S7856C17_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C16;
extern VTBL_ENTRY _ZTI8S7856C16[];
extern  VTBL_ENTRY _ZTV8S7856C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C16[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C5;
extern VTBL_ENTRY _ZTI7S7856C5[];
extern  VTBL_ENTRY _ZTV7S7856C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C5[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C5;
extern VTBL_ENTRY _ZTI7S7856C5[];
extern  VTBL_ENTRY _ZTV7S7856C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C5[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C6;
extern VTBL_ENTRY _ZTI7S7856C6[];
extern  VTBL_ENTRY _ZTV7S7856C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C6[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C19;
extern VTBL_ENTRY _ZTI8S7856C19[];
extern  VTBL_ENTRY _ZTV8S7856C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C19[];
extern Class_Descriptor cd_S7856C4;
extern VTBL_ENTRY _ZTI7S7856C4[];
extern  VTBL_ENTRY _ZTV7S7856C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C4[];
extern Class_Descriptor cd_S7856C22;
extern VTBL_ENTRY _ZTI8S7856C22[];
extern  VTBL_ENTRY _ZTV8S7856C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C22[];
static Base_Class bases_S7856C31[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S77C13_nt,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7856C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    65, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7856C7,    ABISELECT(72,40), //bcp->offset
    54, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(88,48), //bcp->offset
    64, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(104,56), //bcp->offset
    68, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S7856C6,    ABISELECT(56,28), //bcp->offset
    41, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    38, //immediately_derived
  0, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    38, //immediately_derived
  0, 1},
  {&cd_S7856C17_nt,    ABISELECT(120,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    84, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(120,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S7856C16,    ABISELECT(120,64), //bcp->offset
    78, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    38, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(24,12), //bcp->offset
    35, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S7856C5,    ABISELECT(8,4), //bcp->offset
    19, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    65, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(168,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    118, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    117, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(176,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(176,96), //bcp->offset
    142, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    119, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(184,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    116, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S7856C5,    ABISELECT(160,88), //bcp->offset
    125, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    115, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    64, //immediately_derived
  0, 1},
  {&cd_S77C13_nt,    ABISELECT(144,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    64, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(136,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(136,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    86, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    64, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(144,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    63, //immediately_derived
  0, 0},
  {&cd_S7856C6,    ABISELECT(144,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    89, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    63, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(192,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(200,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(192,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(192,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    136, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(192,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    135, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(208,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    60, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(208,112), //bcp->offset
    159, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    55, //bcp->index_in_construction_vtbl_array
    137, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(216,116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(192,104), //bcp->offset
    148, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    54, //bcp->index_in_construction_vtbl_array
    134, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    63, //immediately_derived
  0, 1},
  {&cd_S7856C19,    ABISELECT(144,76), //bcp->offset
    111, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    88, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    64, //immediately_derived
  0, 0},
  {&cd_S7856C4,    ABISELECT(136,72), //bcp->offset
    91, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    85, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    65, //immediately_derived
  0, 1},
  {&cd_S7856C22,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7856C31[];
extern void _ZN8S7856C31D1Ev();
extern void _ZN8S7856C31D0Ev();
extern void ABISELECT(_ZThn8_N8S7856C31D1Ev,_ZThn4_N8S7856C31D1Ev)();
extern void ABISELECT(_ZThn8_N8S7856C31D0Ev,_ZThn4_N8S7856C31D0Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C31D1Ev,_ZTv0_n44_N8S7856C31D1Ev)();
extern void ABISELECT(_ZThn56_N8S7856C31D1Ev,_ZThn28_N8S7856C31D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C31D0Ev,_ZTv0_n44_N8S7856C31D0Ev)();
extern void ABISELECT(_ZThn56_N8S7856C31D0Ev,_ZThn28_N8S7856C31D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C31D1Ev,_ZTv0_n32_N8S7856C31D1Ev)();
extern void ABISELECT(_ZThn72_N8S7856C31D1Ev,_ZThn40_N8S7856C31D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C31D0Ev,_ZTv0_n32_N8S7856C31D0Ev)();
extern void ABISELECT(_ZThn72_N8S7856C31D0Ev,_ZThn40_N8S7856C31D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C31D1Ev,_ZTv0_n32_N8S7856C31D1Ev)();
extern void ABISELECT(_ZThn104_N8S7856C31D1Ev,_ZThn56_N8S7856C31D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C31D0Ev,_ZTv0_n32_N8S7856C31D0Ev)();
extern void ABISELECT(_ZThn104_N8S7856C31D0Ev,_ZThn56_N8S7856C31D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C31D1Ev,_ZTv0_n44_N8S7856C31D1Ev)();
extern void ABISELECT(_ZThn120_N8S7856C31D1Ev,_ZThn64_N8S7856C31D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C31D0Ev,_ZTv0_n44_N8S7856C31D0Ev)();
extern void ABISELECT(_ZThn120_N8S7856C31D0Ev,_ZThn64_N8S7856C31D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N8S7856C31D1Ev,_ZTv0_n68_N8S7856C31D1Ev)();
extern void ABISELECT(_ZThn136_N8S7856C31D1Ev,_ZThn72_N8S7856C31D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N8S7856C31D0Ev,_ZTv0_n68_N8S7856C31D0Ev)();
extern void ABISELECT(_ZThn136_N8S7856C31D0Ev,_ZThn72_N8S7856C31D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn8_n136_N8S7856C31D1Ev,_ZTvn4_n68_N8S7856C31D1Ev)();
extern void ABISELECT(_ZTvn8_n136_N8S7856C31D0Ev,_ZTvn4_n68_N8S7856C31D0Ev)();
extern void _ZN8S7856C192v1Ev();
extern void ABISELECT(_ZTv0_n120_N8S7856C31D1Ev,_ZTv0_n60_N8S7856C31D1Ev)();
extern void ABISELECT(_ZThn160_N8S7856C31D1Ev,_ZThn88_N8S7856C31D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S7856C31D0Ev,_ZTv0_n60_N8S7856C31D0Ev)();
extern void ABISELECT(_ZThn160_N8S7856C31D0Ev,_ZThn88_N8S7856C31D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7856C31D1Ev,_ZTv0_n36_N8S7856C31D1Ev)();
extern void ABISELECT(_ZThn192_N8S7856C31D1Ev,_ZThn104_N8S7856C31D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7856C31D0Ev,_ZTv0_n36_N8S7856C31D0Ev)();
extern void ABISELECT(_ZThn192_N8S7856C31D0Ev,_ZThn104_N8S7856C31D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7856C31[] = {
  ABISELECT(192,104),
  ABISELECT(160,88),
  ABISELECT(136,72),
  ABISELECT(120,64),
  ABISELECT(120,64),
  0,
  ABISELECT(104,56),
  ABISELECT(88,48),
  ABISELECT(56,28),
  ABISELECT(72,40),
  ABISELECT(56,28),
  ABISELECT(48,24),
  0,
  0,
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C31[0]),
  (VTBL_ENTRY)&_ZN8S7856C31D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C31D0Ev,
  ABISELECT(112,60),
  ABISELECT(112,60),
  ABISELECT(-8,-4),
  ABISELECT(80,44),
  ABISELECT(64,36),
  ABISELECT(48,24),
  ABISELECT(40,20),
  ABISELECT(-8,-4),
  ABISELECT(48,24),
  ABISELECT(96,52),
  ABISELECT(-8,-4),
  ABISELECT(40,20),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7856C31[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7856C31D1Ev,_ZThn4_N8S7856C31D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7856C31D0Ev,_ZThn4_N8S7856C31D0Ev),
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7856C31[0]),
  ABISELECT(-56,-28),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-8,-4),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-8,-4),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S7856C31[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C31D1Ev,_ZTv0_n44_N8S7856C31D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C31D0Ev,_ZTv0_n44_N8S7856C31D0Ev),
  ABISELECT(-72,-40),
  ABISELECT(-24,-16),
  ABISELECT(-72,-40),
  ABISELECT(-16,-12),
  ABISELECT(-72,-40),
  ABISELECT(-24,-16),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S7856C31[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C31D1Ev,_ZTv0_n32_N8S7856C31D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C31D0Ev,_ZTv0_n32_N8S7856C31D0Ev),
  ABISELECT(-88,-48),
  ABISELECT(-40,-24),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S7856C31[0]),
  ABISELECT(-104,-56),
  ABISELECT(-56,-32),
  ABISELECT(-104,-56),
  ABISELECT(-48,-28),
  ABISELECT(-104,-56),
  ABISELECT(-56,-32),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S7856C31[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C31D1Ev,_ZTv0_n32_N8S7856C31D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C31D0Ev,_ZTv0_n32_N8S7856C31D0Ev),
  ABISELECT(-120,-64),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-120,-64),
  ABISELECT(-72,-40),
  ABISELECT(-120,-64),
  ABISELECT(-72,-40),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI8S7856C31[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C31D1Ev,_ZTv0_n44_N8S7856C31D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C31D0Ev,_ZTv0_n44_N8S7856C31D0Ev),
  ABISELECT(8,4),
  ABISELECT(-136,-72),
  ABISELECT(56,32),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-136,-72),
  ABISELECT(-32,-16),
  ABISELECT(-48,-24),
  ABISELECT(-80,-44),
  ABISELECT(-64,-32),
  ABISELECT(-80,-44),
  ABISELECT(24,16),
  ABISELECT(-88,-48),
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(-88,-48),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI8S7856C31[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S7856C31D1Ev,_ZTv0_n68_N8S7856C31D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S7856C31D0Ev,_ZTv0_n68_N8S7856C31D0Ev),
  ABISELECT(48,28),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-88,-48),
  ABISELECT(-72,-36),
  ABISELECT(-96,-52),
  ABISELECT(-144,-76),
  ABISELECT(-144,-76),
  ABISELECT(-96,-52),
  ABISELECT(-144,-76),
  (VTBL_ENTRY)&(_ZTI8S7856C31[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N8S7856C31D1Ev,_ZTvn4_n68_N8S7856C31D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N8S7856C31D0Ev,_ZTvn4_n68_N8S7856C31D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
  ABISELECT(-160,-88),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-160,-88),
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-104,-60),
  ABISELECT(-112,-64),
  ABISELECT(-160,-88),
  ABISELECT(-104,-60),
  ABISELECT(-56,-32),
  ABISELECT(-160,-88),
  ABISELECT(-112,-64),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S7856C31[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C31D1Ev,_ZTv0_n60_N8S7856C31D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C31D0Ev,_ZTv0_n60_N8S7856C31D0Ev),
  ABISELECT(-128,-72),
  ABISELECT(-176,-96),
  ABISELECT(-176,-96),
  ABISELECT(-128,-72),
  ABISELECT(-176,-96),
  (VTBL_ENTRY)&(_ZTI8S7856C31[0]),
  ABISELECT(-192,-104),
  ABISELECT(-144,-80),
  ABISELECT(-192,-104),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-192,-104),
  ABISELECT(-144,-80),
  ABISELECT(-192,-104),
  (VTBL_ENTRY)&(_ZTI8S7856C31[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C31D1Ev,_ZTv0_n36_N8S7856C31D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C31D0Ev,_ZTv0_n36_N8S7856C31D0Ev),
  ABISELECT(-160,-88),
  ABISELECT(-208,-112),
  ABISELECT(-208,-112),
  ABISELECT(-160,-88),
  ABISELECT(-208,-112),
  (VTBL_ENTRY)&(_ZTI8S7856C31[0]),
};
extern VTBL_ENTRY _ZTV8S7856C31[];
extern void _ZN8S7856C22D1Ev();
extern void _ZN8S7856C22D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C22__8S7856C31[] = {
  ABISELECT(192,104),
  ABISELECT(160,88),
  ABISELECT(136,72),
  ABISELECT(120,64),
  ABISELECT(120,64),
  0,
  ABISELECT(104,56),
  ABISELECT(88,48),
  ABISELECT(56,28),
  ABISELECT(72,40),
  ABISELECT(56,28),
  ABISELECT(48,24),
  0,
  0,
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&_ZN8S7856C22D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C22D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C22__8S7856C31[] = {
  ABISELECT(48,24),
  0,
  0,
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void _ZN7S7856C5D1Ev();
extern void _ZN7S7856C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C58S7856C22__8S7856C31[] = {
  ABISELECT(112,60),
  ABISELECT(112,60),
  ABISELECT(-8,-4),
  ABISELECT(80,44),
  ABISELECT(64,36),
  ABISELECT(48,24),
  ABISELECT(40,20),
  ABISELECT(-8,-4),
  ABISELECT(48,24),
  ABISELECT(96,52),
  ABISELECT(-8,-4),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&_ZN7S7856C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C5D0Ev,
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C187S7856C58S7856C22__8S7856C31[] = {
  ABISELECT(40,20),
  ABISELECT(-8,-4),
  ABISELECT(48,24),
  ABISELECT(96,52),
  ABISELECT(-8,-4),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C187S7856C58S7856C22__A1__8S7856C31[] = {
  ABISELECT(-8,-4),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C187S7856C58S7856C22__A4__8S7856C31[] = {
  ABISELECT(-8,-4),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C58S7856C22__A2__8S7856C31[] = {
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C187S7856C58S7856C22__A2__8S7856C31[] = {
  0,
  ABISELECT(48,24),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZThn96_N8S7856C18D1Ev,_ZThn52_N8S7856C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
extern void ABISELECT(_ZThn96_N8S7856C18D0Ev,_ZThn52_N8S7856C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C187S7856C58S7856C22__8S7856C31[] = {
  ABISELECT(-96,-52),
  ABISELECT(-56,-32),
  ABISELECT(-104,-56),
  ABISELECT(-48,-28),
  ABISELECT(-104,-56),
  ABISELECT(-56,-32),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C187S7856C58S7856C22__8S7856C31[] = {
  ABISELECT(-8,-4),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-8,-4),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__A1__8S7856C187S7856C58S7856C22__8S7856C31[] = {
  0,
  ABISELECT(48,24),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C187S7856C58S7856C22__8S7856C31[] = {
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(24,12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn48_N7S7856C5D1Ev,_ZThn24_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn48_N7S7856C5D0Ev,_ZThn24_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C58S7856C22__8S7856C31[] = {
  ABISELECT(-48,-24),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-8,-4),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-8,-4),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn64_N7S7856C5D1Ev,_ZThn36_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn64_N7S7856C5D0Ev,_ZThn36_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C58S7856C22__8S7856C31[] = {
  ABISELECT(-64,-36),
  ABISELECT(-24,-16),
  ABISELECT(-72,-40),
  ABISELECT(-16,-12),
  ABISELECT(-72,-40),
  ABISELECT(-24,-16),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__7S7856C58S7856C22__8S7856C31[] = {
  0,
  ABISELECT(48,24),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C58S7856C22__8S7856C31[] = {
  ABISELECT(-88,-48),
  ABISELECT(-40,-24),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn96_N7S7856C5D1Ev,_ZThn52_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn96_N7S7856C5D0Ev,_ZThn52_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C58S7856C22__8S7856C31[] = {
  ABISELECT(-96,-52),
  ABISELECT(-56,-32),
  ABISELECT(-104,-56),
  ABISELECT(-48,-28),
  ABISELECT(-104,-56),
  ABISELECT(-56,-32),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn112_N7S7856C5D1Ev,_ZThn60_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn112_N7S7856C5D0Ev,_ZThn60_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C58S7856C22__8S7856C31[] = {
  ABISELECT(-112,-60),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-120,-64),
  ABISELECT(-72,-40),
  ABISELECT(-120,-64),
  ABISELECT(-72,-40),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__7S7856C58S7856C22__8S7856C31[] = {
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(24,12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn56_N8S7856C22D1Ev,_ZThn28_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn56_N8S7856C22D0Ev,_ZThn28_N8S7856C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C22__8S7856C31[] = {
  ABISELECT(-56,-28),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-8,-4),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-8,-4),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn72_N8S7856C22D1Ev,_ZThn40_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn72_N8S7856C22D0Ev,_ZThn40_N8S7856C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C22__8S7856C31[] = {
  ABISELECT(-72,-40),
  ABISELECT(-24,-16),
  ABISELECT(-72,-40),
  ABISELECT(-16,-12),
  ABISELECT(-72,-40),
  ABISELECT(-24,-16),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C22__8S7856C31[] = {
  ABISELECT(-88,-48),
  ABISELECT(-40,-24),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn104_N8S7856C22D1Ev,_ZThn56_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn104_N8S7856C22D0Ev,_ZThn56_N8S7856C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__8S7856C22__8S7856C31[] = {
  ABISELECT(-104,-56),
  ABISELECT(-56,-32),
  ABISELECT(-104,-56),
  ABISELECT(-48,-28),
  ABISELECT(-104,-56),
  ABISELECT(-56,-32),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev),
};
extern void ABISELECT(_ZThn8_N8S7856C22D1Ev,_ZThn4_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn8_N8S7856C22D0Ev,_ZThn4_N8S7856C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__A__8S7856C22__8S7856C31[] = {
  ABISELECT(112,60),
  ABISELECT(112,60),
  ABISELECT(-8,-4),
  ABISELECT(80,44),
  ABISELECT(64,36),
  ABISELECT(48,24),
  ABISELECT(40,20),
  ABISELECT(-8,-4),
  ABISELECT(48,24),
  ABISELECT(96,52),
  ABISELECT(-8,-4),
  ABISELECT(40,20),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7856C22D1Ev,_ZThn4_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7856C22D0Ev,_ZThn4_N8S7856C22D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn120_N8S7856C22D1Ev,_ZThn64_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn120_N8S7856C22D0Ev,_ZThn64_N8S7856C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C22__8S7856C31[] = {
  ABISELECT(-120,-64),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-120,-64),
  ABISELECT(-72,-40),
  ABISELECT(-120,-64),
  ABISELECT(-72,-40),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A2__8S7856C22__8S7856C31[] = {
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
};
extern void ABISELECT(_ZTv0_n136_N8S7856C22D1Ev,_ZTv0_n68_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn136_N8S7856C22D1Ev,_ZThn72_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N8S7856C22D0Ev,_ZTv0_n68_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn136_N8S7856C22D0Ev,_ZThn72_N8S7856C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C4__8S7856C22__8S7856C31[] = {
  ABISELECT(8,4),
  ABISELECT(-136,-72),
  ABISELECT(56,32),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-136,-72),
  ABISELECT(-32,-16),
  ABISELECT(-48,-24),
  ABISELECT(-80,-44),
  ABISELECT(-64,-32),
  ABISELECT(-80,-44),
  ABISELECT(24,16),
  ABISELECT(-88,-48),
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(-88,-48),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S7856C22D1Ev,_ZTv0_n68_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S7856C22D0Ev,_ZTv0_n68_N8S7856C22D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S7856C22D1Ev,_ZTv0_n60_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn160_N8S7856C22D1Ev,_ZThn88_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S7856C22D0Ev,_ZTv0_n60_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn160_N8S7856C22D0Ev,_ZThn88_N8S7856C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C5__A1__8S7856C22__8S7856C31[] = {
  ABISELECT(-160,-88),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-160,-88),
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-104,-60),
  ABISELECT(-112,-64),
  ABISELECT(-160,-88),
  ABISELECT(-104,-60),
  ABISELECT(-56,-32),
  ABISELECT(-160,-88),
  ABISELECT(-112,-64),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C22D1Ev,_ZTv0_n60_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C22D0Ev,_ZTv0_n60_N8S7856C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A3__8S7856C22__8S7856C31[] = {
  ABISELECT(-128,-72),
  ABISELECT(-176,-96),
  ABISELECT(-176,-96),
  ABISELECT(-128,-72),
  ABISELECT(-176,-96),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
};
extern void ABISELECT(_ZTvn8_n136_N8S7856C22D1Ev,_ZTvn4_n68_N8S7856C22D1Ev)();
extern void ABISELECT(_ZTvn8_n136_N8S7856C22D0Ev,_ZTvn4_n68_N8S7856C22D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C197S7856C4__8S7856C22__8S7856C31[] = {
  ABISELECT(48,28),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-88,-48),
  ABISELECT(-72,-36),
  ABISELECT(-96,-52),
  ABISELECT(-144,-76),
  ABISELECT(-144,-76),
  ABISELECT(-96,-52),
  ABISELECT(-144,-76),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N8S7856C22D1Ev,_ZTvn4_n68_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N8S7856C22D0Ev,_ZTvn4_n68_N8S7856C22D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N8S7856C22D1Ev,_ZTv0_n36_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn192_N8S7856C22D1Ev,_ZThn104_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7856C22D0Ev,_ZTv0_n36_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn192_N8S7856C22D0Ev,_ZThn104_N8S7856C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C18__A2__8S7856C22__8S7856C31[] = {
  ABISELECT(-192,-104),
  ABISELECT(-144,-80),
  ABISELECT(-192,-104),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-192,-104),
  ABISELECT(-144,-80),
  ABISELECT(-192,-104),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C22D1Ev,_ZTv0_n36_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C22D0Ev,_ZTv0_n36_N8S7856C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A5__8S7856C22__8S7856C31[] = {
  ABISELECT(-160,-88),
  ABISELECT(-208,-112),
  ABISELECT(-208,-112),
  ABISELECT(-160,-88),
  ABISELECT(-208,-112),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C31[] = {
  0,
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
extern void _ZN7S7856C6D1Ev();
extern void _ZN7S7856C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C31[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-8,-4),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&_ZN7S7856C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C6D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn16_N7S7856C6D1Ev,_ZThn12_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn16_N7S7856C6D0Ev,_ZThn12_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C6__8S7856C31[] = {
  ABISELECT(-16,-12),
  ABISELECT(-24,-16),
  ABISELECT(-72,-40),
  ABISELECT(-16,-12),
  ABISELECT(-72,-40),
  ABISELECT(-24,-16),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__7S7856C6__8S7856C31[] = {
  0,
  ABISELECT(48,24),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C6__8S7856C31[] = {
  ABISELECT(-88,-48),
  ABISELECT(-40,-24),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn48_N7S7856C6D1Ev,_ZThn28_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn48_N7S7856C6D0Ev,_ZThn28_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C6__8S7856C31[] = {
  ABISELECT(-48,-28),
  ABISELECT(-56,-32),
  ABISELECT(-104,-56),
  ABISELECT(-48,-28),
  ABISELECT(-104,-56),
  ABISELECT(-56,-32),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
extern void _ZN7S7856C7D1Ev();
extern void _ZN7S7856C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C31[] = {
  ABISELECT(-24,-16),
  ABISELECT(-72,-40),
  ABISELECT(-16,-12),
  ABISELECT(-72,-40),
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
  (VTBL_ENTRY)&_ZN7S7856C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C7D0Ev,
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C137S7856C7__8S7856C31[] = {
  ABISELECT(-24,-16),
  ABISELECT(-72,-40),
  ABISELECT(-16,-12),
  ABISELECT(-72,-40),
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C137S7856C7__A1__8S7856C31[] = {
  ABISELECT(-72,-40),
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C137S7856C7__8S7856C31[] = {
  ABISELECT(-8,-4),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-8,-4),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__A1__8S7856C137S7856C7__8S7856C31[] = {
  0,
  ABISELECT(48,24),
  ABISELECT(72,40),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C7__8S7856C31[] = {
  ABISELECT(-8,-4),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-8,-4),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__7S7856C7__8S7856C31[] = {
  0,
  ABISELECT(48,24),
  ABISELECT(72,40),
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A1__8S7856C31[] = {
  ABISELECT(-8,-4),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C10__A1__8S7856C31[] = {
  0,
  ABISELECT(48,24),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C31[] = {
  ABISELECT(-88,-48),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C14__A2__8S7856C31[] = {
  ABISELECT(-88,-48),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__8S7856C31[] = {
  ABISELECT(-56,-32),
  ABISELECT(-104,-56),
  ABISELECT(-48,-28),
  ABISELECT(-104,-56),
  ABISELECT(-56,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C13__A3__8S7856C31[] = {
  ABISELECT(-104,-56),
  ABISELECT(-56,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C13__A1__8S7856C31[] = {
  ABISELECT(-8,-4),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__A1__8S7856C13__A1__8S7856C31[] = {
  0,
  ABISELECT(48,24),
  ABISELECT(104,56),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
extern void _ZN8S7856C16D1Ev();
extern void _ZN8S7856C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C31[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-120,-64),
  ABISELECT(-72,-40),
  ABISELECT(-120,-64),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&_ZN8S7856C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C16__8S7856C31[] = {
  0,
  ABISELECT(48,24),
  ABISELECT(120,64),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C16__8S7856C31[] = {
  ABISELECT(-88,-48),
  ABISELECT(-40,-24),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C16__8S7856C31[] = {
  ABISELECT(48,24),
  ABISELECT(-24,-16),
  ABISELECT(-72,-40),
  ABISELECT(-16,-12),
  ABISELECT(-72,-40),
  ABISELECT(-24,-16),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C16__8S7856C31[] = {
  ABISELECT(-8,-4),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-8,-4),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt__8S7856C31[] = {
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI11S7856C17_nt[0]),
};
extern void _ZN7S7856C4D1Ev();
extern void _ZN7S7856C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C4__8S7856C31[] = {
  ABISELECT(56,32),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-136,-72),
  ABISELECT(-32,-16),
  ABISELECT(-48,-24),
  ABISELECT(-80,-44),
  ABISELECT(-64,-32),
  ABISELECT(-80,-44),
  ABISELECT(24,16),
  ABISELECT(-88,-48),
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(-88,-48),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&_ZN7S7856C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C4D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C107S7856C4__A4__8S7856C31[] = {
  ABISELECT(-88,-48),
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(-88,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C107S7856C4__A4__8S7856C31[] = {
  0,
  ABISELECT(48,24),
  ABISELECT(136,72),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void _ZN8S7856C19D1Ev();
extern void _ZN8S7856C19D0Ev();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C197S7856C4__8S7856C31[] = {
  ABISELECT(48,28),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-88,-48),
  ABISELECT(-72,-36),
  ABISELECT(-96,-52),
  ABISELECT(-144,-76),
  ABISELECT(-144,-76),
  ABISELECT(-96,-52),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&_ZN8S7856C19D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C19D0Ev,
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void _ZN7S7856C6D1Ev();
extern void _ZN7S7856C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C68S7856C197S7856C4__A1__8S7856C31[] = {
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-88,-48),
  ABISELECT(-72,-36),
  ABISELECT(-96,-52),
  ABISELECT(-144,-76),
  ABISELECT(-144,-76),
  ABISELECT(-96,-52),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&_ZN7S7856C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C6D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C68S7856C197S7856C4__A1__8S7856C31[] = {
  ABISELECT(72,36),
  ABISELECT(-24,-16),
  ABISELECT(-72,-40),
  ABISELECT(-16,-12),
  ABISELECT(-72,-40),
  ABISELECT(-24,-16),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C68S7856C197S7856C4__A1__8S7856C31[] = {
  ABISELECT(-8,-4),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-8,-4),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__7S7856C68S7856C197S7856C4__A1__8S7856C31[] = {
  0,
  ABISELECT(48,24),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C68S7856C197S7856C4__A1__8S7856C31[] = {
  ABISELECT(-88,-48),
  ABISELECT(-40,-24),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C68S7856C197S7856C4__A1__8S7856C31[] = {
  ABISELECT(40,20),
  ABISELECT(-56,-32),
  ABISELECT(-104,-56),
  ABISELECT(-48,-28),
  ABISELECT(-104,-56),
  ABISELECT(-56,-32),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C197S7856C4__8S7856C31[] = {
  ABISELECT(72,36),
  ABISELECT(-24,-16),
  ABISELECT(-72,-40),
  ABISELECT(-16,-12),
  ABISELECT(-72,-40),
  ABISELECT(-24,-16),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C197S7856C4__8S7856C31[] = {
  ABISELECT(-8,-4),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-8,-4),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C197S7856C4__8S7856C31[] = {
  0,
  ABISELECT(48,24),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C197S7856C4__8S7856C31[] = {
  ABISELECT(-88,-48),
  ABISELECT(-40,-24),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__8S7856C197S7856C4__8S7856C31[] = {
  ABISELECT(40,20),
  ABISELECT(-56,-32),
  ABISELECT(-104,-56),
  ABISELECT(-48,-28),
  ABISELECT(-104,-56),
  ABISELECT(-56,-32),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev),
};
extern void ABISELECT(_ZTv0_n72_N8S7856C19D1Ev,_ZTv0_n36_N8S7856C19D1Ev)();
extern void ABISELECT(_ZThn48_N8S7856C19D1Ev,_ZThn28_N8S7856C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7856C19D0Ev,_ZTv0_n36_N8S7856C19D0Ev)();
extern void ABISELECT(_ZThn48_N8S7856C19D0Ev,_ZThn28_N8S7856C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C18__8S7856C197S7856C4__8S7856C31[] = {
  ABISELECT(-48,-28),
  ABISELECT(-144,-80),
  ABISELECT(-192,-104),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-192,-104),
  ABISELECT(-144,-80),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C19D1Ev,_ZTv0_n36_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C19D0Ev,_ZTv0_n36_N8S7856C19D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__8S7856C197S7856C4__8S7856C31[] = {
  ABISELECT(-160,-88),
  ABISELECT(-208,-112),
  ABISELECT(-208,-112),
  ABISELECT(-160,-88),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
extern void ABISELECT(_ZTv0_n120_N7S7856C4D1Ev,_ZTv0_n60_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn24_N7S7856C4D1Ev,_ZThn16_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S7856C4D0Ev,_ZTv0_n60_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn24_N7S7856C4D0Ev,_ZThn16_N7S7856C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C5__7S7856C4__8S7856C31[] = {
  ABISELECT(-24,-16),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-160,-88),
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-104,-60),
  ABISELECT(-112,-64),
  ABISELECT(-160,-88),
  ABISELECT(-104,-60),
  ABISELECT(-56,-32),
  ABISELECT(-160,-88),
  ABISELECT(-112,-64),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C4D1Ev,_ZTv0_n60_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C4D0Ev,_ZTv0_n60_N7S7856C4D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C4__8S7856C31[] = {
  ABISELECT(80,44),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-8,-4),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-8,-4),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C4__8S7856C31[] = {
  ABISELECT(64,32),
  ABISELECT(-24,-16),
  ABISELECT(-72,-40),
  ABISELECT(-16,-12),
  ABISELECT(-72,-40),
  ABISELECT(-24,-16),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__7S7856C4__8S7856C31[] = {
  0,
  ABISELECT(48,24),
  ABISELECT(136,72),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C4__8S7856C31[] = {
  ABISELECT(-88,-48),
  ABISELECT(-40,-24),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C4__8S7856C31[] = {
  ABISELECT(32,16),
  ABISELECT(-56,-32),
  ABISELECT(-104,-56),
  ABISELECT(-48,-28),
  ABISELECT(-104,-56),
  ABISELECT(-56,-32),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C4__8S7856C31[] = {
  ABISELECT(16,8),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-120,-64),
  ABISELECT(-72,-40),
  ABISELECT(-120,-64),
  ABISELECT(-72,-40),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__7S7856C4__8S7856C31[] = {
  ABISELECT(-128,-72),
  ABISELECT(-176,-96),
  ABISELECT(-176,-96),
  ABISELECT(-128,-72),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
extern void ABISELECT(_ZThn8_N7S7856C4D1Ev,_ZThn4_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn8_N7S7856C4D0Ev,_ZThn4_N7S7856C4D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C19__7S7856C4__8S7856C31[] = {
  ABISELECT(48,28),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-88,-48),
  ABISELECT(-72,-36),
  ABISELECT(-96,-52),
  ABISELECT(-144,-76),
  ABISELECT(-144,-76),
  ABISELECT(-96,-52),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7856C4D1Ev,_ZThn4_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7856C4D0Ev,_ZThn4_N7S7856C4D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N7S7856C4D1Ev,_ZTv0_n36_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn56_N7S7856C4D1Ev,_ZThn32_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7856C4D0Ev,_ZTv0_n36_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn56_N7S7856C4D0Ev,_ZThn32_N7S7856C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C18__A1__7S7856C4__8S7856C31[] = {
  ABISELECT(-56,-32),
  ABISELECT(-144,-80),
  ABISELECT(-192,-104),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-192,-104),
  ABISELECT(-144,-80),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7856C4D1Ev,_ZTv0_n36_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7856C4D0Ev,_ZTv0_n36_N7S7856C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A3__7S7856C4__8S7856C31[] = {
  ABISELECT(-160,-88),
  ABISELECT(-208,-112),
  ABISELECT(-208,-112),
  ABISELECT(-160,-88),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
extern void _ZN7S7856C5D1Ev();
extern void _ZN7S7856C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C5__A1__8S7856C31[] = {
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-160,-88),
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-104,-60),
  ABISELECT(-112,-64),
  ABISELECT(-160,-88),
  ABISELECT(-104,-60),
  ABISELECT(-56,-32),
  ABISELECT(-160,-88),
  ABISELECT(-112,-64),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&_ZN7S7856C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C5D0Ev,
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C187S7856C5__A1__8S7856C31[] = {
  ABISELECT(-112,-64),
  ABISELECT(-160,-88),
  ABISELECT(-104,-60),
  ABISELECT(-56,-32),
  ABISELECT(-160,-88),
  ABISELECT(-112,-64),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C187S7856C5__A2__8S7856C31[] = {
  ABISELECT(-160,-88),
  ABISELECT(-112,-64),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C187S7856C5__A5__8S7856C31[] = {
  ABISELECT(-160,-88),
  ABISELECT(-112,-64),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A3__8S7856C31[] = {
  ABISELECT(-128,-72),
  ABISELECT(-176,-96),
  ABISELECT(-176,-96),
  ABISELECT(-128,-72),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C187S7856C5__A3__8S7856C31[] = {
  0,
  ABISELECT(48,24),
  ABISELECT(176,96),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C187S7856C5__A1__8S7856C31[] = {
  ABISELECT(56,32),
  ABISELECT(-56,-32),
  ABISELECT(-104,-56),
  ABISELECT(-48,-28),
  ABISELECT(-104,-56),
  ABISELECT(-56,-32),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C187S7856C5__A1__8S7856C31[] = {
  ABISELECT(-8,-4),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-8,-4),
  ABISELECT(104,60),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__A1__8S7856C187S7856C5__A1__8S7856C31[] = {
  0,
  ABISELECT(48,24),
  ABISELECT(160,88),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C187S7856C5__A1__8S7856C31[] = {
  ABISELECT(-128,-72),
  ABISELECT(-176,-96),
  ABISELECT(-176,-96),
  ABISELECT(-128,-72),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C5__A1__8S7856C31[] = {
  ABISELECT(104,60),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-8,-4),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-8,-4),
  ABISELECT(104,60),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C5__A1__8S7856C31[] = {
  ABISELECT(88,48),
  ABISELECT(-24,-16),
  ABISELECT(-72,-40),
  ABISELECT(-16,-12),
  ABISELECT(-72,-40),
  ABISELECT(-24,-16),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__7S7856C5__A1__8S7856C31[] = {
  0,
  ABISELECT(48,24),
  ABISELECT(160,88),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C5__A1__8S7856C31[] = {
  ABISELECT(-88,-48),
  ABISELECT(-40,-24),
  ABISELECT(72,40),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C5__A1__8S7856C31[] = {
  ABISELECT(56,32),
  ABISELECT(-56,-32),
  ABISELECT(-104,-56),
  ABISELECT(-48,-28),
  ABISELECT(-104,-56),
  ABISELECT(-56,-32),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C5__A1__8S7856C31[] = {
  ABISELECT(40,24),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-120,-64),
  ABISELECT(-72,-40),
  ABISELECT(-120,-64),
  ABISELECT(-72,-40),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__7S7856C5__A1__8S7856C31[] = {
  ABISELECT(-128,-72),
  ABISELECT(-176,-96),
  ABISELECT(-176,-96),
  ABISELECT(-128,-72),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C18__A2__8S7856C31[] = {
  ABISELECT(-144,-80),
  ABISELECT(-192,-104),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-192,-104),
  ABISELECT(-144,-80),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C18__A3__8S7856C31[] = {
  ABISELECT(-192,-104),
  ABISELECT(-144,-80),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C18__A6__8S7856C31[] = {
  ABISELECT(-192,-104),
  ABISELECT(-144,-80),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A5__8S7856C31[] = {
  ABISELECT(-160,-88),
  ABISELECT(-208,-112),
  ABISELECT(-208,-112),
  ABISELECT(-160,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C18__A5__8S7856C31[] = {
  0,
  ABISELECT(48,24),
  ABISELECT(208,112),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C18__A2__8S7856C31[] = {
  ABISELECT(88,48),
  ABISELECT(-56,-32),
  ABISELECT(-104,-56),
  ABISELECT(-48,-28),
  ABISELECT(-104,-56),
  ABISELECT(-56,-32),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C18__A2__8S7856C31[] = {
  ABISELECT(-8,-4),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-8,-4),
  ABISELECT(136,76),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__A1__8S7856C18__A2__8S7856C31[] = {
  0,
  ABISELECT(48,24),
  ABISELECT(192,104),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C18__A2__8S7856C31[] = {
  ABISELECT(-160,-88),
  ABISELECT(-208,-112),
  ABISELECT(-208,-112),
  ABISELECT(-160,-88),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTT_ENTRY vtt_S7856C31[] = {
  {&(_ZTV8S7856C31[17]),  17,165},
  {&(_tg__ZTV8S7856C22__8S7856C31[17]),  17,19},
  {&(_tg__ZTV8S7856C108S7856C22__8S7856C31[6]),  6,6},
  {&(_tg__ZTV8S7856C108S7856C22__8S7856C31[6]),  6,6},
  {&(_tg__ZTV7S7856C58S7856C22__8S7856C31[14]),  14,16},
  {&(_tg__ZTV8S7856C187S7856C58S7856C22__8S7856C31[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C187S7856C58S7856C22__A1__8S7856C31[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C187S7856C58S7856C22__A4__8S7856C31[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C187S7856C58S7856C22__A2__8S7856C31[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C187S7856C58S7856C22__A2__8S7856C31[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C187S7856C58S7856C22__8S7856C31[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C58S7856C22__8S7856C31[6]),  6,6},
  {&(_tg__ZTV8S7856C11__A1__8S7856C187S7856C58S7856C22__8S7856C31[4]),  4,4},
  {&(_tg__ZTV8S7856C10__A__8S7856C187S7856C58S7856C22__8S7856C31[6]),  6,6},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C22__8S7856C31[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C58S7856C22__8S7856C31[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C22__8S7856C31[11]),  11,13},
  {&(_tg__ZTV8S7856C11__7S7856C58S7856C22__8S7856C31[4]),  4,4},
  {&(_tg__ZTV8S7856C14__7S7856C58S7856C22__8S7856C31[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C58S7856C22__8S7856C31[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C58S7856C22__8S7856C31[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C58S7856C22__8S7856C31[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C18__A1__7S7856C58S7856C22__8S7856C31[6]),  6,6},
  {&(_tg__ZTV8S7856C22__8S7856C31[17]),  17,19},
  {&(_tg__ZTV7S7856C6__8S7856C22__8S7856C31[11]),  11,13},
  {&(_tg__ZTV7S7856C7__8S7856C22__8S7856C31[8]),  8,10},
  {&(_tg__ZTV7S7856C6__8S7856C22__8S7856C31[11]),  11,13},
  {&(_tg__ZTV8S7856C14__8S7856C22__8S7856C31[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__8S7856C22__8S7856C31[8]),  8,10},
  {&(_tg__ZTV7S7856C5__A__8S7856C22__8S7856C31[14]),  14,16},
  {&(_tg__ZTV8S7856C16__8S7856C22__8S7856C31[11]),  11,13},
  {&(_tg__ZTV8S7856C16__8S7856C22__8S7856C31[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A2__8S7856C22__8S7856C31[6]),  6,6},
  {&(_tg__ZTV7S7856C4__8S7856C22__8S7856C31[18]),  18,20},
  {&(_tg__ZTV7S7856C5__A1__8S7856C22__8S7856C31[15]),  15,17},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A3__8S7856C22__8S7856C31[6]),  6,6},
  {&(_tg__ZTV8S7856C197S7856C4__8S7856C22__8S7856C31[11]),  11,14},
  {&(_tg__ZTV8S7856C18__A2__8S7856C22__8S7856C31[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A5__8S7856C22__8S7856C31[6]),  6,6},
  {&(_ZTV8S7856C31[17]),  17,165},
  {&(_ZTV8S7856C31[52]),  52,165},
  {&(_ZTV8S7856C31[62]),  62,165},
  {&(_ZTV8S7856C31[52]),  52,165},
  {&(_ZTV8S7856C31[68]),  68,165},
  {&(_ZTV8S7856C31[76]),  76,165},
  {&(_ZTV8S7856C31[33]),  33,165},
  {&(_ZTV8S7856C31[89]),  89,165},
  {&(_ZTV8S7856C31[89]),  89,165},
  {&(_ZTV8S7856C31[41]),  41,165},
  {&(_ZTV8S7856C31[109]),  109,165},
  {&(_ZTV8S7856C31[140]),  140,165},
  {&(_ZTV8S7856C31[148]),  148,165},
  {&(_ZTV8S7856C31[122]),  122,165},
  {&(_ZTV8S7856C31[157]),  157,165},
  {&(_ZTV8S7856C31[165]),  165,165},
  {&(_tg__ZTV8S7856C11__8S7856C31[4]),  4,4},
  {&(_tg__ZTV7S7856C6__8S7856C31[10]),  10,12},
  {&(_tg__ZTV7S7856C7__7S7856C6__8S7856C31[8]),  8,10},
  {&(_tg__ZTV7S7856C6__8S7856C31[10]),  10,12},
  {&(_tg__ZTV8S7856C11__7S7856C6__8S7856C31[4]),  4,4},
  {&(_tg__ZTV8S7856C14__7S7856C6__8S7856C31[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C6__8S7856C31[8]),  8,10},
  {&(_tg__ZTV7S7856C7__8S7856C31[7]),  7,9},
  {&(_tg__ZTV8S7856C137S7856C7__8S7856C31[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C137S7856C7__A1__8S7856C31[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C7__8S7856C31[6]),  6,6},
  {&(_tg__ZTV8S7856C11__A1__8S7856C137S7856C7__8S7856C31[4]),  4,4},
  {&(_tg__ZTV8S7856C10__7S7856C7__8S7856C31[6]),  6,6},
  {&(_tg__ZTV8S7856C11__7S7856C7__8S7856C31[4]),  4,4},
  {&(_tg__ZTV8S7856C10__A1__8S7856C31[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C10__A1__8S7856C31[4]),  4,4},
  {&(_tg__ZTV8S7856C14__8S7856C31[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C14__A2__8S7856C31[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__8S7856C31[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C13__A3__8S7856C31[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C13__A1__8S7856C31[6]),  6,6},
  {&(_tg__ZTV8S7856C11__A1__8S7856C13__A1__8S7856C31[4]),  4,4},
  {&(_tg__ZTV8S7856C16__8S7856C31[10]),  10,12},
  {&(_tg__ZTV8S7856C11__8S7856C16__8S7856C31[4]),  4,4},
  {&(_tg__ZTV8S7856C16__8S7856C31[10]),  10,12},
  {&(_tg__ZTV8S7856C14__8S7856C16__8S7856C31[4]),  4,4},
  {&(_tg__ZTV7S7856C7__8S7856C16__8S7856C31[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C16__8S7856C31[6]),  6,6},
  {&(_tg__ZTV11S7856C17_nt__8S7856C31[3]),  3,3},
  {&(_tg__ZTV7S7856C4__8S7856C31[16]),  16,18},
  {&(_tg__ZTV8S7856C107S7856C4__A4__8S7856C31[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C107S7856C4__A4__8S7856C31[4]),  4,4},
  {&(_tg__ZTV8S7856C197S7856C4__8S7856C31[11]),  11,14},
  {&(_tg__ZTV7S7856C68S7856C197S7856C4__A1__8S7856C31[10]),  10,12},
  {&(_tg__ZTV7S7856C7__7S7856C68S7856C197S7856C4__A1__8S7856C31[8]),  8,10},
  {&(_tg__ZTV8S7856C10__7S7856C68S7856C197S7856C4__A1__8S7856C31[6]),  6,6},
  {&(_tg__ZTV8S7856C11__7S7856C68S7856C197S7856C4__A1__8S7856C31[4]),  4,4},
  {&(_tg__ZTV8S7856C14__7S7856C68S7856C197S7856C4__A1__8S7856C31[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C68S7856C197S7856C4__A1__8S7856C31[8]),  8,10},
  {&(_tg__ZTV7S7856C7__8S7856C197S7856C4__8S7856C31[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C197S7856C4__8S7856C31[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C197S7856C4__8S7856C31[4]),  4,4},
  {&(_tg__ZTV8S7856C14__8S7856C197S7856C4__8S7856C31[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__8S7856C197S7856C4__8S7856C31[8]),  8,10},
  {&(_tg__ZTV8S7856C18__8S7856C197S7856C4__8S7856C31[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A1__8S7856C197S7856C4__8S7856C31[6]),  6,6},
  {&(_tg__ZTV7S7856C5__7S7856C4__8S7856C31[15]),  15,17},
  {&(_tg__ZTV7S7856C6__7S7856C4__8S7856C31[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C4__8S7856C31[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C4__8S7856C31[11]),  11,13},
  {&(_tg__ZTV8S7856C11__7S7856C4__8S7856C31[4]),  4,4},
  {&(_tg__ZTV8S7856C14__7S7856C4__8S7856C31[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C4__8S7856C31[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C4__8S7856C31[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C4__8S7856C31[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__7S7856C4__8S7856C31[6]),  6,6},
  {&(_tg__ZTV8S7856C19__7S7856C4__8S7856C31[11]),  11,14},
  {&(_tg__ZTV8S7856C18__A1__7S7856C4__8S7856C31[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A3__7S7856C4__8S7856C31[6]),  6,6},
  {&(_tg__ZTV7S7856C5__A1__8S7856C31[14]),  14,16},
  {&(_tg__ZTV8S7856C187S7856C5__A1__8S7856C31[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C187S7856C5__A2__8S7856C31[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C187S7856C5__A5__8S7856C31[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A3__8S7856C31[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C187S7856C5__A3__8S7856C31[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C187S7856C5__A1__8S7856C31[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C5__A1__8S7856C31[6]),  6,6},
  {&(_tg__ZTV8S7856C11__A1__8S7856C187S7856C5__A1__8S7856C31[4]),  4,4},
  {&(_tg__ZTV8S7856C10__A__8S7856C187S7856C5__A1__8S7856C31[6]),  6,6},
  {&(_tg__ZTV7S7856C6__7S7856C5__A1__8S7856C31[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C5__A1__8S7856C31[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C5__A1__8S7856C31[11]),  11,13},
  {&(_tg__ZTV8S7856C11__7S7856C5__A1__8S7856C31[4]),  4,4},
  {&(_tg__ZTV8S7856C14__7S7856C5__A1__8S7856C31[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C5__A1__8S7856C31[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C5__A1__8S7856C31[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C5__A1__8S7856C31[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C18__A1__7S7856C5__A1__8S7856C31[6]),  6,6},
  {&(_tg__ZTV8S7856C18__A2__8S7856C31[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C18__A3__8S7856C31[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C18__A6__8S7856C31[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C18__A5__8S7856C31[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C18__A5__8S7856C31[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C18__A2__8S7856C31[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C18__A2__8S7856C31[6]),  6,6},
  {&(_tg__ZTV8S7856C11__A1__8S7856C18__A2__8S7856C31[4]),  4,4},
  {&(_tg__ZTV8S7856C10__A__8S7856C18__A2__8S7856C31[6]),  6,6},
};
extern VTBL_ENTRY _ZTI8S7856C31[];
extern  VTBL_ENTRY _ZTV8S7856C31[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C31[];
static VTBL_ENTRY alt_thunk_names27[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7856C4D0Ev,_ZTv0_n36_N7S7856C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7856C4D0Ev,_ZThn32_N7S7856C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7856C4D1Ev,_ZTv0_n36_N7S7856C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7856C4D1Ev,_ZThn32_N7S7856C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7856C4D0Ev,_ZTv0_n60_N7S7856C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7856C4D0Ev,_ZThn16_N7S7856C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7856C4D1Ev,_ZTv0_n60_N7S7856C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7856C4D1Ev,_ZThn16_N7S7856C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C19D0Ev,_ZTv0_n36_N8S7856C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7856C19D0Ev,_ZThn28_N8S7856C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C19D1Ev,_ZTv0_n36_N8S7856C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7856C19D1Ev,_ZThn28_N8S7856C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C6D0Ev,_ZThn28_N7S7856C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7856C6D0Ev,_ZThn12_N7S7856C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C6D1Ev,_ZThn28_N7S7856C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7856C6D1Ev,_ZThn12_N7S7856C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C22D0Ev,_ZTv0_n36_N8S7856C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S7856C22D0Ev,_ZThn104_N8S7856C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C22D1Ev,_ZTv0_n36_N8S7856C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S7856C22D1Ev,_ZThn104_N8S7856C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C22D0Ev,_ZTv0_n60_N8S7856C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7856C22D0Ev,_ZThn88_N8S7856C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C22D1Ev,_ZTv0_n60_N8S7856C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7856C22D1Ev,_ZThn88_N8S7856C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N8S7856C22D0Ev,_ZTv0_n68_N8S7856C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7856C22D0Ev,_ZThn72_N8S7856C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N8S7856C22D1Ev,_ZTv0_n68_N8S7856C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7856C22D1Ev,_ZThn72_N8S7856C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7856C22D0Ev,_ZThn56_N8S7856C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7856C22D0Ev,_ZThn40_N8S7856C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7856C22D1Ev,_ZThn56_N8S7856C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7856C22D1Ev,_ZThn40_N8S7856C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7856C22D0Ev,_ZThn64_N8S7856C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7856C22D0Ev,_ZThn28_N8S7856C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7856C22D1Ev,_ZThn64_N8S7856C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7856C22D1Ev,_ZThn28_N8S7856C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7856C5D0Ev,_ZThn52_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7856C5D0Ev,_ZThn36_N7S7856C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7856C5D1Ev,_ZThn52_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7856C5D1Ev,_ZThn36_N7S7856C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7856C5D0Ev,_ZThn60_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C5D0Ev,_ZThn24_N7S7856C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7856C5D1Ev,_ZThn60_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C5D1Ev,_ZThn24_N7S7856C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7856C18D0Ev,_ZThn52_N8S7856C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7856C18D1Ev,_ZThn52_N8S7856C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C31D0Ev,_ZTv0_n36_N8S7856C31D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S7856C31D0Ev,_ZThn104_N8S7856C31D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C31D1Ev,_ZTv0_n36_N8S7856C31D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S7856C31D1Ev,_ZThn104_N8S7856C31D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C31D0Ev,_ZTv0_n60_N8S7856C31D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7856C31D0Ev,_ZThn88_N8S7856C31D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C31D1Ev,_ZTv0_n60_N8S7856C31D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7856C31D1Ev,_ZThn88_N8S7856C31D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N8S7856C31D0Ev,_ZTv0_n68_N8S7856C31D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7856C31D0Ev,_ZThn72_N8S7856C31D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N8S7856C31D1Ev,_ZTv0_n68_N8S7856C31D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7856C31D1Ev,_ZThn72_N8S7856C31D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C31D0Ev,_ZTv0_n32_N8S7856C31D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7856C31D0Ev,_ZThn56_N8S7856C31D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7856C31D0Ev,_ZThn40_N8S7856C31D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C31D1Ev,_ZTv0_n32_N8S7856C31D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7856C31D1Ev,_ZThn56_N8S7856C31D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7856C31D1Ev,_ZThn40_N8S7856C31D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C31D0Ev,_ZTv0_n44_N8S7856C31D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7856C31D0Ev,_ZThn64_N8S7856C31D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7856C31D0Ev,_ZThn28_N8S7856C31D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C31D1Ev,_ZTv0_n44_N8S7856C31D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7856C31D1Ev,_ZThn64_N8S7856C31D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7856C31D1Ev,_ZThn28_N8S7856C31D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7856C31 = {  "S7856C31", // class name
  bases_S7856C31, 66,
  &(vtc_S7856C31[0]), // expected_vtbl_contents
  &(vtt_S7856C31[0]), // expected_vtt_contents
  ABISELECT(224,120), // object size
  NSPAIRA(_ZTI8S7856C31),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S7856C31),165, //virtual function table var
  17, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7856C31),142, //virtual table table var
  32, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names27,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7856C30  : virtual S7856C18 , S7856C31 , virtual S7856C24 {
  virtual  ~S7856C30(); // _ZN8S7856C30D2Ev
  S7856C30(); // tgen
};
//SIG(-1 S7856C30) C1{ VBC2{ VBC3{ BC4{ m} VBC5{ m} VBC6{ m} BC7{ VBC5 BC4 VBC6} VBC8{ BC5 VBC7 VBC4} vd} BC9{ BC6 BC4 BC7 Fi} BC8 BC6 vd} BC10{ VBC7 BC11{ BC8 VBC12{ VBC13{ VBC5 VBC4 VBC8 BC6 BC3 vd} VBC9 VBC3 vd Fi[2]} BC14{ VBC12 VBC15{ m} VBC16{ VBC7 VBC17{ VBC4} VBC9 BC6 VBC13 vd Fi} BC2 vd} VBC18{ VBC14 BC5 BC8 BC19{ BC15 VBC5 BC12 VBC2 vd v1} vd} vd Fc} Fp} VBC20{ m} vd}


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

static void Test_S7856C30()
{
  extern Class_Descriptor cd_S7856C30;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(28,30)];
    init_test(&cd_S7856C30, buf);
    S7856C30 *dp, &lv = *(dp=new (buf) S7856C30());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(216,116), "sizeof(S7856C30)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7856C30)");
    /*is_ambiguous_... S7856C30::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*), ABISELECT(88,44), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*), ABISELECT(89,45), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*), ABISELECT(89,45), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C11 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*), ABISELECT(89,45), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C18 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*), ABISELECT(89,45), "S7856C30");
    /*is_ambiguous_... S7856C7::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C7*), ABISELECT(89,45), "S7856C30");
    /*is_ambiguous_... S7856C13::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*)(S7856C7*), ABISELECT(89,45), "S7856C30");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(89,45), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C14 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*), ABISELECT(89,45), "S7856C30");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C31*), ABISELECT(89,45), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C5 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(89,45), "S7856C30");
    /*is_ambiguous_... S7856C19::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C19*)(S7856C4*), ABISELECT(89,45), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*), 0, "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*), 0, "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*), 0, "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*), 0, "S7856C30");
    check_base_class_offset(lv, (S7856C12*)(S7856C13*)(S7856C7*), 0, "S7856C30");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*)(S7856C7*), 0, "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*), 0, "S7856C30");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C31*), 0, "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), 0, "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*), ABISELECT(80,40), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*), ABISELECT(80,40), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*), ABISELECT(96,48), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*), ABISELECT(96,48), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*), ABISELECT(96,48), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*), ABISELECT(96,48), "S7856C30");
    /*is_ambiguous_... S7856C31::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C31*), ABISELECT(96,48), "S7856C30");
    /*is_ambiguous_... S7856C22::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C22*)(S7856C31*), ABISELECT(96,48), "S7856C30");
    /*is_ambiguous_... S7856C16::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C16*), ABISELECT(96,48), "S7856C30");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C31*), ABISELECT(96,48), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(96,48), "S7856C30");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C4*), ABISELECT(96,48), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*), 0, "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*), 0, "S7856C30");
    /*is_ambiguous_... S7856C22::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C22*)(S7856C31*), 0, "S7856C30");
    /*is_ambiguous_... S7856C7::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C7*), 0, "S7856C30");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C17_nt*), 0, "S7856C30");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C31*), 0, "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*)(S7856C5*), 0, "S7856C30");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C4*), 0, "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*), ABISELECT(96,48), "S7856C30");
    check_base_class_offset(lv, (S7856C10*)(S7856C7*), ABISELECT(96,48), "S7856C30");
    check_base_class_offset(lv, (S7856C10*)(S7856C13*)(S7856C7*), ABISELECT(96,48), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C18*), ABISELECT(80,40), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C6 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C6*), ABISELECT(80,40), "S7856C30");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C31*), ABISELECT(80,40), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C18*)(S7856C5*), ABISELECT(80,40), "S7856C30");
    /*is_ambiguous_... S7856C6::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C6*)(S7856C19*)(S7856C4*), ABISELECT(80,40), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*), ABISELECT(48,24), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*), ABISELECT(56,28), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*), ABISELECT(48,24), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*), ABISELECT(48,24), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C18*), ABISELECT(48,24), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C18 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*), ABISELECT(64,32), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*), ABISELECT(64,32), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*), ABISELECT(72,36), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C18*), ABISELECT(48,24), "S7856C30");
    check_base_class_offset(lv, (S7856C18*)(S7856C19*)(S7856C4*), ABISELECT(48,24), "S7856C30");
    /*is_ambiguous_... S7856C22::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C22*)(S7856C31*), 0, "S7856C30");
    /*is_ambiguous_... S7856C22::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C22*)(S7856C31*), 0, "S7856C30");
    /*is_ambiguous_... S7856C7::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C7*), ABISELECT(112,60), "S7856C30");
    /*is_ambiguous_... S7856C13::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*)(S7856C7*), ABISELECT(120,64), "S7856C30");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(112,60), "S7856C30");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(112,60), "S7856C30");
    check_base_class_offset(lv, (S7856C13*)(S7856C7*), ABISELECT(112,60), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C6 */ AMB_check_base_class_offset(lv, (S7856C7*)(S7856C6*), ABISELECT(112,60), "S7856C30");
    check_base_class_offset(lv, (S7856C7*)(S7856C16*), ABISELECT(112,60), "S7856C30");
    check_base_class_offset(lv, (S7856C7*)(S7856C6*)(S7856C19*)(S7856C4*), ABISELECT(112,60), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*), ABISELECT(128,68), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*), ABISELECT(136,72), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*), ABISELECT(128,68), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*), ABISELECT(128,68), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C6 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C6*), ABISELECT(128,68), "S7856C30");
    check_base_class_offset(lv, (S7856C14*)(S7856C16*), ABISELECT(128,68), "S7856C30");
    check_base_class_offset(lv, (S7856C14*)(S7856C6*)(S7856C19*)(S7856C4*), ABISELECT(128,68), "S7856C30");
    /*is_ambiguous_... S7856C22::S7856C6 */ AMB_check_base_class_offset(lv, (S7856C6*)(S7856C22*)(S7856C31*), ABISELECT(96,48), "S7856C30");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C6*)(S7856C5*)(S7856C22*)(S7856C31*), ABISELECT(96,48), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C6*)(S7856C5*), ABISELECT(96,48), "S7856C30");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7856C5*)(S7856C22*)(S7856C31*), 0, "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7856C5*), 0, "S7856C30");
    check_base_class_offset(lv, (S7856C17_nt*)(S7856C16*), ABISELECT(144,76), "S7856C30");
    /*is_ambiguous_... S7856C16::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C16*), ABISELECT(144,76), "S7856C30");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C16*)(S7856C5*)(S7856C22*)(S7856C31*), ABISELECT(144,76), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C16*)(S7856C5*), ABISELECT(144,76), "S7856C30");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C31*), ABISELECT(8,4), "S7856C30");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C31*), ABISELECT(16,8), "S7856C30");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C31*), ABISELECT(8,4), "S7856C30");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C31*), ABISELECT(8,4), "S7856C30");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C31*), ABISELECT(8,4), "S7856C30");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C31*), ABISELECT(24,12), "S7856C30");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C31*), ABISELECT(24,12), "S7856C30");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C31*), ABISELECT(32,16), "S7856C30");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C18*)(S7856C5*)(S7856C22*)(S7856C31*), ABISELECT(8,4), "S7856C30");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C5*)(S7856C22*)(S7856C31*), ABISELECT(8,4), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(184,100), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(192,104), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(184,100), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(184,100), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(184,100), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C5 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(200,108), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(200,108), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*)(S7856C5*), ABISELECT(208,112), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C18*)(S7856C5*), ABISELECT(184,100), "S7856C30");
    check_base_class_offset(lv, (S7856C5*)(S7856C4*), ABISELECT(184,100), "S7856C30");
    /*is_ambiguous_... S7856C4::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C4*), ABISELECT(168,88), "S7856C30");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C4*), ABISELECT(160,84), "S7856C30");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C4*), ABISELECT(160,84), "S7856C30");
    check_base_class_offset(lv, (S7856C15*)(S7856C19*)(S7856C4*), ABISELECT(168,88), "S7856C30");
    check_base_class_offset(lv, (S7856C6*)(S7856C19*)(S7856C4*), ABISELECT(168,88), "S7856C30");
    check_base_class_offset(lv, (S7856C19*)(S7856C4*), ABISELECT(168,88), "S7856C30");
    check_base_class_offset(lv, (S7856C4*)(S7856C22*)(S7856C31*), ABISELECT(160,84), "S7856C30");
    check_base_class_offset(lv, (S7856C22*)(S7856C31*), 0, "S7856C30");
    check_base_class_offset(lv, (S7856C31*), 0, "S7856C30");
    check_base_class_offset(lv, (S7856C24*), 0, "S7856C30");
    test_class_info(&lv, &cd_S7856C30);
    dp->~S7856C30();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7856C30(Test_S7856C30, "S7856C30", ABISELECT(216,116));

#else // __cplusplus

extern void _ZN8S7856C30C1Ev();
extern void _ZN8S7856C30D2Ev();
Name_Map name_map_S7856C30[] = {
  NSPAIR(_ZN8S7856C30C1Ev),
  NSPAIR(_ZN8S7856C30D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C7;
extern VTBL_ENTRY _ZTI7S7856C7[];
extern  VTBL_ENTRY _ZTV7S7856C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C7[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S7856C6;
extern VTBL_ENTRY _ZTI7S7856C6[];
extern  VTBL_ENTRY _ZTV7S7856C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C6[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C17_nt;
extern VTBL_ENTRY _ZTI11S7856C17_nt[];
extern  VTBL_ENTRY _ZTV11S7856C17_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S7856C17_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C16;
extern VTBL_ENTRY _ZTI8S7856C16[];
extern  VTBL_ENTRY _ZTV8S7856C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C16[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C5;
extern VTBL_ENTRY _ZTI7S7856C5[];
extern  VTBL_ENTRY _ZTV7S7856C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C5[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C5;
extern VTBL_ENTRY _ZTI7S7856C5[];
extern  VTBL_ENTRY _ZTV7S7856C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C5[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C6;
extern VTBL_ENTRY _ZTI7S7856C6[];
extern  VTBL_ENTRY _ZTV7S7856C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C6[];
extern Class_Descriptor cd_S7856C19;
extern VTBL_ENTRY _ZTI8S7856C19[];
extern  VTBL_ENTRY _ZTV8S7856C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C19[];
extern Class_Descriptor cd_S7856C4;
extern VTBL_ENTRY _ZTI7S7856C4[];
extern  VTBL_ENTRY _ZTV7S7856C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C4[];
extern Class_Descriptor cd_S7856C22;
extern VTBL_ENTRY _ZTI8S7856C22[];
extern  VTBL_ENTRY _ZTV8S7856C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C22[];
extern Class_Descriptor cd_S7856C31;
extern VTBL_ENTRY _ZTI8S7856C31[];
extern  VTBL_ENTRY _ZTV8S7856C31[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C31[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
static Base_Class bases_S7856C30[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C9_nt,    ABISELECT(88,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(89,45), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    83, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    60, //bcp->index_in_construction_vtbl_array
    88, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7856C10,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    59, //bcp->index_in_construction_vtbl_array
    86, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S7856C13,    ABISELECT(80,40), //bcp->offset
    59, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    58, //bcp->index_in_construction_vtbl_array
    82, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(64,32), //bcp->offset
    53, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    61, //bcp->index_in_construction_vtbl_array
    76, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(72,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(48,24), //bcp->offset
    42, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    57, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    65, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(120,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    97, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    96, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S7856C7,    ABISELECT(112,60), //bcp->offset
    82, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    63, //bcp->index_in_construction_vtbl_array
    95, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    33, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(128,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(136,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(128,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(128,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    103, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(128,68), //bcp->offset
    92, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    64, //bcp->index_in_construction_vtbl_array
    102, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    33, //immediately_derived
  0, 1},
  {&cd_S7856C6,    ABISELECT(96,48), //bcp->offset
    69, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    62, //bcp->index_in_construction_vtbl_array
    89, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    47, //immediately_derived
  0, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    47, //immediately_derived
  0, 1},
  {&cd_S7856C17_nt,    ABISELECT(144,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    67, //bcp->index_in_construction_vtbl_array
    110, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    37, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(144,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S7856C16,    ABISELECT(144,76), //bcp->offset
    96, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    66, //bcp->index_in_construction_vtbl_array
    104, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    47, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(24,12), //bcp->offset
    36, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    68, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S7856C5,    ABISELECT(8,4), //bcp->offset
    20, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    65, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    65, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(184,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    52, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(192,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    52, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(184,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(184,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    144, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    52, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(184,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    143, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    56, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(200,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    54, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(200,108), //bcp->offset
    160, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    71, //bcp->index_in_construction_vtbl_array
    145, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    56, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(208,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    56, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(184,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    142, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S7856C5,    ABISELECT(184,100), //bcp->offset
    143, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    70, //bcp->index_in_construction_vtbl_array
    141, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    64, //immediately_derived
  0, 1},
  {&cd_S77C13_nt,    ABISELECT(168,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    64, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(160,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    60, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(160,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    112, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    64, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(168,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    63, //immediately_derived
  0, 0},
  {&cd_S7856C6,    ABISELECT(168,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    115, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    63, //immediately_derived
  0, 0},
  {&cd_S7856C19,    ABISELECT(168,88), //bcp->offset
    129, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    72, //bcp->index_in_construction_vtbl_array
    114, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    64, //immediately_derived
  0, 0},
  {&cd_S7856C4,    ABISELECT(160,84), //bcp->offset
    109, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    69, //bcp->index_in_construction_vtbl_array
    111, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    65, //immediately_derived
  0, 1},
  {&cd_S7856C22,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    66, //immediately_derived
  0, 0},
  {&cd_S7856C31,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7856C30[];
extern void _ZN8S7856C30D1Ev();
extern void _ZN8S7856C30D0Ev();
extern void ABISELECT(_ZThn8_N8S7856C30D1Ev,_ZThn4_N8S7856C30D1Ev)();
extern void ABISELECT(_ZThn8_N8S7856C30D0Ev,_ZThn4_N8S7856C30D0Ev)();
extern void ABISELECT(_ZTv0_n72_N8S7856C30D1Ev,_ZTv0_n36_N8S7856C30D1Ev)();
extern void ABISELECT(_ZThn48_N8S7856C30D1Ev,_ZThn24_N8S7856C30D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7856C30D0Ev,_ZTv0_n36_N8S7856C30D0Ev)();
extern void ABISELECT(_ZThn48_N8S7856C30D0Ev,_ZThn24_N8S7856C30D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C30D1Ev,_ZTv0_n32_N8S7856C30D1Ev)();
extern void ABISELECT(_ZThn80_N8S7856C30D1Ev,_ZThn40_N8S7856C30D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C30D0Ev,_ZTv0_n32_N8S7856C30D0Ev)();
extern void ABISELECT(_ZThn80_N8S7856C30D0Ev,_ZThn40_N8S7856C30D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C30D1Ev,_ZTv0_n44_N8S7856C30D1Ev)();
extern void ABISELECT(_ZThn96_N8S7856C30D1Ev,_ZThn48_N8S7856C30D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C30D0Ev,_ZTv0_n44_N8S7856C30D0Ev)();
extern void ABISELECT(_ZThn96_N8S7856C30D0Ev,_ZThn48_N8S7856C30D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C30D1Ev,_ZTv0_n32_N8S7856C30D1Ev)();
extern void ABISELECT(_ZThn112_N8S7856C30D1Ev,_ZThn60_N8S7856C30D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C30D0Ev,_ZTv0_n32_N8S7856C30D0Ev)();
extern void ABISELECT(_ZThn112_N8S7856C30D0Ev,_ZThn60_N8S7856C30D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C30D1Ev,_ZTv0_n44_N8S7856C30D1Ev)();
extern void ABISELECT(_ZThn144_N8S7856C30D1Ev,_ZThn76_N8S7856C30D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C30D0Ev,_ZTv0_n44_N8S7856C30D0Ev)();
extern void ABISELECT(_ZThn144_N8S7856C30D0Ev,_ZThn76_N8S7856C30D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N8S7856C30D1Ev,_ZTv0_n68_N8S7856C30D1Ev)();
extern void ABISELECT(_ZThn160_N8S7856C30D1Ev,_ZThn84_N8S7856C30D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N8S7856C30D0Ev,_ZTv0_n68_N8S7856C30D0Ev)();
extern void ABISELECT(_ZThn160_N8S7856C30D0Ev,_ZThn84_N8S7856C30D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn8_n136_N8S7856C30D1Ev,_ZTvn4_n68_N8S7856C30D1Ev)();
extern void ABISELECT(_ZTvn8_n136_N8S7856C30D0Ev,_ZTvn4_n68_N8S7856C30D0Ev)();
extern void _ZN8S7856C192v1Ev();
extern void ABISELECT(_ZTv0_n120_N8S7856C30D1Ev,_ZTv0_n60_N8S7856C30D1Ev)();
extern void ABISELECT(_ZThn184_N8S7856C30D1Ev,_ZThn100_N8S7856C30D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S7856C30D0Ev,_ZTv0_n60_N8S7856C30D0Ev)();
extern void ABISELECT(_ZThn184_N8S7856C30D0Ev,_ZThn100_N8S7856C30D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7856C30[] = {
  0,
  ABISELECT(48,24),
  ABISELECT(184,100),
  ABISELECT(160,84),
  ABISELECT(144,76),
  ABISELECT(144,76),
  0,
  ABISELECT(80,40),
  ABISELECT(128,68),
  ABISELECT(96,48),
  ABISELECT(112,60),
  ABISELECT(96,48),
  0,
  ABISELECT(96,48),
  0,
  ABISELECT(89,45),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C30[0]),
  (VTBL_ENTRY)&_ZN8S7856C30D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C30D0Ev,
  ABISELECT(136,72),
  ABISELECT(136,72),
  ABISELECT(-8,-4),
  ABISELECT(120,64),
  ABISELECT(104,56),
  ABISELECT(88,44),
  ABISELECT(-8,-4),
  ABISELECT(88,44),
  ABISELECT(88,44),
  ABISELECT(72,36),
  ABISELECT(-8,-4),
  ABISELECT(81,41),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7856C30[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7856C30D1Ev,_ZThn4_N8S7856C30D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7856C30D0Ev,_ZThn4_N8S7856C30D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(72,36),
  ABISELECT(-24,-12),
  ABISELECT(65,33),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7856C30[0]),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(48,24),
  ABISELECT(48,24),
  ABISELECT(32,16),
  ABISELECT(-48,-24),
  ABISELECT(41,21),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S7856C30[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C30D1Ev,_ZTv0_n36_N8S7856C30D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C30D0Ev,_ZTv0_n36_N8S7856C30D0Ev),
  ABISELECT(-64,-32),
  ABISELECT(32,16),
  ABISELECT(-64,-32),
  ABISELECT(25,13),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S7856C30[0]),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-80,-40),
  ABISELECT(9,5),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S7856C30[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C30D1Ev,_ZTv0_n32_N8S7856C30D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C30D0Ev,_ZTv0_n32_N8S7856C30D0Ev),
  ABISELECT(-96,-48),
  ABISELECT(-16,-8),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-96,-48),
  0,
  ABISELECT(-96,-48),
  ABISELECT(-7,-3),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S7856C30[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C30D1Ev,_ZTv0_n44_N8S7856C30D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C30D0Ev,_ZTv0_n44_N8S7856C30D0Ev),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-112,-60),
  ABISELECT(-23,-15),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S7856C30[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C30D1Ev,_ZTv0_n32_N8S7856C30D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C30D0Ev,_ZTv0_n32_N8S7856C30D0Ev),
  ABISELECT(-128,-68),
  ABISELECT(-39,-23),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S7856C30[0]),
  ABISELECT(-144,-76),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-55,-31),
  ABISELECT(-48,-28),
  ABISELECT(-144,-76),
  ABISELECT(-144,-76),
  (VTBL_ENTRY)&(_ZTI8S7856C30[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C30D1Ev,_ZTv0_n44_N8S7856C30D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C30D0Ev,_ZTv0_n44_N8S7856C30D0Ev),
  ABISELECT(8,4),
  ABISELECT(-160,-84),
  ABISELECT(-112,-60),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-160,-84),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-64,-36),
  ABISELECT(24,16),
  ABISELECT(-160,-84),
  ABISELECT(-64,-36),
  ABISELECT(-160,-84),
  ABISELECT(-71,-39),
  ABISELECT(-160,-84),
  (VTBL_ENTRY)&(_ZTI8S7856C30[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S7856C30D1Ev,_ZTv0_n68_N8S7856C30D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S7856C30D0Ev,_ZTv0_n68_N8S7856C30D0Ev),
  ABISELECT(-120,-64),
  ABISELECT(-88,-48),
  ABISELECT(-40,-20),
  ABISELECT(-72,-40),
  ABISELECT(-56,-28),
  ABISELECT(-168,-88),
  ABISELECT(-72,-40),
  ABISELECT(-168,-88),
  ABISELECT(-79,-43),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S7856C30[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N8S7856C30D1Ev,_ZTvn4_n68_N8S7856C30D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N8S7856C30D0Ev,_ZTvn4_n68_N8S7856C30D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
  ABISELECT(-184,-100),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-184,-100),
  ABISELECT(-56,-32),
  ABISELECT(-72,-40),
  ABISELECT(-88,-52),
  ABISELECT(-184,-100),
  ABISELECT(-88,-52),
  ABISELECT(-88,-52),
  ABISELECT(-104,-60),
  ABISELECT(-184,-100),
  ABISELECT(-95,-55),
  ABISELECT(-184,-100),
  (VTBL_ENTRY)&(_ZTI8S7856C30[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C30D1Ev,_ZTv0_n60_N8S7856C30D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C30D0Ev,_ZTv0_n60_N8S7856C30D0Ev),
  ABISELECT(-200,-108),
  ABISELECT(-104,-60),
  ABISELECT(-200,-108),
  ABISELECT(-111,-63),
  ABISELECT(-200,-108),
  (VTBL_ENTRY)&(_ZTI8S7856C30[0]),
};
extern VTBL_ENTRY _ZTV8S7856C30[];
extern void _ZN8S7856C31D1Ev();
extern void _ZN8S7856C31D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C31__8S7856C30[] = {
  ABISELECT(48,24),
  ABISELECT(184,100),
  ABISELECT(160,84),
  ABISELECT(144,76),
  ABISELECT(144,76),
  0,
  ABISELECT(80,40),
  ABISELECT(128,68),
  ABISELECT(96,48),
  ABISELECT(112,60),
  ABISELECT(96,48),
  0,
  ABISELECT(96,48),
  0,
  ABISELECT(89,45),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C31[0]),
  (VTBL_ENTRY)&_ZN8S7856C31D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C31D0Ev,
};
extern void _ZN8S7856C22D1Ev();
extern void _ZN8S7856C22D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C228S7856C31__8S7856C30[] = {
  ABISELECT(48,24),
  ABISELECT(184,100),
  ABISELECT(160,84),
  ABISELECT(144,76),
  ABISELECT(144,76),
  0,
  ABISELECT(80,40),
  ABISELECT(128,68),
  ABISELECT(96,48),
  ABISELECT(112,60),
  ABISELECT(96,48),
  0,
  ABISELECT(96,48),
  0,
  ABISELECT(89,45),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&_ZN8S7856C22D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C22D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C228S7856C31__A2__8S7856C30[] = {
  0,
  ABISELECT(96,48),
  0,
  ABISELECT(89,45),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C228S7856C31__A2__8S7856C30[] = {
  ABISELECT(-96,-48),
  ABISELECT(-7,-3),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void _ZN7S7856C5D1Ev();
extern void _ZN7S7856C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C58S7856C228S7856C31__8S7856C30[] = {
  ABISELECT(136,72),
  ABISELECT(136,72),
  ABISELECT(-8,-4),
  ABISELECT(120,64),
  ABISELECT(104,56),
  ABISELECT(88,44),
  ABISELECT(-8,-4),
  ABISELECT(88,44),
  ABISELECT(88,44),
  ABISELECT(72,36),
  ABISELECT(-8,-4),
  ABISELECT(81,41),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&_ZN7S7856C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C5D0Ev,
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C187S7856C58S7856C228S7856C31__A1__8S7856C30[] = {
  ABISELECT(-8,-4),
  ABISELECT(88,44),
  ABISELECT(88,44),
  ABISELECT(72,36),
  ABISELECT(-8,-4),
  ABISELECT(81,41),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C187S7856C58S7856C228S7856C31__A2__8S7856C30[] = {
  ABISELECT(-8,-4),
  ABISELECT(81,41),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C187S7856C58S7856C228S7856C31__A5__8S7856C30[] = {
  ABISELECT(-8,-4),
  ABISELECT(81,41),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C58S7856C228S7856C31__A3__8S7856C30[] = {
  ABISELECT(-24,-12),
  ABISELECT(72,36),
  ABISELECT(-24,-12),
  ABISELECT(65,33),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C187S7856C58S7856C228S7856C31__A3__8S7856C30[] = {
  ABISELECT(-96,-48),
  ABISELECT(-7,-3),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZThn72_N8S7856C18D1Ev,_ZThn36_N8S7856C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
extern void ABISELECT(_ZThn72_N8S7856C18D0Ev,_ZThn36_N8S7856C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C187S7856C58S7856C228S7856C31__A1__8S7856C30[] = {
  ABISELECT(-72,-36),
  ABISELECT(-80,-40),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-80,-40),
  ABISELECT(9,5),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C187S7856C58S7856C228S7856C31__A1__8S7856C30[] = {
  ABISELECT(-96,-48),
  0,
  ABISELECT(-96,-48),
  ABISELECT(-7,-3),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C187S7856C58S7856C228S7856C31__A1__8S7856C30[] = {
  ABISELECT(-24,-12),
  ABISELECT(72,36),
  ABISELECT(-24,-12),
  ABISELECT(65,33),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn88_N7S7856C5D1Ev,_ZThn44_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn88_N7S7856C5D0Ev,_ZThn44_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C58S7856C228S7856C31__8S7856C30[] = {
  ABISELECT(-88,-44),
  ABISELECT(-16,-8),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-96,-48),
  0,
  ABISELECT(-96,-48),
  ABISELECT(-7,-3),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn104_N7S7856C5D1Ev,_ZThn56_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn104_N7S7856C5D0Ev,_ZThn56_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C58S7856C228S7856C31__8S7856C30[] = {
  ABISELECT(-104,-56),
  ABISELECT(-112,-60),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-112,-60),
  ABISELECT(-23,-15),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C58S7856C228S7856C31__8S7856C30[] = {
  ABISELECT(-128,-68),
  ABISELECT(-39,-23),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn72_N7S7856C5D1Ev,_ZThn36_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn72_N7S7856C5D0Ev,_ZThn36_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C58S7856C228S7856C31__8S7856C30[] = {
  ABISELECT(-72,-36),
  ABISELECT(-80,-40),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-80,-40),
  ABISELECT(9,5),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn136_N7S7856C5D1Ev,_ZThn72_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn136_N7S7856C5D0Ev,_ZThn72_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C58S7856C228S7856C31__8S7856C30[] = {
  ABISELECT(-136,-72),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-55,-31),
  ABISELECT(-48,-28),
  ABISELECT(-144,-76),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__7S7856C58S7856C228S7856C31__8S7856C30[] = {
  ABISELECT(-24,-12),
  ABISELECT(72,36),
  ABISELECT(-24,-12),
  ABISELECT(65,33),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn96_N8S7856C22D1Ev,_ZThn48_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn96_N8S7856C22D0Ev,_ZThn48_N8S7856C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C228S7856C31__8S7856C30[] = {
  ABISELECT(-96,-48),
  ABISELECT(-16,-8),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-96,-48),
  0,
  ABISELECT(-96,-48),
  ABISELECT(-7,-3),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn112_N8S7856C22D1Ev,_ZThn60_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn112_N8S7856C22D0Ev,_ZThn60_N8S7856C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C228S7856C31__8S7856C30[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-112,-60),
  ABISELECT(-23,-15),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C228S7856C31__8S7856C30[] = {
  ABISELECT(-128,-68),
  ABISELECT(-39,-23),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn80_N8S7856C22D1Ev,_ZThn40_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn80_N8S7856C22D0Ev,_ZThn40_N8S7856C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__8S7856C228S7856C31__8S7856C30[] = {
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-80,-40),
  ABISELECT(9,5),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev),
};
extern void ABISELECT(_ZThn8_N8S7856C22D1Ev,_ZThn4_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn8_N8S7856C22D0Ev,_ZThn4_N8S7856C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__A__8S7856C228S7856C31__8S7856C30[] = {
  ABISELECT(136,72),
  ABISELECT(136,72),
  ABISELECT(-8,-4),
  ABISELECT(120,64),
  ABISELECT(104,56),
  ABISELECT(88,44),
  ABISELECT(-8,-4),
  ABISELECT(88,44),
  ABISELECT(88,44),
  ABISELECT(72,36),
  ABISELECT(-8,-4),
  ABISELECT(81,41),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7856C22D1Ev,_ZThn4_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7856C22D0Ev,_ZThn4_N8S7856C22D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn144_N8S7856C22D1Ev,_ZThn76_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn144_N8S7856C22D0Ev,_ZThn76_N8S7856C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C228S7856C31__8S7856C30[] = {
  ABISELECT(-144,-76),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-55,-31),
  ABISELECT(-48,-28),
  ABISELECT(-144,-76),
  ABISELECT(-144,-76),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A2__8S7856C228S7856C31__8S7856C30[] = {
  ABISELECT(-24,-12),
  ABISELECT(72,36),
  ABISELECT(-24,-12),
  ABISELECT(65,33),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
};
extern void ABISELECT(_ZTv0_n136_N8S7856C22D1Ev,_ZTv0_n68_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn160_N8S7856C22D1Ev,_ZThn84_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N8S7856C22D0Ev,_ZTv0_n68_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn160_N8S7856C22D0Ev,_ZThn84_N8S7856C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C4__8S7856C228S7856C31__8S7856C30[] = {
  ABISELECT(8,4),
  ABISELECT(-160,-84),
  ABISELECT(-112,-60),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-160,-84),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-64,-36),
  ABISELECT(24,16),
  ABISELECT(-160,-84),
  ABISELECT(-64,-36),
  ABISELECT(-160,-84),
  ABISELECT(-71,-39),
  ABISELECT(-160,-84),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S7856C22D1Ev,_ZTv0_n68_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S7856C22D0Ev,_ZTv0_n68_N8S7856C22D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S7856C22D1Ev,_ZTv0_n60_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn184_N8S7856C22D1Ev,_ZThn100_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S7856C22D0Ev,_ZTv0_n60_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn184_N8S7856C22D0Ev,_ZThn100_N8S7856C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C5__A1__8S7856C228S7856C31__8S7856C30[] = {
  ABISELECT(-184,-100),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-184,-100),
  ABISELECT(-56,-32),
  ABISELECT(-72,-40),
  ABISELECT(-88,-52),
  ABISELECT(-184,-100),
  ABISELECT(-88,-52),
  ABISELECT(-88,-52),
  ABISELECT(-104,-60),
  ABISELECT(-184,-100),
  ABISELECT(-95,-55),
  ABISELECT(-184,-100),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C22D1Ev,_ZTv0_n60_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C22D0Ev,_ZTv0_n60_N8S7856C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A3__8S7856C228S7856C31__8S7856C30[] = {
  ABISELECT(-200,-108),
  ABISELECT(-104,-60),
  ABISELECT(-200,-108),
  ABISELECT(-111,-63),
  ABISELECT(-200,-108),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
};
extern void ABISELECT(_ZTvn8_n136_N8S7856C22D1Ev,_ZTvn4_n68_N8S7856C22D1Ev)();
extern void ABISELECT(_ZTvn8_n136_N8S7856C22D0Ev,_ZTvn4_n68_N8S7856C22D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C197S7856C4__8S7856C228S7856C31__8S7856C30[] = {
  ABISELECT(-120,-64),
  ABISELECT(-88,-48),
  ABISELECT(-40,-20),
  ABISELECT(-72,-40),
  ABISELECT(-56,-28),
  ABISELECT(-168,-88),
  ABISELECT(-72,-40),
  ABISELECT(-168,-88),
  ABISELECT(-79,-43),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N8S7856C22D1Ev,_ZTvn4_n68_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N8S7856C22D0Ev,_ZTvn4_n68_N8S7856C22D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N8S7856C22D1Ev,_ZTv0_n36_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn48_N8S7856C22D1Ev,_ZThn24_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7856C22D0Ev,_ZTv0_n36_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn48_N8S7856C22D0Ev,_ZThn24_N8S7856C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C18__A2__8S7856C228S7856C31__8S7856C30[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(48,24),
  ABISELECT(48,24),
  ABISELECT(32,16),
  ABISELECT(-48,-24),
  ABISELECT(41,21),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C22D1Ev,_ZTv0_n36_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C22D0Ev,_ZTv0_n36_N8S7856C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A5__8S7856C228S7856C31__8S7856C30[] = {
  ABISELECT(-64,-32),
  ABISELECT(32,16),
  ABISELECT(-64,-32),
  ABISELECT(25,13),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C31D1Ev,_ZTv0_n44_N8S7856C31D1Ev)();
extern void ABISELECT(_ZThn96_N8S7856C31D1Ev,_ZThn48_N8S7856C31D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C31D0Ev,_ZTv0_n44_N8S7856C31D0Ev)();
extern void ABISELECT(_ZThn96_N8S7856C31D0Ev,_ZThn48_N8S7856C31D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C31__8S7856C30[] = {
  ABISELECT(-96,-48),
  ABISELECT(-16,-8),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-96,-48),
  0,
  ABISELECT(-96,-48),
  ABISELECT(-7,-3),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S7856C31[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C31D1Ev,_ZTv0_n44_N8S7856C31D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C31D0Ev,_ZTv0_n44_N8S7856C31D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C31D1Ev,_ZTv0_n32_N8S7856C31D1Ev)();
extern void ABISELECT(_ZThn112_N8S7856C31D1Ev,_ZThn60_N8S7856C31D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C31D0Ev,_ZTv0_n32_N8S7856C31D0Ev)();
extern void ABISELECT(_ZThn112_N8S7856C31D0Ev,_ZThn60_N8S7856C31D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C31__8S7856C30[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-112,-60),
  ABISELECT(-23,-15),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S7856C31[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C31D1Ev,_ZTv0_n32_N8S7856C31D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C31D0Ev,_ZTv0_n32_N8S7856C31D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C31__8S7856C30[] = {
  ABISELECT(-128,-68),
  ABISELECT(-39,-23),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S7856C31[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C31D1Ev,_ZTv0_n32_N8S7856C31D1Ev)();
extern void ABISELECT(_ZThn80_N8S7856C31D1Ev,_ZThn40_N8S7856C31D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C31D0Ev,_ZTv0_n32_N8S7856C31D0Ev)();
extern void ABISELECT(_ZThn80_N8S7856C31D0Ev,_ZThn40_N8S7856C31D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__8S7856C31__8S7856C30[] = {
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-80,-40),
  ABISELECT(9,5),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S7856C31[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C31D1Ev,_ZTv0_n32_N8S7856C31D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C31D0Ev,_ZTv0_n32_N8S7856C31D0Ev),
};
extern void ABISELECT(_ZThn8_N8S7856C31D1Ev,_ZThn4_N8S7856C31D1Ev)();
extern void ABISELECT(_ZThn8_N8S7856C31D0Ev,_ZThn4_N8S7856C31D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C58S7856C22__8S7856C31__8S7856C30[] = {
  ABISELECT(136,72),
  ABISELECT(136,72),
  ABISELECT(-8,-4),
  ABISELECT(120,64),
  ABISELECT(104,56),
  ABISELECT(88,44),
  ABISELECT(-8,-4),
  ABISELECT(88,44),
  ABISELECT(88,44),
  ABISELECT(72,36),
  ABISELECT(-8,-4),
  ABISELECT(81,41),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7856C31[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7856C31D1Ev,_ZThn4_N8S7856C31D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7856C31D0Ev,_ZThn4_N8S7856C31D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C31D1Ev,_ZTv0_n44_N8S7856C31D1Ev)();
extern void ABISELECT(_ZThn144_N8S7856C31D1Ev,_ZThn76_N8S7856C31D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C31D0Ev,_ZTv0_n44_N8S7856C31D0Ev)();
extern void ABISELECT(_ZThn144_N8S7856C31D0Ev,_ZThn76_N8S7856C31D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C31__8S7856C30[] = {
  ABISELECT(-144,-76),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-55,-31),
  ABISELECT(-48,-28),
  ABISELECT(-144,-76),
  ABISELECT(-144,-76),
  (VTBL_ENTRY)&(_ZTI8S7856C31[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C31D1Ev,_ZTv0_n44_N8S7856C31D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C31D0Ev,_ZTv0_n44_N8S7856C31D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C58S7856C22__A2__8S7856C31__8S7856C30[] = {
  ABISELECT(-24,-12),
  ABISELECT(72,36),
  ABISELECT(-24,-12),
  ABISELECT(65,33),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7856C31[0]),
};
extern void ABISELECT(_ZTv0_n136_N8S7856C31D1Ev,_ZTv0_n68_N8S7856C31D1Ev)();
extern void ABISELECT(_ZThn160_N8S7856C31D1Ev,_ZThn84_N8S7856C31D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N8S7856C31D0Ev,_ZTv0_n68_N8S7856C31D0Ev)();
extern void ABISELECT(_ZThn160_N8S7856C31D0Ev,_ZThn84_N8S7856C31D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C4__8S7856C31__8S7856C30[] = {
  ABISELECT(8,4),
  ABISELECT(-160,-84),
  ABISELECT(-112,-60),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-160,-84),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-64,-36),
  ABISELECT(24,16),
  ABISELECT(-160,-84),
  ABISELECT(-64,-36),
  ABISELECT(-160,-84),
  ABISELECT(-71,-39),
  ABISELECT(-160,-84),
  (VTBL_ENTRY)&(_ZTI8S7856C31[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S7856C31D1Ev,_ZTv0_n68_N8S7856C31D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S7856C31D0Ev,_ZTv0_n68_N8S7856C31D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S7856C31D1Ev,_ZTv0_n60_N8S7856C31D1Ev)();
extern void ABISELECT(_ZThn184_N8S7856C31D1Ev,_ZThn100_N8S7856C31D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S7856C31D0Ev,_ZTv0_n60_N8S7856C31D0Ev)();
extern void ABISELECT(_ZThn184_N8S7856C31D0Ev,_ZThn100_N8S7856C31D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C5__A1__8S7856C31__8S7856C30[] = {
  ABISELECT(-184,-100),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-184,-100),
  ABISELECT(-56,-32),
  ABISELECT(-72,-40),
  ABISELECT(-88,-52),
  ABISELECT(-184,-100),
  ABISELECT(-88,-52),
  ABISELECT(-88,-52),
  ABISELECT(-104,-60),
  ABISELECT(-184,-100),
  ABISELECT(-95,-55),
  ABISELECT(-184,-100),
  (VTBL_ENTRY)&(_ZTI8S7856C31[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C31D1Ev,_ZTv0_n60_N8S7856C31D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C31D0Ev,_ZTv0_n60_N8S7856C31D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A3__8S7856C31__8S7856C30[] = {
  ABISELECT(-200,-108),
  ABISELECT(-104,-60),
  ABISELECT(-200,-108),
  ABISELECT(-111,-63),
  ABISELECT(-200,-108),
  (VTBL_ENTRY)&(_ZTI8S7856C31[0]),
};
extern void ABISELECT(_ZTvn8_n136_N8S7856C31D1Ev,_ZTvn4_n68_N8S7856C31D1Ev)();
extern void ABISELECT(_ZTvn8_n136_N8S7856C31D0Ev,_ZTvn4_n68_N8S7856C31D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C197S7856C4__8S7856C31__8S7856C30[] = {
  ABISELECT(-120,-64),
  ABISELECT(-88,-48),
  ABISELECT(-40,-20),
  ABISELECT(-72,-40),
  ABISELECT(-56,-28),
  ABISELECT(-168,-88),
  ABISELECT(-72,-40),
  ABISELECT(-168,-88),
  ABISELECT(-79,-43),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S7856C31[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N8S7856C31D1Ev,_ZTvn4_n68_N8S7856C31D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N8S7856C31D0Ev,_ZTvn4_n68_N8S7856C31D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N8S7856C31D1Ev,_ZTv0_n36_N8S7856C31D1Ev)();
extern void ABISELECT(_ZThn48_N8S7856C31D1Ev,_ZThn24_N8S7856C31D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7856C31D0Ev,_ZTv0_n36_N8S7856C31D0Ev)();
extern void ABISELECT(_ZThn48_N8S7856C31D0Ev,_ZThn24_N8S7856C31D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C18__A2__8S7856C31__8S7856C30[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(48,24),
  ABISELECT(48,24),
  ABISELECT(32,16),
  ABISELECT(-48,-24),
  ABISELECT(41,21),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S7856C31[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C31D1Ev,_ZTv0_n36_N8S7856C31D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C31D0Ev,_ZTv0_n36_N8S7856C31D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A5__8S7856C31__8S7856C30[] = {
  ABISELECT(-64,-32),
  ABISELECT(32,16),
  ABISELECT(-64,-32),
  ABISELECT(25,13),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S7856C31[0]),
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C18__8S7856C30[] = {
  ABISELECT(-48,-24),
  ABISELECT(48,24),
  ABISELECT(48,24),
  ABISELECT(32,16),
  ABISELECT(-48,-24),
  ABISELECT(41,21),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C18__8S7856C30[] = {
  ABISELECT(-48,-24),
  ABISELECT(41,21),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C18__A2__8S7856C30[] = {
  ABISELECT(-48,-24),
  ABISELECT(41,21),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__8S7856C30[] = {
  ABISELECT(-64,-32),
  ABISELECT(32,16),
  ABISELECT(-64,-32),
  ABISELECT(25,13),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C18__A1__8S7856C30[] = {
  ABISELECT(-96,-48),
  ABISELECT(-7,-3),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZThn32_N8S7856C18D1Ev,_ZThn16_N8S7856C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
extern void ABISELECT(_ZThn32_N8S7856C18D0Ev,_ZThn16_N8S7856C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C18__8S7856C30[] = {
  ABISELECT(-32,-16),
  ABISELECT(-80,-40),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-80,-40),
  ABISELECT(9,5),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C18__8S7856C30[] = {
  ABISELECT(-96,-48),
  0,
  ABISELECT(-96,-48),
  ABISELECT(-7,-3),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C18__8S7856C30[] = {
  ABISELECT(-64,-32),
  ABISELECT(32,16),
  ABISELECT(-64,-32),
  ABISELECT(25,13),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C30[] = {
  ABISELECT(-80,-40),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-80,-40),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C13__8S7856C30[] = {
  ABISELECT(-80,-40),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C13__8S7856C30[] = {
  ABISELECT(-96,-48),
  0,
  ABISELECT(-96,-48),
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C30[] = {
  ABISELECT(-96,-48),
  0,
  ABISELECT(-96,-48),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__A1__8S7856C30[] = {
  ABISELECT(-96,-48),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
extern void _ZN7S7856C6D1Ev();
extern void _ZN7S7856C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C30[] = {
  ABISELECT(-16,-8),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-96,-48),
  0,
  ABISELECT(-96,-48),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&_ZN7S7856C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C6D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn16_N7S7856C6D1Ev,_ZThn12_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn16_N7S7856C6D0Ev,_ZThn12_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C6__8S7856C30[] = {
  ABISELECT(-16,-12),
  ABISELECT(-112,-60),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-112,-60),
  ABISELECT(-23,-15),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C6__8S7856C30[] = {
  ABISELECT(-128,-68),
  ABISELECT(-39,-23),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C6__8S7856C30[] = {
  ABISELECT(16,8),
  ABISELECT(-80,-40),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-80,-40),
  ABISELECT(9,5),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
extern void _ZN7S7856C7D1Ev();
extern void _ZN7S7856C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C30[] = {
  ABISELECT(-112,-60),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-112,-60),
  ABISELECT(-23,-15),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
  (VTBL_ENTRY)&_ZN7S7856C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C7D0Ev,
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C137S7856C7__A1__8S7856C30[] = {
  ABISELECT(-112,-60),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-112,-60),
  ABISELECT(-23,-15),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C137S7856C7__A3__8S7856C30[] = {
  ABISELECT(-112,-60),
  ABISELECT(-23,-15),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C137S7856C7__A1__8S7856C30[] = {
  ABISELECT(-96,-48),
  0,
  ABISELECT(-96,-48),
  ABISELECT(-7,-3),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C7__8S7856C30[] = {
  ABISELECT(-96,-48),
  0,
  ABISELECT(-96,-48),
  ABISELECT(-7,-3),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__A1__8S7856C30[] = {
  ABISELECT(-128,-68),
  ABISELECT(-39,-23),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C14__A4__8S7856C30[] = {
  ABISELECT(-128,-68),
  ABISELECT(-39,-23),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
extern void _ZN8S7856C16D1Ev();
extern void _ZN8S7856C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C30[] = {
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-55,-31),
  ABISELECT(-48,-28),
  ABISELECT(-144,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&_ZN8S7856C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C16__8S7856C30[] = {
  ABISELECT(-96,-48),
  0,
  ABISELECT(-96,-48),
  ABISELECT(-7,-3),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C16__8S7856C30[] = {
  ABISELECT(-128,-68),
  ABISELECT(-39,-23),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C16__8S7856C30[] = {
  ABISELECT(32,16),
  ABISELECT(-112,-60),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-112,-60),
  ABISELECT(-23,-15),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt__8S7856C30[] = {
  ABISELECT(-144,-76),
  0,
  (VTBL_ENTRY)&(_ZTI11S7856C17_nt[0]),
};
extern void _ZN7S7856C4D1Ev();
extern void _ZN7S7856C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C4__8S7856C30[] = {
  ABISELECT(-112,-60),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-160,-84),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-64,-36),
  ABISELECT(24,16),
  ABISELECT(-160,-84),
  ABISELECT(-64,-36),
  ABISELECT(-160,-84),
  ABISELECT(-71,-39),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&_ZN7S7856C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C4D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C107S7856C4__A5__8S7856C30[] = {
  ABISELECT(-160,-84),
  ABISELECT(-64,-36),
  ABISELECT(-160,-84),
  ABISELECT(-71,-39),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C107S7856C4__A5__8S7856C30[] = {
  ABISELECT(-96,-48),
  ABISELECT(-7,-3),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void _ZN8S7856C19D1Ev();
extern void _ZN8S7856C19D0Ev();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C197S7856C4__8S7856C30[] = {
  ABISELECT(-120,-64),
  ABISELECT(-88,-48),
  ABISELECT(-40,-20),
  ABISELECT(-72,-40),
  ABISELECT(-56,-28),
  ABISELECT(-168,-88),
  ABISELECT(-72,-40),
  ABISELECT(-168,-88),
  ABISELECT(-79,-43),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&_ZN8S7856C19D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C19D0Ev,
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void _ZN7S7856C6D1Ev();
extern void _ZN7S7856C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C68S7856C197S7856C4__A1__8S7856C30[] = {
  ABISELECT(-88,-48),
  ABISELECT(-40,-20),
  ABISELECT(-72,-40),
  ABISELECT(-56,-28),
  ABISELECT(-168,-88),
  ABISELECT(-72,-40),
  ABISELECT(-168,-88),
  ABISELECT(-79,-43),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&_ZN7S7856C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C6D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C68S7856C197S7856C4__A1__8S7856C30[] = {
  ABISELECT(56,28),
  ABISELECT(-112,-60),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-112,-60),
  ABISELECT(-23,-15),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C68S7856C197S7856C4__A1__8S7856C30[] = {
  ABISELECT(-96,-48),
  0,
  ABISELECT(-96,-48),
  ABISELECT(-7,-3),
  ABISELECT(72,40),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C68S7856C197S7856C4__A1__8S7856C30[] = {
  ABISELECT(-128,-68),
  ABISELECT(-39,-23),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C68S7856C197S7856C4__A1__8S7856C30[] = {
  ABISELECT(88,48),
  ABISELECT(-80,-40),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-80,-40),
  ABISELECT(9,5),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C197S7856C4__8S7856C30[] = {
  ABISELECT(56,28),
  ABISELECT(-112,-60),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-112,-60),
  ABISELECT(-23,-15),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C197S7856C4__8S7856C30[] = {
  ABISELECT(-96,-48),
  0,
  ABISELECT(-96,-48),
  ABISELECT(-7,-3),
  ABISELECT(72,40),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C197S7856C4__8S7856C30[] = {
  ABISELECT(-128,-68),
  ABISELECT(-39,-23),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__8S7856C197S7856C4__8S7856C30[] = {
  ABISELECT(88,48),
  ABISELECT(-80,-40),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-80,-40),
  ABISELECT(9,5),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev),
};
extern void ABISELECT(_ZTv0_n72_N8S7856C19D1Ev,_ZTv0_n36_N8S7856C19D1Ev)();
extern void ABISELECT(_ZTv0_n72_N8S7856C19D0Ev,_ZTv0_n36_N8S7856C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C18__8S7856C197S7856C4__8S7856C30[] = {
  ABISELECT(120,64),
  ABISELECT(-48,-24),
  ABISELECT(48,24),
  ABISELECT(48,24),
  ABISELECT(32,16),
  ABISELECT(-48,-24),
  ABISELECT(41,21),
  ABISELECT(120,64),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C19D1Ev,_ZTv0_n36_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C19D0Ev,_ZTv0_n36_N8S7856C19D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__8S7856C197S7856C4__8S7856C30[] = {
  ABISELECT(-64,-32),
  ABISELECT(32,16),
  ABISELECT(-64,-32),
  ABISELECT(25,13),
  ABISELECT(104,56),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
extern void ABISELECT(_ZTv0_n120_N7S7856C4D1Ev,_ZTv0_n60_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn24_N7S7856C4D1Ev,_ZThn16_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S7856C4D0Ev,_ZTv0_n60_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn24_N7S7856C4D0Ev,_ZThn16_N7S7856C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C5__7S7856C4__8S7856C30[] = {
  ABISELECT(-24,-16),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-184,-100),
  ABISELECT(-56,-32),
  ABISELECT(-72,-40),
  ABISELECT(-88,-52),
  ABISELECT(-184,-100),
  ABISELECT(-88,-52),
  ABISELECT(-88,-52),
  ABISELECT(-104,-60),
  ABISELECT(-184,-100),
  ABISELECT(-95,-55),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C4D1Ev,_ZTv0_n60_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C4D0Ev,_ZTv0_n60_N7S7856C4D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C4__8S7856C30[] = {
  ABISELECT(64,36),
  ABISELECT(-16,-8),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-96,-48),
  0,
  ABISELECT(-96,-48),
  ABISELECT(-7,-3),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C4__8S7856C30[] = {
  ABISELECT(48,24),
  ABISELECT(-112,-60),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-112,-60),
  ABISELECT(-23,-15),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C4__8S7856C30[] = {
  ABISELECT(-128,-68),
  ABISELECT(-39,-23),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C4__8S7856C30[] = {
  ABISELECT(80,44),
  ABISELECT(-80,-40),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-80,-40),
  ABISELECT(9,5),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C4__8S7856C30[] = {
  ABISELECT(16,8),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-55,-31),
  ABISELECT(-48,-28),
  ABISELECT(-144,-76),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__7S7856C4__8S7856C30[] = {
  ABISELECT(-200,-108),
  ABISELECT(-104,-60),
  ABISELECT(-200,-108),
  ABISELECT(-111,-63),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
extern void ABISELECT(_ZThn8_N7S7856C4D1Ev,_ZThn4_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn8_N7S7856C4D0Ev,_ZThn4_N7S7856C4D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C19__7S7856C4__8S7856C30[] = {
  ABISELECT(-120,-64),
  ABISELECT(-88,-48),
  ABISELECT(-40,-20),
  ABISELECT(-72,-40),
  ABISELECT(-56,-28),
  ABISELECT(-168,-88),
  ABISELECT(-72,-40),
  ABISELECT(-168,-88),
  ABISELECT(-79,-43),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7856C4D1Ev,_ZThn4_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7856C4D0Ev,_ZThn4_N7S7856C4D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N7S7856C4D1Ev,_ZTv0_n36_N7S7856C4D1Ev)();
extern void ABISELECT(_ZTv0_n72_N7S7856C4D0Ev,_ZTv0_n36_N7S7856C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C18__A1__7S7856C4__8S7856C30[] = {
  ABISELECT(112,60),
  ABISELECT(-48,-24),
  ABISELECT(48,24),
  ABISELECT(48,24),
  ABISELECT(32,16),
  ABISELECT(-48,-24),
  ABISELECT(41,21),
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7856C4D1Ev,_ZTv0_n36_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7856C4D0Ev,_ZTv0_n36_N7S7856C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A3__7S7856C4__8S7856C30[] = {
  ABISELECT(-64,-32),
  ABISELECT(32,16),
  ABISELECT(-64,-32),
  ABISELECT(25,13),
  ABISELECT(96,52),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
extern void _ZN7S7856C5D1Ev();
extern void _ZN7S7856C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C5__A1__8S7856C30[] = {
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-184,-100),
  ABISELECT(-56,-32),
  ABISELECT(-72,-40),
  ABISELECT(-88,-52),
  ABISELECT(-184,-100),
  ABISELECT(-88,-52),
  ABISELECT(-88,-52),
  ABISELECT(-104,-60),
  ABISELECT(-184,-100),
  ABISELECT(-95,-55),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&_ZN7S7856C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C5D0Ev,
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C187S7856C5__A2__8S7856C30[] = {
  ABISELECT(-184,-100),
  ABISELECT(-88,-52),
  ABISELECT(-88,-52),
  ABISELECT(-104,-60),
  ABISELECT(-184,-100),
  ABISELECT(-95,-55),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C187S7856C5__A3__8S7856C30[] = {
  ABISELECT(-184,-100),
  ABISELECT(-95,-55),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C187S7856C5__A6__8S7856C30[] = {
  ABISELECT(-184,-100),
  ABISELECT(-95,-55),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A4__8S7856C30[] = {
  ABISELECT(-200,-108),
  ABISELECT(-104,-60),
  ABISELECT(-200,-108),
  ABISELECT(-111,-63),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C187S7856C5__A4__8S7856C30[] = {
  ABISELECT(-96,-48),
  ABISELECT(-7,-3),
  ABISELECT(104,60),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C187S7856C5__A2__8S7856C30[] = {
  ABISELECT(104,60),
  ABISELECT(-80,-40),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-80,-40),
  ABISELECT(9,5),
  ABISELECT(104,60),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C187S7856C5__A2__8S7856C30[] = {
  ABISELECT(-96,-48),
  0,
  ABISELECT(-96,-48),
  ABISELECT(-7,-3),
  ABISELECT(88,52),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C187S7856C5__A2__8S7856C30[] = {
  ABISELECT(-200,-108),
  ABISELECT(-104,-60),
  ABISELECT(-200,-108),
  ABISELECT(-111,-63),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C5__A1__8S7856C30[] = {
  ABISELECT(88,52),
  ABISELECT(-16,-8),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-96,-48),
  0,
  ABISELECT(-96,-48),
  ABISELECT(-7,-3),
  ABISELECT(88,52),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C5__A1__8S7856C30[] = {
  ABISELECT(72,40),
  ABISELECT(-112,-60),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-112,-60),
  ABISELECT(-23,-15),
  ABISELECT(72,40),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C5__A1__8S7856C30[] = {
  ABISELECT(-128,-68),
  ABISELECT(-39,-23),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C5__A1__8S7856C30[] = {
  ABISELECT(104,60),
  ABISELECT(-80,-40),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-80,-40),
  ABISELECT(9,5),
  ABISELECT(104,60),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C5__A1__8S7856C30[] = {
  ABISELECT(40,24),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-55,-31),
  ABISELECT(-48,-28),
  ABISELECT(-144,-76),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__7S7856C5__A1__8S7856C30[] = {
  ABISELECT(-200,-108),
  ABISELECT(-104,-60),
  ABISELECT(-200,-108),
  ABISELECT(-111,-63),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
static  VTT_ENTRY vtt_S7856C30[] = {
  {&(_ZTV8S7856C30[18]),  18,166},
  {&(_tg__ZTV8S7856C31__8S7856C30[17]),  17,19},
  {&(_tg__ZTV8S7856C228S7856C31__8S7856C30[17]),  17,19},
  {&(_tg__ZTV8S7856C108S7856C228S7856C31__A2__8S7856C30[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C228S7856C31__A2__8S7856C30[4]),  4,4},
  {&(_tg__ZTV7S7856C58S7856C228S7856C31__8S7856C30[14]),  14,16},
  {&(_tg__ZTV8S7856C187S7856C58S7856C228S7856C31__A1__8S7856C30[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C187S7856C58S7856C228S7856C31__A2__8S7856C30[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C187S7856C58S7856C228S7856C31__A5__8S7856C30[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C187S7856C58S7856C228S7856C31__A3__8S7856C30[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C187S7856C58S7856C228S7856C31__A3__8S7856C30[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C187S7856C58S7856C228S7856C31__A1__8S7856C30[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C58S7856C228S7856C31__A1__8S7856C30[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C58S7856C228S7856C31__A1__8S7856C30[6]),  6,6},
  {&(_tg__ZTV8S7856C10__A__8S7856C187S7856C58S7856C228S7856C31__A1__8S7856C30[6]),  6,6},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C228S7856C31__8S7856C30[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C58S7856C228S7856C31__8S7856C30[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C228S7856C31__8S7856C30[11]),  11,13},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C228S7856C31__8S7856C30[11]),  11,13},
  {&(_tg__ZTV8S7856C14__7S7856C58S7856C228S7856C31__8S7856C30[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C58S7856C228S7856C31__8S7856C30[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C58S7856C228S7856C31__8S7856C30[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C58S7856C228S7856C31__8S7856C30[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C18__A1__7S7856C58S7856C228S7856C31__8S7856C30[6]),  6,6},
  {&(_tg__ZTV7S7856C6__8S7856C228S7856C31__8S7856C30[11]),  11,13},
  {&(_tg__ZTV7S7856C6__8S7856C228S7856C31__8S7856C30[11]),  11,13},
  {&(_tg__ZTV7S7856C7__8S7856C228S7856C31__8S7856C30[8]),  8,10},
  {&(_tg__ZTV7S7856C6__8S7856C228S7856C31__8S7856C30[11]),  11,13},
  {&(_tg__ZTV8S7856C14__8S7856C228S7856C31__8S7856C30[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__8S7856C228S7856C31__8S7856C30[8]),  8,10},
  {&(_tg__ZTV7S7856C5__A__8S7856C228S7856C31__8S7856C30[14]),  14,16},
  {&(_tg__ZTV8S7856C16__8S7856C228S7856C31__8S7856C30[11]),  11,13},
  {&(_tg__ZTV8S7856C16__8S7856C228S7856C31__8S7856C30[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A2__8S7856C228S7856C31__8S7856C30[6]),  6,6},
  {&(_tg__ZTV7S7856C4__8S7856C228S7856C31__8S7856C30[18]),  18,20},
  {&(_tg__ZTV7S7856C5__A1__8S7856C228S7856C31__8S7856C30[15]),  15,17},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A3__8S7856C228S7856C31__8S7856C30[6]),  6,6},
  {&(_tg__ZTV8S7856C197S7856C4__8S7856C228S7856C31__8S7856C30[11]),  11,14},
  {&(_tg__ZTV8S7856C18__A2__8S7856C228S7856C31__8S7856C30[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A5__8S7856C228S7856C31__8S7856C30[6]),  6,6},
  {&(_tg__ZTV7S7856C6__8S7856C31__8S7856C30[11]),  11,13},
  {&(_tg__ZTV7S7856C6__8S7856C31__8S7856C30[11]),  11,13},
  {&(_tg__ZTV7S7856C7__8S7856C31__8S7856C30[8]),  8,10},
  {&(_tg__ZTV7S7856C6__8S7856C31__8S7856C30[11]),  11,13},
  {&(_tg__ZTV8S7856C14__8S7856C31__8S7856C30[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__8S7856C31__8S7856C30[8]),  8,10},
  {&(_tg__ZTV7S7856C58S7856C22__8S7856C31__8S7856C30[14]),  14,16},
  {&(_tg__ZTV8S7856C16__8S7856C31__8S7856C30[11]),  11,13},
  {&(_tg__ZTV8S7856C16__8S7856C31__8S7856C30[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C58S7856C22__A2__8S7856C31__8S7856C30[6]),  6,6},
  {&(_tg__ZTV7S7856C4__8S7856C31__8S7856C30[18]),  18,20},
  {&(_tg__ZTV7S7856C5__A1__8S7856C31__8S7856C30[15]),  15,17},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A3__8S7856C31__8S7856C30[6]),  6,6},
  {&(_tg__ZTV8S7856C197S7856C4__8S7856C31__8S7856C30[11]),  11,14},
  {&(_tg__ZTV8S7856C18__A2__8S7856C31__8S7856C30[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A5__8S7856C31__8S7856C30[6]),  6,6},
  {&(_ZTV8S7856C30[51]),  51,166},
  {&(_ZTV8S7856C30[67]),  67,166},
  {&(_ZTV8S7856C30[80]),  80,166},
  {&(_ZTV8S7856C30[80]),  80,166},
  {&(_ZTV8S7856C30[59]),  59,166},
  {&(_ZTV8S7856C30[80]),  80,166},
  {&(_ZTV8S7856C30[90]),  90,166},
  {&(_ZTV8S7856C30[96]),  96,166},
  {&(_ZTV8S7856C30[34]),  34,166},
  {&(_ZTV8S7856C30[107]),  107,166},
  {&(_ZTV8S7856C30[107]),  107,166},
  {&(_ZTV8S7856C30[42]),  42,166},
  {&(_ZTV8S7856C30[127]),  127,166},
  {&(_ZTV8S7856C30[158]),  158,166},
  {&(_ZTV8S7856C30[166]),  166,166},
  {&(_ZTV8S7856C30[140]),  140,166},
  {&(_tg__ZTV8S7856C18__8S7856C30[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C18__8S7856C30[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C18__A2__8S7856C30[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C18__A1__8S7856C30[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C18__A1__8S7856C30[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C18__8S7856C30[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C18__8S7856C30[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C18__8S7856C30[6]),  6,6},
  {&(_tg__ZTV8S7856C10__A__8S7856C18__8S7856C30[6]),  6,6},
  {&(_tg__ZTV8S7856C13__8S7856C30[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C13__8S7856C30[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C13__8S7856C30[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C13__8S7856C30[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C30[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C30[6]),  6,6},
  {&(_tg__ZTV8S7856C11__A1__8S7856C30[4]),  4,4},
  {&(_tg__ZTV7S7856C6__8S7856C30[10]),  10,12},
  {&(_tg__ZTV7S7856C7__7S7856C6__8S7856C30[8]),  8,10},
  {&(_tg__ZTV7S7856C6__8S7856C30[10]),  10,12},
  {&(_tg__ZTV7S7856C6__8S7856C30[10]),  10,12},
  {&(_tg__ZTV8S7856C14__7S7856C6__8S7856C30[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C6__8S7856C30[8]),  8,10},
  {&(_tg__ZTV7S7856C7__8S7856C30[7]),  7,9},
  {&(_tg__ZTV8S7856C137S7856C7__A1__8S7856C30[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C137S7856C7__A3__8S7856C30[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C7__A1__8S7856C30[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C7__A1__8S7856C30[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C7__8S7856C30[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C7__8S7856C30[6]),  6,6},
  {&(_tg__ZTV8S7856C14__A1__8S7856C30[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C14__A4__8S7856C30[4]),  4,4},
  {&(_tg__ZTV8S7856C16__8S7856C30[10]),  10,12},
  {&(_tg__ZTV8S7856C10__8S7856C16__8S7856C30[6]),  6,6},
  {&(_tg__ZTV8S7856C16__8S7856C30[10]),  10,12},
  {&(_tg__ZTV8S7856C14__8S7856C16__8S7856C30[4]),  4,4},
  {&(_tg__ZTV7S7856C7__8S7856C16__8S7856C30[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C16__8S7856C30[6]),  6,6},
  {&(_tg__ZTV11S7856C17_nt__8S7856C30[3]),  3,3},
  {&(_tg__ZTV7S7856C4__8S7856C30[16]),  16,18},
  {&(_tg__ZTV8S7856C107S7856C4__A5__8S7856C30[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C107S7856C4__A5__8S7856C30[4]),  4,4},
  {&(_tg__ZTV8S7856C197S7856C4__8S7856C30[11]),  11,14},
  {&(_tg__ZTV7S7856C68S7856C197S7856C4__A1__8S7856C30[10]),  10,12},
  {&(_tg__ZTV7S7856C7__7S7856C68S7856C197S7856C4__A1__8S7856C30[8]),  8,10},
  {&(_tg__ZTV8S7856C10__7S7856C68S7856C197S7856C4__A1__8S7856C30[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C68S7856C197S7856C4__A1__8S7856C30[6]),  6,6},
  {&(_tg__ZTV8S7856C14__7S7856C68S7856C197S7856C4__A1__8S7856C30[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C68S7856C197S7856C4__A1__8S7856C30[8]),  8,10},
  {&(_tg__ZTV7S7856C7__8S7856C197S7856C4__8S7856C30[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C197S7856C4__8S7856C30[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C197S7856C4__8S7856C30[6]),  6,6},
  {&(_tg__ZTV8S7856C14__8S7856C197S7856C4__8S7856C30[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__8S7856C197S7856C4__8S7856C30[8]),  8,10},
  {&(_tg__ZTV8S7856C18__8S7856C197S7856C4__8S7856C30[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A1__8S7856C197S7856C4__8S7856C30[6]),  6,6},
  {&(_tg__ZTV7S7856C5__7S7856C4__8S7856C30[15]),  15,17},
  {&(_tg__ZTV7S7856C6__7S7856C4__8S7856C30[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C4__8S7856C30[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C4__8S7856C30[11]),  11,13},
  {&(_tg__ZTV7S7856C6__7S7856C4__8S7856C30[11]),  11,13},
  {&(_tg__ZTV8S7856C14__7S7856C4__8S7856C30[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C4__8S7856C30[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C4__8S7856C30[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C4__8S7856C30[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__7S7856C4__8S7856C30[6]),  6,6},
  {&(_tg__ZTV8S7856C19__7S7856C4__8S7856C30[11]),  11,14},
  {&(_tg__ZTV8S7856C18__A1__7S7856C4__8S7856C30[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A3__7S7856C4__8S7856C30[6]),  6,6},
  {&(_tg__ZTV7S7856C5__A1__8S7856C30[14]),  14,16},
  {&(_tg__ZTV8S7856C187S7856C5__A2__8S7856C30[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C187S7856C5__A3__8S7856C30[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C187S7856C5__A6__8S7856C30[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A4__8S7856C30[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C187S7856C5__A4__8S7856C30[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C187S7856C5__A2__8S7856C30[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C5__A2__8S7856C30[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C5__A2__8S7856C30[6]),  6,6},
  {&(_tg__ZTV8S7856C10__A__8S7856C187S7856C5__A2__8S7856C30[6]),  6,6},
  {&(_tg__ZTV7S7856C6__7S7856C5__A1__8S7856C30[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C5__A1__8S7856C30[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C5__A1__8S7856C30[11]),  11,13},
  {&(_tg__ZTV7S7856C6__7S7856C5__A1__8S7856C30[11]),  11,13},
  {&(_tg__ZTV8S7856C14__7S7856C5__A1__8S7856C30[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C5__A1__8S7856C30[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C5__A1__8S7856C30[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C5__A1__8S7856C30[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C18__A1__7S7856C5__A1__8S7856C30[6]),  6,6},
};
extern VTBL_ENTRY _ZTI8S7856C30[];
extern  VTBL_ENTRY _ZTV8S7856C30[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C30[];
static VTBL_ENTRY alt_thunk_names28[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7856C4D0Ev,_ZTv0_n60_N7S7856C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7856C4D0Ev,_ZThn16_N7S7856C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7856C4D1Ev,_ZTv0_n60_N7S7856C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7856C4D1Ev,_ZThn16_N7S7856C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7856C6D0Ev,_ZThn12_N7S7856C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7856C6D1Ev,_ZThn12_N7S7856C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C31D0Ev,_ZTv0_n36_N8S7856C31D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7856C31D0Ev,_ZThn24_N8S7856C31D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C31D1Ev,_ZTv0_n36_N8S7856C31D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7856C31D1Ev,_ZThn24_N8S7856C31D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C31D0Ev,_ZTv0_n60_N8S7856C31D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7856C31D0Ev,_ZThn100_N8S7856C31D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C31D1Ev,_ZTv0_n60_N8S7856C31D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7856C31D1Ev,_ZThn100_N8S7856C31D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N8S7856C31D0Ev,_ZTv0_n68_N8S7856C31D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7856C31D0Ev,_ZThn84_N8S7856C31D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N8S7856C31D1Ev,_ZTv0_n68_N8S7856C31D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7856C31D1Ev,_ZThn84_N8S7856C31D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C31D0Ev,_ZTv0_n32_N8S7856C31D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7856C31D0Ev,_ZThn40_N8S7856C31D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7856C31D0Ev,_ZThn60_N8S7856C31D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C31D1Ev,_ZTv0_n32_N8S7856C31D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7856C31D1Ev,_ZThn40_N8S7856C31D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7856C31D1Ev,_ZThn60_N8S7856C31D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C31D0Ev,_ZTv0_n44_N8S7856C31D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7856C31D0Ev,_ZThn76_N8S7856C31D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7856C31D0Ev,_ZThn48_N8S7856C31D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C31D1Ev,_ZTv0_n44_N8S7856C31D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7856C31D1Ev,_ZThn76_N8S7856C31D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7856C31D1Ev,_ZThn48_N8S7856C31D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C22D0Ev,_ZTv0_n36_N8S7856C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7856C22D0Ev,_ZThn24_N8S7856C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C22D1Ev,_ZTv0_n36_N8S7856C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7856C22D1Ev,_ZThn24_N8S7856C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C22D0Ev,_ZTv0_n60_N8S7856C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7856C22D0Ev,_ZThn100_N8S7856C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C22D1Ev,_ZTv0_n60_N8S7856C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7856C22D1Ev,_ZThn100_N8S7856C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N8S7856C22D0Ev,_ZTv0_n68_N8S7856C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7856C22D0Ev,_ZThn84_N8S7856C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N8S7856C22D1Ev,_ZTv0_n68_N8S7856C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7856C22D1Ev,_ZThn84_N8S7856C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7856C22D0Ev,_ZThn40_N8S7856C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7856C22D0Ev,_ZThn60_N8S7856C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7856C22D1Ev,_ZThn40_N8S7856C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7856C22D1Ev,_ZThn60_N8S7856C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7856C22D0Ev,_ZThn76_N8S7856C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7856C22D0Ev,_ZThn48_N8S7856C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7856C22D1Ev,_ZThn76_N8S7856C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7856C22D1Ev,_ZThn48_N8S7856C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7856C5D0Ev,_ZThn36_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7856C5D0Ev,_ZThn56_N7S7856C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7856C5D1Ev,_ZThn36_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7856C5D1Ev,_ZThn56_N7S7856C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7856C5D0Ev,_ZThn72_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7856C5D0Ev,_ZThn44_N7S7856C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7856C5D1Ev,_ZThn72_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7856C5D1Ev,_ZThn44_N7S7856C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7856C18D0Ev,_ZThn16_N8S7856C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7856C18D0Ev,_ZThn36_N8S7856C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7856C18D1Ev,_ZThn16_N8S7856C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7856C18D1Ev,_ZThn36_N8S7856C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C30D0Ev,_ZTv0_n60_N8S7856C30D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7856C30D0Ev,_ZThn100_N8S7856C30D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C30D1Ev,_ZTv0_n60_N8S7856C30D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7856C30D1Ev,_ZThn100_N8S7856C30D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N8S7856C30D0Ev,_ZTv0_n68_N8S7856C30D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7856C30D0Ev,_ZThn84_N8S7856C30D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N8S7856C30D1Ev,_ZTv0_n68_N8S7856C30D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7856C30D1Ev,_ZThn84_N8S7856C30D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C30D0Ev,_ZTv0_n44_N8S7856C30D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7856C30D0Ev,_ZThn76_N8S7856C30D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7856C30D0Ev,_ZThn48_N8S7856C30D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C30D1Ev,_ZTv0_n44_N8S7856C30D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7856C30D1Ev,_ZThn76_N8S7856C30D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7856C30D1Ev,_ZThn48_N8S7856C30D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C30D0Ev,_ZTv0_n32_N8S7856C30D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7856C30D0Ev,_ZThn60_N8S7856C30D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7856C30D0Ev,_ZThn40_N8S7856C30D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C30D1Ev,_ZTv0_n32_N8S7856C30D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7856C30D1Ev,_ZThn60_N8S7856C30D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7856C30D1Ev,_ZThn40_N8S7856C30D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C30D0Ev,_ZTv0_n36_N8S7856C30D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7856C30D0Ev,_ZThn24_N8S7856C30D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C30D1Ev,_ZTv0_n36_N8S7856C30D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7856C30D1Ev,_ZThn24_N8S7856C30D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7856C30 = {  "S7856C30", // class name
  bases_S7856C30, 68,
  &(vtc_S7856C30[0]), // expected_vtbl_contents
  &(vtt_S7856C30[0]), // expected_vtt_contents
  ABISELECT(216,116), // object size
  NSPAIRA(_ZTI8S7856C30),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7856C30),166, //virtual function table var
  18, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7856C30),159, //virtual table table var
  33, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names28,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7856C2  : virtual S7856C3 {
  int s7856c2f0;
  ::S7856C30 s7856c2f1;
  virtual  ~S7856C2(); // _ZN7S7856C2D2Ev
  S7856C2(); // tgen
};
//SIG(-1 S7856C2) C1{ VBC2{ VBC3{ VBC4{ VBC5{ VBC6{ VBC7{ m} VBC8{ m} VBC9{ BC7 VBC10{ VBC7 BC8 VBC11{ m}} VBC8} BC11 BC12{ BC8 VBC7 VBC11 BC10 VBC9 vd} vd} VBC13{ BC11 BC8 BC10 Fi} VBC12 vd Fi[2]} VBC14{ m} VBC15{ VBC10 VBC16{ VBC8} VBC13 BC11 VBC6 vd Fi} BC17{ VBC12 BC13 BC9 BC11 vd} vd} BC7 BC9 BC18{ BC14 VBC7 BC5 VBC17 vd v1} vd} VBC19{ BC16 VBC11 BC4 BC20{ BC8 BC16 vd} vd} BC21{ BC9 VBC5 BC4 VBC3 vd Fc} VBC22{ VBC13 VBC23{ m} BC24{ BC12 BC25{ VBC8} BC3 VBC26{ BC15 BC27{ BC6 VBC13 VBC28{ VBC6 VBC4 vd} BC20 BC23 Fi} VBC23} BC4} BC12 VBC21 FC12 Fi:26} vd Fp} vd Fi FC29{ VBC17 BC30{ VBC10 BC21 Fp} VBC23 vd}}


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

static void Test_S7856C2()
{
  extern Class_Descriptor cd_S7856C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(91,96)];
    init_test(&cd_S7856C2, buf);
    S7856C2 *dp, &lv = *(dp=new (buf) S7856C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(720,380), "sizeof(S7856C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7856C2)");
    /*is_ambiguous_... S7856C2::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C7*), 0, "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C11 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*), 0, "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*)(S7856C7*), 0, "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*)(S7856C7*), 0, "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C14 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*), 0, "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*), 0, "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*), 0, "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C5 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), 0, "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C4 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C19*)(S7856C4*), 0, "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C18 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*), 0, "S7856C2");
    check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C20*), 0, "S7856C2");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C3*), 0, "S7856C2");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*)(S7856C25*)(S7856C23*), 0, "S7856C2");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*)(S7856C25*)(S7856C23*), 0, "S7856C2");
    /*is_ambiguous_... S7856C19::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C19*)(S7856C4*)(S7856C25*)(S7856C23*), 0, "S7856C2");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C7*)(S7856C28*)(S7856C27*), 0, "S7856C2");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), 0, "S7856C2");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), 0, "S7856C2");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), 0, "S7856C2");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*)(S7856C23*), 0, "S7856C2");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*)(S7856C23*), 0, "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C22 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), 0, "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C7*), 0, "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*), 0, "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C17_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C17_nt*), 0, "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*)(S7856C5*), 0, "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C4*), 0, "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*), 0, "S7856C2");
    /*is_ambiguous_... S7856C20::S7856C17_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C17_nt*)(S7856C20*), 0, "S7856C2");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C20*), 0, "S7856C2");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C17_nt*)(S7856C21*)(S7856C20*), 0, "S7856C2");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C22*)(S7856C3*), 0, "S7856C2");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C3*), 0, "S7856C2");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C26*)(S7856C25*)(S7856C23*), 0, "S7856C2");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C4*)(S7856C25*)(S7856C23*), 0, "S7856C2");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C7*)(S7856C28*)(S7856C27*), 0, "S7856C2");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C17_nt*)(S7856C21*)(S7856C28*)(S7856C27*), 0, "S7856C2");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), 0, "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C22*), 0, "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C22*), 0, "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*), ABISELECT(336,180), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*), ABISELECT(336,180), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*), 0, "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*)(S7856C7*), 0, "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*)(S7856C7*), 0, "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*), 0, "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*), 0, "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*), 0, "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), 0, "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*), 0, "S7856C2");
    /*is_ambiguous_... S7856C20::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C20*), 0, "S7856C2");
    check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C20*), 0, "S7856C2");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C3*), 0, "S7856C2");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*)(S7856C25*)(S7856C23*), 0, "S7856C2");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*)(S7856C25*)(S7856C23*), 0, "S7856C2");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), 0, "S7856C2");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), 0, "S7856C2");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), 0, "S7856C2");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*)(S7856C23*), 0, "S7856C2");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*)(S7856C23*), 0, "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), 0, "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*), ABISELECT(336,180), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C16*), ABISELECT(336,180), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(336,180), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C4*), ABISELECT(336,180), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*), ABISELECT(336,180), "S7856C2");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C20*), ABISELECT(336,180), "S7856C2");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C22*)(S7856C3*), ABISELECT(336,180), "S7856C2");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C3*), ABISELECT(336,180), "S7856C2");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(336,180), "S7856C2");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C16*)(S7856C27*), ABISELECT(336,180), "S7856C2");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(336,180), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C22*), ABISELECT(336,180), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(336,180), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C7*), ABISELECT(336,180), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*)(S7856C7*), ABISELECT(336,180), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*), ABISELECT(336,180), "S7856C2");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*)(S7856C25*)(S7856C23*), ABISELECT(336,180), "S7856C2");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(336,180), "S7856C2");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(336,180), "S7856C2");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*)(S7856C23*), ABISELECT(336,180), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C7*), ABISELECT(352,192), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*)(S7856C7*), ABISELECT(360,196), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(352,192), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(352,192), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C7*), ABISELECT(352,192), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C6 */ AMB_check_base_class_offset(lv, (S7856C7*)(S7856C6*), ABISELECT(352,192), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C7*)(S7856C16*), ABISELECT(352,192), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C7*)(S7856C6*)(S7856C19*)(S7856C4*), ABISELECT(352,192), "S7856C2");
    check_base_class_offset(lv, (S7856C7*)(S7856C6*)(S7856C19*)(S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(352,192), "S7856C2");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C7*)(S7856C16*)(S7856C27*), ABISELECT(352,192), "S7856C2");
    check_base_class_offset(lv, (S7856C7*)(S7856C29*), ABISELECT(352,192), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*), ABISELECT(368,200), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*), ABISELECT(376,204), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*), ABISELECT(368,200), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*), ABISELECT(368,200), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C6 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C6*), ABISELECT(368,200), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C16*), ABISELECT(368,200), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C6*)(S7856C19*)(S7856C4*), ABISELECT(368,200), "S7856C2");
    /*is_ambiguous_... S7856C23::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C23*), ABISELECT(368,200), "S7856C2");
    check_base_class_offset(lv, (S7856C14*)(S7856C6*)(S7856C19*)(S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(368,200), "S7856C2");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C16*)(S7856C27*), ABISELECT(368,200), "S7856C2");
    /*is_ambiguous_... S7856C28::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C28*)(S7856C27*), ABISELECT(368,200), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*), ABISELECT(392,212), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*), ABISELECT(384,208), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*), ABISELECT(384,208), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C6 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C6*), ABISELECT(384,208), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C18*)(S7856C5*), ABISELECT(384,208), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C6*)(S7856C19*)(S7856C4*), ABISELECT(384,208), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C18*), ABISELECT(384,208), "S7856C2");
    check_base_class_offset(lv, (S7856C13*)(S7856C18*)(S7856C5*)(S7856C20*), ABISELECT(384,208), "S7856C2");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C3*), ABISELECT(384,208), "S7856C2");
    /*is_ambiguous_... S7856C6::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C6*)(S7856C19*)(S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(384,208), "S7856C2");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(384,208), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(384,208), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C6*)(S7856C5*), ABISELECT(336,180), "S7856C2");
    check_base_class_offset(lv, (S7856C6*)(S7856C5*)(S7856C20*), ABISELECT(336,180), "S7856C2");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C6*)(S7856C22*)(S7856C3*), ABISELECT(336,180), "S7856C2");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C6*)(S7856C5*)(S7856C22*)(S7856C3*), ABISELECT(336,180), "S7856C2");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C6*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(336,180), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C6*)(S7856C22*), ABISELECT(336,180), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C6*)(S7856C5*)(S7856C22*), ABISELECT(336,180), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7856C5*), 0, "S7856C2");
    check_base_class_offset(lv, (S7856C15*)(S7856C5*)(S7856C20*), 0, "S7856C2");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7856C5*)(S7856C22*)(S7856C3*), 0, "S7856C2");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7856C5*)(S7856C25*)(S7856C23*), 0, "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7856C5*)(S7856C22*), 0, "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C17_nt*)(S7856C16*), ABISELECT(400,216), "S7856C2");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C17_nt*)(S7856C16*)(S7856C27*), ABISELECT(400,216), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C16*), ABISELECT(400,216), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C16*)(S7856C5*), ABISELECT(400,216), "S7856C2");
    check_base_class_offset(lv, (S7856C16*)(S7856C5*)(S7856C20*), ABISELECT(400,216), "S7856C2");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C16*)(S7856C5*)(S7856C22*)(S7856C3*), ABISELECT(400,216), "S7856C2");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C16*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(400,216), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C16*)(S7856C5*)(S7856C22*), ABISELECT(400,216), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(304,164), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(312,168), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(304,164), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(304,164), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(304,164), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C5 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(320,172), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(320,172), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*)(S7856C5*), ABISELECT(328,176), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C18*)(S7856C5*), ABISELECT(304,164), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C5*)(S7856C4*), ABISELECT(304,164), "S7856C2");
    check_base_class_offset(lv, (S7856C5*)(S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(304,164), "S7856C2");
    check_base_class_offset(lv, (S7856C5*)(S7856C29*), ABISELECT(304,164), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C4 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C4*), ABISELECT(288,152), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C4 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C4*), ABISELECT(280,148), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C4*), ABISELECT(280,148), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7856C19*)(S7856C4*), ABISELECT(288,152), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C6*)(S7856C19*)(S7856C4*), ABISELECT(288,152), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*), ABISELECT(416,224), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*), ABISELECT(424,228), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*), ABISELECT(416,224), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*), ABISELECT(416,224), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C18*), ABISELECT(416,224), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C18 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*), ABISELECT(432,232), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*), ABISELECT(432,232), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*), ABISELECT(440,236), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C18*)(S7856C19*)(S7856C4*), ABISELECT(416,224), "S7856C2");
    check_base_class_offset(lv, (S7856C18*)(S7856C19*)(S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(416,224), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C19*)(S7856C4*), ABISELECT(288,152), "S7856C2");
    /*is_ambiguous_... S7856C3::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C4*)(S7856C3*), ABISELECT(280,148), "S7856C2");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C4*)(S7856C22*)(S7856C3*), ABISELECT(280,148), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C4*)(S7856C22*), ABISELECT(280,148), "S7856C2");
    /*is_ambiguous_... S7856C20::S7856C17_nt */ AMB_check_base_class_offset(lv, (S7856C17_nt*)(S7856C20*), ABISELECT(448,240), "S7856C2");
    /*is_ambiguous_... S7856C14::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C20*), ABISELECT(456,244), "S7856C2");
    /*is_ambiguous_... S7856C14::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C20*), ABISELECT(464,248), "S7856C2");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C20*), ABISELECT(456,244), "S7856C2");
    check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C20*), ABISELECT(456,244), "S7856C2");
    check_base_class_offset(lv, (S7856C14*)(S7856C18*)(S7856C5*)(S7856C20*), ABISELECT(456,244), "S7856C2");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C20*), ABISELECT(472,252), "S7856C2");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*)(S7856C5*)(S7856C20*), ABISELECT(472,252), "S7856C2");
    /*is_ambiguous_... S7856C18::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*)(S7856C5*)(S7856C20*), ABISELECT(480,256), "S7856C2");
    check_base_class_offset(lv, (S7856C18*)(S7856C5*)(S7856C20*), ABISELECT(456,244), "S7856C2");
    check_base_class_offset(lv, (S7856C5*)(S7856C20*), ABISELECT(456,244), "S7856C2");
    /*is_ambiguous_... S7856C21::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C21*)(S7856C20*), ABISELECT(488,260), "S7856C2");
    check_base_class_offset(lv, (S7856C17_nt*)(S7856C21*)(S7856C20*), ABISELECT(488,260), "S7856C2");
    check_base_class_offset(lv, (S7856C21*)(S7856C20*), ABISELECT(488,260), "S7856C2");
    check_base_class_offset(lv, (S7856C20*)(S7856C3*), ABISELECT(448,240), "S7856C2");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C22*)(S7856C3*), ABISELECT(232,124), "S7856C2");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C22*)(S7856C3*), ABISELECT(232,124), "S7856C2");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C3*), ABISELECT(240,128), "S7856C2");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C3*), ABISELECT(248,132), "S7856C2");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C3*), ABISELECT(240,128), "S7856C2");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C3*), ABISELECT(240,128), "S7856C2");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C3*), ABISELECT(240,128), "S7856C2");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C3*), ABISELECT(256,136), "S7856C2");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C3*), ABISELECT(256,136), "S7856C2");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C3*), ABISELECT(264,140), "S7856C2");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C18*)(S7856C5*)(S7856C22*)(S7856C3*), ABISELECT(240,128), "S7856C2");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C5*)(S7856C22*)(S7856C3*), ABISELECT(240,128), "S7856C2");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C22*)(S7856C3*), ABISELECT(232,124), "S7856C2");
    /*is_ambiguous_... S7856C23::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7856C23*), 0, "S7856C2");
    /*is_ambiguous_... S7856C27::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7856C27*), 0, "S7856C2");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*)(S7856C25*)(S7856C23*), ABISELECT(504,268), "S7856C2");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*)(S7856C25*)(S7856C23*), ABISELECT(496,264), "S7856C2");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*)(S7856C25*)(S7856C23*), ABISELECT(496,264), "S7856C2");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C25*)(S7856C23*), ABISELECT(496,264), "S7856C2");
    check_base_class_offset(lv, (S7856C26*)(S7856C25*)(S7856C23*), ABISELECT(512,272), "S7856C2");
    /*is_ambiguous_... S7856C4::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(528,280), "S7856C2");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(520,276), "S7856C2");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(520,276), "S7856C2");
    check_base_class_offset(lv, (S7856C15*)(S7856C19*)(S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(528,280), "S7856C2");
    check_base_class_offset(lv, (S7856C6*)(S7856C19*)(S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(528,280), "S7856C2");
    check_base_class_offset(lv, (S7856C19*)(S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(528,280), "S7856C2");
    check_base_class_offset(lv, (S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(520,276), "S7856C2");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C16*)(S7856C27*), ABISELECT(632,336), "S7856C2");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C16*)(S7856C27*), ABISELECT(632,336), "S7856C2");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(648,344), "S7856C2");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(656,348), "S7856C2");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(648,344), "S7856C2");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(648,344), "S7856C2");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(648,344), "S7856C2");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(648,344), "S7856C2");
    check_base_class_offset(lv, (S7856C29*)(S7856C28*)(S7856C27*), 0, "S7856C2");
    /*is_ambiguous_... S7856C21::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C21*)(S7856C28*)(S7856C27*), ABISELECT(664,352), "S7856C2");
    check_base_class_offset(lv, (S7856C17_nt*)(S7856C21*)(S7856C28*)(S7856C27*), ABISELECT(664,352), "S7856C2");
    check_base_class_offset(lv, (S7856C21*)(S7856C28*)(S7856C27*), ABISELECT(664,352), "S7856C2");
    check_base_class_offset(lv, (S7856C24*)(S7856C28*)(S7856C27*), ABISELECT(648,344), "S7856C2");
    check_base_class_offset(lv, (S7856C28*)(S7856C27*), ABISELECT(648,344), "S7856C2");
    check_base_class_offset(lv, (S7856C27*)(S7856C25*)(S7856C23*), ABISELECT(632,336), "S7856C2");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(544,292), "S7856C2");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(552,296), "S7856C2");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(544,292), "S7856C2");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(544,292), "S7856C2");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(544,292), "S7856C2");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(560,300), "S7856C2");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(560,300), "S7856C2");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(568,304), "S7856C2");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(544,292), "S7856C2");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(544,292), "S7856C2");
    check_base_class_offset(lv, (S7856C25*)(S7856C23*), ABISELECT(496,264), "S7856C2");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*)(S7856C23*), ABISELECT(584,312), "S7856C2");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*)(S7856C23*), ABISELECT(576,308), "S7856C2");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*)(S7856C23*), ABISELECT(576,308), "S7856C2");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C23*), ABISELECT(576,308), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C22 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C22*), ABISELECT(680,360), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C22*), ABISELECT(680,360), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(688,364), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(696,368), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(688,364), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(688,364), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(688,364), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C22 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(704,372), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(704,372), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(712,376), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(688,364), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C5*)(S7856C22*), ABISELECT(688,364), "S7856C2");
    check_base_class_offset(lv, (S7856C22*)(S7856C23*), ABISELECT(680,360), "S7856C2");
    check_base_class_offset(lv, (S7856C23*)(S7856C3*), ABISELECT(496,264), "S7856C2");
    check_base_class_offset(lv, (S7856C3*), ABISELECT(232,124), "S7856C2");
    check_field_offset(lv, s7856c2f0, ABISELECT(8,4), "S7856C2.s7856c2f0");
    check_field_offset(lv, s7856c2f1, ABISELECT(16,8), "S7856C2.s7856c2f1");
    test_class_info(&lv, &cd_S7856C2);
    dp->~S7856C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7856C2(Test_S7856C2, "S7856C2", ABISELECT(720,380));

#else // __cplusplus

extern void _ZN7S7856C2C1Ev();
extern void _ZN7S7856C2D2Ev();
Name_Map name_map_S7856C2[] = {
  NSPAIR(_ZN7S7856C2C1Ev),
  NSPAIR(_ZN7S7856C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C7;
extern VTBL_ENTRY _ZTI7S7856C7[];
extern  VTBL_ENTRY _ZTV7S7856C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C7[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C6;
extern VTBL_ENTRY _ZTI7S7856C6[];
extern  VTBL_ENTRY _ZTV7S7856C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C6[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C17_nt;
extern VTBL_ENTRY _ZTI11S7856C17_nt[];
extern  VTBL_ENTRY _ZTV11S7856C17_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S7856C17_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C16;
extern VTBL_ENTRY _ZTI8S7856C16[];
extern  VTBL_ENTRY _ZTV8S7856C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C16[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C5;
extern VTBL_ENTRY _ZTI7S7856C5[];
extern  VTBL_ENTRY _ZTV7S7856C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C5[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C6;
extern VTBL_ENTRY _ZTI7S7856C6[];
extern  VTBL_ENTRY _ZTV7S7856C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C6[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C19;
extern VTBL_ENTRY _ZTI8S7856C19[];
extern  VTBL_ENTRY _ZTV8S7856C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C19[];
extern Class_Descriptor cd_S7856C4;
extern VTBL_ENTRY _ZTI7S7856C4[];
extern  VTBL_ENTRY _ZTV7S7856C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C4[];
extern Class_Descriptor cd_S7856C17_nt;
extern VTBL_ENTRY _ZTI11S7856C17_nt[];
extern  VTBL_ENTRY _ZTV11S7856C17_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S7856C17_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C5;
extern VTBL_ENTRY _ZTI7S7856C5[];
extern  VTBL_ENTRY _ZTV7S7856C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C5[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C17_nt;
extern VTBL_ENTRY _ZTI11S7856C17_nt[];
extern  VTBL_ENTRY _ZTV11S7856C17_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S7856C17_nt[];
extern Class_Descriptor cd_S7856C21;
extern VTBL_ENTRY _ZTI8S7856C21[];
extern  VTBL_ENTRY _ZTV8S7856C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C21[];
extern Class_Descriptor cd_S7856C20;
extern VTBL_ENTRY _ZTI8S7856C20[];
extern  VTBL_ENTRY _ZTV8S7856C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C20[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C5;
extern VTBL_ENTRY _ZTI7S7856C5[];
extern  VTBL_ENTRY _ZTV7S7856C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C5[];
extern Class_Descriptor cd_S7856C22;
extern VTBL_ENTRY _ZTI8S7856C22[];
extern  VTBL_ENTRY _ZTV8S7856C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C22[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C26;
extern VTBL_ENTRY _ZTI8S7856C26[];
extern  VTBL_ENTRY _ZTV8S7856C26[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C26[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C6;
extern VTBL_ENTRY _ZTI7S7856C6[];
extern  VTBL_ENTRY _ZTV7S7856C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C6[];
extern Class_Descriptor cd_S7856C19;
extern VTBL_ENTRY _ZTI8S7856C19[];
extern  VTBL_ENTRY _ZTV8S7856C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C19[];
extern Class_Descriptor cd_S7856C4;
extern VTBL_ENTRY _ZTI7S7856C4[];
extern  VTBL_ENTRY _ZTV7S7856C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C4[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C16;
extern VTBL_ENTRY _ZTI8S7856C16[];
extern  VTBL_ENTRY _ZTV8S7856C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C16[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C7;
extern VTBL_ENTRY _ZTI7S7856C7[];
extern  VTBL_ENTRY _ZTV7S7856C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C7[];
extern Class_Descriptor cd_S7856C29;
extern VTBL_ENTRY _ZTI8S7856C29[];
extern  VTBL_ENTRY _ZTV8S7856C29[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C29[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C17_nt;
extern VTBL_ENTRY _ZTI11S7856C17_nt[];
extern  VTBL_ENTRY _ZTV11S7856C17_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S7856C17_nt[];
extern Class_Descriptor cd_S7856C21;
extern VTBL_ENTRY _ZTI8S7856C21[];
extern  VTBL_ENTRY _ZTV8S7856C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C21[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C28;
extern VTBL_ENTRY _ZTI8S7856C28[];
extern  VTBL_ENTRY _ZTV8S7856C28[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C28[];
extern Class_Descriptor cd_S7856C27;
extern VTBL_ENTRY _ZTI8S7856C27[];
extern  VTBL_ENTRY _ZTV8S7856C27[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C27[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C5;
extern VTBL_ENTRY _ZTI7S7856C5[];
extern  VTBL_ENTRY _ZTV7S7856C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C5[];
extern Class_Descriptor cd_S7856C25;
extern VTBL_ENTRY _ZTI8S7856C25[];
extern  VTBL_ENTRY _ZTV8S7856C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C25[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C5;
extern VTBL_ENTRY _ZTI7S7856C5[];
extern  VTBL_ENTRY _ZTV7S7856C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C5[];
extern Class_Descriptor cd_S7856C22;
extern VTBL_ENTRY _ZTI8S7856C22[];
extern  VTBL_ENTRY _ZTV8S7856C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C22[];
extern Class_Descriptor cd_S7856C23;
extern VTBL_ENTRY _ZTI8S7856C23[];
extern  VTBL_ENTRY _ZTV8S7856C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C23[];
extern Class_Descriptor cd_S7856C3;
extern VTBL_ENTRY _ZTI7S7856C3[];
extern  VTBL_ENTRY _ZTV7S7856C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C3[];
static Base_Class bases_S7856C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S77C13_nt,    ABISELECT(336,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(336,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C11,    ABISELECT(336,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    174, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C10,    ABISELECT(336,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    172, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(352,192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(360,196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(352,192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(352,192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    167, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(352,192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    166, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C7,    ABISELECT(352,192), //bcp->offset
    145, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    165, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(368,200), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(376,204), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(368,200), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(368,200), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    176, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(368,200), //bcp->offset
    155, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    175, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(392,212), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(384,208), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(384,208), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    178, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(384,208), //bcp->offset
    159, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    177, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C6,    ABISELECT(336,180), //bcp->offset
    132, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    159, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S7856C17_nt,    ABISELECT(400,216), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    187, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(400,216), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7856C16,    ABISELECT(400,216), //bcp->offset
    169, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    181, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(304,164), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(312,168), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(304,164), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(304,164), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    143, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(304,164), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    142, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(320,172), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(320,172), //bcp->offset
    126, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    144, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(328,176), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(304,164), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    141, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S7856C5,    ABISELECT(304,164), //bcp->offset
    109, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    140, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    52, //immediately_derived
  0, 1},
  {&cd_S77C13_nt,    ABISELECT(288,152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    52, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(280,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(280,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    111, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    52, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(288,152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S7856C6,    ABISELECT(288,152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    114, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(416,224), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(424,228), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(416,224), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(416,224), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    190, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(416,224), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    189, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(432,232), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(432,232), //bcp->offset
    193, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    191, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(440,236), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(416,224), //bcp->offset
    182, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    188, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    51, //immediately_derived
  0, 1},
  {&cd_S7856C19,    ABISELECT(288,152), //bcp->offset
    95, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    113, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    52, //immediately_derived
  0, 0},
  {&cd_S7856C4,    ABISELECT(280,148), //bcp->offset
    75, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    110, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    80, //immediately_derived
  0, 1},
  {&cd_S7856C17_nt,    ABISELECT(448,240), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    198, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    67, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(456,244), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(464,248), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(456,244), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(456,244), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    202, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(456,244), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    201, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(472,252), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    60, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(472,252), //bcp->offset
    232, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    203, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(480,256), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(456,244), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    200, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    63, //immediately_derived
  0, 0},
  {&cd_S7856C5,    ABISELECT(456,244), //bcp->offset
    216, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    199, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    67, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(488,260), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    66, //immediately_derived
  0, 0},
  {&cd_S7856C17_nt,    ABISELECT(488,260), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    219, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    66, //immediately_derived
  0, 0},
  {&cd_S7856C21,    ABISELECT(488,260), //bcp->offset
    238, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    218, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    67, //immediately_derived
  0, 0},
  {&cd_S7856C20,    ABISELECT(448,240), //bcp->offset
    199, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    197, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    138, //immediately_derived
  0, 1},
  {&cd_S77C13_nt,    ABISELECT(232,124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    69, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(232,124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    67, //init_seq
    80, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(240,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    74, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(248,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    74, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(240,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    73, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(240,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    68, //init_seq
    74, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(240,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    69, //init_seq
    78, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(256,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    76, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(256,136), //bcp->offset
    69, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    70, //init_seq
    78, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(264,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    78, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(240,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    71, //init_seq
    79, //immediately_derived
  0, 0},
  {&cd_S7856C5,    ABISELECT(240,128), //bcp->offset
    53, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    72, //init_seq
    80, //immediately_derived
  0, 0},
  {&cd_S7856C22,    ABISELECT(232,124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    73, //init_seq
    138, //immediately_derived
  0, 0},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    108, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(504,268), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    85, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(496,264), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    84, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(496,264), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    234, //bcp->base_subarray_index_in_construction_vtbl_array
    51, //init_seq
    85, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(496,264), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    233, //bcp->base_subarray_index_in_construction_vtbl_array
    52, //init_seq
    119, //immediately_derived
  0, 0},
  {&cd_S7856C26,    ABISELECT(512,272), //bcp->offset
    268, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    237, //bcp->base_subarray_index_in_construction_vtbl_array
    53, //init_seq
    119, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(528,280), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    93, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(520,276), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    89, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(520,276), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    239, //bcp->base_subarray_index_in_construction_vtbl_array
    54, //init_seq
    93, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(528,280), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    92, //immediately_derived
  0, 0},
  {&cd_S7856C6,    ABISELECT(528,280), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    242, //bcp->base_subarray_index_in_construction_vtbl_array
    55, //init_seq
    92, //immediately_derived
  0, 0},
  {&cd_S7856C19,    ABISELECT(528,280), //bcp->offset
    289, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    241, //bcp->base_subarray_index_in_construction_vtbl_array
    56, //init_seq
    93, //immediately_derived
  0, 0},
  {&cd_S7856C4,    ABISELECT(520,276), //bcp->offset
    271, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    238, //bcp->base_subarray_index_in_construction_vtbl_array
    57, //init_seq
    119, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(632,336), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    95, //immediately_derived
  0, 0},
  {&cd_S7856C16,    ABISELECT(632,336), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    340, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    108, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(648,344), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    101, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(656,348), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    100, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(648,344), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    99, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(648,344), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    349, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    100, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(648,344), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    348, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    101, //immediately_derived
  0, 0},
  {&cd_S7856C7,    ABISELECT(648,344), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    347, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    107, //immediately_derived
  0, 0},
  {&cd_S7856C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    381, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    107, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(664,352), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    105, //immediately_derived
  0, 0},
  {&cd_S7856C17_nt,    ABISELECT(664,352), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    355, //bcp->base_subarray_index_in_construction_vtbl_array
    40, //init_seq
    105, //immediately_derived
  0, 0},
  {&cd_S7856C21,    ABISELECT(664,352), //bcp->offset
    372, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    354, //bcp->base_subarray_index_in_construction_vtbl_array
    41, //init_seq
    107, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(648,344), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    107, //immediately_derived
  0, 0},
  {&cd_S7856C28,    ABISELECT(648,344), //bcp->offset
    354, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    346, //bcp->base_subarray_index_in_construction_vtbl_array
    42, //init_seq
    108, //immediately_derived
  0, 0},
  {&cd_S7856C27,    ABISELECT(632,336), //bcp->offset
    334, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    339, //bcp->base_subarray_index_in_construction_vtbl_array
    43, //init_seq
    119, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(544,292), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    113, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(552,296), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    113, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(544,292), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    112, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(544,292), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    271, //bcp->base_subarray_index_in_construction_vtbl_array
    58, //init_seq
    113, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(544,292), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    270, //bcp->base_subarray_index_in_construction_vtbl_array
    59, //init_seq
    117, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(560,300), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    115, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(560,300), //bcp->offset
    319, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    272, //bcp->base_subarray_index_in_construction_vtbl_array
    60, //init_seq
    117, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(568,304), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    117, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(544,292), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    269, //bcp->base_subarray_index_in_construction_vtbl_array
    61, //init_seq
    118, //immediately_derived
  0, 0},
  {&cd_S7856C5,    ABISELECT(544,292), //bcp->offset
    303, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    268, //bcp->base_subarray_index_in_construction_vtbl_array
    62, //init_seq
    119, //immediately_derived
  0, 0},
  {&cd_S7856C25,    ABISELECT(496,264), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    19, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    232, //bcp->base_subarray_index_in_construction_vtbl_array
    63, //init_seq
    137, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(584,312), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    123, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(576,308), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    122, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(576,308), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    309, //bcp->base_subarray_index_in_construction_vtbl_array
    64, //init_seq
    123, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(576,308), //bcp->offset
    325, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    308, //bcp->base_subarray_index_in_construction_vtbl_array
    65, //init_seq
    137, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(680,360), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    125, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(680,360), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    393, //bcp->base_subarray_index_in_construction_vtbl_array
    44, //init_seq
    136, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(688,364), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    130, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(696,368), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    130, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(688,364), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    129, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(688,364), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    398, //bcp->base_subarray_index_in_construction_vtbl_array
    45, //init_seq
    130, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(688,364), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    397, //bcp->base_subarray_index_in_construction_vtbl_array
    46, //init_seq
    134, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(704,372), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    132, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(704,372), //bcp->offset
    413, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    399, //bcp->base_subarray_index_in_construction_vtbl_array
    47, //init_seq
    134, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(712,376), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    134, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(688,364), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    396, //bcp->base_subarray_index_in_construction_vtbl_array
    48, //init_seq
    135, //immediately_derived
  0, 0},
  {&cd_S7856C5,    ABISELECT(688,364), //bcp->offset
    397, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    395, //bcp->base_subarray_index_in_construction_vtbl_array
    49, //init_seq
    136, //immediately_derived
  0, 0},
  {&cd_S7856C22,    ABISELECT(680,360), //bcp->offset
    377, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    392, //bcp->base_subarray_index_in_construction_vtbl_array
    50, //init_seq
    137, //immediately_derived
  0, 1},
  {&cd_S7856C23,    ABISELECT(496,264), //bcp->offset
    243, //bcp->virtual_function_table_offset
    23, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    231, //bcp->base_subarray_index_in_construction_vtbl_array
    66, //init_seq
    138, //immediately_derived
  0, 1},
  {&cd_S7856C3,    ABISELECT(232,124), //bcp->offset
    27, //bcp->virtual_function_table_offset
    24, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    74, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7856C2[];
extern void _ZN7S7856C2D1Ev();
extern void _ZN7S7856C2D0Ev();
extern void ABISELECT(_ZTv0_n192_N7S7856C2D1Ev,_ZTv0_n96_N7S7856C2D1Ev)();
extern void ABISELECT(_ZThn232_N7S7856C2D1Ev,_ZThn124_N7S7856C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n192_N7S7856C2D0Ev,_ZTv0_n96_N7S7856C2D0Ev)();
extern void ABISELECT(_ZThn232_N7S7856C2D0Ev,_ZThn124_N7S7856C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn8_n192_N7S7856C2D1Ev,_ZTvn4_n96_N7S7856C2D1Ev)();
extern void ABISELECT(_ZTvn8_n192_N7S7856C2D0Ev,_ZTvn4_n96_N7S7856C2D0Ev)();
extern void ABISELECT(_ZTv0_n136_N7S7856C2D1Ev,_ZTv0_n68_N7S7856C2D1Ev)();
extern void ABISELECT(_ZThn280_N7S7856C2D1Ev,_ZThn148_N7S7856C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N7S7856C2D0Ev,_ZTv0_n68_N7S7856C2D0Ev)();
extern void ABISELECT(_ZThn280_N7S7856C2D0Ev,_ZThn148_N7S7856C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn8_n136_N7S7856C2D1Ev,_ZTvn4_n68_N7S7856C2D1Ev)();
extern void ABISELECT(_ZTvn8_n136_N7S7856C2D0Ev,_ZTvn4_n68_N7S7856C2D0Ev)();
extern void _ZN8S7856C192v1Ev();
extern void ABISELECT(_ZTv0_n120_N7S7856C2D1Ev,_ZTv0_n60_N7S7856C2D1Ev)();
extern void ABISELECT(_ZThn304_N7S7856C2D1Ev,_ZThn164_N7S7856C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S7856C2D0Ev,_ZTv0_n60_N7S7856C2D0Ev)();
extern void ABISELECT(_ZThn304_N7S7856C2D0Ev,_ZThn164_N7S7856C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C2D1Ev,_ZTv0_n44_N7S7856C2D1Ev)();
extern void ABISELECT(_ZThn336_N7S7856C2D1Ev,_ZThn180_N7S7856C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C2D0Ev,_ZTv0_n44_N7S7856C2D0Ev)();
extern void ABISELECT(_ZThn336_N7S7856C2D0Ev,_ZThn180_N7S7856C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C2D1Ev,_ZTv0_n32_N7S7856C2D1Ev)();
extern void ABISELECT(_ZThn352_N7S7856C2D1Ev,_ZThn192_N7S7856C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C2D0Ev,_ZTv0_n32_N7S7856C2D0Ev)();
extern void ABISELECT(_ZThn352_N7S7856C2D0Ev,_ZThn192_N7S7856C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C2D1Ev,_ZTv0_n32_N7S7856C2D1Ev)();
extern void ABISELECT(_ZThn384_N7S7856C2D1Ev,_ZThn208_N7S7856C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C2D0Ev,_ZTv0_n32_N7S7856C2D0Ev)();
extern void ABISELECT(_ZThn384_N7S7856C2D0Ev,_ZThn208_N7S7856C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C2D1Ev,_ZTv0_n44_N7S7856C2D1Ev)();
extern void ABISELECT(_ZThn400_N7S7856C2D1Ev,_ZThn216_N7S7856C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C2D0Ev,_ZTv0_n44_N7S7856C2D0Ev)();
extern void ABISELECT(_ZThn400_N7S7856C2D0Ev,_ZThn216_N7S7856C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7856C2D1Ev,_ZTv0_n36_N7S7856C2D1Ev)();
extern void ABISELECT(_ZThn416_N7S7856C2D1Ev,_ZThn224_N7S7856C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7856C2D0Ev,_ZTv0_n36_N7S7856C2D0Ev)();
extern void ABISELECT(_ZThn416_N7S7856C2D0Ev,_ZThn224_N7S7856C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S7856C2D1Ev,_ZTv0_n60_N7S7856C2D1Ev)();
extern void ABISELECT(_ZThn448_N7S7856C2D1Ev,_ZThn240_N7S7856C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S7856C2D0Ev,_ZTv0_n60_N7S7856C2D0Ev)();
extern void ABISELECT(_ZThn448_N7S7856C2D0Ev,_ZThn240_N7S7856C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn8_n120_N7S7856C2D1Ev,_ZTvn4_n60_N7S7856C2D1Ev)();
extern void ABISELECT(_ZTvn8_n120_N7S7856C2D0Ev,_ZTvn4_n60_N7S7856C2D0Ev)();
extern void ABISELECT(_ZTvn40_n120_N7S7856C2D1Ev,_ZTvn20_n60_N7S7856C2D1Ev)();
extern void ABISELECT(_ZTvn40_n120_N7S7856C2D0Ev,_ZTvn20_n60_N7S7856C2D0Ev)();
extern void ABISELECT(_ZTv0_n176_N7S7856C2D1Ev,_ZTv0_n88_N7S7856C2D1Ev)();
extern void ABISELECT(_ZThn496_N7S7856C2D1Ev,_ZThn264_N7S7856C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n176_N7S7856C2D0Ev,_ZTv0_n88_N7S7856C2D0Ev)();
extern void ABISELECT(_ZThn496_N7S7856C2D0Ev,_ZThn264_N7S7856C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn24_n176_N7S7856C2D1Ev,_ZTvn12_n88_N7S7856C2D1Ev)();
extern void ABISELECT(_ZTvn24_n176_N7S7856C2D0Ev,_ZTvn12_n88_N7S7856C2D0Ev)();
extern void ABISELECT(_ZTvn32_n176_N7S7856C2D1Ev,_ZTvn16_n88_N7S7856C2D1Ev)();
extern void ABISELECT(_ZTvn32_n176_N7S7856C2D0Ev,_ZTvn16_n88_N7S7856C2D0Ev)();
extern void _ZN8S7856C192v1Ev();
extern void ABISELECT(_ZTvn48_n176_N7S7856C2D1Ev,_ZTvn28_n88_N7S7856C2D1Ev)();
extern void ABISELECT(_ZTvn48_n176_N7S7856C2D0Ev,_ZTvn28_n88_N7S7856C2D0Ev)();
extern void ABISELECT(_ZTvn80_n176_N7S7856C2D1Ev,_ZTvn44_n88_N7S7856C2D1Ev)();
extern void ABISELECT(_ZTvn80_n176_N7S7856C2D0Ev,_ZTvn44_n88_N7S7856C2D0Ev)();
extern void ABISELECT(_ZTv0_n144_N7S7856C2D1Ev,_ZTv0_n72_N7S7856C2D1Ev)();
extern void ABISELECT(_ZThn632_N7S7856C2D1Ev,_ZThn336_N7S7856C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N7S7856C2D0Ev,_ZTv0_n72_N7S7856C2D0Ev)();
extern void ABISELECT(_ZThn632_N7S7856C2D0Ev,_ZThn336_N7S7856C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n144_N7S7856C2D1Ev,_ZTvn8_n72_N7S7856C2D1Ev)();
extern void ABISELECT(_ZTvn16_n144_N7S7856C2D0Ev,_ZTvn8_n72_N7S7856C2D0Ev)();
extern void ABISELECT(_ZTvn32_n144_N7S7856C2D1Ev,_ZTvn16_n72_N7S7856C2D1Ev)();
extern void ABISELECT(_ZTvn32_n144_N7S7856C2D0Ev,_ZTvn16_n72_N7S7856C2D0Ev)();
extern void ABISELECT(_ZTv0_n144_N7S7856C2D1Ev,_ZTv0_n72_N7S7856C2D1Ev)();
extern void ABISELECT(_ZThn680_N7S7856C2D1Ev,_ZThn360_N7S7856C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N7S7856C2D0Ev,_ZTv0_n72_N7S7856C2D0Ev)();
extern void ABISELECT(_ZThn680_N7S7856C2D0Ev,_ZThn360_N7S7856C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn8_n144_N7S7856C2D1Ev,_ZTvn4_n72_N7S7856C2D1Ev)();
extern void ABISELECT(_ZTvn8_n144_N7S7856C2D0Ev,_ZTvn4_n72_N7S7856C2D0Ev)();
static  VTBL_ENTRY vtc_S7856C2[] = {
  ABISELECT(680,360),
  0,
  ABISELECT(632,336),
  0,
  ABISELECT(496,264),
  ABISELECT(448,240),
  ABISELECT(416,224),
  ABISELECT(280,148),
  ABISELECT(232,124),
  0,
  ABISELECT(400,216),
  ABISELECT(400,216),
  0,
  ABISELECT(384,208),
  ABISELECT(368,200),
  ABISELECT(336,180),
  ABISELECT(304,164),
  ABISELECT(336,180),
  ABISELECT(352,192),
  0,
  ABISELECT(336,180),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&_ZN7S7856C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C2D0Ev,
  ABISELECT(-232,-124),
  ABISELECT(448,236),
  ABISELECT(-232,-124),
  ABISELECT(400,212),
  ABISELECT(-232,-124),
  ABISELECT(264,140),
  ABISELECT(216,116),
  ABISELECT(184,100),
  ABISELECT(72,40),
  ABISELECT(48,24),
  ABISELECT(168,92),
  ABISELECT(168,92),
  ABISELECT(-232,-124),
  ABISELECT(152,84),
  ABISELECT(136,76),
  ABISELECT(104,56),
  ABISELECT(120,68),
  ABISELECT(104,56),
  ABISELECT(-232,-124),
  ABISELECT(104,56),
  ABISELECT(-232,-124),
  ABISELECT(-232,-124),
  ABISELECT(-232,-124),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n192_N7S7856C2D1Ev,_ZTv0_n96_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n192_N7S7856C2D0Ev,_ZTv0_n96_N7S7856C2D0Ev),
  ABISELECT(160,88),
  ABISELECT(160,88),
  ABISELECT(-240,-128),
  ABISELECT(128,72),
  ABISELECT(112,64),
  ABISELECT(96,52),
  ABISELECT(-240,-128),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(144,80),
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n192_N7S7856C2D1Ev,_ZTvn4_n96_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n192_N7S7856C2D0Ev,_ZTvn4_n96_N7S7856C2D0Ev),
  ABISELECT(-256,-136),
  ABISELECT(80,44),
  ABISELECT(-256,-136),
  ABISELECT(-256,-136),
  ABISELECT(-256,-136),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  ABISELECT(8,4),
  ABISELECT(-280,-148),
  ABISELECT(136,76),
  ABISELECT(120,68),
  ABISELECT(120,68),
  ABISELECT(-280,-148),
  ABISELECT(104,60),
  ABISELECT(88,52),
  ABISELECT(56,32),
  ABISELECT(72,44),
  ABISELECT(56,32),
  ABISELECT(24,16),
  ABISELECT(-280,-148),
  ABISELECT(56,32),
  ABISELECT(-280,-148),
  ABISELECT(-280,-148),
  ABISELECT(-280,-148),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N7S7856C2D1Ev,_ZTv0_n68_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N7S7856C2D0Ev,_ZTv0_n68_N7S7856C2D0Ev),
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(48,28),
  ABISELECT(64,40),
  ABISELECT(-288,-152),
  ABISELECT(48,28),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N7S7856C2D1Ev,_ZTvn4_n68_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N7S7856C2D0Ev,_ZTvn4_n68_N7S7856C2D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
  ABISELECT(-304,-164),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-304,-164),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-304,-164),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-304,-164),
  ABISELECT(-304,-164),
  ABISELECT(-304,-164),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C2D1Ev,_ZTv0_n60_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C2D0Ev,_ZTv0_n60_N7S7856C2D0Ev),
  ABISELECT(-320,-172),
  ABISELECT(16,8),
  ABISELECT(-320,-172),
  ABISELECT(-320,-172),
  ABISELECT(-320,-172),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  ABISELECT(-336,-180),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-336,-180),
  0,
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C2D1Ev,_ZTv0_n44_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C2D0Ev,_ZTv0_n44_N7S7856C2D0Ev),
  ABISELECT(-352,-192),
  ABISELECT(-352,-192),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-352,-192),
  ABISELECT(-352,-192),
  ABISELECT(-352,-192),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C2D1Ev,_ZTv0_n32_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C2D0Ev,_ZTv0_n32_N7S7856C2D0Ev),
  ABISELECT(-368,-200),
  ABISELECT(-368,-200),
  ABISELECT(-368,-200),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  ABISELECT(-384,-208),
  ABISELECT(-384,-208),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-384,-208),
  ABISELECT(-384,-208),
  ABISELECT(-384,-208),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C2D1Ev,_ZTv0_n32_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C2D0Ev,_ZTv0_n32_N7S7856C2D0Ev),
  ABISELECT(-400,-216),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-400,-216),
  ABISELECT(-400,-216),
  ABISELECT(-64,-36),
  ABISELECT(-400,-216),
  ABISELECT(-400,-216),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C2D1Ev,_ZTv0_n44_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C2D0Ev,_ZTv0_n44_N7S7856C2D0Ev),
  ABISELECT(-416,-224),
  ABISELECT(-416,-224),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-416,-224),
  ABISELECT(-416,-224),
  ABISELECT(-416,-224),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7856C2D1Ev,_ZTv0_n36_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7856C2D0Ev,_ZTv0_n36_N7S7856C2D0Ev),
  ABISELECT(-432,-232),
  ABISELECT(-96,-52),
  ABISELECT(-432,-232),
  ABISELECT(-432,-232),
  ABISELECT(-432,-232),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  ABISELECT(-448,-240),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-448,-240),
  ABISELECT(-64,-32),
  ABISELECT(-80,-40),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-448,-240),
  ABISELECT(-96,-48),
  ABISELECT(-112,-60),
  ABISELECT(-448,-240),
  ABISELECT(-448,-240),
  ABISELECT(-448,-240),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C2D1Ev,_ZTv0_n60_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C2D0Ev,_ZTv0_n60_N7S7856C2D0Ev),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-456,-244),
  ABISELECT(-88,-44),
  ABISELECT(-104,-52),
  ABISELECT(-120,-64),
  ABISELECT(-456,-244),
  ABISELECT(-120,-64),
  ABISELECT(-120,-64),
  ABISELECT(-72,-36),
  ABISELECT(-456,-244),
  ABISELECT(-456,-244),
  ABISELECT(-456,-244),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n120_N7S7856C2D1Ev,_ZTvn4_n60_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n120_N7S7856C2D0Ev,_ZTvn4_n60_N7S7856C2D0Ev),
  ABISELECT(-472,-252),
  ABISELECT(-136,-72),
  ABISELECT(-472,-252),
  ABISELECT(-472,-252),
  ABISELECT(-472,-252),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  ABISELECT(-488,-260),
  ABISELECT(-488,-260),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n120_N7S7856C2D1Ev,_ZTvn20_n60_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n120_N7S7856C2D0Ev,_ZTvn20_n60_N7S7856C2D0Ev),
  ABISELECT(32,16),
  ABISELECT(-496,-264),
  ABISELECT(-216,-116),
  ABISELECT(184,96),
  ABISELECT(-496,-264),
  ABISELECT(-496,-264),
  ABISELECT(136,72),
  ABISELECT(-80,-40),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-496,-264),
  ABISELECT(-112,-56),
  ABISELECT(-128,-64),
  ABISELECT(-144,-72),
  ABISELECT(-160,-84),
  ABISELECT(-192,-100),
  ABISELECT(-496,-264),
  ABISELECT(-160,-84),
  ABISELECT(-160,-84),
  ABISELECT(-496,-264),
  ABISELECT(-496,-264),
  ABISELECT(-496,-264),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n176_N7S7856C2D1Ev,_ZTv0_n88_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n176_N7S7856C2D0Ev,_ZTv0_n88_N7S7856C2D0Ev),
  ABISELECT(-512,-272),
  ABISELECT(-512,-272),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  ABISELECT(-104,-52),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-520,-276),
  ABISELECT(-136,-68),
  ABISELECT(-152,-76),
  ABISELECT(-184,-96),
  ABISELECT(-168,-84),
  ABISELECT(-184,-96),
  ABISELECT(-216,-112),
  ABISELECT(-520,-276),
  ABISELECT(-184,-96),
  ABISELECT(-520,-276),
  ABISELECT(-520,-276),
  ABISELECT(-520,-276),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n176_N7S7856C2D1Ev,_ZTvn12_n88_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n176_N7S7856C2D0Ev,_ZTvn12_n88_N7S7856C2D0Ev),
  ABISELECT(-112,-56),
  ABISELECT(-144,-72),
  ABISELECT(-160,-80),
  ABISELECT(-192,-100),
  ABISELECT(-176,-88),
  ABISELECT(-528,-280),
  ABISELECT(-192,-100),
  ABISELECT(-528,-280),
  ABISELECT(-528,-280),
  ABISELECT(-528,-280),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n176_N7S7856C2D1Ev,_ZTvn16_n88_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n176_N7S7856C2D0Ev,_ZTvn16_n88_N7S7856C2D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
  ABISELECT(-144,-76),
  ABISELECT(-144,-76),
  ABISELECT(-544,-292),
  ABISELECT(-176,-92),
  ABISELECT(-192,-100),
  ABISELECT(-208,-112),
  ABISELECT(-544,-292),
  ABISELECT(-208,-112),
  ABISELECT(-208,-112),
  ABISELECT(-160,-84),
  ABISELECT(-544,-292),
  ABISELECT(-544,-292),
  ABISELECT(-544,-292),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n176_N7S7856C2D1Ev,_ZTvn28_n88_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n176_N7S7856C2D0Ev,_ZTvn28_n88_N7S7856C2D0Ev),
  ABISELECT(-560,-300),
  ABISELECT(-224,-120),
  ABISELECT(-560,-300),
  ABISELECT(-560,-300),
  ABISELECT(-560,-300),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  ABISELECT(-576,-308),
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  ABISELECT(-576,-308),
  ABISELECT(-576,-308),
  ABISELECT(-576,-308),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n176_N7S7856C2D1Ev,_ZTvn44_n88_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n176_N7S7856C2D0Ev,_ZTvn44_n88_N7S7856C2D0Ev),
  ABISELECT(-632,-336),
  ABISELECT(-632,-336),
  ABISELECT(-232,-120),
  ABISELECT(-632,-336),
  ABISELECT(-248,-128),
  ABISELECT(-296,-156),
  ABISELECT(-328,-172),
  ABISELECT(-632,-336),
  ABISELECT(-296,-156),
  ABISELECT(-280,-144),
  ABISELECT(-264,-136),
  ABISELECT(-232,-120),
  ABISELECT(-632,-336),
  ABISELECT(-632,-336),
  ABISELECT(-296,-156),
  ABISELECT(-632,-336),
  ABISELECT(-632,-336),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N7S7856C2D1Ev,_ZTv0_n72_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N7S7856C2D0Ev,_ZTv0_n72_N7S7856C2D0Ev),
  ABISELECT(-248,-128),
  ABISELECT(-248,-128),
  ABISELECT(-648,-344),
  ABISELECT(-264,-136),
  ABISELECT(-312,-164),
  ABISELECT(-344,-180),
  ABISELECT(-296,-152),
  ABISELECT(-648,-344),
  ABISELECT(-280,-144),
  ABISELECT(-648,-344),
  ABISELECT(-312,-164),
  ABISELECT(-312,-164),
  ABISELECT(-648,-344),
  ABISELECT(-648,-344),
  ABISELECT(-648,-344),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n144_N7S7856C2D1Ev,_ZTvn8_n72_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n144_N7S7856C2D0Ev,_ZTvn8_n72_N7S7856C2D0Ev),
  ABISELECT(-664,-352),
  ABISELECT(-664,-352),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n144_N7S7856C2D1Ev,_ZTvn16_n72_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n144_N7S7856C2D0Ev,_ZTvn16_n72_N7S7856C2D0Ev),
  ABISELECT(-680,-360),
  ABISELECT(-264,-136),
  ABISELECT(-376,-196),
  ABISELECT(-400,-212),
  ABISELECT(-280,-144),
  ABISELECT(-280,-144),
  ABISELECT(-680,-360),
  ABISELECT(-296,-152),
  ABISELECT(-312,-160),
  ABISELECT(-344,-180),
  ABISELECT(-328,-168),
  ABISELECT(-344,-180),
  ABISELECT(-680,-360),
  ABISELECT(-344,-180),
  ABISELECT(-680,-360),
  ABISELECT(-680,-360),
  ABISELECT(-680,-360),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N7S7856C2D1Ev,_ZTv0_n72_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N7S7856C2D0Ev,_ZTv0_n72_N7S7856C2D0Ev),
  ABISELECT(-288,-148),
  ABISELECT(-288,-148),
  ABISELECT(-688,-364),
  ABISELECT(-320,-164),
  ABISELECT(-336,-172),
  ABISELECT(-352,-184),
  ABISELECT(-688,-364),
  ABISELECT(-352,-184),
  ABISELECT(-352,-184),
  ABISELECT(-304,-156),
  ABISELECT(-688,-364),
  ABISELECT(-688,-364),
  ABISELECT(-688,-364),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n144_N7S7856C2D1Ev,_ZTvn4_n72_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n144_N7S7856C2D0Ev,_ZTvn4_n72_N7S7856C2D0Ev),
  ABISELECT(-704,-372),
  ABISELECT(-368,-192),
  ABISELECT(-704,-372),
  ABISELECT(-704,-372),
  ABISELECT(-704,-372),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
};
extern VTBL_ENTRY _ZTV7S7856C2[];
extern void _ZN7S7856C3D1Ev();
extern void _ZN7S7856C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C3__7S7856C2[] = {
  ABISELECT(448,236),
  ABISELECT(-232,-124),
  ABISELECT(400,212),
  ABISELECT(-232,-124),
  ABISELECT(264,140),
  ABISELECT(216,116),
  ABISELECT(184,100),
  ABISELECT(72,40),
  ABISELECT(48,24),
  ABISELECT(168,92),
  ABISELECT(168,92),
  ABISELECT(-232,-124),
  ABISELECT(152,84),
  ABISELECT(136,76),
  ABISELECT(104,56),
  ABISELECT(120,68),
  ABISELECT(104,56),
  ABISELECT(-232,-124),
  ABISELECT(104,56),
  ABISELECT(-232,-124),
  ABISELECT(-232,-124),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&_ZN7S7856C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C3D0Ev,
};
extern void _ZN8S7856C22D1Ev();
extern void _ZN8S7856C22D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C227S7856C3__7S7856C2[] = {
  ABISELECT(184,100),
  ABISELECT(72,40),
  ABISELECT(48,24),
  ABISELECT(168,92),
  ABISELECT(168,92),
  ABISELECT(-232,-124),
  ABISELECT(152,84),
  ABISELECT(136,76),
  ABISELECT(104,56),
  ABISELECT(120,68),
  ABISELECT(104,56),
  ABISELECT(-232,-124),
  ABISELECT(104,56),
  ABISELECT(-232,-124),
  ABISELECT(-232,-124),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&_ZN8S7856C22D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C22D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C227S7856C3__A5__7S7856C2[] = {
  ABISELECT(-232,-124),
  ABISELECT(104,56),
  ABISELECT(-232,-124),
  ABISELECT(-232,-124),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C227S7856C3__A5__7S7856C2[] = {
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void _ZN7S7856C5D1Ev();
extern void _ZN7S7856C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C58S7856C227S7856C3__A2__7S7856C2[] = {
  ABISELECT(160,88),
  ABISELECT(160,88),
  ABISELECT(-240,-128),
  ABISELECT(128,72),
  ABISELECT(112,64),
  ABISELECT(96,52),
  ABISELECT(-240,-128),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(144,80),
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&_ZN7S7856C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C5D0Ev,
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C187S7856C58S7856C227S7856C3__A3__7S7856C2[] = {
  ABISELECT(-240,-128),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(144,80),
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C187S7856C58S7856C227S7856C3__A4__7S7856C2[] = {
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C187S7856C58S7856C227S7856C3__A7__7S7856C2[] = {
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C58S7856C227S7856C3__A6__7S7856C2[] = {
  ABISELECT(-256,-136),
  ABISELECT(80,44),
  ABISELECT(-256,-136),
  ABISELECT(-256,-136),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C187S7856C58S7856C227S7856C3__A6__7S7856C2[] = {
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZThn144_N8S7856C18D1Ev,_ZThn80_N8S7856C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
extern void ABISELECT(_ZThn144_N8S7856C18D0Ev,_ZThn80_N8S7856C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C187S7856C58S7856C227S7856C3__A3__7S7856C2[] = {
  ABISELECT(-144,-80),
  ABISELECT(-384,-208),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-384,-208),
  ABISELECT(-384,-208),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C187S7856C58S7856C227S7856C3__A3__7S7856C2[] = {
  ABISELECT(-336,-180),
  0,
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C187S7856C58S7856C227S7856C3__A3__7S7856C2[] = {
  ABISELECT(-256,-136),
  ABISELECT(80,44),
  ABISELECT(-256,-136),
  ABISELECT(-256,-136),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn96_N7S7856C5D1Ev,_ZThn52_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn96_N7S7856C5D0Ev,_ZThn52_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C58S7856C227S7856C3__A2__7S7856C2[] = {
  ABISELECT(-96,-52),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-336,-180),
  0,
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn112_N7S7856C5D1Ev,_ZThn64_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn112_N7S7856C5D0Ev,_ZThn64_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C58S7856C227S7856C3__A2__7S7856C2[] = {
  ABISELECT(-112,-64),
  ABISELECT(-352,-192),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-352,-192),
  ABISELECT(-352,-192),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C58S7856C227S7856C3__A2__7S7856C2[] = {
  ABISELECT(-368,-200),
  ABISELECT(-368,-200),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn144_N7S7856C5D1Ev,_ZThn80_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn144_N7S7856C5D0Ev,_ZThn80_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C58S7856C227S7856C3__A2__7S7856C2[] = {
  ABISELECT(-144,-80),
  ABISELECT(-384,-208),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-384,-208),
  ABISELECT(-384,-208),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn160_N7S7856C5D1Ev,_ZThn88_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn160_N7S7856C5D0Ev,_ZThn88_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C58S7856C227S7856C3__A2__7S7856C2[] = {
  ABISELECT(-160,-88),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-400,-216),
  ABISELECT(-400,-216),
  ABISELECT(-64,-36),
  ABISELECT(-400,-216),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__7S7856C58S7856C227S7856C3__A2__7S7856C2[] = {
  ABISELECT(-256,-136),
  ABISELECT(80,44),
  ABISELECT(-256,-136),
  ABISELECT(-256,-136),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn104_N8S7856C22D1Ev,_ZThn56_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn104_N8S7856C22D0Ev,_ZThn56_N8S7856C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C227S7856C3__7S7856C2[] = {
  ABISELECT(-104,-56),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-336,-180),
  0,
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn120_N8S7856C22D1Ev,_ZThn68_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn120_N8S7856C22D0Ev,_ZThn68_N8S7856C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C227S7856C3__7S7856C2[] = {
  ABISELECT(-120,-68),
  ABISELECT(-352,-192),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-352,-192),
  ABISELECT(-352,-192),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C227S7856C3__7S7856C2[] = {
  ABISELECT(-368,-200),
  ABISELECT(-368,-200),
  ABISELECT(-136,-76),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn152_N8S7856C22D1Ev,_ZThn84_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn152_N8S7856C22D0Ev,_ZThn84_N8S7856C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__8S7856C227S7856C3__7S7856C2[] = {
  ABISELECT(-152,-84),
  ABISELECT(-384,-208),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-384,-208),
  ABISELECT(-384,-208),
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev),
};
extern void ABISELECT(_ZThn8_N8S7856C22D1Ev,_ZThn4_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn8_N8S7856C22D0Ev,_ZThn4_N8S7856C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__A__8S7856C227S7856C3__7S7856C2[] = {
  ABISELECT(160,88),
  ABISELECT(160,88),
  ABISELECT(-240,-128),
  ABISELECT(128,72),
  ABISELECT(112,64),
  ABISELECT(96,52),
  ABISELECT(-240,-128),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(144,80),
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7856C22D1Ev,_ZThn4_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7856C22D0Ev,_ZThn4_N8S7856C22D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn168_N8S7856C22D1Ev,_ZThn92_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn168_N8S7856C22D0Ev,_ZThn92_N8S7856C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C227S7856C3__7S7856C2[] = {
  ABISELECT(-168,-92),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-400,-216),
  ABISELECT(-400,-216),
  ABISELECT(-64,-36),
  ABISELECT(-400,-216),
  ABISELECT(-168,-92),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A2__8S7856C227S7856C3__7S7856C2[] = {
  ABISELECT(-256,-136),
  ABISELECT(80,44),
  ABISELECT(-256,-136),
  ABISELECT(-256,-136),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
};
extern void ABISELECT(_ZTv0_n136_N8S7856C22D1Ev,_ZTv0_n68_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn48_N8S7856C22D1Ev,_ZThn24_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N8S7856C22D0Ev,_ZTv0_n68_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn48_N8S7856C22D0Ev,_ZThn24_N8S7856C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C4__8S7856C227S7856C3__7S7856C2[] = {
  ABISELECT(8,4),
  ABISELECT(-48,-24),
  ABISELECT(136,76),
  ABISELECT(120,68),
  ABISELECT(120,68),
  ABISELECT(-280,-148),
  ABISELECT(104,60),
  ABISELECT(88,52),
  ABISELECT(56,32),
  ABISELECT(72,44),
  ABISELECT(56,32),
  ABISELECT(24,16),
  ABISELECT(-280,-148),
  ABISELECT(56,32),
  ABISELECT(-280,-148),
  ABISELECT(-280,-148),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S7856C22D1Ev,_ZTv0_n68_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S7856C22D0Ev,_ZTv0_n68_N8S7856C22D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S7856C22D1Ev,_ZTv0_n60_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn72_N8S7856C22D1Ev,_ZThn40_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S7856C22D0Ev,_ZTv0_n60_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn72_N8S7856C22D0Ev,_ZThn40_N8S7856C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C5__A1__8S7856C227S7856C3__7S7856C2[] = {
  ABISELECT(-72,-40),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-304,-164),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-304,-164),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-304,-164),
  ABISELECT(-304,-164),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C22D1Ev,_ZTv0_n60_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C22D0Ev,_ZTv0_n60_N8S7856C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A3__8S7856C227S7856C3__7S7856C2[] = {
  ABISELECT(-320,-172),
  ABISELECT(16,8),
  ABISELECT(-320,-172),
  ABISELECT(-320,-172),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
};
extern void ABISELECT(_ZTvn8_n136_N8S7856C22D1Ev,_ZTvn4_n68_N8S7856C22D1Ev)();
extern void ABISELECT(_ZTvn8_n136_N8S7856C22D0Ev,_ZTvn4_n68_N8S7856C22D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C197S7856C4__8S7856C227S7856C3__7S7856C2[] = {
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(48,28),
  ABISELECT(64,40),
  ABISELECT(-288,-152),
  ABISELECT(48,28),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N8S7856C22D1Ev,_ZTvn4_n68_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N8S7856C22D0Ev,_ZTvn4_n68_N8S7856C22D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N8S7856C22D1Ev,_ZTv0_n36_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn184_N8S7856C22D1Ev,_ZThn100_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7856C22D0Ev,_ZTv0_n36_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn184_N8S7856C22D0Ev,_ZThn100_N8S7856C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C18__A2__8S7856C227S7856C3__7S7856C2[] = {
  ABISELECT(-184,-100),
  ABISELECT(-416,-224),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-416,-224),
  ABISELECT(-416,-224),
  ABISELECT(-184,-100),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C22D1Ev,_ZTv0_n36_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C22D0Ev,_ZTv0_n36_N8S7856C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A5__8S7856C227S7856C3__7S7856C2[] = {
  ABISELECT(-432,-232),
  ABISELECT(-96,-52),
  ABISELECT(-432,-232),
  ABISELECT(-432,-232),
  ABISELECT(-200,-108),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
};
extern void ABISELECT(_ZTv0_n136_N7S7856C3D1Ev,_ZTv0_n68_N7S7856C3D1Ev)();
extern void ABISELECT(_ZThn48_N7S7856C3D1Ev,_ZThn24_N7S7856C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N7S7856C3D0Ev,_ZTv0_n68_N7S7856C3D0Ev)();
extern void ABISELECT(_ZThn48_N7S7856C3D0Ev,_ZThn24_N7S7856C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C4__7S7856C3__7S7856C2[] = {
  ABISELECT(8,4),
  ABISELECT(-48,-24),
  ABISELECT(136,76),
  ABISELECT(120,68),
  ABISELECT(120,68),
  ABISELECT(-280,-148),
  ABISELECT(104,60),
  ABISELECT(88,52),
  ABISELECT(56,32),
  ABISELECT(72,44),
  ABISELECT(56,32),
  ABISELECT(24,16),
  ABISELECT(-280,-148),
  ABISELECT(56,32),
  ABISELECT(-280,-148),
  ABISELECT(-280,-148),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N7S7856C3D1Ev,_ZTv0_n68_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N7S7856C3D0Ev,_ZTv0_n68_N7S7856C3D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N7S7856C3D1Ev,_ZTv0_n60_N7S7856C3D1Ev)();
extern void ABISELECT(_ZThn72_N7S7856C3D1Ev,_ZThn40_N7S7856C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S7856C3D0Ev,_ZTv0_n60_N7S7856C3D0Ev)();
extern void ABISELECT(_ZThn72_N7S7856C3D0Ev,_ZThn40_N7S7856C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C5__7S7856C3__7S7856C2[] = {
  ABISELECT(-72,-40),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-304,-164),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-304,-164),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-304,-164),
  ABISELECT(-304,-164),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C3D1Ev,_ZTv0_n60_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C3D0Ev,_ZTv0_n60_N7S7856C3D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C3D1Ev,_ZTv0_n44_N7S7856C3D1Ev)();
extern void ABISELECT(_ZThn104_N7S7856C3D1Ev,_ZThn56_N7S7856C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C3D0Ev,_ZTv0_n44_N7S7856C3D0Ev)();
extern void ABISELECT(_ZThn104_N7S7856C3D0Ev,_ZThn56_N7S7856C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C3__7S7856C2[] = {
  ABISELECT(-104,-56),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-336,-180),
  0,
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C3D1Ev,_ZTv0_n44_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C3D0Ev,_ZTv0_n44_N7S7856C3D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C3D1Ev,_ZTv0_n32_N7S7856C3D1Ev)();
extern void ABISELECT(_ZThn120_N7S7856C3D1Ev,_ZThn68_N7S7856C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C3D0Ev,_ZTv0_n32_N7S7856C3D0Ev)();
extern void ABISELECT(_ZThn120_N7S7856C3D0Ev,_ZThn68_N7S7856C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C3__7S7856C2[] = {
  ABISELECT(-120,-68),
  ABISELECT(-352,-192),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-352,-192),
  ABISELECT(-352,-192),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C3D1Ev,_ZTv0_n32_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C3D0Ev,_ZTv0_n32_N7S7856C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C3__7S7856C2[] = {
  ABISELECT(-368,-200),
  ABISELECT(-368,-200),
  ABISELECT(-136,-76),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C3D1Ev,_ZTv0_n32_N7S7856C3D1Ev)();
extern void ABISELECT(_ZThn152_N7S7856C3D1Ev,_ZThn84_N7S7856C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C3D0Ev,_ZTv0_n32_N7S7856C3D0Ev)();
extern void ABISELECT(_ZThn152_N7S7856C3D0Ev,_ZThn84_N7S7856C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C3__7S7856C2[] = {
  ABISELECT(-152,-84),
  ABISELECT(-384,-208),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-384,-208),
  ABISELECT(-384,-208),
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C3D1Ev,_ZTv0_n32_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C3D0Ev,_ZTv0_n32_N7S7856C3D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C3D1Ev,_ZTv0_n44_N7S7856C3D1Ev)();
extern void ABISELECT(_ZThn168_N7S7856C3D1Ev,_ZThn92_N7S7856C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C3D0Ev,_ZTv0_n44_N7S7856C3D0Ev)();
extern void ABISELECT(_ZThn168_N7S7856C3D0Ev,_ZThn92_N7S7856C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C3__7S7856C2[] = {
  ABISELECT(-168,-92),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-400,-216),
  ABISELECT(-400,-216),
  ABISELECT(-64,-36),
  ABISELECT(-400,-216),
  ABISELECT(-168,-92),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C3D1Ev,_ZTv0_n44_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C3D0Ev,_ZTv0_n44_N7S7856C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__7S7856C3__7S7856C2[] = {
  ABISELECT(-320,-172),
  ABISELECT(16,8),
  ABISELECT(-320,-172),
  ABISELECT(-320,-172),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
};
extern void ABISELECT(_ZTvn8_n136_N7S7856C3D1Ev,_ZTvn4_n68_N7S7856C3D1Ev)();
extern void ABISELECT(_ZTvn8_n136_N7S7856C3D0Ev,_ZTvn4_n68_N7S7856C3D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C197S7856C4__7S7856C3__7S7856C2[] = {
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(48,28),
  ABISELECT(64,40),
  ABISELECT(-288,-152),
  ABISELECT(48,28),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N7S7856C3D1Ev,_ZTvn4_n68_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N7S7856C3D0Ev,_ZTvn4_n68_N7S7856C3D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N7S7856C3D1Ev,_ZTv0_n36_N7S7856C3D1Ev)();
extern void ABISELECT(_ZThn184_N7S7856C3D1Ev,_ZThn100_N7S7856C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7856C3D0Ev,_ZTv0_n36_N7S7856C3D0Ev)();
extern void ABISELECT(_ZThn184_N7S7856C3D0Ev,_ZThn100_N7S7856C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C18__A1__7S7856C3__7S7856C2[] = {
  ABISELECT(-184,-100),
  ABISELECT(-416,-224),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-416,-224),
  ABISELECT(-416,-224),
  ABISELECT(-184,-100),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7856C3D1Ev,_ZTv0_n36_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7856C3D0Ev,_ZTv0_n36_N7S7856C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A3__7S7856C3__7S7856C2[] = {
  ABISELECT(-432,-232),
  ABISELECT(-96,-52),
  ABISELECT(-432,-232),
  ABISELECT(-432,-232),
  ABISELECT(-200,-108),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
};
extern void ABISELECT(_ZTv0_n120_N7S7856C3D1Ev,_ZTv0_n60_N7S7856C3D1Ev)();
extern void ABISELECT(_ZThn216_N7S7856C3D1Ev,_ZThn116_N7S7856C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S7856C3D0Ev,_ZTv0_n60_N7S7856C3D0Ev)();
extern void ABISELECT(_ZThn216_N7S7856C3D0Ev,_ZThn116_N7S7856C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C20__7S7856C3__7S7856C2[] = {
  ABISELECT(-216,-116),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-448,-240),
  ABISELECT(-64,-32),
  ABISELECT(-80,-40),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-448,-240),
  ABISELECT(-96,-48),
  ABISELECT(-112,-60),
  ABISELECT(-448,-240),
  ABISELECT(-448,-240),
  ABISELECT(-216,-116),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C3D1Ev,_ZTv0_n60_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C3D0Ev,_ZTv0_n60_N7S7856C3D0Ev),
};
extern void ABISELECT(_ZTvn8_n120_N7S7856C3D1Ev,_ZTvn4_n60_N7S7856C3D1Ev)();
extern void ABISELECT(_ZTvn8_n120_N7S7856C3D0Ev,_ZTvn4_n60_N7S7856C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C58S7856C20__A1__7S7856C3__7S7856C2[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-456,-244),
  ABISELECT(-88,-44),
  ABISELECT(-104,-52),
  ABISELECT(-120,-64),
  ABISELECT(-456,-244),
  ABISELECT(-120,-64),
  ABISELECT(-120,-64),
  ABISELECT(-72,-36),
  ABISELECT(-456,-244),
  ABISELECT(-456,-244),
  ABISELECT(-224,-120),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n120_N7S7856C3D1Ev,_ZTvn4_n60_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n120_N7S7856C3D0Ev,_ZTvn4_n60_N7S7856C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C58S7856C20__A4__7S7856C3__7S7856C2[] = {
  ABISELECT(-472,-252),
  ABISELECT(-136,-72),
  ABISELECT(-472,-252),
  ABISELECT(-472,-252),
  ABISELECT(-240,-128),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
};
extern void ABISELECT(_ZTvn40_n120_N7S7856C3D1Ev,_ZTvn20_n60_N7S7856C3D1Ev)();
extern void ABISELECT(_ZTvn40_n120_N7S7856C3D0Ev,_ZTvn20_n60_N7S7856C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C218S7856C20__7S7856C3__7S7856C2[] = {
  ABISELECT(-488,-260),
  ABISELECT(-256,-136),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n120_N7S7856C3D1Ev,_ZTvn20_n60_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n120_N7S7856C3D0Ev,_ZTvn20_n60_N7S7856C3D0Ev),
};
extern void ABISELECT(_ZThn8_N7S7856C3D1Ev,_ZThn4_N7S7856C3D1Ev)();
extern void ABISELECT(_ZThn8_N7S7856C3D0Ev,_ZThn4_N7S7856C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C58S7856C22__A2__7S7856C3__7S7856C2[] = {
  ABISELECT(160,88),
  ABISELECT(160,88),
  ABISELECT(-240,-128),
  ABISELECT(128,72),
  ABISELECT(112,64),
  ABISELECT(96,52),
  ABISELECT(-240,-128),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(144,80),
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7856C3D1Ev,_ZThn4_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7856C3D0Ev,_ZThn4_N7S7856C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C58S7856C22__A6__7S7856C3__7S7856C2[] = {
  ABISELECT(-256,-136),
  ABISELECT(80,44),
  ABISELECT(-256,-136),
  ABISELECT(-256,-136),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
};
extern void ABISELECT(_ZTv0_n176_N7S7856C3D1Ev,_ZTv0_n88_N7S7856C3D1Ev)();
extern void ABISELECT(_ZThn264_N7S7856C3D1Ev,_ZThn140_N7S7856C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n176_N7S7856C3D0Ev,_ZTv0_n88_N7S7856C3D0Ev)();
extern void ABISELECT(_ZThn264_N7S7856C3D0Ev,_ZThn140_N7S7856C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C23__7S7856C3__7S7856C2[] = {
  ABISELECT(32,16),
  ABISELECT(-264,-140),
  ABISELECT(-216,-116),
  ABISELECT(184,96),
  ABISELECT(-496,-264),
  ABISELECT(-496,-264),
  ABISELECT(136,72),
  ABISELECT(-80,-40),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-496,-264),
  ABISELECT(-112,-56),
  ABISELECT(-128,-64),
  ABISELECT(-144,-72),
  ABISELECT(-160,-84),
  ABISELECT(-192,-100),
  ABISELECT(-496,-264),
  ABISELECT(-160,-84),
  ABISELECT(-160,-84),
  ABISELECT(-496,-264),
  ABISELECT(-496,-264),
  ABISELECT(-264,-140),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n176_N7S7856C3D1Ev,_ZTv0_n88_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n176_N7S7856C3D0Ev,_ZTv0_n88_N7S7856C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C268S7856C258S7856C23__7S7856C3__7S7856C2[] = {
  ABISELECT(-512,-272),
  ABISELECT(-280,-148),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
};
extern void ABISELECT(_ZTvn24_n176_N7S7856C3D1Ev,_ZTvn12_n88_N7S7856C3D1Ev)();
extern void ABISELECT(_ZTvn24_n176_N7S7856C3D0Ev,_ZTvn12_n88_N7S7856C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C48S7856C258S7856C23__A1__7S7856C3__7S7856C2[] = {
  ABISELECT(-104,-52),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-520,-276),
  ABISELECT(-136,-68),
  ABISELECT(-152,-76),
  ABISELECT(-184,-96),
  ABISELECT(-168,-84),
  ABISELECT(-184,-96),
  ABISELECT(-216,-112),
  ABISELECT(-520,-276),
  ABISELECT(-184,-96),
  ABISELECT(-520,-276),
  ABISELECT(-520,-276),
  ABISELECT(-288,-152),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n176_N7S7856C3D1Ev,_ZTvn12_n88_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n176_N7S7856C3D0Ev,_ZTvn12_n88_N7S7856C3D0Ev),
};
extern void ABISELECT(_ZTvn32_n176_N7S7856C3D1Ev,_ZTvn16_n88_N7S7856C3D1Ev)();
extern void ABISELECT(_ZTvn32_n176_N7S7856C3D0Ev,_ZTvn16_n88_N7S7856C3D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C3__7S7856C2[] = {
  ABISELECT(-112,-56),
  ABISELECT(-144,-72),
  ABISELECT(-160,-80),
  ABISELECT(-192,-100),
  ABISELECT(-176,-88),
  ABISELECT(-528,-280),
  ABISELECT(-192,-100),
  ABISELECT(-528,-280),
  ABISELECT(-528,-280),
  ABISELECT(-296,-156),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n176_N7S7856C3D1Ev,_ZTvn16_n88_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n176_N7S7856C3D0Ev,_ZTvn16_n88_N7S7856C3D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void ABISELECT(_ZTv0_n144_N7S7856C3D1Ev,_ZTv0_n72_N7S7856C3D1Ev)();
extern void ABISELECT(_ZThn400_N7S7856C3D1Ev,_ZThn212_N7S7856C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N7S7856C3D0Ev,_ZTv0_n72_N7S7856C3D0Ev)();
extern void ABISELECT(_ZThn400_N7S7856C3D0Ev,_ZThn212_N7S7856C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C27__7S7856C3__7S7856C2[] = {
  ABISELECT(-400,-212),
  ABISELECT(-632,-336),
  ABISELECT(-232,-120),
  ABISELECT(-632,-336),
  ABISELECT(-248,-128),
  ABISELECT(-296,-156),
  ABISELECT(-328,-172),
  ABISELECT(-632,-336),
  ABISELECT(-296,-156),
  ABISELECT(-280,-144),
  ABISELECT(-264,-136),
  ABISELECT(-232,-120),
  ABISELECT(-632,-336),
  ABISELECT(-632,-336),
  ABISELECT(-296,-156),
  ABISELECT(-632,-336),
  ABISELECT(-400,-212),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N7S7856C3D1Ev,_ZTv0_n72_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N7S7856C3D0Ev,_ZTv0_n72_N7S7856C3D0Ev),
};
extern void ABISELECT(_ZTvn16_n144_N7S7856C3D1Ev,_ZTvn8_n72_N7S7856C3D1Ev)();
extern void ABISELECT(_ZTvn16_n144_N7S7856C3D0Ev,_ZTvn8_n72_N7S7856C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C288S7856C27__7S7856C3__7S7856C2[] = {
  ABISELECT(-248,-128),
  ABISELECT(-248,-128),
  ABISELECT(-648,-344),
  ABISELECT(-264,-136),
  ABISELECT(-312,-164),
  ABISELECT(-344,-180),
  ABISELECT(-296,-152),
  ABISELECT(-648,-344),
  ABISELECT(-280,-144),
  ABISELECT(-648,-344),
  ABISELECT(-312,-164),
  ABISELECT(-312,-164),
  ABISELECT(-648,-344),
  ABISELECT(-648,-344),
  ABISELECT(-416,-220),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n144_N7S7856C3D1Ev,_ZTvn8_n72_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n144_N7S7856C3D0Ev,_ZTvn8_n72_N7S7856C3D0Ev),
};
extern void ABISELECT(_ZTv0_n128_N7S7856C3D1Ev,_ZTv0_n64_N7S7856C3D1Ev)();
extern void ABISELECT(_ZTv0_n128_N7S7856C3D0Ev,_ZTv0_n64_N7S7856C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C29__7S7856C3__7S7856C2[] = {
  ABISELECT(232,124),
  ABISELECT(400,216),
  ABISELECT(400,216),
  0,
  ABISELECT(384,208),
  ABISELECT(368,200),
  ABISELECT(336,180),
  ABISELECT(304,164),
  ABISELECT(336,180),
  ABISELECT(352,192),
  0,
  ABISELECT(336,180),
  0,
  0,
  ABISELECT(232,124),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S7856C3D1Ev,_ZTv0_n64_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S7856C3D0Ev,_ZTv0_n64_N7S7856C3D0Ev),
};
extern void ABISELECT(_ZTvn32_n144_N7S7856C3D1Ev,_ZTvn16_n72_N7S7856C3D1Ev)();
extern void ABISELECT(_ZTvn32_n144_N7S7856C3D0Ev,_ZTvn16_n72_N7S7856C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C218S7856C288S7856C27__A1__7S7856C3__7S7856C2[] = {
  ABISELECT(-664,-352),
  ABISELECT(-432,-228),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n144_N7S7856C3D1Ev,_ZTvn16_n72_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n144_N7S7856C3D0Ev,_ZTvn16_n72_N7S7856C3D0Ev),
};
extern void ABISELECT(_ZTvn48_n176_N7S7856C3D1Ev,_ZTvn28_n88_N7S7856C3D1Ev)();
extern void ABISELECT(_ZTvn48_n176_N7S7856C3D0Ev,_ZTvn28_n88_N7S7856C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C58S7856C258S7856C23__A3__7S7856C3__7S7856C2[] = {
  ABISELECT(-144,-76),
  ABISELECT(-144,-76),
  ABISELECT(-544,-292),
  ABISELECT(-176,-92),
  ABISELECT(-192,-100),
  ABISELECT(-208,-112),
  ABISELECT(-544,-292),
  ABISELECT(-208,-112),
  ABISELECT(-208,-112),
  ABISELECT(-160,-84),
  ABISELECT(-544,-292),
  ABISELECT(-544,-292),
  ABISELECT(-312,-168),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n176_N7S7856C3D1Ev,_ZTvn28_n88_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n176_N7S7856C3D0Ev,_ZTvn28_n88_N7S7856C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C58S7856C258S7856C23__A8__7S7856C3__7S7856C2[] = {
  ABISELECT(-560,-300),
  ABISELECT(-224,-120),
  ABISELECT(-560,-300),
  ABISELECT(-560,-300),
  ABISELECT(-328,-176),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
};
extern void ABISELECT(_ZTvn80_n176_N7S7856C3D1Ev,_ZTvn44_n88_N7S7856C3D1Ev)();
extern void ABISELECT(_ZTvn80_n176_N7S7856C3D0Ev,_ZTvn44_n88_N7S7856C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C138S7856C23__A4__7S7856C3__7S7856C2[] = {
  ABISELECT(-576,-308),
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  ABISELECT(-576,-308),
  ABISELECT(-576,-308),
  ABISELECT(-344,-184),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n176_N7S7856C3D1Ev,_ZTvn44_n88_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n176_N7S7856C3D0Ev,_ZTvn44_n88_N7S7856C3D0Ev),
};
extern void ABISELECT(_ZTv0_n144_N7S7856C3D1Ev,_ZTv0_n72_N7S7856C3D1Ev)();
extern void ABISELECT(_ZThn448_N7S7856C3D1Ev,_ZThn236_N7S7856C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N7S7856C3D0Ev,_ZTv0_n72_N7S7856C3D0Ev)();
extern void ABISELECT(_ZThn448_N7S7856C3D0Ev,_ZThn236_N7S7856C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C22__A1__7S7856C3__7S7856C2[] = {
  ABISELECT(-448,-236),
  ABISELECT(-264,-136),
  ABISELECT(-376,-196),
  ABISELECT(-400,-212),
  ABISELECT(-280,-144),
  ABISELECT(-280,-144),
  ABISELECT(-680,-360),
  ABISELECT(-296,-152),
  ABISELECT(-312,-160),
  ABISELECT(-344,-180),
  ABISELECT(-328,-168),
  ABISELECT(-344,-180),
  ABISELECT(-680,-360),
  ABISELECT(-344,-180),
  ABISELECT(-680,-360),
  ABISELECT(-680,-360),
  ABISELECT(-448,-236),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N7S7856C3D1Ev,_ZTv0_n72_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N7S7856C3D0Ev,_ZTv0_n72_N7S7856C3D0Ev),
};
extern void ABISELECT(_ZTvn8_n144_N7S7856C3D1Ev,_ZTvn4_n72_N7S7856C3D1Ev)();
extern void ABISELECT(_ZTvn8_n144_N7S7856C3D0Ev,_ZTvn4_n72_N7S7856C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C58S7856C22__A4__7S7856C3__7S7856C2[] = {
  ABISELECT(-288,-148),
  ABISELECT(-288,-148),
  ABISELECT(-688,-364),
  ABISELECT(-320,-164),
  ABISELECT(-336,-172),
  ABISELECT(-352,-184),
  ABISELECT(-688,-364),
  ABISELECT(-352,-184),
  ABISELECT(-352,-184),
  ABISELECT(-304,-156),
  ABISELECT(-688,-364),
  ABISELECT(-688,-364),
  ABISELECT(-456,-240),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n144_N7S7856C3D1Ev,_ZTvn4_n72_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n144_N7S7856C3D0Ev,_ZTvn4_n72_N7S7856C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C58S7856C22__A10__7S7856C3__7S7856C2[] = {
  ABISELECT(-704,-372),
  ABISELECT(-368,-192),
  ABISELECT(-704,-372),
  ABISELECT(-704,-372),
  ABISELECT(-472,-248),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
};
extern void _ZN7S7856C4D1Ev();
extern void _ZN7S7856C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C4__7S7856C2[] = {
  ABISELECT(136,76),
  ABISELECT(120,68),
  ABISELECT(120,68),
  ABISELECT(-280,-148),
  ABISELECT(104,60),
  ABISELECT(88,52),
  ABISELECT(56,32),
  ABISELECT(72,44),
  ABISELECT(56,32),
  ABISELECT(24,16),
  ABISELECT(-280,-148),
  ABISELECT(56,32),
  ABISELECT(-280,-148),
  ABISELECT(-280,-148),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&_ZN7S7856C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C4D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C107S7856C4__A2__7S7856C2[] = {
  ABISELECT(-280,-148),
  ABISELECT(56,32),
  ABISELECT(-280,-148),
  ABISELECT(-280,-148),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C107S7856C4__A2__7S7856C2[] = {
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void _ZN8S7856C19D1Ev();
extern void _ZN8S7856C19D0Ev();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C197S7856C4__7S7856C2[] = {
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(48,28),
  ABISELECT(64,40),
  ABISELECT(-288,-152),
  ABISELECT(48,28),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&_ZN8S7856C19D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C19D0Ev,
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void _ZN7S7856C6D1Ev();
extern void _ZN7S7856C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C68S7856C197S7856C4__A1__7S7856C2[] = {
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(48,28),
  ABISELECT(64,40),
  ABISELECT(-288,-152),
  ABISELECT(48,28),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&_ZN7S7856C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C6D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn64_N7S7856C6D1Ev,_ZThn40_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn64_N7S7856C6D0Ev,_ZThn40_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C68S7856C197S7856C4__A1__7S7856C2[] = {
  ABISELECT(-64,-40),
  ABISELECT(-352,-192),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-352,-192),
  ABISELECT(-352,-192),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C68S7856C197S7856C4__A1__7S7856C2[] = {
  ABISELECT(-336,-180),
  0,
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C68S7856C197S7856C4__A1__7S7856C2[] = {
  ABISELECT(-368,-200),
  ABISELECT(-368,-200),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn96_N7S7856C6D1Ev,_ZThn56_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn96_N7S7856C6D0Ev,_ZThn56_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C68S7856C197S7856C4__A1__7S7856C2[] = {
  ABISELECT(-96,-56),
  ABISELECT(-384,-208),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-384,-208),
  ABISELECT(-384,-208),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev)();
extern void ABISELECT(_ZThn64_N8S7856C19D1Ev,_ZThn40_N8S7856C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev)();
extern void ABISELECT(_ZThn64_N8S7856C19D0Ev,_ZThn40_N8S7856C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C197S7856C4__7S7856C2[] = {
  ABISELECT(-64,-40),
  ABISELECT(-352,-192),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-352,-192),
  ABISELECT(-352,-192),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C197S7856C4__7S7856C2[] = {
  ABISELECT(-336,-180),
  0,
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C197S7856C4__7S7856C2[] = {
  ABISELECT(-368,-200),
  ABISELECT(-368,-200),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev)();
extern void ABISELECT(_ZThn96_N8S7856C19D1Ev,_ZThn56_N8S7856C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev)();
extern void ABISELECT(_ZThn96_N8S7856C19D0Ev,_ZThn56_N8S7856C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__8S7856C197S7856C4__7S7856C2[] = {
  ABISELECT(-96,-56),
  ABISELECT(-384,-208),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-384,-208),
  ABISELECT(-384,-208),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev),
};
extern void ABISELECT(_ZTv0_n72_N8S7856C19D1Ev,_ZTv0_n36_N8S7856C19D1Ev)();
extern void ABISELECT(_ZThn128_N8S7856C19D1Ev,_ZThn72_N8S7856C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7856C19D0Ev,_ZTv0_n36_N8S7856C19D0Ev)();
extern void ABISELECT(_ZThn128_N8S7856C19D0Ev,_ZThn72_N8S7856C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C18__8S7856C197S7856C4__7S7856C2[] = {
  ABISELECT(-128,-72),
  ABISELECT(-416,-224),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-416,-224),
  ABISELECT(-416,-224),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C19D1Ev,_ZTv0_n36_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C19D0Ev,_ZTv0_n36_N8S7856C19D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__8S7856C197S7856C4__7S7856C2[] = {
  ABISELECT(-432,-232),
  ABISELECT(-96,-52),
  ABISELECT(-432,-232),
  ABISELECT(-432,-232),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
extern void ABISELECT(_ZTv0_n120_N7S7856C4D1Ev,_ZTv0_n60_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn24_N7S7856C4D1Ev,_ZThn16_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S7856C4D0Ev,_ZTv0_n60_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn24_N7S7856C4D0Ev,_ZThn16_N7S7856C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C5__7S7856C4__7S7856C2[] = {
  ABISELECT(-24,-16),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-304,-164),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-304,-164),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-304,-164),
  ABISELECT(-304,-164),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C4D1Ev,_ZTv0_n60_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C4D0Ev,_ZTv0_n60_N7S7856C4D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn56_N7S7856C4D1Ev,_ZThn32_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn56_N7S7856C4D0Ev,_ZThn32_N7S7856C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C4__7S7856C2[] = {
  ABISELECT(-56,-32),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-336,-180),
  0,
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn72_N7S7856C4D1Ev,_ZThn44_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn72_N7S7856C4D0Ev,_ZThn44_N7S7856C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C4__7S7856C2[] = {
  ABISELECT(-72,-44),
  ABISELECT(-352,-192),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-352,-192),
  ABISELECT(-352,-192),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C4__7S7856C2[] = {
  ABISELECT(-368,-200),
  ABISELECT(-368,-200),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn104_N7S7856C4D1Ev,_ZThn60_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn104_N7S7856C4D0Ev,_ZThn60_N7S7856C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C4__7S7856C2[] = {
  ABISELECT(-104,-60),
  ABISELECT(-384,-208),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-384,-208),
  ABISELECT(-384,-208),
  ABISELECT(-104,-60),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn120_N7S7856C4D1Ev,_ZThn68_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn120_N7S7856C4D0Ev,_ZThn68_N7S7856C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C4__7S7856C2[] = {
  ABISELECT(-120,-68),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-400,-216),
  ABISELECT(-400,-216),
  ABISELECT(-64,-36),
  ABISELECT(-400,-216),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__7S7856C4__7S7856C2[] = {
  ABISELECT(-320,-172),
  ABISELECT(16,8),
  ABISELECT(-320,-172),
  ABISELECT(-320,-172),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
extern void ABISELECT(_ZThn8_N7S7856C4D1Ev,_ZThn4_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn8_N7S7856C4D0Ev,_ZThn4_N7S7856C4D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C19__7S7856C4__7S7856C2[] = {
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(48,28),
  ABISELECT(64,40),
  ABISELECT(-288,-152),
  ABISELECT(48,28),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7856C4D1Ev,_ZThn4_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7856C4D0Ev,_ZThn4_N7S7856C4D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N7S7856C4D1Ev,_ZTv0_n36_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn136_N7S7856C4D1Ev,_ZThn76_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7856C4D0Ev,_ZTv0_n36_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn136_N7S7856C4D0Ev,_ZThn76_N7S7856C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C18__A1__7S7856C4__7S7856C2[] = {
  ABISELECT(-136,-76),
  ABISELECT(-416,-224),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-416,-224),
  ABISELECT(-416,-224),
  ABISELECT(-136,-76),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7856C4D1Ev,_ZTv0_n36_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7856C4D0Ev,_ZTv0_n36_N7S7856C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A3__7S7856C4__7S7856C2[] = {
  ABISELECT(-432,-232),
  ABISELECT(-96,-52),
  ABISELECT(-432,-232),
  ABISELECT(-432,-232),
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
extern void _ZN7S7856C5D1Ev();
extern void _ZN7S7856C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C5__7S7856C2[] = {
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-304,-164),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-304,-164),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-304,-164),
  ABISELECT(-304,-164),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&_ZN7S7856C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C5D0Ev,
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C187S7856C5__7S7856C2[] = {
  ABISELECT(-304,-164),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-304,-164),
  ABISELECT(-304,-164),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C187S7856C5__A1__7S7856C2[] = {
  ABISELECT(-304,-164),
  ABISELECT(-304,-164),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C187S7856C5__A4__7S7856C2[] = {
  ABISELECT(-304,-164),
  ABISELECT(-304,-164),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__7S7856C2[] = {
  ABISELECT(-320,-172),
  ABISELECT(16,8),
  ABISELECT(-320,-172),
  ABISELECT(-320,-172),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C187S7856C5__A1__7S7856C2[] = {
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZThn80_N8S7856C18D1Ev,_ZThn44_N8S7856C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
extern void ABISELECT(_ZThn80_N8S7856C18D0Ev,_ZThn44_N8S7856C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C187S7856C5__7S7856C2[] = {
  ABISELECT(-80,-44),
  ABISELECT(-384,-208),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-384,-208),
  ABISELECT(-384,-208),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C187S7856C5__7S7856C2[] = {
  ABISELECT(-336,-180),
  0,
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C187S7856C5__7S7856C2[] = {
  ABISELECT(-320,-172),
  ABISELECT(16,8),
  ABISELECT(-320,-172),
  ABISELECT(-320,-172),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn32_N7S7856C5D1Ev,_ZThn16_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn32_N7S7856C5D0Ev,_ZThn16_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C5__7S7856C2[] = {
  ABISELECT(-32,-16),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-336,-180),
  0,
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn48_N7S7856C5D1Ev,_ZThn28_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn48_N7S7856C5D0Ev,_ZThn28_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C5__7S7856C2[] = {
  ABISELECT(-48,-28),
  ABISELECT(-352,-192),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-352,-192),
  ABISELECT(-352,-192),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C5__7S7856C2[] = {
  ABISELECT(-368,-200),
  ABISELECT(-368,-200),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn80_N7S7856C5D1Ev,_ZThn44_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn80_N7S7856C5D0Ev,_ZThn44_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C5__7S7856C2[] = {
  ABISELECT(-80,-44),
  ABISELECT(-384,-208),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-384,-208),
  ABISELECT(-384,-208),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn96_N7S7856C5D1Ev,_ZThn52_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn96_N7S7856C5D0Ev,_ZThn52_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C5__7S7856C2[] = {
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-400,-216),
  ABISELECT(-400,-216),
  ABISELECT(-64,-36),
  ABISELECT(-400,-216),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__7S7856C5__7S7856C2[] = {
  ABISELECT(-320,-172),
  ABISELECT(16,8),
  ABISELECT(-320,-172),
  ABISELECT(-320,-172),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void _ZN7S7856C6D1Ev();
extern void _ZN7S7856C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C2[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-336,-180),
  0,
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&_ZN7S7856C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C6D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn16_N7S7856C6D1Ev,_ZThn12_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn16_N7S7856C6D0Ev,_ZThn12_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C6__7S7856C2[] = {
  ABISELECT(-16,-12),
  ABISELECT(-352,-192),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-352,-192),
  ABISELECT(-352,-192),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C6__7S7856C2[] = {
  ABISELECT(-368,-200),
  ABISELECT(-368,-200),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn48_N7S7856C6D1Ev,_ZThn28_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn48_N7S7856C6D0Ev,_ZThn28_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C6__7S7856C2[] = {
  ABISELECT(-48,-28),
  ABISELECT(-384,-208),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-384,-208),
  ABISELECT(-384,-208),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
extern void _ZN7S7856C7D1Ev();
extern void _ZN7S7856C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C2[] = {
  ABISELECT(-352,-192),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-352,-192),
  ABISELECT(-352,-192),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
  (VTBL_ENTRY)&_ZN7S7856C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C7D0Ev,
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C137S7856C7__7S7856C2[] = {
  ABISELECT(-352,-192),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-352,-192),
  ABISELECT(-352,-192),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C137S7856C7__A1__7S7856C2[] = {
  ABISELECT(-352,-192),
  ABISELECT(-352,-192),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C137S7856C7__7S7856C2[] = {
  ABISELECT(-336,-180),
  0,
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C7__7S7856C2[] = {
  ABISELECT(-336,-180),
  0,
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C2[] = {
  ABISELECT(-336,-180),
  0,
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__7S7856C2[] = {
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C2[] = {
  ABISELECT(-368,-200),
  ABISELECT(-368,-200),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C14__A2__7S7856C2[] = {
  ABISELECT(-368,-200),
  ABISELECT(-368,-200),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C2[] = {
  ABISELECT(-384,-208),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-384,-208),
  ABISELECT(-384,-208),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C13__A3__7S7856C2[] = {
  ABISELECT(-384,-208),
  ABISELECT(-384,-208),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C13__A1__7S7856C2[] = {
  ABISELECT(-336,-180),
  0,
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
extern void _ZN8S7856C16D1Ev();
extern void _ZN8S7856C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C2[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-400,-216),
  ABISELECT(-400,-216),
  ABISELECT(-64,-36),
  ABISELECT(-400,-216),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&_ZN8S7856C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C16__7S7856C2[] = {
  ABISELECT(-336,-180),
  0,
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C16__7S7856C2[] = {
  ABISELECT(-368,-200),
  ABISELECT(-368,-200),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C16__7S7856C2[] = {
  ABISELECT(48,24),
  ABISELECT(-352,-192),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-352,-192),
  ABISELECT(-352,-192),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt__7S7856C2[] = {
  ABISELECT(-400,-216),
  0,
  (VTBL_ENTRY)&(_ZTI11S7856C17_nt[0]),
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C18__A1__7S7856C2[] = {
  ABISELECT(-416,-224),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-416,-224),
  ABISELECT(-416,-224),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C18__A2__7S7856C2[] = {
  ABISELECT(-416,-224),
  ABISELECT(-416,-224),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C18__A5__7S7856C2[] = {
  ABISELECT(-416,-224),
  ABISELECT(-416,-224),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A3__7S7856C2[] = {
  ABISELECT(-432,-232),
  ABISELECT(-96,-52),
  ABISELECT(-432,-232),
  ABISELECT(-432,-232),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C18__A3__7S7856C2[] = {
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(96,52),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C18__A1__7S7856C2[] = {
  ABISELECT(32,16),
  ABISELECT(-384,-208),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-384,-208),
  ABISELECT(-384,-208),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C18__A1__7S7856C2[] = {
  ABISELECT(-336,-180),
  0,
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C18__A1__7S7856C2[] = {
  ABISELECT(-432,-232),
  ABISELECT(-96,-52),
  ABISELECT(-432,-232),
  ABISELECT(-432,-232),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern void _ZN8S7856C20D1Ev();
extern void _ZN8S7856C20D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C20__7S7856C2[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-448,-240),
  ABISELECT(-64,-32),
  ABISELECT(-80,-40),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-448,-240),
  ABISELECT(-96,-48),
  ABISELECT(-112,-60),
  ABISELECT(-448,-240),
  ABISELECT(-448,-240),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C20[0]),
  (VTBL_ENTRY)&_ZN8S7856C20D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C20D0Ev,
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt8S7856C20__A1__7S7856C2[] = {
  ABISELECT(-448,-240),
  0,
  (VTBL_ENTRY)&(_ZTI11S7856C17_nt[0]),
};
extern void _ZN7S7856C5D1Ev();
extern void _ZN7S7856C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C58S7856C20__A1__7S7856C2[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-456,-244),
  ABISELECT(-88,-44),
  ABISELECT(-104,-52),
  ABISELECT(-120,-64),
  ABISELECT(-456,-244),
  ABISELECT(-120,-64),
  ABISELECT(-120,-64),
  ABISELECT(-72,-36),
  ABISELECT(-456,-244),
  ABISELECT(-456,-244),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&_ZN7S7856C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C5D0Ev,
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C187S7856C58S7856C20__A2__7S7856C2[] = {
  ABISELECT(-456,-244),
  ABISELECT(-120,-64),
  ABISELECT(-120,-64),
  ABISELECT(-72,-36),
  ABISELECT(-456,-244),
  ABISELECT(-456,-244),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C187S7856C58S7856C20__A3__7S7856C2[] = {
  ABISELECT(-456,-244),
  ABISELECT(-456,-244),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C187S7856C58S7856C20__A6__7S7856C2[] = {
  ABISELECT(-456,-244),
  ABISELECT(-456,-244),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C58S7856C20__A4__7S7856C2[] = {
  ABISELECT(-472,-252),
  ABISELECT(-136,-72),
  ABISELECT(-472,-252),
  ABISELECT(-472,-252),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C187S7856C58S7856C20__A4__7S7856C2[] = {
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(136,72),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C187S7856C58S7856C20__A2__7S7856C2[] = {
  ABISELECT(72,36),
  ABISELECT(-384,-208),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-384,-208),
  ABISELECT(-384,-208),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C187S7856C58S7856C20__A2__7S7856C2[] = {
  ABISELECT(-336,-180),
  0,
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(120,64),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C187S7856C58S7856C20__A2__7S7856C2[] = {
  ABISELECT(-472,-252),
  ABISELECT(-136,-72),
  ABISELECT(-472,-252),
  ABISELECT(-472,-252),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C58S7856C20__A1__7S7856C2[] = {
  ABISELECT(120,64),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-336,-180),
  0,
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(120,64),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C58S7856C20__A1__7S7856C2[] = {
  ABISELECT(104,52),
  ABISELECT(-352,-192),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-352,-192),
  ABISELECT(-352,-192),
  ABISELECT(104,52),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C58S7856C20__A1__7S7856C2[] = {
  ABISELECT(-368,-200),
  ABISELECT(-368,-200),
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C58S7856C20__A1__7S7856C2[] = {
  ABISELECT(72,36),
  ABISELECT(-384,-208),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-384,-208),
  ABISELECT(-384,-208),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C58S7856C20__A1__7S7856C2[] = {
  ABISELECT(56,28),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-400,-216),
  ABISELECT(-400,-216),
  ABISELECT(-64,-36),
  ABISELECT(-400,-216),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__7S7856C58S7856C20__A1__7S7856C2[] = {
  ABISELECT(-472,-252),
  ABISELECT(-136,-72),
  ABISELECT(-472,-252),
  ABISELECT(-472,-252),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void _ZN8S7856C21D1Ev();
extern void _ZN8S7856C21D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C218S7856C20__7S7856C2[] = {
  ABISELECT(-488,-260),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C21[0]),
  (VTBL_ENTRY)&_ZN8S7856C21D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C21D0Ev,
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt8S7856C218S7856C20__A2__7S7856C2[] = {
  ABISELECT(-488,-260),
  0,
  (VTBL_ENTRY)&(_ZTI11S7856C17_nt[0]),
};
extern void ABISELECT(_ZThn8_N8S7856C20D1Ev,_ZThn4_N8S7856C20D1Ev)();
extern void ABISELECT(_ZThn8_N8S7856C20D0Ev,_ZThn4_N8S7856C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__8S7856C20__7S7856C2[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-456,-244),
  ABISELECT(-88,-44),
  ABISELECT(-104,-52),
  ABISELECT(-120,-64),
  ABISELECT(-456,-244),
  ABISELECT(-120,-64),
  ABISELECT(-120,-64),
  ABISELECT(-72,-36),
  ABISELECT(-456,-244),
  ABISELECT(-456,-244),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7856C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7856C20D1Ev,_ZThn4_N8S7856C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7856C20D0Ev,_ZThn4_N8S7856C20D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C20D1Ev,_ZTv0_n44_N8S7856C20D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C20D0Ev,_ZTv0_n44_N8S7856C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C20__7S7856C2[] = {
  ABISELECT(112,60),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-336,-180),
  0,
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI8S7856C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C20D1Ev,_ZTv0_n44_N8S7856C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C20D0Ev,_ZTv0_n44_N8S7856C20D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C20D1Ev,_ZTv0_n32_N8S7856C20D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C20D0Ev,_ZTv0_n32_N8S7856C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C20__7S7856C2[] = {
  ABISELECT(96,48),
  ABISELECT(-352,-192),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-352,-192),
  ABISELECT(-352,-192),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI8S7856C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C20D1Ev,_ZTv0_n32_N8S7856C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C20D0Ev,_ZTv0_n32_N8S7856C20D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C20__7S7856C2[] = {
  ABISELECT(-368,-200),
  ABISELECT(-368,-200),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S7856C20[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C20D1Ev,_ZTv0_n32_N8S7856C20D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C20D0Ev,_ZTv0_n32_N8S7856C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__8S7856C20__7S7856C2[] = {
  ABISELECT(64,32),
  ABISELECT(-384,-208),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-384,-208),
  ABISELECT(-384,-208),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S7856C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C20D1Ev,_ZTv0_n32_N8S7856C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C20D0Ev,_ZTv0_n32_N8S7856C20D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C20D1Ev,_ZTv0_n44_N8S7856C20D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C20D0Ev,_ZTv0_n44_N8S7856C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C20__7S7856C2[] = {
  ABISELECT(48,24),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-400,-216),
  ABISELECT(-400,-216),
  ABISELECT(-64,-36),
  ABISELECT(-400,-216),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S7856C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C20D1Ev,_ZTv0_n44_N8S7856C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C20D0Ev,_ZTv0_n44_N8S7856C20D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C20__7S7856C2[] = {
  ABISELECT(-472,-252),
  ABISELECT(-136,-72),
  ABISELECT(-472,-252),
  ABISELECT(-472,-252),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7856C20[0]),
};
extern void ABISELECT(_ZThn40_N8S7856C20D1Ev,_ZThn20_N8S7856C20D1Ev)();
extern void ABISELECT(_ZThn40_N8S7856C20D0Ev,_ZThn20_N8S7856C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C21__8S7856C20__7S7856C2[] = {
  ABISELECT(-488,-260),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S7856C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S7856C20D1Ev,_ZThn20_N8S7856C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S7856C20D0Ev,_ZThn20_N8S7856C20D0Ev),
};
extern void _ZN8S7856C23D1Ev();
extern void _ZN8S7856C23D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C23__7S7856C2[] = {
  ABISELECT(-216,-116),
  ABISELECT(184,96),
  ABISELECT(-496,-264),
  ABISELECT(-496,-264),
  ABISELECT(136,72),
  ABISELECT(-80,-40),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-496,-264),
  ABISELECT(-112,-56),
  ABISELECT(-128,-64),
  ABISELECT(-144,-72),
  ABISELECT(-160,-84),
  ABISELECT(-192,-100),
  ABISELECT(-496,-264),
  ABISELECT(-160,-84),
  ABISELECT(-160,-84),
  ABISELECT(-496,-264),
  ABISELECT(-496,-264),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&_ZN8S7856C23D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C23D0Ev,
};
extern void _ZN8S7856C25D1Ev();
extern void _ZN8S7856C25D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C258S7856C23__7S7856C2[] = {
  ABISELECT(-496,-264),
  ABISELECT(-496,-264),
  ABISELECT(136,72),
  ABISELECT(-80,-40),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-496,-264),
  ABISELECT(-112,-56),
  ABISELECT(-128,-64),
  ABISELECT(-144,-72),
  ABISELECT(-160,-84),
  ABISELECT(-192,-100),
  ABISELECT(-496,-264),
  ABISELECT(-160,-84),
  ABISELECT(-160,-84),
  ABISELECT(-496,-264),
  ABISELECT(-496,-264),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&_ZN8S7856C25D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C25D0Ev,
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C138S7856C258S7856C23__A2__7S7856C2[] = {
  ABISELECT(-496,-264),
  ABISELECT(-160,-84),
  ABISELECT(-160,-84),
  ABISELECT(-496,-264),
  ABISELECT(-496,-264),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C138S7856C258S7856C23__A8__7S7856C2[] = {
  ABISELECT(-496,-264),
  ABISELECT(-496,-264),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C138S7856C258S7856C23__A2__7S7856C2[] = {
  ABISELECT(-336,-180),
  0,
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C268S7856C258S7856C23__7S7856C2[] = {
  ABISELECT(-512,-272),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C26[0]),
};
extern void _ZN7S7856C4D1Ev();
extern void _ZN7S7856C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C48S7856C258S7856C23__A1__7S7856C2[] = {
  ABISELECT(-104,-52),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-520,-276),
  ABISELECT(-136,-68),
  ABISELECT(-152,-76),
  ABISELECT(-184,-96),
  ABISELECT(-168,-84),
  ABISELECT(-184,-96),
  ABISELECT(-216,-112),
  ABISELECT(-520,-276),
  ABISELECT(-184,-96),
  ABISELECT(-520,-276),
  ABISELECT(-520,-276),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&_ZN7S7856C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C4D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C107S7856C48S7856C258S7856C23__A7__7S7856C2[] = {
  ABISELECT(-520,-276),
  ABISELECT(-184,-96),
  ABISELECT(-520,-276),
  ABISELECT(-520,-276),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C107S7856C48S7856C258S7856C23__A7__7S7856C2[] = {
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(184,96),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void _ZN8S7856C19D1Ev();
extern void _ZN8S7856C19D0Ev();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C2[] = {
  ABISELECT(-112,-56),
  ABISELECT(-144,-72),
  ABISELECT(-160,-80),
  ABISELECT(-192,-100),
  ABISELECT(-176,-88),
  ABISELECT(-528,-280),
  ABISELECT(-192,-100),
  ABISELECT(-528,-280),
  ABISELECT(-528,-280),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&_ZN8S7856C19D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C19D0Ev,
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void _ZN7S7856C6D1Ev();
extern void _ZN7S7856C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C68S7856C197S7856C48S7856C258S7856C23__A2__7S7856C2[] = {
  ABISELECT(-144,-72),
  ABISELECT(-160,-80),
  ABISELECT(-192,-100),
  ABISELECT(-176,-88),
  ABISELECT(-528,-280),
  ABISELECT(-192,-100),
  ABISELECT(-528,-280),
  ABISELECT(-528,-280),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&_ZN7S7856C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C6D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C68S7856C197S7856C48S7856C258S7856C23__A2__7S7856C2[] = {
  ABISELECT(176,88),
  ABISELECT(-352,-192),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-352,-192),
  ABISELECT(-352,-192),
  ABISELECT(176,88),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C68S7856C197S7856C48S7856C258S7856C23__A2__7S7856C2[] = {
  ABISELECT(-336,-180),
  0,
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C68S7856C197S7856C48S7856C258S7856C23__A2__7S7856C2[] = {
  ABISELECT(-368,-200),
  ABISELECT(-368,-200),
  ABISELECT(160,80),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C68S7856C197S7856C48S7856C258S7856C23__A2__7S7856C2[] = {
  ABISELECT(144,72),
  ABISELECT(-384,-208),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-384,-208),
  ABISELECT(-384,-208),
  ABISELECT(144,72),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C2[] = {
  ABISELECT(176,88),
  ABISELECT(-352,-192),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-352,-192),
  ABISELECT(-352,-192),
  ABISELECT(176,88),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C2[] = {
  ABISELECT(-336,-180),
  0,
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C2[] = {
  ABISELECT(-368,-200),
  ABISELECT(-368,-200),
  ABISELECT(160,80),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C2[] = {
  ABISELECT(144,72),
  ABISELECT(-384,-208),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-384,-208),
  ABISELECT(-384,-208),
  ABISELECT(144,72),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev),
};
extern void ABISELECT(_ZTv0_n72_N8S7856C19D1Ev,_ZTv0_n36_N8S7856C19D1Ev)();
extern void ABISELECT(_ZTv0_n72_N8S7856C19D0Ev,_ZTv0_n36_N8S7856C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C18__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C2[] = {
  ABISELECT(112,56),
  ABISELECT(-416,-224),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-416,-224),
  ABISELECT(-416,-224),
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C19D1Ev,_ZTv0_n36_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C19D0Ev,_ZTv0_n36_N8S7856C19D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C2[] = {
  ABISELECT(-432,-232),
  ABISELECT(-96,-52),
  ABISELECT(-432,-232),
  ABISELECT(-432,-232),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
extern void ABISELECT(_ZTv0_n120_N7S7856C4D1Ev,_ZTv0_n60_N7S7856C4D1Ev)();
extern void ABISELECT(_ZTv0_n120_N7S7856C4D0Ev,_ZTv0_n60_N7S7856C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__7S7856C48S7856C258S7856C23__A1__7S7856C2[] = {
  ABISELECT(216,112),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-304,-164),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-304,-164),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-304,-164),
  ABISELECT(-304,-164),
  ABISELECT(216,112),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C4D1Ev,_ZTv0_n60_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C4D0Ev,_ZTv0_n60_N7S7856C4D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C48S7856C258S7856C23__A1__7S7856C2[] = {
  ABISELECT(184,96),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-336,-180),
  0,
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(184,96),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C48S7856C258S7856C23__A1__7S7856C2[] = {
  ABISELECT(168,84),
  ABISELECT(-352,-192),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-352,-192),
  ABISELECT(-352,-192),
  ABISELECT(168,84),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C48S7856C258S7856C23__A1__7S7856C2[] = {
  ABISELECT(-368,-200),
  ABISELECT(-368,-200),
  ABISELECT(152,76),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C48S7856C258S7856C23__A1__7S7856C2[] = {
  ABISELECT(136,68),
  ABISELECT(-384,-208),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-384,-208),
  ABISELECT(-384,-208),
  ABISELECT(136,68),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C48S7856C258S7856C23__A1__7S7856C2[] = {
  ABISELECT(120,60),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-400,-216),
  ABISELECT(-400,-216),
  ABISELECT(-64,-36),
  ABISELECT(-400,-216),
  ABISELECT(120,60),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__7S7856C48S7856C258S7856C23__A1__7S7856C2[] = {
  ABISELECT(-320,-172),
  ABISELECT(16,8),
  ABISELECT(-320,-172),
  ABISELECT(-320,-172),
  ABISELECT(200,104),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
extern void ABISELECT(_ZThn8_N7S7856C4D1Ev,_ZThn4_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn8_N7S7856C4D0Ev,_ZThn4_N7S7856C4D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C19__7S7856C48S7856C258S7856C23__A1__7S7856C2[] = {
  ABISELECT(-112,-56),
  ABISELECT(-144,-72),
  ABISELECT(-160,-80),
  ABISELECT(-192,-100),
  ABISELECT(-176,-88),
  ABISELECT(-528,-280),
  ABISELECT(-192,-100),
  ABISELECT(-528,-280),
  ABISELECT(-528,-280),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7856C4D1Ev,_ZThn4_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7856C4D0Ev,_ZThn4_N7S7856C4D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N7S7856C4D1Ev,_ZTv0_n36_N7S7856C4D1Ev)();
extern void ABISELECT(_ZTv0_n72_N7S7856C4D0Ev,_ZTv0_n36_N7S7856C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C18__A1__7S7856C48S7856C258S7856C23__A1__7S7856C2[] = {
  ABISELECT(104,52),
  ABISELECT(-416,-224),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-416,-224),
  ABISELECT(-416,-224),
  ABISELECT(104,52),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7856C4D1Ev,_ZTv0_n36_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7856C4D0Ev,_ZTv0_n36_N7S7856C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A3__7S7856C48S7856C258S7856C23__A1__7S7856C2[] = {
  ABISELECT(-432,-232),
  ABISELECT(-96,-52),
  ABISELECT(-432,-232),
  ABISELECT(-432,-232),
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
extern void _ZN7S7856C5D1Ev();
extern void _ZN7S7856C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C58S7856C258S7856C23__A3__7S7856C2[] = {
  ABISELECT(-144,-76),
  ABISELECT(-144,-76),
  ABISELECT(-544,-292),
  ABISELECT(-176,-92),
  ABISELECT(-192,-100),
  ABISELECT(-208,-112),
  ABISELECT(-544,-292),
  ABISELECT(-208,-112),
  ABISELECT(-208,-112),
  ABISELECT(-160,-84),
  ABISELECT(-544,-292),
  ABISELECT(-544,-292),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&_ZN7S7856C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C5D0Ev,
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C187S7856C58S7856C258S7856C23__A4__7S7856C2[] = {
  ABISELECT(-544,-292),
  ABISELECT(-208,-112),
  ABISELECT(-208,-112),
  ABISELECT(-160,-84),
  ABISELECT(-544,-292),
  ABISELECT(-544,-292),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C187S7856C58S7856C258S7856C23__A5__7S7856C2[] = {
  ABISELECT(-544,-292),
  ABISELECT(-544,-292),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C187S7856C58S7856C258S7856C23__A10__7S7856C2[] = {
  ABISELECT(-544,-292),
  ABISELECT(-544,-292),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C58S7856C258S7856C23__A8__7S7856C2[] = {
  ABISELECT(-560,-300),
  ABISELECT(-224,-120),
  ABISELECT(-560,-300),
  ABISELECT(-560,-300),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C187S7856C58S7856C258S7856C23__A8__7S7856C2[] = {
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(224,120),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C187S7856C58S7856C258S7856C23__A4__7S7856C2[] = {
  ABISELECT(160,84),
  ABISELECT(-384,-208),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-384,-208),
  ABISELECT(-384,-208),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C187S7856C58S7856C258S7856C23__A4__7S7856C2[] = {
  ABISELECT(-336,-180),
  0,
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(208,112),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C187S7856C58S7856C258S7856C23__A4__7S7856C2[] = {
  ABISELECT(-560,-300),
  ABISELECT(-224,-120),
  ABISELECT(-560,-300),
  ABISELECT(-560,-300),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C58S7856C258S7856C23__A3__7S7856C2[] = {
  ABISELECT(208,112),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-336,-180),
  0,
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(208,112),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C58S7856C258S7856C23__A3__7S7856C2[] = {
  ABISELECT(192,100),
  ABISELECT(-352,-192),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-352,-192),
  ABISELECT(-352,-192),
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C58S7856C258S7856C23__A3__7S7856C2[] = {
  ABISELECT(-368,-200),
  ABISELECT(-368,-200),
  ABISELECT(176,92),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C58S7856C258S7856C23__A3__7S7856C2[] = {
  ABISELECT(160,84),
  ABISELECT(-384,-208),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-384,-208),
  ABISELECT(-384,-208),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C58S7856C258S7856C23__A3__7S7856C2[] = {
  ABISELECT(144,76),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-400,-216),
  ABISELECT(-400,-216),
  ABISELECT(-64,-36),
  ABISELECT(-400,-216),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__7S7856C58S7856C258S7856C23__A3__7S7856C2[] = {
  ABISELECT(-560,-300),
  ABISELECT(-224,-120),
  ABISELECT(-560,-300),
  ABISELECT(-560,-300),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C25D1Ev,_ZTv0_n44_N8S7856C25D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C25D0Ev,_ZTv0_n44_N8S7856C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C258S7856C23__7S7856C2[] = {
  ABISELECT(160,84),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-336,-180),
  0,
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C25D1Ev,_ZTv0_n44_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C25D0Ev,_ZTv0_n44_N8S7856C25D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C26__8S7856C258S7856C23__7S7856C2[] = {
  ABISELECT(-512,-272),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
};
extern void ABISELECT(_ZThn24_N8S7856C25D1Ev,_ZThn12_N8S7856C25D1Ev)();
extern void ABISELECT(_ZThn24_N8S7856C25D0Ev,_ZThn12_N8S7856C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C4__8S7856C258S7856C23__7S7856C2[] = {
  ABISELECT(-104,-52),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-520,-276),
  ABISELECT(-136,-68),
  ABISELECT(-152,-76),
  ABISELECT(-184,-96),
  ABISELECT(-168,-84),
  ABISELECT(-184,-96),
  ABISELECT(-216,-112),
  ABISELECT(-520,-276),
  ABISELECT(-184,-96),
  ABISELECT(-520,-276),
  ABISELECT(-520,-276),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S7856C25D1Ev,_ZThn12_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S7856C25D0Ev,_ZThn12_N8S7856C25D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S7856C25D1Ev,_ZTv0_n60_N8S7856C25D1Ev)();
extern void ABISELECT(_ZTv0_n120_N8S7856C25D0Ev,_ZTv0_n60_N8S7856C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__8S7856C258S7856C23__7S7856C2[] = {
  ABISELECT(192,100),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-304,-164),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-304,-164),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-304,-164),
  ABISELECT(-304,-164),
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C25D1Ev,_ZTv0_n60_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C25D0Ev,_ZTv0_n60_N8S7856C25D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C25D1Ev,_ZTv0_n32_N8S7856C25D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C25D0Ev,_ZTv0_n32_N8S7856C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C258S7856C23__7S7856C2[] = {
  ABISELECT(144,72),
  ABISELECT(-352,-192),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-352,-192),
  ABISELECT(-352,-192),
  ABISELECT(144,72),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C25D1Ev,_ZTv0_n32_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C25D0Ev,_ZTv0_n32_N8S7856C25D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C258S7856C23__7S7856C2[] = {
  ABISELECT(-368,-200),
  ABISELECT(-368,-200),
  ABISELECT(128,64),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C25D1Ev,_ZTv0_n32_N8S7856C25D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C25D0Ev,_ZTv0_n32_N8S7856C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A2__8S7856C258S7856C23__7S7856C2[] = {
  ABISELECT(112,56),
  ABISELECT(-384,-208),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-384,-208),
  ABISELECT(-384,-208),
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C25D1Ev,_ZTv0_n32_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C25D0Ev,_ZTv0_n32_N8S7856C25D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C25D1Ev,_ZTv0_n44_N8S7856C25D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C25D0Ev,_ZTv0_n44_N8S7856C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C258S7856C23__7S7856C2[] = {
  ABISELECT(96,48),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-400,-216),
  ABISELECT(-400,-216),
  ABISELECT(-64,-36),
  ABISELECT(-400,-216),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C25D1Ev,_ZTv0_n44_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C25D0Ev,_ZTv0_n44_N8S7856C25D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C258S7856C23__7S7856C2[] = {
  ABISELECT(-320,-172),
  ABISELECT(16,8),
  ABISELECT(-320,-172),
  ABISELECT(-320,-172),
  ABISELECT(176,92),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
};
extern void ABISELECT(_ZThn32_N8S7856C25D1Ev,_ZThn16_N8S7856C25D1Ev)();
extern void ABISELECT(_ZThn32_N8S7856C25D0Ev,_ZThn16_N8S7856C25D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C197S7856C4__8S7856C258S7856C23__7S7856C2[] = {
  ABISELECT(-112,-56),
  ABISELECT(-144,-72),
  ABISELECT(-160,-80),
  ABISELECT(-192,-100),
  ABISELECT(-176,-88),
  ABISELECT(-528,-280),
  ABISELECT(-192,-100),
  ABISELECT(-528,-280),
  ABISELECT(-528,-280),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S7856C25D1Ev,_ZThn16_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S7856C25D0Ev,_ZThn16_N8S7856C25D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N8S7856C25D1Ev,_ZTv0_n36_N8S7856C25D1Ev)();
extern void ABISELECT(_ZTv0_n72_N8S7856C25D0Ev,_ZTv0_n36_N8S7856C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C18__A1__8S7856C258S7856C23__7S7856C2[] = {
  ABISELECT(80,40),
  ABISELECT(-416,-224),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-416,-224),
  ABISELECT(-416,-224),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C25D1Ev,_ZTv0_n36_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C25D0Ev,_ZTv0_n36_N8S7856C25D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A3__8S7856C258S7856C23__7S7856C2[] = {
  ABISELECT(-432,-232),
  ABISELECT(-96,-52),
  ABISELECT(-432,-232),
  ABISELECT(-432,-232),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
};
extern void ABISELECT(_ZTv0_n144_N8S7856C25D1Ev,_ZTv0_n72_N8S7856C25D1Ev)();
extern void ABISELECT(_ZThn136_N8S7856C25D1Ev,_ZThn72_N8S7856C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N8S7856C25D0Ev,_ZTv0_n72_N8S7856C25D0Ev)();
extern void ABISELECT(_ZThn136_N8S7856C25D0Ev,_ZThn72_N8S7856C25D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C27__8S7856C258S7856C23__7S7856C2[] = {
  ABISELECT(-136,-72),
  ABISELECT(-632,-336),
  ABISELECT(-232,-120),
  ABISELECT(-632,-336),
  ABISELECT(-248,-128),
  ABISELECT(-296,-156),
  ABISELECT(-328,-172),
  ABISELECT(-632,-336),
  ABISELECT(-296,-156),
  ABISELECT(-280,-144),
  ABISELECT(-264,-136),
  ABISELECT(-232,-120),
  ABISELECT(-632,-336),
  ABISELECT(-632,-336),
  ABISELECT(-296,-156),
  ABISELECT(-632,-336),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S7856C25D1Ev,_ZTv0_n72_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S7856C25D0Ev,_ZTv0_n72_N8S7856C25D0Ev),
};
extern void ABISELECT(_ZTvn16_n144_N8S7856C25D1Ev,_ZTvn8_n72_N8S7856C25D1Ev)();
extern void ABISELECT(_ZTvn16_n144_N8S7856C25D0Ev,_ZTvn8_n72_N8S7856C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C288S7856C27__8S7856C258S7856C23__7S7856C2[] = {
  ABISELECT(-248,-128),
  ABISELECT(-248,-128),
  ABISELECT(-648,-344),
  ABISELECT(-264,-136),
  ABISELECT(-312,-164),
  ABISELECT(-344,-180),
  ABISELECT(-296,-152),
  ABISELECT(-648,-344),
  ABISELECT(-280,-144),
  ABISELECT(-648,-344),
  ABISELECT(-312,-164),
  ABISELECT(-312,-164),
  ABISELECT(-648,-344),
  ABISELECT(-648,-344),
  ABISELECT(-152,-80),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n144_N8S7856C25D1Ev,_ZTvn8_n72_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n144_N8S7856C25D0Ev,_ZTvn8_n72_N8S7856C25D0Ev),
};
extern void ABISELECT(_ZTv0_n128_N8S7856C25D1Ev,_ZTv0_n64_N8S7856C25D1Ev)();
extern void ABISELECT(_ZTv0_n128_N8S7856C25D0Ev,_ZTv0_n64_N8S7856C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C29__8S7856C258S7856C23__7S7856C2[] = {
  ABISELECT(496,264),
  ABISELECT(400,216),
  ABISELECT(400,216),
  0,
  ABISELECT(384,208),
  ABISELECT(368,200),
  ABISELECT(336,180),
  ABISELECT(304,164),
  ABISELECT(336,180),
  ABISELECT(352,192),
  0,
  ABISELECT(336,180),
  0,
  0,
  ABISELECT(496,264),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C25D1Ev,_ZTv0_n64_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C25D0Ev,_ZTv0_n64_N8S7856C25D0Ev),
};
extern void ABISELECT(_ZTvn32_n144_N8S7856C25D1Ev,_ZTvn16_n72_N8S7856C25D1Ev)();
extern void ABISELECT(_ZTvn32_n144_N8S7856C25D0Ev,_ZTvn16_n72_N8S7856C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C218S7856C288S7856C27__8S7856C258S7856C23__7S7856C2[] = {
  ABISELECT(-664,-352),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n144_N8S7856C25D1Ev,_ZTvn16_n72_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n144_N8S7856C25D0Ev,_ZTvn16_n72_N8S7856C25D0Ev),
};
extern void ABISELECT(_ZThn48_N8S7856C25D1Ev,_ZThn28_N8S7856C25D1Ev)();
extern void ABISELECT(_ZThn48_N8S7856C25D0Ev,_ZThn28_N8S7856C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__A__8S7856C258S7856C23__7S7856C2[] = {
  ABISELECT(-144,-76),
  ABISELECT(-144,-76),
  ABISELECT(-544,-292),
  ABISELECT(-176,-92),
  ABISELECT(-192,-100),
  ABISELECT(-208,-112),
  ABISELECT(-544,-292),
  ABISELECT(-208,-112),
  ABISELECT(-208,-112),
  ABISELECT(-160,-84),
  ABISELECT(-544,-292),
  ABISELECT(-544,-292),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7856C25D1Ev,_ZThn28_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7856C25D0Ev,_ZThn28_N8S7856C25D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A4__8S7856C258S7856C23__7S7856C2[] = {
  ABISELECT(-560,-300),
  ABISELECT(-224,-120),
  ABISELECT(-560,-300),
  ABISELECT(-560,-300),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C138S7856C23__A4__7S7856C2[] = {
  ABISELECT(-576,-308),
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  ABISELECT(-576,-308),
  ABISELECT(-576,-308),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C138S7856C23__A11__7S7856C2[] = {
  ABISELECT(-576,-308),
  ABISELECT(-576,-308),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C138S7856C23__A4__7S7856C2[] = {
  ABISELECT(-336,-180),
  0,
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(240,128),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C23__7S7856C2[] = {
  ABISELECT(-368,-200),
  ABISELECT(-368,-200),
  ABISELECT(128,64),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C23D1Ev,_ZTv0_n44_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C23D0Ev,_ZTv0_n44_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C23__7S7856C2[] = {
  ABISELECT(160,84),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-336,-180),
  0,
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C23D1Ev,_ZTv0_n44_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C23D0Ev,_ZTv0_n44_N8S7856C23D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C268S7856C25__8S7856C23__7S7856C2[] = {
  ABISELECT(-512,-272),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
};
extern void ABISELECT(_ZThn24_N8S7856C23D1Ev,_ZThn12_N8S7856C23D1Ev)();
extern void ABISELECT(_ZThn24_N8S7856C23D0Ev,_ZThn12_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C48S7856C25__8S7856C23__7S7856C2[] = {
  ABISELECT(-104,-52),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-520,-276),
  ABISELECT(-136,-68),
  ABISELECT(-152,-76),
  ABISELECT(-184,-96),
  ABISELECT(-168,-84),
  ABISELECT(-184,-96),
  ABISELECT(-216,-112),
  ABISELECT(-520,-276),
  ABISELECT(-184,-96),
  ABISELECT(-520,-276),
  ABISELECT(-520,-276),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S7856C23D1Ev,_ZThn12_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S7856C23D0Ev,_ZThn12_N8S7856C23D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S7856C23D1Ev,_ZTv0_n60_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTv0_n120_N8S7856C23D0Ev,_ZTv0_n60_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__8S7856C23__7S7856C2[] = {
  ABISELECT(192,100),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-304,-164),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-304,-164),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-304,-164),
  ABISELECT(-304,-164),
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C23D1Ev,_ZTv0_n60_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C23D0Ev,_ZTv0_n60_N8S7856C23D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C23D1Ev,_ZTv0_n32_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C23D0Ev,_ZTv0_n32_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C23__7S7856C2[] = {
  ABISELECT(144,72),
  ABISELECT(-352,-192),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-352,-192),
  ABISELECT(-352,-192),
  ABISELECT(144,72),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C23D1Ev,_ZTv0_n32_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C23D0Ev,_ZTv0_n32_N8S7856C23D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C23D1Ev,_ZTv0_n32_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C23D0Ev,_ZTv0_n32_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A2__8S7856C23__7S7856C2[] = {
  ABISELECT(112,56),
  ABISELECT(-384,-208),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-384,-208),
  ABISELECT(-384,-208),
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C23D1Ev,_ZTv0_n32_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C23D0Ev,_ZTv0_n32_N8S7856C23D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C23D1Ev,_ZTv0_n44_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C23D0Ev,_ZTv0_n44_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C23__7S7856C2[] = {
  ABISELECT(96,48),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-400,-216),
  ABISELECT(-400,-216),
  ABISELECT(-64,-36),
  ABISELECT(-400,-216),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C23D1Ev,_ZTv0_n44_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C23D0Ev,_ZTv0_n44_N8S7856C23D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C23__7S7856C2[] = {
  ABISELECT(-320,-172),
  ABISELECT(16,8),
  ABISELECT(-320,-172),
  ABISELECT(-320,-172),
  ABISELECT(176,92),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
};
extern void ABISELECT(_ZThn32_N8S7856C23D1Ev,_ZThn16_N8S7856C23D1Ev)();
extern void ABISELECT(_ZThn32_N8S7856C23D0Ev,_ZThn16_N8S7856C23D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C197S7856C48S7856C25__8S7856C23__7S7856C2[] = {
  ABISELECT(-112,-56),
  ABISELECT(-144,-72),
  ABISELECT(-160,-80),
  ABISELECT(-192,-100),
  ABISELECT(-176,-88),
  ABISELECT(-528,-280),
  ABISELECT(-192,-100),
  ABISELECT(-528,-280),
  ABISELECT(-528,-280),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S7856C23D1Ev,_ZThn16_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S7856C23D0Ev,_ZThn16_N8S7856C23D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N8S7856C23D1Ev,_ZTv0_n36_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTv0_n72_N8S7856C23D0Ev,_ZTv0_n36_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C18__A1__8S7856C23__7S7856C2[] = {
  ABISELECT(80,40),
  ABISELECT(-416,-224),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-416,-224),
  ABISELECT(-416,-224),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C23D1Ev,_ZTv0_n36_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C23D0Ev,_ZTv0_n36_N8S7856C23D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A3__8S7856C23__7S7856C2[] = {
  ABISELECT(-432,-232),
  ABISELECT(-96,-52),
  ABISELECT(-432,-232),
  ABISELECT(-432,-232),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
};
extern void ABISELECT(_ZTv0_n144_N8S7856C23D1Ev,_ZTv0_n72_N8S7856C23D1Ev)();
extern void ABISELECT(_ZThn136_N8S7856C23D1Ev,_ZThn72_N8S7856C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N8S7856C23D0Ev,_ZTv0_n72_N8S7856C23D0Ev)();
extern void ABISELECT(_ZThn136_N8S7856C23D0Ev,_ZThn72_N8S7856C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C27__8S7856C23__7S7856C2[] = {
  ABISELECT(-136,-72),
  ABISELECT(-632,-336),
  ABISELECT(-232,-120),
  ABISELECT(-632,-336),
  ABISELECT(-248,-128),
  ABISELECT(-296,-156),
  ABISELECT(-328,-172),
  ABISELECT(-632,-336),
  ABISELECT(-296,-156),
  ABISELECT(-280,-144),
  ABISELECT(-264,-136),
  ABISELECT(-232,-120),
  ABISELECT(-632,-336),
  ABISELECT(-632,-336),
  ABISELECT(-296,-156),
  ABISELECT(-632,-336),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S7856C23D1Ev,_ZTv0_n72_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S7856C23D0Ev,_ZTv0_n72_N8S7856C23D0Ev),
};
extern void ABISELECT(_ZTvn16_n144_N8S7856C23D1Ev,_ZTvn8_n72_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTvn16_n144_N8S7856C23D0Ev,_ZTvn8_n72_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C288S7856C27__8S7856C23__7S7856C2[] = {
  ABISELECT(-248,-128),
  ABISELECT(-248,-128),
  ABISELECT(-648,-344),
  ABISELECT(-264,-136),
  ABISELECT(-312,-164),
  ABISELECT(-344,-180),
  ABISELECT(-296,-152),
  ABISELECT(-648,-344),
  ABISELECT(-280,-144),
  ABISELECT(-648,-344),
  ABISELECT(-312,-164),
  ABISELECT(-312,-164),
  ABISELECT(-648,-344),
  ABISELECT(-648,-344),
  ABISELECT(-152,-80),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n144_N8S7856C23D1Ev,_ZTvn8_n72_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n144_N8S7856C23D0Ev,_ZTvn8_n72_N8S7856C23D0Ev),
};
extern void ABISELECT(_ZTv0_n128_N8S7856C23D1Ev,_ZTv0_n64_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTv0_n128_N8S7856C23D0Ev,_ZTv0_n64_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C29__8S7856C23__7S7856C2[] = {
  ABISELECT(496,264),
  ABISELECT(400,216),
  ABISELECT(400,216),
  0,
  ABISELECT(384,208),
  ABISELECT(368,200),
  ABISELECT(336,180),
  ABISELECT(304,164),
  ABISELECT(336,180),
  ABISELECT(352,192),
  0,
  ABISELECT(336,180),
  0,
  0,
  ABISELECT(496,264),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C23D1Ev,_ZTv0_n64_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C23D0Ev,_ZTv0_n64_N8S7856C23D0Ev),
};
extern void ABISELECT(_ZTvn32_n144_N8S7856C23D1Ev,_ZTvn16_n72_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTvn32_n144_N8S7856C23D0Ev,_ZTvn16_n72_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C218S7856C288S7856C27__8S7856C23__7S7856C2[] = {
  ABISELECT(-664,-352),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n144_N8S7856C23D1Ev,_ZTvn16_n72_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n144_N8S7856C23D0Ev,_ZTvn16_n72_N8S7856C23D0Ev),
};
extern void ABISELECT(_ZThn48_N8S7856C23D1Ev,_ZThn28_N8S7856C23D1Ev)();
extern void ABISELECT(_ZThn48_N8S7856C23D0Ev,_ZThn28_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C58S7856C25__A1__8S7856C23__7S7856C2[] = {
  ABISELECT(-144,-76),
  ABISELECT(-144,-76),
  ABISELECT(-544,-292),
  ABISELECT(-176,-92),
  ABISELECT(-192,-100),
  ABISELECT(-208,-112),
  ABISELECT(-544,-292),
  ABISELECT(-208,-112),
  ABISELECT(-208,-112),
  ABISELECT(-160,-84),
  ABISELECT(-544,-292),
  ABISELECT(-544,-292),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7856C23D1Ev,_ZThn28_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7856C23D0Ev,_ZThn28_N8S7856C23D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C58S7856C25__A4__8S7856C23__7S7856C2[] = {
  ABISELECT(-560,-300),
  ABISELECT(-224,-120),
  ABISELECT(-560,-300),
  ABISELECT(-560,-300),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
};
extern void ABISELECT(_ZThn80_N8S7856C23D1Ev,_ZThn44_N8S7856C23D1Ev)();
extern void ABISELECT(_ZThn80_N8S7856C23D0Ev,_ZThn44_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A__8S7856C23__7S7856C2[] = {
  ABISELECT(-576,-308),
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  ABISELECT(-576,-308),
  ABISELECT(-576,-308),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S7856C23D1Ev,_ZThn44_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S7856C23D0Ev,_ZThn44_N8S7856C23D0Ev),
};
extern void ABISELECT(_ZTv0_n144_N8S7856C23D1Ev,_ZTv0_n72_N8S7856C23D1Ev)();
extern void ABISELECT(_ZThn184_N8S7856C23D1Ev,_ZThn96_N8S7856C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N8S7856C23D0Ev,_ZTv0_n72_N8S7856C23D0Ev)();
extern void ABISELECT(_ZThn184_N8S7856C23D0Ev,_ZThn96_N8S7856C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C22__8S7856C23__7S7856C2[] = {
  ABISELECT(-184,-96),
  ABISELECT(-264,-136),
  ABISELECT(-376,-196),
  ABISELECT(-400,-212),
  ABISELECT(-280,-144),
  ABISELECT(-280,-144),
  ABISELECT(-680,-360),
  ABISELECT(-296,-152),
  ABISELECT(-312,-160),
  ABISELECT(-344,-180),
  ABISELECT(-328,-168),
  ABISELECT(-344,-180),
  ABISELECT(-680,-360),
  ABISELECT(-344,-180),
  ABISELECT(-680,-360),
  ABISELECT(-680,-360),
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S7856C23D1Ev,_ZTv0_n72_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S7856C23D0Ev,_ZTv0_n72_N8S7856C23D0Ev),
};
extern void ABISELECT(_ZTvn8_n144_N8S7856C23D1Ev,_ZTvn4_n72_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTvn8_n144_N8S7856C23D0Ev,_ZTvn4_n72_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C58S7856C22__A2__8S7856C23__7S7856C2[] = {
  ABISELECT(-288,-148),
  ABISELECT(-288,-148),
  ABISELECT(-688,-364),
  ABISELECT(-320,-164),
  ABISELECT(-336,-172),
  ABISELECT(-352,-184),
  ABISELECT(-688,-364),
  ABISELECT(-352,-184),
  ABISELECT(-352,-184),
  ABISELECT(-304,-156),
  ABISELECT(-688,-364),
  ABISELECT(-688,-364),
  ABISELECT(-192,-100),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n144_N8S7856C23D1Ev,_ZTvn4_n72_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n144_N8S7856C23D0Ev,_ZTvn4_n72_N8S7856C23D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C58S7856C22__A6__8S7856C23__7S7856C2[] = {
  ABISELECT(-704,-372),
  ABISELECT(-368,-192),
  ABISELECT(-704,-372),
  ABISELECT(-704,-372),
  ABISELECT(-208,-108),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
};
extern void ABISELECT(_ZTv0_n136_N8S7856C23D1Ev,_ZTv0_n68_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTv0_n136_N8S7856C23D0Ev,_ZTv0_n68_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C4__A1__8S7856C23__7S7856C2[] = {
  ABISELECT(8,4),
  ABISELECT(216,116),
  ABISELECT(136,76),
  ABISELECT(120,68),
  ABISELECT(120,68),
  ABISELECT(-280,-148),
  ABISELECT(104,60),
  ABISELECT(88,52),
  ABISELECT(56,32),
  ABISELECT(72,44),
  ABISELECT(56,32),
  ABISELECT(24,16),
  ABISELECT(-280,-148),
  ABISELECT(56,32),
  ABISELECT(-280,-148),
  ABISELECT(-280,-148),
  ABISELECT(216,116),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S7856C23D1Ev,_ZTv0_n68_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S7856C23D0Ev,_ZTv0_n68_N8S7856C23D0Ev),
};
extern void ABISELECT(_ZTvn8_n136_N8S7856C23D1Ev,_ZTvn4_n68_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTvn8_n136_N8S7856C23D0Ev,_ZTvn4_n68_N8S7856C23D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C197S7856C4__A1__8S7856C23__7S7856C2[] = {
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(48,28),
  ABISELECT(64,40),
  ABISELECT(-288,-152),
  ABISELECT(48,28),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(208,112),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N8S7856C23D1Ev,_ZTvn4_n68_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N8S7856C23D0Ev,_ZTvn4_n68_N8S7856C23D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void _ZN8S7856C27D1Ev();
extern void _ZN8S7856C27D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C27__7S7856C2[] = {
  ABISELECT(-632,-336),
  ABISELECT(-232,-120),
  ABISELECT(-632,-336),
  ABISELECT(-248,-128),
  ABISELECT(-296,-156),
  ABISELECT(-328,-172),
  ABISELECT(-632,-336),
  ABISELECT(-296,-156),
  ABISELECT(-280,-144),
  ABISELECT(-264,-136),
  ABISELECT(-232,-120),
  ABISELECT(-632,-336),
  ABISELECT(-632,-336),
  ABISELECT(-296,-156),
  ABISELECT(-632,-336),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&_ZN8S7856C27D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C27D0Ev,
};
extern void _ZN8S7856C16D1Ev();
extern void _ZN8S7856C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C168S7856C27__A1__7S7856C2[] = {
  ABISELECT(-296,-156),
  ABISELECT(-280,-144),
  ABISELECT(-264,-136),
  ABISELECT(-232,-120),
  ABISELECT(-632,-336),
  ABISELECT(-632,-336),
  ABISELECT(-296,-156),
  ABISELECT(-632,-336),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&_ZN8S7856C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C168S7856C27__A1__7S7856C2[] = {
  ABISELECT(-336,-180),
  0,
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(296,156),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt__8S7856C168S7856C27__A1__7S7856C2[] = {
  ABISELECT(-400,-216),
  ABISELECT(232,120),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C168S7856C27__A1__7S7856C2[] = {
  ABISELECT(-368,-200),
  ABISELECT(-368,-200),
  ABISELECT(264,136),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C168S7856C27__A1__7S7856C2[] = {
  ABISELECT(280,144),
  ABISELECT(-352,-192),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-352,-192),
  ABISELECT(-352,-192),
  ABISELECT(280,144),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev),
};
extern void _ZN8S7856C28D1Ev();
extern void _ZN8S7856C28D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C288S7856C27__7S7856C2[] = {
  ABISELECT(-248,-128),
  ABISELECT(-248,-128),
  ABISELECT(-648,-344),
  ABISELECT(-264,-136),
  ABISELECT(-312,-164),
  ABISELECT(-344,-180),
  ABISELECT(-296,-152),
  ABISELECT(-648,-344),
  ABISELECT(-280,-144),
  ABISELECT(-648,-344),
  ABISELECT(-312,-164),
  ABISELECT(-312,-164),
  ABISELECT(-648,-344),
  ABISELECT(-648,-344),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&_ZN8S7856C28D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C28D0Ev,
};
extern void _ZN7S7856C7D1Ev();
extern void _ZN7S7856C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C78S7856C288S7856C27__A1__7S7856C2[] = {
  ABISELECT(-648,-344),
  ABISELECT(-312,-164),
  ABISELECT(-312,-164),
  ABISELECT(-648,-344),
  ABISELECT(-648,-344),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
  (VTBL_ENTRY)&_ZN7S7856C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C7D0Ev,
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C137S7856C78S7856C288S7856C27__A3__7S7856C2[] = {
  ABISELECT(-648,-344),
  ABISELECT(-312,-164),
  ABISELECT(-312,-164),
  ABISELECT(-648,-344),
  ABISELECT(-648,-344),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C137S7856C78S7856C288S7856C27__A9__7S7856C2[] = {
  ABISELECT(-648,-344),
  ABISELECT(-648,-344),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C137S7856C78S7856C288S7856C27__A3__7S7856C2[] = {
  ABISELECT(-336,-180),
  0,
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(312,164),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C78S7856C288S7856C27__A1__7S7856C2[] = {
  ABISELECT(-336,-180),
  0,
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(312,164),
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
};
extern void _ZN8S7856C21D1Ev();
extern void _ZN8S7856C21D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C218S7856C288S7856C27__A1__7S7856C2[] = {
  ABISELECT(-664,-352),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C21[0]),
  (VTBL_ENTRY)&_ZN8S7856C21D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C21D0Ev,
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt8S7856C218S7856C288S7856C27__A3__7S7856C2[] = {
  ABISELECT(-664,-352),
  0,
  (VTBL_ENTRY)&(_ZTI11S7856C17_nt[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C28D1Ev,_ZTv0_n44_N8S7856C28D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C28D0Ev,_ZTv0_n44_N8S7856C28D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C288S7856C27__7S7856C2[] = {
  ABISELECT(312,164),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-336,-180),
  0,
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(312,164),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C28D1Ev,_ZTv0_n44_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C28D0Ev,_ZTv0_n44_N8S7856C28D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C288S7856C27__7S7856C2[] = {
  ABISELECT(-368,-200),
  ABISELECT(-368,-200),
  ABISELECT(280,144),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
};
extern void ABISELECT(_ZTv0_n128_N8S7856C28D1Ev,_ZTv0_n64_N8S7856C28D1Ev)();
extern void ABISELECT(_ZTv0_n128_N8S7856C28D0Ev,_ZTv0_n64_N8S7856C28D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C29__8S7856C288S7856C27__7S7856C2[] = {
  ABISELECT(648,344),
  ABISELECT(400,216),
  ABISELECT(400,216),
  0,
  ABISELECT(384,208),
  ABISELECT(368,200),
  ABISELECT(336,180),
  ABISELECT(304,164),
  ABISELECT(336,180),
  ABISELECT(352,192),
  0,
  ABISELECT(336,180),
  0,
  0,
  ABISELECT(648,344),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C28D1Ev,_ZTv0_n64_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C28D0Ev,_ZTv0_n64_N8S7856C28D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C28D1Ev,_ZTv0_n32_N8S7856C28D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C28D0Ev,_ZTv0_n32_N8S7856C28D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__A1__8S7856C288S7856C27__7S7856C2[] = {
  ABISELECT(296,152),
  ABISELECT(-352,-192),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-352,-192),
  ABISELECT(-352,-192),
  ABISELECT(296,152),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C28D1Ev,_ZTv0_n32_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C28D0Ev,_ZTv0_n32_N8S7856C28D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S7856C28D1Ev,_ZTv0_n60_N8S7856C28D1Ev)();
extern void ABISELECT(_ZTv0_n120_N8S7856C28D0Ev,_ZTv0_n60_N8S7856C28D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__8S7856C288S7856C27__7S7856C2[] = {
  ABISELECT(344,180),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-304,-164),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-304,-164),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-304,-164),
  ABISELECT(-304,-164),
  ABISELECT(344,180),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C28D1Ev,_ZTv0_n60_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C28D0Ev,_ZTv0_n60_N8S7856C28D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C28D1Ev,_ZTv0_n32_N8S7856C28D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C28D0Ev,_ZTv0_n32_N8S7856C28D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A2__8S7856C288S7856C27__7S7856C2[] = {
  ABISELECT(264,136),
  ABISELECT(-384,-208),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-384,-208),
  ABISELECT(-384,-208),
  ABISELECT(264,136),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C28D1Ev,_ZTv0_n32_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C28D0Ev,_ZTv0_n32_N8S7856C28D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C28D1Ev,_ZTv0_n44_N8S7856C28D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C28D0Ev,_ZTv0_n44_N8S7856C28D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C288S7856C27__7S7856C2[] = {
  ABISELECT(248,128),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-400,-216),
  ABISELECT(-400,-216),
  ABISELECT(-64,-36),
  ABISELECT(-400,-216),
  ABISELECT(248,128),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C28D1Ev,_ZTv0_n44_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C28D0Ev,_ZTv0_n44_N8S7856C28D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C288S7856C27__7S7856C2[] = {
  ABISELECT(-320,-172),
  ABISELECT(16,8),
  ABISELECT(-320,-172),
  ABISELECT(-320,-172),
  ABISELECT(328,172),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
};
extern void ABISELECT(_ZThn16_N8S7856C28D1Ev,_ZThn8_N8S7856C28D1Ev)();
extern void ABISELECT(_ZThn16_N8S7856C28D0Ev,_ZThn8_N8S7856C28D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C21__8S7856C288S7856C27__7S7856C2[] = {
  ABISELECT(-664,-352),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S7856C28D1Ev,_ZThn8_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S7856C28D0Ev,_ZThn8_N8S7856C28D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C27D1Ev,_ZTv0_n44_N8S7856C27D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C27D0Ev,_ZTv0_n44_N8S7856C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C27__7S7856C2[] = {
  ABISELECT(296,156),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-336,-180),
  0,
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(296,156),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C27D1Ev,_ZTv0_n44_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C27D0Ev,_ZTv0_n44_N8S7856C27D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C27D1Ev,_ZTv0_n44_N8S7856C27D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C27D0Ev,_ZTv0_n44_N8S7856C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__A1__8S7856C27__7S7856C2[] = {
  ABISELECT(232,120),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-400,-216),
  ABISELECT(-400,-216),
  ABISELECT(-64,-36),
  ABISELECT(-400,-216),
  ABISELECT(232,120),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C27D1Ev,_ZTv0_n44_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C27D0Ev,_ZTv0_n44_N8S7856C27D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C27__7S7856C2[] = {
  ABISELECT(-368,-200),
  ABISELECT(-368,-200),
  ABISELECT(264,136),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C27D1Ev,_ZTv0_n32_N8S7856C27D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C27D0Ev,_ZTv0_n32_N8S7856C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C27__7S7856C2[] = {
  ABISELECT(280,144),
  ABISELECT(-352,-192),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-352,-192),
  ABISELECT(-352,-192),
  ABISELECT(280,144),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C27D1Ev,_ZTv0_n32_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C27D0Ev,_ZTv0_n32_N8S7856C27D0Ev),
};
extern void ABISELECT(_ZThn16_N8S7856C27D1Ev,_ZThn8_N8S7856C27D1Ev)();
extern void ABISELECT(_ZThn16_N8S7856C27D0Ev,_ZThn8_N8S7856C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C28__8S7856C27__7S7856C2[] = {
  ABISELECT(-248,-128),
  ABISELECT(-248,-128),
  ABISELECT(-648,-344),
  ABISELECT(-264,-136),
  ABISELECT(-312,-164),
  ABISELECT(-344,-180),
  ABISELECT(-296,-152),
  ABISELECT(-648,-344),
  ABISELECT(-280,-144),
  ABISELECT(-648,-344),
  ABISELECT(-312,-164),
  ABISELECT(-312,-164),
  ABISELECT(-648,-344),
  ABISELECT(-648,-344),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S7856C27D1Ev,_ZThn8_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S7856C27D0Ev,_ZThn8_N8S7856C27D0Ev),
};
extern void ABISELECT(_ZTv0_n128_N8S7856C27D1Ev,_ZTv0_n64_N8S7856C27D1Ev)();
extern void ABISELECT(_ZTv0_n128_N8S7856C27D0Ev,_ZTv0_n64_N8S7856C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C29__8S7856C27__7S7856C2[] = {
  ABISELECT(632,336),
  ABISELECT(400,216),
  ABISELECT(400,216),
  0,
  ABISELECT(384,208),
  ABISELECT(368,200),
  ABISELECT(336,180),
  ABISELECT(304,164),
  ABISELECT(336,180),
  ABISELECT(352,192),
  0,
  ABISELECT(336,180),
  0,
  0,
  ABISELECT(632,336),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C27D1Ev,_ZTv0_n64_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C27D0Ev,_ZTv0_n64_N8S7856C27D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S7856C27D1Ev,_ZTv0_n60_N8S7856C27D1Ev)();
extern void ABISELECT(_ZTv0_n120_N8S7856C27D0Ev,_ZTv0_n60_N8S7856C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__8S7856C27__7S7856C2[] = {
  ABISELECT(328,172),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-304,-164),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-304,-164),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-304,-164),
  ABISELECT(-304,-164),
  ABISELECT(328,172),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C27D1Ev,_ZTv0_n60_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C27D0Ev,_ZTv0_n60_N8S7856C27D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C27D1Ev,_ZTv0_n32_N8S7856C27D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C27D0Ev,_ZTv0_n32_N8S7856C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A2__8S7856C27__7S7856C2[] = {
  ABISELECT(248,128),
  ABISELECT(-384,-208),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-384,-208),
  ABISELECT(-384,-208),
  ABISELECT(248,128),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C27D1Ev,_ZTv0_n32_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C27D0Ev,_ZTv0_n32_N8S7856C27D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C27__7S7856C2[] = {
  ABISELECT(-320,-172),
  ABISELECT(16,8),
  ABISELECT(-320,-172),
  ABISELECT(-320,-172),
  ABISELECT(312,164),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
};
extern void ABISELECT(_ZThn32_N8S7856C27D1Ev,_ZThn16_N8S7856C27D1Ev)();
extern void ABISELECT(_ZThn32_N8S7856C27D0Ev,_ZThn16_N8S7856C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C218S7856C28__8S7856C27__7S7856C2[] = {
  ABISELECT(-664,-352),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S7856C27D1Ev,_ZThn16_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S7856C27D0Ev,_ZThn16_N8S7856C27D0Ev),
};
extern void _ZN8S7856C29D1Ev();
extern void _ZN8S7856C29D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C29__7S7856C2[] = {
  ABISELECT(400,216),
  ABISELECT(400,216),
  0,
  ABISELECT(384,208),
  ABISELECT(368,200),
  ABISELECT(336,180),
  ABISELECT(304,164),
  ABISELECT(336,180),
  ABISELECT(352,192),
  0,
  ABISELECT(336,180),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&_ZN8S7856C29D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C29D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N8S7856C29D1Ev,_ZTv0_n32_N8S7856C29D1Ev)();
extern void ABISELECT(_ZThn352_N8S7856C29D1Ev,_ZThn192_N8S7856C29D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C29D0Ev,_ZTv0_n32_N8S7856C29D0Ev)();
extern void ABISELECT(_ZThn352_N8S7856C29D0Ev,_ZThn192_N8S7856C29D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C29__7S7856C2[] = {
  ABISELECT(-352,-192),
  ABISELECT(-352,-192),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-352,-192),
  ABISELECT(-352,-192),
  ABISELECT(-352,-192),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C29D1Ev,_ZTv0_n32_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C29D0Ev,_ZTv0_n32_N8S7856C29D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C29D1Ev,_ZTv0_n44_N8S7856C29D1Ev)();
extern void ABISELECT(_ZThn336_N8S7856C29D1Ev,_ZThn180_N8S7856C29D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C29D0Ev,_ZTv0_n44_N8S7856C29D0Ev)();
extern void ABISELECT(_ZThn336_N8S7856C29D0Ev,_ZThn180_N8S7856C29D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C29__7S7856C2[] = {
  ABISELECT(-336,-180),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-336,-180),
  0,
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C29D1Ev,_ZTv0_n44_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C29D0Ev,_ZTv0_n44_N8S7856C29D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S7856C29D1Ev,_ZTv0_n60_N8S7856C29D1Ev)();
extern void ABISELECT(_ZThn304_N8S7856C29D1Ev,_ZThn164_N8S7856C29D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S7856C29D0Ev,_ZTv0_n60_N8S7856C29D0Ev)();
extern void ABISELECT(_ZThn304_N8S7856C29D0Ev,_ZThn164_N8S7856C29D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C5__8S7856C29__7S7856C2[] = {
  ABISELECT(-304,-164),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-304,-164),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-304,-164),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-304,-164),
  ABISELECT(-304,-164),
  ABISELECT(-304,-164),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C29D1Ev,_ZTv0_n60_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C29D0Ev,_ZTv0_n60_N8S7856C29D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C29__7S7856C2[] = {
  ABISELECT(-368,-200),
  ABISELECT(-368,-200),
  ABISELECT(-368,-200),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C29D1Ev,_ZTv0_n32_N8S7856C29D1Ev)();
extern void ABISELECT(_ZThn384_N8S7856C29D1Ev,_ZThn208_N8S7856C29D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C29D0Ev,_ZTv0_n32_N8S7856C29D0Ev)();
extern void ABISELECT(_ZThn384_N8S7856C29D0Ev,_ZThn208_N8S7856C29D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__8S7856C29__7S7856C2[] = {
  ABISELECT(-384,-208),
  ABISELECT(-384,-208),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-384,-208),
  ABISELECT(-384,-208),
  ABISELECT(-384,-208),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C29D1Ev,_ZTv0_n32_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C29D0Ev,_ZTv0_n32_N8S7856C29D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C29D1Ev,_ZTv0_n44_N8S7856C29D1Ev)();
extern void ABISELECT(_ZThn400_N8S7856C29D1Ev,_ZThn216_N8S7856C29D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C29D0Ev,_ZTv0_n44_N8S7856C29D0Ev)();
extern void ABISELECT(_ZThn400_N8S7856C29D0Ev,_ZThn216_N8S7856C29D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C29__7S7856C2[] = {
  ABISELECT(-400,-216),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-400,-216),
  ABISELECT(-400,-216),
  ABISELECT(-64,-36),
  ABISELECT(-400,-216),
  ABISELECT(-400,-216),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C29D1Ev,_ZTv0_n44_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C29D0Ev,_ZTv0_n44_N8S7856C29D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C29__7S7856C2[] = {
  ABISELECT(-320,-172),
  ABISELECT(16,8),
  ABISELECT(-320,-172),
  ABISELECT(-320,-172),
  ABISELECT(-320,-172),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
};
extern void _ZN8S7856C22D1Ev();
extern void _ZN8S7856C22D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C22__A1__7S7856C2[] = {
  ABISELECT(-264,-136),
  ABISELECT(-376,-196),
  ABISELECT(-400,-212),
  ABISELECT(-280,-144),
  ABISELECT(-280,-144),
  ABISELECT(-680,-360),
  ABISELECT(-296,-152),
  ABISELECT(-312,-160),
  ABISELECT(-344,-180),
  ABISELECT(-328,-168),
  ABISELECT(-344,-180),
  ABISELECT(-680,-360),
  ABISELECT(-344,-180),
  ABISELECT(-680,-360),
  ABISELECT(-680,-360),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&_ZN8S7856C22D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C22D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C22__A9__7S7856C2[] = {
  ABISELECT(-680,-360),
  ABISELECT(-344,-180),
  ABISELECT(-680,-360),
  ABISELECT(-680,-360),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C22__A9__7S7856C2[] = {
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(344,180),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void _ZN7S7856C5D1Ev();
extern void _ZN7S7856C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C58S7856C22__A4__7S7856C2[] = {
  ABISELECT(-288,-148),
  ABISELECT(-288,-148),
  ABISELECT(-688,-364),
  ABISELECT(-320,-164),
  ABISELECT(-336,-172),
  ABISELECT(-352,-184),
  ABISELECT(-688,-364),
  ABISELECT(-352,-184),
  ABISELECT(-352,-184),
  ABISELECT(-304,-156),
  ABISELECT(-688,-364),
  ABISELECT(-688,-364),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&_ZN7S7856C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C5D0Ev,
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C187S7856C58S7856C22__A5__7S7856C2[] = {
  ABISELECT(-688,-364),
  ABISELECT(-352,-184),
  ABISELECT(-352,-184),
  ABISELECT(-304,-156),
  ABISELECT(-688,-364),
  ABISELECT(-688,-364),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C187S7856C58S7856C22__A6__7S7856C2[] = {
  ABISELECT(-688,-364),
  ABISELECT(-688,-364),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C187S7856C58S7856C22__A12__7S7856C2[] = {
  ABISELECT(-688,-364),
  ABISELECT(-688,-364),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C58S7856C22__A10__7S7856C2[] = {
  ABISELECT(-704,-372),
  ABISELECT(-368,-192),
  ABISELECT(-704,-372),
  ABISELECT(-704,-372),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C187S7856C58S7856C22__A10__7S7856C2[] = {
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(368,192),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C187S7856C58S7856C22__A5__7S7856C2[] = {
  ABISELECT(304,156),
  ABISELECT(-384,-208),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-384,-208),
  ABISELECT(-384,-208),
  ABISELECT(304,156),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C187S7856C58S7856C22__A5__7S7856C2[] = {
  ABISELECT(-336,-180),
  0,
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(352,184),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C187S7856C58S7856C22__A5__7S7856C2[] = {
  ABISELECT(-704,-372),
  ABISELECT(-368,-192),
  ABISELECT(-704,-372),
  ABISELECT(-704,-372),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C58S7856C22__A4__7S7856C2[] = {
  ABISELECT(352,184),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-336,-180),
  0,
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(352,184),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C58S7856C22__A4__7S7856C2[] = {
  ABISELECT(336,172),
  ABISELECT(-352,-192),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-352,-192),
  ABISELECT(-352,-192),
  ABISELECT(336,172),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C58S7856C22__A4__7S7856C2[] = {
  ABISELECT(-368,-200),
  ABISELECT(-368,-200),
  ABISELECT(320,164),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C58S7856C22__A4__7S7856C2[] = {
  ABISELECT(304,156),
  ABISELECT(-384,-208),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-384,-208),
  ABISELECT(-384,-208),
  ABISELECT(304,156),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C58S7856C22__A4__7S7856C2[] = {
  ABISELECT(288,148),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-400,-216),
  ABISELECT(-400,-216),
  ABISELECT(-64,-36),
  ABISELECT(-400,-216),
  ABISELECT(288,148),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__7S7856C58S7856C22__A4__7S7856C2[] = {
  ABISELECT(-704,-372),
  ABISELECT(-368,-192),
  ABISELECT(-704,-372),
  ABISELECT(-704,-372),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C22__A1__7S7856C2[] = {
  ABISELECT(344,180),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-336,-180),
  0,
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(344,180),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C22__A1__7S7856C2[] = {
  ABISELECT(328,168),
  ABISELECT(-352,-192),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-352,-192),
  ABISELECT(-352,-192),
  ABISELECT(328,168),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C22__A1__7S7856C2[] = {
  ABISELECT(-368,-200),
  ABISELECT(-368,-200),
  ABISELECT(312,160),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__8S7856C22__A1__7S7856C2[] = {
  ABISELECT(296,152),
  ABISELECT(-384,-208),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-384,-208),
  ABISELECT(-384,-208),
  ABISELECT(296,152),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev),
};
extern void ABISELECT(_ZThn8_N8S7856C22D1Ev,_ZThn4_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn8_N8S7856C22D0Ev,_ZThn4_N8S7856C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__A__8S7856C22__A1__7S7856C2[] = {
  ABISELECT(-288,-148),
  ABISELECT(-288,-148),
  ABISELECT(-688,-364),
  ABISELECT(-320,-164),
  ABISELECT(-336,-172),
  ABISELECT(-352,-184),
  ABISELECT(-688,-364),
  ABISELECT(-352,-184),
  ABISELECT(-352,-184),
  ABISELECT(-304,-156),
  ABISELECT(-688,-364),
  ABISELECT(-688,-364),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7856C22D1Ev,_ZThn4_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7856C22D0Ev,_ZThn4_N8S7856C22D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C22__A1__7S7856C2[] = {
  ABISELECT(280,144),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-400,-216),
  ABISELECT(-400,-216),
  ABISELECT(-64,-36),
  ABISELECT(-400,-216),
  ABISELECT(280,144),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A2__8S7856C22__A1__7S7856C2[] = {
  ABISELECT(-704,-372),
  ABISELECT(-368,-192),
  ABISELECT(-704,-372),
  ABISELECT(-704,-372),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
};
extern void ABISELECT(_ZTv0_n136_N8S7856C22D1Ev,_ZTv0_n68_N8S7856C22D1Ev)();
extern void ABISELECT(_ZTv0_n136_N8S7856C22D0Ev,_ZTv0_n68_N8S7856C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C4__8S7856C22__A1__7S7856C2[] = {
  ABISELECT(8,4),
  ABISELECT(400,212),
  ABISELECT(136,76),
  ABISELECT(120,68),
  ABISELECT(120,68),
  ABISELECT(-280,-148),
  ABISELECT(104,60),
  ABISELECT(88,52),
  ABISELECT(56,32),
  ABISELECT(72,44),
  ABISELECT(56,32),
  ABISELECT(24,16),
  ABISELECT(-280,-148),
  ABISELECT(56,32),
  ABISELECT(-280,-148),
  ABISELECT(-280,-148),
  ABISELECT(400,212),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S7856C22D1Ev,_ZTv0_n68_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S7856C22D0Ev,_ZTv0_n68_N8S7856C22D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S7856C22D1Ev,_ZTv0_n60_N8S7856C22D1Ev)();
extern void ABISELECT(_ZTv0_n120_N8S7856C22D0Ev,_ZTv0_n60_N8S7856C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__A1__8S7856C22__A1__7S7856C2[] = {
  ABISELECT(376,196),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-304,-164),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-304,-164),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-304,-164),
  ABISELECT(-304,-164),
  ABISELECT(376,196),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C22D1Ev,_ZTv0_n60_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C22D0Ev,_ZTv0_n60_N8S7856C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A3__8S7856C22__A1__7S7856C2[] = {
  ABISELECT(-320,-172),
  ABISELECT(16,8),
  ABISELECT(-320,-172),
  ABISELECT(-320,-172),
  ABISELECT(360,188),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
};
extern void ABISELECT(_ZTvn8_n136_N8S7856C22D1Ev,_ZTvn4_n68_N8S7856C22D1Ev)();
extern void ABISELECT(_ZTvn8_n136_N8S7856C22D0Ev,_ZTvn4_n68_N8S7856C22D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C197S7856C4__8S7856C22__A1__7S7856C2[] = {
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(48,28),
  ABISELECT(64,40),
  ABISELECT(-288,-152),
  ABISELECT(48,28),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(392,208),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N8S7856C22D1Ev,_ZTvn4_n68_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N8S7856C22D0Ev,_ZTvn4_n68_N8S7856C22D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N8S7856C22D1Ev,_ZTv0_n36_N8S7856C22D1Ev)();
extern void ABISELECT(_ZTv0_n72_N8S7856C22D0Ev,_ZTv0_n36_N8S7856C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C18__A2__8S7856C22__A1__7S7856C2[] = {
  ABISELECT(264,136),
  ABISELECT(-416,-224),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-416,-224),
  ABISELECT(-416,-224),
  ABISELECT(264,136),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C22D1Ev,_ZTv0_n36_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C22D0Ev,_ZTv0_n36_N8S7856C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A5__8S7856C22__A1__7S7856C2[] = {
  ABISELECT(-432,-232),
  ABISELECT(-96,-52),
  ABISELECT(-432,-232),
  ABISELECT(-432,-232),
  ABISELECT(248,128),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
};
static  VTT_ENTRY vtt_S7856C2[] = {
  {&(_ZTV7S7856C2[25]),  25,419},
  {&(_ZTV7S7856C2[51]),  51,419},
  {&(_ZTV7S7856C2[93]),  93,419},
  {&(_ZTV7S7856C2[124]),  124,419},
  {&(_ZTV7S7856C2[143]),  143,419},
  {&(_ZTV7S7856C2[153]),  153,419},
  {&(_ZTV7S7856C2[143]),  143,419},
  {&(_ZTV7S7856C2[143]),  143,419},
  {&(_ZTV7S7856C2[159]),  159,419},
  {&(_ZTV7S7856C2[167]),  167,419},
  {&(_ZTV7S7856C2[180]),  180,419},
  {&(_ZTV7S7856C2[180]),  180,419},
  {&(_ZTV7S7856C2[132]),  132,419},
  {&(_ZTV7S7856C2[106]),  106,419},
  {&(_ZTV7S7856C2[191]),  191,419},
  {&(_ZTV7S7856C2[199]),  199,419},
  {&(_ZTV7S7856C2[214]),  214,419},
  {&(_ZTV7S7856C2[230]),  230,419},
  {&(_ZTV7S7856C2[238]),  238,419},
  {&(_ZTV7S7856C2[241]),  241,419},
  {&(_ZTV7S7856C2[67]),  67,419},
  {&(_ZTV7S7856C2[75]),  75,419},
  {&(_ZTV7S7856C2[266]),  266,419},
  {&(_ZTV7S7856C2[271]),  271,419},
  {&(_ZTV7S7856C2[287]),  287,419},
  {&(_ZTV7S7856C2[300]),  300,419},
  {&(_ZTV7S7856C2[352]),  352,419},
  {&(_ZTV7S7856C2[370]),  370,419},
  {&(_ZTV7S7856C2[25]),  25,419},
  {&(_ZTV7S7856C2[375]),  375,419},
  {&(_ZTV7S7856C2[317]),  317,419},
  {&(_ZTV7S7856C2[325]),  325,419},
  {&(_ZTV7S7856C2[332]),  332,419},
  {&(_ZTV7S7856C2[395]),  395,419},
  {&(_ZTV7S7856C2[411]),  411,419},
  {&(_ZTV7S7856C2[419]),  419,419},
  {&(_tg__ZTV7S7856C3__7S7856C2[23]),  23,25},
  {&(_tg__ZTV8S7856C227S7856C3__7S7856C2[17]),  17,19},
  {&(_tg__ZTV8S7856C108S7856C227S7856C3__A5__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C227S7856C3__A5__7S7856C2[4]),  4,4},
  {&(_tg__ZTV7S7856C58S7856C227S7856C3__A2__7S7856C2[14]),  14,16},
  {&(_tg__ZTV8S7856C187S7856C58S7856C227S7856C3__A3__7S7856C2[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C187S7856C58S7856C227S7856C3__A4__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C187S7856C58S7856C227S7856C3__A7__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C187S7856C58S7856C227S7856C3__A6__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C187S7856C58S7856C227S7856C3__A6__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C187S7856C58S7856C227S7856C3__A3__7S7856C2[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C58S7856C227S7856C3__A3__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C58S7856C227S7856C3__A3__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C10__A__8S7856C187S7856C58S7856C227S7856C3__A3__7S7856C2[6]),  6,6},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C227S7856C3__A2__7S7856C2[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C58S7856C227S7856C3__A2__7S7856C2[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C227S7856C3__A2__7S7856C2[11]),  11,13},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C227S7856C3__A2__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C14__7S7856C58S7856C227S7856C3__A2__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C58S7856C227S7856C3__A2__7S7856C2[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C58S7856C227S7856C3__A2__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C58S7856C227S7856C3__A2__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C18__A1__7S7856C58S7856C227S7856C3__A2__7S7856C2[6]),  6,6},
  {&(_tg__ZTV7S7856C6__8S7856C227S7856C3__7S7856C2[11]),  11,13},
  {&(_tg__ZTV7S7856C6__8S7856C227S7856C3__7S7856C2[11]),  11,13},
  {&(_tg__ZTV7S7856C7__8S7856C227S7856C3__7S7856C2[8]),  8,10},
  {&(_tg__ZTV7S7856C6__8S7856C227S7856C3__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C14__8S7856C227S7856C3__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__8S7856C227S7856C3__7S7856C2[8]),  8,10},
  {&(_tg__ZTV7S7856C5__A__8S7856C227S7856C3__7S7856C2[14]),  14,16},
  {&(_tg__ZTV8S7856C16__8S7856C227S7856C3__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C16__8S7856C227S7856C3__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A2__8S7856C227S7856C3__7S7856C2[6]),  6,6},
  {&(_tg__ZTV7S7856C4__8S7856C227S7856C3__7S7856C2[18]),  18,20},
  {&(_tg__ZTV7S7856C5__A1__8S7856C227S7856C3__7S7856C2[15]),  15,17},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A3__8S7856C227S7856C3__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C197S7856C4__8S7856C227S7856C3__7S7856C2[11]),  11,14},
  {&(_tg__ZTV8S7856C18__A2__8S7856C227S7856C3__7S7856C2[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A5__8S7856C227S7856C3__7S7856C2[6]),  6,6},
  {&(_tg__ZTV7S7856C4__7S7856C3__7S7856C2[18]),  18,20},
  {&(_tg__ZTV7S7856C5__7S7856C3__7S7856C2[15]),  15,17},
  {&(_tg__ZTV7S7856C6__7S7856C3__7S7856C2[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C3__7S7856C2[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C3__7S7856C2[11]),  11,13},
  {&(_tg__ZTV7S7856C6__7S7856C3__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C14__7S7856C3__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C3__7S7856C2[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C3__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C3__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__7S7856C3__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C197S7856C4__7S7856C3__7S7856C2[11]),  11,14},
  {&(_tg__ZTV8S7856C18__A1__7S7856C3__7S7856C2[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A3__7S7856C3__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C20__7S7856C3__7S7856C2[15]),  15,17},
  {&(_tg__ZTV7S7856C58S7856C20__A1__7S7856C3__7S7856C2[14]),  14,16},
  {&(_tg__ZTV8S7856C108S7856C187S7856C58S7856C20__A4__7S7856C3__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C218S7856C20__7S7856C3__7S7856C2[3]),  3,5},
  {&(_tg__ZTV7S7856C58S7856C22__A2__7S7856C3__7S7856C2[14]),  14,16},
  {&(_tg__ZTV8S7856C108S7856C187S7856C58S7856C22__A6__7S7856C3__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C23__7S7856C3__7S7856C2[23]),  23,25},
  {&(_tg__ZTV8S7856C268S7856C258S7856C23__7S7856C3__7S7856C2[3]),  3,3},
  {&(_tg__ZTV7S7856C48S7856C258S7856C23__A1__7S7856C3__7S7856C2[16]),  16,18},
  {&(_tg__ZTV8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C3__7S7856C2[11]),  11,14},
  {&(_tg__ZTV8S7856C27__7S7856C3__7S7856C2[18]),  18,20},
  {&(_tg__ZTV8S7856C288S7856C27__7S7856C3__7S7856C2[16]),  16,18},
  {&(_tg__ZTV8S7856C29__7S7856C3__7S7856C2[16]),  16,18},
  {&(_tg__ZTV8S7856C218S7856C288S7856C27__A1__7S7856C3__7S7856C2[3]),  3,5},
  {&(_tg__ZTV7S7856C58S7856C258S7856C23__A3__7S7856C3__7S7856C2[14]),  14,16},
  {&(_tg__ZTV8S7856C108S7856C187S7856C58S7856C258S7856C23__A8__7S7856C3__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C138S7856C23__A4__7S7856C3__7S7856C2[7]),  7,9},
  {&(_tg__ZTV8S7856C22__A1__7S7856C3__7S7856C2[18]),  18,20},
  {&(_tg__ZTV7S7856C58S7856C22__A4__7S7856C3__7S7856C2[14]),  14,16},
  {&(_tg__ZTV8S7856C108S7856C187S7856C58S7856C22__A10__7S7856C3__7S7856C2[6]),  6,6},
  {&(_tg__ZTV7S7856C4__7S7856C2[16]),  16,18},
  {&(_tg__ZTV8S7856C107S7856C4__A2__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C107S7856C4__A2__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C197S7856C4__7S7856C2[11]),  11,14},
  {&(_tg__ZTV7S7856C68S7856C197S7856C4__A1__7S7856C2[10]),  10,12},
  {&(_tg__ZTV7S7856C7__7S7856C68S7856C197S7856C4__A1__7S7856C2[8]),  8,10},
  {&(_tg__ZTV8S7856C10__7S7856C68S7856C197S7856C4__A1__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C68S7856C197S7856C4__A1__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C14__7S7856C68S7856C197S7856C4__A1__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C68S7856C197S7856C4__A1__7S7856C2[8]),  8,10},
  {&(_tg__ZTV7S7856C7__8S7856C197S7856C4__7S7856C2[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C197S7856C4__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C197S7856C4__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C14__8S7856C197S7856C4__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__8S7856C197S7856C4__7S7856C2[8]),  8,10},
  {&(_tg__ZTV8S7856C18__8S7856C197S7856C4__7S7856C2[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A1__8S7856C197S7856C4__7S7856C2[6]),  6,6},
  {&(_tg__ZTV7S7856C5__7S7856C4__7S7856C2[15]),  15,17},
  {&(_tg__ZTV7S7856C6__7S7856C4__7S7856C2[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C4__7S7856C2[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C4__7S7856C2[11]),  11,13},
  {&(_tg__ZTV7S7856C6__7S7856C4__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C14__7S7856C4__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C4__7S7856C2[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C4__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C4__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__7S7856C4__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C19__7S7856C4__7S7856C2[11]),  11,14},
  {&(_tg__ZTV8S7856C18__A1__7S7856C4__7S7856C2[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A3__7S7856C4__7S7856C2[6]),  6,6},
  {&(_tg__ZTV7S7856C5__7S7856C2[14]),  14,16},
  {&(_tg__ZTV8S7856C187S7856C5__7S7856C2[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C187S7856C5__A1__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C187S7856C5__A4__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C187S7856C5__A1__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C187S7856C5__7S7856C2[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C5__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C5__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C10__A__8S7856C187S7856C5__7S7856C2[6]),  6,6},
  {&(_tg__ZTV7S7856C6__7S7856C5__7S7856C2[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C5__7S7856C2[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C5__7S7856C2[11]),  11,13},
  {&(_tg__ZTV7S7856C6__7S7856C5__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C14__7S7856C5__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C5__7S7856C2[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C5__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C5__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C18__A1__7S7856C5__7S7856C2[6]),  6,6},
  {&(_tg__ZTV7S7856C6__7S7856C2[10]),  10,12},
  {&(_tg__ZTV7S7856C7__7S7856C6__7S7856C2[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C2[10]),  10,12},
  {&(_tg__ZTV7S7856C6__7S7856C2[10]),  10,12},
  {&(_tg__ZTV8S7856C14__7S7856C6__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C6__7S7856C2[8]),  8,10},
  {&(_tg__ZTV7S7856C7__7S7856C2[7]),  7,9},
  {&(_tg__ZTV8S7856C137S7856C7__7S7856C2[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C137S7856C7__A1__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C7__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C7__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C7__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C7__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C11__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C14__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C14__A2__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C2[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C13__A3__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C13__A1__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C13__A1__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C16__7S7856C2[10]),  10,12},
  {&(_tg__ZTV8S7856C10__8S7856C16__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C16__7S7856C2[10]),  10,12},
  {&(_tg__ZTV8S7856C14__8S7856C16__7S7856C2[4]),  4,4},
  {&(_tg__ZTV7S7856C7__8S7856C16__7S7856C2[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C16__7S7856C2[6]),  6,6},
  {&(_tg__ZTV11S7856C17_nt__7S7856C2[3]),  3,3},
  {&(_tg__ZTV8S7856C18__A1__7S7856C2[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C18__A2__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C18__A5__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C18__A3__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C18__A3__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C18__A1__7S7856C2[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C18__A1__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C18__A1__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C10__A__8S7856C18__A1__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C20__7S7856C2[14]),  14,16},
  {&(_tg__ZTV11S7856C17_nt8S7856C20__A1__7S7856C2[3]),  3,3},
  {&(_tg__ZTV7S7856C58S7856C20__A1__7S7856C2[14]),  14,16},
  {&(_tg__ZTV8S7856C187S7856C58S7856C20__A2__7S7856C2[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C187S7856C58S7856C20__A3__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C187S7856C58S7856C20__A6__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C187S7856C58S7856C20__A4__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C187S7856C58S7856C20__A4__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C187S7856C58S7856C20__A2__7S7856C2[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C58S7856C20__A2__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C58S7856C20__A2__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C10__A__8S7856C187S7856C58S7856C20__A2__7S7856C2[6]),  6,6},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C20__A1__7S7856C2[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C58S7856C20__A1__7S7856C2[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C20__A1__7S7856C2[11]),  11,13},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C20__A1__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C14__7S7856C58S7856C20__A1__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C58S7856C20__A1__7S7856C2[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C58S7856C20__A1__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C58S7856C20__A1__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C18__A1__7S7856C58S7856C20__A1__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C218S7856C20__7S7856C2[3]),  3,5},
  {&(_tg__ZTV11S7856C17_nt8S7856C218S7856C20__A2__7S7856C2[3]),  3,3},
  {&(_tg__ZTV7S7856C5__8S7856C20__7S7856C2[14]),  14,16},
  {&(_tg__ZTV7S7856C6__8S7856C20__7S7856C2[11]),  11,13},
  {&(_tg__ZTV7S7856C7__8S7856C20__7S7856C2[8]),  8,10},
  {&(_tg__ZTV7S7856C6__8S7856C20__7S7856C2[11]),  11,13},
  {&(_tg__ZTV7S7856C6__8S7856C20__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C14__8S7856C20__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__8S7856C20__7S7856C2[8]),  8,10},
  {&(_tg__ZTV8S7856C16__8S7856C20__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C16__8S7856C20__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C20__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C21__8S7856C20__7S7856C2[3]),  3,5},
  {&(_tg__ZTV8S7856C23__7S7856C2[21]),  21,23},
  {&(_tg__ZTV8S7856C258S7856C23__7S7856C2[19]),  19,21},
  {&(_tg__ZTV8S7856C138S7856C258S7856C23__A2__7S7856C2[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C138S7856C258S7856C23__A8__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C138S7856C258S7856C23__A2__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C138S7856C258S7856C23__A2__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C268S7856C258S7856C23__7S7856C2[3]),  3,3},
  {&(_tg__ZTV7S7856C48S7856C258S7856C23__A1__7S7856C2[16]),  16,18},
  {&(_tg__ZTV8S7856C107S7856C48S7856C258S7856C23__A7__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C107S7856C48S7856C258S7856C23__A7__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C2[11]),  11,14},
  {&(_tg__ZTV7S7856C68S7856C197S7856C48S7856C258S7856C23__A2__7S7856C2[10]),  10,12},
  {&(_tg__ZTV7S7856C7__7S7856C68S7856C197S7856C48S7856C258S7856C23__A2__7S7856C2[8]),  8,10},
  {&(_tg__ZTV8S7856C10__7S7856C68S7856C197S7856C48S7856C258S7856C23__A2__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C68S7856C197S7856C48S7856C258S7856C23__A2__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C14__7S7856C68S7856C197S7856C48S7856C258S7856C23__A2__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C68S7856C197S7856C48S7856C258S7856C23__A2__7S7856C2[8]),  8,10},
  {&(_tg__ZTV7S7856C7__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C2[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C14__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C2[8]),  8,10},
  {&(_tg__ZTV8S7856C18__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C2[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A1__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C2[6]),  6,6},
  {&(_tg__ZTV7S7856C5__7S7856C48S7856C258S7856C23__A1__7S7856C2[15]),  15,17},
  {&(_tg__ZTV7S7856C6__7S7856C48S7856C258S7856C23__A1__7S7856C2[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C48S7856C258S7856C23__A1__7S7856C2[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C48S7856C258S7856C23__A1__7S7856C2[11]),  11,13},
  {&(_tg__ZTV7S7856C6__7S7856C48S7856C258S7856C23__A1__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C14__7S7856C48S7856C258S7856C23__A1__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C48S7856C258S7856C23__A1__7S7856C2[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C48S7856C258S7856C23__A1__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C48S7856C258S7856C23__A1__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__7S7856C48S7856C258S7856C23__A1__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C19__7S7856C48S7856C258S7856C23__A1__7S7856C2[11]),  11,14},
  {&(_tg__ZTV8S7856C18__A1__7S7856C48S7856C258S7856C23__A1__7S7856C2[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A3__7S7856C48S7856C258S7856C23__A1__7S7856C2[6]),  6,6},
  {&(_tg__ZTV7S7856C58S7856C258S7856C23__A3__7S7856C2[14]),  14,16},
  {&(_tg__ZTV8S7856C187S7856C58S7856C258S7856C23__A4__7S7856C2[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C187S7856C58S7856C258S7856C23__A5__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C187S7856C58S7856C258S7856C23__A10__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C187S7856C58S7856C258S7856C23__A8__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C187S7856C58S7856C258S7856C23__A8__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C187S7856C58S7856C258S7856C23__A4__7S7856C2[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C58S7856C258S7856C23__A4__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C58S7856C258S7856C23__A4__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C10__A__8S7856C187S7856C58S7856C258S7856C23__A4__7S7856C2[6]),  6,6},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C258S7856C23__A3__7S7856C2[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C58S7856C258S7856C23__A3__7S7856C2[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C258S7856C23__A3__7S7856C2[11]),  11,13},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C258S7856C23__A3__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C14__7S7856C58S7856C258S7856C23__A3__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C58S7856C258S7856C23__A3__7S7856C2[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C58S7856C258S7856C23__A3__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C58S7856C258S7856C23__A3__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C18__A1__7S7856C58S7856C258S7856C23__A3__7S7856C2[6]),  6,6},
  {&(_tg__ZTV7S7856C6__8S7856C258S7856C23__7S7856C2[11]),  11,13},
  {&(_tg__ZTV7S7856C6__8S7856C258S7856C23__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C26__8S7856C258S7856C23__7S7856C2[3]),  3,3},
  {&(_tg__ZTV7S7856C4__8S7856C258S7856C23__7S7856C2[16]),  16,18},
  {&(_tg__ZTV7S7856C5__8S7856C258S7856C23__7S7856C2[15]),  15,17},
  {&(_tg__ZTV7S7856C6__8S7856C258S7856C23__7S7856C2[11]),  11,13},
  {&(_tg__ZTV7S7856C7__8S7856C258S7856C23__7S7856C2[8]),  8,10},
  {&(_tg__ZTV8S7856C14__8S7856C258S7856C23__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A2__8S7856C258S7856C23__7S7856C2[8]),  8,10},
  {&(_tg__ZTV8S7856C16__8S7856C258S7856C23__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C16__8S7856C258S7856C23__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C258S7856C23__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C197S7856C4__8S7856C258S7856C23__7S7856C2[11]),  11,14},
  {&(_tg__ZTV8S7856C18__A1__8S7856C258S7856C23__7S7856C2[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A3__8S7856C258S7856C23__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C27__8S7856C258S7856C23__7S7856C2[18]),  18,20},
  {&(_tg__ZTV8S7856C288S7856C27__8S7856C258S7856C23__7S7856C2[16]),  16,18},
  {&(_tg__ZTV8S7856C29__8S7856C258S7856C23__7S7856C2[16]),  16,18},
  {&(_tg__ZTV8S7856C218S7856C288S7856C27__8S7856C258S7856C23__7S7856C2[3]),  3,5},
  {&(_tg__ZTV7S7856C5__A__8S7856C258S7856C23__7S7856C2[14]),  14,16},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A4__8S7856C258S7856C23__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C138S7856C23__A4__7S7856C2[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C138S7856C23__A11__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C138S7856C23__A4__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C138S7856C23__A4__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C14__8S7856C23__7S7856C2[4]),  4,4},
  {&(_tg__ZTV7S7856C6__8S7856C23__7S7856C2[11]),  11,13},
  {&(_tg__ZTV7S7856C6__8S7856C23__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C268S7856C25__8S7856C23__7S7856C2[3]),  3,3},
  {&(_tg__ZTV7S7856C48S7856C25__8S7856C23__7S7856C2[16]),  16,18},
  {&(_tg__ZTV7S7856C5__8S7856C23__7S7856C2[15]),  15,17},
  {&(_tg__ZTV7S7856C6__8S7856C23__7S7856C2[11]),  11,13},
  {&(_tg__ZTV7S7856C7__8S7856C23__7S7856C2[8]),  8,10},
  {&(_tg__ZTV8S7856C13__A2__8S7856C23__7S7856C2[8]),  8,10},
  {&(_tg__ZTV8S7856C16__8S7856C23__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C16__8S7856C23__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C23__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C197S7856C48S7856C25__8S7856C23__7S7856C2[11]),  11,14},
  {&(_tg__ZTV8S7856C18__A1__8S7856C23__7S7856C2[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A3__8S7856C23__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C27__8S7856C23__7S7856C2[18]),  18,20},
  {&(_tg__ZTV8S7856C288S7856C27__8S7856C23__7S7856C2[16]),  16,18},
  {&(_tg__ZTV8S7856C29__8S7856C23__7S7856C2[16]),  16,18},
  {&(_tg__ZTV8S7856C218S7856C288S7856C27__8S7856C23__7S7856C2[3]),  3,5},
  {&(_tg__ZTV7S7856C58S7856C25__A1__8S7856C23__7S7856C2[14]),  14,16},
  {&(_tg__ZTV8S7856C108S7856C187S7856C58S7856C25__A4__8S7856C23__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C13__A__8S7856C23__7S7856C2[7]),  7,9},
  {&(_tg__ZTV8S7856C22__8S7856C23__7S7856C2[18]),  18,20},
  {&(_tg__ZTV7S7856C58S7856C22__A2__8S7856C23__7S7856C2[14]),  14,16},
  {&(_tg__ZTV8S7856C108S7856C187S7856C58S7856C22__A6__8S7856C23__7S7856C2[6]),  6,6},
  {&(_tg__ZTV7S7856C4__A1__8S7856C23__7S7856C2[18]),  18,20},
  {&(_tg__ZTV8S7856C197S7856C4__A1__8S7856C23__7S7856C2[11]),  11,14},
  {&(_tg__ZTV8S7856C27__7S7856C2[17]),  17,19},
  {&(_tg__ZTV8S7856C168S7856C27__A1__7S7856C2[10]),  10,12},
  {&(_tg__ZTV8S7856C10__8S7856C168S7856C27__A1__7S7856C2[6]),  6,6},
  {&(_tg__ZTV11S7856C17_nt__8S7856C168S7856C27__A1__7S7856C2[3]),  3,3},
  {&(_tg__ZTV8S7856C14__8S7856C168S7856C27__A1__7S7856C2[4]),  4,4},
  {&(_tg__ZTV7S7856C7__8S7856C168S7856C27__A1__7S7856C2[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C168S7856C27__A1__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C288S7856C27__7S7856C2[16]),  16,18},
  {&(_tg__ZTV7S7856C78S7856C288S7856C27__A1__7S7856C2[7]),  7,9},
  {&(_tg__ZTV8S7856C137S7856C78S7856C288S7856C27__A3__7S7856C2[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C137S7856C78S7856C288S7856C27__A9__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C78S7856C288S7856C27__A3__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C78S7856C288S7856C27__A3__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C78S7856C288S7856C27__A1__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C78S7856C288S7856C27__A1__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C218S7856C288S7856C27__A1__7S7856C2[3]),  3,5},
  {&(_tg__ZTV11S7856C17_nt8S7856C218S7856C288S7856C27__A3__7S7856C2[3]),  3,3},
  {&(_tg__ZTV7S7856C6__8S7856C288S7856C27__7S7856C2[11]),  11,13},
  {&(_tg__ZTV7S7856C6__8S7856C288S7856C27__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C14__8S7856C288S7856C27__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C29__8S7856C288S7856C27__7S7856C2[16]),  16,18},
  {&(_tg__ZTV7S7856C7__A1__8S7856C288S7856C27__7S7856C2[8]),  8,10},
  {&(_tg__ZTV7S7856C5__8S7856C288S7856C27__7S7856C2[15]),  15,17},
  {&(_tg__ZTV7S7856C6__8S7856C288S7856C27__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C13__A2__8S7856C288S7856C27__7S7856C2[8]),  8,10},
  {&(_tg__ZTV8S7856C16__8S7856C288S7856C27__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C16__8S7856C288S7856C27__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C288S7856C27__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C21__8S7856C288S7856C27__7S7856C2[3]),  3,5},
  {&(_tg__ZTV7S7856C6__8S7856C27__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C16__A1__8S7856C27__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C14__8S7856C27__7S7856C2[4]),  4,4},
  {&(_tg__ZTV7S7856C7__8S7856C27__7S7856C2[8]),  8,10},
  {&(_tg__ZTV7S7856C6__8S7856C27__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C28__8S7856C27__7S7856C2[16]),  16,18},
  {&(_tg__ZTV8S7856C29__8S7856C27__7S7856C2[16]),  16,18},
  {&(_tg__ZTV7S7856C5__8S7856C27__7S7856C2[15]),  15,17},
  {&(_tg__ZTV7S7856C6__8S7856C27__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C13__A2__8S7856C27__7S7856C2[8]),  8,10},
  {&(_tg__ZTV8S7856C16__A1__8S7856C27__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C27__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C218S7856C28__8S7856C27__7S7856C2[3]),  3,5},
  {&(_tg__ZTV8S7856C29__7S7856C2[15]),  15,17},
  {&(_tg__ZTV7S7856C7__8S7856C29__7S7856C2[8]),  8,10},
  {&(_tg__ZTV7S7856C6__8S7856C29__7S7856C2[11]),  11,13},
  {&(_tg__ZTV7S7856C6__8S7856C29__7S7856C2[11]),  11,13},
  {&(_tg__ZTV7S7856C5__8S7856C29__7S7856C2[15]),  15,17},
  {&(_tg__ZTV7S7856C6__8S7856C29__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C14__8S7856C29__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__8S7856C29__7S7856C2[8]),  8,10},
  {&(_tg__ZTV8S7856C16__8S7856C29__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C16__8S7856C29__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C29__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C22__A1__7S7856C2[17]),  17,19},
  {&(_tg__ZTV8S7856C108S7856C22__A9__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C22__A9__7S7856C2[4]),  4,4},
  {&(_tg__ZTV7S7856C58S7856C22__A4__7S7856C2[14]),  14,16},
  {&(_tg__ZTV8S7856C187S7856C58S7856C22__A5__7S7856C2[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C187S7856C58S7856C22__A6__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C187S7856C58S7856C22__A12__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C187S7856C58S7856C22__A10__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C187S7856C58S7856C22__A10__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C187S7856C58S7856C22__A5__7S7856C2[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C58S7856C22__A5__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C58S7856C22__A5__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C10__A__8S7856C187S7856C58S7856C22__A5__7S7856C2[6]),  6,6},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C22__A4__7S7856C2[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C58S7856C22__A4__7S7856C2[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C22__A4__7S7856C2[11]),  11,13},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C22__A4__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C14__7S7856C58S7856C22__A4__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C58S7856C22__A4__7S7856C2[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C58S7856C22__A4__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C58S7856C22__A4__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C18__A1__7S7856C58S7856C22__A4__7S7856C2[6]),  6,6},
  {&(_tg__ZTV7S7856C6__8S7856C22__A1__7S7856C2[11]),  11,13},
  {&(_tg__ZTV7S7856C6__8S7856C22__A1__7S7856C2[11]),  11,13},
  {&(_tg__ZTV7S7856C7__8S7856C22__A1__7S7856C2[8]),  8,10},
  {&(_tg__ZTV7S7856C6__8S7856C22__A1__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C14__8S7856C22__A1__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__8S7856C22__A1__7S7856C2[8]),  8,10},
  {&(_tg__ZTV7S7856C5__A__8S7856C22__A1__7S7856C2[14]),  14,16},
  {&(_tg__ZTV8S7856C16__8S7856C22__A1__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C16__8S7856C22__A1__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A2__8S7856C22__A1__7S7856C2[6]),  6,6},
  {&(_tg__ZTV7S7856C4__8S7856C22__A1__7S7856C2[18]),  18,20},
  {&(_tg__ZTV7S7856C5__A1__8S7856C22__A1__7S7856C2[15]),  15,17},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A3__8S7856C22__A1__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C197S7856C4__8S7856C22__A1__7S7856C2[11]),  11,14},
  {&(_tg__ZTV8S7856C18__A2__8S7856C22__A1__7S7856C2[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A5__8S7856C22__A1__7S7856C2[6]),  6,6},
};
extern VTBL_ENTRY _ZTI7S7856C2[];
extern  VTBL_ENTRY _ZTV7S7856C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C2[];
static VTBL_ENTRY alt_thunk_names29[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C29D0Ev,_ZTv0_n60_N8S7856C29D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S7856C29D0Ev,_ZThn164_N8S7856C29D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C29D1Ev,_ZTv0_n60_N8S7856C29D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S7856C29D1Ev,_ZThn164_N8S7856C29D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C29D0Ev,_ZTv0_n44_N8S7856C29D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N8S7856C29D0Ev,_ZThn216_N8S7856C29D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S7856C29D0Ev,_ZThn180_N8S7856C29D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C29D1Ev,_ZTv0_n44_N8S7856C29D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N8S7856C29D1Ev,_ZThn216_N8S7856C29D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S7856C29D1Ev,_ZThn180_N8S7856C29D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C29D0Ev,_ZTv0_n32_N8S7856C29D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N8S7856C29D0Ev,_ZThn208_N8S7856C29D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S7856C29D0Ev,_ZThn192_N8S7856C29D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C29D1Ev,_ZTv0_n32_N8S7856C29D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N8S7856C29D1Ev,_ZThn208_N8S7856C29D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S7856C29D1Ev,_ZThn192_N8S7856C29D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N8S7856C23D0Ev,_ZTv0_n72_N8S7856C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7856C23D0Ev,_ZThn96_N8S7856C23D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7856C23D0Ev,_ZThn72_N8S7856C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N8S7856C23D1Ev,_ZTv0_n72_N8S7856C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7856C23D1Ev,_ZThn96_N8S7856C23D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7856C23D1Ev,_ZThn72_N8S7856C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N8S7856C25D0Ev,_ZTv0_n72_N8S7856C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7856C25D0Ev,_ZThn72_N8S7856C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N8S7856C25D1Ev,_ZTv0_n72_N8S7856C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7856C25D1Ev,_ZThn72_N8S7856C25D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7856C4D0Ev,_ZTv0_n36_N7S7856C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7856C4D0Ev,_ZThn76_N7S7856C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7856C4D1Ev,_ZTv0_n36_N7S7856C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7856C4D1Ev,_ZThn76_N7S7856C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7856C4D0Ev,_ZThn60_N7S7856C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7856C4D0Ev,_ZThn44_N7S7856C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7856C4D1Ev,_ZThn60_N7S7856C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7856C4D1Ev,_ZThn44_N7S7856C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7856C4D0Ev,_ZThn68_N7S7856C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7856C4D0Ev,_ZThn32_N7S7856C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7856C4D1Ev,_ZThn68_N7S7856C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7856C4D1Ev,_ZThn32_N7S7856C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7856C4D0Ev,_ZTv0_n60_N7S7856C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7856C4D0Ev,_ZThn16_N7S7856C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7856C4D1Ev,_ZTv0_n60_N7S7856C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7856C4D1Ev,_ZThn16_N7S7856C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C19D0Ev,_ZTv0_n36_N8S7856C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7856C19D0Ev,_ZThn72_N8S7856C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C19D1Ev,_ZTv0_n36_N8S7856C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7856C19D1Ev,_ZThn72_N8S7856C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7856C19D0Ev,_ZThn56_N8S7856C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7856C19D0Ev,_ZThn40_N8S7856C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7856C19D1Ev,_ZThn56_N8S7856C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7856C19D1Ev,_ZThn40_N8S7856C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C6D0Ev,_ZThn28_N7S7856C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7856C6D0Ev,_ZThn12_N7S7856C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7856C6D0Ev,_ZThn56_N7S7856C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7856C6D0Ev,_ZThn40_N7S7856C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C6D1Ev,_ZThn28_N7S7856C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7856C6D1Ev,_ZThn12_N7S7856C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7856C6D1Ev,_ZThn56_N7S7856C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7856C6D1Ev,_ZThn40_N7S7856C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N7S7856C3D0Ev,_ZTv0_n72_N7S7856C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn448_N7S7856C3D0Ev,_ZThn236_N7S7856C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn400_N7S7856C3D0Ev,_ZThn212_N7S7856C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N7S7856C3D1Ev,_ZTv0_n72_N7S7856C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn448_N7S7856C3D1Ev,_ZThn236_N7S7856C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn400_N7S7856C3D1Ev,_ZThn212_N7S7856C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n176_N7S7856C3D0Ev,_ZTv0_n88_N7S7856C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N7S7856C3D0Ev,_ZThn140_N7S7856C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n176_N7S7856C3D1Ev,_ZTv0_n88_N7S7856C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N7S7856C3D1Ev,_ZThn140_N7S7856C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7856C3D0Ev,_ZTv0_n36_N7S7856C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S7856C3D0Ev,_ZThn100_N7S7856C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7856C3D1Ev,_ZTv0_n36_N7S7856C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S7856C3D1Ev,_ZThn100_N7S7856C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C3D0Ev,_ZTv0_n32_N7S7856C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S7856C3D0Ev,_ZThn84_N7S7856C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7856C3D0Ev,_ZThn68_N7S7856C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C3D1Ev,_ZTv0_n32_N7S7856C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S7856C3D1Ev,_ZThn84_N7S7856C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7856C3D1Ev,_ZThn68_N7S7856C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C3D0Ev,_ZTv0_n44_N7S7856C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S7856C3D0Ev,_ZThn92_N7S7856C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7856C3D0Ev,_ZThn56_N7S7856C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C3D1Ev,_ZTv0_n44_N7S7856C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S7856C3D1Ev,_ZThn92_N7S7856C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7856C3D1Ev,_ZThn56_N7S7856C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7856C3D0Ev,_ZTv0_n60_N7S7856C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S7856C3D0Ev,_ZThn116_N7S7856C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7856C3D0Ev,_ZThn40_N7S7856C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7856C3D1Ev,_ZTv0_n60_N7S7856C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S7856C3D1Ev,_ZThn116_N7S7856C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7856C3D1Ev,_ZThn40_N7S7856C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N7S7856C3D0Ev,_ZTv0_n68_N7S7856C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C3D0Ev,_ZThn24_N7S7856C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N7S7856C3D1Ev,_ZTv0_n68_N7S7856C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C3D1Ev,_ZThn24_N7S7856C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C22D0Ev,_ZTv0_n36_N8S7856C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7856C22D0Ev,_ZThn100_N8S7856C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C22D1Ev,_ZTv0_n36_N8S7856C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7856C22D1Ev,_ZThn100_N8S7856C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C22D0Ev,_ZTv0_n60_N8S7856C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7856C22D0Ev,_ZThn40_N8S7856C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C22D1Ev,_ZTv0_n60_N8S7856C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7856C22D1Ev,_ZThn40_N8S7856C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N8S7856C22D0Ev,_ZTv0_n68_N8S7856C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7856C22D0Ev,_ZThn24_N8S7856C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N8S7856C22D1Ev,_ZTv0_n68_N8S7856C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7856C22D1Ev,_ZThn24_N8S7856C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S7856C22D0Ev,_ZThn84_N8S7856C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7856C22D0Ev,_ZThn68_N8S7856C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S7856C22D1Ev,_ZThn84_N8S7856C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7856C22D1Ev,_ZThn68_N8S7856C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S7856C22D0Ev,_ZThn92_N8S7856C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7856C22D0Ev,_ZThn56_N8S7856C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S7856C22D1Ev,_ZThn92_N8S7856C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7856C22D1Ev,_ZThn56_N8S7856C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7856C5D0Ev,_ZThn44_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C5D0Ev,_ZThn28_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7856C5D0Ev,_ZThn80_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7856C5D0Ev,_ZThn64_N7S7856C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7856C5D1Ev,_ZThn44_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C5D1Ev,_ZThn28_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7856C5D1Ev,_ZThn80_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7856C5D1Ev,_ZThn64_N7S7856C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7856C5D0Ev,_ZThn52_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7856C5D0Ev,_ZThn16_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7856C5D0Ev,_ZThn88_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7856C5D0Ev,_ZThn52_N7S7856C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7856C5D1Ev,_ZThn52_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7856C5D1Ev,_ZThn16_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7856C5D1Ev,_ZThn88_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7856C5D1Ev,_ZThn52_N7S7856C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7856C18D0Ev,_ZThn44_N8S7856C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7856C18D0Ev,_ZThn80_N8S7856C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7856C18D1Ev,_ZThn44_N8S7856C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7856C18D1Ev,_ZThn80_N8S7856C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N7S7856C2D0Ev,_ZTv0_n72_N7S7856C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn680_N7S7856C2D0Ev,_ZThn360_N7S7856C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn632_N7S7856C2D0Ev,_ZThn336_N7S7856C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N7S7856C2D1Ev,_ZTv0_n72_N7S7856C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn680_N7S7856C2D1Ev,_ZThn360_N7S7856C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn632_N7S7856C2D1Ev,_ZThn336_N7S7856C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n176_N7S7856C2D0Ev,_ZTv0_n88_N7S7856C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N7S7856C2D0Ev,_ZThn264_N7S7856C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n176_N7S7856C2D1Ev,_ZTv0_n88_N7S7856C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N7S7856C2D1Ev,_ZThn264_N7S7856C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7856C2D0Ev,_ZTv0_n36_N7S7856C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N7S7856C2D0Ev,_ZThn224_N7S7856C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7856C2D1Ev,_ZTv0_n36_N7S7856C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N7S7856C2D1Ev,_ZThn224_N7S7856C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C2D0Ev,_ZTv0_n32_N7S7856C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N7S7856C2D0Ev,_ZThn208_N7S7856C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn352_N7S7856C2D0Ev,_ZThn192_N7S7856C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C2D1Ev,_ZTv0_n32_N7S7856C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N7S7856C2D1Ev,_ZThn208_N7S7856C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn352_N7S7856C2D1Ev,_ZThn192_N7S7856C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C2D0Ev,_ZTv0_n44_N7S7856C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N7S7856C2D0Ev,_ZThn216_N7S7856C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N7S7856C2D0Ev,_ZThn180_N7S7856C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C2D1Ev,_ZTv0_n44_N7S7856C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N7S7856C2D1Ev,_ZThn216_N7S7856C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N7S7856C2D1Ev,_ZThn180_N7S7856C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7856C2D0Ev,_ZTv0_n60_N7S7856C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn448_N7S7856C2D0Ev,_ZThn240_N7S7856C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn304_N7S7856C2D0Ev,_ZThn164_N7S7856C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7856C2D1Ev,_ZTv0_n60_N7S7856C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn448_N7S7856C2D1Ev,_ZThn240_N7S7856C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn304_N7S7856C2D1Ev,_ZThn164_N7S7856C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N7S7856C2D0Ev,_ZTv0_n68_N7S7856C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn280_N7S7856C2D0Ev,_ZThn148_N7S7856C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N7S7856C2D1Ev,_ZTv0_n68_N7S7856C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn280_N7S7856C2D1Ev,_ZThn148_N7S7856C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n192_N7S7856C2D0Ev,_ZTv0_n96_N7S7856C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N7S7856C2D0Ev,_ZThn124_N7S7856C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n192_N7S7856C2D1Ev,_ZTv0_n96_N7S7856C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N7S7856C2D1Ev,_ZThn124_N7S7856C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7856C2 = {  "S7856C2", // class name
  bases_S7856C2, 139,
  &(vtc_S7856C2[0]), // expected_vtbl_contents
  &(vtt_S7856C2[0]), // expected_vtt_contents
  ABISELECT(720,380), // object size
  NSPAIRA(_ZTI7S7856C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7856C2),419, //virtual function table var
  25, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7856C2),429, //virtual table table var
  74, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names29,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7856C32  : S7856C16 , S7856C9_nt {
  ~S7856C32(); // tgen
  S7856C32(); // tgen
};
//SIG(-1 S7856C32) C1{ BC2{ VBC3{ VBC4{ m} BC5{ m} VBC6{ m}} VBC7{ VBC5} VBC8{ BC6 BC5 BC3 Fi} BC6 VBC9{ VBC4 VBC5 VBC10{ BC4 VBC3 VBC5} BC6 BC11{ BC5 VBC4 VBC6 BC3 VBC10 vd} vd} vd Fi} BC5}


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

static void Test_S7856C32()
{
  extern Class_Descriptor cd_S7856C32;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S7856C32, buf);
    S7856C32 *dp, &lv = *(dp=new (buf) S7856C32());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S7856C32)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7856C32)");
    /*is_ambiguous_... S7856C32::S7856C11 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*), 0, "S7856C32");
    check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*), 0, "S7856C32");
    /*is_ambiguous_... S7856C7::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C7*), 0, "S7856C32");
    /*is_ambiguous_... S7856C13::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*)(S7856C7*), 0, "S7856C32");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*)(S7856C7*), 0, "S7856C32");
    /*is_ambiguous_... S7856C32::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*), ABISELECT(48,28), "S7856C32");
    /*is_ambiguous_... S7856C32::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*), ABISELECT(12,8), "S7856C32");
    check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*), ABISELECT(12,8), "S7856C32");
    check_base_class_offset(lv, (S7856C12*)(S7856C13*)(S7856C7*), ABISELECT(12,8), "S7856C32");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(12,8), "S7856C32");
    /*is_ambiguous_... S7856C16::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C16*), ABISELECT(48,28), "S7856C32");
    check_base_class_offset(lv, (S7856C11*)(S7856C10*), ABISELECT(48,28), "S7856C32");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C17_nt*), ABISELECT(12,8), "S7856C32");
    /*is_ambiguous_... S7856C7::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C7*), ABISELECT(12,8), "S7856C32");
    /*is_ambiguous_... S7856C10::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*), ABISELECT(12,8), "S7856C32");
    check_base_class_offset(lv, (S7856C17_nt*)(S7856C16*), 0, "S7856C32");
    /*is_ambiguous_... S7856C14::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*), ABISELECT(16,12), "S7856C32");
    /*is_ambiguous_... S7856C14::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*), ABISELECT(24,16), "S7856C32");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*), ABISELECT(16,12), "S7856C32");
    check_base_class_offset(lv, (S7856C11*)(S7856C14*), ABISELECT(16,12), "S7856C32");
    check_base_class_offset(lv, (S7856C14*)(S7856C16*), ABISELECT(16,12), "S7856C32");
    /*is_ambiguous_... S7856C16::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C16*), 0, "S7856C32");
    /*is_ambiguous_... S7856C10::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*), ABISELECT(48,28), "S7856C32");
    check_base_class_offset(lv, (S7856C10*)(S7856C7*), ABISELECT(48,28), "S7856C32");
    check_base_class_offset(lv, (S7856C10*)(S7856C13*)(S7856C7*), ABISELECT(48,28), "S7856C32");
    /*is_ambiguous_... S7856C7::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C7*), ABISELECT(32,20), "S7856C32");
    /*is_ambiguous_... S7856C13::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*)(S7856C7*), ABISELECT(40,24), "S7856C32");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(32,20), "S7856C32");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(32,20), "S7856C32");
    check_base_class_offset(lv, (S7856C13*)(S7856C7*), ABISELECT(32,20), "S7856C32");
    check_base_class_offset(lv, (S7856C7*)(S7856C16*), ABISELECT(32,20), "S7856C32");
    check_base_class_offset(lv, (S7856C16*), 0, "S7856C32");
    /*is_ambiguous_... S7856C32::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*), 0, "S7856C32");
    test_class_info(&lv, &cd_S7856C32);
    dp->~S7856C32();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7856C32(Test_S7856C32, "S7856C32", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN8S7856C32C1Ev();
extern void _ZN8S7856C32D1Ev();
Name_Map name_map_S7856C32[] = {
  NSPAIR(_ZN8S7856C32C1Ev),
  NSPAIR(_ZN8S7856C32D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C17_nt;
extern VTBL_ENTRY _ZTI11S7856C17_nt[];
extern  VTBL_ENTRY _ZTV11S7856C17_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S7856C17_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C7;
extern VTBL_ENTRY _ZTI7S7856C7[];
extern  VTBL_ENTRY _ZTV7S7856C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C7[];
extern Class_Descriptor cd_S7856C16;
extern VTBL_ENTRY _ZTI8S7856C16[];
extern  VTBL_ENTRY _ZTV8S7856C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C16[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
static Base_Class bases_S7856C32[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7856C11,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(16,12), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(48,28), //bcp->offset
    26, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7856C7,    ABISELECT(32,20), //bcp->offset
    16, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S7856C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7856C32[];
extern void _ZN8S7856C32D1Ev();
extern void _ZN8S7856C32D0Ev();
extern void ABISELECT(_ZTv0_n64_N8S7856C32D1Ev,_ZTv0_n32_N8S7856C32D1Ev)();
extern void ABISELECT(_ZThn32_N8S7856C32D1Ev,_ZThn20_N8S7856C32D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C32D0Ev,_ZTv0_n32_N8S7856C32D0Ev)();
extern void ABISELECT(_ZThn32_N8S7856C32D0Ev,_ZThn20_N8S7856C32D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7856C32[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  ABISELECT(12,8),
  0,
  ABISELECT(48,28),
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C32[0]),
  (VTBL_ENTRY)&_ZN8S7856C32D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C32D0Ev,
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S7856C32[0]),
  ABISELECT(-32,-20),
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S7856C32[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C32D1Ev,_ZTv0_n32_N8S7856C32D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C32D0Ev,_ZTv0_n32_N8S7856C32D0Ev),
  ABISELECT(-36,-20),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7856C32[0]),
};
extern VTBL_ENTRY _ZTV8S7856C32[];
extern void _ZN8S7856C16D1Ev();
extern void _ZN8S7856C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C32[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  ABISELECT(12,8),
  0,
  ABISELECT(48,28),
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&_ZN8S7856C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C16__8S7856C32[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C16__8S7856C32[] = {
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev)();
extern void ABISELECT(_ZThn32_N8S7856C16D1Ev,_ZThn20_N8S7856C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev)();
extern void ABISELECT(_ZThn32_N8S7856C16D0Ev,_ZThn20_N8S7856C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C16__8S7856C32[] = {
  ABISELECT(-32,-20),
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C32[] = {
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt__8S7856C32[] = {
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI11S7856C17_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C32[] = {
  -4,
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C14__A1__8S7856C32[] = {
  -4,
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
extern void _ZN7S7856C7D1Ev();
extern void _ZN7S7856C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C32[] = {
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
  (VTBL_ENTRY)&_ZN7S7856C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C7D0Ev,
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C137S7856C7__8S7856C32[] = {
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C137S7856C7__A2__8S7856C32[] = {
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C137S7856C7__8S7856C32[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C7__8S7856C32[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C32[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTT_ENTRY vtt_S7856C32[] = {
  {&(_ZTV8S7856C32[10]),  10,32},
  {&(_tg__ZTV8S7856C16__8S7856C32[10]),  10,12},
  {&(_tg__ZTV8S7856C10__8S7856C16__8S7856C32[6]),  6,6},
  {&(_tg__ZTV8S7856C16__8S7856C32[10]),  10,12},
  {&(_tg__ZTV8S7856C14__8S7856C16__8S7856C32[4]),  4,4},
  {&(_tg__ZTV7S7856C7__8S7856C16__8S7856C32[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C16__8S7856C32[6]),  6,6},
  {&(_ZTV8S7856C32[32]),  32,32},
  {&(_ZTV8S7856C32[10]),  10,32},
  {&(_ZTV8S7856C32[16]),  16,32},
  {&(_ZTV8S7856C32[24]),  24,32},
  {&(_ZTV8S7856C32[32]),  32,32},
  {&(_tg__ZTV8S7856C11__8S7856C32[4]),  4,4},
  {&(_tg__ZTV11S7856C17_nt__8S7856C32[3]),  3,3},
  {&(_tg__ZTV8S7856C14__8S7856C32[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C14__A1__8S7856C32[4]),  4,4},
  {&(_tg__ZTV7S7856C7__8S7856C32[7]),  7,9},
  {&(_tg__ZTV8S7856C137S7856C7__8S7856C32[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C137S7856C7__A2__8S7856C32[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C7__8S7856C32[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C7__8S7856C32[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C7__8S7856C32[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C7__8S7856C32[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C32[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C32[6]),  6,6},
};
extern VTBL_ENTRY _ZTI8S7856C32[];
extern  VTBL_ENTRY _ZTV8S7856C32[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C32[];
static VTBL_ENTRY alt_thunk_names30[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7856C16D0Ev,_ZThn20_N8S7856C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7856C16D1Ev,_ZThn20_N8S7856C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C32D0Ev,_ZTv0_n32_N8S7856C32D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7856C32D0Ev,_ZThn20_N8S7856C32D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C32D1Ev,_ZTv0_n32_N8S7856C32D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7856C32D1Ev,_ZThn20_N8S7856C32D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7856C32 = {  "S7856C32", // class name
  bases_S7856C32, 22,
  &(vtc_S7856C32[0]), // expected_vtbl_contents
  &(vtt_S7856C32[0]), // expected_vtt_contents
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI8S7856C32),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S7856C32),32, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7856C32),25, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names30,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7856C1  : S7856C2 , S7856C26 , virtual S7856C32 {
  ~S7856C1(); // tgen
  S7856C1(); // tgen
};
//SIG(1 S7856C1) C1{ BC2{ VBC3{ VBC4{ VBC5{ VBC6{ VBC7{ VBC8{ m} VBC9{ m} VBC10{ BC8 VBC11{ VBC8 BC9 VBC12{ m}} VBC9} BC12 BC13{ BC9 VBC8 VBC12 BC11 VBC10 vd} vd} VBC14{ BC12 BC9 BC11 Fi} VBC13 vd Fi[2]} VBC15{ m} VBC16{ VBC11 VBC17{ VBC9} VBC14 BC12 VBC7 vd Fi} BC18{ VBC13 BC14 BC10 BC12 vd} vd} BC8 BC10 BC19{ BC15 VBC8 BC6 VBC18 vd v1} vd} VBC20{ BC17 VBC12 BC5 BC21{ BC9 BC17 vd} vd} BC22{ BC10 VBC6 BC5 VBC4 vd Fc} VBC23{ VBC14 VBC24{ m} BC25{ BC13 BC26{ VBC9} BC4 VBC27{ BC16 BC28{ BC7 VBC14 VBC29{ VBC7 VBC5 vd} BC21 BC24 Fi} VBC24} BC5} BC13 VBC22 FC13 Fi:26} vd Fp} vd Fi FC30{ VBC18 BC31{ VBC11 BC22 Fp} VBC24 vd}} BC26 VBC32{ BC16 BC9}}


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

static void Test_S7856C1()
{
  extern Class_Descriptor cd_S7856C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(94,99)];
    init_test(&cd_S7856C1, buf);
    S7856C1 *dp, &lv = *(dp=new (buf) S7856C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(744,392), "sizeof(S7856C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7856C1)");
    /*is_ambiguous_... S7856C1::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C7*), 0, "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C11 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*), 0, "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*)(S7856C7*), 0, "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*)(S7856C7*), 0, "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C14 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*), 0, "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*), 0, "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*), 0, "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C5 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), 0, "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C4 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C19*)(S7856C4*), 0, "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C18 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*), 0, "S7856C1");
    check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C20*), 0, "S7856C1");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C3*), 0, "S7856C1");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*)(S7856C25*)(S7856C23*), 0, "S7856C1");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*)(S7856C25*)(S7856C23*), 0, "S7856C1");
    /*is_ambiguous_... S7856C19::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C19*)(S7856C4*)(S7856C25*)(S7856C23*), 0, "S7856C1");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C7*)(S7856C28*)(S7856C27*), 0, "S7856C1");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), 0, "S7856C1");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), 0, "S7856C1");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), 0, "S7856C1");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*)(S7856C23*), 0, "S7856C1");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*)(S7856C23*), 0, "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C22 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), 0, "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C7*), 0, "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*), 0, "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C17_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C17_nt*), 0, "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*)(S7856C5*), 0, "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C4*), 0, "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*), 0, "S7856C1");
    /*is_ambiguous_... S7856C20::S7856C17_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C17_nt*)(S7856C20*), 0, "S7856C1");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C20*), 0, "S7856C1");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C17_nt*)(S7856C21*)(S7856C20*), 0, "S7856C1");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C22*)(S7856C3*), 0, "S7856C1");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C3*), 0, "S7856C1");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C26*)(S7856C25*)(S7856C23*), 0, "S7856C1");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C4*)(S7856C25*)(S7856C23*), 0, "S7856C1");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C7*)(S7856C28*)(S7856C27*), 0, "S7856C1");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C17_nt*)(S7856C21*)(S7856C28*)(S7856C27*), 0, "S7856C1");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), 0, "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C22*), 0, "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C22*), 0, "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C26 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C26*), 0, "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*), ABISELECT(344,184), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*), ABISELECT(344,184), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*), 0, "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*)(S7856C7*), 0, "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*)(S7856C7*), 0, "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*), 0, "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*), 0, "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*), 0, "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), 0, "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*), 0, "S7856C1");
    /*is_ambiguous_... S7856C20::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C20*), 0, "S7856C1");
    check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C20*), 0, "S7856C1");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C3*), 0, "S7856C1");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*)(S7856C25*)(S7856C23*), 0, "S7856C1");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*)(S7856C25*)(S7856C23*), 0, "S7856C1");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), 0, "S7856C1");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), 0, "S7856C1");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), 0, "S7856C1");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*)(S7856C23*), 0, "S7856C1");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*)(S7856C23*), 0, "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), 0, "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*), ABISELECT(344,184), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C16*), ABISELECT(344,184), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(344,184), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C4*), ABISELECT(344,184), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*), ABISELECT(344,184), "S7856C1");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C20*), ABISELECT(344,184), "S7856C1");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C22*)(S7856C3*), ABISELECT(344,184), "S7856C1");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C3*), ABISELECT(344,184), "S7856C1");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(344,184), "S7856C1");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C16*)(S7856C27*), ABISELECT(344,184), "S7856C1");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(344,184), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C22*), ABISELECT(344,184), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(344,184), "S7856C1");
    /*is_ambiguous_... S7856C16::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C16*)(S7856C32*), ABISELECT(344,184), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C7*), ABISELECT(344,184), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*)(S7856C7*), ABISELECT(344,184), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*), ABISELECT(344,184), "S7856C1");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*)(S7856C25*)(S7856C23*), ABISELECT(344,184), "S7856C1");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(344,184), "S7856C1");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(344,184), "S7856C1");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*)(S7856C23*), ABISELECT(344,184), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C7*), ABISELECT(360,196), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*)(S7856C7*), ABISELECT(368,200), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(360,196), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(360,196), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C7*), ABISELECT(360,196), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C6 */ AMB_check_base_class_offset(lv, (S7856C7*)(S7856C6*), ABISELECT(360,196), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C7*)(S7856C16*), ABISELECT(360,196), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C7*)(S7856C6*)(S7856C19*)(S7856C4*), ABISELECT(360,196), "S7856C1");
    check_base_class_offset(lv, (S7856C7*)(S7856C6*)(S7856C19*)(S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(360,196), "S7856C1");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C7*)(S7856C16*)(S7856C27*), ABISELECT(360,196), "S7856C1");
    check_base_class_offset(lv, (S7856C7*)(S7856C29*), ABISELECT(360,196), "S7856C1");
    check_base_class_offset(lv, (S7856C7*)(S7856C16*)(S7856C32*), ABISELECT(360,196), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*), ABISELECT(376,204), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*), ABISELECT(384,208), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*), ABISELECT(376,204), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*), ABISELECT(376,204), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C6 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C6*), ABISELECT(376,204), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C16*), ABISELECT(376,204), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C6*)(S7856C19*)(S7856C4*), ABISELECT(376,204), "S7856C1");
    /*is_ambiguous_... S7856C23::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C23*), ABISELECT(376,204), "S7856C1");
    check_base_class_offset(lv, (S7856C14*)(S7856C6*)(S7856C19*)(S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(376,204), "S7856C1");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C16*)(S7856C27*), ABISELECT(376,204), "S7856C1");
    /*is_ambiguous_... S7856C28::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C28*)(S7856C27*), ABISELECT(376,204), "S7856C1");
    check_base_class_offset(lv, (S7856C14*)(S7856C16*)(S7856C32*), ABISELECT(376,204), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*), ABISELECT(400,216), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*), ABISELECT(392,212), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*), ABISELECT(392,212), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C6 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C6*), ABISELECT(392,212), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C18*)(S7856C5*), ABISELECT(392,212), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C6*)(S7856C19*)(S7856C4*), ABISELECT(392,212), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C18*), ABISELECT(392,212), "S7856C1");
    check_base_class_offset(lv, (S7856C13*)(S7856C18*)(S7856C5*)(S7856C20*), ABISELECT(392,212), "S7856C1");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C3*), ABISELECT(392,212), "S7856C1");
    /*is_ambiguous_... S7856C6::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C6*)(S7856C19*)(S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(392,212), "S7856C1");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(392,212), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(392,212), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C6*)(S7856C5*), ABISELECT(344,184), "S7856C1");
    check_base_class_offset(lv, (S7856C6*)(S7856C5*)(S7856C20*), ABISELECT(344,184), "S7856C1");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C6*)(S7856C22*)(S7856C3*), ABISELECT(344,184), "S7856C1");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C6*)(S7856C5*)(S7856C22*)(S7856C3*), ABISELECT(344,184), "S7856C1");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C6*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(344,184), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C6*)(S7856C22*), ABISELECT(344,184), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C6*)(S7856C5*)(S7856C22*), ABISELECT(344,184), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7856C5*), 0, "S7856C1");
    check_base_class_offset(lv, (S7856C15*)(S7856C5*)(S7856C20*), 0, "S7856C1");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7856C5*)(S7856C22*)(S7856C3*), 0, "S7856C1");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7856C5*)(S7856C25*)(S7856C23*), 0, "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7856C5*)(S7856C22*), 0, "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C17_nt*)(S7856C16*), ABISELECT(408,220), "S7856C1");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C17_nt*)(S7856C16*)(S7856C27*), ABISELECT(408,220), "S7856C1");
    check_base_class_offset(lv, (S7856C17_nt*)(S7856C16*)(S7856C32*), ABISELECT(408,220), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C16*), ABISELECT(408,220), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C16*)(S7856C5*), ABISELECT(408,220), "S7856C1");
    check_base_class_offset(lv, (S7856C16*)(S7856C5*)(S7856C20*), ABISELECT(408,220), "S7856C1");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C16*)(S7856C5*)(S7856C22*)(S7856C3*), ABISELECT(408,220), "S7856C1");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C16*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(408,220), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C16*)(S7856C5*)(S7856C22*), ABISELECT(408,220), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(312,168), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(320,172), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(312,168), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(312,168), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(312,168), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C5 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(328,176), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(328,176), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*)(S7856C5*), ABISELECT(336,180), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C18*)(S7856C5*), ABISELECT(312,168), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C5*)(S7856C4*), ABISELECT(312,168), "S7856C1");
    check_base_class_offset(lv, (S7856C5*)(S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(312,168), "S7856C1");
    check_base_class_offset(lv, (S7856C5*)(S7856C29*), ABISELECT(312,168), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C4 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C4*), ABISELECT(296,156), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C4 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C4*), ABISELECT(288,152), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C4*), ABISELECT(288,152), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7856C19*)(S7856C4*), ABISELECT(296,156), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C6*)(S7856C19*)(S7856C4*), ABISELECT(296,156), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*), ABISELECT(424,228), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*), ABISELECT(432,232), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*), ABISELECT(424,228), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*), ABISELECT(424,228), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C18*), ABISELECT(424,228), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C18 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*), ABISELECT(440,236), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*), ABISELECT(440,236), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*), ABISELECT(448,240), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C18*)(S7856C19*)(S7856C4*), ABISELECT(424,228), "S7856C1");
    check_base_class_offset(lv, (S7856C18*)(S7856C19*)(S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(424,228), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C19*)(S7856C4*), ABISELECT(296,156), "S7856C1");
    /*is_ambiguous_... S7856C3::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C4*)(S7856C3*), ABISELECT(288,152), "S7856C1");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C4*)(S7856C22*)(S7856C3*), ABISELECT(288,152), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C4*)(S7856C22*), ABISELECT(288,152), "S7856C1");
    /*is_ambiguous_... S7856C20::S7856C17_nt */ AMB_check_base_class_offset(lv, (S7856C17_nt*)(S7856C20*), ABISELECT(456,244), "S7856C1");
    /*is_ambiguous_... S7856C14::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C20*), ABISELECT(464,248), "S7856C1");
    /*is_ambiguous_... S7856C14::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C20*), ABISELECT(472,252), "S7856C1");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C20*), ABISELECT(464,248), "S7856C1");
    check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C20*), ABISELECT(464,248), "S7856C1");
    check_base_class_offset(lv, (S7856C14*)(S7856C18*)(S7856C5*)(S7856C20*), ABISELECT(464,248), "S7856C1");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C20*), ABISELECT(480,256), "S7856C1");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*)(S7856C5*)(S7856C20*), ABISELECT(480,256), "S7856C1");
    /*is_ambiguous_... S7856C18::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*)(S7856C5*)(S7856C20*), ABISELECT(488,260), "S7856C1");
    check_base_class_offset(lv, (S7856C18*)(S7856C5*)(S7856C20*), ABISELECT(464,248), "S7856C1");
    check_base_class_offset(lv, (S7856C5*)(S7856C20*), ABISELECT(464,248), "S7856C1");
    /*is_ambiguous_... S7856C21::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C21*)(S7856C20*), ABISELECT(496,264), "S7856C1");
    check_base_class_offset(lv, (S7856C17_nt*)(S7856C21*)(S7856C20*), ABISELECT(496,264), "S7856C1");
    check_base_class_offset(lv, (S7856C21*)(S7856C20*), ABISELECT(496,264), "S7856C1");
    check_base_class_offset(lv, (S7856C20*)(S7856C3*), ABISELECT(456,244), "S7856C1");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C22*)(S7856C3*), ABISELECT(240,128), "S7856C1");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C22*)(S7856C3*), ABISELECT(240,128), "S7856C1");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C3*), ABISELECT(248,132), "S7856C1");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C3*), ABISELECT(256,136), "S7856C1");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C3*), ABISELECT(248,132), "S7856C1");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C3*), ABISELECT(248,132), "S7856C1");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C3*), ABISELECT(248,132), "S7856C1");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C3*), ABISELECT(264,140), "S7856C1");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C3*), ABISELECT(264,140), "S7856C1");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C3*), ABISELECT(272,144), "S7856C1");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C18*)(S7856C5*)(S7856C22*)(S7856C3*), ABISELECT(248,132), "S7856C1");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C5*)(S7856C22*)(S7856C3*), ABISELECT(248,132), "S7856C1");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C22*)(S7856C3*), ABISELECT(240,128), "S7856C1");
    /*is_ambiguous_... S7856C23::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7856C23*), 0, "S7856C1");
    /*is_ambiguous_... S7856C27::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7856C27*), 0, "S7856C1");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*)(S7856C25*)(S7856C23*), ABISELECT(512,272), "S7856C1");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*)(S7856C25*)(S7856C23*), ABISELECT(504,268), "S7856C1");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*)(S7856C25*)(S7856C23*), ABISELECT(504,268), "S7856C1");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C25*)(S7856C23*), ABISELECT(504,268), "S7856C1");
    check_base_class_offset(lv, (S7856C26*)(S7856C25*)(S7856C23*), ABISELECT(520,276), "S7856C1");
    /*is_ambiguous_... S7856C4::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(536,284), "S7856C1");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(528,280), "S7856C1");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(528,280), "S7856C1");
    check_base_class_offset(lv, (S7856C15*)(S7856C19*)(S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(536,284), "S7856C1");
    check_base_class_offset(lv, (S7856C6*)(S7856C19*)(S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(536,284), "S7856C1");
    check_base_class_offset(lv, (S7856C19*)(S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(536,284), "S7856C1");
    check_base_class_offset(lv, (S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(528,280), "S7856C1");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C16*)(S7856C27*), ABISELECT(640,340), "S7856C1");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C16*)(S7856C27*), ABISELECT(640,340), "S7856C1");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(656,348), "S7856C1");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(664,352), "S7856C1");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(656,348), "S7856C1");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(656,348), "S7856C1");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(656,348), "S7856C1");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(656,348), "S7856C1");
    check_base_class_offset(lv, (S7856C29*)(S7856C28*)(S7856C27*), 0, "S7856C1");
    /*is_ambiguous_... S7856C21::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C21*)(S7856C28*)(S7856C27*), ABISELECT(672,356), "S7856C1");
    check_base_class_offset(lv, (S7856C17_nt*)(S7856C21*)(S7856C28*)(S7856C27*), ABISELECT(672,356), "S7856C1");
    check_base_class_offset(lv, (S7856C21*)(S7856C28*)(S7856C27*), ABISELECT(672,356), "S7856C1");
    check_base_class_offset(lv, (S7856C24*)(S7856C28*)(S7856C27*), ABISELECT(656,348), "S7856C1");
    check_base_class_offset(lv, (S7856C28*)(S7856C27*), ABISELECT(656,348), "S7856C1");
    check_base_class_offset(lv, (S7856C27*)(S7856C25*)(S7856C23*), ABISELECT(640,340), "S7856C1");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(552,296), "S7856C1");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(560,300), "S7856C1");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(552,296), "S7856C1");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(552,296), "S7856C1");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(552,296), "S7856C1");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(568,304), "S7856C1");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(568,304), "S7856C1");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(576,308), "S7856C1");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(552,296), "S7856C1");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(552,296), "S7856C1");
    check_base_class_offset(lv, (S7856C25*)(S7856C23*), ABISELECT(504,268), "S7856C1");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*)(S7856C23*), ABISELECT(592,316), "S7856C1");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*)(S7856C23*), ABISELECT(584,312), "S7856C1");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*)(S7856C23*), ABISELECT(584,312), "S7856C1");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C23*), ABISELECT(584,312), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C22 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C22*), ABISELECT(688,364), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C22*), ABISELECT(688,364), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(696,368), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(704,372), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(696,368), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(696,368), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(696,368), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C22 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(712,376), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(712,376), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(720,380), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(696,368), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C5*)(S7856C22*), ABISELECT(696,368), "S7856C1");
    check_base_class_offset(lv, (S7856C22*)(S7856C23*), ABISELECT(688,364), "S7856C1");
    check_base_class_offset(lv, (S7856C23*)(S7856C3*), ABISELECT(504,268), "S7856C1");
    check_base_class_offset(lv, (S7856C3*)(S7856C2*), ABISELECT(240,128), "S7856C1");
    check_base_class_offset(lv, (S7856C2*), 0, "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C26 */ AMB_check_base_class_offset(lv, (S7856C26*), ABISELECT(232,124), "S7856C1");
    /*is_ambiguous_... S7856C16::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C16*)(S7856C32*), ABISELECT(728,384), "S7856C1");
    check_base_class_offset(lv, (S7856C16*)(S7856C32*), ABISELECT(728,384), "S7856C1");
    /*is_ambiguous_... S7856C32::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C32*), ABISELECT(728,384), "S7856C1");
    check_base_class_offset(lv, (S7856C32*), ABISELECT(728,384), "S7856C1");
    test_class_info(&lv, &cd_S7856C1);
    dp->~S7856C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7856C1(Test_S7856C1, "S7856C1", ABISELECT(744,392));

#else // __cplusplus

extern void _ZN7S7856C1C1Ev();
extern void _ZN7S7856C1D1Ev();
Name_Map name_map_S7856C1[] = {
  NSPAIR(_ZN7S7856C1C1Ev),
  NSPAIR(_ZN7S7856C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C7;
extern VTBL_ENTRY _ZTI7S7856C7[];
extern  VTBL_ENTRY _ZTV7S7856C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C7[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C6;
extern VTBL_ENTRY _ZTI7S7856C6[];
extern  VTBL_ENTRY _ZTV7S7856C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C6[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C17_nt;
extern VTBL_ENTRY _ZTI11S7856C17_nt[];
extern  VTBL_ENTRY _ZTV11S7856C17_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S7856C17_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C16;
extern VTBL_ENTRY _ZTI8S7856C16[];
extern  VTBL_ENTRY _ZTV8S7856C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C16[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C5;
extern VTBL_ENTRY _ZTI7S7856C5[];
extern  VTBL_ENTRY _ZTV7S7856C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C5[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C6;
extern VTBL_ENTRY _ZTI7S7856C6[];
extern  VTBL_ENTRY _ZTV7S7856C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C6[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C19;
extern VTBL_ENTRY _ZTI8S7856C19[];
extern  VTBL_ENTRY _ZTV8S7856C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C19[];
extern Class_Descriptor cd_S7856C4;
extern VTBL_ENTRY _ZTI7S7856C4[];
extern  VTBL_ENTRY _ZTV7S7856C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C4[];
extern Class_Descriptor cd_S7856C17_nt;
extern VTBL_ENTRY _ZTI11S7856C17_nt[];
extern  VTBL_ENTRY _ZTV11S7856C17_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S7856C17_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C5;
extern VTBL_ENTRY _ZTI7S7856C5[];
extern  VTBL_ENTRY _ZTV7S7856C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C5[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C17_nt;
extern VTBL_ENTRY _ZTI11S7856C17_nt[];
extern  VTBL_ENTRY _ZTV11S7856C17_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S7856C17_nt[];
extern Class_Descriptor cd_S7856C21;
extern VTBL_ENTRY _ZTI8S7856C21[];
extern  VTBL_ENTRY _ZTV8S7856C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C21[];
extern Class_Descriptor cd_S7856C20;
extern VTBL_ENTRY _ZTI8S7856C20[];
extern  VTBL_ENTRY _ZTV8S7856C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C20[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C5;
extern VTBL_ENTRY _ZTI7S7856C5[];
extern  VTBL_ENTRY _ZTV7S7856C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C5[];
extern Class_Descriptor cd_S7856C22;
extern VTBL_ENTRY _ZTI8S7856C22[];
extern  VTBL_ENTRY _ZTV8S7856C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C22[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C26;
extern VTBL_ENTRY _ZTI8S7856C26[];
extern  VTBL_ENTRY _ZTV8S7856C26[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C26[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C6;
extern VTBL_ENTRY _ZTI7S7856C6[];
extern  VTBL_ENTRY _ZTV7S7856C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C6[];
extern Class_Descriptor cd_S7856C19;
extern VTBL_ENTRY _ZTI8S7856C19[];
extern  VTBL_ENTRY _ZTV8S7856C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C19[];
extern Class_Descriptor cd_S7856C4;
extern VTBL_ENTRY _ZTI7S7856C4[];
extern  VTBL_ENTRY _ZTV7S7856C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C4[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C16;
extern VTBL_ENTRY _ZTI8S7856C16[];
extern  VTBL_ENTRY _ZTV8S7856C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C16[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C7;
extern VTBL_ENTRY _ZTI7S7856C7[];
extern  VTBL_ENTRY _ZTV7S7856C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C7[];
extern Class_Descriptor cd_S7856C29;
extern VTBL_ENTRY _ZTI8S7856C29[];
extern  VTBL_ENTRY _ZTV8S7856C29[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C29[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C17_nt;
extern VTBL_ENTRY _ZTI11S7856C17_nt[];
extern  VTBL_ENTRY _ZTV11S7856C17_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S7856C17_nt[];
extern Class_Descriptor cd_S7856C21;
extern VTBL_ENTRY _ZTI8S7856C21[];
extern  VTBL_ENTRY _ZTV8S7856C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C21[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C28;
extern VTBL_ENTRY _ZTI8S7856C28[];
extern  VTBL_ENTRY _ZTV8S7856C28[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C28[];
extern Class_Descriptor cd_S7856C27;
extern VTBL_ENTRY _ZTI8S7856C27[];
extern  VTBL_ENTRY _ZTV8S7856C27[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C27[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C5;
extern VTBL_ENTRY _ZTI7S7856C5[];
extern  VTBL_ENTRY _ZTV7S7856C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C5[];
extern Class_Descriptor cd_S7856C25;
extern VTBL_ENTRY _ZTI8S7856C25[];
extern  VTBL_ENTRY _ZTV8S7856C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C25[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C5;
extern VTBL_ENTRY _ZTI7S7856C5[];
extern  VTBL_ENTRY _ZTV7S7856C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C5[];
extern Class_Descriptor cd_S7856C22;
extern VTBL_ENTRY _ZTI8S7856C22[];
extern  VTBL_ENTRY _ZTV8S7856C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C22[];
extern Class_Descriptor cd_S7856C23;
extern VTBL_ENTRY _ZTI8S7856C23[];
extern  VTBL_ENTRY _ZTV8S7856C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C23[];
extern Class_Descriptor cd_S7856C3;
extern VTBL_ENTRY _ZTI7S7856C3[];
extern  VTBL_ENTRY _ZTV7S7856C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C3[];
extern Class_Descriptor cd_S7856C2;
extern VTBL_ENTRY _ZTI7S7856C2[];
extern  VTBL_ENTRY _ZTV7S7856C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C2[];
extern Class_Descriptor cd_S7856C26;
extern VTBL_ENTRY _ZTI8S7856C26[];
extern  VTBL_ENTRY _ZTV8S7856C26[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C26[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C16;
extern VTBL_ENTRY _ZTI8S7856C16[];
extern  VTBL_ENTRY _ZTV8S7856C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C16[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C32;
extern VTBL_ENTRY _ZTI8S7856C32[];
extern  VTBL_ENTRY _ZTV8S7856C32[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C32[];
static Base_Class bases_S7856C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S77C13_nt,    ABISELECT(344,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(344,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C11,    ABISELECT(344,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    213, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C10,    ABISELECT(344,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    211, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(360,196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(368,200), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(360,196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(360,196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    206, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(360,196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    205, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C7,    ABISELECT(360,196), //bcp->offset
    149, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    204, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(376,204), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(384,208), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(376,204), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(376,204), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    215, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(376,204), //bcp->offset
    159, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    214, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(400,216), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(392,212), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(392,212), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    217, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(392,212), //bcp->offset
    163, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    216, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C6,    ABISELECT(344,184), //bcp->offset
    136, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    198, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S7856C17_nt,    ABISELECT(408,220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    226, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(408,220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7856C16,    ABISELECT(408,220), //bcp->offset
    173, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    220, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(312,168), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(320,172), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(312,168), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(312,168), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    182, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(312,168), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    181, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(328,176), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(328,176), //bcp->offset
    130, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    183, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(336,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(312,168), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    180, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S7856C5,    ABISELECT(312,168), //bcp->offset
    113, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    179, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    52, //immediately_derived
  0, 1},
  {&cd_S77C13_nt,    ABISELECT(296,156), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    52, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(288,152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(288,152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    150, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    52, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(296,156), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S7856C6,    ABISELECT(296,156), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    153, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(424,228), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(432,232), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(424,228), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(424,228), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    229, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(424,228), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    228, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(440,236), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(440,236), //bcp->offset
    197, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    230, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(448,240), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(424,228), //bcp->offset
    186, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    227, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    51, //immediately_derived
  0, 1},
  {&cd_S7856C19,    ABISELECT(296,156), //bcp->offset
    99, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    152, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    52, //immediately_derived
  0, 0},
  {&cd_S7856C4,    ABISELECT(288,152), //bcp->offset
    79, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    149, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    80, //immediately_derived
  0, 1},
  {&cd_S7856C17_nt,    ABISELECT(456,244), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    237, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    67, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(464,248), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(472,252), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(464,248), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(464,248), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    241, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(464,248), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    240, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(480,256), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    60, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(480,256), //bcp->offset
    236, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    56, //bcp->index_in_construction_vtbl_array
    242, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(488,260), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(464,248), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    239, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    63, //immediately_derived
  0, 0},
  {&cd_S7856C5,    ABISELECT(464,248), //bcp->offset
    220, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    55, //bcp->index_in_construction_vtbl_array
    238, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    67, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(496,264), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    66, //immediately_derived
  0, 0},
  {&cd_S7856C17_nt,    ABISELECT(496,264), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    258, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    66, //immediately_derived
  0, 0},
  {&cd_S7856C21,    ABISELECT(496,264), //bcp->offset
    242, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    57, //bcp->index_in_construction_vtbl_array
    257, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    67, //immediately_derived
  0, 0},
  {&cd_S7856C20,    ABISELECT(456,244), //bcp->offset
    203, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    54, //bcp->index_in_construction_vtbl_array
    236, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    138, //immediately_derived
  0, 1},
  {&cd_S77C13_nt,    ABISELECT(240,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    69, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(240,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    67, //init_seq
    80, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(248,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    74, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(256,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    74, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(248,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    73, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(248,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    83, //bcp->base_subarray_index_in_construction_vtbl_array
    68, //init_seq
    74, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(248,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    82, //bcp->base_subarray_index_in_construction_vtbl_array
    69, //init_seq
    78, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(264,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    76, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(264,140), //bcp->offset
    73, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    59, //bcp->index_in_construction_vtbl_array
    84, //bcp->base_subarray_index_in_construction_vtbl_array
    70, //init_seq
    78, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(272,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    78, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(248,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    71, //init_seq
    79, //immediately_derived
  0, 0},
  {&cd_S7856C5,    ABISELECT(248,132), //bcp->offset
    57, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    58, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    72, //init_seq
    80, //immediately_derived
  0, 0},
  {&cd_S7856C22,    ABISELECT(240,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    77, //bcp->base_subarray_index_in_construction_vtbl_array
    73, //init_seq
    138, //immediately_derived
  0, 0},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    108, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(512,272), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    85, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(504,268), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    84, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(504,268), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    273, //bcp->base_subarray_index_in_construction_vtbl_array
    51, //init_seq
    85, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(504,268), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    272, //bcp->base_subarray_index_in_construction_vtbl_array
    52, //init_seq
    119, //immediately_derived
  0, 0},
  {&cd_S7856C26,    ABISELECT(520,276), //bcp->offset
    272, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    61, //bcp->index_in_construction_vtbl_array
    276, //bcp->base_subarray_index_in_construction_vtbl_array
    53, //init_seq
    119, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(536,284), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    93, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(528,280), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    89, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(528,280), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    278, //bcp->base_subarray_index_in_construction_vtbl_array
    54, //init_seq
    93, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(536,284), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    92, //immediately_derived
  0, 0},
  {&cd_S7856C6,    ABISELECT(536,284), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    281, //bcp->base_subarray_index_in_construction_vtbl_array
    55, //init_seq
    92, //immediately_derived
  0, 0},
  {&cd_S7856C19,    ABISELECT(536,284), //bcp->offset
    293, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    63, //bcp->index_in_construction_vtbl_array
    280, //bcp->base_subarray_index_in_construction_vtbl_array
    56, //init_seq
    93, //immediately_derived
  0, 0},
  {&cd_S7856C4,    ABISELECT(528,280), //bcp->offset
    275, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    62, //bcp->index_in_construction_vtbl_array
    277, //bcp->base_subarray_index_in_construction_vtbl_array
    57, //init_seq
    119, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(640,340), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    95, //immediately_derived
  0, 0},
  {&cd_S7856C16,    ABISELECT(640,340), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    379, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    108, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(656,348), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    101, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(664,352), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    100, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(656,348), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    99, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(656,348), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    388, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    100, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(656,348), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    387, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    101, //immediately_derived
  0, 0},
  {&cd_S7856C7,    ABISELECT(656,348), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    386, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    107, //immediately_derived
  0, 0},
  {&cd_S7856C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    66, //bcp->index_in_construction_vtbl_array
    420, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    107, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(672,356), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    105, //immediately_derived
  0, 0},
  {&cd_S7856C17_nt,    ABISELECT(672,356), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    394, //bcp->base_subarray_index_in_construction_vtbl_array
    40, //init_seq
    105, //immediately_derived
  0, 0},
  {&cd_S7856C21,    ABISELECT(672,356), //bcp->offset
    376, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    67, //bcp->index_in_construction_vtbl_array
    393, //bcp->base_subarray_index_in_construction_vtbl_array
    41, //init_seq
    107, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(656,348), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    107, //immediately_derived
  0, 0},
  {&cd_S7856C28,    ABISELECT(656,348), //bcp->offset
    358, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    65, //bcp->index_in_construction_vtbl_array
    385, //bcp->base_subarray_index_in_construction_vtbl_array
    42, //init_seq
    108, //immediately_derived
  0, 0},
  {&cd_S7856C27,    ABISELECT(640,340), //bcp->offset
    338, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    64, //bcp->index_in_construction_vtbl_array
    378, //bcp->base_subarray_index_in_construction_vtbl_array
    43, //init_seq
    119, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(552,296), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    113, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(560,300), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    113, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(552,296), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    112, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(552,296), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    310, //bcp->base_subarray_index_in_construction_vtbl_array
    58, //init_seq
    113, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(552,296), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    309, //bcp->base_subarray_index_in_construction_vtbl_array
    59, //init_seq
    117, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(568,304), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    115, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(568,304), //bcp->offset
    323, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    69, //bcp->index_in_construction_vtbl_array
    311, //bcp->base_subarray_index_in_construction_vtbl_array
    60, //init_seq
    117, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(576,308), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    117, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(552,296), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    308, //bcp->base_subarray_index_in_construction_vtbl_array
    61, //init_seq
    118, //immediately_derived
  0, 0},
  {&cd_S7856C5,    ABISELECT(552,296), //bcp->offset
    307, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    68, //bcp->index_in_construction_vtbl_array
    307, //bcp->base_subarray_index_in_construction_vtbl_array
    62, //init_seq
    119, //immediately_derived
  0, 0},
  {&cd_S7856C25,    ABISELECT(504,268), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    19, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    271, //bcp->base_subarray_index_in_construction_vtbl_array
    63, //init_seq
    137, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(592,316), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    123, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(584,312), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    122, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(584,312), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    348, //bcp->base_subarray_index_in_construction_vtbl_array
    64, //init_seq
    123, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(584,312), //bcp->offset
    329, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    70, //bcp->index_in_construction_vtbl_array
    347, //bcp->base_subarray_index_in_construction_vtbl_array
    65, //init_seq
    137, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(688,364), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    125, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(688,364), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    432, //bcp->base_subarray_index_in_construction_vtbl_array
    44, //init_seq
    136, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(696,368), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    130, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(704,372), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    130, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(696,368), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    129, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(696,368), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    437, //bcp->base_subarray_index_in_construction_vtbl_array
    45, //init_seq
    130, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(696,368), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    436, //bcp->base_subarray_index_in_construction_vtbl_array
    46, //init_seq
    134, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(712,376), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    132, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(712,376), //bcp->offset
    417, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    73, //bcp->index_in_construction_vtbl_array
    438, //bcp->base_subarray_index_in_construction_vtbl_array
    47, //init_seq
    134, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(720,380), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    134, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(696,368), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    435, //bcp->base_subarray_index_in_construction_vtbl_array
    48, //init_seq
    135, //immediately_derived
  0, 0},
  {&cd_S7856C5,    ABISELECT(696,368), //bcp->offset
    401, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    72, //bcp->index_in_construction_vtbl_array
    434, //bcp->base_subarray_index_in_construction_vtbl_array
    49, //init_seq
    136, //immediately_derived
  0, 0},
  {&cd_S7856C22,    ABISELECT(688,364), //bcp->offset
    381, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    71, //bcp->index_in_construction_vtbl_array
    431, //bcp->base_subarray_index_in_construction_vtbl_array
    50, //init_seq
    137, //immediately_derived
  0, 1},
  {&cd_S7856C23,    ABISELECT(504,268), //bcp->offset
    247, //bcp->virtual_function_table_offset
    23, //num_negative_vtable_entries(t, bcp)
    60, //bcp->index_in_construction_vtbl_array
    270, //bcp->base_subarray_index_in_construction_vtbl_array
    66, //init_seq
    138, //immediately_derived
  0, 1},
  {&cd_S7856C3,    ABISELECT(240,128), //bcp->offset
    31, //bcp->virtual_function_table_offset
    24, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    76, //bcp->base_subarray_index_in_construction_vtbl_array
    74, //init_seq
    139, //immediately_derived
  0, 1},
  {&cd_S7856C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    25, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    77, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C26,    ABISELECT(232,124), //bcp->offset
    28, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    74, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    78, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    ABISELECT(728,384), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    142, //immediately_derived
  0, 0},
  {&cd_S7856C16,    ABISELECT(728,384), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    470, //bcp->base_subarray_index_in_construction_vtbl_array
    75, //init_seq
    144, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(728,384), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    144, //immediately_derived
  0, 0},
  {&cd_S7856C32,    ABISELECT(728,384), //bcp->offset
    423, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    75, //bcp->index_in_construction_vtbl_array
    469, //bcp->base_subarray_index_in_construction_vtbl_array
    76, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7856C1[];
extern void _ZN7S7856C1D1Ev();
extern void _ZN7S7856C1D0Ev();
extern void ABISELECT(_ZTv0_n192_N7S7856C1D1Ev,_ZTv0_n96_N7S7856C1D1Ev)();
extern void ABISELECT(_ZThn240_N7S7856C1D1Ev,_ZThn128_N7S7856C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n192_N7S7856C1D0Ev,_ZTv0_n96_N7S7856C1D0Ev)();
extern void ABISELECT(_ZThn240_N7S7856C1D0Ev,_ZThn128_N7S7856C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn8_n192_N7S7856C1D1Ev,_ZTvn4_n96_N7S7856C1D1Ev)();
extern void ABISELECT(_ZTvn8_n192_N7S7856C1D0Ev,_ZTvn4_n96_N7S7856C1D0Ev)();
extern void ABISELECT(_ZTv0_n136_N7S7856C1D1Ev,_ZTv0_n68_N7S7856C1D1Ev)();
extern void ABISELECT(_ZThn288_N7S7856C1D1Ev,_ZThn152_N7S7856C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N7S7856C1D0Ev,_ZTv0_n68_N7S7856C1D0Ev)();
extern void ABISELECT(_ZThn288_N7S7856C1D0Ev,_ZThn152_N7S7856C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn8_n136_N7S7856C1D1Ev,_ZTvn4_n68_N7S7856C1D1Ev)();
extern void ABISELECT(_ZTvn8_n136_N7S7856C1D0Ev,_ZTvn4_n68_N7S7856C1D0Ev)();
extern void _ZN8S7856C192v1Ev();
extern void ABISELECT(_ZTv0_n120_N7S7856C1D1Ev,_ZTv0_n60_N7S7856C1D1Ev)();
extern void ABISELECT(_ZThn312_N7S7856C1D1Ev,_ZThn168_N7S7856C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S7856C1D0Ev,_ZTv0_n60_N7S7856C1D0Ev)();
extern void ABISELECT(_ZThn312_N7S7856C1D0Ev,_ZThn168_N7S7856C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C1D1Ev,_ZTv0_n44_N7S7856C1D1Ev)();
extern void ABISELECT(_ZThn344_N7S7856C1D1Ev,_ZThn184_N7S7856C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C1D0Ev,_ZTv0_n44_N7S7856C1D0Ev)();
extern void ABISELECT(_ZThn344_N7S7856C1D0Ev,_ZThn184_N7S7856C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C1D1Ev,_ZTv0_n32_N7S7856C1D1Ev)();
extern void ABISELECT(_ZThn360_N7S7856C1D1Ev,_ZThn196_N7S7856C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C1D0Ev,_ZTv0_n32_N7S7856C1D0Ev)();
extern void ABISELECT(_ZThn360_N7S7856C1D0Ev,_ZThn196_N7S7856C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C1D1Ev,_ZTv0_n32_N7S7856C1D1Ev)();
extern void ABISELECT(_ZThn392_N7S7856C1D1Ev,_ZThn212_N7S7856C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C1D0Ev,_ZTv0_n32_N7S7856C1D0Ev)();
extern void ABISELECT(_ZThn392_N7S7856C1D0Ev,_ZThn212_N7S7856C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C1D1Ev,_ZTv0_n44_N7S7856C1D1Ev)();
extern void ABISELECT(_ZThn408_N7S7856C1D1Ev,_ZThn220_N7S7856C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C1D0Ev,_ZTv0_n44_N7S7856C1D0Ev)();
extern void ABISELECT(_ZThn408_N7S7856C1D0Ev,_ZThn220_N7S7856C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7856C1D1Ev,_ZTv0_n36_N7S7856C1D1Ev)();
extern void ABISELECT(_ZThn424_N7S7856C1D1Ev,_ZThn228_N7S7856C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7856C1D0Ev,_ZTv0_n36_N7S7856C1D0Ev)();
extern void ABISELECT(_ZThn424_N7S7856C1D0Ev,_ZThn228_N7S7856C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S7856C1D1Ev,_ZTv0_n60_N7S7856C1D1Ev)();
extern void ABISELECT(_ZThn456_N7S7856C1D1Ev,_ZThn244_N7S7856C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S7856C1D0Ev,_ZTv0_n60_N7S7856C1D0Ev)();
extern void ABISELECT(_ZThn456_N7S7856C1D0Ev,_ZThn244_N7S7856C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn8_n120_N7S7856C1D1Ev,_ZTvn4_n60_N7S7856C1D1Ev)();
extern void ABISELECT(_ZTvn8_n120_N7S7856C1D0Ev,_ZTvn4_n60_N7S7856C1D0Ev)();
extern void ABISELECT(_ZTvn40_n120_N7S7856C1D1Ev,_ZTvn20_n60_N7S7856C1D1Ev)();
extern void ABISELECT(_ZTvn40_n120_N7S7856C1D0Ev,_ZTvn20_n60_N7S7856C1D0Ev)();
extern void ABISELECT(_ZTv0_n176_N7S7856C1D1Ev,_ZTv0_n88_N7S7856C1D1Ev)();
extern void ABISELECT(_ZThn504_N7S7856C1D1Ev,_ZThn268_N7S7856C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n176_N7S7856C1D0Ev,_ZTv0_n88_N7S7856C1D0Ev)();
extern void ABISELECT(_ZThn504_N7S7856C1D0Ev,_ZThn268_N7S7856C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn24_n176_N7S7856C1D1Ev,_ZTvn12_n88_N7S7856C1D1Ev)();
extern void ABISELECT(_ZTvn24_n176_N7S7856C1D0Ev,_ZTvn12_n88_N7S7856C1D0Ev)();
extern void ABISELECT(_ZTvn32_n176_N7S7856C1D1Ev,_ZTvn16_n88_N7S7856C1D1Ev)();
extern void ABISELECT(_ZTvn32_n176_N7S7856C1D0Ev,_ZTvn16_n88_N7S7856C1D0Ev)();
extern void _ZN8S7856C192v1Ev();
extern void ABISELECT(_ZTvn48_n176_N7S7856C1D1Ev,_ZTvn28_n88_N7S7856C1D1Ev)();
extern void ABISELECT(_ZTvn48_n176_N7S7856C1D0Ev,_ZTvn28_n88_N7S7856C1D0Ev)();
extern void ABISELECT(_ZTvn80_n176_N7S7856C1D1Ev,_ZTvn44_n88_N7S7856C1D1Ev)();
extern void ABISELECT(_ZTvn80_n176_N7S7856C1D0Ev,_ZTvn44_n88_N7S7856C1D0Ev)();
extern void ABISELECT(_ZTv0_n144_N7S7856C1D1Ev,_ZTv0_n72_N7S7856C1D1Ev)();
extern void ABISELECT(_ZThn640_N7S7856C1D1Ev,_ZThn340_N7S7856C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N7S7856C1D0Ev,_ZTv0_n72_N7S7856C1D0Ev)();
extern void ABISELECT(_ZThn640_N7S7856C1D0Ev,_ZThn340_N7S7856C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n144_N7S7856C1D1Ev,_ZTvn8_n72_N7S7856C1D1Ev)();
extern void ABISELECT(_ZTvn16_n144_N7S7856C1D0Ev,_ZTvn8_n72_N7S7856C1D0Ev)();
extern void ABISELECT(_ZTvn32_n144_N7S7856C1D1Ev,_ZTvn16_n72_N7S7856C1D1Ev)();
extern void ABISELECT(_ZTvn32_n144_N7S7856C1D0Ev,_ZTvn16_n72_N7S7856C1D0Ev)();
extern void ABISELECT(_ZTv0_n144_N7S7856C1D1Ev,_ZTv0_n72_N7S7856C1D1Ev)();
extern void ABISELECT(_ZThn688_N7S7856C1D1Ev,_ZThn364_N7S7856C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N7S7856C1D0Ev,_ZTv0_n72_N7S7856C1D0Ev)();
extern void ABISELECT(_ZThn688_N7S7856C1D0Ev,_ZThn364_N7S7856C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn8_n144_N7S7856C1D1Ev,_ZTvn4_n72_N7S7856C1D1Ev)();
extern void ABISELECT(_ZTvn8_n144_N7S7856C1D0Ev,_ZTvn4_n72_N7S7856C1D0Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C1D1Ev,_ZTv0_n44_N7S7856C1D1Ev)();
extern void ABISELECT(_ZThn728_N7S7856C1D1Ev,_ZThn384_N7S7856C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C1D0Ev,_ZTv0_n44_N7S7856C1D0Ev)();
extern void ABISELECT(_ZThn728_N7S7856C1D0Ev,_ZThn384_N7S7856C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7856C1[] = {
  ABISELECT(728,384),
  ABISELECT(688,364),
  0,
  ABISELECT(640,340),
  0,
  ABISELECT(504,268),
  ABISELECT(456,244),
  ABISELECT(424,228),
  ABISELECT(288,152),
  ABISELECT(240,128),
  0,
  ABISELECT(408,220),
  ABISELECT(408,220),
  0,
  ABISELECT(392,212),
  ABISELECT(376,204),
  ABISELECT(344,184),
  ABISELECT(312,168),
  ABISELECT(344,184),
  ABISELECT(360,196),
  0,
  ABISELECT(344,184),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C1[0]),
  (VTBL_ENTRY)&_ZN7S7856C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C1D0Ev,
  ABISELECT(-232,-124),
  ABISELECT(-232,-124),
  (VTBL_ENTRY)&(_ZTI7S7856C1[0]),
  ABISELECT(-240,-128),
  ABISELECT(448,236),
  ABISELECT(-240,-128),
  ABISELECT(400,212),
  ABISELECT(-240,-128),
  ABISELECT(264,140),
  ABISELECT(216,116),
  ABISELECT(184,100),
  ABISELECT(72,40),
  ABISELECT(48,24),
  ABISELECT(168,92),
  ABISELECT(168,92),
  ABISELECT(-240,-128),
  ABISELECT(152,84),
  ABISELECT(136,76),
  ABISELECT(104,56),
  ABISELECT(120,68),
  ABISELECT(104,56),
  ABISELECT(-240,-128),
  ABISELECT(104,56),
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  (VTBL_ENTRY)&(_ZTI7S7856C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n192_N7S7856C1D1Ev,_ZTv0_n96_N7S7856C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n192_N7S7856C1D0Ev,_ZTv0_n96_N7S7856C1D0Ev),
  ABISELECT(160,88),
  ABISELECT(160,88),
  ABISELECT(-248,-132),
  ABISELECT(128,72),
  ABISELECT(112,64),
  ABISELECT(96,52),
  ABISELECT(-248,-132),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(144,80),
  ABISELECT(-248,-132),
  ABISELECT(-248,-132),
  ABISELECT(-248,-132),
  (VTBL_ENTRY)&(_ZTI7S7856C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n192_N7S7856C1D1Ev,_ZTvn4_n96_N7S7856C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n192_N7S7856C1D0Ev,_ZTvn4_n96_N7S7856C1D0Ev),
  ABISELECT(-264,-140),
  ABISELECT(80,44),
  ABISELECT(-264,-140),
  ABISELECT(-264,-140),
  ABISELECT(-264,-140),
  (VTBL_ENTRY)&(_ZTI7S7856C1[0]),
  ABISELECT(8,4),
  ABISELECT(-288,-152),
  ABISELECT(136,76),
  ABISELECT(120,68),
  ABISELECT(120,68),
  ABISELECT(-288,-152),
  ABISELECT(104,60),
  ABISELECT(88,52),
  ABISELECT(56,32),
  ABISELECT(72,44),
  ABISELECT(56,32),
  ABISELECT(24,16),
  ABISELECT(-288,-152),
  ABISELECT(56,32),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  (VTBL_ENTRY)&(_ZTI7S7856C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N7S7856C1D1Ev,_ZTv0_n68_N7S7856C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N7S7856C1D0Ev,_ZTv0_n68_N7S7856C1D0Ev),
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(48,28),
  ABISELECT(64,40),
  ABISELECT(-296,-156),
  ABISELECT(48,28),
  ABISELECT(-296,-156),
  ABISELECT(-296,-156),
  ABISELECT(-296,-156),
  (VTBL_ENTRY)&(_ZTI7S7856C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N7S7856C1D1Ev,_ZTvn4_n68_N7S7856C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N7S7856C1D0Ev,_ZTvn4_n68_N7S7856C1D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
  ABISELECT(-312,-168),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-312,-168),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-312,-168),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-312,-168),
  ABISELECT(-312,-168),
  ABISELECT(-312,-168),
  (VTBL_ENTRY)&(_ZTI7S7856C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C1D1Ev,_ZTv0_n60_N7S7856C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C1D0Ev,_ZTv0_n60_N7S7856C1D0Ev),
  ABISELECT(-328,-176),
  ABISELECT(16,8),
  ABISELECT(-328,-176),
  ABISELECT(-328,-176),
  ABISELECT(-328,-176),
  (VTBL_ENTRY)&(_ZTI7S7856C1[0]),
  ABISELECT(-344,-184),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  (VTBL_ENTRY)&(_ZTI7S7856C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C1D1Ev,_ZTv0_n44_N7S7856C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C1D0Ev,_ZTv0_n44_N7S7856C1D0Ev),
  ABISELECT(-360,-196),
  ABISELECT(-360,-196),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-360,-196),
  ABISELECT(-360,-196),
  ABISELECT(-360,-196),
  (VTBL_ENTRY)&(_ZTI7S7856C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C1D1Ev,_ZTv0_n32_N7S7856C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C1D0Ev,_ZTv0_n32_N7S7856C1D0Ev),
  ABISELECT(-376,-204),
  ABISELECT(-376,-204),
  ABISELECT(-376,-204),
  (VTBL_ENTRY)&(_ZTI7S7856C1[0]),
  ABISELECT(-392,-212),
  ABISELECT(-392,-212),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-392,-212),
  ABISELECT(-392,-212),
  ABISELECT(-392,-212),
  (VTBL_ENTRY)&(_ZTI7S7856C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C1D1Ev,_ZTv0_n32_N7S7856C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C1D0Ev,_ZTv0_n32_N7S7856C1D0Ev),
  ABISELECT(-408,-220),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-408,-220),
  ABISELECT(-408,-220),
  ABISELECT(-64,-36),
  ABISELECT(-408,-220),
  ABISELECT(-408,-220),
  (VTBL_ENTRY)&(_ZTI7S7856C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C1D1Ev,_ZTv0_n44_N7S7856C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C1D0Ev,_ZTv0_n44_N7S7856C1D0Ev),
  ABISELECT(-424,-228),
  ABISELECT(-424,-228),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-424,-228),
  ABISELECT(-424,-228),
  ABISELECT(-424,-228),
  (VTBL_ENTRY)&(_ZTI7S7856C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7856C1D1Ev,_ZTv0_n36_N7S7856C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7856C1D0Ev,_ZTv0_n36_N7S7856C1D0Ev),
  ABISELECT(-440,-236),
  ABISELECT(-96,-52),
  ABISELECT(-440,-236),
  ABISELECT(-440,-236),
  ABISELECT(-440,-236),
  (VTBL_ENTRY)&(_ZTI7S7856C1[0]),
  ABISELECT(-456,-244),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-456,-244),
  ABISELECT(-64,-32),
  ABISELECT(-80,-40),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-456,-244),
  ABISELECT(-96,-48),
  ABISELECT(-112,-60),
  ABISELECT(-456,-244),
  ABISELECT(-456,-244),
  ABISELECT(-456,-244),
  (VTBL_ENTRY)&(_ZTI7S7856C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C1D1Ev,_ZTv0_n60_N7S7856C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C1D0Ev,_ZTv0_n60_N7S7856C1D0Ev),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-464,-248),
  ABISELECT(-88,-44),
  ABISELECT(-104,-52),
  ABISELECT(-120,-64),
  ABISELECT(-464,-248),
  ABISELECT(-120,-64),
  ABISELECT(-120,-64),
  ABISELECT(-72,-36),
  ABISELECT(-464,-248),
  ABISELECT(-464,-248),
  ABISELECT(-464,-248),
  (VTBL_ENTRY)&(_ZTI7S7856C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n120_N7S7856C1D1Ev,_ZTvn4_n60_N7S7856C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n120_N7S7856C1D0Ev,_ZTvn4_n60_N7S7856C1D0Ev),
  ABISELECT(-480,-256),
  ABISELECT(-136,-72),
  ABISELECT(-480,-256),
  ABISELECT(-480,-256),
  ABISELECT(-480,-256),
  (VTBL_ENTRY)&(_ZTI7S7856C1[0]),
  ABISELECT(-496,-264),
  ABISELECT(-496,-264),
  (VTBL_ENTRY)&(_ZTI7S7856C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n120_N7S7856C1D1Ev,_ZTvn20_n60_N7S7856C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n120_N7S7856C1D0Ev,_ZTvn20_n60_N7S7856C1D0Ev),
  ABISELECT(32,16),
  ABISELECT(-504,-268),
  ABISELECT(-216,-116),
  ABISELECT(184,96),
  ABISELECT(-504,-268),
  ABISELECT(-504,-268),
  ABISELECT(136,72),
  ABISELECT(-80,-40),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-504,-268),
  ABISELECT(-112,-56),
  ABISELECT(-128,-64),
  ABISELECT(-144,-72),
  ABISELECT(-160,-84),
  ABISELECT(-192,-100),
  ABISELECT(-504,-268),
  ABISELECT(-160,-84),
  ABISELECT(-160,-84),
  ABISELECT(-504,-268),
  ABISELECT(-504,-268),
  ABISELECT(-504,-268),
  (VTBL_ENTRY)&(_ZTI7S7856C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n176_N7S7856C1D1Ev,_ZTv0_n88_N7S7856C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n176_N7S7856C1D0Ev,_ZTv0_n88_N7S7856C1D0Ev),
  ABISELECT(-520,-276),
  ABISELECT(-520,-276),
  (VTBL_ENTRY)&(_ZTI7S7856C1[0]),
  ABISELECT(-104,-52),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-528,-280),
  ABISELECT(-136,-68),
  ABISELECT(-152,-76),
  ABISELECT(-184,-96),
  ABISELECT(-168,-84),
  ABISELECT(-184,-96),
  ABISELECT(-216,-112),
  ABISELECT(-528,-280),
  ABISELECT(-184,-96),
  ABISELECT(-528,-280),
  ABISELECT(-528,-280),
  ABISELECT(-528,-280),
  (VTBL_ENTRY)&(_ZTI7S7856C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n176_N7S7856C1D1Ev,_ZTvn12_n88_N7S7856C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n176_N7S7856C1D0Ev,_ZTvn12_n88_N7S7856C1D0Ev),
  ABISELECT(-112,-56),
  ABISELECT(-144,-72),
  ABISELECT(-160,-80),
  ABISELECT(-192,-100),
  ABISELECT(-176,-88),
  ABISELECT(-536,-284),
  ABISELECT(-192,-100),
  ABISELECT(-536,-284),
  ABISELECT(-536,-284),
  ABISELECT(-536,-284),
  (VTBL_ENTRY)&(_ZTI7S7856C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n176_N7S7856C1D1Ev,_ZTvn16_n88_N7S7856C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n176_N7S7856C1D0Ev,_ZTvn16_n88_N7S7856C1D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
  ABISELECT(-144,-76),
  ABISELECT(-144,-76),
  ABISELECT(-552,-296),
  ABISELECT(-176,-92),
  ABISELECT(-192,-100),
  ABISELECT(-208,-112),
  ABISELECT(-552,-296),
  ABISELECT(-208,-112),
  ABISELECT(-208,-112),
  ABISELECT(-160,-84),
  ABISELECT(-552,-296),
  ABISELECT(-552,-296),
  ABISELECT(-552,-296),
  (VTBL_ENTRY)&(_ZTI7S7856C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n176_N7S7856C1D1Ev,_ZTvn28_n88_N7S7856C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n176_N7S7856C1D0Ev,_ZTvn28_n88_N7S7856C1D0Ev),
  ABISELECT(-568,-304),
  ABISELECT(-224,-120),
  ABISELECT(-568,-304),
  ABISELECT(-568,-304),
  ABISELECT(-568,-304),
  (VTBL_ENTRY)&(_ZTI7S7856C1[0]),
  ABISELECT(-584,-312),
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  ABISELECT(-584,-312),
  ABISELECT(-584,-312),
  ABISELECT(-584,-312),
  (VTBL_ENTRY)&(_ZTI7S7856C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n176_N7S7856C1D1Ev,_ZTvn44_n88_N7S7856C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n176_N7S7856C1D0Ev,_ZTvn44_n88_N7S7856C1D0Ev),
  ABISELECT(-640,-340),
  ABISELECT(-640,-340),
  ABISELECT(-232,-120),
  ABISELECT(-640,-340),
  ABISELECT(-248,-128),
  ABISELECT(-296,-156),
  ABISELECT(-328,-172),
  ABISELECT(-640,-340),
  ABISELECT(-296,-156),
  ABISELECT(-280,-144),
  ABISELECT(-264,-136),
  ABISELECT(-232,-120),
  ABISELECT(-640,-340),
  ABISELECT(-640,-340),
  ABISELECT(-296,-156),
  ABISELECT(-640,-340),
  ABISELECT(-640,-340),
  (VTBL_ENTRY)&(_ZTI7S7856C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N7S7856C1D1Ev,_ZTv0_n72_N7S7856C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N7S7856C1D0Ev,_ZTv0_n72_N7S7856C1D0Ev),
  ABISELECT(-248,-128),
  ABISELECT(-248,-128),
  ABISELECT(-656,-348),
  ABISELECT(-264,-136),
  ABISELECT(-312,-164),
  ABISELECT(-344,-180),
  ABISELECT(-296,-152),
  ABISELECT(-656,-348),
  ABISELECT(-280,-144),
  ABISELECT(-656,-348),
  ABISELECT(-312,-164),
  ABISELECT(-312,-164),
  ABISELECT(-656,-348),
  ABISELECT(-656,-348),
  ABISELECT(-656,-348),
  (VTBL_ENTRY)&(_ZTI7S7856C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n144_N7S7856C1D1Ev,_ZTvn8_n72_N7S7856C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n144_N7S7856C1D0Ev,_ZTvn8_n72_N7S7856C1D0Ev),
  ABISELECT(-672,-356),
  ABISELECT(-672,-356),
  (VTBL_ENTRY)&(_ZTI7S7856C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n144_N7S7856C1D1Ev,_ZTvn16_n72_N7S7856C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n144_N7S7856C1D0Ev,_ZTvn16_n72_N7S7856C1D0Ev),
  ABISELECT(-688,-364),
  ABISELECT(-264,-136),
  ABISELECT(-376,-196),
  ABISELECT(-400,-212),
  ABISELECT(-280,-144),
  ABISELECT(-280,-144),
  ABISELECT(-688,-364),
  ABISELECT(-296,-152),
  ABISELECT(-312,-160),
  ABISELECT(-344,-180),
  ABISELECT(-328,-168),
  ABISELECT(-344,-180),
  ABISELECT(-688,-364),
  ABISELECT(-344,-180),
  ABISELECT(-688,-364),
  ABISELECT(-688,-364),
  ABISELECT(-688,-364),
  (VTBL_ENTRY)&(_ZTI7S7856C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N7S7856C1D1Ev,_ZTv0_n72_N7S7856C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N7S7856C1D0Ev,_ZTv0_n72_N7S7856C1D0Ev),
  ABISELECT(-288,-148),
  ABISELECT(-288,-148),
  ABISELECT(-696,-368),
  ABISELECT(-320,-164),
  ABISELECT(-336,-172),
  ABISELECT(-352,-184),
  ABISELECT(-696,-368),
  ABISELECT(-352,-184),
  ABISELECT(-352,-184),
  ABISELECT(-304,-156),
  ABISELECT(-696,-368),
  ABISELECT(-696,-368),
  ABISELECT(-696,-368),
  (VTBL_ENTRY)&(_ZTI7S7856C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n144_N7S7856C1D1Ev,_ZTvn4_n72_N7S7856C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n144_N7S7856C1D0Ev,_ZTvn4_n72_N7S7856C1D0Ev),
  ABISELECT(-712,-376),
  ABISELECT(-368,-192),
  ABISELECT(-712,-376),
  ABISELECT(-712,-376),
  ABISELECT(-712,-376),
  (VTBL_ENTRY)&(_ZTI7S7856C1[0]),
  ABISELECT(-728,-384),
  ABISELECT(-384,-200),
  ABISELECT(-368,-188),
  ABISELECT(-352,-180),
  ABISELECT(-320,-164),
  ABISELECT(-728,-384),
  ABISELECT(-728,-384),
  ABISELECT(-384,-200),
  ABISELECT(-728,-384),
  ABISELECT(-728,-384),
  (VTBL_ENTRY)&(_ZTI7S7856C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C1D1Ev,_ZTv0_n44_N7S7856C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C1D0Ev,_ZTv0_n44_N7S7856C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S7856C1[];
extern void _ZN7S7856C2D1Ev();
extern void _ZN7S7856C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C2__7S7856C1[] = {
  ABISELECT(688,364),
  0,
  ABISELECT(640,340),
  0,
  ABISELECT(504,268),
  ABISELECT(456,244),
  ABISELECT(424,228),
  ABISELECT(288,152),
  ABISELECT(240,128),
  0,
  ABISELECT(408,220),
  ABISELECT(408,220),
  0,
  ABISELECT(392,212),
  ABISELECT(376,204),
  ABISELECT(344,184),
  ABISELECT(312,168),
  ABISELECT(344,184),
  ABISELECT(360,196),
  0,
  ABISELECT(344,184),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&_ZN7S7856C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C2D0Ev,
};
extern void ABISELECT(_ZTv0_n192_N7S7856C2D1Ev,_ZTv0_n96_N7S7856C2D1Ev)();
extern void ABISELECT(_ZThn240_N7S7856C2D1Ev,_ZThn128_N7S7856C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n192_N7S7856C2D0Ev,_ZTv0_n96_N7S7856C2D0Ev)();
extern void ABISELECT(_ZThn240_N7S7856C2D0Ev,_ZThn128_N7S7856C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C3__7S7856C2__7S7856C1[] = {
  ABISELECT(-240,-128),
  ABISELECT(448,236),
  ABISELECT(-240,-128),
  ABISELECT(400,212),
  ABISELECT(-240,-128),
  ABISELECT(264,140),
  ABISELECT(216,116),
  ABISELECT(184,100),
  ABISELECT(72,40),
  ABISELECT(48,24),
  ABISELECT(168,92),
  ABISELECT(168,92),
  ABISELECT(-240,-128),
  ABISELECT(152,84),
  ABISELECT(136,76),
  ABISELECT(104,56),
  ABISELECT(120,68),
  ABISELECT(104,56),
  ABISELECT(-240,-128),
  ABISELECT(104,56),
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n192_N7S7856C2D1Ev,_ZTv0_n96_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n192_N7S7856C2D0Ev,_ZTv0_n96_N7S7856C2D0Ev),
};
extern void ABISELECT(_ZTv0_n136_N7S7856C2D1Ev,_ZTv0_n68_N7S7856C2D1Ev)();
extern void ABISELECT(_ZThn288_N7S7856C2D1Ev,_ZThn152_N7S7856C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N7S7856C2D0Ev,_ZTv0_n68_N7S7856C2D0Ev)();
extern void ABISELECT(_ZThn288_N7S7856C2D0Ev,_ZThn152_N7S7856C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C4__7S7856C2__7S7856C1[] = {
  ABISELECT(8,4),
  ABISELECT(-288,-152),
  ABISELECT(136,76),
  ABISELECT(120,68),
  ABISELECT(120,68),
  ABISELECT(-288,-152),
  ABISELECT(104,60),
  ABISELECT(88,52),
  ABISELECT(56,32),
  ABISELECT(72,44),
  ABISELECT(56,32),
  ABISELECT(24,16),
  ABISELECT(-288,-152),
  ABISELECT(56,32),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N7S7856C2D1Ev,_ZTv0_n68_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N7S7856C2D0Ev,_ZTv0_n68_N7S7856C2D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N7S7856C2D1Ev,_ZTv0_n60_N7S7856C2D1Ev)();
extern void ABISELECT(_ZThn312_N7S7856C2D1Ev,_ZThn168_N7S7856C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S7856C2D0Ev,_ZTv0_n60_N7S7856C2D0Ev)();
extern void ABISELECT(_ZThn312_N7S7856C2D0Ev,_ZThn168_N7S7856C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C5__7S7856C2__7S7856C1[] = {
  ABISELECT(-312,-168),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-312,-168),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-312,-168),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-312,-168),
  ABISELECT(-312,-168),
  ABISELECT(-312,-168),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C2D1Ev,_ZTv0_n60_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C2D0Ev,_ZTv0_n60_N7S7856C2D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C2D1Ev,_ZTv0_n44_N7S7856C2D1Ev)();
extern void ABISELECT(_ZThn344_N7S7856C2D1Ev,_ZThn184_N7S7856C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C2D0Ev,_ZTv0_n44_N7S7856C2D0Ev)();
extern void ABISELECT(_ZThn344_N7S7856C2D0Ev,_ZThn184_N7S7856C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C2__7S7856C1[] = {
  ABISELECT(-344,-184),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C2D1Ev,_ZTv0_n44_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C2D0Ev,_ZTv0_n44_N7S7856C2D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C2D1Ev,_ZTv0_n32_N7S7856C2D1Ev)();
extern void ABISELECT(_ZThn360_N7S7856C2D1Ev,_ZThn196_N7S7856C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C2D0Ev,_ZTv0_n32_N7S7856C2D0Ev)();
extern void ABISELECT(_ZThn360_N7S7856C2D0Ev,_ZThn196_N7S7856C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C2__7S7856C1[] = {
  ABISELECT(-360,-196),
  ABISELECT(-360,-196),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-360,-196),
  ABISELECT(-360,-196),
  ABISELECT(-360,-196),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C2D1Ev,_ZTv0_n32_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C2D0Ev,_ZTv0_n32_N7S7856C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C2__7S7856C1[] = {
  ABISELECT(-376,-204),
  ABISELECT(-376,-204),
  ABISELECT(-376,-204),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C2D1Ev,_ZTv0_n32_N7S7856C2D1Ev)();
extern void ABISELECT(_ZThn392_N7S7856C2D1Ev,_ZThn212_N7S7856C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C2D0Ev,_ZTv0_n32_N7S7856C2D0Ev)();
extern void ABISELECT(_ZThn392_N7S7856C2D0Ev,_ZThn212_N7S7856C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C2__7S7856C1[] = {
  ABISELECT(-392,-212),
  ABISELECT(-392,-212),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-392,-212),
  ABISELECT(-392,-212),
  ABISELECT(-392,-212),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C2D1Ev,_ZTv0_n32_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C2D0Ev,_ZTv0_n32_N7S7856C2D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C2D1Ev,_ZTv0_n44_N7S7856C2D1Ev)();
extern void ABISELECT(_ZThn408_N7S7856C2D1Ev,_ZThn220_N7S7856C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C2D0Ev,_ZTv0_n44_N7S7856C2D0Ev)();
extern void ABISELECT(_ZThn408_N7S7856C2D0Ev,_ZThn220_N7S7856C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C2__7S7856C1[] = {
  ABISELECT(-408,-220),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-408,-220),
  ABISELECT(-408,-220),
  ABISELECT(-64,-36),
  ABISELECT(-408,-220),
  ABISELECT(-408,-220),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C2D1Ev,_ZTv0_n44_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C2D0Ev,_ZTv0_n44_N7S7856C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__7S7856C2__7S7856C1[] = {
  ABISELECT(-328,-176),
  ABISELECT(16,8),
  ABISELECT(-328,-176),
  ABISELECT(-328,-176),
  ABISELECT(-328,-176),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
};
extern void ABISELECT(_ZTvn8_n136_N7S7856C2D1Ev,_ZTvn4_n68_N7S7856C2D1Ev)();
extern void ABISELECT(_ZTvn8_n136_N7S7856C2D0Ev,_ZTvn4_n68_N7S7856C2D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C197S7856C4__7S7856C2__7S7856C1[] = {
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(48,28),
  ABISELECT(64,40),
  ABISELECT(-296,-156),
  ABISELECT(48,28),
  ABISELECT(-296,-156),
  ABISELECT(-296,-156),
  ABISELECT(-296,-156),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N7S7856C2D1Ev,_ZTvn4_n68_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N7S7856C2D0Ev,_ZTvn4_n68_N7S7856C2D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N7S7856C2D1Ev,_ZTv0_n36_N7S7856C2D1Ev)();
extern void ABISELECT(_ZThn424_N7S7856C2D1Ev,_ZThn228_N7S7856C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7856C2D0Ev,_ZTv0_n36_N7S7856C2D0Ev)();
extern void ABISELECT(_ZThn424_N7S7856C2D0Ev,_ZThn228_N7S7856C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C18__A1__7S7856C2__7S7856C1[] = {
  ABISELECT(-424,-228),
  ABISELECT(-424,-228),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-424,-228),
  ABISELECT(-424,-228),
  ABISELECT(-424,-228),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7856C2D1Ev,_ZTv0_n36_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7856C2D0Ev,_ZTv0_n36_N7S7856C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A3__7S7856C2__7S7856C1[] = {
  ABISELECT(-440,-236),
  ABISELECT(-96,-52),
  ABISELECT(-440,-236),
  ABISELECT(-440,-236),
  ABISELECT(-440,-236),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
};
extern void ABISELECT(_ZTv0_n120_N7S7856C2D1Ev,_ZTv0_n60_N7S7856C2D1Ev)();
extern void ABISELECT(_ZThn456_N7S7856C2D1Ev,_ZThn244_N7S7856C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S7856C2D0Ev,_ZTv0_n60_N7S7856C2D0Ev)();
extern void ABISELECT(_ZThn456_N7S7856C2D0Ev,_ZThn244_N7S7856C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C20__7S7856C2__7S7856C1[] = {
  ABISELECT(-456,-244),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-456,-244),
  ABISELECT(-64,-32),
  ABISELECT(-80,-40),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-456,-244),
  ABISELECT(-96,-48),
  ABISELECT(-112,-60),
  ABISELECT(-456,-244),
  ABISELECT(-456,-244),
  ABISELECT(-456,-244),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C2D1Ev,_ZTv0_n60_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C2D0Ev,_ZTv0_n60_N7S7856C2D0Ev),
};
extern void ABISELECT(_ZTvn8_n120_N7S7856C2D1Ev,_ZTvn4_n60_N7S7856C2D1Ev)();
extern void ABISELECT(_ZTvn8_n120_N7S7856C2D0Ev,_ZTvn4_n60_N7S7856C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C58S7856C20__A1__7S7856C2__7S7856C1[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-464,-248),
  ABISELECT(-88,-44),
  ABISELECT(-104,-52),
  ABISELECT(-120,-64),
  ABISELECT(-464,-248),
  ABISELECT(-120,-64),
  ABISELECT(-120,-64),
  ABISELECT(-72,-36),
  ABISELECT(-464,-248),
  ABISELECT(-464,-248),
  ABISELECT(-464,-248),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n120_N7S7856C2D1Ev,_ZTvn4_n60_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n120_N7S7856C2D0Ev,_ZTvn4_n60_N7S7856C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C58S7856C20__A4__7S7856C2__7S7856C1[] = {
  ABISELECT(-480,-256),
  ABISELECT(-136,-72),
  ABISELECT(-480,-256),
  ABISELECT(-480,-256),
  ABISELECT(-480,-256),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
};
extern void ABISELECT(_ZTvn40_n120_N7S7856C2D1Ev,_ZTvn20_n60_N7S7856C2D1Ev)();
extern void ABISELECT(_ZTvn40_n120_N7S7856C2D0Ev,_ZTvn20_n60_N7S7856C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C218S7856C20__7S7856C2__7S7856C1[] = {
  ABISELECT(-496,-264),
  ABISELECT(-496,-264),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n120_N7S7856C2D1Ev,_ZTvn20_n60_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n120_N7S7856C2D0Ev,_ZTvn20_n60_N7S7856C2D0Ev),
};
extern void ABISELECT(_ZTvn8_n192_N7S7856C2D1Ev,_ZTvn4_n96_N7S7856C2D1Ev)();
extern void ABISELECT(_ZTvn8_n192_N7S7856C2D0Ev,_ZTvn4_n96_N7S7856C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C58S7856C227S7856C3__A2__7S7856C2__7S7856C1[] = {
  ABISELECT(160,88),
  ABISELECT(160,88),
  ABISELECT(-248,-132),
  ABISELECT(128,72),
  ABISELECT(112,64),
  ABISELECT(96,52),
  ABISELECT(-248,-132),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(144,80),
  ABISELECT(-248,-132),
  ABISELECT(-248,-132),
  ABISELECT(-248,-132),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n192_N7S7856C2D1Ev,_ZTvn4_n96_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n192_N7S7856C2D0Ev,_ZTvn4_n96_N7S7856C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C58S7856C227S7856C3__A6__7S7856C2__7S7856C1[] = {
  ABISELECT(-264,-140),
  ABISELECT(80,44),
  ABISELECT(-264,-140),
  ABISELECT(-264,-140),
  ABISELECT(-264,-140),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
};
extern void ABISELECT(_ZTv0_n176_N7S7856C2D1Ev,_ZTv0_n88_N7S7856C2D1Ev)();
extern void ABISELECT(_ZThn504_N7S7856C2D1Ev,_ZThn268_N7S7856C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n176_N7S7856C2D0Ev,_ZTv0_n88_N7S7856C2D0Ev)();
extern void ABISELECT(_ZThn504_N7S7856C2D0Ev,_ZThn268_N7S7856C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C23__7S7856C2__7S7856C1[] = {
  ABISELECT(32,16),
  ABISELECT(-504,-268),
  ABISELECT(-216,-116),
  ABISELECT(184,96),
  ABISELECT(-504,-268),
  ABISELECT(-504,-268),
  ABISELECT(136,72),
  ABISELECT(-80,-40),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-504,-268),
  ABISELECT(-112,-56),
  ABISELECT(-128,-64),
  ABISELECT(-144,-72),
  ABISELECT(-160,-84),
  ABISELECT(-192,-100),
  ABISELECT(-504,-268),
  ABISELECT(-160,-84),
  ABISELECT(-160,-84),
  ABISELECT(-504,-268),
  ABISELECT(-504,-268),
  ABISELECT(-504,-268),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n176_N7S7856C2D1Ev,_ZTv0_n88_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n176_N7S7856C2D0Ev,_ZTv0_n88_N7S7856C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C268S7856C258S7856C23__7S7856C2__7S7856C1[] = {
  ABISELECT(-520,-276),
  ABISELECT(-520,-276),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
};
extern void ABISELECT(_ZTvn24_n176_N7S7856C2D1Ev,_ZTvn12_n88_N7S7856C2D1Ev)();
extern void ABISELECT(_ZTvn24_n176_N7S7856C2D0Ev,_ZTvn12_n88_N7S7856C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C48S7856C258S7856C23__A1__7S7856C2__7S7856C1[] = {
  ABISELECT(-104,-52),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-528,-280),
  ABISELECT(-136,-68),
  ABISELECT(-152,-76),
  ABISELECT(-184,-96),
  ABISELECT(-168,-84),
  ABISELECT(-184,-96),
  ABISELECT(-216,-112),
  ABISELECT(-528,-280),
  ABISELECT(-184,-96),
  ABISELECT(-528,-280),
  ABISELECT(-528,-280),
  ABISELECT(-528,-280),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n176_N7S7856C2D1Ev,_ZTvn12_n88_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n176_N7S7856C2D0Ev,_ZTvn12_n88_N7S7856C2D0Ev),
};
extern void ABISELECT(_ZTvn32_n176_N7S7856C2D1Ev,_ZTvn16_n88_N7S7856C2D1Ev)();
extern void ABISELECT(_ZTvn32_n176_N7S7856C2D0Ev,_ZTvn16_n88_N7S7856C2D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C2__7S7856C1[] = {
  ABISELECT(-112,-56),
  ABISELECT(-144,-72),
  ABISELECT(-160,-80),
  ABISELECT(-192,-100),
  ABISELECT(-176,-88),
  ABISELECT(-536,-284),
  ABISELECT(-192,-100),
  ABISELECT(-536,-284),
  ABISELECT(-536,-284),
  ABISELECT(-536,-284),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n176_N7S7856C2D1Ev,_ZTvn16_n88_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n176_N7S7856C2D0Ev,_ZTvn16_n88_N7S7856C2D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void ABISELECT(_ZTv0_n144_N7S7856C2D1Ev,_ZTv0_n72_N7S7856C2D1Ev)();
extern void ABISELECT(_ZThn640_N7S7856C2D1Ev,_ZThn340_N7S7856C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N7S7856C2D0Ev,_ZTv0_n72_N7S7856C2D0Ev)();
extern void ABISELECT(_ZThn640_N7S7856C2D0Ev,_ZThn340_N7S7856C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C27__7S7856C2__7S7856C1[] = {
  ABISELECT(-640,-340),
  ABISELECT(-640,-340),
  ABISELECT(-232,-120),
  ABISELECT(-640,-340),
  ABISELECT(-248,-128),
  ABISELECT(-296,-156),
  ABISELECT(-328,-172),
  ABISELECT(-640,-340),
  ABISELECT(-296,-156),
  ABISELECT(-280,-144),
  ABISELECT(-264,-136),
  ABISELECT(-232,-120),
  ABISELECT(-640,-340),
  ABISELECT(-640,-340),
  ABISELECT(-296,-156),
  ABISELECT(-640,-340),
  ABISELECT(-640,-340),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N7S7856C2D1Ev,_ZTv0_n72_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N7S7856C2D0Ev,_ZTv0_n72_N7S7856C2D0Ev),
};
extern void ABISELECT(_ZTvn16_n144_N7S7856C2D1Ev,_ZTvn8_n72_N7S7856C2D1Ev)();
extern void ABISELECT(_ZTvn16_n144_N7S7856C2D0Ev,_ZTvn8_n72_N7S7856C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C288S7856C27__7S7856C2__7S7856C1[] = {
  ABISELECT(-248,-128),
  ABISELECT(-248,-128),
  ABISELECT(-656,-348),
  ABISELECT(-264,-136),
  ABISELECT(-312,-164),
  ABISELECT(-344,-180),
  ABISELECT(-296,-152),
  ABISELECT(-656,-348),
  ABISELECT(-280,-144),
  ABISELECT(-656,-348),
  ABISELECT(-312,-164),
  ABISELECT(-312,-164),
  ABISELECT(-656,-348),
  ABISELECT(-656,-348),
  ABISELECT(-656,-348),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n144_N7S7856C2D1Ev,_ZTvn8_n72_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n144_N7S7856C2D0Ev,_ZTvn8_n72_N7S7856C2D0Ev),
};
extern void ABISELECT(_ZTvn32_n144_N7S7856C2D1Ev,_ZTvn16_n72_N7S7856C2D1Ev)();
extern void ABISELECT(_ZTvn32_n144_N7S7856C2D0Ev,_ZTvn16_n72_N7S7856C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C218S7856C288S7856C27__A1__7S7856C2__7S7856C1[] = {
  ABISELECT(-672,-356),
  ABISELECT(-672,-356),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n144_N7S7856C2D1Ev,_ZTvn16_n72_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n144_N7S7856C2D0Ev,_ZTvn16_n72_N7S7856C2D0Ev),
};
extern void ABISELECT(_ZTvn48_n176_N7S7856C2D1Ev,_ZTvn28_n88_N7S7856C2D1Ev)();
extern void ABISELECT(_ZTvn48_n176_N7S7856C2D0Ev,_ZTvn28_n88_N7S7856C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C58S7856C258S7856C23__A3__7S7856C2__7S7856C1[] = {
  ABISELECT(-144,-76),
  ABISELECT(-144,-76),
  ABISELECT(-552,-296),
  ABISELECT(-176,-92),
  ABISELECT(-192,-100),
  ABISELECT(-208,-112),
  ABISELECT(-552,-296),
  ABISELECT(-208,-112),
  ABISELECT(-208,-112),
  ABISELECT(-160,-84),
  ABISELECT(-552,-296),
  ABISELECT(-552,-296),
  ABISELECT(-552,-296),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n176_N7S7856C2D1Ev,_ZTvn28_n88_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n176_N7S7856C2D0Ev,_ZTvn28_n88_N7S7856C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C58S7856C258S7856C23__A8__7S7856C2__7S7856C1[] = {
  ABISELECT(-568,-304),
  ABISELECT(-224,-120),
  ABISELECT(-568,-304),
  ABISELECT(-568,-304),
  ABISELECT(-568,-304),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
};
extern void ABISELECT(_ZTvn80_n176_N7S7856C2D1Ev,_ZTvn44_n88_N7S7856C2D1Ev)();
extern void ABISELECT(_ZTvn80_n176_N7S7856C2D0Ev,_ZTvn44_n88_N7S7856C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C138S7856C23__A4__7S7856C2__7S7856C1[] = {
  ABISELECT(-584,-312),
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  ABISELECT(-584,-312),
  ABISELECT(-584,-312),
  ABISELECT(-584,-312),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n176_N7S7856C2D1Ev,_ZTvn44_n88_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n176_N7S7856C2D0Ev,_ZTvn44_n88_N7S7856C2D0Ev),
};
extern void ABISELECT(_ZTv0_n144_N7S7856C2D1Ev,_ZTv0_n72_N7S7856C2D1Ev)();
extern void ABISELECT(_ZThn688_N7S7856C2D1Ev,_ZThn364_N7S7856C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N7S7856C2D0Ev,_ZTv0_n72_N7S7856C2D0Ev)();
extern void ABISELECT(_ZThn688_N7S7856C2D0Ev,_ZThn364_N7S7856C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C22__A1__7S7856C2__7S7856C1[] = {
  ABISELECT(-688,-364),
  ABISELECT(-264,-136),
  ABISELECT(-376,-196),
  ABISELECT(-400,-212),
  ABISELECT(-280,-144),
  ABISELECT(-280,-144),
  ABISELECT(-688,-364),
  ABISELECT(-296,-152),
  ABISELECT(-312,-160),
  ABISELECT(-344,-180),
  ABISELECT(-328,-168),
  ABISELECT(-344,-180),
  ABISELECT(-688,-364),
  ABISELECT(-344,-180),
  ABISELECT(-688,-364),
  ABISELECT(-688,-364),
  ABISELECT(-688,-364),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N7S7856C2D1Ev,_ZTv0_n72_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N7S7856C2D0Ev,_ZTv0_n72_N7S7856C2D0Ev),
};
extern void ABISELECT(_ZTvn8_n144_N7S7856C2D1Ev,_ZTvn4_n72_N7S7856C2D1Ev)();
extern void ABISELECT(_ZTvn8_n144_N7S7856C2D0Ev,_ZTvn4_n72_N7S7856C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C58S7856C22__A4__7S7856C2__7S7856C1[] = {
  ABISELECT(-288,-148),
  ABISELECT(-288,-148),
  ABISELECT(-696,-368),
  ABISELECT(-320,-164),
  ABISELECT(-336,-172),
  ABISELECT(-352,-184),
  ABISELECT(-696,-368),
  ABISELECT(-352,-184),
  ABISELECT(-352,-184),
  ABISELECT(-304,-156),
  ABISELECT(-696,-368),
  ABISELECT(-696,-368),
  ABISELECT(-696,-368),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n144_N7S7856C2D1Ev,_ZTvn4_n72_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n144_N7S7856C2D0Ev,_ZTvn4_n72_N7S7856C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C58S7856C22__A10__7S7856C2__7S7856C1[] = {
  ABISELECT(-712,-376),
  ABISELECT(-368,-192),
  ABISELECT(-712,-376),
  ABISELECT(-712,-376),
  ABISELECT(-712,-376),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C26__A1__7S7856C1[] = {
  ABISELECT(-232,-124),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C26[0]),
};
extern void _ZN7S7856C3D1Ev();
extern void _ZN7S7856C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C3__7S7856C1[] = {
  ABISELECT(448,236),
  ABISELECT(-240,-128),
  ABISELECT(400,212),
  ABISELECT(-240,-128),
  ABISELECT(264,140),
  ABISELECT(216,116),
  ABISELECT(184,100),
  ABISELECT(72,40),
  ABISELECT(48,24),
  ABISELECT(168,92),
  ABISELECT(168,92),
  ABISELECT(-240,-128),
  ABISELECT(152,84),
  ABISELECT(136,76),
  ABISELECT(104,56),
  ABISELECT(120,68),
  ABISELECT(104,56),
  ABISELECT(-240,-128),
  ABISELECT(104,56),
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&_ZN7S7856C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C3D0Ev,
};
extern void _ZN8S7856C22D1Ev();
extern void _ZN8S7856C22D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C227S7856C3__7S7856C1[] = {
  ABISELECT(184,100),
  ABISELECT(72,40),
  ABISELECT(48,24),
  ABISELECT(168,92),
  ABISELECT(168,92),
  ABISELECT(-240,-128),
  ABISELECT(152,84),
  ABISELECT(136,76),
  ABISELECT(104,56),
  ABISELECT(120,68),
  ABISELECT(104,56),
  ABISELECT(-240,-128),
  ABISELECT(104,56),
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&_ZN8S7856C22D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C22D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C227S7856C3__A5__7S7856C1[] = {
  ABISELECT(-240,-128),
  ABISELECT(104,56),
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C227S7856C3__A5__7S7856C1[] = {
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void _ZN7S7856C5D1Ev();
extern void _ZN7S7856C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C58S7856C227S7856C3__A2__7S7856C1[] = {
  ABISELECT(160,88),
  ABISELECT(160,88),
  ABISELECT(-248,-132),
  ABISELECT(128,72),
  ABISELECT(112,64),
  ABISELECT(96,52),
  ABISELECT(-248,-132),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(144,80),
  ABISELECT(-248,-132),
  ABISELECT(-248,-132),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&_ZN7S7856C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C5D0Ev,
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C187S7856C58S7856C227S7856C3__A3__7S7856C1[] = {
  ABISELECT(-248,-132),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(144,80),
  ABISELECT(-248,-132),
  ABISELECT(-248,-132),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C187S7856C58S7856C227S7856C3__A4__7S7856C1[] = {
  ABISELECT(-248,-132),
  ABISELECT(-248,-132),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C187S7856C58S7856C227S7856C3__A7__7S7856C1[] = {
  ABISELECT(-248,-132),
  ABISELECT(-248,-132),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C58S7856C227S7856C3__A6__7S7856C1[] = {
  ABISELECT(-264,-140),
  ABISELECT(80,44),
  ABISELECT(-264,-140),
  ABISELECT(-264,-140),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C187S7856C58S7856C227S7856C3__A6__7S7856C1[] = {
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZThn144_N8S7856C18D1Ev,_ZThn80_N8S7856C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
extern void ABISELECT(_ZThn144_N8S7856C18D0Ev,_ZThn80_N8S7856C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C187S7856C58S7856C227S7856C3__A3__7S7856C1[] = {
  ABISELECT(-144,-80),
  ABISELECT(-392,-212),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-392,-212),
  ABISELECT(-392,-212),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C187S7856C58S7856C227S7856C3__A3__7S7856C1[] = {
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C187S7856C58S7856C227S7856C3__A3__7S7856C1[] = {
  ABISELECT(-264,-140),
  ABISELECT(80,44),
  ABISELECT(-264,-140),
  ABISELECT(-264,-140),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn96_N7S7856C5D1Ev,_ZThn52_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn96_N7S7856C5D0Ev,_ZThn52_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C58S7856C227S7856C3__A2__7S7856C1[] = {
  ABISELECT(-96,-52),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn112_N7S7856C5D1Ev,_ZThn64_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn112_N7S7856C5D0Ev,_ZThn64_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C58S7856C227S7856C3__A2__7S7856C1[] = {
  ABISELECT(-112,-64),
  ABISELECT(-360,-196),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-360,-196),
  ABISELECT(-360,-196),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C58S7856C227S7856C3__A2__7S7856C1[] = {
  ABISELECT(-376,-204),
  ABISELECT(-376,-204),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn144_N7S7856C5D1Ev,_ZThn80_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn144_N7S7856C5D0Ev,_ZThn80_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C58S7856C227S7856C3__A2__7S7856C1[] = {
  ABISELECT(-144,-80),
  ABISELECT(-392,-212),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-392,-212),
  ABISELECT(-392,-212),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn160_N7S7856C5D1Ev,_ZThn88_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn160_N7S7856C5D0Ev,_ZThn88_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C58S7856C227S7856C3__A2__7S7856C1[] = {
  ABISELECT(-160,-88),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-408,-220),
  ABISELECT(-408,-220),
  ABISELECT(-64,-36),
  ABISELECT(-408,-220),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__7S7856C58S7856C227S7856C3__A2__7S7856C1[] = {
  ABISELECT(-264,-140),
  ABISELECT(80,44),
  ABISELECT(-264,-140),
  ABISELECT(-264,-140),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn104_N8S7856C22D1Ev,_ZThn56_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn104_N8S7856C22D0Ev,_ZThn56_N8S7856C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C227S7856C3__7S7856C1[] = {
  ABISELECT(-104,-56),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn120_N8S7856C22D1Ev,_ZThn68_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn120_N8S7856C22D0Ev,_ZThn68_N8S7856C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C227S7856C3__7S7856C1[] = {
  ABISELECT(-120,-68),
  ABISELECT(-360,-196),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-360,-196),
  ABISELECT(-360,-196),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C227S7856C3__7S7856C1[] = {
  ABISELECT(-376,-204),
  ABISELECT(-376,-204),
  ABISELECT(-136,-76),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn152_N8S7856C22D1Ev,_ZThn84_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn152_N8S7856C22D0Ev,_ZThn84_N8S7856C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__8S7856C227S7856C3__7S7856C1[] = {
  ABISELECT(-152,-84),
  ABISELECT(-392,-212),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-392,-212),
  ABISELECT(-392,-212),
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev),
};
extern void ABISELECT(_ZThn8_N8S7856C22D1Ev,_ZThn4_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn8_N8S7856C22D0Ev,_ZThn4_N8S7856C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__A__8S7856C227S7856C3__7S7856C1[] = {
  ABISELECT(160,88),
  ABISELECT(160,88),
  ABISELECT(-248,-132),
  ABISELECT(128,72),
  ABISELECT(112,64),
  ABISELECT(96,52),
  ABISELECT(-248,-132),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(144,80),
  ABISELECT(-248,-132),
  ABISELECT(-248,-132),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7856C22D1Ev,_ZThn4_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7856C22D0Ev,_ZThn4_N8S7856C22D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn168_N8S7856C22D1Ev,_ZThn92_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn168_N8S7856C22D0Ev,_ZThn92_N8S7856C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C227S7856C3__7S7856C1[] = {
  ABISELECT(-168,-92),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-408,-220),
  ABISELECT(-408,-220),
  ABISELECT(-64,-36),
  ABISELECT(-408,-220),
  ABISELECT(-168,-92),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A2__8S7856C227S7856C3__7S7856C1[] = {
  ABISELECT(-264,-140),
  ABISELECT(80,44),
  ABISELECT(-264,-140),
  ABISELECT(-264,-140),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
};
extern void ABISELECT(_ZTv0_n136_N8S7856C22D1Ev,_ZTv0_n68_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn48_N8S7856C22D1Ev,_ZThn24_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N8S7856C22D0Ev,_ZTv0_n68_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn48_N8S7856C22D0Ev,_ZThn24_N8S7856C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C4__8S7856C227S7856C3__7S7856C1[] = {
  ABISELECT(8,4),
  ABISELECT(-48,-24),
  ABISELECT(136,76),
  ABISELECT(120,68),
  ABISELECT(120,68),
  ABISELECT(-288,-152),
  ABISELECT(104,60),
  ABISELECT(88,52),
  ABISELECT(56,32),
  ABISELECT(72,44),
  ABISELECT(56,32),
  ABISELECT(24,16),
  ABISELECT(-288,-152),
  ABISELECT(56,32),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S7856C22D1Ev,_ZTv0_n68_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S7856C22D0Ev,_ZTv0_n68_N8S7856C22D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S7856C22D1Ev,_ZTv0_n60_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn72_N8S7856C22D1Ev,_ZThn40_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S7856C22D0Ev,_ZTv0_n60_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn72_N8S7856C22D0Ev,_ZThn40_N8S7856C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C5__A1__8S7856C227S7856C3__7S7856C1[] = {
  ABISELECT(-72,-40),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-312,-168),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-312,-168),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-312,-168),
  ABISELECT(-312,-168),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C22D1Ev,_ZTv0_n60_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C22D0Ev,_ZTv0_n60_N8S7856C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A3__8S7856C227S7856C3__7S7856C1[] = {
  ABISELECT(-328,-176),
  ABISELECT(16,8),
  ABISELECT(-328,-176),
  ABISELECT(-328,-176),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
};
extern void ABISELECT(_ZTvn8_n136_N8S7856C22D1Ev,_ZTvn4_n68_N8S7856C22D1Ev)();
extern void ABISELECT(_ZTvn8_n136_N8S7856C22D0Ev,_ZTvn4_n68_N8S7856C22D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C197S7856C4__8S7856C227S7856C3__7S7856C1[] = {
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(48,28),
  ABISELECT(64,40),
  ABISELECT(-296,-156),
  ABISELECT(48,28),
  ABISELECT(-296,-156),
  ABISELECT(-296,-156),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N8S7856C22D1Ev,_ZTvn4_n68_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N8S7856C22D0Ev,_ZTvn4_n68_N8S7856C22D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N8S7856C22D1Ev,_ZTv0_n36_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn184_N8S7856C22D1Ev,_ZThn100_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7856C22D0Ev,_ZTv0_n36_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn184_N8S7856C22D0Ev,_ZThn100_N8S7856C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C18__A2__8S7856C227S7856C3__7S7856C1[] = {
  ABISELECT(-184,-100),
  ABISELECT(-424,-228),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-424,-228),
  ABISELECT(-424,-228),
  ABISELECT(-184,-100),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C22D1Ev,_ZTv0_n36_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C22D0Ev,_ZTv0_n36_N8S7856C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A5__8S7856C227S7856C3__7S7856C1[] = {
  ABISELECT(-440,-236),
  ABISELECT(-96,-52),
  ABISELECT(-440,-236),
  ABISELECT(-440,-236),
  ABISELECT(-200,-108),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
};
extern void ABISELECT(_ZTv0_n136_N7S7856C3D1Ev,_ZTv0_n68_N7S7856C3D1Ev)();
extern void ABISELECT(_ZThn48_N7S7856C3D1Ev,_ZThn24_N7S7856C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N7S7856C3D0Ev,_ZTv0_n68_N7S7856C3D0Ev)();
extern void ABISELECT(_ZThn48_N7S7856C3D0Ev,_ZThn24_N7S7856C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C4__7S7856C3__7S7856C1[] = {
  ABISELECT(8,4),
  ABISELECT(-48,-24),
  ABISELECT(136,76),
  ABISELECT(120,68),
  ABISELECT(120,68),
  ABISELECT(-288,-152),
  ABISELECT(104,60),
  ABISELECT(88,52),
  ABISELECT(56,32),
  ABISELECT(72,44),
  ABISELECT(56,32),
  ABISELECT(24,16),
  ABISELECT(-288,-152),
  ABISELECT(56,32),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N7S7856C3D1Ev,_ZTv0_n68_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N7S7856C3D0Ev,_ZTv0_n68_N7S7856C3D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N7S7856C3D1Ev,_ZTv0_n60_N7S7856C3D1Ev)();
extern void ABISELECT(_ZThn72_N7S7856C3D1Ev,_ZThn40_N7S7856C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S7856C3D0Ev,_ZTv0_n60_N7S7856C3D0Ev)();
extern void ABISELECT(_ZThn72_N7S7856C3D0Ev,_ZThn40_N7S7856C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C5__7S7856C3__7S7856C1[] = {
  ABISELECT(-72,-40),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-312,-168),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-312,-168),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-312,-168),
  ABISELECT(-312,-168),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C3D1Ev,_ZTv0_n60_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C3D0Ev,_ZTv0_n60_N7S7856C3D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C3D1Ev,_ZTv0_n44_N7S7856C3D1Ev)();
extern void ABISELECT(_ZThn104_N7S7856C3D1Ev,_ZThn56_N7S7856C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C3D0Ev,_ZTv0_n44_N7S7856C3D0Ev)();
extern void ABISELECT(_ZThn104_N7S7856C3D0Ev,_ZThn56_N7S7856C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C3__7S7856C1[] = {
  ABISELECT(-104,-56),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C3D1Ev,_ZTv0_n44_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C3D0Ev,_ZTv0_n44_N7S7856C3D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C3D1Ev,_ZTv0_n32_N7S7856C3D1Ev)();
extern void ABISELECT(_ZThn120_N7S7856C3D1Ev,_ZThn68_N7S7856C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C3D0Ev,_ZTv0_n32_N7S7856C3D0Ev)();
extern void ABISELECT(_ZThn120_N7S7856C3D0Ev,_ZThn68_N7S7856C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C3__7S7856C1[] = {
  ABISELECT(-120,-68),
  ABISELECT(-360,-196),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-360,-196),
  ABISELECT(-360,-196),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C3D1Ev,_ZTv0_n32_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C3D0Ev,_ZTv0_n32_N7S7856C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C3__7S7856C1[] = {
  ABISELECT(-376,-204),
  ABISELECT(-376,-204),
  ABISELECT(-136,-76),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C3D1Ev,_ZTv0_n32_N7S7856C3D1Ev)();
extern void ABISELECT(_ZThn152_N7S7856C3D1Ev,_ZThn84_N7S7856C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C3D0Ev,_ZTv0_n32_N7S7856C3D0Ev)();
extern void ABISELECT(_ZThn152_N7S7856C3D0Ev,_ZThn84_N7S7856C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C3__7S7856C1[] = {
  ABISELECT(-152,-84),
  ABISELECT(-392,-212),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-392,-212),
  ABISELECT(-392,-212),
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C3D1Ev,_ZTv0_n32_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C3D0Ev,_ZTv0_n32_N7S7856C3D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C3D1Ev,_ZTv0_n44_N7S7856C3D1Ev)();
extern void ABISELECT(_ZThn168_N7S7856C3D1Ev,_ZThn92_N7S7856C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C3D0Ev,_ZTv0_n44_N7S7856C3D0Ev)();
extern void ABISELECT(_ZThn168_N7S7856C3D0Ev,_ZThn92_N7S7856C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C3__7S7856C1[] = {
  ABISELECT(-168,-92),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-408,-220),
  ABISELECT(-408,-220),
  ABISELECT(-64,-36),
  ABISELECT(-408,-220),
  ABISELECT(-168,-92),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C3D1Ev,_ZTv0_n44_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C3D0Ev,_ZTv0_n44_N7S7856C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__7S7856C3__7S7856C1[] = {
  ABISELECT(-328,-176),
  ABISELECT(16,8),
  ABISELECT(-328,-176),
  ABISELECT(-328,-176),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
};
extern void ABISELECT(_ZTvn8_n136_N7S7856C3D1Ev,_ZTvn4_n68_N7S7856C3D1Ev)();
extern void ABISELECT(_ZTvn8_n136_N7S7856C3D0Ev,_ZTvn4_n68_N7S7856C3D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C197S7856C4__7S7856C3__7S7856C1[] = {
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(48,28),
  ABISELECT(64,40),
  ABISELECT(-296,-156),
  ABISELECT(48,28),
  ABISELECT(-296,-156),
  ABISELECT(-296,-156),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N7S7856C3D1Ev,_ZTvn4_n68_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N7S7856C3D0Ev,_ZTvn4_n68_N7S7856C3D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N7S7856C3D1Ev,_ZTv0_n36_N7S7856C3D1Ev)();
extern void ABISELECT(_ZThn184_N7S7856C3D1Ev,_ZThn100_N7S7856C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7856C3D0Ev,_ZTv0_n36_N7S7856C3D0Ev)();
extern void ABISELECT(_ZThn184_N7S7856C3D0Ev,_ZThn100_N7S7856C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C18__A1__7S7856C3__7S7856C1[] = {
  ABISELECT(-184,-100),
  ABISELECT(-424,-228),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-424,-228),
  ABISELECT(-424,-228),
  ABISELECT(-184,-100),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7856C3D1Ev,_ZTv0_n36_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7856C3D0Ev,_ZTv0_n36_N7S7856C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A3__7S7856C3__7S7856C1[] = {
  ABISELECT(-440,-236),
  ABISELECT(-96,-52),
  ABISELECT(-440,-236),
  ABISELECT(-440,-236),
  ABISELECT(-200,-108),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
};
extern void ABISELECT(_ZTv0_n120_N7S7856C3D1Ev,_ZTv0_n60_N7S7856C3D1Ev)();
extern void ABISELECT(_ZThn216_N7S7856C3D1Ev,_ZThn116_N7S7856C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S7856C3D0Ev,_ZTv0_n60_N7S7856C3D0Ev)();
extern void ABISELECT(_ZThn216_N7S7856C3D0Ev,_ZThn116_N7S7856C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C20__7S7856C3__7S7856C1[] = {
  ABISELECT(-216,-116),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-456,-244),
  ABISELECT(-64,-32),
  ABISELECT(-80,-40),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-456,-244),
  ABISELECT(-96,-48),
  ABISELECT(-112,-60),
  ABISELECT(-456,-244),
  ABISELECT(-456,-244),
  ABISELECT(-216,-116),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C3D1Ev,_ZTv0_n60_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C3D0Ev,_ZTv0_n60_N7S7856C3D0Ev),
};
extern void ABISELECT(_ZTvn8_n120_N7S7856C3D1Ev,_ZTvn4_n60_N7S7856C3D1Ev)();
extern void ABISELECT(_ZTvn8_n120_N7S7856C3D0Ev,_ZTvn4_n60_N7S7856C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C58S7856C20__A1__7S7856C3__7S7856C1[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-464,-248),
  ABISELECT(-88,-44),
  ABISELECT(-104,-52),
  ABISELECT(-120,-64),
  ABISELECT(-464,-248),
  ABISELECT(-120,-64),
  ABISELECT(-120,-64),
  ABISELECT(-72,-36),
  ABISELECT(-464,-248),
  ABISELECT(-464,-248),
  ABISELECT(-224,-120),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n120_N7S7856C3D1Ev,_ZTvn4_n60_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n120_N7S7856C3D0Ev,_ZTvn4_n60_N7S7856C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C58S7856C20__A4__7S7856C3__7S7856C1[] = {
  ABISELECT(-480,-256),
  ABISELECT(-136,-72),
  ABISELECT(-480,-256),
  ABISELECT(-480,-256),
  ABISELECT(-240,-128),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
};
extern void ABISELECT(_ZTvn40_n120_N7S7856C3D1Ev,_ZTvn20_n60_N7S7856C3D1Ev)();
extern void ABISELECT(_ZTvn40_n120_N7S7856C3D0Ev,_ZTvn20_n60_N7S7856C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C218S7856C20__7S7856C3__7S7856C1[] = {
  ABISELECT(-496,-264),
  ABISELECT(-256,-136),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n120_N7S7856C3D1Ev,_ZTvn20_n60_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n120_N7S7856C3D0Ev,_ZTvn20_n60_N7S7856C3D0Ev),
};
extern void ABISELECT(_ZThn8_N7S7856C3D1Ev,_ZThn4_N7S7856C3D1Ev)();
extern void ABISELECT(_ZThn8_N7S7856C3D0Ev,_ZThn4_N7S7856C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C58S7856C22__A2__7S7856C3__7S7856C1[] = {
  ABISELECT(160,88),
  ABISELECT(160,88),
  ABISELECT(-248,-132),
  ABISELECT(128,72),
  ABISELECT(112,64),
  ABISELECT(96,52),
  ABISELECT(-248,-132),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(144,80),
  ABISELECT(-248,-132),
  ABISELECT(-248,-132),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7856C3D1Ev,_ZThn4_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7856C3D0Ev,_ZThn4_N7S7856C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C58S7856C22__A6__7S7856C3__7S7856C1[] = {
  ABISELECT(-264,-140),
  ABISELECT(80,44),
  ABISELECT(-264,-140),
  ABISELECT(-264,-140),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
};
extern void ABISELECT(_ZTv0_n176_N7S7856C3D1Ev,_ZTv0_n88_N7S7856C3D1Ev)();
extern void ABISELECT(_ZThn264_N7S7856C3D1Ev,_ZThn140_N7S7856C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n176_N7S7856C3D0Ev,_ZTv0_n88_N7S7856C3D0Ev)();
extern void ABISELECT(_ZThn264_N7S7856C3D0Ev,_ZThn140_N7S7856C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C23__7S7856C3__7S7856C1[] = {
  ABISELECT(32,16),
  ABISELECT(-264,-140),
  ABISELECT(-216,-116),
  ABISELECT(184,96),
  ABISELECT(-504,-268),
  ABISELECT(-504,-268),
  ABISELECT(136,72),
  ABISELECT(-80,-40),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-504,-268),
  ABISELECT(-112,-56),
  ABISELECT(-128,-64),
  ABISELECT(-144,-72),
  ABISELECT(-160,-84),
  ABISELECT(-192,-100),
  ABISELECT(-504,-268),
  ABISELECT(-160,-84),
  ABISELECT(-160,-84),
  ABISELECT(-504,-268),
  ABISELECT(-504,-268),
  ABISELECT(-264,-140),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n176_N7S7856C3D1Ev,_ZTv0_n88_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n176_N7S7856C3D0Ev,_ZTv0_n88_N7S7856C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C268S7856C258S7856C23__7S7856C3__7S7856C1[] = {
  ABISELECT(-520,-276),
  ABISELECT(-280,-148),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
};
extern void ABISELECT(_ZTvn24_n176_N7S7856C3D1Ev,_ZTvn12_n88_N7S7856C3D1Ev)();
extern void ABISELECT(_ZTvn24_n176_N7S7856C3D0Ev,_ZTvn12_n88_N7S7856C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C48S7856C258S7856C23__A1__7S7856C3__7S7856C1[] = {
  ABISELECT(-104,-52),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-528,-280),
  ABISELECT(-136,-68),
  ABISELECT(-152,-76),
  ABISELECT(-184,-96),
  ABISELECT(-168,-84),
  ABISELECT(-184,-96),
  ABISELECT(-216,-112),
  ABISELECT(-528,-280),
  ABISELECT(-184,-96),
  ABISELECT(-528,-280),
  ABISELECT(-528,-280),
  ABISELECT(-288,-152),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n176_N7S7856C3D1Ev,_ZTvn12_n88_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n176_N7S7856C3D0Ev,_ZTvn12_n88_N7S7856C3D0Ev),
};
extern void ABISELECT(_ZTvn32_n176_N7S7856C3D1Ev,_ZTvn16_n88_N7S7856C3D1Ev)();
extern void ABISELECT(_ZTvn32_n176_N7S7856C3D0Ev,_ZTvn16_n88_N7S7856C3D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C3__7S7856C1[] = {
  ABISELECT(-112,-56),
  ABISELECT(-144,-72),
  ABISELECT(-160,-80),
  ABISELECT(-192,-100),
  ABISELECT(-176,-88),
  ABISELECT(-536,-284),
  ABISELECT(-192,-100),
  ABISELECT(-536,-284),
  ABISELECT(-536,-284),
  ABISELECT(-296,-156),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n176_N7S7856C3D1Ev,_ZTvn16_n88_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n176_N7S7856C3D0Ev,_ZTvn16_n88_N7S7856C3D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void ABISELECT(_ZTv0_n144_N7S7856C3D1Ev,_ZTv0_n72_N7S7856C3D1Ev)();
extern void ABISELECT(_ZThn400_N7S7856C3D1Ev,_ZThn212_N7S7856C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N7S7856C3D0Ev,_ZTv0_n72_N7S7856C3D0Ev)();
extern void ABISELECT(_ZThn400_N7S7856C3D0Ev,_ZThn212_N7S7856C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C27__7S7856C3__7S7856C1[] = {
  ABISELECT(-400,-212),
  ABISELECT(-640,-340),
  ABISELECT(-232,-120),
  ABISELECT(-640,-340),
  ABISELECT(-248,-128),
  ABISELECT(-296,-156),
  ABISELECT(-328,-172),
  ABISELECT(-640,-340),
  ABISELECT(-296,-156),
  ABISELECT(-280,-144),
  ABISELECT(-264,-136),
  ABISELECT(-232,-120),
  ABISELECT(-640,-340),
  ABISELECT(-640,-340),
  ABISELECT(-296,-156),
  ABISELECT(-640,-340),
  ABISELECT(-400,-212),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N7S7856C3D1Ev,_ZTv0_n72_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N7S7856C3D0Ev,_ZTv0_n72_N7S7856C3D0Ev),
};
extern void ABISELECT(_ZTvn16_n144_N7S7856C3D1Ev,_ZTvn8_n72_N7S7856C3D1Ev)();
extern void ABISELECT(_ZTvn16_n144_N7S7856C3D0Ev,_ZTvn8_n72_N7S7856C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C288S7856C27__7S7856C3__7S7856C1[] = {
  ABISELECT(-248,-128),
  ABISELECT(-248,-128),
  ABISELECT(-656,-348),
  ABISELECT(-264,-136),
  ABISELECT(-312,-164),
  ABISELECT(-344,-180),
  ABISELECT(-296,-152),
  ABISELECT(-656,-348),
  ABISELECT(-280,-144),
  ABISELECT(-656,-348),
  ABISELECT(-312,-164),
  ABISELECT(-312,-164),
  ABISELECT(-656,-348),
  ABISELECT(-656,-348),
  ABISELECT(-416,-220),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n144_N7S7856C3D1Ev,_ZTvn8_n72_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n144_N7S7856C3D0Ev,_ZTvn8_n72_N7S7856C3D0Ev),
};
extern void ABISELECT(_ZTv0_n128_N7S7856C3D1Ev,_ZTv0_n64_N7S7856C3D1Ev)();
extern void ABISELECT(_ZTv0_n128_N7S7856C3D0Ev,_ZTv0_n64_N7S7856C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C29__7S7856C3__7S7856C1[] = {
  ABISELECT(240,128),
  ABISELECT(408,220),
  ABISELECT(408,220),
  0,
  ABISELECT(392,212),
  ABISELECT(376,204),
  ABISELECT(344,184),
  ABISELECT(312,168),
  ABISELECT(344,184),
  ABISELECT(360,196),
  0,
  ABISELECT(344,184),
  0,
  0,
  ABISELECT(240,128),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S7856C3D1Ev,_ZTv0_n64_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S7856C3D0Ev,_ZTv0_n64_N7S7856C3D0Ev),
};
extern void ABISELECT(_ZTvn32_n144_N7S7856C3D1Ev,_ZTvn16_n72_N7S7856C3D1Ev)();
extern void ABISELECT(_ZTvn32_n144_N7S7856C3D0Ev,_ZTvn16_n72_N7S7856C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C218S7856C288S7856C27__A1__7S7856C3__7S7856C1[] = {
  ABISELECT(-672,-356),
  ABISELECT(-432,-228),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n144_N7S7856C3D1Ev,_ZTvn16_n72_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n144_N7S7856C3D0Ev,_ZTvn16_n72_N7S7856C3D0Ev),
};
extern void ABISELECT(_ZTvn48_n176_N7S7856C3D1Ev,_ZTvn28_n88_N7S7856C3D1Ev)();
extern void ABISELECT(_ZTvn48_n176_N7S7856C3D0Ev,_ZTvn28_n88_N7S7856C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C58S7856C258S7856C23__A3__7S7856C3__7S7856C1[] = {
  ABISELECT(-144,-76),
  ABISELECT(-144,-76),
  ABISELECT(-552,-296),
  ABISELECT(-176,-92),
  ABISELECT(-192,-100),
  ABISELECT(-208,-112),
  ABISELECT(-552,-296),
  ABISELECT(-208,-112),
  ABISELECT(-208,-112),
  ABISELECT(-160,-84),
  ABISELECT(-552,-296),
  ABISELECT(-552,-296),
  ABISELECT(-312,-168),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n176_N7S7856C3D1Ev,_ZTvn28_n88_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n176_N7S7856C3D0Ev,_ZTvn28_n88_N7S7856C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C58S7856C258S7856C23__A8__7S7856C3__7S7856C1[] = {
  ABISELECT(-568,-304),
  ABISELECT(-224,-120),
  ABISELECT(-568,-304),
  ABISELECT(-568,-304),
  ABISELECT(-328,-176),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
};
extern void ABISELECT(_ZTvn80_n176_N7S7856C3D1Ev,_ZTvn44_n88_N7S7856C3D1Ev)();
extern void ABISELECT(_ZTvn80_n176_N7S7856C3D0Ev,_ZTvn44_n88_N7S7856C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C138S7856C23__A4__7S7856C3__7S7856C1[] = {
  ABISELECT(-584,-312),
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  ABISELECT(-584,-312),
  ABISELECT(-584,-312),
  ABISELECT(-344,-184),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n176_N7S7856C3D1Ev,_ZTvn44_n88_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n176_N7S7856C3D0Ev,_ZTvn44_n88_N7S7856C3D0Ev),
};
extern void ABISELECT(_ZTv0_n144_N7S7856C3D1Ev,_ZTv0_n72_N7S7856C3D1Ev)();
extern void ABISELECT(_ZThn448_N7S7856C3D1Ev,_ZThn236_N7S7856C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N7S7856C3D0Ev,_ZTv0_n72_N7S7856C3D0Ev)();
extern void ABISELECT(_ZThn448_N7S7856C3D0Ev,_ZThn236_N7S7856C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C22__A1__7S7856C3__7S7856C1[] = {
  ABISELECT(-448,-236),
  ABISELECT(-264,-136),
  ABISELECT(-376,-196),
  ABISELECT(-400,-212),
  ABISELECT(-280,-144),
  ABISELECT(-280,-144),
  ABISELECT(-688,-364),
  ABISELECT(-296,-152),
  ABISELECT(-312,-160),
  ABISELECT(-344,-180),
  ABISELECT(-328,-168),
  ABISELECT(-344,-180),
  ABISELECT(-688,-364),
  ABISELECT(-344,-180),
  ABISELECT(-688,-364),
  ABISELECT(-688,-364),
  ABISELECT(-448,-236),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N7S7856C3D1Ev,_ZTv0_n72_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N7S7856C3D0Ev,_ZTv0_n72_N7S7856C3D0Ev),
};
extern void ABISELECT(_ZTvn8_n144_N7S7856C3D1Ev,_ZTvn4_n72_N7S7856C3D1Ev)();
extern void ABISELECT(_ZTvn8_n144_N7S7856C3D0Ev,_ZTvn4_n72_N7S7856C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C58S7856C22__A4__7S7856C3__7S7856C1[] = {
  ABISELECT(-288,-148),
  ABISELECT(-288,-148),
  ABISELECT(-696,-368),
  ABISELECT(-320,-164),
  ABISELECT(-336,-172),
  ABISELECT(-352,-184),
  ABISELECT(-696,-368),
  ABISELECT(-352,-184),
  ABISELECT(-352,-184),
  ABISELECT(-304,-156),
  ABISELECT(-696,-368),
  ABISELECT(-696,-368),
  ABISELECT(-456,-240),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n144_N7S7856C3D1Ev,_ZTvn4_n72_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n144_N7S7856C3D0Ev,_ZTvn4_n72_N7S7856C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C58S7856C22__A10__7S7856C3__7S7856C1[] = {
  ABISELECT(-712,-376),
  ABISELECT(-368,-192),
  ABISELECT(-712,-376),
  ABISELECT(-712,-376),
  ABISELECT(-472,-248),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
};
extern void _ZN7S7856C4D1Ev();
extern void _ZN7S7856C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C4__7S7856C1[] = {
  ABISELECT(136,76),
  ABISELECT(120,68),
  ABISELECT(120,68),
  ABISELECT(-288,-152),
  ABISELECT(104,60),
  ABISELECT(88,52),
  ABISELECT(56,32),
  ABISELECT(72,44),
  ABISELECT(56,32),
  ABISELECT(24,16),
  ABISELECT(-288,-152),
  ABISELECT(56,32),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&_ZN7S7856C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C4D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C107S7856C4__A2__7S7856C1[] = {
  ABISELECT(-288,-152),
  ABISELECT(56,32),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C107S7856C4__A2__7S7856C1[] = {
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void _ZN8S7856C19D1Ev();
extern void _ZN8S7856C19D0Ev();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C197S7856C4__7S7856C1[] = {
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(48,28),
  ABISELECT(64,40),
  ABISELECT(-296,-156),
  ABISELECT(48,28),
  ABISELECT(-296,-156),
  ABISELECT(-296,-156),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&_ZN8S7856C19D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C19D0Ev,
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void _ZN7S7856C6D1Ev();
extern void _ZN7S7856C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C68S7856C197S7856C4__A1__7S7856C1[] = {
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(48,28),
  ABISELECT(64,40),
  ABISELECT(-296,-156),
  ABISELECT(48,28),
  ABISELECT(-296,-156),
  ABISELECT(-296,-156),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&_ZN7S7856C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C6D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn64_N7S7856C6D1Ev,_ZThn40_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn64_N7S7856C6D0Ev,_ZThn40_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C68S7856C197S7856C4__A1__7S7856C1[] = {
  ABISELECT(-64,-40),
  ABISELECT(-360,-196),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-360,-196),
  ABISELECT(-360,-196),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C68S7856C197S7856C4__A1__7S7856C1[] = {
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C68S7856C197S7856C4__A1__7S7856C1[] = {
  ABISELECT(-376,-204),
  ABISELECT(-376,-204),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn96_N7S7856C6D1Ev,_ZThn56_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn96_N7S7856C6D0Ev,_ZThn56_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C68S7856C197S7856C4__A1__7S7856C1[] = {
  ABISELECT(-96,-56),
  ABISELECT(-392,-212),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-392,-212),
  ABISELECT(-392,-212),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev)();
extern void ABISELECT(_ZThn64_N8S7856C19D1Ev,_ZThn40_N8S7856C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev)();
extern void ABISELECT(_ZThn64_N8S7856C19D0Ev,_ZThn40_N8S7856C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C197S7856C4__7S7856C1[] = {
  ABISELECT(-64,-40),
  ABISELECT(-360,-196),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-360,-196),
  ABISELECT(-360,-196),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C197S7856C4__7S7856C1[] = {
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C197S7856C4__7S7856C1[] = {
  ABISELECT(-376,-204),
  ABISELECT(-376,-204),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev)();
extern void ABISELECT(_ZThn96_N8S7856C19D1Ev,_ZThn56_N8S7856C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev)();
extern void ABISELECT(_ZThn96_N8S7856C19D0Ev,_ZThn56_N8S7856C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__8S7856C197S7856C4__7S7856C1[] = {
  ABISELECT(-96,-56),
  ABISELECT(-392,-212),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-392,-212),
  ABISELECT(-392,-212),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev),
};
extern void ABISELECT(_ZTv0_n72_N8S7856C19D1Ev,_ZTv0_n36_N8S7856C19D1Ev)();
extern void ABISELECT(_ZThn128_N8S7856C19D1Ev,_ZThn72_N8S7856C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7856C19D0Ev,_ZTv0_n36_N8S7856C19D0Ev)();
extern void ABISELECT(_ZThn128_N8S7856C19D0Ev,_ZThn72_N8S7856C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C18__8S7856C197S7856C4__7S7856C1[] = {
  ABISELECT(-128,-72),
  ABISELECT(-424,-228),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-424,-228),
  ABISELECT(-424,-228),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C19D1Ev,_ZTv0_n36_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C19D0Ev,_ZTv0_n36_N8S7856C19D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__8S7856C197S7856C4__7S7856C1[] = {
  ABISELECT(-440,-236),
  ABISELECT(-96,-52),
  ABISELECT(-440,-236),
  ABISELECT(-440,-236),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
extern void ABISELECT(_ZTv0_n120_N7S7856C4D1Ev,_ZTv0_n60_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn24_N7S7856C4D1Ev,_ZThn16_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S7856C4D0Ev,_ZTv0_n60_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn24_N7S7856C4D0Ev,_ZThn16_N7S7856C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C5__7S7856C4__7S7856C1[] = {
  ABISELECT(-24,-16),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-312,-168),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-312,-168),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-312,-168),
  ABISELECT(-312,-168),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C4D1Ev,_ZTv0_n60_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C4D0Ev,_ZTv0_n60_N7S7856C4D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn56_N7S7856C4D1Ev,_ZThn32_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn56_N7S7856C4D0Ev,_ZThn32_N7S7856C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C4__7S7856C1[] = {
  ABISELECT(-56,-32),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn72_N7S7856C4D1Ev,_ZThn44_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn72_N7S7856C4D0Ev,_ZThn44_N7S7856C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C4__7S7856C1[] = {
  ABISELECT(-72,-44),
  ABISELECT(-360,-196),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-360,-196),
  ABISELECT(-360,-196),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C4__7S7856C1[] = {
  ABISELECT(-376,-204),
  ABISELECT(-376,-204),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn104_N7S7856C4D1Ev,_ZThn60_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn104_N7S7856C4D0Ev,_ZThn60_N7S7856C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C4__7S7856C1[] = {
  ABISELECT(-104,-60),
  ABISELECT(-392,-212),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-392,-212),
  ABISELECT(-392,-212),
  ABISELECT(-104,-60),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn120_N7S7856C4D1Ev,_ZThn68_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn120_N7S7856C4D0Ev,_ZThn68_N7S7856C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C4__7S7856C1[] = {
  ABISELECT(-120,-68),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-408,-220),
  ABISELECT(-408,-220),
  ABISELECT(-64,-36),
  ABISELECT(-408,-220),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__7S7856C4__7S7856C1[] = {
  ABISELECT(-328,-176),
  ABISELECT(16,8),
  ABISELECT(-328,-176),
  ABISELECT(-328,-176),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
extern void ABISELECT(_ZThn8_N7S7856C4D1Ev,_ZThn4_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn8_N7S7856C4D0Ev,_ZThn4_N7S7856C4D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C19__7S7856C4__7S7856C1[] = {
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(48,28),
  ABISELECT(64,40),
  ABISELECT(-296,-156),
  ABISELECT(48,28),
  ABISELECT(-296,-156),
  ABISELECT(-296,-156),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7856C4D1Ev,_ZThn4_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7856C4D0Ev,_ZThn4_N7S7856C4D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N7S7856C4D1Ev,_ZTv0_n36_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn136_N7S7856C4D1Ev,_ZThn76_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7856C4D0Ev,_ZTv0_n36_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn136_N7S7856C4D0Ev,_ZThn76_N7S7856C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C18__A1__7S7856C4__7S7856C1[] = {
  ABISELECT(-136,-76),
  ABISELECT(-424,-228),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-424,-228),
  ABISELECT(-424,-228),
  ABISELECT(-136,-76),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7856C4D1Ev,_ZTv0_n36_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7856C4D0Ev,_ZTv0_n36_N7S7856C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A3__7S7856C4__7S7856C1[] = {
  ABISELECT(-440,-236),
  ABISELECT(-96,-52),
  ABISELECT(-440,-236),
  ABISELECT(-440,-236),
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
extern void _ZN7S7856C5D1Ev();
extern void _ZN7S7856C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C5__7S7856C1[] = {
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-312,-168),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-312,-168),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-312,-168),
  ABISELECT(-312,-168),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&_ZN7S7856C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C5D0Ev,
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C187S7856C5__7S7856C1[] = {
  ABISELECT(-312,-168),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-312,-168),
  ABISELECT(-312,-168),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C187S7856C5__A1__7S7856C1[] = {
  ABISELECT(-312,-168),
  ABISELECT(-312,-168),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C187S7856C5__A4__7S7856C1[] = {
  ABISELECT(-312,-168),
  ABISELECT(-312,-168),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__7S7856C1[] = {
  ABISELECT(-328,-176),
  ABISELECT(16,8),
  ABISELECT(-328,-176),
  ABISELECT(-328,-176),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C187S7856C5__A1__7S7856C1[] = {
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZThn80_N8S7856C18D1Ev,_ZThn44_N8S7856C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
extern void ABISELECT(_ZThn80_N8S7856C18D0Ev,_ZThn44_N8S7856C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C187S7856C5__7S7856C1[] = {
  ABISELECT(-80,-44),
  ABISELECT(-392,-212),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-392,-212),
  ABISELECT(-392,-212),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C187S7856C5__7S7856C1[] = {
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C187S7856C5__7S7856C1[] = {
  ABISELECT(-328,-176),
  ABISELECT(16,8),
  ABISELECT(-328,-176),
  ABISELECT(-328,-176),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn32_N7S7856C5D1Ev,_ZThn16_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn32_N7S7856C5D0Ev,_ZThn16_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C5__7S7856C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn48_N7S7856C5D1Ev,_ZThn28_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn48_N7S7856C5D0Ev,_ZThn28_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C5__7S7856C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(-360,-196),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-360,-196),
  ABISELECT(-360,-196),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C5__7S7856C1[] = {
  ABISELECT(-376,-204),
  ABISELECT(-376,-204),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn80_N7S7856C5D1Ev,_ZThn44_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn80_N7S7856C5D0Ev,_ZThn44_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C5__7S7856C1[] = {
  ABISELECT(-80,-44),
  ABISELECT(-392,-212),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-392,-212),
  ABISELECT(-392,-212),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn96_N7S7856C5D1Ev,_ZThn52_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn96_N7S7856C5D0Ev,_ZThn52_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C5__7S7856C1[] = {
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-408,-220),
  ABISELECT(-408,-220),
  ABISELECT(-64,-36),
  ABISELECT(-408,-220),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__7S7856C5__7S7856C1[] = {
  ABISELECT(-328,-176),
  ABISELECT(16,8),
  ABISELECT(-328,-176),
  ABISELECT(-328,-176),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void _ZN7S7856C6D1Ev();
extern void _ZN7S7856C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C1[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&_ZN7S7856C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C6D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn16_N7S7856C6D1Ev,_ZThn12_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn16_N7S7856C6D0Ev,_ZThn12_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C6__7S7856C1[] = {
  ABISELECT(-16,-12),
  ABISELECT(-360,-196),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-360,-196),
  ABISELECT(-360,-196),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C6__7S7856C1[] = {
  ABISELECT(-376,-204),
  ABISELECT(-376,-204),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn48_N7S7856C6D1Ev,_ZThn28_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn48_N7S7856C6D0Ev,_ZThn28_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C6__7S7856C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(-392,-212),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-392,-212),
  ABISELECT(-392,-212),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
extern void _ZN7S7856C7D1Ev();
extern void _ZN7S7856C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C1[] = {
  ABISELECT(-360,-196),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-360,-196),
  ABISELECT(-360,-196),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
  (VTBL_ENTRY)&_ZN7S7856C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C7D0Ev,
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C137S7856C7__7S7856C1[] = {
  ABISELECT(-360,-196),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-360,-196),
  ABISELECT(-360,-196),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C137S7856C7__A1__7S7856C1[] = {
  ABISELECT(-360,-196),
  ABISELECT(-360,-196),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C137S7856C7__7S7856C1[] = {
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C7__7S7856C1[] = {
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C1[] = {
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__7S7856C1[] = {
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C1[] = {
  ABISELECT(-376,-204),
  ABISELECT(-376,-204),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C14__A2__7S7856C1[] = {
  ABISELECT(-376,-204),
  ABISELECT(-376,-204),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C1[] = {
  ABISELECT(-392,-212),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-392,-212),
  ABISELECT(-392,-212),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C13__A3__7S7856C1[] = {
  ABISELECT(-392,-212),
  ABISELECT(-392,-212),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C13__A1__7S7856C1[] = {
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
extern void _ZN8S7856C16D1Ev();
extern void _ZN8S7856C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-408,-220),
  ABISELECT(-408,-220),
  ABISELECT(-64,-36),
  ABISELECT(-408,-220),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&_ZN8S7856C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C16__7S7856C1[] = {
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C16__7S7856C1[] = {
  ABISELECT(-376,-204),
  ABISELECT(-376,-204),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C16__7S7856C1[] = {
  ABISELECT(48,24),
  ABISELECT(-360,-196),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-360,-196),
  ABISELECT(-360,-196),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt__7S7856C1[] = {
  ABISELECT(-408,-220),
  0,
  (VTBL_ENTRY)&(_ZTI11S7856C17_nt[0]),
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C18__A1__7S7856C1[] = {
  ABISELECT(-424,-228),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-424,-228),
  ABISELECT(-424,-228),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C18__A2__7S7856C1[] = {
  ABISELECT(-424,-228),
  ABISELECT(-424,-228),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C18__A5__7S7856C1[] = {
  ABISELECT(-424,-228),
  ABISELECT(-424,-228),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A3__7S7856C1[] = {
  ABISELECT(-440,-236),
  ABISELECT(-96,-52),
  ABISELECT(-440,-236),
  ABISELECT(-440,-236),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C18__A3__7S7856C1[] = {
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(96,52),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C18__A1__7S7856C1[] = {
  ABISELECT(32,16),
  ABISELECT(-392,-212),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-392,-212),
  ABISELECT(-392,-212),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C18__A1__7S7856C1[] = {
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C18__A1__7S7856C1[] = {
  ABISELECT(-440,-236),
  ABISELECT(-96,-52),
  ABISELECT(-440,-236),
  ABISELECT(-440,-236),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern void _ZN8S7856C20D1Ev();
extern void _ZN8S7856C20D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C20__7S7856C1[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-456,-244),
  ABISELECT(-64,-32),
  ABISELECT(-80,-40),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-456,-244),
  ABISELECT(-96,-48),
  ABISELECT(-112,-60),
  ABISELECT(-456,-244),
  ABISELECT(-456,-244),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C20[0]),
  (VTBL_ENTRY)&_ZN8S7856C20D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C20D0Ev,
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt8S7856C20__A1__7S7856C1[] = {
  ABISELECT(-456,-244),
  0,
  (VTBL_ENTRY)&(_ZTI11S7856C17_nt[0]),
};
extern void _ZN7S7856C5D1Ev();
extern void _ZN7S7856C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C58S7856C20__A1__7S7856C1[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-464,-248),
  ABISELECT(-88,-44),
  ABISELECT(-104,-52),
  ABISELECT(-120,-64),
  ABISELECT(-464,-248),
  ABISELECT(-120,-64),
  ABISELECT(-120,-64),
  ABISELECT(-72,-36),
  ABISELECT(-464,-248),
  ABISELECT(-464,-248),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&_ZN7S7856C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C5D0Ev,
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C187S7856C58S7856C20__A2__7S7856C1[] = {
  ABISELECT(-464,-248),
  ABISELECT(-120,-64),
  ABISELECT(-120,-64),
  ABISELECT(-72,-36),
  ABISELECT(-464,-248),
  ABISELECT(-464,-248),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C187S7856C58S7856C20__A3__7S7856C1[] = {
  ABISELECT(-464,-248),
  ABISELECT(-464,-248),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C187S7856C58S7856C20__A6__7S7856C1[] = {
  ABISELECT(-464,-248),
  ABISELECT(-464,-248),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C58S7856C20__A4__7S7856C1[] = {
  ABISELECT(-480,-256),
  ABISELECT(-136,-72),
  ABISELECT(-480,-256),
  ABISELECT(-480,-256),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C187S7856C58S7856C20__A4__7S7856C1[] = {
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(136,72),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C187S7856C58S7856C20__A2__7S7856C1[] = {
  ABISELECT(72,36),
  ABISELECT(-392,-212),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-392,-212),
  ABISELECT(-392,-212),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C187S7856C58S7856C20__A2__7S7856C1[] = {
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(120,64),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C187S7856C58S7856C20__A2__7S7856C1[] = {
  ABISELECT(-480,-256),
  ABISELECT(-136,-72),
  ABISELECT(-480,-256),
  ABISELECT(-480,-256),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C58S7856C20__A1__7S7856C1[] = {
  ABISELECT(120,64),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(120,64),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C58S7856C20__A1__7S7856C1[] = {
  ABISELECT(104,52),
  ABISELECT(-360,-196),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-360,-196),
  ABISELECT(-360,-196),
  ABISELECT(104,52),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C58S7856C20__A1__7S7856C1[] = {
  ABISELECT(-376,-204),
  ABISELECT(-376,-204),
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C58S7856C20__A1__7S7856C1[] = {
  ABISELECT(72,36),
  ABISELECT(-392,-212),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-392,-212),
  ABISELECT(-392,-212),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C58S7856C20__A1__7S7856C1[] = {
  ABISELECT(56,28),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-408,-220),
  ABISELECT(-408,-220),
  ABISELECT(-64,-36),
  ABISELECT(-408,-220),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__7S7856C58S7856C20__A1__7S7856C1[] = {
  ABISELECT(-480,-256),
  ABISELECT(-136,-72),
  ABISELECT(-480,-256),
  ABISELECT(-480,-256),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void _ZN8S7856C21D1Ev();
extern void _ZN8S7856C21D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C218S7856C20__7S7856C1[] = {
  ABISELECT(-496,-264),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C21[0]),
  (VTBL_ENTRY)&_ZN8S7856C21D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C21D0Ev,
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt8S7856C218S7856C20__A2__7S7856C1[] = {
  ABISELECT(-496,-264),
  0,
  (VTBL_ENTRY)&(_ZTI11S7856C17_nt[0]),
};
extern void ABISELECT(_ZThn8_N8S7856C20D1Ev,_ZThn4_N8S7856C20D1Ev)();
extern void ABISELECT(_ZThn8_N8S7856C20D0Ev,_ZThn4_N8S7856C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__8S7856C20__7S7856C1[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-464,-248),
  ABISELECT(-88,-44),
  ABISELECT(-104,-52),
  ABISELECT(-120,-64),
  ABISELECT(-464,-248),
  ABISELECT(-120,-64),
  ABISELECT(-120,-64),
  ABISELECT(-72,-36),
  ABISELECT(-464,-248),
  ABISELECT(-464,-248),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7856C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7856C20D1Ev,_ZThn4_N8S7856C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7856C20D0Ev,_ZThn4_N8S7856C20D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C20D1Ev,_ZTv0_n44_N8S7856C20D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C20D0Ev,_ZTv0_n44_N8S7856C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C20__7S7856C1[] = {
  ABISELECT(112,60),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI8S7856C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C20D1Ev,_ZTv0_n44_N8S7856C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C20D0Ev,_ZTv0_n44_N8S7856C20D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C20D1Ev,_ZTv0_n32_N8S7856C20D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C20D0Ev,_ZTv0_n32_N8S7856C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C20__7S7856C1[] = {
  ABISELECT(96,48),
  ABISELECT(-360,-196),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-360,-196),
  ABISELECT(-360,-196),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI8S7856C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C20D1Ev,_ZTv0_n32_N8S7856C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C20D0Ev,_ZTv0_n32_N8S7856C20D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C20__7S7856C1[] = {
  ABISELECT(-376,-204),
  ABISELECT(-376,-204),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S7856C20[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C20D1Ev,_ZTv0_n32_N8S7856C20D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C20D0Ev,_ZTv0_n32_N8S7856C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__8S7856C20__7S7856C1[] = {
  ABISELECT(64,32),
  ABISELECT(-392,-212),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-392,-212),
  ABISELECT(-392,-212),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S7856C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C20D1Ev,_ZTv0_n32_N8S7856C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C20D0Ev,_ZTv0_n32_N8S7856C20D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C20D1Ev,_ZTv0_n44_N8S7856C20D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C20D0Ev,_ZTv0_n44_N8S7856C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C20__7S7856C1[] = {
  ABISELECT(48,24),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-408,-220),
  ABISELECT(-408,-220),
  ABISELECT(-64,-36),
  ABISELECT(-408,-220),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S7856C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C20D1Ev,_ZTv0_n44_N8S7856C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C20D0Ev,_ZTv0_n44_N8S7856C20D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C20__7S7856C1[] = {
  ABISELECT(-480,-256),
  ABISELECT(-136,-72),
  ABISELECT(-480,-256),
  ABISELECT(-480,-256),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7856C20[0]),
};
extern void ABISELECT(_ZThn40_N8S7856C20D1Ev,_ZThn20_N8S7856C20D1Ev)();
extern void ABISELECT(_ZThn40_N8S7856C20D0Ev,_ZThn20_N8S7856C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C21__8S7856C20__7S7856C1[] = {
  ABISELECT(-496,-264),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S7856C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S7856C20D1Ev,_ZThn20_N8S7856C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S7856C20D0Ev,_ZThn20_N8S7856C20D0Ev),
};
extern void _ZN8S7856C23D1Ev();
extern void _ZN8S7856C23D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C23__7S7856C1[] = {
  ABISELECT(-216,-116),
  ABISELECT(184,96),
  ABISELECT(-504,-268),
  ABISELECT(-504,-268),
  ABISELECT(136,72),
  ABISELECT(-80,-40),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-504,-268),
  ABISELECT(-112,-56),
  ABISELECT(-128,-64),
  ABISELECT(-144,-72),
  ABISELECT(-160,-84),
  ABISELECT(-192,-100),
  ABISELECT(-504,-268),
  ABISELECT(-160,-84),
  ABISELECT(-160,-84),
  ABISELECT(-504,-268),
  ABISELECT(-504,-268),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&_ZN8S7856C23D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C23D0Ev,
};
extern void _ZN8S7856C25D1Ev();
extern void _ZN8S7856C25D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C258S7856C23__7S7856C1[] = {
  ABISELECT(-504,-268),
  ABISELECT(-504,-268),
  ABISELECT(136,72),
  ABISELECT(-80,-40),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-504,-268),
  ABISELECT(-112,-56),
  ABISELECT(-128,-64),
  ABISELECT(-144,-72),
  ABISELECT(-160,-84),
  ABISELECT(-192,-100),
  ABISELECT(-504,-268),
  ABISELECT(-160,-84),
  ABISELECT(-160,-84),
  ABISELECT(-504,-268),
  ABISELECT(-504,-268),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&_ZN8S7856C25D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C25D0Ev,
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C138S7856C258S7856C23__A2__7S7856C1[] = {
  ABISELECT(-504,-268),
  ABISELECT(-160,-84),
  ABISELECT(-160,-84),
  ABISELECT(-504,-268),
  ABISELECT(-504,-268),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C138S7856C258S7856C23__A8__7S7856C1[] = {
  ABISELECT(-504,-268),
  ABISELECT(-504,-268),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C138S7856C258S7856C23__A2__7S7856C1[] = {
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C268S7856C258S7856C23__7S7856C1[] = {
  ABISELECT(-520,-276),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C26[0]),
};
extern void _ZN7S7856C4D1Ev();
extern void _ZN7S7856C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C48S7856C258S7856C23__A1__7S7856C1[] = {
  ABISELECT(-104,-52),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-528,-280),
  ABISELECT(-136,-68),
  ABISELECT(-152,-76),
  ABISELECT(-184,-96),
  ABISELECT(-168,-84),
  ABISELECT(-184,-96),
  ABISELECT(-216,-112),
  ABISELECT(-528,-280),
  ABISELECT(-184,-96),
  ABISELECT(-528,-280),
  ABISELECT(-528,-280),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&_ZN7S7856C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C4D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C107S7856C48S7856C258S7856C23__A7__7S7856C1[] = {
  ABISELECT(-528,-280),
  ABISELECT(-184,-96),
  ABISELECT(-528,-280),
  ABISELECT(-528,-280),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C107S7856C48S7856C258S7856C23__A7__7S7856C1[] = {
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(184,96),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void _ZN8S7856C19D1Ev();
extern void _ZN8S7856C19D0Ev();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C1[] = {
  ABISELECT(-112,-56),
  ABISELECT(-144,-72),
  ABISELECT(-160,-80),
  ABISELECT(-192,-100),
  ABISELECT(-176,-88),
  ABISELECT(-536,-284),
  ABISELECT(-192,-100),
  ABISELECT(-536,-284),
  ABISELECT(-536,-284),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&_ZN8S7856C19D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C19D0Ev,
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void _ZN7S7856C6D1Ev();
extern void _ZN7S7856C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C68S7856C197S7856C48S7856C258S7856C23__A2__7S7856C1[] = {
  ABISELECT(-144,-72),
  ABISELECT(-160,-80),
  ABISELECT(-192,-100),
  ABISELECT(-176,-88),
  ABISELECT(-536,-284),
  ABISELECT(-192,-100),
  ABISELECT(-536,-284),
  ABISELECT(-536,-284),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&_ZN7S7856C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C6D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C68S7856C197S7856C48S7856C258S7856C23__A2__7S7856C1[] = {
  ABISELECT(176,88),
  ABISELECT(-360,-196),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-360,-196),
  ABISELECT(-360,-196),
  ABISELECT(176,88),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C68S7856C197S7856C48S7856C258S7856C23__A2__7S7856C1[] = {
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C68S7856C197S7856C48S7856C258S7856C23__A2__7S7856C1[] = {
  ABISELECT(-376,-204),
  ABISELECT(-376,-204),
  ABISELECT(160,80),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C68S7856C197S7856C48S7856C258S7856C23__A2__7S7856C1[] = {
  ABISELECT(144,72),
  ABISELECT(-392,-212),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-392,-212),
  ABISELECT(-392,-212),
  ABISELECT(144,72),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C1[] = {
  ABISELECT(176,88),
  ABISELECT(-360,-196),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-360,-196),
  ABISELECT(-360,-196),
  ABISELECT(176,88),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C1[] = {
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C1[] = {
  ABISELECT(-376,-204),
  ABISELECT(-376,-204),
  ABISELECT(160,80),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C1[] = {
  ABISELECT(144,72),
  ABISELECT(-392,-212),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-392,-212),
  ABISELECT(-392,-212),
  ABISELECT(144,72),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev),
};
extern void ABISELECT(_ZTv0_n72_N8S7856C19D1Ev,_ZTv0_n36_N8S7856C19D1Ev)();
extern void ABISELECT(_ZTv0_n72_N8S7856C19D0Ev,_ZTv0_n36_N8S7856C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C18__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C1[] = {
  ABISELECT(112,56),
  ABISELECT(-424,-228),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-424,-228),
  ABISELECT(-424,-228),
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C19D1Ev,_ZTv0_n36_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C19D0Ev,_ZTv0_n36_N8S7856C19D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C1[] = {
  ABISELECT(-440,-236),
  ABISELECT(-96,-52),
  ABISELECT(-440,-236),
  ABISELECT(-440,-236),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
extern void ABISELECT(_ZTv0_n120_N7S7856C4D1Ev,_ZTv0_n60_N7S7856C4D1Ev)();
extern void ABISELECT(_ZTv0_n120_N7S7856C4D0Ev,_ZTv0_n60_N7S7856C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__7S7856C48S7856C258S7856C23__A1__7S7856C1[] = {
  ABISELECT(216,112),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-312,-168),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-312,-168),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-312,-168),
  ABISELECT(-312,-168),
  ABISELECT(216,112),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C4D1Ev,_ZTv0_n60_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C4D0Ev,_ZTv0_n60_N7S7856C4D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C48S7856C258S7856C23__A1__7S7856C1[] = {
  ABISELECT(184,96),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(184,96),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C48S7856C258S7856C23__A1__7S7856C1[] = {
  ABISELECT(168,84),
  ABISELECT(-360,-196),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-360,-196),
  ABISELECT(-360,-196),
  ABISELECT(168,84),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C48S7856C258S7856C23__A1__7S7856C1[] = {
  ABISELECT(-376,-204),
  ABISELECT(-376,-204),
  ABISELECT(152,76),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C48S7856C258S7856C23__A1__7S7856C1[] = {
  ABISELECT(136,68),
  ABISELECT(-392,-212),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-392,-212),
  ABISELECT(-392,-212),
  ABISELECT(136,68),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C48S7856C258S7856C23__A1__7S7856C1[] = {
  ABISELECT(120,60),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-408,-220),
  ABISELECT(-408,-220),
  ABISELECT(-64,-36),
  ABISELECT(-408,-220),
  ABISELECT(120,60),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__7S7856C48S7856C258S7856C23__A1__7S7856C1[] = {
  ABISELECT(-328,-176),
  ABISELECT(16,8),
  ABISELECT(-328,-176),
  ABISELECT(-328,-176),
  ABISELECT(200,104),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
extern void ABISELECT(_ZThn8_N7S7856C4D1Ev,_ZThn4_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn8_N7S7856C4D0Ev,_ZThn4_N7S7856C4D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C19__7S7856C48S7856C258S7856C23__A1__7S7856C1[] = {
  ABISELECT(-112,-56),
  ABISELECT(-144,-72),
  ABISELECT(-160,-80),
  ABISELECT(-192,-100),
  ABISELECT(-176,-88),
  ABISELECT(-536,-284),
  ABISELECT(-192,-100),
  ABISELECT(-536,-284),
  ABISELECT(-536,-284),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7856C4D1Ev,_ZThn4_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7856C4D0Ev,_ZThn4_N7S7856C4D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N7S7856C4D1Ev,_ZTv0_n36_N7S7856C4D1Ev)();
extern void ABISELECT(_ZTv0_n72_N7S7856C4D0Ev,_ZTv0_n36_N7S7856C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C18__A1__7S7856C48S7856C258S7856C23__A1__7S7856C1[] = {
  ABISELECT(104,52),
  ABISELECT(-424,-228),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-424,-228),
  ABISELECT(-424,-228),
  ABISELECT(104,52),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7856C4D1Ev,_ZTv0_n36_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7856C4D0Ev,_ZTv0_n36_N7S7856C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A3__7S7856C48S7856C258S7856C23__A1__7S7856C1[] = {
  ABISELECT(-440,-236),
  ABISELECT(-96,-52),
  ABISELECT(-440,-236),
  ABISELECT(-440,-236),
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
extern void _ZN7S7856C5D1Ev();
extern void _ZN7S7856C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C58S7856C258S7856C23__A3__7S7856C1[] = {
  ABISELECT(-144,-76),
  ABISELECT(-144,-76),
  ABISELECT(-552,-296),
  ABISELECT(-176,-92),
  ABISELECT(-192,-100),
  ABISELECT(-208,-112),
  ABISELECT(-552,-296),
  ABISELECT(-208,-112),
  ABISELECT(-208,-112),
  ABISELECT(-160,-84),
  ABISELECT(-552,-296),
  ABISELECT(-552,-296),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&_ZN7S7856C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C5D0Ev,
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C187S7856C58S7856C258S7856C23__A4__7S7856C1[] = {
  ABISELECT(-552,-296),
  ABISELECT(-208,-112),
  ABISELECT(-208,-112),
  ABISELECT(-160,-84),
  ABISELECT(-552,-296),
  ABISELECT(-552,-296),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C187S7856C58S7856C258S7856C23__A5__7S7856C1[] = {
  ABISELECT(-552,-296),
  ABISELECT(-552,-296),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C187S7856C58S7856C258S7856C23__A10__7S7856C1[] = {
  ABISELECT(-552,-296),
  ABISELECT(-552,-296),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C58S7856C258S7856C23__A8__7S7856C1[] = {
  ABISELECT(-568,-304),
  ABISELECT(-224,-120),
  ABISELECT(-568,-304),
  ABISELECT(-568,-304),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C187S7856C58S7856C258S7856C23__A8__7S7856C1[] = {
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(224,120),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C187S7856C58S7856C258S7856C23__A4__7S7856C1[] = {
  ABISELECT(160,84),
  ABISELECT(-392,-212),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-392,-212),
  ABISELECT(-392,-212),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C187S7856C58S7856C258S7856C23__A4__7S7856C1[] = {
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(208,112),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C187S7856C58S7856C258S7856C23__A4__7S7856C1[] = {
  ABISELECT(-568,-304),
  ABISELECT(-224,-120),
  ABISELECT(-568,-304),
  ABISELECT(-568,-304),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C58S7856C258S7856C23__A3__7S7856C1[] = {
  ABISELECT(208,112),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(208,112),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C58S7856C258S7856C23__A3__7S7856C1[] = {
  ABISELECT(192,100),
  ABISELECT(-360,-196),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-360,-196),
  ABISELECT(-360,-196),
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C58S7856C258S7856C23__A3__7S7856C1[] = {
  ABISELECT(-376,-204),
  ABISELECT(-376,-204),
  ABISELECT(176,92),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C58S7856C258S7856C23__A3__7S7856C1[] = {
  ABISELECT(160,84),
  ABISELECT(-392,-212),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-392,-212),
  ABISELECT(-392,-212),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C58S7856C258S7856C23__A3__7S7856C1[] = {
  ABISELECT(144,76),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-408,-220),
  ABISELECT(-408,-220),
  ABISELECT(-64,-36),
  ABISELECT(-408,-220),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__7S7856C58S7856C258S7856C23__A3__7S7856C1[] = {
  ABISELECT(-568,-304),
  ABISELECT(-224,-120),
  ABISELECT(-568,-304),
  ABISELECT(-568,-304),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C25D1Ev,_ZTv0_n44_N8S7856C25D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C25D0Ev,_ZTv0_n44_N8S7856C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C258S7856C23__7S7856C1[] = {
  ABISELECT(160,84),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C25D1Ev,_ZTv0_n44_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C25D0Ev,_ZTv0_n44_N8S7856C25D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C26__8S7856C258S7856C23__7S7856C1[] = {
  ABISELECT(-520,-276),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
};
extern void ABISELECT(_ZThn24_N8S7856C25D1Ev,_ZThn12_N8S7856C25D1Ev)();
extern void ABISELECT(_ZThn24_N8S7856C25D0Ev,_ZThn12_N8S7856C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C4__8S7856C258S7856C23__7S7856C1[] = {
  ABISELECT(-104,-52),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-528,-280),
  ABISELECT(-136,-68),
  ABISELECT(-152,-76),
  ABISELECT(-184,-96),
  ABISELECT(-168,-84),
  ABISELECT(-184,-96),
  ABISELECT(-216,-112),
  ABISELECT(-528,-280),
  ABISELECT(-184,-96),
  ABISELECT(-528,-280),
  ABISELECT(-528,-280),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S7856C25D1Ev,_ZThn12_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S7856C25D0Ev,_ZThn12_N8S7856C25D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S7856C25D1Ev,_ZTv0_n60_N8S7856C25D1Ev)();
extern void ABISELECT(_ZTv0_n120_N8S7856C25D0Ev,_ZTv0_n60_N8S7856C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__8S7856C258S7856C23__7S7856C1[] = {
  ABISELECT(192,100),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-312,-168),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-312,-168),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-312,-168),
  ABISELECT(-312,-168),
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C25D1Ev,_ZTv0_n60_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C25D0Ev,_ZTv0_n60_N8S7856C25D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C25D1Ev,_ZTv0_n32_N8S7856C25D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C25D0Ev,_ZTv0_n32_N8S7856C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C258S7856C23__7S7856C1[] = {
  ABISELECT(144,72),
  ABISELECT(-360,-196),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-360,-196),
  ABISELECT(-360,-196),
  ABISELECT(144,72),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C25D1Ev,_ZTv0_n32_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C25D0Ev,_ZTv0_n32_N8S7856C25D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C258S7856C23__7S7856C1[] = {
  ABISELECT(-376,-204),
  ABISELECT(-376,-204),
  ABISELECT(128,64),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C25D1Ev,_ZTv0_n32_N8S7856C25D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C25D0Ev,_ZTv0_n32_N8S7856C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A2__8S7856C258S7856C23__7S7856C1[] = {
  ABISELECT(112,56),
  ABISELECT(-392,-212),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-392,-212),
  ABISELECT(-392,-212),
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C25D1Ev,_ZTv0_n32_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C25D0Ev,_ZTv0_n32_N8S7856C25D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C25D1Ev,_ZTv0_n44_N8S7856C25D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C25D0Ev,_ZTv0_n44_N8S7856C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C258S7856C23__7S7856C1[] = {
  ABISELECT(96,48),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-408,-220),
  ABISELECT(-408,-220),
  ABISELECT(-64,-36),
  ABISELECT(-408,-220),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C25D1Ev,_ZTv0_n44_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C25D0Ev,_ZTv0_n44_N8S7856C25D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C258S7856C23__7S7856C1[] = {
  ABISELECT(-328,-176),
  ABISELECT(16,8),
  ABISELECT(-328,-176),
  ABISELECT(-328,-176),
  ABISELECT(176,92),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
};
extern void ABISELECT(_ZThn32_N8S7856C25D1Ev,_ZThn16_N8S7856C25D1Ev)();
extern void ABISELECT(_ZThn32_N8S7856C25D0Ev,_ZThn16_N8S7856C25D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C197S7856C4__8S7856C258S7856C23__7S7856C1[] = {
  ABISELECT(-112,-56),
  ABISELECT(-144,-72),
  ABISELECT(-160,-80),
  ABISELECT(-192,-100),
  ABISELECT(-176,-88),
  ABISELECT(-536,-284),
  ABISELECT(-192,-100),
  ABISELECT(-536,-284),
  ABISELECT(-536,-284),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S7856C25D1Ev,_ZThn16_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S7856C25D0Ev,_ZThn16_N8S7856C25D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N8S7856C25D1Ev,_ZTv0_n36_N8S7856C25D1Ev)();
extern void ABISELECT(_ZTv0_n72_N8S7856C25D0Ev,_ZTv0_n36_N8S7856C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C18__A1__8S7856C258S7856C23__7S7856C1[] = {
  ABISELECT(80,40),
  ABISELECT(-424,-228),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-424,-228),
  ABISELECT(-424,-228),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C25D1Ev,_ZTv0_n36_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C25D0Ev,_ZTv0_n36_N8S7856C25D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A3__8S7856C258S7856C23__7S7856C1[] = {
  ABISELECT(-440,-236),
  ABISELECT(-96,-52),
  ABISELECT(-440,-236),
  ABISELECT(-440,-236),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
};
extern void ABISELECT(_ZTv0_n144_N8S7856C25D1Ev,_ZTv0_n72_N8S7856C25D1Ev)();
extern void ABISELECT(_ZThn136_N8S7856C25D1Ev,_ZThn72_N8S7856C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N8S7856C25D0Ev,_ZTv0_n72_N8S7856C25D0Ev)();
extern void ABISELECT(_ZThn136_N8S7856C25D0Ev,_ZThn72_N8S7856C25D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C27__8S7856C258S7856C23__7S7856C1[] = {
  ABISELECT(-136,-72),
  ABISELECT(-640,-340),
  ABISELECT(-232,-120),
  ABISELECT(-640,-340),
  ABISELECT(-248,-128),
  ABISELECT(-296,-156),
  ABISELECT(-328,-172),
  ABISELECT(-640,-340),
  ABISELECT(-296,-156),
  ABISELECT(-280,-144),
  ABISELECT(-264,-136),
  ABISELECT(-232,-120),
  ABISELECT(-640,-340),
  ABISELECT(-640,-340),
  ABISELECT(-296,-156),
  ABISELECT(-640,-340),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S7856C25D1Ev,_ZTv0_n72_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S7856C25D0Ev,_ZTv0_n72_N8S7856C25D0Ev),
};
extern void ABISELECT(_ZTvn16_n144_N8S7856C25D1Ev,_ZTvn8_n72_N8S7856C25D1Ev)();
extern void ABISELECT(_ZTvn16_n144_N8S7856C25D0Ev,_ZTvn8_n72_N8S7856C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C288S7856C27__8S7856C258S7856C23__7S7856C1[] = {
  ABISELECT(-248,-128),
  ABISELECT(-248,-128),
  ABISELECT(-656,-348),
  ABISELECT(-264,-136),
  ABISELECT(-312,-164),
  ABISELECT(-344,-180),
  ABISELECT(-296,-152),
  ABISELECT(-656,-348),
  ABISELECT(-280,-144),
  ABISELECT(-656,-348),
  ABISELECT(-312,-164),
  ABISELECT(-312,-164),
  ABISELECT(-656,-348),
  ABISELECT(-656,-348),
  ABISELECT(-152,-80),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n144_N8S7856C25D1Ev,_ZTvn8_n72_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n144_N8S7856C25D0Ev,_ZTvn8_n72_N8S7856C25D0Ev),
};
extern void ABISELECT(_ZTv0_n128_N8S7856C25D1Ev,_ZTv0_n64_N8S7856C25D1Ev)();
extern void ABISELECT(_ZTv0_n128_N8S7856C25D0Ev,_ZTv0_n64_N8S7856C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C29__8S7856C258S7856C23__7S7856C1[] = {
  ABISELECT(504,268),
  ABISELECT(408,220),
  ABISELECT(408,220),
  0,
  ABISELECT(392,212),
  ABISELECT(376,204),
  ABISELECT(344,184),
  ABISELECT(312,168),
  ABISELECT(344,184),
  ABISELECT(360,196),
  0,
  ABISELECT(344,184),
  0,
  0,
  ABISELECT(504,268),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C25D1Ev,_ZTv0_n64_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C25D0Ev,_ZTv0_n64_N8S7856C25D0Ev),
};
extern void ABISELECT(_ZTvn32_n144_N8S7856C25D1Ev,_ZTvn16_n72_N8S7856C25D1Ev)();
extern void ABISELECT(_ZTvn32_n144_N8S7856C25D0Ev,_ZTvn16_n72_N8S7856C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C218S7856C288S7856C27__8S7856C258S7856C23__7S7856C1[] = {
  ABISELECT(-672,-356),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n144_N8S7856C25D1Ev,_ZTvn16_n72_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n144_N8S7856C25D0Ev,_ZTvn16_n72_N8S7856C25D0Ev),
};
extern void ABISELECT(_ZThn48_N8S7856C25D1Ev,_ZThn28_N8S7856C25D1Ev)();
extern void ABISELECT(_ZThn48_N8S7856C25D0Ev,_ZThn28_N8S7856C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__A__8S7856C258S7856C23__7S7856C1[] = {
  ABISELECT(-144,-76),
  ABISELECT(-144,-76),
  ABISELECT(-552,-296),
  ABISELECT(-176,-92),
  ABISELECT(-192,-100),
  ABISELECT(-208,-112),
  ABISELECT(-552,-296),
  ABISELECT(-208,-112),
  ABISELECT(-208,-112),
  ABISELECT(-160,-84),
  ABISELECT(-552,-296),
  ABISELECT(-552,-296),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7856C25D1Ev,_ZThn28_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7856C25D0Ev,_ZThn28_N8S7856C25D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A4__8S7856C258S7856C23__7S7856C1[] = {
  ABISELECT(-568,-304),
  ABISELECT(-224,-120),
  ABISELECT(-568,-304),
  ABISELECT(-568,-304),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C138S7856C23__A4__7S7856C1[] = {
  ABISELECT(-584,-312),
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  ABISELECT(-584,-312),
  ABISELECT(-584,-312),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C138S7856C23__A11__7S7856C1[] = {
  ABISELECT(-584,-312),
  ABISELECT(-584,-312),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C138S7856C23__A4__7S7856C1[] = {
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(240,128),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C23__7S7856C1[] = {
  ABISELECT(-376,-204),
  ABISELECT(-376,-204),
  ABISELECT(128,64),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C23D1Ev,_ZTv0_n44_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C23D0Ev,_ZTv0_n44_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C23__7S7856C1[] = {
  ABISELECT(160,84),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C23D1Ev,_ZTv0_n44_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C23D0Ev,_ZTv0_n44_N8S7856C23D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C268S7856C25__8S7856C23__7S7856C1[] = {
  ABISELECT(-520,-276),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
};
extern void ABISELECT(_ZThn24_N8S7856C23D1Ev,_ZThn12_N8S7856C23D1Ev)();
extern void ABISELECT(_ZThn24_N8S7856C23D0Ev,_ZThn12_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C48S7856C25__8S7856C23__7S7856C1[] = {
  ABISELECT(-104,-52),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-528,-280),
  ABISELECT(-136,-68),
  ABISELECT(-152,-76),
  ABISELECT(-184,-96),
  ABISELECT(-168,-84),
  ABISELECT(-184,-96),
  ABISELECT(-216,-112),
  ABISELECT(-528,-280),
  ABISELECT(-184,-96),
  ABISELECT(-528,-280),
  ABISELECT(-528,-280),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S7856C23D1Ev,_ZThn12_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S7856C23D0Ev,_ZThn12_N8S7856C23D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S7856C23D1Ev,_ZTv0_n60_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTv0_n120_N8S7856C23D0Ev,_ZTv0_n60_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__8S7856C23__7S7856C1[] = {
  ABISELECT(192,100),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-312,-168),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-312,-168),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-312,-168),
  ABISELECT(-312,-168),
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C23D1Ev,_ZTv0_n60_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C23D0Ev,_ZTv0_n60_N8S7856C23D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C23D1Ev,_ZTv0_n32_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C23D0Ev,_ZTv0_n32_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C23__7S7856C1[] = {
  ABISELECT(144,72),
  ABISELECT(-360,-196),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-360,-196),
  ABISELECT(-360,-196),
  ABISELECT(144,72),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C23D1Ev,_ZTv0_n32_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C23D0Ev,_ZTv0_n32_N8S7856C23D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C23D1Ev,_ZTv0_n32_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C23D0Ev,_ZTv0_n32_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A2__8S7856C23__7S7856C1[] = {
  ABISELECT(112,56),
  ABISELECT(-392,-212),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-392,-212),
  ABISELECT(-392,-212),
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C23D1Ev,_ZTv0_n32_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C23D0Ev,_ZTv0_n32_N8S7856C23D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C23D1Ev,_ZTv0_n44_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C23D0Ev,_ZTv0_n44_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C23__7S7856C1[] = {
  ABISELECT(96,48),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-408,-220),
  ABISELECT(-408,-220),
  ABISELECT(-64,-36),
  ABISELECT(-408,-220),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C23D1Ev,_ZTv0_n44_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C23D0Ev,_ZTv0_n44_N8S7856C23D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C23__7S7856C1[] = {
  ABISELECT(-328,-176),
  ABISELECT(16,8),
  ABISELECT(-328,-176),
  ABISELECT(-328,-176),
  ABISELECT(176,92),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
};
extern void ABISELECT(_ZThn32_N8S7856C23D1Ev,_ZThn16_N8S7856C23D1Ev)();
extern void ABISELECT(_ZThn32_N8S7856C23D0Ev,_ZThn16_N8S7856C23D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C197S7856C48S7856C25__8S7856C23__7S7856C1[] = {
  ABISELECT(-112,-56),
  ABISELECT(-144,-72),
  ABISELECT(-160,-80),
  ABISELECT(-192,-100),
  ABISELECT(-176,-88),
  ABISELECT(-536,-284),
  ABISELECT(-192,-100),
  ABISELECT(-536,-284),
  ABISELECT(-536,-284),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S7856C23D1Ev,_ZThn16_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S7856C23D0Ev,_ZThn16_N8S7856C23D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N8S7856C23D1Ev,_ZTv0_n36_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTv0_n72_N8S7856C23D0Ev,_ZTv0_n36_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C18__A1__8S7856C23__7S7856C1[] = {
  ABISELECT(80,40),
  ABISELECT(-424,-228),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-424,-228),
  ABISELECT(-424,-228),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C23D1Ev,_ZTv0_n36_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C23D0Ev,_ZTv0_n36_N8S7856C23D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A3__8S7856C23__7S7856C1[] = {
  ABISELECT(-440,-236),
  ABISELECT(-96,-52),
  ABISELECT(-440,-236),
  ABISELECT(-440,-236),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
};
extern void ABISELECT(_ZTv0_n144_N8S7856C23D1Ev,_ZTv0_n72_N8S7856C23D1Ev)();
extern void ABISELECT(_ZThn136_N8S7856C23D1Ev,_ZThn72_N8S7856C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N8S7856C23D0Ev,_ZTv0_n72_N8S7856C23D0Ev)();
extern void ABISELECT(_ZThn136_N8S7856C23D0Ev,_ZThn72_N8S7856C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C27__8S7856C23__7S7856C1[] = {
  ABISELECT(-136,-72),
  ABISELECT(-640,-340),
  ABISELECT(-232,-120),
  ABISELECT(-640,-340),
  ABISELECT(-248,-128),
  ABISELECT(-296,-156),
  ABISELECT(-328,-172),
  ABISELECT(-640,-340),
  ABISELECT(-296,-156),
  ABISELECT(-280,-144),
  ABISELECT(-264,-136),
  ABISELECT(-232,-120),
  ABISELECT(-640,-340),
  ABISELECT(-640,-340),
  ABISELECT(-296,-156),
  ABISELECT(-640,-340),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S7856C23D1Ev,_ZTv0_n72_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S7856C23D0Ev,_ZTv0_n72_N8S7856C23D0Ev),
};
extern void ABISELECT(_ZTvn16_n144_N8S7856C23D1Ev,_ZTvn8_n72_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTvn16_n144_N8S7856C23D0Ev,_ZTvn8_n72_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C288S7856C27__8S7856C23__7S7856C1[] = {
  ABISELECT(-248,-128),
  ABISELECT(-248,-128),
  ABISELECT(-656,-348),
  ABISELECT(-264,-136),
  ABISELECT(-312,-164),
  ABISELECT(-344,-180),
  ABISELECT(-296,-152),
  ABISELECT(-656,-348),
  ABISELECT(-280,-144),
  ABISELECT(-656,-348),
  ABISELECT(-312,-164),
  ABISELECT(-312,-164),
  ABISELECT(-656,-348),
  ABISELECT(-656,-348),
  ABISELECT(-152,-80),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n144_N8S7856C23D1Ev,_ZTvn8_n72_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n144_N8S7856C23D0Ev,_ZTvn8_n72_N8S7856C23D0Ev),
};
extern void ABISELECT(_ZTv0_n128_N8S7856C23D1Ev,_ZTv0_n64_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTv0_n128_N8S7856C23D0Ev,_ZTv0_n64_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C29__8S7856C23__7S7856C1[] = {
  ABISELECT(504,268),
  ABISELECT(408,220),
  ABISELECT(408,220),
  0,
  ABISELECT(392,212),
  ABISELECT(376,204),
  ABISELECT(344,184),
  ABISELECT(312,168),
  ABISELECT(344,184),
  ABISELECT(360,196),
  0,
  ABISELECT(344,184),
  0,
  0,
  ABISELECT(504,268),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C23D1Ev,_ZTv0_n64_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C23D0Ev,_ZTv0_n64_N8S7856C23D0Ev),
};
extern void ABISELECT(_ZTvn32_n144_N8S7856C23D1Ev,_ZTvn16_n72_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTvn32_n144_N8S7856C23D0Ev,_ZTvn16_n72_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C218S7856C288S7856C27__8S7856C23__7S7856C1[] = {
  ABISELECT(-672,-356),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n144_N8S7856C23D1Ev,_ZTvn16_n72_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n144_N8S7856C23D0Ev,_ZTvn16_n72_N8S7856C23D0Ev),
};
extern void ABISELECT(_ZThn48_N8S7856C23D1Ev,_ZThn28_N8S7856C23D1Ev)();
extern void ABISELECT(_ZThn48_N8S7856C23D0Ev,_ZThn28_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C58S7856C25__A1__8S7856C23__7S7856C1[] = {
  ABISELECT(-144,-76),
  ABISELECT(-144,-76),
  ABISELECT(-552,-296),
  ABISELECT(-176,-92),
  ABISELECT(-192,-100),
  ABISELECT(-208,-112),
  ABISELECT(-552,-296),
  ABISELECT(-208,-112),
  ABISELECT(-208,-112),
  ABISELECT(-160,-84),
  ABISELECT(-552,-296),
  ABISELECT(-552,-296),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7856C23D1Ev,_ZThn28_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7856C23D0Ev,_ZThn28_N8S7856C23D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C58S7856C25__A4__8S7856C23__7S7856C1[] = {
  ABISELECT(-568,-304),
  ABISELECT(-224,-120),
  ABISELECT(-568,-304),
  ABISELECT(-568,-304),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
};
extern void ABISELECT(_ZThn80_N8S7856C23D1Ev,_ZThn44_N8S7856C23D1Ev)();
extern void ABISELECT(_ZThn80_N8S7856C23D0Ev,_ZThn44_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A__8S7856C23__7S7856C1[] = {
  ABISELECT(-584,-312),
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  ABISELECT(-584,-312),
  ABISELECT(-584,-312),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S7856C23D1Ev,_ZThn44_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S7856C23D0Ev,_ZThn44_N8S7856C23D0Ev),
};
extern void ABISELECT(_ZTv0_n144_N8S7856C23D1Ev,_ZTv0_n72_N8S7856C23D1Ev)();
extern void ABISELECT(_ZThn184_N8S7856C23D1Ev,_ZThn96_N8S7856C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N8S7856C23D0Ev,_ZTv0_n72_N8S7856C23D0Ev)();
extern void ABISELECT(_ZThn184_N8S7856C23D0Ev,_ZThn96_N8S7856C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C22__8S7856C23__7S7856C1[] = {
  ABISELECT(-184,-96),
  ABISELECT(-264,-136),
  ABISELECT(-376,-196),
  ABISELECT(-400,-212),
  ABISELECT(-280,-144),
  ABISELECT(-280,-144),
  ABISELECT(-688,-364),
  ABISELECT(-296,-152),
  ABISELECT(-312,-160),
  ABISELECT(-344,-180),
  ABISELECT(-328,-168),
  ABISELECT(-344,-180),
  ABISELECT(-688,-364),
  ABISELECT(-344,-180),
  ABISELECT(-688,-364),
  ABISELECT(-688,-364),
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S7856C23D1Ev,_ZTv0_n72_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S7856C23D0Ev,_ZTv0_n72_N8S7856C23D0Ev),
};
extern void ABISELECT(_ZTvn8_n144_N8S7856C23D1Ev,_ZTvn4_n72_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTvn8_n144_N8S7856C23D0Ev,_ZTvn4_n72_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C58S7856C22__A2__8S7856C23__7S7856C1[] = {
  ABISELECT(-288,-148),
  ABISELECT(-288,-148),
  ABISELECT(-696,-368),
  ABISELECT(-320,-164),
  ABISELECT(-336,-172),
  ABISELECT(-352,-184),
  ABISELECT(-696,-368),
  ABISELECT(-352,-184),
  ABISELECT(-352,-184),
  ABISELECT(-304,-156),
  ABISELECT(-696,-368),
  ABISELECT(-696,-368),
  ABISELECT(-192,-100),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n144_N8S7856C23D1Ev,_ZTvn4_n72_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n144_N8S7856C23D0Ev,_ZTvn4_n72_N8S7856C23D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C58S7856C22__A6__8S7856C23__7S7856C1[] = {
  ABISELECT(-712,-376),
  ABISELECT(-368,-192),
  ABISELECT(-712,-376),
  ABISELECT(-712,-376),
  ABISELECT(-208,-108),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
};
extern void ABISELECT(_ZTv0_n136_N8S7856C23D1Ev,_ZTv0_n68_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTv0_n136_N8S7856C23D0Ev,_ZTv0_n68_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C4__A1__8S7856C23__7S7856C1[] = {
  ABISELECT(8,4),
  ABISELECT(216,116),
  ABISELECT(136,76),
  ABISELECT(120,68),
  ABISELECT(120,68),
  ABISELECT(-288,-152),
  ABISELECT(104,60),
  ABISELECT(88,52),
  ABISELECT(56,32),
  ABISELECT(72,44),
  ABISELECT(56,32),
  ABISELECT(24,16),
  ABISELECT(-288,-152),
  ABISELECT(56,32),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(216,116),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S7856C23D1Ev,_ZTv0_n68_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S7856C23D0Ev,_ZTv0_n68_N8S7856C23D0Ev),
};
extern void ABISELECT(_ZTvn8_n136_N8S7856C23D1Ev,_ZTvn4_n68_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTvn8_n136_N8S7856C23D0Ev,_ZTvn4_n68_N8S7856C23D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C197S7856C4__A1__8S7856C23__7S7856C1[] = {
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(48,28),
  ABISELECT(64,40),
  ABISELECT(-296,-156),
  ABISELECT(48,28),
  ABISELECT(-296,-156),
  ABISELECT(-296,-156),
  ABISELECT(208,112),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N8S7856C23D1Ev,_ZTvn4_n68_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N8S7856C23D0Ev,_ZTvn4_n68_N8S7856C23D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void _ZN8S7856C27D1Ev();
extern void _ZN8S7856C27D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C27__7S7856C1[] = {
  ABISELECT(-640,-340),
  ABISELECT(-232,-120),
  ABISELECT(-640,-340),
  ABISELECT(-248,-128),
  ABISELECT(-296,-156),
  ABISELECT(-328,-172),
  ABISELECT(-640,-340),
  ABISELECT(-296,-156),
  ABISELECT(-280,-144),
  ABISELECT(-264,-136),
  ABISELECT(-232,-120),
  ABISELECT(-640,-340),
  ABISELECT(-640,-340),
  ABISELECT(-296,-156),
  ABISELECT(-640,-340),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&_ZN8S7856C27D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C27D0Ev,
};
extern void _ZN8S7856C16D1Ev();
extern void _ZN8S7856C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C168S7856C27__A1__7S7856C1[] = {
  ABISELECT(-296,-156),
  ABISELECT(-280,-144),
  ABISELECT(-264,-136),
  ABISELECT(-232,-120),
  ABISELECT(-640,-340),
  ABISELECT(-640,-340),
  ABISELECT(-296,-156),
  ABISELECT(-640,-340),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&_ZN8S7856C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C168S7856C27__A1__7S7856C1[] = {
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(296,156),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt__8S7856C168S7856C27__A1__7S7856C1[] = {
  ABISELECT(-408,-220),
  ABISELECT(232,120),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C168S7856C27__A1__7S7856C1[] = {
  ABISELECT(-376,-204),
  ABISELECT(-376,-204),
  ABISELECT(264,136),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C168S7856C27__A1__7S7856C1[] = {
  ABISELECT(280,144),
  ABISELECT(-360,-196),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-360,-196),
  ABISELECT(-360,-196),
  ABISELECT(280,144),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev),
};
extern void _ZN8S7856C28D1Ev();
extern void _ZN8S7856C28D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C288S7856C27__7S7856C1[] = {
  ABISELECT(-248,-128),
  ABISELECT(-248,-128),
  ABISELECT(-656,-348),
  ABISELECT(-264,-136),
  ABISELECT(-312,-164),
  ABISELECT(-344,-180),
  ABISELECT(-296,-152),
  ABISELECT(-656,-348),
  ABISELECT(-280,-144),
  ABISELECT(-656,-348),
  ABISELECT(-312,-164),
  ABISELECT(-312,-164),
  ABISELECT(-656,-348),
  ABISELECT(-656,-348),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&_ZN8S7856C28D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C28D0Ev,
};
extern void _ZN7S7856C7D1Ev();
extern void _ZN7S7856C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C78S7856C288S7856C27__A1__7S7856C1[] = {
  ABISELECT(-656,-348),
  ABISELECT(-312,-164),
  ABISELECT(-312,-164),
  ABISELECT(-656,-348),
  ABISELECT(-656,-348),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
  (VTBL_ENTRY)&_ZN7S7856C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C7D0Ev,
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C137S7856C78S7856C288S7856C27__A3__7S7856C1[] = {
  ABISELECT(-656,-348),
  ABISELECT(-312,-164),
  ABISELECT(-312,-164),
  ABISELECT(-656,-348),
  ABISELECT(-656,-348),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C137S7856C78S7856C288S7856C27__A9__7S7856C1[] = {
  ABISELECT(-656,-348),
  ABISELECT(-656,-348),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C137S7856C78S7856C288S7856C27__A3__7S7856C1[] = {
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(312,164),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C78S7856C288S7856C27__A1__7S7856C1[] = {
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(312,164),
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
};
extern void _ZN8S7856C21D1Ev();
extern void _ZN8S7856C21D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C218S7856C288S7856C27__A1__7S7856C1[] = {
  ABISELECT(-672,-356),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C21[0]),
  (VTBL_ENTRY)&_ZN8S7856C21D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C21D0Ev,
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt8S7856C218S7856C288S7856C27__A3__7S7856C1[] = {
  ABISELECT(-672,-356),
  0,
  (VTBL_ENTRY)&(_ZTI11S7856C17_nt[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C28D1Ev,_ZTv0_n44_N8S7856C28D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C28D0Ev,_ZTv0_n44_N8S7856C28D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C288S7856C27__7S7856C1[] = {
  ABISELECT(312,164),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(312,164),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C28D1Ev,_ZTv0_n44_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C28D0Ev,_ZTv0_n44_N8S7856C28D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C288S7856C27__7S7856C1[] = {
  ABISELECT(-376,-204),
  ABISELECT(-376,-204),
  ABISELECT(280,144),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
};
extern void ABISELECT(_ZTv0_n128_N8S7856C28D1Ev,_ZTv0_n64_N8S7856C28D1Ev)();
extern void ABISELECT(_ZTv0_n128_N8S7856C28D0Ev,_ZTv0_n64_N8S7856C28D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C29__8S7856C288S7856C27__7S7856C1[] = {
  ABISELECT(656,348),
  ABISELECT(408,220),
  ABISELECT(408,220),
  0,
  ABISELECT(392,212),
  ABISELECT(376,204),
  ABISELECT(344,184),
  ABISELECT(312,168),
  ABISELECT(344,184),
  ABISELECT(360,196),
  0,
  ABISELECT(344,184),
  0,
  0,
  ABISELECT(656,348),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C28D1Ev,_ZTv0_n64_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C28D0Ev,_ZTv0_n64_N8S7856C28D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C28D1Ev,_ZTv0_n32_N8S7856C28D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C28D0Ev,_ZTv0_n32_N8S7856C28D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__A1__8S7856C288S7856C27__7S7856C1[] = {
  ABISELECT(296,152),
  ABISELECT(-360,-196),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-360,-196),
  ABISELECT(-360,-196),
  ABISELECT(296,152),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C28D1Ev,_ZTv0_n32_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C28D0Ev,_ZTv0_n32_N8S7856C28D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S7856C28D1Ev,_ZTv0_n60_N8S7856C28D1Ev)();
extern void ABISELECT(_ZTv0_n120_N8S7856C28D0Ev,_ZTv0_n60_N8S7856C28D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__8S7856C288S7856C27__7S7856C1[] = {
  ABISELECT(344,180),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-312,-168),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-312,-168),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-312,-168),
  ABISELECT(-312,-168),
  ABISELECT(344,180),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C28D1Ev,_ZTv0_n60_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C28D0Ev,_ZTv0_n60_N8S7856C28D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C28D1Ev,_ZTv0_n32_N8S7856C28D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C28D0Ev,_ZTv0_n32_N8S7856C28D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A2__8S7856C288S7856C27__7S7856C1[] = {
  ABISELECT(264,136),
  ABISELECT(-392,-212),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-392,-212),
  ABISELECT(-392,-212),
  ABISELECT(264,136),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C28D1Ev,_ZTv0_n32_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C28D0Ev,_ZTv0_n32_N8S7856C28D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C28D1Ev,_ZTv0_n44_N8S7856C28D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C28D0Ev,_ZTv0_n44_N8S7856C28D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C288S7856C27__7S7856C1[] = {
  ABISELECT(248,128),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-408,-220),
  ABISELECT(-408,-220),
  ABISELECT(-64,-36),
  ABISELECT(-408,-220),
  ABISELECT(248,128),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C28D1Ev,_ZTv0_n44_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C28D0Ev,_ZTv0_n44_N8S7856C28D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C288S7856C27__7S7856C1[] = {
  ABISELECT(-328,-176),
  ABISELECT(16,8),
  ABISELECT(-328,-176),
  ABISELECT(-328,-176),
  ABISELECT(328,172),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
};
extern void ABISELECT(_ZThn16_N8S7856C28D1Ev,_ZThn8_N8S7856C28D1Ev)();
extern void ABISELECT(_ZThn16_N8S7856C28D0Ev,_ZThn8_N8S7856C28D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C21__8S7856C288S7856C27__7S7856C1[] = {
  ABISELECT(-672,-356),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S7856C28D1Ev,_ZThn8_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S7856C28D0Ev,_ZThn8_N8S7856C28D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C27D1Ev,_ZTv0_n44_N8S7856C27D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C27D0Ev,_ZTv0_n44_N8S7856C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C27__7S7856C1[] = {
  ABISELECT(296,156),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(296,156),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C27D1Ev,_ZTv0_n44_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C27D0Ev,_ZTv0_n44_N8S7856C27D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C27D1Ev,_ZTv0_n44_N8S7856C27D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C27D0Ev,_ZTv0_n44_N8S7856C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__A1__8S7856C27__7S7856C1[] = {
  ABISELECT(232,120),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-408,-220),
  ABISELECT(-408,-220),
  ABISELECT(-64,-36),
  ABISELECT(-408,-220),
  ABISELECT(232,120),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C27D1Ev,_ZTv0_n44_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C27D0Ev,_ZTv0_n44_N8S7856C27D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C27__7S7856C1[] = {
  ABISELECT(-376,-204),
  ABISELECT(-376,-204),
  ABISELECT(264,136),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C27D1Ev,_ZTv0_n32_N8S7856C27D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C27D0Ev,_ZTv0_n32_N8S7856C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C27__7S7856C1[] = {
  ABISELECT(280,144),
  ABISELECT(-360,-196),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-360,-196),
  ABISELECT(-360,-196),
  ABISELECT(280,144),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C27D1Ev,_ZTv0_n32_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C27D0Ev,_ZTv0_n32_N8S7856C27D0Ev),
};
extern void ABISELECT(_ZThn16_N8S7856C27D1Ev,_ZThn8_N8S7856C27D1Ev)();
extern void ABISELECT(_ZThn16_N8S7856C27D0Ev,_ZThn8_N8S7856C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C28__8S7856C27__7S7856C1[] = {
  ABISELECT(-248,-128),
  ABISELECT(-248,-128),
  ABISELECT(-656,-348),
  ABISELECT(-264,-136),
  ABISELECT(-312,-164),
  ABISELECT(-344,-180),
  ABISELECT(-296,-152),
  ABISELECT(-656,-348),
  ABISELECT(-280,-144),
  ABISELECT(-656,-348),
  ABISELECT(-312,-164),
  ABISELECT(-312,-164),
  ABISELECT(-656,-348),
  ABISELECT(-656,-348),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S7856C27D1Ev,_ZThn8_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S7856C27D0Ev,_ZThn8_N8S7856C27D0Ev),
};
extern void ABISELECT(_ZTv0_n128_N8S7856C27D1Ev,_ZTv0_n64_N8S7856C27D1Ev)();
extern void ABISELECT(_ZTv0_n128_N8S7856C27D0Ev,_ZTv0_n64_N8S7856C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C29__8S7856C27__7S7856C1[] = {
  ABISELECT(640,340),
  ABISELECT(408,220),
  ABISELECT(408,220),
  0,
  ABISELECT(392,212),
  ABISELECT(376,204),
  ABISELECT(344,184),
  ABISELECT(312,168),
  ABISELECT(344,184),
  ABISELECT(360,196),
  0,
  ABISELECT(344,184),
  0,
  0,
  ABISELECT(640,340),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C27D1Ev,_ZTv0_n64_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C27D0Ev,_ZTv0_n64_N8S7856C27D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S7856C27D1Ev,_ZTv0_n60_N8S7856C27D1Ev)();
extern void ABISELECT(_ZTv0_n120_N8S7856C27D0Ev,_ZTv0_n60_N8S7856C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__8S7856C27__7S7856C1[] = {
  ABISELECT(328,172),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-312,-168),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-312,-168),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-312,-168),
  ABISELECT(-312,-168),
  ABISELECT(328,172),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C27D1Ev,_ZTv0_n60_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C27D0Ev,_ZTv0_n60_N8S7856C27D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C27D1Ev,_ZTv0_n32_N8S7856C27D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C27D0Ev,_ZTv0_n32_N8S7856C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A2__8S7856C27__7S7856C1[] = {
  ABISELECT(248,128),
  ABISELECT(-392,-212),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-392,-212),
  ABISELECT(-392,-212),
  ABISELECT(248,128),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C27D1Ev,_ZTv0_n32_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C27D0Ev,_ZTv0_n32_N8S7856C27D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C27__7S7856C1[] = {
  ABISELECT(-328,-176),
  ABISELECT(16,8),
  ABISELECT(-328,-176),
  ABISELECT(-328,-176),
  ABISELECT(312,164),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
};
extern void ABISELECT(_ZThn32_N8S7856C27D1Ev,_ZThn16_N8S7856C27D1Ev)();
extern void ABISELECT(_ZThn32_N8S7856C27D0Ev,_ZThn16_N8S7856C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C218S7856C28__8S7856C27__7S7856C1[] = {
  ABISELECT(-672,-356),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S7856C27D1Ev,_ZThn16_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S7856C27D0Ev,_ZThn16_N8S7856C27D0Ev),
};
extern void _ZN8S7856C29D1Ev();
extern void _ZN8S7856C29D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C29__7S7856C1[] = {
  ABISELECT(408,220),
  ABISELECT(408,220),
  0,
  ABISELECT(392,212),
  ABISELECT(376,204),
  ABISELECT(344,184),
  ABISELECT(312,168),
  ABISELECT(344,184),
  ABISELECT(360,196),
  0,
  ABISELECT(344,184),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&_ZN8S7856C29D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C29D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N8S7856C29D1Ev,_ZTv0_n32_N8S7856C29D1Ev)();
extern void ABISELECT(_ZThn360_N8S7856C29D1Ev,_ZThn196_N8S7856C29D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C29D0Ev,_ZTv0_n32_N8S7856C29D0Ev)();
extern void ABISELECT(_ZThn360_N8S7856C29D0Ev,_ZThn196_N8S7856C29D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C29__7S7856C1[] = {
  ABISELECT(-360,-196),
  ABISELECT(-360,-196),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-360,-196),
  ABISELECT(-360,-196),
  ABISELECT(-360,-196),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C29D1Ev,_ZTv0_n32_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C29D0Ev,_ZTv0_n32_N8S7856C29D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C29D1Ev,_ZTv0_n44_N8S7856C29D1Ev)();
extern void ABISELECT(_ZThn344_N8S7856C29D1Ev,_ZThn184_N8S7856C29D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C29D0Ev,_ZTv0_n44_N8S7856C29D0Ev)();
extern void ABISELECT(_ZThn344_N8S7856C29D0Ev,_ZThn184_N8S7856C29D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C29__7S7856C1[] = {
  ABISELECT(-344,-184),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C29D1Ev,_ZTv0_n44_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C29D0Ev,_ZTv0_n44_N8S7856C29D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S7856C29D1Ev,_ZTv0_n60_N8S7856C29D1Ev)();
extern void ABISELECT(_ZThn312_N8S7856C29D1Ev,_ZThn168_N8S7856C29D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S7856C29D0Ev,_ZTv0_n60_N8S7856C29D0Ev)();
extern void ABISELECT(_ZThn312_N8S7856C29D0Ev,_ZThn168_N8S7856C29D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C5__8S7856C29__7S7856C1[] = {
  ABISELECT(-312,-168),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-312,-168),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-312,-168),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-312,-168),
  ABISELECT(-312,-168),
  ABISELECT(-312,-168),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C29D1Ev,_ZTv0_n60_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C29D0Ev,_ZTv0_n60_N8S7856C29D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C29__7S7856C1[] = {
  ABISELECT(-376,-204),
  ABISELECT(-376,-204),
  ABISELECT(-376,-204),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C29D1Ev,_ZTv0_n32_N8S7856C29D1Ev)();
extern void ABISELECT(_ZThn392_N8S7856C29D1Ev,_ZThn212_N8S7856C29D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C29D0Ev,_ZTv0_n32_N8S7856C29D0Ev)();
extern void ABISELECT(_ZThn392_N8S7856C29D0Ev,_ZThn212_N8S7856C29D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__8S7856C29__7S7856C1[] = {
  ABISELECT(-392,-212),
  ABISELECT(-392,-212),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-392,-212),
  ABISELECT(-392,-212),
  ABISELECT(-392,-212),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C29D1Ev,_ZTv0_n32_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C29D0Ev,_ZTv0_n32_N8S7856C29D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C29D1Ev,_ZTv0_n44_N8S7856C29D1Ev)();
extern void ABISELECT(_ZThn408_N8S7856C29D1Ev,_ZThn220_N8S7856C29D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C29D0Ev,_ZTv0_n44_N8S7856C29D0Ev)();
extern void ABISELECT(_ZThn408_N8S7856C29D0Ev,_ZThn220_N8S7856C29D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C29__7S7856C1[] = {
  ABISELECT(-408,-220),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-408,-220),
  ABISELECT(-408,-220),
  ABISELECT(-64,-36),
  ABISELECT(-408,-220),
  ABISELECT(-408,-220),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C29D1Ev,_ZTv0_n44_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C29D0Ev,_ZTv0_n44_N8S7856C29D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C29__7S7856C1[] = {
  ABISELECT(-328,-176),
  ABISELECT(16,8),
  ABISELECT(-328,-176),
  ABISELECT(-328,-176),
  ABISELECT(-328,-176),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
};
extern void _ZN8S7856C22D1Ev();
extern void _ZN8S7856C22D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C22__A1__7S7856C1[] = {
  ABISELECT(-264,-136),
  ABISELECT(-376,-196),
  ABISELECT(-400,-212),
  ABISELECT(-280,-144),
  ABISELECT(-280,-144),
  ABISELECT(-688,-364),
  ABISELECT(-296,-152),
  ABISELECT(-312,-160),
  ABISELECT(-344,-180),
  ABISELECT(-328,-168),
  ABISELECT(-344,-180),
  ABISELECT(-688,-364),
  ABISELECT(-344,-180),
  ABISELECT(-688,-364),
  ABISELECT(-688,-364),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&_ZN8S7856C22D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C22D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C22__A9__7S7856C1[] = {
  ABISELECT(-688,-364),
  ABISELECT(-344,-180),
  ABISELECT(-688,-364),
  ABISELECT(-688,-364),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C22__A9__7S7856C1[] = {
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(344,180),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void _ZN7S7856C5D1Ev();
extern void _ZN7S7856C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C58S7856C22__A4__7S7856C1[] = {
  ABISELECT(-288,-148),
  ABISELECT(-288,-148),
  ABISELECT(-696,-368),
  ABISELECT(-320,-164),
  ABISELECT(-336,-172),
  ABISELECT(-352,-184),
  ABISELECT(-696,-368),
  ABISELECT(-352,-184),
  ABISELECT(-352,-184),
  ABISELECT(-304,-156),
  ABISELECT(-696,-368),
  ABISELECT(-696,-368),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&_ZN7S7856C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C5D0Ev,
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C187S7856C58S7856C22__A5__7S7856C1[] = {
  ABISELECT(-696,-368),
  ABISELECT(-352,-184),
  ABISELECT(-352,-184),
  ABISELECT(-304,-156),
  ABISELECT(-696,-368),
  ABISELECT(-696,-368),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C187S7856C58S7856C22__A6__7S7856C1[] = {
  ABISELECT(-696,-368),
  ABISELECT(-696,-368),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C187S7856C58S7856C22__A12__7S7856C1[] = {
  ABISELECT(-696,-368),
  ABISELECT(-696,-368),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C58S7856C22__A10__7S7856C1[] = {
  ABISELECT(-712,-376),
  ABISELECT(-368,-192),
  ABISELECT(-712,-376),
  ABISELECT(-712,-376),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C187S7856C58S7856C22__A10__7S7856C1[] = {
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(368,192),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C187S7856C58S7856C22__A5__7S7856C1[] = {
  ABISELECT(304,156),
  ABISELECT(-392,-212),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-392,-212),
  ABISELECT(-392,-212),
  ABISELECT(304,156),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C187S7856C58S7856C22__A5__7S7856C1[] = {
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(352,184),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C187S7856C58S7856C22__A5__7S7856C1[] = {
  ABISELECT(-712,-376),
  ABISELECT(-368,-192),
  ABISELECT(-712,-376),
  ABISELECT(-712,-376),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C58S7856C22__A4__7S7856C1[] = {
  ABISELECT(352,184),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(352,184),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C58S7856C22__A4__7S7856C1[] = {
  ABISELECT(336,172),
  ABISELECT(-360,-196),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-360,-196),
  ABISELECT(-360,-196),
  ABISELECT(336,172),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C58S7856C22__A4__7S7856C1[] = {
  ABISELECT(-376,-204),
  ABISELECT(-376,-204),
  ABISELECT(320,164),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C58S7856C22__A4__7S7856C1[] = {
  ABISELECT(304,156),
  ABISELECT(-392,-212),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-392,-212),
  ABISELECT(-392,-212),
  ABISELECT(304,156),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C58S7856C22__A4__7S7856C1[] = {
  ABISELECT(288,148),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-408,-220),
  ABISELECT(-408,-220),
  ABISELECT(-64,-36),
  ABISELECT(-408,-220),
  ABISELECT(288,148),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__7S7856C58S7856C22__A4__7S7856C1[] = {
  ABISELECT(-712,-376),
  ABISELECT(-368,-192),
  ABISELECT(-712,-376),
  ABISELECT(-712,-376),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C22__A1__7S7856C1[] = {
  ABISELECT(344,180),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(344,180),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C22__A1__7S7856C1[] = {
  ABISELECT(328,168),
  ABISELECT(-360,-196),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-360,-196),
  ABISELECT(-360,-196),
  ABISELECT(328,168),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C22__A1__7S7856C1[] = {
  ABISELECT(-376,-204),
  ABISELECT(-376,-204),
  ABISELECT(312,160),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__8S7856C22__A1__7S7856C1[] = {
  ABISELECT(296,152),
  ABISELECT(-392,-212),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-392,-212),
  ABISELECT(-392,-212),
  ABISELECT(296,152),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev),
};
extern void ABISELECT(_ZThn8_N8S7856C22D1Ev,_ZThn4_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn8_N8S7856C22D0Ev,_ZThn4_N8S7856C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__A__8S7856C22__A1__7S7856C1[] = {
  ABISELECT(-288,-148),
  ABISELECT(-288,-148),
  ABISELECT(-696,-368),
  ABISELECT(-320,-164),
  ABISELECT(-336,-172),
  ABISELECT(-352,-184),
  ABISELECT(-696,-368),
  ABISELECT(-352,-184),
  ABISELECT(-352,-184),
  ABISELECT(-304,-156),
  ABISELECT(-696,-368),
  ABISELECT(-696,-368),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7856C22D1Ev,_ZThn4_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7856C22D0Ev,_ZThn4_N8S7856C22D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C22__A1__7S7856C1[] = {
  ABISELECT(280,144),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-408,-220),
  ABISELECT(-408,-220),
  ABISELECT(-64,-36),
  ABISELECT(-408,-220),
  ABISELECT(280,144),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A2__8S7856C22__A1__7S7856C1[] = {
  ABISELECT(-712,-376),
  ABISELECT(-368,-192),
  ABISELECT(-712,-376),
  ABISELECT(-712,-376),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
};
extern void ABISELECT(_ZTv0_n136_N8S7856C22D1Ev,_ZTv0_n68_N8S7856C22D1Ev)();
extern void ABISELECT(_ZTv0_n136_N8S7856C22D0Ev,_ZTv0_n68_N8S7856C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C4__8S7856C22__A1__7S7856C1[] = {
  ABISELECT(8,4),
  ABISELECT(400,212),
  ABISELECT(136,76),
  ABISELECT(120,68),
  ABISELECT(120,68),
  ABISELECT(-288,-152),
  ABISELECT(104,60),
  ABISELECT(88,52),
  ABISELECT(56,32),
  ABISELECT(72,44),
  ABISELECT(56,32),
  ABISELECT(24,16),
  ABISELECT(-288,-152),
  ABISELECT(56,32),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(400,212),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S7856C22D1Ev,_ZTv0_n68_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S7856C22D0Ev,_ZTv0_n68_N8S7856C22D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S7856C22D1Ev,_ZTv0_n60_N8S7856C22D1Ev)();
extern void ABISELECT(_ZTv0_n120_N8S7856C22D0Ev,_ZTv0_n60_N8S7856C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__A1__8S7856C22__A1__7S7856C1[] = {
  ABISELECT(376,196),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-312,-168),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-312,-168),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-312,-168),
  ABISELECT(-312,-168),
  ABISELECT(376,196),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C22D1Ev,_ZTv0_n60_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C22D0Ev,_ZTv0_n60_N8S7856C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A3__8S7856C22__A1__7S7856C1[] = {
  ABISELECT(-328,-176),
  ABISELECT(16,8),
  ABISELECT(-328,-176),
  ABISELECT(-328,-176),
  ABISELECT(360,188),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
};
extern void ABISELECT(_ZTvn8_n136_N8S7856C22D1Ev,_ZTvn4_n68_N8S7856C22D1Ev)();
extern void ABISELECT(_ZTvn8_n136_N8S7856C22D0Ev,_ZTvn4_n68_N8S7856C22D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C197S7856C4__8S7856C22__A1__7S7856C1[] = {
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(48,28),
  ABISELECT(64,40),
  ABISELECT(-296,-156),
  ABISELECT(48,28),
  ABISELECT(-296,-156),
  ABISELECT(-296,-156),
  ABISELECT(392,208),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N8S7856C22D1Ev,_ZTvn4_n68_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N8S7856C22D0Ev,_ZTvn4_n68_N8S7856C22D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N8S7856C22D1Ev,_ZTv0_n36_N8S7856C22D1Ev)();
extern void ABISELECT(_ZTv0_n72_N8S7856C22D0Ev,_ZTv0_n36_N8S7856C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C18__A2__8S7856C22__A1__7S7856C1[] = {
  ABISELECT(264,136),
  ABISELECT(-424,-228),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-424,-228),
  ABISELECT(-424,-228),
  ABISELECT(264,136),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C22D1Ev,_ZTv0_n36_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C22D0Ev,_ZTv0_n36_N8S7856C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A5__8S7856C22__A1__7S7856C1[] = {
  ABISELECT(-440,-236),
  ABISELECT(-96,-52),
  ABISELECT(-440,-236),
  ABISELECT(-440,-236),
  ABISELECT(248,128),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
};
extern void _ZN8S7856C32D1Ev();
extern void _ZN8S7856C32D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C32__7S7856C1[] = {
  ABISELECT(-384,-200),
  ABISELECT(-368,-188),
  ABISELECT(-352,-180),
  ABISELECT(-320,-164),
  ABISELECT(-728,-384),
  ABISELECT(-728,-384),
  ABISELECT(-384,-200),
  ABISELECT(-728,-384),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C32[0]),
  (VTBL_ENTRY)&_ZN8S7856C32D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C32D0Ev,
};
extern void _ZN8S7856C16D1Ev();
extern void _ZN8S7856C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C168S7856C32__A2__7S7856C1[] = {
  ABISELECT(-384,-200),
  ABISELECT(-368,-188),
  ABISELECT(-352,-180),
  ABISELECT(-320,-164),
  ABISELECT(-728,-384),
  ABISELECT(-728,-384),
  ABISELECT(-384,-200),
  ABISELECT(-728,-384),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&_ZN8S7856C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C168S7856C32__A2__7S7856C1[] = {
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(384,200),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt__8S7856C168S7856C32__A2__7S7856C1[] = {
  ABISELECT(-408,-220),
  ABISELECT(320,164),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C168S7856C32__A2__7S7856C1[] = {
  ABISELECT(-376,-204),
  ABISELECT(-376,-204),
  ABISELECT(352,180),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C168S7856C32__A2__7S7856C1[] = {
  ABISELECT(368,188),
  ABISELECT(-360,-196),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-360,-196),
  ABISELECT(-360,-196),
  ABISELECT(368,188),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C32__7S7856C1[] = {
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(384,200),
  (VTBL_ENTRY)&(_ZTI8S7856C32[0]),
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt__8S7856C32__7S7856C1[] = {
  ABISELECT(-408,-220),
  ABISELECT(320,164),
  (VTBL_ENTRY)&(_ZTI8S7856C32[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C32__7S7856C1[] = {
  ABISELECT(-376,-204),
  ABISELECT(-376,-204),
  ABISELECT(352,180),
  (VTBL_ENTRY)&(_ZTI8S7856C32[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C32D1Ev,_ZTv0_n32_N8S7856C32D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C32D0Ev,_ZTv0_n32_N8S7856C32D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C32__7S7856C1[] = {
  ABISELECT(368,188),
  ABISELECT(-360,-196),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-360,-196),
  ABISELECT(-360,-196),
  ABISELECT(368,188),
  (VTBL_ENTRY)&(_ZTI8S7856C32[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C32D1Ev,_ZTv0_n32_N8S7856C32D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C32D0Ev,_ZTv0_n32_N8S7856C32D0Ev),
};
static  VTT_ENTRY vtt_S7856C1[] = {
  {&(_ZTV7S7856C1[26]),  26,436},
  {&(_tg__ZTV7S7856C2__7S7856C1[25]),  25,27},
  {&(_tg__ZTV7S7856C3__7S7856C2__7S7856C1[24]),  24,26},
  {&(_tg__ZTV7S7856C4__7S7856C2__7S7856C1[18]),  18,20},
  {&(_tg__ZTV7S7856C5__7S7856C2__7S7856C1[15]),  15,17},
  {&(_tg__ZTV7S7856C6__7S7856C2__7S7856C1[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C2__7S7856C1[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C2__7S7856C1[11]),  11,13},
  {&(_tg__ZTV7S7856C6__7S7856C2__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C14__7S7856C2__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C2__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C2__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C2__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__7S7856C2__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C197S7856C4__7S7856C2__7S7856C1[11]),  11,14},
  {&(_tg__ZTV8S7856C18__A1__7S7856C2__7S7856C1[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A3__7S7856C2__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C20__7S7856C2__7S7856C1[15]),  15,17},
  {&(_tg__ZTV7S7856C58S7856C20__A1__7S7856C2__7S7856C1[14]),  14,16},
  {&(_tg__ZTV8S7856C108S7856C187S7856C58S7856C20__A4__7S7856C2__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C218S7856C20__7S7856C2__7S7856C1[3]),  3,5},
  {&(_tg__ZTV7S7856C58S7856C227S7856C3__A2__7S7856C2__7S7856C1[14]),  14,16},
  {&(_tg__ZTV8S7856C108S7856C187S7856C58S7856C227S7856C3__A6__7S7856C2__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C23__7S7856C2__7S7856C1[23]),  23,25},
  {&(_tg__ZTV8S7856C268S7856C258S7856C23__7S7856C2__7S7856C1[3]),  3,3},
  {&(_tg__ZTV7S7856C48S7856C258S7856C23__A1__7S7856C2__7S7856C1[16]),  16,18},
  {&(_tg__ZTV8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C2__7S7856C1[11]),  11,14},
  {&(_tg__ZTV8S7856C27__7S7856C2__7S7856C1[18]),  18,20},
  {&(_tg__ZTV8S7856C288S7856C27__7S7856C2__7S7856C1[16]),  16,18},
  {&(_tg__ZTV7S7856C2__7S7856C1[25]),  25,27},
  {&(_tg__ZTV8S7856C218S7856C288S7856C27__A1__7S7856C2__7S7856C1[3]),  3,5},
  {&(_tg__ZTV7S7856C58S7856C258S7856C23__A3__7S7856C2__7S7856C1[14]),  14,16},
  {&(_tg__ZTV8S7856C108S7856C187S7856C58S7856C258S7856C23__A8__7S7856C2__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C138S7856C23__A4__7S7856C2__7S7856C1[7]),  7,9},
  {&(_tg__ZTV8S7856C22__A1__7S7856C2__7S7856C1[18]),  18,20},
  {&(_tg__ZTV7S7856C58S7856C22__A4__7S7856C2__7S7856C1[14]),  14,16},
  {&(_tg__ZTV8S7856C108S7856C187S7856C58S7856C22__A10__7S7856C2__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C26__A1__7S7856C1[3]),  3,3},
  {&(_ZTV7S7856C1[55]),  55,436},
  {&(_ZTV7S7856C1[97]),  97,436},
  {&(_ZTV7S7856C1[128]),  128,436},
  {&(_ZTV7S7856C1[147]),  147,436},
  {&(_ZTV7S7856C1[157]),  157,436},
  {&(_ZTV7S7856C1[147]),  147,436},
  {&(_ZTV7S7856C1[147]),  147,436},
  {&(_ZTV7S7856C1[163]),  163,436},
  {&(_ZTV7S7856C1[171]),  171,436},
  {&(_ZTV7S7856C1[184]),  184,436},
  {&(_ZTV7S7856C1[184]),  184,436},
  {&(_ZTV7S7856C1[136]),  136,436},
  {&(_ZTV7S7856C1[110]),  110,436},
  {&(_ZTV7S7856C1[195]),  195,436},
  {&(_ZTV7S7856C1[203]),  203,436},
  {&(_ZTV7S7856C1[218]),  218,436},
  {&(_ZTV7S7856C1[234]),  234,436},
  {&(_ZTV7S7856C1[242]),  242,436},
  {&(_ZTV7S7856C1[245]),  245,436},
  {&(_ZTV7S7856C1[71]),  71,436},
  {&(_ZTV7S7856C1[79]),  79,436},
  {&(_ZTV7S7856C1[270]),  270,436},
  {&(_ZTV7S7856C1[275]),  275,436},
  {&(_ZTV7S7856C1[291]),  291,436},
  {&(_ZTV7S7856C1[304]),  304,436},
  {&(_ZTV7S7856C1[356]),  356,436},
  {&(_ZTV7S7856C1[374]),  374,436},
  {&(_ZTV7S7856C1[26]),  26,436},
  {&(_ZTV7S7856C1[379]),  379,436},
  {&(_ZTV7S7856C1[321]),  321,436},
  {&(_ZTV7S7856C1[329]),  329,436},
  {&(_ZTV7S7856C1[336]),  336,436},
  {&(_ZTV7S7856C1[399]),  399,436},
  {&(_ZTV7S7856C1[415]),  415,436},
  {&(_ZTV7S7856C1[423]),  423,436},
  {&(_ZTV7S7856C1[31]),  31,436},
  {&(_ZTV7S7856C1[434]),  434,436},
  {&(_tg__ZTV7S7856C3__7S7856C1[23]),  23,25},
  {&(_tg__ZTV8S7856C227S7856C3__7S7856C1[17]),  17,19},
  {&(_tg__ZTV8S7856C108S7856C227S7856C3__A5__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C227S7856C3__A5__7S7856C1[4]),  4,4},
  {&(_tg__ZTV7S7856C58S7856C227S7856C3__A2__7S7856C1[14]),  14,16},
  {&(_tg__ZTV8S7856C187S7856C58S7856C227S7856C3__A3__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C187S7856C58S7856C227S7856C3__A4__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C187S7856C58S7856C227S7856C3__A7__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C187S7856C58S7856C227S7856C3__A6__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C187S7856C58S7856C227S7856C3__A6__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C187S7856C58S7856C227S7856C3__A3__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C58S7856C227S7856C3__A3__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C58S7856C227S7856C3__A3__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C10__A__8S7856C187S7856C58S7856C227S7856C3__A3__7S7856C1[6]),  6,6},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C227S7856C3__A2__7S7856C1[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C58S7856C227S7856C3__A2__7S7856C1[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C227S7856C3__A2__7S7856C1[11]),  11,13},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C227S7856C3__A2__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C14__7S7856C58S7856C227S7856C3__A2__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C58S7856C227S7856C3__A2__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C58S7856C227S7856C3__A2__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C58S7856C227S7856C3__A2__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C18__A1__7S7856C58S7856C227S7856C3__A2__7S7856C1[6]),  6,6},
  {&(_tg__ZTV7S7856C6__8S7856C227S7856C3__7S7856C1[11]),  11,13},
  {&(_tg__ZTV7S7856C6__8S7856C227S7856C3__7S7856C1[11]),  11,13},
  {&(_tg__ZTV7S7856C7__8S7856C227S7856C3__7S7856C1[8]),  8,10},
  {&(_tg__ZTV7S7856C6__8S7856C227S7856C3__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C14__8S7856C227S7856C3__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__8S7856C227S7856C3__7S7856C1[8]),  8,10},
  {&(_tg__ZTV7S7856C5__A__8S7856C227S7856C3__7S7856C1[14]),  14,16},
  {&(_tg__ZTV8S7856C16__8S7856C227S7856C3__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C16__8S7856C227S7856C3__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A2__8S7856C227S7856C3__7S7856C1[6]),  6,6},
  {&(_tg__ZTV7S7856C4__8S7856C227S7856C3__7S7856C1[18]),  18,20},
  {&(_tg__ZTV7S7856C5__A1__8S7856C227S7856C3__7S7856C1[15]),  15,17},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A3__8S7856C227S7856C3__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C197S7856C4__8S7856C227S7856C3__7S7856C1[11]),  11,14},
  {&(_tg__ZTV8S7856C18__A2__8S7856C227S7856C3__7S7856C1[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A5__8S7856C227S7856C3__7S7856C1[6]),  6,6},
  {&(_tg__ZTV7S7856C4__7S7856C3__7S7856C1[18]),  18,20},
  {&(_tg__ZTV7S7856C5__7S7856C3__7S7856C1[15]),  15,17},
  {&(_tg__ZTV7S7856C6__7S7856C3__7S7856C1[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C3__7S7856C1[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C3__7S7856C1[11]),  11,13},
  {&(_tg__ZTV7S7856C6__7S7856C3__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C14__7S7856C3__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C3__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C3__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C3__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__7S7856C3__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C197S7856C4__7S7856C3__7S7856C1[11]),  11,14},
  {&(_tg__ZTV8S7856C18__A1__7S7856C3__7S7856C1[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A3__7S7856C3__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C20__7S7856C3__7S7856C1[15]),  15,17},
  {&(_tg__ZTV7S7856C58S7856C20__A1__7S7856C3__7S7856C1[14]),  14,16},
  {&(_tg__ZTV8S7856C108S7856C187S7856C58S7856C20__A4__7S7856C3__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C218S7856C20__7S7856C3__7S7856C1[3]),  3,5},
  {&(_tg__ZTV7S7856C58S7856C22__A2__7S7856C3__7S7856C1[14]),  14,16},
  {&(_tg__ZTV8S7856C108S7856C187S7856C58S7856C22__A6__7S7856C3__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C23__7S7856C3__7S7856C1[23]),  23,25},
  {&(_tg__ZTV8S7856C268S7856C258S7856C23__7S7856C3__7S7856C1[3]),  3,3},
  {&(_tg__ZTV7S7856C48S7856C258S7856C23__A1__7S7856C3__7S7856C1[16]),  16,18},
  {&(_tg__ZTV8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C3__7S7856C1[11]),  11,14},
  {&(_tg__ZTV8S7856C27__7S7856C3__7S7856C1[18]),  18,20},
  {&(_tg__ZTV8S7856C288S7856C27__7S7856C3__7S7856C1[16]),  16,18},
  {&(_tg__ZTV8S7856C29__7S7856C3__7S7856C1[16]),  16,18},
  {&(_tg__ZTV8S7856C218S7856C288S7856C27__A1__7S7856C3__7S7856C1[3]),  3,5},
  {&(_tg__ZTV7S7856C58S7856C258S7856C23__A3__7S7856C3__7S7856C1[14]),  14,16},
  {&(_tg__ZTV8S7856C108S7856C187S7856C58S7856C258S7856C23__A8__7S7856C3__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C138S7856C23__A4__7S7856C3__7S7856C1[7]),  7,9},
  {&(_tg__ZTV8S7856C22__A1__7S7856C3__7S7856C1[18]),  18,20},
  {&(_tg__ZTV7S7856C58S7856C22__A4__7S7856C3__7S7856C1[14]),  14,16},
  {&(_tg__ZTV8S7856C108S7856C187S7856C58S7856C22__A10__7S7856C3__7S7856C1[6]),  6,6},
  {&(_tg__ZTV7S7856C4__7S7856C1[16]),  16,18},
  {&(_tg__ZTV8S7856C107S7856C4__A2__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C107S7856C4__A2__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C197S7856C4__7S7856C1[11]),  11,14},
  {&(_tg__ZTV7S7856C68S7856C197S7856C4__A1__7S7856C1[10]),  10,12},
  {&(_tg__ZTV7S7856C7__7S7856C68S7856C197S7856C4__A1__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C10__7S7856C68S7856C197S7856C4__A1__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C68S7856C197S7856C4__A1__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C14__7S7856C68S7856C197S7856C4__A1__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C68S7856C197S7856C4__A1__7S7856C1[8]),  8,10},
  {&(_tg__ZTV7S7856C7__8S7856C197S7856C4__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C197S7856C4__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C197S7856C4__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C14__8S7856C197S7856C4__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__8S7856C197S7856C4__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C18__8S7856C197S7856C4__7S7856C1[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A1__8S7856C197S7856C4__7S7856C1[6]),  6,6},
  {&(_tg__ZTV7S7856C5__7S7856C4__7S7856C1[15]),  15,17},
  {&(_tg__ZTV7S7856C6__7S7856C4__7S7856C1[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C4__7S7856C1[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C4__7S7856C1[11]),  11,13},
  {&(_tg__ZTV7S7856C6__7S7856C4__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C14__7S7856C4__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C4__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C4__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C4__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__7S7856C4__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C19__7S7856C4__7S7856C1[11]),  11,14},
  {&(_tg__ZTV8S7856C18__A1__7S7856C4__7S7856C1[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A3__7S7856C4__7S7856C1[6]),  6,6},
  {&(_tg__ZTV7S7856C5__7S7856C1[14]),  14,16},
  {&(_tg__ZTV8S7856C187S7856C5__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C187S7856C5__A1__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C187S7856C5__A4__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C187S7856C5__A1__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C187S7856C5__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C5__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C5__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C10__A__8S7856C187S7856C5__7S7856C1[6]),  6,6},
  {&(_tg__ZTV7S7856C6__7S7856C5__7S7856C1[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C5__7S7856C1[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C5__7S7856C1[11]),  11,13},
  {&(_tg__ZTV7S7856C6__7S7856C5__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C14__7S7856C5__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C5__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C5__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C5__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C18__A1__7S7856C5__7S7856C1[6]),  6,6},
  {&(_tg__ZTV7S7856C6__7S7856C1[10]),  10,12},
  {&(_tg__ZTV7S7856C7__7S7856C6__7S7856C1[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C1[10]),  10,12},
  {&(_tg__ZTV7S7856C6__7S7856C1[10]),  10,12},
  {&(_tg__ZTV8S7856C14__7S7856C6__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C6__7S7856C1[8]),  8,10},
  {&(_tg__ZTV7S7856C7__7S7856C1[7]),  7,9},
  {&(_tg__ZTV8S7856C137S7856C7__7S7856C1[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C137S7856C7__A1__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C7__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C7__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C7__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C7__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C11__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C14__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C14__A2__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C1[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C13__A3__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C13__A1__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C13__A1__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C16__7S7856C1[10]),  10,12},
  {&(_tg__ZTV8S7856C10__8S7856C16__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C16__7S7856C1[10]),  10,12},
  {&(_tg__ZTV8S7856C14__8S7856C16__7S7856C1[4]),  4,4},
  {&(_tg__ZTV7S7856C7__8S7856C16__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C16__7S7856C1[6]),  6,6},
  {&(_tg__ZTV11S7856C17_nt__7S7856C1[3]),  3,3},
  {&(_tg__ZTV8S7856C18__A1__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C18__A2__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C18__A5__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C18__A3__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C18__A3__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C18__A1__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C18__A1__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C18__A1__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C10__A__8S7856C18__A1__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C20__7S7856C1[14]),  14,16},
  {&(_tg__ZTV11S7856C17_nt8S7856C20__A1__7S7856C1[3]),  3,3},
  {&(_tg__ZTV7S7856C58S7856C20__A1__7S7856C1[14]),  14,16},
  {&(_tg__ZTV8S7856C187S7856C58S7856C20__A2__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C187S7856C58S7856C20__A3__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C187S7856C58S7856C20__A6__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C187S7856C58S7856C20__A4__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C187S7856C58S7856C20__A4__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C187S7856C58S7856C20__A2__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C58S7856C20__A2__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C58S7856C20__A2__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C10__A__8S7856C187S7856C58S7856C20__A2__7S7856C1[6]),  6,6},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C20__A1__7S7856C1[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C58S7856C20__A1__7S7856C1[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C20__A1__7S7856C1[11]),  11,13},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C20__A1__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C14__7S7856C58S7856C20__A1__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C58S7856C20__A1__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C58S7856C20__A1__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C58S7856C20__A1__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C18__A1__7S7856C58S7856C20__A1__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C218S7856C20__7S7856C1[3]),  3,5},
  {&(_tg__ZTV11S7856C17_nt8S7856C218S7856C20__A2__7S7856C1[3]),  3,3},
  {&(_tg__ZTV7S7856C5__8S7856C20__7S7856C1[14]),  14,16},
  {&(_tg__ZTV7S7856C6__8S7856C20__7S7856C1[11]),  11,13},
  {&(_tg__ZTV7S7856C7__8S7856C20__7S7856C1[8]),  8,10},
  {&(_tg__ZTV7S7856C6__8S7856C20__7S7856C1[11]),  11,13},
  {&(_tg__ZTV7S7856C6__8S7856C20__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C14__8S7856C20__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__8S7856C20__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C16__8S7856C20__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C16__8S7856C20__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C20__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C21__8S7856C20__7S7856C1[3]),  3,5},
  {&(_tg__ZTV8S7856C23__7S7856C1[21]),  21,23},
  {&(_tg__ZTV8S7856C258S7856C23__7S7856C1[19]),  19,21},
  {&(_tg__ZTV8S7856C138S7856C258S7856C23__A2__7S7856C1[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C138S7856C258S7856C23__A8__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C138S7856C258S7856C23__A2__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C138S7856C258S7856C23__A2__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C268S7856C258S7856C23__7S7856C1[3]),  3,3},
  {&(_tg__ZTV7S7856C48S7856C258S7856C23__A1__7S7856C1[16]),  16,18},
  {&(_tg__ZTV8S7856C107S7856C48S7856C258S7856C23__A7__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C107S7856C48S7856C258S7856C23__A7__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C1[11]),  11,14},
  {&(_tg__ZTV7S7856C68S7856C197S7856C48S7856C258S7856C23__A2__7S7856C1[10]),  10,12},
  {&(_tg__ZTV7S7856C7__7S7856C68S7856C197S7856C48S7856C258S7856C23__A2__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C10__7S7856C68S7856C197S7856C48S7856C258S7856C23__A2__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C68S7856C197S7856C48S7856C258S7856C23__A2__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C14__7S7856C68S7856C197S7856C48S7856C258S7856C23__A2__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C68S7856C197S7856C48S7856C258S7856C23__A2__7S7856C1[8]),  8,10},
  {&(_tg__ZTV7S7856C7__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C14__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C18__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C1[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A1__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C1[6]),  6,6},
  {&(_tg__ZTV7S7856C5__7S7856C48S7856C258S7856C23__A1__7S7856C1[15]),  15,17},
  {&(_tg__ZTV7S7856C6__7S7856C48S7856C258S7856C23__A1__7S7856C1[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C48S7856C258S7856C23__A1__7S7856C1[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C48S7856C258S7856C23__A1__7S7856C1[11]),  11,13},
  {&(_tg__ZTV7S7856C6__7S7856C48S7856C258S7856C23__A1__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C14__7S7856C48S7856C258S7856C23__A1__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C48S7856C258S7856C23__A1__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C48S7856C258S7856C23__A1__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C48S7856C258S7856C23__A1__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__7S7856C48S7856C258S7856C23__A1__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C19__7S7856C48S7856C258S7856C23__A1__7S7856C1[11]),  11,14},
  {&(_tg__ZTV8S7856C18__A1__7S7856C48S7856C258S7856C23__A1__7S7856C1[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A3__7S7856C48S7856C258S7856C23__A1__7S7856C1[6]),  6,6},
  {&(_tg__ZTV7S7856C58S7856C258S7856C23__A3__7S7856C1[14]),  14,16},
  {&(_tg__ZTV8S7856C187S7856C58S7856C258S7856C23__A4__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C187S7856C58S7856C258S7856C23__A5__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C187S7856C58S7856C258S7856C23__A10__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C187S7856C58S7856C258S7856C23__A8__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C187S7856C58S7856C258S7856C23__A8__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C187S7856C58S7856C258S7856C23__A4__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C58S7856C258S7856C23__A4__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C58S7856C258S7856C23__A4__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C10__A__8S7856C187S7856C58S7856C258S7856C23__A4__7S7856C1[6]),  6,6},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C258S7856C23__A3__7S7856C1[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C58S7856C258S7856C23__A3__7S7856C1[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C258S7856C23__A3__7S7856C1[11]),  11,13},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C258S7856C23__A3__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C14__7S7856C58S7856C258S7856C23__A3__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C58S7856C258S7856C23__A3__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C58S7856C258S7856C23__A3__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C58S7856C258S7856C23__A3__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C18__A1__7S7856C58S7856C258S7856C23__A3__7S7856C1[6]),  6,6},
  {&(_tg__ZTV7S7856C6__8S7856C258S7856C23__7S7856C1[11]),  11,13},
  {&(_tg__ZTV7S7856C6__8S7856C258S7856C23__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C26__8S7856C258S7856C23__7S7856C1[3]),  3,3},
  {&(_tg__ZTV7S7856C4__8S7856C258S7856C23__7S7856C1[16]),  16,18},
  {&(_tg__ZTV7S7856C5__8S7856C258S7856C23__7S7856C1[15]),  15,17},
  {&(_tg__ZTV7S7856C6__8S7856C258S7856C23__7S7856C1[11]),  11,13},
  {&(_tg__ZTV7S7856C7__8S7856C258S7856C23__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C14__8S7856C258S7856C23__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A2__8S7856C258S7856C23__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C16__8S7856C258S7856C23__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C16__8S7856C258S7856C23__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C258S7856C23__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C197S7856C4__8S7856C258S7856C23__7S7856C1[11]),  11,14},
  {&(_tg__ZTV8S7856C18__A1__8S7856C258S7856C23__7S7856C1[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A3__8S7856C258S7856C23__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C27__8S7856C258S7856C23__7S7856C1[18]),  18,20},
  {&(_tg__ZTV8S7856C288S7856C27__8S7856C258S7856C23__7S7856C1[16]),  16,18},
  {&(_tg__ZTV8S7856C29__8S7856C258S7856C23__7S7856C1[16]),  16,18},
  {&(_tg__ZTV8S7856C218S7856C288S7856C27__8S7856C258S7856C23__7S7856C1[3]),  3,5},
  {&(_tg__ZTV7S7856C5__A__8S7856C258S7856C23__7S7856C1[14]),  14,16},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A4__8S7856C258S7856C23__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C138S7856C23__A4__7S7856C1[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C138S7856C23__A11__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C138S7856C23__A4__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C138S7856C23__A4__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C14__8S7856C23__7S7856C1[4]),  4,4},
  {&(_tg__ZTV7S7856C6__8S7856C23__7S7856C1[11]),  11,13},
  {&(_tg__ZTV7S7856C6__8S7856C23__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C268S7856C25__8S7856C23__7S7856C1[3]),  3,3},
  {&(_tg__ZTV7S7856C48S7856C25__8S7856C23__7S7856C1[16]),  16,18},
  {&(_tg__ZTV7S7856C5__8S7856C23__7S7856C1[15]),  15,17},
  {&(_tg__ZTV7S7856C6__8S7856C23__7S7856C1[11]),  11,13},
  {&(_tg__ZTV7S7856C7__8S7856C23__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C13__A2__8S7856C23__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C16__8S7856C23__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C16__8S7856C23__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C23__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C197S7856C48S7856C25__8S7856C23__7S7856C1[11]),  11,14},
  {&(_tg__ZTV8S7856C18__A1__8S7856C23__7S7856C1[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A3__8S7856C23__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C27__8S7856C23__7S7856C1[18]),  18,20},
  {&(_tg__ZTV8S7856C288S7856C27__8S7856C23__7S7856C1[16]),  16,18},
  {&(_tg__ZTV8S7856C29__8S7856C23__7S7856C1[16]),  16,18},
  {&(_tg__ZTV8S7856C218S7856C288S7856C27__8S7856C23__7S7856C1[3]),  3,5},
  {&(_tg__ZTV7S7856C58S7856C25__A1__8S7856C23__7S7856C1[14]),  14,16},
  {&(_tg__ZTV8S7856C108S7856C187S7856C58S7856C25__A4__8S7856C23__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C13__A__8S7856C23__7S7856C1[7]),  7,9},
  {&(_tg__ZTV8S7856C22__8S7856C23__7S7856C1[18]),  18,20},
  {&(_tg__ZTV7S7856C58S7856C22__A2__8S7856C23__7S7856C1[14]),  14,16},
  {&(_tg__ZTV8S7856C108S7856C187S7856C58S7856C22__A6__8S7856C23__7S7856C1[6]),  6,6},
  {&(_tg__ZTV7S7856C4__A1__8S7856C23__7S7856C1[18]),  18,20},
  {&(_tg__ZTV8S7856C197S7856C4__A1__8S7856C23__7S7856C1[11]),  11,14},
  {&(_tg__ZTV8S7856C27__7S7856C1[17]),  17,19},
  {&(_tg__ZTV8S7856C168S7856C27__A1__7S7856C1[10]),  10,12},
  {&(_tg__ZTV8S7856C10__8S7856C168S7856C27__A1__7S7856C1[6]),  6,6},
  {&(_tg__ZTV11S7856C17_nt__8S7856C168S7856C27__A1__7S7856C1[3]),  3,3},
  {&(_tg__ZTV8S7856C14__8S7856C168S7856C27__A1__7S7856C1[4]),  4,4},
  {&(_tg__ZTV7S7856C7__8S7856C168S7856C27__A1__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C168S7856C27__A1__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C288S7856C27__7S7856C1[16]),  16,18},
  {&(_tg__ZTV7S7856C78S7856C288S7856C27__A1__7S7856C1[7]),  7,9},
  {&(_tg__ZTV8S7856C137S7856C78S7856C288S7856C27__A3__7S7856C1[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C137S7856C78S7856C288S7856C27__A9__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C78S7856C288S7856C27__A3__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C78S7856C288S7856C27__A3__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C78S7856C288S7856C27__A1__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C78S7856C288S7856C27__A1__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C218S7856C288S7856C27__A1__7S7856C1[3]),  3,5},
  {&(_tg__ZTV11S7856C17_nt8S7856C218S7856C288S7856C27__A3__7S7856C1[3]),  3,3},
  {&(_tg__ZTV7S7856C6__8S7856C288S7856C27__7S7856C1[11]),  11,13},
  {&(_tg__ZTV7S7856C6__8S7856C288S7856C27__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C14__8S7856C288S7856C27__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C29__8S7856C288S7856C27__7S7856C1[16]),  16,18},
  {&(_tg__ZTV7S7856C7__A1__8S7856C288S7856C27__7S7856C1[8]),  8,10},
  {&(_tg__ZTV7S7856C5__8S7856C288S7856C27__7S7856C1[15]),  15,17},
  {&(_tg__ZTV7S7856C6__8S7856C288S7856C27__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C13__A2__8S7856C288S7856C27__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C16__8S7856C288S7856C27__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C16__8S7856C288S7856C27__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C288S7856C27__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C21__8S7856C288S7856C27__7S7856C1[3]),  3,5},
  {&(_tg__ZTV7S7856C6__8S7856C27__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C16__A1__8S7856C27__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C14__8S7856C27__7S7856C1[4]),  4,4},
  {&(_tg__ZTV7S7856C7__8S7856C27__7S7856C1[8]),  8,10},
  {&(_tg__ZTV7S7856C6__8S7856C27__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C28__8S7856C27__7S7856C1[16]),  16,18},
  {&(_tg__ZTV8S7856C29__8S7856C27__7S7856C1[16]),  16,18},
  {&(_tg__ZTV7S7856C5__8S7856C27__7S7856C1[15]),  15,17},
  {&(_tg__ZTV7S7856C6__8S7856C27__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C13__A2__8S7856C27__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C16__A1__8S7856C27__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C27__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C218S7856C28__8S7856C27__7S7856C1[3]),  3,5},
  {&(_tg__ZTV8S7856C29__7S7856C1[15]),  15,17},
  {&(_tg__ZTV7S7856C7__8S7856C29__7S7856C1[8]),  8,10},
  {&(_tg__ZTV7S7856C6__8S7856C29__7S7856C1[11]),  11,13},
  {&(_tg__ZTV7S7856C6__8S7856C29__7S7856C1[11]),  11,13},
  {&(_tg__ZTV7S7856C5__8S7856C29__7S7856C1[15]),  15,17},
  {&(_tg__ZTV7S7856C6__8S7856C29__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C14__8S7856C29__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__8S7856C29__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C16__8S7856C29__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C16__8S7856C29__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C29__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C22__A1__7S7856C1[17]),  17,19},
  {&(_tg__ZTV8S7856C108S7856C22__A9__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C22__A9__7S7856C1[4]),  4,4},
  {&(_tg__ZTV7S7856C58S7856C22__A4__7S7856C1[14]),  14,16},
  {&(_tg__ZTV8S7856C187S7856C58S7856C22__A5__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C187S7856C58S7856C22__A6__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C187S7856C58S7856C22__A12__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C187S7856C58S7856C22__A10__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C187S7856C58S7856C22__A10__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C187S7856C58S7856C22__A5__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C58S7856C22__A5__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C58S7856C22__A5__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C10__A__8S7856C187S7856C58S7856C22__A5__7S7856C1[6]),  6,6},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C22__A4__7S7856C1[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C58S7856C22__A4__7S7856C1[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C22__A4__7S7856C1[11]),  11,13},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C22__A4__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C14__7S7856C58S7856C22__A4__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C58S7856C22__A4__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C58S7856C22__A4__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C58S7856C22__A4__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C18__A1__7S7856C58S7856C22__A4__7S7856C1[6]),  6,6},
  {&(_tg__ZTV7S7856C6__8S7856C22__A1__7S7856C1[11]),  11,13},
  {&(_tg__ZTV7S7856C6__8S7856C22__A1__7S7856C1[11]),  11,13},
  {&(_tg__ZTV7S7856C7__8S7856C22__A1__7S7856C1[8]),  8,10},
  {&(_tg__ZTV7S7856C6__8S7856C22__A1__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C14__8S7856C22__A1__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__8S7856C22__A1__7S7856C1[8]),  8,10},
  {&(_tg__ZTV7S7856C5__A__8S7856C22__A1__7S7856C1[14]),  14,16},
  {&(_tg__ZTV8S7856C16__8S7856C22__A1__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C16__8S7856C22__A1__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A2__8S7856C22__A1__7S7856C1[6]),  6,6},
  {&(_tg__ZTV7S7856C4__8S7856C22__A1__7S7856C1[18]),  18,20},
  {&(_tg__ZTV7S7856C5__A1__8S7856C22__A1__7S7856C1[15]),  15,17},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A3__8S7856C22__A1__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C197S7856C4__8S7856C22__A1__7S7856C1[11]),  11,14},
  {&(_tg__ZTV8S7856C18__A2__8S7856C22__A1__7S7856C1[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A5__8S7856C22__A1__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C32__7S7856C1[10]),  10,12},
  {&(_tg__ZTV8S7856C168S7856C32__A2__7S7856C1[10]),  10,12},
  {&(_tg__ZTV8S7856C10__8S7856C168S7856C32__A2__7S7856C1[6]),  6,6},
  {&(_tg__ZTV11S7856C17_nt__8S7856C168S7856C32__A2__7S7856C1[3]),  3,3},
  {&(_tg__ZTV8S7856C14__8S7856C168S7856C32__A2__7S7856C1[4]),  4,4},
  {&(_tg__ZTV7S7856C7__8S7856C168S7856C32__A2__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C168S7856C32__A2__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C32__7S7856C1[6]),  6,6},
  {&(_tg__ZTV11S7856C17_nt__8S7856C32__7S7856C1[3]),  3,3},
  {&(_tg__ZTV8S7856C14__8S7856C32__7S7856C1[4]),  4,4},
  {&(_tg__ZTV7S7856C7__8S7856C32__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C32__7S7856C1[6]),  6,6},
};
extern VTBL_ENTRY _ZTI7S7856C1[];
extern  VTBL_ENTRY _ZTV7S7856C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C1[];
static VTBL_ENTRY alt_thunk_names31[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C29D0Ev,_ZTv0_n60_N8S7856C29D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S7856C29D0Ev,_ZThn168_N8S7856C29D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C29D1Ev,_ZTv0_n60_N8S7856C29D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S7856C29D1Ev,_ZThn168_N8S7856C29D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C29D0Ev,_ZTv0_n44_N8S7856C29D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N8S7856C29D0Ev,_ZThn220_N8S7856C29D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn344_N8S7856C29D0Ev,_ZThn184_N8S7856C29D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C29D1Ev,_ZTv0_n44_N8S7856C29D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N8S7856C29D1Ev,_ZThn220_N8S7856C29D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn344_N8S7856C29D1Ev,_ZThn184_N8S7856C29D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C29D0Ev,_ZTv0_n32_N8S7856C29D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn392_N8S7856C29D0Ev,_ZThn212_N8S7856C29D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn360_N8S7856C29D0Ev,_ZThn196_N8S7856C29D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C29D1Ev,_ZTv0_n32_N8S7856C29D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn392_N8S7856C29D1Ev,_ZThn212_N8S7856C29D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn360_N8S7856C29D1Ev,_ZThn196_N8S7856C29D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N8S7856C23D0Ev,_ZTv0_n72_N8S7856C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7856C23D0Ev,_ZThn96_N8S7856C23D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7856C23D0Ev,_ZThn72_N8S7856C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N8S7856C23D1Ev,_ZTv0_n72_N8S7856C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7856C23D1Ev,_ZThn96_N8S7856C23D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7856C23D1Ev,_ZThn72_N8S7856C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N8S7856C25D0Ev,_ZTv0_n72_N8S7856C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7856C25D0Ev,_ZThn72_N8S7856C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N8S7856C25D1Ev,_ZTv0_n72_N8S7856C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7856C25D1Ev,_ZThn72_N8S7856C25D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7856C4D0Ev,_ZTv0_n36_N7S7856C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7856C4D0Ev,_ZThn76_N7S7856C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7856C4D1Ev,_ZTv0_n36_N7S7856C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7856C4D1Ev,_ZThn76_N7S7856C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7856C4D0Ev,_ZThn60_N7S7856C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7856C4D0Ev,_ZThn44_N7S7856C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7856C4D1Ev,_ZThn60_N7S7856C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7856C4D1Ev,_ZThn44_N7S7856C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7856C4D0Ev,_ZThn68_N7S7856C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7856C4D0Ev,_ZThn32_N7S7856C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7856C4D1Ev,_ZThn68_N7S7856C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7856C4D1Ev,_ZThn32_N7S7856C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7856C4D0Ev,_ZTv0_n60_N7S7856C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7856C4D0Ev,_ZThn16_N7S7856C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7856C4D1Ev,_ZTv0_n60_N7S7856C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7856C4D1Ev,_ZThn16_N7S7856C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C19D0Ev,_ZTv0_n36_N8S7856C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7856C19D0Ev,_ZThn72_N8S7856C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C19D1Ev,_ZTv0_n36_N8S7856C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7856C19D1Ev,_ZThn72_N8S7856C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7856C19D0Ev,_ZThn56_N8S7856C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7856C19D0Ev,_ZThn40_N8S7856C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7856C19D1Ev,_ZThn56_N8S7856C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7856C19D1Ev,_ZThn40_N8S7856C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C6D0Ev,_ZThn28_N7S7856C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7856C6D0Ev,_ZThn12_N7S7856C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7856C6D0Ev,_ZThn56_N7S7856C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7856C6D0Ev,_ZThn40_N7S7856C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C6D1Ev,_ZThn28_N7S7856C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7856C6D1Ev,_ZThn12_N7S7856C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7856C6D1Ev,_ZThn56_N7S7856C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7856C6D1Ev,_ZThn40_N7S7856C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N7S7856C3D0Ev,_ZTv0_n72_N7S7856C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn448_N7S7856C3D0Ev,_ZThn236_N7S7856C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn400_N7S7856C3D0Ev,_ZThn212_N7S7856C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N7S7856C3D1Ev,_ZTv0_n72_N7S7856C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn448_N7S7856C3D1Ev,_ZThn236_N7S7856C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn400_N7S7856C3D1Ev,_ZThn212_N7S7856C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n176_N7S7856C3D0Ev,_ZTv0_n88_N7S7856C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N7S7856C3D0Ev,_ZThn140_N7S7856C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n176_N7S7856C3D1Ev,_ZTv0_n88_N7S7856C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N7S7856C3D1Ev,_ZThn140_N7S7856C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7856C3D0Ev,_ZTv0_n36_N7S7856C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S7856C3D0Ev,_ZThn100_N7S7856C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7856C3D1Ev,_ZTv0_n36_N7S7856C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S7856C3D1Ev,_ZThn100_N7S7856C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C3D0Ev,_ZTv0_n32_N7S7856C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S7856C3D0Ev,_ZThn84_N7S7856C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7856C3D0Ev,_ZThn68_N7S7856C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C3D1Ev,_ZTv0_n32_N7S7856C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S7856C3D1Ev,_ZThn84_N7S7856C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7856C3D1Ev,_ZThn68_N7S7856C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C3D0Ev,_ZTv0_n44_N7S7856C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S7856C3D0Ev,_ZThn92_N7S7856C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7856C3D0Ev,_ZThn56_N7S7856C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C3D1Ev,_ZTv0_n44_N7S7856C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S7856C3D1Ev,_ZThn92_N7S7856C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7856C3D1Ev,_ZThn56_N7S7856C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7856C3D0Ev,_ZTv0_n60_N7S7856C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S7856C3D0Ev,_ZThn116_N7S7856C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7856C3D0Ev,_ZThn40_N7S7856C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7856C3D1Ev,_ZTv0_n60_N7S7856C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S7856C3D1Ev,_ZThn116_N7S7856C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7856C3D1Ev,_ZThn40_N7S7856C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N7S7856C3D0Ev,_ZTv0_n68_N7S7856C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C3D0Ev,_ZThn24_N7S7856C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N7S7856C3D1Ev,_ZTv0_n68_N7S7856C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C3D1Ev,_ZThn24_N7S7856C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C22D0Ev,_ZTv0_n36_N8S7856C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7856C22D0Ev,_ZThn100_N8S7856C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C22D1Ev,_ZTv0_n36_N8S7856C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7856C22D1Ev,_ZThn100_N8S7856C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C22D0Ev,_ZTv0_n60_N8S7856C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7856C22D0Ev,_ZThn40_N8S7856C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C22D1Ev,_ZTv0_n60_N8S7856C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7856C22D1Ev,_ZThn40_N8S7856C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N8S7856C22D0Ev,_ZTv0_n68_N8S7856C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7856C22D0Ev,_ZThn24_N8S7856C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N8S7856C22D1Ev,_ZTv0_n68_N8S7856C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7856C22D1Ev,_ZThn24_N8S7856C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S7856C22D0Ev,_ZThn84_N8S7856C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7856C22D0Ev,_ZThn68_N8S7856C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S7856C22D1Ev,_ZThn84_N8S7856C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7856C22D1Ev,_ZThn68_N8S7856C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S7856C22D0Ev,_ZThn92_N8S7856C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7856C22D0Ev,_ZThn56_N8S7856C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S7856C22D1Ev,_ZThn92_N8S7856C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7856C22D1Ev,_ZThn56_N8S7856C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7856C5D0Ev,_ZThn44_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C5D0Ev,_ZThn28_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7856C5D0Ev,_ZThn80_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7856C5D0Ev,_ZThn64_N7S7856C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7856C5D1Ev,_ZThn44_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C5D1Ev,_ZThn28_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7856C5D1Ev,_ZThn80_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7856C5D1Ev,_ZThn64_N7S7856C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7856C5D0Ev,_ZThn52_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7856C5D0Ev,_ZThn16_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7856C5D0Ev,_ZThn88_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7856C5D0Ev,_ZThn52_N7S7856C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7856C5D1Ev,_ZThn52_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7856C5D1Ev,_ZThn16_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7856C5D1Ev,_ZThn88_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7856C5D1Ev,_ZThn52_N7S7856C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7856C18D0Ev,_ZThn44_N8S7856C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7856C18D0Ev,_ZThn80_N8S7856C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7856C18D1Ev,_ZThn44_N8S7856C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7856C18D1Ev,_ZThn80_N8S7856C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N7S7856C2D0Ev,_ZTv0_n72_N7S7856C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn688_N7S7856C2D0Ev,_ZThn364_N7S7856C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn640_N7S7856C2D0Ev,_ZThn340_N7S7856C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N7S7856C2D1Ev,_ZTv0_n72_N7S7856C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn688_N7S7856C2D1Ev,_ZThn364_N7S7856C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn640_N7S7856C2D1Ev,_ZThn340_N7S7856C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n176_N7S7856C2D0Ev,_ZTv0_n88_N7S7856C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N7S7856C2D0Ev,_ZThn268_N7S7856C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n176_N7S7856C2D1Ev,_ZTv0_n88_N7S7856C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N7S7856C2D1Ev,_ZThn268_N7S7856C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7856C2D0Ev,_ZTv0_n36_N7S7856C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn424_N7S7856C2D0Ev,_ZThn228_N7S7856C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7856C2D1Ev,_ZTv0_n36_N7S7856C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn424_N7S7856C2D1Ev,_ZThn228_N7S7856C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C2D0Ev,_ZTv0_n32_N7S7856C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn392_N7S7856C2D0Ev,_ZThn212_N7S7856C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn360_N7S7856C2D0Ev,_ZThn196_N7S7856C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C2D1Ev,_ZTv0_n32_N7S7856C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn392_N7S7856C2D1Ev,_ZThn212_N7S7856C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn360_N7S7856C2D1Ev,_ZThn196_N7S7856C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C2D0Ev,_ZTv0_n44_N7S7856C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N7S7856C2D0Ev,_ZThn220_N7S7856C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn344_N7S7856C2D0Ev,_ZThn184_N7S7856C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C2D1Ev,_ZTv0_n44_N7S7856C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N7S7856C2D1Ev,_ZThn220_N7S7856C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn344_N7S7856C2D1Ev,_ZThn184_N7S7856C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7856C2D0Ev,_ZTv0_n60_N7S7856C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N7S7856C2D0Ev,_ZThn244_N7S7856C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn312_N7S7856C2D0Ev,_ZThn168_N7S7856C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7856C2D1Ev,_ZTv0_n60_N7S7856C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N7S7856C2D1Ev,_ZThn244_N7S7856C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn312_N7S7856C2D1Ev,_ZThn168_N7S7856C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N7S7856C2D0Ev,_ZTv0_n68_N7S7856C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N7S7856C2D0Ev,_ZThn152_N7S7856C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N7S7856C2D1Ev,_ZTv0_n68_N7S7856C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N7S7856C2D1Ev,_ZThn152_N7S7856C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n192_N7S7856C2D0Ev,_ZTv0_n96_N7S7856C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N7S7856C2D0Ev,_ZThn128_N7S7856C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n192_N7S7856C2D1Ev,_ZTv0_n96_N7S7856C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N7S7856C2D1Ev,_ZThn128_N7S7856C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N7S7856C1D0Ev,_ZTv0_n72_N7S7856C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn688_N7S7856C1D0Ev,_ZThn364_N7S7856C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn640_N7S7856C1D0Ev,_ZThn340_N7S7856C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N7S7856C1D1Ev,_ZTv0_n72_N7S7856C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn688_N7S7856C1D1Ev,_ZThn364_N7S7856C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn640_N7S7856C1D1Ev,_ZThn340_N7S7856C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n176_N7S7856C1D0Ev,_ZTv0_n88_N7S7856C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N7S7856C1D0Ev,_ZThn268_N7S7856C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n176_N7S7856C1D1Ev,_ZTv0_n88_N7S7856C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N7S7856C1D1Ev,_ZThn268_N7S7856C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7856C1D0Ev,_ZTv0_n36_N7S7856C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn424_N7S7856C1D0Ev,_ZThn228_N7S7856C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7856C1D1Ev,_ZTv0_n36_N7S7856C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn424_N7S7856C1D1Ev,_ZThn228_N7S7856C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C1D0Ev,_ZTv0_n32_N7S7856C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn392_N7S7856C1D0Ev,_ZThn212_N7S7856C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn360_N7S7856C1D0Ev,_ZThn196_N7S7856C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C1D1Ev,_ZTv0_n32_N7S7856C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn392_N7S7856C1D1Ev,_ZThn212_N7S7856C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn360_N7S7856C1D1Ev,_ZThn196_N7S7856C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C1D0Ev,_ZTv0_n44_N7S7856C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn728_N7S7856C1D0Ev,_ZThn384_N7S7856C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn408_N7S7856C1D0Ev,_ZThn220_N7S7856C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn344_N7S7856C1D0Ev,_ZThn184_N7S7856C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C1D1Ev,_ZTv0_n44_N7S7856C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn728_N7S7856C1D1Ev,_ZThn384_N7S7856C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn408_N7S7856C1D1Ev,_ZThn220_N7S7856C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn344_N7S7856C1D1Ev,_ZThn184_N7S7856C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7856C1D0Ev,_ZTv0_n60_N7S7856C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N7S7856C1D0Ev,_ZThn244_N7S7856C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn312_N7S7856C1D0Ev,_ZThn168_N7S7856C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7856C1D1Ev,_ZTv0_n60_N7S7856C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N7S7856C1D1Ev,_ZThn244_N7S7856C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn312_N7S7856C1D1Ev,_ZThn168_N7S7856C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N7S7856C1D0Ev,_ZTv0_n68_N7S7856C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N7S7856C1D0Ev,_ZThn152_N7S7856C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N7S7856C1D1Ev,_ZTv0_n68_N7S7856C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N7S7856C1D1Ev,_ZThn152_N7S7856C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n192_N7S7856C1D0Ev,_ZTv0_n96_N7S7856C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N7S7856C1D0Ev,_ZThn128_N7S7856C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n192_N7S7856C1D1Ev,_ZTv0_n96_N7S7856C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N7S7856C1D1Ev,_ZThn128_N7S7856C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7856C1 = {  "S7856C1", // class name
  bases_S7856C1, 145,
  &(vtc_S7856C1[0]), // expected_vtbl_contents
  &(vtt_S7856C1[0]), // expected_vtt_contents
  ABISELECT(744,392), // object size
  NSPAIRA(_ZTI7S7856C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7856C1),436, //virtual function table var
  26, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7856C1),480, //virtual table table var
  78, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names31,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1304C4  {
  int s1304c4f0;
  __tsi64 s1304c4f1;
  void *s1304c4f2[4];
  int s1304c4f3[2];
  void *s1304c4f4;
  ::S40C9_nt s1304c4f5;
  void *s1304c4f6[2];
  virtual  ~S1304C4(); // _ZN7S1304C4D1Ev
  virtual void  v11(); // _ZN7S1304C43v11Ev
  virtual void  v12(); // _ZN7S1304C43v12Ev
  virtual void  v13(); // _ZN7S1304C43v13Ev
  virtual void  v14(); // _ZN7S1304C43v14Ev
  virtual void  v15(); // _ZN7S1304C43v15Ev
  virtual void  v16(); // _ZN7S1304C43v16Ev
  virtual void  v17(); // _ZN7S1304C43v17Ev
  virtual void  v18(); // _ZN7S1304C43v18Ev
  virtual void  v19(); // _ZN7S1304C43v19Ev
  virtual void  v20(); // _ZN7S1304C43v20Ev
  virtual void  v21(); // _ZN7S1304C43v21Ev
  virtual void  v22(); // _ZN7S1304C43v22Ev
  virtual void  v23(); // _ZN7S1304C43v23Ev
  virtual void  v24(); // _ZN7S1304C43v24Ev
  virtual void  v25(); // _ZN7S1304C43v25Ev
  virtual void  v26(); // _ZN7S1304C43v26Ev
  virtual void  v27(); // _ZN7S1304C43v27Ev
  virtual void  v28(); // _ZN7S1304C43v28Ev
  virtual void  v29(); // _ZN7S1304C43v29Ev
  virtual void  v30(); // _ZN7S1304C43v30Ev
  virtual void  v31(); // _ZN7S1304C43v31Ev
  virtual void  v32(); // _ZN7S1304C43v32Ev
  virtual void  v33(); // _ZN7S1304C43v33Ev
  virtual void  v34(); // _ZN7S1304C43v34Ev
  virtual void  v35(); // _ZN7S1304C43v35Ev
  virtual void  v36(); // _ZN7S1304C43v36Ev
  virtual void  v37(); // _ZN7S1304C43v37Ev
  virtual void  v38(); // _ZN7S1304C43v38Ev
  virtual void  v39(); // _ZN7S1304C43v39Ev
  virtual void  v40(); // _ZN7S1304C43v40Ev
  virtual void  v41(); // _ZN7S1304C43v41Ev
  virtual void  v42(); // _ZN7S1304C43v42Ev
  virtual void  v43(); // _ZN7S1304C43v43Ev
  virtual void  v44(); // _ZN7S1304C43v44Ev
  virtual void  v45(); // _ZN7S1304C43v45Ev
  virtual void  v46(); // _ZN7S1304C43v46Ev
  virtual void  v47(); // _ZN7S1304C43v47Ev
  virtual void  v48(); // _ZN7S1304C43v48Ev
  virtual void  v49(); // _ZN7S1304C43v49Ev
  virtual void  v50(); // _ZN7S1304C43v50Ev
  virtual void  v51(); // _ZN7S1304C43v51Ev
  virtual void  v52(); // _ZN7S1304C43v52Ev
  virtual void  v53(); // _ZN7S1304C43v53Ev
  virtual void  v54(); // _ZN7S1304C43v54Ev
  virtual void  v55(); // _ZN7S1304C43v55Ev
  virtual void  v56(); // _ZN7S1304C43v56Ev
  virtual void  v57(); // _ZN7S1304C43v57Ev
  virtual void  v58(); // _ZN7S1304C43v58Ev
  virtual void  v59(); // _ZN7S1304C43v59Ev
  virtual void  v60(); // _ZN7S1304C43v60Ev
  virtual void  v61(); // _ZN7S1304C43v61Ev
  virtual void  v62(); // _ZN7S1304C43v62Ev
  virtual void  v63(); // _ZN7S1304C43v63Ev
  virtual void  v64(); // _ZN7S1304C43v64Ev
  virtual void  v65(); // _ZN7S1304C43v65Ev
  virtual void  v66(); // _ZN7S1304C43v66Ev
  virtual void  v67(); // _ZN7S1304C43v67Ev
  virtual void  v68(); // _ZN7S1304C43v68Ev
  virtual void  v69(); // _ZN7S1304C43v69Ev
  virtual void  v70(); // _ZN7S1304C43v70Ev
  virtual void  v71(); // _ZN7S1304C43v71Ev
  virtual void  v72(); // _ZN7S1304C43v72Ev
  virtual void  v73(); // _ZN7S1304C43v73Ev
  virtual void  v74(); // _ZN7S1304C43v74Ev
  S1304C4(); // tgen
};
//SIG(-1 S1304C4) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 Fi FL Fp[4] Fi[2] Fp FC2{ m Fi[2]} Fp[2]}


 S1304C4 ::~S1304C4(){ note_dtor("S1304C4", this);}
void  S1304C4 ::v11(){vfunc_called(this, "_ZN7S1304C43v11Ev");}
void  S1304C4 ::v12(){vfunc_called(this, "_ZN7S1304C43v12Ev");}
void  S1304C4 ::v13(){vfunc_called(this, "_ZN7S1304C43v13Ev");}
void  S1304C4 ::v14(){vfunc_called(this, "_ZN7S1304C43v14Ev");}
void  S1304C4 ::v15(){vfunc_called(this, "_ZN7S1304C43v15Ev");}
void  S1304C4 ::v16(){vfunc_called(this, "_ZN7S1304C43v16Ev");}
void  S1304C4 ::v17(){vfunc_called(this, "_ZN7S1304C43v17Ev");}
void  S1304C4 ::v18(){vfunc_called(this, "_ZN7S1304C43v18Ev");}
void  S1304C4 ::v19(){vfunc_called(this, "_ZN7S1304C43v19Ev");}
void  S1304C4 ::v20(){vfunc_called(this, "_ZN7S1304C43v20Ev");}
void  S1304C4 ::v21(){vfunc_called(this, "_ZN7S1304C43v21Ev");}
void  S1304C4 ::v22(){vfunc_called(this, "_ZN7S1304C43v22Ev");}
void  S1304C4 ::v23(){vfunc_called(this, "_ZN7S1304C43v23Ev");}
void  S1304C4 ::v24(){vfunc_called(this, "_ZN7S1304C43v24Ev");}
void  S1304C4 ::v25(){vfunc_called(this, "_ZN7S1304C43v25Ev");}
void  S1304C4 ::v26(){vfunc_called(this, "_ZN7S1304C43v26Ev");}
void  S1304C4 ::v27(){vfunc_called(this, "_ZN7S1304C43v27Ev");}
void  S1304C4 ::v28(){vfunc_called(this, "_ZN7S1304C43v28Ev");}
void  S1304C4 ::v29(){vfunc_called(this, "_ZN7S1304C43v29Ev");}
void  S1304C4 ::v30(){vfunc_called(this, "_ZN7S1304C43v30Ev");}
void  S1304C4 ::v31(){vfunc_called(this, "_ZN7S1304C43v31Ev");}
void  S1304C4 ::v32(){vfunc_called(this, "_ZN7S1304C43v32Ev");}
void  S1304C4 ::v33(){vfunc_called(this, "_ZN7S1304C43v33Ev");}
void  S1304C4 ::v34(){vfunc_called(this, "_ZN7S1304C43v34Ev");}
void  S1304C4 ::v35(){vfunc_called(this, "_ZN7S1304C43v35Ev");}
void  S1304C4 ::v36(){vfunc_called(this, "_ZN7S1304C43v36Ev");}
void  S1304C4 ::v37(){vfunc_called(this, "_ZN7S1304C43v37Ev");}
void  S1304C4 ::v38(){vfunc_called(this, "_ZN7S1304C43v38Ev");}
void  S1304C4 ::v39(){vfunc_called(this, "_ZN7S1304C43v39Ev");}
void  S1304C4 ::v40(){vfunc_called(this, "_ZN7S1304C43v40Ev");}
void  S1304C4 ::v41(){vfunc_called(this, "_ZN7S1304C43v41Ev");}
void  S1304C4 ::v42(){vfunc_called(this, "_ZN7S1304C43v42Ev");}
void  S1304C4 ::v43(){vfunc_called(this, "_ZN7S1304C43v43Ev");}
void  S1304C4 ::v44(){vfunc_called(this, "_ZN7S1304C43v44Ev");}
void  S1304C4 ::v45(){vfunc_called(this, "_ZN7S1304C43v45Ev");}
void  S1304C4 ::v46(){vfunc_called(this, "_ZN7S1304C43v46Ev");}
void  S1304C4 ::v47(){vfunc_called(this, "_ZN7S1304C43v47Ev");}
void  S1304C4 ::v48(){vfunc_called(this, "_ZN7S1304C43v48Ev");}
void  S1304C4 ::v49(){vfunc_called(this, "_ZN7S1304C43v49Ev");}
void  S1304C4 ::v50(){vfunc_called(this, "_ZN7S1304C43v50Ev");}
void  S1304C4 ::v51(){vfunc_called(this, "_ZN7S1304C43v51Ev");}
void  S1304C4 ::v52(){vfunc_called(this, "_ZN7S1304C43v52Ev");}
void  S1304C4 ::v53(){vfunc_called(this, "_ZN7S1304C43v53Ev");}
void  S1304C4 ::v54(){vfunc_called(this, "_ZN7S1304C43v54Ev");}
void  S1304C4 ::v55(){vfunc_called(this, "_ZN7S1304C43v55Ev");}
void  S1304C4 ::v56(){vfunc_called(this, "_ZN7S1304C43v56Ev");}
void  S1304C4 ::v57(){vfunc_called(this, "_ZN7S1304C43v57Ev");}
void  S1304C4 ::v58(){vfunc_called(this, "_ZN7S1304C43v58Ev");}
void  S1304C4 ::v59(){vfunc_called(this, "_ZN7S1304C43v59Ev");}
void  S1304C4 ::v60(){vfunc_called(this, "_ZN7S1304C43v60Ev");}
void  S1304C4 ::v61(){vfunc_called(this, "_ZN7S1304C43v61Ev");}
void  S1304C4 ::v62(){vfunc_called(this, "_ZN7S1304C43v62Ev");}
void  S1304C4 ::v63(){vfunc_called(this, "_ZN7S1304C43v63Ev");}
void  S1304C4 ::v64(){vfunc_called(this, "_ZN7S1304C43v64Ev");}
void  S1304C4 ::v65(){vfunc_called(this, "_ZN7S1304C43v65Ev");}
void  S1304C4 ::v66(){vfunc_called(this, "_ZN7S1304C43v66Ev");}
void  S1304C4 ::v67(){vfunc_called(this, "_ZN7S1304C43v67Ev");}
void  S1304C4 ::v68(){vfunc_called(this, "_ZN7S1304C43v68Ev");}
void  S1304C4 ::v69(){vfunc_called(this, "_ZN7S1304C43v69Ev");}
void  S1304C4 ::v70(){vfunc_called(this, "_ZN7S1304C43v70Ev");}
void  S1304C4 ::v71(){vfunc_called(this, "_ZN7S1304C43v71Ev");}
void  S1304C4 ::v72(){vfunc_called(this, "_ZN7S1304C43v72Ev");}
void  S1304C4 ::v73(){vfunc_called(this, "_ZN7S1304C43v73Ev");}
void  S1304C4 ::v74(){vfunc_called(this, "_ZN7S1304C43v74Ev");}
S1304C4 ::S1304C4(){ note_ctor("S1304C4", this);} // tgen

static void Test_S1304C4()
{
  extern Class_Descriptor cd_S1304C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S1304C4, buf);
    S1304C4 *dp, &lv = *(dp=new (buf) S1304C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S1304C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1304C4)");
    check_field_offset(lv, s1304c4f0, ABISELECT(8,4), "S1304C4.s1304c4f0");
    check_field_offset(lv, s1304c4f1, ABISELECT(16,8), "S1304C4.s1304c4f1");
    check_field_offset(lv, s1304c4f2, ABISELECT(24,16), "S1304C4.s1304c4f2");
    check_field_offset(lv, s1304c4f3, ABISELECT(56,32), "S1304C4.s1304c4f3");
    check_field_offset(lv, s1304c4f4, ABISELECT(64,40), "S1304C4.s1304c4f4");
    check_field_offset(lv, s1304c4f5, ABISELECT(72,44), "S1304C4.s1304c4f5");
    check_field_offset(lv, s1304c4f6, ABISELECT(80,52), "S1304C4.s1304c4f6");
    test_class_info(&lv, &cd_S1304C4);
    dp->~S1304C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1304C4(Test_S1304C4, "S1304C4", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S1304C4C1Ev();
extern void _ZN7S1304C4D1Ev();
Name_Map name_map_S1304C4[] = {
  NSPAIR(_ZN7S1304C4C1Ev),
  NSPAIR(_ZN7S1304C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S1304C4[];
extern void _ZN7S1304C4D1Ev();
extern void _ZN7S1304C4D0Ev();
extern void _ZN7S1304C43v11Ev();
extern void _ZN7S1304C43v12Ev();
extern void _ZN7S1304C43v13Ev();
extern void _ZN7S1304C43v14Ev();
extern void _ZN7S1304C43v15Ev();
extern void _ZN7S1304C43v16Ev();
extern void _ZN7S1304C43v17Ev();
extern void _ZN7S1304C43v18Ev();
extern void _ZN7S1304C43v19Ev();
extern void _ZN7S1304C43v20Ev();
extern void _ZN7S1304C43v21Ev();
extern void _ZN7S1304C43v22Ev();
extern void _ZN7S1304C43v23Ev();
extern void _ZN7S1304C43v24Ev();
extern void _ZN7S1304C43v25Ev();
extern void _ZN7S1304C43v26Ev();
extern void _ZN7S1304C43v27Ev();
extern void _ZN7S1304C43v28Ev();
extern void _ZN7S1304C43v29Ev();
extern void _ZN7S1304C43v30Ev();
extern void _ZN7S1304C43v31Ev();
extern void _ZN7S1304C43v32Ev();
extern void _ZN7S1304C43v33Ev();
extern void _ZN7S1304C43v34Ev();
extern void _ZN7S1304C43v35Ev();
extern void _ZN7S1304C43v36Ev();
extern void _ZN7S1304C43v37Ev();
extern void _ZN7S1304C43v38Ev();
extern void _ZN7S1304C43v39Ev();
extern void _ZN7S1304C43v40Ev();
extern void _ZN7S1304C43v41Ev();
extern void _ZN7S1304C43v42Ev();
extern void _ZN7S1304C43v43Ev();
extern void _ZN7S1304C43v44Ev();
extern void _ZN7S1304C43v45Ev();
extern void _ZN7S1304C43v46Ev();
extern void _ZN7S1304C43v47Ev();
extern void _ZN7S1304C43v48Ev();
extern void _ZN7S1304C43v49Ev();
extern void _ZN7S1304C43v50Ev();
extern void _ZN7S1304C43v51Ev();
extern void _ZN7S1304C43v52Ev();
extern void _ZN7S1304C43v53Ev();
extern void _ZN7S1304C43v54Ev();
extern void _ZN7S1304C43v55Ev();
extern void _ZN7S1304C43v56Ev();
extern void _ZN7S1304C43v57Ev();
extern void _ZN7S1304C43v58Ev();
extern void _ZN7S1304C43v59Ev();
extern void _ZN7S1304C43v60Ev();
extern void _ZN7S1304C43v61Ev();
extern void _ZN7S1304C43v62Ev();
extern void _ZN7S1304C43v63Ev();
extern void _ZN7S1304C43v64Ev();
extern void _ZN7S1304C43v65Ev();
extern void _ZN7S1304C43v66Ev();
extern void _ZN7S1304C43v67Ev();
extern void _ZN7S1304C43v68Ev();
extern void _ZN7S1304C43v69Ev();
extern void _ZN7S1304C43v70Ev();
extern void _ZN7S1304C43v71Ev();
extern void _ZN7S1304C43v72Ev();
extern void _ZN7S1304C43v73Ev();
extern void _ZN7S1304C43v74Ev();
static  VTBL_ENTRY vtc_S1304C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1304C4[0]),
  (VTBL_ENTRY)&_ZN7S1304C4D1Ev,
  (VTBL_ENTRY)&_ZN7S1304C4D0Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v69Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v70Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v71Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v72Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v73Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v74Ev,
};
extern VTBL_ENTRY _ZTI7S1304C4[];
extern  VTBL_ENTRY _ZTV7S1304C4[];
Class_Descriptor cd_S1304C4 = {  "S1304C4", // class name
  0,0,//no base classes
  &(vtc_S1304C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S1304C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S1304C4),68, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1304C3_nt  : S1304C4 {
  unsigned int s1304c3f0:1;
  unsigned int s1304c3f1:1;
  unsigned int s1304c3f2:1;
  unsigned int s1304c3f3:1;
  unsigned int s1304c3f4:1;
  unsigned int s1304c3f5:1;
  unsigned int s1304c3f6:1;
  ::S7856C24 s1304c3f7;
  virtual  ~S1304C3_nt(); // _ZN10S1304C3_ntD1Ev
  virtual void  v75(); // _ZN10S1304C3_nt3v75Ev
  virtual void  v76(); // _ZN10S1304C3_nt3v76Ev
  virtual void  v77(); // _ZN10S1304C3_nt3v77Ev
  virtual void  v78(); // _ZN10S1304C3_nt3v78Ev
  virtual void  v79(); // _ZN10S1304C3_nt3v79Ev
  virtual void  v80(); // _ZN10S1304C3_nt3v80Ev
  virtual void  v81(); // _ZN10S1304C3_nt3v81Ev
  virtual void  v82(); // _ZN10S1304C3_nt3v82Ev
  virtual void  v83(); // _ZN10S1304C3_nt3v83Ev
  virtual void  v84(); // _ZN10S1304C3_nt3v84Ev
  virtual void  v85(); // _ZN10S1304C3_nt3v85Ev
  virtual void  v86(); // _ZN10S1304C3_nt3v86Ev
  virtual void  v87(); // _ZN10S1304C3_nt3v87Ev
  virtual void  v88(); // _ZN10S1304C3_nt3v88Ev
  virtual void  v89(); // _ZN10S1304C3_nt3v89Ev
  virtual void  v90(); // _ZN10S1304C3_nt3v90Ev
  virtual void  v91(); // _ZN10S1304C3_nt3v91Ev
  virtual void  v92(); // _ZN10S1304C3_nt3v92Ev
  virtual void  v93(); // _ZN10S1304C3_nt3v93Ev
  virtual void  v94(); // _ZN10S1304C3_nt3v94Ev
  S1304C3_nt(); // tgen
};
//SIG(-1 S1304C3_nt) C1{ BC2{ vd v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 Fi FL Fp[4] Fi[2] Fp FC3{ m Fi[2]} Fp[2]} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 FC4{ m}}


 S1304C3_nt ::~S1304C3_nt(){ note_dtor("S1304C3_nt", this);}
void  S1304C3_nt ::v75(){vfunc_called(this, "_ZN10S1304C3_nt3v75Ev");}
void  S1304C3_nt ::v76(){vfunc_called(this, "_ZN10S1304C3_nt3v76Ev");}
void  S1304C3_nt ::v77(){vfunc_called(this, "_ZN10S1304C3_nt3v77Ev");}
void  S1304C3_nt ::v78(){vfunc_called(this, "_ZN10S1304C3_nt3v78Ev");}
void  S1304C3_nt ::v79(){vfunc_called(this, "_ZN10S1304C3_nt3v79Ev");}
void  S1304C3_nt ::v80(){vfunc_called(this, "_ZN10S1304C3_nt3v80Ev");}
void  S1304C3_nt ::v81(){vfunc_called(this, "_ZN10S1304C3_nt3v81Ev");}
void  S1304C3_nt ::v82(){vfunc_called(this, "_ZN10S1304C3_nt3v82Ev");}
void  S1304C3_nt ::v83(){vfunc_called(this, "_ZN10S1304C3_nt3v83Ev");}
void  S1304C3_nt ::v84(){vfunc_called(this, "_ZN10S1304C3_nt3v84Ev");}
void  S1304C3_nt ::v85(){vfunc_called(this, "_ZN10S1304C3_nt3v85Ev");}
void  S1304C3_nt ::v86(){vfunc_called(this, "_ZN10S1304C3_nt3v86Ev");}
void  S1304C3_nt ::v87(){vfunc_called(this, "_ZN10S1304C3_nt3v87Ev");}
void  S1304C3_nt ::v88(){vfunc_called(this, "_ZN10S1304C3_nt3v88Ev");}
void  S1304C3_nt ::v89(){vfunc_called(this, "_ZN10S1304C3_nt3v89Ev");}
void  S1304C3_nt ::v90(){vfunc_called(this, "_ZN10S1304C3_nt3v90Ev");}
void  S1304C3_nt ::v91(){vfunc_called(this, "_ZN10S1304C3_nt3v91Ev");}
void  S1304C3_nt ::v92(){vfunc_called(this, "_ZN10S1304C3_nt3v92Ev");}
void  S1304C3_nt ::v93(){vfunc_called(this, "_ZN10S1304C3_nt3v93Ev");}
void  S1304C3_nt ::v94(){vfunc_called(this, "_ZN10S1304C3_nt3v94Ev");}
S1304C3_nt ::S1304C3_nt(){ note_ctor("S1304C3_nt", this);} // tgen

//skip512 S1304C3_nt

#else // __cplusplus

extern void _ZN10S1304C3_ntC1Ev();
extern void _ZN10S1304C3_ntD1Ev();
Name_Map name_map_S1304C3_nt[] = {
  NSPAIR(_ZN10S1304C3_ntC1Ev),
  NSPAIR(_ZN10S1304C3_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1304C4;
extern VTBL_ENTRY _ZTI7S1304C4[];
extern  VTBL_ENTRY _ZTV7S1304C4[];
static Base_Class bases_S1304C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1304C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S1304C3_nt[];
extern void _ZN10S1304C3_ntD1Ev();
extern void _ZN10S1304C3_ntD0Ev();
extern void _ZN7S1304C43v11Ev();
extern void _ZN7S1304C43v12Ev();
extern void _ZN7S1304C43v13Ev();
extern void _ZN7S1304C43v14Ev();
extern void _ZN7S1304C43v15Ev();
extern void _ZN7S1304C43v16Ev();
extern void _ZN7S1304C43v17Ev();
extern void _ZN7S1304C43v18Ev();
extern void _ZN7S1304C43v19Ev();
extern void _ZN7S1304C43v20Ev();
extern void _ZN7S1304C43v21Ev();
extern void _ZN7S1304C43v22Ev();
extern void _ZN7S1304C43v23Ev();
extern void _ZN7S1304C43v24Ev();
extern void _ZN7S1304C43v25Ev();
extern void _ZN7S1304C43v26Ev();
extern void _ZN7S1304C43v27Ev();
extern void _ZN7S1304C43v28Ev();
extern void _ZN7S1304C43v29Ev();
extern void _ZN7S1304C43v30Ev();
extern void _ZN7S1304C43v31Ev();
extern void _ZN7S1304C43v32Ev();
extern void _ZN7S1304C43v33Ev();
extern void _ZN7S1304C43v34Ev();
extern void _ZN7S1304C43v35Ev();
extern void _ZN7S1304C43v36Ev();
extern void _ZN7S1304C43v37Ev();
extern void _ZN7S1304C43v38Ev();
extern void _ZN7S1304C43v39Ev();
extern void _ZN7S1304C43v40Ev();
extern void _ZN7S1304C43v41Ev();
extern void _ZN7S1304C43v42Ev();
extern void _ZN7S1304C43v43Ev();
extern void _ZN7S1304C43v44Ev();
extern void _ZN7S1304C43v45Ev();
extern void _ZN7S1304C43v46Ev();
extern void _ZN7S1304C43v47Ev();
extern void _ZN7S1304C43v48Ev();
extern void _ZN7S1304C43v49Ev();
extern void _ZN7S1304C43v50Ev();
extern void _ZN7S1304C43v51Ev();
extern void _ZN7S1304C43v52Ev();
extern void _ZN7S1304C43v53Ev();
extern void _ZN7S1304C43v54Ev();
extern void _ZN7S1304C43v55Ev();
extern void _ZN7S1304C43v56Ev();
extern void _ZN7S1304C43v57Ev();
extern void _ZN7S1304C43v58Ev();
extern void _ZN7S1304C43v59Ev();
extern void _ZN7S1304C43v60Ev();
extern void _ZN7S1304C43v61Ev();
extern void _ZN7S1304C43v62Ev();
extern void _ZN7S1304C43v63Ev();
extern void _ZN7S1304C43v64Ev();
extern void _ZN7S1304C43v65Ev();
extern void _ZN7S1304C43v66Ev();
extern void _ZN7S1304C43v67Ev();
extern void _ZN7S1304C43v68Ev();
extern void _ZN7S1304C43v69Ev();
extern void _ZN7S1304C43v70Ev();
extern void _ZN7S1304C43v71Ev();
extern void _ZN7S1304C43v72Ev();
extern void _ZN7S1304C43v73Ev();
extern void _ZN7S1304C43v74Ev();
extern void _ZN10S1304C3_nt3v75Ev();
extern void _ZN10S1304C3_nt3v76Ev();
extern void _ZN10S1304C3_nt3v77Ev();
extern void _ZN10S1304C3_nt3v78Ev();
extern void _ZN10S1304C3_nt3v79Ev();
extern void _ZN10S1304C3_nt3v80Ev();
extern void _ZN10S1304C3_nt3v81Ev();
extern void _ZN10S1304C3_nt3v82Ev();
extern void _ZN10S1304C3_nt3v83Ev();
extern void _ZN10S1304C3_nt3v84Ev();
extern void _ZN10S1304C3_nt3v85Ev();
extern void _ZN10S1304C3_nt3v86Ev();
extern void _ZN10S1304C3_nt3v87Ev();
extern void _ZN10S1304C3_nt3v88Ev();
extern void _ZN10S1304C3_nt3v89Ev();
extern void _ZN10S1304C3_nt3v90Ev();
extern void _ZN10S1304C3_nt3v91Ev();
extern void _ZN10S1304C3_nt3v92Ev();
extern void _ZN10S1304C3_nt3v93Ev();
extern void _ZN10S1304C3_nt3v94Ev();
static  VTBL_ENTRY vtc_S1304C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S1304C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S1304C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v69Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v70Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v71Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v72Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v73Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v74Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v75Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v76Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v77Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v78Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v79Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v80Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v81Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v82Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v83Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v84Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v85Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v86Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v87Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v88Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v89Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v90Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v91Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v92Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v93Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v94Ev,
};
extern VTBL_ENTRY _ZTI10S1304C3_nt[];
VTBL_ENTRY *P__ZTI10S1304C3_nt = _ZTI10S1304C3_nt; 
extern  VTBL_ENTRY _ZTV10S1304C3_nt[];
Class_Descriptor cd_S1304C3_nt = {  "S1304C3_nt", // class name
  bases_S1304C3_nt, 1,
  &(vtc_S1304C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(104,64), // object size
  NSPAIRA(_ZTI10S1304C3_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S1304C3_nt),88, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1304C2_nt  : S1304C3_nt {
  virtual  ~S1304C2_nt(); // _ZN10S1304C2_ntD1Ev
  virtual void  v95(); // _ZN10S1304C2_nt3v95Ev
  virtual void  v96(); // _ZN10S1304C2_nt3v96Ev
  S1304C2_nt(); // tgen
};
//SIG(-1 S1304C2_nt) C1{ BC2{ BC3{ vd v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 Fi FL Fp[4] Fi[2] Fp FC4{ m Fi[2]} Fp[2]} vd v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 FC5{ m}} vd v1 v2}


 S1304C2_nt ::~S1304C2_nt(){ note_dtor("S1304C2_nt", this);}
void  S1304C2_nt ::v95(){vfunc_called(this, "_ZN10S1304C2_nt3v95Ev");}
void  S1304C2_nt ::v96(){vfunc_called(this, "_ZN10S1304C2_nt3v96Ev");}
S1304C2_nt ::S1304C2_nt(){ note_ctor("S1304C2_nt", this);} // tgen

//skip512 S1304C2_nt

#else // __cplusplus

extern void _ZN10S1304C2_ntC1Ev();
extern void _ZN10S1304C2_ntD1Ev();
Name_Map name_map_S1304C2_nt[] = {
  NSPAIR(_ZN10S1304C2_ntC1Ev),
  NSPAIR(_ZN10S1304C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1304C4;
extern VTBL_ENTRY _ZTI7S1304C4[];
extern  VTBL_ENTRY _ZTV7S1304C4[];
extern Class_Descriptor cd_S1304C3_nt;
extern VTBL_ENTRY _ZTI10S1304C3_nt[];
extern  VTBL_ENTRY _ZTV10S1304C3_nt[];
static Base_Class bases_S1304C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1304C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1304C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S1304C2_nt[];
extern void _ZN10S1304C2_ntD1Ev();
extern void _ZN10S1304C2_ntD0Ev();
extern void _ZN7S1304C43v11Ev();
extern void _ZN7S1304C43v12Ev();
extern void _ZN7S1304C43v13Ev();
extern void _ZN7S1304C43v14Ev();
extern void _ZN7S1304C43v15Ev();
extern void _ZN7S1304C43v16Ev();
extern void _ZN7S1304C43v17Ev();
extern void _ZN7S1304C43v18Ev();
extern void _ZN7S1304C43v19Ev();
extern void _ZN7S1304C43v20Ev();
extern void _ZN7S1304C43v21Ev();
extern void _ZN7S1304C43v22Ev();
extern void _ZN7S1304C43v23Ev();
extern void _ZN7S1304C43v24Ev();
extern void _ZN7S1304C43v25Ev();
extern void _ZN7S1304C43v26Ev();
extern void _ZN7S1304C43v27Ev();
extern void _ZN7S1304C43v28Ev();
extern void _ZN7S1304C43v29Ev();
extern void _ZN7S1304C43v30Ev();
extern void _ZN7S1304C43v31Ev();
extern void _ZN7S1304C43v32Ev();
extern void _ZN7S1304C43v33Ev();
extern void _ZN7S1304C43v34Ev();
extern void _ZN7S1304C43v35Ev();
extern void _ZN7S1304C43v36Ev();
extern void _ZN7S1304C43v37Ev();
extern void _ZN7S1304C43v38Ev();
extern void _ZN7S1304C43v39Ev();
extern void _ZN7S1304C43v40Ev();
extern void _ZN7S1304C43v41Ev();
extern void _ZN7S1304C43v42Ev();
extern void _ZN7S1304C43v43Ev();
extern void _ZN7S1304C43v44Ev();
extern void _ZN7S1304C43v45Ev();
extern void _ZN7S1304C43v46Ev();
extern void _ZN7S1304C43v47Ev();
extern void _ZN7S1304C43v48Ev();
extern void _ZN7S1304C43v49Ev();
extern void _ZN7S1304C43v50Ev();
extern void _ZN7S1304C43v51Ev();
extern void _ZN7S1304C43v52Ev();
extern void _ZN7S1304C43v53Ev();
extern void _ZN7S1304C43v54Ev();
extern void _ZN7S1304C43v55Ev();
extern void _ZN7S1304C43v56Ev();
extern void _ZN7S1304C43v57Ev();
extern void _ZN7S1304C43v58Ev();
extern void _ZN7S1304C43v59Ev();
extern void _ZN7S1304C43v60Ev();
extern void _ZN7S1304C43v61Ev();
extern void _ZN7S1304C43v62Ev();
extern void _ZN7S1304C43v63Ev();
extern void _ZN7S1304C43v64Ev();
extern void _ZN7S1304C43v65Ev();
extern void _ZN7S1304C43v66Ev();
extern void _ZN7S1304C43v67Ev();
extern void _ZN7S1304C43v68Ev();
extern void _ZN7S1304C43v69Ev();
extern void _ZN7S1304C43v70Ev();
extern void _ZN7S1304C43v71Ev();
extern void _ZN7S1304C43v72Ev();
extern void _ZN7S1304C43v73Ev();
extern void _ZN7S1304C43v74Ev();
extern void _ZN10S1304C3_nt3v75Ev();
extern void _ZN10S1304C3_nt3v76Ev();
extern void _ZN10S1304C3_nt3v77Ev();
extern void _ZN10S1304C3_nt3v78Ev();
extern void _ZN10S1304C3_nt3v79Ev();
extern void _ZN10S1304C3_nt3v80Ev();
extern void _ZN10S1304C3_nt3v81Ev();
extern void _ZN10S1304C3_nt3v82Ev();
extern void _ZN10S1304C3_nt3v83Ev();
extern void _ZN10S1304C3_nt3v84Ev();
extern void _ZN10S1304C3_nt3v85Ev();
extern void _ZN10S1304C3_nt3v86Ev();
extern void _ZN10S1304C3_nt3v87Ev();
extern void _ZN10S1304C3_nt3v88Ev();
extern void _ZN10S1304C3_nt3v89Ev();
extern void _ZN10S1304C3_nt3v90Ev();
extern void _ZN10S1304C3_nt3v91Ev();
extern void _ZN10S1304C3_nt3v92Ev();
extern void _ZN10S1304C3_nt3v93Ev();
extern void _ZN10S1304C3_nt3v94Ev();
extern void _ZN10S1304C2_nt3v95Ev();
extern void _ZN10S1304C2_nt3v96Ev();
static  VTBL_ENTRY vtc_S1304C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S1304C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S1304C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S1304C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v69Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v70Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v71Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v72Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v73Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v74Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v75Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v76Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v77Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v78Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v79Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v80Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v81Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v82Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v83Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v84Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v85Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v86Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v87Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v88Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v89Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v90Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v91Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v92Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v93Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v94Ev,
  (VTBL_ENTRY)&_ZN10S1304C2_nt3v95Ev,
  (VTBL_ENTRY)&_ZN10S1304C2_nt3v96Ev,
};
extern VTBL_ENTRY _ZTI10S1304C2_nt[];
VTBL_ENTRY *P__ZTI10S1304C2_nt = _ZTI10S1304C2_nt; 
extern  VTBL_ENTRY _ZTV10S1304C2_nt[];
Class_Descriptor cd_S1304C2_nt = {  "S1304C2_nt", // class name
  bases_S1304C2_nt, 2,
  &(vtc_S1304C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(104,64), // object size
  NSPAIRA(_ZTI10S1304C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S1304C2_nt),90, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1304C8_nt  {
  char s1304c8f0[4];
  ::S40C80 s1304c8f1;
  int s1304c8f2[2];
  void  mf1304c8(); // _ZN10S1304C8_nt8mf1304c8Ev
};
//SIG(-1 S1304C8_nt) C1{ m Fc[4] FC2{ BC3{ BC4{ m Fp Fi[2]}}} Fi[2]}


void  S1304C8_nt ::mf1304c8(){}

//skip512 S1304C8_nt

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S1304C7_nt  : S1304C8_nt {
  void *s1304c7f0;
};
//SIG(-1 S1304C7_nt) C1{ BC2{ m Fc[4] FC3{ BC4{ BC5{ m Fp Fi[2]}}} Fi[2]} Fp}



//skip512 S1304C7_nt

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S1304C1  : S1304C2_nt {
  ::S1304C7_nt s1304c1f0;
  ::S1304C7_nt s1304c1f1;
  unsigned int s1304c1f2:1;
  virtual  ~S1304C1(); // _ZN7S1304C1D1Ev
  virtual void  v1(); // _ZN7S1304C12v1Ev
  virtual void  v2(); // _ZN7S1304C12v2Ev
  virtual void  v3(); // _ZN7S1304C12v3Ev
  virtual void  v4(); // _ZN7S1304C12v4Ev
  virtual void  v5(); // _ZN7S1304C12v5Ev
  virtual void  v6(); // _ZN7S1304C12v6Ev
  virtual void  v7(); // _ZN7S1304C12v7Ev
  virtual void  v8(); // _ZN7S1304C12v8Ev
  virtual void  v9(); // _ZN7S1304C12v9Ev
  virtual void  v10(); // _ZN7S1304C13v10Ev
  S1304C1(); // tgen
};
//SIG(1 S1304C1) C1{ BC2{ BC3{ BC4{ vd v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 Fi FL Fp[4] Fi[2] Fp FC5{ m Fi[2]} Fp[2]} vd v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 v90 v91 v92 v93 v94 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 FC6{ m}} vd v95 v96} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 FC7{ BC8{ m Fc[4] FC9{ BC10{ BC11{ m Fp Fi[2]}}} Fi[2]} Fp} FC7 Fi:1}


 S1304C1 ::~S1304C1(){ note_dtor("S1304C1", this);}
void  S1304C1 ::v1(){vfunc_called(this, "_ZN7S1304C12v1Ev");}
void  S1304C1 ::v2(){vfunc_called(this, "_ZN7S1304C12v2Ev");}
void  S1304C1 ::v3(){vfunc_called(this, "_ZN7S1304C12v3Ev");}
void  S1304C1 ::v4(){vfunc_called(this, "_ZN7S1304C12v4Ev");}
void  S1304C1 ::v5(){vfunc_called(this, "_ZN7S1304C12v5Ev");}
void  S1304C1 ::v6(){vfunc_called(this, "_ZN7S1304C12v6Ev");}
void  S1304C1 ::v7(){vfunc_called(this, "_ZN7S1304C12v7Ev");}
void  S1304C1 ::v8(){vfunc_called(this, "_ZN7S1304C12v8Ev");}
void  S1304C1 ::v9(){vfunc_called(this, "_ZN7S1304C12v9Ev");}
void  S1304C1 ::v10(){vfunc_called(this, "_ZN7S1304C13v10Ev");}
S1304C1 ::S1304C1(){ note_ctor("S1304C1", this);} // tgen

static void Test_S1304C1()
{
  extern Class_Descriptor cd_S1304C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(25,32)];
    init_test(&cd_S1304C1, buf);
    S1304C1 *dp, &lv = *(dp=new (buf) S1304C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,124), "sizeof(S1304C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1304C1)");
    check_base_class_offset(lv, (S1304C4*)(S1304C3_nt*)(S1304C2_nt*), 0, "S1304C1");
    check_base_class_offset(lv, (S1304C3_nt*)(S1304C2_nt*), 0, "S1304C1");
    check_base_class_offset(lv, (S1304C2_nt*), 0, "S1304C1");
    check_field_offset(lv, s1304c1f0, ABISELECT(104,64), "S1304C1.s1304c1f0");
    check_field_offset(lv, s1304c1f1, ABISELECT(144,92), "S1304C1.s1304c1f1");
    set_bf_and_test(lv, s1304c1f2, ABISELECT(184,120), 0, 1, 1, "S1304C1");
    test_class_info(&lv, &cd_S1304C1);
    dp->~S1304C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1304C1(Test_S1304C1, "S1304C1", ABISELECT(192,124));

#else // __cplusplus

extern void _ZN7S1304C1C1Ev();
extern void _ZN7S1304C1D1Ev();
Name_Map name_map_S1304C1[] = {
  NSPAIR(_ZN7S1304C1C1Ev),
  NSPAIR(_ZN7S1304C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1304C4;
extern VTBL_ENTRY _ZTI7S1304C4[];
extern  VTBL_ENTRY _ZTV7S1304C4[];
extern Class_Descriptor cd_S1304C3_nt;
extern VTBL_ENTRY _ZTI10S1304C3_nt[];
extern  VTBL_ENTRY _ZTV10S1304C3_nt[];
extern Class_Descriptor cd_S1304C2_nt;
extern VTBL_ENTRY _ZTI10S1304C2_nt[];
extern  VTBL_ENTRY _ZTV10S1304C2_nt[];
static Base_Class bases_S1304C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1304C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1304C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S1304C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1304C1[];
extern void _ZN7S1304C1D1Ev();
extern void _ZN7S1304C1D0Ev();
extern void _ZN7S1304C43v11Ev();
extern void _ZN7S1304C43v12Ev();
extern void _ZN7S1304C43v13Ev();
extern void _ZN7S1304C43v14Ev();
extern void _ZN7S1304C43v15Ev();
extern void _ZN7S1304C43v16Ev();
extern void _ZN7S1304C43v17Ev();
extern void _ZN7S1304C43v18Ev();
extern void _ZN7S1304C43v19Ev();
extern void _ZN7S1304C43v20Ev();
extern void _ZN7S1304C43v21Ev();
extern void _ZN7S1304C43v22Ev();
extern void _ZN7S1304C43v23Ev();
extern void _ZN7S1304C43v24Ev();
extern void _ZN7S1304C43v25Ev();
extern void _ZN7S1304C43v26Ev();
extern void _ZN7S1304C43v27Ev();
extern void _ZN7S1304C43v28Ev();
extern void _ZN7S1304C43v29Ev();
extern void _ZN7S1304C43v30Ev();
extern void _ZN7S1304C43v31Ev();
extern void _ZN7S1304C43v32Ev();
extern void _ZN7S1304C43v33Ev();
extern void _ZN7S1304C43v34Ev();
extern void _ZN7S1304C43v35Ev();
extern void _ZN7S1304C43v36Ev();
extern void _ZN7S1304C43v37Ev();
extern void _ZN7S1304C43v38Ev();
extern void _ZN7S1304C43v39Ev();
extern void _ZN7S1304C43v40Ev();
extern void _ZN7S1304C43v41Ev();
extern void _ZN7S1304C43v42Ev();
extern void _ZN7S1304C43v43Ev();
extern void _ZN7S1304C43v44Ev();
extern void _ZN7S1304C43v45Ev();
extern void _ZN7S1304C43v46Ev();
extern void _ZN7S1304C43v47Ev();
extern void _ZN7S1304C43v48Ev();
extern void _ZN7S1304C43v49Ev();
extern void _ZN7S1304C43v50Ev();
extern void _ZN7S1304C43v51Ev();
extern void _ZN7S1304C43v52Ev();
extern void _ZN7S1304C43v53Ev();
extern void _ZN7S1304C43v54Ev();
extern void _ZN7S1304C43v55Ev();
extern void _ZN7S1304C43v56Ev();
extern void _ZN7S1304C43v57Ev();
extern void _ZN7S1304C43v58Ev();
extern void _ZN7S1304C43v59Ev();
extern void _ZN7S1304C43v60Ev();
extern void _ZN7S1304C43v61Ev();
extern void _ZN7S1304C43v62Ev();
extern void _ZN7S1304C43v63Ev();
extern void _ZN7S1304C43v64Ev();
extern void _ZN7S1304C43v65Ev();
extern void _ZN7S1304C43v66Ev();
extern void _ZN7S1304C43v67Ev();
extern void _ZN7S1304C43v68Ev();
extern void _ZN7S1304C43v69Ev();
extern void _ZN7S1304C43v70Ev();
extern void _ZN7S1304C43v71Ev();
extern void _ZN7S1304C43v72Ev();
extern void _ZN7S1304C43v73Ev();
extern void _ZN7S1304C43v74Ev();
extern void _ZN10S1304C3_nt3v75Ev();
extern void _ZN10S1304C3_nt3v76Ev();
extern void _ZN10S1304C3_nt3v77Ev();
extern void _ZN10S1304C3_nt3v78Ev();
extern void _ZN10S1304C3_nt3v79Ev();
extern void _ZN10S1304C3_nt3v80Ev();
extern void _ZN10S1304C3_nt3v81Ev();
extern void _ZN10S1304C3_nt3v82Ev();
extern void _ZN10S1304C3_nt3v83Ev();
extern void _ZN10S1304C3_nt3v84Ev();
extern void _ZN10S1304C3_nt3v85Ev();
extern void _ZN10S1304C3_nt3v86Ev();
extern void _ZN10S1304C3_nt3v87Ev();
extern void _ZN10S1304C3_nt3v88Ev();
extern void _ZN10S1304C3_nt3v89Ev();
extern void _ZN10S1304C3_nt3v90Ev();
extern void _ZN10S1304C3_nt3v91Ev();
extern void _ZN10S1304C3_nt3v92Ev();
extern void _ZN10S1304C3_nt3v93Ev();
extern void _ZN10S1304C3_nt3v94Ev();
extern void _ZN10S1304C2_nt3v95Ev();
extern void _ZN10S1304C2_nt3v96Ev();
extern void _ZN7S1304C12v1Ev();
extern void _ZN7S1304C12v2Ev();
extern void _ZN7S1304C12v3Ev();
extern void _ZN7S1304C12v4Ev();
extern void _ZN7S1304C12v5Ev();
extern void _ZN7S1304C12v6Ev();
extern void _ZN7S1304C12v7Ev();
extern void _ZN7S1304C12v8Ev();
extern void _ZN7S1304C12v9Ev();
extern void _ZN7S1304C13v10Ev();
static  VTBL_ENTRY vtc_S1304C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1304C1[0]),
  (VTBL_ENTRY)&_ZN7S1304C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1304C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v69Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v70Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v71Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v72Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v73Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v74Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v75Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v76Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v77Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v78Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v79Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v80Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v81Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v82Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v83Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v84Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v85Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v86Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v87Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v88Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v89Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v90Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v91Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v92Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v93Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v94Ev,
  (VTBL_ENTRY)&_ZN10S1304C2_nt3v95Ev,
  (VTBL_ENTRY)&_ZN10S1304C2_nt3v96Ev,
  (VTBL_ENTRY)&_ZN7S1304C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1304C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1304C12v3Ev,
  (VTBL_ENTRY)&_ZN7S1304C12v4Ev,
  (VTBL_ENTRY)&_ZN7S1304C12v5Ev,
  (VTBL_ENTRY)&_ZN7S1304C12v6Ev,
  (VTBL_ENTRY)&_ZN7S1304C12v7Ev,
  (VTBL_ENTRY)&_ZN7S1304C12v8Ev,
  (VTBL_ENTRY)&_ZN7S1304C12v9Ev,
  (VTBL_ENTRY)&_ZN7S1304C13v10Ev,
};
extern VTBL_ENTRY _ZTI7S1304C1[];
extern  VTBL_ENTRY _ZTV7S1304C1[];
Class_Descriptor cd_S1304C1 = {  "S1304C1", // class name
  bases_S1304C1, 3,
  &(vtc_S1304C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(192,124), // object size
  NSPAIRA(_ZTI7S1304C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1304C1),100, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1868C4_nt  {
  void  mf1868c4(); // _ZN10S1868C4_nt8mf1868c4Ev
  virtual  ~S1868C4_nt(); // _ZN10S1868C4_ntD1Ev
  S1868C4_nt(); // tgen
};
//SIG(-1 S1868C4_nt) C1{ vd m}


void  S1868C4_nt ::mf1868c4(){}
 S1868C4_nt ::~S1868C4_nt(){ note_dtor("S1868C4_nt", this);}
S1868C4_nt ::S1868C4_nt(){ note_ctor("S1868C4_nt", this);} // tgen

//skip512 S1868C4_nt

#else // __cplusplus

extern void _ZN10S1868C4_ntC1Ev();
extern void _ZN10S1868C4_ntD1Ev();
Name_Map name_map_S1868C4_nt[] = {
  NSPAIR(_ZN10S1868C4_ntC1Ev),
  NSPAIR(_ZN10S1868C4_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S1868C4_nt[];
extern void _ZN10S1868C4_ntD1Ev();
extern void _ZN10S1868C4_ntD0Ev();
static  VTBL_ENTRY vtc_S1868C4_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S1868C4_nt[0]),
  (VTBL_ENTRY)&_ZN10S1868C4_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S1868C4_ntD0Ev,
};
extern VTBL_ENTRY _ZTI10S1868C4_nt[];
VTBL_ENTRY *P__ZTI10S1868C4_nt = _ZTI10S1868C4_nt; 
extern  VTBL_ENTRY _ZTV10S1868C4_nt[];
Class_Descriptor cd_S1868C4_nt = {  "S1868C4_nt", // class name
  0,0,//no base classes
  &(vtc_S1868C4_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S1868C4_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S1868C4_nt),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1868C3  : S1868C4_nt {
  void *s1868c3f0[2];
  virtual  ~S1868C3(); // _ZN7S1868C3D1Ev
  virtual void  v9(); // _ZN7S1868C32v9Ev
  virtual void  v10(); // _ZN7S1868C33v10Ev
  virtual void  v11(); // _ZN7S1868C33v11Ev
  virtual void  v12(); // _ZN7S1868C33v12Ev
  virtual void  v13(); // _ZN7S1868C33v13Ev
  virtual void  v14(); // _ZN7S1868C33v14Ev
  virtual void  v15(); // _ZN7S1868C33v15Ev
  S1868C3(); // tgen
};
//SIG(-1 S1868C3) C1{ BC2{ vd m} vd v1 v2 v3 v4 v5 v6 v7 Fp[2]}


 S1868C3 ::~S1868C3(){ note_dtor("S1868C3", this);}
void  S1868C3 ::v9(){vfunc_called(this, "_ZN7S1868C32v9Ev");}
void  S1868C3 ::v10(){vfunc_called(this, "_ZN7S1868C33v10Ev");}
void  S1868C3 ::v11(){vfunc_called(this, "_ZN7S1868C33v11Ev");}
void  S1868C3 ::v12(){vfunc_called(this, "_ZN7S1868C33v12Ev");}
void  S1868C3 ::v13(){vfunc_called(this, "_ZN7S1868C33v13Ev");}
void  S1868C3 ::v14(){vfunc_called(this, "_ZN7S1868C33v14Ev");}
void  S1868C3 ::v15(){vfunc_called(this, "_ZN7S1868C33v15Ev");}
S1868C3 ::S1868C3(){ note_ctor("S1868C3", this);} // tgen

static void Test_S1868C3()
{
  extern Class_Descriptor cd_S1868C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S1868C3, buf);
    S1868C3 *dp, &lv = *(dp=new (buf) S1868C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S1868C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1868C3)");
    check_base_class_offset(lv, (S1868C4_nt*), 0, "S1868C3");
    check_field_offset(lv, s1868c3f0, ABISELECT(8,4), "S1868C3.s1868c3f0");
    test_class_info(&lv, &cd_S1868C3);
    dp->~S1868C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1868C3(Test_S1868C3, "S1868C3", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S1868C3C1Ev();
extern void _ZN7S1868C3D1Ev();
Name_Map name_map_S1868C3[] = {
  NSPAIR(_ZN7S1868C3C1Ev),
  NSPAIR(_ZN7S1868C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1868C4_nt;
extern VTBL_ENTRY _ZTI10S1868C4_nt[];
extern  VTBL_ENTRY _ZTV10S1868C4_nt[];
static Base_Class bases_S1868C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1868C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1868C3[];
extern void _ZN7S1868C3D1Ev();
extern void _ZN7S1868C3D0Ev();
extern void _ZN7S1868C32v9Ev();
extern void _ZN7S1868C33v10Ev();
extern void _ZN7S1868C33v11Ev();
extern void _ZN7S1868C33v12Ev();
extern void _ZN7S1868C33v13Ev();
extern void _ZN7S1868C33v14Ev();
extern void _ZN7S1868C33v15Ev();
static  VTBL_ENTRY vtc_S1868C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1868C3[0]),
  (VTBL_ENTRY)&_ZN7S1868C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1868C3D0Ev,
  (VTBL_ENTRY)&_ZN7S1868C32v9Ev,
  (VTBL_ENTRY)&_ZN7S1868C33v10Ev,
  (VTBL_ENTRY)&_ZN7S1868C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1868C33v12Ev,
  (VTBL_ENTRY)&_ZN7S1868C33v13Ev,
  (VTBL_ENTRY)&_ZN7S1868C33v14Ev,
  (VTBL_ENTRY)&_ZN7S1868C33v15Ev,
};
extern VTBL_ENTRY _ZTI7S1868C3[];
extern  VTBL_ENTRY _ZTV7S1868C3[];
Class_Descriptor cd_S1868C3 = {  "S1868C3", // class name
  bases_S1868C3, 1,
  &(vtc_S1868C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S1868C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1868C3),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1868C6_nt  {
  virtual  ~S1868C6_nt(); // _ZN10S1868C6_ntD1Ev
  virtual void  v26(); // _ZN10S1868C6_nt3v26Ev
  S1868C6_nt(); // tgen
};
//SIG(-1 S1868C6_nt) C1{ vd v1}


 S1868C6_nt ::~S1868C6_nt(){ note_dtor("S1868C6_nt", this);}
void  S1868C6_nt ::v26(){vfunc_called(this, "_ZN10S1868C6_nt3v26Ev");}
S1868C6_nt ::S1868C6_nt(){ note_ctor("S1868C6_nt", this);} // tgen

//skip512 S1868C6_nt

#else // __cplusplus

extern void _ZN10S1868C6_ntC1Ev();
extern void _ZN10S1868C6_ntD1Ev();
Name_Map name_map_S1868C6_nt[] = {
  NSPAIR(_ZN10S1868C6_ntC1Ev),
  NSPAIR(_ZN10S1868C6_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S1868C6_nt[];
extern void _ZN10S1868C6_ntD1Ev();
extern void _ZN10S1868C6_ntD0Ev();
extern void _ZN10S1868C6_nt3v26Ev();
static  VTBL_ENTRY vtc_S1868C6_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S1868C6_nt[0]),
  (VTBL_ENTRY)&_ZN10S1868C6_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S1868C6_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S1868C6_nt3v26Ev,
};
extern VTBL_ENTRY _ZTI10S1868C6_nt[];
VTBL_ENTRY *P__ZTI10S1868C6_nt = _ZTI10S1868C6_nt; 
extern  VTBL_ENTRY _ZTV10S1868C6_nt[];
Class_Descriptor cd_S1868C6_nt = {  "S1868C6_nt", // class name
  0,0,//no base classes
  &(vtc_S1868C6_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S1868C6_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S1868C6_nt),5, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1868C5  : S1868C6_nt {
  void *s1868c5f0;
  virtual void  v25(); // _ZN7S1868C53v25Ev
  ~S1868C5(); // tgen
  S1868C5(); // tgen
};
//SIG(-1 S1868C5) C1{ BC2{ vd v2} v1 Fp}


void  S1868C5 ::v25(){vfunc_called(this, "_ZN7S1868C53v25Ev");}
S1868C5 ::~S1868C5(){ note_dtor("S1868C5", this);} // tgen
S1868C5 ::S1868C5(){ note_ctor("S1868C5", this);} // tgen

static void Test_S1868C5()
{
  extern Class_Descriptor cd_S1868C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S1868C5, buf);
    S1868C5 *dp, &lv = *(dp=new (buf) S1868C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S1868C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1868C5)");
    check_base_class_offset(lv, (S1868C6_nt*), 0, "S1868C5");
    check_field_offset(lv, s1868c5f0, ABISELECT(8,4), "S1868C5.s1868c5f0");
    test_class_info(&lv, &cd_S1868C5);
    dp->~S1868C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1868C5(Test_S1868C5, "S1868C5", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S1868C5C1Ev();
extern void _ZN7S1868C5D1Ev();
Name_Map name_map_S1868C5[] = {
  NSPAIR(_ZN7S1868C5C1Ev),
  NSPAIR(_ZN7S1868C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1868C6_nt;
extern VTBL_ENTRY _ZTI10S1868C6_nt[];
extern  VTBL_ENTRY _ZTV10S1868C6_nt[];
static Base_Class bases_S1868C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1868C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1868C5[];
extern void _ZN7S1868C5D1Ev();
extern void _ZN7S1868C5D0Ev();
extern void _ZN10S1868C6_nt3v26Ev();
extern void _ZN7S1868C53v25Ev();
static  VTBL_ENTRY vtc_S1868C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1868C5[0]),
  (VTBL_ENTRY)&_ZN7S1868C5D1Ev,
  (VTBL_ENTRY)&_ZN7S1868C5D0Ev,
  (VTBL_ENTRY)&_ZN10S1868C6_nt3v26Ev,
  (VTBL_ENTRY)&_ZN7S1868C53v25Ev,
};
extern VTBL_ENTRY _ZTI7S1868C5[];
extern  VTBL_ENTRY _ZTV7S1868C5[];
Class_Descriptor cd_S1868C5 = {  "S1868C5", // class name
  bases_S1868C5, 1,
  &(vtc_S1868C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S1868C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1868C5),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1868C9_nt  {
  void *s1868c9f0;
  void  mf1868c9(); // _ZN10S1868C9_nt8mf1868c9Ev
};
//SIG(-1 S1868C9_nt) C1{ m Fp}


void  S1868C9_nt ::mf1868c9(){}

//skip512 S1868C9_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1868C2  : S1868C3 {
  int s1868c2f0;
  void *s1868c2f1;
  ::S1868C5 s1868c2f2;
  ::S1868C5 s1868c2f3;
  ::S1868C9_nt s1868c2f4;
  virtual  ~S1868C2(); // _ZN7S1868C2D1Ev
  virtual void  v16(); // _ZN7S1868C23v16Ev
  virtual void  v17(); // _ZN7S1868C23v17Ev
  virtual void  v18(); // _ZN7S1868C23v18Ev
  virtual void  v19(); // _ZN7S1868C23v19Ev
  virtual void  v20(); // _ZN7S1868C23v20Ev
  virtual void  v21(); // _ZN7S1868C23v21Ev
  virtual void  v22(); // _ZN7S1868C23v22Ev
  virtual void  v23(); // _ZN7S1868C23v23Ev
  virtual void  v24(); // _ZN7S1868C23v24Ev
  S1868C2(); // tgen
};
//SIG(-1 S1868C2) C1{ BC2{ BC3{ vd m} vd v10 v11 v12 v13 v14 v15 v16 Fp[2]} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 Fi Fp FC4{ BC5{ vd v18} v17 Fp} FC4 FC6{ m Fp}}


 S1868C2 ::~S1868C2(){ note_dtor("S1868C2", this);}
void  S1868C2 ::v16(){vfunc_called(this, "_ZN7S1868C23v16Ev");}
void  S1868C2 ::v17(){vfunc_called(this, "_ZN7S1868C23v17Ev");}
void  S1868C2 ::v18(){vfunc_called(this, "_ZN7S1868C23v18Ev");}
void  S1868C2 ::v19(){vfunc_called(this, "_ZN7S1868C23v19Ev");}
void  S1868C2 ::v20(){vfunc_called(this, "_ZN7S1868C23v20Ev");}
void  S1868C2 ::v21(){vfunc_called(this, "_ZN7S1868C23v21Ev");}
void  S1868C2 ::v22(){vfunc_called(this, "_ZN7S1868C23v22Ev");}
void  S1868C2 ::v23(){vfunc_called(this, "_ZN7S1868C23v23Ev");}
void  S1868C2 ::v24(){vfunc_called(this, "_ZN7S1868C23v24Ev");}
S1868C2 ::S1868C2(){ note_ctor("S1868C2", this);} // tgen

static void Test_S1868C2()
{
  extern Class_Descriptor cd_S1868C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[11];
    init_test(&cd_S1868C2, buf);
    S1868C2 *dp, &lv = *(dp=new (buf) S1868C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,40), "sizeof(S1868C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1868C2)");
    check_base_class_offset(lv, (S1868C4_nt*)(S1868C3*), 0, "S1868C2");
    check_base_class_offset(lv, (S1868C3*), 0, "S1868C2");
    check_field_offset(lv, s1868c2f0, ABISELECT(24,12), "S1868C2.s1868c2f0");
    check_field_offset(lv, s1868c2f1, ABISELECT(32,16), "S1868C2.s1868c2f1");
    check_field_offset(lv, s1868c2f2, ABISELECT(40,20), "S1868C2.s1868c2f2");
    check_field_offset(lv, s1868c2f3, ABISELECT(56,28), "S1868C2.s1868c2f3");
    check_field_offset(lv, s1868c2f4, ABISELECT(72,36), "S1868C2.s1868c2f4");
    test_class_info(&lv, &cd_S1868C2);
    dp->~S1868C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1868C2(Test_S1868C2, "S1868C2", ABISELECT(80,40));

#else // __cplusplus

extern void _ZN7S1868C2C1Ev();
extern void _ZN7S1868C2D1Ev();
Name_Map name_map_S1868C2[] = {
  NSPAIR(_ZN7S1868C2C1Ev),
  NSPAIR(_ZN7S1868C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1868C4_nt;
extern VTBL_ENTRY _ZTI10S1868C4_nt[];
extern  VTBL_ENTRY _ZTV10S1868C4_nt[];
extern Class_Descriptor cd_S1868C3;
extern VTBL_ENTRY _ZTI7S1868C3[];
extern  VTBL_ENTRY _ZTV7S1868C3[];
static Base_Class bases_S1868C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1868C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1868C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1868C2[];
extern void _ZN7S1868C2D1Ev();
extern void _ZN7S1868C2D0Ev();
extern void _ZN7S1868C32v9Ev();
extern void _ZN7S1868C33v10Ev();
extern void _ZN7S1868C33v11Ev();
extern void _ZN7S1868C33v12Ev();
extern void _ZN7S1868C33v13Ev();
extern void _ZN7S1868C33v14Ev();
extern void _ZN7S1868C33v15Ev();
extern void _ZN7S1868C23v16Ev();
extern void _ZN7S1868C23v17Ev();
extern void _ZN7S1868C23v18Ev();
extern void _ZN7S1868C23v19Ev();
extern void _ZN7S1868C23v20Ev();
extern void _ZN7S1868C23v21Ev();
extern void _ZN7S1868C23v22Ev();
extern void _ZN7S1868C23v23Ev();
extern void _ZN7S1868C23v24Ev();
static  VTBL_ENTRY vtc_S1868C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1868C2[0]),
  (VTBL_ENTRY)&_ZN7S1868C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1868C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1868C32v9Ev,
  (VTBL_ENTRY)&_ZN7S1868C33v10Ev,
  (VTBL_ENTRY)&_ZN7S1868C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1868C33v12Ev,
  (VTBL_ENTRY)&_ZN7S1868C33v13Ev,
  (VTBL_ENTRY)&_ZN7S1868C33v14Ev,
  (VTBL_ENTRY)&_ZN7S1868C33v15Ev,
  (VTBL_ENTRY)&_ZN7S1868C23v16Ev,
  (VTBL_ENTRY)&_ZN7S1868C23v17Ev,
  (VTBL_ENTRY)&_ZN7S1868C23v18Ev,
  (VTBL_ENTRY)&_ZN7S1868C23v19Ev,
  (VTBL_ENTRY)&_ZN7S1868C23v20Ev,
  (VTBL_ENTRY)&_ZN7S1868C23v21Ev,
  (VTBL_ENTRY)&_ZN7S1868C23v22Ev,
  (VTBL_ENTRY)&_ZN7S1868C23v23Ev,
  (VTBL_ENTRY)&_ZN7S1868C23v24Ev,
};
extern VTBL_ENTRY _ZTI7S1868C2[];
extern  VTBL_ENTRY _ZTV7S1868C2[];
Class_Descriptor cd_S1868C2 = {  "S1868C2", // class name
  bases_S1868C2, 2,
  &(vtc_S1868C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,40), // object size
  NSPAIRA(_ZTI7S1868C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1868C2),20, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1868C12  {
  void *s1868c12f0;
  void  mf1868c12(); // _ZN8S1868C129mf1868c12Ev
};
//SIG(-1 S1868C12) C1{ m Fp}


void  S1868C12 ::mf1868c12(){}

static void Test_S1868C12()
{
  {
    init_simple_test("S1868C12");
    S1868C12 lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S1868C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1868C12)");
    check_field_offset(lv, s1868c12f0, 0, "S1868C12.s1868c12f0");
  }
}
static Arrange_To_Call_Me vS1868C12(Test_S1868C12, "S1868C12", ABISELECT(8,4));

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S1868C13_nt  {
  void *s1868c13f0;
  int s1868c13f1[2];
  ::S7856C24 s1868c13f2;
  void  mf1868c13(); // _ZN11S1868C13_nt9mf1868c13Ev
};
//SIG(-1 S1868C13_nt) C1{ m Fp Fi[2] FC2{ m}}


void  S1868C13_nt ::mf1868c13(){}

//skip512 S1868C13_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1868C11  : S1868C12 {
  int s1868c11f0;
  char s1868c11f1;
  int s1868c11f2[2];
  void *s1868c11f3;
  ::S1868C13_nt s1868c11f4;
  void *s1868c11f5;
};
//SIG(-1 S1868C11) C1{ BC2{ m Fp} Fi Fc Fi[2] Fp FC3{ m Fp Fi[2] FC4{ m}} Fp}



static void Test_S1868C11()
{
  extern Class_Descriptor cd_S1868C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,12)];
    init_test(&cd_S1868C11, buf);
    S1868C11 &lv = *(new (buf) S1868C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,44), "sizeof(S1868C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1868C11)");
    check_base_class_offset(lv, (S1868C12*), 0, "S1868C11");
    check_field_offset(lv, s1868c11f0, ABISELECT(8,4), "S1868C11.s1868c11f0");
    check_field_offset(lv, s1868c11f1, ABISELECT(12,8), "S1868C11.s1868c11f1");
    check_field_offset(lv, s1868c11f2, ABISELECT(16,12), "S1868C11.s1868c11f2");
    check_field_offset(lv, s1868c11f3, ABISELECT(24,20), "S1868C11.s1868c11f3");
    check_field_offset(lv, s1868c11f4, ABISELECT(32,24), "S1868C11.s1868c11f4");
    check_field_offset(lv, s1868c11f5, ABISELECT(56,40), "S1868C11.s1868c11f5");
    test_class_info(&lv, &cd_S1868C11);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1868C11(Test_S1868C11, "S1868C11", ABISELECT(64,44));

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S1868C15  : S1868C12 {
  void *s1868c15f0[5];
};
//SIG(-1 S1868C15) C1{ BC2{ m Fp} Fp[5]}



static void Test_S1868C15()
{
  extern Class_Descriptor cd_S1868C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[7];
    init_test(&cd_S1868C15, buf);
    S1868C15 &lv = *(new (buf) S1868C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S1868C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1868C15)");
    check_base_class_offset(lv, (S1868C12*), 0, "S1868C15");
    check_field_offset(lv, s1868c15f0, ABISELECT(8,4), "S1868C15.s1868c15f0");
    test_class_info(&lv, &cd_S1868C15);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1868C15(Test_S1868C15, "S1868C15", ABISELECT(48,24));

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S1868C17  {
  void *s1868c17f0;
  void  mf1868c17(); // _ZN8S1868C179mf1868c17Ev
};
//SIG(-1 S1868C17) C1{ m Fp}


void  S1868C17 ::mf1868c17(){}

static void Test_S1868C17()
{
  {
    init_simple_test("S1868C17");
    S1868C17 lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S1868C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1868C17)");
    check_field_offset(lv, s1868c17f0, 0, "S1868C17.s1868c17f0");
  }
}
static Arrange_To_Call_Me vS1868C17(Test_S1868C17, "S1868C17", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1868C16  : S1868C12 {
  ::S1868C17 s1868c16f0;
  void *s1868c16f1;
};
//SIG(-1 S1868C16) C1{ BC2{ m Fp} FC3{ m Fp} Fp}



static void Test_S1868C16()
{
  extern Class_Descriptor cd_S1868C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S1868C16, buf);
    S1868C16 &lv = *(new (buf) S1868C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S1868C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1868C16)");
    check_base_class_offset(lv, (S1868C12*), 0, "S1868C16");
    check_field_offset(lv, s1868c16f0, ABISELECT(8,4), "S1868C16.s1868c16f0");
    check_field_offset(lv, s1868c16f1, ABISELECT(16,8), "S1868C16.s1868c16f1");
    test_class_info(&lv, &cd_S1868C16);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1868C16(Test_S1868C16, "S1868C16", ABISELECT(24,12));

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S1868C18_nt  : S1868C12 {
};
//SIG(-1 S1868C18_nt) C1{ BC2{ m Fp}}



//skip512 S1868C18_nt

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S1868C19  : S1868C12 {
  int s1868c19f0;
  void *s1868c19f1;
  char s1868c19f2[2];
  int s1868c19f3;
};
//SIG(-1 S1868C19) C1{ BC2{ m Fp} Fi Fp Fc[2] Fi}



static void Test_S1868C19()
{
  extern Class_Descriptor cd_S1868C19;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S1868C19, buf);
    S1868C19 &lv = *(new (buf) S1868C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S1868C19)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1868C19)");
    check_base_class_offset(lv, (S1868C12*), 0, "S1868C19");
    check_field_offset(lv, s1868c19f0, ABISELECT(8,4), "S1868C19.s1868c19f0");
    check_field_offset(lv, s1868c19f1, ABISELECT(16,8), "S1868C19.s1868c19f1");
    check_field_offset(lv, s1868c19f2, ABISELECT(24,12), "S1868C19.s1868c19f2");
    check_field_offset(lv, s1868c19f3, ABISELECT(28,16), "S1868C19.s1868c19f3");
    test_class_info(&lv, &cd_S1868C19);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1868C19(Test_S1868C19, "S1868C19", ABISELECT(32,20));

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S1868C21  {
  virtual  ~S1868C21(); // _ZN8S1868C21D1Ev
  virtual void  v44(); // _ZN8S1868C213v44Ev
  virtual void  v45(); // _ZN8S1868C213v45Ev
  virtual void  v46(); // _ZN8S1868C213v46Ev
  virtual void  v47(); // _ZN8S1868C213v47Ev
  virtual void  v48(); // _ZN8S1868C213v48Ev
  virtual void  v49(); // _ZN8S1868C213v49Ev
  virtual void  v50(); // _ZN8S1868C213v50Ev
  virtual void  v51(); // _ZN8S1868C213v51Ev
  virtual void  v52(); // _ZN8S1868C213v52Ev
  virtual void  v53(); // _ZN8S1868C213v53Ev
  virtual void  v54(); // _ZN8S1868C213v54Ev
  virtual void  v55(); // _ZN8S1868C213v55Ev
  S1868C21(); // tgen
};
//SIG(-1 S1868C21) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12}


 S1868C21 ::~S1868C21(){ note_dtor("S1868C21", this);}
void  S1868C21 ::v44(){vfunc_called(this, "_ZN8S1868C213v44Ev");}
void  S1868C21 ::v45(){vfunc_called(this, "_ZN8S1868C213v45Ev");}
void  S1868C21 ::v46(){vfunc_called(this, "_ZN8S1868C213v46Ev");}
void  S1868C21 ::v47(){vfunc_called(this, "_ZN8S1868C213v47Ev");}
void  S1868C21 ::v48(){vfunc_called(this, "_ZN8S1868C213v48Ev");}
void  S1868C21 ::v49(){vfunc_called(this, "_ZN8S1868C213v49Ev");}
void  S1868C21 ::v50(){vfunc_called(this, "_ZN8S1868C213v50Ev");}
void  S1868C21 ::v51(){vfunc_called(this, "_ZN8S1868C213v51Ev");}
void  S1868C21 ::v52(){vfunc_called(this, "_ZN8S1868C213v52Ev");}
void  S1868C21 ::v53(){vfunc_called(this, "_ZN8S1868C213v53Ev");}
void  S1868C21 ::v54(){vfunc_called(this, "_ZN8S1868C213v54Ev");}
void  S1868C21 ::v55(){vfunc_called(this, "_ZN8S1868C213v55Ev");}
S1868C21 ::S1868C21(){ note_ctor("S1868C21", this);} // tgen

static void Test_S1868C21()
{
  extern Class_Descriptor cd_S1868C21;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S1868C21, buf);
    S1868C21 *dp, &lv = *(dp=new (buf) S1868C21());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S1868C21)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1868C21)");
    test_class_info(&lv, &cd_S1868C21);
    dp->~S1868C21();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1868C21(Test_S1868C21, "S1868C21", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S1868C21C1Ev();
extern void _ZN8S1868C21D1Ev();
Name_Map name_map_S1868C21[] = {
  NSPAIR(_ZN8S1868C21C1Ev),
  NSPAIR(_ZN8S1868C21D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S1868C21[];
extern void _ZN8S1868C21D1Ev();
extern void _ZN8S1868C21D0Ev();
extern void _ZN8S1868C213v44Ev();
extern void _ZN8S1868C213v45Ev();
extern void _ZN8S1868C213v46Ev();
extern void _ZN8S1868C213v47Ev();
extern void _ZN8S1868C213v48Ev();
extern void _ZN8S1868C213v49Ev();
extern void _ZN8S1868C213v50Ev();
extern void _ZN8S1868C213v51Ev();
extern void _ZN8S1868C213v52Ev();
extern void _ZN8S1868C213v53Ev();
extern void _ZN8S1868C213v54Ev();
extern void _ZN8S1868C213v55Ev();
static  VTBL_ENTRY vtc_S1868C21[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S1868C21[0]),
  (VTBL_ENTRY)&_ZN8S1868C21D1Ev,
  (VTBL_ENTRY)&_ZN8S1868C21D0Ev,
  (VTBL_ENTRY)&_ZN8S1868C213v44Ev,
  (VTBL_ENTRY)&_ZN8S1868C213v45Ev,
  (VTBL_ENTRY)&_ZN8S1868C213v46Ev,
  (VTBL_ENTRY)&_ZN8S1868C213v47Ev,
  (VTBL_ENTRY)&_ZN8S1868C213v48Ev,
  (VTBL_ENTRY)&_ZN8S1868C213v49Ev,
  (VTBL_ENTRY)&_ZN8S1868C213v50Ev,
  (VTBL_ENTRY)&_ZN8S1868C213v51Ev,
  (VTBL_ENTRY)&_ZN8S1868C213v52Ev,
  (VTBL_ENTRY)&_ZN8S1868C213v53Ev,
  (VTBL_ENTRY)&_ZN8S1868C213v54Ev,
  (VTBL_ENTRY)&_ZN8S1868C213v55Ev,
};
extern VTBL_ENTRY _ZTI8S1868C21[];
extern  VTBL_ENTRY _ZTV8S1868C21[];
Class_Descriptor cd_S1868C21 = {  "S1868C21", // class name
  0,0,//no base classes
  &(vtc_S1868C21[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S1868C21),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S1868C21),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1868C20  : S1868C12 , S1868C21 {
  void *s1868c20f0;
  virtual  ~S1868C20(); // _ZN8S1868C20D1Ev
  virtual void  v29(); // _ZN8S1868C203v29Ev
  virtual void  v30(); // _ZN8S1868C203v30Ev
  virtual void  v31(); // _ZN8S1868C203v31Ev
  virtual void  v32(); // _ZN8S1868C203v32Ev
  virtual void  v33(); // _ZN8S1868C203v33Ev
  virtual void  v34(); // _ZN8S1868C203v34Ev
  virtual void  v35(); // _ZN8S1868C203v35Ev
  virtual void  v36(); // _ZN8S1868C203v36Ev
  virtual void  v37(); // _ZN8S1868C203v37Ev
  virtual void  v38(); // _ZN8S1868C203v38Ev
  virtual void  v39(); // _ZN8S1868C203v39Ev
  virtual void  v40(); // _ZN8S1868C203v40Ev
  virtual void  v41(); // _ZN8S1868C203v41Ev
  virtual void  v42(); // _ZN8S1868C203v42Ev
  virtual void  v43(); // _ZN8S1868C203v43Ev
  S1868C20(); // tgen
};
//SIG(-1 S1868C20) C1{ BC2{ m Fp} BC3{ vd v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 Fp}


 S1868C20 ::~S1868C20(){ note_dtor("S1868C20", this);}
void  S1868C20 ::v29(){vfunc_called(this, "_ZN8S1868C203v29Ev");}
void  S1868C20 ::v30(){vfunc_called(this, "_ZN8S1868C203v30Ev");}
void  S1868C20 ::v31(){vfunc_called(this, "_ZN8S1868C203v31Ev");}
void  S1868C20 ::v32(){vfunc_called(this, "_ZN8S1868C203v32Ev");}
void  S1868C20 ::v33(){vfunc_called(this, "_ZN8S1868C203v33Ev");}
void  S1868C20 ::v34(){vfunc_called(this, "_ZN8S1868C203v34Ev");}
void  S1868C20 ::v35(){vfunc_called(this, "_ZN8S1868C203v35Ev");}
void  S1868C20 ::v36(){vfunc_called(this, "_ZN8S1868C203v36Ev");}
void  S1868C20 ::v37(){vfunc_called(this, "_ZN8S1868C203v37Ev");}
void  S1868C20 ::v38(){vfunc_called(this, "_ZN8S1868C203v38Ev");}
void  S1868C20 ::v39(){vfunc_called(this, "_ZN8S1868C203v39Ev");}
void  S1868C20 ::v40(){vfunc_called(this, "_ZN8S1868C203v40Ev");}
void  S1868C20 ::v41(){vfunc_called(this, "_ZN8S1868C203v41Ev");}
void  S1868C20 ::v42(){vfunc_called(this, "_ZN8S1868C203v42Ev");}
void  S1868C20 ::v43(){vfunc_called(this, "_ZN8S1868C203v43Ev");}
S1868C20 ::S1868C20(){ note_ctor("S1868C20", this);} // tgen

static void Test_S1868C20()
{
  extern Class_Descriptor cd_S1868C20;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S1868C20, buf);
    S1868C20 *dp, &lv = *(dp=new (buf) S1868C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S1868C20)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1868C20)");
    check_base_class_offset(lv, (S1868C12*), ABISELECT(8,4), "S1868C20");
    check_base_class_offset(lv, (S1868C21*), 0, "S1868C20");
    check_field_offset(lv, s1868c20f0, ABISELECT(16,8), "S1868C20.s1868c20f0");
    test_class_info(&lv, &cd_S1868C20);
    dp->~S1868C20();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1868C20(Test_S1868C20, "S1868C20", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S1868C20C1Ev();
extern void _ZN8S1868C20D1Ev();
Name_Map name_map_S1868C20[] = {
  NSPAIR(_ZN8S1868C20C1Ev),
  NSPAIR(_ZN8S1868C20D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1868C12;
extern VTBL_ENTRY _ZTI8S1868C12[];
extern Class_Descriptor cd_S1868C21;
extern VTBL_ENTRY _ZTI8S1868C21[];
extern  VTBL_ENTRY _ZTV8S1868C21[];
static Base_Class bases_S1868C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1868C12,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1868C21,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S1868C20[];
extern void _ZN8S1868C20D1Ev();
extern void _ZN8S1868C20D0Ev();
extern void _ZN8S1868C213v44Ev();
extern void _ZN8S1868C213v45Ev();
extern void _ZN8S1868C213v46Ev();
extern void _ZN8S1868C213v47Ev();
extern void _ZN8S1868C213v48Ev();
extern void _ZN8S1868C213v49Ev();
extern void _ZN8S1868C213v50Ev();
extern void _ZN8S1868C213v51Ev();
extern void _ZN8S1868C213v52Ev();
extern void _ZN8S1868C213v53Ev();
extern void _ZN8S1868C213v54Ev();
extern void _ZN8S1868C213v55Ev();
extern void _ZN8S1868C203v29Ev();
extern void _ZN8S1868C203v30Ev();
extern void _ZN8S1868C203v31Ev();
extern void _ZN8S1868C203v32Ev();
extern void _ZN8S1868C203v33Ev();
extern void _ZN8S1868C203v34Ev();
extern void _ZN8S1868C203v35Ev();
extern void _ZN8S1868C203v36Ev();
extern void _ZN8S1868C203v37Ev();
extern void _ZN8S1868C203v38Ev();
extern void _ZN8S1868C203v39Ev();
extern void _ZN8S1868C203v40Ev();
extern void _ZN8S1868C203v41Ev();
extern void _ZN8S1868C203v42Ev();
extern void _ZN8S1868C203v43Ev();
static  VTBL_ENTRY vtc_S1868C20[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S1868C20[0]),
  (VTBL_ENTRY)&_ZN8S1868C20D1Ev,
  (VTBL_ENTRY)&_ZN8S1868C20D0Ev,
  (VTBL_ENTRY)&_ZN8S1868C213v44Ev,
  (VTBL_ENTRY)&_ZN8S1868C213v45Ev,
  (VTBL_ENTRY)&_ZN8S1868C213v46Ev,
  (VTBL_ENTRY)&_ZN8S1868C213v47Ev,
  (VTBL_ENTRY)&_ZN8S1868C213v48Ev,
  (VTBL_ENTRY)&_ZN8S1868C213v49Ev,
  (VTBL_ENTRY)&_ZN8S1868C213v50Ev,
  (VTBL_ENTRY)&_ZN8S1868C213v51Ev,
  (VTBL_ENTRY)&_ZN8S1868C213v52Ev,
  (VTBL_ENTRY)&_ZN8S1868C213v53Ev,
  (VTBL_ENTRY)&_ZN8S1868C213v54Ev,
  (VTBL_ENTRY)&_ZN8S1868C213v55Ev,
  (VTBL_ENTRY)&_ZN8S1868C203v29Ev,
  (VTBL_ENTRY)&_ZN8S1868C203v30Ev,
  (VTBL_ENTRY)&_ZN8S1868C203v31Ev,
  (VTBL_ENTRY)&_ZN8S1868C203v32Ev,
  (VTBL_ENTRY)&_ZN8S1868C203v33Ev,
  (VTBL_ENTRY)&_ZN8S1868C203v34Ev,
  (VTBL_ENTRY)&_ZN8S1868C203v35Ev,
  (VTBL_ENTRY)&_ZN8S1868C203v36Ev,
  (VTBL_ENTRY)&_ZN8S1868C203v37Ev,
  (VTBL_ENTRY)&_ZN8S1868C203v38Ev,
  (VTBL_ENTRY)&_ZN8S1868C203v39Ev,
  (VTBL_ENTRY)&_ZN8S1868C203v40Ev,
  (VTBL_ENTRY)&_ZN8S1868C203v41Ev,
  (VTBL_ENTRY)&_ZN8S1868C203v42Ev,
  (VTBL_ENTRY)&_ZN8S1868C203v43Ev,
};
extern VTBL_ENTRY _ZTI8S1868C20[];
extern  VTBL_ENTRY _ZTV8S1868C20[];
Class_Descriptor cd_S1868C20 = {  "S1868C20", // class name
  bases_S1868C20, 2,
  &(vtc_S1868C20[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S1868C20),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S1868C20),31, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1868C24_nt  {
  void *s1868c24f0;
  int s1868c24f1;
  ::S7856C15 s1868c24f2;
  ::S7856C12 s1868c24f3;
  void  mf1868c24(); // _ZN11S1868C24_nt9mf1868c24Ev
};
//SIG(-1 S1868C24_nt) C1{ m Fp Fi FC2{ m} FC3{ m}}


void  S1868C24_nt ::mf1868c24(){}

//skip512 S1868C24_nt

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S1868C23_nt  {
  ::S1868C24_nt s1868c23f0;
  void  mf1868c23(); // _ZN11S1868C23_nt9mf1868c23Ev
};
//SIG(-1 S1868C23_nt) C1{ m FC2{ m Fp Fi FC3{ m} FC4{ m}}}


void  S1868C23_nt ::mf1868c23(){}

//skip512 S1868C23_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1868C1  : S1868C2 {
  int s1868c1f0;
  void *s1868c1f1[14];
  ::S1868C9_nt s1868c1f2;
  ::S1868C11 s1868c1f3;
  ::S1868C15 s1868c1f4;
  ::S1868C16 s1868c1f5;
  ::S1868C18_nt s1868c1f6;
  ::S1868C19 s1868c1f7;
  ::S1868C20 s1868c1f8;
  char s1868c1f9[4];
  ::S1868C17 s1868c1f10;
  int s1868c1f11;
  void *s1868c1f12;
  ::S1868C23_nt s1868c1f13;
  ::S40C13_nt s1868c1f14;
  virtual  ~S1868C1(); // _ZN7S1868C1D1Ev
  virtual void  v1(); // _ZN7S1868C12v1Ev
  virtual void  v2(); // _ZN7S1868C12v2Ev
  virtual void  v3(); // _ZN7S1868C12v3Ev
  virtual void  v4(); // _ZN7S1868C12v4Ev
  virtual void  v5(); // _ZN7S1868C12v5Ev
  virtual void  v6(); // _ZN7S1868C12v6Ev
  virtual void  v7(); // _ZN7S1868C12v7Ev
  virtual void  v8(); // _ZN7S1868C12v8Ev
  S1868C1(); // tgen
};
//SIG(1 S1868C1) C1{ BC2{ BC3{ BC4{ vd m} vd v9 v10 v11 v12 v13 v14 v15 Fp[2]} vd v16 v17 v18 v19 v20 v21 v22 v23 v24 Fi Fp FC5{ BC6{ vd v26} v25 Fp} FC5 FC7{ m Fp}} vd v1 v2 v3 v4 v5 v6 v7 v8 Fi Fp[14] FC7 FC8{ BC9{ m Fp} Fi Fc Fi[2] Fp FC10{ m Fp Fi[2] FC11{ m}} Fp} FC12{ BC9 Fp[5]} FC13{ BC9 FC14{ m Fp} Fp} FC15{ BC9} FC16{ BC9 Fi Fp Fc[2] Fi} FC17{ BC9 BC18{ vd v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53} vd v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 Fp} Fc[4] FC14 Fi Fp FC19{ m FC20{ m Fp Fi FC21{ m} FC22{ m}}} FC23{ m Fi}}


 S1868C1 ::~S1868C1(){ note_dtor("S1868C1", this);}
void  S1868C1 ::v1(){vfunc_called(this, "_ZN7S1868C12v1Ev");}
void  S1868C1 ::v2(){vfunc_called(this, "_ZN7S1868C12v2Ev");}
void  S1868C1 ::v3(){vfunc_called(this, "_ZN7S1868C12v3Ev");}
void  S1868C1 ::v4(){vfunc_called(this, "_ZN7S1868C12v4Ev");}
void  S1868C1 ::v5(){vfunc_called(this, "_ZN7S1868C12v5Ev");}
void  S1868C1 ::v6(){vfunc_called(this, "_ZN7S1868C12v6Ev");}
void  S1868C1 ::v7(){vfunc_called(this, "_ZN7S1868C12v7Ev");}
void  S1868C1 ::v8(){vfunc_called(this, "_ZN7S1868C12v8Ev");}
S1868C1 ::S1868C1(){ note_ctor("S1868C1", this);} // tgen

static void Test_S1868C1()
{
  extern Class_Descriptor cd_S1868C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(59,64)];
    init_test(&cd_S1868C1, buf);
    S1868C1 *dp, &lv = *(dp=new (buf) S1868C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(464,252), "sizeof(S1868C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1868C1)");
    check_base_class_offset(lv, (S1868C4_nt*)(S1868C3*)(S1868C2*), 0, "S1868C1");
    check_base_class_offset(lv, (S1868C3*)(S1868C2*), 0, "S1868C1");
    check_base_class_offset(lv, (S1868C2*), 0, "S1868C1");
    check_field_offset(lv, s1868c1f0, ABISELECT(80,40), "S1868C1.s1868c1f0");
    check_field_offset(lv, s1868c1f1, ABISELECT(88,44), "S1868C1.s1868c1f1");
    check_field_offset(lv, s1868c1f2, ABISELECT(200,100), "S1868C1.s1868c1f2");
    check_field_offset(lv, s1868c1f3, ABISELECT(208,104), "S1868C1.s1868c1f3");
    check_field_offset(lv, s1868c1f4, ABISELECT(272,148), "S1868C1.s1868c1f4");
    check_field_offset(lv, s1868c1f5, ABISELECT(320,172), "S1868C1.s1868c1f5");
    check_field_offset(lv, s1868c1f6, ABISELECT(344,184), "S1868C1.s1868c1f6");
    check_field_offset(lv, s1868c1f7, ABISELECT(352,188), "S1868C1.s1868c1f7");
    check_field_offset(lv, s1868c1f8, ABISELECT(384,208), "S1868C1.s1868c1f8");
    check_field_offset(lv, s1868c1f9, ABISELECT(408,220), "S1868C1.s1868c1f9");
    check_field_offset(lv, s1868c1f10, ABISELECT(416,224), "S1868C1.s1868c1f10");
    check_field_offset(lv, s1868c1f11, ABISELECT(424,228), "S1868C1.s1868c1f11");
    check_field_offset(lv, s1868c1f12, ABISELECT(432,232), "S1868C1.s1868c1f12");
    check_field_offset(lv, s1868c1f13, ABISELECT(440,236), "S1868C1.s1868c1f13");
    check_field_offset(lv, s1868c1f14, ABISELECT(456,248), "S1868C1.s1868c1f14");
    test_class_info(&lv, &cd_S1868C1);
    dp->~S1868C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1868C1(Test_S1868C1, "S1868C1", ABISELECT(464,252));

#else // __cplusplus

extern void _ZN7S1868C1C1Ev();
extern void _ZN7S1868C1D1Ev();
Name_Map name_map_S1868C1[] = {
  NSPAIR(_ZN7S1868C1C1Ev),
  NSPAIR(_ZN7S1868C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1868C4_nt;
extern VTBL_ENTRY _ZTI10S1868C4_nt[];
extern  VTBL_ENTRY _ZTV10S1868C4_nt[];
extern Class_Descriptor cd_S1868C3;
extern VTBL_ENTRY _ZTI7S1868C3[];
extern  VTBL_ENTRY _ZTV7S1868C3[];
extern Class_Descriptor cd_S1868C2;
extern VTBL_ENTRY _ZTI7S1868C2[];
extern  VTBL_ENTRY _ZTV7S1868C2[];
static Base_Class bases_S1868C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1868C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1868C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S1868C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1868C1[];
extern void _ZN7S1868C1D1Ev();
extern void _ZN7S1868C1D0Ev();
extern void _ZN7S1868C32v9Ev();
extern void _ZN7S1868C33v10Ev();
extern void _ZN7S1868C33v11Ev();
extern void _ZN7S1868C33v12Ev();
extern void _ZN7S1868C33v13Ev();
extern void _ZN7S1868C33v14Ev();
extern void _ZN7S1868C33v15Ev();
extern void _ZN7S1868C23v16Ev();
extern void _ZN7S1868C23v17Ev();
extern void _ZN7S1868C23v18Ev();
extern void _ZN7S1868C23v19Ev();
extern void _ZN7S1868C23v20Ev();
extern void _ZN7S1868C23v21Ev();
extern void _ZN7S1868C23v22Ev();
extern void _ZN7S1868C23v23Ev();
extern void _ZN7S1868C23v24Ev();
extern void _ZN7S1868C12v1Ev();
extern void _ZN7S1868C12v2Ev();
extern void _ZN7S1868C12v3Ev();
extern void _ZN7S1868C12v4Ev();
extern void _ZN7S1868C12v5Ev();
extern void _ZN7S1868C12v6Ev();
extern void _ZN7S1868C12v7Ev();
extern void _ZN7S1868C12v8Ev();
static  VTBL_ENTRY vtc_S1868C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1868C1[0]),
  (VTBL_ENTRY)&_ZN7S1868C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1868C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1868C32v9Ev,
  (VTBL_ENTRY)&_ZN7S1868C33v10Ev,
  (VTBL_ENTRY)&_ZN7S1868C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1868C33v12Ev,
  (VTBL_ENTRY)&_ZN7S1868C33v13Ev,
  (VTBL_ENTRY)&_ZN7S1868C33v14Ev,
  (VTBL_ENTRY)&_ZN7S1868C33v15Ev,
  (VTBL_ENTRY)&_ZN7S1868C23v16Ev,
  (VTBL_ENTRY)&_ZN7S1868C23v17Ev,
  (VTBL_ENTRY)&_ZN7S1868C23v18Ev,
  (VTBL_ENTRY)&_ZN7S1868C23v19Ev,
  (VTBL_ENTRY)&_ZN7S1868C23v20Ev,
  (VTBL_ENTRY)&_ZN7S1868C23v21Ev,
  (VTBL_ENTRY)&_ZN7S1868C23v22Ev,
  (VTBL_ENTRY)&_ZN7S1868C23v23Ev,
  (VTBL_ENTRY)&_ZN7S1868C23v24Ev,
  (VTBL_ENTRY)&_ZN7S1868C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1868C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1868C12v3Ev,
  (VTBL_ENTRY)&_ZN7S1868C12v4Ev,
  (VTBL_ENTRY)&_ZN7S1868C12v5Ev,
  (VTBL_ENTRY)&_ZN7S1868C12v6Ev,
  (VTBL_ENTRY)&_ZN7S1868C12v7Ev,
  (VTBL_ENTRY)&_ZN7S1868C12v8Ev,
};
extern VTBL_ENTRY _ZTI7S1868C1[];
extern  VTBL_ENTRY _ZTV7S1868C1[];
Class_Descriptor cd_S1868C1 = {  "S1868C1", // class name
  bases_S1868C1, 3,
  &(vtc_S1868C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(464,252), // object size
  NSPAIRA(_ZTI7S1868C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1868C1),28, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1471C4  {
  int s1471c4f0;
  __tsi64 s1471c4f1;
  void *s1471c4f2[4];
  int s1471c4f3[2];
  void *s1471c4f4;
  ::S40C9_nt s1471c4f5;
  void *s1471c4f6[2];
  virtual  ~S1471C4(); // _ZN7S1471C4D1Ev
  virtual void  v5(); // _ZN7S1471C42v5Ev
  virtual void  v6(); // _ZN7S1471C42v6Ev
  virtual void  v7(); // _ZN7S1471C42v7Ev
  virtual void  v8(); // _ZN7S1471C42v8Ev
  virtual void  v9(); // _ZN7S1471C42v9Ev
  virtual void  v10(); // _ZN7S1471C43v10Ev
  virtual void  v11(); // _ZN7S1471C43v11Ev
  virtual void  v12(); // _ZN7S1471C43v12Ev
  virtual void  v13(); // _ZN7S1471C43v13Ev
  virtual void  v14(); // _ZN7S1471C43v14Ev
  virtual void  v15(); // _ZN7S1471C43v15Ev
  virtual void  v16(); // _ZN7S1471C43v16Ev
  virtual void  v17(); // _ZN7S1471C43v17Ev
  virtual void  v18(); // _ZN7S1471C43v18Ev
  virtual void  v19(); // _ZN7S1471C43v19Ev
  virtual void  v20(); // _ZN7S1471C43v20Ev
  virtual void  v21(); // _ZN7S1471C43v21Ev
  virtual void  v22(); // _ZN7S1471C43v22Ev
  virtual void  v23(); // _ZN7S1471C43v23Ev
  virtual void  v24(); // _ZN7S1471C43v24Ev
  virtual void  v25(); // _ZN7S1471C43v25Ev
  virtual void  v26(); // _ZN7S1471C43v26Ev
  virtual void  v27(); // _ZN7S1471C43v27Ev
  virtual void  v28(); // _ZN7S1471C43v28Ev
  virtual void  v29(); // _ZN7S1471C43v29Ev
  virtual void  v30(); // _ZN7S1471C43v30Ev
  virtual void  v31(); // _ZN7S1471C43v31Ev
  virtual void  v32(); // _ZN7S1471C43v32Ev
  virtual void  v33(); // _ZN7S1471C43v33Ev
  virtual void  v34(); // _ZN7S1471C43v34Ev
  virtual void  v35(); // _ZN7S1471C43v35Ev
  virtual void  v36(); // _ZN7S1471C43v36Ev
  virtual void  v37(); // _ZN7S1471C43v37Ev
  virtual void  v38(); // _ZN7S1471C43v38Ev
  virtual void  v39(); // _ZN7S1471C43v39Ev
  virtual void  v40(); // _ZN7S1471C43v40Ev
  virtual void  v41(); // _ZN7S1471C43v41Ev
  virtual void  v42(); // _ZN7S1471C43v42Ev
  virtual void  v43(); // _ZN7S1471C43v43Ev
  virtual void  v44(); // _ZN7S1471C43v44Ev
  virtual void  v45(); // _ZN7S1471C43v45Ev
  virtual void  v46(); // _ZN7S1471C43v46Ev
  virtual void  v47(); // _ZN7S1471C43v47Ev
  virtual void  v48(); // _ZN7S1471C43v48Ev
  virtual void  v49(); // _ZN7S1471C43v49Ev
  virtual void  v50(); // _ZN7S1471C43v50Ev
  virtual void  v51(); // _ZN7S1471C43v51Ev
  virtual void  v52(); // _ZN7S1471C43v52Ev
  virtual void  v53(); // _ZN7S1471C43v53Ev
  virtual void  v54(); // _ZN7S1471C43v54Ev
  virtual void  v55(); // _ZN7S1471C43v55Ev
  virtual void  v56(); // _ZN7S1471C43v56Ev
  virtual void  v57(); // _ZN7S1471C43v57Ev
  virtual void  v58(); // _ZN7S1471C43v58Ev
  virtual void  v59(); // _ZN7S1471C43v59Ev
  virtual void  v60(); // _ZN7S1471C43v60Ev
  virtual void  v61(); // _ZN7S1471C43v61Ev
  virtual void  v62(); // _ZN7S1471C43v62Ev
  virtual void  v63(); // _ZN7S1471C43v63Ev
  virtual void  v64(); // _ZN7S1471C43v64Ev
  virtual void  v65(); // _ZN7S1471C43v65Ev
  virtual void  v66(); // _ZN7S1471C43v66Ev
  virtual void  v67(); // _ZN7S1471C43v67Ev
  virtual void  v68(); // _ZN7S1471C43v68Ev
  S1471C4(); // tgen
};
//SIG(-1 S1471C4) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 Fi FL Fp[4] Fi[2] Fp FC2{ m Fi[2]} Fp[2]}


 S1471C4 ::~S1471C4(){ note_dtor("S1471C4", this);}
void  S1471C4 ::v5(){vfunc_called(this, "_ZN7S1471C42v5Ev");}
void  S1471C4 ::v6(){vfunc_called(this, "_ZN7S1471C42v6Ev");}
void  S1471C4 ::v7(){vfunc_called(this, "_ZN7S1471C42v7Ev");}
void  S1471C4 ::v8(){vfunc_called(this, "_ZN7S1471C42v8Ev");}
void  S1471C4 ::v9(){vfunc_called(this, "_ZN7S1471C42v9Ev");}
void  S1471C4 ::v10(){vfunc_called(this, "_ZN7S1471C43v10Ev");}
void  S1471C4 ::v11(){vfunc_called(this, "_ZN7S1471C43v11Ev");}
void  S1471C4 ::v12(){vfunc_called(this, "_ZN7S1471C43v12Ev");}
void  S1471C4 ::v13(){vfunc_called(this, "_ZN7S1471C43v13Ev");}
void  S1471C4 ::v14(){vfunc_called(this, "_ZN7S1471C43v14Ev");}
void  S1471C4 ::v15(){vfunc_called(this, "_ZN7S1471C43v15Ev");}
void  S1471C4 ::v16(){vfunc_called(this, "_ZN7S1471C43v16Ev");}
void  S1471C4 ::v17(){vfunc_called(this, "_ZN7S1471C43v17Ev");}
void  S1471C4 ::v18(){vfunc_called(this, "_ZN7S1471C43v18Ev");}
void  S1471C4 ::v19(){vfunc_called(this, "_ZN7S1471C43v19Ev");}
void  S1471C4 ::v20(){vfunc_called(this, "_ZN7S1471C43v20Ev");}
void  S1471C4 ::v21(){vfunc_called(this, "_ZN7S1471C43v21Ev");}
void  S1471C4 ::v22(){vfunc_called(this, "_ZN7S1471C43v22Ev");}
void  S1471C4 ::v23(){vfunc_called(this, "_ZN7S1471C43v23Ev");}
void  S1471C4 ::v24(){vfunc_called(this, "_ZN7S1471C43v24Ev");}
void  S1471C4 ::v25(){vfunc_called(this, "_ZN7S1471C43v25Ev");}
void  S1471C4 ::v26(){vfunc_called(this, "_ZN7S1471C43v26Ev");}
void  S1471C4 ::v27(){vfunc_called(this, "_ZN7S1471C43v27Ev");}
void  S1471C4 ::v28(){vfunc_called(this, "_ZN7S1471C43v28Ev");}
void  S1471C4 ::v29(){vfunc_called(this, "_ZN7S1471C43v29Ev");}
void  S1471C4 ::v30(){vfunc_called(this, "_ZN7S1471C43v30Ev");}
void  S1471C4 ::v31(){vfunc_called(this, "_ZN7S1471C43v31Ev");}
void  S1471C4 ::v32(){vfunc_called(this, "_ZN7S1471C43v32Ev");}
void  S1471C4 ::v33(){vfunc_called(this, "_ZN7S1471C43v33Ev");}
void  S1471C4 ::v34(){vfunc_called(this, "_ZN7S1471C43v34Ev");}
void  S1471C4 ::v35(){vfunc_called(this, "_ZN7S1471C43v35Ev");}
void  S1471C4 ::v36(){vfunc_called(this, "_ZN7S1471C43v36Ev");}
void  S1471C4 ::v37(){vfunc_called(this, "_ZN7S1471C43v37Ev");}
void  S1471C4 ::v38(){vfunc_called(this, "_ZN7S1471C43v38Ev");}
void  S1471C4 ::v39(){vfunc_called(this, "_ZN7S1471C43v39Ev");}
void  S1471C4 ::v40(){vfunc_called(this, "_ZN7S1471C43v40Ev");}
void  S1471C4 ::v41(){vfunc_called(this, "_ZN7S1471C43v41Ev");}
void  S1471C4 ::v42(){vfunc_called(this, "_ZN7S1471C43v42Ev");}
void  S1471C4 ::v43(){vfunc_called(this, "_ZN7S1471C43v43Ev");}
void  S1471C4 ::v44(){vfunc_called(this, "_ZN7S1471C43v44Ev");}
void  S1471C4 ::v45(){vfunc_called(this, "_ZN7S1471C43v45Ev");}
void  S1471C4 ::v46(){vfunc_called(this, "_ZN7S1471C43v46Ev");}
void  S1471C4 ::v47(){vfunc_called(this, "_ZN7S1471C43v47Ev");}
void  S1471C4 ::v48(){vfunc_called(this, "_ZN7S1471C43v48Ev");}
void  S1471C4 ::v49(){vfunc_called(this, "_ZN7S1471C43v49Ev");}
void  S1471C4 ::v50(){vfunc_called(this, "_ZN7S1471C43v50Ev");}
void  S1471C4 ::v51(){vfunc_called(this, "_ZN7S1471C43v51Ev");}
void  S1471C4 ::v52(){vfunc_called(this, "_ZN7S1471C43v52Ev");}
void  S1471C4 ::v53(){vfunc_called(this, "_ZN7S1471C43v53Ev");}
void  S1471C4 ::v54(){vfunc_called(this, "_ZN7S1471C43v54Ev");}
void  S1471C4 ::v55(){vfunc_called(this, "_ZN7S1471C43v55Ev");}
void  S1471C4 ::v56(){vfunc_called(this, "_ZN7S1471C43v56Ev");}
void  S1471C4 ::v57(){vfunc_called(this, "_ZN7S1471C43v57Ev");}
void  S1471C4 ::v58(){vfunc_called(this, "_ZN7S1471C43v58Ev");}
void  S1471C4 ::v59(){vfunc_called(this, "_ZN7S1471C43v59Ev");}
void  S1471C4 ::v60(){vfunc_called(this, "_ZN7S1471C43v60Ev");}
void  S1471C4 ::v61(){vfunc_called(this, "_ZN7S1471C43v61Ev");}
void  S1471C4 ::v62(){vfunc_called(this, "_ZN7S1471C43v62Ev");}
void  S1471C4 ::v63(){vfunc_called(this, "_ZN7S1471C43v63Ev");}
void  S1471C4 ::v64(){vfunc_called(this, "_ZN7S1471C43v64Ev");}
void  S1471C4 ::v65(){vfunc_called(this, "_ZN7S1471C43v65Ev");}
void  S1471C4 ::v66(){vfunc_called(this, "_ZN7S1471C43v66Ev");}
void  S1471C4 ::v67(){vfunc_called(this, "_ZN7S1471C43v67Ev");}
void  S1471C4 ::v68(){vfunc_called(this, "_ZN7S1471C43v68Ev");}
S1471C4 ::S1471C4(){ note_ctor("S1471C4", this);} // tgen

static void Test_S1471C4()
{
  extern Class_Descriptor cd_S1471C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S1471C4, buf);
    S1471C4 *dp, &lv = *(dp=new (buf) S1471C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S1471C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1471C4)");
    check_field_offset(lv, s1471c4f0, ABISELECT(8,4), "S1471C4.s1471c4f0");
    check_field_offset(lv, s1471c4f1, ABISELECT(16,8), "S1471C4.s1471c4f1");
    check_field_offset(lv, s1471c4f2, ABISELECT(24,16), "S1471C4.s1471c4f2");
    check_field_offset(lv, s1471c4f3, ABISELECT(56,32), "S1471C4.s1471c4f3");
    check_field_offset(lv, s1471c4f4, ABISELECT(64,40), "S1471C4.s1471c4f4");
    check_field_offset(lv, s1471c4f5, ABISELECT(72,44), "S1471C4.s1471c4f5");
    check_field_offset(lv, s1471c4f6, ABISELECT(80,52), "S1471C4.s1471c4f6");
    test_class_info(&lv, &cd_S1471C4);
    dp->~S1471C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1471C4(Test_S1471C4, "S1471C4", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S1471C4C1Ev();
extern void _ZN7S1471C4D1Ev();
Name_Map name_map_S1471C4[] = {
  NSPAIR(_ZN7S1471C4C1Ev),
  NSPAIR(_ZN7S1471C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S1471C4[];
extern void _ZN7S1471C4D1Ev();
extern void _ZN7S1471C4D0Ev();
extern void _ZN7S1471C42v5Ev();
extern void _ZN7S1471C42v6Ev();
extern void _ZN7S1471C42v7Ev();
extern void _ZN7S1471C42v8Ev();
extern void _ZN7S1471C42v9Ev();
extern void _ZN7S1471C43v10Ev();
extern void _ZN7S1471C43v11Ev();
extern void _ZN7S1471C43v12Ev();
extern void _ZN7S1471C43v13Ev();
extern void _ZN7S1471C43v14Ev();
extern void _ZN7S1471C43v15Ev();
extern void _ZN7S1471C43v16Ev();
extern void _ZN7S1471C43v17Ev();
extern void _ZN7S1471C43v18Ev();
extern void _ZN7S1471C43v19Ev();
extern void _ZN7S1471C43v20Ev();
extern void _ZN7S1471C43v21Ev();
extern void _ZN7S1471C43v22Ev();
extern void _ZN7S1471C43v23Ev();
extern void _ZN7S1471C43v24Ev();
extern void _ZN7S1471C43v25Ev();
extern void _ZN7S1471C43v26Ev();
extern void _ZN7S1471C43v27Ev();
extern void _ZN7S1471C43v28Ev();
extern void _ZN7S1471C43v29Ev();
extern void _ZN7S1471C43v30Ev();
extern void _ZN7S1471C43v31Ev();
extern void _ZN7S1471C43v32Ev();
extern void _ZN7S1471C43v33Ev();
extern void _ZN7S1471C43v34Ev();
extern void _ZN7S1471C43v35Ev();
extern void _ZN7S1471C43v36Ev();
extern void _ZN7S1471C43v37Ev();
extern void _ZN7S1471C43v38Ev();
extern void _ZN7S1471C43v39Ev();
extern void _ZN7S1471C43v40Ev();
extern void _ZN7S1471C43v41Ev();
extern void _ZN7S1471C43v42Ev();
extern void _ZN7S1471C43v43Ev();
extern void _ZN7S1471C43v44Ev();
extern void _ZN7S1471C43v45Ev();
extern void _ZN7S1471C43v46Ev();
extern void _ZN7S1471C43v47Ev();
extern void _ZN7S1471C43v48Ev();
extern void _ZN7S1471C43v49Ev();
extern void _ZN7S1471C43v50Ev();
extern void _ZN7S1471C43v51Ev();
extern void _ZN7S1471C43v52Ev();
extern void _ZN7S1471C43v53Ev();
extern void _ZN7S1471C43v54Ev();
extern void _ZN7S1471C43v55Ev();
extern void _ZN7S1471C43v56Ev();
extern void _ZN7S1471C43v57Ev();
extern void _ZN7S1471C43v58Ev();
extern void _ZN7S1471C43v59Ev();
extern void _ZN7S1471C43v60Ev();
extern void _ZN7S1471C43v61Ev();
extern void _ZN7S1471C43v62Ev();
extern void _ZN7S1471C43v63Ev();
extern void _ZN7S1471C43v64Ev();
extern void _ZN7S1471C43v65Ev();
extern void _ZN7S1471C43v66Ev();
extern void _ZN7S1471C43v67Ev();
extern void _ZN7S1471C43v68Ev();
static  VTBL_ENTRY vtc_S1471C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1471C4[0]),
  (VTBL_ENTRY)&_ZN7S1471C4D1Ev,
  (VTBL_ENTRY)&_ZN7S1471C4D0Ev,
  (VTBL_ENTRY)&_ZN7S1471C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1471C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1471C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1471C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1471C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v68Ev,
};
extern VTBL_ENTRY _ZTI7S1471C4[];
extern  VTBL_ENTRY _ZTV7S1471C4[];
Class_Descriptor cd_S1471C4 = {  "S1471C4", // class name
  0,0,//no base classes
  &(vtc_S1471C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S1471C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S1471C4),68, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1471C3  : S1471C4 {
  unsigned int s1471c3f0:1;
  unsigned int s1471c3f1:1;
  unsigned int s1471c3f2:1;
  unsigned int s1471c3f3:1;
  unsigned int s1471c3f4:1;
  unsigned int s1471c3f5:1;
  unsigned int s1471c3f6:1;
  ::S7856C24 s1471c3f7;
  virtual  ~S1471C3(); // _ZN7S1471C3D1Ev
  virtual void  v69(); // _ZN7S1471C33v69Ev
  virtual void  v70(); // _ZN7S1471C33v70Ev
  virtual void  v71(); // _ZN7S1471C33v71Ev
  virtual void  v72(); // _ZN7S1471C33v72Ev
  virtual void  v73(); // _ZN7S1471C33v73Ev
  virtual void  v74(); // _ZN7S1471C33v74Ev
  virtual void  v75(); // _ZN7S1471C33v75Ev
  virtual void  v76(); // _ZN7S1471C33v76Ev
  virtual void  v77(); // _ZN7S1471C33v77Ev
  virtual void  v78(); // _ZN7S1471C33v78Ev
  virtual void  v79(); // _ZN7S1471C33v79Ev
  virtual void  v80(); // _ZN7S1471C33v80Ev
  virtual void  v81(); // _ZN7S1471C33v81Ev
  virtual void  v82(); // _ZN7S1471C33v82Ev
  virtual void  v83(); // _ZN7S1471C33v83Ev
  virtual void  v84(); // _ZN7S1471C33v84Ev
  virtual void  v85(); // _ZN7S1471C33v85Ev
  virtual void  v86(); // _ZN7S1471C33v86Ev
  virtual void  v87(); // _ZN7S1471C33v87Ev
  virtual void  v88(); // _ZN7S1471C33v88Ev
  S1471C3(); // tgen
};
//SIG(-1 S1471C3) C1{ BC2{ vd v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 Fi FL Fp[4] Fi[2] Fp FC3{ m Fi[2]} Fp[2]} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 FC4{ m}}


 S1471C3 ::~S1471C3(){ note_dtor("S1471C3", this);}
void  S1471C3 ::v69(){vfunc_called(this, "_ZN7S1471C33v69Ev");}
void  S1471C3 ::v70(){vfunc_called(this, "_ZN7S1471C33v70Ev");}
void  S1471C3 ::v71(){vfunc_called(this, "_ZN7S1471C33v71Ev");}
void  S1471C3 ::v72(){vfunc_called(this, "_ZN7S1471C33v72Ev");}
void  S1471C3 ::v73(){vfunc_called(this, "_ZN7S1471C33v73Ev");}
void  S1471C3 ::v74(){vfunc_called(this, "_ZN7S1471C33v74Ev");}
void  S1471C3 ::v75(){vfunc_called(this, "_ZN7S1471C33v75Ev");}
void  S1471C3 ::v76(){vfunc_called(this, "_ZN7S1471C33v76Ev");}
void  S1471C3 ::v77(){vfunc_called(this, "_ZN7S1471C33v77Ev");}
void  S1471C3 ::v78(){vfunc_called(this, "_ZN7S1471C33v78Ev");}
void  S1471C3 ::v79(){vfunc_called(this, "_ZN7S1471C33v79Ev");}
void  S1471C3 ::v80(){vfunc_called(this, "_ZN7S1471C33v80Ev");}
void  S1471C3 ::v81(){vfunc_called(this, "_ZN7S1471C33v81Ev");}
void  S1471C3 ::v82(){vfunc_called(this, "_ZN7S1471C33v82Ev");}
void  S1471C3 ::v83(){vfunc_called(this, "_ZN7S1471C33v83Ev");}
void  S1471C3 ::v84(){vfunc_called(this, "_ZN7S1471C33v84Ev");}
void  S1471C3 ::v85(){vfunc_called(this, "_ZN7S1471C33v85Ev");}
void  S1471C3 ::v86(){vfunc_called(this, "_ZN7S1471C33v86Ev");}
void  S1471C3 ::v87(){vfunc_called(this, "_ZN7S1471C33v87Ev");}
void  S1471C3 ::v88(){vfunc_called(this, "_ZN7S1471C33v88Ev");}
S1471C3 ::S1471C3(){ note_ctor("S1471C3", this);} // tgen

static void Test_S1471C3()
{
  extern Class_Descriptor cd_S1471C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(14,17)];
    init_test(&cd_S1471C3, buf);
    S1471C3 *dp, &lv = *(dp=new (buf) S1471C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,64), "sizeof(S1471C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1471C3)");
    check_base_class_offset(lv, (S1471C4*), 0, "S1471C3");
    set_bf_and_test(lv, s1471c3f0, ABISELECT(96,60), 0, 1, 1, "S1471C3");
    set_bf_and_test(lv, s1471c3f1, ABISELECT(96,60), 1, 1, 1, "S1471C3");
    set_bf_and_test(lv, s1471c3f2, ABISELECT(96,60), 2, 1, 1, "S1471C3");
    set_bf_and_test(lv, s1471c3f3, ABISELECT(96,60), 3, 1, 1, "S1471C3");
    set_bf_and_test(lv, s1471c3f4, ABISELECT(96,60), 4, 1, 1, "S1471C3");
    set_bf_and_test(lv, s1471c3f5, ABISELECT(96,60), 5, 1, 1, "S1471C3");
    set_bf_and_test(lv, s1471c3f6, ABISELECT(96,60), 6, 1, 1, "S1471C3");
    check_field_offset(lv, s1471c3f7, ABISELECT(97,61), "S1471C3.s1471c3f7");
    test_class_info(&lv, &cd_S1471C3);
    dp->~S1471C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1471C3(Test_S1471C3, "S1471C3", ABISELECT(104,64));

#else // __cplusplus

extern void _ZN7S1471C3C1Ev();
extern void _ZN7S1471C3D1Ev();
Name_Map name_map_S1471C3[] = {
  NSPAIR(_ZN7S1471C3C1Ev),
  NSPAIR(_ZN7S1471C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1471C4;
extern VTBL_ENTRY _ZTI7S1471C4[];
extern  VTBL_ENTRY _ZTV7S1471C4[];
static Base_Class bases_S1471C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1471C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1471C3[];
extern void _ZN7S1471C3D1Ev();
extern void _ZN7S1471C3D0Ev();
extern void _ZN7S1471C42v5Ev();
extern void _ZN7S1471C42v6Ev();
extern void _ZN7S1471C42v7Ev();
extern void _ZN7S1471C42v8Ev();
extern void _ZN7S1471C42v9Ev();
extern void _ZN7S1471C43v10Ev();
extern void _ZN7S1471C43v11Ev();
extern void _ZN7S1471C43v12Ev();
extern void _ZN7S1471C43v13Ev();
extern void _ZN7S1471C43v14Ev();
extern void _ZN7S1471C43v15Ev();
extern void _ZN7S1471C43v16Ev();
extern void _ZN7S1471C43v17Ev();
extern void _ZN7S1471C43v18Ev();
extern void _ZN7S1471C43v19Ev();
extern void _ZN7S1471C43v20Ev();
extern void _ZN7S1471C43v21Ev();
extern void _ZN7S1471C43v22Ev();
extern void _ZN7S1471C43v23Ev();
extern void _ZN7S1471C43v24Ev();
extern void _ZN7S1471C43v25Ev();
extern void _ZN7S1471C43v26Ev();
extern void _ZN7S1471C43v27Ev();
extern void _ZN7S1471C43v28Ev();
extern void _ZN7S1471C43v29Ev();
extern void _ZN7S1471C43v30Ev();
extern void _ZN7S1471C43v31Ev();
extern void _ZN7S1471C43v32Ev();
extern void _ZN7S1471C43v33Ev();
extern void _ZN7S1471C43v34Ev();
extern void _ZN7S1471C43v35Ev();
extern void _ZN7S1471C43v36Ev();
extern void _ZN7S1471C43v37Ev();
extern void _ZN7S1471C43v38Ev();
extern void _ZN7S1471C43v39Ev();
extern void _ZN7S1471C43v40Ev();
extern void _ZN7S1471C43v41Ev();
extern void _ZN7S1471C43v42Ev();
extern void _ZN7S1471C43v43Ev();
extern void _ZN7S1471C43v44Ev();
extern void _ZN7S1471C43v45Ev();
extern void _ZN7S1471C43v46Ev();
extern void _ZN7S1471C43v47Ev();
extern void _ZN7S1471C43v48Ev();
extern void _ZN7S1471C43v49Ev();
extern void _ZN7S1471C43v50Ev();
extern void _ZN7S1471C43v51Ev();
extern void _ZN7S1471C43v52Ev();
extern void _ZN7S1471C43v53Ev();
extern void _ZN7S1471C43v54Ev();
extern void _ZN7S1471C43v55Ev();
extern void _ZN7S1471C43v56Ev();
extern void _ZN7S1471C43v57Ev();
extern void _ZN7S1471C43v58Ev();
extern void _ZN7S1471C43v59Ev();
extern void _ZN7S1471C43v60Ev();
extern void _ZN7S1471C43v61Ev();
extern void _ZN7S1471C43v62Ev();
extern void _ZN7S1471C43v63Ev();
extern void _ZN7S1471C43v64Ev();
extern void _ZN7S1471C43v65Ev();
extern void _ZN7S1471C43v66Ev();
extern void _ZN7S1471C43v67Ev();
extern void _ZN7S1471C43v68Ev();
extern void _ZN7S1471C33v69Ev();
extern void _ZN7S1471C33v70Ev();
extern void _ZN7S1471C33v71Ev();
extern void _ZN7S1471C33v72Ev();
extern void _ZN7S1471C33v73Ev();
extern void _ZN7S1471C33v74Ev();
extern void _ZN7S1471C33v75Ev();
extern void _ZN7S1471C33v76Ev();
extern void _ZN7S1471C33v77Ev();
extern void _ZN7S1471C33v78Ev();
extern void _ZN7S1471C33v79Ev();
extern void _ZN7S1471C33v80Ev();
extern void _ZN7S1471C33v81Ev();
extern void _ZN7S1471C33v82Ev();
extern void _ZN7S1471C33v83Ev();
extern void _ZN7S1471C33v84Ev();
extern void _ZN7S1471C33v85Ev();
extern void _ZN7S1471C33v86Ev();
extern void _ZN7S1471C33v87Ev();
extern void _ZN7S1471C33v88Ev();
static  VTBL_ENTRY vtc_S1471C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1471C3[0]),
  (VTBL_ENTRY)&_ZN7S1471C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1471C3D0Ev,
  (VTBL_ENTRY)&_ZN7S1471C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1471C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1471C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1471C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1471C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v69Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v70Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v71Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v72Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v73Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v74Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v75Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v76Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v77Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v78Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v79Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v80Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v81Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v82Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v83Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v84Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v85Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v86Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v87Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v88Ev,
};
extern VTBL_ENTRY _ZTI7S1471C3[];
extern  VTBL_ENTRY _ZTV7S1471C3[];
Class_Descriptor cd_S1471C3 = {  "S1471C3", // class name
  bases_S1471C3, 1,
  &(vtc_S1471C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(104,64), // object size
  NSPAIRA(_ZTI7S1471C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1471C3),88, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1471C2  : S1471C3 {
  virtual  ~S1471C2(); // _ZN7S1471C2D1Ev
  virtual void  v89(); // _ZN7S1471C23v89Ev
  virtual void  v90(); // _ZN7S1471C23v90Ev
  S1471C2(); // tgen
};
//SIG(-1 S1471C2) C1{ BC2{ BC3{ vd v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 Fi FL Fp[4] Fi[2] Fp FC4{ m Fi[2]} Fp[2]} vd v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 FC5{ m}} vd v1 v2}


 S1471C2 ::~S1471C2(){ note_dtor("S1471C2", this);}
void  S1471C2 ::v89(){vfunc_called(this, "_ZN7S1471C23v89Ev");}
void  S1471C2 ::v90(){vfunc_called(this, "_ZN7S1471C23v90Ev");}
S1471C2 ::S1471C2(){ note_ctor("S1471C2", this);} // tgen

static void Test_S1471C2()
{
  extern Class_Descriptor cd_S1471C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(14,17)];
    init_test(&cd_S1471C2, buf);
    S1471C2 *dp, &lv = *(dp=new (buf) S1471C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,64), "sizeof(S1471C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1471C2)");
    check_base_class_offset(lv, (S1471C4*)(S1471C3*), 0, "S1471C2");
    check_base_class_offset(lv, (S1471C3*), 0, "S1471C2");
    test_class_info(&lv, &cd_S1471C2);
    dp->~S1471C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1471C2(Test_S1471C2, "S1471C2", ABISELECT(104,64));

#else // __cplusplus

extern void _ZN7S1471C2C1Ev();
extern void _ZN7S1471C2D1Ev();
Name_Map name_map_S1471C2[] = {
  NSPAIR(_ZN7S1471C2C1Ev),
  NSPAIR(_ZN7S1471C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1471C4;
extern VTBL_ENTRY _ZTI7S1471C4[];
extern  VTBL_ENTRY _ZTV7S1471C4[];
extern Class_Descriptor cd_S1471C3;
extern VTBL_ENTRY _ZTI7S1471C3[];
extern  VTBL_ENTRY _ZTV7S1471C3[];
static Base_Class bases_S1471C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1471C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1471C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1471C2[];
extern void _ZN7S1471C2D1Ev();
extern void _ZN7S1471C2D0Ev();
extern void _ZN7S1471C42v5Ev();
extern void _ZN7S1471C42v6Ev();
extern void _ZN7S1471C42v7Ev();
extern void _ZN7S1471C42v8Ev();
extern void _ZN7S1471C42v9Ev();
extern void _ZN7S1471C43v10Ev();
extern void _ZN7S1471C43v11Ev();
extern void _ZN7S1471C43v12Ev();
extern void _ZN7S1471C43v13Ev();
extern void _ZN7S1471C43v14Ev();
extern void _ZN7S1471C43v15Ev();
extern void _ZN7S1471C43v16Ev();
extern void _ZN7S1471C43v17Ev();
extern void _ZN7S1471C43v18Ev();
extern void _ZN7S1471C43v19Ev();
extern void _ZN7S1471C43v20Ev();
extern void _ZN7S1471C43v21Ev();
extern void _ZN7S1471C43v22Ev();
extern void _ZN7S1471C43v23Ev();
extern void _ZN7S1471C43v24Ev();
extern void _ZN7S1471C43v25Ev();
extern void _ZN7S1471C43v26Ev();
extern void _ZN7S1471C43v27Ev();
extern void _ZN7S1471C43v28Ev();
extern void _ZN7S1471C43v29Ev();
extern void _ZN7S1471C43v30Ev();
extern void _ZN7S1471C43v31Ev();
extern void _ZN7S1471C43v32Ev();
extern void _ZN7S1471C43v33Ev();
extern void _ZN7S1471C43v34Ev();
extern void _ZN7S1471C43v35Ev();
extern void _ZN7S1471C43v36Ev();
extern void _ZN7S1471C43v37Ev();
extern void _ZN7S1471C43v38Ev();
extern void _ZN7S1471C43v39Ev();
extern void _ZN7S1471C43v40Ev();
extern void _ZN7S1471C43v41Ev();
extern void _ZN7S1471C43v42Ev();
extern void _ZN7S1471C43v43Ev();
extern void _ZN7S1471C43v44Ev();
extern void _ZN7S1471C43v45Ev();
extern void _ZN7S1471C43v46Ev();
extern void _ZN7S1471C43v47Ev();
extern void _ZN7S1471C43v48Ev();
extern void _ZN7S1471C43v49Ev();
extern void _ZN7S1471C43v50Ev();
extern void _ZN7S1471C43v51Ev();
extern void _ZN7S1471C43v52Ev();
extern void _ZN7S1471C43v53Ev();
extern void _ZN7S1471C43v54Ev();
extern void _ZN7S1471C43v55Ev();
extern void _ZN7S1471C43v56Ev();
extern void _ZN7S1471C43v57Ev();
extern void _ZN7S1471C43v58Ev();
extern void _ZN7S1471C43v59Ev();
extern void _ZN7S1471C43v60Ev();
extern void _ZN7S1471C43v61Ev();
extern void _ZN7S1471C43v62Ev();
extern void _ZN7S1471C43v63Ev();
extern void _ZN7S1471C43v64Ev();
extern void _ZN7S1471C43v65Ev();
extern void _ZN7S1471C43v66Ev();
extern void _ZN7S1471C43v67Ev();
extern void _ZN7S1471C43v68Ev();
extern void _ZN7S1471C33v69Ev();
extern void _ZN7S1471C33v70Ev();
extern void _ZN7S1471C33v71Ev();
extern void _ZN7S1471C33v72Ev();
extern void _ZN7S1471C33v73Ev();
extern void _ZN7S1471C33v74Ev();
extern void _ZN7S1471C33v75Ev();
extern void _ZN7S1471C33v76Ev();
extern void _ZN7S1471C33v77Ev();
extern void _ZN7S1471C33v78Ev();
extern void _ZN7S1471C33v79Ev();
extern void _ZN7S1471C33v80Ev();
extern void _ZN7S1471C33v81Ev();
extern void _ZN7S1471C33v82Ev();
extern void _ZN7S1471C33v83Ev();
extern void _ZN7S1471C33v84Ev();
extern void _ZN7S1471C33v85Ev();
extern void _ZN7S1471C33v86Ev();
extern void _ZN7S1471C33v87Ev();
extern void _ZN7S1471C33v88Ev();
extern void _ZN7S1471C23v89Ev();
extern void _ZN7S1471C23v90Ev();
static  VTBL_ENTRY vtc_S1471C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1471C2[0]),
  (VTBL_ENTRY)&_ZN7S1471C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1471C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1471C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1471C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1471C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1471C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1471C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v69Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v70Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v71Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v72Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v73Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v74Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v75Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v76Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v77Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v78Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v79Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v80Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v81Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v82Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v83Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v84Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v85Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v86Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v87Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v88Ev,
  (VTBL_ENTRY)&_ZN7S1471C23v89Ev,
  (VTBL_ENTRY)&_ZN7S1471C23v90Ev,
};
extern VTBL_ENTRY _ZTI7S1471C2[];
extern  VTBL_ENTRY _ZTV7S1471C2[];
Class_Descriptor cd_S1471C2 = {  "S1471C2", // class name
  bases_S1471C2, 2,
  &(vtc_S1471C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(104,64), // object size
  NSPAIRA(_ZTI7S1471C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1471C2),90, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1471C1  : S1471C2 {
  ::S1304C7_nt s1471c1f0;
  unsigned int s1471c1f1:1;
  virtual  ~S1471C1(); // _ZN7S1471C1D1Ev
  virtual void  v1(); // _ZN7S1471C12v1Ev
  virtual void  v2(); // _ZN7S1471C12v2Ev
  virtual void  v3(); // _ZN7S1471C12v3Ev
  virtual void  v4(); // _ZN7S1471C12v4Ev
  S1471C1(); // tgen
};
//SIG(1 S1471C1) C1{ BC2{ BC3{ BC4{ vd v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 Fi FL Fp[4] Fi[2] Fp FC5{ m Fi[2]} Fp[2]} vd v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 FC6{ m}} vd v89 v90} vd v1 v2 v3 v4 FC7{ BC8{ m Fc[4] FC9{ BC10{ BC11{ m Fp Fi[2]}}} Fi[2]} Fp} Fi:1}


 S1471C1 ::~S1471C1(){ note_dtor("S1471C1", this);}
void  S1471C1 ::v1(){vfunc_called(this, "_ZN7S1471C12v1Ev");}
void  S1471C1 ::v2(){vfunc_called(this, "_ZN7S1471C12v2Ev");}
void  S1471C1 ::v3(){vfunc_called(this, "_ZN7S1471C12v3Ev");}
void  S1471C1 ::v4(){vfunc_called(this, "_ZN7S1471C12v4Ev");}
S1471C1 ::S1471C1(){ note_ctor("S1471C1", this);} // tgen

static void Test_S1471C1()
{
  extern Class_Descriptor cd_S1471C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(20,25)];
    init_test(&cd_S1471C1, buf);
    S1471C1 *dp, &lv = *(dp=new (buf) S1471C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(152,96), "sizeof(S1471C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1471C1)");
    check_base_class_offset(lv, (S1471C4*)(S1471C3*)(S1471C2*), 0, "S1471C1");
    check_base_class_offset(lv, (S1471C3*)(S1471C2*), 0, "S1471C1");
    check_base_class_offset(lv, (S1471C2*), 0, "S1471C1");
    check_field_offset(lv, s1471c1f0, ABISELECT(104,64), "S1471C1.s1471c1f0");
    set_bf_and_test(lv, s1471c1f1, ABISELECT(144,92), 0, 1, 1, "S1471C1");
    test_class_info(&lv, &cd_S1471C1);
    dp->~S1471C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1471C1(Test_S1471C1, "S1471C1", ABISELECT(152,96));

#else // __cplusplus

extern void _ZN7S1471C1C1Ev();
extern void _ZN7S1471C1D1Ev();
Name_Map name_map_S1471C1[] = {
  NSPAIR(_ZN7S1471C1C1Ev),
  NSPAIR(_ZN7S1471C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1471C4;
extern VTBL_ENTRY _ZTI7S1471C4[];
extern  VTBL_ENTRY _ZTV7S1471C4[];
extern Class_Descriptor cd_S1471C3;
extern VTBL_ENTRY _ZTI7S1471C3[];
extern  VTBL_ENTRY _ZTV7S1471C3[];
extern Class_Descriptor cd_S1471C2;
extern VTBL_ENTRY _ZTI7S1471C2[];
extern  VTBL_ENTRY _ZTV7S1471C2[];
static Base_Class bases_S1471C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1471C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1471C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S1471C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1471C1[];
extern void _ZN7S1471C1D1Ev();
extern void _ZN7S1471C1D0Ev();
extern void _ZN7S1471C42v5Ev();
extern void _ZN7S1471C42v6Ev();
extern void _ZN7S1471C42v7Ev();
extern void _ZN7S1471C42v8Ev();
extern void _ZN7S1471C42v9Ev();
extern void _ZN7S1471C43v10Ev();
extern void _ZN7S1471C43v11Ev();
extern void _ZN7S1471C43v12Ev();
extern void _ZN7S1471C43v13Ev();
extern void _ZN7S1471C43v14Ev();
extern void _ZN7S1471C43v15Ev();
extern void _ZN7S1471C43v16Ev();
extern void _ZN7S1471C43v17Ev();
extern void _ZN7S1471C43v18Ev();
extern void _ZN7S1471C43v19Ev();
extern void _ZN7S1471C43v20Ev();
extern void _ZN7S1471C43v21Ev();
extern void _ZN7S1471C43v22Ev();
extern void _ZN7S1471C43v23Ev();
extern void _ZN7S1471C43v24Ev();
extern void _ZN7S1471C43v25Ev();
extern void _ZN7S1471C43v26Ev();
extern void _ZN7S1471C43v27Ev();
extern void _ZN7S1471C43v28Ev();
extern void _ZN7S1471C43v29Ev();
extern void _ZN7S1471C43v30Ev();
extern void _ZN7S1471C43v31Ev();
extern void _ZN7S1471C43v32Ev();
extern void _ZN7S1471C43v33Ev();
extern void _ZN7S1471C43v34Ev();
extern void _ZN7S1471C43v35Ev();
extern void _ZN7S1471C43v36Ev();
extern void _ZN7S1471C43v37Ev();
extern void _ZN7S1471C43v38Ev();
extern void _ZN7S1471C43v39Ev();
extern void _ZN7S1471C43v40Ev();
extern void _ZN7S1471C43v41Ev();
extern void _ZN7S1471C43v42Ev();
extern void _ZN7S1471C43v43Ev();
extern void _ZN7S1471C43v44Ev();
extern void _ZN7S1471C43v45Ev();
extern void _ZN7S1471C43v46Ev();
extern void _ZN7S1471C43v47Ev();
extern void _ZN7S1471C43v48Ev();
extern void _ZN7S1471C43v49Ev();
extern void _ZN7S1471C43v50Ev();
extern void _ZN7S1471C43v51Ev();
extern void _ZN7S1471C43v52Ev();
extern void _ZN7S1471C43v53Ev();
extern void _ZN7S1471C43v54Ev();
extern void _ZN7S1471C43v55Ev();
extern void _ZN7S1471C43v56Ev();
extern void _ZN7S1471C43v57Ev();
extern void _ZN7S1471C43v58Ev();
extern void _ZN7S1471C43v59Ev();
extern void _ZN7S1471C43v60Ev();
extern void _ZN7S1471C43v61Ev();
extern void _ZN7S1471C43v62Ev();
extern void _ZN7S1471C43v63Ev();
extern void _ZN7S1471C43v64Ev();
extern void _ZN7S1471C43v65Ev();
extern void _ZN7S1471C43v66Ev();
extern void _ZN7S1471C43v67Ev();
extern void _ZN7S1471C43v68Ev();
extern void _ZN7S1471C33v69Ev();
extern void _ZN7S1471C33v70Ev();
extern void _ZN7S1471C33v71Ev();
extern void _ZN7S1471C33v72Ev();
extern void _ZN7S1471C33v73Ev();
extern void _ZN7S1471C33v74Ev();
extern void _ZN7S1471C33v75Ev();
extern void _ZN7S1471C33v76Ev();
extern void _ZN7S1471C33v77Ev();
extern void _ZN7S1471C33v78Ev();
extern void _ZN7S1471C33v79Ev();
extern void _ZN7S1471C33v80Ev();
extern void _ZN7S1471C33v81Ev();
extern void _ZN7S1471C33v82Ev();
extern void _ZN7S1471C33v83Ev();
extern void _ZN7S1471C33v84Ev();
extern void _ZN7S1471C33v85Ev();
extern void _ZN7S1471C33v86Ev();
extern void _ZN7S1471C33v87Ev();
extern void _ZN7S1471C33v88Ev();
extern void _ZN7S1471C23v89Ev();
extern void _ZN7S1471C23v90Ev();
extern void _ZN7S1471C12v1Ev();
extern void _ZN7S1471C12v2Ev();
extern void _ZN7S1471C12v3Ev();
extern void _ZN7S1471C12v4Ev();
static  VTBL_ENTRY vtc_S1471C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1471C1[0]),
  (VTBL_ENTRY)&_ZN7S1471C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1471C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1471C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1471C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1471C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1471C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1471C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v69Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v70Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v71Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v72Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v73Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v74Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v75Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v76Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v77Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v78Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v79Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v80Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v81Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v82Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v83Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v84Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v85Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v86Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v87Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v88Ev,
  (VTBL_ENTRY)&_ZN7S1471C23v89Ev,
  (VTBL_ENTRY)&_ZN7S1471C23v90Ev,
  (VTBL_ENTRY)&_ZN7S1471C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1471C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1471C12v3Ev,
  (VTBL_ENTRY)&_ZN7S1471C12v4Ev,
};
extern VTBL_ENTRY _ZTI7S1471C1[];
extern  VTBL_ENTRY _ZTV7S1471C1[];
Class_Descriptor cd_S1471C1 = {  "S1471C1", // class name
  bases_S1471C1, 3,
  &(vtc_S1471C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(152,96), // object size
  NSPAIRA(_ZTI7S1471C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1471C1),94, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

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



//skip512 S17556C4_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S17556C3_nt  {
  ::S17556C4_nt s17556c3f0;
  void  mf17556c3(); // _ZN11S17556C3_nt9mf17556c3Ev
};
//SIG(-1 S17556C3_nt) C1{ m FC2{ FL[4]}}


void  S17556C3_nt ::mf17556c3(){}

//skip512 S17556C3_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S17556C5_nt  {
  void *s17556c5f0;
  int s17556c5f1;
  ::S7856C24 s17556c5f2;
  void  mf17556c5(); // _ZN11S17556C5_nt9mf17556c5Ev
};
//SIG(-1 S17556C5_nt) C1{ m Fp Fi FC2{ m}}


void  S17556C5_nt ::mf17556c5(){}

//skip512 S17556C5_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S17556C7  {
  char s17556c7f0;
  ::S17556C5_nt s17556c7f1;
  ::S17556C5_nt s17556c7f2;
  ::S17556C5_nt s17556c7f3;
  ::S17556C5_nt s17556c7f4;
  int s17556c7f5;
  ::S17556C5_nt s17556c7f6;
  char s17556c7f7;
  int s17556c7f8;
  void  mf17556c7(); // _ZN8S17556C79mf17556c7Ev
};
//SIG(-1 S17556C7) C1{ m Fc FC2{ m Fp Fi FC3{ m}} FC2 FC2 FC2 Fi FC2 Fc Fi}


void  S17556C7 ::mf17556c7(){}

static void Test_S17556C7()
{
  {
    init_simple_test("S17556C7");
    S17556C7 lv;
    check2(sizeof(lv), ABISELECT(104,76), "sizeof(S17556C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17556C7)");
    check_field_offset(lv, s17556c7f0, 0, "S17556C7.s17556c7f0");
    check_field_offset(lv, s17556c7f1, ABISELECT(8,4), "S17556C7.s17556c7f1");
    check_field_offset(lv, s17556c7f2, ABISELECT(24,16), "S17556C7.s17556c7f2");
    check_field_offset(lv, s17556c7f3, ABISELECT(40,28), "S17556C7.s17556c7f3");
    check_field_offset(lv, s17556c7f4, ABISELECT(56,40), "S17556C7.s17556c7f4");
    check_field_offset(lv, s17556c7f5, ABISELECT(72,52), "S17556C7.s17556c7f5");
    check_field_offset(lv, s17556c7f6, ABISELECT(80,56), "S17556C7.s17556c7f6");
    check_field_offset(lv, s17556c7f7, ABISELECT(96,68), "S17556C7.s17556c7f7");
    check_field_offset(lv, s17556c7f8, ABISELECT(100,72), "S17556C7.s17556c7f8");
  }
}
static Arrange_To_Call_Me vS17556C7(Test_S17556C7, "S17556C7", ABISELECT(104,76));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S17556C8  {
  char s17556c8f0;
  int s17556c8f1[16];
  void  mf17556c8(); // _ZN8S17556C89mf17556c8Ev
};
//SIG(-1 S17556C8) C1{ m Fc Fi[16]}


void  S17556C8 ::mf17556c8(){}

static void Test_S17556C8()
{
  {
    init_simple_test("S17556C8");
    S17556C8 lv;
    check2(sizeof(lv), 68, "sizeof(S17556C8)");
    check2(__alignof__(lv), 4, "__alignof__(S17556C8)");
    check_field_offset(lv, s17556c8f0, 0, "S17556C8.s17556c8f0");
    check_field_offset(lv, s17556c8f1, 4, "S17556C8.s17556c8f1");
  }
}
static Arrange_To_Call_Me vS17556C8(Test_S17556C8, "S17556C8", 68);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S17556C9_nt  {
  char s17556c9f0[2];
  void  mf17556c9(); // _ZN11S17556C9_nt9mf17556c9Ev
};
//SIG(-1 S17556C9_nt) C1{ m Fc[2]}


void  S17556C9_nt ::mf17556c9(){}

//skip512 S17556C9_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S17556C10  {
  char s17556c10f0;
  ::S17556C5_nt s17556c10f1;
  ::S17556C5_nt s17556c10f2;
  int s17556c10f3[5];
  char s17556c10f4;
  int s17556c10f5;
  ::S17556C5_nt s17556c10f6;
  ::S17556C5_nt s17556c10f7;
  void  mf17556c10(); // _ZN9S17556C1010mf17556c10Ev
};
//SIG(-1 S17556C10) C1{ m Fc FC2{ m Fp Fi FC3{ m}} FC2 Fi[5] Fc Fi FC2 FC2}


void  S17556C10 ::mf17556c10(){}

static void Test_S17556C10()
{
  {
    init_simple_test("S17556C10");
    S17556C10 lv;
    check2(sizeof(lv), ABISELECT(104,80), "sizeof(S17556C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17556C10)");
    check_field_offset(lv, s17556c10f0, 0, "S17556C10.s17556c10f0");
    check_field_offset(lv, s17556c10f1, ABISELECT(8,4), "S17556C10.s17556c10f1");
    check_field_offset(lv, s17556c10f2, ABISELECT(24,16), "S17556C10.s17556c10f2");
    check_field_offset(lv, s17556c10f3, ABISELECT(40,28), "S17556C10.s17556c10f3");
    check_field_offset(lv, s17556c10f4, ABISELECT(60,48), "S17556C10.s17556c10f4");
    check_field_offset(lv, s17556c10f5, ABISELECT(64,52), "S17556C10.s17556c10f5");
    check_field_offset(lv, s17556c10f6, ABISELECT(72,56), "S17556C10.s17556c10f6");
    check_field_offset(lv, s17556c10f7, ABISELECT(88,68), "S17556C10.s17556c10f7");
  }
}
static Arrange_To_Call_Me vS17556C10(Test_S17556C10, "S17556C10", ABISELECT(104,80));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S17556C11  {
  char s17556c11f0;
  int s17556c11f1[2];
  ::S17556C5_nt s17556c11f2;
  ::S17556C5_nt s17556c11f3;
  ::S17556C5_nt s17556c11f4;
  ::S17556C5_nt s17556c11f5;
  ::S17556C5_nt s17556c11f6;
  ::S17556C5_nt s17556c11f7;
  char s17556c11f8;
  void  mf17556c11(); // _ZN9S17556C1110mf17556c11Ev
};
//SIG(-1 S17556C11) C1{ m Fc Fi[2] FC2{ m Fp Fi FC3{ m}} FC2 FC2 FC2 FC2 FC2 Fc}


void  S17556C11 ::mf17556c11(){}

static void Test_S17556C11()
{
  {
    init_simple_test("S17556C11");
    S17556C11 lv;
    check2(sizeof(lv), ABISELECT(120,88), "sizeof(S17556C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17556C11)");
    check_field_offset(lv, s17556c11f0, 0, "S17556C11.s17556c11f0");
    check_field_offset(lv, s17556c11f1, 4, "S17556C11.s17556c11f1");
    check_field_offset(lv, s17556c11f2, ABISELECT(16,12), "S17556C11.s17556c11f2");
    check_field_offset(lv, s17556c11f3, ABISELECT(32,24), "S17556C11.s17556c11f3");
    check_field_offset(lv, s17556c11f4, ABISELECT(48,36), "S17556C11.s17556c11f4");
    check_field_offset(lv, s17556c11f5, ABISELECT(64,48), "S17556C11.s17556c11f5");
    check_field_offset(lv, s17556c11f6, ABISELECT(80,60), "S17556C11.s17556c11f6");
    check_field_offset(lv, s17556c11f7, ABISELECT(96,72), "S17556C11.s17556c11f7");
    check_field_offset(lv, s17556c11f8, ABISELECT(112,84), "S17556C11.s17556c11f8");
  }
}
static Arrange_To_Call_Me vS17556C11(Test_S17556C11, "S17556C11", ABISELECT(120,88));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S17556C12  {
  char s17556c12f0;
  ::S1868C13_nt s17556c12f1;
  void  mf17556c12(); // _ZN9S17556C1210mf17556c12Ev
};
//SIG(-1 S17556C12) C1{ m Fc FC2{ m Fp Fi[2] FC3{ m}}}


void  S17556C12 ::mf17556c12(){}

static void Test_S17556C12()
{
  {
    init_simple_test("S17556C12");
    S17556C12 lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S17556C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17556C12)");
    check_field_offset(lv, s17556c12f0, 0, "S17556C12.s17556c12f0");
    check_field_offset(lv, s17556c12f1, ABISELECT(8,4), "S17556C12.s17556c12f1");
  }
}
static Arrange_To_Call_Me vS17556C12(Test_S17556C12, "S17556C12", ABISELECT(32,20));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S17556C15_nt  {
  void *s17556c15f0;
  int s17556c15f1[2];
  ::S7856C15 s17556c15f2;
  void  mf17556c15(); // _ZN12S17556C15_nt10mf17556c15Ev
};
//SIG(-1 S17556C15_nt) C1{ m Fp Fi[2] FC2{ m}}


void  S17556C15_nt ::mf17556c15(){}

//skip512 S17556C15_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S17556C2  {
  ::S17556C3_nt s17556c2f0;
  ::S17556C5_nt s17556c2f1;
  ::S17556C5_nt s17556c2f2;
  char s17556c2f3;
  int s17556c2f4[3];
  ::S17556C5_nt s17556c2f5;
  ::S17556C5_nt s17556c2f6;
  ::S17556C5_nt s17556c2f7;
  ::S17556C5_nt s17556c2f8;
  char s17556c2f9[2];
  int s17556c2f10[7];
  ::S17556C5_nt s17556c2f11[4];
  ::S17556C5_nt s17556c2f12;
  int s17556c2f13[3];
  ::S17556C5_nt s17556c2f14;
  ::S17556C5_nt s17556c2f15;
  ::S17556C5_nt s17556c2f16;
  ::S17556C5_nt s17556c2f17;
  ::S17556C5_nt s17556c2f18;
  ::S17556C5_nt s17556c2f19;
  ::S17556C7 s17556c2f20;
  ::S17556C8 s17556c2f21;
  ::S17556C9_nt s17556c2f22;
  ::S17556C10 s17556c2f23;
  ::S17556C11 s17556c2f24;
  ::S17556C12 s17556c2f25;
  ::S17556C15_nt s17556c2f26;
  void  mf17556c2(); // _ZN8S17556C29mf17556c2Ev
};
//SIG(-1 S17556C2) C1{ m FC2{ m FC3{ FL[4]}} FC4{ m Fp Fi FC5{ m}} FC4 Fc Fi[3] FC4 FC4 FC4 FC4 Fc[2] Fi[7] FC4[4] FC4 Fi[3] FC4 FC4 FC4 FC4 FC4 FC4 FC6{ m Fc FC4 FC4 FC4 FC4 Fi FC4 Fc Fi} FC7{ m Fc Fi[16]} FC8{ m Fc[2]} FC9{ m Fc FC4 FC4 Fi[5] Fc Fi FC4 FC4} FC10{ m Fc Fi[2] FC4 FC4 FC4 FC4 FC4 FC4 Fc} FC11{ m Fc FC12{ m Fp Fi[2] FC5}} FC13{ m Fp Fi[2] FC14{ m}}}


void  S17556C2 ::mf17556c2(){}

static void Test_S17556C2()
{
  {
    init_simple_test("S17556C2");
    S17556C2 lv;
    check2(sizeof(lv), ABISELECT(824,648), "sizeof(S17556C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17556C2)");
    check_field_offset(lv, s17556c2f0, 0, "S17556C2.s17556c2f0");
    check_field_offset(lv, s17556c2f1, 32, "S17556C2.s17556c2f1");
    check_field_offset(lv, s17556c2f2, ABISELECT(48,44), "S17556C2.s17556c2f2");
    check_field_offset(lv, s17556c2f3, ABISELECT(64,56), "S17556C2.s17556c2f3");
    check_field_offset(lv, s17556c2f4, ABISELECT(68,60), "S17556C2.s17556c2f4");
    check_field_offset(lv, s17556c2f5, ABISELECT(80,72), "S17556C2.s17556c2f5");
    check_field_offset(lv, s17556c2f6, ABISELECT(96,84), "S17556C2.s17556c2f6");
    check_field_offset(lv, s17556c2f7, ABISELECT(112,96), "S17556C2.s17556c2f7");
    check_field_offset(lv, s17556c2f8, ABISELECT(128,108), "S17556C2.s17556c2f8");
    check_field_offset(lv, s17556c2f9, ABISELECT(144,120), "S17556C2.s17556c2f9");
    check_field_offset(lv, s17556c2f10, ABISELECT(148,124), "S17556C2.s17556c2f10");
    check_field_offset(lv, s17556c2f11, ABISELECT(176,152), "S17556C2.s17556c2f11");
    check_field_offset(lv, s17556c2f12, ABISELECT(240,200), "S17556C2.s17556c2f12");
    check_field_offset(lv, s17556c2f13, ABISELECT(256,212), "S17556C2.s17556c2f13");
    check_field_offset(lv, s17556c2f14, ABISELECT(272,224), "S17556C2.s17556c2f14");
    check_field_offset(lv, s17556c2f15, ABISELECT(288,236), "S17556C2.s17556c2f15");
    check_field_offset(lv, s17556c2f16, ABISELECT(304,248), "S17556C2.s17556c2f16");
    check_field_offset(lv, s17556c2f17, ABISELECT(320,260), "S17556C2.s17556c2f17");
    check_field_offset(lv, s17556c2f18, ABISELECT(336,272), "S17556C2.s17556c2f18");
    check_field_offset(lv, s17556c2f19, ABISELECT(352,284), "S17556C2.s17556c2f19");
    check_field_offset(lv, s17556c2f20, ABISELECT(368,296), "S17556C2.s17556c2f20");
    check_field_offset(lv, s17556c2f21, ABISELECT(472,372), "S17556C2.s17556c2f21");
    check_field_offset(lv, s17556c2f22, ABISELECT(540,440), "S17556C2.s17556c2f22");
    check_field_offset(lv, s17556c2f23, ABISELECT(544,444), "S17556C2.s17556c2f23");
    check_field_offset(lv, s17556c2f24, ABISELECT(648,524), "S17556C2.s17556c2f24");
    check_field_offset(lv, s17556c2f25, ABISELECT(768,612), "S17556C2.s17556c2f25");
    check_field_offset(lv, s17556c2f26, ABISELECT(800,632), "S17556C2.s17556c2f26");
  }
}
static Arrange_To_Call_Me vS17556C2(Test_S17556C2, "S17556C2", ABISELECT(824,648));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S17556C17  {
  int s17556c17f0[3];
  char s17556c17f1;
  ::S17556C5_nt s17556c17f2;
  ::S17556C5_nt s17556c17f3;
  ::S17556C5_nt s17556c17f4;
  ::S17556C5_nt s17556c17f5;
  ::S17556C5_nt s17556c17f6;
  char s17556c17f7;
  int s17556c17f8;
  ::S17556C15_nt s17556c17f9;
  void  mf17556c17(); // _ZN9S17556C1710mf17556c17Ev
};
//SIG(-1 S17556C17) C1{ m Fi[3] Fc FC2{ m Fp Fi FC3{ m}} FC2 FC2 FC2 FC2 Fc Fi FC4{ m Fp Fi[2] FC5{ m}}}


void  S17556C17 ::mf17556c17(){}

static void Test_S17556C17()
{
  {
    init_simple_test("S17556C17");
    S17556C17 lv;
    check2(sizeof(lv), ABISELECT(128,100), "sizeof(S17556C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17556C17)");
    check_field_offset(lv, s17556c17f0, 0, "S17556C17.s17556c17f0");
    check_field_offset(lv, s17556c17f1, 12, "S17556C17.s17556c17f1");
    check_field_offset(lv, s17556c17f2, 16, "S17556C17.s17556c17f2");
    check_field_offset(lv, s17556c17f3, ABISELECT(32,28), "S17556C17.s17556c17f3");
    check_field_offset(lv, s17556c17f4, ABISELECT(48,40), "S17556C17.s17556c17f4");
    check_field_offset(lv, s17556c17f5, ABISELECT(64,52), "S17556C17.s17556c17f5");
    check_field_offset(lv, s17556c17f6, ABISELECT(80,64), "S17556C17.s17556c17f6");
    check_field_offset(lv, s17556c17f7, ABISELECT(96,76), "S17556C17.s17556c17f7");
    check_field_offset(lv, s17556c17f8, ABISELECT(100,80), "S17556C17.s17556c17f8");
    check_field_offset(lv, s17556c17f9, ABISELECT(104,84), "S17556C17.s17556c17f9");
  }
}
static Arrange_To_Call_Me vS17556C17(Test_S17556C17, "S17556C17", ABISELECT(128,100));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S17556C28_nt  {
  void *s17556c28f0[2];
  void  mf17556c28(); // _ZN12S17556C28_nt10mf17556c28Ev
};
//SIG(-1 S17556C28_nt) C1{ m Fp[2]}


void  S17556C28_nt ::mf17556c28(){}

//skip512 S17556C28_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S17556C22  {
  ::S1868C24_nt s17556c22f0;
  ::S1868C18_nt s17556c22f1;
  ::S17556C28_nt s17556c22f2;
  void  mf17556c22(); // _ZN9S17556C2210mf17556c22Ev
};
//SIG(-1 S17556C22) C1{ m FC2{ m Fp Fi FC3{ m} FC4{ m}} FC5{ BC6{ m Fp}} FC7{ m Fp[2]}}


void  S17556C22 ::mf17556c22(){}

static void Test_S17556C22()
{
  {
    init_simple_test("S17556C22");
    S17556C22 lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S17556C22)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17556C22)");
    check_field_offset(lv, s17556c22f0, 0, "S17556C22.s17556c22f0");
    check_field_offset(lv, s17556c22f1, ABISELECT(16,12), "S17556C22.s17556c22f1");
    check_field_offset(lv, s17556c22f2, ABISELECT(24,16), "S17556C22.s17556c22f2");
  }
}
static Arrange_To_Call_Me vS17556C22(Test_S17556C22, "S17556C22", ABISELECT(40,24));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S17556C1  {
  void *s17556c1f0;
  ::S17556C2 s17556c1f1;
  ::S17556C17 s17556c1f2;
  ::S17556C17 s17556c1f3;
  ::S17556C22 s17556c1f4;
  void  mf17556c1(); // _ZN8S17556C19mf17556c1Ev
};
//SIG(1 S17556C1) C1{ m Fp FC2{ m FC3{ m FC4{ FL[4]}} FC5{ m Fp Fi FC6{ m}} FC5 Fc Fi[3] FC5 FC5 FC5 FC5 Fc[2] Fi[7] FC5[4] FC5 Fi[3] FC5 FC5 FC5 FC5 FC5 FC5 FC7{ m Fc FC5 FC5 FC5 FC5 Fi FC5 Fc Fi} FC8{ m Fc Fi[16]} FC9{ m Fc[2]} FC10{ m Fc FC5 FC5 Fi[5] Fc Fi FC5 FC5} FC11{ m Fc Fi[2] FC5 FC5 FC5 FC5 FC5 FC5 Fc} FC12{ m Fc FC13{ m Fp Fi[2] FC6}} FC14{ m Fp Fi[2] FC15{ m}}} FC16{ m Fi[3] Fc FC5 FC5 FC5 FC5 FC5 Fc Fi FC14} FC16 FC17{ m FC18{ m Fp Fi FC15 FC19{ m}} FC20{ BC21{ m Fp}} FC22{ m Fp[2]}}}


void  S17556C1 ::mf17556c1(){}

static void Test_S17556C1()
{
  {
    init_simple_test("S17556C1");
    S17556C1 lv;
    check2(sizeof(lv), ABISELECT(1128,876), "sizeof(S17556C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17556C1)");
    check_field_offset(lv, s17556c1f0, 0, "S17556C1.s17556c1f0");
    check_field_offset(lv, s17556c1f1, ABISELECT(8,4), "S17556C1.s17556c1f1");
    check_field_offset(lv, s17556c1f2, ABISELECT(832,652), "S17556C1.s17556c1f2");
    check_field_offset(lv, s17556c1f3, ABISELECT(960,752), "S17556C1.s17556c1f3");
    check_field_offset(lv, s17556c1f4, ABISELECT(1088,852), "S17556C1.s17556c1f4");
  }
}
static Arrange_To_Call_Me vS17556C1(Test_S17556C1, "S17556C1", ABISELECT(1128,876));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

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



//skip512 S17555C4_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S17555C3_nt  {
  ::S17555C4_nt s17555c3f0;
  void  mf17555c3(); // _ZN11S17555C3_nt9mf17555c3Ev
};
//SIG(-1 S17555C3_nt) C1{ m FC2{ Fl[4]}}


void  S17555C3_nt ::mf17555c3(){}

//skip512 S17555C3_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S17555C2  {
  ::S17555C3_nt s17555c2f0;
  ::S17556C5_nt s17555c2f1;
  ::S17556C5_nt s17555c2f2;
  char s17555c2f3;
  int s17555c2f4[3];
  ::S17556C5_nt s17555c2f5;
  ::S17556C5_nt s17555c2f6;
  ::S17556C5_nt s17555c2f7;
  ::S17556C5_nt s17555c2f8;
  char s17555c2f9[2];
  int s17555c2f10[7];
  ::S17556C5_nt s17555c2f11[4];
  ::S17556C5_nt s17555c2f12;
  int s17555c2f13[3];
  ::S17556C5_nt s17555c2f14;
  ::S17556C5_nt s17555c2f15;
  ::S17556C5_nt s17555c2f16;
  ::S17556C5_nt s17555c2f17;
  ::S17556C5_nt s17555c2f18;
  ::S17556C5_nt s17555c2f19;
  ::S17556C7 s17555c2f20;
  ::S17556C8 s17555c2f21;
  ::S17556C9_nt s17555c2f22;
  ::S17556C10 s17555c2f23;
  ::S17556C11 s17555c2f24;
  ::S17556C12 s17555c2f25;
  ::S17556C15_nt s17555c2f26;
  void  mf17555c2(); // _ZN8S17555C29mf17555c2Ev
};
//SIG(-1 S17555C2) C1{ m FC2{ m FC3{ Fl[4]}} FC4{ m Fp Fi FC5{ m}} FC4 Fc Fi[3] FC4 FC4 FC4 FC4 Fc[2] Fi[7] FC4[4] FC4 Fi[3] FC4 FC4 FC4 FC4 FC4 FC4 FC6{ m Fc FC4 FC4 FC4 FC4 Fi FC4 Fc Fi} FC7{ m Fc Fi[16]} FC8{ m Fc[2]} FC9{ m Fc FC4 FC4 Fi[5] Fc Fi FC4 FC4} FC10{ m Fc Fi[2] FC4 FC4 FC4 FC4 FC4 FC4 Fc} FC11{ m Fc FC12{ m Fp Fi[2] FC5}} FC13{ m Fp Fi[2] FC14{ m}}}


void  S17555C2 ::mf17555c2(){}

static void Test_S17555C2()
{
  {
    init_simple_test("S17555C2");
    S17555C2 lv;
    check2(sizeof(lv), ABISELECT(824,632), "sizeof(S17555C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17555C2)");
    check_field_offset(lv, s17555c2f0, 0, "S17555C2.s17555c2f0");
    check_field_offset(lv, s17555c2f1, ABISELECT(32,16), "S17555C2.s17555c2f1");
    check_field_offset(lv, s17555c2f2, ABISELECT(48,28), "S17555C2.s17555c2f2");
    check_field_offset(lv, s17555c2f3, ABISELECT(64,40), "S17555C2.s17555c2f3");
    check_field_offset(lv, s17555c2f4, ABISELECT(68,44), "S17555C2.s17555c2f4");
    check_field_offset(lv, s17555c2f5, ABISELECT(80,56), "S17555C2.s17555c2f5");
    check_field_offset(lv, s17555c2f6, ABISELECT(96,68), "S17555C2.s17555c2f6");
    check_field_offset(lv, s17555c2f7, ABISELECT(112,80), "S17555C2.s17555c2f7");
    check_field_offset(lv, s17555c2f8, ABISELECT(128,92), "S17555C2.s17555c2f8");
    check_field_offset(lv, s17555c2f9, ABISELECT(144,104), "S17555C2.s17555c2f9");
    check_field_offset(lv, s17555c2f10, ABISELECT(148,108), "S17555C2.s17555c2f10");
    check_field_offset(lv, s17555c2f11, ABISELECT(176,136), "S17555C2.s17555c2f11");
    check_field_offset(lv, s17555c2f12, ABISELECT(240,184), "S17555C2.s17555c2f12");
    check_field_offset(lv, s17555c2f13, ABISELECT(256,196), "S17555C2.s17555c2f13");
    check_field_offset(lv, s17555c2f14, ABISELECT(272,208), "S17555C2.s17555c2f14");
    check_field_offset(lv, s17555c2f15, ABISELECT(288,220), "S17555C2.s17555c2f15");
    check_field_offset(lv, s17555c2f16, ABISELECT(304,232), "S17555C2.s17555c2f16");
    check_field_offset(lv, s17555c2f17, ABISELECT(320,244), "S17555C2.s17555c2f17");
    check_field_offset(lv, s17555c2f18, ABISELECT(336,256), "S17555C2.s17555c2f18");
    check_field_offset(lv, s17555c2f19, ABISELECT(352,268), "S17555C2.s17555c2f19");
    check_field_offset(lv, s17555c2f20, ABISELECT(368,280), "S17555C2.s17555c2f20");
    check_field_offset(lv, s17555c2f21, ABISELECT(472,356), "S17555C2.s17555c2f21");
    check_field_offset(lv, s17555c2f22, ABISELECT(540,424), "S17555C2.s17555c2f22");
    check_field_offset(lv, s17555c2f23, ABISELECT(544,428), "S17555C2.s17555c2f23");
    check_field_offset(lv, s17555c2f24, ABISELECT(648,508), "S17555C2.s17555c2f24");
    check_field_offset(lv, s17555c2f25, ABISELECT(768,596), "S17555C2.s17555c2f25");
    check_field_offset(lv, s17555c2f26, ABISELECT(800,616), "S17555C2.s17555c2f26");
  }
}
static Arrange_To_Call_Me vS17555C2(Test_S17555C2, "S17555C2", ABISELECT(824,632));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S17555C1  {
  void *s17555c1f0;
  ::S17555C2 s17555c1f1;
  ::S17556C17 s17555c1f2;
  ::S17556C17 s17555c1f3;
  ::S17556C22 s17555c1f4;
  void  mf17555c1(); // _ZN8S17555C19mf17555c1Ev
};
//SIG(1 S17555C1) C1{ m Fp FC2{ m FC3{ m FC4{ Fl[4]}} FC5{ m Fp Fi FC6{ m}} FC5 Fc Fi[3] FC5 FC5 FC5 FC5 Fc[2] Fi[7] FC5[4] FC5 Fi[3] FC5 FC5 FC5 FC5 FC5 FC5 FC7{ m Fc FC5 FC5 FC5 FC5 Fi FC5 Fc Fi} FC8{ m Fc Fi[16]} FC9{ m Fc[2]} FC10{ m Fc FC5 FC5 Fi[5] Fc Fi FC5 FC5} FC11{ m Fc Fi[2] FC5 FC5 FC5 FC5 FC5 FC5 Fc} FC12{ m Fc FC13{ m Fp Fi[2] FC6}} FC14{ m Fp Fi[2] FC15{ m}}} FC16{ m Fi[3] Fc FC5 FC5 FC5 FC5 FC5 Fc Fi FC14} FC16 FC17{ m FC18{ m Fp Fi FC15 FC19{ m}} FC20{ BC21{ m Fp}} FC22{ m Fp[2]}}}


void  S17555C1 ::mf17555c1(){}

static void Test_S17555C1()
{
  {
    init_simple_test("S17555C1");
    S17555C1 lv;
    check2(sizeof(lv), ABISELECT(1128,860), "sizeof(S17555C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17555C1)");
    check_field_offset(lv, s17555c1f0, 0, "S17555C1.s17555c1f0");
    check_field_offset(lv, s17555c1f1, ABISELECT(8,4), "S17555C1.s17555c1f1");
    check_field_offset(lv, s17555c1f2, ABISELECT(832,636), "S17555C1.s17555c1f2");
    check_field_offset(lv, s17555c1f3, ABISELECT(960,736), "S17555C1.s17555c1f3");
    check_field_offset(lv, s17555c1f4, ABISELECT(1088,836), "S17555C1.s17555c1f4");
  }
}
static Arrange_To_Call_Me vS17555C1(Test_S17555C1, "S17555C1", ABISELECT(1128,860));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S17566C3_nt  {
  __tsi64 s17566c3f0[4];
  void  mf17566c3(); // _ZN11S17566C3_nt9mf17566c3Ev
};
//SIG(-1 S17566C3_nt) C1{ m FL[4]}


void  S17566C3_nt ::mf17566c3(){}

//skip512 S17566C3_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S17566C2  {
  ::S17566C3_nt s17566c2f0;
  ::S17556C5_nt s17566c2f1;
  ::S17556C5_nt s17566c2f2;
  char s17566c2f3;
  int s17566c2f4[3];
  ::S17556C5_nt s17566c2f5;
  ::S17556C5_nt s17566c2f6;
  ::S17556C5_nt s17566c2f7;
  ::S17556C5_nt s17566c2f8;
  char s17566c2f9[2];
  int s17566c2f10[7];
  ::S17556C5_nt s17566c2f11[4];
  ::S17556C5_nt s17566c2f12;
  int s17566c2f13[3];
  ::S17556C5_nt s17566c2f14;
  ::S17556C5_nt s17566c2f15;
  ::S17556C5_nt s17566c2f16;
  ::S17556C5_nt s17566c2f17;
  ::S17556C5_nt s17566c2f18;
  ::S17556C5_nt s17566c2f19;
  ::S17556C7 s17566c2f20;
  ::S17556C8 s17566c2f21;
  ::S17556C9_nt s17566c2f22;
  ::S17556C10 s17566c2f23;
  ::S17556C11 s17566c2f24;
  ::S17556C12 s17566c2f25;
  ::S17556C15_nt s17566c2f26;
  void  mf17566c2(); // _ZN8S17566C29mf17566c2Ev
};
//SIG(-1 S17566C2) C1{ m FC2{ m FL[4]} FC3{ m Fp Fi FC4{ m}} FC3 Fc Fi[3] FC3 FC3 FC3 FC3 Fc[2] Fi[7] FC3[4] FC3 Fi[3] FC3 FC3 FC3 FC3 FC3 FC3 FC5{ m Fc FC3 FC3 FC3 FC3 Fi FC3 Fc Fi} FC6{ m Fc Fi[16]} FC7{ m Fc[2]} FC8{ m Fc FC3 FC3 Fi[5] Fc Fi FC3 FC3} FC9{ m Fc Fi[2] FC3 FC3 FC3 FC3 FC3 FC3 Fc} FC10{ m Fc FC11{ m Fp Fi[2] FC4}} FC12{ m Fp Fi[2] FC13{ m}}}


void  S17566C2 ::mf17566c2(){}

static void Test_S17566C2()
{
  {
    init_simple_test("S17566C2");
    S17566C2 lv;
    check2(sizeof(lv), ABISELECT(824,648), "sizeof(S17566C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17566C2)");
    check_field_offset(lv, s17566c2f0, 0, "S17566C2.s17566c2f0");
    check_field_offset(lv, s17566c2f1, 32, "S17566C2.s17566c2f1");
    check_field_offset(lv, s17566c2f2, ABISELECT(48,44), "S17566C2.s17566c2f2");
    check_field_offset(lv, s17566c2f3, ABISELECT(64,56), "S17566C2.s17566c2f3");
    check_field_offset(lv, s17566c2f4, ABISELECT(68,60), "S17566C2.s17566c2f4");
    check_field_offset(lv, s17566c2f5, ABISELECT(80,72), "S17566C2.s17566c2f5");
    check_field_offset(lv, s17566c2f6, ABISELECT(96,84), "S17566C2.s17566c2f6");
    check_field_offset(lv, s17566c2f7, ABISELECT(112,96), "S17566C2.s17566c2f7");
    check_field_offset(lv, s17566c2f8, ABISELECT(128,108), "S17566C2.s17566c2f8");
    check_field_offset(lv, s17566c2f9, ABISELECT(144,120), "S17566C2.s17566c2f9");
    check_field_offset(lv, s17566c2f10, ABISELECT(148,124), "S17566C2.s17566c2f10");
    check_field_offset(lv, s17566c2f11, ABISELECT(176,152), "S17566C2.s17566c2f11");
    check_field_offset(lv, s17566c2f12, ABISELECT(240,200), "S17566C2.s17566c2f12");
    check_field_offset(lv, s17566c2f13, ABISELECT(256,212), "S17566C2.s17566c2f13");
    check_field_offset(lv, s17566c2f14, ABISELECT(272,224), "S17566C2.s17566c2f14");
    check_field_offset(lv, s17566c2f15, ABISELECT(288,236), "S17566C2.s17566c2f15");
    check_field_offset(lv, s17566c2f16, ABISELECT(304,248), "S17566C2.s17566c2f16");
    check_field_offset(lv, s17566c2f17, ABISELECT(320,260), "S17566C2.s17566c2f17");
    check_field_offset(lv, s17566c2f18, ABISELECT(336,272), "S17566C2.s17566c2f18");
    check_field_offset(lv, s17566c2f19, ABISELECT(352,284), "S17566C2.s17566c2f19");
    check_field_offset(lv, s17566c2f20, ABISELECT(368,296), "S17566C2.s17566c2f20");
    check_field_offset(lv, s17566c2f21, ABISELECT(472,372), "S17566C2.s17566c2f21");
    check_field_offset(lv, s17566c2f22, ABISELECT(540,440), "S17566C2.s17566c2f22");
    check_field_offset(lv, s17566c2f23, ABISELECT(544,444), "S17566C2.s17566c2f23");
    check_field_offset(lv, s17566c2f24, ABISELECT(648,524), "S17566C2.s17566c2f24");
    check_field_offset(lv, s17566c2f25, ABISELECT(768,612), "S17566C2.s17566c2f25");
    check_field_offset(lv, s17566c2f26, ABISELECT(800,632), "S17566C2.s17566c2f26");
  }
}
static Arrange_To_Call_Me vS17566C2(Test_S17566C2, "S17566C2", ABISELECT(824,648));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S17566C1  {
  void *s17566c1f0;
  ::S17566C2 s17566c1f1;
  ::S17556C17 s17566c1f2;
  ::S17556C17 s17566c1f3;
  ::S17556C22 s17566c1f4;
  void  mf17566c1(); // _ZN8S17566C19mf17566c1Ev
};
//SIG(1 S17566C1) C1{ m Fp FC2{ m FC3{ m FL[4]} FC4{ m Fp Fi FC5{ m}} FC4 Fc Fi[3] FC4 FC4 FC4 FC4 Fc[2] Fi[7] FC4[4] FC4 Fi[3] FC4 FC4 FC4 FC4 FC4 FC4 FC6{ m Fc FC4 FC4 FC4 FC4 Fi FC4 Fc Fi} FC7{ m Fc Fi[16]} FC8{ m Fc[2]} FC9{ m Fc FC4 FC4 Fi[5] Fc Fi FC4 FC4} FC10{ m Fc Fi[2] FC4 FC4 FC4 FC4 FC4 FC4 Fc} FC11{ m Fc FC12{ m Fp Fi[2] FC5}} FC13{ m Fp Fi[2] FC14{ m}}} FC15{ m Fi[3] Fc FC4 FC4 FC4 FC4 FC4 Fc Fi FC13} FC15 FC16{ m FC17{ m Fp Fi FC14 FC18{ m}} FC19{ BC20{ m Fp}} FC21{ m Fp[2]}}}


void  S17566C1 ::mf17566c1(){}

static void Test_S17566C1()
{
  {
    init_simple_test("S17566C1");
    S17566C1 lv;
    check2(sizeof(lv), ABISELECT(1128,876), "sizeof(S17566C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17566C1)");
    check_field_offset(lv, s17566c1f0, 0, "S17566C1.s17566c1f0");
    check_field_offset(lv, s17566c1f1, ABISELECT(8,4), "S17566C1.s17566c1f1");
    check_field_offset(lv, s17566c1f2, ABISELECT(832,652), "S17566C1.s17566c1f2");
    check_field_offset(lv, s17566c1f3, ABISELECT(960,752), "S17566C1.s17566c1f3");
    check_field_offset(lv, s17566c1f4, ABISELECT(1088,852), "S17566C1.s17566c1f4");
  }
}
static Arrange_To_Call_Me vS17566C1(Test_S17566C1, "S17566C1", ABISELECT(1128,876));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3451C3  {
  virtual void  v9(); // _ZN7S3451C32v9Ev
  virtual void  v10(); // _ZN7S3451C33v10Ev
  ~S3451C3(); // tgen
  S3451C3(); // tgen
};
//SIG(-1 S3451C3) C1{ v1 v2}


void  S3451C3 ::v9(){vfunc_called(this, "_ZN7S3451C32v9Ev");}
void  S3451C3 ::v10(){vfunc_called(this, "_ZN7S3451C33v10Ev");}
S3451C3 ::~S3451C3(){ note_dtor("S3451C3", this);} // tgen
S3451C3 ::S3451C3(){ note_ctor("S3451C3", this);} // tgen

static void Test_S3451C3()
{
  extern Class_Descriptor cd_S3451C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S3451C3, buf);
    S3451C3 *dp, &lv = *(dp=new (buf) S3451C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S3451C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3451C3)");
    test_class_info(&lv, &cd_S3451C3);
    dp->~S3451C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3451C3(Test_S3451C3, "S3451C3", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S3451C3C1Ev();
extern void _ZN7S3451C3D1Ev();
Name_Map name_map_S3451C3[] = {
  NSPAIR(_ZN7S3451C3C1Ev),
  NSPAIR(_ZN7S3451C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3451C3[];
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
static  VTBL_ENTRY vtc_S3451C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3451C3[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
};
extern VTBL_ENTRY _ZTI7S3451C3[];
extern  VTBL_ENTRY _ZTV7S3451C3[];
Class_Descriptor cd_S3451C3 = {  "S3451C3", // class name
  0,0,//no base classes
  &(vtc_S3451C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S3451C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3451C3),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3451C6  {
  virtual void  v11(); // _ZN7S3451C63v11Ev
  virtual void  v12(); // _ZN7S3451C63v12Ev
  ~S3451C6(); // tgen
  S3451C6(); // tgen
};
//SIG(-1 S3451C6) C1{ v1 v2}


void  S3451C6 ::v11(){vfunc_called(this, "_ZN7S3451C63v11Ev");}
void  S3451C6 ::v12(){vfunc_called(this, "_ZN7S3451C63v12Ev");}
S3451C6 ::~S3451C6(){ note_dtor("S3451C6", this);} // tgen
S3451C6 ::S3451C6(){ note_ctor("S3451C6", this);} // tgen

static void Test_S3451C6()
{
  extern Class_Descriptor cd_S3451C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S3451C6, buf);
    S3451C6 *dp, &lv = *(dp=new (buf) S3451C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S3451C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3451C6)");
    test_class_info(&lv, &cd_S3451C6);
    dp->~S3451C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3451C6(Test_S3451C6, "S3451C6", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S3451C6C1Ev();
extern void _ZN7S3451C6D1Ev();
Name_Map name_map_S3451C6[] = {
  NSPAIR(_ZN7S3451C6C1Ev),
  NSPAIR(_ZN7S3451C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3451C6[];
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
static  VTBL_ENTRY vtc_S3451C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3451C6[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
};
extern VTBL_ENTRY _ZTI7S3451C6[];
extern  VTBL_ENTRY _ZTV7S3451C6[];
Class_Descriptor cd_S3451C6 = {  "S3451C6", // class name
  0,0,//no base classes
  &(vtc_S3451C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S3451C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3451C6),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3451C7  : S3451C3 {
  int s3451c7f0[5];
  void *s3451c7f1;
  __tsi64 s3451c7f2[4];
  virtual void  v13(); // _ZN7S3451C73v13Ev
  virtual void  v14(); // _ZN7S3451C73v14Ev
  virtual void  v15(); // _ZN7S3451C73v15Ev
  virtual void  v16(); // _ZN7S3451C73v16Ev
  ~S3451C7(); // tgen
  S3451C7(); // tgen
};
//SIG(-1 S3451C7) C1{ BC2{ v5 v6} v1 v2 v3 v4 Fi[5] Fp FL[4]}


void  S3451C7 ::v13(){vfunc_called(this, "_ZN7S3451C73v13Ev");}
void  S3451C7 ::v14(){vfunc_called(this, "_ZN7S3451C73v14Ev");}
void  S3451C7 ::v15(){vfunc_called(this, "_ZN7S3451C73v15Ev");}
void  S3451C7 ::v16(){vfunc_called(this, "_ZN7S3451C73v16Ev");}
S3451C7 ::~S3451C7(){ note_dtor("S3451C7", this);} // tgen
S3451C7 ::S3451C7(){ note_ctor("S3451C7", this);} // tgen

static void Test_S3451C7()
{
  extern Class_Descriptor cd_S3451C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,16)];
    init_test(&cd_S3451C7, buf);
    S3451C7 *dp, &lv = *(dp=new (buf) S3451C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,60), "sizeof(S3451C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3451C7)");
    check_base_class_offset(lv, (S3451C3*), 0, "S3451C7");
    check_field_offset(lv, s3451c7f0, ABISELECT(8,4), "S3451C7.s3451c7f0");
    check_field_offset(lv, s3451c7f1, ABISELECT(32,24), "S3451C7.s3451c7f1");
    check_field_offset(lv, s3451c7f2, ABISELECT(40,28), "S3451C7.s3451c7f2");
    test_class_info(&lv, &cd_S3451C7);
    dp->~S3451C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3451C7(Test_S3451C7, "S3451C7", ABISELECT(72,60));

#else // __cplusplus

extern void _ZN7S3451C7C1Ev();
extern void _ZN7S3451C7D1Ev();
Name_Map name_map_S3451C7[] = {
  NSPAIR(_ZN7S3451C7C1Ev),
  NSPAIR(_ZN7S3451C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3451C3;
extern VTBL_ENTRY _ZTI7S3451C3[];
extern  VTBL_ENTRY _ZTV7S3451C3[];
static Base_Class bases_S3451C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3451C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3451C7[];
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
static  VTBL_ENTRY vtc_S3451C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3451C7[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
};
extern VTBL_ENTRY _ZTI7S3451C7[];
extern  VTBL_ENTRY _ZTV7S3451C7[];
Class_Descriptor cd_S3451C7 = {  "S3451C7", // class name
  bases_S3451C7, 1,
  &(vtc_S3451C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,60), // object size
  NSPAIRA(_ZTI7S3451C7),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3451C7),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3451C4  : virtual S7856C24 , virtual S3451C3 , S3451C6 , virtual S3451C7 {
  virtual void  v17(); // _ZN7S3451C43v17Ev
  ~S3451C4(); // tgen
  S3451C4(); // tgen
};
//SIG(-1 S3451C4) C1{ VBC2{ m} VBC3{ v2 v3} BC4{ v4 v5} VBC5{ BC3 v6 v7 v8 v9 Fi[5] Fp FL[4]} v1}


void  S3451C4 ::v17(){vfunc_called(this, "_ZN7S3451C43v17Ev");}
S3451C4 ::~S3451C4(){ note_dtor("S3451C4", this);} // tgen
S3451C4 ::S3451C4(){ note_ctor("S3451C4", this);} // tgen

static void Test_S3451C4()
{
  extern Class_Descriptor cd_S3451C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,18)];
    init_test(&cd_S3451C4, buf);
    S3451C4 *dp, &lv = *(dp=new (buf) S3451C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,68), "sizeof(S3451C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3451C4)");
    check_base_class_offset(lv, (S7856C24*), 0, "S3451C4");
    /*is_ambiguous_... S3451C4::S3451C3 */ AMB_check_base_class_offset(lv, (S3451C3*), ABISELECT(8,4), "S3451C4");
    check_base_class_offset(lv, (S3451C6*), 0, "S3451C4");
    check_base_class_offset(lv, (S3451C3*)(S3451C7*), ABISELECT(16,8), "S3451C4");
    check_base_class_offset(lv, (S3451C7*), ABISELECT(16,8), "S3451C4");
    test_class_info(&lv, &cd_S3451C4);
    dp->~S3451C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3451C4(Test_S3451C4, "S3451C4", ABISELECT(88,68));

#else // __cplusplus

extern void _ZN7S3451C4C1Ev();
extern void _ZN7S3451C4D1Ev();
Name_Map name_map_S3451C4[] = {
  NSPAIR(_ZN7S3451C4C1Ev),
  NSPAIR(_ZN7S3451C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S3451C3;
extern VTBL_ENTRY _ZTI7S3451C3[];
extern  VTBL_ENTRY _ZTV7S3451C3[];
extern Class_Descriptor cd_S3451C6;
extern VTBL_ENTRY _ZTI7S3451C6[];
extern  VTBL_ENTRY _ZTV7S3451C6[];
extern Class_Descriptor cd_S3451C3;
extern VTBL_ENTRY _ZTI7S3451C3[];
extern  VTBL_ENTRY _ZTV7S3451C3[];
extern Class_Descriptor cd_S3451C7;
extern VTBL_ENTRY _ZTI7S3451C7[];
extern  VTBL_ENTRY _ZTV7S3451C7[];
static Base_Class bases_S3451C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3451C3,    ABISELECT(8,4), //bcp->offset
    8, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3451C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3451C3,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S3451C7,    ABISELECT(16,8), //bcp->offset
    14, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S3451C4[];
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C43v17Ev();
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
static  VTBL_ENTRY vtc_S3451C4[] = {
  ABISELECT(16,8),
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S3451C4[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C43v17Ev,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S3451C4[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S3451C4[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
};
extern VTBL_ENTRY _ZTV7S3451C4[];
static  VTT_ENTRY vtt_S3451C4[] = {
  {&(_ZTV7S3451C4[5]),  5,28},
  {&(_ZTV7S3451C4[12]),  12,28},
  {&(_ZTV7S3451C4[22]),  22,28},
};
extern VTBL_ENTRY _ZTI7S3451C4[];
extern  VTBL_ENTRY _ZTV7S3451C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3451C4[];
Class_Descriptor cd_S3451C4 = {  "S3451C4", // class name
  bases_S3451C4, 5,
  &(vtc_S3451C4[0]), // expected_vtbl_contents
  &(vtt_S3451C4[0]), // expected_vtt_contents
  ABISELECT(88,68), // object size
  NSPAIRA(_ZTI7S3451C4),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S3451C4),28, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3451C4),3, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3451C8  {
  void *s3451c8f0;
  long double s3451c8f1[7];
  virtual void  v18(); // _ZN7S3451C83v18Ev
  ~S3451C8(); // tgen
  S3451C8(); // tgen
};
//SIG(-1 S3451C8) C1{ v1 Fp FD[7]}


void  S3451C8 ::v18(){vfunc_called(this, "_ZN7S3451C83v18Ev");}
S3451C8 ::~S3451C8(){ note_dtor("S3451C8", this);} // tgen
S3451C8 ::S3451C8(){ note_ctor("S3451C8", this);} // tgen

static void Test_S3451C8()
{
  extern Class_Descriptor cd_S3451C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(9,24)];
    init_test(&cd_S3451C8, buf);
    S3451C8 *dp, &lv = *(dp=new (buf) S3451C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,92), "sizeof(S3451C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3451C8)");
    check_field_offset(lv, s3451c8f0, ABISELECT(8,4), "S3451C8.s3451c8f0");
    check_field_offset(lv, s3451c8f1, ABISELECT(16,8), "S3451C8.s3451c8f1");
    test_class_info(&lv, &cd_S3451C8);
    dp->~S3451C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3451C8(Test_S3451C8, "S3451C8", ABISELECT(128,92));

#else // __cplusplus

extern void _ZN7S3451C8C1Ev();
extern void _ZN7S3451C8D1Ev();
Name_Map name_map_S3451C8[] = {
  NSPAIR(_ZN7S3451C8C1Ev),
  NSPAIR(_ZN7S3451C8D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3451C8[];
extern void _ZN7S3451C83v18Ev();
static  VTBL_ENTRY vtc_S3451C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3451C8[0]),
  (VTBL_ENTRY)&_ZN7S3451C83v18Ev,
};
extern VTBL_ENTRY _ZTI7S3451C8[];
extern  VTBL_ENTRY _ZTV7S3451C8[];
Class_Descriptor cd_S3451C8 = {  "S3451C8", // class name
  0,0,//no base classes
  &(vtc_S3451C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(128,92), // object size
  NSPAIRA(_ZTI7S3451C8),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3451C8),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3451C10  {
  ::S7856C24 s3451c10f0;
  int s3451c10f1[4];
  virtual void  v19(); // _ZN8S3451C103v19Ev
  ~S3451C10(); // tgen
  S3451C10(); // tgen
};
//SIG(-1 S3451C10) C1{ v1 FC2{ m} Fi[4]}


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

static void Test_S3451C10()
{
  extern Class_Descriptor cd_S3451C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,7)];
    init_test(&cd_S3451C10, buf);
    S3451C10 *dp, &lv = *(dp=new (buf) S3451C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S3451C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3451C10)");
    check_field_offset(lv, s3451c10f0, ABISELECT(8,4), "S3451C10.s3451c10f0");
    check_field_offset(lv, s3451c10f1, ABISELECT(12,8), "S3451C10.s3451c10f1");
    test_class_info(&lv, &cd_S3451C10);
    dp->~S3451C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3451C10(Test_S3451C10, "S3451C10", ABISELECT(32,24));

#else // __cplusplus

extern void _ZN8S3451C10C1Ev();
extern void _ZN8S3451C10D1Ev();
Name_Map name_map_S3451C10[] = {
  NSPAIR(_ZN8S3451C10C1Ev),
  NSPAIR(_ZN8S3451C10D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S3451C10[];
extern void _ZN8S3451C103v19Ev();
static  VTBL_ENTRY vtc_S3451C10[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S3451C10[0]),
  (VTBL_ENTRY)&_ZN8S3451C103v19Ev,
};
extern VTBL_ENTRY _ZTI8S3451C10[];
extern  VTBL_ENTRY _ZTV8S3451C10[];
Class_Descriptor cd_S3451C10 = {  "S3451C10", // class name
  0,0,//no base classes
  &(vtc_S3451C10[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,24), // object size
  NSPAIRA(_ZTI8S3451C10),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S3451C10),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3451C11  : S3451C6 , virtual S3451C4 , S7856C24 , S3451C7 , S3451C3 {
  virtual void  v20(); // _ZN8S3451C113v20Ev
  ~S3451C11(); // tgen
  S3451C11(); // tgen
};
//SIG(-1 S3451C11) C1{ BC2{ v2 v3} VBC3{ VBC4{ m} VBC5{ v4 v5} BC2 VBC6{ BC5 v6 v7 v8 v9 Fi[5] Fp FL[4]} v10} BC4 BC6 BC5 v1}


void  S3451C11 ::v20(){vfunc_called(this, "_ZN8S3451C113v20Ev");}
S3451C11 ::~S3451C11(){ note_dtor("S3451C11", this);} // tgen
S3451C11 ::S3451C11(){ note_ctor("S3451C11", this);} // tgen

static void Test_S3451C11()
{
  extern Class_Descriptor cd_S3451C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,35)];
    init_test(&cd_S3451C11, buf);
    S3451C11 *dp, &lv = *(dp=new (buf) S3451C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,136), "sizeof(S3451C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3451C11)");
    /*is_ambiguous_... S3451C11::S3451C6 */ AMB_check_base_class_offset(lv, (S3451C6*), 0, "S3451C11");
    check_base_class_offset(lv, (S7856C24*)(S3451C4*), ABISELECT(96,72), "S3451C11");
    /*is_ambiguous_... S3451C4::S3451C3 */ AMB_check_base_class_offset(lv, (S3451C3*)(S3451C4*), ABISELECT(96,72), "S3451C11");
    check_base_class_offset(lv, (S3451C6*)(S3451C4*), ABISELECT(88,68), "S3451C11");
    /*is_ambiguous_... S3451C11::S3451C7 */ AMB_check_base_class_offset(lv, (S3451C3*)(S3451C7*), ABISELECT(104,76), "S3451C11");
    check_base_class_offset(lv, (S3451C7*)(S3451C4*), ABISELECT(104,76), "S3451C11");
    check_base_class_offset(lv, (S3451C4*), ABISELECT(88,68), "S3451C11");
    /*is_ambiguous_... S3451C11::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), 0, "S3451C11");
    /*is_ambiguous_... S3451C11::S3451C7 */ AMB_check_base_class_offset(lv, (S3451C3*)(S3451C7*), ABISELECT(8,4), "S3451C11");
    /*is_ambiguous_... S3451C11::S3451C7 */ AMB_check_base_class_offset(lv, (S3451C7*), ABISELECT(8,4), "S3451C11");
    /*is_ambiguous_... S3451C11::S3451C3 */ AMB_check_base_class_offset(lv, (S3451C3*), ABISELECT(80,64), "S3451C11");
    test_class_info(&lv, &cd_S3451C11);
    dp->~S3451C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3451C11(Test_S3451C11, "S3451C11", ABISELECT(176,136));

#else // __cplusplus

extern void _ZN8S3451C11C1Ev();
extern void _ZN8S3451C11D1Ev();
Name_Map name_map_S3451C11[] = {
  NSPAIR(_ZN8S3451C11C1Ev),
  NSPAIR(_ZN8S3451C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3451C6;
extern VTBL_ENTRY _ZTI7S3451C6[];
extern  VTBL_ENTRY _ZTV7S3451C6[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S3451C3;
extern VTBL_ENTRY _ZTI7S3451C3[];
extern  VTBL_ENTRY _ZTV7S3451C3[];
extern Class_Descriptor cd_S3451C6;
extern VTBL_ENTRY _ZTI7S3451C6[];
extern  VTBL_ENTRY _ZTV7S3451C6[];
extern Class_Descriptor cd_S3451C3;
extern VTBL_ENTRY _ZTI7S3451C3[];
extern  VTBL_ENTRY _ZTV7S3451C3[];
extern Class_Descriptor cd_S3451C7;
extern VTBL_ENTRY _ZTI7S3451C7[];
extern  VTBL_ENTRY _ZTV7S3451C7[];
extern Class_Descriptor cd_S3451C4;
extern VTBL_ENTRY _ZTI7S3451C4[];
extern  VTBL_ENTRY _ZTV7S3451C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3451C4[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S3451C3;
extern VTBL_ENTRY _ZTI7S3451C3[];
extern  VTBL_ENTRY _ZTV7S3451C3[];
extern Class_Descriptor cd_S3451C7;
extern VTBL_ENTRY _ZTI7S3451C7[];
extern  VTBL_ENTRY _ZTV7S3451C7[];
extern Class_Descriptor cd_S3451C3;
extern VTBL_ENTRY _ZTI7S3451C3[];
extern  VTBL_ENTRY _ZTV7S3451C3[];
static Base_Class bases_S3451C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3451C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    ABISELECT(96,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3451C3,    ABISELECT(96,72), //bcp->offset
    32, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3451C6,    ABISELECT(88,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S3451C3,    ABISELECT(104,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3451C7,    ABISELECT(104,76), //bcp->offset
    38, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3451C4,    ABISELECT(88,68), //bcp->offset
    21, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3451C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S3451C7,    ABISELECT(8,4), //bcp->offset
    9, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3451C3,    ABISELECT(80,64), //bcp->offset
    17, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S3451C11[];
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN8S3451C113v20Ev();
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C43v17Ev();
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
static  VTBL_ENTRY vtc_S3451C11[] = {
  ABISELECT(104,76),
  ABISELECT(96,72),
  ABISELECT(96,72),
  ABISELECT(88,68),
  0,
  (VTBL_ENTRY)&(_ZTI8S3451C11[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN8S3451C113v20Ev,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S3451C11[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
  ABISELECT(-80,-64),
  (VTBL_ENTRY)&(_ZTI8S3451C11[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  0,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(-88,-68),
  (VTBL_ENTRY)&(_ZTI8S3451C11[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C43v17Ev,
  0,
  0,
  ABISELECT(-96,-72),
  (VTBL_ENTRY)&(_ZTI8S3451C11[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-104,-76),
  (VTBL_ENTRY)&(_ZTI8S3451C11[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
};
extern VTBL_ENTRY _ZTV8S3451C11[];
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C4__8S3451C11[] = {
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S3451C4[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C43v17Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C3__7S3451C4__8S3451C11[] = {
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S3451C4[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C7__7S3451C4__8S3451C11[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S3451C4[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
};
static  VTT_ENTRY vtt_S3451C11[] = {
  {&(_ZTV8S3451C11[6]),  6,52},
  {&(_ZTV8S3451C11[29]),  29,52},
  {&(_ZTV8S3451C11[36]),  36,52},
  {&(_ZTV8S3451C11[46]),  46,52},
  {&(_tg__ZTV7S3451C4__8S3451C11[5]),  5,8},
  {&(_tg__ZTV7S3451C3__7S3451C4__8S3451C11[4]),  4,6},
  {&(_tg__ZTV7S3451C7__7S3451C4__8S3451C11[8]),  8,14},
};
extern VTBL_ENTRY _ZTI8S3451C11[];
extern  VTBL_ENTRY _ZTV8S3451C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3451C11[];
Class_Descriptor cd_S3451C11 = {  "S3451C11", // class name
  bases_S3451C11, 11,
  &(vtc_S3451C11[0]), // expected_vtbl_contents
  &(vtt_S3451C11[0]), // expected_vtt_contents
  ABISELECT(176,136), // object size
  NSPAIRA(_ZTI8S3451C11),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S3451C11),52, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3451C11),7, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3451C9  : virtual S3451C10 , S3451C6 , virtual S3451C3 , S3451C11 , S3451C8 {
  int s3451c9f0;
  virtual void  v21(); // _ZN7S3451C93v21Ev
  virtual void  v22(); // _ZN7S3451C93v22Ev
  virtual void  v23(); // _ZN7S3451C93v23Ev
  ~S3451C9(); // tgen
  S3451C9(); // tgen
};
//SIG(-1 S3451C9) C1{ VBC2{ v4 FC3{ m} Fi[4]} BC4{ v5 v6} VBC5{ v7 v8} BC6{ BC4 VBC7{ VBC3 VBC5 BC4 VBC8{ BC5 v9 v10 v11 v12 Fi[5] Fp FL[4]} v13} BC3 BC8 BC5 v14} BC9{ v15 Fp FD[7]} v1 v2 v3 Fi}


void  S3451C9 ::v21(){vfunc_called(this, "_ZN7S3451C93v21Ev");}
void  S3451C9 ::v22(){vfunc_called(this, "_ZN7S3451C93v22Ev");}
void  S3451C9 ::v23(){vfunc_called(this, "_ZN7S3451C93v23Ev");}
S3451C9 ::~S3451C9(){ note_dtor("S3451C9", this);} // tgen
S3451C9 ::S3451C9(){ note_ctor("S3451C9", this);} // tgen

static void Test_S3451C9()
{
  extern Class_Descriptor cd_S3451C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(23,66)];
    init_test(&cd_S3451C9, buf);
    S3451C9 *dp, &lv = *(dp=new (buf) S3451C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(352,260), "sizeof(S3451C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3451C9)");
    check_base_class_offset(lv, (S3451C10*), ABISELECT(232,168), "S3451C9");
    /*is_ambiguous_... S3451C9::S3451C6 */ AMB_check_base_class_offset(lv, (S3451C6*), 0, "S3451C9");
    /*is_ambiguous_... S3451C9::S3451C3 */ AMB_check_base_class_offset(lv, (S3451C3*), ABISELECT(264,192), "S3451C9");
    /*is_ambiguous_... S3451C4::S3451C3 */ AMB_check_base_class_offset(lv, (S3451C3*)(S3451C4*), ABISELECT(264,192), "S3451C9");
    /*is_ambiguous_... S3451C11::S3451C6 */ AMB_check_base_class_offset(lv, (S3451C6*)(S3451C11*), ABISELECT(8,4), "S3451C9");
    check_base_class_offset(lv, (S7856C24*)(S3451C4*), 0, "S3451C9");
    check_base_class_offset(lv, (S3451C6*)(S3451C4*), ABISELECT(272,196), "S3451C9");
    /*is_ambiguous_... S3451C9::S3451C7 */ AMB_check_base_class_offset(lv, (S3451C3*)(S3451C7*), ABISELECT(280,200), "S3451C9");
    check_base_class_offset(lv, (S3451C7*)(S3451C4*), ABISELECT(280,200), "S3451C9");
    check_base_class_offset(lv, (S3451C4*)(S3451C11*), ABISELECT(272,196), "S3451C9");
    /*is_ambiguous_... S3451C11::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S3451C11*), ABISELECT(8,4), "S3451C9");
    /*is_ambiguous_... S3451C11::S3451C7 */ AMB_check_base_class_offset(lv, (S3451C3*)(S3451C7*)(S3451C11*), ABISELECT(16,8), "S3451C9");
    /*is_ambiguous_... S3451C11::S3451C7 */ AMB_check_base_class_offset(lv, (S3451C7*)(S3451C11*), ABISELECT(16,8), "S3451C9");
    /*is_ambiguous_... S3451C11::S3451C3 */ AMB_check_base_class_offset(lv, (S3451C3*)(S3451C11*), ABISELECT(88,68), "S3451C9");
    check_base_class_offset(lv, (S3451C11*), ABISELECT(8,4), "S3451C9");
    check_base_class_offset(lv, (S3451C8*), ABISELECT(96,72), "S3451C9");
    check_field_offset(lv, s3451c9f0, ABISELECT(224,164), "S3451C9.s3451c9f0");
    test_class_info(&lv, &cd_S3451C9);
    dp->~S3451C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3451C9(Test_S3451C9, "S3451C9", ABISELECT(352,260));

#else // __cplusplus

extern void _ZN7S3451C9C1Ev();
extern void _ZN7S3451C9D1Ev();
Name_Map name_map_S3451C9[] = {
  NSPAIR(_ZN7S3451C9C1Ev),
  NSPAIR(_ZN7S3451C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3451C10;
extern VTBL_ENTRY _ZTI8S3451C10[];
extern  VTBL_ENTRY _ZTV8S3451C10[];
extern Class_Descriptor cd_S3451C6;
extern VTBL_ENTRY _ZTI7S3451C6[];
extern  VTBL_ENTRY _ZTV7S3451C6[];
extern Class_Descriptor cd_S3451C3;
extern VTBL_ENTRY _ZTI7S3451C3[];
extern  VTBL_ENTRY _ZTV7S3451C3[];
extern Class_Descriptor cd_S3451C6;
extern VTBL_ENTRY _ZTI7S3451C6[];
extern  VTBL_ENTRY _ZTV7S3451C6[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S3451C6;
extern VTBL_ENTRY _ZTI7S3451C6[];
extern  VTBL_ENTRY _ZTV7S3451C6[];
extern Class_Descriptor cd_S3451C3;
extern VTBL_ENTRY _ZTI7S3451C3[];
extern  VTBL_ENTRY _ZTV7S3451C3[];
extern Class_Descriptor cd_S3451C7;
extern VTBL_ENTRY _ZTI7S3451C7[];
extern  VTBL_ENTRY _ZTV7S3451C7[];
extern Class_Descriptor cd_S3451C4;
extern VTBL_ENTRY _ZTI7S3451C4[];
extern  VTBL_ENTRY _ZTV7S3451C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3451C4[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S3451C3;
extern VTBL_ENTRY _ZTI7S3451C3[];
extern  VTBL_ENTRY _ZTV7S3451C3[];
extern Class_Descriptor cd_S3451C7;
extern VTBL_ENTRY _ZTI7S3451C7[];
extern  VTBL_ENTRY _ZTV7S3451C7[];
extern Class_Descriptor cd_S3451C3;
extern VTBL_ENTRY _ZTI7S3451C3[];
extern  VTBL_ENTRY _ZTV7S3451C3[];
extern Class_Descriptor cd_S3451C11;
extern VTBL_ENTRY _ZTI8S3451C11[];
extern  VTBL_ENTRY _ZTV8S3451C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3451C11[];
extern Class_Descriptor cd_S3451C8;
extern VTBL_ENTRY _ZTI7S3451C8[];
extern  VTBL_ENTRY _ZTV7S3451C8[];
static Base_Class bases_S3451C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3451C10,    ABISELECT(232,168), //bcp->offset
    36, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3451C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3451C3,    ABISELECT(264,192), //bcp->offset
    40, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3451C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S3451C6,    ABISELECT(272,196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S3451C3,    ABISELECT(280,200), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S3451C7,    ABISELECT(280,200), //bcp->offset
    57, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S3451C4,    ABISELECT(272,196), //bcp->offset
    46, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S3451C3,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S3451C7,    ABISELECT(16,8), //bcp->offset
    21, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S3451C3,    ABISELECT(88,68), //bcp->offset
    29, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S3451C11,    ABISELECT(8,4), //bcp->offset
    12, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3451C8,    ABISELECT(96,72), //bcp->offset
    33, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3451C9[];
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C93v21Ev();
extern void _ZN7S3451C93v22Ev();
extern void _ZN7S3451C93v23Ev();
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN8S3451C113v20Ev();
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C83v18Ev();
extern void _ZN8S3451C103v19Ev();
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C43v17Ev();
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
static  VTBL_ENTRY vtc_S3451C9[] = {
  ABISELECT(280,200),
  0,
  ABISELECT(272,196),
  ABISELECT(264,192),
  ABISELECT(232,168),
  0,
  (VTBL_ENTRY)&(_ZTI7S3451C9[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v21Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v22Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v23Ev,
  ABISELECT(272,196),
  ABISELECT(256,188),
  ABISELECT(-8,-4),
  ABISELECT(264,192),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S3451C9[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN8S3451C113v20Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S3451C9[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
  ABISELECT(-88,-68),
  (VTBL_ENTRY)&(_ZTI7S3451C9[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  ABISELECT(-96,-72),
  (VTBL_ENTRY)&(_ZTI7S3451C9[0]),
  (VTBL_ENTRY)&_ZN7S3451C83v18Ev,
  0,
  ABISELECT(-232,-168),
  (VTBL_ENTRY)&(_ZTI7S3451C9[0]),
  (VTBL_ENTRY)&_ZN8S3451C103v19Ev,
  0,
  0,
  ABISELECT(-264,-192),
  (VTBL_ENTRY)&(_ZTI7S3451C9[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  0,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  ABISELECT(-272,-196),
  ABISELECT(-272,-196),
  (VTBL_ENTRY)&(_ZTI7S3451C9[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C43v17Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-280,-200),
  (VTBL_ENTRY)&(_ZTI7S3451C9[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
};
extern VTBL_ENTRY _ZTV7S3451C9[];
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN8S3451C113v20Ev();
static  VTBL_ENTRY _tg__ZTV8S3451C11__7S3451C9[] = {
  ABISELECT(272,196),
  ABISELECT(256,188),
  ABISELECT(-8,-4),
  ABISELECT(264,192),
  0,
  (VTBL_ENTRY)&(_ZTI8S3451C11[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN8S3451C113v20Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C4__8S3451C11__7S3451C9[] = {
  0,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  ABISELECT(-272,-196),
  ABISELECT(-264,-192),
  (VTBL_ENTRY)&(_ZTI8S3451C11[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C43v17Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C3__8S3451C11__7S3451C9[] = {
  0,
  0,
  ABISELECT(-256,-188),
  (VTBL_ENTRY)&(_ZTI8S3451C11[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C7__8S3451C11__7S3451C9[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-272,-196),
  (VTBL_ENTRY)&(_ZTI8S3451C11[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C4__7S3451C9[] = {
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  ABISELECT(-272,-196),
  0,
  (VTBL_ENTRY)&(_ZTI7S3451C4[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C43v17Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C3__7S3451C4__7S3451C9[] = {
  0,
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI7S3451C4[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C7__7S3451C4__7S3451C9[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S3451C4[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
};
static  VTT_ENTRY vtt_S3451C9[] = {
  {&(_ZTV7S3451C9[7]),  7,71},
  {&(_tg__ZTV8S3451C11__7S3451C9[6]),  6,9},
  {&(_tg__ZTV7S3451C4__8S3451C11__7S3451C9[8]),  8,11},
  {&(_tg__ZTV7S3451C3__8S3451C11__7S3451C9[4]),  4,6},
  {&(_tg__ZTV7S3451C7__8S3451C11__7S3451C9[8]),  8,14},
  {&(_ZTV7S3451C9[39]),  39,71},
  {&(_ZTV7S3451C9[44]),  44,71},
  {&(_ZTV7S3451C9[18]),  18,71},
  {&(_ZTV7S3451C9[54]),  54,71},
  {&(_ZTV7S3451C9[65]),  65,71},
  {&(_tg__ZTV7S3451C4__7S3451C9[5]),  5,8},
  {&(_tg__ZTV7S3451C3__7S3451C4__7S3451C9[4]),  4,6},
  {&(_tg__ZTV7S3451C7__7S3451C4__7S3451C9[8]),  8,14},
};
extern VTBL_ENTRY _ZTI7S3451C9[];
extern  VTBL_ENTRY _ZTV7S3451C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3451C9[];
Class_Descriptor cd_S3451C9 = {  "S3451C9", // class name
  bases_S3451C9, 15,
  &(vtc_S3451C9[0]), // expected_vtbl_contents
  &(vtt_S3451C9[0]), // expected_vtt_contents
  ABISELECT(352,260), // object size
  NSPAIRA(_ZTI7S3451C9),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S3451C9),71, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3451C9),13, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3451C12  {
  ::S19993C22_nt s3451c12f0;
  virtual void  v24(); // _ZN8S3451C123v24Ev
  virtual void  v25(); // _ZN8S3451C123v25Ev
  virtual void  v26(); // _ZN8S3451C123v26Ev
  virtual void  v27(); // _ZN8S3451C123v27Ev
  virtual void  v28(); // _ZN8S3451C123v28Ev
  virtual void  v29(); // _ZN8S3451C123v29Ev
  ~S3451C12(); // tgen
  S3451C12(); // tgen
};
//SIG(-1 S3451C12) C1{ v1 v2 v3 v4 v5 v6 FU2{ m Fi}}


void  S3451C12 ::v24(){vfunc_called(this, "_ZN8S3451C123v24Ev");}
void  S3451C12 ::v25(){vfunc_called(this, "_ZN8S3451C123v25Ev");}
void  S3451C12 ::v26(){vfunc_called(this, "_ZN8S3451C123v26Ev");}
void  S3451C12 ::v27(){vfunc_called(this, "_ZN8S3451C123v27Ev");}
void  S3451C12 ::v28(){vfunc_called(this, "_ZN8S3451C123v28Ev");}
void  S3451C12 ::v29(){vfunc_called(this, "_ZN8S3451C123v29Ev");}
S3451C12 ::~S3451C12(){ note_dtor("S3451C12", this);} // tgen
S3451C12 ::S3451C12(){ note_ctor("S3451C12", this);} // tgen

static void Test_S3451C12()
{
  extern Class_Descriptor cd_S3451C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S3451C12, buf);
    S3451C12 *dp, &lv = *(dp=new (buf) S3451C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S3451C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3451C12)");
    check_field_offset(lv, s3451c12f0, ABISELECT(8,4), "S3451C12.s3451c12f0");
    test_class_info(&lv, &cd_S3451C12);
    dp->~S3451C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3451C12(Test_S3451C12, "S3451C12", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S3451C12C1Ev();
extern void _ZN8S3451C12D1Ev();
Name_Map name_map_S3451C12[] = {
  NSPAIR(_ZN8S3451C12C1Ev),
  NSPAIR(_ZN8S3451C12D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S3451C12[];
extern void _ZN8S3451C123v24Ev();
extern void _ZN8S3451C123v25Ev();
extern void _ZN8S3451C123v26Ev();
extern void _ZN8S3451C123v27Ev();
extern void _ZN8S3451C123v28Ev();
extern void _ZN8S3451C123v29Ev();
static  VTBL_ENTRY vtc_S3451C12[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S3451C12[0]),
  (VTBL_ENTRY)&_ZN8S3451C123v24Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v25Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v26Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v27Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v28Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v29Ev,
};
extern VTBL_ENTRY _ZTI8S3451C12[];
extern  VTBL_ENTRY _ZTV8S3451C12[];
Class_Descriptor cd_S3451C12 = {  "S3451C12", // class name
  0,0,//no base classes
  &(vtc_S3451C12[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S3451C12),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S3451C12),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3451C2  : S3451C3 , virtual S3451C4 , S3451C8 , S3451C9 , virtual S3451C12 {
  virtual void  v30(); // _ZN7S3451C23v30Ev
  virtual void  v31(); // _ZN7S3451C23v31Ev
  ~S3451C2(); // tgen
  S3451C2(); // tgen
};
//SIG(-1 S3451C2) C1{ BC2{ v3 v4} VBC3{ VBC4{ m} VBC2 BC5{ v5 v6} VBC6{ BC2 v7 v8 v9 v10 Fi[5] Fp FL[4]} v11} BC7{ v12 Fp FD[7]} BC8{ VBC9{ v13 FC4 Fi[4]} BC5 VBC2 BC10{ BC5 VBC3 BC4 BC6 BC2 v14} BC7 v15 v16 v17 Fi} VBC11{ v18 v19 v20 v21 v22 v23 FU12{ m Fi}} v1 v2}


void  S3451C2 ::v30(){vfunc_called(this, "_ZN7S3451C23v30Ev");}
void  S3451C2 ::v31(){vfunc_called(this, "_ZN7S3451C23v31Ev");}
S3451C2 ::~S3451C2(){ note_dtor("S3451C2", this);} // tgen
S3451C2 ::S3451C2(){ note_ctor("S3451C2", this);} // tgen

static void Test_S3451C2()
{
  extern Class_Descriptor cd_S3451C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(33,92)];
    init_test(&cd_S3451C2, buf);
    S3451C2 *dp, &lv = *(dp=new (buf) S3451C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(512,364), "sizeof(S3451C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3451C2)");
    /*is_ambiguous_... S3451C2::S3451C3 */ AMB_check_base_class_offset(lv, (S3451C3*), 0, "S3451C2");
    check_base_class_offset(lv, (S7856C24*)(S3451C4*), 0, "S3451C2");
    /*is_ambiguous_... S3451C4::S3451C3 */ AMB_check_base_class_offset(lv, (S3451C3*)(S3451C4*), ABISELECT(384,268), "S3451C2");
    /*is_ambiguous_... S3451C9::S3451C3 */ AMB_check_base_class_offset(lv, (S3451C3*)(S3451C9*), ABISELECT(384,268), "S3451C2");
    check_base_class_offset(lv, (S3451C6*)(S3451C4*), ABISELECT(376,264), "S3451C2");
    /*is_ambiguous_... S3451C2::S3451C7 */ AMB_check_base_class_offset(lv, (S3451C3*)(S3451C7*), ABISELECT(392,272), "S3451C2");
    check_base_class_offset(lv, (S3451C7*)(S3451C4*), ABISELECT(392,272), "S3451C2");
    check_base_class_offset(lv, (S3451C4*), ABISELECT(376,264), "S3451C2");
    check_base_class_offset(lv, (S3451C4*)(S3451C11*)(S3451C9*), ABISELECT(376,264), "S3451C2");
    /*is_ambiguous_... S3451C2::S3451C8 */ AMB_check_base_class_offset(lv, (S3451C8*), ABISELECT(16,4), "S3451C2");
    check_base_class_offset(lv, (S3451C10*)(S3451C9*), ABISELECT(464,332), "S3451C2");
    /*is_ambiguous_... S3451C9::S3451C6 */ AMB_check_base_class_offset(lv, (S3451C6*)(S3451C9*), ABISELECT(144,96), "S3451C2");
    /*is_ambiguous_... S3451C11::S3451C6 */ AMB_check_base_class_offset(lv, (S3451C6*)(S3451C11*)(S3451C9*), ABISELECT(152,100), "S3451C2");
    /*is_ambiguous_... S3451C11::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S3451C11*)(S3451C9*), ABISELECT(152,100), "S3451C2");
    /*is_ambiguous_... S3451C11::S3451C7 */ AMB_check_base_class_offset(lv, (S3451C3*)(S3451C7*)(S3451C11*)(S3451C9*), ABISELECT(160,104), "S3451C2");
    /*is_ambiguous_... S3451C11::S3451C7 */ AMB_check_base_class_offset(lv, (S3451C7*)(S3451C11*)(S3451C9*), ABISELECT(160,104), "S3451C2");
    /*is_ambiguous_... S3451C11::S3451C3 */ AMB_check_base_class_offset(lv, (S3451C3*)(S3451C11*)(S3451C9*), ABISELECT(232,164), "S3451C2");
    check_base_class_offset(lv, (S3451C11*)(S3451C9*), ABISELECT(152,100), "S3451C2");
    check_base_class_offset(lv, (S3451C8*)(S3451C9*), ABISELECT(240,168), "S3451C2");
    check_base_class_offset(lv, (S3451C9*), ABISELECT(144,96), "S3451C2");
    check_base_class_offset(lv, (S3451C12*), ABISELECT(496,356), "S3451C2");
    test_class_info(&lv, &cd_S3451C2);
    dp->~S3451C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3451C2(Test_S3451C2, "S3451C2", ABISELECT(512,364));

#else // __cplusplus

extern void _ZN7S3451C2C1Ev();
extern void _ZN7S3451C2D1Ev();
Name_Map name_map_S3451C2[] = {
  NSPAIR(_ZN7S3451C2C1Ev),
  NSPAIR(_ZN7S3451C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3451C3;
extern VTBL_ENTRY _ZTI7S3451C3[];
extern  VTBL_ENTRY _ZTV7S3451C3[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S3451C3;
extern VTBL_ENTRY _ZTI7S3451C3[];
extern  VTBL_ENTRY _ZTV7S3451C3[];
extern Class_Descriptor cd_S3451C6;
extern VTBL_ENTRY _ZTI7S3451C6[];
extern  VTBL_ENTRY _ZTV7S3451C6[];
extern Class_Descriptor cd_S3451C3;
extern VTBL_ENTRY _ZTI7S3451C3[];
extern  VTBL_ENTRY _ZTV7S3451C3[];
extern Class_Descriptor cd_S3451C7;
extern VTBL_ENTRY _ZTI7S3451C7[];
extern  VTBL_ENTRY _ZTV7S3451C7[];
extern Class_Descriptor cd_S3451C4;
extern VTBL_ENTRY _ZTI7S3451C4[];
extern  VTBL_ENTRY _ZTV7S3451C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3451C4[];
extern Class_Descriptor cd_S3451C8;
extern VTBL_ENTRY _ZTI7S3451C8[];
extern  VTBL_ENTRY _ZTV7S3451C8[];
extern Class_Descriptor cd_S3451C10;
extern VTBL_ENTRY _ZTI8S3451C10[];
extern  VTBL_ENTRY _ZTV8S3451C10[];
extern Class_Descriptor cd_S3451C6;
extern VTBL_ENTRY _ZTI7S3451C6[];
extern  VTBL_ENTRY _ZTV7S3451C6[];
extern Class_Descriptor cd_S3451C6;
extern VTBL_ENTRY _ZTI7S3451C6[];
extern  VTBL_ENTRY _ZTV7S3451C6[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S3451C3;
extern VTBL_ENTRY _ZTI7S3451C3[];
extern  VTBL_ENTRY _ZTV7S3451C3[];
extern Class_Descriptor cd_S3451C7;
extern VTBL_ENTRY _ZTI7S3451C7[];
extern  VTBL_ENTRY _ZTV7S3451C7[];
extern Class_Descriptor cd_S3451C3;
extern VTBL_ENTRY _ZTI7S3451C3[];
extern  VTBL_ENTRY _ZTV7S3451C3[];
extern Class_Descriptor cd_S3451C11;
extern VTBL_ENTRY _ZTI8S3451C11[];
extern  VTBL_ENTRY _ZTV8S3451C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3451C11[];
extern Class_Descriptor cd_S3451C8;
extern VTBL_ENTRY _ZTI7S3451C8[];
extern  VTBL_ENTRY _ZTV7S3451C8[];
extern Class_Descriptor cd_S3451C9;
extern VTBL_ENTRY _ZTI7S3451C9[];
extern  VTBL_ENTRY _ZTV7S3451C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3451C9[];
extern Class_Descriptor cd_S3451C12;
extern VTBL_ENTRY _ZTI8S3451C12[];
extern  VTBL_ENTRY _ZTV8S3451C12[];
static Base_Class bases_S3451C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3451C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3451C3,    ABISELECT(384,268), //bcp->offset
    62, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3451C6,    ABISELECT(376,264), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S3451C3,    ABISELECT(392,272), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3451C7,    ABISELECT(392,272), //bcp->offset
    68, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3451C4,    ABISELECT(376,264), //bcp->offset
    51, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3451C8,    ABISELECT(16,4), //bcp->offset
    12, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3451C10,    ABISELECT(464,332), //bcp->offset
    82, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S3451C6,    ABISELECT(144,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S3451C6,    ABISELECT(152,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(152,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S3451C3,    ABISELECT(160,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S3451C7,    ABISELECT(160,104), //bcp->offset
    36, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S3451C3,    ABISELECT(232,164), //bcp->offset
    44, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S3451C11,    ABISELECT(152,100), //bcp->offset
    27, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S3451C8,    ABISELECT(240,168), //bcp->offset
    48, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S3451C9,    ABISELECT(144,96), //bcp->offset
    15, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3451C12,    ABISELECT(496,356), //bcp->offset
    86, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S3451C2[];
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C23v30Ev();
extern void _ZN7S3451C23v31Ev();
extern void _ZN7S3451C83v18Ev();
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C93v21Ev();
extern void _ZN7S3451C93v22Ev();
extern void _ZN7S3451C93v23Ev();
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN8S3451C113v20Ev();
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C83v18Ev();
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C43v17Ev();
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
extern void _ZN8S3451C103v19Ev();
extern void _ZN8S3451C123v24Ev();
extern void _ZN8S3451C123v25Ev();
extern void _ZN8S3451C123v26Ev();
extern void _ZN8S3451C123v27Ev();
extern void _ZN8S3451C123v28Ev();
extern void _ZN8S3451C123v29Ev();
static  VTBL_ENTRY vtc_S3451C2[] = {
  ABISELECT(496,356),
  ABISELECT(464,332),
  ABISELECT(392,272),
  ABISELECT(384,268),
  0,
  ABISELECT(376,264),
  0,
  (VTBL_ENTRY)&(_ZTI7S3451C2[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C23v30Ev,
  (VTBL_ENTRY)&_ZN7S3451C23v31Ev,
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI7S3451C2[0]),
  (VTBL_ENTRY)&_ZN7S3451C83v18Ev,
  ABISELECT(248,176),
  ABISELECT(-144,-96),
  ABISELECT(232,168),
  ABISELECT(240,172),
  ABISELECT(320,236),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI7S3451C2[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v21Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v22Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v23Ev,
  ABISELECT(240,172),
  ABISELECT(232,168),
  ABISELECT(-152,-100),
  ABISELECT(224,164),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI7S3451C2[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN8S3451C113v20Ev,
  ABISELECT(-160,-104),
  (VTBL_ENTRY)&(_ZTI7S3451C2[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
  ABISELECT(-232,-164),
  (VTBL_ENTRY)&(_ZTI7S3451C2[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  ABISELECT(-240,-168),
  (VTBL_ENTRY)&(_ZTI7S3451C2[0]),
  (VTBL_ENTRY)&_ZN7S3451C83v18Ev,
  0,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(-376,-264),
  ABISELECT(-376,-264),
  (VTBL_ENTRY)&(_ZTI7S3451C2[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C43v17Ev,
  0,
  0,
  ABISELECT(-384,-268),
  (VTBL_ENTRY)&(_ZTI7S3451C2[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-392,-272),
  (VTBL_ENTRY)&(_ZTI7S3451C2[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
  0,
  ABISELECT(-464,-332),
  (VTBL_ENTRY)&(_ZTI7S3451C2[0]),
  (VTBL_ENTRY)&_ZN8S3451C103v19Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-496,-356),
  (VTBL_ENTRY)&(_ZTI7S3451C2[0]),
  (VTBL_ENTRY)&_ZN8S3451C123v24Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v25Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v26Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v27Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v28Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v29Ev,
};
extern VTBL_ENTRY _ZTV7S3451C2[];
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C93v21Ev();
extern void _ZN7S3451C93v22Ev();
extern void _ZN7S3451C93v23Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C9__7S3451C2[] = {
  ABISELECT(248,176),
  ABISELECT(-144,-96),
  ABISELECT(232,168),
  ABISELECT(240,172),
  ABISELECT(320,236),
  0,
  (VTBL_ENTRY)&(_ZTI7S3451C9[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v21Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v22Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v23Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN8S3451C113v20Ev();
static  VTBL_ENTRY _tg__ZTV8S3451C117S3451C9__7S3451C2[] = {
  ABISELECT(240,172),
  ABISELECT(232,168),
  ABISELECT(-152,-100),
  ABISELECT(224,164),
  0,
  (VTBL_ENTRY)&(_ZTI8S3451C11[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN8S3451C113v20Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C4__8S3451C117S3451C9__7S3451C2[] = {
  0,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(-376,-264),
  ABISELECT(-224,-164),
  (VTBL_ENTRY)&(_ZTI8S3451C11[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C43v17Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C3__8S3451C117S3451C9__7S3451C2[] = {
  0,
  0,
  ABISELECT(-232,-168),
  (VTBL_ENTRY)&(_ZTI8S3451C11[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C7__8S3451C117S3451C9__7S3451C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-240,-172),
  (VTBL_ENTRY)&(_ZTI8S3451C11[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
};
extern void _ZN8S3451C103v19Ev();
static  VTBL_ENTRY _tg__ZTV8S3451C10__7S3451C9__7S3451C2[] = {
  0,
  ABISELECT(-320,-236),
  (VTBL_ENTRY)&(_ZTI7S3451C9[0]),
  (VTBL_ENTRY)&_ZN8S3451C103v19Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C3__7S3451C9__7S3451C2[] = {
  0,
  0,
  ABISELECT(-240,-172),
  (VTBL_ENTRY)&(_ZTI7S3451C9[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN8S3451C113v20Ev();
static  VTBL_ENTRY _tg__ZTV8S3451C11__7S3451C9__7S3451C2[] = {
  ABISELECT(240,172),
  ABISELECT(232,168),
  ABISELECT(-152,-100),
  ABISELECT(224,164),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S3451C9[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN8S3451C113v20Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C4__7S3451C9__7S3451C2[] = {
  0,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(-376,-264),
  ABISELECT(-232,-168),
  (VTBL_ENTRY)&(_ZTI7S3451C9[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C43v17Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C7__7S3451C9__7S3451C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-248,-176),
  (VTBL_ENTRY)&(_ZTI7S3451C9[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C4__7S3451C2[] = {
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(-376,-264),
  0,
  (VTBL_ENTRY)&(_ZTI7S3451C4[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C43v17Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C3__7S3451C4__7S3451C2[] = {
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S3451C4[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C7__7S3451C4__7S3451C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S3451C4[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
};
static  VTT_ENTRY vtt_S3451C2[] = {
  {&(_ZTV7S3451C2[8]),  8,100},
  {&(_tg__ZTV7S3451C9__7S3451C2[7]),  7,12},
  {&(_tg__ZTV8S3451C117S3451C9__7S3451C2[6]),  6,9},
  {&(_tg__ZTV7S3451C4__8S3451C117S3451C9__7S3451C2[8]),  8,11},
  {&(_tg__ZTV7S3451C3__8S3451C117S3451C9__7S3451C2[4]),  4,6},
  {&(_tg__ZTV7S3451C7__8S3451C117S3451C9__7S3451C2[8]),  8,14},
  {&(_tg__ZTV8S3451C10__7S3451C9__7S3451C2[3]),  3,4},
  {&(_tg__ZTV7S3451C3__7S3451C9__7S3451C2[4]),  4,6},
  {&(_tg__ZTV8S3451C11__7S3451C9__7S3451C2[6]),  6,9},
  {&(_tg__ZTV7S3451C4__7S3451C9__7S3451C2[8]),  8,11},
  {&(_tg__ZTV7S3451C7__7S3451C9__7S3451C2[8]),  8,14},
  {&(_ZTV7S3451C2[59]),  59,100},
  {&(_ZTV7S3451C2[66]),  66,100},
  {&(_ZTV7S3451C2[76]),  76,100},
  {&(_ZTV7S3451C2[22]),  22,100},
  {&(_ZTV7S3451C2[85]),  85,100},
  {&(_ZTV7S3451C2[33]),  33,100},
  {&(_ZTV7S3451C2[94]),  94,100},
  {&(_tg__ZTV7S3451C4__7S3451C2[5]),  5,8},
  {&(_tg__ZTV7S3451C3__7S3451C4__7S3451C2[4]),  4,6},
  {&(_tg__ZTV7S3451C7__7S3451C4__7S3451C2[8]),  8,14},
};
extern VTBL_ENTRY _ZTI7S3451C2[];
extern  VTBL_ENTRY _ZTV7S3451C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3451C2[];
Class_Descriptor cd_S3451C2 = {  "S3451C2", // class name
  bases_S3451C2, 19,
  &(vtc_S3451C2[0]), // expected_vtbl_contents
  &(vtt_S3451C2[0]), // expected_vtt_contents
  ABISELECT(512,364), // object size
  NSPAIRA(_ZTI7S3451C2),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S3451C2),100, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3451C2),21, //virtual table table var
  17, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3451C15  : S3451C4 , virtual S3451C8 {
  void *s3451c15f0;
  virtual  ~S3451C15(); // _ZN8S3451C15D2Ev
  virtual void  v32(); // _ZN8S3451C153v32Ev
  S3451C15(); // tgen
};
//SIG(-1 S3451C15) C1{ BC2{ VBC3{ m} VBC4{ v2 v3} BC5{ v4 v5} VBC6{ BC4 v6 v7 v8 v9 Fi[5] Fp FL[4]} v10} VBC7{ v11 Fp FD[7]} vd v1 Fp}


 S3451C15 ::~S3451C15(){ note_dtor("S3451C15", this);}
void  S3451C15 ::v32(){vfunc_called(this, "_ZN8S3451C153v32Ev");}
S3451C15 ::S3451C15(){ note_ctor("S3451C15", this);} // tgen

static void Test_S3451C15()
{
  extern Class_Descriptor cd_S3451C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(15,42)];
    init_test(&cd_S3451C15, buf);
    S3451C15 *dp, &lv = *(dp=new (buf) S3451C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(224,164), "sizeof(S3451C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3451C15)");
    check_base_class_offset(lv, (S7856C24*)(S3451C4*), 0, "S3451C15");
    /*is_ambiguous_... S3451C4::S3451C3 */ AMB_check_base_class_offset(lv, (S3451C3*)(S3451C4*), ABISELECT(16,8), "S3451C15");
    check_base_class_offset(lv, (S3451C6*)(S3451C4*), 0, "S3451C15");
    check_base_class_offset(lv, (S3451C3*)(S3451C7*), ABISELECT(24,12), "S3451C15");
    check_base_class_offset(lv, (S3451C7*)(S3451C4*), ABISELECT(24,12), "S3451C15");
    check_base_class_offset(lv, (S3451C4*), 0, "S3451C15");
    check_base_class_offset(lv, (S3451C8*), ABISELECT(96,72), "S3451C15");
    check_field_offset(lv, s3451c15f0, ABISELECT(8,4), "S3451C15.s3451c15f0");
    test_class_info(&lv, &cd_S3451C15);
    dp->~S3451C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3451C15(Test_S3451C15, "S3451C15", ABISELECT(224,164));

#else // __cplusplus

extern void _ZN8S3451C15C1Ev();
extern void _ZN8S3451C15D2Ev();
Name_Map name_map_S3451C15[] = {
  NSPAIR(_ZN8S3451C15C1Ev),
  NSPAIR(_ZN8S3451C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S3451C3;
extern VTBL_ENTRY _ZTI7S3451C3[];
extern  VTBL_ENTRY _ZTV7S3451C3[];
extern Class_Descriptor cd_S3451C6;
extern VTBL_ENTRY _ZTI7S3451C6[];
extern  VTBL_ENTRY _ZTV7S3451C6[];
extern Class_Descriptor cd_S3451C3;
extern VTBL_ENTRY _ZTI7S3451C3[];
extern  VTBL_ENTRY _ZTV7S3451C3[];
extern Class_Descriptor cd_S3451C7;
extern VTBL_ENTRY _ZTI7S3451C7[];
extern  VTBL_ENTRY _ZTV7S3451C7[];
extern Class_Descriptor cd_S3451C4;
extern VTBL_ENTRY _ZTI7S3451C4[];
extern  VTBL_ENTRY _ZTV7S3451C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3451C4[];
extern Class_Descriptor cd_S3451C8;
extern VTBL_ENTRY _ZTI7S3451C8[];
extern  VTBL_ENTRY _ZTV7S3451C8[];
static Base_Class bases_S3451C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S3451C3,    ABISELECT(16,8), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S3451C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3451C3,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S3451C7,    ABISELECT(24,12), //bcp->offset
    18, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S3451C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3451C8,    ABISELECT(96,72), //bcp->offset
    32, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S3451C15[];
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C43v17Ev();
extern void _ZN8S3451C15D1Ev();
extern void _ZN8S3451C15D0Ev();
extern void _ZN8S3451C153v32Ev();
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
extern void _ZN7S3451C83v18Ev();
static  VTBL_ENTRY vtc_S3451C15[] = {
  ABISELECT(96,72),
  ABISELECT(24,12),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S3451C15[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C43v17Ev,
  (VTBL_ENTRY)&_ZN8S3451C15D1Ev,
  (VTBL_ENTRY)&_ZN8S3451C15D0Ev,
  (VTBL_ENTRY)&_ZN8S3451C153v32Ev,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S3451C15[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S3451C15[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
  0,
  ABISELECT(-96,-72),
  (VTBL_ENTRY)&(_ZTI8S3451C15[0]),
  (VTBL_ENTRY)&_ZN7S3451C83v18Ev,
};
extern VTBL_ENTRY _ZTV8S3451C15[];
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C4__8S3451C15[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S3451C4[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C43v17Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C3__7S3451C4__8S3451C15[] = {
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S3451C4[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C7__7S3451C4__8S3451C15[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S3451C4[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
};
static  VTT_ENTRY vtt_S3451C15[] = {
  {&(_ZTV8S3451C15[6]),  6,36},
  {&(_tg__ZTV7S3451C4__8S3451C15[5]),  5,8},
  {&(_tg__ZTV7S3451C3__7S3451C4__8S3451C15[4]),  4,6},
  {&(_tg__ZTV7S3451C7__7S3451C4__8S3451C15[8]),  8,14},
  {&(_ZTV8S3451C15[16]),  16,36},
  {&(_ZTV8S3451C15[26]),  26,36},
  {&(_ZTV8S3451C15[35]),  35,36},
};
extern VTBL_ENTRY _ZTI8S3451C15[];
extern  VTBL_ENTRY _ZTV8S3451C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3451C15[];
Class_Descriptor cd_S3451C15 = {  "S3451C15", // class name
  bases_S3451C15, 7,
  &(vtc_S3451C15[0]), // expected_vtbl_contents
  &(vtt_S3451C15[0]), // expected_vtt_contents
  ABISELECT(224,164), // object size
  NSPAIRA(_ZTI8S3451C15),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S3451C15),36, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3451C15),7, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3451C14  : virtual S3451C15 , virtual S3451C10 , S3451C3 {
  virtual  ~S3451C14(); // _ZN8S3451C14D2Ev
  S3451C14(); // tgen
};
//SIG(-1 S3451C14) C1{ VBC2{ BC3{ VBC4{ m} VBC5{ v1 v2} BC6{ v3 v4} VBC7{ BC5 v5 v6 v7 v8 Fi[5] Fp FL[4]} v9} VBC8{ v10 Fp FD[7]} vd v11 Fp} VBC9{ v12 FC4 Fi[4]} BC5 vd}


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

static void Test_S3451C14()
{
  extern Class_Descriptor cd_S3451C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(18,49)];
    init_test(&cd_S3451C14, buf);
    S3451C14 *dp, &lv = *(dp=new (buf) S3451C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(272,192), "sizeof(S3451C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3451C14)");
    check_base_class_offset(lv, (S7856C24*)(S3451C4*)(S3451C15*), 0, "S3451C14");
    /*is_ambiguous_... S3451C4::S3451C3 */ AMB_check_base_class_offset(lv, (S3451C3*)(S3451C4*)(S3451C15*), ABISELECT(24,12), "S3451C14");
    check_base_class_offset(lv, (S3451C6*)(S3451C4*)(S3451C15*), ABISELECT(8,4), "S3451C14");
    check_base_class_offset(lv, (S3451C3*)(S3451C7*), ABISELECT(32,16), "S3451C14");
    check_base_class_offset(lv, (S3451C7*)(S3451C4*)(S3451C15*), ABISELECT(32,16), "S3451C14");
    check_base_class_offset(lv, (S3451C4*)(S3451C15*), ABISELECT(8,4), "S3451C14");
    check_base_class_offset(lv, (S3451C8*)(S3451C15*), ABISELECT(112,76), "S3451C14");
    check_base_class_offset(lv, (S3451C15*), ABISELECT(8,4), "S3451C14");
    check_base_class_offset(lv, (S3451C10*), ABISELECT(240,168), "S3451C14");
    /*is_ambiguous_... S3451C14::S3451C3 */ AMB_check_base_class_offset(lv, (S3451C3*), 0, "S3451C14");
    test_class_info(&lv, &cd_S3451C14);
    dp->~S3451C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3451C14(Test_S3451C14, "S3451C14", ABISELECT(272,192));

#else // __cplusplus

extern void _ZN8S3451C14C1Ev();
extern void _ZN8S3451C14D2Ev();
Name_Map name_map_S3451C14[] = {
  NSPAIR(_ZN8S3451C14C1Ev),
  NSPAIR(_ZN8S3451C14D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S3451C3;
extern VTBL_ENTRY _ZTI7S3451C3[];
extern  VTBL_ENTRY _ZTV7S3451C3[];
extern Class_Descriptor cd_S3451C6;
extern VTBL_ENTRY _ZTI7S3451C6[];
extern  VTBL_ENTRY _ZTV7S3451C6[];
extern Class_Descriptor cd_S3451C3;
extern VTBL_ENTRY _ZTI7S3451C3[];
extern  VTBL_ENTRY _ZTV7S3451C3[];
extern Class_Descriptor cd_S3451C7;
extern VTBL_ENTRY _ZTI7S3451C7[];
extern  VTBL_ENTRY _ZTV7S3451C7[];
extern Class_Descriptor cd_S3451C4;
extern VTBL_ENTRY _ZTI7S3451C4[];
extern  VTBL_ENTRY _ZTV7S3451C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3451C4[];
extern Class_Descriptor cd_S3451C8;
extern VTBL_ENTRY _ZTI7S3451C8[];
extern  VTBL_ENTRY _ZTV7S3451C8[];
extern Class_Descriptor cd_S3451C15;
extern VTBL_ENTRY _ZTI8S3451C15[];
extern  VTBL_ENTRY _ZTV8S3451C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3451C15[];
extern Class_Descriptor cd_S3451C10;
extern VTBL_ENTRY _ZTI8S3451C10[];
extern  VTBL_ENTRY _ZTV8S3451C10[];
extern Class_Descriptor cd_S3451C3;
extern VTBL_ENTRY _ZTI7S3451C3[];
extern  VTBL_ENTRY _ZTV7S3451C3[];
static Base_Class bases_S3451C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S3451C3,    ABISELECT(24,12), //bcp->offset
    29, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S3451C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3451C3,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S3451C7,    ABISELECT(32,16), //bcp->offset
    35, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S3451C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S3451C8,    ABISELECT(112,76), //bcp->offset
    49, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S3451C15,    ABISELECT(8,4), //bcp->offset
    12, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3451C10,    ABISELECT(240,168), //bcp->offset
    53, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3451C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S3451C14[];
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN8S3451C14D1Ev();
extern void _ZN8S3451C14D0Ev();
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C43v17Ev();
extern void ABISELECT(_ZTv0_n80_N8S3451C14D1Ev,_ZTv0_n40_N8S3451C14D1Ev)();
extern void ABISELECT(_ZThn8_N8S3451C14D1Ev,_ZThn4_N8S3451C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S3451C14D0Ev,_ZTv0_n40_N8S3451C14D0Ev)();
extern void ABISELECT(_ZThn8_N8S3451C14D0Ev,_ZThn4_N8S3451C14D0Ev)() __attribute__((weak));
extern void _ZN8S3451C153v32Ev();
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
extern void _ZN7S3451C83v18Ev();
extern void _ZN8S3451C103v19Ev();
static  VTBL_ENTRY vtc_S3451C14[] = {
  ABISELECT(240,168),
  ABISELECT(112,76),
  ABISELECT(32,16),
  ABISELECT(24,12),
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S3451C14[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN8S3451C14D1Ev,
  (VTBL_ENTRY)&_ZN8S3451C14D0Ev,
  0,
  ABISELECT(-8,-4),
  0,
  0,
  0,
  ABISELECT(104,72),
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S3451C14[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C43v17Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S3451C14D1Ev,_ZTv0_n40_N8S3451C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S3451C14D0Ev,_ZTv0_n40_N8S3451C14D0Ev),
  (VTBL_ENTRY)&_ZN8S3451C153v32Ev,
  0,
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S3451C14[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S3451C14[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
  0,
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI8S3451C14[0]),
  (VTBL_ENTRY)&_ZN7S3451C83v18Ev,
  0,
  ABISELECT(-240,-168),
  (VTBL_ENTRY)&(_ZTI8S3451C14[0]),
  (VTBL_ENTRY)&_ZN8S3451C103v19Ev,
};
extern VTBL_ENTRY _ZTV8S3451C14[];
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C43v17Ev();
extern void _ZN8S3451C15D1Ev();
extern void _ZN8S3451C15D0Ev();
extern void _ZN8S3451C153v32Ev();
static  VTBL_ENTRY _tg__ZTV8S3451C15__8S3451C14[] = {
  ABISELECT(104,72),
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S3451C15[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C43v17Ev,
  (VTBL_ENTRY)&_ZN8S3451C15D1Ev,
  (VTBL_ENTRY)&_ZN8S3451C15D0Ev,
  (VTBL_ENTRY)&_ZN8S3451C153v32Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C48S3451C15__8S3451C14[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S3451C4[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C43v17Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C3__7S3451C48S3451C15__8S3451C14[] = {
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S3451C4[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C7__7S3451C48S3451C15__8S3451C14[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S3451C4[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C3__8S3451C15__8S3451C14[] = {
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S3451C15[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C7__8S3451C15__8S3451C14[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S3451C15[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
};
extern void _ZN7S3451C83v18Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C8__8S3451C15__8S3451C14[] = {
  0,
  ABISELECT(-104,-72),
  (VTBL_ENTRY)&(_ZTI8S3451C15[0]),
  (VTBL_ENTRY)&_ZN7S3451C83v18Ev,
};
static  VTT_ENTRY vtt_S3451C14[] = {
  {&(_ZTV8S3451C14[8]),  8,57},
  {&(_ZTV8S3451C14[23]),  23,57},
  {&(_ZTV8S3451C14[33]),  33,57},
  {&(_ZTV8S3451C14[43]),  43,57},
  {&(_ZTV8S3451C14[52]),  52,57},
  {&(_ZTV8S3451C14[56]),  56,57},
  {&(_tg__ZTV8S3451C15__8S3451C14[6]),  6,12},
  {&(_tg__ZTV7S3451C48S3451C15__8S3451C14[5]),  5,8},
  {&(_tg__ZTV7S3451C3__7S3451C48S3451C15__8S3451C14[4]),  4,6},
  {&(_tg__ZTV7S3451C7__7S3451C48S3451C15__8S3451C14[8]),  8,14},
  {&(_tg__ZTV7S3451C3__8S3451C15__8S3451C14[4]),  4,6},
  {&(_tg__ZTV7S3451C7__8S3451C15__8S3451C14[8]),  8,14},
  {&(_tg__ZTV7S3451C8__8S3451C15__8S3451C14[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S3451C14[];
extern  VTBL_ENTRY _ZTV8S3451C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3451C14[];
static VTBL_ENTRY alt_thunk_names32[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S3451C14D0Ev,_ZTv0_n40_N8S3451C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S3451C14D0Ev,_ZThn4_N8S3451C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S3451C14D1Ev,_ZTv0_n40_N8S3451C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S3451C14D1Ev,_ZThn4_N8S3451C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3451C14 = {  "S3451C14", // class name
  bases_S3451C14, 10,
  &(vtc_S3451C14[0]), // expected_vtbl_contents
  &(vtt_S3451C14[0]), // expected_vtt_contents
  ABISELECT(272,192), // object size
  NSPAIRA(_ZTI8S3451C14),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S3451C14),57, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3451C14),13, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names32,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3451C16  : virtual S3451C10 , virtual S3451C3 , virtual S3451C4 , S3451C2 {
  long double s3451c16f0;
  __tsi64 s3451c16f1[8];
  virtual void  v33(); // _ZN8S3451C163v33Ev
  virtual void  v34(); // _ZN8S3451C163v34Ev
  virtual void  v35(); // _ZN8S3451C163v35Ev
  virtual void  v36(); // _ZN8S3451C163v36Ev
  virtual void  v37(); // _ZN8S3451C163v37Ev
  virtual void  v38(); // _ZN8S3451C163v38Ev
  virtual void  v39(); // _ZN8S3451C163v39Ev
  ~S3451C16(); // tgen
  S3451C16(); // tgen
};
//SIG(-1 S3451C16) C1{ VBC2{ v8 FC3{ m} Fi[4]} VBC4{ v9 v10} VBC5{ VBC3 VBC4 BC6{ v11 v12} VBC7{ BC4 v13 v14 v15 v16 Fi[5] Fp FL[4]} v17} BC8{ BC4 VBC5 BC9{ v18 Fp FD[7]} BC10{ VBC2 BC6 VBC4 BC11{ BC6 VBC5 BC3 BC7 BC4 v19} BC9 v20 v21 v22 Fi} VBC12{ v23 v24 v25 v26 v27 v28 FU13{ m Fi}} v29 v30} v1 v2 v3 v4 v5 v6 v7 FD FL[8]}


void  S3451C16 ::v33(){vfunc_called(this, "_ZN8S3451C163v33Ev");}
void  S3451C16 ::v34(){vfunc_called(this, "_ZN8S3451C163v34Ev");}
void  S3451C16 ::v35(){vfunc_called(this, "_ZN8S3451C163v35Ev");}
void  S3451C16 ::v36(){vfunc_called(this, "_ZN8S3451C163v36Ev");}
void  S3451C16 ::v37(){vfunc_called(this, "_ZN8S3451C163v37Ev");}
void  S3451C16 ::v38(){vfunc_called(this, "_ZN8S3451C163v38Ev");}
void  S3451C16 ::v39(){vfunc_called(this, "_ZN8S3451C163v39Ev");}
S3451C16 ::~S3451C16(){ note_dtor("S3451C16", this);} // tgen
S3451C16 ::S3451C16(){ note_ctor("S3451C16", this);} // tgen

static void Test_S3451C16()
{
  extern Class_Descriptor cd_S3451C16;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(39,111)];
    init_test(&cd_S3451C16, buf);
    S3451C16 *dp, &lv = *(dp=new (buf) S3451C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(608,440), "sizeof(S3451C16)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3451C16)");
    check_base_class_offset(lv, (S3451C10*), ABISELECT(464,340), "S3451C16");
    check_base_class_offset(lv, (S3451C10*)(S3451C9*)(S3451C2*), ABISELECT(464,340), "S3451C16");
    /*is_ambiguous_... S3451C16::S3451C3 */ AMB_check_base_class_offset(lv, (S3451C3*), ABISELECT(496,364), "S3451C16");
    /*is_ambiguous_... S3451C4::S3451C3 */ AMB_check_base_class_offset(lv, (S3451C3*)(S3451C4*), ABISELECT(496,364), "S3451C16");
    /*is_ambiguous_... S3451C9::S3451C3 */ AMB_check_base_class_offset(lv, (S3451C3*)(S3451C9*)(S3451C2*), ABISELECT(496,364), "S3451C16");
    check_base_class_offset(lv, (S7856C24*)(S3451C4*), 0, "S3451C16");
    check_base_class_offset(lv, (S3451C6*)(S3451C4*), ABISELECT(504,368), "S3451C16");
    /*is_ambiguous_... S3451C16::S3451C7 */ AMB_check_base_class_offset(lv, (S3451C3*)(S3451C7*), ABISELECT(512,372), "S3451C16");
    check_base_class_offset(lv, (S3451C7*)(S3451C4*), ABISELECT(512,372), "S3451C16");
    check_base_class_offset(lv, (S3451C4*), ABISELECT(504,368), "S3451C16");
    check_base_class_offset(lv, (S3451C4*)(S3451C2*), ABISELECT(504,368), "S3451C16");
    check_base_class_offset(lv, (S3451C4*)(S3451C11*)(S3451C9*)(S3451C2*), ABISELECT(504,368), "S3451C16");
    /*is_ambiguous_... S3451C2::S3451C3 */ AMB_check_base_class_offset(lv, (S3451C3*)(S3451C2*), 0, "S3451C16");
    /*is_ambiguous_... S3451C2::S3451C8 */ AMB_check_base_class_offset(lv, (S3451C8*)(S3451C2*), ABISELECT(16,4), "S3451C16");
    /*is_ambiguous_... S3451C9::S3451C6 */ AMB_check_base_class_offset(lv, (S3451C6*)(S3451C9*)(S3451C2*), ABISELECT(144,96), "S3451C16");
    /*is_ambiguous_... S3451C11::S3451C6 */ AMB_check_base_class_offset(lv, (S3451C6*)(S3451C11*)(S3451C9*)(S3451C2*), ABISELECT(152,100), "S3451C16");
    /*is_ambiguous_... S3451C11::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S3451C11*)(S3451C9*)(S3451C2*), ABISELECT(152,100), "S3451C16");
    /*is_ambiguous_... S3451C11::S3451C7 */ AMB_check_base_class_offset(lv, (S3451C3*)(S3451C7*)(S3451C11*)(S3451C9*)(S3451C2*), ABISELECT(160,104), "S3451C16");
    /*is_ambiguous_... S3451C11::S3451C7 */ AMB_check_base_class_offset(lv, (S3451C7*)(S3451C11*)(S3451C9*)(S3451C2*), ABISELECT(160,104), "S3451C16");
    /*is_ambiguous_... S3451C11::S3451C3 */ AMB_check_base_class_offset(lv, (S3451C3*)(S3451C11*)(S3451C9*)(S3451C2*), ABISELECT(232,164), "S3451C16");
    check_base_class_offset(lv, (S3451C11*)(S3451C9*)(S3451C2*), ABISELECT(152,100), "S3451C16");
    check_base_class_offset(lv, (S3451C8*)(S3451C9*)(S3451C2*), ABISELECT(240,168), "S3451C16");
    check_base_class_offset(lv, (S3451C9*)(S3451C2*), ABISELECT(144,96), "S3451C16");
    check_base_class_offset(lv, (S3451C12*)(S3451C2*), ABISELECT(584,432), "S3451C16");
    check_base_class_offset(lv, (S3451C2*), 0, "S3451C16");
    check_field_offset(lv, s3451c16f0, ABISELECT(384,264), "S3451C16.s3451c16f0");
    check_field_offset(lv, s3451c16f1, ABISELECT(400,276), "S3451C16.s3451c16f1");
    test_class_info(&lv, &cd_S3451C16);
    dp->~S3451C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3451C16(Test_S3451C16, "S3451C16", ABISELECT(608,440));

#else // __cplusplus

extern void _ZN8S3451C16C1Ev();
extern void _ZN8S3451C16D1Ev();
Name_Map name_map_S3451C16[] = {
  NSPAIR(_ZN8S3451C16C1Ev),
  NSPAIR(_ZN8S3451C16D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3451C10;
extern VTBL_ENTRY _ZTI8S3451C10[];
extern  VTBL_ENTRY _ZTV8S3451C10[];
extern Class_Descriptor cd_S3451C3;
extern VTBL_ENTRY _ZTI7S3451C3[];
extern  VTBL_ENTRY _ZTV7S3451C3[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S3451C6;
extern VTBL_ENTRY _ZTI7S3451C6[];
extern  VTBL_ENTRY _ZTV7S3451C6[];
extern Class_Descriptor cd_S3451C3;
extern VTBL_ENTRY _ZTI7S3451C3[];
extern  VTBL_ENTRY _ZTV7S3451C3[];
extern Class_Descriptor cd_S3451C7;
extern VTBL_ENTRY _ZTI7S3451C7[];
extern  VTBL_ENTRY _ZTV7S3451C7[];
extern Class_Descriptor cd_S3451C4;
extern VTBL_ENTRY _ZTI7S3451C4[];
extern  VTBL_ENTRY _ZTV7S3451C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3451C4[];
extern Class_Descriptor cd_S3451C3;
extern VTBL_ENTRY _ZTI7S3451C3[];
extern  VTBL_ENTRY _ZTV7S3451C3[];
extern Class_Descriptor cd_S3451C8;
extern VTBL_ENTRY _ZTI7S3451C8[];
extern  VTBL_ENTRY _ZTV7S3451C8[];
extern Class_Descriptor cd_S3451C6;
extern VTBL_ENTRY _ZTI7S3451C6[];
extern  VTBL_ENTRY _ZTV7S3451C6[];
extern Class_Descriptor cd_S3451C6;
extern VTBL_ENTRY _ZTI7S3451C6[];
extern  VTBL_ENTRY _ZTV7S3451C6[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S3451C3;
extern VTBL_ENTRY _ZTI7S3451C3[];
extern  VTBL_ENTRY _ZTV7S3451C3[];
extern Class_Descriptor cd_S3451C7;
extern VTBL_ENTRY _ZTI7S3451C7[];
extern  VTBL_ENTRY _ZTV7S3451C7[];
extern Class_Descriptor cd_S3451C3;
extern VTBL_ENTRY _ZTI7S3451C3[];
extern  VTBL_ENTRY _ZTV7S3451C3[];
extern Class_Descriptor cd_S3451C11;
extern VTBL_ENTRY _ZTI8S3451C11[];
extern  VTBL_ENTRY _ZTV8S3451C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3451C11[];
extern Class_Descriptor cd_S3451C8;
extern VTBL_ENTRY _ZTI7S3451C8[];
extern  VTBL_ENTRY _ZTV7S3451C8[];
extern Class_Descriptor cd_S3451C9;
extern VTBL_ENTRY _ZTI7S3451C9[];
extern  VTBL_ENTRY _ZTV7S3451C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3451C9[];
extern Class_Descriptor cd_S3451C12;
extern VTBL_ENTRY _ZTI8S3451C12[];
extern  VTBL_ENTRY _ZTV8S3451C12[];
extern Class_Descriptor cd_S3451C2;
extern VTBL_ENTRY _ZTI7S3451C2[];
extern  VTBL_ENTRY _ZTV7S3451C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3451C2[];
static Base_Class bases_S3451C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3451C10,    ABISELECT(464,340), //bcp->offset
    58, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3451C3,    ABISELECT(496,364), //bcp->offset
    62, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3451C6,    ABISELECT(504,368), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S3451C3,    ABISELECT(512,372), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3451C7,    ABISELECT(512,372), //bcp->offset
    79, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3451C4,    ABISELECT(504,368), //bcp->offset
    68, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3451C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S3451C8,    ABISELECT(16,4), //bcp->offset
    19, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S3451C6,    ABISELECT(144,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S3451C6,    ABISELECT(152,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(152,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S3451C3,    ABISELECT(160,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S3451C7,    ABISELECT(160,104), //bcp->offset
    43, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S3451C3,    ABISELECT(232,164), //bcp->offset
    51, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S3451C11,    ABISELECT(152,100), //bcp->offset
    34, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S3451C8,    ABISELECT(240,168), //bcp->offset
    55, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S3451C9,    ABISELECT(144,96), //bcp->offset
    22, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S3451C12,    ABISELECT(584,432), //bcp->offset
    93, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S3451C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S3451C16[];
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C23v30Ev();
extern void _ZN7S3451C23v31Ev();
extern void _ZN8S3451C163v33Ev();
extern void _ZN8S3451C163v34Ev();
extern void _ZN8S3451C163v35Ev();
extern void _ZN8S3451C163v36Ev();
extern void _ZN8S3451C163v37Ev();
extern void _ZN8S3451C163v38Ev();
extern void _ZN8S3451C163v39Ev();
extern void _ZN7S3451C83v18Ev();
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C93v21Ev();
extern void _ZN7S3451C93v22Ev();
extern void _ZN7S3451C93v23Ev();
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN8S3451C113v20Ev();
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C83v18Ev();
extern void _ZN8S3451C103v19Ev();
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C43v17Ev();
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
extern void _ZN8S3451C123v24Ev();
extern void _ZN8S3451C123v25Ev();
extern void _ZN8S3451C123v26Ev();
extern void _ZN8S3451C123v27Ev();
extern void _ZN8S3451C123v28Ev();
extern void _ZN8S3451C123v29Ev();
static  VTBL_ENTRY vtc_S3451C16[] = {
  ABISELECT(584,432),
  ABISELECT(464,340),
  ABISELECT(512,372),
  ABISELECT(496,364),
  0,
  ABISELECT(504,368),
  0,
  (VTBL_ENTRY)&(_ZTI8S3451C16[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C23v30Ev,
  (VTBL_ENTRY)&_ZN7S3451C23v31Ev,
  (VTBL_ENTRY)&_ZN8S3451C163v33Ev,
  (VTBL_ENTRY)&_ZN8S3451C163v34Ev,
  (VTBL_ENTRY)&_ZN8S3451C163v35Ev,
  (VTBL_ENTRY)&_ZN8S3451C163v36Ev,
  (VTBL_ENTRY)&_ZN8S3451C163v37Ev,
  (VTBL_ENTRY)&_ZN8S3451C163v38Ev,
  (VTBL_ENTRY)&_ZN8S3451C163v39Ev,
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI8S3451C16[0]),
  (VTBL_ENTRY)&_ZN7S3451C83v18Ev,
  ABISELECT(368,276),
  ABISELECT(-144,-96),
  ABISELECT(360,272),
  ABISELECT(352,268),
  ABISELECT(320,244),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI8S3451C16[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v21Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v22Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v23Ev,
  ABISELECT(360,272),
  ABISELECT(344,264),
  ABISELECT(-152,-100),
  ABISELECT(352,268),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI8S3451C16[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN8S3451C113v20Ev,
  ABISELECT(-160,-104),
  (VTBL_ENTRY)&(_ZTI8S3451C16[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
  ABISELECT(-232,-164),
  (VTBL_ENTRY)&(_ZTI8S3451C16[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  ABISELECT(-240,-168),
  (VTBL_ENTRY)&(_ZTI8S3451C16[0]),
  (VTBL_ENTRY)&_ZN7S3451C83v18Ev,
  0,
  ABISELECT(-464,-340),
  (VTBL_ENTRY)&(_ZTI8S3451C16[0]),
  (VTBL_ENTRY)&_ZN8S3451C103v19Ev,
  0,
  0,
  ABISELECT(-496,-364),
  (VTBL_ENTRY)&(_ZTI8S3451C16[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  0,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  ABISELECT(-504,-368),
  ABISELECT(-504,-368),
  (VTBL_ENTRY)&(_ZTI8S3451C16[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C43v17Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-512,-372),
  (VTBL_ENTRY)&(_ZTI8S3451C16[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-584,-432),
  (VTBL_ENTRY)&(_ZTI8S3451C16[0]),
  (VTBL_ENTRY)&_ZN8S3451C123v24Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v25Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v26Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v27Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v28Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v29Ev,
};
extern VTBL_ENTRY _ZTV8S3451C16[];
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C23v30Ev();
extern void _ZN7S3451C23v31Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C2__8S3451C16[] = {
  ABISELECT(584,432),
  ABISELECT(464,340),
  ABISELECT(512,372),
  ABISELECT(496,364),
  0,
  ABISELECT(504,368),
  0,
  (VTBL_ENTRY)&(_ZTI7S3451C2[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C23v30Ev,
  (VTBL_ENTRY)&_ZN7S3451C23v31Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C93v21Ev();
extern void _ZN7S3451C93v22Ev();
extern void _ZN7S3451C93v23Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C97S3451C2__8S3451C16[] = {
  ABISELECT(368,276),
  ABISELECT(-144,-96),
  ABISELECT(360,272),
  ABISELECT(352,268),
  ABISELECT(320,244),
  0,
  (VTBL_ENTRY)&(_ZTI7S3451C9[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v21Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v22Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v23Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN8S3451C113v20Ev();
static  VTBL_ENTRY _tg__ZTV8S3451C117S3451C97S3451C2__8S3451C16[] = {
  ABISELECT(360,272),
  ABISELECT(344,264),
  ABISELECT(-152,-100),
  ABISELECT(352,268),
  0,
  (VTBL_ENTRY)&(_ZTI8S3451C11[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN8S3451C113v20Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C4__8S3451C117S3451C97S3451C2__8S3451C16[] = {
  0,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  ABISELECT(-504,-368),
  ABISELECT(-352,-268),
  (VTBL_ENTRY)&(_ZTI8S3451C11[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C43v17Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C3__8S3451C117S3451C97S3451C2__8S3451C16[] = {
  0,
  0,
  ABISELECT(-344,-264),
  (VTBL_ENTRY)&(_ZTI8S3451C11[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C7__8S3451C117S3451C97S3451C2__8S3451C16[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-360,-272),
  (VTBL_ENTRY)&(_ZTI8S3451C11[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
};
extern void _ZN8S3451C103v19Ev();
static  VTBL_ENTRY _tg__ZTV8S3451C10__7S3451C97S3451C2__8S3451C16[] = {
  0,
  ABISELECT(-320,-244),
  (VTBL_ENTRY)&(_ZTI7S3451C9[0]),
  (VTBL_ENTRY)&_ZN8S3451C103v19Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C3__7S3451C97S3451C2__8S3451C16[] = {
  0,
  0,
  ABISELECT(-352,-268),
  (VTBL_ENTRY)&(_ZTI7S3451C9[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN8S3451C113v20Ev();
static  VTBL_ENTRY _tg__ZTV8S3451C11__7S3451C97S3451C2__8S3451C16[] = {
  ABISELECT(360,272),
  ABISELECT(344,264),
  ABISELECT(-152,-100),
  ABISELECT(352,268),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S3451C9[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN8S3451C113v20Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C4__7S3451C97S3451C2__8S3451C16[] = {
  0,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  ABISELECT(-504,-368),
  ABISELECT(-360,-272),
  (VTBL_ENTRY)&(_ZTI7S3451C9[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C43v17Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C7__7S3451C97S3451C2__8S3451C16[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-368,-276),
  (VTBL_ENTRY)&(_ZTI7S3451C9[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C4__7S3451C2__8S3451C16[] = {
  0,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  ABISELECT(-504,-368),
  ABISELECT(-504,-368),
  (VTBL_ENTRY)&(_ZTI7S3451C2[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C43v17Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C3__A1__7S3451C2__8S3451C16[] = {
  0,
  0,
  ABISELECT(-496,-364),
  (VTBL_ENTRY)&(_ZTI7S3451C2[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C7__7S3451C2__8S3451C16[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-512,-372),
  (VTBL_ENTRY)&(_ZTI7S3451C2[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C93v21Ev();
extern void _ZN7S3451C93v22Ev();
extern void _ZN7S3451C93v23Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C9__7S3451C2__8S3451C16[] = {
  ABISELECT(368,276),
  ABISELECT(-144,-96),
  ABISELECT(360,272),
  ABISELECT(352,268),
  ABISELECT(320,244),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI7S3451C2[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v21Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v22Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v23Ev,
};
extern void _ZN8S3451C103v19Ev();
static  VTBL_ENTRY _tg__ZTV8S3451C10__7S3451C2__8S3451C16[] = {
  0,
  ABISELECT(-464,-340),
  (VTBL_ENTRY)&(_ZTI7S3451C2[0]),
  (VTBL_ENTRY)&_ZN8S3451C103v19Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN8S3451C113v20Ev();
static  VTBL_ENTRY _tg__ZTV8S3451C117S3451C9__7S3451C2__8S3451C16[] = {
  ABISELECT(360,272),
  ABISELECT(344,264),
  ABISELECT(-152,-100),
  ABISELECT(352,268),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI7S3451C2[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN8S3451C113v20Ev,
};
extern void _ZN8S3451C123v24Ev();
extern void _ZN8S3451C123v25Ev();
extern void _ZN8S3451C123v26Ev();
extern void _ZN8S3451C123v27Ev();
extern void _ZN8S3451C123v28Ev();
extern void _ZN8S3451C123v29Ev();
static  VTBL_ENTRY _tg__ZTV8S3451C12__7S3451C2__8S3451C16[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-584,-432),
  (VTBL_ENTRY)&(_ZTI7S3451C2[0]),
  (VTBL_ENTRY)&_ZN8S3451C123v24Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v25Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v26Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v27Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v28Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v29Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C4__8S3451C16[] = {
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  ABISELECT(-504,-368),
  0,
  (VTBL_ENTRY)&(_ZTI7S3451C4[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C43v17Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C3__7S3451C4__8S3451C16[] = {
  0,
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI7S3451C4[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C7__7S3451C4__8S3451C16[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S3451C4[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
};
static  VTT_ENTRY vtt_S3451C16[] = {
  {&(_ZTV8S3451C16[8]),  8,107},
  {&(_tg__ZTV7S3451C2__8S3451C16[8]),  8,12},
  {&(_tg__ZTV7S3451C97S3451C2__8S3451C16[7]),  7,12},
  {&(_tg__ZTV8S3451C117S3451C97S3451C2__8S3451C16[6]),  6,9},
  {&(_tg__ZTV7S3451C4__8S3451C117S3451C97S3451C2__8S3451C16[8]),  8,11},
  {&(_tg__ZTV7S3451C3__8S3451C117S3451C97S3451C2__8S3451C16[4]),  4,6},
  {&(_tg__ZTV7S3451C7__8S3451C117S3451C97S3451C2__8S3451C16[8]),  8,14},
  {&(_tg__ZTV8S3451C10__7S3451C97S3451C2__8S3451C16[3]),  3,4},
  {&(_tg__ZTV7S3451C3__7S3451C97S3451C2__8S3451C16[4]),  4,6},
  {&(_tg__ZTV8S3451C11__7S3451C97S3451C2__8S3451C16[6]),  6,9},
  {&(_tg__ZTV7S3451C4__7S3451C97S3451C2__8S3451C16[8]),  8,11},
  {&(_tg__ZTV7S3451C7__7S3451C97S3451C2__8S3451C16[8]),  8,14},
  {&(_tg__ZTV7S3451C4__7S3451C2__8S3451C16[8]),  8,11},
  {&(_tg__ZTV7S3451C3__A1__7S3451C2__8S3451C16[4]),  4,6},
  {&(_tg__ZTV7S3451C7__7S3451C2__8S3451C16[8]),  8,14},
  {&(_tg__ZTV7S3451C9__7S3451C2__8S3451C16[7]),  7,12},
  {&(_tg__ZTV8S3451C10__7S3451C2__8S3451C16[3]),  3,4},
  {&(_tg__ZTV8S3451C117S3451C9__7S3451C2__8S3451C16[6]),  6,9},
  {&(_tg__ZTV8S3451C12__7S3451C2__8S3451C16[8]),  8,14},
  {&(_ZTV8S3451C16[61]),  61,107},
  {&(_ZTV8S3451C16[66]),  66,107},
  {&(_ZTV8S3451C16[76]),  76,107},
  {&(_ZTV8S3451C16[87]),  87,107},
  {&(_ZTV8S3451C16[29]),  29,107},
  {&(_ZTV8S3451C16[40]),  40,107},
  {&(_ZTV8S3451C16[101]),  101,107},
  {&(_tg__ZTV7S3451C4__8S3451C16[5]),  5,8},
  {&(_tg__ZTV7S3451C3__7S3451C4__8S3451C16[4]),  4,6},
  {&(_tg__ZTV7S3451C7__7S3451C4__8S3451C16[8]),  8,14},
};
extern VTBL_ENTRY _ZTI8S3451C16[];
extern  VTBL_ENTRY _ZTV8S3451C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3451C16[];
Class_Descriptor cd_S3451C16 = {  "S3451C16", // class name
  bases_S3451C16, 20,
  &(vtc_S3451C16[0]), // expected_vtbl_contents
  &(vtt_S3451C16[0]), // expected_vtt_contents
  ABISELECT(608,440), // object size
  NSPAIRA(_ZTI8S3451C16),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S3451C16),107, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3451C16),29, //virtual table table var
  18, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3451C17  : virtual S7856C24 , S3451C8 , S3451C7 {
  int s3451c17f0[10];
  ::S3451C11 s3451c17f1;
  virtual void  v40(); // _ZN8S3451C173v40Ev
  virtual void  v41(); // _ZN8S3451C173v41Ev
  virtual void  v42(); // _ZN8S3451C173v42Ev
  virtual void  v43(); // _ZN8S3451C173v43Ev
  virtual void  v44(); // _ZN8S3451C173v44Ev
  ~S3451C17(); // tgen
  S3451C17(); // tgen
};
//SIG(-1 S3451C17) C1{ VBC2{ m} BC3{ v6 Fp FD[7]} BC4{ BC5{ v7 v8} v9 v10 v11 v12 Fi[5] Fp FL[4]} v1 v2 v3 v4 v5 Fi[10] FC6{ BC7{ v14 v15} VBC8{ VBC2 VBC5 BC7 VBC4 v16} BC2 BC4 BC5 v13}}


void  S3451C17 ::v40(){vfunc_called(this, "_ZN8S3451C173v40Ev");}
void  S3451C17 ::v41(){vfunc_called(this, "_ZN8S3451C173v41Ev");}
void  S3451C17 ::v42(){vfunc_called(this, "_ZN8S3451C173v42Ev");}
void  S3451C17 ::v43(){vfunc_called(this, "_ZN8S3451C173v43Ev");}
void  S3451C17 ::v44(){vfunc_called(this, "_ZN8S3451C173v44Ev");}
S3451C17 ::~S3451C17(){ note_dtor("S3451C17", this);} // tgen
S3451C17 ::S3451C17(){ note_ctor("S3451C17", this);} // tgen

static void Test_S3451C17()
{
  extern Class_Descriptor cd_S3451C17;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(27,83)];
    init_test(&cd_S3451C17, buf);
    S3451C17 *dp, &lv = *(dp=new (buf) S3451C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(416,328), "sizeof(S3451C17)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3451C17)");
    check_base_class_offset(lv, (S7856C24*), 0, "S3451C17");
    check_base_class_offset(lv, (S3451C8*), 0, "S3451C17");
    check_base_class_offset(lv, (S3451C3*)(S3451C7*), ABISELECT(128,92), "S3451C17");
    check_base_class_offset(lv, (S3451C7*), ABISELECT(128,92), "S3451C17");
    check_field_offset(lv, s3451c17f0, ABISELECT(200,152), "S3451C17.s3451c17f0");
    check_field_offset(lv, s3451c17f1, ABISELECT(240,192), "S3451C17.s3451c17f1");
    test_class_info(&lv, &cd_S3451C17);
    dp->~S3451C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3451C17(Test_S3451C17, "S3451C17", ABISELECT(416,328));

#else // __cplusplus

extern void _ZN8S3451C17C1Ev();
extern void _ZN8S3451C17D1Ev();
Name_Map name_map_S3451C17[] = {
  NSPAIR(_ZN8S3451C17C1Ev),
  NSPAIR(_ZN8S3451C17D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S3451C8;
extern VTBL_ENTRY _ZTI7S3451C8[];
extern  VTBL_ENTRY _ZTV7S3451C8[];
extern Class_Descriptor cd_S3451C3;
extern VTBL_ENTRY _ZTI7S3451C3[];
extern  VTBL_ENTRY _ZTV7S3451C3[];
extern Class_Descriptor cd_S3451C7;
extern VTBL_ENTRY _ZTI7S3451C7[];
extern  VTBL_ENTRY _ZTV7S3451C7[];
static Base_Class bases_S3451C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3451C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3451C3,    ABISELECT(128,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S3451C7,    ABISELECT(128,92), //bcp->offset
    9, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S3451C17[];
extern void _ZN7S3451C83v18Ev();
extern void _ZN8S3451C173v40Ev();
extern void _ZN8S3451C173v41Ev();
extern void _ZN8S3451C173v42Ev();
extern void _ZN8S3451C173v43Ev();
extern void _ZN8S3451C173v44Ev();
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
static  VTBL_ENTRY vtc_S3451C17[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S3451C17[0]),
  (VTBL_ENTRY)&_ZN7S3451C83v18Ev,
  (VTBL_ENTRY)&_ZN8S3451C173v40Ev,
  (VTBL_ENTRY)&_ZN8S3451C173v41Ev,
  (VTBL_ENTRY)&_ZN8S3451C173v42Ev,
  (VTBL_ENTRY)&_ZN8S3451C173v43Ev,
  (VTBL_ENTRY)&_ZN8S3451C173v44Ev,
  ABISELECT(-128,-92),
  (VTBL_ENTRY)&(_ZTI8S3451C17[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
};
extern VTBL_ENTRY _ZTV8S3451C17[];
static  VTT_ENTRY vtt_S3451C17[] = {
  {&(_ZTV8S3451C17[3]),  3,17},
};
extern VTBL_ENTRY _ZTI8S3451C17[];
extern  VTBL_ENTRY _ZTV8S3451C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3451C17[];
Class_Descriptor cd_S3451C17 = {  "S3451C17", // class name
  bases_S3451C17, 4,
  &(vtc_S3451C17[0]), // expected_vtbl_contents
  &(vtt_S3451C17[0]), // expected_vtt_contents
  ABISELECT(416,328), // object size
  NSPAIRA(_ZTI8S3451C17),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S3451C17),17, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3451C17),1, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

union  S3451C19  {
  long double s3451c19f0[2];
  __tsi64 s3451c19f1;
  void  mf3451c19(); // _ZN8S3451C199mf3451c19Ev
};
//SIG(1 S3451C19) U1{ m FD[2] FL}

#endif // __cplusplus
#ifdef __cplusplus

struct  S3451C18  {
  ::S3451C19 s3451c18f0;
  void  mf3451c18(); // _ZN8S3451C189mf3451c18Ev
};
//SIG(-1 S3451C18) C1{ m FU2{ m FD[2] FL}}


void  S3451C18 ::mf3451c18(){}

static void Test_S3451C18()
{
  {
    init_simple_test("S3451C18");
    S3451C18 lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S3451C18)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3451C18)");
    check_field_offset(lv, s3451c18f0, 0, "S3451C18.s3451c18f0");
  }
}
static Arrange_To_Call_Me vS3451C18(Test_S3451C18, "S3451C18", ABISELECT(32,24));

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S3451C1  : S3451C2 , S3451C14 , virtual S3451C16 , virtual S3451C17 , S3451C18 {
  __tsi64 s3451c1f0[8];
  virtual  ~S3451C1(); // _ZN7S3451C1D2Ev
  virtual void  v1(); // _ZN7S3451C12v1Ev
  virtual void  v2(); // _ZN7S3451C12v2Ev
  virtual void  v3(); // _ZN7S3451C12v3Ev
  virtual void  v4(); // _ZN7S3451C12v4Ev
  virtual void  v5(); // _ZN7S3451C12v5Ev
  virtual void  v6(); // _ZN7S3451C12v6Ev
  virtual void  v7(); // _ZN7S3451C12v7Ev
  virtual void  v8(); // _ZN7S3451C12v8Ev
  S3451C1(); // tgen
};
//SIG(1 S3451C1) C1{ BC2{ BC3{ v9 v10} VBC4{ VBC5{ m} VBC3 BC6{ v11 v12} VBC7{ BC3 v13 v14 v15 v16 Fi[5] Fp FL[4]} v17} BC8{ v18 Fp FD[7]} BC9{ VBC10{ v19 FC5 Fi[4]} BC6 VBC3 BC11{ BC6 VBC4 BC5 BC7 BC3 v20} BC8 v21 v22 v23 Fi} VBC12{ v24 v25 v26 v27 v28 v29 FU13{ m Fi}} v30 v31} BC14{ VBC15{ BC4 VBC8 vd v32 Fp} VBC10 BC3 vd} VBC16{ VBC10 VBC3 VBC4 BC2 v33 v34 v35 v36 v37 v38 v39 FD FL[8]} VBC17{ VBC5 BC8 BC7 v40 v41 v42 v43 v44 Fi[10] FC11} BC18{ m FU19{ m FD[2] FL}} vd v1 v2 v3 v4 v5 v6 v7 v8 FL[8]}


 S3451C1 ::~S3451C1(){ note_dtor("S3451C1", this);}
void  S3451C1 ::v1(){vfunc_called(this, "_ZN7S3451C12v1Ev");}
void  S3451C1 ::v2(){vfunc_called(this, "_ZN7S3451C12v2Ev");}
void  S3451C1 ::v3(){vfunc_called(this, "_ZN7S3451C12v3Ev");}
void  S3451C1 ::v4(){vfunc_called(this, "_ZN7S3451C12v4Ev");}
void  S3451C1 ::v5(){vfunc_called(this, "_ZN7S3451C12v5Ev");}
void  S3451C1 ::v6(){vfunc_called(this, "_ZN7S3451C12v6Ev");}
void  S3451C1 ::v7(){vfunc_called(this, "_ZN7S3451C12v7Ev");}
void  S3451C1 ::v8(){vfunc_called(this, "_ZN7S3451C12v8Ev");}
S3451C1 ::S3451C1(){ note_ctor("S3451C1", this);} // tgen

static void Test_S3451C1()
{
  extern Class_Descriptor cd_S3451C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(104,307)];
    init_test(&cd_S3451C1, buf);
    S3451C1 *dp, &lv = *(dp=new (buf) S3451C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1648,1224), "sizeof(S3451C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3451C1)");
    /*is_ambiguous_... S3451C1::S3451C2 */ AMB_check_base_class_offset(lv, (S3451C3*)(S3451C2*), 0, "S3451C1");
    /*is_ambiguous_... S3451C1::S3451C4 */ AMB_check_base_class_offset(lv, (S7856C24*)(S3451C4*), 0, "S3451C1");
    check_base_class_offset(lv, (S7856C24*)(S3451C4*)(S3451C15*), 0, "S3451C1");
    check_base_class_offset(lv, (S7856C24*)(S3451C17*), 0, "S3451C1");
    /*is_ambiguous_... S3451C1::S3451C4 */ AMB_check_base_class_offset(lv, (S3451C3*)(S3451C4*), ABISELECT(488,360), "S3451C1");
    /*is_ambiguous_... S3451C1::S3451C2 */ AMB_check_base_class_offset(lv, (S3451C3*)(S3451C9*)(S3451C2*), ABISELECT(488,360), "S3451C1");
    /*is_ambiguous_... S3451C4::S3451C3 */ AMB_check_base_class_offset(lv, (S3451C3*)(S3451C4*)(S3451C15*), ABISELECT(488,360), "S3451C1");
    /*is_ambiguous_... S3451C16::S3451C3 */ AMB_check_base_class_offset(lv, (S3451C3*)(S3451C16*), ABISELECT(488,360), "S3451C1");
    /*is_ambiguous_... S3451C9::S3451C3 */ AMB_check_base_class_offset(lv, (S3451C3*)(S3451C9*)(S3451C2*)(S3451C16*), ABISELECT(488,360), "S3451C1");
    /*is_ambiguous_... S3451C1::S3451C4 */ AMB_check_base_class_offset(lv, (S3451C6*)(S3451C4*), ABISELECT(480,356), "S3451C1");
    /*is_ambiguous_... S3451C1::S3451C7 */ AMB_check_base_class_offset(lv, (S3451C3*)(S3451C7*), ABISELECT(496,364), "S3451C1");
    /*is_ambiguous_... S3451C1::S3451C4 */ AMB_check_base_class_offset(lv, (S3451C7*)(S3451C4*), ABISELECT(496,364), "S3451C1");
    check_base_class_offset(lv, (S3451C7*)(S3451C4*)(S3451C15*), ABISELECT(496,364), "S3451C1");
    /*is_ambiguous_... S3451C1::S3451C2 */ AMB_check_base_class_offset(lv, (S3451C4*)(S3451C2*), ABISELECT(480,356), "S3451C1");
    /*is_ambiguous_... S3451C1::S3451C2 */ AMB_check_base_class_offset(lv, (S3451C4*)(S3451C11*)(S3451C9*)(S3451C2*), ABISELECT(480,356), "S3451C1");
    check_base_class_offset(lv, (S3451C4*)(S3451C16*), ABISELECT(480,356), "S3451C1");
    check_base_class_offset(lv, (S3451C4*)(S3451C2*)(S3451C16*), ABISELECT(480,356), "S3451C1");
    check_base_class_offset(lv, (S3451C4*)(S3451C11*)(S3451C9*)(S3451C2*)(S3451C16*), ABISELECT(480,356), "S3451C1");
    /*is_ambiguous_... S3451C1::S3451C2 */ AMB_check_base_class_offset(lv, (S3451C8*)(S3451C2*), ABISELECT(16,4), "S3451C1");
    /*is_ambiguous_... S3451C1::S3451C2 */ AMB_check_base_class_offset(lv, (S3451C10*)(S3451C9*)(S3451C2*), ABISELECT(568,424), "S3451C1");
    check_base_class_offset(lv, (S3451C10*)(S3451C14*), ABISELECT(568,424), "S3451C1");
    check_base_class_offset(lv, (S3451C10*)(S3451C16*), ABISELECT(568,424), "S3451C1");
    check_base_class_offset(lv, (S3451C10*)(S3451C9*)(S3451C2*)(S3451C16*), ABISELECT(568,424), "S3451C1");
    /*is_ambiguous_... S3451C1::S3451C2 */ AMB_check_base_class_offset(lv, (S3451C6*)(S3451C9*)(S3451C2*), ABISELECT(144,96), "S3451C1");
    /*is_ambiguous_... S3451C1::S3451C2 */ AMB_check_base_class_offset(lv, (S3451C6*)(S3451C11*)(S3451C9*)(S3451C2*), ABISELECT(152,100), "S3451C1");
    /*is_ambiguous_... S3451C1::S3451C2 */ AMB_check_base_class_offset(lv, (S7856C24*)(S3451C11*)(S3451C9*)(S3451C2*), ABISELECT(152,100), "S3451C1");
    /*is_ambiguous_... S3451C1::S3451C2 */ AMB_check_base_class_offset(lv, (S3451C3*)(S3451C7*)(S3451C11*)(S3451C9*)(S3451C2*), ABISELECT(160,104), "S3451C1");
    /*is_ambiguous_... S3451C1::S3451C2 */ AMB_check_base_class_offset(lv, (S3451C7*)(S3451C11*)(S3451C9*)(S3451C2*), ABISELECT(160,104), "S3451C1");
    /*is_ambiguous_... S3451C1::S3451C2 */ AMB_check_base_class_offset(lv, (S3451C3*)(S3451C11*)(S3451C9*)(S3451C2*), ABISELECT(232,164), "S3451C1");
    /*is_ambiguous_... S3451C1::S3451C2 */ AMB_check_base_class_offset(lv, (S3451C11*)(S3451C9*)(S3451C2*), ABISELECT(152,100), "S3451C1");
    /*is_ambiguous_... S3451C1::S3451C2 */ AMB_check_base_class_offset(lv, (S3451C8*)(S3451C9*)(S3451C2*), ABISELECT(240,168), "S3451C1");
    /*is_ambiguous_... S3451C1::S3451C2 */ AMB_check_base_class_offset(lv, (S3451C9*)(S3451C2*), ABISELECT(144,96), "S3451C1");
    /*is_ambiguous_... S3451C1::S3451C2 */ AMB_check_base_class_offset(lv, (S3451C12*)(S3451C2*), ABISELECT(600,448), "S3451C1");
    check_base_class_offset(lv, (S3451C12*)(S3451C2*)(S3451C16*), ABISELECT(600,448), "S3451C1");
    /*is_ambiguous_... S3451C1::S3451C2 */ AMB_check_base_class_offset(lv, (S3451C2*), 0, "S3451C1");
    check_base_class_offset(lv, (S3451C6*)(S3451C4*)(S3451C15*), ABISELECT(616,456), "S3451C1");
    check_base_class_offset(lv, (S3451C4*)(S3451C15*), ABISELECT(616,456), "S3451C1");
    check_base_class_offset(lv, (S3451C8*)(S3451C15*), ABISELECT(640,464), "S3451C1");
    check_base_class_offset(lv, (S3451C15*)(S3451C14*), ABISELECT(616,456), "S3451C1");
    /*is_ambiguous_... S3451C14::S3451C3 */ AMB_check_base_class_offset(lv, (S3451C3*)(S3451C14*), ABISELECT(376,264), "S3451C1");
    check_base_class_offset(lv, (S3451C14*), ABISELECT(376,264), "S3451C1");
    /*is_ambiguous_... S3451C2::S3451C3 */ AMB_check_base_class_offset(lv, (S3451C3*)(S3451C2*)(S3451C16*), ABISELECT(768,556), "S3451C1");
    /*is_ambiguous_... S3451C2::S3451C8 */ AMB_check_base_class_offset(lv, (S3451C8*)(S3451C2*)(S3451C16*), ABISELECT(784,560), "S3451C1");
    /*is_ambiguous_... S3451C9::S3451C6 */ AMB_check_base_class_offset(lv, (S3451C6*)(S3451C9*)(S3451C2*)(S3451C16*), ABISELECT(912,652), "S3451C1");
    /*is_ambiguous_... S3451C11::S3451C6 */ AMB_check_base_class_offset(lv, (S3451C6*)(S3451C11*)(S3451C9*)(S3451C2*)(S3451C16*), ABISELECT(920,656), "S3451C1");
    /*is_ambiguous_... S3451C11::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S3451C11*)(S3451C9*)(S3451C2*)(S3451C16*), ABISELECT(920,656), "S3451C1");
    /*is_ambiguous_... S3451C11::S3451C7 */ AMB_check_base_class_offset(lv, (S3451C3*)(S3451C7*)(S3451C11*)(S3451C9*)(S3451C2*)(S3451C16*), ABISELECT(928,660), "S3451C1");
    /*is_ambiguous_... S3451C11::S3451C7 */ AMB_check_base_class_offset(lv, (S3451C7*)(S3451C11*)(S3451C9*)(S3451C2*)(S3451C16*), ABISELECT(928,660), "S3451C1");
    /*is_ambiguous_... S3451C11::S3451C3 */ AMB_check_base_class_offset(lv, (S3451C3*)(S3451C11*)(S3451C9*)(S3451C2*)(S3451C16*), ABISELECT(1000,720), "S3451C1");
    check_base_class_offset(lv, (S3451C11*)(S3451C9*)(S3451C2*)(S3451C16*), ABISELECT(920,656), "S3451C1");
    check_base_class_offset(lv, (S3451C8*)(S3451C9*)(S3451C2*)(S3451C16*), ABISELECT(1008,724), "S3451C1");
    check_base_class_offset(lv, (S3451C9*)(S3451C2*)(S3451C16*), ABISELECT(912,652), "S3451C1");
    check_base_class_offset(lv, (S3451C2*)(S3451C16*), ABISELECT(768,556), "S3451C1");
    check_base_class_offset(lv, (S3451C16*), ABISELECT(768,556), "S3451C1");
    check_base_class_offset(lv, (S3451C8*)(S3451C17*), ABISELECT(1232,896), "S3451C1");
    check_base_class_offset(lv, (S3451C3*)(S3451C7*)(S3451C17*), ABISELECT(1360,988), "S3451C1");
    check_base_class_offset(lv, (S3451C7*)(S3451C17*), ABISELECT(1360,988), "S3451C1");
    check_base_class_offset(lv, (S3451C17*), ABISELECT(1232,896), "S3451C1");
    check_base_class_offset(lv, (S3451C18*), ABISELECT(384,268), "S3451C1");
    check_field_offset(lv, s3451c1f0, ABISELECT(416,292), "S3451C1.s3451c1f0");
    test_class_info(&lv, &cd_S3451C1);
    dp->~S3451C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3451C1(Test_S3451C1, "S3451C1", ABISELECT(1648,1224));

#else // __cplusplus

extern void _ZN7S3451C1C1Ev();
extern void _ZN7S3451C1D2Ev();
Name_Map name_map_S3451C1[] = {
  NSPAIR(_ZN7S3451C1C1Ev),
  NSPAIR(_ZN7S3451C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3451C3;
extern VTBL_ENTRY _ZTI7S3451C3[];
extern  VTBL_ENTRY _ZTV7S3451C3[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S3451C3;
extern VTBL_ENTRY _ZTI7S3451C3[];
extern  VTBL_ENTRY _ZTV7S3451C3[];
extern Class_Descriptor cd_S3451C6;
extern VTBL_ENTRY _ZTI7S3451C6[];
extern  VTBL_ENTRY _ZTV7S3451C6[];
extern Class_Descriptor cd_S3451C3;
extern VTBL_ENTRY _ZTI7S3451C3[];
extern  VTBL_ENTRY _ZTV7S3451C3[];
extern Class_Descriptor cd_S3451C7;
extern VTBL_ENTRY _ZTI7S3451C7[];
extern  VTBL_ENTRY _ZTV7S3451C7[];
extern Class_Descriptor cd_S3451C4;
extern VTBL_ENTRY _ZTI7S3451C4[];
extern  VTBL_ENTRY _ZTV7S3451C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3451C4[];
extern Class_Descriptor cd_S3451C8;
extern VTBL_ENTRY _ZTI7S3451C8[];
extern  VTBL_ENTRY _ZTV7S3451C8[];
extern Class_Descriptor cd_S3451C10;
extern VTBL_ENTRY _ZTI8S3451C10[];
extern  VTBL_ENTRY _ZTV8S3451C10[];
extern Class_Descriptor cd_S3451C6;
extern VTBL_ENTRY _ZTI7S3451C6[];
extern  VTBL_ENTRY _ZTV7S3451C6[];
extern Class_Descriptor cd_S3451C6;
extern VTBL_ENTRY _ZTI7S3451C6[];
extern  VTBL_ENTRY _ZTV7S3451C6[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S3451C3;
extern VTBL_ENTRY _ZTI7S3451C3[];
extern  VTBL_ENTRY _ZTV7S3451C3[];
extern Class_Descriptor cd_S3451C7;
extern VTBL_ENTRY _ZTI7S3451C7[];
extern  VTBL_ENTRY _ZTV7S3451C7[];
extern Class_Descriptor cd_S3451C3;
extern VTBL_ENTRY _ZTI7S3451C3[];
extern  VTBL_ENTRY _ZTV7S3451C3[];
extern Class_Descriptor cd_S3451C11;
extern VTBL_ENTRY _ZTI8S3451C11[];
extern  VTBL_ENTRY _ZTV8S3451C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3451C11[];
extern Class_Descriptor cd_S3451C8;
extern VTBL_ENTRY _ZTI7S3451C8[];
extern  VTBL_ENTRY _ZTV7S3451C8[];
extern Class_Descriptor cd_S3451C9;
extern VTBL_ENTRY _ZTI7S3451C9[];
extern  VTBL_ENTRY _ZTV7S3451C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3451C9[];
extern Class_Descriptor cd_S3451C12;
extern VTBL_ENTRY _ZTI8S3451C12[];
extern  VTBL_ENTRY _ZTV8S3451C12[];
extern Class_Descriptor cd_S3451C2;
extern VTBL_ENTRY _ZTI7S3451C2[];
extern  VTBL_ENTRY _ZTV7S3451C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3451C2[];
extern Class_Descriptor cd_S3451C6;
extern VTBL_ENTRY _ZTI7S3451C6[];
extern  VTBL_ENTRY _ZTV7S3451C6[];
extern Class_Descriptor cd_S3451C4;
extern VTBL_ENTRY _ZTI7S3451C4[];
extern  VTBL_ENTRY _ZTV7S3451C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3451C4[];
extern Class_Descriptor cd_S3451C8;
extern VTBL_ENTRY _ZTI7S3451C8[];
extern  VTBL_ENTRY _ZTV7S3451C8[];
extern Class_Descriptor cd_S3451C15;
extern VTBL_ENTRY _ZTI8S3451C15[];
extern  VTBL_ENTRY _ZTV8S3451C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3451C15[];
extern Class_Descriptor cd_S3451C3;
extern VTBL_ENTRY _ZTI7S3451C3[];
extern  VTBL_ENTRY _ZTV7S3451C3[];
extern Class_Descriptor cd_S3451C14;
extern VTBL_ENTRY _ZTI8S3451C14[];
extern  VTBL_ENTRY _ZTV8S3451C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3451C14[];
extern Class_Descriptor cd_S3451C3;
extern VTBL_ENTRY _ZTI7S3451C3[];
extern  VTBL_ENTRY _ZTV7S3451C3[];
extern Class_Descriptor cd_S3451C8;
extern VTBL_ENTRY _ZTI7S3451C8[];
extern  VTBL_ENTRY _ZTV7S3451C8[];
extern Class_Descriptor cd_S3451C6;
extern VTBL_ENTRY _ZTI7S3451C6[];
extern  VTBL_ENTRY _ZTV7S3451C6[];
extern Class_Descriptor cd_S3451C6;
extern VTBL_ENTRY _ZTI7S3451C6[];
extern  VTBL_ENTRY _ZTV7S3451C6[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S3451C3;
extern VTBL_ENTRY _ZTI7S3451C3[];
extern  VTBL_ENTRY _ZTV7S3451C3[];
extern Class_Descriptor cd_S3451C7;
extern VTBL_ENTRY _ZTI7S3451C7[];
extern  VTBL_ENTRY _ZTV7S3451C7[];
extern Class_Descriptor cd_S3451C3;
extern VTBL_ENTRY _ZTI7S3451C3[];
extern  VTBL_ENTRY _ZTV7S3451C3[];
extern Class_Descriptor cd_S3451C11;
extern VTBL_ENTRY _ZTI8S3451C11[];
extern  VTBL_ENTRY _ZTV8S3451C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3451C11[];
extern Class_Descriptor cd_S3451C8;
extern VTBL_ENTRY _ZTI7S3451C8[];
extern  VTBL_ENTRY _ZTV7S3451C8[];
extern Class_Descriptor cd_S3451C9;
extern VTBL_ENTRY _ZTI7S3451C9[];
extern  VTBL_ENTRY _ZTV7S3451C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3451C9[];
extern Class_Descriptor cd_S3451C2;
extern VTBL_ENTRY _ZTI7S3451C2[];
extern  VTBL_ENTRY _ZTV7S3451C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3451C2[];
extern Class_Descriptor cd_S3451C16;
extern VTBL_ENTRY _ZTI8S3451C16[];
extern  VTBL_ENTRY _ZTV8S3451C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3451C16[];
extern Class_Descriptor cd_S3451C8;
extern VTBL_ENTRY _ZTI7S3451C8[];
extern  VTBL_ENTRY _ZTV7S3451C8[];
extern Class_Descriptor cd_S3451C3;
extern VTBL_ENTRY _ZTI7S3451C3[];
extern  VTBL_ENTRY _ZTV7S3451C3[];
extern Class_Descriptor cd_S3451C7;
extern VTBL_ENTRY _ZTI7S3451C7[];
extern  VTBL_ENTRY _ZTV7S3451C7[];
extern Class_Descriptor cd_S3451C17;
extern VTBL_ENTRY _ZTI8S3451C17[];
extern  VTBL_ENTRY _ZTV8S3451C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3451C17[];
extern Class_Descriptor cd_S3451C18;
extern VTBL_ENTRY _ZTI8S3451C18[];
static Base_Class bases_S3451C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3451C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3451C3,    ABISELECT(488,360), //bcp->offset
    88, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3451C6,    ABISELECT(480,356), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S3451C3,    ABISELECT(496,364), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3451C7,    ABISELECT(496,364), //bcp->offset
    94, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3451C4,    ABISELECT(480,356), //bcp->offset
    77, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S3451C8,    ABISELECT(16,4), //bcp->offset
    26, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S3451C10,    ABISELECT(568,424), //bcp->offset
    108, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S3451C6,    ABISELECT(144,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S3451C6,    ABISELECT(152,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(152,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S3451C3,    ABISELECT(160,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S3451C7,    ABISELECT(160,104), //bcp->offset
    50, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S3451C3,    ABISELECT(232,164), //bcp->offset
    58, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S3451C11,    ABISELECT(152,100), //bcp->offset
    41, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S3451C8,    ABISELECT(240,168), //bcp->offset
    62, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S3451C9,    ABISELECT(144,96), //bcp->offset
    29, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S3451C12,    ABISELECT(600,448), //bcp->offset
    112, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S3451C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3451C6,    ABISELECT(616,456), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S3451C4,    ABISELECT(616,456), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S3451C8,    ABISELECT(640,464), //bcp->offset
    143, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S3451C15,    ABISELECT(616,456), //bcp->offset
    126, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S3451C3,    ABISELECT(376,264), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S3451C14,    ABISELECT(376,264), //bcp->offset
    65, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    40, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3451C3,    ABISELECT(768,556), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S3451C8,    ABISELECT(784,560), //bcp->offset
    188, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S3451C6,    ABISELECT(912,652), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S3451C6,    ABISELECT(920,656), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(920,656), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S3451C3,    ABISELECT(928,660), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S3451C7,    ABISELECT(928,660), //bcp->offset
    212, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S3451C3,    ABISELECT(1000,720), //bcp->offset
    220, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S3451C11,    ABISELECT(920,656), //bcp->offset
    203, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S3451C8,    ABISELECT(1008,724), //bcp->offset
    224, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S3451C9,    ABISELECT(912,652), //bcp->offset
    191, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S3451C2,    ABISELECT(768,556), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S3451C16,    ABISELECT(768,556), //bcp->offset
    147, //bcp->virtual_function_table_offset
    30, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3451C8,    ABISELECT(1232,896), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S3451C3,    ABISELECT(1360,988), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S3451C7,    ABISELECT(1360,988), //bcp->offset
    248, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S3451C17,    ABISELECT(1232,896), //bcp->offset
    227, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3451C18,    ABISELECT(384,268), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3451C1[];
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C23v30Ev();
extern void _ZN7S3451C23v31Ev();
extern void _ZN7S3451C1D1Ev();
extern void _ZN7S3451C1D0Ev();
extern void _ZN7S3451C12v1Ev();
extern void _ZN7S3451C12v2Ev();
extern void _ZN7S3451C12v3Ev();
extern void _ZN7S3451C12v4Ev();
extern void _ZN7S3451C12v5Ev();
extern void _ZN7S3451C12v6Ev();
extern void _ZN7S3451C12v7Ev();
extern void _ZN7S3451C12v8Ev();
extern void _ZN7S3451C83v18Ev();
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C93v21Ev();
extern void _ZN7S3451C93v22Ev();
extern void _ZN7S3451C93v23Ev();
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN8S3451C113v20Ev();
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C83v18Ev();
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void ABISELECT(_ZThn376_N7S3451C1D1Ev,_ZThn264_N7S3451C1D1Ev)();
extern void ABISELECT(_ZThn376_N7S3451C1D0Ev,_ZThn264_N7S3451C1D0Ev)();
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C43v17Ev();
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
extern void _ZN8S3451C103v19Ev();
extern void _ZN8S3451C123v24Ev();
extern void _ZN8S3451C123v25Ev();
extern void _ZN8S3451C123v26Ev();
extern void _ZN8S3451C123v27Ev();
extern void _ZN8S3451C123v28Ev();
extern void _ZN8S3451C123v29Ev();
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C43v17Ev();
extern void ABISELECT(_ZTv0_n80_N7S3451C1D1Ev,_ZTv0_n40_N7S3451C1D1Ev)();
extern void ABISELECT(_ZThn616_N7S3451C1D1Ev,_ZThn456_N7S3451C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S3451C1D0Ev,_ZTv0_n40_N7S3451C1D0Ev)();
extern void ABISELECT(_ZThn616_N7S3451C1D0Ev,_ZThn456_N7S3451C1D0Ev)() __attribute__((weak));
extern void _ZN8S3451C153v32Ev();
extern void _ZN7S3451C83v18Ev();
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C23v30Ev();
extern void _ZN7S3451C23v31Ev();
extern void _ZN8S3451C163v33Ev();
extern void _ZN8S3451C163v34Ev();
extern void _ZN8S3451C163v35Ev();
extern void _ZN8S3451C163v36Ev();
extern void _ZN8S3451C163v37Ev();
extern void _ZN8S3451C163v38Ev();
extern void _ZN8S3451C163v39Ev();
extern void _ZN7S3451C83v18Ev();
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C93v21Ev();
extern void _ZN7S3451C93v22Ev();
extern void _ZN7S3451C93v23Ev();
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN8S3451C113v20Ev();
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C83v18Ev();
extern void _ZN7S3451C83v18Ev();
extern void _ZN8S3451C173v40Ev();
extern void _ZN8S3451C173v41Ev();
extern void _ZN8S3451C173v42Ev();
extern void _ZN8S3451C173v43Ev();
extern void _ZN8S3451C173v44Ev();
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
static  VTBL_ENTRY vtc_S3451C1[] = {
  ABISELECT(1232,896),
  ABISELECT(768,556),
  ABISELECT(640,464),
  ABISELECT(616,456),
  ABISELECT(600,448),
  ABISELECT(568,424),
  ABISELECT(496,364),
  ABISELECT(488,360),
  0,
  ABISELECT(480,356),
  0,
  (VTBL_ENTRY)&(_ZTI7S3451C1[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C23v30Ev,
  (VTBL_ENTRY)&_ZN7S3451C23v31Ev,
  (VTBL_ENTRY)&_ZN7S3451C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3451C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3451C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3451C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3451C12v3Ev,
  (VTBL_ENTRY)&_ZN7S3451C12v4Ev,
  (VTBL_ENTRY)&_ZN7S3451C12v5Ev,
  (VTBL_ENTRY)&_ZN7S3451C12v6Ev,
  (VTBL_ENTRY)&_ZN7S3451C12v7Ev,
  (VTBL_ENTRY)&_ZN7S3451C12v8Ev,
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI7S3451C1[0]),
  (VTBL_ENTRY)&_ZN7S3451C83v18Ev,
  ABISELECT(352,268),
  ABISELECT(-144,-96),
  ABISELECT(336,260),
  ABISELECT(344,264),
  ABISELECT(424,328),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI7S3451C1[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v21Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v22Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v23Ev,
  ABISELECT(344,264),
  ABISELECT(336,260),
  ABISELECT(-152,-100),
  ABISELECT(328,256),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI7S3451C1[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN8S3451C113v20Ev,
  ABISELECT(-160,-104),
  (VTBL_ENTRY)&(_ZTI7S3451C1[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
  ABISELECT(-232,-164),
  (VTBL_ENTRY)&(_ZTI7S3451C1[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  ABISELECT(-240,-168),
  (VTBL_ENTRY)&(_ZTI7S3451C1[0]),
  (VTBL_ENTRY)&_ZN7S3451C83v18Ev,
  ABISELECT(192,160),
  ABISELECT(264,200),
  ABISELECT(120,100),
  ABISELECT(112,96),
  ABISELECT(-376,-264),
  ABISELECT(240,192),
  ABISELECT(-376,-264),
  (VTBL_ENTRY)&(_ZTI7S3451C1[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn376_N7S3451C1D1Ev,_ZThn264_N7S3451C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn376_N7S3451C1D0Ev,_ZThn264_N7S3451C1D0Ev),
  0,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(-480,-356),
  ABISELECT(-480,-356),
  (VTBL_ENTRY)&(_ZTI7S3451C1[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C43v17Ev,
  0,
  0,
  ABISELECT(-488,-360),
  (VTBL_ENTRY)&(_ZTI7S3451C1[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-496,-364),
  (VTBL_ENTRY)&(_ZTI7S3451C1[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
  0,
  ABISELECT(-568,-424),
  (VTBL_ENTRY)&(_ZTI7S3451C1[0]),
  (VTBL_ENTRY)&_ZN8S3451C103v19Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-600,-448),
  (VTBL_ENTRY)&(_ZTI7S3451C1[0]),
  (VTBL_ENTRY)&_ZN8S3451C123v24Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v25Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v26Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v27Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v28Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v29Ev,
  0,
  ABISELECT(-616,-456),
  0,
  0,
  0,
  ABISELECT(24,8),
  ABISELECT(-120,-92),
  ABISELECT(-128,-96),
  ABISELECT(-616,-456),
  ABISELECT(-616,-456),
  (VTBL_ENTRY)&(_ZTI7S3451C1[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C43v17Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S3451C1D1Ev,_ZTv0_n40_N7S3451C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S3451C1D0Ev,_ZTv0_n40_N7S3451C1D0Ev),
  (VTBL_ENTRY)&_ZN8S3451C153v32Ev,
  0,
  ABISELECT(-640,-464),
  (VTBL_ENTRY)&(_ZTI7S3451C1[0]),
  (VTBL_ENTRY)&_ZN7S3451C83v18Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(160,104),
  ABISELECT(160,104),
  ABISELECT(160,104),
  ABISELECT(160,104),
  ABISELECT(152,100),
  ABISELECT(144,96),
  ABISELECT(144,96),
  ABISELECT(144,96),
  ABISELECT(144,96),
  ABISELECT(144,96),
  ABISELECT(16,4),
  0,
  0,
  0,
  0,
  ABISELECT(-168,-108),
  ABISELECT(-200,-132),
  ABISELECT(-272,-192),
  ABISELECT(-280,-196),
  ABISELECT(-768,-556),
  ABISELECT(-288,-200),
  ABISELECT(-768,-556),
  (VTBL_ENTRY)&(_ZTI7S3451C1[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C23v30Ev,
  (VTBL_ENTRY)&_ZN7S3451C23v31Ev,
  (VTBL_ENTRY)&_ZN8S3451C163v33Ev,
  (VTBL_ENTRY)&_ZN8S3451C163v34Ev,
  (VTBL_ENTRY)&_ZN8S3451C163v35Ev,
  (VTBL_ENTRY)&_ZN8S3451C163v36Ev,
  (VTBL_ENTRY)&_ZN8S3451C163v37Ev,
  (VTBL_ENTRY)&_ZN8S3451C163v38Ev,
  (VTBL_ENTRY)&_ZN8S3451C163v39Ev,
  ABISELECT(-784,-560),
  (VTBL_ENTRY)&(_ZTI7S3451C1[0]),
  (VTBL_ENTRY)&_ZN7S3451C83v18Ev,
  ABISELECT(-416,-288),
  ABISELECT(-912,-652),
  ABISELECT(-432,-296),
  ABISELECT(-424,-292),
  ABISELECT(-344,-228),
  ABISELECT(-912,-652),
  (VTBL_ENTRY)&(_ZTI7S3451C1[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v21Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v22Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v23Ev,
  ABISELECT(-424,-292),
  ABISELECT(-432,-296),
  ABISELECT(-920,-656),
  ABISELECT(-440,-300),
  ABISELECT(-920,-656),
  (VTBL_ENTRY)&(_ZTI7S3451C1[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN8S3451C113v20Ev,
  ABISELECT(-928,-660),
  (VTBL_ENTRY)&(_ZTI7S3451C1[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
  ABISELECT(-1000,-720),
  (VTBL_ENTRY)&(_ZTI7S3451C1[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  ABISELECT(-1008,-724),
  (VTBL_ENTRY)&(_ZTI7S3451C1[0]),
  (VTBL_ENTRY)&_ZN7S3451C83v18Ev,
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-1232,-896),
  ABISELECT(-1232,-896),
  (VTBL_ENTRY)&(_ZTI7S3451C1[0]),
  (VTBL_ENTRY)&_ZN7S3451C83v18Ev,
  (VTBL_ENTRY)&_ZN8S3451C173v40Ev,
  (VTBL_ENTRY)&_ZN8S3451C173v41Ev,
  (VTBL_ENTRY)&_ZN8S3451C173v42Ev,
  (VTBL_ENTRY)&_ZN8S3451C173v43Ev,
  (VTBL_ENTRY)&_ZN8S3451C173v44Ev,
  ABISELECT(-1360,-988),
  (VTBL_ENTRY)&(_ZTI7S3451C1[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
};
extern VTBL_ENTRY _ZTV7S3451C1[];
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C23v30Ev();
extern void _ZN7S3451C23v31Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C2__7S3451C1[] = {
  ABISELECT(600,448),
  ABISELECT(568,424),
  ABISELECT(496,364),
  ABISELECT(488,360),
  0,
  ABISELECT(480,356),
  0,
  (VTBL_ENTRY)&(_ZTI7S3451C2[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C23v30Ev,
  (VTBL_ENTRY)&_ZN7S3451C23v31Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C93v21Ev();
extern void _ZN7S3451C93v22Ev();
extern void _ZN7S3451C93v23Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C97S3451C2__7S3451C1[] = {
  ABISELECT(352,268),
  ABISELECT(-144,-96),
  ABISELECT(336,260),
  ABISELECT(344,264),
  ABISELECT(424,328),
  0,
  (VTBL_ENTRY)&(_ZTI7S3451C9[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v21Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v22Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v23Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN8S3451C113v20Ev();
static  VTBL_ENTRY _tg__ZTV8S3451C117S3451C97S3451C2__7S3451C1[] = {
  ABISELECT(344,264),
  ABISELECT(336,260),
  ABISELECT(-152,-100),
  ABISELECT(328,256),
  0,
  (VTBL_ENTRY)&(_ZTI8S3451C11[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN8S3451C113v20Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C4__8S3451C117S3451C97S3451C2__7S3451C1[] = {
  0,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(-480,-356),
  ABISELECT(-328,-256),
  (VTBL_ENTRY)&(_ZTI8S3451C11[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C43v17Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C3__8S3451C117S3451C97S3451C2__7S3451C1[] = {
  0,
  0,
  ABISELECT(-336,-260),
  (VTBL_ENTRY)&(_ZTI8S3451C11[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C7__8S3451C117S3451C97S3451C2__7S3451C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-344,-264),
  (VTBL_ENTRY)&(_ZTI8S3451C11[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
};
extern void _ZN8S3451C103v19Ev();
static  VTBL_ENTRY _tg__ZTV8S3451C10__7S3451C97S3451C2__7S3451C1[] = {
  0,
  ABISELECT(-424,-328),
  (VTBL_ENTRY)&(_ZTI7S3451C9[0]),
  (VTBL_ENTRY)&_ZN8S3451C103v19Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C3__7S3451C97S3451C2__7S3451C1[] = {
  0,
  0,
  ABISELECT(-344,-264),
  (VTBL_ENTRY)&(_ZTI7S3451C9[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN8S3451C113v20Ev();
static  VTBL_ENTRY _tg__ZTV8S3451C11__7S3451C97S3451C2__7S3451C1[] = {
  ABISELECT(344,264),
  ABISELECT(336,260),
  ABISELECT(-152,-100),
  ABISELECT(328,256),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S3451C9[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN8S3451C113v20Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C4__7S3451C97S3451C2__7S3451C1[] = {
  0,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(-480,-356),
  ABISELECT(-336,-260),
  (VTBL_ENTRY)&(_ZTI7S3451C9[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C43v17Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C7__7S3451C97S3451C2__7S3451C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-352,-268),
  (VTBL_ENTRY)&(_ZTI7S3451C9[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C4__7S3451C2__7S3451C1[] = {
  0,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(-480,-356),
  ABISELECT(-480,-356),
  (VTBL_ENTRY)&(_ZTI7S3451C2[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C43v17Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C3__A1__7S3451C2__7S3451C1[] = {
  0,
  0,
  ABISELECT(-488,-360),
  (VTBL_ENTRY)&(_ZTI7S3451C2[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C7__7S3451C2__7S3451C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-496,-364),
  (VTBL_ENTRY)&(_ZTI7S3451C2[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C93v21Ev();
extern void _ZN7S3451C93v22Ev();
extern void _ZN7S3451C93v23Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C9__7S3451C2__7S3451C1[] = {
  ABISELECT(352,268),
  ABISELECT(-144,-96),
  ABISELECT(336,260),
  ABISELECT(344,264),
  ABISELECT(424,328),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI7S3451C2[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v21Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v22Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v23Ev,
};
extern void _ZN8S3451C103v19Ev();
static  VTBL_ENTRY _tg__ZTV8S3451C10__7S3451C2__7S3451C1[] = {
  0,
  ABISELECT(-568,-424),
  (VTBL_ENTRY)&(_ZTI7S3451C2[0]),
  (VTBL_ENTRY)&_ZN8S3451C103v19Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN8S3451C113v20Ev();
static  VTBL_ENTRY _tg__ZTV8S3451C117S3451C9__7S3451C2__7S3451C1[] = {
  ABISELECT(344,264),
  ABISELECT(336,260),
  ABISELECT(-152,-100),
  ABISELECT(328,256),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI7S3451C2[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN8S3451C113v20Ev,
};
extern void _ZN8S3451C123v24Ev();
extern void _ZN8S3451C123v25Ev();
extern void _ZN8S3451C123v26Ev();
extern void _ZN8S3451C123v27Ev();
extern void _ZN8S3451C123v28Ev();
extern void _ZN8S3451C123v29Ev();
static  VTBL_ENTRY _tg__ZTV8S3451C12__7S3451C2__7S3451C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-600,-448),
  (VTBL_ENTRY)&(_ZTI7S3451C2[0]),
  (VTBL_ENTRY)&_ZN8S3451C123v24Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v25Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v26Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v27Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v28Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v29Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN8S3451C14D1Ev();
extern void _ZN8S3451C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3451C14__7S3451C1[] = {
  ABISELECT(192,160),
  ABISELECT(264,200),
  ABISELECT(120,100),
  ABISELECT(112,96),
  ABISELECT(-376,-264),
  ABISELECT(240,192),
  0,
  (VTBL_ENTRY)&(_ZTI8S3451C14[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN8S3451C14D1Ev,
  (VTBL_ENTRY)&_ZN8S3451C14D0Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C43v17Ev();
extern void ABISELECT(_ZTv0_n80_N8S3451C14D1Ev,_ZTv0_n40_N8S3451C14D1Ev)();
extern void ABISELECT(_ZThn240_N8S3451C14D1Ev,_ZThn192_N8S3451C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S3451C14D0Ev,_ZTv0_n40_N8S3451C14D0Ev)();
extern void ABISELECT(_ZThn240_N8S3451C14D0Ev,_ZThn192_N8S3451C14D0Ev)() __attribute__((weak));
extern void _ZN8S3451C153v32Ev();
static  VTBL_ENTRY _tg__ZTV8S3451C15__8S3451C14__7S3451C1[] = {
  0,
  ABISELECT(-240,-192),
  0,
  0,
  0,
  ABISELECT(24,8),
  ABISELECT(-120,-92),
  ABISELECT(-128,-96),
  ABISELECT(-616,-456),
  ABISELECT(-240,-192),
  (VTBL_ENTRY)&(_ZTI8S3451C14[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C43v17Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S3451C14D1Ev,_ZTv0_n40_N8S3451C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S3451C14D0Ev,_ZTv0_n40_N8S3451C14D0Ev),
  (VTBL_ENTRY)&_ZN8S3451C153v32Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C3__8S3451C14__7S3451C1[] = {
  0,
  0,
  ABISELECT(-112,-96),
  (VTBL_ENTRY)&(_ZTI8S3451C14[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C7__8S3451C14__7S3451C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-120,-100),
  (VTBL_ENTRY)&(_ZTI8S3451C14[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
};
extern void _ZN7S3451C83v18Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C8__8S3451C14__7S3451C1[] = {
  0,
  ABISELECT(-264,-200),
  (VTBL_ENTRY)&(_ZTI8S3451C14[0]),
  (VTBL_ENTRY)&_ZN7S3451C83v18Ev,
};
extern void _ZN8S3451C103v19Ev();
static  VTBL_ENTRY _tg__ZTV8S3451C10__8S3451C14__7S3451C1[] = {
  0,
  ABISELECT(-192,-160),
  (VTBL_ENTRY)&(_ZTI8S3451C14[0]),
  (VTBL_ENTRY)&_ZN8S3451C103v19Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C4__7S3451C1[] = {
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(-480,-356),
  0,
  (VTBL_ENTRY)&(_ZTI7S3451C4[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C43v17Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C3__7S3451C4__7S3451C1[] = {
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S3451C4[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C7__7S3451C4__7S3451C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S3451C4[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C43v17Ev();
extern void _ZN8S3451C15D1Ev();
extern void _ZN8S3451C15D0Ev();
extern void _ZN8S3451C153v32Ev();
static  VTBL_ENTRY _tg__ZTV8S3451C15__7S3451C1[] = {
  ABISELECT(24,8),
  ABISELECT(-120,-92),
  ABISELECT(-128,-96),
  ABISELECT(-616,-456),
  0,
  (VTBL_ENTRY)&(_ZTI8S3451C15[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C43v17Ev,
  (VTBL_ENTRY)&_ZN8S3451C15D1Ev,
  (VTBL_ENTRY)&_ZN8S3451C15D0Ev,
  (VTBL_ENTRY)&_ZN8S3451C153v32Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C48S3451C15__A1__7S3451C1[] = {
  ABISELECT(-120,-92),
  ABISELECT(-128,-96),
  ABISELECT(-616,-456),
  0,
  (VTBL_ENTRY)&(_ZTI7S3451C4[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C43v17Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C3__7S3451C48S3451C15__A1__7S3451C1[] = {
  0,
  0,
  ABISELECT(128,96),
  (VTBL_ENTRY)&(_ZTI7S3451C4[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C7__7S3451C48S3451C15__A1__7S3451C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(120,92),
  (VTBL_ENTRY)&(_ZTI7S3451C4[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C3__8S3451C15__7S3451C1[] = {
  0,
  0,
  ABISELECT(128,96),
  (VTBL_ENTRY)&(_ZTI8S3451C15[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C7__8S3451C15__7S3451C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(120,92),
  (VTBL_ENTRY)&(_ZTI8S3451C15[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
};
extern void _ZN7S3451C83v18Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C8__8S3451C15__7S3451C1[] = {
  0,
  ABISELECT(-24,-8),
  (VTBL_ENTRY)&(_ZTI8S3451C15[0]),
  (VTBL_ENTRY)&_ZN7S3451C83v18Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C23v30Ev();
extern void _ZN7S3451C23v31Ev();
extern void _ZN8S3451C163v33Ev();
extern void _ZN8S3451C163v34Ev();
extern void _ZN8S3451C163v35Ev();
extern void _ZN8S3451C163v36Ev();
extern void _ZN8S3451C163v37Ev();
extern void _ZN8S3451C163v38Ev();
extern void _ZN8S3451C163v39Ev();
static  VTBL_ENTRY _tg__ZTV8S3451C16__7S3451C1[] = {
  ABISELECT(-168,-108),
  ABISELECT(-200,-132),
  ABISELECT(-272,-192),
  ABISELECT(-280,-196),
  ABISELECT(-768,-556),
  ABISELECT(-288,-200),
  0,
  (VTBL_ENTRY)&(_ZTI8S3451C16[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C23v30Ev,
  (VTBL_ENTRY)&_ZN7S3451C23v31Ev,
  (VTBL_ENTRY)&_ZN8S3451C163v33Ev,
  (VTBL_ENTRY)&_ZN8S3451C163v34Ev,
  (VTBL_ENTRY)&_ZN8S3451C163v35Ev,
  (VTBL_ENTRY)&_ZN8S3451C163v36Ev,
  (VTBL_ENTRY)&_ZN8S3451C163v37Ev,
  (VTBL_ENTRY)&_ZN8S3451C163v38Ev,
  (VTBL_ENTRY)&_ZN8S3451C163v39Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C23v30Ev();
extern void _ZN7S3451C23v31Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C28S3451C16__A1__7S3451C1[] = {
  ABISELECT(-168,-108),
  ABISELECT(-200,-132),
  ABISELECT(-272,-192),
  ABISELECT(-280,-196),
  ABISELECT(-768,-556),
  ABISELECT(-288,-200),
  0,
  (VTBL_ENTRY)&(_ZTI7S3451C2[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C23v30Ev,
  (VTBL_ENTRY)&_ZN7S3451C23v31Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C93v21Ev();
extern void _ZN7S3451C93v22Ev();
extern void _ZN7S3451C93v23Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C97S3451C28S3451C16__A1__7S3451C1[] = {
  ABISELECT(-416,-288),
  ABISELECT(-912,-652),
  ABISELECT(-432,-296),
  ABISELECT(-424,-292),
  ABISELECT(-344,-228),
  0,
  (VTBL_ENTRY)&(_ZTI7S3451C9[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v21Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v22Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v23Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN8S3451C113v20Ev();
static  VTBL_ENTRY _tg__ZTV8S3451C117S3451C97S3451C28S3451C16__A1__7S3451C1[] = {
  ABISELECT(-424,-292),
  ABISELECT(-432,-296),
  ABISELECT(-920,-656),
  ABISELECT(-440,-300),
  0,
  (VTBL_ENTRY)&(_ZTI8S3451C11[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN8S3451C113v20Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C4__8S3451C117S3451C97S3451C28S3451C16__A1__7S3451C1[] = {
  0,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(-480,-356),
  ABISELECT(440,300),
  (VTBL_ENTRY)&(_ZTI8S3451C11[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C43v17Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C3__8S3451C117S3451C97S3451C28S3451C16__A1__7S3451C1[] = {
  0,
  0,
  ABISELECT(432,296),
  (VTBL_ENTRY)&(_ZTI8S3451C11[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C7__8S3451C117S3451C97S3451C28S3451C16__A1__7S3451C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(424,292),
  (VTBL_ENTRY)&(_ZTI8S3451C11[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
};
extern void _ZN8S3451C103v19Ev();
static  VTBL_ENTRY _tg__ZTV8S3451C10__7S3451C97S3451C28S3451C16__A1__7S3451C1[] = {
  0,
  ABISELECT(344,228),
  (VTBL_ENTRY)&(_ZTI7S3451C9[0]),
  (VTBL_ENTRY)&_ZN8S3451C103v19Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C3__7S3451C97S3451C28S3451C16__A1__7S3451C1[] = {
  0,
  0,
  ABISELECT(424,292),
  (VTBL_ENTRY)&(_ZTI7S3451C9[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN8S3451C113v20Ev();
static  VTBL_ENTRY _tg__ZTV8S3451C11__7S3451C97S3451C28S3451C16__A1__7S3451C1[] = {
  ABISELECT(-424,-292),
  ABISELECT(-432,-296),
  ABISELECT(-920,-656),
  ABISELECT(-440,-300),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S3451C9[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN8S3451C113v20Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C4__7S3451C97S3451C28S3451C16__A1__7S3451C1[] = {
  0,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(-480,-356),
  ABISELECT(432,296),
  (VTBL_ENTRY)&(_ZTI7S3451C9[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C43v17Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C7__7S3451C97S3451C28S3451C16__A1__7S3451C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(416,288),
  (VTBL_ENTRY)&(_ZTI7S3451C9[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C4__7S3451C28S3451C16__A1__7S3451C1[] = {
  0,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(-480,-356),
  ABISELECT(288,200),
  (VTBL_ENTRY)&(_ZTI7S3451C2[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C43v17Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C3__A1__7S3451C28S3451C16__A1__7S3451C1[] = {
  0,
  0,
  ABISELECT(280,196),
  (VTBL_ENTRY)&(_ZTI7S3451C2[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C7__7S3451C28S3451C16__A1__7S3451C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(272,192),
  (VTBL_ENTRY)&(_ZTI7S3451C2[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C93v21Ev();
extern void _ZN7S3451C93v22Ev();
extern void _ZN7S3451C93v23Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C9__7S3451C28S3451C16__A1__7S3451C1[] = {
  ABISELECT(-416,-288),
  ABISELECT(-912,-652),
  ABISELECT(-432,-296),
  ABISELECT(-424,-292),
  ABISELECT(-344,-228),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI7S3451C2[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v21Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v22Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v23Ev,
};
extern void _ZN8S3451C103v19Ev();
static  VTBL_ENTRY _tg__ZTV8S3451C10__7S3451C28S3451C16__A1__7S3451C1[] = {
  0,
  ABISELECT(200,132),
  (VTBL_ENTRY)&(_ZTI7S3451C2[0]),
  (VTBL_ENTRY)&_ZN8S3451C103v19Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN8S3451C113v20Ev();
static  VTBL_ENTRY _tg__ZTV8S3451C117S3451C9__7S3451C28S3451C16__A1__7S3451C1[] = {
  ABISELECT(-424,-292),
  ABISELECT(-432,-296),
  ABISELECT(-920,-656),
  ABISELECT(-440,-300),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI7S3451C2[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN8S3451C113v20Ev,
};
extern void _ZN8S3451C123v24Ev();
extern void _ZN8S3451C123v25Ev();
extern void _ZN8S3451C123v26Ev();
extern void _ZN8S3451C123v27Ev();
extern void _ZN8S3451C123v28Ev();
extern void _ZN8S3451C123v29Ev();
static  VTBL_ENTRY _tg__ZTV8S3451C12__7S3451C28S3451C16__A1__7S3451C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(168,108),
  (VTBL_ENTRY)&(_ZTI7S3451C2[0]),
  (VTBL_ENTRY)&_ZN8S3451C123v24Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v25Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v26Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v27Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v28Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v29Ev,
};
extern void _ZN8S3451C103v19Ev();
static  VTBL_ENTRY _tg__ZTV8S3451C10__8S3451C16__7S3451C1[] = {
  0,
  ABISELECT(200,132),
  (VTBL_ENTRY)&(_ZTI8S3451C16[0]),
  (VTBL_ENTRY)&_ZN8S3451C103v19Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C3__8S3451C16__7S3451C1[] = {
  0,
  0,
  ABISELECT(280,196),
  (VTBL_ENTRY)&(_ZTI8S3451C16[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C4__8S3451C16__7S3451C1[] = {
  0,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(-480,-356),
  ABISELECT(288,200),
  (VTBL_ENTRY)&(_ZTI8S3451C16[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C43v17Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C7__8S3451C16__7S3451C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(272,192),
  (VTBL_ENTRY)&(_ZTI8S3451C16[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C93v21Ev();
extern void _ZN7S3451C93v22Ev();
extern void _ZN7S3451C93v23Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C97S3451C2__8S3451C16__7S3451C1[] = {
  ABISELECT(-416,-288),
  ABISELECT(-912,-652),
  ABISELECT(-432,-296),
  ABISELECT(-424,-292),
  ABISELECT(-344,-228),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI8S3451C16[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v21Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v22Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v23Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN8S3451C113v20Ev();
static  VTBL_ENTRY _tg__ZTV8S3451C117S3451C97S3451C2__8S3451C16__7S3451C1[] = {
  ABISELECT(-424,-292),
  ABISELECT(-432,-296),
  ABISELECT(-920,-656),
  ABISELECT(-440,-300),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI8S3451C16[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN8S3451C113v20Ev,
};
extern void _ZN8S3451C123v24Ev();
extern void _ZN8S3451C123v25Ev();
extern void _ZN8S3451C123v26Ev();
extern void _ZN8S3451C123v27Ev();
extern void _ZN8S3451C123v28Ev();
extern void _ZN8S3451C123v29Ev();
static  VTBL_ENTRY _tg__ZTV8S3451C12__8S3451C16__7S3451C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(168,108),
  (VTBL_ENTRY)&(_ZTI8S3451C16[0]),
  (VTBL_ENTRY)&_ZN8S3451C123v24Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v25Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v26Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v27Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v28Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v29Ev,
};
extern void _ZN7S3451C83v18Ev();
extern void _ZN8S3451C173v40Ev();
extern void _ZN8S3451C173v41Ev();
extern void _ZN8S3451C173v42Ev();
extern void _ZN8S3451C173v43Ev();
extern void _ZN8S3451C173v44Ev();
static  VTBL_ENTRY _tg__ZTV8S3451C17__7S3451C1[] = {
  ABISELECT(-1232,-896),
  0,
  (VTBL_ENTRY)&(_ZTI8S3451C17[0]),
  (VTBL_ENTRY)&_ZN7S3451C83v18Ev,
  (VTBL_ENTRY)&_ZN8S3451C173v40Ev,
  (VTBL_ENTRY)&_ZN8S3451C173v41Ev,
  (VTBL_ENTRY)&_ZN8S3451C173v42Ev,
  (VTBL_ENTRY)&_ZN8S3451C173v43Ev,
  (VTBL_ENTRY)&_ZN8S3451C173v44Ev,
};
static  VTT_ENTRY vtt_S3451C1[] = {
  {&(_ZTV7S3451C1[12]),  12,256},
  {&(_tg__ZTV7S3451C2__7S3451C1[8]),  8,12},
  {&(_tg__ZTV7S3451C97S3451C2__7S3451C1[7]),  7,12},
  {&(_tg__ZTV8S3451C117S3451C97S3451C2__7S3451C1[6]),  6,9},
  {&(_tg__ZTV7S3451C4__8S3451C117S3451C97S3451C2__7S3451C1[8]),  8,11},
  {&(_tg__ZTV7S3451C3__8S3451C117S3451C97S3451C2__7S3451C1[4]),  4,6},
  {&(_tg__ZTV7S3451C7__8S3451C117S3451C97S3451C2__7S3451C1[8]),  8,14},
  {&(_tg__ZTV8S3451C10__7S3451C97S3451C2__7S3451C1[3]),  3,4},
  {&(_tg__ZTV7S3451C3__7S3451C97S3451C2__7S3451C1[4]),  4,6},
  {&(_tg__ZTV8S3451C11__7S3451C97S3451C2__7S3451C1[6]),  6,9},
  {&(_tg__ZTV7S3451C4__7S3451C97S3451C2__7S3451C1[8]),  8,11},
  {&(_tg__ZTV7S3451C7__7S3451C97S3451C2__7S3451C1[8]),  8,14},
  {&(_tg__ZTV7S3451C4__7S3451C2__7S3451C1[8]),  8,11},
  {&(_tg__ZTV7S3451C3__A1__7S3451C2__7S3451C1[4]),  4,6},
  {&(_tg__ZTV7S3451C7__7S3451C2__7S3451C1[8]),  8,14},
  {&(_tg__ZTV7S3451C9__7S3451C2__7S3451C1[7]),  7,12},
  {&(_tg__ZTV8S3451C10__7S3451C2__7S3451C1[3]),  3,4},
  {&(_tg__ZTV8S3451C117S3451C9__7S3451C2__7S3451C1[6]),  6,9},
  {&(_tg__ZTV8S3451C12__7S3451C2__7S3451C1[8]),  8,14},
  {&(_tg__ZTV8S3451C14__7S3451C1[8]),  8,12},
  {&(_tg__ZTV8S3451C15__8S3451C14__7S3451C1[11]),  11,17},
  {&(_tg__ZTV7S3451C3__8S3451C14__7S3451C1[4]),  4,6},
  {&(_tg__ZTV7S3451C7__8S3451C14__7S3451C1[8]),  8,14},
  {&(_tg__ZTV7S3451C8__8S3451C14__7S3451C1[3]),  3,4},
  {&(_tg__ZTV8S3451C10__8S3451C14__7S3451C1[3]),  3,4},
  {&(_ZTV7S3451C1[85]),  85,256},
  {&(_ZTV7S3451C1[92]),  92,256},
  {&(_ZTV7S3451C1[102]),  102,256},
  {&(_ZTV7S3451C1[36]),  36,256},
  {&(_ZTV7S3451C1[111]),  111,256},
  {&(_ZTV7S3451C1[47]),  47,256},
  {&(_ZTV7S3451C1[120]),  120,256},
  {&(_ZTV7S3451C1[73]),  73,256},
  {&(_ZTV7S3451C1[137]),  137,256},
  {&(_ZTV7S3451C1[146]),  146,256},
  {&(_ZTV7S3451C1[177]),  177,256},
  {&(_ZTV7S3451C1[190]),  190,256},
  {&(_ZTV7S3451C1[198]),  198,256},
  {&(_ZTV7S3451C1[209]),  209,256},
  {&(_ZTV7S3451C1[214]),  214,256},
  {&(_ZTV7S3451C1[222]),  222,256},
  {&(_ZTV7S3451C1[226]),  226,256},
  {&(_ZTV7S3451C1[242]),  242,256},
  {&(_ZTV7S3451C1[250]),  250,256},
  {&(_tg__ZTV7S3451C4__7S3451C1[5]),  5,8},
  {&(_tg__ZTV7S3451C3__7S3451C4__7S3451C1[4]),  4,6},
  {&(_tg__ZTV7S3451C7__7S3451C4__7S3451C1[8]),  8,14},
  {&(_tg__ZTV8S3451C15__7S3451C1[6]),  6,12},
  {&(_tg__ZTV7S3451C48S3451C15__A1__7S3451C1[5]),  5,8},
  {&(_tg__ZTV7S3451C3__7S3451C48S3451C15__A1__7S3451C1[4]),  4,6},
  {&(_tg__ZTV7S3451C7__7S3451C48S3451C15__A1__7S3451C1[8]),  8,14},
  {&(_tg__ZTV7S3451C3__8S3451C15__7S3451C1[4]),  4,6},
  {&(_tg__ZTV7S3451C7__8S3451C15__7S3451C1[8]),  8,14},
  {&(_tg__ZTV7S3451C8__8S3451C15__7S3451C1[3]),  3,4},
  {&(_tg__ZTV8S3451C16__7S3451C1[8]),  8,19},
  {&(_tg__ZTV7S3451C28S3451C16__A1__7S3451C1[8]),  8,12},
  {&(_tg__ZTV7S3451C97S3451C28S3451C16__A1__7S3451C1[7]),  7,12},
  {&(_tg__ZTV8S3451C117S3451C97S3451C28S3451C16__A1__7S3451C1[6]),  6,9},
  {&(_tg__ZTV7S3451C4__8S3451C117S3451C97S3451C28S3451C16__A1__7S3451C1[8]),  8,11},
  {&(_tg__ZTV7S3451C3__8S3451C117S3451C97S3451C28S3451C16__A1__7S3451C1[4]),  4,6},
  {&(_tg__ZTV7S3451C7__8S3451C117S3451C97S3451C28S3451C16__A1__7S3451C1[8]),  8,14},
  {&(_tg__ZTV8S3451C10__7S3451C97S3451C28S3451C16__A1__7S3451C1[3]),  3,4},
  {&(_tg__ZTV7S3451C3__7S3451C97S3451C28S3451C16__A1__7S3451C1[4]),  4,6},
  {&(_tg__ZTV8S3451C11__7S3451C97S3451C28S3451C16__A1__7S3451C1[6]),  6,9},
  {&(_tg__ZTV7S3451C4__7S3451C97S3451C28S3451C16__A1__7S3451C1[8]),  8,11},
  {&(_tg__ZTV7S3451C7__7S3451C97S3451C28S3451C16__A1__7S3451C1[8]),  8,14},
  {&(_tg__ZTV7S3451C4__7S3451C28S3451C16__A1__7S3451C1[8]),  8,11},
  {&(_tg__ZTV7S3451C3__A1__7S3451C28S3451C16__A1__7S3451C1[4]),  4,6},
  {&(_tg__ZTV7S3451C7__7S3451C28S3451C16__A1__7S3451C1[8]),  8,14},
  {&(_tg__ZTV7S3451C9__7S3451C28S3451C16__A1__7S3451C1[7]),  7,12},
  {&(_tg__ZTV8S3451C10__7S3451C28S3451C16__A1__7S3451C1[3]),  3,4},
  {&(_tg__ZTV8S3451C117S3451C9__7S3451C28S3451C16__A1__7S3451C1[6]),  6,9},
  {&(_tg__ZTV8S3451C12__7S3451C28S3451C16__A1__7S3451C1[8]),  8,14},
  {&(_tg__ZTV8S3451C10__8S3451C16__7S3451C1[3]),  3,4},
  {&(_tg__ZTV7S3451C3__8S3451C16__7S3451C1[4]),  4,6},
  {&(_tg__ZTV7S3451C4__8S3451C16__7S3451C1[8]),  8,11},
  {&(_tg__ZTV7S3451C7__8S3451C16__7S3451C1[8]),  8,14},
  {&(_tg__ZTV7S3451C97S3451C2__8S3451C16__7S3451C1[7]),  7,12},
  {&(_tg__ZTV8S3451C117S3451C97S3451C2__8S3451C16__7S3451C1[6]),  6,9},
  {&(_tg__ZTV8S3451C12__8S3451C16__7S3451C1[8]),  8,14},
  {&(_tg__ZTV8S3451C17__7S3451C1[3]),  3,9},
};
extern VTBL_ENTRY _ZTI7S3451C1[];
extern  VTBL_ENTRY _ZTV7S3451C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3451C1[];
static VTBL_ENTRY alt_thunk_names33[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S3451C14D0Ev,_ZTv0_n40_N8S3451C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S3451C14D0Ev,_ZThn192_N8S3451C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S3451C14D1Ev,_ZTv0_n40_N8S3451C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S3451C14D1Ev,_ZThn192_N8S3451C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S3451C1D0Ev,_ZTv0_n40_N7S3451C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn616_N7S3451C1D0Ev,_ZThn456_N7S3451C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S3451C1D1Ev,_ZTv0_n40_N7S3451C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn616_N7S3451C1D1Ev,_ZThn456_N7S3451C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3451C1 = {  "S3451C1", // class name
  bases_S3451C1, 44,
  &(vtc_S3451C1[0]), // expected_vtbl_contents
  &(vtt_S3451C1[0]), // expected_vtt_contents
  ABISELECT(1648,1224), // object size
  NSPAIRA(_ZTI7S3451C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S3451C1),256, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3451C1),81, //virtual table table var
  40, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names33,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2345C4_nt  {
  ::S17556C5_nt s2345c4f0;
  int s2345c4f1[2];
  char s2345c4f2;
  virtual  ~S2345C4_nt(); // _ZN10S2345C4_ntD1Ev
  virtual void  v5(); // _ZN10S2345C4_nt2v5Ev
  virtual void  v6(); // _ZN10S2345C4_nt2v6Ev
  virtual void  v7(); // _ZN10S2345C4_nt2v7Ev
  S2345C4_nt(); // tgen
};
//SIG(-1 S2345C4_nt) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S2345C4_nt ::~S2345C4_nt(){ note_dtor("S2345C4_nt", this);}
void  S2345C4_nt ::v5(){vfunc_called(this, "_ZN10S2345C4_nt2v5Ev");}
void  S2345C4_nt ::v6(){vfunc_called(this, "_ZN10S2345C4_nt2v6Ev");}
void  S2345C4_nt ::v7(){vfunc_called(this, "_ZN10S2345C4_nt2v7Ev");}
S2345C4_nt ::S2345C4_nt(){ note_ctor("S2345C4_nt", this);} // tgen

//skip512 S2345C4_nt

#else // __cplusplus

extern void _ZN10S2345C4_ntC1Ev();
extern void _ZN10S2345C4_ntD1Ev();
Name_Map name_map_S2345C4_nt[] = {
  NSPAIR(_ZN10S2345C4_ntC1Ev),
  NSPAIR(_ZN10S2345C4_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S2345C4_nt[];
extern void _ZN10S2345C4_ntD1Ev();
extern void _ZN10S2345C4_ntD0Ev();
extern void _ZN10S2345C4_nt2v5Ev();
extern void _ZN10S2345C4_nt2v6Ev();
extern void _ZN10S2345C4_nt2v7Ev();
static  VTBL_ENTRY vtc_S2345C4_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S2345C4_nt[0]),
  (VTBL_ENTRY)&_ZN10S2345C4_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S2345C4_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S2345C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S2345C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S2345C4_nt2v7Ev,
};
extern VTBL_ENTRY _ZTI10S2345C4_nt[];
VTBL_ENTRY *P__ZTI10S2345C4_nt = _ZTI10S2345C4_nt; 
extern  VTBL_ENTRY _ZTV10S2345C4_nt[];
Class_Descriptor cd_S2345C4_nt = {  "S2345C4_nt", // class name
  0,0,//no base classes
  &(vtc_S2345C4_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI10S2345C4_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S2345C4_nt),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2345C7_nt  {
  virtual  ~S2345C7_nt(); // _ZN10S2345C7_ntD1Ev
  virtual void  v8(); // _ZN10S2345C7_nt2v8Ev
  virtual void  v9(); // _ZN10S2345C7_nt2v9Ev
  virtual void  v10(); // _ZN10S2345C7_nt3v10Ev
  S2345C7_nt(); // tgen
};
//SIG(-1 S2345C7_nt) C1{ vd v1 v2 v3}


 S2345C7_nt ::~S2345C7_nt(){ note_dtor("S2345C7_nt", this);}
void  S2345C7_nt ::v8(){vfunc_called(this, "_ZN10S2345C7_nt2v8Ev");}
void  S2345C7_nt ::v9(){vfunc_called(this, "_ZN10S2345C7_nt2v9Ev");}
void  S2345C7_nt ::v10(){vfunc_called(this, "_ZN10S2345C7_nt3v10Ev");}
S2345C7_nt ::S2345C7_nt(){ note_ctor("S2345C7_nt", this);} // tgen

//skip512 S2345C7_nt

#else // __cplusplus

extern void _ZN10S2345C7_ntC1Ev();
extern void _ZN10S2345C7_ntD1Ev();
Name_Map name_map_S2345C7_nt[] = {
  NSPAIR(_ZN10S2345C7_ntC1Ev),
  NSPAIR(_ZN10S2345C7_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S2345C7_nt[];
extern void _ZN10S2345C7_ntD1Ev();
extern void _ZN10S2345C7_ntD0Ev();
extern void _ZN10S2345C7_nt2v8Ev();
extern void _ZN10S2345C7_nt2v9Ev();
extern void _ZN10S2345C7_nt3v10Ev();
static  VTBL_ENTRY vtc_S2345C7_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S2345C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S2345C7_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S2345C7_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S2345C7_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S2345C7_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S2345C7_nt3v10Ev,
};
extern VTBL_ENTRY _ZTI10S2345C7_nt[];
VTBL_ENTRY *P__ZTI10S2345C7_nt = _ZTI10S2345C7_nt; 
extern  VTBL_ENTRY _ZTV10S2345C7_nt[];
Class_Descriptor cd_S2345C7_nt = {  "S2345C7_nt", // class name
  0,0,//no base classes
  &(vtc_S2345C7_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S2345C7_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S2345C7_nt),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2345C3_nt  : S2345C4_nt , S2345C7_nt {
  void *s2345c3f0;
  char s2345c3f1;
  int s2345c3f2;
  virtual  ~S2345C3_nt(); // _ZN10S2345C3_ntD1Ev
  virtual void  v11(); // _ZN10S2345C3_nt3v11Ev
  virtual void  v12(); // _ZN10S2345C3_nt3v12Ev
  virtual void  v13(); // _ZN10S2345C3_nt3v13Ev
  virtual void  v14(); // _ZN10S2345C3_nt3v14Ev
  virtual void  v15(); // _ZN10S2345C3_nt3v15Ev
  virtual void  v16(); // _ZN10S2345C3_nt3v16Ev
  virtual void  v17(); // _ZN10S2345C3_nt3v17Ev
  virtual void  v18(); // _ZN10S2345C3_nt3v18Ev
  virtual void  v19(); // _ZN10S2345C3_nt3v19Ev
  virtual void  v20(); // _ZN10S2345C3_nt3v20Ev
  S2345C3_nt(); // tgen
};
//SIG(-1 S2345C3_nt) C1{ BC2{ vd v11 v12 v13 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} BC5{ vd v14 v15 v16} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 Fp Fc Fi}


 S2345C3_nt ::~S2345C3_nt(){ note_dtor("S2345C3_nt", this);}
void  S2345C3_nt ::v11(){vfunc_called(this, "_ZN10S2345C3_nt3v11Ev");}
void  S2345C3_nt ::v12(){vfunc_called(this, "_ZN10S2345C3_nt3v12Ev");}
void  S2345C3_nt ::v13(){vfunc_called(this, "_ZN10S2345C3_nt3v13Ev");}
void  S2345C3_nt ::v14(){vfunc_called(this, "_ZN10S2345C3_nt3v14Ev");}
void  S2345C3_nt ::v15(){vfunc_called(this, "_ZN10S2345C3_nt3v15Ev");}
void  S2345C3_nt ::v16(){vfunc_called(this, "_ZN10S2345C3_nt3v16Ev");}
void  S2345C3_nt ::v17(){vfunc_called(this, "_ZN10S2345C3_nt3v17Ev");}
void  S2345C3_nt ::v18(){vfunc_called(this, "_ZN10S2345C3_nt3v18Ev");}
void  S2345C3_nt ::v19(){vfunc_called(this, "_ZN10S2345C3_nt3v19Ev");}
void  S2345C3_nt ::v20(){vfunc_called(this, "_ZN10S2345C3_nt3v20Ev");}
S2345C3_nt ::S2345C3_nt(){ note_ctor("S2345C3_nt", this);} // tgen

//skip512 S2345C3_nt

#else // __cplusplus

extern void _ZN10S2345C3_ntC1Ev();
extern void _ZN10S2345C3_ntD1Ev();
Name_Map name_map_S2345C3_nt[] = {
  NSPAIR(_ZN10S2345C3_ntC1Ev),
  NSPAIR(_ZN10S2345C3_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2345C4_nt;
extern VTBL_ENTRY _ZTI10S2345C4_nt[];
extern  VTBL_ENTRY _ZTV10S2345C4_nt[];
extern Class_Descriptor cd_S2345C7_nt;
extern VTBL_ENTRY _ZTI10S2345C7_nt[];
extern  VTBL_ENTRY _ZTV10S2345C7_nt[];
static Base_Class bases_S2345C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2345C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S2345C7_nt,    ABISELECT(40,28), //bcp->offset
    17, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S2345C3_nt[];
extern void _ZN10S2345C3_ntD1Ev();
extern void _ZN10S2345C3_ntD0Ev();
extern void _ZN10S2345C4_nt2v5Ev();
extern void _ZN10S2345C4_nt2v6Ev();
extern void _ZN10S2345C4_nt2v7Ev();
extern void _ZN10S2345C3_nt3v11Ev();
extern void _ZN10S2345C3_nt3v12Ev();
extern void _ZN10S2345C3_nt3v13Ev();
extern void _ZN10S2345C3_nt3v14Ev();
extern void _ZN10S2345C3_nt3v15Ev();
extern void _ZN10S2345C3_nt3v16Ev();
extern void _ZN10S2345C3_nt3v17Ev();
extern void _ZN10S2345C3_nt3v18Ev();
extern void _ZN10S2345C3_nt3v19Ev();
extern void _ZN10S2345C3_nt3v20Ev();
extern void ABISELECT(_ZThn40_N10S2345C3_ntD1Ev,_ZThn28_N10S2345C3_ntD1Ev)();
extern void ABISELECT(_ZThn40_N10S2345C3_ntD0Ev,_ZThn28_N10S2345C3_ntD0Ev)();
extern void _ZN10S2345C7_nt2v8Ev();
extern void _ZN10S2345C7_nt2v9Ev();
extern void _ZN10S2345C7_nt3v10Ev();
static  VTBL_ENTRY vtc_S2345C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S2345C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S2345C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S2345C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S2345C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S2345C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S2345C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S2345C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S2345C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S2345C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S2345C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S2345C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S2345C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S2345C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S2345C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S2345C3_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S2345C3_nt3v20Ev,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI10S2345C3_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N10S2345C3_ntD1Ev,_ZThn28_N10S2345C3_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N10S2345C3_ntD0Ev,_ZThn28_N10S2345C3_ntD0Ev),
  (VTBL_ENTRY)&_ZN10S2345C7_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S2345C7_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S2345C7_nt3v10Ev,
};
extern VTBL_ENTRY _ZTI10S2345C3_nt[];
VTBL_ENTRY *P__ZTI10S2345C3_nt = _ZTI10S2345C3_nt; 
extern  VTBL_ENTRY _ZTV10S2345C3_nt[];
Class_Descriptor cd_S2345C3_nt = {  "S2345C3_nt", // class name
  bases_S2345C3_nt, 2,
  &(vtc_S2345C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,44), // object size
  NSPAIRA(_ZTI10S2345C3_nt),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV10S2345C3_nt),24, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2345C10  {
  virtual  ~S2345C10(); // _ZN8S2345C10D1Ev
  virtual void  v21(); // _ZN8S2345C103v21Ev
  virtual void  v22(); // _ZN8S2345C103v22Ev
  virtual void  v23(); // _ZN8S2345C103v23Ev
  S2345C10(); // tgen
};
//SIG(-1 S2345C10) C1{ vd v1 v2 v3}


 S2345C10 ::~S2345C10(){ note_dtor("S2345C10", this);}
void  S2345C10 ::v21(){vfunc_called(this, "_ZN8S2345C103v21Ev");}
void  S2345C10 ::v22(){vfunc_called(this, "_ZN8S2345C103v22Ev");}
void  S2345C10 ::v23(){vfunc_called(this, "_ZN8S2345C103v23Ev");}
S2345C10 ::S2345C10(){ note_ctor("S2345C10", this);} // tgen

static void Test_S2345C10()
{
  extern Class_Descriptor cd_S2345C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S2345C10, buf);
    S2345C10 *dp, &lv = *(dp=new (buf) S2345C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S2345C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2345C10)");
    test_class_info(&lv, &cd_S2345C10);
    dp->~S2345C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2345C10(Test_S2345C10, "S2345C10", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S2345C10C1Ev();
extern void _ZN8S2345C10D1Ev();
Name_Map name_map_S2345C10[] = {
  NSPAIR(_ZN8S2345C10C1Ev),
  NSPAIR(_ZN8S2345C10D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S2345C10[];
extern void _ZN8S2345C10D1Ev();
extern void _ZN8S2345C10D0Ev();
extern void _ZN8S2345C103v21Ev();
extern void _ZN8S2345C103v22Ev();
extern void _ZN8S2345C103v23Ev();
static  VTBL_ENTRY vtc_S2345C10[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S2345C10[0]),
  (VTBL_ENTRY)&_ZN8S2345C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2345C10D0Ev,
  (VTBL_ENTRY)&_ZN8S2345C103v21Ev,
  (VTBL_ENTRY)&_ZN8S2345C103v22Ev,
  (VTBL_ENTRY)&_ZN8S2345C103v23Ev,
};
extern VTBL_ENTRY _ZTI8S2345C10[];
extern  VTBL_ENTRY _ZTV8S2345C10[];
Class_Descriptor cd_S2345C10 = {  "S2345C10", // class name
  0,0,//no base classes
  &(vtc_S2345C10[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S2345C10),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S2345C10),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2345C9_nt  : S2345C10 {
  ::S17556C15_nt s2345c9f0;
  ::S17556C3_nt s2345c9f1;
  char s2345c9f2;
  virtual  ~S2345C9_nt(); // _ZN10S2345C9_ntD1Ev
  virtual void  v24(); // _ZN10S2345C9_nt3v24Ev
  virtual void  v25(); // _ZN10S2345C9_nt3v25Ev
  virtual void  v26(); // _ZN10S2345C9_nt3v26Ev
  S2345C9_nt(); // tgen
};
//SIG(-1 S2345C9_nt) C1{ BC2{ vd v4 v5 v6} vd v1 v2 v3 FC3{ m Fp Fi[2] FC4{ m}} FC5{ m FC6{ FL[4]}} Fc}


 S2345C9_nt ::~S2345C9_nt(){ note_dtor("S2345C9_nt", this);}
void  S2345C9_nt ::v24(){vfunc_called(this, "_ZN10S2345C9_nt3v24Ev");}
void  S2345C9_nt ::v25(){vfunc_called(this, "_ZN10S2345C9_nt3v25Ev");}
void  S2345C9_nt ::v26(){vfunc_called(this, "_ZN10S2345C9_nt3v26Ev");}
S2345C9_nt ::S2345C9_nt(){ note_ctor("S2345C9_nt", this);} // tgen

//skip512 S2345C9_nt

#else // __cplusplus

extern void _ZN10S2345C9_ntC1Ev();
extern void _ZN10S2345C9_ntD1Ev();
Name_Map name_map_S2345C9_nt[] = {
  NSPAIR(_ZN10S2345C9_ntC1Ev),
  NSPAIR(_ZN10S2345C9_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2345C10;
extern VTBL_ENTRY _ZTI8S2345C10[];
extern  VTBL_ENTRY _ZTV8S2345C10[];
static Base_Class bases_S2345C9_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2345C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S2345C9_nt[];
extern void _ZN10S2345C9_ntD1Ev();
extern void _ZN10S2345C9_ntD0Ev();
extern void _ZN8S2345C103v21Ev();
extern void _ZN8S2345C103v22Ev();
extern void _ZN8S2345C103v23Ev();
extern void _ZN10S2345C9_nt3v24Ev();
extern void _ZN10S2345C9_nt3v25Ev();
extern void _ZN10S2345C9_nt3v26Ev();
static  VTBL_ENTRY vtc_S2345C9_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S2345C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S2345C9_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S2345C9_ntD0Ev,
  (VTBL_ENTRY)&_ZN8S2345C103v21Ev,
  (VTBL_ENTRY)&_ZN8S2345C103v22Ev,
  (VTBL_ENTRY)&_ZN8S2345C103v23Ev,
  (VTBL_ENTRY)&_ZN10S2345C9_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S2345C9_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S2345C9_nt3v26Ev,
};
extern VTBL_ENTRY _ZTI10S2345C9_nt[];
VTBL_ENTRY *P__ZTI10S2345C9_nt = _ZTI10S2345C9_nt; 
extern  VTBL_ENTRY _ZTV10S2345C9_nt[];
Class_Descriptor cd_S2345C9_nt = {  "S2345C9_nt", // class name
  bases_S2345C9_nt, 1,
  &(vtc_S2345C9_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,56), // object size
  NSPAIRA(_ZTI10S2345C9_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S2345C9_nt),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2345C8_nt  : S2345C9_nt {
  virtual  ~S2345C8_nt(); // _ZN10S2345C8_ntD1Ev
  virtual void  v27(); // _ZN10S2345C8_nt3v27Ev
  virtual void  v28(); // _ZN10S2345C8_nt3v28Ev
  virtual void  v29(); // _ZN10S2345C8_nt3v29Ev
  virtual void  v30(); // _ZN10S2345C8_nt3v30Ev
  S2345C8_nt(); // tgen
};
//SIG(-1 S2345C8_nt) C1{ BC2{ BC3{ vd v5 v6 v7} vd v8 v9 v10 FC4{ m Fp Fi[2] FC5{ m}} FC6{ m FC7{ FL[4]}} Fc} vd v1 v2 v3 v4}


 S2345C8_nt ::~S2345C8_nt(){ note_dtor("S2345C8_nt", this);}
void  S2345C8_nt ::v27(){vfunc_called(this, "_ZN10S2345C8_nt3v27Ev");}
void  S2345C8_nt ::v28(){vfunc_called(this, "_ZN10S2345C8_nt3v28Ev");}
void  S2345C8_nt ::v29(){vfunc_called(this, "_ZN10S2345C8_nt3v29Ev");}
void  S2345C8_nt ::v30(){vfunc_called(this, "_ZN10S2345C8_nt3v30Ev");}
S2345C8_nt ::S2345C8_nt(){ note_ctor("S2345C8_nt", this);} // tgen

//skip512 S2345C8_nt

#else // __cplusplus

extern void _ZN10S2345C8_ntC1Ev();
extern void _ZN10S2345C8_ntD1Ev();
Name_Map name_map_S2345C8_nt[] = {
  NSPAIR(_ZN10S2345C8_ntC1Ev),
  NSPAIR(_ZN10S2345C8_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2345C10;
extern VTBL_ENTRY _ZTI8S2345C10[];
extern  VTBL_ENTRY _ZTV8S2345C10[];
extern Class_Descriptor cd_S2345C9_nt;
extern VTBL_ENTRY _ZTI10S2345C9_nt[];
extern  VTBL_ENTRY _ZTV10S2345C9_nt[];
static Base_Class bases_S2345C8_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2345C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2345C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S2345C8_nt[];
extern void _ZN10S2345C8_ntD1Ev();
extern void _ZN10S2345C8_ntD0Ev();
extern void _ZN8S2345C103v21Ev();
extern void _ZN8S2345C103v22Ev();
extern void _ZN8S2345C103v23Ev();
extern void _ZN10S2345C9_nt3v24Ev();
extern void _ZN10S2345C9_nt3v25Ev();
extern void _ZN10S2345C9_nt3v26Ev();
extern void _ZN10S2345C8_nt3v27Ev();
extern void _ZN10S2345C8_nt3v28Ev();
extern void _ZN10S2345C8_nt3v29Ev();
extern void _ZN10S2345C8_nt3v30Ev();
static  VTBL_ENTRY vtc_S2345C8_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S2345C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S2345C8_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S2345C8_ntD0Ev,
  (VTBL_ENTRY)&_ZN8S2345C103v21Ev,
  (VTBL_ENTRY)&_ZN8S2345C103v22Ev,
  (VTBL_ENTRY)&_ZN8S2345C103v23Ev,
  (VTBL_ENTRY)&_ZN10S2345C9_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S2345C9_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S2345C9_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S2345C8_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S2345C8_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S2345C8_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S2345C8_nt3v30Ev,
};
extern VTBL_ENTRY _ZTI10S2345C8_nt[];
VTBL_ENTRY *P__ZTI10S2345C8_nt = _ZTI10S2345C8_nt; 
extern  VTBL_ENTRY _ZTV10S2345C8_nt[];
Class_Descriptor cd_S2345C8_nt = {  "S2345C8_nt", // class name
  bases_S2345C8_nt, 2,
  &(vtc_S2345C8_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,56), // object size
  NSPAIRA(_ZTI10S2345C8_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S2345C8_nt),14, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

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



//skip512 S2345C15_nt

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S2345C2_nt  : S2345C3_nt , S2345C8_nt {
  int s2345c2f0[3];
  char s2345c2f1;
  ::S2345C15_nt s2345c2f2;
  virtual  ~S2345C2_nt(); // _ZN10S2345C2_ntD1Ev
  virtual void  v31(); // _ZN10S2345C2_nt3v31Ev
  virtual void  v32(); // _ZN10S2345C2_nt3v32Ev
  virtual void  v33(); // _ZN10S2345C2_nt3v33Ev
  virtual void  v34(); // _ZN10S2345C2_nt3v34Ev
  virtual void  v35(); // _ZN10S2345C2_nt3v35Ev
  virtual void  v36(); // _ZN10S2345C2_nt3v36Ev
  S2345C2_nt(); // tgen
};
//SIG(-1 S2345C2_nt) C1{ BC2{ BC3{ vd v7 v8 v9 FC4{ m Fp Fi FC5{ m}} Fi[2] Fc} BC6{ vd v10 v11 v12} vd v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 Fp Fc Fi} BC7{ BC8{ BC9{ vd v23 v24 v25} vd v26 v27 v28 FC10{ m Fp Fi[2] FC11{ m}} FC12{ m FC13{ FL[4]}} Fc} vd v29 v30 v31 v32} vd v1 v2 v3 v4 v5 v6 Fi[3] Fc FC14{ BC15{ m Fp Fi FC11 FC16{ m}}}}


 S2345C2_nt ::~S2345C2_nt(){ note_dtor("S2345C2_nt", this);}
void  S2345C2_nt ::v31(){vfunc_called(this, "_ZN10S2345C2_nt3v31Ev");}
void  S2345C2_nt ::v32(){vfunc_called(this, "_ZN10S2345C2_nt3v32Ev");}
void  S2345C2_nt ::v33(){vfunc_called(this, "_ZN10S2345C2_nt3v33Ev");}
void  S2345C2_nt ::v34(){vfunc_called(this, "_ZN10S2345C2_nt3v34Ev");}
void  S2345C2_nt ::v35(){vfunc_called(this, "_ZN10S2345C2_nt3v35Ev");}
void  S2345C2_nt ::v36(){vfunc_called(this, "_ZN10S2345C2_nt3v36Ev");}
S2345C2_nt ::S2345C2_nt(){ note_ctor("S2345C2_nt", this);} // tgen

//skip512 S2345C2_nt

#else // __cplusplus

extern void _ZN10S2345C2_ntC1Ev();
extern void _ZN10S2345C2_ntD1Ev();
Name_Map name_map_S2345C2_nt[] = {
  NSPAIR(_ZN10S2345C2_ntC1Ev),
  NSPAIR(_ZN10S2345C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2345C4_nt;
extern VTBL_ENTRY _ZTI10S2345C4_nt[];
extern  VTBL_ENTRY _ZTV10S2345C4_nt[];
extern Class_Descriptor cd_S2345C7_nt;
extern VTBL_ENTRY _ZTI10S2345C7_nt[];
extern  VTBL_ENTRY _ZTV10S2345C7_nt[];
extern Class_Descriptor cd_S2345C3_nt;
extern VTBL_ENTRY _ZTI10S2345C3_nt[];
extern  VTBL_ENTRY _ZTV10S2345C3_nt[];
extern Class_Descriptor cd_S2345C10;
extern VTBL_ENTRY _ZTI8S2345C10[];
extern  VTBL_ENTRY _ZTV8S2345C10[];
extern Class_Descriptor cd_S2345C9_nt;
extern VTBL_ENTRY _ZTI10S2345C9_nt[];
extern  VTBL_ENTRY _ZTV10S2345C9_nt[];
extern Class_Descriptor cd_S2345C8_nt;
extern VTBL_ENTRY _ZTI10S2345C8_nt[];
extern  VTBL_ENTRY _ZTV10S2345C8_nt[];
static Base_Class bases_S2345C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2345C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S2345C7_nt,    ABISELECT(40,28), //bcp->offset
    23, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S2345C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S2345C10,    ABISELECT(64,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S2345C9_nt,    ABISELECT(64,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S2345C8_nt,    ABISELECT(64,44), //bcp->offset
    30, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S2345C2_nt[];
extern void _ZN10S2345C2_ntD1Ev();
extern void _ZN10S2345C2_ntD0Ev();
extern void _ZN10S2345C4_nt2v5Ev();
extern void _ZN10S2345C4_nt2v6Ev();
extern void _ZN10S2345C4_nt2v7Ev();
extern void _ZN10S2345C3_nt3v11Ev();
extern void _ZN10S2345C3_nt3v12Ev();
extern void _ZN10S2345C3_nt3v13Ev();
extern void _ZN10S2345C3_nt3v14Ev();
extern void _ZN10S2345C3_nt3v15Ev();
extern void _ZN10S2345C3_nt3v16Ev();
extern void _ZN10S2345C3_nt3v17Ev();
extern void _ZN10S2345C3_nt3v18Ev();
extern void _ZN10S2345C3_nt3v19Ev();
extern void _ZN10S2345C3_nt3v20Ev();
extern void _ZN10S2345C2_nt3v31Ev();
extern void _ZN10S2345C2_nt3v32Ev();
extern void _ZN10S2345C2_nt3v33Ev();
extern void _ZN10S2345C2_nt3v34Ev();
extern void _ZN10S2345C2_nt3v35Ev();
extern void _ZN10S2345C2_nt3v36Ev();
extern void ABISELECT(_ZThn40_N10S2345C2_ntD1Ev,_ZThn28_N10S2345C2_ntD1Ev)();
extern void ABISELECT(_ZThn40_N10S2345C2_ntD0Ev,_ZThn28_N10S2345C2_ntD0Ev)();
extern void _ZN10S2345C7_nt2v8Ev();
extern void _ZN10S2345C7_nt2v9Ev();
extern void _ZN10S2345C7_nt3v10Ev();
extern void ABISELECT(_ZThn64_N10S2345C2_ntD1Ev,_ZThn44_N10S2345C2_ntD1Ev)();
extern void ABISELECT(_ZThn64_N10S2345C2_ntD0Ev,_ZThn44_N10S2345C2_ntD0Ev)();
extern void _ZN8S2345C103v21Ev();
extern void _ZN8S2345C103v22Ev();
extern void _ZN8S2345C103v23Ev();
extern void _ZN10S2345C9_nt3v24Ev();
extern void _ZN10S2345C9_nt3v25Ev();
extern void _ZN10S2345C9_nt3v26Ev();
extern void _ZN10S2345C8_nt3v27Ev();
extern void _ZN10S2345C8_nt3v28Ev();
extern void _ZN10S2345C8_nt3v29Ev();
extern void _ZN10S2345C8_nt3v30Ev();
static  VTBL_ENTRY vtc_S2345C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S2345C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S2345C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S2345C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S2345C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S2345C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S2345C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S2345C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S2345C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S2345C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S2345C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S2345C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S2345C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S2345C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S2345C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S2345C3_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S2345C3_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S2345C2_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S2345C2_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S2345C2_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S2345C2_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S2345C2_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S2345C2_nt3v36Ev,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI10S2345C2_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N10S2345C2_ntD1Ev,_ZThn28_N10S2345C2_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N10S2345C2_ntD0Ev,_ZThn28_N10S2345C2_ntD0Ev),
  (VTBL_ENTRY)&_ZN10S2345C7_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S2345C7_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S2345C7_nt3v10Ev,
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI10S2345C2_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N10S2345C2_ntD1Ev,_ZThn44_N10S2345C2_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N10S2345C2_ntD0Ev,_ZThn44_N10S2345C2_ntD0Ev),
  (VTBL_ENTRY)&_ZN8S2345C103v21Ev,
  (VTBL_ENTRY)&_ZN8S2345C103v22Ev,
  (VTBL_ENTRY)&_ZN8S2345C103v23Ev,
  (VTBL_ENTRY)&_ZN10S2345C9_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S2345C9_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S2345C9_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S2345C8_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S2345C8_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S2345C8_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S2345C8_nt3v30Ev,
};
extern VTBL_ENTRY _ZTI10S2345C2_nt[];
VTBL_ENTRY *P__ZTI10S2345C2_nt = _ZTI10S2345C2_nt; 
extern  VTBL_ENTRY _ZTV10S2345C2_nt[];
Class_Descriptor cd_S2345C2_nt = {  "S2345C2_nt", // class name
  bases_S2345C2_nt, 6,
  &(vtc_S2345C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(168,128), // object size
  NSPAIRA(_ZTI10S2345C2_nt),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV10S2345C2_nt),44, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  6, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2345C19_nt  {
  void *s2345c19f0;
  virtual  ~S2345C19_nt(); // _ZN11S2345C19_ntD1Ev
  virtual void  v37(); // _ZN11S2345C19_nt3v37Ev
  virtual void  v38(); // _ZN11S2345C19_nt3v38Ev
  virtual void  v39(); // _ZN11S2345C19_nt3v39Ev
  virtual void  v40(); // _ZN11S2345C19_nt3v40Ev
  virtual void  v41(); // _ZN11S2345C19_nt3v41Ev
  virtual void  v42(); // _ZN11S2345C19_nt3v42Ev
  S2345C19_nt(); // tgen
};
//SIG(-1 S2345C19_nt) C1{ vd v1 v2 v3 v4 v5 v6 Fp}


 S2345C19_nt ::~S2345C19_nt(){ note_dtor("S2345C19_nt", this);}
void  S2345C19_nt ::v37(){vfunc_called(this, "_ZN11S2345C19_nt3v37Ev");}
void  S2345C19_nt ::v38(){vfunc_called(this, "_ZN11S2345C19_nt3v38Ev");}
void  S2345C19_nt ::v39(){vfunc_called(this, "_ZN11S2345C19_nt3v39Ev");}
void  S2345C19_nt ::v40(){vfunc_called(this, "_ZN11S2345C19_nt3v40Ev");}
void  S2345C19_nt ::v41(){vfunc_called(this, "_ZN11S2345C19_nt3v41Ev");}
void  S2345C19_nt ::v42(){vfunc_called(this, "_ZN11S2345C19_nt3v42Ev");}
S2345C19_nt ::S2345C19_nt(){ note_ctor("S2345C19_nt", this);} // tgen

//skip512 S2345C19_nt

#else // __cplusplus

extern void _ZN11S2345C19_ntC1Ev();
extern void _ZN11S2345C19_ntD1Ev();
Name_Map name_map_S2345C19_nt[] = {
  NSPAIR(_ZN11S2345C19_ntC1Ev),
  NSPAIR(_ZN11S2345C19_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S2345C19_nt[];
extern void _ZN11S2345C19_ntD1Ev();
extern void _ZN11S2345C19_ntD0Ev();
extern void _ZN11S2345C19_nt3v37Ev();
extern void _ZN11S2345C19_nt3v38Ev();
extern void _ZN11S2345C19_nt3v39Ev();
extern void _ZN11S2345C19_nt3v40Ev();
extern void _ZN11S2345C19_nt3v41Ev();
extern void _ZN11S2345C19_nt3v42Ev();
static  VTBL_ENTRY vtc_S2345C19_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S2345C19_nt[0]),
  (VTBL_ENTRY)&_ZN11S2345C19_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S2345C19_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S2345C19_nt3v37Ev,
  (VTBL_ENTRY)&_ZN11S2345C19_nt3v38Ev,
  (VTBL_ENTRY)&_ZN11S2345C19_nt3v39Ev,
  (VTBL_ENTRY)&_ZN11S2345C19_nt3v40Ev,
  (VTBL_ENTRY)&_ZN11S2345C19_nt3v41Ev,
  (VTBL_ENTRY)&_ZN11S2345C19_nt3v42Ev,
};
extern VTBL_ENTRY _ZTI11S2345C19_nt[];
VTBL_ENTRY *P__ZTI11S2345C19_nt = _ZTI11S2345C19_nt; 
extern  VTBL_ENTRY _ZTV11S2345C19_nt[];
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2345C21_nt  {
  ::S1868C23_nt s2345c21f0;
  void *s2345c21f1[3];
  char s2345c21f2;
  virtual  ~S2345C21_nt(); // _ZN11S2345C21_ntD1Ev
  virtual void  v44(); // _ZN11S2345C21_nt3v44Ev
  S2345C21_nt(); // tgen
};
//SIG(-1 S2345C21_nt) C1{ vd v1 FC2{ m FC3{ m Fp Fi FC4{ m} FC5{ m}}} Fp[3] Fc}


 S2345C21_nt ::~S2345C21_nt(){ note_dtor("S2345C21_nt", this);}
void  S2345C21_nt ::v44(){vfunc_called(this, "_ZN11S2345C21_nt3v44Ev");}
S2345C21_nt ::S2345C21_nt(){ note_ctor("S2345C21_nt", this);} // tgen

//skip512 S2345C21_nt

#else // __cplusplus

extern void _ZN11S2345C21_ntC1Ev();
extern void _ZN11S2345C21_ntD1Ev();
Name_Map name_map_S2345C21_nt[] = {
  NSPAIR(_ZN11S2345C21_ntC1Ev),
  NSPAIR(_ZN11S2345C21_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S2345C21_nt[];
extern void _ZN11S2345C21_ntD1Ev();
extern void _ZN11S2345C21_ntD0Ev();
extern void _ZN11S2345C21_nt3v44Ev();
static  VTBL_ENTRY vtc_S2345C21_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S2345C21_nt[0]),
  (VTBL_ENTRY)&_ZN11S2345C21_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S2345C21_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S2345C21_nt3v44Ev,
};
extern VTBL_ENTRY _ZTI11S2345C21_nt[];
VTBL_ENTRY *P__ZTI11S2345C21_nt = _ZTI11S2345C21_nt; 
extern  VTBL_ENTRY _ZTV11S2345C21_nt[];
Class_Descriptor cd_S2345C21_nt = {  "S2345C21_nt", // class name
  0,0,//no base classes
  &(vtc_S2345C21_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI11S2345C21_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S2345C21_nt),5, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2345C20_nt  : S2345C21_nt {
  void *s2345c20f0;
  virtual void  v43(); // _ZN11S2345C20_nt3v43Ev
  ~S2345C20_nt(); // tgen
  S2345C20_nt(); // tgen
};
//SIG(-1 S2345C20_nt) C1{ BC2{ vd v2 FC3{ m FC4{ m Fp Fi FC5{ m} FC6{ m}}} Fp[3] Fc} v1 Fp}


void  S2345C20_nt ::v43(){vfunc_called(this, "_ZN11S2345C20_nt3v43Ev");}
S2345C20_nt ::~S2345C20_nt(){ note_dtor("S2345C20_nt", this);} // tgen
S2345C20_nt ::S2345C20_nt(){ note_ctor("S2345C20_nt", this);} // tgen

//skip512 S2345C20_nt

#else // __cplusplus

extern void _ZN11S2345C20_ntC1Ev();
extern void _ZN11S2345C20_ntD1Ev();
Name_Map name_map_S2345C20_nt[] = {
  NSPAIR(_ZN11S2345C20_ntC1Ev),
  NSPAIR(_ZN11S2345C20_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2345C21_nt;
extern VTBL_ENTRY _ZTI11S2345C21_nt[];
extern  VTBL_ENTRY _ZTV11S2345C21_nt[];
static Base_Class bases_S2345C20_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2345C21_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI11S2345C20_nt[];
extern void _ZN11S2345C20_ntD1Ev();
extern void _ZN11S2345C20_ntD0Ev();
extern void _ZN11S2345C21_nt3v44Ev();
extern void _ZN11S2345C20_nt3v43Ev();
static  VTBL_ENTRY vtc_S2345C20_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S2345C20_nt[0]),
  (VTBL_ENTRY)&_ZN11S2345C20_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S2345C20_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S2345C21_nt3v44Ev,
  (VTBL_ENTRY)&_ZN11S2345C20_nt3v43Ev,
};
extern VTBL_ENTRY _ZTI11S2345C20_nt[];
VTBL_ENTRY *P__ZTI11S2345C20_nt = _ZTI11S2345C20_nt; 
extern  VTBL_ENTRY _ZTV11S2345C20_nt[];
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2345C1  : S2345C2_nt {
  ::S2345C19_nt s2345c1f0;
  ::S2345C20_nt s2345c1f1;
  int s2345c1f2;
  ::S17556C5_nt s2345c1f3;
  void *s2345c1f4;
  int s2345c1f5;
  virtual  ~S2345C1(); // _ZN7S2345C1D1Ev
  virtual void  v1(); // _ZN7S2345C12v1Ev
  virtual void  v2(); // _ZN7S2345C12v2Ev
  virtual void  v3(); // _ZN7S2345C12v3Ev
  virtual void  v4(); // _ZN7S2345C12v4Ev
  S2345C1(); // tgen
};
//SIG(1 S2345C1) C1{ BC2{ BC3{ BC4{ vd v5 v6 v7 FC5{ m Fp Fi FC6{ m}} Fi[2] Fc} BC7{ vd v8 v9 v10} vd v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 Fp Fc Fi} BC8{ BC9{ BC10{ vd v21 v22 v23} vd v24 v25 v26 FC11{ m Fp Fi[2] FC12{ m}} FC13{ m FC14{ FL[4]}} Fc} vd v27 v28 v29 v30} vd v31 v32 v33 v34 v35 v36 Fi[3] Fc FC15{ BC16{ m Fp Fi FC12 FC17{ m}}}} vd v1 v2 v3 v4 FC18{ vd v37 v38 v39 v40 v41 v42 Fp} FC19{ BC20{ vd v44 FC21{ m FC16} Fp[3] Fc} v43 Fp} Fi FC5 Fp Fi}


 S2345C1 ::~S2345C1(){ note_dtor("S2345C1", this);}
void  S2345C1 ::v1(){vfunc_called(this, "_ZN7S2345C12v1Ev");}
void  S2345C1 ::v2(){vfunc_called(this, "_ZN7S2345C12v2Ev");}
void  S2345C1 ::v3(){vfunc_called(this, "_ZN7S2345C12v3Ev");}
void  S2345C1 ::v4(){vfunc_called(this, "_ZN7S2345C12v4Ev");}
S2345C1 ::S2345C1(){ note_ctor("S2345C1", this);} // tgen

static void Test_S2345C1()
{
  extern Class_Descriptor cd_S2345C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(37,50)];
    init_test(&cd_S2345C1, buf);
    S2345C1 *dp, &lv = *(dp=new (buf) S2345C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(288,196), "sizeof(S2345C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2345C1)");
    check_base_class_offset(lv, (S2345C4_nt*)(S2345C3_nt*)(S2345C2_nt*), 0, "S2345C1");
    check_base_class_offset(lv, (S2345C7_nt*)(S2345C3_nt*)(S2345C2_nt*), ABISELECT(40,28), "S2345C1");
    check_base_class_offset(lv, (S2345C3_nt*)(S2345C2_nt*), 0, "S2345C1");
    check_base_class_offset(lv, (S2345C10*)(S2345C9_nt*)(S2345C8_nt*)(S2345C2_nt*), ABISELECT(64,44), "S2345C1");
    check_base_class_offset(lv, (S2345C9_nt*)(S2345C8_nt*)(S2345C2_nt*), ABISELECT(64,44), "S2345C1");
    check_base_class_offset(lv, (S2345C8_nt*)(S2345C2_nt*), ABISELECT(64,44), "S2345C1");
    check_base_class_offset(lv, (S2345C2_nt*), 0, "S2345C1");
    check_field_offset(lv, s2345c1f0, ABISELECT(168,128), "S2345C1.s2345c1f0");
    check_field_offset(lv, s2345c1f1, ABISELECT(184,136), "S2345C1.s2345c1f1");
    check_field_offset(lv, s2345c1f2, ABISELECT(248,172), "S2345C1.s2345c1f2");
    check_field_offset(lv, s2345c1f3, ABISELECT(256,176), "S2345C1.s2345c1f3");
    check_field_offset(lv, s2345c1f4, ABISELECT(272,188), "S2345C1.s2345c1f4");
    check_field_offset(lv, s2345c1f5, ABISELECT(280,192), "S2345C1.s2345c1f5");
    test_class_info(&lv, &cd_S2345C1);
    dp->~S2345C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2345C1(Test_S2345C1, "S2345C1", ABISELECT(288,196));

#else // __cplusplus

extern void _ZN7S2345C1C1Ev();
extern void _ZN7S2345C1D1Ev();
Name_Map name_map_S2345C1[] = {
  NSPAIR(_ZN7S2345C1C1Ev),
  NSPAIR(_ZN7S2345C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2345C4_nt;
extern VTBL_ENTRY _ZTI10S2345C4_nt[];
extern  VTBL_ENTRY _ZTV10S2345C4_nt[];
extern Class_Descriptor cd_S2345C7_nt;
extern VTBL_ENTRY _ZTI10S2345C7_nt[];
extern  VTBL_ENTRY _ZTV10S2345C7_nt[];
extern Class_Descriptor cd_S2345C3_nt;
extern VTBL_ENTRY _ZTI10S2345C3_nt[];
extern  VTBL_ENTRY _ZTV10S2345C3_nt[];
extern Class_Descriptor cd_S2345C10;
extern VTBL_ENTRY _ZTI8S2345C10[];
extern  VTBL_ENTRY _ZTV8S2345C10[];
extern Class_Descriptor cd_S2345C9_nt;
extern VTBL_ENTRY _ZTI10S2345C9_nt[];
extern  VTBL_ENTRY _ZTV10S2345C9_nt[];
extern Class_Descriptor cd_S2345C8_nt;
extern VTBL_ENTRY _ZTI10S2345C8_nt[];
extern  VTBL_ENTRY _ZTV10S2345C8_nt[];
extern Class_Descriptor cd_S2345C2_nt;
extern VTBL_ENTRY _ZTI10S2345C2_nt[];
extern  VTBL_ENTRY _ZTV10S2345C2_nt[];
static Base_Class bases_S2345C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2345C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S2345C7_nt,    ABISELECT(40,28), //bcp->offset
    27, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S2345C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S2345C10,    ABISELECT(64,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S2345C9_nt,    ABISELECT(64,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S2345C8_nt,    ABISELECT(64,44), //bcp->offset
    34, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S2345C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2345C1[];
extern void _ZN7S2345C1D1Ev();
extern void _ZN7S2345C1D0Ev();
extern void _ZN10S2345C4_nt2v5Ev();
extern void _ZN10S2345C4_nt2v6Ev();
extern void _ZN10S2345C4_nt2v7Ev();
extern void _ZN10S2345C3_nt3v11Ev();
extern void _ZN10S2345C3_nt3v12Ev();
extern void _ZN10S2345C3_nt3v13Ev();
extern void _ZN10S2345C3_nt3v14Ev();
extern void _ZN10S2345C3_nt3v15Ev();
extern void _ZN10S2345C3_nt3v16Ev();
extern void _ZN10S2345C3_nt3v17Ev();
extern void _ZN10S2345C3_nt3v18Ev();
extern void _ZN10S2345C3_nt3v19Ev();
extern void _ZN10S2345C3_nt3v20Ev();
extern void _ZN10S2345C2_nt3v31Ev();
extern void _ZN10S2345C2_nt3v32Ev();
extern void _ZN10S2345C2_nt3v33Ev();
extern void _ZN10S2345C2_nt3v34Ev();
extern void _ZN10S2345C2_nt3v35Ev();
extern void _ZN10S2345C2_nt3v36Ev();
extern void _ZN7S2345C12v1Ev();
extern void _ZN7S2345C12v2Ev();
extern void _ZN7S2345C12v3Ev();
extern void _ZN7S2345C12v4Ev();
extern void ABISELECT(_ZThn40_N7S2345C1D1Ev,_ZThn28_N7S2345C1D1Ev)();
extern void ABISELECT(_ZThn40_N7S2345C1D0Ev,_ZThn28_N7S2345C1D0Ev)();
extern void _ZN10S2345C7_nt2v8Ev();
extern void _ZN10S2345C7_nt2v9Ev();
extern void _ZN10S2345C7_nt3v10Ev();
extern void ABISELECT(_ZThn64_N7S2345C1D1Ev,_ZThn44_N7S2345C1D1Ev)();
extern void ABISELECT(_ZThn64_N7S2345C1D0Ev,_ZThn44_N7S2345C1D0Ev)();
extern void _ZN8S2345C103v21Ev();
extern void _ZN8S2345C103v22Ev();
extern void _ZN8S2345C103v23Ev();
extern void _ZN10S2345C9_nt3v24Ev();
extern void _ZN10S2345C9_nt3v25Ev();
extern void _ZN10S2345C9_nt3v26Ev();
extern void _ZN10S2345C8_nt3v27Ev();
extern void _ZN10S2345C8_nt3v28Ev();
extern void _ZN10S2345C8_nt3v29Ev();
extern void _ZN10S2345C8_nt3v30Ev();
static  VTBL_ENTRY vtc_S2345C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2345C1[0]),
  (VTBL_ENTRY)&_ZN7S2345C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2345C1D0Ev,
  (VTBL_ENTRY)&_ZN10S2345C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S2345C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S2345C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S2345C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S2345C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S2345C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S2345C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S2345C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S2345C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S2345C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S2345C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S2345C3_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S2345C3_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S2345C2_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S2345C2_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S2345C2_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S2345C2_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S2345C2_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S2345C2_nt3v36Ev,
  (VTBL_ENTRY)&_ZN7S2345C12v1Ev,
  (VTBL_ENTRY)&_ZN7S2345C12v2Ev,
  (VTBL_ENTRY)&_ZN7S2345C12v3Ev,
  (VTBL_ENTRY)&_ZN7S2345C12v4Ev,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI7S2345C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S2345C1D1Ev,_ZThn28_N7S2345C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S2345C1D0Ev,_ZThn28_N7S2345C1D0Ev),
  (VTBL_ENTRY)&_ZN10S2345C7_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S2345C7_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S2345C7_nt3v10Ev,
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI7S2345C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S2345C1D1Ev,_ZThn44_N7S2345C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S2345C1D0Ev,_ZThn44_N7S2345C1D0Ev),
  (VTBL_ENTRY)&_ZN8S2345C103v21Ev,
  (VTBL_ENTRY)&_ZN8S2345C103v22Ev,
  (VTBL_ENTRY)&_ZN8S2345C103v23Ev,
  (VTBL_ENTRY)&_ZN10S2345C9_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S2345C9_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S2345C9_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S2345C8_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S2345C8_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S2345C8_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S2345C8_nt3v30Ev,
};
extern VTBL_ENTRY _ZTI7S2345C1[];
extern  VTBL_ENTRY _ZTV7S2345C1[];
Class_Descriptor cd_S2345C1 = {  "S2345C1", // class name
  bases_S2345C1, 7,
  &(vtc_S2345C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(288,196), // object size
  NSPAIRA(_ZTI7S2345C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2345C1),48, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  7, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8033C4  {
  void *s8033c4f0[3];
  __tsi64 s8033c4f1[8];
  void  mf8033c4(); // _ZN7S8033C48mf8033c4Ev
};
//SIG(-1 S8033C4) C1{ m Fp[3] FL[8]}


void  S8033C4 ::mf8033c4(){}

static void Test_S8033C4()
{
  {
    init_simple_test("S8033C4");
    S8033C4 lv;
    check2(sizeof(lv), ABISELECT(88,76), "sizeof(S8033C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8033C4)");
    check_field_offset(lv, s8033c4f0, 0, "S8033C4.s8033c4f0");
    check_field_offset(lv, s8033c4f1, ABISELECT(24,12), "S8033C4.s8033c4f1");
  }
}
static Arrange_To_Call_Me vS8033C4(Test_S8033C4, "S8033C4", ABISELECT(88,76));

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S8033C7  {
  char s8033c7f0;
  char  :0;
  long s8033c7f2[8];
  long double s8033c7f3;
  void  mf8033c7(); // _ZN7S8033C78mf8033c7Ev
  virtual  ~S8033C7(); // _ZN7S8033C7D1Ev
  S8033C7(); // tgen
};
//SIG(-1 S8033C7) C1{ vd m Fc Fc:0 Fl[8] FD}


void  S8033C7 ::mf8033c7(){}
 S8033C7 ::~S8033C7(){ note_dtor("S8033C7", this);}
S8033C7 ::S8033C7(){ note_ctor("S8033C7", this);} // tgen

static void Test_S8033C7()
{
  extern Class_Descriptor cd_S8033C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(7,14)];
    init_test(&cd_S8033C7, buf);
    S8033C7 *dp, &lv = *(dp=new (buf) S8033C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,52), "sizeof(S8033C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S8033C7)");
    check_field_offset(lv, s8033c7f0, ABISELECT(8,4), "S8033C7.s8033c7f0");
    check_field_offset(lv, s8033c7f2, ABISELECT(16,8), "S8033C7.s8033c7f2");
    check_field_offset(lv, s8033c7f3, ABISELECT(80,40), "S8033C7.s8033c7f3");
    test_class_info(&lv, &cd_S8033C7);
    dp->~S8033C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8033C7(Test_S8033C7, "S8033C7", ABISELECT(96,52));

#else // __cplusplus

extern void _ZN7S8033C7C1Ev();
extern void _ZN7S8033C7D1Ev();
Name_Map name_map_S8033C7[] = {
  NSPAIR(_ZN7S8033C7C1Ev),
  NSPAIR(_ZN7S8033C7D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8033C7[];
extern void _ZN7S8033C7D1Ev();
extern void _ZN7S8033C7D0Ev();
static  VTBL_ENTRY vtc_S8033C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8033C7[0]),
  (VTBL_ENTRY)&_ZN7S8033C7D1Ev,
  (VTBL_ENTRY)&_ZN7S8033C7D0Ev,
};
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
Class_Descriptor cd_S8033C7 = {  "S8033C7", // class name
  0,0,//no base classes
  &(vtc_S8033C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,52), // object size
  NSPAIRA(_ZTI7S8033C7),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8033C7),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8033C8  : S8033C7 {
  void *s8033c8f0;
  ::S20291C14_nt s8033c8f1;
  void *s8033c8f2;
  long double s8033c8f3;
  ~S8033C8(); // tgen
  S8033C8(); // tgen
};
//SIG(-1 S8033C8) C1{ BC2{ vd m Fc Fc:0 Fl[8] FD} Fp FC3{} Fp FD}


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

static void Test_S8033C8()
{
  extern Class_Descriptor cd_S8033C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(10,20)];
    init_test(&cd_S8033C8, buf);
    S8033C8 *dp, &lv = *(dp=new (buf) S8033C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,76), "sizeof(S8033C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S8033C8)");
    check_base_class_offset(lv, (S8033C7*), 0, "S8033C8");
    check_field_offset(lv, s8033c8f0, ABISELECT(96,52), "S8033C8.s8033c8f0");
    check_field_offset(lv, s8033c8f1, ABISELECT(104,56), "S8033C8.s8033c8f1");
    check_field_offset(lv, s8033c8f2, ABISELECT(112,60), "S8033C8.s8033c8f2");
    check_field_offset(lv, s8033c8f3, ABISELECT(128,64), "S8033C8.s8033c8f3");
    test_class_info(&lv, &cd_S8033C8);
    dp->~S8033C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8033C8(Test_S8033C8, "S8033C8", ABISELECT(144,76));

#else // __cplusplus

extern void _ZN7S8033C8C1Ev();
extern void _ZN7S8033C8D1Ev();
Name_Map name_map_S8033C8[] = {
  NSPAIR(_ZN7S8033C8C1Ev),
  NSPAIR(_ZN7S8033C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
static Base_Class bases_S8033C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8033C8[];
extern void _ZN7S8033C8D1Ev();
extern void _ZN7S8033C8D0Ev();
static  VTBL_ENTRY vtc_S8033C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8033C8[0]),
  (VTBL_ENTRY)&_ZN7S8033C8D1Ev,
  (VTBL_ENTRY)&_ZN7S8033C8D0Ev,
};
extern VTBL_ENTRY _ZTI7S8033C8[];
extern  VTBL_ENTRY _ZTV7S8033C8[];
Class_Descriptor cd_S8033C8 = {  "S8033C8", // class name
  bases_S8033C8, 1,
  &(vtc_S8033C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,76), // object size
  NSPAIRA(_ZTI7S8033C8),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8033C8),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8033C10  : S8033C8 , virtual S8033C7 {
  ::S8033C7 s8033c10f0;
  void *s8033c10f1;
  virtual  ~S8033C10(); // _ZN8S8033C10D2Ev
  S8033C10(); // tgen
};
//SIG(-1 S8033C10) C1{ BC2{ BC3{ vd m Fc Fc:0 Fl[8] FD} Fp FC4{} Fp FD} VBC3 vd FC3 Fp}


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

static void Test_S8033C10()
{
  extern Class_Descriptor cd_S8033C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(23,47)];
    init_test(&cd_S8033C10, buf);
    S8033C10 *dp, &lv = *(dp=new (buf) S8033C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(352,184), "sizeof(S8033C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S8033C10)");
    check_base_class_offset(lv, (S8033C7*)(S8033C8*), 0, "S8033C10");
    check_base_class_offset(lv, (S8033C8*), 0, "S8033C10");
    /*is_ambiguous_... S8033C10::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*), ABISELECT(256,132), "S8033C10");
    check_field_offset(lv, s8033c10f0, ABISELECT(144,76), "S8033C10.s8033c10f0");
    check_field_offset(lv, s8033c10f1, ABISELECT(240,128), "S8033C10.s8033c10f1");
    test_class_info(&lv, &cd_S8033C10);
    dp->~S8033C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8033C10(Test_S8033C10, "S8033C10", ABISELECT(352,184));

#else // __cplusplus

extern void _ZN8S8033C10C1Ev();
extern void _ZN8S8033C10D2Ev();
Name_Map name_map_S8033C10[] = {
  NSPAIR(_ZN8S8033C10C1Ev),
  NSPAIR(_ZN8S8033C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C8;
extern VTBL_ENTRY _ZTI7S8033C8[];
extern  VTBL_ENTRY _ZTV7S8033C8[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
static Base_Class bases_S8033C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S8033C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S8033C7,    ABISELECT(256,132), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S8033C10[];
extern void _ZN8S8033C10D1Ev();
extern void _ZN8S8033C10D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S8033C10D1Ev,_ZTv0_n12_N8S8033C10D1Ev)();
extern void ABISELECT(_ZThn256_N8S8033C10D1Ev,_ZThn132_N8S8033C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8033C10D0Ev,_ZTv0_n12_N8S8033C10D0Ev)();
extern void ABISELECT(_ZThn256_N8S8033C10D0Ev,_ZThn132_N8S8033C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S8033C10[] = {
  ABISELECT(256,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S8033C10[0]),
  (VTBL_ENTRY)&_ZN8S8033C10D1Ev,
  (VTBL_ENTRY)&_ZN8S8033C10D0Ev,
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  (VTBL_ENTRY)&(_ZTI8S8033C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C10D1Ev,_ZTv0_n12_N8S8033C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C10D0Ev,_ZTv0_n12_N8S8033C10D0Ev),
};
extern VTBL_ENTRY _ZTV8S8033C10[];
static  VTT_ENTRY vtt_S8033C10[] = {
  {&(_ZTV8S8033C10[3]),  3,10},
  {&(_ZTV8S8033C10[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S8033C10[];
extern  VTBL_ENTRY _ZTV8S8033C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8033C10[];
static VTBL_ENTRY alt_thunk_names34[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8033C10D0Ev,_ZTv0_n12_N8S8033C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S8033C10D0Ev,_ZThn132_N8S8033C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8033C10D1Ev,_ZTv0_n12_N8S8033C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S8033C10D1Ev,_ZThn132_N8S8033C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S8033C10 = {  "S8033C10", // class name
  bases_S8033C10, 3,
  &(vtc_S8033C10[0]), // expected_vtbl_contents
  &(vtt_S8033C10[0]), // expected_vtt_contents
  ABISELECT(352,184), // object size
  NSPAIRA(_ZTI8S8033C10),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S8033C10),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S8033C10),2, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names34,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8033C6  : S8033C7 , virtual S8033C8 {
  int s8033c6f0;
  char s8033c6f1;
  void *s8033c6f2;
  int s8033c6f3;
  void *s8033c6f4[2];
  ::S8033C10 s8033c6f5;
  virtual  ~S8033C6(); // _ZN7S8033C6D2Ev
  virtual void  v1(); // _ZN7S8033C62v1Ev
  S8033C6(); // tgen
};
//SIG(-1 S8033C6) C1{ BC2{ vd m Fc Fc:0 Fl[8] FD} VBC3{ BC2 Fp FC4{} Fp FD} vd v1 Fi Fc Fp Fi Fp[2] FC5{ BC3 VBC2 vd FC2 Fp}}


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

static void Test_S8033C6()
{
  extern Class_Descriptor cd_S8033C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(41,85)];
    init_test(&cd_S8033C6, buf);
    S8033C6 *dp, &lv = *(dp=new (buf) S8033C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(640,336), "sizeof(S8033C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S8033C6)");
    /*is_ambiguous_... S8033C6::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*), 0, "S8033C6");
    check_base_class_offset(lv, (S8033C7*)(S8033C8*), ABISELECT(496,260), "S8033C6");
    check_base_class_offset(lv, (S8033C8*), ABISELECT(496,260), "S8033C6");
    check_field_offset(lv, s8033c6f0, ABISELECT(96,52), "S8033C6.s8033c6f0");
    check_field_offset(lv, s8033c6f1, ABISELECT(100,56), "S8033C6.s8033c6f1");
    check_field_offset(lv, s8033c6f2, ABISELECT(104,60), "S8033C6.s8033c6f2");
    check_field_offset(lv, s8033c6f3, ABISELECT(112,64), "S8033C6.s8033c6f3");
    check_field_offset(lv, s8033c6f4, ABISELECT(120,68), "S8033C6.s8033c6f4");
    check_field_offset(lv, s8033c6f5, ABISELECT(144,76), "S8033C6.s8033c6f5");
    test_class_info(&lv, &cd_S8033C6);
    dp->~S8033C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8033C6(Test_S8033C6, "S8033C6", ABISELECT(640,336));

#else // __cplusplus

extern void _ZN7S8033C6C1Ev();
extern void _ZN7S8033C6D2Ev();
Name_Map name_map_S8033C6[] = {
  NSPAIR(_ZN7S8033C6C1Ev),
  NSPAIR(_ZN7S8033C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C8;
extern VTBL_ENTRY _ZTI7S8033C8[];
extern  VTBL_ENTRY _ZTV7S8033C8[];
static Base_Class bases_S8033C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S8033C7,    ABISELECT(496,260), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S8033C8,    ABISELECT(496,260), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S8033C6[];
extern void _ZN7S8033C6D1Ev();
extern void _ZN7S8033C6D0Ev();
extern void _ZN7S8033C62v1Ev();
extern void ABISELECT(_ZTv0_n24_N7S8033C6D1Ev,_ZTv0_n12_N7S8033C6D1Ev)();
extern void ABISELECT(_ZThn496_N7S8033C6D1Ev,_ZThn260_N7S8033C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8033C6D0Ev,_ZTv0_n12_N7S8033C6D0Ev)();
extern void ABISELECT(_ZThn496_N7S8033C6D0Ev,_ZThn260_N7S8033C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S8033C6[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI7S8033C6[0]),
  (VTBL_ENTRY)&_ZN7S8033C6D1Ev,
  (VTBL_ENTRY)&_ZN7S8033C6D0Ev,
  (VTBL_ENTRY)&_ZN7S8033C62v1Ev,
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI7S8033C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8033C6D1Ev,_ZTv0_n12_N7S8033C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8033C6D0Ev,_ZTv0_n12_N7S8033C6D0Ev),
};
extern VTBL_ENTRY _ZTV7S8033C6[];
static  VTT_ENTRY vtt_S8033C6[] = {
  {&(_ZTV7S8033C6[3]),  3,11},
  {&(_ZTV7S8033C6[9]),  9,11},
};
extern VTBL_ENTRY _ZTI7S8033C6[];
extern  VTBL_ENTRY _ZTV7S8033C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8033C6[];
static VTBL_ENTRY alt_thunk_names35[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8033C6D0Ev,_ZTv0_n12_N7S8033C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N7S8033C6D0Ev,_ZThn260_N7S8033C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8033C6D1Ev,_ZTv0_n12_N7S8033C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N7S8033C6D1Ev,_ZThn260_N7S8033C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S8033C6 = {  "S8033C6", // class name
  bases_S8033C6, 3,
  &(vtc_S8033C6[0]), // expected_vtbl_contents
  &(vtt_S8033C6[0]), // expected_vtt_contents
  ABISELECT(640,336), // object size
  NSPAIRA(_ZTI7S8033C6),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S8033C6),11, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S8033C6),2, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names35,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8033C11  : virtual S8033C8 {
  char s8033c11f0;
  short s8033c11f1;
  long double s8033c11f2;
  void *s8033c11f3[2];
  virtual void  v2(); // _ZN8S8033C112v2Ev
  ~S8033C11(); // tgen
  S8033C11(); // tgen
};
//SIG(-1 S8033C11) C1{ VBC2{ BC3{ vd m Fc Fc:0 Fl[8] FD} Fp FC4{} Fp FD} v1 Fc Fs FD Fp[2]}


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

static void Test_S8033C11()
{
  extern Class_Descriptor cd_S8033C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,27)];
    init_test(&cd_S8033C11, buf);
    S8033C11 *dp, &lv = *(dp=new (buf) S8033C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,104), "sizeof(S8033C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S8033C11)");
    check_base_class_offset(lv, (S8033C7*)(S8033C8*), ABISELECT(48,28), "S8033C11");
    check_base_class_offset(lv, (S8033C8*), ABISELECT(48,28), "S8033C11");
    check_field_offset(lv, s8033c11f0, ABISELECT(8,4), "S8033C11.s8033c11f0");
    check_field_offset(lv, s8033c11f1, ABISELECT(10,6), "S8033C11.s8033c11f1");
    check_field_offset(lv, s8033c11f2, ABISELECT(16,8), "S8033C11.s8033c11f2");
    check_field_offset(lv, s8033c11f3, ABISELECT(32,20), "S8033C11.s8033c11f3");
    test_class_info(&lv, &cd_S8033C11);
    dp->~S8033C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8033C11(Test_S8033C11, "S8033C11", ABISELECT(192,104));

#else // __cplusplus

extern void _ZN8S8033C11C1Ev();
extern void _ZN8S8033C11D1Ev();
Name_Map name_map_S8033C11[] = {
  NSPAIR(_ZN8S8033C11C1Ev),
  NSPAIR(_ZN8S8033C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C8;
extern VTBL_ENTRY _ZTI7S8033C8[];
extern  VTBL_ENTRY _ZTV7S8033C8[];
static Base_Class bases_S8033C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S8033C8,    ABISELECT(48,28), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S8033C11[];
extern void _ZN8S8033C112v2Ev();
extern void _ZN8S8033C11D1Ev();
extern void _ZN8S8033C11D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S8033C11D1Ev,_ZTv0_n12_N8S8033C11D1Ev)();
extern void ABISELECT(_ZThn48_N8S8033C11D1Ev,_ZThn28_N8S8033C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8033C11D0Ev,_ZTv0_n12_N8S8033C11D0Ev)();
extern void ABISELECT(_ZThn48_N8S8033C11D0Ev,_ZThn28_N8S8033C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S8033C11[] = {
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S8033C11[0]),
  (VTBL_ENTRY)&_ZN8S8033C112v2Ev,
  (VTBL_ENTRY)&_ZN8S8033C11D1Ev,
  (VTBL_ENTRY)&_ZN8S8033C11D0Ev,
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S8033C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C11D1Ev,_ZTv0_n12_N8S8033C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C11D0Ev,_ZTv0_n12_N8S8033C11D0Ev),
};
extern VTBL_ENTRY _ZTV8S8033C11[];
static  VTT_ENTRY vtt_S8033C11[] = {
  {&(_ZTV8S8033C11[3]),  3,11},
  {&(_ZTV8S8033C11[9]),  9,11},
};
extern VTBL_ENTRY _ZTI8S8033C11[];
extern  VTBL_ENTRY _ZTV8S8033C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8033C11[];
static VTBL_ENTRY alt_thunk_names36[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8033C11D0Ev,_ZTv0_n12_N8S8033C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S8033C11D0Ev,_ZThn28_N8S8033C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8033C11D1Ev,_ZTv0_n12_N8S8033C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S8033C11D1Ev,_ZThn28_N8S8033C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S8033C11 = {  "S8033C11", // class name
  bases_S8033C11, 2,
  &(vtc_S8033C11[0]), // expected_vtbl_contents
  &(vtt_S8033C11[0]), // expected_vtt_contents
  ABISELECT(192,104), // object size
  NSPAIRA(_ZTI8S8033C11),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S8033C11),11, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S8033C11),2, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names36,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8033C14  : S8033C7 , virtual S8033C6 {
  void *s8033c14f0;
  __tsi64 s8033c14f1[2];
  char s8033c14f2;
  void *s8033c14f3;
  int s8033c14f4;
  virtual  ~S8033C14(); // _ZN8S8033C14D2Ev
  S8033C14(); // tgen
};
//SIG(-1 S8033C14) C1{ BC2{ vd m Fc Fc:0 Fl[8] FD} VBC3{ BC2 VBC4{ BC2 Fp FC5{} Fp FD} vd v1 Fi Fc Fp Fi Fp[2] FC6{ BC4 VBC2 vd FC2 Fp}} vd Fp FL[2] Fc Fp Fi}


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

static void Test_S8033C14()
{
  extern Class_Descriptor cd_S8033C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(50,106)];
    init_test(&cd_S8033C14, buf);
    S8033C14 *dp, &lv = *(dp=new (buf) S8033C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(784,420), "sizeof(S8033C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S8033C14)");
    /*is_ambiguous_... S8033C14::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*), 0, "S8033C14");
    /*is_ambiguous_... S8033C6::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8033C6*), ABISELECT(144,84), "S8033C14");
    check_base_class_offset(lv, (S8033C7*)(S8033C8*), ABISELECT(640,344), "S8033C14");
    check_base_class_offset(lv, (S8033C8*)(S8033C6*), ABISELECT(640,344), "S8033C14");
    check_base_class_offset(lv, (S8033C6*), ABISELECT(144,84), "S8033C14");
    check_field_offset(lv, s8033c14f0, ABISELECT(96,52), "S8033C14.s8033c14f0");
    check_field_offset(lv, s8033c14f1, ABISELECT(104,56), "S8033C14.s8033c14f1");
    check_field_offset(lv, s8033c14f2, ABISELECT(120,72), "S8033C14.s8033c14f2");
    check_field_offset(lv, s8033c14f3, ABISELECT(128,76), "S8033C14.s8033c14f3");
    check_field_offset(lv, s8033c14f4, ABISELECT(136,80), "S8033C14.s8033c14f4");
    test_class_info(&lv, &cd_S8033C14);
    dp->~S8033C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8033C14(Test_S8033C14, "S8033C14", ABISELECT(784,420));

#else // __cplusplus

extern void _ZN8S8033C14C1Ev();
extern void _ZN8S8033C14D2Ev();
Name_Map name_map_S8033C14[] = {
  NSPAIR(_ZN8S8033C14C1Ev),
  NSPAIR(_ZN8S8033C14D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C8;
extern VTBL_ENTRY _ZTI7S8033C8[];
extern  VTBL_ENTRY _ZTV7S8033C8[];
extern Class_Descriptor cd_S8033C6;
extern VTBL_ENTRY _ZTI7S8033C6[];
extern  VTBL_ENTRY _ZTV7S8033C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8033C6[];
static Base_Class bases_S8033C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S8033C7,    ABISELECT(144,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(640,344), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S8033C8,    ABISELECT(640,344), //bcp->offset
    14, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S8033C6,    ABISELECT(144,84), //bcp->offset
    6, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S8033C14[];
extern void _ZN8S8033C14D1Ev();
extern void _ZN8S8033C14D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S8033C14D1Ev,_ZTv0_n16_N8S8033C14D1Ev)();
extern void ABISELECT(_ZThn144_N8S8033C14D1Ev,_ZThn84_N8S8033C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8033C14D0Ev,_ZTv0_n16_N8S8033C14D0Ev)();
extern void ABISELECT(_ZThn144_N8S8033C14D0Ev,_ZThn84_N8S8033C14D0Ev)() __attribute__((weak));
extern void _ZN7S8033C62v1Ev();
extern void ABISELECT(_ZTv0_n24_N8S8033C14D1Ev,_ZTv0_n12_N8S8033C14D1Ev)();
extern void ABISELECT(_ZThn640_N8S8033C14D1Ev,_ZThn344_N8S8033C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8033C14D0Ev,_ZTv0_n12_N8S8033C14D0Ev)();
extern void ABISELECT(_ZThn640_N8S8033C14D0Ev,_ZThn344_N8S8033C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S8033C14[] = {
  ABISELECT(640,344),
  ABISELECT(144,84),
  0,
  (VTBL_ENTRY)&(_ZTI8S8033C14[0]),
  (VTBL_ENTRY)&_ZN8S8033C14D1Ev,
  (VTBL_ENTRY)&_ZN8S8033C14D0Ev,
  0,
  ABISELECT(-144,-84),
  ABISELECT(496,260),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI8S8033C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C14D1Ev,_ZTv0_n16_N8S8033C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C14D0Ev,_ZTv0_n16_N8S8033C14D0Ev),
  (VTBL_ENTRY)&_ZN7S8033C62v1Ev,
  ABISELECT(-640,-344),
  ABISELECT(-640,-344),
  (VTBL_ENTRY)&(_ZTI8S8033C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C14D1Ev,_ZTv0_n12_N8S8033C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C14D0Ev,_ZTv0_n12_N8S8033C14D0Ev),
};
extern VTBL_ENTRY _ZTV8S8033C14[];
extern void _ZN7S8033C6D1Ev();
extern void _ZN7S8033C6D0Ev();
extern void _ZN7S8033C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8033C6__8S8033C14[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI7S8033C6[0]),
  (VTBL_ENTRY)&_ZN7S8033C6D1Ev,
  (VTBL_ENTRY)&_ZN7S8033C6D0Ev,
  (VTBL_ENTRY)&_ZN7S8033C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S8033C6D1Ev,_ZTv0_n12_N7S8033C6D1Ev)();
extern void ABISELECT(_ZThn496_N7S8033C6D1Ev,_ZThn260_N7S8033C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8033C6D0Ev,_ZTv0_n12_N7S8033C6D0Ev)();
extern void ABISELECT(_ZThn496_N7S8033C6D0Ev,_ZThn260_N7S8033C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C8__7S8033C6__8S8033C14[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI7S8033C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8033C6D1Ev,_ZTv0_n12_N7S8033C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8033C6D0Ev,_ZTv0_n12_N7S8033C6D0Ev),
};
static  VTT_ENTRY vtt_S8033C14[] = {
  {&(_ZTV8S8033C14[4]),  4,19},
  {&(_ZTV8S8033C14[11]),  11,19},
  {&(_ZTV8S8033C14[17]),  17,19},
  {&(_tg__ZTV7S8033C6__8S8033C14[3]),  3,6},
  {&(_tg__ZTV7S8033C8__7S8033C6__8S8033C14[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S8033C14[];
extern  VTBL_ENTRY _ZTV8S8033C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8033C14[];
static VTBL_ENTRY alt_thunk_names37[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8033C6D0Ev,_ZTv0_n12_N7S8033C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N7S8033C6D0Ev,_ZThn260_N7S8033C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8033C6D1Ev,_ZTv0_n12_N7S8033C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N7S8033C6D1Ev,_ZThn260_N7S8033C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8033C14D0Ev,_ZTv0_n12_N8S8033C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N8S8033C14D0Ev,_ZThn344_N8S8033C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8033C14D1Ev,_ZTv0_n12_N8S8033C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N8S8033C14D1Ev,_ZThn344_N8S8033C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8033C14D0Ev,_ZTv0_n16_N8S8033C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S8033C14D0Ev,_ZThn84_N8S8033C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8033C14D1Ev,_ZTv0_n16_N8S8033C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S8033C14D1Ev,_ZThn84_N8S8033C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S8033C14 = {  "S8033C14", // class name
  bases_S8033C14, 5,
  &(vtc_S8033C14[0]), // expected_vtbl_contents
  &(vtt_S8033C14[0]), // expected_vtt_contents
  ABISELECT(784,420), // object size
  NSPAIRA(_ZTI8S8033C14),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S8033C14),19, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S8033C14),5, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names37,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8033C13  : S8033C14 , virtual S8033C11 {
  char s8033c13f0;
  int s8033c13f1:32;
  virtual  ~S8033C13(); // _ZN8S8033C13D2Ev
  S8033C13(); // tgen
};
//SIG(-1 S8033C13) C1{ BC2{ BC3{ vd m Fc Fc:0 Fl[8] FD} VBC4{ BC3 VBC5{ BC3 Fp FC6{} Fp FD} vd v1 Fi Fc Fp Fi Fp[2] FC7{ BC5 VBC3 vd FC3 Fp}} vd Fp FL[2] Fc Fp Fi} VBC8{ VBC5 v2 Fc Fs FD Fp[2]} vd Fc Fi:32}


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

static void Test_S8033C13()
{
  extern Class_Descriptor cd_S8033C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(54,115)];
    init_test(&cd_S8033C13, buf);
    S8033C13 *dp, &lv = *(dp=new (buf) S8033C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(848,456), "sizeof(S8033C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S8033C13)");
    /*is_ambiguous_... S8033C14::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8033C14*), 0, "S8033C13");
    /*is_ambiguous_... S8033C6::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8033C6*), ABISELECT(160,92), "S8033C13");
    check_base_class_offset(lv, (S8033C7*)(S8033C8*), ABISELECT(656,352), "S8033C13");
    check_base_class_offset(lv, (S8033C8*)(S8033C6*), ABISELECT(656,352), "S8033C13");
    check_base_class_offset(lv, (S8033C8*)(S8033C11*), ABISELECT(656,352), "S8033C13");
    check_base_class_offset(lv, (S8033C6*)(S8033C14*), ABISELECT(160,92), "S8033C13");
    check_base_class_offset(lv, (S8033C14*), 0, "S8033C13");
    check_base_class_offset(lv, (S8033C11*), ABISELECT(800,428), "S8033C13");
    check_field_offset(lv, s8033c13f0, ABISELECT(140,84), "S8033C13.s8033c13f0");
    set_bf_and_test(lv, s8033c13f1, ABISELECT(144,88), 0, 32, 1, "S8033C13");
    set_bf_and_test(lv, s8033c13f1, ABISELECT(144,88), 0, 32, hide_sll(1LL<<31), "S8033C13");
    test_class_info(&lv, &cd_S8033C13);
    dp->~S8033C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8033C13(Test_S8033C13, "S8033C13", ABISELECT(848,456));

#else // __cplusplus

extern void _ZN8S8033C13C1Ev();
extern void _ZN8S8033C13D2Ev();
Name_Map name_map_S8033C13[] = {
  NSPAIR(_ZN8S8033C13C1Ev),
  NSPAIR(_ZN8S8033C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C8;
extern VTBL_ENTRY _ZTI7S8033C8[];
extern  VTBL_ENTRY _ZTV7S8033C8[];
extern Class_Descriptor cd_S8033C6;
extern VTBL_ENTRY _ZTI7S8033C6[];
extern  VTBL_ENTRY _ZTV7S8033C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8033C6[];
extern Class_Descriptor cd_S8033C14;
extern VTBL_ENTRY _ZTI8S8033C14[];
extern  VTBL_ENTRY _ZTV8S8033C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8033C14[];
extern Class_Descriptor cd_S8033C11;
extern VTBL_ENTRY _ZTI8S8033C11[];
extern  VTBL_ENTRY _ZTV8S8033C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8033C11[];
static Base_Class bases_S8033C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(160,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(656,352), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S8033C8,    ABISELECT(656,352), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S8033C6,    ABISELECT(160,92), //bcp->offset
    7, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S8033C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S8033C11,    ABISELECT(800,428), //bcp->offset
    20, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S8033C13[];
extern void _ZN8S8033C13D1Ev();
extern void _ZN8S8033C13D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S8033C13D1Ev,_ZTv0_n16_N8S8033C13D1Ev)();
extern void ABISELECT(_ZThn160_N8S8033C13D1Ev,_ZThn92_N8S8033C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8033C13D0Ev,_ZTv0_n16_N8S8033C13D0Ev)();
extern void ABISELECT(_ZThn160_N8S8033C13D0Ev,_ZThn92_N8S8033C13D0Ev)() __attribute__((weak));
extern void _ZN7S8033C62v1Ev();
extern void ABISELECT(_ZTv0_n24_N8S8033C13D1Ev,_ZTv0_n12_N8S8033C13D1Ev)();
extern void ABISELECT(_ZThn656_N8S8033C13D1Ev,_ZThn352_N8S8033C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8033C13D0Ev,_ZTv0_n12_N8S8033C13D0Ev)();
extern void ABISELECT(_ZThn656_N8S8033C13D0Ev,_ZThn352_N8S8033C13D0Ev)() __attribute__((weak));
extern void _ZN8S8033C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N8S8033C13D1Ev,_ZTv0_n20_N8S8033C13D1Ev)();
extern void ABISELECT(_ZThn800_N8S8033C13D1Ev,_ZThn428_N8S8033C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S8033C13D0Ev,_ZTv0_n20_N8S8033C13D0Ev)();
extern void ABISELECT(_ZThn800_N8S8033C13D0Ev,_ZThn428_N8S8033C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S8033C13[] = {
  ABISELECT(800,428),
  ABISELECT(656,352),
  ABISELECT(160,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S8033C13[0]),
  (VTBL_ENTRY)&_ZN8S8033C13D1Ev,
  (VTBL_ENTRY)&_ZN8S8033C13D0Ev,
  0,
  ABISELECT(-160,-92),
  ABISELECT(496,260),
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI8S8033C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C13D1Ev,_ZTv0_n16_N8S8033C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C13D0Ev,_ZTv0_n16_N8S8033C13D0Ev),
  (VTBL_ENTRY)&_ZN7S8033C62v1Ev,
  ABISELECT(-656,-352),
  ABISELECT(-656,-352),
  (VTBL_ENTRY)&(_ZTI8S8033C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C13D1Ev,_ZTv0_n12_N8S8033C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C13D0Ev,_ZTv0_n12_N8S8033C13D0Ev),
  ABISELECT(-800,-428),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-800,-428),
  (VTBL_ENTRY)&(_ZTI8S8033C13[0]),
  (VTBL_ENTRY)&_ZN8S8033C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8033C13D1Ev,_ZTv0_n20_N8S8033C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8033C13D0Ev,_ZTv0_n20_N8S8033C13D0Ev),
};
extern VTBL_ENTRY _ZTV8S8033C13[];
extern void _ZN8S8033C14D1Ev();
extern void _ZN8S8033C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8033C14__8S8033C13[] = {
  ABISELECT(656,352),
  ABISELECT(160,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S8033C14[0]),
  (VTBL_ENTRY)&_ZN8S8033C14D1Ev,
  (VTBL_ENTRY)&_ZN8S8033C14D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S8033C14D1Ev,_ZTv0_n16_N8S8033C14D1Ev)();
extern void ABISELECT(_ZThn160_N8S8033C14D1Ev,_ZThn92_N8S8033C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8033C14D0Ev,_ZTv0_n16_N8S8033C14D0Ev)();
extern void ABISELECT(_ZThn160_N8S8033C14D0Ev,_ZThn92_N8S8033C14D0Ev)() __attribute__((weak));
extern void _ZN7S8033C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8033C6__8S8033C14__8S8033C13[] = {
  0,
  ABISELECT(-160,-92),
  ABISELECT(496,260),
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI8S8033C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C14D1Ev,_ZTv0_n16_N8S8033C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C14D0Ev,_ZTv0_n16_N8S8033C14D0Ev),
  (VTBL_ENTRY)&_ZN7S8033C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8033C14D1Ev,_ZTv0_n12_N8S8033C14D1Ev)();
extern void ABISELECT(_ZThn656_N8S8033C14D1Ev,_ZThn352_N8S8033C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8033C14D0Ev,_ZTv0_n12_N8S8033C14D0Ev)();
extern void ABISELECT(_ZThn656_N8S8033C14D0Ev,_ZThn352_N8S8033C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C8__8S8033C14__8S8033C13[] = {
  ABISELECT(-656,-352),
  ABISELECT(-656,-352),
  (VTBL_ENTRY)&(_ZTI8S8033C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C14D1Ev,_ZTv0_n12_N8S8033C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C14D0Ev,_ZTv0_n12_N8S8033C14D0Ev),
};
extern void _ZN7S8033C6D1Ev();
extern void _ZN7S8033C6D0Ev();
extern void _ZN7S8033C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8033C6__8S8033C13[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI7S8033C6[0]),
  (VTBL_ENTRY)&_ZN7S8033C6D1Ev,
  (VTBL_ENTRY)&_ZN7S8033C6D0Ev,
  (VTBL_ENTRY)&_ZN7S8033C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S8033C6D1Ev,_ZTv0_n12_N7S8033C6D1Ev)();
extern void ABISELECT(_ZThn496_N7S8033C6D1Ev,_ZThn260_N7S8033C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8033C6D0Ev,_ZTv0_n12_N7S8033C6D0Ev)();
extern void ABISELECT(_ZThn496_N7S8033C6D0Ev,_ZThn260_N7S8033C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C8__7S8033C6__8S8033C13[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI7S8033C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8033C6D1Ev,_ZTv0_n12_N7S8033C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8033C6D0Ev,_ZTv0_n12_N7S8033C6D0Ev),
};
extern void _ZN8S8033C112v2Ev();
extern void _ZN8S8033C11D1Ev();
extern void _ZN8S8033C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8033C11__8S8033C13[] = {
  ABISELECT(-144,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S8033C11[0]),
  (VTBL_ENTRY)&_ZN8S8033C112v2Ev,
  (VTBL_ENTRY)&_ZN8S8033C11D1Ev,
  (VTBL_ENTRY)&_ZN8S8033C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8033C11D1Ev,_ZTv0_n12_N8S8033C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S8033C11D0Ev,_ZTv0_n12_N8S8033C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S8033C8__8S8033C11__8S8033C13[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S8033C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C11D1Ev,_ZTv0_n12_N8S8033C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C11D0Ev,_ZTv0_n12_N8S8033C11D0Ev),
};
static  VTT_ENTRY vtt_S8033C13[] = {
  {&(_ZTV8S8033C13[5]),  5,28},
  {&(_tg__ZTV8S8033C14__8S8033C13[4]),  4,6},
  {&(_tg__ZTV7S8033C6__8S8033C14__8S8033C13[5]),  5,8},
  {&(_tg__ZTV7S8033C8__8S8033C14__8S8033C13[3]),  3,5},
  {&(_ZTV8S8033C13[12]),  12,28},
  {&(_ZTV8S8033C13[18]),  18,28},
  {&(_ZTV8S8033C13[25]),  25,28},
  {&(_tg__ZTV7S8033C6__8S8033C13[3]),  3,6},
  {&(_tg__ZTV7S8033C8__7S8033C6__8S8033C13[3]),  3,5},
  {&(_tg__ZTV8S8033C11__8S8033C13[3]),  3,6},
  {&(_tg__ZTV7S8033C8__8S8033C11__8S8033C13[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S8033C13[];
extern  VTBL_ENTRY _ZTV8S8033C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8033C13[];
static VTBL_ENTRY alt_thunk_names38[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8033C6D0Ev,_ZTv0_n12_N7S8033C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N7S8033C6D0Ev,_ZThn260_N7S8033C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8033C6D1Ev,_ZTv0_n12_N7S8033C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N7S8033C6D1Ev,_ZThn260_N7S8033C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8033C14D0Ev,_ZTv0_n12_N8S8033C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S8033C14D0Ev,_ZThn352_N8S8033C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8033C14D1Ev,_ZTv0_n12_N8S8033C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S8033C14D1Ev,_ZThn352_N8S8033C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8033C14D0Ev,_ZTv0_n16_N8S8033C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S8033C14D0Ev,_ZThn92_N8S8033C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8033C14D1Ev,_ZTv0_n16_N8S8033C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S8033C14D1Ev,_ZThn92_N8S8033C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S8033C13D0Ev,_ZTv0_n20_N8S8033C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn800_N8S8033C13D0Ev,_ZThn428_N8S8033C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S8033C13D1Ev,_ZTv0_n20_N8S8033C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn800_N8S8033C13D1Ev,_ZThn428_N8S8033C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8033C13D0Ev,_ZTv0_n12_N8S8033C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S8033C13D0Ev,_ZThn352_N8S8033C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8033C13D1Ev,_ZTv0_n12_N8S8033C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S8033C13D1Ev,_ZThn352_N8S8033C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8033C13D0Ev,_ZTv0_n16_N8S8033C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S8033C13D0Ev,_ZThn92_N8S8033C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8033C13D1Ev,_ZTv0_n16_N8S8033C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S8033C13D1Ev,_ZThn92_N8S8033C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S8033C13 = {  "S8033C13", // class name
  bases_S8033C13, 7,
  &(vtc_S8033C13[0]), // expected_vtbl_contents
  &(vtt_S8033C13[0]), // expected_vtt_contents
  ABISELECT(848,456), // object size
  NSPAIRA(_ZTI8S8033C13),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S8033C13),28, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S8033C13),11, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names38,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8033C15  {
  long double s8033c15f0;
  void *s8033c15f1;
  ::S8033C7 s8033c15f2;
  __tsi64 s8033c15f3;
  long double s8033c15f4;
  int s8033c15f5;
  virtual void  v3(); // _ZN8S8033C152v3Ev
  ~S8033C15(); // tgen
  S8033C15(); // tgen
};
//SIG(-1 S8033C15) C1{ v1 FD Fp FC2{ vd m Fc Fc:0 Fl[8] FD} FL FD Fi}


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

static void Test_S8033C15()
{
  extern Class_Descriptor cd_S8033C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,25)];
    init_test(&cd_S8033C15, buf);
    S8033C15 *dp, &lv = *(dp=new (buf) S8033C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,96), "sizeof(S8033C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S8033C15)");
    check_field_offset(lv, s8033c15f0, ABISELECT(16,4), "S8033C15.s8033c15f0");
    check_field_offset(lv, s8033c15f1, ABISELECT(32,16), "S8033C15.s8033c15f1");
    check_field_offset(lv, s8033c15f2, ABISELECT(48,20), "S8033C15.s8033c15f2");
    check_field_offset(lv, s8033c15f3, ABISELECT(144,72), "S8033C15.s8033c15f3");
    check_field_offset(lv, s8033c15f4, ABISELECT(160,80), "S8033C15.s8033c15f4");
    check_field_offset(lv, s8033c15f5, ABISELECT(176,92), "S8033C15.s8033c15f5");
    test_class_info(&lv, &cd_S8033C15);
    dp->~S8033C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8033C15(Test_S8033C15, "S8033C15", ABISELECT(192,96));

#else // __cplusplus

extern void _ZN8S8033C15C1Ev();
extern void _ZN8S8033C15D1Ev();
Name_Map name_map_S8033C15[] = {
  NSPAIR(_ZN8S8033C15C1Ev),
  NSPAIR(_ZN8S8033C15D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S8033C15[];
extern void _ZN8S8033C152v3Ev();
static  VTBL_ENTRY vtc_S8033C15[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S8033C15[0]),
  (VTBL_ENTRY)&_ZN8S8033C152v3Ev,
};
extern VTBL_ENTRY _ZTI8S8033C15[];
extern  VTBL_ENTRY _ZTV8S8033C15[];
Class_Descriptor cd_S8033C15 = {  "S8033C15", // class name
  0,0,//no base classes
  &(vtc_S8033C15[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(192,96), // object size
  NSPAIRA(_ZTI8S8033C15),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S8033C15),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8033C12  : virtual S8033C10 , virtual S8033C6 , virtual S8033C13 , virtual S8033C4 , virtual S8033C15 {
  void *s8033c12f0;
  ::S8033C15 s8033c12f1[3];
  ::S8033C15 s8033c12f2;
  char s8033c12f3;
  virtual  ~S8033C12(); // _ZN8S8033C12D2Ev
  S8033C12(); // tgen
};
//SIG(-1 S8033C12) C1{ VBC2{ BC3{ BC4{ vd m Fc Fc:0 Fl[8] FD} Fp FC5{} Fp FD} VBC4 vd FC4 Fp} VBC6{ BC4 VBC3 vd v1 Fi Fc Fp Fi Fp[2] FC2} VBC7{ BC8{ BC4 VBC6 vd Fp FL[2] Fc Fp Fi} VBC9{ VBC3 v2 Fc Fs FD Fp[2]} vd Fc Fi:32} VBC10{ m Fp[3] FL[8]} VBC11{ v3 FD Fp FC4 FL FD Fi} vd Fp FC11[3] FC11 Fc}


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

static void Test_S8033C12()
{
  extern Class_Descriptor cd_S8033C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(144,303)];
    init_test(&cd_S8033C12, buf);
    S8033C12 *dp, &lv = *(dp=new (buf) S8033C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2288,1208), "sizeof(S8033C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S8033C12)");
    check_base_class_offset(lv, (S8033C7*)(S8033C8*)(S8033C10*), ABISELECT(800,396), "S8033C12");
    check_base_class_offset(lv, (S8033C8*)(S8033C10*), ABISELECT(800,396), "S8033C12");
    /*is_ambiguous_... S8033C10::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8033C10*), ABISELECT(1056,528), "S8033C12");
    check_base_class_offset(lv, (S8033C10*), ABISELECT(800,396), "S8033C12");
    /*is_ambiguous_... S8033C6::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8033C6*), ABISELECT(1152,580), "S8033C12");
    /*is_ambiguous_... S8033C12::S8033C8 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8033C8*), ABISELECT(1648,840), "S8033C12");
    check_base_class_offset(lv, (S8033C8*)(S8033C6*), ABISELECT(1648,840), "S8033C12");
    check_base_class_offset(lv, (S8033C8*)(S8033C11*), ABISELECT(1648,840), "S8033C12");
    check_base_class_offset(lv, (S8033C6*), ABISELECT(1152,580), "S8033C12");
    check_base_class_offset(lv, (S8033C6*)(S8033C14*)(S8033C13*), ABISELECT(1152,580), "S8033C12");
    /*is_ambiguous_... S8033C14::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8033C14*)(S8033C13*), ABISELECT(1792,916), "S8033C12");
    check_base_class_offset(lv, (S8033C14*)(S8033C13*), ABISELECT(1792,916), "S8033C12");
    check_base_class_offset(lv, (S8033C11*)(S8033C13*), ABISELECT(1952,1008), "S8033C12");
    check_base_class_offset(lv, (S8033C13*), ABISELECT(1792,916), "S8033C12");
    check_base_class_offset(lv, (S8033C4*), ABISELECT(2000,1036), "S8033C12");
    check_base_class_offset(lv, (S8033C15*), ABISELECT(2096,1112), "S8033C12");
    check_field_offset(lv, s8033c12f0, ABISELECT(8,4), "S8033C12.s8033c12f0");
    check_field_offset(lv, s8033c12f1, ABISELECT(16,8), "S8033C12.s8033c12f1");
    check_field_offset(lv, s8033c12f2, ABISELECT(592,296), "S8033C12.s8033c12f2");
    check_field_offset(lv, s8033c12f3, ABISELECT(784,392), "S8033C12.s8033c12f3");
    test_class_info(&lv, &cd_S8033C12);
    dp->~S8033C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8033C12(Test_S8033C12, "S8033C12", ABISELECT(2288,1208));

#else // __cplusplus

extern void _ZN8S8033C12C1Ev();
extern void _ZN8S8033C12D2Ev();
Name_Map name_map_S8033C12[] = {
  NSPAIR(_ZN8S8033C12C1Ev),
  NSPAIR(_ZN8S8033C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C8;
extern VTBL_ENTRY _ZTI7S8033C8[];
extern  VTBL_ENTRY _ZTV7S8033C8[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C10;
extern VTBL_ENTRY _ZTI8S8033C10[];
extern  VTBL_ENTRY _ZTV8S8033C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8033C10[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C8;
extern VTBL_ENTRY _ZTI7S8033C8[];
extern  VTBL_ENTRY _ZTV7S8033C8[];
extern Class_Descriptor cd_S8033C6;
extern VTBL_ENTRY _ZTI7S8033C6[];
extern  VTBL_ENTRY _ZTV7S8033C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8033C6[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C14;
extern VTBL_ENTRY _ZTI8S8033C14[];
extern  VTBL_ENTRY _ZTV8S8033C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8033C14[];
extern Class_Descriptor cd_S8033C11;
extern VTBL_ENTRY _ZTI8S8033C11[];
extern  VTBL_ENTRY _ZTV8S8033C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8033C11[];
extern Class_Descriptor cd_S8033C13;
extern VTBL_ENTRY _ZTI8S8033C13[];
extern  VTBL_ENTRY _ZTV8S8033C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8033C13[];
extern Class_Descriptor cd_S8033C4;
extern VTBL_ENTRY _ZTI7S8033C4[];
extern Class_Descriptor cd_S8033C15;
extern VTBL_ENTRY _ZTI8S8033C15[];
extern  VTBL_ENTRY _ZTV8S8033C15[];
static Base_Class bases_S8033C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    ABISELECT(800,396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S8033C8,    ABISELECT(800,396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(1056,528), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S8033C10,    ABISELECT(800,396), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C7,    ABISELECT(1152,580), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(1648,840), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S8033C8,    ABISELECT(1648,840), //bcp->offset
    31, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S8033C6,    ABISELECT(1152,580), //bcp->offset
    23, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C7,    ABISELECT(1792,916), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S8033C14,    ABISELECT(1792,916), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S8033C11,    ABISELECT(1952,1008), //bcp->offset
    44, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S8033C13,    ABISELECT(1792,916), //bcp->offset
    36, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C4,    ABISELECT(2000,1036), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C15,    ABISELECT(2096,1112), //bcp->offset
    52, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S8033C12[];
extern void _ZN8S8033C12D1Ev();
extern void _ZN8S8033C12D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S8033C12D1Ev,_ZTv0_n16_N8S8033C12D1Ev)();
extern void ABISELECT(_ZThn800_N8S8033C12D1Ev,_ZThn396_N8S8033C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8033C12D0Ev,_ZTv0_n16_N8S8033C12D0Ev)();
extern void ABISELECT(_ZThn800_N8S8033C12D0Ev,_ZThn396_N8S8033C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8033C12D1Ev,_ZTv0_n12_N8S8033C12D1Ev)();
extern void ABISELECT(_ZThn1056_N8S8033C12D1Ev,_ZThn528_N8S8033C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8033C12D0Ev,_ZTv0_n12_N8S8033C12D0Ev)();
extern void ABISELECT(_ZThn1056_N8S8033C12D0Ev,_ZThn528_N8S8033C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8033C12D1Ev,_ZTv0_n16_N8S8033C12D1Ev)();
extern void ABISELECT(_ZThn1152_N8S8033C12D1Ev,_ZThn580_N8S8033C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8033C12D0Ev,_ZTv0_n16_N8S8033C12D0Ev)();
extern void ABISELECT(_ZThn1152_N8S8033C12D0Ev,_ZThn580_N8S8033C12D0Ev)() __attribute__((weak));
extern void _ZN7S8033C62v1Ev();
extern void ABISELECT(_ZTv0_n24_N8S8033C12D1Ev,_ZTv0_n12_N8S8033C12D1Ev)();
extern void ABISELECT(_ZThn1648_N8S8033C12D1Ev,_ZThn840_N8S8033C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8033C12D0Ev,_ZTv0_n12_N8S8033C12D0Ev)();
extern void ABISELECT(_ZThn1648_N8S8033C12D0Ev,_ZThn840_N8S8033C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S8033C12D1Ev,_ZTv0_n24_N8S8033C12D1Ev)();
extern void ABISELECT(_ZThn1792_N8S8033C12D1Ev,_ZThn916_N8S8033C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S8033C12D0Ev,_ZTv0_n24_N8S8033C12D0Ev)();
extern void ABISELECT(_ZThn1792_N8S8033C12D0Ev,_ZThn916_N8S8033C12D0Ev)() __attribute__((weak));
extern void _ZN8S8033C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N8S8033C12D1Ev,_ZTv0_n20_N8S8033C12D1Ev)();
extern void ABISELECT(_ZThn1952_N8S8033C12D1Ev,_ZThn1008_N8S8033C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S8033C12D0Ev,_ZTv0_n20_N8S8033C12D0Ev)();
extern void ABISELECT(_ZThn1952_N8S8033C12D0Ev,_ZThn1008_N8S8033C12D0Ev)() __attribute__((weak));
extern void _ZN8S8033C152v3Ev();
static  VTBL_ENTRY vtc_S8033C12[] = {
  ABISELECT(2096,1112),
  ABISELECT(2000,1036),
  ABISELECT(1952,1008),
  ABISELECT(1792,916),
  ABISELECT(1648,840),
  ABISELECT(1152,580),
  ABISELECT(1056,528),
  ABISELECT(800,396),
  0,
  (VTBL_ENTRY)&(_ZTI8S8033C12[0]),
  (VTBL_ENTRY)&_ZN8S8033C12D1Ev,
  (VTBL_ENTRY)&_ZN8S8033C12D0Ev,
  ABISELECT(-800,-396),
  ABISELECT(256,132),
  ABISELECT(-800,-396),
  (VTBL_ENTRY)&(_ZTI8S8033C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C12D1Ev,_ZTv0_n16_N8S8033C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C12D0Ev,_ZTv0_n16_N8S8033C12D0Ev),
  ABISELECT(-1056,-528),
  ABISELECT(-1056,-528),
  (VTBL_ENTRY)&(_ZTI8S8033C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C12D1Ev,_ZTv0_n12_N8S8033C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C12D0Ev,_ZTv0_n12_N8S8033C12D0Ev),
  0,
  ABISELECT(-1152,-580),
  ABISELECT(496,260),
  ABISELECT(-1152,-580),
  (VTBL_ENTRY)&(_ZTI8S8033C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C12D1Ev,_ZTv0_n16_N8S8033C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C12D0Ev,_ZTv0_n16_N8S8033C12D0Ev),
  (VTBL_ENTRY)&_ZN7S8033C62v1Ev,
  ABISELECT(-1648,-840),
  ABISELECT(-1648,-840),
  (VTBL_ENTRY)&(_ZTI8S8033C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C12D1Ev,_ZTv0_n12_N8S8033C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C12D0Ev,_ZTv0_n12_N8S8033C12D0Ev),
  ABISELECT(-1792,-916),
  ABISELECT(160,92),
  ABISELECT(-144,-76),
  ABISELECT(-640,-336),
  ABISELECT(-1792,-916),
  (VTBL_ENTRY)&(_ZTI8S8033C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S8033C12D1Ev,_ZTv0_n24_N8S8033C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S8033C12D0Ev,_ZTv0_n24_N8S8033C12D0Ev),
  ABISELECT(-1952,-1008),
  0,
  ABISELECT(-304,-168),
  ABISELECT(-1952,-1008),
  (VTBL_ENTRY)&(_ZTI8S8033C12[0]),
  (VTBL_ENTRY)&_ZN8S8033C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8033C12D1Ev,_ZTv0_n20_N8S8033C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8033C12D0Ev,_ZTv0_n20_N8S8033C12D0Ev),
  0,
  ABISELECT(-2096,-1112),
  (VTBL_ENTRY)&(_ZTI8S8033C12[0]),
  (VTBL_ENTRY)&_ZN8S8033C152v3Ev,
};
extern VTBL_ENTRY _ZTV8S8033C12[];
extern void _ZN8S8033C10D1Ev();
extern void _ZN8S8033C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8033C10__8S8033C12[] = {
  ABISELECT(256,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S8033C10[0]),
  (VTBL_ENTRY)&_ZN8S8033C10D1Ev,
  (VTBL_ENTRY)&_ZN8S8033C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8033C10D1Ev,_ZTv0_n12_N8S8033C10D1Ev)();
extern void ABISELECT(_ZThn256_N8S8033C10D1Ev,_ZThn132_N8S8033C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8033C10D0Ev,_ZTv0_n12_N8S8033C10D0Ev)();
extern void ABISELECT(_ZThn256_N8S8033C10D0Ev,_ZThn132_N8S8033C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__8S8033C10__8S8033C12[] = {
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  (VTBL_ENTRY)&(_ZTI8S8033C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C10D1Ev,_ZTv0_n12_N8S8033C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C10D0Ev,_ZTv0_n12_N8S8033C10D0Ev),
};
extern void _ZN7S8033C6D1Ev();
extern void _ZN7S8033C6D0Ev();
extern void _ZN7S8033C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8033C6__8S8033C12[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI7S8033C6[0]),
  (VTBL_ENTRY)&_ZN7S8033C6D1Ev,
  (VTBL_ENTRY)&_ZN7S8033C6D0Ev,
  (VTBL_ENTRY)&_ZN7S8033C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S8033C6D1Ev,_ZTv0_n12_N7S8033C6D1Ev)();
extern void ABISELECT(_ZThn496_N7S8033C6D1Ev,_ZThn260_N7S8033C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8033C6D0Ev,_ZTv0_n12_N7S8033C6D0Ev)();
extern void ABISELECT(_ZThn496_N7S8033C6D0Ev,_ZThn260_N7S8033C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C8__7S8033C6__8S8033C12[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI7S8033C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8033C6D1Ev,_ZTv0_n12_N7S8033C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8033C6D0Ev,_ZTv0_n12_N7S8033C6D0Ev),
};
extern void _ZN8S8033C13D1Ev();
extern void _ZN8S8033C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8033C13__8S8033C12[] = {
  ABISELECT(160,92),
  ABISELECT(-144,-76),
  ABISELECT(-640,-336),
  0,
  (VTBL_ENTRY)&(_ZTI8S8033C13[0]),
  (VTBL_ENTRY)&_ZN8S8033C13D1Ev,
  (VTBL_ENTRY)&_ZN8S8033C13D0Ev,
};
extern void _ZN8S8033C14D1Ev();
extern void _ZN8S8033C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8033C148S8033C13__8S8033C12[] = {
  ABISELECT(-144,-76),
  ABISELECT(-640,-336),
  0,
  (VTBL_ENTRY)&(_ZTI8S8033C14[0]),
  (VTBL_ENTRY)&_ZN8S8033C14D1Ev,
  (VTBL_ENTRY)&_ZN8S8033C14D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S8033C14D1Ev,_ZTv0_n16_N8S8033C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S8033C14D0Ev,_ZTv0_n16_N8S8033C14D0Ev)();
extern void _ZN7S8033C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8033C6__8S8033C148S8033C13__8S8033C12[] = {
  0,
  ABISELECT(640,336),
  ABISELECT(496,260),
  ABISELECT(640,336),
  (VTBL_ENTRY)&(_ZTI8S8033C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C14D1Ev,_ZTv0_n16_N8S8033C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C14D0Ev,_ZTv0_n16_N8S8033C14D0Ev),
  (VTBL_ENTRY)&_ZN7S8033C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8033C14D1Ev,_ZTv0_n12_N8S8033C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S8033C14D0Ev,_ZTv0_n12_N8S8033C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S8033C8__8S8033C148S8033C13__8S8033C12[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S8033C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C14D1Ev,_ZTv0_n12_N8S8033C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C14D0Ev,_ZTv0_n12_N8S8033C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S8033C13D1Ev,_ZTv0_n16_N8S8033C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S8033C13D0Ev,_ZTv0_n16_N8S8033C13D0Ev)();
extern void _ZN7S8033C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8033C6__8S8033C13__8S8033C12[] = {
  0,
  ABISELECT(640,336),
  ABISELECT(496,260),
  ABISELECT(640,336),
  (VTBL_ENTRY)&(_ZTI8S8033C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C13D1Ev,_ZTv0_n16_N8S8033C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C13D0Ev,_ZTv0_n16_N8S8033C13D0Ev),
  (VTBL_ENTRY)&_ZN7S8033C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8033C13D1Ev,_ZTv0_n12_N8S8033C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S8033C13D0Ev,_ZTv0_n12_N8S8033C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S8033C8__8S8033C13__8S8033C12[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S8033C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C13D1Ev,_ZTv0_n12_N8S8033C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C13D0Ev,_ZTv0_n12_N8S8033C13D0Ev),
};
extern void _ZN8S8033C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N8S8033C13D1Ev,_ZTv0_n20_N8S8033C13D1Ev)();
extern void ABISELECT(_ZThn160_N8S8033C13D1Ev,_ZThn92_N8S8033C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S8033C13D0Ev,_ZTv0_n20_N8S8033C13D0Ev)();
extern void ABISELECT(_ZThn160_N8S8033C13D0Ev,_ZThn92_N8S8033C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8033C11__8S8033C13__8S8033C12[] = {
  ABISELECT(-160,-92),
  0,
  ABISELECT(-304,-168),
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI8S8033C13[0]),
  (VTBL_ENTRY)&_ZN8S8033C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8033C13D1Ev,_ZTv0_n20_N8S8033C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8033C13D0Ev,_ZTv0_n20_N8S8033C13D0Ev),
};
extern void _ZN8S8033C112v2Ev();
extern void _ZN8S8033C11D1Ev();
extern void _ZN8S8033C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8033C11__8S8033C12[] = {
  ABISELECT(-304,-168),
  0,
  (VTBL_ENTRY)&(_ZTI8S8033C11[0]),
  (VTBL_ENTRY)&_ZN8S8033C112v2Ev,
  (VTBL_ENTRY)&_ZN8S8033C11D1Ev,
  (VTBL_ENTRY)&_ZN8S8033C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8033C11D1Ev,_ZTv0_n12_N8S8033C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S8033C11D0Ev,_ZTv0_n12_N8S8033C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S8033C8__8S8033C11__8S8033C12[] = {
  ABISELECT(304,168),
  ABISELECT(304,168),
  (VTBL_ENTRY)&(_ZTI8S8033C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C11D1Ev,_ZTv0_n12_N8S8033C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C11D0Ev,_ZTv0_n12_N8S8033C11D0Ev),
};
static  VTT_ENTRY vtt_S8033C12[] = {
  {&(_ZTV8S8033C12[10]),  10,56},
  {&(_ZTV8S8033C12[16]),  16,56},
  {&(_ZTV8S8033C12[21]),  21,56},
  {&(_ZTV8S8033C12[28]),  28,56},
  {&(_ZTV8S8033C12[34]),  34,56},
  {&(_ZTV8S8033C12[42]),  42,56},
  {&(_ZTV8S8033C12[49]),  49,56},
  {&(_ZTV8S8033C12[55]),  55,56},
  {&(_tg__ZTV8S8033C10__8S8033C12[3]),  3,5},
  {&(_tg__ZTV7S8033C7__A1__8S8033C10__8S8033C12[3]),  3,5},
  {&(_tg__ZTV7S8033C6__8S8033C12[3]),  3,6},
  {&(_tg__ZTV7S8033C8__7S8033C6__8S8033C12[3]),  3,5},
  {&(_tg__ZTV8S8033C13__8S8033C12[5]),  5,7},
  {&(_tg__ZTV8S8033C148S8033C13__8S8033C12[4]),  4,6},
  {&(_tg__ZTV7S8033C6__8S8033C148S8033C13__8S8033C12[5]),  5,8},
  {&(_tg__ZTV7S8033C8__8S8033C148S8033C13__8S8033C12[3]),  3,5},
  {&(_tg__ZTV7S8033C6__8S8033C13__8S8033C12[5]),  5,8},
  {&(_tg__ZTV7S8033C8__8S8033C13__8S8033C12[3]),  3,5},
  {&(_tg__ZTV8S8033C11__8S8033C13__8S8033C12[5]),  5,8},
  {&(_tg__ZTV8S8033C11__8S8033C12[3]),  3,6},
  {&(_tg__ZTV7S8033C8__8S8033C11__8S8033C12[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S8033C12[];
extern  VTBL_ENTRY _ZTV8S8033C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8033C12[];
static VTBL_ENTRY alt_thunk_names39[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S8033C13D0Ev,_ZTv0_n20_N8S8033C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S8033C13D0Ev,_ZThn92_N8S8033C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S8033C13D1Ev,_ZTv0_n20_N8S8033C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S8033C13D1Ev,_ZThn92_N8S8033C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8033C6D0Ev,_ZTv0_n12_N7S8033C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N7S8033C6D0Ev,_ZThn260_N7S8033C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8033C6D1Ev,_ZTv0_n12_N7S8033C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N7S8033C6D1Ev,_ZThn260_N7S8033C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8033C10D0Ev,_ZTv0_n12_N8S8033C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S8033C10D0Ev,_ZThn132_N8S8033C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8033C10D1Ev,_ZTv0_n12_N8S8033C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S8033C10D1Ev,_ZThn132_N8S8033C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S8033C12D0Ev,_ZTv0_n20_N8S8033C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1952_N8S8033C12D0Ev,_ZThn1008_N8S8033C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S8033C12D1Ev,_ZTv0_n20_N8S8033C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1952_N8S8033C12D1Ev,_ZThn1008_N8S8033C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S8033C12D0Ev,_ZTv0_n24_N8S8033C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1792_N8S8033C12D0Ev,_ZThn916_N8S8033C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S8033C12D1Ev,_ZTv0_n24_N8S8033C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1792_N8S8033C12D1Ev,_ZThn916_N8S8033C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8033C12D0Ev,_ZTv0_n12_N8S8033C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1648_N8S8033C12D0Ev,_ZThn840_N8S8033C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1056_N8S8033C12D0Ev,_ZThn528_N8S8033C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8033C12D1Ev,_ZTv0_n12_N8S8033C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1648_N8S8033C12D1Ev,_ZThn840_N8S8033C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1056_N8S8033C12D1Ev,_ZThn528_N8S8033C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8033C12D0Ev,_ZTv0_n16_N8S8033C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1152_N8S8033C12D0Ev,_ZThn580_N8S8033C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn800_N8S8033C12D0Ev,_ZThn396_N8S8033C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8033C12D1Ev,_ZTv0_n16_N8S8033C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1152_N8S8033C12D1Ev,_ZThn580_N8S8033C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn800_N8S8033C12D1Ev,_ZThn396_N8S8033C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S8033C12 = {  "S8033C12", // class name
  bases_S8033C12, 14,
  &(vtc_S8033C12[0]), // expected_vtbl_contents
  &(vtt_S8033C12[0]), // expected_vtt_contents
  ABISELECT(2288,1208), // object size
  NSPAIRA(_ZTI8S8033C12),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S8033C12),56, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S8033C12),21, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names39,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8033C5  : virtual S8033C6 , S8033C4 , virtual S8033C11 , S8033C12 {
  ::S8033C15 s8033c5f0;
  void *s8033c5f1;
  __tsi64 s8033c5f2[2];
  int s8033c5f3:31;
  int s8033c5f4;
  ::S20291C14_nt s8033c5f5;
  ::S8033C15 s8033c5f6;
  ::S8033C15 s8033c5f7;
  void *s8033c5f8;
  ~S8033C5(); // tgen
  S8033C5(); // tgen
};
//SIG(-1 S8033C5) C1{ VBC2{ BC3{ vd m Fc Fc:0 Fl[8] FD} VBC4{ BC3 Fp FC5{} Fp FD} vd v1 Fi Fc Fp Fi Fp[2] FC6{ BC4 VBC3 vd FC3 Fp}} BC7{ m Fp[3] FL[8]} VBC8{ VBC4 v2 Fc Fs FD Fp[2]} BC9{ VBC6 VBC2 VBC10{ BC11{ BC3 VBC2 vd Fp FL[2] Fc Fp Fi} VBC8 vd Fc Fi:32} VBC7 VBC12{ v3 FD Fp FC3 FL FD Fi} vd Fp FC12[3] FC12 Fc} FC12 Fp FL[2] Fi:31 Fi FC5 FC12 FC12 Fp}


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

static void Test_S8033C5()
{
  extern Class_Descriptor cd_S8033C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(188,403)];
    init_test(&cd_S8033C5, buf);
    S8033C5 *dp, &lv = *(dp=new (buf) S8033C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2992,1608), "sizeof(S8033C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S8033C5)");
    /*is_ambiguous_... S8033C6::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8033C6*), ABISELECT(1520,796), "S8033C5");
    /*is_ambiguous_... S8033C5::S8033C8 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8033C8*), ABISELECT(2016,1056), "S8033C5");
    check_base_class_offset(lv, (S8033C8*)(S8033C6*), ABISELECT(2016,1056), "S8033C5");
    check_base_class_offset(lv, (S8033C8*)(S8033C11*), ABISELECT(2016,1056), "S8033C5");
    check_base_class_offset(lv, (S8033C6*), ABISELECT(1520,796), "S8033C5");
    check_base_class_offset(lv, (S8033C6*)(S8033C12*), ABISELECT(1520,796), "S8033C5");
    check_base_class_offset(lv, (S8033C6*)(S8033C14*)(S8033C13*), ABISELECT(1520,796), "S8033C5");
    /*is_ambiguous_... S8033C5::S8033C4 */ AMB_check_base_class_offset(lv, (S8033C4*), ABISELECT(792,396), "S8033C5");
    check_base_class_offset(lv, (S8033C11*), ABISELECT(2160,1132), "S8033C5");
    check_base_class_offset(lv, (S8033C11*)(S8033C13*), ABISELECT(2160,1132), "S8033C5");
    check_base_class_offset(lv, (S8033C7*)(S8033C8*)(S8033C10*), ABISELECT(2208,1160), "S8033C5");
    check_base_class_offset(lv, (S8033C8*)(S8033C10*), ABISELECT(2208,1160), "S8033C5");
    /*is_ambiguous_... S8033C10::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8033C10*), ABISELECT(2464,1292), "S8033C5");
    check_base_class_offset(lv, (S8033C10*)(S8033C12*), ABISELECT(2208,1160), "S8033C5");
    /*is_ambiguous_... S8033C14::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8033C14*)(S8033C13*), ABISELECT(2560,1344), "S8033C5");
    check_base_class_offset(lv, (S8033C14*)(S8033C13*), ABISELECT(2560,1344), "S8033C5");
    check_base_class_offset(lv, (S8033C13*)(S8033C12*), ABISELECT(2560,1344), "S8033C5");
    check_base_class_offset(lv, (S8033C4*)(S8033C12*), ABISELECT(2712,1436), "S8033C5");
    check_base_class_offset(lv, (S8033C15*)(S8033C12*), ABISELECT(2800,1512), "S8033C5");
    check_base_class_offset(lv, (S8033C12*), 0, "S8033C5");
    check_field_offset(lv, s8033c5f0, ABISELECT(880,472), "S8033C5.s8033c5f0");
    check_field_offset(lv, s8033c5f1, ABISELECT(1072,568), "S8033C5.s8033c5f1");
    check_field_offset(lv, s8033c5f2, ABISELECT(1080,572), "S8033C5.s8033c5f2");
    set_bf_and_test(lv, s8033c5f3, ABISELECT(1096,588), 0, 31, 1, "S8033C5");
    set_bf_and_test(lv, s8033c5f3, ABISELECT(1096,588), 0, 31, hide_sll(1LL<<30), "S8033C5");
    check_field_offset(lv, s8033c5f4, ABISELECT(1100,592), "S8033C5.s8033c5f4");
    check_field_offset(lv, s8033c5f5, ABISELECT(1104,596), "S8033C5.s8033c5f5");
    check_field_offset(lv, s8033c5f6, ABISELECT(1120,600), "S8033C5.s8033c5f6");
    check_field_offset(lv, s8033c5f7, ABISELECT(1312,696), "S8033C5.s8033c5f7");
    check_field_offset(lv, s8033c5f8, ABISELECT(1504,792), "S8033C5.s8033c5f8");
    test_class_info(&lv, &cd_S8033C5);
    dp->~S8033C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8033C5(Test_S8033C5, "S8033C5", ABISELECT(2992,1608));

#else // __cplusplus

extern void _ZN7S8033C5C1Ev();
extern void _ZN7S8033C5D1Ev();
Name_Map name_map_S8033C5[] = {
  NSPAIR(_ZN7S8033C5C1Ev),
  NSPAIR(_ZN7S8033C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C8;
extern VTBL_ENTRY _ZTI7S8033C8[];
extern  VTBL_ENTRY _ZTV7S8033C8[];
extern Class_Descriptor cd_S8033C6;
extern VTBL_ENTRY _ZTI7S8033C6[];
extern  VTBL_ENTRY _ZTV7S8033C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8033C6[];
extern Class_Descriptor cd_S8033C4;
extern VTBL_ENTRY _ZTI7S8033C4[];
extern Class_Descriptor cd_S8033C11;
extern VTBL_ENTRY _ZTI8S8033C11[];
extern  VTBL_ENTRY _ZTV8S8033C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8033C11[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C8;
extern VTBL_ENTRY _ZTI7S8033C8[];
extern  VTBL_ENTRY _ZTV7S8033C8[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C10;
extern VTBL_ENTRY _ZTI8S8033C10[];
extern  VTBL_ENTRY _ZTV8S8033C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8033C10[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C14;
extern VTBL_ENTRY _ZTI8S8033C14[];
extern  VTBL_ENTRY _ZTV8S8033C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8033C14[];
extern Class_Descriptor cd_S8033C13;
extern VTBL_ENTRY _ZTI8S8033C13[];
extern  VTBL_ENTRY _ZTV8S8033C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8033C13[];
extern Class_Descriptor cd_S8033C4;
extern VTBL_ENTRY _ZTI7S8033C4[];
extern Class_Descriptor cd_S8033C15;
extern VTBL_ENTRY _ZTI8S8033C15[];
extern  VTBL_ENTRY _ZTV8S8033C15[];
extern Class_Descriptor cd_S8033C12;
extern VTBL_ENTRY _ZTI8S8033C12[];
extern  VTBL_ENTRY _ZTV8S8033C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8033C12[];
static Base_Class bases_S8033C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    ABISELECT(1520,796), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(2016,1056), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S8033C8,    ABISELECT(2016,1056), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S8033C6,    ABISELECT(1520,796), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C4,    ABISELECT(792,396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S8033C11,    ABISELECT(2160,1132), //bcp->offset
    25, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C7,    ABISELECT(2208,1160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S8033C8,    ABISELECT(2208,1160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(2464,1292), //bcp->offset
    39, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S8033C10,    ABISELECT(2208,1160), //bcp->offset
    33, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S8033C7,    ABISELECT(2560,1344), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S8033C14,    ABISELECT(2560,1344), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S8033C13,    ABISELECT(2560,1344), //bcp->offset
    44, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S8033C4,    ABISELECT(2712,1436), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S8033C15,    ABISELECT(2800,1512), //bcp->offset
    52, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S8033C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8033C5[];
extern void _ZN7S8033C5D1Ev();
extern void _ZN7S8033C5D0Ev();
extern void ABISELECT(_ZTv0_n32_N7S8033C5D1Ev,_ZTv0_n16_N7S8033C5D1Ev)();
extern void ABISELECT(_ZThn1520_N7S8033C5D1Ev,_ZThn796_N7S8033C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S8033C5D0Ev,_ZTv0_n16_N7S8033C5D0Ev)();
extern void ABISELECT(_ZThn1520_N7S8033C5D0Ev,_ZThn796_N7S8033C5D0Ev)() __attribute__((weak));
extern void _ZN7S8033C62v1Ev();
extern void ABISELECT(_ZTv0_n24_N7S8033C5D1Ev,_ZTv0_n12_N7S8033C5D1Ev)();
extern void ABISELECT(_ZThn2016_N7S8033C5D1Ev,_ZThn1056_N7S8033C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8033C5D0Ev,_ZTv0_n12_N7S8033C5D0Ev)();
extern void ABISELECT(_ZThn2016_N7S8033C5D0Ev,_ZThn1056_N7S8033C5D0Ev)() __attribute__((weak));
extern void _ZN8S8033C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N7S8033C5D1Ev,_ZTv0_n20_N7S8033C5D1Ev)();
extern void ABISELECT(_ZThn2160_N7S8033C5D1Ev,_ZThn1132_N7S8033C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S8033C5D0Ev,_ZTv0_n20_N7S8033C5D0Ev)();
extern void ABISELECT(_ZThn2160_N7S8033C5D0Ev,_ZThn1132_N7S8033C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S8033C5D1Ev,_ZTv0_n16_N7S8033C5D1Ev)();
extern void ABISELECT(_ZThn2208_N7S8033C5D1Ev,_ZThn1160_N7S8033C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S8033C5D0Ev,_ZTv0_n16_N7S8033C5D0Ev)();
extern void ABISELECT(_ZThn2208_N7S8033C5D0Ev,_ZThn1160_N7S8033C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8033C5D1Ev,_ZTv0_n12_N7S8033C5D1Ev)();
extern void ABISELECT(_ZThn2464_N7S8033C5D1Ev,_ZThn1292_N7S8033C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8033C5D0Ev,_ZTv0_n12_N7S8033C5D0Ev)();
extern void ABISELECT(_ZThn2464_N7S8033C5D0Ev,_ZThn1292_N7S8033C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S8033C5D1Ev,_ZTv0_n24_N7S8033C5D1Ev)();
extern void ABISELECT(_ZThn2560_N7S8033C5D1Ev,_ZThn1344_N7S8033C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S8033C5D0Ev,_ZTv0_n24_N7S8033C5D0Ev)();
extern void ABISELECT(_ZThn2560_N7S8033C5D0Ev,_ZThn1344_N7S8033C5D0Ev)() __attribute__((weak));
extern void _ZN8S8033C152v3Ev();
static  VTBL_ENTRY vtc_S8033C5[] = {
  ABISELECT(2800,1512),
  ABISELECT(2712,1436),
  ABISELECT(2160,1132),
  ABISELECT(2560,1344),
  ABISELECT(2016,1056),
  ABISELECT(1520,796),
  ABISELECT(2464,1292),
  ABISELECT(2208,1160),
  0,
  (VTBL_ENTRY)&(_ZTI7S8033C5[0]),
  (VTBL_ENTRY)&_ZN7S8033C5D1Ev,
  (VTBL_ENTRY)&_ZN7S8033C5D0Ev,
  0,
  ABISELECT(-1520,-796),
  ABISELECT(496,260),
  ABISELECT(-1520,-796),
  (VTBL_ENTRY)&(_ZTI7S8033C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8033C5D1Ev,_ZTv0_n16_N7S8033C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8033C5D0Ev,_ZTv0_n16_N7S8033C5D0Ev),
  (VTBL_ENTRY)&_ZN7S8033C62v1Ev,
  ABISELECT(-2016,-1056),
  ABISELECT(-2016,-1056),
  (VTBL_ENTRY)&(_ZTI7S8033C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8033C5D1Ev,_ZTv0_n12_N7S8033C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8033C5D0Ev,_ZTv0_n12_N7S8033C5D0Ev),
  ABISELECT(-2160,-1132),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-2160,-1132),
  (VTBL_ENTRY)&(_ZTI7S8033C5[0]),
  (VTBL_ENTRY)&_ZN8S8033C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S8033C5D1Ev,_ZTv0_n20_N7S8033C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S8033C5D0Ev,_ZTv0_n20_N7S8033C5D0Ev),
  ABISELECT(-2208,-1160),
  ABISELECT(256,132),
  ABISELECT(-2208,-1160),
  (VTBL_ENTRY)&(_ZTI7S8033C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8033C5D1Ev,_ZTv0_n16_N7S8033C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8033C5D0Ev,_ZTv0_n16_N7S8033C5D0Ev),
  ABISELECT(-2464,-1292),
  ABISELECT(-2464,-1292),
  (VTBL_ENTRY)&(_ZTI7S8033C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8033C5D1Ev,_ZTv0_n12_N7S8033C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8033C5D0Ev,_ZTv0_n12_N7S8033C5D0Ev),
  ABISELECT(-2560,-1344),
  ABISELECT(-400,-212),
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  ABISELECT(-2560,-1344),
  (VTBL_ENTRY)&(_ZTI7S8033C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S8033C5D1Ev,_ZTv0_n24_N7S8033C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S8033C5D0Ev,_ZTv0_n24_N7S8033C5D0Ev),
  0,
  ABISELECT(-2800,-1512),
  (VTBL_ENTRY)&(_ZTI7S8033C5[0]),
  (VTBL_ENTRY)&_ZN8S8033C152v3Ev,
};
extern VTBL_ENTRY _ZTV7S8033C5[];
extern void _ZN8S8033C12D1Ev();
extern void _ZN8S8033C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8033C12__7S8033C5[] = {
  ABISELECT(2800,1512),
  ABISELECT(2712,1436),
  ABISELECT(2160,1132),
  ABISELECT(2560,1344),
  ABISELECT(2016,1056),
  ABISELECT(1520,796),
  ABISELECT(2464,1292),
  ABISELECT(2208,1160),
  0,
  (VTBL_ENTRY)&(_ZTI8S8033C12[0]),
  (VTBL_ENTRY)&_ZN8S8033C12D1Ev,
  (VTBL_ENTRY)&_ZN8S8033C12D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S8033C12D1Ev,_ZTv0_n16_N8S8033C12D1Ev)();
extern void ABISELECT(_ZThn2208_N8S8033C12D1Ev,_ZThn1160_N8S8033C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8033C12D0Ev,_ZTv0_n16_N8S8033C12D0Ev)();
extern void ABISELECT(_ZThn2208_N8S8033C12D0Ev,_ZThn1160_N8S8033C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8033C10__8S8033C12__7S8033C5[] = {
  ABISELECT(-2208,-1160),
  ABISELECT(256,132),
  ABISELECT(-2208,-1160),
  (VTBL_ENTRY)&(_ZTI8S8033C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C12D1Ev,_ZTv0_n16_N8S8033C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C12D0Ev,_ZTv0_n16_N8S8033C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S8033C12D1Ev,_ZTv0_n12_N8S8033C12D1Ev)();
extern void ABISELECT(_ZThn2464_N8S8033C12D1Ev,_ZThn1292_N8S8033C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8033C12D0Ev,_ZTv0_n12_N8S8033C12D0Ev)();
extern void ABISELECT(_ZThn2464_N8S8033C12D0Ev,_ZThn1292_N8S8033C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__8S8033C12__7S8033C5[] = {
  ABISELECT(-2464,-1292),
  ABISELECT(-2464,-1292),
  (VTBL_ENTRY)&(_ZTI8S8033C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C12D1Ev,_ZTv0_n12_N8S8033C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C12D0Ev,_ZTv0_n12_N8S8033C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S8033C12D1Ev,_ZTv0_n16_N8S8033C12D1Ev)();
extern void ABISELECT(_ZThn1520_N8S8033C12D1Ev,_ZThn796_N8S8033C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8033C12D0Ev,_ZTv0_n16_N8S8033C12D0Ev)();
extern void ABISELECT(_ZThn1520_N8S8033C12D0Ev,_ZThn796_N8S8033C12D0Ev)() __attribute__((weak));
extern void _ZN7S8033C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8033C6__8S8033C12__7S8033C5[] = {
  0,
  ABISELECT(-1520,-796),
  ABISELECT(496,260),
  ABISELECT(-1520,-796),
  (VTBL_ENTRY)&(_ZTI8S8033C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C12D1Ev,_ZTv0_n16_N8S8033C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C12D0Ev,_ZTv0_n16_N8S8033C12D0Ev),
  (VTBL_ENTRY)&_ZN7S8033C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8033C12D1Ev,_ZTv0_n12_N8S8033C12D1Ev)();
extern void ABISELECT(_ZThn2016_N8S8033C12D1Ev,_ZThn1056_N8S8033C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8033C12D0Ev,_ZTv0_n12_N8S8033C12D0Ev)();
extern void ABISELECT(_ZThn2016_N8S8033C12D0Ev,_ZThn1056_N8S8033C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C8__A1__8S8033C12__7S8033C5[] = {
  ABISELECT(-2016,-1056),
  ABISELECT(-2016,-1056),
  (VTBL_ENTRY)&(_ZTI8S8033C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C12D1Ev,_ZTv0_n12_N8S8033C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C12D0Ev,_ZTv0_n12_N8S8033C12D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S8033C12D1Ev,_ZTv0_n24_N8S8033C12D1Ev)();
extern void ABISELECT(_ZThn2560_N8S8033C12D1Ev,_ZThn1344_N8S8033C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S8033C12D0Ev,_ZTv0_n24_N8S8033C12D0Ev)();
extern void ABISELECT(_ZThn2560_N8S8033C12D0Ev,_ZThn1344_N8S8033C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8033C13__8S8033C12__7S8033C5[] = {
  ABISELECT(-2560,-1344),
  ABISELECT(-400,-212),
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  ABISELECT(-2560,-1344),
  (VTBL_ENTRY)&(_ZTI8S8033C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S8033C12D1Ev,_ZTv0_n24_N8S8033C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S8033C12D0Ev,_ZTv0_n24_N8S8033C12D0Ev),
};
extern void _ZN8S8033C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N8S8033C12D1Ev,_ZTv0_n20_N8S8033C12D1Ev)();
extern void ABISELECT(_ZThn2160_N8S8033C12D1Ev,_ZThn1132_N8S8033C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S8033C12D0Ev,_ZTv0_n20_N8S8033C12D0Ev)();
extern void ABISELECT(_ZThn2160_N8S8033C12D0Ev,_ZThn1132_N8S8033C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8033C11__8S8033C12__7S8033C5[] = {
  ABISELECT(-2160,-1132),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-2160,-1132),
  (VTBL_ENTRY)&(_ZTI8S8033C12[0]),
  (VTBL_ENTRY)&_ZN8S8033C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8033C12D1Ev,_ZTv0_n20_N8S8033C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8033C12D0Ev,_ZTv0_n20_N8S8033C12D0Ev),
};
extern void _ZN8S8033C152v3Ev();
static  VTBL_ENTRY _tg__ZTV8S8033C15__8S8033C12__7S8033C5[] = {
  0,
  ABISELECT(-2800,-1512),
  (VTBL_ENTRY)&(_ZTI8S8033C12[0]),
  (VTBL_ENTRY)&_ZN8S8033C152v3Ev,
};
extern void _ZN7S8033C6D1Ev();
extern void _ZN7S8033C6D0Ev();
extern void _ZN7S8033C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8033C6__7S8033C5[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI7S8033C6[0]),
  (VTBL_ENTRY)&_ZN7S8033C6D1Ev,
  (VTBL_ENTRY)&_ZN7S8033C6D0Ev,
  (VTBL_ENTRY)&_ZN7S8033C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S8033C6D1Ev,_ZTv0_n12_N7S8033C6D1Ev)();
extern void ABISELECT(_ZThn496_N7S8033C6D1Ev,_ZThn260_N7S8033C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8033C6D0Ev,_ZTv0_n12_N7S8033C6D0Ev)();
extern void ABISELECT(_ZThn496_N7S8033C6D0Ev,_ZThn260_N7S8033C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C8__7S8033C6__7S8033C5[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI7S8033C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8033C6D1Ev,_ZTv0_n12_N7S8033C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8033C6D0Ev,_ZTv0_n12_N7S8033C6D0Ev),
};
extern void _ZN8S8033C112v2Ev();
extern void _ZN8S8033C11D1Ev();
extern void _ZN8S8033C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8033C11__7S8033C5[] = {
  ABISELECT(-144,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S8033C11[0]),
  (VTBL_ENTRY)&_ZN8S8033C112v2Ev,
  (VTBL_ENTRY)&_ZN8S8033C11D1Ev,
  (VTBL_ENTRY)&_ZN8S8033C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8033C11D1Ev,_ZTv0_n12_N8S8033C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S8033C11D0Ev,_ZTv0_n12_N8S8033C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S8033C8__8S8033C11__7S8033C5[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S8033C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C11D1Ev,_ZTv0_n12_N8S8033C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C11D0Ev,_ZTv0_n12_N8S8033C11D0Ev),
};
extern void _ZN8S8033C10D1Ev();
extern void _ZN8S8033C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8033C10__7S8033C5[] = {
  ABISELECT(256,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S8033C10[0]),
  (VTBL_ENTRY)&_ZN8S8033C10D1Ev,
  (VTBL_ENTRY)&_ZN8S8033C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8033C10D1Ev,_ZTv0_n12_N8S8033C10D1Ev)();
extern void ABISELECT(_ZThn256_N8S8033C10D1Ev,_ZThn132_N8S8033C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8033C10D0Ev,_ZTv0_n12_N8S8033C10D0Ev)();
extern void ABISELECT(_ZThn256_N8S8033C10D0Ev,_ZThn132_N8S8033C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__8S8033C10__7S8033C5[] = {
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  (VTBL_ENTRY)&(_ZTI8S8033C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C10D1Ev,_ZTv0_n12_N8S8033C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C10D0Ev,_ZTv0_n12_N8S8033C10D0Ev),
};
extern void _ZN8S8033C13D1Ev();
extern void _ZN8S8033C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8033C13__7S8033C5[] = {
  ABISELECT(-400,-212),
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  0,
  (VTBL_ENTRY)&(_ZTI8S8033C13[0]),
  (VTBL_ENTRY)&_ZN8S8033C13D1Ev,
  (VTBL_ENTRY)&_ZN8S8033C13D0Ev,
};
extern void _ZN8S8033C14D1Ev();
extern void _ZN8S8033C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8033C148S8033C13__7S8033C5[] = {
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  0,
  (VTBL_ENTRY)&(_ZTI8S8033C14[0]),
  (VTBL_ENTRY)&_ZN8S8033C14D1Ev,
  (VTBL_ENTRY)&_ZN8S8033C14D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S8033C14D1Ev,_ZTv0_n16_N8S8033C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S8033C14D0Ev,_ZTv0_n16_N8S8033C14D0Ev)();
extern void _ZN7S8033C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8033C6__8S8033C148S8033C13__7S8033C5[] = {
  0,
  ABISELECT(1040,548),
  ABISELECT(496,260),
  ABISELECT(1040,548),
  (VTBL_ENTRY)&(_ZTI8S8033C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C14D1Ev,_ZTv0_n16_N8S8033C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C14D0Ev,_ZTv0_n16_N8S8033C14D0Ev),
  (VTBL_ENTRY)&_ZN7S8033C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8033C14D1Ev,_ZTv0_n12_N8S8033C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S8033C14D0Ev,_ZTv0_n12_N8S8033C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S8033C8__8S8033C148S8033C13__7S8033C5[] = {
  ABISELECT(544,288),
  ABISELECT(544,288),
  (VTBL_ENTRY)&(_ZTI8S8033C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C14D1Ev,_ZTv0_n12_N8S8033C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C14D0Ev,_ZTv0_n12_N8S8033C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S8033C13D1Ev,_ZTv0_n16_N8S8033C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S8033C13D0Ev,_ZTv0_n16_N8S8033C13D0Ev)();
extern void _ZN7S8033C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8033C6__8S8033C13__7S8033C5[] = {
  0,
  ABISELECT(1040,548),
  ABISELECT(496,260),
  ABISELECT(1040,548),
  (VTBL_ENTRY)&(_ZTI8S8033C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C13D1Ev,_ZTv0_n16_N8S8033C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C13D0Ev,_ZTv0_n16_N8S8033C13D0Ev),
  (VTBL_ENTRY)&_ZN7S8033C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8033C13D1Ev,_ZTv0_n12_N8S8033C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S8033C13D0Ev,_ZTv0_n12_N8S8033C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S8033C8__8S8033C13__7S8033C5[] = {
  ABISELECT(544,288),
  ABISELECT(544,288),
  (VTBL_ENTRY)&(_ZTI8S8033C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C13D1Ev,_ZTv0_n12_N8S8033C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C13D0Ev,_ZTv0_n12_N8S8033C13D0Ev),
};
extern void _ZN8S8033C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N8S8033C13D1Ev,_ZTv0_n20_N8S8033C13D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S8033C13D0Ev,_ZTv0_n20_N8S8033C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S8033C11__8S8033C13__7S8033C5[] = {
  ABISELECT(400,212),
  0,
  ABISELECT(-144,-76),
  ABISELECT(400,212),
  (VTBL_ENTRY)&(_ZTI8S8033C13[0]),
  (VTBL_ENTRY)&_ZN8S8033C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8033C13D1Ev,_ZTv0_n20_N8S8033C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8033C13D0Ev,_ZTv0_n20_N8S8033C13D0Ev),
};
static  VTT_ENTRY vtt_S8033C5[] = {
  {&(_ZTV7S8033C5[10]),  10,56},
  {&(_tg__ZTV8S8033C12__7S8033C5[10]),  10,12},
  {&(_tg__ZTV8S8033C10__8S8033C12__7S8033C5[4]),  4,6},
  {&(_tg__ZTV7S8033C7__A1__8S8033C12__7S8033C5[3]),  3,5},
  {&(_tg__ZTV7S8033C6__8S8033C12__7S8033C5[5]),  5,8},
  {&(_tg__ZTV7S8033C8__A1__8S8033C12__7S8033C5[3]),  3,5},
  {&(_tg__ZTV8S8033C13__8S8033C12__7S8033C5[6]),  6,8},
  {&(_tg__ZTV8S8033C11__8S8033C12__7S8033C5[5]),  5,8},
  {&(_tg__ZTV8S8033C15__8S8033C12__7S8033C5[3]),  3,4},
  {&(_ZTV7S8033C5[17]),  17,56},
  {&(_ZTV7S8033C5[23]),  23,56},
  {&(_ZTV7S8033C5[30]),  30,56},
  {&(_ZTV7S8033C5[37]),  37,56},
  {&(_ZTV7S8033C5[42]),  42,56},
  {&(_ZTV7S8033C5[50]),  50,56},
  {&(_ZTV7S8033C5[55]),  55,56},
  {&(_tg__ZTV7S8033C6__7S8033C5[3]),  3,6},
  {&(_tg__ZTV7S8033C8__7S8033C6__7S8033C5[3]),  3,5},
  {&(_tg__ZTV8S8033C11__7S8033C5[3]),  3,6},
  {&(_tg__ZTV7S8033C8__8S8033C11__7S8033C5[3]),  3,5},
  {&(_tg__ZTV8S8033C10__7S8033C5[3]),  3,5},
  {&(_tg__ZTV7S8033C7__A1__8S8033C10__7S8033C5[3]),  3,5},
  {&(_tg__ZTV8S8033C13__7S8033C5[5]),  5,7},
  {&(_tg__ZTV8S8033C148S8033C13__7S8033C5[4]),  4,6},
  {&(_tg__ZTV7S8033C6__8S8033C148S8033C13__7S8033C5[5]),  5,8},
  {&(_tg__ZTV7S8033C8__8S8033C148S8033C13__7S8033C5[3]),  3,5},
  {&(_tg__ZTV7S8033C6__8S8033C13__7S8033C5[5]),  5,8},
  {&(_tg__ZTV7S8033C8__8S8033C13__7S8033C5[3]),  3,5},
  {&(_tg__ZTV8S8033C11__8S8033C13__7S8033C5[5]),  5,8},
};
extern VTBL_ENTRY _ZTI7S8033C5[];
extern  VTBL_ENTRY _ZTV7S8033C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8033C5[];
static VTBL_ENTRY alt_thunk_names40[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8033C10D0Ev,_ZTv0_n12_N8S8033C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S8033C10D0Ev,_ZThn132_N8S8033C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8033C10D1Ev,_ZTv0_n12_N8S8033C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S8033C10D1Ev,_ZThn132_N8S8033C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8033C6D0Ev,_ZTv0_n12_N7S8033C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N7S8033C6D0Ev,_ZThn260_N7S8033C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8033C6D1Ev,_ZTv0_n12_N7S8033C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N7S8033C6D1Ev,_ZThn260_N7S8033C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S8033C12D0Ev,_ZTv0_n20_N8S8033C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N8S8033C12D0Ev,_ZThn1132_N8S8033C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S8033C12D1Ev,_ZTv0_n20_N8S8033C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N8S8033C12D1Ev,_ZThn1132_N8S8033C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S8033C12D0Ev,_ZTv0_n24_N8S8033C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N8S8033C12D0Ev,_ZThn1344_N8S8033C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S8033C12D1Ev,_ZTv0_n24_N8S8033C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N8S8033C12D1Ev,_ZThn1344_N8S8033C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8033C12D0Ev,_ZTv0_n12_N8S8033C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2016_N8S8033C12D0Ev,_ZThn1056_N8S8033C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2464_N8S8033C12D0Ev,_ZThn1292_N8S8033C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8033C12D1Ev,_ZTv0_n12_N8S8033C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2016_N8S8033C12D1Ev,_ZThn1056_N8S8033C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2464_N8S8033C12D1Ev,_ZThn1292_N8S8033C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8033C12D0Ev,_ZTv0_n16_N8S8033C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N8S8033C12D0Ev,_ZThn796_N8S8033C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2208_N8S8033C12D0Ev,_ZThn1160_N8S8033C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8033C12D1Ev,_ZTv0_n16_N8S8033C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N8S8033C12D1Ev,_ZThn796_N8S8033C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2208_N8S8033C12D1Ev,_ZThn1160_N8S8033C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S8033C5D0Ev,_ZTv0_n24_N7S8033C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N7S8033C5D0Ev,_ZThn1344_N7S8033C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S8033C5D1Ev,_ZTv0_n24_N7S8033C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N7S8033C5D1Ev,_ZThn1344_N7S8033C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S8033C5D0Ev,_ZTv0_n20_N7S8033C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N7S8033C5D0Ev,_ZThn1132_N7S8033C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S8033C5D1Ev,_ZTv0_n20_N7S8033C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N7S8033C5D1Ev,_ZThn1132_N7S8033C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8033C5D0Ev,_ZTv0_n12_N7S8033C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2464_N7S8033C5D0Ev,_ZThn1292_N7S8033C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2016_N7S8033C5D0Ev,_ZThn1056_N7S8033C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8033C5D1Ev,_ZTv0_n12_N7S8033C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2464_N7S8033C5D1Ev,_ZThn1292_N7S8033C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2016_N7S8033C5D1Ev,_ZThn1056_N7S8033C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S8033C5D0Ev,_ZTv0_n16_N7S8033C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2208_N7S8033C5D0Ev,_ZThn1160_N7S8033C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N7S8033C5D0Ev,_ZThn796_N7S8033C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S8033C5D1Ev,_ZTv0_n16_N7S8033C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2208_N7S8033C5D1Ev,_ZThn1160_N7S8033C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N7S8033C5D1Ev,_ZThn796_N7S8033C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S8033C5 = {  "S8033C5", // class name
  bases_S8033C5, 16,
  &(vtc_S8033C5[0]), // expected_vtbl_contents
  &(vtt_S8033C5[0]), // expected_vtt_contents
  ABISELECT(2992,1608), // object size
  NSPAIRA(_ZTI7S8033C5),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S8033C5),56, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S8033C5),29, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names40,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8033C3  : virtual S8033C4 , virtual S8033C5 , S8033C15 , S8033C7 {
  ::S8033C15 s8033c3f0;
  int s8033c3f1;
  char s8033c3f2[6];
  long double s8033c3f3;
  int s8033c3f4;
  __tsi64 s8033c3f5;
  virtual void  v4(); // _ZN7S8033C32v4Ev
  ~S8033C3(); // tgen
  S8033C3(); // tgen
};
//SIG(-1 S8033C3) C1{ VBC2{ m Fp[3] FL[8]} VBC3{ VBC4{ BC5{ vd m Fc Fc:0 Fl[8] FD} VBC6{ BC5 Fp FC7{} Fp FD} vd v2 Fi Fc Fp Fi Fp[2] FC8{ BC6 VBC5 vd FC5 Fp}} BC2 VBC9{ VBC6 v3 Fc Fs FD Fp[2]} BC10{ VBC8 VBC4 VBC11{ BC12{ BC5 VBC4 vd Fp FL[2] Fc Fp Fi} VBC9 vd Fc Fi:32} VBC2 VBC13{ v4 FD Fp FC5 FL FD Fi} vd Fp FC13[3] FC13 Fc} FC13 Fp FL[2] Fi:31 Fi FC7 FC13 FC13 Fp} BC13 BC5 v1 FC13 Fi Fc[6] FD Fi FL}


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

static void Test_S8033C3()
{
  extern Class_Descriptor cd_S8033C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(222,473)];
    init_test(&cd_S8033C3, buf);
    S8033C3 *dp, &lv = *(dp=new (buf) S8033C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(3536,1888), "sizeof(S8033C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S8033C3)");
    /*is_ambiguous_... S8033C3::S8033C4 */ AMB_check_base_class_offset(lv, (S8033C4*), ABISELECT(528,280), "S8033C3");
    check_base_class_offset(lv, (S8033C4*)(S8033C12*)(S8033C5*), ABISELECT(528,280), "S8033C3");
    /*is_ambiguous_... S8033C6::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8033C6*), ABISELECT(2144,1152), "S8033C3");
    /*is_ambiguous_... S8033C3::S8033C8 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8033C8*), ABISELECT(2640,1412), "S8033C3");
    check_base_class_offset(lv, (S8033C8*)(S8033C6*), ABISELECT(2640,1412), "S8033C3");
    check_base_class_offset(lv, (S8033C8*)(S8033C11*), ABISELECT(2640,1412), "S8033C3");
    check_base_class_offset(lv, (S8033C6*)(S8033C5*), ABISELECT(2144,1152), "S8033C3");
    check_base_class_offset(lv, (S8033C6*)(S8033C12*)(S8033C5*), ABISELECT(2144,1152), "S8033C3");
    check_base_class_offset(lv, (S8033C6*)(S8033C14*)(S8033C13*), ABISELECT(2144,1152), "S8033C3");
    /*is_ambiguous_... S8033C5::S8033C4 */ AMB_check_base_class_offset(lv, (S8033C4*)(S8033C5*), ABISELECT(1416,752), "S8033C3");
    check_base_class_offset(lv, (S8033C11*)(S8033C5*), ABISELECT(2784,1488), "S8033C3");
    check_base_class_offset(lv, (S8033C11*)(S8033C13*), ABISELECT(2784,1488), "S8033C3");
    check_base_class_offset(lv, (S8033C7*)(S8033C8*)(S8033C10*), ABISELECT(2832,1516), "S8033C3");
    check_base_class_offset(lv, (S8033C8*)(S8033C10*), ABISELECT(2832,1516), "S8033C3");
    /*is_ambiguous_... S8033C10::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8033C10*), ABISELECT(3088,1648), "S8033C3");
    check_base_class_offset(lv, (S8033C10*)(S8033C12*)(S8033C5*), ABISELECT(2832,1516), "S8033C3");
    /*is_ambiguous_... S8033C14::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8033C14*)(S8033C13*), ABISELECT(3184,1700), "S8033C3");
    check_base_class_offset(lv, (S8033C14*)(S8033C13*), ABISELECT(3184,1700), "S8033C3");
    check_base_class_offset(lv, (S8033C13*)(S8033C12*)(S8033C5*), ABISELECT(3184,1700), "S8033C3");
    check_base_class_offset(lv, (S8033C15*)(S8033C12*)(S8033C5*), ABISELECT(3344,1792), "S8033C3");
    check_base_class_offset(lv, (S8033C12*)(S8033C5*), ABISELECT(624,356), "S8033C3");
    check_base_class_offset(lv, (S8033C5*), ABISELECT(624,356), "S8033C3");
    /*is_ambiguous_... S8033C3::S8033C15 */ AMB_check_base_class_offset(lv, (S8033C15*), 0, "S8033C3");
    /*is_ambiguous_... S8033C3::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*), ABISELECT(192,96), "S8033C3");
    check_field_offset(lv, s8033c3f0, ABISELECT(288,148), "S8033C3.s8033c3f0");
    check_field_offset(lv, s8033c3f1, ABISELECT(480,244), "S8033C3.s8033c3f1");
    check_field_offset(lv, s8033c3f2, ABISELECT(484,248), "S8033C3.s8033c3f2");
    check_field_offset(lv, s8033c3f3, ABISELECT(496,256), "S8033C3.s8033c3f3");
    check_field_offset(lv, s8033c3f4, ABISELECT(512,268), "S8033C3.s8033c3f4");
    check_field_offset(lv, s8033c3f5, ABISELECT(520,272), "S8033C3.s8033c3f5");
    test_class_info(&lv, &cd_S8033C3);
    dp->~S8033C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8033C3(Test_S8033C3, "S8033C3", ABISELECT(3536,1888));

#else // __cplusplus

extern void _ZN7S8033C3C1Ev();
extern void _ZN7S8033C3D1Ev();
Name_Map name_map_S8033C3[] = {
  NSPAIR(_ZN7S8033C3C1Ev),
  NSPAIR(_ZN7S8033C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C4;
extern VTBL_ENTRY _ZTI7S8033C4[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C8;
extern VTBL_ENTRY _ZTI7S8033C8[];
extern  VTBL_ENTRY _ZTV7S8033C8[];
extern Class_Descriptor cd_S8033C6;
extern VTBL_ENTRY _ZTI7S8033C6[];
extern  VTBL_ENTRY _ZTV7S8033C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8033C6[];
extern Class_Descriptor cd_S8033C4;
extern VTBL_ENTRY _ZTI7S8033C4[];
extern Class_Descriptor cd_S8033C11;
extern VTBL_ENTRY _ZTI8S8033C11[];
extern  VTBL_ENTRY _ZTV8S8033C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8033C11[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C8;
extern VTBL_ENTRY _ZTI7S8033C8[];
extern  VTBL_ENTRY _ZTV7S8033C8[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C10;
extern VTBL_ENTRY _ZTI8S8033C10[];
extern  VTBL_ENTRY _ZTV8S8033C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8033C10[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C14;
extern VTBL_ENTRY _ZTI8S8033C14[];
extern  VTBL_ENTRY _ZTV8S8033C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8033C14[];
extern Class_Descriptor cd_S8033C13;
extern VTBL_ENTRY _ZTI8S8033C13[];
extern  VTBL_ENTRY _ZTV8S8033C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8033C13[];
extern Class_Descriptor cd_S8033C15;
extern VTBL_ENTRY _ZTI8S8033C15[];
extern  VTBL_ENTRY _ZTV8S8033C15[];
extern Class_Descriptor cd_S8033C12;
extern VTBL_ENTRY _ZTI8S8033C12[];
extern  VTBL_ENTRY _ZTV8S8033C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8033C12[];
extern Class_Descriptor cd_S8033C5;
extern VTBL_ENTRY _ZTI7S8033C5[];
extern  VTBL_ENTRY _ZTV7S8033C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8033C5[];
extern Class_Descriptor cd_S8033C15;
extern VTBL_ENTRY _ZTI8S8033C15[];
extern  VTBL_ENTRY _ZTV8S8033C15[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
static Base_Class bases_S8033C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C4,    ABISELECT(528,280), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C7,    ABISELECT(2144,1152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(2640,1412), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S8033C8,    ABISELECT(2640,1412), //bcp->offset
    40, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S8033C6,    ABISELECT(2144,1152), //bcp->offset
    32, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S8033C4,    ABISELECT(1416,752), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S8033C11,    ABISELECT(2784,1488), //bcp->offset
    45, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S8033C7,    ABISELECT(2832,1516), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S8033C8,    ABISELECT(2832,1516), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(3088,1648), //bcp->offset
    59, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S8033C10,    ABISELECT(2832,1516), //bcp->offset
    53, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S8033C7,    ABISELECT(3184,1700), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S8033C14,    ABISELECT(3184,1700), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S8033C13,    ABISELECT(3184,1700), //bcp->offset
    64, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S8033C15,    ABISELECT(3344,1792), //bcp->offset
    72, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S8033C12,    ABISELECT(624,356), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S8033C5,    ABISELECT(624,356), //bcp->offset
    19, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S8033C7,    ABISELECT(192,96), //bcp->offset
    15, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8033C3[];
extern void _ZN8S8033C152v3Ev();
extern void _ZN7S8033C32v4Ev();
extern void _ZN7S8033C3D1Ev();
extern void _ZN7S8033C3D0Ev();
extern void ABISELECT(_ZThn192_N7S8033C3D1Ev,_ZThn96_N7S8033C3D1Ev)();
extern void ABISELECT(_ZThn192_N7S8033C3D0Ev,_ZThn96_N7S8033C3D0Ev)();
extern void ABISELECT(_ZTv0_n88_N7S8033C3D1Ev,_ZTv0_n44_N7S8033C3D1Ev)();
extern void ABISELECT(_ZThn624_N7S8033C3D1Ev,_ZThn356_N7S8033C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S8033C3D0Ev,_ZTv0_n44_N7S8033C3D0Ev)();
extern void ABISELECT(_ZThn624_N7S8033C3D0Ev,_ZThn356_N7S8033C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S8033C3D1Ev,_ZTv0_n16_N7S8033C3D1Ev)();
extern void ABISELECT(_ZThn2144_N7S8033C3D1Ev,_ZThn1152_N7S8033C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S8033C3D0Ev,_ZTv0_n16_N7S8033C3D0Ev)();
extern void ABISELECT(_ZThn2144_N7S8033C3D0Ev,_ZThn1152_N7S8033C3D0Ev)() __attribute__((weak));
extern void _ZN7S8033C62v1Ev();
extern void ABISELECT(_ZTv0_n24_N7S8033C3D1Ev,_ZTv0_n12_N7S8033C3D1Ev)();
extern void ABISELECT(_ZThn2640_N7S8033C3D1Ev,_ZThn1412_N7S8033C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8033C3D0Ev,_ZTv0_n12_N7S8033C3D0Ev)();
extern void ABISELECT(_ZThn2640_N7S8033C3D0Ev,_ZThn1412_N7S8033C3D0Ev)() __attribute__((weak));
extern void _ZN8S8033C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N7S8033C3D1Ev,_ZTv0_n20_N7S8033C3D1Ev)();
extern void ABISELECT(_ZThn2784_N7S8033C3D1Ev,_ZThn1488_N7S8033C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S8033C3D0Ev,_ZTv0_n20_N7S8033C3D0Ev)();
extern void ABISELECT(_ZThn2784_N7S8033C3D0Ev,_ZThn1488_N7S8033C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S8033C3D1Ev,_ZTv0_n16_N7S8033C3D1Ev)();
extern void ABISELECT(_ZThn2832_N7S8033C3D1Ev,_ZThn1516_N7S8033C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S8033C3D0Ev,_ZTv0_n16_N7S8033C3D0Ev)();
extern void ABISELECT(_ZThn2832_N7S8033C3D0Ev,_ZThn1516_N7S8033C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8033C3D1Ev,_ZTv0_n12_N7S8033C3D1Ev)();
extern void ABISELECT(_ZThn3088_N7S8033C3D1Ev,_ZThn1648_N7S8033C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8033C3D0Ev,_ZTv0_n12_N7S8033C3D0Ev)();
extern void ABISELECT(_ZThn3088_N7S8033C3D0Ev,_ZThn1648_N7S8033C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S8033C3D1Ev,_ZTv0_n24_N7S8033C3D1Ev)();
extern void ABISELECT(_ZThn3184_N7S8033C3D1Ev,_ZThn1700_N7S8033C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S8033C3D0Ev,_ZTv0_n24_N7S8033C3D0Ev)();
extern void ABISELECT(_ZThn3184_N7S8033C3D0Ev,_ZThn1700_N7S8033C3D0Ev)() __attribute__((weak));
extern void _ZN8S8033C152v3Ev();
static  VTBL_ENTRY vtc_S8033C3[] = {
  ABISELECT(3344,1792),
  ABISELECT(3184,1700),
  ABISELECT(3088,1648),
  ABISELECT(2832,1516),
  ABISELECT(2784,1488),
  ABISELECT(2640,1412),
  ABISELECT(2144,1152),
  ABISELECT(624,356),
  ABISELECT(528,280),
  0,
  (VTBL_ENTRY)&(_ZTI7S8033C3[0]),
  (VTBL_ENTRY)&_ZN8S8033C152v3Ev,
  (VTBL_ENTRY)&_ZN7S8033C32v4Ev,
  (VTBL_ENTRY)&_ZN7S8033C3D1Ev,
  (VTBL_ENTRY)&_ZN7S8033C3D0Ev,
  ABISELECT(-192,-96),
  (VTBL_ENTRY)&(_ZTI7S8033C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn192_N7S8033C3D1Ev,_ZThn96_N7S8033C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn192_N7S8033C3D0Ev,_ZThn96_N7S8033C3D0Ev),
  ABISELECT(-624,-356),
  ABISELECT(2720,1436),
  ABISELECT(-96,-76),
  ABISELECT(2160,1132),
  ABISELECT(2560,1344),
  ABISELECT(2016,1056),
  ABISELECT(1520,796),
  ABISELECT(2464,1292),
  ABISELECT(2208,1160),
  ABISELECT(-624,-356),
  (VTBL_ENTRY)&(_ZTI7S8033C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S8033C3D1Ev,_ZTv0_n44_N7S8033C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S8033C3D0Ev,_ZTv0_n44_N7S8033C3D0Ev),
  0,
  ABISELECT(-2144,-1152),
  ABISELECT(496,260),
  ABISELECT(-2144,-1152),
  (VTBL_ENTRY)&(_ZTI7S8033C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8033C3D1Ev,_ZTv0_n16_N7S8033C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8033C3D0Ev,_ZTv0_n16_N7S8033C3D0Ev),
  (VTBL_ENTRY)&_ZN7S8033C62v1Ev,
  ABISELECT(-2640,-1412),
  ABISELECT(-2640,-1412),
  (VTBL_ENTRY)&(_ZTI7S8033C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8033C3D1Ev,_ZTv0_n12_N7S8033C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8033C3D0Ev,_ZTv0_n12_N7S8033C3D0Ev),
  ABISELECT(-2784,-1488),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-2784,-1488),
  (VTBL_ENTRY)&(_ZTI7S8033C3[0]),
  (VTBL_ENTRY)&_ZN8S8033C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S8033C3D1Ev,_ZTv0_n20_N7S8033C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S8033C3D0Ev,_ZTv0_n20_N7S8033C3D0Ev),
  ABISELECT(-2832,-1516),
  ABISELECT(256,132),
  ABISELECT(-2832,-1516),
  (VTBL_ENTRY)&(_ZTI7S8033C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8033C3D1Ev,_ZTv0_n16_N7S8033C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8033C3D0Ev,_ZTv0_n16_N7S8033C3D0Ev),
  ABISELECT(-3088,-1648),
  ABISELECT(-3088,-1648),
  (VTBL_ENTRY)&(_ZTI7S8033C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8033C3D1Ev,_ZTv0_n12_N7S8033C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8033C3D0Ev,_ZTv0_n12_N7S8033C3D0Ev),
  ABISELECT(-3184,-1700),
  ABISELECT(-400,-212),
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  ABISELECT(-3184,-1700),
  (VTBL_ENTRY)&(_ZTI7S8033C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S8033C3D1Ev,_ZTv0_n24_N7S8033C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S8033C3D0Ev,_ZTv0_n24_N7S8033C3D0Ev),
  0,
  ABISELECT(-3344,-1792),
  (VTBL_ENTRY)&(_ZTI7S8033C3[0]),
  (VTBL_ENTRY)&_ZN8S8033C152v3Ev,
};
extern VTBL_ENTRY _ZTV7S8033C3[];
extern void _ZN7S8033C5D1Ev();
extern void _ZN7S8033C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S8033C5__7S8033C3[] = {
  ABISELECT(2720,1436),
  ABISELECT(-96,-76),
  ABISELECT(2160,1132),
  ABISELECT(2560,1344),
  ABISELECT(2016,1056),
  ABISELECT(1520,796),
  ABISELECT(2464,1292),
  ABISELECT(2208,1160),
  0,
  (VTBL_ENTRY)&(_ZTI7S8033C5[0]),
  (VTBL_ENTRY)&_ZN7S8033C5D1Ev,
  (VTBL_ENTRY)&_ZN7S8033C5D0Ev,
};
extern void _ZN8S8033C12D1Ev();
extern void _ZN8S8033C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8033C127S8033C5__7S8033C3[] = {
  ABISELECT(2720,1436),
  ABISELECT(-96,-76),
  ABISELECT(2160,1132),
  ABISELECT(2560,1344),
  ABISELECT(2016,1056),
  ABISELECT(1520,796),
  ABISELECT(2464,1292),
  ABISELECT(2208,1160),
  0,
  (VTBL_ENTRY)&(_ZTI8S8033C12[0]),
  (VTBL_ENTRY)&_ZN8S8033C12D1Ev,
  (VTBL_ENTRY)&_ZN8S8033C12D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S8033C12D1Ev,_ZTv0_n16_N8S8033C12D1Ev)();
extern void ABISELECT(_ZThn2208_N8S8033C12D1Ev,_ZThn1160_N8S8033C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8033C12D0Ev,_ZTv0_n16_N8S8033C12D0Ev)();
extern void ABISELECT(_ZThn2208_N8S8033C12D0Ev,_ZThn1160_N8S8033C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8033C10__8S8033C127S8033C5__7S8033C3[] = {
  ABISELECT(-2208,-1160),
  ABISELECT(256,132),
  ABISELECT(-2208,-1160),
  (VTBL_ENTRY)&(_ZTI8S8033C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C12D1Ev,_ZTv0_n16_N8S8033C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C12D0Ev,_ZTv0_n16_N8S8033C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S8033C12D1Ev,_ZTv0_n12_N8S8033C12D1Ev)();
extern void ABISELECT(_ZThn2464_N8S8033C12D1Ev,_ZThn1292_N8S8033C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8033C12D0Ev,_ZTv0_n12_N8S8033C12D0Ev)();
extern void ABISELECT(_ZThn2464_N8S8033C12D0Ev,_ZThn1292_N8S8033C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__8S8033C127S8033C5__7S8033C3[] = {
  ABISELECT(-2464,-1292),
  ABISELECT(-2464,-1292),
  (VTBL_ENTRY)&(_ZTI8S8033C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C12D1Ev,_ZTv0_n12_N8S8033C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C12D0Ev,_ZTv0_n12_N8S8033C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S8033C12D1Ev,_ZTv0_n16_N8S8033C12D1Ev)();
extern void ABISELECT(_ZThn1520_N8S8033C12D1Ev,_ZThn796_N8S8033C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8033C12D0Ev,_ZTv0_n16_N8S8033C12D0Ev)();
extern void ABISELECT(_ZThn1520_N8S8033C12D0Ev,_ZThn796_N8S8033C12D0Ev)() __attribute__((weak));
extern void _ZN7S8033C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8033C6__8S8033C127S8033C5__7S8033C3[] = {
  0,
  ABISELECT(-1520,-796),
  ABISELECT(496,260),
  ABISELECT(-1520,-796),
  (VTBL_ENTRY)&(_ZTI8S8033C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C12D1Ev,_ZTv0_n16_N8S8033C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C12D0Ev,_ZTv0_n16_N8S8033C12D0Ev),
  (VTBL_ENTRY)&_ZN7S8033C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8033C12D1Ev,_ZTv0_n12_N8S8033C12D1Ev)();
extern void ABISELECT(_ZThn2016_N8S8033C12D1Ev,_ZThn1056_N8S8033C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8033C12D0Ev,_ZTv0_n12_N8S8033C12D0Ev)();
extern void ABISELECT(_ZThn2016_N8S8033C12D0Ev,_ZThn1056_N8S8033C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C8__A1__8S8033C127S8033C5__7S8033C3[] = {
  ABISELECT(-2016,-1056),
  ABISELECT(-2016,-1056),
  (VTBL_ENTRY)&(_ZTI8S8033C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C12D1Ev,_ZTv0_n12_N8S8033C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C12D0Ev,_ZTv0_n12_N8S8033C12D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S8033C12D1Ev,_ZTv0_n24_N8S8033C12D1Ev)();
extern void ABISELECT(_ZThn2560_N8S8033C12D1Ev,_ZThn1344_N8S8033C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S8033C12D0Ev,_ZTv0_n24_N8S8033C12D0Ev)();
extern void ABISELECT(_ZThn2560_N8S8033C12D0Ev,_ZThn1344_N8S8033C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8033C13__8S8033C127S8033C5__7S8033C3[] = {
  ABISELECT(-2560,-1344),
  ABISELECT(-400,-212),
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  ABISELECT(-2560,-1344),
  (VTBL_ENTRY)&(_ZTI8S8033C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S8033C12D1Ev,_ZTv0_n24_N8S8033C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S8033C12D0Ev,_ZTv0_n24_N8S8033C12D0Ev),
};
extern void _ZN8S8033C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N8S8033C12D1Ev,_ZTv0_n20_N8S8033C12D1Ev)();
extern void ABISELECT(_ZThn2160_N8S8033C12D1Ev,_ZThn1132_N8S8033C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S8033C12D0Ev,_ZTv0_n20_N8S8033C12D0Ev)();
extern void ABISELECT(_ZThn2160_N8S8033C12D0Ev,_ZThn1132_N8S8033C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8033C11__8S8033C127S8033C5__7S8033C3[] = {
  ABISELECT(-2160,-1132),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-2160,-1132),
  (VTBL_ENTRY)&(_ZTI8S8033C12[0]),
  (VTBL_ENTRY)&_ZN8S8033C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8033C12D1Ev,_ZTv0_n20_N8S8033C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8033C12D0Ev,_ZTv0_n20_N8S8033C12D0Ev),
};
extern void _ZN8S8033C152v3Ev();
static  VTBL_ENTRY _tg__ZTV8S8033C15__8S8033C127S8033C5__7S8033C3[] = {
  0,
  ABISELECT(-2720,-1436),
  (VTBL_ENTRY)&(_ZTI8S8033C12[0]),
  (VTBL_ENTRY)&_ZN8S8033C152v3Ev,
};
extern void ABISELECT(_ZTv0_n32_N7S8033C5D1Ev,_ZTv0_n16_N7S8033C5D1Ev)();
extern void ABISELECT(_ZThn1520_N7S8033C5D1Ev,_ZThn796_N7S8033C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S8033C5D0Ev,_ZTv0_n16_N7S8033C5D0Ev)();
extern void ABISELECT(_ZThn1520_N7S8033C5D0Ev,_ZThn796_N7S8033C5D0Ev)() __attribute__((weak));
extern void _ZN7S8033C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8033C6__7S8033C5__7S8033C3[] = {
  0,
  ABISELECT(-1520,-796),
  ABISELECT(496,260),
  ABISELECT(-1520,-796),
  (VTBL_ENTRY)&(_ZTI7S8033C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8033C5D1Ev,_ZTv0_n16_N7S8033C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8033C5D0Ev,_ZTv0_n16_N7S8033C5D0Ev),
  (VTBL_ENTRY)&_ZN7S8033C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S8033C5D1Ev,_ZTv0_n12_N7S8033C5D1Ev)();
extern void ABISELECT(_ZThn2016_N7S8033C5D1Ev,_ZThn1056_N7S8033C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8033C5D0Ev,_ZTv0_n12_N7S8033C5D0Ev)();
extern void ABISELECT(_ZThn2016_N7S8033C5D0Ev,_ZThn1056_N7S8033C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C8__7S8033C5__7S8033C3[] = {
  ABISELECT(-2016,-1056),
  ABISELECT(-2016,-1056),
  (VTBL_ENTRY)&(_ZTI7S8033C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8033C5D1Ev,_ZTv0_n12_N7S8033C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8033C5D0Ev,_ZTv0_n12_N7S8033C5D0Ev),
};
extern void _ZN8S8033C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N7S8033C5D1Ev,_ZTv0_n20_N7S8033C5D1Ev)();
extern void ABISELECT(_ZThn2160_N7S8033C5D1Ev,_ZThn1132_N7S8033C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S8033C5D0Ev,_ZTv0_n20_N7S8033C5D0Ev)();
extern void ABISELECT(_ZThn2160_N7S8033C5D0Ev,_ZThn1132_N7S8033C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8033C11__7S8033C5__7S8033C3[] = {
  ABISELECT(-2160,-1132),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-2160,-1132),
  (VTBL_ENTRY)&(_ZTI7S8033C5[0]),
  (VTBL_ENTRY)&_ZN8S8033C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S8033C5D1Ev,_ZTv0_n20_N7S8033C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S8033C5D0Ev,_ZTv0_n20_N7S8033C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S8033C5D1Ev,_ZTv0_n16_N7S8033C5D1Ev)();
extern void ABISELECT(_ZThn2208_N7S8033C5D1Ev,_ZThn1160_N7S8033C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S8033C5D0Ev,_ZTv0_n16_N7S8033C5D0Ev)();
extern void ABISELECT(_ZThn2208_N7S8033C5D0Ev,_ZThn1160_N7S8033C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8033C10__7S8033C5__7S8033C3[] = {
  ABISELECT(-2208,-1160),
  ABISELECT(256,132),
  ABISELECT(-2208,-1160),
  (VTBL_ENTRY)&(_ZTI7S8033C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8033C5D1Ev,_ZTv0_n16_N7S8033C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8033C5D0Ev,_ZTv0_n16_N7S8033C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S8033C5D1Ev,_ZTv0_n12_N7S8033C5D1Ev)();
extern void ABISELECT(_ZThn2464_N7S8033C5D1Ev,_ZThn1292_N7S8033C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8033C5D0Ev,_ZTv0_n12_N7S8033C5D0Ev)();
extern void ABISELECT(_ZThn2464_N7S8033C5D0Ev,_ZThn1292_N7S8033C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A3__7S8033C5__7S8033C3[] = {
  ABISELECT(-2464,-1292),
  ABISELECT(-2464,-1292),
  (VTBL_ENTRY)&(_ZTI7S8033C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8033C5D1Ev,_ZTv0_n12_N7S8033C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8033C5D0Ev,_ZTv0_n12_N7S8033C5D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S8033C5D1Ev,_ZTv0_n24_N7S8033C5D1Ev)();
extern void ABISELECT(_ZThn2560_N7S8033C5D1Ev,_ZThn1344_N7S8033C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S8033C5D0Ev,_ZTv0_n24_N7S8033C5D0Ev)();
extern void ABISELECT(_ZThn2560_N7S8033C5D0Ev,_ZThn1344_N7S8033C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8033C13__7S8033C5__7S8033C3[] = {
  ABISELECT(-2560,-1344),
  ABISELECT(-400,-212),
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  ABISELECT(-2560,-1344),
  (VTBL_ENTRY)&(_ZTI7S8033C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S8033C5D1Ev,_ZTv0_n24_N7S8033C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S8033C5D0Ev,_ZTv0_n24_N7S8033C5D0Ev),
};
extern void _ZN8S8033C152v3Ev();
static  VTBL_ENTRY _tg__ZTV8S8033C15__7S8033C5__7S8033C3[] = {
  0,
  ABISELECT(-2720,-1436),
  (VTBL_ENTRY)&(_ZTI7S8033C5[0]),
  (VTBL_ENTRY)&_ZN8S8033C152v3Ev,
};
extern void _ZN7S8033C6D1Ev();
extern void _ZN7S8033C6D0Ev();
extern void _ZN7S8033C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8033C6__7S8033C3[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI7S8033C6[0]),
  (VTBL_ENTRY)&_ZN7S8033C6D1Ev,
  (VTBL_ENTRY)&_ZN7S8033C6D0Ev,
  (VTBL_ENTRY)&_ZN7S8033C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S8033C6D1Ev,_ZTv0_n12_N7S8033C6D1Ev)();
extern void ABISELECT(_ZThn496_N7S8033C6D1Ev,_ZThn260_N7S8033C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8033C6D0Ev,_ZTv0_n12_N7S8033C6D0Ev)();
extern void ABISELECT(_ZThn496_N7S8033C6D0Ev,_ZThn260_N7S8033C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C8__7S8033C6__7S8033C3[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI7S8033C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8033C6D1Ev,_ZTv0_n12_N7S8033C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8033C6D0Ev,_ZTv0_n12_N7S8033C6D0Ev),
};
extern void _ZN8S8033C112v2Ev();
extern void _ZN8S8033C11D1Ev();
extern void _ZN8S8033C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8033C11__7S8033C3[] = {
  ABISELECT(-144,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S8033C11[0]),
  (VTBL_ENTRY)&_ZN8S8033C112v2Ev,
  (VTBL_ENTRY)&_ZN8S8033C11D1Ev,
  (VTBL_ENTRY)&_ZN8S8033C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8033C11D1Ev,_ZTv0_n12_N8S8033C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S8033C11D0Ev,_ZTv0_n12_N8S8033C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S8033C8__8S8033C11__7S8033C3[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S8033C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C11D1Ev,_ZTv0_n12_N8S8033C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C11D0Ev,_ZTv0_n12_N8S8033C11D0Ev),
};
extern void _ZN8S8033C10D1Ev();
extern void _ZN8S8033C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8033C10__7S8033C3[] = {
  ABISELECT(256,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S8033C10[0]),
  (VTBL_ENTRY)&_ZN8S8033C10D1Ev,
  (VTBL_ENTRY)&_ZN8S8033C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8033C10D1Ev,_ZTv0_n12_N8S8033C10D1Ev)();
extern void ABISELECT(_ZThn256_N8S8033C10D1Ev,_ZThn132_N8S8033C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8033C10D0Ev,_ZTv0_n12_N8S8033C10D0Ev)();
extern void ABISELECT(_ZThn256_N8S8033C10D0Ev,_ZThn132_N8S8033C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__8S8033C10__7S8033C3[] = {
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  (VTBL_ENTRY)&(_ZTI8S8033C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C10D1Ev,_ZTv0_n12_N8S8033C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C10D0Ev,_ZTv0_n12_N8S8033C10D0Ev),
};
extern void _ZN8S8033C13D1Ev();
extern void _ZN8S8033C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8033C13__7S8033C3[] = {
  ABISELECT(-400,-212),
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  0,
  (VTBL_ENTRY)&(_ZTI8S8033C13[0]),
  (VTBL_ENTRY)&_ZN8S8033C13D1Ev,
  (VTBL_ENTRY)&_ZN8S8033C13D0Ev,
};
extern void _ZN8S8033C14D1Ev();
extern void _ZN8S8033C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8033C148S8033C13__7S8033C3[] = {
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  0,
  (VTBL_ENTRY)&(_ZTI8S8033C14[0]),
  (VTBL_ENTRY)&_ZN8S8033C14D1Ev,
  (VTBL_ENTRY)&_ZN8S8033C14D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S8033C14D1Ev,_ZTv0_n16_N8S8033C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S8033C14D0Ev,_ZTv0_n16_N8S8033C14D0Ev)();
extern void _ZN7S8033C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8033C6__8S8033C148S8033C13__7S8033C3[] = {
  0,
  ABISELECT(1040,548),
  ABISELECT(496,260),
  ABISELECT(1040,548),
  (VTBL_ENTRY)&(_ZTI8S8033C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C14D1Ev,_ZTv0_n16_N8S8033C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C14D0Ev,_ZTv0_n16_N8S8033C14D0Ev),
  (VTBL_ENTRY)&_ZN7S8033C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8033C14D1Ev,_ZTv0_n12_N8S8033C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S8033C14D0Ev,_ZTv0_n12_N8S8033C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S8033C8__8S8033C148S8033C13__7S8033C3[] = {
  ABISELECT(544,288),
  ABISELECT(544,288),
  (VTBL_ENTRY)&(_ZTI8S8033C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C14D1Ev,_ZTv0_n12_N8S8033C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C14D0Ev,_ZTv0_n12_N8S8033C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S8033C13D1Ev,_ZTv0_n16_N8S8033C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S8033C13D0Ev,_ZTv0_n16_N8S8033C13D0Ev)();
extern void _ZN7S8033C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8033C6__8S8033C13__7S8033C3[] = {
  0,
  ABISELECT(1040,548),
  ABISELECT(496,260),
  ABISELECT(1040,548),
  (VTBL_ENTRY)&(_ZTI8S8033C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C13D1Ev,_ZTv0_n16_N8S8033C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C13D0Ev,_ZTv0_n16_N8S8033C13D0Ev),
  (VTBL_ENTRY)&_ZN7S8033C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8033C13D1Ev,_ZTv0_n12_N8S8033C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S8033C13D0Ev,_ZTv0_n12_N8S8033C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S8033C8__8S8033C13__7S8033C3[] = {
  ABISELECT(544,288),
  ABISELECT(544,288),
  (VTBL_ENTRY)&(_ZTI8S8033C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C13D1Ev,_ZTv0_n12_N8S8033C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C13D0Ev,_ZTv0_n12_N8S8033C13D0Ev),
};
extern void _ZN8S8033C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N8S8033C13D1Ev,_ZTv0_n20_N8S8033C13D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S8033C13D0Ev,_ZTv0_n20_N8S8033C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S8033C11__8S8033C13__7S8033C3[] = {
  ABISELECT(400,212),
  0,
  ABISELECT(-144,-76),
  ABISELECT(400,212),
  (VTBL_ENTRY)&(_ZTI8S8033C13[0]),
  (VTBL_ENTRY)&_ZN8S8033C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8033C13D1Ev,_ZTv0_n20_N8S8033C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8033C13D0Ev,_ZTv0_n20_N8S8033C13D0Ev),
};
static  VTT_ENTRY vtt_S8033C3[] = {
  {&(_ZTV7S8033C3[11]),  11,76},
  {&(_ZTV7S8033C3[30]),  30,76},
  {&(_ZTV7S8033C3[37]),  37,76},
  {&(_ZTV7S8033C3[43]),  43,76},
  {&(_ZTV7S8033C3[50]),  50,76},
  {&(_ZTV7S8033C3[57]),  57,76},
  {&(_ZTV7S8033C3[62]),  62,76},
  {&(_ZTV7S8033C3[70]),  70,76},
  {&(_ZTV7S8033C3[75]),  75,76},
  {&(_tg__ZTV7S8033C5__7S8033C3[10]),  10,12},
  {&(_tg__ZTV8S8033C127S8033C5__7S8033C3[10]),  10,12},
  {&(_tg__ZTV8S8033C10__8S8033C127S8033C5__7S8033C3[4]),  4,6},
  {&(_tg__ZTV7S8033C7__A1__8S8033C127S8033C5__7S8033C3[3]),  3,5},
  {&(_tg__ZTV7S8033C6__8S8033C127S8033C5__7S8033C3[5]),  5,8},
  {&(_tg__ZTV7S8033C8__A1__8S8033C127S8033C5__7S8033C3[3]),  3,5},
  {&(_tg__ZTV8S8033C13__8S8033C127S8033C5__7S8033C3[6]),  6,8},
  {&(_tg__ZTV8S8033C11__8S8033C127S8033C5__7S8033C3[5]),  5,8},
  {&(_tg__ZTV8S8033C15__8S8033C127S8033C5__7S8033C3[3]),  3,4},
  {&(_tg__ZTV7S8033C6__7S8033C5__7S8033C3[5]),  5,8},
  {&(_tg__ZTV7S8033C8__7S8033C5__7S8033C3[3]),  3,5},
  {&(_tg__ZTV8S8033C11__7S8033C5__7S8033C3[5]),  5,8},
  {&(_tg__ZTV8S8033C10__7S8033C5__7S8033C3[4]),  4,6},
  {&(_tg__ZTV7S8033C7__A3__7S8033C5__7S8033C3[3]),  3,5},
  {&(_tg__ZTV8S8033C13__7S8033C5__7S8033C3[6]),  6,8},
  {&(_tg__ZTV8S8033C15__7S8033C5__7S8033C3[3]),  3,4},
  {&(_tg__ZTV7S8033C6__7S8033C3[3]),  3,6},
  {&(_tg__ZTV7S8033C8__7S8033C6__7S8033C3[3]),  3,5},
  {&(_tg__ZTV8S8033C11__7S8033C3[3]),  3,6},
  {&(_tg__ZTV7S8033C8__8S8033C11__7S8033C3[3]),  3,5},
  {&(_tg__ZTV8S8033C10__7S8033C3[3]),  3,5},
  {&(_tg__ZTV7S8033C7__A1__8S8033C10__7S8033C3[3]),  3,5},
  {&(_tg__ZTV8S8033C13__7S8033C3[5]),  5,7},
  {&(_tg__ZTV8S8033C148S8033C13__7S8033C3[4]),  4,6},
  {&(_tg__ZTV7S8033C6__8S8033C148S8033C13__7S8033C3[5]),  5,8},
  {&(_tg__ZTV7S8033C8__8S8033C148S8033C13__7S8033C3[3]),  3,5},
  {&(_tg__ZTV7S8033C6__8S8033C13__7S8033C3[5]),  5,8},
  {&(_tg__ZTV7S8033C8__8S8033C13__7S8033C3[3]),  3,5},
  {&(_tg__ZTV8S8033C11__8S8033C13__7S8033C3[5]),  5,8},
};
extern VTBL_ENTRY _ZTI7S8033C3[];
extern  VTBL_ENTRY _ZTV7S8033C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8033C3[];
static VTBL_ENTRY alt_thunk_names41[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8033C10D0Ev,_ZTv0_n12_N8S8033C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S8033C10D0Ev,_ZThn132_N8S8033C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8033C10D1Ev,_ZTv0_n12_N8S8033C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S8033C10D1Ev,_ZThn132_N8S8033C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8033C6D0Ev,_ZTv0_n12_N7S8033C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N7S8033C6D0Ev,_ZThn260_N7S8033C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8033C6D1Ev,_ZTv0_n12_N7S8033C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N7S8033C6D1Ev,_ZThn260_N7S8033C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S8033C5D0Ev,_ZTv0_n24_N7S8033C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N7S8033C5D0Ev,_ZThn1344_N7S8033C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S8033C5D1Ev,_ZTv0_n24_N7S8033C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N7S8033C5D1Ev,_ZThn1344_N7S8033C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S8033C5D0Ev,_ZTv0_n20_N7S8033C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N7S8033C5D0Ev,_ZThn1132_N7S8033C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S8033C5D1Ev,_ZTv0_n20_N7S8033C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N7S8033C5D1Ev,_ZThn1132_N7S8033C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8033C5D0Ev,_ZTv0_n12_N7S8033C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2464_N7S8033C5D0Ev,_ZThn1292_N7S8033C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2016_N7S8033C5D0Ev,_ZThn1056_N7S8033C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8033C5D1Ev,_ZTv0_n12_N7S8033C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2464_N7S8033C5D1Ev,_ZThn1292_N7S8033C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2016_N7S8033C5D1Ev,_ZThn1056_N7S8033C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S8033C5D0Ev,_ZTv0_n16_N7S8033C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2208_N7S8033C5D0Ev,_ZThn1160_N7S8033C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N7S8033C5D0Ev,_ZThn796_N7S8033C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S8033C5D1Ev,_ZTv0_n16_N7S8033C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2208_N7S8033C5D1Ev,_ZThn1160_N7S8033C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N7S8033C5D1Ev,_ZThn796_N7S8033C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S8033C12D0Ev,_ZTv0_n20_N8S8033C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N8S8033C12D0Ev,_ZThn1132_N8S8033C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S8033C12D1Ev,_ZTv0_n20_N8S8033C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N8S8033C12D1Ev,_ZThn1132_N8S8033C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S8033C12D0Ev,_ZTv0_n24_N8S8033C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N8S8033C12D0Ev,_ZThn1344_N8S8033C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S8033C12D1Ev,_ZTv0_n24_N8S8033C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N8S8033C12D1Ev,_ZThn1344_N8S8033C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8033C12D0Ev,_ZTv0_n12_N8S8033C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2016_N8S8033C12D0Ev,_ZThn1056_N8S8033C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2464_N8S8033C12D0Ev,_ZThn1292_N8S8033C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8033C12D1Ev,_ZTv0_n12_N8S8033C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2016_N8S8033C12D1Ev,_ZThn1056_N8S8033C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2464_N8S8033C12D1Ev,_ZThn1292_N8S8033C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8033C12D0Ev,_ZTv0_n16_N8S8033C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N8S8033C12D0Ev,_ZThn796_N8S8033C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2208_N8S8033C12D0Ev,_ZThn1160_N8S8033C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8033C12D1Ev,_ZTv0_n16_N8S8033C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N8S8033C12D1Ev,_ZThn796_N8S8033C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2208_N8S8033C12D1Ev,_ZThn1160_N8S8033C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S8033C3D0Ev,_ZTv0_n24_N7S8033C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3184_N7S8033C3D0Ev,_ZThn1700_N7S8033C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S8033C3D1Ev,_ZTv0_n24_N7S8033C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3184_N7S8033C3D1Ev,_ZThn1700_N7S8033C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S8033C3D0Ev,_ZTv0_n20_N7S8033C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2784_N7S8033C3D0Ev,_ZThn1488_N7S8033C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S8033C3D1Ev,_ZTv0_n20_N7S8033C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2784_N7S8033C3D1Ev,_ZThn1488_N7S8033C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8033C3D0Ev,_ZTv0_n12_N7S8033C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3088_N7S8033C3D0Ev,_ZThn1648_N7S8033C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2640_N7S8033C3D0Ev,_ZThn1412_N7S8033C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8033C3D1Ev,_ZTv0_n12_N7S8033C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3088_N7S8033C3D1Ev,_ZThn1648_N7S8033C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2640_N7S8033C3D1Ev,_ZThn1412_N7S8033C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S8033C3D0Ev,_ZTv0_n16_N7S8033C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2832_N7S8033C3D0Ev,_ZThn1516_N7S8033C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2144_N7S8033C3D0Ev,_ZThn1152_N7S8033C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S8033C3D1Ev,_ZTv0_n16_N7S8033C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2832_N7S8033C3D1Ev,_ZThn1516_N7S8033C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2144_N7S8033C3D1Ev,_ZThn1152_N7S8033C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S8033C3D0Ev,_ZTv0_n44_N7S8033C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn624_N7S8033C3D0Ev,_ZThn356_N7S8033C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S8033C3D1Ev,_ZTv0_n44_N7S8033C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn624_N7S8033C3D1Ev,_ZThn356_N7S8033C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S8033C3 = {  "S8033C3", // class name
  bases_S8033C3, 19,
  &(vtc_S8033C3[0]), // expected_vtbl_contents
  &(vtt_S8033C3[0]), // expected_vtt_contents
  ABISELECT(3536,1888), // object size
  NSPAIRA(_ZTI7S8033C3),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S8033C3),76, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S8033C3),38, //virtual table table var
  17, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names41,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8033C2  {
  int s8033c2f0;
  long s8033c2f1;
  int s8033c2f2;
  ::S8033C3 s8033c2f3;
  int s8033c2f4;
  void *s8033c2f5[4];
  void  mf8033c2(); // _ZN7S8033C28mf8033c2Ev
  virtual  ~S8033C2(); // _ZN7S8033C2D1Ev
  S8033C2(); // tgen
};
//SIG(-1 S8033C2) C1{ vd m Fi Fl Fi FC2{ VBC3{ m Fp[3] FL[8]} VBC4{ VBC5{ BC6{ vd m Fc Fc:0 Fl[8] FD} VBC7{ BC6 Fp FC8{} Fp FD} vd v2 Fi Fc Fp Fi Fp[2] FC9{ BC7 VBC6 vd FC6 Fp}} BC3 VBC10{ VBC7 v3 Fc Fs FD Fp[2]} BC11{ VBC9 VBC5 VBC12{ BC13{ BC6 VBC5 vd Fp FL[2] Fc Fp Fi} VBC10 vd Fc Fi:32} VBC3 VBC14{ v4 FD Fp FC6 FL FD Fi} vd Fp FC14[3] FC14 Fc} FC14 Fp FL[2] Fi:31 Fi FC8 FC14 FC14 Fp} BC14 BC6 v1 FC14 Fi Fc[6] FD Fi FL} Fi Fp[4]}


void  S8033C2 ::mf8033c2(){}
 S8033C2 ::~S8033C2(){ note_dtor("S8033C2", this);}
S8033C2 ::S8033C2(){ note_ctor("S8033C2", this);} // tgen

static void Test_S8033C2()
{
  extern Class_Descriptor cd_S8033C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(227,482)];
    init_test(&cd_S8033C2, buf);
    S8033C2 *dp, &lv = *(dp=new (buf) S8033C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(3616,1924), "sizeof(S8033C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S8033C2)");
    check_field_offset(lv, s8033c2f0, ABISELECT(8,4), "S8033C2.s8033c2f0");
    check_field_offset(lv, s8033c2f1, ABISELECT(16,8), "S8033C2.s8033c2f1");
    check_field_offset(lv, s8033c2f2, ABISELECT(24,12), "S8033C2.s8033c2f2");
    check_field_offset(lv, s8033c2f3, ABISELECT(32,16), "S8033C2.s8033c2f3");
    check_field_offset(lv, s8033c2f4, ABISELECT(3568,1904), "S8033C2.s8033c2f4");
    check_field_offset(lv, s8033c2f5, ABISELECT(3576,1908), "S8033C2.s8033c2f5");
    test_class_info(&lv, &cd_S8033C2);
    dp->~S8033C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8033C2(Test_S8033C2, "S8033C2", ABISELECT(3616,1924));

#else // __cplusplus

extern void _ZN7S8033C2C1Ev();
extern void _ZN7S8033C2D1Ev();
Name_Map name_map_S8033C2[] = {
  NSPAIR(_ZN7S8033C2C1Ev),
  NSPAIR(_ZN7S8033C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8033C2[];
extern void _ZN7S8033C2D1Ev();
extern void _ZN7S8033C2D0Ev();
static  VTBL_ENTRY vtc_S8033C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8033C2[0]),
  (VTBL_ENTRY)&_ZN7S8033C2D1Ev,
  (VTBL_ENTRY)&_ZN7S8033C2D0Ev,
};
extern VTBL_ENTRY _ZTI7S8033C2[];
extern  VTBL_ENTRY _ZTV7S8033C2[];
Class_Descriptor cd_S8033C2 = {  "S8033C2", // class name
  0,0,//no base classes
  &(vtc_S8033C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(3616,1924), // object size
  NSPAIRA(_ZTI7S8033C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8033C2),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8033C1  : S8033C2 , S8033C13 , S8033C5 {
  int s8033c1f0;
  ::S8033C15 s8033c1f1;
  long double s8033c1f2;
  ::S8033C15 s8033c1f3;
  virtual  ~S8033C1(); // _ZN7S8033C1D2Ev
  S8033C1(); // tgen
};
//SIG(1 S8033C1) C1{ BC2{ vd m Fi Fl Fi FC3{ VBC4{ m Fp[3] FL[8]} VBC5{ VBC6{ BC7{ vd m Fc Fc:0 Fl[8] FD} VBC8{ BC7 Fp FC9{} Fp FD} vd v1 Fi Fc Fp Fi Fp[2] FC10{ BC8 VBC7 vd FC7 Fp}} BC4 VBC11{ VBC8 v2 Fc Fs FD Fp[2]} BC12{ VBC10 VBC6 VBC13{ BC14{ BC7 VBC6 vd Fp FL[2] Fc Fp Fi} VBC11 vd Fc Fi:32} VBC4 VBC15{ v3 FD Fp FC7 FL FD Fi} vd Fp FC15[3] FC15 Fc} FC15 Fp FL[2] Fi:31 Fi FC9 FC15 FC15 Fp} BC15 BC7 v4 FC15 Fi Fc[6] FD Fi FL} Fi Fp[4]} BC13 BC5 vd Fi FC15 FD FC15}


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

static void Test_S8033C1()
{
  extern Class_Descriptor cd_S8033C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(449,959)];
    init_test(&cd_S8033C1, buf);
    S8033C1 *dp, &lv = *(dp=new (buf) S8033C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(7168,3832), "sizeof(S8033C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S8033C1)");
    check_base_class_offset(lv, (S8033C2*), 0, "S8033C1");
    /*is_ambiguous_... S8033C1::S8033C13 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8033C14*)(S8033C13*), ABISELECT(3616,1924), "S8033C1");
    /*is_ambiguous_... S8033C6::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8033C6*), ABISELECT(5696,3020), "S8033C1");
    /*is_ambiguous_... S8033C1::S8033C8 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8033C8*), ABISELECT(6192,3280), "S8033C1");
    check_base_class_offset(lv, (S8033C8*)(S8033C6*), ABISELECT(6192,3280), "S8033C1");
    check_base_class_offset(lv, (S8033C8*)(S8033C11*), ABISELECT(6192,3280), "S8033C1");
    /*is_ambiguous_... S8033C1::S8033C13 */ AMB_check_base_class_offset(lv, (S8033C6*)(S8033C14*)(S8033C13*), ABISELECT(5696,3020), "S8033C1");
    check_base_class_offset(lv, (S8033C6*)(S8033C5*), ABISELECT(5696,3020), "S8033C1");
    check_base_class_offset(lv, (S8033C6*)(S8033C12*)(S8033C5*), ABISELECT(5696,3020), "S8033C1");
    /*is_ambiguous_... S8033C1::S8033C13 */ AMB_check_base_class_offset(lv, (S8033C6*)(S8033C14*)(S8033C13*), ABISELECT(5696,3020), "S8033C1");
    /*is_ambiguous_... S8033C1::S8033C13 */ AMB_check_base_class_offset(lv, (S8033C14*)(S8033C13*), ABISELECT(3616,1924), "S8033C1");
    /*is_ambiguous_... S8033C1::S8033C13 */ AMB_check_base_class_offset(lv, (S8033C11*)(S8033C13*), ABISELECT(6336,3356), "S8033C1");
    check_base_class_offset(lv, (S8033C11*)(S8033C5*), ABISELECT(6336,3356), "S8033C1");
    /*is_ambiguous_... S8033C1::S8033C13 */ AMB_check_base_class_offset(lv, (S8033C11*)(S8033C13*), ABISELECT(6336,3356), "S8033C1");
    /*is_ambiguous_... S8033C1::S8033C13 */ AMB_check_base_class_offset(lv, (S8033C13*), ABISELECT(3616,1924), "S8033C1");
    /*is_ambiguous_... S8033C5::S8033C4 */ AMB_check_base_class_offset(lv, (S8033C4*)(S8033C5*), ABISELECT(4568,2412), "S8033C1");
    check_base_class_offset(lv, (S8033C7*)(S8033C8*)(S8033C10*), ABISELECT(6384,3384), "S8033C1");
    check_base_class_offset(lv, (S8033C8*)(S8033C10*), ABISELECT(6384,3384), "S8033C1");
    /*is_ambiguous_... S8033C10::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8033C10*), ABISELECT(6640,3516), "S8033C1");
    check_base_class_offset(lv, (S8033C10*)(S8033C12*)(S8033C5*), ABISELECT(6384,3384), "S8033C1");
    /*is_ambiguous_... S8033C1::S8033C13 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8033C14*)(S8033C13*), ABISELECT(6736,3568), "S8033C1");
    /*is_ambiguous_... S8033C1::S8033C13 */ AMB_check_base_class_offset(lv, (S8033C14*)(S8033C13*), ABISELECT(6736,3568), "S8033C1");
    check_base_class_offset(lv, (S8033C13*)(S8033C12*)(S8033C5*), ABISELECT(6736,3568), "S8033C1");
    check_base_class_offset(lv, (S8033C4*)(S8033C12*)(S8033C5*), ABISELECT(6888,3660), "S8033C1");
    check_base_class_offset(lv, (S8033C15*)(S8033C12*)(S8033C5*), ABISELECT(6976,3736), "S8033C1");
    check_base_class_offset(lv, (S8033C12*)(S8033C5*), ABISELECT(3776,2016), "S8033C1");
    check_base_class_offset(lv, (S8033C5*), ABISELECT(3776,2016), "S8033C1");
    check_field_offset(lv, s8033c1f0, ABISELECT(5288,2812), "S8033C1.s8033c1f0");
    check_field_offset(lv, s8033c1f1, ABISELECT(5296,2816), "S8033C1.s8033c1f1");
    check_field_offset(lv, s8033c1f2, ABISELECT(5488,2912), "S8033C1.s8033c1f2");
    check_field_offset(lv, s8033c1f3, ABISELECT(5504,2924), "S8033C1.s8033c1f3");
    test_class_info(&lv, &cd_S8033C1);
    dp->~S8033C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8033C1(Test_S8033C1, "S8033C1", ABISELECT(7168,3832));

#else // __cplusplus

extern void _ZN7S8033C1C1Ev();
extern void _ZN7S8033C1D2Ev();
Name_Map name_map_S8033C1[] = {
  NSPAIR(_ZN7S8033C1C1Ev),
  NSPAIR(_ZN7S8033C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C2;
extern VTBL_ENTRY _ZTI7S8033C2[];
extern  VTBL_ENTRY _ZTV7S8033C2[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C8;
extern VTBL_ENTRY _ZTI7S8033C8[];
extern  VTBL_ENTRY _ZTV7S8033C8[];
extern Class_Descriptor cd_S8033C6;
extern VTBL_ENTRY _ZTI7S8033C6[];
extern  VTBL_ENTRY _ZTV7S8033C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8033C6[];
extern Class_Descriptor cd_S8033C14;
extern VTBL_ENTRY _ZTI8S8033C14[];
extern  VTBL_ENTRY _ZTV8S8033C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8033C14[];
extern Class_Descriptor cd_S8033C11;
extern VTBL_ENTRY _ZTI8S8033C11[];
extern  VTBL_ENTRY _ZTV8S8033C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8033C11[];
extern Class_Descriptor cd_S8033C13;
extern VTBL_ENTRY _ZTI8S8033C13[];
extern  VTBL_ENTRY _ZTV8S8033C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8033C13[];
extern Class_Descriptor cd_S8033C4;
extern VTBL_ENTRY _ZTI7S8033C4[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C8;
extern VTBL_ENTRY _ZTI7S8033C8[];
extern  VTBL_ENTRY _ZTV7S8033C8[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C10;
extern VTBL_ENTRY _ZTI8S8033C10[];
extern  VTBL_ENTRY _ZTV8S8033C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8033C10[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C14;
extern VTBL_ENTRY _ZTI8S8033C14[];
extern  VTBL_ENTRY _ZTV8S8033C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8033C14[];
extern Class_Descriptor cd_S8033C13;
extern VTBL_ENTRY _ZTI8S8033C13[];
extern  VTBL_ENTRY _ZTV8S8033C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8033C13[];
extern Class_Descriptor cd_S8033C4;
extern VTBL_ENTRY _ZTI7S8033C4[];
extern Class_Descriptor cd_S8033C15;
extern VTBL_ENTRY _ZTI8S8033C15[];
extern  VTBL_ENTRY _ZTV8S8033C15[];
extern Class_Descriptor cd_S8033C12;
extern VTBL_ENTRY _ZTI8S8033C12[];
extern  VTBL_ENTRY _ZTV8S8033C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8033C12[];
extern Class_Descriptor cd_S8033C5;
extern VTBL_ENTRY _ZTI7S8033C5[];
extern  VTBL_ENTRY _ZTV7S8033C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8033C5[];
static Base_Class bases_S8033C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S8033C7,    ABISELECT(3616,1924), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(5696,3020), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(6192,3280), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S8033C8,    ABISELECT(6192,3280), //bcp->offset
    39, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S8033C6,    ABISELECT(5696,3020), //bcp->offset
    31, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S8033C14,    ABISELECT(3616,1924), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S8033C11,    ABISELECT(6336,3356), //bcp->offset
    44, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S8033C13,    ABISELECT(3616,1924), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S8033C4,    ABISELECT(4568,2412), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(6384,3384), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S8033C8,    ABISELECT(6384,3384), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(6640,3516), //bcp->offset
    58, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S8033C10,    ABISELECT(6384,3384), //bcp->offset
    52, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S8033C7,    ABISELECT(6736,3568), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S8033C14,    ABISELECT(6736,3568), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S8033C13,    ABISELECT(6736,3568), //bcp->offset
    63, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S8033C4,    ABISELECT(6888,3660), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S8033C15,    ABISELECT(6976,3736), //bcp->offset
    71, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S8033C12,    ABISELECT(3776,2016), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S8033C5,    ABISELECT(3776,2016), //bcp->offset
    19, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8033C1[];
extern void _ZN7S8033C1D1Ev();
extern void _ZN7S8033C1D0Ev();
extern void ABISELECT(_ZThn3616_N7S8033C1D1Ev,_ZThn1924_N7S8033C1D1Ev)();
extern void ABISELECT(_ZThn3616_N7S8033C1D0Ev,_ZThn1924_N7S8033C1D0Ev)();
extern void ABISELECT(_ZThn3776_N7S8033C1D1Ev,_ZThn2016_N7S8033C1D1Ev)();
extern void ABISELECT(_ZThn3776_N7S8033C1D0Ev,_ZThn2016_N7S8033C1D0Ev)();
extern void ABISELECT(_ZTv0_n32_N7S8033C1D1Ev,_ZTv0_n16_N7S8033C1D1Ev)();
extern void ABISELECT(_ZThn5696_N7S8033C1D1Ev,_ZThn3020_N7S8033C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S8033C1D0Ev,_ZTv0_n16_N7S8033C1D0Ev)();
extern void ABISELECT(_ZThn5696_N7S8033C1D0Ev,_ZThn3020_N7S8033C1D0Ev)() __attribute__((weak));
extern void _ZN7S8033C62v1Ev();
extern void ABISELECT(_ZTv0_n24_N7S8033C1D1Ev,_ZTv0_n12_N7S8033C1D1Ev)();
extern void ABISELECT(_ZThn6192_N7S8033C1D1Ev,_ZThn3280_N7S8033C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8033C1D0Ev,_ZTv0_n12_N7S8033C1D0Ev)();
extern void ABISELECT(_ZThn6192_N7S8033C1D0Ev,_ZThn3280_N7S8033C1D0Ev)() __attribute__((weak));
extern void _ZN8S8033C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N7S8033C1D1Ev,_ZTv0_n20_N7S8033C1D1Ev)();
extern void ABISELECT(_ZThn6336_N7S8033C1D1Ev,_ZThn3356_N7S8033C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S8033C1D0Ev,_ZTv0_n20_N7S8033C1D0Ev)();
extern void ABISELECT(_ZThn6336_N7S8033C1D0Ev,_ZThn3356_N7S8033C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S8033C1D1Ev,_ZTv0_n16_N7S8033C1D1Ev)();
extern void ABISELECT(_ZThn6384_N7S8033C1D1Ev,_ZThn3384_N7S8033C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S8033C1D0Ev,_ZTv0_n16_N7S8033C1D0Ev)();
extern void ABISELECT(_ZThn6384_N7S8033C1D0Ev,_ZThn3384_N7S8033C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8033C1D1Ev,_ZTv0_n12_N7S8033C1D1Ev)();
extern void ABISELECT(_ZThn6640_N7S8033C1D1Ev,_ZThn3516_N7S8033C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8033C1D0Ev,_ZTv0_n12_N7S8033C1D0Ev)();
extern void ABISELECT(_ZThn6640_N7S8033C1D0Ev,_ZThn3516_N7S8033C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S8033C1D1Ev,_ZTv0_n24_N7S8033C1D1Ev)();
extern void ABISELECT(_ZThn6736_N7S8033C1D1Ev,_ZThn3568_N7S8033C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S8033C1D0Ev,_ZTv0_n24_N7S8033C1D0Ev)();
extern void ABISELECT(_ZThn6736_N7S8033C1D0Ev,_ZThn3568_N7S8033C1D0Ev)() __attribute__((weak));
extern void _ZN8S8033C152v3Ev();
static  VTBL_ENTRY vtc_S8033C1[] = {
  ABISELECT(6976,3736),
  ABISELECT(6888,3660),
  ABISELECT(6736,3568),
  ABISELECT(6640,3516),
  ABISELECT(6384,3384),
  ABISELECT(6336,3356),
  ABISELECT(6192,3280),
  ABISELECT(5696,3020),
  0,
  (VTBL_ENTRY)&(_ZTI7S8033C1[0]),
  (VTBL_ENTRY)&_ZN7S8033C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8033C1D0Ev,
  ABISELECT(2720,1432),
  ABISELECT(2576,1356),
  ABISELECT(2080,1096),
  ABISELECT(-3616,-1924),
  (VTBL_ENTRY)&(_ZTI7S8033C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn3616_N7S8033C1D1Ev,_ZThn1924_N7S8033C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn3616_N7S8033C1D0Ev,_ZThn1924_N7S8033C1D0Ev),
  ABISELECT(3200,1720),
  ABISELECT(3112,1644),
  ABISELECT(2560,1340),
  ABISELECT(2960,1552),
  ABISELECT(2416,1264),
  ABISELECT(1920,1004),
  ABISELECT(2864,1500),
  ABISELECT(2608,1368),
  ABISELECT(-3776,-2016),
  (VTBL_ENTRY)&(_ZTI7S8033C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn3776_N7S8033C1D1Ev,_ZThn2016_N7S8033C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn3776_N7S8033C1D0Ev,_ZThn2016_N7S8033C1D0Ev),
  0,
  ABISELECT(-5696,-3020),
  ABISELECT(496,260),
  ABISELECT(-5696,-3020),
  (VTBL_ENTRY)&(_ZTI7S8033C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8033C1D1Ev,_ZTv0_n16_N7S8033C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8033C1D0Ev,_ZTv0_n16_N7S8033C1D0Ev),
  (VTBL_ENTRY)&_ZN7S8033C62v1Ev,
  ABISELECT(-6192,-3280),
  ABISELECT(-6192,-3280),
  (VTBL_ENTRY)&(_ZTI7S8033C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8033C1D1Ev,_ZTv0_n12_N7S8033C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8033C1D0Ev,_ZTv0_n12_N7S8033C1D0Ev),
  ABISELECT(-6336,-3356),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-6336,-3356),
  (VTBL_ENTRY)&(_ZTI7S8033C1[0]),
  (VTBL_ENTRY)&_ZN8S8033C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S8033C1D1Ev,_ZTv0_n20_N7S8033C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S8033C1D0Ev,_ZTv0_n20_N7S8033C1D0Ev),
  ABISELECT(-6384,-3384),
  ABISELECT(256,132),
  ABISELECT(-6384,-3384),
  (VTBL_ENTRY)&(_ZTI7S8033C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8033C1D1Ev,_ZTv0_n16_N7S8033C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8033C1D0Ev,_ZTv0_n16_N7S8033C1D0Ev),
  ABISELECT(-6640,-3516),
  ABISELECT(-6640,-3516),
  (VTBL_ENTRY)&(_ZTI7S8033C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8033C1D1Ev,_ZTv0_n12_N7S8033C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8033C1D0Ev,_ZTv0_n12_N7S8033C1D0Ev),
  ABISELECT(-6736,-3568),
  ABISELECT(-400,-212),
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  ABISELECT(-6736,-3568),
  (VTBL_ENTRY)&(_ZTI7S8033C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S8033C1D1Ev,_ZTv0_n24_N7S8033C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S8033C1D0Ev,_ZTv0_n24_N7S8033C1D0Ev),
  0,
  ABISELECT(-6976,-3736),
  (VTBL_ENTRY)&(_ZTI7S8033C1[0]),
  (VTBL_ENTRY)&_ZN8S8033C152v3Ev,
};
extern VTBL_ENTRY _ZTV7S8033C1[];
extern void _ZN8S8033C13D1Ev();
extern void _ZN8S8033C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8033C13__A__7S8033C1[] = {
  ABISELECT(2720,1432),
  ABISELECT(2576,1356),
  ABISELECT(2080,1096),
  0,
  (VTBL_ENTRY)&(_ZTI8S8033C13[0]),
  (VTBL_ENTRY)&_ZN8S8033C13D1Ev,
  (VTBL_ENTRY)&_ZN8S8033C13D0Ev,
};
extern void _ZN8S8033C14D1Ev();
extern void _ZN8S8033C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8033C148S8033C13__7S8033C1[] = {
  ABISELECT(2576,1356),
  ABISELECT(2080,1096),
  0,
  (VTBL_ENTRY)&(_ZTI8S8033C14[0]),
  (VTBL_ENTRY)&_ZN8S8033C14D1Ev,
  (VTBL_ENTRY)&_ZN8S8033C14D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S8033C14D1Ev,_ZTv0_n16_N8S8033C14D1Ev)();
extern void ABISELECT(_ZThn2080_N8S8033C14D1Ev,_ZThn1096_N8S8033C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8033C14D0Ev,_ZTv0_n16_N8S8033C14D0Ev)();
extern void ABISELECT(_ZThn2080_N8S8033C14D0Ev,_ZThn1096_N8S8033C14D0Ev)() __attribute__((weak));
extern void _ZN7S8033C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8033C6__8S8033C148S8033C13__7S8033C1[] = {
  0,
  ABISELECT(-2080,-1096),
  ABISELECT(496,260),
  ABISELECT(-2080,-1096),
  (VTBL_ENTRY)&(_ZTI8S8033C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C14D1Ev,_ZTv0_n16_N8S8033C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C14D0Ev,_ZTv0_n16_N8S8033C14D0Ev),
  (VTBL_ENTRY)&_ZN7S8033C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8033C14D1Ev,_ZTv0_n12_N8S8033C14D1Ev)();
extern void ABISELECT(_ZThn2576_N8S8033C14D1Ev,_ZThn1356_N8S8033C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8033C14D0Ev,_ZTv0_n12_N8S8033C14D0Ev)();
extern void ABISELECT(_ZThn2576_N8S8033C14D0Ev,_ZThn1356_N8S8033C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C8__8S8033C148S8033C13__7S8033C1[] = {
  ABISELECT(-2576,-1356),
  ABISELECT(-2576,-1356),
  (VTBL_ENTRY)&(_ZTI8S8033C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C14D1Ev,_ZTv0_n12_N8S8033C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C14D0Ev,_ZTv0_n12_N8S8033C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S8033C13D1Ev,_ZTv0_n16_N8S8033C13D1Ev)();
extern void ABISELECT(_ZThn2080_N8S8033C13D1Ev,_ZThn1096_N8S8033C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8033C13D0Ev,_ZTv0_n16_N8S8033C13D0Ev)();
extern void ABISELECT(_ZThn2080_N8S8033C13D0Ev,_ZThn1096_N8S8033C13D0Ev)() __attribute__((weak));
extern void _ZN7S8033C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8033C6__8S8033C13__A__7S8033C1[] = {
  0,
  ABISELECT(-2080,-1096),
  ABISELECT(496,260),
  ABISELECT(-2080,-1096),
  (VTBL_ENTRY)&(_ZTI8S8033C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C13D1Ev,_ZTv0_n16_N8S8033C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C13D0Ev,_ZTv0_n16_N8S8033C13D0Ev),
  (VTBL_ENTRY)&_ZN7S8033C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8033C13D1Ev,_ZTv0_n12_N8S8033C13D1Ev)();
extern void ABISELECT(_ZThn2576_N8S8033C13D1Ev,_ZThn1356_N8S8033C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8033C13D0Ev,_ZTv0_n12_N8S8033C13D0Ev)();
extern void ABISELECT(_ZThn2576_N8S8033C13D0Ev,_ZThn1356_N8S8033C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C8__8S8033C13__A__7S8033C1[] = {
  ABISELECT(-2576,-1356),
  ABISELECT(-2576,-1356),
  (VTBL_ENTRY)&(_ZTI8S8033C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C13D1Ev,_ZTv0_n12_N8S8033C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C13D0Ev,_ZTv0_n12_N8S8033C13D0Ev),
};
extern void _ZN8S8033C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N8S8033C13D1Ev,_ZTv0_n20_N8S8033C13D1Ev)();
extern void ABISELECT(_ZThn2720_N8S8033C13D1Ev,_ZThn1432_N8S8033C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S8033C13D0Ev,_ZTv0_n20_N8S8033C13D0Ev)();
extern void ABISELECT(_ZThn2720_N8S8033C13D0Ev,_ZThn1432_N8S8033C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8033C11__8S8033C13__A__7S8033C1[] = {
  ABISELECT(-2720,-1432),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-2720,-1432),
  (VTBL_ENTRY)&(_ZTI8S8033C13[0]),
  (VTBL_ENTRY)&_ZN8S8033C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8033C13D1Ev,_ZTv0_n20_N8S8033C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8033C13D0Ev,_ZTv0_n20_N8S8033C13D0Ev),
};
extern void _ZN7S8033C5D1Ev();
extern void _ZN7S8033C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S8033C5__7S8033C1[] = {
  ABISELECT(3200,1720),
  ABISELECT(3112,1644),
  ABISELECT(2560,1340),
  ABISELECT(2960,1552),
  ABISELECT(2416,1264),
  ABISELECT(1920,1004),
  ABISELECT(2864,1500),
  ABISELECT(2608,1368),
  0,
  (VTBL_ENTRY)&(_ZTI7S8033C5[0]),
  (VTBL_ENTRY)&_ZN7S8033C5D1Ev,
  (VTBL_ENTRY)&_ZN7S8033C5D0Ev,
};
extern void _ZN8S8033C12D1Ev();
extern void _ZN8S8033C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8033C127S8033C5__7S8033C1[] = {
  ABISELECT(3200,1720),
  ABISELECT(3112,1644),
  ABISELECT(2560,1340),
  ABISELECT(2960,1552),
  ABISELECT(2416,1264),
  ABISELECT(1920,1004),
  ABISELECT(2864,1500),
  ABISELECT(2608,1368),
  0,
  (VTBL_ENTRY)&(_ZTI8S8033C12[0]),
  (VTBL_ENTRY)&_ZN8S8033C12D1Ev,
  (VTBL_ENTRY)&_ZN8S8033C12D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S8033C12D1Ev,_ZTv0_n16_N8S8033C12D1Ev)();
extern void ABISELECT(_ZThn2608_N8S8033C12D1Ev,_ZThn1368_N8S8033C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8033C12D0Ev,_ZTv0_n16_N8S8033C12D0Ev)();
extern void ABISELECT(_ZThn2608_N8S8033C12D0Ev,_ZThn1368_N8S8033C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8033C10__8S8033C127S8033C5__7S8033C1[] = {
  ABISELECT(-2608,-1368),
  ABISELECT(256,132),
  ABISELECT(-2608,-1368),
  (VTBL_ENTRY)&(_ZTI8S8033C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C12D1Ev,_ZTv0_n16_N8S8033C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C12D0Ev,_ZTv0_n16_N8S8033C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S8033C12D1Ev,_ZTv0_n12_N8S8033C12D1Ev)();
extern void ABISELECT(_ZThn2864_N8S8033C12D1Ev,_ZThn1500_N8S8033C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8033C12D0Ev,_ZTv0_n12_N8S8033C12D0Ev)();
extern void ABISELECT(_ZThn2864_N8S8033C12D0Ev,_ZThn1500_N8S8033C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__8S8033C127S8033C5__7S8033C1[] = {
  ABISELECT(-2864,-1500),
  ABISELECT(-2864,-1500),
  (VTBL_ENTRY)&(_ZTI8S8033C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C12D1Ev,_ZTv0_n12_N8S8033C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C12D0Ev,_ZTv0_n12_N8S8033C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S8033C12D1Ev,_ZTv0_n16_N8S8033C12D1Ev)();
extern void ABISELECT(_ZThn1920_N8S8033C12D1Ev,_ZThn1004_N8S8033C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8033C12D0Ev,_ZTv0_n16_N8S8033C12D0Ev)();
extern void ABISELECT(_ZThn1920_N8S8033C12D0Ev,_ZThn1004_N8S8033C12D0Ev)() __attribute__((weak));
extern void _ZN7S8033C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8033C6__8S8033C127S8033C5__7S8033C1[] = {
  0,
  ABISELECT(-1920,-1004),
  ABISELECT(496,260),
  ABISELECT(-1920,-1004),
  (VTBL_ENTRY)&(_ZTI8S8033C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C12D1Ev,_ZTv0_n16_N8S8033C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C12D0Ev,_ZTv0_n16_N8S8033C12D0Ev),
  (VTBL_ENTRY)&_ZN7S8033C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8033C12D1Ev,_ZTv0_n12_N8S8033C12D1Ev)();
extern void ABISELECT(_ZThn2416_N8S8033C12D1Ev,_ZThn1264_N8S8033C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8033C12D0Ev,_ZTv0_n12_N8S8033C12D0Ev)();
extern void ABISELECT(_ZThn2416_N8S8033C12D0Ev,_ZThn1264_N8S8033C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C8__A1__8S8033C127S8033C5__7S8033C1[] = {
  ABISELECT(-2416,-1264),
  ABISELECT(-2416,-1264),
  (VTBL_ENTRY)&(_ZTI8S8033C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C12D1Ev,_ZTv0_n12_N8S8033C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C12D0Ev,_ZTv0_n12_N8S8033C12D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S8033C12D1Ev,_ZTv0_n24_N8S8033C12D1Ev)();
extern void ABISELECT(_ZThn2960_N8S8033C12D1Ev,_ZThn1552_N8S8033C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S8033C12D0Ev,_ZTv0_n24_N8S8033C12D0Ev)();
extern void ABISELECT(_ZThn2960_N8S8033C12D0Ev,_ZThn1552_N8S8033C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8033C13__8S8033C127S8033C5__7S8033C1[] = {
  ABISELECT(-2960,-1552),
  ABISELECT(-400,-212),
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  ABISELECT(-2960,-1552),
  (VTBL_ENTRY)&(_ZTI8S8033C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S8033C12D1Ev,_ZTv0_n24_N8S8033C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S8033C12D0Ev,_ZTv0_n24_N8S8033C12D0Ev),
};
extern void _ZN8S8033C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N8S8033C12D1Ev,_ZTv0_n20_N8S8033C12D1Ev)();
extern void ABISELECT(_ZThn2560_N8S8033C12D1Ev,_ZThn1340_N8S8033C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S8033C12D0Ev,_ZTv0_n20_N8S8033C12D0Ev)();
extern void ABISELECT(_ZThn2560_N8S8033C12D0Ev,_ZThn1340_N8S8033C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8033C11__8S8033C127S8033C5__7S8033C1[] = {
  ABISELECT(-2560,-1340),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-2560,-1340),
  (VTBL_ENTRY)&(_ZTI8S8033C12[0]),
  (VTBL_ENTRY)&_ZN8S8033C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8033C12D1Ev,_ZTv0_n20_N8S8033C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8033C12D0Ev,_ZTv0_n20_N8S8033C12D0Ev),
};
extern void _ZN8S8033C152v3Ev();
static  VTBL_ENTRY _tg__ZTV8S8033C15__8S8033C127S8033C5__7S8033C1[] = {
  0,
  ABISELECT(-3200,-1720),
  (VTBL_ENTRY)&(_ZTI8S8033C12[0]),
  (VTBL_ENTRY)&_ZN8S8033C152v3Ev,
};
extern void ABISELECT(_ZTv0_n32_N7S8033C5D1Ev,_ZTv0_n16_N7S8033C5D1Ev)();
extern void ABISELECT(_ZThn1920_N7S8033C5D1Ev,_ZThn1004_N7S8033C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S8033C5D0Ev,_ZTv0_n16_N7S8033C5D0Ev)();
extern void ABISELECT(_ZThn1920_N7S8033C5D0Ev,_ZThn1004_N7S8033C5D0Ev)() __attribute__((weak));
extern void _ZN7S8033C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8033C6__7S8033C5__7S8033C1[] = {
  0,
  ABISELECT(-1920,-1004),
  ABISELECT(496,260),
  ABISELECT(-1920,-1004),
  (VTBL_ENTRY)&(_ZTI7S8033C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8033C5D1Ev,_ZTv0_n16_N7S8033C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8033C5D0Ev,_ZTv0_n16_N7S8033C5D0Ev),
  (VTBL_ENTRY)&_ZN7S8033C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S8033C5D1Ev,_ZTv0_n12_N7S8033C5D1Ev)();
extern void ABISELECT(_ZThn2416_N7S8033C5D1Ev,_ZThn1264_N7S8033C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8033C5D0Ev,_ZTv0_n12_N7S8033C5D0Ev)();
extern void ABISELECT(_ZThn2416_N7S8033C5D0Ev,_ZThn1264_N7S8033C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C8__7S8033C5__7S8033C1[] = {
  ABISELECT(-2416,-1264),
  ABISELECT(-2416,-1264),
  (VTBL_ENTRY)&(_ZTI7S8033C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8033C5D1Ev,_ZTv0_n12_N7S8033C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8033C5D0Ev,_ZTv0_n12_N7S8033C5D0Ev),
};
extern void _ZN8S8033C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N7S8033C5D1Ev,_ZTv0_n20_N7S8033C5D1Ev)();
extern void ABISELECT(_ZThn2560_N7S8033C5D1Ev,_ZThn1340_N7S8033C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S8033C5D0Ev,_ZTv0_n20_N7S8033C5D0Ev)();
extern void ABISELECT(_ZThn2560_N7S8033C5D0Ev,_ZThn1340_N7S8033C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8033C11__7S8033C5__7S8033C1[] = {
  ABISELECT(-2560,-1340),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-2560,-1340),
  (VTBL_ENTRY)&(_ZTI7S8033C5[0]),
  (VTBL_ENTRY)&_ZN8S8033C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S8033C5D1Ev,_ZTv0_n20_N7S8033C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S8033C5D0Ev,_ZTv0_n20_N7S8033C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S8033C5D1Ev,_ZTv0_n16_N7S8033C5D1Ev)();
extern void ABISELECT(_ZThn2608_N7S8033C5D1Ev,_ZThn1368_N7S8033C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S8033C5D0Ev,_ZTv0_n16_N7S8033C5D0Ev)();
extern void ABISELECT(_ZThn2608_N7S8033C5D0Ev,_ZThn1368_N7S8033C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8033C10__7S8033C5__7S8033C1[] = {
  ABISELECT(-2608,-1368),
  ABISELECT(256,132),
  ABISELECT(-2608,-1368),
  (VTBL_ENTRY)&(_ZTI7S8033C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8033C5D1Ev,_ZTv0_n16_N7S8033C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8033C5D0Ev,_ZTv0_n16_N7S8033C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S8033C5D1Ev,_ZTv0_n12_N7S8033C5D1Ev)();
extern void ABISELECT(_ZThn2864_N7S8033C5D1Ev,_ZThn1500_N7S8033C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8033C5D0Ev,_ZTv0_n12_N7S8033C5D0Ev)();
extern void ABISELECT(_ZThn2864_N7S8033C5D0Ev,_ZThn1500_N7S8033C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A3__7S8033C5__7S8033C1[] = {
  ABISELECT(-2864,-1500),
  ABISELECT(-2864,-1500),
  (VTBL_ENTRY)&(_ZTI7S8033C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8033C5D1Ev,_ZTv0_n12_N7S8033C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8033C5D0Ev,_ZTv0_n12_N7S8033C5D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S8033C5D1Ev,_ZTv0_n24_N7S8033C5D1Ev)();
extern void ABISELECT(_ZThn2960_N7S8033C5D1Ev,_ZThn1552_N7S8033C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S8033C5D0Ev,_ZTv0_n24_N7S8033C5D0Ev)();
extern void ABISELECT(_ZThn2960_N7S8033C5D0Ev,_ZThn1552_N7S8033C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8033C13__7S8033C5__7S8033C1[] = {
  ABISELECT(-2960,-1552),
  ABISELECT(-400,-212),
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  ABISELECT(-2960,-1552),
  (VTBL_ENTRY)&(_ZTI7S8033C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S8033C5D1Ev,_ZTv0_n24_N7S8033C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S8033C5D0Ev,_ZTv0_n24_N7S8033C5D0Ev),
};
extern void _ZN8S8033C152v3Ev();
static  VTBL_ENTRY _tg__ZTV8S8033C15__7S8033C5__7S8033C1[] = {
  0,
  ABISELECT(-3200,-1720),
  (VTBL_ENTRY)&(_ZTI7S8033C5[0]),
  (VTBL_ENTRY)&_ZN8S8033C152v3Ev,
};
extern void _ZN7S8033C6D1Ev();
extern void _ZN7S8033C6D0Ev();
extern void _ZN7S8033C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8033C6__7S8033C1[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI7S8033C6[0]),
  (VTBL_ENTRY)&_ZN7S8033C6D1Ev,
  (VTBL_ENTRY)&_ZN7S8033C6D0Ev,
  (VTBL_ENTRY)&_ZN7S8033C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S8033C6D1Ev,_ZTv0_n12_N7S8033C6D1Ev)();
extern void ABISELECT(_ZThn496_N7S8033C6D1Ev,_ZThn260_N7S8033C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8033C6D0Ev,_ZTv0_n12_N7S8033C6D0Ev)();
extern void ABISELECT(_ZThn496_N7S8033C6D0Ev,_ZThn260_N7S8033C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C8__7S8033C6__7S8033C1[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI7S8033C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8033C6D1Ev,_ZTv0_n12_N7S8033C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8033C6D0Ev,_ZTv0_n12_N7S8033C6D0Ev),
};
extern void _ZN8S8033C112v2Ev();
extern void _ZN8S8033C11D1Ev();
extern void _ZN8S8033C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8033C11__7S8033C1[] = {
  ABISELECT(-144,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S8033C11[0]),
  (VTBL_ENTRY)&_ZN8S8033C112v2Ev,
  (VTBL_ENTRY)&_ZN8S8033C11D1Ev,
  (VTBL_ENTRY)&_ZN8S8033C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8033C11D1Ev,_ZTv0_n12_N8S8033C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S8033C11D0Ev,_ZTv0_n12_N8S8033C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S8033C8__8S8033C11__7S8033C1[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S8033C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C11D1Ev,_ZTv0_n12_N8S8033C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C11D0Ev,_ZTv0_n12_N8S8033C11D0Ev),
};
extern void _ZN8S8033C10D1Ev();
extern void _ZN8S8033C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8033C10__7S8033C1[] = {
  ABISELECT(256,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S8033C10[0]),
  (VTBL_ENTRY)&_ZN8S8033C10D1Ev,
  (VTBL_ENTRY)&_ZN8S8033C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8033C10D1Ev,_ZTv0_n12_N8S8033C10D1Ev)();
extern void ABISELECT(_ZThn256_N8S8033C10D1Ev,_ZThn132_N8S8033C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8033C10D0Ev,_ZTv0_n12_N8S8033C10D0Ev)();
extern void ABISELECT(_ZThn256_N8S8033C10D0Ev,_ZThn132_N8S8033C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__8S8033C10__7S8033C1[] = {
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  (VTBL_ENTRY)&(_ZTI8S8033C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C10D1Ev,_ZTv0_n12_N8S8033C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C10D0Ev,_ZTv0_n12_N8S8033C10D0Ev),
};
extern void _ZN8S8033C13D1Ev();
extern void _ZN8S8033C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8033C13__A1__7S8033C1[] = {
  ABISELECT(-400,-212),
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  0,
  (VTBL_ENTRY)&(_ZTI8S8033C13[0]),
  (VTBL_ENTRY)&_ZN8S8033C13D1Ev,
  (VTBL_ENTRY)&_ZN8S8033C13D0Ev,
};
extern void _ZN8S8033C14D1Ev();
extern void _ZN8S8033C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8033C148S8033C13__A1__7S8033C1[] = {
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  0,
  (VTBL_ENTRY)&(_ZTI8S8033C14[0]),
  (VTBL_ENTRY)&_ZN8S8033C14D1Ev,
  (VTBL_ENTRY)&_ZN8S8033C14D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S8033C14D1Ev,_ZTv0_n16_N8S8033C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S8033C14D0Ev,_ZTv0_n16_N8S8033C14D0Ev)();
extern void _ZN7S8033C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8033C6__8S8033C148S8033C13__A1__7S8033C1[] = {
  0,
  ABISELECT(1040,548),
  ABISELECT(496,260),
  ABISELECT(1040,548),
  (VTBL_ENTRY)&(_ZTI8S8033C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C14D1Ev,_ZTv0_n16_N8S8033C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C14D0Ev,_ZTv0_n16_N8S8033C14D0Ev),
  (VTBL_ENTRY)&_ZN7S8033C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8033C14D1Ev,_ZTv0_n12_N8S8033C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S8033C14D0Ev,_ZTv0_n12_N8S8033C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S8033C8__8S8033C148S8033C13__A1__7S8033C1[] = {
  ABISELECT(544,288),
  ABISELECT(544,288),
  (VTBL_ENTRY)&(_ZTI8S8033C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C14D1Ev,_ZTv0_n12_N8S8033C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C14D0Ev,_ZTv0_n12_N8S8033C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S8033C13D1Ev,_ZTv0_n16_N8S8033C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S8033C13D0Ev,_ZTv0_n16_N8S8033C13D0Ev)();
extern void _ZN7S8033C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8033C6__8S8033C13__A1__7S8033C1[] = {
  0,
  ABISELECT(1040,548),
  ABISELECT(496,260),
  ABISELECT(1040,548),
  (VTBL_ENTRY)&(_ZTI8S8033C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C13D1Ev,_ZTv0_n16_N8S8033C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C13D0Ev,_ZTv0_n16_N8S8033C13D0Ev),
  (VTBL_ENTRY)&_ZN7S8033C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8033C13D1Ev,_ZTv0_n12_N8S8033C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S8033C13D0Ev,_ZTv0_n12_N8S8033C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S8033C8__8S8033C13__A1__7S8033C1[] = {
  ABISELECT(544,288),
  ABISELECT(544,288),
  (VTBL_ENTRY)&(_ZTI8S8033C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C13D1Ev,_ZTv0_n12_N8S8033C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C13D0Ev,_ZTv0_n12_N8S8033C13D0Ev),
};
extern void _ZN8S8033C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N8S8033C13D1Ev,_ZTv0_n20_N8S8033C13D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S8033C13D0Ev,_ZTv0_n20_N8S8033C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S8033C11__8S8033C13__A1__7S8033C1[] = {
  ABISELECT(400,212),
  0,
  ABISELECT(-144,-76),
  ABISELECT(400,212),
  (VTBL_ENTRY)&(_ZTI8S8033C13[0]),
  (VTBL_ENTRY)&_ZN8S8033C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8033C13D1Ev,_ZTv0_n20_N8S8033C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8033C13D0Ev,_ZTv0_n20_N8S8033C13D0Ev),
};
static  VTT_ENTRY vtt_S8033C1[] = {
  {&(_ZTV7S8033C1[10]),  10,75},
  {&(_tg__ZTV8S8033C13__A__7S8033C1[5]),  5,7},
  {&(_tg__ZTV8S8033C148S8033C13__7S8033C1[4]),  4,6},
  {&(_tg__ZTV7S8033C6__8S8033C148S8033C13__7S8033C1[5]),  5,8},
  {&(_tg__ZTV7S8033C8__8S8033C148S8033C13__7S8033C1[3]),  3,5},
  {&(_tg__ZTV7S8033C6__8S8033C13__A__7S8033C1[5]),  5,8},
  {&(_tg__ZTV7S8033C8__8S8033C13__A__7S8033C1[3]),  3,5},
  {&(_tg__ZTV8S8033C11__8S8033C13__A__7S8033C1[5]),  5,8},
  {&(_tg__ZTV7S8033C5__7S8033C1[10]),  10,12},
  {&(_tg__ZTV8S8033C127S8033C5__7S8033C1[10]),  10,12},
  {&(_tg__ZTV8S8033C10__8S8033C127S8033C5__7S8033C1[4]),  4,6},
  {&(_tg__ZTV7S8033C7__A1__8S8033C127S8033C5__7S8033C1[3]),  3,5},
  {&(_tg__ZTV7S8033C6__8S8033C127S8033C5__7S8033C1[5]),  5,8},
  {&(_tg__ZTV7S8033C8__A1__8S8033C127S8033C5__7S8033C1[3]),  3,5},
  {&(_tg__ZTV8S8033C13__8S8033C127S8033C5__7S8033C1[6]),  6,8},
  {&(_tg__ZTV8S8033C11__8S8033C127S8033C5__7S8033C1[5]),  5,8},
  {&(_tg__ZTV8S8033C15__8S8033C127S8033C5__7S8033C1[3]),  3,4},
  {&(_tg__ZTV7S8033C6__7S8033C5__7S8033C1[5]),  5,8},
  {&(_tg__ZTV7S8033C8__7S8033C5__7S8033C1[3]),  3,5},
  {&(_tg__ZTV8S8033C11__7S8033C5__7S8033C1[5]),  5,8},
  {&(_tg__ZTV8S8033C10__7S8033C5__7S8033C1[4]),  4,6},
  {&(_tg__ZTV7S8033C7__A3__7S8033C5__7S8033C1[3]),  3,5},
  {&(_tg__ZTV8S8033C13__7S8033C5__7S8033C1[6]),  6,8},
  {&(_tg__ZTV8S8033C15__7S8033C5__7S8033C1[3]),  3,4},
  {&(_ZTV7S8033C1[17]),  17,75},
  {&(_ZTV7S8033C1[36]),  36,75},
  {&(_ZTV7S8033C1[42]),  42,75},
  {&(_ZTV7S8033C1[49]),  49,75},
  {&(_ZTV7S8033C1[29]),  29,75},
  {&(_ZTV7S8033C1[56]),  56,75},
  {&(_ZTV7S8033C1[61]),  61,75},
  {&(_ZTV7S8033C1[69]),  69,75},
  {&(_ZTV7S8033C1[74]),  74,75},
  {&(_tg__ZTV7S8033C6__7S8033C1[3]),  3,6},
  {&(_tg__ZTV7S8033C8__7S8033C6__7S8033C1[3]),  3,5},
  {&(_tg__ZTV8S8033C11__7S8033C1[3]),  3,6},
  {&(_tg__ZTV7S8033C8__8S8033C11__7S8033C1[3]),  3,5},
  {&(_tg__ZTV8S8033C10__7S8033C1[3]),  3,5},
  {&(_tg__ZTV7S8033C7__A1__8S8033C10__7S8033C1[3]),  3,5},
  {&(_tg__ZTV8S8033C13__A1__7S8033C1[5]),  5,7},
  {&(_tg__ZTV8S8033C148S8033C13__A1__7S8033C1[4]),  4,6},
  {&(_tg__ZTV7S8033C6__8S8033C148S8033C13__A1__7S8033C1[5]),  5,8},
  {&(_tg__ZTV7S8033C8__8S8033C148S8033C13__A1__7S8033C1[3]),  3,5},
  {&(_tg__ZTV7S8033C6__8S8033C13__A1__7S8033C1[5]),  5,8},
  {&(_tg__ZTV7S8033C8__8S8033C13__A1__7S8033C1[3]),  3,5},
  {&(_tg__ZTV8S8033C11__8S8033C13__A1__7S8033C1[5]),  5,8},
};
extern VTBL_ENTRY _ZTI7S8033C1[];
extern  VTBL_ENTRY _ZTV7S8033C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8033C1[];
static VTBL_ENTRY alt_thunk_names42[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8033C10D0Ev,_ZTv0_n12_N8S8033C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S8033C10D0Ev,_ZThn132_N8S8033C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8033C10D1Ev,_ZTv0_n12_N8S8033C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S8033C10D1Ev,_ZThn132_N8S8033C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8033C6D0Ev,_ZTv0_n12_N7S8033C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N7S8033C6D0Ev,_ZThn260_N7S8033C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8033C6D1Ev,_ZTv0_n12_N7S8033C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N7S8033C6D1Ev,_ZThn260_N7S8033C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S8033C5D0Ev,_ZTv0_n24_N7S8033C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2960_N7S8033C5D0Ev,_ZThn1552_N7S8033C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S8033C5D1Ev,_ZTv0_n24_N7S8033C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2960_N7S8033C5D1Ev,_ZThn1552_N7S8033C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S8033C5D0Ev,_ZTv0_n20_N7S8033C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N7S8033C5D0Ev,_ZThn1340_N7S8033C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S8033C5D1Ev,_ZTv0_n20_N7S8033C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N7S8033C5D1Ev,_ZThn1340_N7S8033C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8033C5D0Ev,_ZTv0_n12_N7S8033C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2864_N7S8033C5D0Ev,_ZThn1500_N7S8033C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2416_N7S8033C5D0Ev,_ZThn1264_N7S8033C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8033C5D1Ev,_ZTv0_n12_N7S8033C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2864_N7S8033C5D1Ev,_ZThn1500_N7S8033C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2416_N7S8033C5D1Ev,_ZThn1264_N7S8033C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S8033C5D0Ev,_ZTv0_n16_N7S8033C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2608_N7S8033C5D0Ev,_ZThn1368_N7S8033C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1920_N7S8033C5D0Ev,_ZThn1004_N7S8033C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S8033C5D1Ev,_ZTv0_n16_N7S8033C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2608_N7S8033C5D1Ev,_ZThn1368_N7S8033C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1920_N7S8033C5D1Ev,_ZThn1004_N7S8033C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S8033C12D0Ev,_ZTv0_n20_N8S8033C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N8S8033C12D0Ev,_ZThn1340_N8S8033C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S8033C12D1Ev,_ZTv0_n20_N8S8033C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N8S8033C12D1Ev,_ZThn1340_N8S8033C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S8033C12D0Ev,_ZTv0_n24_N8S8033C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2960_N8S8033C12D0Ev,_ZThn1552_N8S8033C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S8033C12D1Ev,_ZTv0_n24_N8S8033C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2960_N8S8033C12D1Ev,_ZThn1552_N8S8033C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8033C12D0Ev,_ZTv0_n12_N8S8033C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2416_N8S8033C12D0Ev,_ZThn1264_N8S8033C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2864_N8S8033C12D0Ev,_ZThn1500_N8S8033C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8033C12D1Ev,_ZTv0_n12_N8S8033C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2416_N8S8033C12D1Ev,_ZThn1264_N8S8033C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2864_N8S8033C12D1Ev,_ZThn1500_N8S8033C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8033C12D0Ev,_ZTv0_n16_N8S8033C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1920_N8S8033C12D0Ev,_ZThn1004_N8S8033C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2608_N8S8033C12D0Ev,_ZThn1368_N8S8033C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8033C12D1Ev,_ZTv0_n16_N8S8033C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1920_N8S8033C12D1Ev,_ZThn1004_N8S8033C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2608_N8S8033C12D1Ev,_ZThn1368_N8S8033C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S8033C13D0Ev,_ZTv0_n20_N8S8033C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2720_N8S8033C13D0Ev,_ZThn1432_N8S8033C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S8033C13D1Ev,_ZTv0_n20_N8S8033C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2720_N8S8033C13D1Ev,_ZThn1432_N8S8033C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8033C13D0Ev,_ZTv0_n12_N8S8033C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2576_N8S8033C13D0Ev,_ZThn1356_N8S8033C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8033C13D1Ev,_ZTv0_n12_N8S8033C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2576_N8S8033C13D1Ev,_ZThn1356_N8S8033C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8033C13D0Ev,_ZTv0_n16_N8S8033C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2080_N8S8033C13D0Ev,_ZThn1096_N8S8033C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8033C13D1Ev,_ZTv0_n16_N8S8033C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2080_N8S8033C13D1Ev,_ZThn1096_N8S8033C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8033C14D0Ev,_ZTv0_n12_N8S8033C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2576_N8S8033C14D0Ev,_ZThn1356_N8S8033C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8033C14D1Ev,_ZTv0_n12_N8S8033C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2576_N8S8033C14D1Ev,_ZThn1356_N8S8033C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8033C14D0Ev,_ZTv0_n16_N8S8033C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2080_N8S8033C14D0Ev,_ZThn1096_N8S8033C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8033C14D1Ev,_ZTv0_n16_N8S8033C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2080_N8S8033C14D1Ev,_ZThn1096_N8S8033C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S8033C1D0Ev,_ZTv0_n24_N7S8033C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6736_N7S8033C1D0Ev,_ZThn3568_N7S8033C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S8033C1D1Ev,_ZTv0_n24_N7S8033C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6736_N7S8033C1D1Ev,_ZThn3568_N7S8033C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S8033C1D0Ev,_ZTv0_n20_N7S8033C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6336_N7S8033C1D0Ev,_ZThn3356_N7S8033C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S8033C1D1Ev,_ZTv0_n20_N7S8033C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6336_N7S8033C1D1Ev,_ZThn3356_N7S8033C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8033C1D0Ev,_ZTv0_n12_N7S8033C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6640_N7S8033C1D0Ev,_ZThn3516_N7S8033C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn6192_N7S8033C1D0Ev,_ZThn3280_N7S8033C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8033C1D1Ev,_ZTv0_n12_N7S8033C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6640_N7S8033C1D1Ev,_ZThn3516_N7S8033C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn6192_N7S8033C1D1Ev,_ZThn3280_N7S8033C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S8033C1D0Ev,_ZTv0_n16_N7S8033C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6384_N7S8033C1D0Ev,_ZThn3384_N7S8033C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn5696_N7S8033C1D0Ev,_ZThn3020_N7S8033C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S8033C1D1Ev,_ZTv0_n16_N7S8033C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6384_N7S8033C1D1Ev,_ZThn3384_N7S8033C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn5696_N7S8033C1D1Ev,_ZThn3020_N7S8033C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S8033C1 = {  "S8033C1", // class name
  bases_S8033C1, 21,
  &(vtc_S8033C1[0]), // expected_vtbl_contents
  &(vtt_S8033C1[0]), // expected_vtt_contents
  ABISELECT(7168,3832), // object size
  NSPAIRA(_ZTI7S8033C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S8033C1),75, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S8033C1),46, //virtual table table var
  19, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names42,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8032C8  : S8033C7 {
  void *s8032c8f0;
  ::S20291C14_nt s8032c8f1;
  void *s8032c8f2;
  long double s8032c8f3;
  ~S8032C8(); // tgen
  S8032C8(); // tgen
};
//SIG(-1 S8032C8) C1{ BC2{ vd m Fc Fc:0 Fl[8] FD} Fp FC3{} Fp FD}


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

static void Test_S8032C8()
{
  extern Class_Descriptor cd_S8032C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(10,20)];
    init_test(&cd_S8032C8, buf);
    S8032C8 *dp, &lv = *(dp=new (buf) S8032C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,76), "sizeof(S8032C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S8032C8)");
    check_base_class_offset(lv, (S8033C7*), 0, "S8032C8");
    check_field_offset(lv, s8032c8f0, ABISELECT(96,52), "S8032C8.s8032c8f0");
    check_field_offset(lv, s8032c8f1, ABISELECT(104,56), "S8032C8.s8032c8f1");
    check_field_offset(lv, s8032c8f2, ABISELECT(112,60), "S8032C8.s8032c8f2");
    check_field_offset(lv, s8032c8f3, ABISELECT(128,64), "S8032C8.s8032c8f3");
    test_class_info(&lv, &cd_S8032C8);
    dp->~S8032C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8032C8(Test_S8032C8, "S8032C8", ABISELECT(144,76));

#else // __cplusplus

extern void _ZN7S8032C8C1Ev();
extern void _ZN7S8032C8D1Ev();
Name_Map name_map_S8032C8[] = {
  NSPAIR(_ZN7S8032C8C1Ev),
  NSPAIR(_ZN7S8032C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
static Base_Class bases_S8032C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8032C8[];
extern void _ZN7S8032C8D1Ev();
extern void _ZN7S8032C8D0Ev();
static  VTBL_ENTRY vtc_S8032C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8032C8[0]),
  (VTBL_ENTRY)&_ZN7S8032C8D1Ev,
  (VTBL_ENTRY)&_ZN7S8032C8D0Ev,
};
extern VTBL_ENTRY _ZTI7S8032C8[];
extern  VTBL_ENTRY _ZTV7S8032C8[];
Class_Descriptor cd_S8032C8 = {  "S8032C8", // class name
  bases_S8032C8, 1,
  &(vtc_S8032C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,76), // object size
  NSPAIRA(_ZTI7S8032C8),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8032C8),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8032C10  : S8032C8 , virtual S8033C7 {
  ::S8033C7 s8032c10f0;
  void *s8032c10f1;
  virtual  ~S8032C10(); // _ZN8S8032C10D2Ev
  S8032C10(); // tgen
};
//SIG(-1 S8032C10) C1{ BC2{ BC3{ vd m Fc Fc:0 Fl[8] FD} Fp FC4{} Fp FD} VBC3 vd FC3 Fp}


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

static void Test_S8032C10()
{
  extern Class_Descriptor cd_S8032C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(23,47)];
    init_test(&cd_S8032C10, buf);
    S8032C10 *dp, &lv = *(dp=new (buf) S8032C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(352,184), "sizeof(S8032C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S8032C10)");
    check_base_class_offset(lv, (S8033C7*)(S8032C8*), 0, "S8032C10");
    check_base_class_offset(lv, (S8032C8*), 0, "S8032C10");
    /*is_ambiguous_... S8032C10::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*), ABISELECT(256,132), "S8032C10");
    check_field_offset(lv, s8032c10f0, ABISELECT(144,76), "S8032C10.s8032c10f0");
    check_field_offset(lv, s8032c10f1, ABISELECT(240,128), "S8032C10.s8032c10f1");
    test_class_info(&lv, &cd_S8032C10);
    dp->~S8032C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8032C10(Test_S8032C10, "S8032C10", ABISELECT(352,184));

#else // __cplusplus

extern void _ZN8S8032C10C1Ev();
extern void _ZN8S8032C10D2Ev();
Name_Map name_map_S8032C10[] = {
  NSPAIR(_ZN8S8032C10C1Ev),
  NSPAIR(_ZN8S8032C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8032C8;
extern VTBL_ENTRY _ZTI7S8032C8[];
extern  VTBL_ENTRY _ZTV7S8032C8[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
static Base_Class bases_S8032C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S8032C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S8033C7,    ABISELECT(256,132), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S8032C10[];
extern void _ZN8S8032C10D1Ev();
extern void _ZN8S8032C10D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S8032C10D1Ev,_ZTv0_n12_N8S8032C10D1Ev)();
extern void ABISELECT(_ZThn256_N8S8032C10D1Ev,_ZThn132_N8S8032C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8032C10D0Ev,_ZTv0_n12_N8S8032C10D0Ev)();
extern void ABISELECT(_ZThn256_N8S8032C10D0Ev,_ZThn132_N8S8032C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S8032C10[] = {
  ABISELECT(256,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S8032C10[0]),
  (VTBL_ENTRY)&_ZN8S8032C10D1Ev,
  (VTBL_ENTRY)&_ZN8S8032C10D0Ev,
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  (VTBL_ENTRY)&(_ZTI8S8032C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C10D1Ev,_ZTv0_n12_N8S8032C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C10D0Ev,_ZTv0_n12_N8S8032C10D0Ev),
};
extern VTBL_ENTRY _ZTV8S8032C10[];
static  VTT_ENTRY vtt_S8032C10[] = {
  {&(_ZTV8S8032C10[3]),  3,10},
  {&(_ZTV8S8032C10[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S8032C10[];
extern  VTBL_ENTRY _ZTV8S8032C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8032C10[];
static VTBL_ENTRY alt_thunk_names43[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8032C10D0Ev,_ZTv0_n12_N8S8032C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S8032C10D0Ev,_ZThn132_N8S8032C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8032C10D1Ev,_ZTv0_n12_N8S8032C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S8032C10D1Ev,_ZThn132_N8S8032C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S8032C10 = {  "S8032C10", // class name
  bases_S8032C10, 3,
  &(vtc_S8032C10[0]), // expected_vtbl_contents
  &(vtt_S8032C10[0]), // expected_vtt_contents
  ABISELECT(352,184), // object size
  NSPAIRA(_ZTI8S8032C10),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S8032C10),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S8032C10),2, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names43,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8032C6  : S8033C7 , virtual S8032C8 {
  int s8032c6f0;
  char s8032c6f1;
  void *s8032c6f2;
  int s8032c6f3;
  void *s8032c6f4[2];
  ::S8032C10 s8032c6f5;
  virtual  ~S8032C6(); // _ZN7S8032C6D2Ev
  virtual void  v1(); // _ZN7S8032C62v1Ev
  S8032C6(); // tgen
};
//SIG(-1 S8032C6) C1{ BC2{ vd m Fc Fc:0 Fl[8] FD} VBC3{ BC2 Fp FC4{} Fp FD} vd v1 Fi Fc Fp Fi Fp[2] FC5{ BC3 VBC2 vd FC2 Fp}}


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

static void Test_S8032C6()
{
  extern Class_Descriptor cd_S8032C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(41,85)];
    init_test(&cd_S8032C6, buf);
    S8032C6 *dp, &lv = *(dp=new (buf) S8032C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(640,336), "sizeof(S8032C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S8032C6)");
    /*is_ambiguous_... S8032C6::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*), 0, "S8032C6");
    check_base_class_offset(lv, (S8033C7*)(S8032C8*), ABISELECT(496,260), "S8032C6");
    check_base_class_offset(lv, (S8032C8*), ABISELECT(496,260), "S8032C6");
    check_field_offset(lv, s8032c6f0, ABISELECT(96,52), "S8032C6.s8032c6f0");
    check_field_offset(lv, s8032c6f1, ABISELECT(100,56), "S8032C6.s8032c6f1");
    check_field_offset(lv, s8032c6f2, ABISELECT(104,60), "S8032C6.s8032c6f2");
    check_field_offset(lv, s8032c6f3, ABISELECT(112,64), "S8032C6.s8032c6f3");
    check_field_offset(lv, s8032c6f4, ABISELECT(120,68), "S8032C6.s8032c6f4");
    check_field_offset(lv, s8032c6f5, ABISELECT(144,76), "S8032C6.s8032c6f5");
    test_class_info(&lv, &cd_S8032C6);
    dp->~S8032C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8032C6(Test_S8032C6, "S8032C6", ABISELECT(640,336));

#else // __cplusplus

extern void _ZN7S8032C6C1Ev();
extern void _ZN7S8032C6D2Ev();
Name_Map name_map_S8032C6[] = {
  NSPAIR(_ZN7S8032C6C1Ev),
  NSPAIR(_ZN7S8032C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8032C8;
extern VTBL_ENTRY _ZTI7S8032C8[];
extern  VTBL_ENTRY _ZTV7S8032C8[];
static Base_Class bases_S8032C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S8033C7,    ABISELECT(496,260), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S8032C8,    ABISELECT(496,260), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S8032C6[];
extern void _ZN7S8032C6D1Ev();
extern void _ZN7S8032C6D0Ev();
extern void _ZN7S8032C62v1Ev();
extern void ABISELECT(_ZTv0_n24_N7S8032C6D1Ev,_ZTv0_n12_N7S8032C6D1Ev)();
extern void ABISELECT(_ZThn496_N7S8032C6D1Ev,_ZThn260_N7S8032C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8032C6D0Ev,_ZTv0_n12_N7S8032C6D0Ev)();
extern void ABISELECT(_ZThn496_N7S8032C6D0Ev,_ZThn260_N7S8032C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S8032C6[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI7S8032C6[0]),
  (VTBL_ENTRY)&_ZN7S8032C6D1Ev,
  (VTBL_ENTRY)&_ZN7S8032C6D0Ev,
  (VTBL_ENTRY)&_ZN7S8032C62v1Ev,
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI7S8032C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8032C6D1Ev,_ZTv0_n12_N7S8032C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8032C6D0Ev,_ZTv0_n12_N7S8032C6D0Ev),
};
extern VTBL_ENTRY _ZTV7S8032C6[];
static  VTT_ENTRY vtt_S8032C6[] = {
  {&(_ZTV7S8032C6[3]),  3,11},
  {&(_ZTV7S8032C6[9]),  9,11},
};
extern VTBL_ENTRY _ZTI7S8032C6[];
extern  VTBL_ENTRY _ZTV7S8032C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8032C6[];
static VTBL_ENTRY alt_thunk_names44[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8032C6D0Ev,_ZTv0_n12_N7S8032C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N7S8032C6D0Ev,_ZThn260_N7S8032C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8032C6D1Ev,_ZTv0_n12_N7S8032C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N7S8032C6D1Ev,_ZThn260_N7S8032C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S8032C6 = {  "S8032C6", // class name
  bases_S8032C6, 3,
  &(vtc_S8032C6[0]), // expected_vtbl_contents
  &(vtt_S8032C6[0]), // expected_vtt_contents
  ABISELECT(640,336), // object size
  NSPAIRA(_ZTI7S8032C6),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S8032C6),11, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S8032C6),2, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names44,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8032C11  : virtual S8032C8 {
  char s8032c11f0;
  short s8032c11f1;
  long double s8032c11f2;
  void *s8032c11f3[2];
  virtual void  v2(); // _ZN8S8032C112v2Ev
  ~S8032C11(); // tgen
  S8032C11(); // tgen
};
//SIG(-1 S8032C11) C1{ VBC2{ BC3{ vd m Fc Fc:0 Fl[8] FD} Fp FC4{} Fp FD} v1 Fc Fs FD Fp[2]}


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

static void Test_S8032C11()
{
  extern Class_Descriptor cd_S8032C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,27)];
    init_test(&cd_S8032C11, buf);
    S8032C11 *dp, &lv = *(dp=new (buf) S8032C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,104), "sizeof(S8032C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S8032C11)");
    check_base_class_offset(lv, (S8033C7*)(S8032C8*), ABISELECT(48,28), "S8032C11");
    check_base_class_offset(lv, (S8032C8*), ABISELECT(48,28), "S8032C11");
    check_field_offset(lv, s8032c11f0, ABISELECT(8,4), "S8032C11.s8032c11f0");
    check_field_offset(lv, s8032c11f1, ABISELECT(10,6), "S8032C11.s8032c11f1");
    check_field_offset(lv, s8032c11f2, ABISELECT(16,8), "S8032C11.s8032c11f2");
    check_field_offset(lv, s8032c11f3, ABISELECT(32,20), "S8032C11.s8032c11f3");
    test_class_info(&lv, &cd_S8032C11);
    dp->~S8032C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8032C11(Test_S8032C11, "S8032C11", ABISELECT(192,104));

#else // __cplusplus

extern void _ZN8S8032C11C1Ev();
extern void _ZN8S8032C11D1Ev();
Name_Map name_map_S8032C11[] = {
  NSPAIR(_ZN8S8032C11C1Ev),
  NSPAIR(_ZN8S8032C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8032C8;
extern VTBL_ENTRY _ZTI7S8032C8[];
extern  VTBL_ENTRY _ZTV7S8032C8[];
static Base_Class bases_S8032C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S8032C8,    ABISELECT(48,28), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S8032C11[];
extern void _ZN8S8032C112v2Ev();
extern void _ZN8S8032C11D1Ev();
extern void _ZN8S8032C11D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S8032C11D1Ev,_ZTv0_n12_N8S8032C11D1Ev)();
extern void ABISELECT(_ZThn48_N8S8032C11D1Ev,_ZThn28_N8S8032C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8032C11D0Ev,_ZTv0_n12_N8S8032C11D0Ev)();
extern void ABISELECT(_ZThn48_N8S8032C11D0Ev,_ZThn28_N8S8032C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S8032C11[] = {
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S8032C11[0]),
  (VTBL_ENTRY)&_ZN8S8032C112v2Ev,
  (VTBL_ENTRY)&_ZN8S8032C11D1Ev,
  (VTBL_ENTRY)&_ZN8S8032C11D0Ev,
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S8032C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C11D1Ev,_ZTv0_n12_N8S8032C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C11D0Ev,_ZTv0_n12_N8S8032C11D0Ev),
};
extern VTBL_ENTRY _ZTV8S8032C11[];
static  VTT_ENTRY vtt_S8032C11[] = {
  {&(_ZTV8S8032C11[3]),  3,11},
  {&(_ZTV8S8032C11[9]),  9,11},
};
extern VTBL_ENTRY _ZTI8S8032C11[];
extern  VTBL_ENTRY _ZTV8S8032C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8032C11[];
static VTBL_ENTRY alt_thunk_names45[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8032C11D0Ev,_ZTv0_n12_N8S8032C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S8032C11D0Ev,_ZThn28_N8S8032C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8032C11D1Ev,_ZTv0_n12_N8S8032C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S8032C11D1Ev,_ZThn28_N8S8032C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S8032C11 = {  "S8032C11", // class name
  bases_S8032C11, 2,
  &(vtc_S8032C11[0]), // expected_vtbl_contents
  &(vtt_S8032C11[0]), // expected_vtt_contents
  ABISELECT(192,104), // object size
  NSPAIRA(_ZTI8S8032C11),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S8032C11),11, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S8032C11),2, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names45,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8032C14  : S8033C7 , virtual S8032C6 {
  void *s8032c14f0;
  __tsi64 s8032c14f1;
  long s8032c14f2;
  char s8032c14f3;
  void *s8032c14f4;
  int s8032c14f5;
  virtual  ~S8032C14(); // _ZN8S8032C14D2Ev
  S8032C14(); // tgen
};
//SIG(-1 S8032C14) C1{ BC2{ vd m Fc Fc:0 Fl[8] FD} VBC3{ BC2 VBC4{ BC2 Fp FC5{} Fp FD} vd v1 Fi Fc Fp Fi Fp[2] FC6{ BC4 VBC2 vd FC2 Fp}} vd Fp FL Fl Fc Fp Fi}


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

static void Test_S8032C14()
{
  extern Class_Descriptor cd_S8032C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(50,105)];
    init_test(&cd_S8032C14, buf);
    S8032C14 *dp, &lv = *(dp=new (buf) S8032C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(784,416), "sizeof(S8032C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S8032C14)");
    /*is_ambiguous_... S8032C14::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*), 0, "S8032C14");
    /*is_ambiguous_... S8032C6::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8032C6*), ABISELECT(144,80), "S8032C14");
    check_base_class_offset(lv, (S8033C7*)(S8032C8*), ABISELECT(640,340), "S8032C14");
    check_base_class_offset(lv, (S8032C8*)(S8032C6*), ABISELECT(640,340), "S8032C14");
    check_base_class_offset(lv, (S8032C6*), ABISELECT(144,80), "S8032C14");
    check_field_offset(lv, s8032c14f0, ABISELECT(96,52), "S8032C14.s8032c14f0");
    check_field_offset(lv, s8032c14f1, ABISELECT(104,56), "S8032C14.s8032c14f1");
    check_field_offset(lv, s8032c14f2, ABISELECT(112,64), "S8032C14.s8032c14f2");
    check_field_offset(lv, s8032c14f3, ABISELECT(120,68), "S8032C14.s8032c14f3");
    check_field_offset(lv, s8032c14f4, ABISELECT(128,72), "S8032C14.s8032c14f4");
    check_field_offset(lv, s8032c14f5, ABISELECT(136,76), "S8032C14.s8032c14f5");
    test_class_info(&lv, &cd_S8032C14);
    dp->~S8032C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8032C14(Test_S8032C14, "S8032C14", ABISELECT(784,416));

#else // __cplusplus

extern void _ZN8S8032C14C1Ev();
extern void _ZN8S8032C14D2Ev();
Name_Map name_map_S8032C14[] = {
  NSPAIR(_ZN8S8032C14C1Ev),
  NSPAIR(_ZN8S8032C14D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8032C8;
extern VTBL_ENTRY _ZTI7S8032C8[];
extern  VTBL_ENTRY _ZTV7S8032C8[];
extern Class_Descriptor cd_S8032C6;
extern VTBL_ENTRY _ZTI7S8032C6[];
extern  VTBL_ENTRY _ZTV7S8032C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8032C6[];
static Base_Class bases_S8032C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S8033C7,    ABISELECT(144,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(640,340), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S8032C8,    ABISELECT(640,340), //bcp->offset
    14, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S8032C6,    ABISELECT(144,80), //bcp->offset
    6, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S8032C14[];
extern void _ZN8S8032C14D1Ev();
extern void _ZN8S8032C14D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S8032C14D1Ev,_ZTv0_n16_N8S8032C14D1Ev)();
extern void ABISELECT(_ZThn144_N8S8032C14D1Ev,_ZThn80_N8S8032C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8032C14D0Ev,_ZTv0_n16_N8S8032C14D0Ev)();
extern void ABISELECT(_ZThn144_N8S8032C14D0Ev,_ZThn80_N8S8032C14D0Ev)() __attribute__((weak));
extern void _ZN7S8032C62v1Ev();
extern void ABISELECT(_ZTv0_n24_N8S8032C14D1Ev,_ZTv0_n12_N8S8032C14D1Ev)();
extern void ABISELECT(_ZThn640_N8S8032C14D1Ev,_ZThn340_N8S8032C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8032C14D0Ev,_ZTv0_n12_N8S8032C14D0Ev)();
extern void ABISELECT(_ZThn640_N8S8032C14D0Ev,_ZThn340_N8S8032C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S8032C14[] = {
  ABISELECT(640,340),
  ABISELECT(144,80),
  0,
  (VTBL_ENTRY)&(_ZTI8S8032C14[0]),
  (VTBL_ENTRY)&_ZN8S8032C14D1Ev,
  (VTBL_ENTRY)&_ZN8S8032C14D0Ev,
  0,
  ABISELECT(-144,-80),
  ABISELECT(496,260),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI8S8032C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C14D1Ev,_ZTv0_n16_N8S8032C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C14D0Ev,_ZTv0_n16_N8S8032C14D0Ev),
  (VTBL_ENTRY)&_ZN7S8032C62v1Ev,
  ABISELECT(-640,-340),
  ABISELECT(-640,-340),
  (VTBL_ENTRY)&(_ZTI8S8032C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C14D1Ev,_ZTv0_n12_N8S8032C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C14D0Ev,_ZTv0_n12_N8S8032C14D0Ev),
};
extern VTBL_ENTRY _ZTV8S8032C14[];
extern void _ZN7S8032C6D1Ev();
extern void _ZN7S8032C6D0Ev();
extern void _ZN7S8032C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8032C6__8S8032C14[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI7S8032C6[0]),
  (VTBL_ENTRY)&_ZN7S8032C6D1Ev,
  (VTBL_ENTRY)&_ZN7S8032C6D0Ev,
  (VTBL_ENTRY)&_ZN7S8032C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S8032C6D1Ev,_ZTv0_n12_N7S8032C6D1Ev)();
extern void ABISELECT(_ZThn496_N7S8032C6D1Ev,_ZThn260_N7S8032C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8032C6D0Ev,_ZTv0_n12_N7S8032C6D0Ev)();
extern void ABISELECT(_ZThn496_N7S8032C6D0Ev,_ZThn260_N7S8032C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8032C8__7S8032C6__8S8032C14[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI7S8032C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8032C6D1Ev,_ZTv0_n12_N7S8032C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8032C6D0Ev,_ZTv0_n12_N7S8032C6D0Ev),
};
static  VTT_ENTRY vtt_S8032C14[] = {
  {&(_ZTV8S8032C14[4]),  4,19},
  {&(_ZTV8S8032C14[11]),  11,19},
  {&(_ZTV8S8032C14[17]),  17,19},
  {&(_tg__ZTV7S8032C6__8S8032C14[3]),  3,6},
  {&(_tg__ZTV7S8032C8__7S8032C6__8S8032C14[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S8032C14[];
extern  VTBL_ENTRY _ZTV8S8032C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8032C14[];
static VTBL_ENTRY alt_thunk_names46[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8032C6D0Ev,_ZTv0_n12_N7S8032C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N7S8032C6D0Ev,_ZThn260_N7S8032C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8032C6D1Ev,_ZTv0_n12_N7S8032C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N7S8032C6D1Ev,_ZThn260_N7S8032C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8032C14D0Ev,_ZTv0_n12_N8S8032C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N8S8032C14D0Ev,_ZThn340_N8S8032C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8032C14D1Ev,_ZTv0_n12_N8S8032C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N8S8032C14D1Ev,_ZThn340_N8S8032C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8032C14D0Ev,_ZTv0_n16_N8S8032C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S8032C14D0Ev,_ZThn80_N8S8032C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8032C14D1Ev,_ZTv0_n16_N8S8032C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S8032C14D1Ev,_ZThn80_N8S8032C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S8032C14 = {  "S8032C14", // class name
  bases_S8032C14, 5,
  &(vtc_S8032C14[0]), // expected_vtbl_contents
  &(vtt_S8032C14[0]), // expected_vtt_contents
  ABISELECT(784,416), // object size
  NSPAIRA(_ZTI8S8032C14),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S8032C14),19, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S8032C14),5, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names46,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8032C13  : S8032C14 , virtual S8032C11 {
  char s8032c13f0;
  __tsi64 s8032c13f1:35;
  virtual  ~S8032C13(); // _ZN8S8032C13D2Ev
  S8032C13(); // tgen
};
//SIG(-1 S8032C13) C1{ BC2{ BC3{ vd m Fc Fc:0 Fl[8] FD} VBC4{ BC3 VBC5{ BC3 Fp FC6{} Fp FD} vd v1 Fi Fc Fp Fi Fp[2] FC7{ BC5 VBC3 vd FC3 Fp}} vd Fp FL Fl Fc Fp Fi} VBC8{ VBC5 v2 Fc Fs FD Fp[2]} vd Fc FL:35}


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

static void Test_S8032C13()
{
  extern Class_Descriptor cd_S8032C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(54,114)];
    init_test(&cd_S8032C13, buf);
    S8032C13 *dp, &lv = *(dp=new (buf) S8032C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(848,452), "sizeof(S8032C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S8032C13)");
    /*is_ambiguous_... S8032C14::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8032C14*), 0, "S8032C13");
    /*is_ambiguous_... S8032C6::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8032C6*), ABISELECT(160,88), "S8032C13");
    check_base_class_offset(lv, (S8033C7*)(S8032C8*), ABISELECT(656,348), "S8032C13");
    check_base_class_offset(lv, (S8032C8*)(S8032C6*), ABISELECT(656,348), "S8032C13");
    check_base_class_offset(lv, (S8032C8*)(S8032C11*), ABISELECT(656,348), "S8032C13");
    check_base_class_offset(lv, (S8032C6*)(S8032C14*), ABISELECT(160,88), "S8032C13");
    check_base_class_offset(lv, (S8032C14*), 0, "S8032C13");
    check_base_class_offset(lv, (S8032C11*), ABISELECT(800,424), "S8032C13");
    check_field_offset(lv, s8032c13f0, ABISELECT(140,80), "S8032C13.s8032c13f0");
    set_bf_and_test(lv, s8032c13f1, ABISELECT(144,81), 0, 35, 1, "S8032C13");
    set_bf_and_test(lv, s8032c13f1, ABISELECT(144,81), 0, 35, hide_sll(1LL<<34), "S8032C13");
    test_class_info(&lv, &cd_S8032C13);
    dp->~S8032C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8032C13(Test_S8032C13, "S8032C13", ABISELECT(848,452));

#else // __cplusplus

extern void _ZN8S8032C13C1Ev();
extern void _ZN8S8032C13D2Ev();
Name_Map name_map_S8032C13[] = {
  NSPAIR(_ZN8S8032C13C1Ev),
  NSPAIR(_ZN8S8032C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8032C8;
extern VTBL_ENTRY _ZTI7S8032C8[];
extern  VTBL_ENTRY _ZTV7S8032C8[];
extern Class_Descriptor cd_S8032C6;
extern VTBL_ENTRY _ZTI7S8032C6[];
extern  VTBL_ENTRY _ZTV7S8032C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8032C6[];
extern Class_Descriptor cd_S8032C14;
extern VTBL_ENTRY _ZTI8S8032C14[];
extern  VTBL_ENTRY _ZTV8S8032C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8032C14[];
extern Class_Descriptor cd_S8032C11;
extern VTBL_ENTRY _ZTI8S8032C11[];
extern  VTBL_ENTRY _ZTV8S8032C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8032C11[];
static Base_Class bases_S8032C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(656,348), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S8032C8,    ABISELECT(656,348), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S8032C6,    ABISELECT(160,88), //bcp->offset
    7, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S8032C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S8032C11,    ABISELECT(800,424), //bcp->offset
    20, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S8032C13[];
extern void _ZN8S8032C13D1Ev();
extern void _ZN8S8032C13D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S8032C13D1Ev,_ZTv0_n16_N8S8032C13D1Ev)();
extern void ABISELECT(_ZThn160_N8S8032C13D1Ev,_ZThn88_N8S8032C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8032C13D0Ev,_ZTv0_n16_N8S8032C13D0Ev)();
extern void ABISELECT(_ZThn160_N8S8032C13D0Ev,_ZThn88_N8S8032C13D0Ev)() __attribute__((weak));
extern void _ZN7S8032C62v1Ev();
extern void ABISELECT(_ZTv0_n24_N8S8032C13D1Ev,_ZTv0_n12_N8S8032C13D1Ev)();
extern void ABISELECT(_ZThn656_N8S8032C13D1Ev,_ZThn348_N8S8032C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8032C13D0Ev,_ZTv0_n12_N8S8032C13D0Ev)();
extern void ABISELECT(_ZThn656_N8S8032C13D0Ev,_ZThn348_N8S8032C13D0Ev)() __attribute__((weak));
extern void _ZN8S8032C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N8S8032C13D1Ev,_ZTv0_n20_N8S8032C13D1Ev)();
extern void ABISELECT(_ZThn800_N8S8032C13D1Ev,_ZThn424_N8S8032C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S8032C13D0Ev,_ZTv0_n20_N8S8032C13D0Ev)();
extern void ABISELECT(_ZThn800_N8S8032C13D0Ev,_ZThn424_N8S8032C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S8032C13[] = {
  ABISELECT(800,424),
  ABISELECT(656,348),
  ABISELECT(160,88),
  0,
  (VTBL_ENTRY)&(_ZTI8S8032C13[0]),
  (VTBL_ENTRY)&_ZN8S8032C13D1Ev,
  (VTBL_ENTRY)&_ZN8S8032C13D0Ev,
  0,
  ABISELECT(-160,-88),
  ABISELECT(496,260),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S8032C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C13D1Ev,_ZTv0_n16_N8S8032C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C13D0Ev,_ZTv0_n16_N8S8032C13D0Ev),
  (VTBL_ENTRY)&_ZN7S8032C62v1Ev,
  ABISELECT(-656,-348),
  ABISELECT(-656,-348),
  (VTBL_ENTRY)&(_ZTI8S8032C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C13D1Ev,_ZTv0_n12_N8S8032C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C13D0Ev,_ZTv0_n12_N8S8032C13D0Ev),
  ABISELECT(-800,-424),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-800,-424),
  (VTBL_ENTRY)&(_ZTI8S8032C13[0]),
  (VTBL_ENTRY)&_ZN8S8032C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8032C13D1Ev,_ZTv0_n20_N8S8032C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8032C13D0Ev,_ZTv0_n20_N8S8032C13D0Ev),
};
extern VTBL_ENTRY _ZTV8S8032C13[];
extern void _ZN8S8032C14D1Ev();
extern void _ZN8S8032C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8032C14__8S8032C13[] = {
  ABISELECT(656,348),
  ABISELECT(160,88),
  0,
  (VTBL_ENTRY)&(_ZTI8S8032C14[0]),
  (VTBL_ENTRY)&_ZN8S8032C14D1Ev,
  (VTBL_ENTRY)&_ZN8S8032C14D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S8032C14D1Ev,_ZTv0_n16_N8S8032C14D1Ev)();
extern void ABISELECT(_ZThn160_N8S8032C14D1Ev,_ZThn88_N8S8032C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8032C14D0Ev,_ZTv0_n16_N8S8032C14D0Ev)();
extern void ABISELECT(_ZThn160_N8S8032C14D0Ev,_ZThn88_N8S8032C14D0Ev)() __attribute__((weak));
extern void _ZN7S8032C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8032C6__8S8032C14__8S8032C13[] = {
  0,
  ABISELECT(-160,-88),
  ABISELECT(496,260),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S8032C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C14D1Ev,_ZTv0_n16_N8S8032C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C14D0Ev,_ZTv0_n16_N8S8032C14D0Ev),
  (VTBL_ENTRY)&_ZN7S8032C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8032C14D1Ev,_ZTv0_n12_N8S8032C14D1Ev)();
extern void ABISELECT(_ZThn656_N8S8032C14D1Ev,_ZThn348_N8S8032C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8032C14D0Ev,_ZTv0_n12_N8S8032C14D0Ev)();
extern void ABISELECT(_ZThn656_N8S8032C14D0Ev,_ZThn348_N8S8032C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8032C8__8S8032C14__8S8032C13[] = {
  ABISELECT(-656,-348),
  ABISELECT(-656,-348),
  (VTBL_ENTRY)&(_ZTI8S8032C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C14D1Ev,_ZTv0_n12_N8S8032C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C14D0Ev,_ZTv0_n12_N8S8032C14D0Ev),
};
extern void _ZN7S8032C6D1Ev();
extern void _ZN7S8032C6D0Ev();
extern void _ZN7S8032C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8032C6__8S8032C13[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI7S8032C6[0]),
  (VTBL_ENTRY)&_ZN7S8032C6D1Ev,
  (VTBL_ENTRY)&_ZN7S8032C6D0Ev,
  (VTBL_ENTRY)&_ZN7S8032C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S8032C6D1Ev,_ZTv0_n12_N7S8032C6D1Ev)();
extern void ABISELECT(_ZThn496_N7S8032C6D1Ev,_ZThn260_N7S8032C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8032C6D0Ev,_ZTv0_n12_N7S8032C6D0Ev)();
extern void ABISELECT(_ZThn496_N7S8032C6D0Ev,_ZThn260_N7S8032C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8032C8__7S8032C6__8S8032C13[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI7S8032C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8032C6D1Ev,_ZTv0_n12_N7S8032C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8032C6D0Ev,_ZTv0_n12_N7S8032C6D0Ev),
};
extern void _ZN8S8032C112v2Ev();
extern void _ZN8S8032C11D1Ev();
extern void _ZN8S8032C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8032C11__8S8032C13[] = {
  ABISELECT(-144,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S8032C11[0]),
  (VTBL_ENTRY)&_ZN8S8032C112v2Ev,
  (VTBL_ENTRY)&_ZN8S8032C11D1Ev,
  (VTBL_ENTRY)&_ZN8S8032C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8032C11D1Ev,_ZTv0_n12_N8S8032C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S8032C11D0Ev,_ZTv0_n12_N8S8032C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S8032C8__8S8032C11__8S8032C13[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S8032C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C11D1Ev,_ZTv0_n12_N8S8032C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C11D0Ev,_ZTv0_n12_N8S8032C11D0Ev),
};
static  VTT_ENTRY vtt_S8032C13[] = {
  {&(_ZTV8S8032C13[5]),  5,28},
  {&(_tg__ZTV8S8032C14__8S8032C13[4]),  4,6},
  {&(_tg__ZTV7S8032C6__8S8032C14__8S8032C13[5]),  5,8},
  {&(_tg__ZTV7S8032C8__8S8032C14__8S8032C13[3]),  3,5},
  {&(_ZTV8S8032C13[12]),  12,28},
  {&(_ZTV8S8032C13[18]),  18,28},
  {&(_ZTV8S8032C13[25]),  25,28},
  {&(_tg__ZTV7S8032C6__8S8032C13[3]),  3,6},
  {&(_tg__ZTV7S8032C8__7S8032C6__8S8032C13[3]),  3,5},
  {&(_tg__ZTV8S8032C11__8S8032C13[3]),  3,6},
  {&(_tg__ZTV7S8032C8__8S8032C11__8S8032C13[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S8032C13[];
extern  VTBL_ENTRY _ZTV8S8032C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8032C13[];
static VTBL_ENTRY alt_thunk_names47[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8032C6D0Ev,_ZTv0_n12_N7S8032C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N7S8032C6D0Ev,_ZThn260_N7S8032C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8032C6D1Ev,_ZTv0_n12_N7S8032C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N7S8032C6D1Ev,_ZThn260_N7S8032C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8032C14D0Ev,_ZTv0_n12_N8S8032C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S8032C14D0Ev,_ZThn348_N8S8032C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8032C14D1Ev,_ZTv0_n12_N8S8032C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S8032C14D1Ev,_ZThn348_N8S8032C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8032C14D0Ev,_ZTv0_n16_N8S8032C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S8032C14D0Ev,_ZThn88_N8S8032C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8032C14D1Ev,_ZTv0_n16_N8S8032C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S8032C14D1Ev,_ZThn88_N8S8032C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S8032C13D0Ev,_ZTv0_n20_N8S8032C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn800_N8S8032C13D0Ev,_ZThn424_N8S8032C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S8032C13D1Ev,_ZTv0_n20_N8S8032C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn800_N8S8032C13D1Ev,_ZThn424_N8S8032C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8032C13D0Ev,_ZTv0_n12_N8S8032C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S8032C13D0Ev,_ZThn348_N8S8032C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8032C13D1Ev,_ZTv0_n12_N8S8032C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S8032C13D1Ev,_ZThn348_N8S8032C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8032C13D0Ev,_ZTv0_n16_N8S8032C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S8032C13D0Ev,_ZThn88_N8S8032C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8032C13D1Ev,_ZTv0_n16_N8S8032C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S8032C13D1Ev,_ZThn88_N8S8032C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S8032C13 = {  "S8032C13", // class name
  bases_S8032C13, 7,
  &(vtc_S8032C13[0]), // expected_vtbl_contents
  &(vtt_S8032C13[0]), // expected_vtt_contents
  ABISELECT(848,452), // object size
  NSPAIRA(_ZTI8S8032C13),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S8032C13),28, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S8032C13),11, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names47,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8032C15  {
  long double s8032c15f0;
  void *s8032c15f1;
  ::S8033C7 s8032c15f2;
  __tsi64 s8032c15f3;
  long double s8032c15f4;
  int s8032c15f5;
  virtual void  v3(); // _ZN8S8032C152v3Ev
  ~S8032C15(); // tgen
  S8032C15(); // tgen
};
//SIG(-1 S8032C15) C1{ v1 FD Fp FC2{ vd m Fc Fc:0 Fl[8] FD} FL FD Fi}


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

static void Test_S8032C15()
{
  extern Class_Descriptor cd_S8032C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,25)];
    init_test(&cd_S8032C15, buf);
    S8032C15 *dp, &lv = *(dp=new (buf) S8032C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,96), "sizeof(S8032C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S8032C15)");
    check_field_offset(lv, s8032c15f0, ABISELECT(16,4), "S8032C15.s8032c15f0");
    check_field_offset(lv, s8032c15f1, ABISELECT(32,16), "S8032C15.s8032c15f1");
    check_field_offset(lv, s8032c15f2, ABISELECT(48,20), "S8032C15.s8032c15f2");
    check_field_offset(lv, s8032c15f3, ABISELECT(144,72), "S8032C15.s8032c15f3");
    check_field_offset(lv, s8032c15f4, ABISELECT(160,80), "S8032C15.s8032c15f4");
    check_field_offset(lv, s8032c15f5, ABISELECT(176,92), "S8032C15.s8032c15f5");
    test_class_info(&lv, &cd_S8032C15);
    dp->~S8032C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8032C15(Test_S8032C15, "S8032C15", ABISELECT(192,96));

#else // __cplusplus

extern void _ZN8S8032C15C1Ev();
extern void _ZN8S8032C15D1Ev();
Name_Map name_map_S8032C15[] = {
  NSPAIR(_ZN8S8032C15C1Ev),
  NSPAIR(_ZN8S8032C15D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S8032C15[];
extern void _ZN8S8032C152v3Ev();
static  VTBL_ENTRY vtc_S8032C15[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S8032C15[0]),
  (VTBL_ENTRY)&_ZN8S8032C152v3Ev,
};
extern VTBL_ENTRY _ZTI8S8032C15[];
extern  VTBL_ENTRY _ZTV8S8032C15[];
Class_Descriptor cd_S8032C15 = {  "S8032C15", // class name
  0,0,//no base classes
  &(vtc_S8032C15[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(192,96), // object size
  NSPAIRA(_ZTI8S8032C15),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S8032C15),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8032C12  : virtual S8032C10 , virtual S8032C6 , virtual S8032C13 , virtual S8033C4 , virtual S8032C15 {
  void *s8032c12f0;
  ::S8032C15 s8032c12f1[3];
  ::S8032C15 s8032c12f2;
  char s8032c12f3;
  virtual  ~S8032C12(); // _ZN8S8032C12D2Ev
  S8032C12(); // tgen
};
//SIG(-1 S8032C12) C1{ VBC2{ BC3{ BC4{ vd m Fc Fc:0 Fl[8] FD} Fp FC5{} Fp FD} VBC4 vd FC4 Fp} VBC6{ BC4 VBC3 vd v1 Fi Fc Fp Fi Fp[2] FC2} VBC7{ BC8{ BC4 VBC6 vd Fp FL Fl Fc Fp Fi} VBC9{ VBC3 v2 Fc Fs FD Fp[2]} vd Fc FL:35} VBC10{ m Fp[3] FL[8]} VBC11{ v3 FD Fp FC4 FL FD Fi} vd Fp FC11[3] FC11 Fc}


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

static void Test_S8032C12()
{
  extern Class_Descriptor cd_S8032C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(144,302)];
    init_test(&cd_S8032C12, buf);
    S8032C12 *dp, &lv = *(dp=new (buf) S8032C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2288,1204), "sizeof(S8032C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S8032C12)");
    check_base_class_offset(lv, (S8033C7*)(S8032C8*)(S8032C10*), ABISELECT(800,396), "S8032C12");
    check_base_class_offset(lv, (S8032C8*)(S8032C10*), ABISELECT(800,396), "S8032C12");
    /*is_ambiguous_... S8032C10::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8032C10*), ABISELECT(1056,528), "S8032C12");
    check_base_class_offset(lv, (S8032C10*), ABISELECT(800,396), "S8032C12");
    /*is_ambiguous_... S8032C6::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8032C6*), ABISELECT(1152,580), "S8032C12");
    /*is_ambiguous_... S8032C12::S8032C8 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8032C8*), ABISELECT(1648,840), "S8032C12");
    check_base_class_offset(lv, (S8032C8*)(S8032C6*), ABISELECT(1648,840), "S8032C12");
    check_base_class_offset(lv, (S8032C8*)(S8032C11*), ABISELECT(1648,840), "S8032C12");
    check_base_class_offset(lv, (S8032C6*), ABISELECT(1152,580), "S8032C12");
    check_base_class_offset(lv, (S8032C6*)(S8032C14*)(S8032C13*), ABISELECT(1152,580), "S8032C12");
    /*is_ambiguous_... S8032C14::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8032C14*)(S8032C13*), ABISELECT(1792,916), "S8032C12");
    check_base_class_offset(lv, (S8032C14*)(S8032C13*), ABISELECT(1792,916), "S8032C12");
    check_base_class_offset(lv, (S8032C11*)(S8032C13*), ABISELECT(1952,1004), "S8032C12");
    check_base_class_offset(lv, (S8032C13*), ABISELECT(1792,916), "S8032C12");
    check_base_class_offset(lv, (S8033C4*), ABISELECT(2000,1032), "S8032C12");
    check_base_class_offset(lv, (S8032C15*), ABISELECT(2096,1108), "S8032C12");
    check_field_offset(lv, s8032c12f0, ABISELECT(8,4), "S8032C12.s8032c12f0");
    check_field_offset(lv, s8032c12f1, ABISELECT(16,8), "S8032C12.s8032c12f1");
    check_field_offset(lv, s8032c12f2, ABISELECT(592,296), "S8032C12.s8032c12f2");
    check_field_offset(lv, s8032c12f3, ABISELECT(784,392), "S8032C12.s8032c12f3");
    test_class_info(&lv, &cd_S8032C12);
    dp->~S8032C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8032C12(Test_S8032C12, "S8032C12", ABISELECT(2288,1204));

#else // __cplusplus

extern void _ZN8S8032C12C1Ev();
extern void _ZN8S8032C12D2Ev();
Name_Map name_map_S8032C12[] = {
  NSPAIR(_ZN8S8032C12C1Ev),
  NSPAIR(_ZN8S8032C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8032C8;
extern VTBL_ENTRY _ZTI7S8032C8[];
extern  VTBL_ENTRY _ZTV7S8032C8[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8032C10;
extern VTBL_ENTRY _ZTI8S8032C10[];
extern  VTBL_ENTRY _ZTV8S8032C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8032C10[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8032C8;
extern VTBL_ENTRY _ZTI7S8032C8[];
extern  VTBL_ENTRY _ZTV7S8032C8[];
extern Class_Descriptor cd_S8032C6;
extern VTBL_ENTRY _ZTI7S8032C6[];
extern  VTBL_ENTRY _ZTV7S8032C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8032C6[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8032C14;
extern VTBL_ENTRY _ZTI8S8032C14[];
extern  VTBL_ENTRY _ZTV8S8032C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8032C14[];
extern Class_Descriptor cd_S8032C11;
extern VTBL_ENTRY _ZTI8S8032C11[];
extern  VTBL_ENTRY _ZTV8S8032C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8032C11[];
extern Class_Descriptor cd_S8032C13;
extern VTBL_ENTRY _ZTI8S8032C13[];
extern  VTBL_ENTRY _ZTV8S8032C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8032C13[];
extern Class_Descriptor cd_S8033C4;
extern VTBL_ENTRY _ZTI7S8033C4[];
extern Class_Descriptor cd_S8032C15;
extern VTBL_ENTRY _ZTI8S8032C15[];
extern  VTBL_ENTRY _ZTV8S8032C15[];
static Base_Class bases_S8032C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    ABISELECT(800,396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S8032C8,    ABISELECT(800,396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(1056,528), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S8032C10,    ABISELECT(800,396), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C7,    ABISELECT(1152,580), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(1648,840), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S8032C8,    ABISELECT(1648,840), //bcp->offset
    31, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S8032C6,    ABISELECT(1152,580), //bcp->offset
    23, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C7,    ABISELECT(1792,916), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S8032C14,    ABISELECT(1792,916), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S8032C11,    ABISELECT(1952,1004), //bcp->offset
    44, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S8032C13,    ABISELECT(1792,916), //bcp->offset
    36, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C4,    ABISELECT(2000,1032), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8032C15,    ABISELECT(2096,1108), //bcp->offset
    52, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S8032C12[];
extern void _ZN8S8032C12D1Ev();
extern void _ZN8S8032C12D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S8032C12D1Ev,_ZTv0_n16_N8S8032C12D1Ev)();
extern void ABISELECT(_ZThn800_N8S8032C12D1Ev,_ZThn396_N8S8032C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8032C12D0Ev,_ZTv0_n16_N8S8032C12D0Ev)();
extern void ABISELECT(_ZThn800_N8S8032C12D0Ev,_ZThn396_N8S8032C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8032C12D1Ev,_ZTv0_n12_N8S8032C12D1Ev)();
extern void ABISELECT(_ZThn1056_N8S8032C12D1Ev,_ZThn528_N8S8032C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8032C12D0Ev,_ZTv0_n12_N8S8032C12D0Ev)();
extern void ABISELECT(_ZThn1056_N8S8032C12D0Ev,_ZThn528_N8S8032C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8032C12D1Ev,_ZTv0_n16_N8S8032C12D1Ev)();
extern void ABISELECT(_ZThn1152_N8S8032C12D1Ev,_ZThn580_N8S8032C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8032C12D0Ev,_ZTv0_n16_N8S8032C12D0Ev)();
extern void ABISELECT(_ZThn1152_N8S8032C12D0Ev,_ZThn580_N8S8032C12D0Ev)() __attribute__((weak));
extern void _ZN7S8032C62v1Ev();
extern void ABISELECT(_ZTv0_n24_N8S8032C12D1Ev,_ZTv0_n12_N8S8032C12D1Ev)();
extern void ABISELECT(_ZThn1648_N8S8032C12D1Ev,_ZThn840_N8S8032C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8032C12D0Ev,_ZTv0_n12_N8S8032C12D0Ev)();
extern void ABISELECT(_ZThn1648_N8S8032C12D0Ev,_ZThn840_N8S8032C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S8032C12D1Ev,_ZTv0_n24_N8S8032C12D1Ev)();
extern void ABISELECT(_ZThn1792_N8S8032C12D1Ev,_ZThn916_N8S8032C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S8032C12D0Ev,_ZTv0_n24_N8S8032C12D0Ev)();
extern void ABISELECT(_ZThn1792_N8S8032C12D0Ev,_ZThn916_N8S8032C12D0Ev)() __attribute__((weak));
extern void _ZN8S8032C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N8S8032C12D1Ev,_ZTv0_n20_N8S8032C12D1Ev)();
extern void ABISELECT(_ZThn1952_N8S8032C12D1Ev,_ZThn1004_N8S8032C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S8032C12D0Ev,_ZTv0_n20_N8S8032C12D0Ev)();
extern void ABISELECT(_ZThn1952_N8S8032C12D0Ev,_ZThn1004_N8S8032C12D0Ev)() __attribute__((weak));
extern void _ZN8S8032C152v3Ev();
static  VTBL_ENTRY vtc_S8032C12[] = {
  ABISELECT(2096,1108),
  ABISELECT(2000,1032),
  ABISELECT(1952,1004),
  ABISELECT(1792,916),
  ABISELECT(1648,840),
  ABISELECT(1152,580),
  ABISELECT(1056,528),
  ABISELECT(800,396),
  0,
  (VTBL_ENTRY)&(_ZTI8S8032C12[0]),
  (VTBL_ENTRY)&_ZN8S8032C12D1Ev,
  (VTBL_ENTRY)&_ZN8S8032C12D0Ev,
  ABISELECT(-800,-396),
  ABISELECT(256,132),
  ABISELECT(-800,-396),
  (VTBL_ENTRY)&(_ZTI8S8032C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C12D1Ev,_ZTv0_n16_N8S8032C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C12D0Ev,_ZTv0_n16_N8S8032C12D0Ev),
  ABISELECT(-1056,-528),
  ABISELECT(-1056,-528),
  (VTBL_ENTRY)&(_ZTI8S8032C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C12D1Ev,_ZTv0_n12_N8S8032C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C12D0Ev,_ZTv0_n12_N8S8032C12D0Ev),
  0,
  ABISELECT(-1152,-580),
  ABISELECT(496,260),
  ABISELECT(-1152,-580),
  (VTBL_ENTRY)&(_ZTI8S8032C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C12D1Ev,_ZTv0_n16_N8S8032C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C12D0Ev,_ZTv0_n16_N8S8032C12D0Ev),
  (VTBL_ENTRY)&_ZN7S8032C62v1Ev,
  ABISELECT(-1648,-840),
  ABISELECT(-1648,-840),
  (VTBL_ENTRY)&(_ZTI8S8032C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C12D1Ev,_ZTv0_n12_N8S8032C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C12D0Ev,_ZTv0_n12_N8S8032C12D0Ev),
  ABISELECT(-1792,-916),
  ABISELECT(160,88),
  ABISELECT(-144,-76),
  ABISELECT(-640,-336),
  ABISELECT(-1792,-916),
  (VTBL_ENTRY)&(_ZTI8S8032C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S8032C12D1Ev,_ZTv0_n24_N8S8032C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S8032C12D0Ev,_ZTv0_n24_N8S8032C12D0Ev),
  ABISELECT(-1952,-1004),
  0,
  ABISELECT(-304,-164),
  ABISELECT(-1952,-1004),
  (VTBL_ENTRY)&(_ZTI8S8032C12[0]),
  (VTBL_ENTRY)&_ZN8S8032C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8032C12D1Ev,_ZTv0_n20_N8S8032C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8032C12D0Ev,_ZTv0_n20_N8S8032C12D0Ev),
  0,
  ABISELECT(-2096,-1108),
  (VTBL_ENTRY)&(_ZTI8S8032C12[0]),
  (VTBL_ENTRY)&_ZN8S8032C152v3Ev,
};
extern VTBL_ENTRY _ZTV8S8032C12[];
extern void _ZN8S8032C10D1Ev();
extern void _ZN8S8032C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8032C10__8S8032C12[] = {
  ABISELECT(256,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S8032C10[0]),
  (VTBL_ENTRY)&_ZN8S8032C10D1Ev,
  (VTBL_ENTRY)&_ZN8S8032C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8032C10D1Ev,_ZTv0_n12_N8S8032C10D1Ev)();
extern void ABISELECT(_ZThn256_N8S8032C10D1Ev,_ZThn132_N8S8032C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8032C10D0Ev,_ZTv0_n12_N8S8032C10D0Ev)();
extern void ABISELECT(_ZThn256_N8S8032C10D0Ev,_ZThn132_N8S8032C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__8S8032C10__8S8032C12[] = {
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  (VTBL_ENTRY)&(_ZTI8S8032C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C10D1Ev,_ZTv0_n12_N8S8032C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C10D0Ev,_ZTv0_n12_N8S8032C10D0Ev),
};
extern void _ZN7S8032C6D1Ev();
extern void _ZN7S8032C6D0Ev();
extern void _ZN7S8032C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8032C6__8S8032C12[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI7S8032C6[0]),
  (VTBL_ENTRY)&_ZN7S8032C6D1Ev,
  (VTBL_ENTRY)&_ZN7S8032C6D0Ev,
  (VTBL_ENTRY)&_ZN7S8032C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S8032C6D1Ev,_ZTv0_n12_N7S8032C6D1Ev)();
extern void ABISELECT(_ZThn496_N7S8032C6D1Ev,_ZThn260_N7S8032C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8032C6D0Ev,_ZTv0_n12_N7S8032C6D0Ev)();
extern void ABISELECT(_ZThn496_N7S8032C6D0Ev,_ZThn260_N7S8032C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8032C8__7S8032C6__8S8032C12[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI7S8032C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8032C6D1Ev,_ZTv0_n12_N7S8032C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8032C6D0Ev,_ZTv0_n12_N7S8032C6D0Ev),
};
extern void _ZN8S8032C13D1Ev();
extern void _ZN8S8032C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8032C13__8S8032C12[] = {
  ABISELECT(160,88),
  ABISELECT(-144,-76),
  ABISELECT(-640,-336),
  0,
  (VTBL_ENTRY)&(_ZTI8S8032C13[0]),
  (VTBL_ENTRY)&_ZN8S8032C13D1Ev,
  (VTBL_ENTRY)&_ZN8S8032C13D0Ev,
};
extern void _ZN8S8032C14D1Ev();
extern void _ZN8S8032C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8032C148S8032C13__8S8032C12[] = {
  ABISELECT(-144,-76),
  ABISELECT(-640,-336),
  0,
  (VTBL_ENTRY)&(_ZTI8S8032C14[0]),
  (VTBL_ENTRY)&_ZN8S8032C14D1Ev,
  (VTBL_ENTRY)&_ZN8S8032C14D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S8032C14D1Ev,_ZTv0_n16_N8S8032C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S8032C14D0Ev,_ZTv0_n16_N8S8032C14D0Ev)();
extern void _ZN7S8032C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8032C6__8S8032C148S8032C13__8S8032C12[] = {
  0,
  ABISELECT(640,336),
  ABISELECT(496,260),
  ABISELECT(640,336),
  (VTBL_ENTRY)&(_ZTI8S8032C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C14D1Ev,_ZTv0_n16_N8S8032C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C14D0Ev,_ZTv0_n16_N8S8032C14D0Ev),
  (VTBL_ENTRY)&_ZN7S8032C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8032C14D1Ev,_ZTv0_n12_N8S8032C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S8032C14D0Ev,_ZTv0_n12_N8S8032C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S8032C8__8S8032C148S8032C13__8S8032C12[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S8032C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C14D1Ev,_ZTv0_n12_N8S8032C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C14D0Ev,_ZTv0_n12_N8S8032C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S8032C13D1Ev,_ZTv0_n16_N8S8032C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S8032C13D0Ev,_ZTv0_n16_N8S8032C13D0Ev)();
extern void _ZN7S8032C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8032C6__8S8032C13__8S8032C12[] = {
  0,
  ABISELECT(640,336),
  ABISELECT(496,260),
  ABISELECT(640,336),
  (VTBL_ENTRY)&(_ZTI8S8032C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C13D1Ev,_ZTv0_n16_N8S8032C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C13D0Ev,_ZTv0_n16_N8S8032C13D0Ev),
  (VTBL_ENTRY)&_ZN7S8032C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8032C13D1Ev,_ZTv0_n12_N8S8032C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S8032C13D0Ev,_ZTv0_n12_N8S8032C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S8032C8__8S8032C13__8S8032C12[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S8032C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C13D1Ev,_ZTv0_n12_N8S8032C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C13D0Ev,_ZTv0_n12_N8S8032C13D0Ev),
};
extern void _ZN8S8032C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N8S8032C13D1Ev,_ZTv0_n20_N8S8032C13D1Ev)();
extern void ABISELECT(_ZThn160_N8S8032C13D1Ev,_ZThn88_N8S8032C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S8032C13D0Ev,_ZTv0_n20_N8S8032C13D0Ev)();
extern void ABISELECT(_ZThn160_N8S8032C13D0Ev,_ZThn88_N8S8032C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8032C11__8S8032C13__8S8032C12[] = {
  ABISELECT(-160,-88),
  0,
  ABISELECT(-304,-164),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S8032C13[0]),
  (VTBL_ENTRY)&_ZN8S8032C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8032C13D1Ev,_ZTv0_n20_N8S8032C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8032C13D0Ev,_ZTv0_n20_N8S8032C13D0Ev),
};
extern void _ZN8S8032C112v2Ev();
extern void _ZN8S8032C11D1Ev();
extern void _ZN8S8032C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8032C11__8S8032C12[] = {
  ABISELECT(-304,-164),
  0,
  (VTBL_ENTRY)&(_ZTI8S8032C11[0]),
  (VTBL_ENTRY)&_ZN8S8032C112v2Ev,
  (VTBL_ENTRY)&_ZN8S8032C11D1Ev,
  (VTBL_ENTRY)&_ZN8S8032C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8032C11D1Ev,_ZTv0_n12_N8S8032C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S8032C11D0Ev,_ZTv0_n12_N8S8032C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S8032C8__8S8032C11__8S8032C12[] = {
  ABISELECT(304,164),
  ABISELECT(304,164),
  (VTBL_ENTRY)&(_ZTI8S8032C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C11D1Ev,_ZTv0_n12_N8S8032C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C11D0Ev,_ZTv0_n12_N8S8032C11D0Ev),
};
static  VTT_ENTRY vtt_S8032C12[] = {
  {&(_ZTV8S8032C12[10]),  10,56},
  {&(_ZTV8S8032C12[16]),  16,56},
  {&(_ZTV8S8032C12[21]),  21,56},
  {&(_ZTV8S8032C12[28]),  28,56},
  {&(_ZTV8S8032C12[34]),  34,56},
  {&(_ZTV8S8032C12[42]),  42,56},
  {&(_ZTV8S8032C12[49]),  49,56},
  {&(_ZTV8S8032C12[55]),  55,56},
  {&(_tg__ZTV8S8032C10__8S8032C12[3]),  3,5},
  {&(_tg__ZTV7S8033C7__A1__8S8032C10__8S8032C12[3]),  3,5},
  {&(_tg__ZTV7S8032C6__8S8032C12[3]),  3,6},
  {&(_tg__ZTV7S8032C8__7S8032C6__8S8032C12[3]),  3,5},
  {&(_tg__ZTV8S8032C13__8S8032C12[5]),  5,7},
  {&(_tg__ZTV8S8032C148S8032C13__8S8032C12[4]),  4,6},
  {&(_tg__ZTV7S8032C6__8S8032C148S8032C13__8S8032C12[5]),  5,8},
  {&(_tg__ZTV7S8032C8__8S8032C148S8032C13__8S8032C12[3]),  3,5},
  {&(_tg__ZTV7S8032C6__8S8032C13__8S8032C12[5]),  5,8},
  {&(_tg__ZTV7S8032C8__8S8032C13__8S8032C12[3]),  3,5},
  {&(_tg__ZTV8S8032C11__8S8032C13__8S8032C12[5]),  5,8},
  {&(_tg__ZTV8S8032C11__8S8032C12[3]),  3,6},
  {&(_tg__ZTV7S8032C8__8S8032C11__8S8032C12[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S8032C12[];
extern  VTBL_ENTRY _ZTV8S8032C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8032C12[];
static VTBL_ENTRY alt_thunk_names48[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S8032C13D0Ev,_ZTv0_n20_N8S8032C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S8032C13D0Ev,_ZThn88_N8S8032C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S8032C13D1Ev,_ZTv0_n20_N8S8032C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S8032C13D1Ev,_ZThn88_N8S8032C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8032C6D0Ev,_ZTv0_n12_N7S8032C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N7S8032C6D0Ev,_ZThn260_N7S8032C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8032C6D1Ev,_ZTv0_n12_N7S8032C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N7S8032C6D1Ev,_ZThn260_N7S8032C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8032C10D0Ev,_ZTv0_n12_N8S8032C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S8032C10D0Ev,_ZThn132_N8S8032C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8032C10D1Ev,_ZTv0_n12_N8S8032C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S8032C10D1Ev,_ZThn132_N8S8032C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S8032C12D0Ev,_ZTv0_n20_N8S8032C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1952_N8S8032C12D0Ev,_ZThn1004_N8S8032C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S8032C12D1Ev,_ZTv0_n20_N8S8032C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1952_N8S8032C12D1Ev,_ZThn1004_N8S8032C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S8032C12D0Ev,_ZTv0_n24_N8S8032C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1792_N8S8032C12D0Ev,_ZThn916_N8S8032C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S8032C12D1Ev,_ZTv0_n24_N8S8032C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1792_N8S8032C12D1Ev,_ZThn916_N8S8032C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8032C12D0Ev,_ZTv0_n12_N8S8032C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1648_N8S8032C12D0Ev,_ZThn840_N8S8032C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1056_N8S8032C12D0Ev,_ZThn528_N8S8032C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8032C12D1Ev,_ZTv0_n12_N8S8032C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1648_N8S8032C12D1Ev,_ZThn840_N8S8032C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1056_N8S8032C12D1Ev,_ZThn528_N8S8032C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8032C12D0Ev,_ZTv0_n16_N8S8032C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1152_N8S8032C12D0Ev,_ZThn580_N8S8032C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn800_N8S8032C12D0Ev,_ZThn396_N8S8032C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8032C12D1Ev,_ZTv0_n16_N8S8032C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1152_N8S8032C12D1Ev,_ZThn580_N8S8032C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn800_N8S8032C12D1Ev,_ZThn396_N8S8032C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S8032C12 = {  "S8032C12", // class name
  bases_S8032C12, 14,
  &(vtc_S8032C12[0]), // expected_vtbl_contents
  &(vtt_S8032C12[0]), // expected_vtt_contents
  ABISELECT(2288,1204), // object size
  NSPAIRA(_ZTI8S8032C12),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S8032C12),56, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S8032C12),21, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names48,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8032C5  : virtual S8032C6 , S8033C4 , virtual S8032C11 , S8032C12 {
  ::S8032C15 s8032c5f0;
  void *s8032c5f1;
  long s8032c5f2[2];
  __tsi64 s8032c5f3:31;
  int s8032c5f4;
  ::S20291C14_nt s8032c5f5;
  ::S8032C15 s8032c5f6;
  ::S8032C15 s8032c5f7;
  void *s8032c5f8;
  ~S8032C5(); // tgen
  S8032C5(); // tgen
};
//SIG(-1 S8032C5) C1{ VBC2{ BC3{ vd m Fc Fc:0 Fl[8] FD} VBC4{ BC3 Fp FC5{} Fp FD} vd v1 Fi Fc Fp Fi Fp[2] FC6{ BC4 VBC3 vd FC3 Fp}} BC7{ m Fp[3] FL[8]} VBC8{ VBC4 v2 Fc Fs FD Fp[2]} BC9{ VBC6 VBC2 VBC10{ BC11{ BC3 VBC2 vd Fp FL Fl Fc Fp Fi} VBC8 vd Fc FL:35} VBC7 VBC12{ v3 FD Fp FC3 FL FD Fi} vd Fp FC12[3] FC12 Fc} FC12 Fp Fl[2] FL:31 Fi FC5 FC12 FC12 Fp}


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

static void Test_S8032C5()
{
  extern Class_Descriptor cd_S8032C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(188,400)];
    init_test(&cd_S8032C5, buf);
    S8032C5 *dp, &lv = *(dp=new (buf) S8032C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2992,1596), "sizeof(S8032C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S8032C5)");
    /*is_ambiguous_... S8032C6::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8032C6*), ABISELECT(1520,788), "S8032C5");
    /*is_ambiguous_... S8032C5::S8032C8 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8032C8*), ABISELECT(2016,1048), "S8032C5");
    check_base_class_offset(lv, (S8032C8*)(S8032C6*), ABISELECT(2016,1048), "S8032C5");
    check_base_class_offset(lv, (S8032C8*)(S8032C11*), ABISELECT(2016,1048), "S8032C5");
    check_base_class_offset(lv, (S8032C6*), ABISELECT(1520,788), "S8032C5");
    check_base_class_offset(lv, (S8032C6*)(S8032C12*), ABISELECT(1520,788), "S8032C5");
    check_base_class_offset(lv, (S8032C6*)(S8032C14*)(S8032C13*), ABISELECT(1520,788), "S8032C5");
    /*is_ambiguous_... S8032C5::S8033C4 */ AMB_check_base_class_offset(lv, (S8033C4*), ABISELECT(792,396), "S8032C5");
    check_base_class_offset(lv, (S8032C11*), ABISELECT(2160,1124), "S8032C5");
    check_base_class_offset(lv, (S8032C11*)(S8032C13*), ABISELECT(2160,1124), "S8032C5");
    check_base_class_offset(lv, (S8033C7*)(S8032C8*)(S8032C10*), ABISELECT(2208,1152), "S8032C5");
    check_base_class_offset(lv, (S8032C8*)(S8032C10*), ABISELECT(2208,1152), "S8032C5");
    /*is_ambiguous_... S8032C10::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8032C10*), ABISELECT(2464,1284), "S8032C5");
    check_base_class_offset(lv, (S8032C10*)(S8032C12*), ABISELECT(2208,1152), "S8032C5");
    /*is_ambiguous_... S8032C14::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8032C14*)(S8032C13*), ABISELECT(2560,1336), "S8032C5");
    check_base_class_offset(lv, (S8032C14*)(S8032C13*), ABISELECT(2560,1336), "S8032C5");
    check_base_class_offset(lv, (S8032C13*)(S8032C12*), ABISELECT(2560,1336), "S8032C5");
    check_base_class_offset(lv, (S8033C4*)(S8032C12*), ABISELECT(2712,1424), "S8032C5");
    check_base_class_offset(lv, (S8032C15*)(S8032C12*), ABISELECT(2800,1500), "S8032C5");
    check_base_class_offset(lv, (S8032C12*), 0, "S8032C5");
    check_field_offset(lv, s8032c5f0, ABISELECT(880,472), "S8032C5.s8032c5f0");
    check_field_offset(lv, s8032c5f1, ABISELECT(1072,568), "S8032C5.s8032c5f1");
    check_field_offset(lv, s8032c5f2, ABISELECT(1080,572), "S8032C5.s8032c5f2");
    set_bf_and_test(lv, s8032c5f3, ABISELECT(1096,580), 0, 31, 1, "S8032C5");
    set_bf_and_test(lv, s8032c5f3, ABISELECT(1096,580), 0, 31, hide_sll(1LL<<30), "S8032C5");
    check_field_offset(lv, s8032c5f4, ABISELECT(1100,584), "S8032C5.s8032c5f4");
    check_field_offset(lv, s8032c5f5, ABISELECT(1104,588), "S8032C5.s8032c5f5");
    check_field_offset(lv, s8032c5f6, ABISELECT(1120,592), "S8032C5.s8032c5f6");
    check_field_offset(lv, s8032c5f7, ABISELECT(1312,688), "S8032C5.s8032c5f7");
    check_field_offset(lv, s8032c5f8, ABISELECT(1504,784), "S8032C5.s8032c5f8");
    test_class_info(&lv, &cd_S8032C5);
    dp->~S8032C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8032C5(Test_S8032C5, "S8032C5", ABISELECT(2992,1596));

#else // __cplusplus

extern void _ZN7S8032C5C1Ev();
extern void _ZN7S8032C5D1Ev();
Name_Map name_map_S8032C5[] = {
  NSPAIR(_ZN7S8032C5C1Ev),
  NSPAIR(_ZN7S8032C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8032C8;
extern VTBL_ENTRY _ZTI7S8032C8[];
extern  VTBL_ENTRY _ZTV7S8032C8[];
extern Class_Descriptor cd_S8032C6;
extern VTBL_ENTRY _ZTI7S8032C6[];
extern  VTBL_ENTRY _ZTV7S8032C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8032C6[];
extern Class_Descriptor cd_S8033C4;
extern VTBL_ENTRY _ZTI7S8033C4[];
extern Class_Descriptor cd_S8032C11;
extern VTBL_ENTRY _ZTI8S8032C11[];
extern  VTBL_ENTRY _ZTV8S8032C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8032C11[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8032C8;
extern VTBL_ENTRY _ZTI7S8032C8[];
extern  VTBL_ENTRY _ZTV7S8032C8[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8032C10;
extern VTBL_ENTRY _ZTI8S8032C10[];
extern  VTBL_ENTRY _ZTV8S8032C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8032C10[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8032C14;
extern VTBL_ENTRY _ZTI8S8032C14[];
extern  VTBL_ENTRY _ZTV8S8032C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8032C14[];
extern Class_Descriptor cd_S8032C13;
extern VTBL_ENTRY _ZTI8S8032C13[];
extern  VTBL_ENTRY _ZTV8S8032C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8032C13[];
extern Class_Descriptor cd_S8033C4;
extern VTBL_ENTRY _ZTI7S8033C4[];
extern Class_Descriptor cd_S8032C15;
extern VTBL_ENTRY _ZTI8S8032C15[];
extern  VTBL_ENTRY _ZTV8S8032C15[];
extern Class_Descriptor cd_S8032C12;
extern VTBL_ENTRY _ZTI8S8032C12[];
extern  VTBL_ENTRY _ZTV8S8032C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8032C12[];
static Base_Class bases_S8032C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    ABISELECT(1520,788), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(2016,1048), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S8032C8,    ABISELECT(2016,1048), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S8032C6,    ABISELECT(1520,788), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C4,    ABISELECT(792,396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S8032C11,    ABISELECT(2160,1124), //bcp->offset
    25, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C7,    ABISELECT(2208,1152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S8032C8,    ABISELECT(2208,1152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(2464,1284), //bcp->offset
    39, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S8032C10,    ABISELECT(2208,1152), //bcp->offset
    33, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S8033C7,    ABISELECT(2560,1336), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S8032C14,    ABISELECT(2560,1336), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S8032C13,    ABISELECT(2560,1336), //bcp->offset
    44, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S8033C4,    ABISELECT(2712,1424), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S8032C15,    ABISELECT(2800,1500), //bcp->offset
    52, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S8032C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8032C5[];
extern void _ZN7S8032C5D1Ev();
extern void _ZN7S8032C5D0Ev();
extern void ABISELECT(_ZTv0_n32_N7S8032C5D1Ev,_ZTv0_n16_N7S8032C5D1Ev)();
extern void ABISELECT(_ZThn1520_N7S8032C5D1Ev,_ZThn788_N7S8032C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S8032C5D0Ev,_ZTv0_n16_N7S8032C5D0Ev)();
extern void ABISELECT(_ZThn1520_N7S8032C5D0Ev,_ZThn788_N7S8032C5D0Ev)() __attribute__((weak));
extern void _ZN7S8032C62v1Ev();
extern void ABISELECT(_ZTv0_n24_N7S8032C5D1Ev,_ZTv0_n12_N7S8032C5D1Ev)();
extern void ABISELECT(_ZThn2016_N7S8032C5D1Ev,_ZThn1048_N7S8032C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8032C5D0Ev,_ZTv0_n12_N7S8032C5D0Ev)();
extern void ABISELECT(_ZThn2016_N7S8032C5D0Ev,_ZThn1048_N7S8032C5D0Ev)() __attribute__((weak));
extern void _ZN8S8032C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N7S8032C5D1Ev,_ZTv0_n20_N7S8032C5D1Ev)();
extern void ABISELECT(_ZThn2160_N7S8032C5D1Ev,_ZThn1124_N7S8032C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S8032C5D0Ev,_ZTv0_n20_N7S8032C5D0Ev)();
extern void ABISELECT(_ZThn2160_N7S8032C5D0Ev,_ZThn1124_N7S8032C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S8032C5D1Ev,_ZTv0_n16_N7S8032C5D1Ev)();
extern void ABISELECT(_ZThn2208_N7S8032C5D1Ev,_ZThn1152_N7S8032C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S8032C5D0Ev,_ZTv0_n16_N7S8032C5D0Ev)();
extern void ABISELECT(_ZThn2208_N7S8032C5D0Ev,_ZThn1152_N7S8032C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8032C5D1Ev,_ZTv0_n12_N7S8032C5D1Ev)();
extern void ABISELECT(_ZThn2464_N7S8032C5D1Ev,_ZThn1284_N7S8032C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8032C5D0Ev,_ZTv0_n12_N7S8032C5D0Ev)();
extern void ABISELECT(_ZThn2464_N7S8032C5D0Ev,_ZThn1284_N7S8032C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S8032C5D1Ev,_ZTv0_n24_N7S8032C5D1Ev)();
extern void ABISELECT(_ZThn2560_N7S8032C5D1Ev,_ZThn1336_N7S8032C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S8032C5D0Ev,_ZTv0_n24_N7S8032C5D0Ev)();
extern void ABISELECT(_ZThn2560_N7S8032C5D0Ev,_ZThn1336_N7S8032C5D0Ev)() __attribute__((weak));
extern void _ZN8S8032C152v3Ev();
static  VTBL_ENTRY vtc_S8032C5[] = {
  ABISELECT(2800,1500),
  ABISELECT(2712,1424),
  ABISELECT(2160,1124),
  ABISELECT(2560,1336),
  ABISELECT(2016,1048),
  ABISELECT(1520,788),
  ABISELECT(2464,1284),
  ABISELECT(2208,1152),
  0,
  (VTBL_ENTRY)&(_ZTI7S8032C5[0]),
  (VTBL_ENTRY)&_ZN7S8032C5D1Ev,
  (VTBL_ENTRY)&_ZN7S8032C5D0Ev,
  0,
  ABISELECT(-1520,-788),
  ABISELECT(496,260),
  ABISELECT(-1520,-788),
  (VTBL_ENTRY)&(_ZTI7S8032C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8032C5D1Ev,_ZTv0_n16_N7S8032C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8032C5D0Ev,_ZTv0_n16_N7S8032C5D0Ev),
  (VTBL_ENTRY)&_ZN7S8032C62v1Ev,
  ABISELECT(-2016,-1048),
  ABISELECT(-2016,-1048),
  (VTBL_ENTRY)&(_ZTI7S8032C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8032C5D1Ev,_ZTv0_n12_N7S8032C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8032C5D0Ev,_ZTv0_n12_N7S8032C5D0Ev),
  ABISELECT(-2160,-1124),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-2160,-1124),
  (VTBL_ENTRY)&(_ZTI7S8032C5[0]),
  (VTBL_ENTRY)&_ZN8S8032C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S8032C5D1Ev,_ZTv0_n20_N7S8032C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S8032C5D0Ev,_ZTv0_n20_N7S8032C5D0Ev),
  ABISELECT(-2208,-1152),
  ABISELECT(256,132),
  ABISELECT(-2208,-1152),
  (VTBL_ENTRY)&(_ZTI7S8032C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8032C5D1Ev,_ZTv0_n16_N7S8032C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8032C5D0Ev,_ZTv0_n16_N7S8032C5D0Ev),
  ABISELECT(-2464,-1284),
  ABISELECT(-2464,-1284),
  (VTBL_ENTRY)&(_ZTI7S8032C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8032C5D1Ev,_ZTv0_n12_N7S8032C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8032C5D0Ev,_ZTv0_n12_N7S8032C5D0Ev),
  ABISELECT(-2560,-1336),
  ABISELECT(-400,-212),
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  ABISELECT(-2560,-1336),
  (VTBL_ENTRY)&(_ZTI7S8032C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S8032C5D1Ev,_ZTv0_n24_N7S8032C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S8032C5D0Ev,_ZTv0_n24_N7S8032C5D0Ev),
  0,
  ABISELECT(-2800,-1500),
  (VTBL_ENTRY)&(_ZTI7S8032C5[0]),
  (VTBL_ENTRY)&_ZN8S8032C152v3Ev,
};
extern VTBL_ENTRY _ZTV7S8032C5[];
extern void _ZN8S8032C12D1Ev();
extern void _ZN8S8032C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8032C12__7S8032C5[] = {
  ABISELECT(2800,1500),
  ABISELECT(2712,1424),
  ABISELECT(2160,1124),
  ABISELECT(2560,1336),
  ABISELECT(2016,1048),
  ABISELECT(1520,788),
  ABISELECT(2464,1284),
  ABISELECT(2208,1152),
  0,
  (VTBL_ENTRY)&(_ZTI8S8032C12[0]),
  (VTBL_ENTRY)&_ZN8S8032C12D1Ev,
  (VTBL_ENTRY)&_ZN8S8032C12D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S8032C12D1Ev,_ZTv0_n16_N8S8032C12D1Ev)();
extern void ABISELECT(_ZThn2208_N8S8032C12D1Ev,_ZThn1152_N8S8032C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8032C12D0Ev,_ZTv0_n16_N8S8032C12D0Ev)();
extern void ABISELECT(_ZThn2208_N8S8032C12D0Ev,_ZThn1152_N8S8032C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8032C10__8S8032C12__7S8032C5[] = {
  ABISELECT(-2208,-1152),
  ABISELECT(256,132),
  ABISELECT(-2208,-1152),
  (VTBL_ENTRY)&(_ZTI8S8032C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C12D1Ev,_ZTv0_n16_N8S8032C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C12D0Ev,_ZTv0_n16_N8S8032C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S8032C12D1Ev,_ZTv0_n12_N8S8032C12D1Ev)();
extern void ABISELECT(_ZThn2464_N8S8032C12D1Ev,_ZThn1284_N8S8032C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8032C12D0Ev,_ZTv0_n12_N8S8032C12D0Ev)();
extern void ABISELECT(_ZThn2464_N8S8032C12D0Ev,_ZThn1284_N8S8032C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__8S8032C12__7S8032C5[] = {
  ABISELECT(-2464,-1284),
  ABISELECT(-2464,-1284),
  (VTBL_ENTRY)&(_ZTI8S8032C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C12D1Ev,_ZTv0_n12_N8S8032C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C12D0Ev,_ZTv0_n12_N8S8032C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S8032C12D1Ev,_ZTv0_n16_N8S8032C12D1Ev)();
extern void ABISELECT(_ZThn1520_N8S8032C12D1Ev,_ZThn788_N8S8032C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8032C12D0Ev,_ZTv0_n16_N8S8032C12D0Ev)();
extern void ABISELECT(_ZThn1520_N8S8032C12D0Ev,_ZThn788_N8S8032C12D0Ev)() __attribute__((weak));
extern void _ZN7S8032C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8032C6__8S8032C12__7S8032C5[] = {
  0,
  ABISELECT(-1520,-788),
  ABISELECT(496,260),
  ABISELECT(-1520,-788),
  (VTBL_ENTRY)&(_ZTI8S8032C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C12D1Ev,_ZTv0_n16_N8S8032C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C12D0Ev,_ZTv0_n16_N8S8032C12D0Ev),
  (VTBL_ENTRY)&_ZN7S8032C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8032C12D1Ev,_ZTv0_n12_N8S8032C12D1Ev)();
extern void ABISELECT(_ZThn2016_N8S8032C12D1Ev,_ZThn1048_N8S8032C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8032C12D0Ev,_ZTv0_n12_N8S8032C12D0Ev)();
extern void ABISELECT(_ZThn2016_N8S8032C12D0Ev,_ZThn1048_N8S8032C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8032C8__A1__8S8032C12__7S8032C5[] = {
  ABISELECT(-2016,-1048),
  ABISELECT(-2016,-1048),
  (VTBL_ENTRY)&(_ZTI8S8032C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C12D1Ev,_ZTv0_n12_N8S8032C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C12D0Ev,_ZTv0_n12_N8S8032C12D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S8032C12D1Ev,_ZTv0_n24_N8S8032C12D1Ev)();
extern void ABISELECT(_ZThn2560_N8S8032C12D1Ev,_ZThn1336_N8S8032C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S8032C12D0Ev,_ZTv0_n24_N8S8032C12D0Ev)();
extern void ABISELECT(_ZThn2560_N8S8032C12D0Ev,_ZThn1336_N8S8032C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8032C13__8S8032C12__7S8032C5[] = {
  ABISELECT(-2560,-1336),
  ABISELECT(-400,-212),
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  ABISELECT(-2560,-1336),
  (VTBL_ENTRY)&(_ZTI8S8032C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S8032C12D1Ev,_ZTv0_n24_N8S8032C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S8032C12D0Ev,_ZTv0_n24_N8S8032C12D0Ev),
};
extern void _ZN8S8032C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N8S8032C12D1Ev,_ZTv0_n20_N8S8032C12D1Ev)();
extern void ABISELECT(_ZThn2160_N8S8032C12D1Ev,_ZThn1124_N8S8032C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S8032C12D0Ev,_ZTv0_n20_N8S8032C12D0Ev)();
extern void ABISELECT(_ZThn2160_N8S8032C12D0Ev,_ZThn1124_N8S8032C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8032C11__8S8032C12__7S8032C5[] = {
  ABISELECT(-2160,-1124),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-2160,-1124),
  (VTBL_ENTRY)&(_ZTI8S8032C12[0]),
  (VTBL_ENTRY)&_ZN8S8032C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8032C12D1Ev,_ZTv0_n20_N8S8032C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8032C12D0Ev,_ZTv0_n20_N8S8032C12D0Ev),
};
extern void _ZN8S8032C152v3Ev();
static  VTBL_ENTRY _tg__ZTV8S8032C15__8S8032C12__7S8032C5[] = {
  0,
  ABISELECT(-2800,-1500),
  (VTBL_ENTRY)&(_ZTI8S8032C12[0]),
  (VTBL_ENTRY)&_ZN8S8032C152v3Ev,
};
extern void _ZN7S8032C6D1Ev();
extern void _ZN7S8032C6D0Ev();
extern void _ZN7S8032C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8032C6__7S8032C5[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI7S8032C6[0]),
  (VTBL_ENTRY)&_ZN7S8032C6D1Ev,
  (VTBL_ENTRY)&_ZN7S8032C6D0Ev,
  (VTBL_ENTRY)&_ZN7S8032C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S8032C6D1Ev,_ZTv0_n12_N7S8032C6D1Ev)();
extern void ABISELECT(_ZThn496_N7S8032C6D1Ev,_ZThn260_N7S8032C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8032C6D0Ev,_ZTv0_n12_N7S8032C6D0Ev)();
extern void ABISELECT(_ZThn496_N7S8032C6D0Ev,_ZThn260_N7S8032C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8032C8__7S8032C6__7S8032C5[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI7S8032C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8032C6D1Ev,_ZTv0_n12_N7S8032C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8032C6D0Ev,_ZTv0_n12_N7S8032C6D0Ev),
};
extern void _ZN8S8032C112v2Ev();
extern void _ZN8S8032C11D1Ev();
extern void _ZN8S8032C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8032C11__7S8032C5[] = {
  ABISELECT(-144,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S8032C11[0]),
  (VTBL_ENTRY)&_ZN8S8032C112v2Ev,
  (VTBL_ENTRY)&_ZN8S8032C11D1Ev,
  (VTBL_ENTRY)&_ZN8S8032C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8032C11D1Ev,_ZTv0_n12_N8S8032C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S8032C11D0Ev,_ZTv0_n12_N8S8032C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S8032C8__8S8032C11__7S8032C5[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S8032C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C11D1Ev,_ZTv0_n12_N8S8032C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C11D0Ev,_ZTv0_n12_N8S8032C11D0Ev),
};
extern void _ZN8S8032C10D1Ev();
extern void _ZN8S8032C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8032C10__7S8032C5[] = {
  ABISELECT(256,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S8032C10[0]),
  (VTBL_ENTRY)&_ZN8S8032C10D1Ev,
  (VTBL_ENTRY)&_ZN8S8032C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8032C10D1Ev,_ZTv0_n12_N8S8032C10D1Ev)();
extern void ABISELECT(_ZThn256_N8S8032C10D1Ev,_ZThn132_N8S8032C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8032C10D0Ev,_ZTv0_n12_N8S8032C10D0Ev)();
extern void ABISELECT(_ZThn256_N8S8032C10D0Ev,_ZThn132_N8S8032C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__8S8032C10__7S8032C5[] = {
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  (VTBL_ENTRY)&(_ZTI8S8032C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C10D1Ev,_ZTv0_n12_N8S8032C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C10D0Ev,_ZTv0_n12_N8S8032C10D0Ev),
};
extern void _ZN8S8032C13D1Ev();
extern void _ZN8S8032C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8032C13__7S8032C5[] = {
  ABISELECT(-400,-212),
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  0,
  (VTBL_ENTRY)&(_ZTI8S8032C13[0]),
  (VTBL_ENTRY)&_ZN8S8032C13D1Ev,
  (VTBL_ENTRY)&_ZN8S8032C13D0Ev,
};
extern void _ZN8S8032C14D1Ev();
extern void _ZN8S8032C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8032C148S8032C13__7S8032C5[] = {
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  0,
  (VTBL_ENTRY)&(_ZTI8S8032C14[0]),
  (VTBL_ENTRY)&_ZN8S8032C14D1Ev,
  (VTBL_ENTRY)&_ZN8S8032C14D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S8032C14D1Ev,_ZTv0_n16_N8S8032C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S8032C14D0Ev,_ZTv0_n16_N8S8032C14D0Ev)();
extern void _ZN7S8032C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8032C6__8S8032C148S8032C13__7S8032C5[] = {
  0,
  ABISELECT(1040,548),
  ABISELECT(496,260),
  ABISELECT(1040,548),
  (VTBL_ENTRY)&(_ZTI8S8032C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C14D1Ev,_ZTv0_n16_N8S8032C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C14D0Ev,_ZTv0_n16_N8S8032C14D0Ev),
  (VTBL_ENTRY)&_ZN7S8032C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8032C14D1Ev,_ZTv0_n12_N8S8032C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S8032C14D0Ev,_ZTv0_n12_N8S8032C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S8032C8__8S8032C148S8032C13__7S8032C5[] = {
  ABISELECT(544,288),
  ABISELECT(544,288),
  (VTBL_ENTRY)&(_ZTI8S8032C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C14D1Ev,_ZTv0_n12_N8S8032C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C14D0Ev,_ZTv0_n12_N8S8032C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S8032C13D1Ev,_ZTv0_n16_N8S8032C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S8032C13D0Ev,_ZTv0_n16_N8S8032C13D0Ev)();
extern void _ZN7S8032C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8032C6__8S8032C13__7S8032C5[] = {
  0,
  ABISELECT(1040,548),
  ABISELECT(496,260),
  ABISELECT(1040,548),
  (VTBL_ENTRY)&(_ZTI8S8032C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C13D1Ev,_ZTv0_n16_N8S8032C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C13D0Ev,_ZTv0_n16_N8S8032C13D0Ev),
  (VTBL_ENTRY)&_ZN7S8032C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8032C13D1Ev,_ZTv0_n12_N8S8032C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S8032C13D0Ev,_ZTv0_n12_N8S8032C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S8032C8__8S8032C13__7S8032C5[] = {
  ABISELECT(544,288),
  ABISELECT(544,288),
  (VTBL_ENTRY)&(_ZTI8S8032C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C13D1Ev,_ZTv0_n12_N8S8032C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C13D0Ev,_ZTv0_n12_N8S8032C13D0Ev),
};
extern void _ZN8S8032C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N8S8032C13D1Ev,_ZTv0_n20_N8S8032C13D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S8032C13D0Ev,_ZTv0_n20_N8S8032C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S8032C11__8S8032C13__7S8032C5[] = {
  ABISELECT(400,212),
  0,
  ABISELECT(-144,-76),
  ABISELECT(400,212),
  (VTBL_ENTRY)&(_ZTI8S8032C13[0]),
  (VTBL_ENTRY)&_ZN8S8032C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8032C13D1Ev,_ZTv0_n20_N8S8032C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8032C13D0Ev,_ZTv0_n20_N8S8032C13D0Ev),
};
static  VTT_ENTRY vtt_S8032C5[] = {
  {&(_ZTV7S8032C5[10]),  10,56},
  {&(_tg__ZTV8S8032C12__7S8032C5[10]),  10,12},
  {&(_tg__ZTV8S8032C10__8S8032C12__7S8032C5[4]),  4,6},
  {&(_tg__ZTV7S8033C7__A1__8S8032C12__7S8032C5[3]),  3,5},
  {&(_tg__ZTV7S8032C6__8S8032C12__7S8032C5[5]),  5,8},
  {&(_tg__ZTV7S8032C8__A1__8S8032C12__7S8032C5[3]),  3,5},
  {&(_tg__ZTV8S8032C13__8S8032C12__7S8032C5[6]),  6,8},
  {&(_tg__ZTV8S8032C11__8S8032C12__7S8032C5[5]),  5,8},
  {&(_tg__ZTV8S8032C15__8S8032C12__7S8032C5[3]),  3,4},
  {&(_ZTV7S8032C5[17]),  17,56},
  {&(_ZTV7S8032C5[23]),  23,56},
  {&(_ZTV7S8032C5[30]),  30,56},
  {&(_ZTV7S8032C5[37]),  37,56},
  {&(_ZTV7S8032C5[42]),  42,56},
  {&(_ZTV7S8032C5[50]),  50,56},
  {&(_ZTV7S8032C5[55]),  55,56},
  {&(_tg__ZTV7S8032C6__7S8032C5[3]),  3,6},
  {&(_tg__ZTV7S8032C8__7S8032C6__7S8032C5[3]),  3,5},
  {&(_tg__ZTV8S8032C11__7S8032C5[3]),  3,6},
  {&(_tg__ZTV7S8032C8__8S8032C11__7S8032C5[3]),  3,5},
  {&(_tg__ZTV8S8032C10__7S8032C5[3]),  3,5},
  {&(_tg__ZTV7S8033C7__A1__8S8032C10__7S8032C5[3]),  3,5},
  {&(_tg__ZTV8S8032C13__7S8032C5[5]),  5,7},
  {&(_tg__ZTV8S8032C148S8032C13__7S8032C5[4]),  4,6},
  {&(_tg__ZTV7S8032C6__8S8032C148S8032C13__7S8032C5[5]),  5,8},
  {&(_tg__ZTV7S8032C8__8S8032C148S8032C13__7S8032C5[3]),  3,5},
  {&(_tg__ZTV7S8032C6__8S8032C13__7S8032C5[5]),  5,8},
  {&(_tg__ZTV7S8032C8__8S8032C13__7S8032C5[3]),  3,5},
  {&(_tg__ZTV8S8032C11__8S8032C13__7S8032C5[5]),  5,8},
};
extern VTBL_ENTRY _ZTI7S8032C5[];
extern  VTBL_ENTRY _ZTV7S8032C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8032C5[];
static VTBL_ENTRY alt_thunk_names49[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8032C10D0Ev,_ZTv0_n12_N8S8032C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S8032C10D0Ev,_ZThn132_N8S8032C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8032C10D1Ev,_ZTv0_n12_N8S8032C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S8032C10D1Ev,_ZThn132_N8S8032C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8032C6D0Ev,_ZTv0_n12_N7S8032C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N7S8032C6D0Ev,_ZThn260_N7S8032C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8032C6D1Ev,_ZTv0_n12_N7S8032C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N7S8032C6D1Ev,_ZThn260_N7S8032C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S8032C12D0Ev,_ZTv0_n20_N8S8032C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N8S8032C12D0Ev,_ZThn1124_N8S8032C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S8032C12D1Ev,_ZTv0_n20_N8S8032C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N8S8032C12D1Ev,_ZThn1124_N8S8032C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S8032C12D0Ev,_ZTv0_n24_N8S8032C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N8S8032C12D0Ev,_ZThn1336_N8S8032C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S8032C12D1Ev,_ZTv0_n24_N8S8032C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N8S8032C12D1Ev,_ZThn1336_N8S8032C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8032C12D0Ev,_ZTv0_n12_N8S8032C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2016_N8S8032C12D0Ev,_ZThn1048_N8S8032C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2464_N8S8032C12D0Ev,_ZThn1284_N8S8032C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8032C12D1Ev,_ZTv0_n12_N8S8032C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2016_N8S8032C12D1Ev,_ZThn1048_N8S8032C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2464_N8S8032C12D1Ev,_ZThn1284_N8S8032C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8032C12D0Ev,_ZTv0_n16_N8S8032C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N8S8032C12D0Ev,_ZThn788_N8S8032C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2208_N8S8032C12D0Ev,_ZThn1152_N8S8032C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8032C12D1Ev,_ZTv0_n16_N8S8032C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N8S8032C12D1Ev,_ZThn788_N8S8032C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2208_N8S8032C12D1Ev,_ZThn1152_N8S8032C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S8032C5D0Ev,_ZTv0_n24_N7S8032C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N7S8032C5D0Ev,_ZThn1336_N7S8032C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S8032C5D1Ev,_ZTv0_n24_N7S8032C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N7S8032C5D1Ev,_ZThn1336_N7S8032C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S8032C5D0Ev,_ZTv0_n20_N7S8032C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N7S8032C5D0Ev,_ZThn1124_N7S8032C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S8032C5D1Ev,_ZTv0_n20_N7S8032C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N7S8032C5D1Ev,_ZThn1124_N7S8032C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8032C5D0Ev,_ZTv0_n12_N7S8032C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2464_N7S8032C5D0Ev,_ZThn1284_N7S8032C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2016_N7S8032C5D0Ev,_ZThn1048_N7S8032C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8032C5D1Ev,_ZTv0_n12_N7S8032C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2464_N7S8032C5D1Ev,_ZThn1284_N7S8032C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2016_N7S8032C5D1Ev,_ZThn1048_N7S8032C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S8032C5D0Ev,_ZTv0_n16_N7S8032C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2208_N7S8032C5D0Ev,_ZThn1152_N7S8032C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N7S8032C5D0Ev,_ZThn788_N7S8032C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S8032C5D1Ev,_ZTv0_n16_N7S8032C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2208_N7S8032C5D1Ev,_ZThn1152_N7S8032C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N7S8032C5D1Ev,_ZThn788_N7S8032C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S8032C5 = {  "S8032C5", // class name
  bases_S8032C5, 16,
  &(vtc_S8032C5[0]), // expected_vtbl_contents
  &(vtt_S8032C5[0]), // expected_vtt_contents
  ABISELECT(2992,1596), // object size
  NSPAIRA(_ZTI7S8032C5),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S8032C5),56, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S8032C5),29, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names49,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8032C3  : virtual S8033C4 , virtual S8032C5 , S8032C15 , S8033C7 {
  ::S8032C15 s8032c3f0;
  int s8032c3f1;
  char s8032c3f2[6];
  long double s8032c3f3;
  int s8032c3f4;
  __tsi64 s8032c3f5;
  virtual void  v4(); // _ZN7S8032C32v4Ev
  ~S8032C3(); // tgen
  S8032C3(); // tgen
};
//SIG(-1 S8032C3) C1{ VBC2{ m Fp[3] FL[8]} VBC3{ VBC4{ BC5{ vd m Fc Fc:0 Fl[8] FD} VBC6{ BC5 Fp FC7{} Fp FD} vd v2 Fi Fc Fp Fi Fp[2] FC8{ BC6 VBC5 vd FC5 Fp}} BC2 VBC9{ VBC6 v3 Fc Fs FD Fp[2]} BC10{ VBC8 VBC4 VBC11{ BC12{ BC5 VBC4 vd Fp FL Fl Fc Fp Fi} VBC9 vd Fc FL:35} VBC2 VBC13{ v4 FD Fp FC5 FL FD Fi} vd Fp FC13[3] FC13 Fc} FC13 Fp Fl[2] FL:31 Fi FC7 FC13 FC13 Fp} BC13 BC5 v1 FC13 Fi Fc[6] FD Fi FL}


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

static void Test_S8032C3()
{
  extern Class_Descriptor cd_S8032C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(222,470)];
    init_test(&cd_S8032C3, buf);
    S8032C3 *dp, &lv = *(dp=new (buf) S8032C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(3536,1876), "sizeof(S8032C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S8032C3)");
    /*is_ambiguous_... S8032C3::S8033C4 */ AMB_check_base_class_offset(lv, (S8033C4*), ABISELECT(528,280), "S8032C3");
    check_base_class_offset(lv, (S8033C4*)(S8032C12*)(S8032C5*), ABISELECT(528,280), "S8032C3");
    /*is_ambiguous_... S8032C6::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8032C6*), ABISELECT(2144,1144), "S8032C3");
    /*is_ambiguous_... S8032C3::S8032C8 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8032C8*), ABISELECT(2640,1404), "S8032C3");
    check_base_class_offset(lv, (S8032C8*)(S8032C6*), ABISELECT(2640,1404), "S8032C3");
    check_base_class_offset(lv, (S8032C8*)(S8032C11*), ABISELECT(2640,1404), "S8032C3");
    check_base_class_offset(lv, (S8032C6*)(S8032C5*), ABISELECT(2144,1144), "S8032C3");
    check_base_class_offset(lv, (S8032C6*)(S8032C12*)(S8032C5*), ABISELECT(2144,1144), "S8032C3");
    check_base_class_offset(lv, (S8032C6*)(S8032C14*)(S8032C13*), ABISELECT(2144,1144), "S8032C3");
    /*is_ambiguous_... S8032C5::S8033C4 */ AMB_check_base_class_offset(lv, (S8033C4*)(S8032C5*), ABISELECT(1416,752), "S8032C3");
    check_base_class_offset(lv, (S8032C11*)(S8032C5*), ABISELECT(2784,1480), "S8032C3");
    check_base_class_offset(lv, (S8032C11*)(S8032C13*), ABISELECT(2784,1480), "S8032C3");
    check_base_class_offset(lv, (S8033C7*)(S8032C8*)(S8032C10*), ABISELECT(2832,1508), "S8032C3");
    check_base_class_offset(lv, (S8032C8*)(S8032C10*), ABISELECT(2832,1508), "S8032C3");
    /*is_ambiguous_... S8032C10::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8032C10*), ABISELECT(3088,1640), "S8032C3");
    check_base_class_offset(lv, (S8032C10*)(S8032C12*)(S8032C5*), ABISELECT(2832,1508), "S8032C3");
    /*is_ambiguous_... S8032C14::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8032C14*)(S8032C13*), ABISELECT(3184,1692), "S8032C3");
    check_base_class_offset(lv, (S8032C14*)(S8032C13*), ABISELECT(3184,1692), "S8032C3");
    check_base_class_offset(lv, (S8032C13*)(S8032C12*)(S8032C5*), ABISELECT(3184,1692), "S8032C3");
    check_base_class_offset(lv, (S8032C15*)(S8032C12*)(S8032C5*), ABISELECT(3344,1780), "S8032C3");
    check_base_class_offset(lv, (S8032C12*)(S8032C5*), ABISELECT(624,356), "S8032C3");
    check_base_class_offset(lv, (S8032C5*), ABISELECT(624,356), "S8032C3");
    /*is_ambiguous_... S8032C3::S8032C15 */ AMB_check_base_class_offset(lv, (S8032C15*), 0, "S8032C3");
    /*is_ambiguous_... S8032C3::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*), ABISELECT(192,96), "S8032C3");
    check_field_offset(lv, s8032c3f0, ABISELECT(288,148), "S8032C3.s8032c3f0");
    check_field_offset(lv, s8032c3f1, ABISELECT(480,244), "S8032C3.s8032c3f1");
    check_field_offset(lv, s8032c3f2, ABISELECT(484,248), "S8032C3.s8032c3f2");
    check_field_offset(lv, s8032c3f3, ABISELECT(496,256), "S8032C3.s8032c3f3");
    check_field_offset(lv, s8032c3f4, ABISELECT(512,268), "S8032C3.s8032c3f4");
    check_field_offset(lv, s8032c3f5, ABISELECT(520,272), "S8032C3.s8032c3f5");
    test_class_info(&lv, &cd_S8032C3);
    dp->~S8032C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8032C3(Test_S8032C3, "S8032C3", ABISELECT(3536,1876));

#else // __cplusplus

extern void _ZN7S8032C3C1Ev();
extern void _ZN7S8032C3D1Ev();
Name_Map name_map_S8032C3[] = {
  NSPAIR(_ZN7S8032C3C1Ev),
  NSPAIR(_ZN7S8032C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C4;
extern VTBL_ENTRY _ZTI7S8033C4[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8032C8;
extern VTBL_ENTRY _ZTI7S8032C8[];
extern  VTBL_ENTRY _ZTV7S8032C8[];
extern Class_Descriptor cd_S8032C6;
extern VTBL_ENTRY _ZTI7S8032C6[];
extern  VTBL_ENTRY _ZTV7S8032C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8032C6[];
extern Class_Descriptor cd_S8033C4;
extern VTBL_ENTRY _ZTI7S8033C4[];
extern Class_Descriptor cd_S8032C11;
extern VTBL_ENTRY _ZTI8S8032C11[];
extern  VTBL_ENTRY _ZTV8S8032C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8032C11[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8032C8;
extern VTBL_ENTRY _ZTI7S8032C8[];
extern  VTBL_ENTRY _ZTV7S8032C8[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8032C10;
extern VTBL_ENTRY _ZTI8S8032C10[];
extern  VTBL_ENTRY _ZTV8S8032C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8032C10[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8032C14;
extern VTBL_ENTRY _ZTI8S8032C14[];
extern  VTBL_ENTRY _ZTV8S8032C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8032C14[];
extern Class_Descriptor cd_S8032C13;
extern VTBL_ENTRY _ZTI8S8032C13[];
extern  VTBL_ENTRY _ZTV8S8032C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8032C13[];
extern Class_Descriptor cd_S8032C15;
extern VTBL_ENTRY _ZTI8S8032C15[];
extern  VTBL_ENTRY _ZTV8S8032C15[];
extern Class_Descriptor cd_S8032C12;
extern VTBL_ENTRY _ZTI8S8032C12[];
extern  VTBL_ENTRY _ZTV8S8032C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8032C12[];
extern Class_Descriptor cd_S8032C5;
extern VTBL_ENTRY _ZTI7S8032C5[];
extern  VTBL_ENTRY _ZTV7S8032C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8032C5[];
extern Class_Descriptor cd_S8032C15;
extern VTBL_ENTRY _ZTI8S8032C15[];
extern  VTBL_ENTRY _ZTV8S8032C15[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
static Base_Class bases_S8032C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C4,    ABISELECT(528,280), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C7,    ABISELECT(2144,1144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(2640,1404), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S8032C8,    ABISELECT(2640,1404), //bcp->offset
    40, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S8032C6,    ABISELECT(2144,1144), //bcp->offset
    32, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S8033C4,    ABISELECT(1416,752), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S8032C11,    ABISELECT(2784,1480), //bcp->offset
    45, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S8033C7,    ABISELECT(2832,1508), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S8032C8,    ABISELECT(2832,1508), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(3088,1640), //bcp->offset
    59, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S8032C10,    ABISELECT(2832,1508), //bcp->offset
    53, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S8033C7,    ABISELECT(3184,1692), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S8032C14,    ABISELECT(3184,1692), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S8032C13,    ABISELECT(3184,1692), //bcp->offset
    64, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S8032C15,    ABISELECT(3344,1780), //bcp->offset
    72, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S8032C12,    ABISELECT(624,356), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S8032C5,    ABISELECT(624,356), //bcp->offset
    19, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8032C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S8033C7,    ABISELECT(192,96), //bcp->offset
    15, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8032C3[];
extern void _ZN8S8032C152v3Ev();
extern void _ZN7S8032C32v4Ev();
extern void _ZN7S8032C3D1Ev();
extern void _ZN7S8032C3D0Ev();
extern void ABISELECT(_ZThn192_N7S8032C3D1Ev,_ZThn96_N7S8032C3D1Ev)();
extern void ABISELECT(_ZThn192_N7S8032C3D0Ev,_ZThn96_N7S8032C3D0Ev)();
extern void ABISELECT(_ZTv0_n88_N7S8032C3D1Ev,_ZTv0_n44_N7S8032C3D1Ev)();
extern void ABISELECT(_ZThn624_N7S8032C3D1Ev,_ZThn356_N7S8032C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S8032C3D0Ev,_ZTv0_n44_N7S8032C3D0Ev)();
extern void ABISELECT(_ZThn624_N7S8032C3D0Ev,_ZThn356_N7S8032C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S8032C3D1Ev,_ZTv0_n16_N7S8032C3D1Ev)();
extern void ABISELECT(_ZThn2144_N7S8032C3D1Ev,_ZThn1144_N7S8032C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S8032C3D0Ev,_ZTv0_n16_N7S8032C3D0Ev)();
extern void ABISELECT(_ZThn2144_N7S8032C3D0Ev,_ZThn1144_N7S8032C3D0Ev)() __attribute__((weak));
extern void _ZN7S8032C62v1Ev();
extern void ABISELECT(_ZTv0_n24_N7S8032C3D1Ev,_ZTv0_n12_N7S8032C3D1Ev)();
extern void ABISELECT(_ZThn2640_N7S8032C3D1Ev,_ZThn1404_N7S8032C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8032C3D0Ev,_ZTv0_n12_N7S8032C3D0Ev)();
extern void ABISELECT(_ZThn2640_N7S8032C3D0Ev,_ZThn1404_N7S8032C3D0Ev)() __attribute__((weak));
extern void _ZN8S8032C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N7S8032C3D1Ev,_ZTv0_n20_N7S8032C3D1Ev)();
extern void ABISELECT(_ZThn2784_N7S8032C3D1Ev,_ZThn1480_N7S8032C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S8032C3D0Ev,_ZTv0_n20_N7S8032C3D0Ev)();
extern void ABISELECT(_ZThn2784_N7S8032C3D0Ev,_ZThn1480_N7S8032C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S8032C3D1Ev,_ZTv0_n16_N7S8032C3D1Ev)();
extern void ABISELECT(_ZThn2832_N7S8032C3D1Ev,_ZThn1508_N7S8032C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S8032C3D0Ev,_ZTv0_n16_N7S8032C3D0Ev)();
extern void ABISELECT(_ZThn2832_N7S8032C3D0Ev,_ZThn1508_N7S8032C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8032C3D1Ev,_ZTv0_n12_N7S8032C3D1Ev)();
extern void ABISELECT(_ZThn3088_N7S8032C3D1Ev,_ZThn1640_N7S8032C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8032C3D0Ev,_ZTv0_n12_N7S8032C3D0Ev)();
extern void ABISELECT(_ZThn3088_N7S8032C3D0Ev,_ZThn1640_N7S8032C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S8032C3D1Ev,_ZTv0_n24_N7S8032C3D1Ev)();
extern void ABISELECT(_ZThn3184_N7S8032C3D1Ev,_ZThn1692_N7S8032C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S8032C3D0Ev,_ZTv0_n24_N7S8032C3D0Ev)();
extern void ABISELECT(_ZThn3184_N7S8032C3D0Ev,_ZThn1692_N7S8032C3D0Ev)() __attribute__((weak));
extern void _ZN8S8032C152v3Ev();
static  VTBL_ENTRY vtc_S8032C3[] = {
  ABISELECT(3344,1780),
  ABISELECT(3184,1692),
  ABISELECT(3088,1640),
  ABISELECT(2832,1508),
  ABISELECT(2784,1480),
  ABISELECT(2640,1404),
  ABISELECT(2144,1144),
  ABISELECT(624,356),
  ABISELECT(528,280),
  0,
  (VTBL_ENTRY)&(_ZTI7S8032C3[0]),
  (VTBL_ENTRY)&_ZN8S8032C152v3Ev,
  (VTBL_ENTRY)&_ZN7S8032C32v4Ev,
  (VTBL_ENTRY)&_ZN7S8032C3D1Ev,
  (VTBL_ENTRY)&_ZN7S8032C3D0Ev,
  ABISELECT(-192,-96),
  (VTBL_ENTRY)&(_ZTI7S8032C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn192_N7S8032C3D1Ev,_ZThn96_N7S8032C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn192_N7S8032C3D0Ev,_ZThn96_N7S8032C3D0Ev),
  ABISELECT(-624,-356),
  ABISELECT(2720,1424),
  ABISELECT(-96,-76),
  ABISELECT(2160,1124),
  ABISELECT(2560,1336),
  ABISELECT(2016,1048),
  ABISELECT(1520,788),
  ABISELECT(2464,1284),
  ABISELECT(2208,1152),
  ABISELECT(-624,-356),
  (VTBL_ENTRY)&(_ZTI7S8032C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S8032C3D1Ev,_ZTv0_n44_N7S8032C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S8032C3D0Ev,_ZTv0_n44_N7S8032C3D0Ev),
  0,
  ABISELECT(-2144,-1144),
  ABISELECT(496,260),
  ABISELECT(-2144,-1144),
  (VTBL_ENTRY)&(_ZTI7S8032C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8032C3D1Ev,_ZTv0_n16_N7S8032C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8032C3D0Ev,_ZTv0_n16_N7S8032C3D0Ev),
  (VTBL_ENTRY)&_ZN7S8032C62v1Ev,
  ABISELECT(-2640,-1404),
  ABISELECT(-2640,-1404),
  (VTBL_ENTRY)&(_ZTI7S8032C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8032C3D1Ev,_ZTv0_n12_N7S8032C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8032C3D0Ev,_ZTv0_n12_N7S8032C3D0Ev),
  ABISELECT(-2784,-1480),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-2784,-1480),
  (VTBL_ENTRY)&(_ZTI7S8032C3[0]),
  (VTBL_ENTRY)&_ZN8S8032C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S8032C3D1Ev,_ZTv0_n20_N7S8032C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S8032C3D0Ev,_ZTv0_n20_N7S8032C3D0Ev),
  ABISELECT(-2832,-1508),
  ABISELECT(256,132),
  ABISELECT(-2832,-1508),
  (VTBL_ENTRY)&(_ZTI7S8032C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8032C3D1Ev,_ZTv0_n16_N7S8032C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8032C3D0Ev,_ZTv0_n16_N7S8032C3D0Ev),
  ABISELECT(-3088,-1640),
  ABISELECT(-3088,-1640),
  (VTBL_ENTRY)&(_ZTI7S8032C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8032C3D1Ev,_ZTv0_n12_N7S8032C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8032C3D0Ev,_ZTv0_n12_N7S8032C3D0Ev),
  ABISELECT(-3184,-1692),
  ABISELECT(-400,-212),
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  ABISELECT(-3184,-1692),
  (VTBL_ENTRY)&(_ZTI7S8032C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S8032C3D1Ev,_ZTv0_n24_N7S8032C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S8032C3D0Ev,_ZTv0_n24_N7S8032C3D0Ev),
  0,
  ABISELECT(-3344,-1780),
  (VTBL_ENTRY)&(_ZTI7S8032C3[0]),
  (VTBL_ENTRY)&_ZN8S8032C152v3Ev,
};
extern VTBL_ENTRY _ZTV7S8032C3[];
extern void _ZN7S8032C5D1Ev();
extern void _ZN7S8032C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S8032C5__7S8032C3[] = {
  ABISELECT(2720,1424),
  ABISELECT(-96,-76),
  ABISELECT(2160,1124),
  ABISELECT(2560,1336),
  ABISELECT(2016,1048),
  ABISELECT(1520,788),
  ABISELECT(2464,1284),
  ABISELECT(2208,1152),
  0,
  (VTBL_ENTRY)&(_ZTI7S8032C5[0]),
  (VTBL_ENTRY)&_ZN7S8032C5D1Ev,
  (VTBL_ENTRY)&_ZN7S8032C5D0Ev,
};
extern void _ZN8S8032C12D1Ev();
extern void _ZN8S8032C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8032C127S8032C5__7S8032C3[] = {
  ABISELECT(2720,1424),
  ABISELECT(-96,-76),
  ABISELECT(2160,1124),
  ABISELECT(2560,1336),
  ABISELECT(2016,1048),
  ABISELECT(1520,788),
  ABISELECT(2464,1284),
  ABISELECT(2208,1152),
  0,
  (VTBL_ENTRY)&(_ZTI8S8032C12[0]),
  (VTBL_ENTRY)&_ZN8S8032C12D1Ev,
  (VTBL_ENTRY)&_ZN8S8032C12D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S8032C12D1Ev,_ZTv0_n16_N8S8032C12D1Ev)();
extern void ABISELECT(_ZThn2208_N8S8032C12D1Ev,_ZThn1152_N8S8032C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8032C12D0Ev,_ZTv0_n16_N8S8032C12D0Ev)();
extern void ABISELECT(_ZThn2208_N8S8032C12D0Ev,_ZThn1152_N8S8032C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8032C10__8S8032C127S8032C5__7S8032C3[] = {
  ABISELECT(-2208,-1152),
  ABISELECT(256,132),
  ABISELECT(-2208,-1152),
  (VTBL_ENTRY)&(_ZTI8S8032C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C12D1Ev,_ZTv0_n16_N8S8032C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C12D0Ev,_ZTv0_n16_N8S8032C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S8032C12D1Ev,_ZTv0_n12_N8S8032C12D1Ev)();
extern void ABISELECT(_ZThn2464_N8S8032C12D1Ev,_ZThn1284_N8S8032C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8032C12D0Ev,_ZTv0_n12_N8S8032C12D0Ev)();
extern void ABISELECT(_ZThn2464_N8S8032C12D0Ev,_ZThn1284_N8S8032C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__8S8032C127S8032C5__7S8032C3[] = {
  ABISELECT(-2464,-1284),
  ABISELECT(-2464,-1284),
  (VTBL_ENTRY)&(_ZTI8S8032C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C12D1Ev,_ZTv0_n12_N8S8032C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C12D0Ev,_ZTv0_n12_N8S8032C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S8032C12D1Ev,_ZTv0_n16_N8S8032C12D1Ev)();
extern void ABISELECT(_ZThn1520_N8S8032C12D1Ev,_ZThn788_N8S8032C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8032C12D0Ev,_ZTv0_n16_N8S8032C12D0Ev)();
extern void ABISELECT(_ZThn1520_N8S8032C12D0Ev,_ZThn788_N8S8032C12D0Ev)() __attribute__((weak));
extern void _ZN7S8032C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8032C6__8S8032C127S8032C5__7S8032C3[] = {
  0,
  ABISELECT(-1520,-788),
  ABISELECT(496,260),
  ABISELECT(-1520,-788),
  (VTBL_ENTRY)&(_ZTI8S8032C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C12D1Ev,_ZTv0_n16_N8S8032C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C12D0Ev,_ZTv0_n16_N8S8032C12D0Ev),
  (VTBL_ENTRY)&_ZN7S8032C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8032C12D1Ev,_ZTv0_n12_N8S8032C12D1Ev)();
extern void ABISELECT(_ZThn2016_N8S8032C12D1Ev,_ZThn1048_N8S8032C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8032C12D0Ev,_ZTv0_n12_N8S8032C12D0Ev)();
extern void ABISELECT(_ZThn2016_N8S8032C12D0Ev,_ZThn1048_N8S8032C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8032C8__A1__8S8032C127S8032C5__7S8032C3[] = {
  ABISELECT(-2016,-1048),
  ABISELECT(-2016,-1048),
  (VTBL_ENTRY)&(_ZTI8S8032C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C12D1Ev,_ZTv0_n12_N8S8032C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C12D0Ev,_ZTv0_n12_N8S8032C12D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S8032C12D1Ev,_ZTv0_n24_N8S8032C12D1Ev)();
extern void ABISELECT(_ZThn2560_N8S8032C12D1Ev,_ZThn1336_N8S8032C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S8032C12D0Ev,_ZTv0_n24_N8S8032C12D0Ev)();
extern void ABISELECT(_ZThn2560_N8S8032C12D0Ev,_ZThn1336_N8S8032C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8032C13__8S8032C127S8032C5__7S8032C3[] = {
  ABISELECT(-2560,-1336),
  ABISELECT(-400,-212),
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  ABISELECT(-2560,-1336),
  (VTBL_ENTRY)&(_ZTI8S8032C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S8032C12D1Ev,_ZTv0_n24_N8S8032C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S8032C12D0Ev,_ZTv0_n24_N8S8032C12D0Ev),
};
extern void _ZN8S8032C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N8S8032C12D1Ev,_ZTv0_n20_N8S8032C12D1Ev)();
extern void ABISELECT(_ZThn2160_N8S8032C12D1Ev,_ZThn1124_N8S8032C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S8032C12D0Ev,_ZTv0_n20_N8S8032C12D0Ev)();
extern void ABISELECT(_ZThn2160_N8S8032C12D0Ev,_ZThn1124_N8S8032C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8032C11__8S8032C127S8032C5__7S8032C3[] = {
  ABISELECT(-2160,-1124),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-2160,-1124),
  (VTBL_ENTRY)&(_ZTI8S8032C12[0]),
  (VTBL_ENTRY)&_ZN8S8032C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8032C12D1Ev,_ZTv0_n20_N8S8032C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8032C12D0Ev,_ZTv0_n20_N8S8032C12D0Ev),
};
extern void _ZN8S8032C152v3Ev();
static  VTBL_ENTRY _tg__ZTV8S8032C15__8S8032C127S8032C5__7S8032C3[] = {
  0,
  ABISELECT(-2720,-1424),
  (VTBL_ENTRY)&(_ZTI8S8032C12[0]),
  (VTBL_ENTRY)&_ZN8S8032C152v3Ev,
};
extern void ABISELECT(_ZTv0_n32_N7S8032C5D1Ev,_ZTv0_n16_N7S8032C5D1Ev)();
extern void ABISELECT(_ZThn1520_N7S8032C5D1Ev,_ZThn788_N7S8032C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S8032C5D0Ev,_ZTv0_n16_N7S8032C5D0Ev)();
extern void ABISELECT(_ZThn1520_N7S8032C5D0Ev,_ZThn788_N7S8032C5D0Ev)() __attribute__((weak));
extern void _ZN7S8032C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8032C6__7S8032C5__7S8032C3[] = {
  0,
  ABISELECT(-1520,-788),
  ABISELECT(496,260),
  ABISELECT(-1520,-788),
  (VTBL_ENTRY)&(_ZTI7S8032C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8032C5D1Ev,_ZTv0_n16_N7S8032C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8032C5D0Ev,_ZTv0_n16_N7S8032C5D0Ev),
  (VTBL_ENTRY)&_ZN7S8032C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S8032C5D1Ev,_ZTv0_n12_N7S8032C5D1Ev)();
extern void ABISELECT(_ZThn2016_N7S8032C5D1Ev,_ZThn1048_N7S8032C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8032C5D0Ev,_ZTv0_n12_N7S8032C5D0Ev)();
extern void ABISELECT(_ZThn2016_N7S8032C5D0Ev,_ZThn1048_N7S8032C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8032C8__7S8032C5__7S8032C3[] = {
  ABISELECT(-2016,-1048),
  ABISELECT(-2016,-1048),
  (VTBL_ENTRY)&(_ZTI7S8032C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8032C5D1Ev,_ZTv0_n12_N7S8032C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8032C5D0Ev,_ZTv0_n12_N7S8032C5D0Ev),
};
extern void _ZN8S8032C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N7S8032C5D1Ev,_ZTv0_n20_N7S8032C5D1Ev)();
extern void ABISELECT(_ZThn2160_N7S8032C5D1Ev,_ZThn1124_N7S8032C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S8032C5D0Ev,_ZTv0_n20_N7S8032C5D0Ev)();
extern void ABISELECT(_ZThn2160_N7S8032C5D0Ev,_ZThn1124_N7S8032C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8032C11__7S8032C5__7S8032C3[] = {
  ABISELECT(-2160,-1124),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-2160,-1124),
  (VTBL_ENTRY)&(_ZTI7S8032C5[0]),
  (VTBL_ENTRY)&_ZN8S8032C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S8032C5D1Ev,_ZTv0_n20_N7S8032C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S8032C5D0Ev,_ZTv0_n20_N7S8032C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S8032C5D1Ev,_ZTv0_n16_N7S8032C5D1Ev)();
extern void ABISELECT(_ZThn2208_N7S8032C5D1Ev,_ZThn1152_N7S8032C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S8032C5D0Ev,_ZTv0_n16_N7S8032C5D0Ev)();
extern void ABISELECT(_ZThn2208_N7S8032C5D0Ev,_ZThn1152_N7S8032C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8032C10__7S8032C5__7S8032C3[] = {
  ABISELECT(-2208,-1152),
  ABISELECT(256,132),
  ABISELECT(-2208,-1152),
  (VTBL_ENTRY)&(_ZTI7S8032C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8032C5D1Ev,_ZTv0_n16_N7S8032C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8032C5D0Ev,_ZTv0_n16_N7S8032C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S8032C5D1Ev,_ZTv0_n12_N7S8032C5D1Ev)();
extern void ABISELECT(_ZThn2464_N7S8032C5D1Ev,_ZThn1284_N7S8032C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8032C5D0Ev,_ZTv0_n12_N7S8032C5D0Ev)();
extern void ABISELECT(_ZThn2464_N7S8032C5D0Ev,_ZThn1284_N7S8032C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A3__7S8032C5__7S8032C3[] = {
  ABISELECT(-2464,-1284),
  ABISELECT(-2464,-1284),
  (VTBL_ENTRY)&(_ZTI7S8032C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8032C5D1Ev,_ZTv0_n12_N7S8032C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8032C5D0Ev,_ZTv0_n12_N7S8032C5D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S8032C5D1Ev,_ZTv0_n24_N7S8032C5D1Ev)();
extern void ABISELECT(_ZThn2560_N7S8032C5D1Ev,_ZThn1336_N7S8032C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S8032C5D0Ev,_ZTv0_n24_N7S8032C5D0Ev)();
extern void ABISELECT(_ZThn2560_N7S8032C5D0Ev,_ZThn1336_N7S8032C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8032C13__7S8032C5__7S8032C3[] = {
  ABISELECT(-2560,-1336),
  ABISELECT(-400,-212),
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  ABISELECT(-2560,-1336),
  (VTBL_ENTRY)&(_ZTI7S8032C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S8032C5D1Ev,_ZTv0_n24_N7S8032C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S8032C5D0Ev,_ZTv0_n24_N7S8032C5D0Ev),
};
extern void _ZN8S8032C152v3Ev();
static  VTBL_ENTRY _tg__ZTV8S8032C15__7S8032C5__7S8032C3[] = {
  0,
  ABISELECT(-2720,-1424),
  (VTBL_ENTRY)&(_ZTI7S8032C5[0]),
  (VTBL_ENTRY)&_ZN8S8032C152v3Ev,
};
extern void _ZN7S8032C6D1Ev();
extern void _ZN7S8032C6D0Ev();
extern void _ZN7S8032C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8032C6__7S8032C3[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI7S8032C6[0]),
  (VTBL_ENTRY)&_ZN7S8032C6D1Ev,
  (VTBL_ENTRY)&_ZN7S8032C6D0Ev,
  (VTBL_ENTRY)&_ZN7S8032C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S8032C6D1Ev,_ZTv0_n12_N7S8032C6D1Ev)();
extern void ABISELECT(_ZThn496_N7S8032C6D1Ev,_ZThn260_N7S8032C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8032C6D0Ev,_ZTv0_n12_N7S8032C6D0Ev)();
extern void ABISELECT(_ZThn496_N7S8032C6D0Ev,_ZThn260_N7S8032C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8032C8__7S8032C6__7S8032C3[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI7S8032C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8032C6D1Ev,_ZTv0_n12_N7S8032C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8032C6D0Ev,_ZTv0_n12_N7S8032C6D0Ev),
};
extern void _ZN8S8032C112v2Ev();
extern void _ZN8S8032C11D1Ev();
extern void _ZN8S8032C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8032C11__7S8032C3[] = {
  ABISELECT(-144,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S8032C11[0]),
  (VTBL_ENTRY)&_ZN8S8032C112v2Ev,
  (VTBL_ENTRY)&_ZN8S8032C11D1Ev,
  (VTBL_ENTRY)&_ZN8S8032C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8032C11D1Ev,_ZTv0_n12_N8S8032C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S8032C11D0Ev,_ZTv0_n12_N8S8032C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S8032C8__8S8032C11__7S8032C3[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S8032C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C11D1Ev,_ZTv0_n12_N8S8032C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C11D0Ev,_ZTv0_n12_N8S8032C11D0Ev),
};
extern void _ZN8S8032C10D1Ev();
extern void _ZN8S8032C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8032C10__7S8032C3[] = {
  ABISELECT(256,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S8032C10[0]),
  (VTBL_ENTRY)&_ZN8S8032C10D1Ev,
  (VTBL_ENTRY)&_ZN8S8032C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8032C10D1Ev,_ZTv0_n12_N8S8032C10D1Ev)();
extern void ABISELECT(_ZThn256_N8S8032C10D1Ev,_ZThn132_N8S8032C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8032C10D0Ev,_ZTv0_n12_N8S8032C10D0Ev)();
extern void ABISELECT(_ZThn256_N8S8032C10D0Ev,_ZThn132_N8S8032C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__8S8032C10__7S8032C3[] = {
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  (VTBL_ENTRY)&(_ZTI8S8032C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C10D1Ev,_ZTv0_n12_N8S8032C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C10D0Ev,_ZTv0_n12_N8S8032C10D0Ev),
};
extern void _ZN8S8032C13D1Ev();
extern void _ZN8S8032C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8032C13__7S8032C3[] = {
  ABISELECT(-400,-212),
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  0,
  (VTBL_ENTRY)&(_ZTI8S8032C13[0]),
  (VTBL_ENTRY)&_ZN8S8032C13D1Ev,
  (VTBL_ENTRY)&_ZN8S8032C13D0Ev,
};
extern void _ZN8S8032C14D1Ev();
extern void _ZN8S8032C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8032C148S8032C13__7S8032C3[] = {
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  0,
  (VTBL_ENTRY)&(_ZTI8S8032C14[0]),
  (VTBL_ENTRY)&_ZN8S8032C14D1Ev,
  (VTBL_ENTRY)&_ZN8S8032C14D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S8032C14D1Ev,_ZTv0_n16_N8S8032C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S8032C14D0Ev,_ZTv0_n16_N8S8032C14D0Ev)();
extern void _ZN7S8032C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8032C6__8S8032C148S8032C13__7S8032C3[] = {
  0,
  ABISELECT(1040,548),
  ABISELECT(496,260),
  ABISELECT(1040,548),
  (VTBL_ENTRY)&(_ZTI8S8032C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C14D1Ev,_ZTv0_n16_N8S8032C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C14D0Ev,_ZTv0_n16_N8S8032C14D0Ev),
  (VTBL_ENTRY)&_ZN7S8032C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8032C14D1Ev,_ZTv0_n12_N8S8032C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S8032C14D0Ev,_ZTv0_n12_N8S8032C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S8032C8__8S8032C148S8032C13__7S8032C3[] = {
  ABISELECT(544,288),
  ABISELECT(544,288),
  (VTBL_ENTRY)&(_ZTI8S8032C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C14D1Ev,_ZTv0_n12_N8S8032C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C14D0Ev,_ZTv0_n12_N8S8032C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S8032C13D1Ev,_ZTv0_n16_N8S8032C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S8032C13D0Ev,_ZTv0_n16_N8S8032C13D0Ev)();
extern void _ZN7S8032C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8032C6__8S8032C13__7S8032C3[] = {
  0,
  ABISELECT(1040,548),
  ABISELECT(496,260),
  ABISELECT(1040,548),
  (VTBL_ENTRY)&(_ZTI8S8032C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C13D1Ev,_ZTv0_n16_N8S8032C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C13D0Ev,_ZTv0_n16_N8S8032C13D0Ev),
  (VTBL_ENTRY)&_ZN7S8032C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8032C13D1Ev,_ZTv0_n12_N8S8032C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S8032C13D0Ev,_ZTv0_n12_N8S8032C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S8032C8__8S8032C13__7S8032C3[] = {
  ABISELECT(544,288),
  ABISELECT(544,288),
  (VTBL_ENTRY)&(_ZTI8S8032C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C13D1Ev,_ZTv0_n12_N8S8032C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C13D0Ev,_ZTv0_n12_N8S8032C13D0Ev),
};
extern void _ZN8S8032C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N8S8032C13D1Ev,_ZTv0_n20_N8S8032C13D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S8032C13D0Ev,_ZTv0_n20_N8S8032C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S8032C11__8S8032C13__7S8032C3[] = {
  ABISELECT(400,212),
  0,
  ABISELECT(-144,-76),
  ABISELECT(400,212),
  (VTBL_ENTRY)&(_ZTI8S8032C13[0]),
  (VTBL_ENTRY)&_ZN8S8032C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8032C13D1Ev,_ZTv0_n20_N8S8032C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8032C13D0Ev,_ZTv0_n20_N8S8032C13D0Ev),
};
static  VTT_ENTRY vtt_S8032C3[] = {
  {&(_ZTV7S8032C3[11]),  11,76},
  {&(_ZTV7S8032C3[30]),  30,76},
  {&(_ZTV7S8032C3[37]),  37,76},
  {&(_ZTV7S8032C3[43]),  43,76},
  {&(_ZTV7S8032C3[50]),  50,76},
  {&(_ZTV7S8032C3[57]),  57,76},
  {&(_ZTV7S8032C3[62]),  62,76},
  {&(_ZTV7S8032C3[70]),  70,76},
  {&(_ZTV7S8032C3[75]),  75,76},
  {&(_tg__ZTV7S8032C5__7S8032C3[10]),  10,12},
  {&(_tg__ZTV8S8032C127S8032C5__7S8032C3[10]),  10,12},
  {&(_tg__ZTV8S8032C10__8S8032C127S8032C5__7S8032C3[4]),  4,6},
  {&(_tg__ZTV7S8033C7__A1__8S8032C127S8032C5__7S8032C3[3]),  3,5},
  {&(_tg__ZTV7S8032C6__8S8032C127S8032C5__7S8032C3[5]),  5,8},
  {&(_tg__ZTV7S8032C8__A1__8S8032C127S8032C5__7S8032C3[3]),  3,5},
  {&(_tg__ZTV8S8032C13__8S8032C127S8032C5__7S8032C3[6]),  6,8},
  {&(_tg__ZTV8S8032C11__8S8032C127S8032C5__7S8032C3[5]),  5,8},
  {&(_tg__ZTV8S8032C15__8S8032C127S8032C5__7S8032C3[3]),  3,4},
  {&(_tg__ZTV7S8032C6__7S8032C5__7S8032C3[5]),  5,8},
  {&(_tg__ZTV7S8032C8__7S8032C5__7S8032C3[3]),  3,5},
  {&(_tg__ZTV8S8032C11__7S8032C5__7S8032C3[5]),  5,8},
  {&(_tg__ZTV8S8032C10__7S8032C5__7S8032C3[4]),  4,6},
  {&(_tg__ZTV7S8033C7__A3__7S8032C5__7S8032C3[3]),  3,5},
  {&(_tg__ZTV8S8032C13__7S8032C5__7S8032C3[6]),  6,8},
  {&(_tg__ZTV8S8032C15__7S8032C5__7S8032C3[3]),  3,4},
  {&(_tg__ZTV7S8032C6__7S8032C3[3]),  3,6},
  {&(_tg__ZTV7S8032C8__7S8032C6__7S8032C3[3]),  3,5},
  {&(_tg__ZTV8S8032C11__7S8032C3[3]),  3,6},
  {&(_tg__ZTV7S8032C8__8S8032C11__7S8032C3[3]),  3,5},
  {&(_tg__ZTV8S8032C10__7S8032C3[3]),  3,5},
  {&(_tg__ZTV7S8033C7__A1__8S8032C10__7S8032C3[3]),  3,5},
  {&(_tg__ZTV8S8032C13__7S8032C3[5]),  5,7},
  {&(_tg__ZTV8S8032C148S8032C13__7S8032C3[4]),  4,6},
  {&(_tg__ZTV7S8032C6__8S8032C148S8032C13__7S8032C3[5]),  5,8},
  {&(_tg__ZTV7S8032C8__8S8032C148S8032C13__7S8032C3[3]),  3,5},
  {&(_tg__ZTV7S8032C6__8S8032C13__7S8032C3[5]),  5,8},
  {&(_tg__ZTV7S8032C8__8S8032C13__7S8032C3[3]),  3,5},
  {&(_tg__ZTV8S8032C11__8S8032C13__7S8032C3[5]),  5,8},
};
extern VTBL_ENTRY _ZTI7S8032C3[];
extern  VTBL_ENTRY _ZTV7S8032C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8032C3[];
static VTBL_ENTRY alt_thunk_names50[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8032C10D0Ev,_ZTv0_n12_N8S8032C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S8032C10D0Ev,_ZThn132_N8S8032C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8032C10D1Ev,_ZTv0_n12_N8S8032C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S8032C10D1Ev,_ZThn132_N8S8032C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8032C6D0Ev,_ZTv0_n12_N7S8032C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N7S8032C6D0Ev,_ZThn260_N7S8032C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8032C6D1Ev,_ZTv0_n12_N7S8032C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N7S8032C6D1Ev,_ZThn260_N7S8032C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S8032C5D0Ev,_ZTv0_n24_N7S8032C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N7S8032C5D0Ev,_ZThn1336_N7S8032C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S8032C5D1Ev,_ZTv0_n24_N7S8032C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N7S8032C5D1Ev,_ZThn1336_N7S8032C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S8032C5D0Ev,_ZTv0_n20_N7S8032C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N7S8032C5D0Ev,_ZThn1124_N7S8032C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S8032C5D1Ev,_ZTv0_n20_N7S8032C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N7S8032C5D1Ev,_ZThn1124_N7S8032C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8032C5D0Ev,_ZTv0_n12_N7S8032C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2464_N7S8032C5D0Ev,_ZThn1284_N7S8032C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2016_N7S8032C5D0Ev,_ZThn1048_N7S8032C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8032C5D1Ev,_ZTv0_n12_N7S8032C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2464_N7S8032C5D1Ev,_ZThn1284_N7S8032C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2016_N7S8032C5D1Ev,_ZThn1048_N7S8032C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S8032C5D0Ev,_ZTv0_n16_N7S8032C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2208_N7S8032C5D0Ev,_ZThn1152_N7S8032C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N7S8032C5D0Ev,_ZThn788_N7S8032C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S8032C5D1Ev,_ZTv0_n16_N7S8032C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2208_N7S8032C5D1Ev,_ZThn1152_N7S8032C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N7S8032C5D1Ev,_ZThn788_N7S8032C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S8032C12D0Ev,_ZTv0_n20_N8S8032C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N8S8032C12D0Ev,_ZThn1124_N8S8032C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S8032C12D1Ev,_ZTv0_n20_N8S8032C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N8S8032C12D1Ev,_ZThn1124_N8S8032C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S8032C12D0Ev,_ZTv0_n24_N8S8032C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N8S8032C12D0Ev,_ZThn1336_N8S8032C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S8032C12D1Ev,_ZTv0_n24_N8S8032C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N8S8032C12D1Ev,_ZThn1336_N8S8032C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8032C12D0Ev,_ZTv0_n12_N8S8032C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2016_N8S8032C12D0Ev,_ZThn1048_N8S8032C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2464_N8S8032C12D0Ev,_ZThn1284_N8S8032C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8032C12D1Ev,_ZTv0_n12_N8S8032C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2016_N8S8032C12D1Ev,_ZThn1048_N8S8032C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2464_N8S8032C12D1Ev,_ZThn1284_N8S8032C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8032C12D0Ev,_ZTv0_n16_N8S8032C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N8S8032C12D0Ev,_ZThn788_N8S8032C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2208_N8S8032C12D0Ev,_ZThn1152_N8S8032C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8032C12D1Ev,_ZTv0_n16_N8S8032C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N8S8032C12D1Ev,_ZThn788_N8S8032C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2208_N8S8032C12D1Ev,_ZThn1152_N8S8032C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S8032C3D0Ev,_ZTv0_n24_N7S8032C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3184_N7S8032C3D0Ev,_ZThn1692_N7S8032C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S8032C3D1Ev,_ZTv0_n24_N7S8032C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3184_N7S8032C3D1Ev,_ZThn1692_N7S8032C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S8032C3D0Ev,_ZTv0_n20_N7S8032C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2784_N7S8032C3D0Ev,_ZThn1480_N7S8032C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S8032C3D1Ev,_ZTv0_n20_N7S8032C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2784_N7S8032C3D1Ev,_ZThn1480_N7S8032C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8032C3D0Ev,_ZTv0_n12_N7S8032C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3088_N7S8032C3D0Ev,_ZThn1640_N7S8032C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2640_N7S8032C3D0Ev,_ZThn1404_N7S8032C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8032C3D1Ev,_ZTv0_n12_N7S8032C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3088_N7S8032C3D1Ev,_ZThn1640_N7S8032C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2640_N7S8032C3D1Ev,_ZThn1404_N7S8032C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S8032C3D0Ev,_ZTv0_n16_N7S8032C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2832_N7S8032C3D0Ev,_ZThn1508_N7S8032C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2144_N7S8032C3D0Ev,_ZThn1144_N7S8032C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S8032C3D1Ev,_ZTv0_n16_N7S8032C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2832_N7S8032C3D1Ev,_ZThn1508_N7S8032C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2144_N7S8032C3D1Ev,_ZThn1144_N7S8032C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S8032C3D0Ev,_ZTv0_n44_N7S8032C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn624_N7S8032C3D0Ev,_ZThn356_N7S8032C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S8032C3D1Ev,_ZTv0_n44_N7S8032C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn624_N7S8032C3D1Ev,_ZThn356_N7S8032C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S8032C3 = {  "S8032C3", // class name
  bases_S8032C3, 19,
  &(vtc_S8032C3[0]), // expected_vtbl_contents
  &(vtt_S8032C3[0]), // expected_vtt_contents
  ABISELECT(3536,1876), // object size
  NSPAIRA(_ZTI7S8032C3),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S8032C3),76, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S8032C3),38, //virtual table table var
  17, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names50,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8032C2  {
  int s8032c2f0;
  long s8032c2f1;
  int s8032c2f2;
  ::S8032C3 s8032c2f3;
  int s8032c2f4;
  void *s8032c2f5[4];
  void  mf8032c2(); // _ZN7S8032C28mf8032c2Ev
  virtual  ~S8032C2(); // _ZN7S8032C2D1Ev
  S8032C2(); // tgen
};
//SIG(-1 S8032C2) C1{ vd m Fi Fl Fi FC2{ VBC3{ m Fp[3] FL[8]} VBC4{ VBC5{ BC6{ vd m Fc Fc:0 Fl[8] FD} VBC7{ BC6 Fp FC8{} Fp FD} vd v2 Fi Fc Fp Fi Fp[2] FC9{ BC7 VBC6 vd FC6 Fp}} BC3 VBC10{ VBC7 v3 Fc Fs FD Fp[2]} BC11{ VBC9 VBC5 VBC12{ BC13{ BC6 VBC5 vd Fp FL Fl Fc Fp Fi} VBC10 vd Fc FL:35} VBC3 VBC14{ v4 FD Fp FC6 FL FD Fi} vd Fp FC14[3] FC14 Fc} FC14 Fp Fl[2] FL:31 Fi FC8 FC14 FC14 Fp} BC14 BC6 v1 FC14 Fi Fc[6] FD Fi FL} Fi Fp[4]}


void  S8032C2 ::mf8032c2(){}
 S8032C2 ::~S8032C2(){ note_dtor("S8032C2", this);}
S8032C2 ::S8032C2(){ note_ctor("S8032C2", this);} // tgen

static void Test_S8032C2()
{
  extern Class_Descriptor cd_S8032C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(227,479)];
    init_test(&cd_S8032C2, buf);
    S8032C2 *dp, &lv = *(dp=new (buf) S8032C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(3616,1912), "sizeof(S8032C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S8032C2)");
    check_field_offset(lv, s8032c2f0, ABISELECT(8,4), "S8032C2.s8032c2f0");
    check_field_offset(lv, s8032c2f1, ABISELECT(16,8), "S8032C2.s8032c2f1");
    check_field_offset(lv, s8032c2f2, ABISELECT(24,12), "S8032C2.s8032c2f2");
    check_field_offset(lv, s8032c2f3, ABISELECT(32,16), "S8032C2.s8032c2f3");
    check_field_offset(lv, s8032c2f4, ABISELECT(3568,1892), "S8032C2.s8032c2f4");
    check_field_offset(lv, s8032c2f5, ABISELECT(3576,1896), "S8032C2.s8032c2f5");
    test_class_info(&lv, &cd_S8032C2);
    dp->~S8032C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8032C2(Test_S8032C2, "S8032C2", ABISELECT(3616,1912));

#else // __cplusplus

extern void _ZN7S8032C2C1Ev();
extern void _ZN7S8032C2D1Ev();
Name_Map name_map_S8032C2[] = {
  NSPAIR(_ZN7S8032C2C1Ev),
  NSPAIR(_ZN7S8032C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8032C2[];
extern void _ZN7S8032C2D1Ev();
extern void _ZN7S8032C2D0Ev();
static  VTBL_ENTRY vtc_S8032C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8032C2[0]),
  (VTBL_ENTRY)&_ZN7S8032C2D1Ev,
  (VTBL_ENTRY)&_ZN7S8032C2D0Ev,
};
extern VTBL_ENTRY _ZTI7S8032C2[];
extern  VTBL_ENTRY _ZTV7S8032C2[];
Class_Descriptor cd_S8032C2 = {  "S8032C2", // class name
  0,0,//no base classes
  &(vtc_S8032C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(3616,1912), // object size
  NSPAIRA(_ZTI7S8032C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8032C2),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8032C1  : S8032C2 , S8032C13 , S8032C5 {
  int s8032c1f0;
  ::S8032C15 s8032c1f1;
  long double s8032c1f2;
  ::S8032C15 s8032c1f3;
  virtual  ~S8032C1(); // _ZN7S8032C1D2Ev
  S8032C1(); // tgen
};
//SIG(1 S8032C1) C1{ BC2{ vd m Fi Fl Fi FC3{ VBC4{ m Fp[3] FL[8]} VBC5{ VBC6{ BC7{ vd m Fc Fc:0 Fl[8] FD} VBC8{ BC7 Fp FC9{} Fp FD} vd v1 Fi Fc Fp Fi Fp[2] FC10{ BC8 VBC7 vd FC7 Fp}} BC4 VBC11{ VBC8 v2 Fc Fs FD Fp[2]} BC12{ VBC10 VBC6 VBC13{ BC14{ BC7 VBC6 vd Fp FL Fl Fc Fp Fi} VBC11 vd Fc FL:35} VBC4 VBC15{ v3 FD Fp FC7 FL FD Fi} vd Fp FC15[3] FC15 Fc} FC15 Fp Fl[2] FL:31 Fi FC9 FC15 FC15 Fp} BC15 BC7 v4 FC15 Fi Fc[6] FD Fi FL} Fi Fp[4]} BC13 BC5 vd Fi FC15 FD FC15}


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

static void Test_S8032C1()
{
  extern Class_Descriptor cd_S8032C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(449,952)];
    init_test(&cd_S8032C1, buf);
    S8032C1 *dp, &lv = *(dp=new (buf) S8032C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(7168,3804), "sizeof(S8032C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S8032C1)");
    check_base_class_offset(lv, (S8032C2*), 0, "S8032C1");
    /*is_ambiguous_... S8032C1::S8032C13 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8032C14*)(S8032C13*), ABISELECT(3616,1912), "S8032C1");
    /*is_ambiguous_... S8032C6::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8032C6*), ABISELECT(5696,2996), "S8032C1");
    /*is_ambiguous_... S8032C1::S8032C8 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8032C8*), ABISELECT(6192,3256), "S8032C1");
    check_base_class_offset(lv, (S8032C8*)(S8032C6*), ABISELECT(6192,3256), "S8032C1");
    check_base_class_offset(lv, (S8032C8*)(S8032C11*), ABISELECT(6192,3256), "S8032C1");
    /*is_ambiguous_... S8032C1::S8032C13 */ AMB_check_base_class_offset(lv, (S8032C6*)(S8032C14*)(S8032C13*), ABISELECT(5696,2996), "S8032C1");
    check_base_class_offset(lv, (S8032C6*)(S8032C5*), ABISELECT(5696,2996), "S8032C1");
    check_base_class_offset(lv, (S8032C6*)(S8032C12*)(S8032C5*), ABISELECT(5696,2996), "S8032C1");
    /*is_ambiguous_... S8032C1::S8032C13 */ AMB_check_base_class_offset(lv, (S8032C6*)(S8032C14*)(S8032C13*), ABISELECT(5696,2996), "S8032C1");
    /*is_ambiguous_... S8032C1::S8032C13 */ AMB_check_base_class_offset(lv, (S8032C14*)(S8032C13*), ABISELECT(3616,1912), "S8032C1");
    /*is_ambiguous_... S8032C1::S8032C13 */ AMB_check_base_class_offset(lv, (S8032C11*)(S8032C13*), ABISELECT(6336,3332), "S8032C1");
    check_base_class_offset(lv, (S8032C11*)(S8032C5*), ABISELECT(6336,3332), "S8032C1");
    /*is_ambiguous_... S8032C1::S8032C13 */ AMB_check_base_class_offset(lv, (S8032C11*)(S8032C13*), ABISELECT(6336,3332), "S8032C1");
    /*is_ambiguous_... S8032C1::S8032C13 */ AMB_check_base_class_offset(lv, (S8032C13*), ABISELECT(3616,1912), "S8032C1");
    /*is_ambiguous_... S8032C5::S8033C4 */ AMB_check_base_class_offset(lv, (S8033C4*)(S8032C5*), ABISELECT(4568,2396), "S8032C1");
    check_base_class_offset(lv, (S8033C7*)(S8032C8*)(S8032C10*), ABISELECT(6384,3360), "S8032C1");
    check_base_class_offset(lv, (S8032C8*)(S8032C10*), ABISELECT(6384,3360), "S8032C1");
    /*is_ambiguous_... S8032C10::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8032C10*), ABISELECT(6640,3492), "S8032C1");
    check_base_class_offset(lv, (S8032C10*)(S8032C12*)(S8032C5*), ABISELECT(6384,3360), "S8032C1");
    /*is_ambiguous_... S8032C1::S8032C13 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8032C14*)(S8032C13*), ABISELECT(6736,3544), "S8032C1");
    /*is_ambiguous_... S8032C1::S8032C13 */ AMB_check_base_class_offset(lv, (S8032C14*)(S8032C13*), ABISELECT(6736,3544), "S8032C1");
    check_base_class_offset(lv, (S8032C13*)(S8032C12*)(S8032C5*), ABISELECT(6736,3544), "S8032C1");
    check_base_class_offset(lv, (S8033C4*)(S8032C12*)(S8032C5*), ABISELECT(6888,3632), "S8032C1");
    check_base_class_offset(lv, (S8032C15*)(S8032C12*)(S8032C5*), ABISELECT(6976,3708), "S8032C1");
    check_base_class_offset(lv, (S8032C12*)(S8032C5*), ABISELECT(3776,2000), "S8032C1");
    check_base_class_offset(lv, (S8032C5*), ABISELECT(3776,2000), "S8032C1");
    check_field_offset(lv, s8032c1f0, ABISELECT(5288,2788), "S8032C1.s8032c1f0");
    check_field_offset(lv, s8032c1f1, ABISELECT(5296,2792), "S8032C1.s8032c1f1");
    check_field_offset(lv, s8032c1f2, ABISELECT(5488,2888), "S8032C1.s8032c1f2");
    check_field_offset(lv, s8032c1f3, ABISELECT(5504,2900), "S8032C1.s8032c1f3");
    test_class_info(&lv, &cd_S8032C1);
    dp->~S8032C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8032C1(Test_S8032C1, "S8032C1", ABISELECT(7168,3804));

#else // __cplusplus

extern void _ZN7S8032C1C1Ev();
extern void _ZN7S8032C1D2Ev();
Name_Map name_map_S8032C1[] = {
  NSPAIR(_ZN7S8032C1C1Ev),
  NSPAIR(_ZN7S8032C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8032C2;
extern VTBL_ENTRY _ZTI7S8032C2[];
extern  VTBL_ENTRY _ZTV7S8032C2[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8032C8;
extern VTBL_ENTRY _ZTI7S8032C8[];
extern  VTBL_ENTRY _ZTV7S8032C8[];
extern Class_Descriptor cd_S8032C6;
extern VTBL_ENTRY _ZTI7S8032C6[];
extern  VTBL_ENTRY _ZTV7S8032C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8032C6[];
extern Class_Descriptor cd_S8032C14;
extern VTBL_ENTRY _ZTI8S8032C14[];
extern  VTBL_ENTRY _ZTV8S8032C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8032C14[];
extern Class_Descriptor cd_S8032C11;
extern VTBL_ENTRY _ZTI8S8032C11[];
extern  VTBL_ENTRY _ZTV8S8032C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8032C11[];
extern Class_Descriptor cd_S8032C13;
extern VTBL_ENTRY _ZTI8S8032C13[];
extern  VTBL_ENTRY _ZTV8S8032C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8032C13[];
extern Class_Descriptor cd_S8033C4;
extern VTBL_ENTRY _ZTI7S8033C4[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8032C8;
extern VTBL_ENTRY _ZTI7S8032C8[];
extern  VTBL_ENTRY _ZTV7S8032C8[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8032C10;
extern VTBL_ENTRY _ZTI8S8032C10[];
extern  VTBL_ENTRY _ZTV8S8032C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8032C10[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8032C14;
extern VTBL_ENTRY _ZTI8S8032C14[];
extern  VTBL_ENTRY _ZTV8S8032C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8032C14[];
extern Class_Descriptor cd_S8032C13;
extern VTBL_ENTRY _ZTI8S8032C13[];
extern  VTBL_ENTRY _ZTV8S8032C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8032C13[];
extern Class_Descriptor cd_S8033C4;
extern VTBL_ENTRY _ZTI7S8033C4[];
extern Class_Descriptor cd_S8032C15;
extern VTBL_ENTRY _ZTI8S8032C15[];
extern  VTBL_ENTRY _ZTV8S8032C15[];
extern Class_Descriptor cd_S8032C12;
extern VTBL_ENTRY _ZTI8S8032C12[];
extern  VTBL_ENTRY _ZTV8S8032C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8032C12[];
extern Class_Descriptor cd_S8032C5;
extern VTBL_ENTRY _ZTI7S8032C5[];
extern  VTBL_ENTRY _ZTV7S8032C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8032C5[];
static Base_Class bases_S8032C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8032C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S8033C7,    ABISELECT(3616,1912), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(5696,2996), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(6192,3256), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S8032C8,    ABISELECT(6192,3256), //bcp->offset
    39, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S8032C6,    ABISELECT(5696,2996), //bcp->offset
    31, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S8032C14,    ABISELECT(3616,1912), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S8032C11,    ABISELECT(6336,3332), //bcp->offset
    44, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S8032C13,    ABISELECT(3616,1912), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S8033C4,    ABISELECT(4568,2396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(6384,3360), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S8032C8,    ABISELECT(6384,3360), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(6640,3492), //bcp->offset
    58, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S8032C10,    ABISELECT(6384,3360), //bcp->offset
    52, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S8033C7,    ABISELECT(6736,3544), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S8032C14,    ABISELECT(6736,3544), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S8032C13,    ABISELECT(6736,3544), //bcp->offset
    63, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S8033C4,    ABISELECT(6888,3632), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S8032C15,    ABISELECT(6976,3708), //bcp->offset
    71, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S8032C12,    ABISELECT(3776,2000), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S8032C5,    ABISELECT(3776,2000), //bcp->offset
    19, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8032C1[];
extern void _ZN7S8032C1D1Ev();
extern void _ZN7S8032C1D0Ev();
extern void ABISELECT(_ZThn3616_N7S8032C1D1Ev,_ZThn1912_N7S8032C1D1Ev)();
extern void ABISELECT(_ZThn3616_N7S8032C1D0Ev,_ZThn1912_N7S8032C1D0Ev)();
extern void ABISELECT(_ZThn3776_N7S8032C1D1Ev,_ZThn2000_N7S8032C1D1Ev)();
extern void ABISELECT(_ZThn3776_N7S8032C1D0Ev,_ZThn2000_N7S8032C1D0Ev)();
extern void ABISELECT(_ZTv0_n32_N7S8032C1D1Ev,_ZTv0_n16_N7S8032C1D1Ev)();
extern void ABISELECT(_ZThn5696_N7S8032C1D1Ev,_ZThn2996_N7S8032C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S8032C1D0Ev,_ZTv0_n16_N7S8032C1D0Ev)();
extern void ABISELECT(_ZThn5696_N7S8032C1D0Ev,_ZThn2996_N7S8032C1D0Ev)() __attribute__((weak));
extern void _ZN7S8032C62v1Ev();
extern void ABISELECT(_ZTv0_n24_N7S8032C1D1Ev,_ZTv0_n12_N7S8032C1D1Ev)();
extern void ABISELECT(_ZThn6192_N7S8032C1D1Ev,_ZThn3256_N7S8032C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8032C1D0Ev,_ZTv0_n12_N7S8032C1D0Ev)();
extern void ABISELECT(_ZThn6192_N7S8032C1D0Ev,_ZThn3256_N7S8032C1D0Ev)() __attribute__((weak));
extern void _ZN8S8032C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N7S8032C1D1Ev,_ZTv0_n20_N7S8032C1D1Ev)();
extern void ABISELECT(_ZThn6336_N7S8032C1D1Ev,_ZThn3332_N7S8032C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S8032C1D0Ev,_ZTv0_n20_N7S8032C1D0Ev)();
extern void ABISELECT(_ZThn6336_N7S8032C1D0Ev,_ZThn3332_N7S8032C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S8032C1D1Ev,_ZTv0_n16_N7S8032C1D1Ev)();
extern void ABISELECT(_ZThn6384_N7S8032C1D1Ev,_ZThn3360_N7S8032C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S8032C1D0Ev,_ZTv0_n16_N7S8032C1D0Ev)();
extern void ABISELECT(_ZThn6384_N7S8032C1D0Ev,_ZThn3360_N7S8032C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8032C1D1Ev,_ZTv0_n12_N7S8032C1D1Ev)();
extern void ABISELECT(_ZThn6640_N7S8032C1D1Ev,_ZThn3492_N7S8032C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8032C1D0Ev,_ZTv0_n12_N7S8032C1D0Ev)();
extern void ABISELECT(_ZThn6640_N7S8032C1D0Ev,_ZThn3492_N7S8032C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S8032C1D1Ev,_ZTv0_n24_N7S8032C1D1Ev)();
extern void ABISELECT(_ZThn6736_N7S8032C1D1Ev,_ZThn3544_N7S8032C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S8032C1D0Ev,_ZTv0_n24_N7S8032C1D0Ev)();
extern void ABISELECT(_ZThn6736_N7S8032C1D0Ev,_ZThn3544_N7S8032C1D0Ev)() __attribute__((weak));
extern void _ZN8S8032C152v3Ev();
static  VTBL_ENTRY vtc_S8032C1[] = {
  ABISELECT(6976,3708),
  ABISELECT(6888,3632),
  ABISELECT(6736,3544),
  ABISELECT(6640,3492),
  ABISELECT(6384,3360),
  ABISELECT(6336,3332),
  ABISELECT(6192,3256),
  ABISELECT(5696,2996),
  0,
  (VTBL_ENTRY)&(_ZTI7S8032C1[0]),
  (VTBL_ENTRY)&_ZN7S8032C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8032C1D0Ev,
  ABISELECT(2720,1420),
  ABISELECT(2576,1344),
  ABISELECT(2080,1084),
  ABISELECT(-3616,-1912),
  (VTBL_ENTRY)&(_ZTI7S8032C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn3616_N7S8032C1D1Ev,_ZThn1912_N7S8032C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn3616_N7S8032C1D0Ev,_ZThn1912_N7S8032C1D0Ev),
  ABISELECT(3200,1708),
  ABISELECT(3112,1632),
  ABISELECT(2560,1332),
  ABISELECT(2960,1544),
  ABISELECT(2416,1256),
  ABISELECT(1920,996),
  ABISELECT(2864,1492),
  ABISELECT(2608,1360),
  ABISELECT(-3776,-2000),
  (VTBL_ENTRY)&(_ZTI7S8032C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn3776_N7S8032C1D1Ev,_ZThn2000_N7S8032C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn3776_N7S8032C1D0Ev,_ZThn2000_N7S8032C1D0Ev),
  0,
  ABISELECT(-5696,-2996),
  ABISELECT(496,260),
  ABISELECT(-5696,-2996),
  (VTBL_ENTRY)&(_ZTI7S8032C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8032C1D1Ev,_ZTv0_n16_N7S8032C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8032C1D0Ev,_ZTv0_n16_N7S8032C1D0Ev),
  (VTBL_ENTRY)&_ZN7S8032C62v1Ev,
  ABISELECT(-6192,-3256),
  ABISELECT(-6192,-3256),
  (VTBL_ENTRY)&(_ZTI7S8032C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8032C1D1Ev,_ZTv0_n12_N7S8032C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8032C1D0Ev,_ZTv0_n12_N7S8032C1D0Ev),
  ABISELECT(-6336,-3332),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-6336,-3332),
  (VTBL_ENTRY)&(_ZTI7S8032C1[0]),
  (VTBL_ENTRY)&_ZN8S8032C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S8032C1D1Ev,_ZTv0_n20_N7S8032C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S8032C1D0Ev,_ZTv0_n20_N7S8032C1D0Ev),
  ABISELECT(-6384,-3360),
  ABISELECT(256,132),
  ABISELECT(-6384,-3360),
  (VTBL_ENTRY)&(_ZTI7S8032C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8032C1D1Ev,_ZTv0_n16_N7S8032C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8032C1D0Ev,_ZTv0_n16_N7S8032C1D0Ev),
  ABISELECT(-6640,-3492),
  ABISELECT(-6640,-3492),
  (VTBL_ENTRY)&(_ZTI7S8032C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8032C1D1Ev,_ZTv0_n12_N7S8032C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8032C1D0Ev,_ZTv0_n12_N7S8032C1D0Ev),
  ABISELECT(-6736,-3544),
  ABISELECT(-400,-212),
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  ABISELECT(-6736,-3544),
  (VTBL_ENTRY)&(_ZTI7S8032C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S8032C1D1Ev,_ZTv0_n24_N7S8032C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S8032C1D0Ev,_ZTv0_n24_N7S8032C1D0Ev),
  0,
  ABISELECT(-6976,-3708),
  (VTBL_ENTRY)&(_ZTI7S8032C1[0]),
  (VTBL_ENTRY)&_ZN8S8032C152v3Ev,
};
extern VTBL_ENTRY _ZTV7S8032C1[];
extern void _ZN8S8032C13D1Ev();
extern void _ZN8S8032C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8032C13__A__7S8032C1[] = {
  ABISELECT(2720,1420),
  ABISELECT(2576,1344),
  ABISELECT(2080,1084),
  0,
  (VTBL_ENTRY)&(_ZTI8S8032C13[0]),
  (VTBL_ENTRY)&_ZN8S8032C13D1Ev,
  (VTBL_ENTRY)&_ZN8S8032C13D0Ev,
};
extern void _ZN8S8032C14D1Ev();
extern void _ZN8S8032C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8032C148S8032C13__7S8032C1[] = {
  ABISELECT(2576,1344),
  ABISELECT(2080,1084),
  0,
  (VTBL_ENTRY)&(_ZTI8S8032C14[0]),
  (VTBL_ENTRY)&_ZN8S8032C14D1Ev,
  (VTBL_ENTRY)&_ZN8S8032C14D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S8032C14D1Ev,_ZTv0_n16_N8S8032C14D1Ev)();
extern void ABISELECT(_ZThn2080_N8S8032C14D1Ev,_ZThn1084_N8S8032C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8032C14D0Ev,_ZTv0_n16_N8S8032C14D0Ev)();
extern void ABISELECT(_ZThn2080_N8S8032C14D0Ev,_ZThn1084_N8S8032C14D0Ev)() __attribute__((weak));
extern void _ZN7S8032C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8032C6__8S8032C148S8032C13__7S8032C1[] = {
  0,
  ABISELECT(-2080,-1084),
  ABISELECT(496,260),
  ABISELECT(-2080,-1084),
  (VTBL_ENTRY)&(_ZTI8S8032C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C14D1Ev,_ZTv0_n16_N8S8032C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C14D0Ev,_ZTv0_n16_N8S8032C14D0Ev),
  (VTBL_ENTRY)&_ZN7S8032C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8032C14D1Ev,_ZTv0_n12_N8S8032C14D1Ev)();
extern void ABISELECT(_ZThn2576_N8S8032C14D1Ev,_ZThn1344_N8S8032C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8032C14D0Ev,_ZTv0_n12_N8S8032C14D0Ev)();
extern void ABISELECT(_ZThn2576_N8S8032C14D0Ev,_ZThn1344_N8S8032C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8032C8__8S8032C148S8032C13__7S8032C1[] = {
  ABISELECT(-2576,-1344),
  ABISELECT(-2576,-1344),
  (VTBL_ENTRY)&(_ZTI8S8032C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C14D1Ev,_ZTv0_n12_N8S8032C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C14D0Ev,_ZTv0_n12_N8S8032C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S8032C13D1Ev,_ZTv0_n16_N8S8032C13D1Ev)();
extern void ABISELECT(_ZThn2080_N8S8032C13D1Ev,_ZThn1084_N8S8032C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8032C13D0Ev,_ZTv0_n16_N8S8032C13D0Ev)();
extern void ABISELECT(_ZThn2080_N8S8032C13D0Ev,_ZThn1084_N8S8032C13D0Ev)() __attribute__((weak));
extern void _ZN7S8032C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8032C6__8S8032C13__A__7S8032C1[] = {
  0,
  ABISELECT(-2080,-1084),
  ABISELECT(496,260),
  ABISELECT(-2080,-1084),
  (VTBL_ENTRY)&(_ZTI8S8032C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C13D1Ev,_ZTv0_n16_N8S8032C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C13D0Ev,_ZTv0_n16_N8S8032C13D0Ev),
  (VTBL_ENTRY)&_ZN7S8032C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8032C13D1Ev,_ZTv0_n12_N8S8032C13D1Ev)();
extern void ABISELECT(_ZThn2576_N8S8032C13D1Ev,_ZThn1344_N8S8032C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8032C13D0Ev,_ZTv0_n12_N8S8032C13D0Ev)();
extern void ABISELECT(_ZThn2576_N8S8032C13D0Ev,_ZThn1344_N8S8032C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8032C8__8S8032C13__A__7S8032C1[] = {
  ABISELECT(-2576,-1344),
  ABISELECT(-2576,-1344),
  (VTBL_ENTRY)&(_ZTI8S8032C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C13D1Ev,_ZTv0_n12_N8S8032C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C13D0Ev,_ZTv0_n12_N8S8032C13D0Ev),
};
extern void _ZN8S8032C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N8S8032C13D1Ev,_ZTv0_n20_N8S8032C13D1Ev)();
extern void ABISELECT(_ZThn2720_N8S8032C13D1Ev,_ZThn1420_N8S8032C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S8032C13D0Ev,_ZTv0_n20_N8S8032C13D0Ev)();
extern void ABISELECT(_ZThn2720_N8S8032C13D0Ev,_ZThn1420_N8S8032C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8032C11__8S8032C13__A__7S8032C1[] = {
  ABISELECT(-2720,-1420),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-2720,-1420),
  (VTBL_ENTRY)&(_ZTI8S8032C13[0]),
  (VTBL_ENTRY)&_ZN8S8032C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8032C13D1Ev,_ZTv0_n20_N8S8032C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8032C13D0Ev,_ZTv0_n20_N8S8032C13D0Ev),
};
extern void _ZN7S8032C5D1Ev();
extern void _ZN7S8032C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S8032C5__7S8032C1[] = {
  ABISELECT(3200,1708),
  ABISELECT(3112,1632),
  ABISELECT(2560,1332),
  ABISELECT(2960,1544),
  ABISELECT(2416,1256),
  ABISELECT(1920,996),
  ABISELECT(2864,1492),
  ABISELECT(2608,1360),
  0,
  (VTBL_ENTRY)&(_ZTI7S8032C5[0]),
  (VTBL_ENTRY)&_ZN7S8032C5D1Ev,
  (VTBL_ENTRY)&_ZN7S8032C5D0Ev,
};
extern void _ZN8S8032C12D1Ev();
extern void _ZN8S8032C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8032C127S8032C5__7S8032C1[] = {
  ABISELECT(3200,1708),
  ABISELECT(3112,1632),
  ABISELECT(2560,1332),
  ABISELECT(2960,1544),
  ABISELECT(2416,1256),
  ABISELECT(1920,996),
  ABISELECT(2864,1492),
  ABISELECT(2608,1360),
  0,
  (VTBL_ENTRY)&(_ZTI8S8032C12[0]),
  (VTBL_ENTRY)&_ZN8S8032C12D1Ev,
  (VTBL_ENTRY)&_ZN8S8032C12D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S8032C12D1Ev,_ZTv0_n16_N8S8032C12D1Ev)();
extern void ABISELECT(_ZThn2608_N8S8032C12D1Ev,_ZThn1360_N8S8032C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8032C12D0Ev,_ZTv0_n16_N8S8032C12D0Ev)();
extern void ABISELECT(_ZThn2608_N8S8032C12D0Ev,_ZThn1360_N8S8032C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8032C10__8S8032C127S8032C5__7S8032C1[] = {
  ABISELECT(-2608,-1360),
  ABISELECT(256,132),
  ABISELECT(-2608,-1360),
  (VTBL_ENTRY)&(_ZTI8S8032C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C12D1Ev,_ZTv0_n16_N8S8032C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C12D0Ev,_ZTv0_n16_N8S8032C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S8032C12D1Ev,_ZTv0_n12_N8S8032C12D1Ev)();
extern void ABISELECT(_ZThn2864_N8S8032C12D1Ev,_ZThn1492_N8S8032C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8032C12D0Ev,_ZTv0_n12_N8S8032C12D0Ev)();
extern void ABISELECT(_ZThn2864_N8S8032C12D0Ev,_ZThn1492_N8S8032C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__8S8032C127S8032C5__7S8032C1[] = {
  ABISELECT(-2864,-1492),
  ABISELECT(-2864,-1492),
  (VTBL_ENTRY)&(_ZTI8S8032C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C12D1Ev,_ZTv0_n12_N8S8032C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C12D0Ev,_ZTv0_n12_N8S8032C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S8032C12D1Ev,_ZTv0_n16_N8S8032C12D1Ev)();
extern void ABISELECT(_ZThn1920_N8S8032C12D1Ev,_ZThn996_N8S8032C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8032C12D0Ev,_ZTv0_n16_N8S8032C12D0Ev)();
extern void ABISELECT(_ZThn1920_N8S8032C12D0Ev,_ZThn996_N8S8032C12D0Ev)() __attribute__((weak));
extern void _ZN7S8032C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8032C6__8S8032C127S8032C5__7S8032C1[] = {
  0,
  ABISELECT(-1920,-996),
  ABISELECT(496,260),
  ABISELECT(-1920,-996),
  (VTBL_ENTRY)&(_ZTI8S8032C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C12D1Ev,_ZTv0_n16_N8S8032C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C12D0Ev,_ZTv0_n16_N8S8032C12D0Ev),
  (VTBL_ENTRY)&_ZN7S8032C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8032C12D1Ev,_ZTv0_n12_N8S8032C12D1Ev)();
extern void ABISELECT(_ZThn2416_N8S8032C12D1Ev,_ZThn1256_N8S8032C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8032C12D0Ev,_ZTv0_n12_N8S8032C12D0Ev)();
extern void ABISELECT(_ZThn2416_N8S8032C12D0Ev,_ZThn1256_N8S8032C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8032C8__A1__8S8032C127S8032C5__7S8032C1[] = {
  ABISELECT(-2416,-1256),
  ABISELECT(-2416,-1256),
  (VTBL_ENTRY)&(_ZTI8S8032C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C12D1Ev,_ZTv0_n12_N8S8032C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C12D0Ev,_ZTv0_n12_N8S8032C12D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S8032C12D1Ev,_ZTv0_n24_N8S8032C12D1Ev)();
extern void ABISELECT(_ZThn2960_N8S8032C12D1Ev,_ZThn1544_N8S8032C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S8032C12D0Ev,_ZTv0_n24_N8S8032C12D0Ev)();
extern void ABISELECT(_ZThn2960_N8S8032C12D0Ev,_ZThn1544_N8S8032C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8032C13__8S8032C127S8032C5__7S8032C1[] = {
  ABISELECT(-2960,-1544),
  ABISELECT(-400,-212),
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  ABISELECT(-2960,-1544),
  (VTBL_ENTRY)&(_ZTI8S8032C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S8032C12D1Ev,_ZTv0_n24_N8S8032C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S8032C12D0Ev,_ZTv0_n24_N8S8032C12D0Ev),
};
extern void _ZN8S8032C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N8S8032C12D1Ev,_ZTv0_n20_N8S8032C12D1Ev)();
extern void ABISELECT(_ZThn2560_N8S8032C12D1Ev,_ZThn1332_N8S8032C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S8032C12D0Ev,_ZTv0_n20_N8S8032C12D0Ev)();
extern void ABISELECT(_ZThn2560_N8S8032C12D0Ev,_ZThn1332_N8S8032C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8032C11__8S8032C127S8032C5__7S8032C1[] = {
  ABISELECT(-2560,-1332),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-2560,-1332),
  (VTBL_ENTRY)&(_ZTI8S8032C12[0]),
  (VTBL_ENTRY)&_ZN8S8032C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8032C12D1Ev,_ZTv0_n20_N8S8032C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8032C12D0Ev,_ZTv0_n20_N8S8032C12D0Ev),
};
extern void _ZN8S8032C152v3Ev();
static  VTBL_ENTRY _tg__ZTV8S8032C15__8S8032C127S8032C5__7S8032C1[] = {
  0,
  ABISELECT(-3200,-1708),
  (VTBL_ENTRY)&(_ZTI8S8032C12[0]),
  (VTBL_ENTRY)&_ZN8S8032C152v3Ev,
};
extern void ABISELECT(_ZTv0_n32_N7S8032C5D1Ev,_ZTv0_n16_N7S8032C5D1Ev)();
extern void ABISELECT(_ZThn1920_N7S8032C5D1Ev,_ZThn996_N7S8032C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S8032C5D0Ev,_ZTv0_n16_N7S8032C5D0Ev)();
extern void ABISELECT(_ZThn1920_N7S8032C5D0Ev,_ZThn996_N7S8032C5D0Ev)() __attribute__((weak));
extern void _ZN7S8032C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8032C6__7S8032C5__7S8032C1[] = {
  0,
  ABISELECT(-1920,-996),
  ABISELECT(496,260),
  ABISELECT(-1920,-996),
  (VTBL_ENTRY)&(_ZTI7S8032C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8032C5D1Ev,_ZTv0_n16_N7S8032C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8032C5D0Ev,_ZTv0_n16_N7S8032C5D0Ev),
  (VTBL_ENTRY)&_ZN7S8032C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S8032C5D1Ev,_ZTv0_n12_N7S8032C5D1Ev)();
extern void ABISELECT(_ZThn2416_N7S8032C5D1Ev,_ZThn1256_N7S8032C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8032C5D0Ev,_ZTv0_n12_N7S8032C5D0Ev)();
extern void ABISELECT(_ZThn2416_N7S8032C5D0Ev,_ZThn1256_N7S8032C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8032C8__7S8032C5__7S8032C1[] = {
  ABISELECT(-2416,-1256),
  ABISELECT(-2416,-1256),
  (VTBL_ENTRY)&(_ZTI7S8032C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8032C5D1Ev,_ZTv0_n12_N7S8032C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8032C5D0Ev,_ZTv0_n12_N7S8032C5D0Ev),
};
extern void _ZN8S8032C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N7S8032C5D1Ev,_ZTv0_n20_N7S8032C5D1Ev)();
extern void ABISELECT(_ZThn2560_N7S8032C5D1Ev,_ZThn1332_N7S8032C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S8032C5D0Ev,_ZTv0_n20_N7S8032C5D0Ev)();
extern void ABISELECT(_ZThn2560_N7S8032C5D0Ev,_ZThn1332_N7S8032C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8032C11__7S8032C5__7S8032C1[] = {
  ABISELECT(-2560,-1332),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-2560,-1332),
  (VTBL_ENTRY)&(_ZTI7S8032C5[0]),
  (VTBL_ENTRY)&_ZN8S8032C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S8032C5D1Ev,_ZTv0_n20_N7S8032C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S8032C5D0Ev,_ZTv0_n20_N7S8032C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S8032C5D1Ev,_ZTv0_n16_N7S8032C5D1Ev)();
extern void ABISELECT(_ZThn2608_N7S8032C5D1Ev,_ZThn1360_N7S8032C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S8032C5D0Ev,_ZTv0_n16_N7S8032C5D0Ev)();
extern void ABISELECT(_ZThn2608_N7S8032C5D0Ev,_ZThn1360_N7S8032C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8032C10__7S8032C5__7S8032C1[] = {
  ABISELECT(-2608,-1360),
  ABISELECT(256,132),
  ABISELECT(-2608,-1360),
  (VTBL_ENTRY)&(_ZTI7S8032C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8032C5D1Ev,_ZTv0_n16_N7S8032C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8032C5D0Ev,_ZTv0_n16_N7S8032C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S8032C5D1Ev,_ZTv0_n12_N7S8032C5D1Ev)();
extern void ABISELECT(_ZThn2864_N7S8032C5D1Ev,_ZThn1492_N7S8032C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8032C5D0Ev,_ZTv0_n12_N7S8032C5D0Ev)();
extern void ABISELECT(_ZThn2864_N7S8032C5D0Ev,_ZThn1492_N7S8032C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A3__7S8032C5__7S8032C1[] = {
  ABISELECT(-2864,-1492),
  ABISELECT(-2864,-1492),
  (VTBL_ENTRY)&(_ZTI7S8032C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8032C5D1Ev,_ZTv0_n12_N7S8032C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8032C5D0Ev,_ZTv0_n12_N7S8032C5D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S8032C5D1Ev,_ZTv0_n24_N7S8032C5D1Ev)();
extern void ABISELECT(_ZThn2960_N7S8032C5D1Ev,_ZThn1544_N7S8032C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S8032C5D0Ev,_ZTv0_n24_N7S8032C5D0Ev)();
extern void ABISELECT(_ZThn2960_N7S8032C5D0Ev,_ZThn1544_N7S8032C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8032C13__7S8032C5__7S8032C1[] = {
  ABISELECT(-2960,-1544),
  ABISELECT(-400,-212),
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  ABISELECT(-2960,-1544),
  (VTBL_ENTRY)&(_ZTI7S8032C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S8032C5D1Ev,_ZTv0_n24_N7S8032C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S8032C5D0Ev,_ZTv0_n24_N7S8032C5D0Ev),
};
extern void _ZN8S8032C152v3Ev();
static  VTBL_ENTRY _tg__ZTV8S8032C15__7S8032C5__7S8032C1[] = {
  0,
  ABISELECT(-3200,-1708),
  (VTBL_ENTRY)&(_ZTI7S8032C5[0]),
  (VTBL_ENTRY)&_ZN8S8032C152v3Ev,
};
extern void _ZN7S8032C6D1Ev();
extern void _ZN7S8032C6D0Ev();
extern void _ZN7S8032C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8032C6__7S8032C1[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI7S8032C6[0]),
  (VTBL_ENTRY)&_ZN7S8032C6D1Ev,
  (VTBL_ENTRY)&_ZN7S8032C6D0Ev,
  (VTBL_ENTRY)&_ZN7S8032C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S8032C6D1Ev,_ZTv0_n12_N7S8032C6D1Ev)();
extern void ABISELECT(_ZThn496_N7S8032C6D1Ev,_ZThn260_N7S8032C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8032C6D0Ev,_ZTv0_n12_N7S8032C6D0Ev)();
extern void ABISELECT(_ZThn496_N7S8032C6D0Ev,_ZThn260_N7S8032C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8032C8__7S8032C6__7S8032C1[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI7S8032C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8032C6D1Ev,_ZTv0_n12_N7S8032C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8032C6D0Ev,_ZTv0_n12_N7S8032C6D0Ev),
};
extern void _ZN8S8032C112v2Ev();
extern void _ZN8S8032C11D1Ev();
extern void _ZN8S8032C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8032C11__7S8032C1[] = {
  ABISELECT(-144,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S8032C11[0]),
  (VTBL_ENTRY)&_ZN8S8032C112v2Ev,
  (VTBL_ENTRY)&_ZN8S8032C11D1Ev,
  (VTBL_ENTRY)&_ZN8S8032C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8032C11D1Ev,_ZTv0_n12_N8S8032C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S8032C11D0Ev,_ZTv0_n12_N8S8032C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S8032C8__8S8032C11__7S8032C1[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S8032C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C11D1Ev,_ZTv0_n12_N8S8032C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C11D0Ev,_ZTv0_n12_N8S8032C11D0Ev),
};
extern void _ZN8S8032C10D1Ev();
extern void _ZN8S8032C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8032C10__7S8032C1[] = {
  ABISELECT(256,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S8032C10[0]),
  (VTBL_ENTRY)&_ZN8S8032C10D1Ev,
  (VTBL_ENTRY)&_ZN8S8032C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8032C10D1Ev,_ZTv0_n12_N8S8032C10D1Ev)();
extern void ABISELECT(_ZThn256_N8S8032C10D1Ev,_ZThn132_N8S8032C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8032C10D0Ev,_ZTv0_n12_N8S8032C10D0Ev)();
extern void ABISELECT(_ZThn256_N8S8032C10D0Ev,_ZThn132_N8S8032C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__8S8032C10__7S8032C1[] = {
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  (VTBL_ENTRY)&(_ZTI8S8032C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C10D1Ev,_ZTv0_n12_N8S8032C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C10D0Ev,_ZTv0_n12_N8S8032C10D0Ev),
};
extern void _ZN8S8032C13D1Ev();
extern void _ZN8S8032C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8032C13__A1__7S8032C1[] = {
  ABISELECT(-400,-212),
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  0,
  (VTBL_ENTRY)&(_ZTI8S8032C13[0]),
  (VTBL_ENTRY)&_ZN8S8032C13D1Ev,
  (VTBL_ENTRY)&_ZN8S8032C13D0Ev,
};
extern void _ZN8S8032C14D1Ev();
extern void _ZN8S8032C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8032C148S8032C13__A1__7S8032C1[] = {
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  0,
  (VTBL_ENTRY)&(_ZTI8S8032C14[0]),
  (VTBL_ENTRY)&_ZN8S8032C14D1Ev,
  (VTBL_ENTRY)&_ZN8S8032C14D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S8032C14D1Ev,_ZTv0_n16_N8S8032C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S8032C14D0Ev,_ZTv0_n16_N8S8032C14D0Ev)();
extern void _ZN7S8032C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8032C6__8S8032C148S8032C13__A1__7S8032C1[] = {
  0,
  ABISELECT(1040,548),
  ABISELECT(496,260),
  ABISELECT(1040,548),
  (VTBL_ENTRY)&(_ZTI8S8032C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C14D1Ev,_ZTv0_n16_N8S8032C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C14D0Ev,_ZTv0_n16_N8S8032C14D0Ev),
  (VTBL_ENTRY)&_ZN7S8032C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8032C14D1Ev,_ZTv0_n12_N8S8032C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S8032C14D0Ev,_ZTv0_n12_N8S8032C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S8032C8__8S8032C148S8032C13__A1__7S8032C1[] = {
  ABISELECT(544,288),
  ABISELECT(544,288),
  (VTBL_ENTRY)&(_ZTI8S8032C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C14D1Ev,_ZTv0_n12_N8S8032C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C14D0Ev,_ZTv0_n12_N8S8032C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S8032C13D1Ev,_ZTv0_n16_N8S8032C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S8032C13D0Ev,_ZTv0_n16_N8S8032C13D0Ev)();
extern void _ZN7S8032C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8032C6__8S8032C13__A1__7S8032C1[] = {
  0,
  ABISELECT(1040,548),
  ABISELECT(496,260),
  ABISELECT(1040,548),
  (VTBL_ENTRY)&(_ZTI8S8032C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C13D1Ev,_ZTv0_n16_N8S8032C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C13D0Ev,_ZTv0_n16_N8S8032C13D0Ev),
  (VTBL_ENTRY)&_ZN7S8032C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8032C13D1Ev,_ZTv0_n12_N8S8032C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S8032C13D0Ev,_ZTv0_n12_N8S8032C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S8032C8__8S8032C13__A1__7S8032C1[] = {
  ABISELECT(544,288),
  ABISELECT(544,288),
  (VTBL_ENTRY)&(_ZTI8S8032C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C13D1Ev,_ZTv0_n12_N8S8032C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C13D0Ev,_ZTv0_n12_N8S8032C13D0Ev),
};
extern void _ZN8S8032C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N8S8032C13D1Ev,_ZTv0_n20_N8S8032C13D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S8032C13D0Ev,_ZTv0_n20_N8S8032C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S8032C11__8S8032C13__A1__7S8032C1[] = {
  ABISELECT(400,212),
  0,
  ABISELECT(-144,-76),
  ABISELECT(400,212),
  (VTBL_ENTRY)&(_ZTI8S8032C13[0]),
  (VTBL_ENTRY)&_ZN8S8032C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8032C13D1Ev,_ZTv0_n20_N8S8032C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8032C13D0Ev,_ZTv0_n20_N8S8032C13D0Ev),
};
static  VTT_ENTRY vtt_S8032C1[] = {
  {&(_ZTV7S8032C1[10]),  10,75},
  {&(_tg__ZTV8S8032C13__A__7S8032C1[5]),  5,7},
  {&(_tg__ZTV8S8032C148S8032C13__7S8032C1[4]),  4,6},
  {&(_tg__ZTV7S8032C6__8S8032C148S8032C13__7S8032C1[5]),  5,8},
  {&(_tg__ZTV7S8032C8__8S8032C148S8032C13__7S8032C1[3]),  3,5},
  {&(_tg__ZTV7S8032C6__8S8032C13__A__7S8032C1[5]),  5,8},
  {&(_tg__ZTV7S8032C8__8S8032C13__A__7S8032C1[3]),  3,5},
  {&(_tg__ZTV8S8032C11__8S8032C13__A__7S8032C1[5]),  5,8},
  {&(_tg__ZTV7S8032C5__7S8032C1[10]),  10,12},
  {&(_tg__ZTV8S8032C127S8032C5__7S8032C1[10]),  10,12},
  {&(_tg__ZTV8S8032C10__8S8032C127S8032C5__7S8032C1[4]),  4,6},
  {&(_tg__ZTV7S8033C7__A1__8S8032C127S8032C5__7S8032C1[3]),  3,5},
  {&(_tg__ZTV7S8032C6__8S8032C127S8032C5__7S8032C1[5]),  5,8},
  {&(_tg__ZTV7S8032C8__A1__8S8032C127S8032C5__7S8032C1[3]),  3,5},
  {&(_tg__ZTV8S8032C13__8S8032C127S8032C5__7S8032C1[6]),  6,8},
  {&(_tg__ZTV8S8032C11__8S8032C127S8032C5__7S8032C1[5]),  5,8},
  {&(_tg__ZTV8S8032C15__8S8032C127S8032C5__7S8032C1[3]),  3,4},
  {&(_tg__ZTV7S8032C6__7S8032C5__7S8032C1[5]),  5,8},
  {&(_tg__ZTV7S8032C8__7S8032C5__7S8032C1[3]),  3,5},
  {&(_tg__ZTV8S8032C11__7S8032C5__7S8032C1[5]),  5,8},
  {&(_tg__ZTV8S8032C10__7S8032C5__7S8032C1[4]),  4,6},
  {&(_tg__ZTV7S8033C7__A3__7S8032C5__7S8032C1[3]),  3,5},
  {&(_tg__ZTV8S8032C13__7S8032C5__7S8032C1[6]),  6,8},
  {&(_tg__ZTV8S8032C15__7S8032C5__7S8032C1[3]),  3,4},
  {&(_ZTV7S8032C1[17]),  17,75},
  {&(_ZTV7S8032C1[36]),  36,75},
  {&(_ZTV7S8032C1[42]),  42,75},
  {&(_ZTV7S8032C1[49]),  49,75},
  {&(_ZTV7S8032C1[29]),  29,75},
  {&(_ZTV7S8032C1[56]),  56,75},
  {&(_ZTV7S8032C1[61]),  61,75},
  {&(_ZTV7S8032C1[69]),  69,75},
  {&(_ZTV7S8032C1[74]),  74,75},
  {&(_tg__ZTV7S8032C6__7S8032C1[3]),  3,6},
  {&(_tg__ZTV7S8032C8__7S8032C6__7S8032C1[3]),  3,5},
  {&(_tg__ZTV8S8032C11__7S8032C1[3]),  3,6},
  {&(_tg__ZTV7S8032C8__8S8032C11__7S8032C1[3]),  3,5},
  {&(_tg__ZTV8S8032C10__7S8032C1[3]),  3,5},
  {&(_tg__ZTV7S8033C7__A1__8S8032C10__7S8032C1[3]),  3,5},
  {&(_tg__ZTV8S8032C13__A1__7S8032C1[5]),  5,7},
  {&(_tg__ZTV8S8032C148S8032C13__A1__7S8032C1[4]),  4,6},
  {&(_tg__ZTV7S8032C6__8S8032C148S8032C13__A1__7S8032C1[5]),  5,8},
  {&(_tg__ZTV7S8032C8__8S8032C148S8032C13__A1__7S8032C1[3]),  3,5},
  {&(_tg__ZTV7S8032C6__8S8032C13__A1__7S8032C1[5]),  5,8},
  {&(_tg__ZTV7S8032C8__8S8032C13__A1__7S8032C1[3]),  3,5},
  {&(_tg__ZTV8S8032C11__8S8032C13__A1__7S8032C1[5]),  5,8},
};
extern VTBL_ENTRY _ZTI7S8032C1[];
extern  VTBL_ENTRY _ZTV7S8032C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8032C1[];
static VTBL_ENTRY alt_thunk_names51[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8032C10D0Ev,_ZTv0_n12_N8S8032C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S8032C10D0Ev,_ZThn132_N8S8032C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8032C10D1Ev,_ZTv0_n12_N8S8032C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S8032C10D1Ev,_ZThn132_N8S8032C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8032C6D0Ev,_ZTv0_n12_N7S8032C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N7S8032C6D0Ev,_ZThn260_N7S8032C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8032C6D1Ev,_ZTv0_n12_N7S8032C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N7S8032C6D1Ev,_ZThn260_N7S8032C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S8032C5D0Ev,_ZTv0_n24_N7S8032C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2960_N7S8032C5D0Ev,_ZThn1544_N7S8032C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S8032C5D1Ev,_ZTv0_n24_N7S8032C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2960_N7S8032C5D1Ev,_ZThn1544_N7S8032C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S8032C5D0Ev,_ZTv0_n20_N7S8032C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N7S8032C5D0Ev,_ZThn1332_N7S8032C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S8032C5D1Ev,_ZTv0_n20_N7S8032C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N7S8032C5D1Ev,_ZThn1332_N7S8032C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8032C5D0Ev,_ZTv0_n12_N7S8032C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2864_N7S8032C5D0Ev,_ZThn1492_N7S8032C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2416_N7S8032C5D0Ev,_ZThn1256_N7S8032C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8032C5D1Ev,_ZTv0_n12_N7S8032C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2864_N7S8032C5D1Ev,_ZThn1492_N7S8032C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2416_N7S8032C5D1Ev,_ZThn1256_N7S8032C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S8032C5D0Ev,_ZTv0_n16_N7S8032C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2608_N7S8032C5D0Ev,_ZThn1360_N7S8032C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1920_N7S8032C5D0Ev,_ZThn996_N7S8032C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S8032C5D1Ev,_ZTv0_n16_N7S8032C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2608_N7S8032C5D1Ev,_ZThn1360_N7S8032C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1920_N7S8032C5D1Ev,_ZThn996_N7S8032C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S8032C12D0Ev,_ZTv0_n20_N8S8032C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N8S8032C12D0Ev,_ZThn1332_N8S8032C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S8032C12D1Ev,_ZTv0_n20_N8S8032C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N8S8032C12D1Ev,_ZThn1332_N8S8032C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S8032C12D0Ev,_ZTv0_n24_N8S8032C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2960_N8S8032C12D0Ev,_ZThn1544_N8S8032C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S8032C12D1Ev,_ZTv0_n24_N8S8032C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2960_N8S8032C12D1Ev,_ZThn1544_N8S8032C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8032C12D0Ev,_ZTv0_n12_N8S8032C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2416_N8S8032C12D0Ev,_ZThn1256_N8S8032C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2864_N8S8032C12D0Ev,_ZThn1492_N8S8032C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8032C12D1Ev,_ZTv0_n12_N8S8032C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2416_N8S8032C12D1Ev,_ZThn1256_N8S8032C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2864_N8S8032C12D1Ev,_ZThn1492_N8S8032C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8032C12D0Ev,_ZTv0_n16_N8S8032C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1920_N8S8032C12D0Ev,_ZThn996_N8S8032C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2608_N8S8032C12D0Ev,_ZThn1360_N8S8032C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8032C12D1Ev,_ZTv0_n16_N8S8032C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1920_N8S8032C12D1Ev,_ZThn996_N8S8032C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2608_N8S8032C12D1Ev,_ZThn1360_N8S8032C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S8032C13D0Ev,_ZTv0_n20_N8S8032C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2720_N8S8032C13D0Ev,_ZThn1420_N8S8032C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S8032C13D1Ev,_ZTv0_n20_N8S8032C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2720_N8S8032C13D1Ev,_ZThn1420_N8S8032C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8032C13D0Ev,_ZTv0_n12_N8S8032C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2576_N8S8032C13D0Ev,_ZThn1344_N8S8032C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8032C13D1Ev,_ZTv0_n12_N8S8032C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2576_N8S8032C13D1Ev,_ZThn1344_N8S8032C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8032C13D0Ev,_ZTv0_n16_N8S8032C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2080_N8S8032C13D0Ev,_ZThn1084_N8S8032C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8032C13D1Ev,_ZTv0_n16_N8S8032C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2080_N8S8032C13D1Ev,_ZThn1084_N8S8032C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8032C14D0Ev,_ZTv0_n12_N8S8032C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2576_N8S8032C14D0Ev,_ZThn1344_N8S8032C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8032C14D1Ev,_ZTv0_n12_N8S8032C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2576_N8S8032C14D1Ev,_ZThn1344_N8S8032C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8032C14D0Ev,_ZTv0_n16_N8S8032C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2080_N8S8032C14D0Ev,_ZThn1084_N8S8032C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8032C14D1Ev,_ZTv0_n16_N8S8032C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2080_N8S8032C14D1Ev,_ZThn1084_N8S8032C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S8032C1D0Ev,_ZTv0_n24_N7S8032C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6736_N7S8032C1D0Ev,_ZThn3544_N7S8032C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S8032C1D1Ev,_ZTv0_n24_N7S8032C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6736_N7S8032C1D1Ev,_ZThn3544_N7S8032C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S8032C1D0Ev,_ZTv0_n20_N7S8032C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6336_N7S8032C1D0Ev,_ZThn3332_N7S8032C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S8032C1D1Ev,_ZTv0_n20_N7S8032C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6336_N7S8032C1D1Ev,_ZThn3332_N7S8032C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8032C1D0Ev,_ZTv0_n12_N7S8032C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6640_N7S8032C1D0Ev,_ZThn3492_N7S8032C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn6192_N7S8032C1D0Ev,_ZThn3256_N7S8032C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8032C1D1Ev,_ZTv0_n12_N7S8032C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6640_N7S8032C1D1Ev,_ZThn3492_N7S8032C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn6192_N7S8032C1D1Ev,_ZThn3256_N7S8032C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S8032C1D0Ev,_ZTv0_n16_N7S8032C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6384_N7S8032C1D0Ev,_ZThn3360_N7S8032C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn5696_N7S8032C1D0Ev,_ZThn2996_N7S8032C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S8032C1D1Ev,_ZTv0_n16_N7S8032C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6384_N7S8032C1D1Ev,_ZThn3360_N7S8032C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn5696_N7S8032C1D1Ev,_ZThn2996_N7S8032C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S8032C1 = {  "S8032C1", // class name
  bases_S8032C1, 21,
  &(vtc_S8032C1[0]), // expected_vtbl_contents
  &(vtt_S8032C1[0]), // expected_vtt_contents
  ABISELECT(7168,3804), // object size
  NSPAIRA(_ZTI7S8032C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S8032C1),75, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S8032C1),46, //virtual table table var
  19, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names51,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S18423C3  {
  char s18423c3f0[2];
  void  mf18423c3(); // _ZN8S18423C39mf18423c3Ev
};
//SIG(-1 S18423C3) C1{ m Fc[2]}


void  S18423C3 ::mf18423c3(){}

static void Test_S18423C3()
{
  {
    init_simple_test("S18423C3");
    S18423C3 lv;
    check2(sizeof(lv), 2, "sizeof(S18423C3)");
    check2(__alignof__(lv), 1, "__alignof__(S18423C3)");
    check_field_offset(lv, s18423c3f0, 0, "S18423C3.s18423c3f0");
  }
}
static Arrange_To_Call_Me vS18423C3(Test_S18423C3, "S18423C3", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S18423C5  {
  char s18423c5f0[4];
  short s18423c5f1[5];
  int s18423c5f2[4];
  char s18423c5f3;
  short s18423c5f4[8];
};
//SIG(-1 S18423C5) C1{ Fc[4] Fs[5] Fi[4] Fc Fs[8]}



static void Test_S18423C5()
{
  {
    init_simple_test("S18423C5");
    S18423C5 lv;
    check2(sizeof(lv), 52, "sizeof(S18423C5)");
    check2(__alignof__(lv), 4, "__alignof__(S18423C5)");
    check_field_offset(lv, s18423c5f0, 0, "S18423C5.s18423c5f0");
    check_field_offset(lv, s18423c5f1, 4, "S18423C5.s18423c5f1");
    check_field_offset(lv, s18423c5f2, 16, "S18423C5.s18423c5f2");
    check_field_offset(lv, s18423c5f3, 32, "S18423C5.s18423c5f3");
    check_field_offset(lv, s18423c5f4, 34, "S18423C5.s18423c5f4");
  }
}
static Arrange_To_Call_Me vS18423C5(Test_S18423C5, "S18423C5", 52);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S18423C4  {
  char s18423c4f0;
  int s18423c4f1[3];
  char s18423c4f2[9];
  int s18423c4f3;
  short s18423c4f4[64];
  int s18423c4f5[13];
  ::S18423C5 s18423c4f6;
  void *s18423c4f7[2];
  ::S17556C5_nt s18423c4f8;
  char s18423c4f9;
  void  mf18423c4(); // _ZN8S18423C49mf18423c4Ev
};
//SIG(-1 S18423C4) C1{ m Fc Fi[3] Fc[9] Fi Fs[64] Fi[13] FC2{ Fc[4] Fs[5] Fi[4] Fc Fs[8]} Fp[2] FC3{ m Fp Fi FC4{ m}} Fc}


void  S18423C4 ::mf18423c4(){}

static void Test_S18423C4()
{
  {
    init_simple_test("S18423C4");
    S18423C4 lv;
    check2(sizeof(lv), ABISELECT(304,288), "sizeof(S18423C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18423C4)");
    check_field_offset(lv, s18423c4f0, 0, "S18423C4.s18423c4f0");
    check_field_offset(lv, s18423c4f1, 4, "S18423C4.s18423c4f1");
    check_field_offset(lv, s18423c4f2, 16, "S18423C4.s18423c4f2");
    check_field_offset(lv, s18423c4f3, 28, "S18423C4.s18423c4f3");
    check_field_offset(lv, s18423c4f4, 32, "S18423C4.s18423c4f4");
    check_field_offset(lv, s18423c4f5, 160, "S18423C4.s18423c4f5");
    check_field_offset(lv, s18423c4f6, 212, "S18423C4.s18423c4f6");
    check_field_offset(lv, s18423c4f7, 264, "S18423C4.s18423c4f7");
    check_field_offset(lv, s18423c4f8, ABISELECT(280,272), "S18423C4.s18423c4f8");
    check_field_offset(lv, s18423c4f9, ABISELECT(296,284), "S18423C4.s18423c4f9");
  }
}
static Arrange_To_Call_Me vS18423C4(Test_S18423C4, "S18423C4", ABISELECT(304,288));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S18423C11  {
  char s18423c11f0;
  int s18423c11f1;
  short s18423c11f2[66];
  void  mf18423c11(); // _ZN9S18423C1110mf18423c11Ev
};
//SIG(-1 S18423C11) C1{ m Fc Fi Fs[66]}


void  S18423C11 ::mf18423c11(){}

static void Test_S18423C11()
{
  {
    init_simple_test("S18423C11");
    S18423C11 lv;
    check2(sizeof(lv), 140, "sizeof(S18423C11)");
    check2(__alignof__(lv), 4, "__alignof__(S18423C11)");
    check_field_offset(lv, s18423c11f0, 0, "S18423C11.s18423c11f0");
    check_field_offset(lv, s18423c11f1, 4, "S18423C11.s18423c11f1");
    check_field_offset(lv, s18423c11f2, 8, "S18423C11.s18423c11f2");
  }
}
static Arrange_To_Call_Me vS18423C11(Test_S18423C11, "S18423C11", 140);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S18423C12  {
  char s18423c12f0;
  short s18423c12f1[176];
  void  mf18423c12(); // _ZN9S18423C1210mf18423c12Ev
};
//SIG(-1 S18423C12) C1{ m Fc Fs[176]}


void  S18423C12 ::mf18423c12(){}

static void Test_S18423C12()
{
  {
    init_simple_test("S18423C12");
    S18423C12 lv;
    check2(sizeof(lv), 354, "sizeof(S18423C12)");
    check2(__alignof__(lv), 2, "__alignof__(S18423C12)");
    check_field_offset(lv, s18423c12f0, 0, "S18423C12.s18423c12f0");
    check_field_offset(lv, s18423c12f1, 2, "S18423C12.s18423c12f1");
  }
}
static Arrange_To_Call_Me vS18423C12(Test_S18423C12, "S18423C12", 354);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S18423C13  {
  char s18423c13f0;
  short s18423c13f1[99];
  void  mf18423c13(); // _ZN9S18423C1310mf18423c13Ev
};
//SIG(-1 S18423C13) C1{ m Fc Fs[99]}


void  S18423C13 ::mf18423c13(){}

static void Test_S18423C13()
{
  {
    init_simple_test("S18423C13");
    S18423C13 lv;
    check2(sizeof(lv), 200, "sizeof(S18423C13)");
    check2(__alignof__(lv), 2, "__alignof__(S18423C13)");
    check_field_offset(lv, s18423c13f0, 0, "S18423C13.s18423c13f0");
    check_field_offset(lv, s18423c13f1, 2, "S18423C13.s18423c13f1");
  }
}
static Arrange_To_Call_Me vS18423C13(Test_S18423C13, "S18423C13", 200);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S18423C14  {
  char s18423c14f0;
  int s18423c14f1[2];
  void  mf18423c14(); // _ZN9S18423C1410mf18423c14Ev
};
//SIG(-1 S18423C14) C1{ m Fc Fi[2]}


void  S18423C14 ::mf18423c14(){}

static void Test_S18423C14()
{
  {
    init_simple_test("S18423C14");
    S18423C14 lv;
    check2(sizeof(lv), 12, "sizeof(S18423C14)");
    check2(__alignof__(lv), 4, "__alignof__(S18423C14)");
    check_field_offset(lv, s18423c14f0, 0, "S18423C14.s18423c14f0");
    check_field_offset(lv, s18423c14f1, 4, "S18423C14.s18423c14f1");
  }
}
static Arrange_To_Call_Me vS18423C14(Test_S18423C14, "S18423C14", 12);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S18423C15_nt  {
  void *s18423c15f0;
  int s18423c15f1;
  ::S7856C24 s18423c15f2;
  void  mf18423c15(); // _ZN12S18423C15_nt10mf18423c15Ev
};
//SIG(-1 S18423C15_nt) C1{ m Fp Fi FC2{ m}}


void  S18423C15_nt ::mf18423c15(){}

//skip512 S18423C15_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S18423C17  {
  int s18423c17f0[4];
  ::S17556C5_nt s18423c17f1;
  char s18423c17f2[2];
  void  mf18423c17(); // _ZN9S18423C1710mf18423c17Ev
};
//SIG(-1 S18423C17) C1{ m Fi[4] FC2{ m Fp Fi FC3{ m}} Fc[2]}


void  S18423C17 ::mf18423c17(){}

static void Test_S18423C17()
{
  {
    init_simple_test("S18423C17");
    S18423C17 lv;
    check2(sizeof(lv), ABISELECT(40,32), "sizeof(S18423C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18423C17)");
    check_field_offset(lv, s18423c17f0, 0, "S18423C17.s18423c17f0");
    check_field_offset(lv, s18423c17f1, 16, "S18423C17.s18423c17f1");
    check_field_offset(lv, s18423c17f2, ABISELECT(32,28), "S18423C17.s18423c17f2");
  }
}
static Arrange_To_Call_Me vS18423C17(Test_S18423C17, "S18423C17", ABISELECT(40,32));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S18423C20  {
  ::S17556C15_nt s18423c20f0;
  ::S40C18_nt s18423c20f1[4];
  void  mf18423c20(); // _ZN9S18423C2010mf18423c20Ev
};
//SIG(-1 S18423C20) C1{ m FC2{ m Fp Fi[2] FC3{ m}} FC4{ m Fi[3]}[4]}


void  S18423C20 ::mf18423c20(){}

static void Test_S18423C20()
{
  {
    init_simple_test("S18423C20");
    S18423C20 lv;
    check2(sizeof(lv), ABISELECT(72,64), "sizeof(S18423C20)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18423C20)");
    check_field_offset(lv, s18423c20f0, 0, "S18423C20.s18423c20f0");
    check_field_offset(lv, s18423c20f1, ABISELECT(24,16), "S18423C20.s18423c20f1");
  }
}
static Arrange_To_Call_Me vS18423C20(Test_S18423C20, "S18423C20", ABISELECT(72,64));

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S18423C24  {
  int s18423c24f0;
  ::S18423C15_nt s18423c24f1;
};
//SIG(1 S18423C24) C1{ Fi FC2{ m Fp Fi FC3{ m}}}



static void Test_S18423C24()
{
  {
    init_simple_test("S18423C24");
    S18423C24 lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S18423C24)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18423C24)");
    check_field_offset(lv, s18423c24f0, 0, "S18423C24.s18423c24f0");
    check_field_offset(lv, s18423c24f1, ABISELECT(8,4), "S18423C24.s18423c24f1");
  }
}
static Arrange_To_Call_Me vS18423C24(Test_S18423C24, "S18423C24", ABISELECT(24,16));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S18423C19  : S18423C20 {
  ::S18423C24 s18423c19f0[256];
};
//SIG(-1 S18423C19) C1{ BC2{ m FC3{ m Fp Fi[2] FC4{ m}} FC5{ m Fi[3]}[4]} FC6{ Fi FC7{ m Fp Fi FC8{ m}}}[256]}



static void Test_S18423C19()
{
  extern Class_Descriptor cd_S18423C19;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(778,1041)];
    init_test(&cd_S18423C19, buf);
    S18423C19 &lv = *(new (buf) S18423C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(6216,4160), "sizeof(S18423C19)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18423C19)");
    check_base_class_offset(lv, (S18423C20*), 0, "S18423C19");
    check_field_offset(lv, s18423c19f0, ABISELECT(72,64), "S18423C19.s18423c19f0");
    test_class_info(&lv, &cd_S18423C19);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18423C19(Test_S18423C19, "S18423C19", ABISELECT(6216,4160));

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S18423C26  {
  int s18423c26f0;
  ::S18423C15_nt s18423c26f1;
  int s18423c26f2;
};
//SIG(-1 S18423C26) C1{ Fi FC2{ m Fp Fi FC3{ m}} Fi}



static void Test_S18423C26()
{
  {
    init_simple_test("S18423C26");
    S18423C26 lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S18423C26)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18423C26)");
    check_field_offset(lv, s18423c26f0, 0, "S18423C26.s18423c26f0");
    check_field_offset(lv, s18423c26f1, ABISELECT(8,4), "S18423C26.s18423c26f1");
    check_field_offset(lv, s18423c26f2, ABISELECT(24,16), "S18423C26.s18423c26f2");
  }
}
static Arrange_To_Call_Me vS18423C26(Test_S18423C26, "S18423C26", ABISELECT(32,20));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S18423C25  : S18423C20 {
  ::S18423C26 s18423c25f0[256];
};
//SIG(-1 S18423C25) C1{ BC2{ m FC3{ m Fp Fi[2] FC4{ m}} FC5{ m Fi[3]}[4]} FC6{ Fi FC7{ m Fp Fi FC8{ m}} Fi}[256]}



static void Test_S18423C25()
{
  extern Class_Descriptor cd_S18423C25;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(1034,1297)];
    init_test(&cd_S18423C25, buf);
    S18423C25 &lv = *(new (buf) S18423C25());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8264,5184), "sizeof(S18423C25)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18423C25)");
    check_base_class_offset(lv, (S18423C20*), 0, "S18423C25");
    check_field_offset(lv, s18423c25f0, ABISELECT(72,64), "S18423C25.s18423c25f0");
    test_class_info(&lv, &cd_S18423C25);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18423C25(Test_S18423C25, "S18423C25", ABISELECT(8264,5184));

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S18423C1  {
  short s18423c1f0;
  int s18423c1f1;
  ::S17556C9_nt s18423c1f2;
  char s18423c1f3;
  ::S18423C3 s18423c1f4;
  ::S18423C4 s18423c1f5;
  ::S17556C12 s18423c1f6;
  ::S18423C11 s18423c1f7;
  ::S18423C12 s18423c1f8;
  ::S18423C13 s18423c1f9;
  void *s18423c1f10;
  ::S18423C14 s18423c1f11;
  char s18423c1f12[2];
  ::S18423C15_nt s18423c1f13;
  ::S18423C17 s18423c1f14;
  ::S40C13_nt s18423c1f15;
  ::S18423C19 s18423c1f16;
  ::S18423C25 s18423c1f17;
  int s18423c1f18[6];
  void  mf18423c1(); // _ZN8S18423C19mf18423c1Ev
};
//SIG(1 S18423C1) C1{ m Fs Fi FC2{ m Fc[2]} Fc FC3{ m Fc[2]} FC4{ m Fc Fi[3] Fc[9] Fi Fs[64] Fi[13] FC5{ Fc[4] Fs[5] Fi[4] Fc Fs[8]} Fp[2] FC6{ m Fp Fi FC7{ m}} Fc} FC8{ m Fc FC9{ m Fp Fi[2] FC7}} FC10{ m Fc Fi Fs[66]} FC11{ m Fc Fs[176]} FC12{ m Fc Fs[99]} Fp FC13{ m Fc Fi[2]} Fc[2] FC14{ m Fp Fi FC7} FC15{ m Fi[4] FC6 Fc[2]} FC16{ m Fi} FC17{ BC18{ m FC19{ m Fp Fi[2] FC20{ m}} FC21{ m Fi[3]}[4]} FC22{ Fi FC14}[256]} FC23{ BC18 FC24{ Fi FC14 Fi}[256]} Fi[6]}


void  S18423C1 ::mf18423c1(){}

static void Test_S18423C1()
{
  {
    init_simple_test("S18423C1");
    S18423C1 lv;
    check2(sizeof(lv), ABISELECT(15640,10456), "sizeof(S18423C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18423C1)");
    check_field_offset(lv, s18423c1f0, 0, "S18423C1.s18423c1f0");
    check_field_offset(lv, s18423c1f1, 4, "S18423C1.s18423c1f1");
    check_field_offset(lv, s18423c1f2, 8, "S18423C1.s18423c1f2");
    check_field_offset(lv, s18423c1f3, 10, "S18423C1.s18423c1f3");
    check_field_offset(lv, s18423c1f4, 11, "S18423C1.s18423c1f4");
    check_field_offset(lv, s18423c1f5, 16, "S18423C1.s18423c1f5");
    check_field_offset(lv, s18423c1f6, ABISELECT(320,304), "S18423C1.s18423c1f6");
    check_field_offset(lv, s18423c1f7, ABISELECT(352,324), "S18423C1.s18423c1f7");
    check_field_offset(lv, s18423c1f8, ABISELECT(492,464), "S18423C1.s18423c1f8");
    check_field_offset(lv, s18423c1f9, ABISELECT(846,818), "S18423C1.s18423c1f9");
    check_field_offset(lv, s18423c1f10, ABISELECT(1048,1020), "S18423C1.s18423c1f10");
    check_field_offset(lv, s18423c1f11, ABISELECT(1056,1024), "S18423C1.s18423c1f11");
    check_field_offset(lv, s18423c1f12, ABISELECT(1068,1036), "S18423C1.s18423c1f12");
    check_field_offset(lv, s18423c1f13, ABISELECT(1072,1040), "S18423C1.s18423c1f13");
    check_field_offset(lv, s18423c1f14, ABISELECT(1088,1052), "S18423C1.s18423c1f14");
    check_field_offset(lv, s18423c1f15, ABISELECT(1128,1084), "S18423C1.s18423c1f15");
    check_field_offset(lv, s18423c1f16, ABISELECT(1136,1088), "S18423C1.s18423c1f16");
    check_field_offset(lv, s18423c1f17, ABISELECT(7352,5248), "S18423C1.s18423c1f17");
    check_field_offset(lv, s18423c1f18, ABISELECT(15616,10432), "S18423C1.s18423c1f18");
  }
}
static Arrange_To_Call_Me vS18423C1(Test_S18423C1, "S18423C1", ABISELECT(15640,10456));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7853C10  : virtual S7856C24 , S7856C15 , virtual S7856C12 {
  ~S7853C10(); // tgen
  S7853C10(); // tgen
};
//SIG(-1 S7853C10) C1{ VBC2{ m} BC3{ m} VBC4{ m}}


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

static void Test_S7853C10()
{
  extern Class_Descriptor cd_S7853C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7853C10, buf);
    S7853C10 *dp, &lv = *(dp=new (buf) S7853C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7853C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7853C10)");
    check_base_class_offset(lv, (S7856C24*), 0, "S7853C10");
    check_base_class_offset(lv, (S7856C15*), 0, "S7853C10");
    check_base_class_offset(lv, (S7856C12*), 0, "S7853C10");
    test_class_info(&lv, &cd_S7853C10);
    dp->~S7853C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7853C10(Test_S7853C10, "S7853C10", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S7853C10C1Ev();
extern void _ZN8S7853C10D1Ev();
Name_Map name_map_S7853C10[] = {
  NSPAIR(_ZN8S7853C10C1Ev),
  NSPAIR(_ZN8S7853C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
static Base_Class bases_S7853C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7853C10[];
static  VTBL_ENTRY vtc_S7853C10[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
extern VTBL_ENTRY _ZTV8S7853C10[];
static  VTT_ENTRY vtt_S7853C10[] = {
  {&(_ZTV8S7853C10[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
Class_Descriptor cd_S7853C10 = {  "S7853C10", // class name
  bases_S7853C10, 3,
  &(vtc_S7853C10[0]), // expected_vtbl_contents
  &(vtt_S7853C10[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S7853C10),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7853C10),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7853C10),1, //virtual table table var
  0, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7853C9  : S7856C24 , virtual S7853C10 , virtual S7856C15 {
  ~S7853C9(); // tgen
  S7853C9(); // tgen
};
//SIG(-1 S7853C9) C1{ BC2{ m} VBC3{ VBC2 BC4{ m} VBC5{ m}} VBC4}


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

static void Test_S7853C9()
{
  extern Class_Descriptor cd_S7853C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S7853C9, buf);
    S7853C9 *dp, &lv = *(dp=new (buf) S7853C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S7853C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7853C9)");
    /*is_ambiguous_... S7853C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), 0, "S7853C9");
    check_base_class_offset(lv, (S7856C24*)(S7853C10*), ABISELECT(8,4), "S7853C9");
    check_base_class_offset(lv, (S7856C15*)(S7853C10*), 0, "S7853C9");
    check_base_class_offset(lv, (S7856C12*)(S7853C10*), 0, "S7853C9");
    check_base_class_offset(lv, (S7853C10*), 0, "S7853C9");
    /*is_ambiguous_... S7853C9::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(8,4), "S7853C9");
    test_class_info(&lv, &cd_S7853C9);
    dp->~S7853C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7853C9(Test_S7853C9, "S7853C9", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S7853C9C1Ev();
extern void _ZN7S7853C9D1Ev();
Name_Map name_map_S7853C9[] = {
  NSPAIR(_ZN7S7853C9C1Ev),
  NSPAIR(_ZN7S7853C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
static Base_Class bases_S7853C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7853C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7853C9[];
static  VTBL_ENTRY vtc_S7853C9[] = {
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
extern VTBL_ENTRY _ZTV7S7853C9[];
static  VTBL_ENTRY _tg__ZTV8S7853C10__7S7853C9[] = {
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTT_ENTRY vtt_S7853C9[] = {
  {&(_ZTV7S7853C9[6]),  6,6},
  {&(_ZTV7S7853C9[6]),  6,6},
  {&(_tg__ZTV8S7853C10__7S7853C9[4]),  4,4},
};
extern VTBL_ENTRY _ZTI7S7853C9[];
extern  VTBL_ENTRY _ZTV7S7853C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C9[];
Class_Descriptor cd_S7853C9 = {  "S7853C9", // class name
  bases_S7853C9, 6,
  &(vtc_S7853C9[0]), // expected_vtbl_contents
  &(vtt_S7853C9[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7853C9),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7853C9),6, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7853C9),3, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7853C12  : S7856C15 , virtual S7856C24 , virtual S7856C12 , S7853C10 , virtual S7853C9 {
  virtual  ~S7853C12(); // _ZN8S7853C12D2Ev
  S7853C12(); // tgen
};
//SIG(-1 S7853C12) C1{ BC2{ m} VBC3{ m} VBC4{ m} BC5{ VBC3 BC2 VBC4} VBC6{ BC3 VBC5 VBC2} vd}


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

static void Test_S7853C12()
{
  extern Class_Descriptor cd_S7853C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S7853C12, buf);
    S7853C12 *dp, &lv = *(dp=new (buf) S7853C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S7853C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7853C12)");
    /*is_ambiguous_... S7853C12::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(8,4), "S7853C12");
    /*is_ambiguous_... S7853C12::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), 0, "S7853C12");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*), 0, "S7853C12");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*), 0, "S7853C12");
    check_base_class_offset(lv, (S7856C12*), 0, "S7853C12");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*), 0, "S7853C12");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*), 0, "S7853C12");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*), 0, "S7853C12");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7853C10*), 0, "S7853C12");
    /*is_ambiguous_... S7853C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C9*), ABISELECT(16,8), "S7853C12");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*), ABISELECT(16,8), "S7853C12");
    check_base_class_offset(lv, (S7853C10*)(S7853C9*), ABISELECT(16,8), "S7853C12");
    /*is_ambiguous_... S7853C9::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C9*), ABISELECT(24,12), "S7853C12");
    check_base_class_offset(lv, (S7853C9*), ABISELECT(16,8), "S7853C12");
    test_class_info(&lv, &cd_S7853C12);
    dp->~S7853C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7853C12(Test_S7853C12, "S7853C12", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S7853C12C1Ev();
extern void _ZN8S7853C12D2Ev();
Name_Map name_map_S7853C12[] = {
  NSPAIR(_ZN8S7853C12C1Ev),
  NSPAIR(_ZN8S7853C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C9;
extern VTBL_ENTRY _ZTI7S7853C9[];
extern  VTBL_ENTRY _ZTV7S7853C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C9[];
static Base_Class bases_S7853C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7853C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7853C9,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7853C12[];
extern void _ZN8S7853C12D1Ev();
extern void _ZN8S7853C12D0Ev();
static  VTBL_ENTRY vtc_S7853C12[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
  (VTBL_ENTRY)&_ZN8S7853C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C12D0Ev,
  ABISELECT(8,4),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
};
extern VTBL_ENTRY _ZTV8S7853C12[];
static  VTBL_ENTRY _tg__ZTV8S7853C10__A__8S7853C12[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C12[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__A1__8S7853C12[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTT_ENTRY vtt_S7853C12[] = {
  {&(_ZTV8S7853C12[7]),  7,15},
  {&(_tg__ZTV8S7853C10__A__8S7853C12[4]),  4,4},
  {&(_ZTV8S7853C12[15]),  15,15},
  {&(_ZTV8S7853C12[15]),  15,15},
  {&(_tg__ZTV7S7853C9__8S7853C12[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C12[6]),  6,6},
  {&(_tg__ZTV8S7853C10__A1__8S7853C12[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S7853C12[];
extern  VTBL_ENTRY _ZTV8S7853C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C12[];
Class_Descriptor cd_S7853C12 = {  "S7853C12", // class name
  bases_S7853C12, 10,
  &(vtc_S7853C12[0]), // expected_vtbl_contents
  &(vtt_S7853C12[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S7853C12),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S7853C12),15, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7853C12),7, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7853C6  : virtual S7856C24 , virtual S7856C15 , virtual S7853C9 , S7856C12 , S7853C12 {
  virtual  ~S7853C6(); // _ZN7S7853C6D2Ev
  S7853C6(); // tgen
};
//SIG(-1 S7853C6) C1{ VBC2{ m} VBC3{ m} VBC4{ BC2 VBC5{ VBC2 BC3 VBC6{ m}} VBC3} BC6 BC7{ BC3 VBC2 VBC6 BC5 VBC4 vd} vd}


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

static void Test_S7853C6()
{
  extern Class_Descriptor cd_S7853C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S7853C6, buf);
    S7853C6 *dp, &lv = *(dp=new (buf) S7853C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S7853C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7853C6)");
    /*is_ambiguous_... S7853C6::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), 0, "S7853C6");
    /*is_ambiguous_... S7853C6::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*), 0, "S7853C6");
    /*is_ambiguous_... S7853C12::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C12*), 0, "S7853C6");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C12*), 0, "S7853C6");
    /*is_ambiguous_... S7853C6::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(9,5), "S7853C6");
    /*is_ambiguous_... S7853C9::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C9*), ABISELECT(9,5), "S7853C6");
    /*is_ambiguous_... S7853C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C9*), ABISELECT(16,8), "S7853C6");
    /*is_ambiguous_... S7853C6::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*), ABISELECT(16,8), "S7853C6");
    /*is_ambiguous_... S7853C6::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*), ABISELECT(24,12), "S7853C6");
    check_base_class_offset(lv, (S7856C12*)(S7853C12*), ABISELECT(24,12), "S7853C6");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C12*), ABISELECT(24,12), "S7853C6");
    check_base_class_offset(lv, (S7853C10*)(S7853C9*), ABISELECT(16,8), "S7853C6");
    check_base_class_offset(lv, (S7853C9*), ABISELECT(16,8), "S7853C6");
    check_base_class_offset(lv, (S7853C9*)(S7853C12*), ABISELECT(16,8), "S7853C6");
    /*is_ambiguous_... S7853C6::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), 0, "S7853C6");
    /*is_ambiguous_... S7853C12::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C12*), ABISELECT(8,4), "S7853C6");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C12*), 0, "S7853C6");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C12*), 0, "S7853C6");
    check_base_class_offset(lv, (S7853C12*), 0, "S7853C6");
    test_class_info(&lv, &cd_S7853C6);
    dp->~S7853C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7853C6(Test_S7853C6, "S7853C6", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN7S7853C6C1Ev();
extern void _ZN7S7853C6D2Ev();
Name_Map name_map_S7853C6[] = {
  NSPAIR(_ZN7S7853C6C1Ev),
  NSPAIR(_ZN7S7853C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C9;
extern VTBL_ENTRY _ZTI7S7853C9[];
extern  VTBL_ENTRY _ZTV7S7853C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C12;
extern VTBL_ENTRY _ZTI8S7853C12[];
extern  VTBL_ENTRY _ZTV8S7853C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C12[];
static Base_Class bases_S7853C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7853C10,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7853C9,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7853C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7853C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7853C6[];
extern void _ZN7S7853C6D1Ev();
extern void _ZN7S7853C6D0Ev();
static  VTBL_ENTRY vtc_S7853C6[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C6[0]),
  (VTBL_ENTRY)&_ZN7S7853C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C6D0Ev,
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7853C6[0]),
};
extern VTBL_ENTRY _ZTV7S7853C6[];
extern void _ZN8S7853C12D1Ev();
extern void _ZN8S7853C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C12__7S7853C6[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
  (VTBL_ENTRY)&_ZN8S7853C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C12__A1__7S7853C6[] = {
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C12__7S7853C6[] = {
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__7S7853C6[] = {
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__7S7853C6[] = {
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTT_ENTRY vtt_S7853C6[] = {
  {&(_ZTV7S7853C6[7]),  7,15},
  {&(_tg__ZTV8S7853C12__7S7853C6[7]),  7,9},
  {&(_tg__ZTV8S7853C108S7853C12__A1__7S7853C6[4]),  4,4},
  {&(_tg__ZTV7S7853C9__8S7853C12__7S7853C6[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C12__7S7853C6[6]),  6,6},
  {&(_ZTV7S7853C6[15]),  15,15},
  {&(_ZTV7S7853C6[15]),  15,15},
  {&(_tg__ZTV7S7853C9__7S7853C6[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C6[6]),  6,6},
  {&(_tg__ZTV8S7853C10__7S7853C6[4]),  4,4},
};
extern VTBL_ENTRY _ZTI7S7853C6[];
extern  VTBL_ENTRY _ZTV7S7853C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C6[];
Class_Descriptor cd_S7853C6 = {  "S7853C6", // class name
  bases_S7853C6, 12,
  &(vtc_S7853C6[0]), // expected_vtbl_contents
  &(vtt_S7853C6[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI7S7853C6),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S7853C6),15, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7853C6),10, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7853C13  : S7856C12 , S7856C15 , S7853C10 {
  int s7853c13f0;
  ~S7853C13(); // tgen
  S7853C13(); // tgen
};
//SIG(-1 S7853C13) C1{ BC2{ m} BC3{ m} BC4{ VBC5{ m} BC3 VBC2} Fi}


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

static void Test_S7853C13()
{
  extern Class_Descriptor cd_S7853C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S7853C13, buf);
    S7853C13 *dp, &lv = *(dp=new (buf) S7853C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S7853C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7853C13)");
    /*is_ambiguous_... S7853C13::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), 0, "S7853C13");
    /*is_ambiguous_... S7853C13::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(8,4), "S7853C13");
    check_base_class_offset(lv, (S7856C24*)(S7853C10*), 0, "S7853C13");
    check_base_class_offset(lv, (S7856C15*)(S7853C10*), 0, "S7853C13");
    check_base_class_offset(lv, (S7856C12*)(S7853C10*), ABISELECT(12,8), "S7853C13");
    check_base_class_offset(lv, (S7853C10*), 0, "S7853C13");
    check_field_offset(lv, s7853c13f0, ABISELECT(8,4), "S7853C13.s7853c13f0");
    test_class_info(&lv, &cd_S7853C13);
    dp->~S7853C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7853C13(Test_S7853C13, "S7853C13", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S7853C13C1Ev();
extern void _ZN8S7853C13D1Ev();
Name_Map name_map_S7853C13[] = {
  NSPAIR(_ZN8S7853C13C1Ev),
  NSPAIR(_ZN8S7853C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
static Base_Class bases_S7853C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7853C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7853C13[];
static  VTBL_ENTRY vtc_S7853C13[] = {
  ABISELECT(12,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C13[0]),
};
extern VTBL_ENTRY _ZTV8S7853C13[];
static  VTBL_ENTRY _tg__ZTV8S7853C10__8S7853C13[] = {
  ABISELECT(12,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTT_ENTRY vtt_S7853C13[] = {
  {&(_ZTV8S7853C13[4]),  4,4},
  {&(_tg__ZTV8S7853C10__8S7853C13[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S7853C13[];
extern  VTBL_ENTRY _ZTV8S7853C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C13[];
Class_Descriptor cd_S7853C13 = {  "S7853C13", // class name
  bases_S7853C13, 6,
  &(vtc_S7853C13[0]), // expected_vtbl_contents
  &(vtt_S7853C13[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S7853C13),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7853C13),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7853C13),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7853C5  : virtual S7853C6 , virtual S7853C13 , virtual S7853C12 {
  int s7853c5f0[2];
  virtual  ~S7853C5(); // _ZN7S7853C5D2Ev
  S7853C5(); // tgen
};
//SIG(-1 S7853C5) C1{ VBC2{ VBC3{ m} VBC4{ m} VBC5{ BC3 VBC6{ VBC3 BC4 VBC7{ m}} VBC4} BC7 BC8{ BC4 VBC3 VBC7 BC6 VBC5 vd} vd} VBC9{ BC7 BC4 BC6 Fi} VBC8 vd Fi[2]}


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

static void Test_S7853C5()
{
  extern Class_Descriptor cd_S7853C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,10)];
    init_test(&cd_S7853C5, buf);
    S7853C5 *dp, &lv = *(dp=new (buf) S7853C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S7853C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7853C5)");
    /*is_ambiguous_... S7853C6::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C6*), ABISELECT(25,17), "S7853C5");
    /*is_ambiguous_... S7853C5::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*), ABISELECT(25,17), "S7853C5");
    /*is_ambiguous_... S7853C12::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C12*)(S7853C6*), ABISELECT(25,17), "S7853C5");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C12*)(S7853C6*), ABISELECT(25,17), "S7853C5");
    check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C13*), ABISELECT(25,17), "S7853C5");
    /*is_ambiguous_... S7853C5::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C12*), ABISELECT(25,17), "S7853C5");
    /*is_ambiguous_... S7853C5::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C12*), ABISELECT(25,17), "S7853C5");
    /*is_ambiguous_... S7853C6::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C6*), ABISELECT(25,17), "S7853C5");
    /*is_ambiguous_... S7853C9::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C9*), ABISELECT(25,17), "S7853C5");
    /*is_ambiguous_... S7853C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C9*), 0, "S7853C5");
    /*is_ambiguous_... S7853C5::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*), 0, "S7853C5");
    /*is_ambiguous_... S7853C5::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*), 0, "S7853C5");
    check_base_class_offset(lv, (S7856C12*)(S7853C12*)(S7853C6*), 0, "S7853C5");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C12*)(S7853C6*), 0, "S7853C5");
    check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C13*), 0, "S7853C5");
    /*is_ambiguous_... S7853C5::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C12*), 0, "S7853C5");
    /*is_ambiguous_... S7853C5::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C12*), 0, "S7853C5");
    check_base_class_offset(lv, (S7853C10*)(S7853C9*), 0, "S7853C5");
    check_base_class_offset(lv, (S7853C9*)(S7853C6*), 0, "S7853C5");
    check_base_class_offset(lv, (S7853C9*)(S7853C12*)(S7853C6*), 0, "S7853C5");
    /*is_ambiguous_... S7853C5::S7853C12 */ AMB_check_base_class_offset(lv, (S7853C9*)(S7853C12*), 0, "S7853C5");
    /*is_ambiguous_... S7853C6::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C6*), ABISELECT(16,12), "S7853C5");
    /*is_ambiguous_... S7853C12::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C12*)(S7853C6*), ABISELECT(24,16), "S7853C5");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C12*)(S7853C6*), ABISELECT(16,12), "S7853C5");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C12*)(S7853C6*), ABISELECT(16,12), "S7853C5");
    check_base_class_offset(lv, (S7853C12*)(S7853C6*), ABISELECT(16,12), "S7853C5");
    check_base_class_offset(lv, (S7853C6*), ABISELECT(16,12), "S7853C5");
    /*is_ambiguous_... S7853C13::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C13*), ABISELECT(32,20), "S7853C5");
    /*is_ambiguous_... S7853C13::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C13*), ABISELECT(40,24), "S7853C5");
    check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C13*), ABISELECT(32,20), "S7853C5");
    check_base_class_offset(lv, (S7853C10*)(S7853C13*), ABISELECT(32,20), "S7853C5");
    check_base_class_offset(lv, (S7853C13*), ABISELECT(32,20), "S7853C5");
    /*is_ambiguous_... S7853C5::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C12*), ABISELECT(56,32), "S7853C5");
    /*is_ambiguous_... S7853C5::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C12*), ABISELECT(48,28), "S7853C5");
    /*is_ambiguous_... S7853C5::S7853C12 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C12*), ABISELECT(48,28), "S7853C5");
    /*is_ambiguous_... S7853C5::S7853C12 */ AMB_check_base_class_offset(lv, (S7853C12*), ABISELECT(48,28), "S7853C5");
    check_field_offset(lv, s7853c5f0, ABISELECT(8,4), "S7853C5.s7853c5f0");
    test_class_info(&lv, &cd_S7853C5);
    dp->~S7853C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7853C5(Test_S7853C5, "S7853C5", ABISELECT(64,36));

#else // __cplusplus

extern void _ZN7S7853C5C1Ev();
extern void _ZN7S7853C5D2Ev();
Name_Map name_map_S7853C5[] = {
  NSPAIR(_ZN7S7853C5C1Ev),
  NSPAIR(_ZN7S7853C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C9;
extern VTBL_ENTRY _ZTI7S7853C9[];
extern  VTBL_ENTRY _ZTV7S7853C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C12;
extern VTBL_ENTRY _ZTI8S7853C12[];
extern  VTBL_ENTRY _ZTV8S7853C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C12[];
extern Class_Descriptor cd_S7853C6;
extern VTBL_ENTRY _ZTI7S7853C6[];
extern  VTBL_ENTRY _ZTV7S7853C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C6[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C13;
extern VTBL_ENTRY _ZTI8S7853C13[];
extern  VTBL_ENTRY _ZTV8S7853C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C13[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C12;
extern VTBL_ENTRY _ZTI8S7853C12[];
extern  VTBL_ENTRY _ZTV8S7853C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C12[];
static Base_Class bases_S7853C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    ABISELECT(25,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(25,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7853C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7853C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7853C12,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7853C6,    ABISELECT(16,12), //bcp->offset
    12, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7853C13,    ABISELECT(32,20), //bcp->offset
    22, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7853C12,    ABISELECT(48,28), //bcp->offset
    26, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7853C5[];
extern void _ZN7S7853C5D1Ev();
extern void _ZN7S7853C5D0Ev();
extern void ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev)();
extern void ABISELECT(_ZThn16_N7S7853C5D1Ev,_ZThn12_N7S7853C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev)();
extern void ABISELECT(_ZThn16_N7S7853C5D0Ev,_ZThn12_N7S7853C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev)();
extern void ABISELECT(_ZThn48_N7S7853C5D1Ev,_ZThn28_N7S7853C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev)();
extern void ABISELECT(_ZThn48_N7S7853C5D0Ev,_ZThn28_N7S7853C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7853C5[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&_ZN7S7853C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C5D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev),
  ABISELECT(-32,-20),
  ABISELECT(-7,-3),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev),
};
extern VTBL_ENTRY _ZTV7S7853C5[];
extern void _ZN7S7853C6D1Ev();
extern void _ZN7S7853C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7853C6__7S7853C5[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C6[0]),
  (VTBL_ENTRY)&_ZN7S7853C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C6D0Ev,
};
extern void _ZN8S7853C12D1Ev();
extern void _ZN8S7853C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C127S7853C6__7S7853C5[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
  (VTBL_ENTRY)&_ZN8S7853C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C127S7853C6__A1__7S7853C5[] = {
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C127S7853C6__7S7853C5[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__7S7853C6__7S7853C5[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7853C6[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__7S7853C5[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__7S7853C5[] = {
  0,
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__7S7853C5[] = {
  ABISELECT(-32,-20),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C13__A2__7S7853C5[] = {
  ABISELECT(-32,-20),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
extern void _ZN8S7853C12D1Ev();
extern void _ZN8S7853C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__7S7853C5[] = {
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
  (VTBL_ENTRY)&_ZN8S7853C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C12__A3__7S7853C5[] = {
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C12__A1__7S7853C5[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
};
static  VTT_ENTRY vtt_S7853C5[] = {
  {&(_ZTV7S7853C5[10]),  10,36},
  {&(_ZTV7S7853C5[20]),  20,36},
  {&(_ZTV7S7853C5[10]),  10,36},
  {&(_ZTV7S7853C5[10]),  10,36},
  {&(_ZTV7S7853C5[26]),  26,36},
  {&(_ZTV7S7853C5[34]),  34,36},
  {&(_tg__ZTV7S7853C6__7S7853C5[7]),  7,9},
  {&(_tg__ZTV8S7853C127S7853C6__7S7853C5[7]),  7,9},
  {&(_tg__ZTV8S7853C108S7853C127S7853C6__A1__7S7853C5[4]),  4,4},
  {&(_tg__ZTV7S7853C9__8S7853C127S7853C6__7S7853C5[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C127S7853C6__7S7853C5[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C6__7S7853C5[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C6__7S7853C5[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C5[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C5[6]),  6,6},
  {&(_tg__ZTV8S7853C10__7S7853C5[4]),  4,4},
  {&(_tg__ZTV8S7853C13__7S7853C5[4]),  4,4},
  {&(_tg__ZTV8S7853C108S7853C13__A2__7S7853C5[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__7S7853C5[7]),  7,9},
  {&(_tg__ZTV8S7853C108S7853C12__A3__7S7853C5[4]),  4,4},
  {&(_tg__ZTV7S7853C9__8S7853C12__A1__7S7853C5[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C12__A1__7S7853C5[6]),  6,6},
};
extern VTBL_ENTRY _ZTI7S7853C5[];
extern  VTBL_ENTRY _ZTV7S7853C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C5[];
static VTBL_ENTRY alt_thunk_names52[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7853C5D0Ev,_ZThn28_N7S7853C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7853C5D0Ev,_ZThn12_N7S7853C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7853C5D1Ev,_ZThn28_N7S7853C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7853C5D1Ev,_ZThn12_N7S7853C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7853C5 = {  "S7853C5", // class name
  bases_S7853C5, 22,
  &(vtc_S7853C5[0]), // expected_vtbl_contents
  &(vtt_S7853C5[0]), // expected_vtt_contents
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI7S7853C5),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7853C5),36, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7853C5),22, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names52,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7853C16  : virtual S7856C15 {
  ~S7853C16(); // tgen
  S7853C16(); // tgen
};
//SIG(-1 S7853C16) C1{ VBC2{ m}}


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

static void Test_S7853C16()
{
  extern Class_Descriptor cd_S7853C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7853C16, buf);
    S7853C16 *dp, &lv = *(dp=new (buf) S7853C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7853C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7853C16)");
    check_base_class_offset(lv, (S7856C15*), 0, "S7853C16");
    test_class_info(&lv, &cd_S7853C16);
    dp->~S7853C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7853C16(Test_S7853C16, "S7853C16", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S7853C16C1Ev();
extern void _ZN8S7853C16D1Ev();
Name_Map name_map_S7853C16[] = {
  NSPAIR(_ZN8S7853C16C1Ev),
  NSPAIR(_ZN8S7853C16D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
static Base_Class bases_S7853C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7853C16[];
static  VTBL_ENTRY vtc_S7853C16[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C16[0]),
};
extern VTBL_ENTRY _ZTV8S7853C16[];
static  VTT_ENTRY vtt_S7853C16[] = {
  {&(_ZTV8S7853C16[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S7853C16[];
extern  VTBL_ENTRY _ZTV8S7853C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C16[];
Class_Descriptor cd_S7853C16 = {  "S7853C16", // class name
  bases_S7853C16, 1,
  &(vtc_S7853C16[0]), // expected_vtbl_contents
  &(vtt_S7853C16[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S7853C16),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S7853C16),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7853C16),1, //virtual table table var
  0, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7853C15  : virtual S7853C10 , virtual S7853C16 , virtual S7853C13 , S7856C12 , virtual S7853C6 {
  int s7853c15f0;
  virtual  ~S7853C15(); // _ZN8S7853C15D2Ev
  S7853C15(); // tgen
};
//SIG(-1 S7853C15) C1{ VBC2{ VBC3{ m} BC4{ m} VBC5{ m}} VBC6{ VBC4} VBC7{ BC5 BC4 BC2 Fi} BC5 VBC8{ VBC3 VBC4 VBC9{ BC3 VBC2 VBC4} BC5 BC10{ BC4 VBC3 VBC5 BC2 VBC9 vd} vd} vd Fi}


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

static void Test_S7853C15()
{
  extern Class_Descriptor cd_S7853C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S7853C15, buf);
    S7853C15 *dp, &lv = *(dp=new (buf) S7853C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S7853C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7853C15)");
    /*is_ambiguous_... S7853C15::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*), 0, "S7853C15");
    check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C13*), 0, "S7853C15");
    /*is_ambiguous_... S7853C6::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C6*), 0, "S7853C15");
    /*is_ambiguous_... S7853C12::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C12*)(S7853C6*), 0, "S7853C15");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C12*)(S7853C6*), 0, "S7853C15");
    /*is_ambiguous_... S7853C15::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*), ABISELECT(48,28), "S7853C15");
    /*is_ambiguous_... S7853C15::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*), ABISELECT(12,8), "S7853C15");
    check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C13*), ABISELECT(12,8), "S7853C15");
    check_base_class_offset(lv, (S7856C12*)(S7853C12*)(S7853C6*), ABISELECT(12,8), "S7853C15");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C12*)(S7853C6*), ABISELECT(12,8), "S7853C15");
    /*is_ambiguous_... S7853C15::S7853C10 */ AMB_check_base_class_offset(lv, (S7853C10*), ABISELECT(48,28), "S7853C15");
    check_base_class_offset(lv, (S7853C10*)(S7853C9*), ABISELECT(48,28), "S7853C15");
    check_base_class_offset(lv, (S7856C15*)(S7853C16*), 0, "S7853C15");
    /*is_ambiguous_... S7853C6::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C6*), 0, "S7853C15");
    /*is_ambiguous_... S7853C9::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C9*), 0, "S7853C15");
    check_base_class_offset(lv, (S7853C16*), 0, "S7853C15");
    /*is_ambiguous_... S7853C13::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C13*), ABISELECT(16,12), "S7853C15");
    /*is_ambiguous_... S7853C13::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C13*), ABISELECT(24,16), "S7853C15");
    check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C13*), ABISELECT(16,12), "S7853C15");
    check_base_class_offset(lv, (S7853C10*)(S7853C13*), ABISELECT(16,12), "S7853C15");
    check_base_class_offset(lv, (S7853C13*), ABISELECT(16,12), "S7853C15");
    /*is_ambiguous_... S7853C15::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), 0, "S7853C15");
    /*is_ambiguous_... S7853C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C9*), ABISELECT(48,28), "S7853C15");
    check_base_class_offset(lv, (S7853C9*)(S7853C6*), ABISELECT(48,28), "S7853C15");
    check_base_class_offset(lv, (S7853C9*)(S7853C12*)(S7853C6*), ABISELECT(48,28), "S7853C15");
    /*is_ambiguous_... S7853C6::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C6*), ABISELECT(32,20), "S7853C15");
    /*is_ambiguous_... S7853C12::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C12*)(S7853C6*), ABISELECT(40,24), "S7853C15");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C12*)(S7853C6*), ABISELECT(32,20), "S7853C15");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C12*)(S7853C6*), ABISELECT(32,20), "S7853C15");
    check_base_class_offset(lv, (S7853C12*)(S7853C6*), ABISELECT(32,20), "S7853C15");
    check_base_class_offset(lv, (S7853C6*), ABISELECT(32,20), "S7853C15");
    check_field_offset(lv, s7853c15f0, ABISELECT(8,4), "S7853C15.s7853c15f0");
    test_class_info(&lv, &cd_S7853C15);
    dp->~S7853C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7853C15(Test_S7853C15, "S7853C15", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN8S7853C15C1Ev();
extern void _ZN8S7853C15D2Ev();
Name_Map name_map_S7853C15[] = {
  NSPAIR(_ZN8S7853C15C1Ev),
  NSPAIR(_ZN8S7853C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C16;
extern VTBL_ENTRY _ZTI8S7853C16[];
extern  VTBL_ENTRY _ZTV8S7853C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C16[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C13;
extern VTBL_ENTRY _ZTI8S7853C13[];
extern  VTBL_ENTRY _ZTV8S7853C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C13[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7853C9;
extern VTBL_ENTRY _ZTI7S7853C9[];
extern  VTBL_ENTRY _ZTV7S7853C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C12;
extern VTBL_ENTRY _ZTI8S7853C12[];
extern  VTBL_ENTRY _ZTV8S7853C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C12[];
extern Class_Descriptor cd_S7853C6;
extern VTBL_ENTRY _ZTI7S7853C6[];
extern  VTBL_ENTRY _ZTV7S7853C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C6[];
static Base_Class bases_S7853C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7853C10,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7853C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7853C13,    ABISELECT(16,12), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7853C9,    ABISELECT(48,28), //bcp->offset
    26, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7853C12,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7853C6,    ABISELECT(32,20), //bcp->offset
    16, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7853C15[];
extern void _ZN8S7853C15D1Ev();
extern void _ZN8S7853C15D0Ev();
extern void ABISELECT(_ZTv0_n64_N8S7853C15D1Ev,_ZTv0_n32_N8S7853C15D1Ev)();
extern void ABISELECT(_ZThn32_N8S7853C15D1Ev,_ZThn20_N8S7853C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7853C15D0Ev,_ZTv0_n32_N8S7853C15D0Ev)();
extern void ABISELECT(_ZThn32_N8S7853C15D0Ev,_ZThn20_N8S7853C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7853C15[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  ABISELECT(12,8),
  0,
  ABISELECT(48,28),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C15[0]),
  (VTBL_ENTRY)&_ZN8S7853C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C15D0Ev,
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S7853C15[0]),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S7853C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C15D1Ev,_ZTv0_n32_N8S7853C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C15D0Ev,_ZTv0_n32_N8S7853C15D0Ev),
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7853C15[0]),
};
extern VTBL_ENTRY _ZTV8S7853C15[];
static  VTBL_ENTRY _tg__ZTV8S7853C10__8S7853C15[] = {
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C16__8S7853C15[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__8S7853C15[] = {
  -4,
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C13__A1__8S7853C15[] = {
  -4,
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
extern void _ZN7S7853C6D1Ev();
extern void _ZN7S7853C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7853C6__8S7853C15[] = {
  ABISELECT(-32,-20),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C6[0]),
  (VTBL_ENTRY)&_ZN7S7853C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C6D0Ev,
};
extern void _ZN8S7853C12D1Ev();
extern void _ZN8S7853C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C127S7853C6__8S7853C15[] = {
  ABISELECT(-32,-20),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
  (VTBL_ENTRY)&_ZN8S7853C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C127S7853C6__A2__8S7853C15[] = {
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C127S7853C6__8S7853C15[] = {
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__7S7853C6__8S7853C15[] = {
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7853C6[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C15[] = {
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
static  VTT_ENTRY vtt_S7853C15[] = {
  {&(_ZTV8S7853C15[10]),  10,32},
  {&(_ZTV8S7853C15[32]),  32,32},
  {&(_ZTV8S7853C15[10]),  10,32},
  {&(_ZTV8S7853C15[16]),  16,32},
  {&(_ZTV8S7853C15[24]),  24,32},
  {&(_ZTV8S7853C15[32]),  32,32},
  {&(_tg__ZTV8S7853C10__8S7853C15[4]),  4,4},
  {&(_tg__ZTV8S7853C16__8S7853C15[3]),  3,3},
  {&(_tg__ZTV8S7853C13__8S7853C15[4]),  4,4},
  {&(_tg__ZTV8S7853C108S7853C13__A1__8S7853C15[4]),  4,4},
  {&(_tg__ZTV7S7853C6__8S7853C15[7]),  7,9},
  {&(_tg__ZTV8S7853C127S7853C6__8S7853C15[7]),  7,9},
  {&(_tg__ZTV8S7853C108S7853C127S7853C6__A2__8S7853C15[4]),  4,4},
  {&(_tg__ZTV7S7853C9__8S7853C127S7853C6__8S7853C15[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C127S7853C6__8S7853C15[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C6__8S7853C15[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C6__8S7853C15[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C15[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C15[6]),  6,6},
};
extern VTBL_ENTRY _ZTI8S7853C15[];
extern  VTBL_ENTRY _ZTV8S7853C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C15[];
static VTBL_ENTRY alt_thunk_names53[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7853C15D0Ev,_ZTv0_n32_N8S7853C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7853C15D0Ev,_ZThn20_N8S7853C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7853C15D1Ev,_ZTv0_n32_N8S7853C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7853C15D1Ev,_ZThn20_N8S7853C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7853C15 = {  "S7853C15", // class name
  bases_S7853C15, 20,
  &(vtc_S7853C15[0]), // expected_vtbl_contents
  &(vtt_S7853C15[0]), // expected_vtt_contents
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI8S7853C15),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S7853C15),32, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7853C15),19, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names53,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7853C17  : virtual S7853C12 , S7853C13 , S7853C9 , S7856C12 {
  virtual  ~S7853C17(); // _ZN8S7853C17D2Ev
  S7853C17(); // tgen
};
//SIG(-1 S7853C17) C1{ VBC2{ BC3{ m} VBC4{ m} VBC5{ m} BC6{ VBC4 BC3 VBC5} VBC7{ BC4 VBC6 VBC3} vd} BC8{ BC5 BC3 BC6 Fi} BC7 BC5 vd}


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

static void Test_S7853C17()
{
  extern Class_Descriptor cd_S7853C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[8];
    init_test(&cd_S7853C17, buf);
    S7853C17 *dp, &lv = *(dp=new (buf) S7853C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,28), "sizeof(S7853C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7853C17)");
    /*is_ambiguous_... S7853C12::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C12*), ABISELECT(32,16), "S7853C17");
    /*is_ambiguous_... S7853C12::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C12*), 0, "S7853C17");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C12*), 0, "S7853C17");
    /*is_ambiguous_... S7853C17::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*), 0, "S7853C17");
    check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C13*), 0, "S7853C17");
    check_base_class_offset(lv, (S7856C12*)(S7853C12*), ABISELECT(33,17), "S7853C17");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C12*), ABISELECT(33,17), "S7853C17");
    /*is_ambiguous_... S7853C17::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*), ABISELECT(33,17), "S7853C17");
    check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C13*), ABISELECT(33,17), "S7853C17");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C12*), ABISELECT(24,12), "S7853C17");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C12*), ABISELECT(24,12), "S7853C17");
    /*is_ambiguous_... S7853C17::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C9*), ABISELECT(40,20), "S7853C17");
    /*is_ambiguous_... S7853C17::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*), ABISELECT(40,20), "S7853C17");
    /*is_ambiguous_... S7853C17::S7853C9 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C9*), ABISELECT(40,20), "S7853C17");
    /*is_ambiguous_... S7853C17::S7853C9 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C9*), ABISELECT(40,20), "S7853C17");
    /*is_ambiguous_... S7853C17::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C9*), ABISELECT(48,24), "S7853C17");
    /*is_ambiguous_... S7853C17::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C9*), ABISELECT(48,24), "S7853C17");
    check_base_class_offset(lv, (S7853C9*)(S7853C12*), ABISELECT(40,20), "S7853C17");
    check_base_class_offset(lv, (S7853C12*), ABISELECT(24,12), "S7853C17");
    /*is_ambiguous_... S7853C13::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C13*), 0, "S7853C17");
    /*is_ambiguous_... S7853C13::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C13*), ABISELECT(8,4), "S7853C17");
    check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C13*), 0, "S7853C17");
    check_base_class_offset(lv, (S7853C10*)(S7853C13*), 0, "S7853C17");
    check_base_class_offset(lv, (S7853C13*), 0, "S7853C17");
    /*is_ambiguous_... S7853C17::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C9*), ABISELECT(16,8), "S7853C17");
    /*is_ambiguous_... S7853C17::S7853C9 */ AMB_check_base_class_offset(lv, (S7853C9*), ABISELECT(16,8), "S7853C17");
    /*is_ambiguous_... S7853C17::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), ABISELECT(24,12), "S7853C17");
    test_class_info(&lv, &cd_S7853C17);
    dp->~S7853C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7853C17(Test_S7853C17, "S7853C17", ABISELECT(56,28));

#else // __cplusplus

extern void _ZN8S7853C17C1Ev();
extern void _ZN8S7853C17D2Ev();
Name_Map name_map_S7853C17[] = {
  NSPAIR(_ZN8S7853C17C1Ev),
  NSPAIR(_ZN8S7853C17D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C9;
extern VTBL_ENTRY _ZTI7S7853C9[];
extern  VTBL_ENTRY _ZTV7S7853C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C9[];
extern Class_Descriptor cd_S7853C12;
extern VTBL_ENTRY _ZTI8S7853C12[];
extern  VTBL_ENTRY _ZTV8S7853C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C13;
extern VTBL_ENTRY _ZTI8S7853C13[];
extern  VTBL_ENTRY _ZTV8S7853C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C13[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7853C9;
extern VTBL_ENTRY _ZTI7S7853C9[];
extern  VTBL_ENTRY _ZTV7S7853C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
static Base_Class bases_S7853C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(33,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7853C9,    ABISELECT(40,20), //bcp->offset
    26, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S7853C12,    ABISELECT(24,12), //bcp->offset
    16, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7853C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7853C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7853C9,    ABISELECT(16,8), //bcp->offset
    10, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7853C17[];
extern void _ZN8S7853C17D1Ev();
extern void _ZN8S7853C17D0Ev();
extern void ABISELECT(_ZTv0_n64_N8S7853C17D1Ev,_ZTv0_n32_N8S7853C17D1Ev)();
extern void ABISELECT(_ZThn24_N8S7853C17D1Ev,_ZThn12_N8S7853C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7853C17D0Ev,_ZTv0_n32_N8S7853C17D0Ev)();
extern void ABISELECT(_ZThn24_N8S7853C17D0Ev,_ZThn12_N8S7853C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7853C17[] = {
  ABISELECT(48,24),
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(24,12),
  ABISELECT(33,17),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
  (VTBL_ENTRY)&_ZN8S7853C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C17D0Ev,
  ABISELECT(32,16),
  ABISELECT(24,12),
  ABISELECT(17,9),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
  ABISELECT(-24,-12),
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(9,5),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C17D1Ev,_ZTv0_n32_N8S7853C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C17D0Ev,_ZTv0_n32_N8S7853C17D0Ev),
  ABISELECT(8,4),
  0,
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
};
extern VTBL_ENTRY _ZTV8S7853C17[];
static  VTBL_ENTRY _tg__ZTV8S7853C13__8S7853C17[] = {
  ABISELECT(33,17),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C13__A2__8S7853C17[] = {
  ABISELECT(33,17),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__A__8S7853C17[] = {
  ABISELECT(32,16),
  ABISELECT(24,12),
  ABISELECT(17,9),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__7S7853C9__A__8S7853C17[] = {
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
extern void _ZN8S7853C12D1Ev();
extern void _ZN8S7853C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C12__8S7853C17[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(9,5),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
  (VTBL_ENTRY)&_ZN8S7853C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C12__8S7853C17[] = {
  ABISELECT(9,5),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C12__8S7853C17[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C17[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__A1__8S7853C17[] = {
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTT_ENTRY vtt_S7853C17[] = {
  {&(_ZTV8S7853C17[8]),  8,32},
  {&(_tg__ZTV8S7853C13__8S7853C17[4]),  4,4},
  {&(_tg__ZTV8S7853C108S7853C13__A2__8S7853C17[4]),  4,4},
  {&(_tg__ZTV7S7853C9__A__8S7853C17[6]),  6,6},
  {&(_tg__ZTV8S7853C10__7S7853C9__A__8S7853C17[4]),  4,4},
  {&(_ZTV8S7853C17[24]),  24,32},
  {&(_ZTV8S7853C17[32]),  32,32},
  {&(_ZTV8S7853C17[32]),  32,32},
  {&(_ZTV8S7853C17[16]),  16,32},
  {&(_tg__ZTV8S7853C12__8S7853C17[7]),  7,9},
  {&(_tg__ZTV8S7853C108S7853C12__8S7853C17[4]),  4,4},
  {&(_tg__ZTV7S7853C9__8S7853C12__8S7853C17[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C12__8S7853C17[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C17[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C17[6]),  6,6},
  {&(_tg__ZTV8S7853C10__A1__8S7853C17[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S7853C17[];
extern  VTBL_ENTRY _ZTV8S7853C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C17[];
static VTBL_ENTRY alt_thunk_names54[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7853C17D0Ev,_ZTv0_n32_N8S7853C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7853C17D0Ev,_ZThn12_N8S7853C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7853C17D1Ev,_ZTv0_n32_N8S7853C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7853C17D1Ev,_ZThn12_N8S7853C17D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7853C17 = {  "S7853C17", // class name
  bases_S7853C17, 19,
  &(vtc_S7853C17[0]), // expected_vtbl_contents
  &(vtt_S7853C17[0]), // expected_vtt_contents
  ABISELECT(56,28), // object size
  NSPAIRA(_ZTI8S7853C17),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S7853C17),32, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7853C17),16, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names54,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7853C4  : virtual S7853C5 , virtual S7856C9_nt , virtual S7853C15 , S7853C17 {
  virtual  ~S7853C4(); // _ZN7S7853C4D2Ev
  S7853C4(); // tgen
};
//SIG(-1 S7853C4) C1{ VBC2{ VBC3{ VBC4{ m} VBC5{ m} VBC6{ BC4 VBC7{ VBC4 BC5 VBC8{ m}} VBC5} BC8 BC9{ BC5 VBC4 VBC8 BC7 VBC6 vd} vd} VBC10{ BC8 BC5 BC7 Fi} VBC9 vd Fi[2]} VBC11{ m} VBC12{ VBC7 VBC13{ VBC5} VBC10 BC8 VBC3 vd Fi} BC14{ VBC9 BC10 BC6 BC8 vd} vd}


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

static void Test_S7853C4()
{
  extern Class_Descriptor cd_S7853C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,16)];
    init_test(&cd_S7853C4, buf);
    S7853C4 *dp, &lv = *(dp=new (buf) S7853C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,60), "sizeof(S7853C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7853C4)");
    /*is_ambiguous_... S7853C6::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C6*), 0, "S7853C4");
    /*is_ambiguous_... S7853C4::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*), 0, "S7853C4");
    /*is_ambiguous_... S7853C12::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C12*)(S7853C6*), 0, "S7853C4");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C12*)(S7853C6*), 0, "S7853C4");
    /*is_ambiguous_... S7853C4::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C13*), 0, "S7853C4");
    /*is_ambiguous_... S7853C4::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C12*), 0, "S7853C4");
    /*is_ambiguous_... S7853C4::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C12*), 0, "S7853C4");
    check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C13*)(S7853C17*), 0, "S7853C4");
    /*is_ambiguous_... S7853C6::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C6*), ABISELECT(57,33), "S7853C4");
    /*is_ambiguous_... S7853C4::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C9*), ABISELECT(57,33), "S7853C4");
    check_base_class_offset(lv, (S7856C15*)(S7853C16*), ABISELECT(57,33), "S7853C4");
    /*is_ambiguous_... S7853C17::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C9*)(S7853C17*), ABISELECT(57,33), "S7853C4");
    /*is_ambiguous_... S7853C4::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C9*), ABISELECT(32,16), "S7853C4");
    /*is_ambiguous_... S7853C4::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*), ABISELECT(32,16), "S7853C4");
    /*is_ambiguous_... S7853C4::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*), ABISELECT(57,33), "S7853C4");
    check_base_class_offset(lv, (S7856C12*)(S7853C12*)(S7853C6*), ABISELECT(57,33), "S7853C4");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C12*)(S7853C6*), ABISELECT(57,33), "S7853C4");
    /*is_ambiguous_... S7853C4::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C13*), ABISELECT(57,33), "S7853C4");
    /*is_ambiguous_... S7853C4::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C12*), ABISELECT(57,33), "S7853C4");
    /*is_ambiguous_... S7853C4::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C12*), ABISELECT(57,33), "S7853C4");
    check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C13*)(S7853C17*), ABISELECT(57,33), "S7853C4");
    /*is_ambiguous_... S7853C4::S7853C9 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C9*), ABISELECT(32,16), "S7853C4");
    /*is_ambiguous_... S7853C15::S7853C10 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C15*), ABISELECT(32,16), "S7853C4");
    /*is_ambiguous_... S7853C17::S7853C9 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C9*)(S7853C17*), ABISELECT(32,16), "S7853C4");
    check_base_class_offset(lv, (S7853C9*)(S7853C6*), ABISELECT(32,16), "S7853C4");
    check_base_class_offset(lv, (S7853C9*)(S7853C12*)(S7853C6*), ABISELECT(32,16), "S7853C4");
    /*is_ambiguous_... S7853C4::S7853C12 */ AMB_check_base_class_offset(lv, (S7853C9*)(S7853C12*), ABISELECT(32,16), "S7853C4");
    /*is_ambiguous_... S7853C6::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C6*), ABISELECT(48,28), "S7853C4");
    /*is_ambiguous_... S7853C12::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C12*)(S7853C6*), ABISELECT(56,32), "S7853C4");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C12*)(S7853C6*), ABISELECT(48,28), "S7853C4");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C12*)(S7853C6*), ABISELECT(48,28), "S7853C4");
    check_base_class_offset(lv, (S7853C12*)(S7853C6*), ABISELECT(48,28), "S7853C4");
    check_base_class_offset(lv, (S7853C6*)(S7853C5*), ABISELECT(48,28), "S7853C4");
    check_base_class_offset(lv, (S7853C6*)(S7853C15*), ABISELECT(48,28), "S7853C4");
    /*is_ambiguous_... S7853C4::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C13*), ABISELECT(64,36), "S7853C4");
    /*is_ambiguous_... S7853C4::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C13*), ABISELECT(72,40), "S7853C4");
    /*is_ambiguous_... S7853C4::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C13*), ABISELECT(64,36), "S7853C4");
    /*is_ambiguous_... S7853C4::S7853C13 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C13*), ABISELECT(64,36), "S7853C4");
    check_base_class_offset(lv, (S7853C13*)(S7853C5*), ABISELECT(64,36), "S7853C4");
    check_base_class_offset(lv, (S7853C13*)(S7853C15*), ABISELECT(64,36), "S7853C4");
    /*is_ambiguous_... S7853C4::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C12*), ABISELECT(88,48), "S7853C4");
    /*is_ambiguous_... S7853C4::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C12*), ABISELECT(80,44), "S7853C4");
    /*is_ambiguous_... S7853C4::S7853C12 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C12*), ABISELECT(80,44), "S7853C4");
    /*is_ambiguous_... S7853C5::S7853C12 */ AMB_check_base_class_offset(lv, (S7853C12*)(S7853C5*), ABISELECT(80,44), "S7853C4");
    check_base_class_offset(lv, (S7853C12*)(S7853C17*), ABISELECT(80,44), "S7853C4");
    check_base_class_offset(lv, (S7853C5*), ABISELECT(32,16), "S7853C4");
    check_base_class_offset(lv, (S7856C9_nt*), 0, "S7853C4");
    check_base_class_offset(lv, (S7853C16*)(S7853C15*), ABISELECT(96,52), "S7853C4");
    /*is_ambiguous_... S7853C15::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C15*), ABISELECT(96,52), "S7853C4");
    check_base_class_offset(lv, (S7853C15*), ABISELECT(96,52), "S7853C4");
    /*is_ambiguous_... S7853C13::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C13*)(S7853C17*), 0, "S7853C4");
    /*is_ambiguous_... S7853C13::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C13*)(S7853C17*), ABISELECT(8,4), "S7853C4");
    check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C13*)(S7853C17*), 0, "S7853C4");
    check_base_class_offset(lv, (S7853C10*)(S7853C13*)(S7853C17*), 0, "S7853C4");
    check_base_class_offset(lv, (S7853C13*)(S7853C17*), 0, "S7853C4");
    /*is_ambiguous_... S7853C17::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C9*)(S7853C17*), ABISELECT(16,8), "S7853C4");
    /*is_ambiguous_... S7853C17::S7853C9 */ AMB_check_base_class_offset(lv, (S7853C9*)(S7853C17*), ABISELECT(16,8), "S7853C4");
    /*is_ambiguous_... S7853C17::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C17*), ABISELECT(24,12), "S7853C4");
    check_base_class_offset(lv, (S7853C17*), 0, "S7853C4");
    test_class_info(&lv, &cd_S7853C4);
    dp->~S7853C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7853C4(Test_S7853C4, "S7853C4", ABISELECT(112,60));

#else // __cplusplus

extern void _ZN7S7853C4C1Ev();
extern void _ZN7S7853C4D2Ev();
Name_Map name_map_S7853C4[] = {
  NSPAIR(_ZN7S7853C4C1Ev),
  NSPAIR(_ZN7S7853C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C9;
extern VTBL_ENTRY _ZTI7S7853C9[];
extern  VTBL_ENTRY _ZTV7S7853C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C12;
extern VTBL_ENTRY _ZTI8S7853C12[];
extern  VTBL_ENTRY _ZTV8S7853C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C12[];
extern Class_Descriptor cd_S7853C6;
extern VTBL_ENTRY _ZTI7S7853C6[];
extern  VTBL_ENTRY _ZTV7S7853C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C6[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C13;
extern VTBL_ENTRY _ZTI8S7853C13[];
extern  VTBL_ENTRY _ZTV8S7853C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C13[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C12;
extern VTBL_ENTRY _ZTI8S7853C12[];
extern  VTBL_ENTRY _ZTV8S7853C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C12[];
extern Class_Descriptor cd_S7853C5;
extern VTBL_ENTRY _ZTI7S7853C5[];
extern  VTBL_ENTRY _ZTV7S7853C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C5[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7853C16;
extern VTBL_ENTRY _ZTI8S7853C16[];
extern  VTBL_ENTRY _ZTV8S7853C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C16[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7853C15;
extern VTBL_ENTRY _ZTI8S7853C15[];
extern  VTBL_ENTRY _ZTV8S7853C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C13;
extern VTBL_ENTRY _ZTI8S7853C13[];
extern  VTBL_ENTRY _ZTV8S7853C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C13[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7853C9;
extern VTBL_ENTRY _ZTI7S7853C9[];
extern  VTBL_ENTRY _ZTV7S7853C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7853C17;
extern VTBL_ENTRY _ZTI8S7853C17[];
extern  VTBL_ENTRY _ZTV8S7853C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C17[];
static Base_Class bases_S7853C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(57,33), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(57,33), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7853C10,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7853C9,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7853C12,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7853C6,    ABISELECT(48,28), //bcp->offset
    35, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7853C13,    ABISELECT(64,36), //bcp->offset
    45, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7853C12,    ABISELECT(80,44), //bcp->offset
    49, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7853C5,    ABISELECT(32,16), //bcp->offset
    22, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7853C16,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7853C15,    ABISELECT(96,52), //bcp->offset
    59, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S7853C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7853C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S7853C9,    ABISELECT(16,8), //bcp->offset
    16, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7853C17,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7853C4[];
extern void _ZN7S7853C4D1Ev();
extern void _ZN7S7853C4D0Ev();
extern void ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev)();
extern void ABISELECT(_ZThn32_N7S7853C4D1Ev,_ZThn16_N7S7853C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev)();
extern void ABISELECT(_ZThn32_N7S7853C4D0Ev,_ZThn16_N7S7853C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev)();
extern void ABISELECT(_ZThn48_N7S7853C4D1Ev,_ZThn28_N7S7853C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev)();
extern void ABISELECT(_ZThn48_N7S7853C4D0Ev,_ZThn28_N7S7853C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev)();
extern void ABISELECT(_ZThn80_N7S7853C4D1Ev,_ZThn44_N7S7853C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev)();
extern void ABISELECT(_ZThn80_N7S7853C4D0Ev,_ZThn44_N7S7853C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev)();
extern void ABISELECT(_ZThn96_N7S7853C4D1Ev,_ZThn52_N7S7853C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev)();
extern void ABISELECT(_ZThn96_N7S7853C4D0Ev,_ZThn52_N7S7853C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7853C4[] = {
  ABISELECT(96,52),
  ABISELECT(96,52),
  0,
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(57,33),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&_ZN7S7853C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C4D0Ev,
  ABISELECT(41,25),
  ABISELECT(16,8),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  ABISELECT(-32,-16),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev),
  ABISELECT(-48,-28),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev),
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  ABISELECT(-80,-44),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev),
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-39,-19),
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-39,-19),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev),
};
extern VTBL_ENTRY _ZTV7S7853C4[];
extern void _ZN8S7853C17D1Ev();
extern void _ZN8S7853C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C17__7S7853C4[] = {
  ABISELECT(57,33),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
  (VTBL_ENTRY)&_ZN8S7853C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C138S7853C17__A1__7S7853C4[] = {
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C138S7853C17__A4__7S7853C4[] = {
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C17__A1__7S7853C4[] = {
  ABISELECT(41,25),
  ABISELECT(16,8),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__7S7853C98S7853C17__A1__7S7853C4[] = {
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7853C17D1Ev,_ZTv0_n32_N8S7853C17D1Ev)();
extern void ABISELECT(_ZThn80_N8S7853C17D1Ev,_ZThn44_N8S7853C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7853C17D0Ev,_ZTv0_n32_N8S7853C17D0Ev)();
extern void ABISELECT(_ZThn80_N8S7853C17D0Ev,_ZThn44_N8S7853C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C12__8S7853C17__7S7853C4[] = {
  ABISELECT(-80,-44),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C17D1Ev,_ZTv0_n32_N8S7853C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C17D0Ev,_ZTv0_n32_N8S7853C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C17__7S7853C4[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__A__8S7853C17__7S7853C4[] = {
  ABISELECT(41,25),
  ABISELECT(16,8),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
};
extern void _ZN7S7853C5D1Ev();
extern void _ZN7S7853C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7853C5__7S7853C4[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&_ZN7S7853C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C5D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev)();
extern void ABISELECT(_ZThn16_N7S7853C5D1Ev,_ZThn12_N7S7853C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev)();
extern void ABISELECT(_ZThn16_N7S7853C5D0Ev,_ZThn12_N7S7853C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C6__7S7853C5__7S7853C4[] = {
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__7S7853C5__7S7853C4[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev)();
extern void ABISELECT(_ZThn48_N7S7853C5D1Ev,_ZThn28_N7S7853C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev)();
extern void ABISELECT(_ZThn48_N7S7853C5D0Ev,_ZThn28_N7S7853C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__7S7853C5__7S7853C4[] = {
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev),
};
extern void _ZN7S7853C6D1Ev();
extern void _ZN7S7853C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7853C6__7S7853C4[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C6[0]),
  (VTBL_ENTRY)&_ZN7S7853C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C6D0Ev,
};
extern void _ZN8S7853C12D1Ev();
extern void _ZN8S7853C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C127S7853C6__7S7853C4[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
  (VTBL_ENTRY)&_ZN8S7853C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C127S7853C6__A1__7S7853C4[] = {
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C127S7853C6__7S7853C4[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__7S7853C6__7S7853C4[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7853C6[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__7S7853C4[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__7S7853C4[] = {
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__7S7853C4[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C13__A2__7S7853C4[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
extern void _ZN8S7853C12D1Ev();
extern void _ZN8S7853C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__7S7853C4[] = {
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
  (VTBL_ENTRY)&_ZN8S7853C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C12__A3__7S7853C4[] = {
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C12__A1__7S7853C4[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
};
extern void _ZN8S7853C15D1Ev();
extern void _ZN8S7853C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C15__7S7853C4[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-39,-19),
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-39,-19),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C15[0]),
  (VTBL_ENTRY)&_ZN8S7853C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C15__7S7853C4[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S7853C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__8S7853C15__7S7853C4[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7853C15[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7853C15D1Ev,_ZTv0_n32_N8S7853C15D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7853C15D0Ev,_ZTv0_n32_N8S7853C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7853C6__8S7853C15__7S7853C4[] = {
  ABISELECT(48,24),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S7853C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C15D1Ev,_ZTv0_n32_N8S7853C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C15D0Ev,_ZTv0_n32_N8S7853C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7853C16__7S7853C4[] = {
  ABISELECT(-39,-19),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C16[0]),
};
static  VTT_ENTRY vtt_S7853C4[] = {
  {&(_ZTV7S7853C4[14]),  14,72},
  {&(_tg__ZTV8S7853C17__7S7853C4[8]),  8,10},
  {&(_tg__ZTV8S7853C138S7853C17__A1__7S7853C4[4]),  4,4},
  {&(_tg__ZTV8S7853C108S7853C138S7853C17__A4__7S7853C4[4]),  4,4},
  {&(_tg__ZTV7S7853C98S7853C17__A1__7S7853C4[6]),  6,6},
  {&(_tg__ZTV8S7853C10__7S7853C98S7853C17__A1__7S7853C4[4]),  4,4},
  {&(_tg__ZTV8S7853C12__8S7853C17__7S7853C4[8]),  8,10},
  {&(_tg__ZTV7S7853C9__8S7853C17__7S7853C4[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C17__7S7853C4[6]),  6,6},
  {&(_tg__ZTV7S7853C9__A__8S7853C17__7S7853C4[6]),  6,6},
  {&(_ZTV7S7853C4[33]),  33,72},
  {&(_ZTV7S7853C4[43]),  43,72},
  {&(_ZTV7S7853C4[33]),  33,72},
  {&(_ZTV7S7853C4[33]),  33,72},
  {&(_ZTV7S7853C4[49]),  49,72},
  {&(_ZTV7S7853C4[57]),  57,72},
  {&(_ZTV7S7853C4[70]),  70,72},
  {&(_ZTV7S7853C4[70]),  70,72},
  {&(_ZTV7S7853C4[22]),  22,72},
  {&(_tg__ZTV7S7853C5__7S7853C4[10]),  10,12},
  {&(_tg__ZTV7S7853C6__7S7853C5__7S7853C4[8]),  8,10},
  {&(_tg__ZTV7S7853C5__7S7853C4[10]),  10,12},
  {&(_tg__ZTV7S7853C5__7S7853C4[10]),  10,12},
  {&(_tg__ZTV8S7853C13__7S7853C5__7S7853C4[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__7S7853C5__7S7853C4[8]),  8,10},
  {&(_tg__ZTV7S7853C6__7S7853C4[7]),  7,9},
  {&(_tg__ZTV8S7853C127S7853C6__7S7853C4[7]),  7,9},
  {&(_tg__ZTV8S7853C108S7853C127S7853C6__A1__7S7853C4[4]),  4,4},
  {&(_tg__ZTV7S7853C9__8S7853C127S7853C6__7S7853C4[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C127S7853C6__7S7853C4[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C6__7S7853C4[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C6__7S7853C4[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C4[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C4[6]),  6,6},
  {&(_tg__ZTV8S7853C10__7S7853C4[4]),  4,4},
  {&(_tg__ZTV8S7853C13__7S7853C4[4]),  4,4},
  {&(_tg__ZTV8S7853C108S7853C13__A2__7S7853C4[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__7S7853C4[7]),  7,9},
  {&(_tg__ZTV8S7853C108S7853C12__A3__7S7853C4[4]),  4,4},
  {&(_tg__ZTV7S7853C9__8S7853C12__A1__7S7853C4[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C12__A1__7S7853C4[6]),  6,6},
  {&(_tg__ZTV8S7853C15__7S7853C4[10]),  10,12},
  {&(_tg__ZTV7S7853C9__8S7853C15__7S7853C4[6]),  6,6},
  {&(_tg__ZTV8S7853C15__7S7853C4[10]),  10,12},
  {&(_tg__ZTV8S7853C13__8S7853C15__7S7853C4[4]),  4,4},
  {&(_tg__ZTV7S7853C6__8S7853C15__7S7853C4[8]),  8,10},
  {&(_tg__ZTV7S7853C9__8S7853C15__7S7853C4[6]),  6,6},
  {&(_tg__ZTV8S7853C16__7S7853C4[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7853C4[];
extern  VTBL_ENTRY _ZTV7S7853C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C4[];
static VTBL_ENTRY alt_thunk_names55[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7853C5D0Ev,_ZThn28_N7S7853C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7853C5D0Ev,_ZThn12_N7S7853C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7853C5D1Ev,_ZThn28_N7S7853C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7853C5D1Ev,_ZThn12_N7S7853C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7853C17D0Ev,_ZTv0_n32_N8S7853C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7853C17D0Ev,_ZThn44_N8S7853C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7853C17D1Ev,_ZTv0_n32_N8S7853C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7853C17D1Ev,_ZThn44_N8S7853C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7853C4D0Ev,_ZThn44_N7S7853C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7853C4D0Ev,_ZThn28_N7S7853C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7853C4D1Ev,_ZThn44_N7S7853C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7853C4D1Ev,_ZThn28_N7S7853C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7853C4D0Ev,_ZThn52_N7S7853C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7853C4D0Ev,_ZThn16_N7S7853C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7853C4D1Ev,_ZThn52_N7S7853C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7853C4D1Ev,_ZThn16_N7S7853C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7853C4 = {  "S7853C4", // class name
  bases_S7853C4, 36,
  &(vtc_S7853C4[0]), // expected_vtbl_contents
  &(vtt_S7853C4[0]), // expected_vtt_contents
  ABISELECT(112,60), // object size
  NSPAIRA(_ZTI7S7853C4),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7853C4),72, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7853C4),48, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names55,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7853C18  : S7856C9_nt , virtual S7856C24 , S7853C5 , virtual S7853C17 {
  virtual  ~S7853C18(); // _ZN8S7853C18D2Ev
  virtual void  v1(); // _ZN8S7853C182v1Ev
  S7853C18(); // tgen
};
//SIG(-1 S7853C18) C1{ BC2{ m} VBC3{ m} BC4{ VBC5{ VBC3 VBC6{ m} VBC7{ BC3 VBC8{ VBC3 BC6 VBC9{ m}} VBC6} BC9 BC10{ BC6 VBC3 VBC9 BC8 VBC7 vd} vd} VBC11{ BC9 BC6 BC8 Fi} VBC10 vd Fi[2]} VBC12{ VBC10 BC11 BC7 BC9 vd} vd v1}


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

static void Test_S7853C18()
{
  extern Class_Descriptor cd_S7853C18;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,14)];
    init_test(&cd_S7853C18, buf);
    S7853C18 *dp, &lv = *(dp=new (buf) S7853C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,52), "sizeof(S7853C18)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7853C18)");
    check_base_class_offset(lv, (S7856C9_nt*), 0, "S7853C18");
    /*is_ambiguous_... S7853C18::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), ABISELECT(16,12), "S7853C18");
    /*is_ambiguous_... S7853C6::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C6*), ABISELECT(16,12), "S7853C18");
    /*is_ambiguous_... S7853C18::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*), ABISELECT(16,12), "S7853C18");
    /*is_ambiguous_... S7853C12::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C12*)(S7853C6*), ABISELECT(16,12), "S7853C18");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C12*)(S7853C6*), ABISELECT(16,12), "S7853C18");
    /*is_ambiguous_... S7853C18::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C13*), ABISELECT(16,12), "S7853C18");
    /*is_ambiguous_... S7853C18::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C12*), ABISELECT(16,12), "S7853C18");
    /*is_ambiguous_... S7853C18::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C12*), ABISELECT(16,12), "S7853C18");
    check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C13*)(S7853C17*), ABISELECT(16,12), "S7853C18");
    /*is_ambiguous_... S7853C6::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C6*), ABISELECT(25,17), "S7853C18");
    /*is_ambiguous_... S7853C18::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C9*), ABISELECT(25,17), "S7853C18");
    /*is_ambiguous_... S7853C17::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C9*)(S7853C17*), ABISELECT(25,17), "S7853C18");
    /*is_ambiguous_... S7853C18::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C9*), 0, "S7853C18");
    /*is_ambiguous_... S7853C18::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*), 0, "S7853C18");
    /*is_ambiguous_... S7853C18::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*), 0, "S7853C18");
    check_base_class_offset(lv, (S7856C12*)(S7853C12*)(S7853C6*), 0, "S7853C18");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C12*)(S7853C6*), 0, "S7853C18");
    /*is_ambiguous_... S7853C18::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C13*), 0, "S7853C18");
    /*is_ambiguous_... S7853C18::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C12*), 0, "S7853C18");
    /*is_ambiguous_... S7853C18::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C12*), 0, "S7853C18");
    check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C13*)(S7853C17*), 0, "S7853C18");
    /*is_ambiguous_... S7853C18::S7853C9 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C9*), 0, "S7853C18");
    /*is_ambiguous_... S7853C17::S7853C9 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C9*)(S7853C17*), 0, "S7853C18");
    check_base_class_offset(lv, (S7853C9*)(S7853C6*), 0, "S7853C18");
    check_base_class_offset(lv, (S7853C9*)(S7853C12*)(S7853C6*), 0, "S7853C18");
    /*is_ambiguous_... S7853C18::S7853C12 */ AMB_check_base_class_offset(lv, (S7853C9*)(S7853C12*), 0, "S7853C18");
    /*is_ambiguous_... S7853C6::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C6*), ABISELECT(16,12), "S7853C18");
    /*is_ambiguous_... S7853C12::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C12*)(S7853C6*), ABISELECT(24,16), "S7853C18");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C12*)(S7853C6*), ABISELECT(16,12), "S7853C18");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C12*)(S7853C6*), ABISELECT(16,12), "S7853C18");
    check_base_class_offset(lv, (S7853C12*)(S7853C6*), ABISELECT(16,12), "S7853C18");
    check_base_class_offset(lv, (S7853C6*)(S7853C5*), ABISELECT(16,12), "S7853C18");
    /*is_ambiguous_... S7853C18::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C13*), ABISELECT(32,20), "S7853C18");
    /*is_ambiguous_... S7853C18::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C13*), ABISELECT(40,24), "S7853C18");
    /*is_ambiguous_... S7853C18::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C13*), ABISELECT(32,20), "S7853C18");
    /*is_ambiguous_... S7853C18::S7853C13 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C13*), ABISELECT(32,20), "S7853C18");
    check_base_class_offset(lv, (S7853C13*)(S7853C5*), ABISELECT(32,20), "S7853C18");
    /*is_ambiguous_... S7853C18::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C12*), ABISELECT(56,32), "S7853C18");
    /*is_ambiguous_... S7853C18::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C12*), ABISELECT(48,28), "S7853C18");
    /*is_ambiguous_... S7853C18::S7853C12 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C12*), ABISELECT(48,28), "S7853C18");
    /*is_ambiguous_... S7853C5::S7853C12 */ AMB_check_base_class_offset(lv, (S7853C12*)(S7853C5*), ABISELECT(48,28), "S7853C18");
    check_base_class_offset(lv, (S7853C12*)(S7853C17*), ABISELECT(48,28), "S7853C18");
    check_base_class_offset(lv, (S7853C5*), 0, "S7853C18");
    /*is_ambiguous_... S7853C13::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C13*)(S7853C17*), ABISELECT(64,36), "S7853C18");
    /*is_ambiguous_... S7853C13::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C13*)(S7853C17*), ABISELECT(72,40), "S7853C18");
    check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C13*)(S7853C17*), ABISELECT(64,36), "S7853C18");
    check_base_class_offset(lv, (S7853C10*)(S7853C13*)(S7853C17*), ABISELECT(64,36), "S7853C18");
    check_base_class_offset(lv, (S7853C13*)(S7853C17*), ABISELECT(64,36), "S7853C18");
    /*is_ambiguous_... S7853C17::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C9*)(S7853C17*), ABISELECT(80,44), "S7853C18");
    /*is_ambiguous_... S7853C17::S7853C9 */ AMB_check_base_class_offset(lv, (S7853C9*)(S7853C17*), ABISELECT(80,44), "S7853C18");
    /*is_ambiguous_... S7853C17::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C17*), ABISELECT(88,48), "S7853C18");
    check_base_class_offset(lv, (S7853C17*), ABISELECT(64,36), "S7853C18");
    test_class_info(&lv, &cd_S7853C18);
    dp->~S7853C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7853C18(Test_S7853C18, "S7853C18", ABISELECT(96,52));

#else // __cplusplus

extern void _ZN8S7853C18C1Ev();
extern void _ZN8S7853C18D2Ev();
Name_Map name_map_S7853C18[] = {
  NSPAIR(_ZN8S7853C18C1Ev),
  NSPAIR(_ZN8S7853C18D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C9;
extern VTBL_ENTRY _ZTI7S7853C9[];
extern  VTBL_ENTRY _ZTV7S7853C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C12;
extern VTBL_ENTRY _ZTI8S7853C12[];
extern  VTBL_ENTRY _ZTV8S7853C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C12[];
extern Class_Descriptor cd_S7853C6;
extern VTBL_ENTRY _ZTI7S7853C6[];
extern  VTBL_ENTRY _ZTV7S7853C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C6[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C13;
extern VTBL_ENTRY _ZTI8S7853C13[];
extern  VTBL_ENTRY _ZTV8S7853C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C13[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C12;
extern VTBL_ENTRY _ZTI8S7853C12[];
extern  VTBL_ENTRY _ZTV8S7853C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C12[];
extern Class_Descriptor cd_S7853C5;
extern VTBL_ENTRY _ZTI7S7853C5[];
extern  VTBL_ENTRY _ZTV7S7853C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C5[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C13;
extern VTBL_ENTRY _ZTI8S7853C13[];
extern  VTBL_ENTRY _ZTV8S7853C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C13[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7853C9;
extern VTBL_ENTRY _ZTI7S7853C9[];
extern  VTBL_ENTRY _ZTV7S7853C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7853C17;
extern VTBL_ENTRY _ZTI8S7853C17[];
extern  VTBL_ENTRY _ZTV8S7853C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C17[];
static Base_Class bases_S7853C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    ABISELECT(25,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7853C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S7853C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7853C12,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7853C6,    ABISELECT(16,12), //bcp->offset
    14, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7853C13,    ABISELECT(32,20), //bcp->offset
    24, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7853C12,    ABISELECT(48,28), //bcp->offset
    28, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S7853C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S7853C13,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S7853C9,    ABISELECT(80,44), //bcp->offset
    49, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7853C17,    ABISELECT(64,36), //bcp->offset
    38, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7853C18[];
extern void _ZN8S7853C18D1Ev();
extern void _ZN8S7853C18D0Ev();
extern void _ZN8S7853C182v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S7853C18D1Ev,_ZTv0_n32_N8S7853C18D1Ev)();
extern void ABISELECT(_ZThn16_N8S7853C18D1Ev,_ZThn12_N8S7853C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7853C18D0Ev,_ZTv0_n32_N8S7853C18D0Ev)();
extern void ABISELECT(_ZThn16_N8S7853C18D0Ev,_ZThn12_N8S7853C18D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7853C18D1Ev,_ZTv0_n32_N8S7853C18D1Ev)();
extern void ABISELECT(_ZThn48_N8S7853C18D1Ev,_ZThn28_N8S7853C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7853C18D0Ev,_ZTv0_n32_N8S7853C18D0Ev)();
extern void ABISELECT(_ZThn48_N8S7853C18D0Ev,_ZThn28_N8S7853C18D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7853C18D1Ev,_ZTv0_n36_N8S7853C18D1Ev)();
extern void ABISELECT(_ZThn64_N8S7853C18D1Ev,_ZThn36_N8S7853C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7853C18D0Ev,_ZTv0_n36_N8S7853C18D0Ev)();
extern void ABISELECT(_ZThn64_N8S7853C18D0Ev,_ZThn36_N8S7853C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7853C18[] = {
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C18[0]),
  (VTBL_ENTRY)&_ZN8S7853C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C18D0Ev,
  (VTBL_ENTRY)&_ZN8S7853C182v1Ev,
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  0,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S7853C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C18D1Ev,_ZTv0_n32_N8S7853C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C18D0Ev,_ZTv0_n32_N8S7853C18D0Ev),
  ABISELECT(-32,-20),
  ABISELECT(-16,-8),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S7853C18[0]),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7853C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C18D1Ev,_ZTv0_n32_N8S7853C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C18D0Ev,_ZTv0_n32_N8S7853C18D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-16,-8),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S7853C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7853C18D1Ev,_ZTv0_n36_N8S7853C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7853C18D0Ev,_ZTv0_n36_N8S7853C18D0Ev),
  ABISELECT(-55,-27),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-64,-32),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S7853C18[0]),
};
extern VTBL_ENTRY _ZTV8S7853C18[];
extern void _ZN7S7853C5D1Ev();
extern void _ZN7S7853C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7853C5__8S7853C18[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&_ZN7S7853C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C5D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev)();
extern void ABISELECT(_ZThn16_N7S7853C5D1Ev,_ZThn12_N7S7853C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev)();
extern void ABISELECT(_ZThn16_N7S7853C5D0Ev,_ZThn12_N7S7853C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C6__7S7853C5__8S7853C18[] = {
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  0,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__7S7853C5__8S7853C18[] = {
  ABISELECT(-32,-20),
  ABISELECT(-16,-8),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev)();
extern void ABISELECT(_ZThn48_N7S7853C5D1Ev,_ZThn28_N7S7853C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev)();
extern void ABISELECT(_ZThn48_N7S7853C5D0Ev,_ZThn28_N7S7853C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__7S7853C5__8S7853C18[] = {
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev),
};
extern void _ZN7S7853C6D1Ev();
extern void _ZN7S7853C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7853C6__8S7853C18[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C6[0]),
  (VTBL_ENTRY)&_ZN7S7853C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C6D0Ev,
};
extern void _ZN8S7853C12D1Ev();
extern void _ZN8S7853C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C127S7853C6__8S7853C18[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
  (VTBL_ENTRY)&_ZN8S7853C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C127S7853C6__A1__8S7853C18[] = {
  ABISELECT(-16,-12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C127S7853C6__8S7853C18[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__7S7853C6__8S7853C18[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7853C6[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C18[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__8S7853C18[] = {
  0,
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__8S7853C18[] = {
  ABISELECT(-32,-20),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C13__A2__8S7853C18[] = {
  ABISELECT(-32,-20),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
extern void _ZN8S7853C12D1Ev();
extern void _ZN8S7853C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__8S7853C18[] = {
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
  (VTBL_ENTRY)&_ZN8S7853C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C12__A3__8S7853C18[] = {
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C12__A1__8S7853C18[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(16,12),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
};
extern void _ZN8S7853C17D1Ev();
extern void _ZN8S7853C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C17__8S7853C18[] = {
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-16,-8),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
  (VTBL_ENTRY)&_ZN8S7853C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C138S7853C17__A1__8S7853C18[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C138S7853C17__A4__8S7853C18[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C17__A1__8S7853C18[] = {
  ABISELECT(-55,-27),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-64,-32),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__7S7853C98S7853C17__A1__8S7853C18[] = {
  0,
  ABISELECT(16,12),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7853C17D1Ev,_ZTv0_n32_N8S7853C17D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7853C17D0Ev,_ZTv0_n32_N8S7853C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7853C12__8S7853C17__8S7853C18[] = {
  ABISELECT(16,8),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C17D1Ev,_ZTv0_n32_N8S7853C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C17D0Ev,_ZTv0_n32_N8S7853C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C17__8S7853C18[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(16,12),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__A__8S7853C17__8S7853C18[] = {
  ABISELECT(-55,-27),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-64,-32),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
};
static  VTT_ENTRY vtt_S7853C18[] = {
  {&(_ZTV8S7853C18[11]),  11,55},
  {&(_tg__ZTV7S7853C5__8S7853C18[10]),  10,12},
  {&(_tg__ZTV7S7853C6__7S7853C5__8S7853C18[8]),  8,10},
  {&(_tg__ZTV7S7853C5__8S7853C18[10]),  10,12},
  {&(_tg__ZTV7S7853C5__8S7853C18[10]),  10,12},
  {&(_tg__ZTV8S7853C13__7S7853C5__8S7853C18[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__7S7853C5__8S7853C18[8]),  8,10},
  {&(_ZTV8S7853C18[22]),  22,55},
  {&(_ZTV8S7853C18[11]),  11,55},
  {&(_ZTV8S7853C18[11]),  11,55},
  {&(_ZTV8S7853C18[28]),  28,55},
  {&(_ZTV8S7853C18[36]),  36,55},
  {&(_ZTV8S7853C18[47]),  47,55},
  {&(_ZTV8S7853C18[55]),  55,55},
  {&(_tg__ZTV7S7853C6__8S7853C18[7]),  7,9},
  {&(_tg__ZTV8S7853C127S7853C6__8S7853C18[7]),  7,9},
  {&(_tg__ZTV8S7853C108S7853C127S7853C6__A1__8S7853C18[4]),  4,4},
  {&(_tg__ZTV7S7853C9__8S7853C127S7853C6__8S7853C18[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C127S7853C6__8S7853C18[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C6__8S7853C18[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C6__8S7853C18[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C18[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C18[6]),  6,6},
  {&(_tg__ZTV8S7853C10__8S7853C18[4]),  4,4},
  {&(_tg__ZTV8S7853C13__8S7853C18[4]),  4,4},
  {&(_tg__ZTV8S7853C108S7853C13__A2__8S7853C18[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__8S7853C18[7]),  7,9},
  {&(_tg__ZTV8S7853C108S7853C12__A3__8S7853C18[4]),  4,4},
  {&(_tg__ZTV7S7853C9__8S7853C12__A1__8S7853C18[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C12__A1__8S7853C18[6]),  6,6},
  {&(_tg__ZTV8S7853C17__8S7853C18[8]),  8,10},
  {&(_tg__ZTV8S7853C138S7853C17__A1__8S7853C18[4]),  4,4},
  {&(_tg__ZTV8S7853C108S7853C138S7853C17__A4__8S7853C18[4]),  4,4},
  {&(_tg__ZTV7S7853C98S7853C17__A1__8S7853C18[6]),  6,6},
  {&(_tg__ZTV8S7853C10__7S7853C98S7853C17__A1__8S7853C18[4]),  4,4},
  {&(_tg__ZTV8S7853C12__8S7853C17__8S7853C18[8]),  8,10},
  {&(_tg__ZTV7S7853C9__8S7853C17__8S7853C18[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C17__8S7853C18[6]),  6,6},
  {&(_tg__ZTV7S7853C9__A__8S7853C17__8S7853C18[6]),  6,6},
};
extern VTBL_ENTRY _ZTI8S7853C18[];
extern  VTBL_ENTRY _ZTV8S7853C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C18[];
static VTBL_ENTRY alt_thunk_names56[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7853C5D0Ev,_ZThn28_N7S7853C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7853C5D0Ev,_ZThn12_N7S7853C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7853C5D1Ev,_ZThn28_N7S7853C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7853C5D1Ev,_ZThn12_N7S7853C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7853C18D0Ev,_ZTv0_n36_N8S7853C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7853C18D0Ev,_ZThn36_N8S7853C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7853C18D1Ev,_ZTv0_n36_N8S7853C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7853C18D1Ev,_ZThn36_N8S7853C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7853C18D0Ev,_ZTv0_n32_N8S7853C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7853C18D0Ev,_ZThn28_N8S7853C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7853C18D0Ev,_ZThn12_N8S7853C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7853C18D1Ev,_ZTv0_n32_N8S7853C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7853C18D1Ev,_ZThn28_N8S7853C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7853C18D1Ev,_ZThn12_N8S7853C18D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7853C18 = {  "S7853C18", // class name
  bases_S7853C18, 33,
  &(vtc_S7853C18[0]), // expected_vtbl_contents
  &(vtt_S7853C18[0]), // expected_vtt_contents
  ABISELECT(96,52), // object size
  NSPAIRA(_ZTI8S7853C18),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S7853C18),55, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7853C18),39, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names56,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7853C3  : virtual S7853C4 , S7856C24 , S7853C9 , S7853C18 {
  virtual  ~S7853C3(); // _ZN7S7853C3D2Ev
  S7853C3(); // tgen
};
//SIG(-1 S7853C3) C1{ VBC2{ VBC3{ VBC4{ VBC5{ m} VBC6{ m} VBC7{ BC5 VBC8{ VBC5 BC6 VBC9{ m}} VBC6} BC9 BC10{ BC6 VBC5 VBC9 BC8 VBC7 vd} vd} VBC11{ BC9 BC6 BC8 Fi} VBC10 vd Fi[2]} VBC12{ m} VBC13{ VBC8 VBC14{ VBC6} VBC11 BC9 VBC4 vd Fi} BC15{ VBC10 BC11 BC7 BC9 vd} vd} BC5 BC7 BC16{ BC12 VBC5 BC3 VBC15 vd v1} vd}


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

static void Test_S7853C3()
{
  extern Class_Descriptor cd_S7853C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(22,24)];
    init_test(&cd_S7853C3, buf);
    S7853C3 *dp, &lv = *(dp=new (buf) S7853C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(168,92), "sizeof(S7853C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7853C3)");
    /*is_ambiguous_... S7853C6::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C6*), ABISELECT(81,49), "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*), ABISELECT(81,49), "S7853C3");
    /*is_ambiguous_... S7853C12::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C12*)(S7853C6*), ABISELECT(81,49), "S7853C3");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C12*)(S7853C6*), ABISELECT(81,49), "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C13*), ABISELECT(81,49), "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C12*), ABISELECT(81,49), "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C12*), ABISELECT(81,49), "S7853C3");
    check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(81,49), "S7853C3");
    /*is_ambiguous_... S7853C18::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C18*), ABISELECT(81,49), "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C17 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C13*)(S7853C17*), ABISELECT(81,49), "S7853C3");
    /*is_ambiguous_... S7853C6::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C6*), 0, "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C9*), 0, "S7853C3");
    check_base_class_offset(lv, (S7856C15*)(S7853C16*), 0, "S7853C3");
    /*is_ambiguous_... S7853C17::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C9*)(S7853C17*)(S7853C4*), 0, "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C9*), 0, "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C17 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C9*)(S7853C17*), 0, "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C9*), ABISELECT(56,32), "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*), ABISELECT(56,32), "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*), 0, "S7853C3");
    check_base_class_offset(lv, (S7856C12*)(S7853C12*)(S7853C6*), 0, "S7853C3");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C12*)(S7853C6*), 0, "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C13*), 0, "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C12*), 0, "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C12*), 0, "S7853C3");
    check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C13*)(S7853C17*)(S7853C4*), 0, "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C17 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C13*)(S7853C17*), 0, "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C9 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C9*), ABISELECT(56,32), "S7853C3");
    /*is_ambiguous_... S7853C15::S7853C10 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C15*), ABISELECT(56,32), "S7853C3");
    /*is_ambiguous_... S7853C17::S7853C9 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C9*)(S7853C17*)(S7853C4*), ABISELECT(56,32), "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C9 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C9*), ABISELECT(56,32), "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C17 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C9*)(S7853C17*), ABISELECT(56,32), "S7853C3");
    check_base_class_offset(lv, (S7853C9*)(S7853C6*), ABISELECT(56,32), "S7853C3");
    check_base_class_offset(lv, (S7853C9*)(S7853C12*)(S7853C6*), ABISELECT(56,32), "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C12 */ AMB_check_base_class_offset(lv, (S7853C9*)(S7853C12*), ABISELECT(56,32), "S7853C3");
    /*is_ambiguous_... S7853C6::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C6*), ABISELECT(72,44), "S7853C3");
    /*is_ambiguous_... S7853C12::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C12*)(S7853C6*), ABISELECT(80,48), "S7853C3");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C12*)(S7853C6*), ABISELECT(72,44), "S7853C3");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C12*)(S7853C6*), ABISELECT(72,44), "S7853C3");
    check_base_class_offset(lv, (S7853C12*)(S7853C6*), ABISELECT(72,44), "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C5 */ AMB_check_base_class_offset(lv, (S7853C6*)(S7853C5*), ABISELECT(72,44), "S7853C3");
    check_base_class_offset(lv, (S7853C6*)(S7853C15*), ABISELECT(72,44), "S7853C3");
    check_base_class_offset(lv, (S7853C6*)(S7853C5*)(S7853C18*), ABISELECT(72,44), "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C13*), ABISELECT(88,52), "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C13*), ABISELECT(96,56), "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C13*), ABISELECT(88,52), "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C13 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C13*), ABISELECT(88,52), "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C5 */ AMB_check_base_class_offset(lv, (S7853C13*)(S7853C5*), ABISELECT(88,52), "S7853C3");
    check_base_class_offset(lv, (S7853C13*)(S7853C15*), ABISELECT(88,52), "S7853C3");
    check_base_class_offset(lv, (S7853C13*)(S7853C5*)(S7853C18*), ABISELECT(88,52), "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C12*), ABISELECT(112,64), "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C12*), ABISELECT(104,60), "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C12 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C12*), ABISELECT(104,60), "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C5 */ AMB_check_base_class_offset(lv, (S7853C12*)(S7853C5*), ABISELECT(104,60), "S7853C3");
    check_base_class_offset(lv, (S7853C12*)(S7853C17*)(S7853C4*), ABISELECT(104,60), "S7853C3");
    /*is_ambiguous_... S7853C5::S7853C12 */ AMB_check_base_class_offset(lv, (S7853C12*)(S7853C5*)(S7853C18*), ABISELECT(104,60), "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C17 */ AMB_check_base_class_offset(lv, (S7853C12*)(S7853C17*), ABISELECT(104,60), "S7853C3");
    check_base_class_offset(lv, (S7853C5*)(S7853C4*), ABISELECT(56,32), "S7853C3");
    check_base_class_offset(lv, (S7856C9_nt*)(S7853C4*), 0, "S7853C3");
    check_base_class_offset(lv, (S7853C16*)(S7853C15*), ABISELECT(120,68), "S7853C3");
    /*is_ambiguous_... S7853C15::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C15*), ABISELECT(120,68), "S7853C3");
    check_base_class_offset(lv, (S7853C15*)(S7853C4*), ABISELECT(120,68), "S7853C3");
    /*is_ambiguous_... S7853C13::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(24,16), "S7853C3");
    /*is_ambiguous_... S7853C13::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(32,20), "S7853C3");
    check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(24,16), "S7853C3");
    check_base_class_offset(lv, (S7853C10*)(S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(24,16), "S7853C3");
    check_base_class_offset(lv, (S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(24,16), "S7853C3");
    /*is_ambiguous_... S7853C17::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C9*)(S7853C17*)(S7853C4*), ABISELECT(40,24), "S7853C3");
    /*is_ambiguous_... S7853C17::S7853C9 */ AMB_check_base_class_offset(lv, (S7853C9*)(S7853C17*)(S7853C4*), ABISELECT(40,24), "S7853C3");
    /*is_ambiguous_... S7853C17::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C17*)(S7853C4*), ABISELECT(48,28), "S7853C3");
    check_base_class_offset(lv, (S7853C17*)(S7853C4*), ABISELECT(24,16), "S7853C3");
    check_base_class_offset(lv, (S7853C4*), ABISELECT(24,16), "S7853C3");
    /*is_ambiguous_... S7853C3::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), ABISELECT(8,4), "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C9*), 0, "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C9 */ AMB_check_base_class_offset(lv, (S7853C9*), 0, "S7853C3");
    check_base_class_offset(lv, (S7856C9_nt*)(S7853C18*), ABISELECT(8,4), "S7853C3");
    check_base_class_offset(lv, (S7853C5*)(S7853C18*), ABISELECT(8,4), "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C17 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C13*)(S7853C17*), ABISELECT(136,76), "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C17 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C13*)(S7853C17*), ABISELECT(144,80), "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C17 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C13*)(S7853C17*), ABISELECT(136,76), "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C17 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C13*)(S7853C17*), ABISELECT(136,76), "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C17 */ AMB_check_base_class_offset(lv, (S7853C13*)(S7853C17*), ABISELECT(136,76), "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C17 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C9*)(S7853C17*), ABISELECT(152,84), "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C17 */ AMB_check_base_class_offset(lv, (S7853C9*)(S7853C17*), ABISELECT(152,84), "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C17 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C17*), ABISELECT(160,88), "S7853C3");
    check_base_class_offset(lv, (S7853C17*)(S7853C18*), ABISELECT(136,76), "S7853C3");
    check_base_class_offset(lv, (S7853C18*), ABISELECT(8,4), "S7853C3");
    test_class_info(&lv, &cd_S7853C3);
    dp->~S7853C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7853C3(Test_S7853C3, "S7853C3", ABISELECT(168,92));

#else // __cplusplus

extern void _ZN7S7853C3C1Ev();
extern void _ZN7S7853C3D2Ev();
Name_Map name_map_S7853C3[] = {
  NSPAIR(_ZN7S7853C3C1Ev),
  NSPAIR(_ZN7S7853C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C9;
extern VTBL_ENTRY _ZTI7S7853C9[];
extern  VTBL_ENTRY _ZTV7S7853C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C12;
extern VTBL_ENTRY _ZTI8S7853C12[];
extern  VTBL_ENTRY _ZTV8S7853C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C12[];
extern Class_Descriptor cd_S7853C6;
extern VTBL_ENTRY _ZTI7S7853C6[];
extern  VTBL_ENTRY _ZTV7S7853C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C6[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C13;
extern VTBL_ENTRY _ZTI8S7853C13[];
extern  VTBL_ENTRY _ZTV8S7853C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C13[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C12;
extern VTBL_ENTRY _ZTI8S7853C12[];
extern  VTBL_ENTRY _ZTV8S7853C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C12[];
extern Class_Descriptor cd_S7853C5;
extern VTBL_ENTRY _ZTI7S7853C5[];
extern  VTBL_ENTRY _ZTV7S7853C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C5[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7853C16;
extern VTBL_ENTRY _ZTI8S7853C16[];
extern  VTBL_ENTRY _ZTV8S7853C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C16[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7853C15;
extern VTBL_ENTRY _ZTI8S7853C15[];
extern  VTBL_ENTRY _ZTV8S7853C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C13;
extern VTBL_ENTRY _ZTI8S7853C13[];
extern  VTBL_ENTRY _ZTV8S7853C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C13[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7853C9;
extern VTBL_ENTRY _ZTI7S7853C9[];
extern  VTBL_ENTRY _ZTV7S7853C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7853C17;
extern VTBL_ENTRY _ZTI8S7853C17[];
extern  VTBL_ENTRY _ZTV8S7853C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C17[];
extern Class_Descriptor cd_S7853C4;
extern VTBL_ENTRY _ZTI7S7853C4[];
extern  VTBL_ENTRY _ZTV7S7853C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C4[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7853C9;
extern VTBL_ENTRY _ZTI7S7853C9[];
extern  VTBL_ENTRY _ZTV7S7853C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C9[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7853C5;
extern VTBL_ENTRY _ZTI7S7853C5[];
extern  VTBL_ENTRY _ZTV7S7853C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C5[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C13;
extern VTBL_ENTRY _ZTI8S7853C13[];
extern  VTBL_ENTRY _ZTV8S7853C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C13[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7853C9;
extern VTBL_ENTRY _ZTI7S7853C9[];
extern  VTBL_ENTRY _ZTV7S7853C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7853C17;
extern VTBL_ENTRY _ZTI8S7853C17[];
extern  VTBL_ENTRY _ZTV8S7853C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C17[];
extern Class_Descriptor cd_S7853C18;
extern VTBL_ENTRY _ZTI8S7853C18[];
extern  VTBL_ENTRY _ZTV8S7853C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C18[];
static Base_Class bases_S7853C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    ABISELECT(81,49), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7853C10,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7853C9,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(72,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(72,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(72,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7853C12,    ABISELECT(72,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7853C6,    ABISELECT(72,44), //bcp->offset
    68, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(88,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(96,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(88,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(88,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7853C13,    ABISELECT(88,52), //bcp->offset
    78, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    66, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(112,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(104,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(104,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    69, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7853C12,    ABISELECT(104,60), //bcp->offset
    82, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7853C5,    ABISELECT(56,32), //bcp->offset
    55, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S7853C16,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7853C15,    ABISELECT(120,68), //bcp->offset
    92, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7853C13,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S7853C9,    ABISELECT(40,24), //bcp->offset
    49, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7853C17,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S7853C4,    ABISELECT(24,16), //bcp->offset
    32, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S7853C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C9_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S7853C5,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(136,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(144,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(136,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(136,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S7853C13,    ABISELECT(136,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(152,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S7853C9,    ABISELECT(152,84), //bcp->offset
    116, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    82, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S7853C17,    ABISELECT(136,76), //bcp->offset
    105, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    79, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    51, //immediately_derived
  0, 1},
  {&cd_S7853C18,    ABISELECT(8,4), //bcp->offset
    18, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7853C3[];
extern void _ZN7S7853C3D1Ev();
extern void _ZN7S7853C3D0Ev();
extern void ABISELECT(_ZThn8_N7S7853C3D1Ev,_ZThn4_N7S7853C3D1Ev)();
extern void ABISELECT(_ZThn8_N7S7853C3D0Ev,_ZThn4_N7S7853C3D0Ev)();
extern void _ZN8S7853C182v1Ev();
extern void ABISELECT(_ZTv0_n120_N7S7853C3D1Ev,_ZTv0_n60_N7S7853C3D1Ev)();
extern void ABISELECT(_ZThn24_N7S7853C3D1Ev,_ZThn16_N7S7853C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S7853C3D0Ev,_ZTv0_n60_N7S7853C3D0Ev)();
extern void ABISELECT(_ZThn24_N7S7853C3D0Ev,_ZThn16_N7S7853C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7853C3D1Ev,_ZTv0_n44_N7S7853C3D1Ev)();
extern void ABISELECT(_ZThn56_N7S7853C3D1Ev,_ZThn32_N7S7853C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7853C3D0Ev,_ZTv0_n44_N7S7853C3D0Ev)();
extern void ABISELECT(_ZThn56_N7S7853C3D0Ev,_ZThn32_N7S7853C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C3D1Ev,_ZTv0_n32_N7S7853C3D1Ev)();
extern void ABISELECT(_ZThn72_N7S7853C3D1Ev,_ZThn44_N7S7853C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C3D0Ev,_ZTv0_n32_N7S7853C3D0Ev)();
extern void ABISELECT(_ZThn72_N7S7853C3D0Ev,_ZThn44_N7S7853C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C3D1Ev,_ZTv0_n32_N7S7853C3D1Ev)();
extern void ABISELECT(_ZThn104_N7S7853C3D1Ev,_ZThn60_N7S7853C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C3D0Ev,_ZTv0_n32_N7S7853C3D0Ev)();
extern void ABISELECT(_ZThn104_N7S7853C3D0Ev,_ZThn60_N7S7853C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7853C3D1Ev,_ZTv0_n44_N7S7853C3D1Ev)();
extern void ABISELECT(_ZThn120_N7S7853C3D1Ev,_ZThn68_N7S7853C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7853C3D0Ev,_ZTv0_n44_N7S7853C3D0Ev)();
extern void ABISELECT(_ZThn120_N7S7853C3D0Ev,_ZThn68_N7S7853C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7853C3D1Ev,_ZTv0_n36_N7S7853C3D1Ev)();
extern void ABISELECT(_ZThn136_N7S7853C3D1Ev,_ZThn76_N7S7853C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7853C3D0Ev,_ZTv0_n36_N7S7853C3D0Ev)();
extern void ABISELECT(_ZThn136_N7S7853C3D0Ev,_ZThn76_N7S7853C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7853C3[] = {
  ABISELECT(136,76),
  ABISELECT(120,68),
  ABISELECT(120,68),
  0,
  ABISELECT(104,60),
  ABISELECT(88,52),
  ABISELECT(56,32),
  ABISELECT(72,44),
  ABISELECT(56,32),
  ABISELECT(24,16),
  0,
  ABISELECT(56,32),
  0,
  ABISELECT(81,49),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
  (VTBL_ENTRY)&_ZN7S7853C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C3D0Ev,
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(48,28),
  ABISELECT(64,40),
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  ABISELECT(-8,-4),
  ABISELECT(73,45),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7853C3D1Ev,_ZThn4_N7S7853C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7853C3D0Ev,_ZThn4_N7S7853C3D0Ev),
  (VTBL_ENTRY)&_ZN8S7853C182v1Ev,
  ABISELECT(-24,-16),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-24,-16),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-24,-16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-24,-16),
  ABISELECT(57,33),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7853C3D1Ev,_ZTv0_n60_N7S7853C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7853C3D0Ev,_ZTv0_n60_N7S7853C3D0Ev),
  ABISELECT(-40,-24),
  ABISELECT(16,8),
  ABISELECT(-40,-24),
  ABISELECT(41,25),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
  ABISELECT(-56,-32),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C3D1Ev,_ZTv0_n44_N7S7853C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C3D0Ev,_ZTv0_n44_N7S7853C3D0Ev),
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-72,-44),
  ABISELECT(9,5),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C3D1Ev,_ZTv0_n32_N7S7853C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C3D0Ev,_ZTv0_n32_N7S7853C3D0Ev),
  ABISELECT(-88,-52),
  ABISELECT(-7,-3),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-104,-60),
  ABISELECT(-23,-11),
  ABISELECT(-104,-60),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C3D1Ev,_ZTv0_n32_N7S7853C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C3D0Ev,_ZTv0_n32_N7S7853C3D0Ev),
  ABISELECT(-120,-68),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-120,-68),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C3D1Ev,_ZTv0_n44_N7S7853C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C3D0Ev,_ZTv0_n44_N7S7853C3D0Ev),
  ABISELECT(-136,-76),
  ABISELECT(-136,-76),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-136,-76),
  ABISELECT(-55,-27),
  ABISELECT(-136,-76),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7853C3D1Ev,_ZTv0_n36_N7S7853C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7853C3D0Ev,_ZTv0_n36_N7S7853C3D0Ev),
  ABISELECT(-152,-84),
  ABISELECT(-96,-52),
  ABISELECT(-152,-84),
  ABISELECT(-71,-35),
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
};
extern VTBL_ENTRY _ZTV7S7853C3[];
static  VTBL_ENTRY _tg__ZTV7S7853C9__A__7S7853C3[] = {
  0,
  ABISELECT(56,32),
  0,
  ABISELECT(81,49),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__7S7853C9__A__7S7853C3[] = {
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
extern void _ZN8S7853C18D1Ev();
extern void _ZN8S7853C18D0Ev();
extern void _ZN8S7853C182v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C18__7S7853C3[] = {
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(48,28),
  ABISELECT(64,40),
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  ABISELECT(-8,-4),
  ABISELECT(73,45),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C18[0]),
  (VTBL_ENTRY)&_ZN8S7853C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C18D0Ev,
  (VTBL_ENTRY)&_ZN8S7853C182v1Ev,
};
extern void _ZN7S7853C5D1Ev();
extern void _ZN7S7853C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7853C58S7853C18__A1__7S7853C3[] = {
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(48,28),
  ABISELECT(64,40),
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  ABISELECT(-8,-4),
  ABISELECT(73,45),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&_ZN7S7853C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C5D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev)();
extern void ABISELECT(_ZThn64_N7S7853C5D1Ev,_ZThn40_N7S7853C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev)();
extern void ABISELECT(_ZThn64_N7S7853C5D0Ev,_ZThn40_N7S7853C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C6__7S7853C58S7853C18__A1__7S7853C3[] = {
  ABISELECT(-64,-40),
  ABISELECT(-72,-44),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-72,-44),
  ABISELECT(9,5),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__7S7853C58S7853C18__A1__7S7853C3[] = {
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__7S7853C58S7853C18__A1__7S7853C3[] = {
  ABISELECT(-88,-52),
  ABISELECT(-7,-3),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev)();
extern void ABISELECT(_ZThn96_N7S7853C5D1Ev,_ZThn56_N7S7853C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev)();
extern void ABISELECT(_ZThn96_N7S7853C5D0Ev,_ZThn56_N7S7853C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__7S7853C58S7853C18__A1__7S7853C3[] = {
  ABISELECT(-96,-56),
  ABISELECT(-104,-60),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-104,-60),
  ABISELECT(-23,-11),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7853C18D1Ev,_ZTv0_n32_N8S7853C18D1Ev)();
extern void ABISELECT(_ZThn64_N8S7853C18D1Ev,_ZThn40_N8S7853C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7853C18D0Ev,_ZTv0_n32_N8S7853C18D0Ev)();
extern void ABISELECT(_ZThn64_N8S7853C18D0Ev,_ZThn40_N8S7853C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C6__8S7853C18__7S7853C3[] = {
  ABISELECT(-64,-40),
  ABISELECT(-72,-44),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-72,-44),
  ABISELECT(9,5),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S7853C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C18D1Ev,_ZTv0_n32_N8S7853C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C18D0Ev,_ZTv0_n32_N8S7853C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C18__7S7853C3[] = {
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7853C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__8S7853C18__7S7853C3[] = {
  ABISELECT(-88,-52),
  ABISELECT(-7,-3),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S7853C18[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7853C18D1Ev,_ZTv0_n32_N8S7853C18D1Ev)();
extern void ABISELECT(_ZThn96_N8S7853C18D1Ev,_ZThn56_N8S7853C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7853C18D0Ev,_ZTv0_n32_N8S7853C18D0Ev)();
extern void ABISELECT(_ZThn96_N8S7853C18D0Ev,_ZThn56_N8S7853C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__8S7853C18__7S7853C3[] = {
  ABISELECT(-96,-56),
  ABISELECT(-104,-60),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-104,-60),
  ABISELECT(-23,-11),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S7853C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C18D1Ev,_ZTv0_n32_N8S7853C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C18D0Ev,_ZTv0_n32_N8S7853C18D0Ev),
};
extern void ABISELECT(_ZTv0_n72_N8S7853C18D1Ev,_ZTv0_n36_N8S7853C18D1Ev)();
extern void ABISELECT(_ZThn128_N8S7853C18D1Ev,_ZThn72_N8S7853C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7853C18D0Ev,_ZTv0_n36_N8S7853C18D0Ev)();
extern void ABISELECT(_ZThn128_N8S7853C18D0Ev,_ZThn72_N8S7853C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C17__8S7853C18__7S7853C3[] = {
  ABISELECT(-128,-72),
  ABISELECT(-136,-76),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-136,-76),
  ABISELECT(-55,-27),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S7853C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7853C18D1Ev,_ZTv0_n36_N8S7853C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7853C18D0Ev,_ZTv0_n36_N8S7853C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C17__A1__8S7853C18__7S7853C3[] = {
  ABISELECT(-152,-84),
  ABISELECT(-96,-52),
  ABISELECT(-152,-84),
  ABISELECT(-71,-35),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI8S7853C18[0]),
};
extern void _ZN7S7853C4D1Ev();
extern void _ZN7S7853C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7853C4__7S7853C3[] = {
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-24,-16),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-24,-16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-24,-16),
  ABISELECT(57,33),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&_ZN7S7853C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C4D0Ev,
};
extern void _ZN8S7853C17D1Ev();
extern void _ZN8S7853C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C177S7853C4__7S7853C3[] = {
  ABISELECT(-24,-16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-24,-16),
  ABISELECT(57,33),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
  (VTBL_ENTRY)&_ZN8S7853C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C138S7853C177S7853C4__A1__7S7853C3[] = {
  ABISELECT(-24,-16),
  ABISELECT(57,33),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C138S7853C177S7853C4__A4__7S7853C3[] = {
  ABISELECT(-24,-16),
  ABISELECT(57,33),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C177S7853C4__A1__7S7853C3[] = {
  ABISELECT(-40,-24),
  ABISELECT(16,8),
  ABISELECT(-40,-24),
  ABISELECT(41,25),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__7S7853C98S7853C177S7853C4__A1__7S7853C3[] = {
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7853C17D1Ev,_ZTv0_n32_N8S7853C17D1Ev)();
extern void ABISELECT(_ZThn80_N8S7853C17D1Ev,_ZThn44_N8S7853C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7853C17D0Ev,_ZTv0_n32_N8S7853C17D0Ev)();
extern void ABISELECT(_ZThn80_N8S7853C17D0Ev,_ZThn44_N8S7853C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C12__8S7853C177S7853C4__7S7853C3[] = {
  ABISELECT(-80,-44),
  ABISELECT(-104,-60),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-104,-60),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C17D1Ev,_ZTv0_n32_N8S7853C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C17D0Ev,_ZTv0_n32_N8S7853C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C177S7853C4__7S7853C3[] = {
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__A__8S7853C177S7853C4__7S7853C3[] = {
  ABISELECT(-40,-24),
  ABISELECT(16,8),
  ABISELECT(-40,-24),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev)();
extern void ABISELECT(_ZThn32_N7S7853C4D1Ev,_ZThn16_N7S7853C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev)();
extern void ABISELECT(_ZThn32_N7S7853C4D0Ev,_ZThn16_N7S7853C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C5__7S7853C4__7S7853C3[] = {
  ABISELECT(-32,-16),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev)();
extern void ABISELECT(_ZThn48_N7S7853C4D1Ev,_ZThn28_N7S7853C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev)();
extern void ABISELECT(_ZThn48_N7S7853C4D0Ev,_ZThn28_N7S7853C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C6__7S7853C4__7S7853C3[] = {
  ABISELECT(-48,-28),
  ABISELECT(-72,-44),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-72,-44),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__7S7853C4__7S7853C3[] = {
  ABISELECT(-88,-52),
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev)();
extern void ABISELECT(_ZThn80_N7S7853C4D1Ev,_ZThn44_N7S7853C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev)();
extern void ABISELECT(_ZThn80_N7S7853C4D0Ev,_ZThn44_N7S7853C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__7S7853C4__7S7853C3[] = {
  ABISELECT(-80,-44),
  ABISELECT(-104,-60),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-104,-60),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev)();
extern void ABISELECT(_ZThn96_N7S7853C4D1Ev,_ZThn52_N7S7853C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev)();
extern void ABISELECT(_ZThn96_N7S7853C4D0Ev,_ZThn52_N7S7853C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C15__7S7853C4__7S7853C3[] = {
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-120,-68),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-120,-68),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C17__A1__7S7853C4__7S7853C3[] = {
  ABISELECT(-40,-24),
  ABISELECT(16,8),
  ABISELECT(-40,-24),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
};
extern void _ZN7S7853C5D1Ev();
extern void _ZN7S7853C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7853C5__7S7853C3[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&_ZN7S7853C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C5D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev)();
extern void ABISELECT(_ZThn16_N7S7853C5D1Ev,_ZThn12_N7S7853C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev)();
extern void ABISELECT(_ZThn16_N7S7853C5D0Ev,_ZThn12_N7S7853C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C6__7S7853C5__7S7853C3[] = {
  ABISELECT(-16,-12),
  ABISELECT(-72,-44),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-72,-44),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__7S7853C5__7S7853C3[] = {
  ABISELECT(-88,-52),
  ABISELECT(-7,-3),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev)();
extern void ABISELECT(_ZThn48_N7S7853C5D1Ev,_ZThn28_N7S7853C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev)();
extern void ABISELECT(_ZThn48_N7S7853C5D0Ev,_ZThn28_N7S7853C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__7S7853C5__7S7853C3[] = {
  ABISELECT(-48,-28),
  ABISELECT(-104,-60),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-104,-60),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev),
};
extern void _ZN7S7853C6D1Ev();
extern void _ZN7S7853C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7853C6__7S7853C3[] = {
  ABISELECT(-72,-44),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-72,-44),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C6[0]),
  (VTBL_ENTRY)&_ZN7S7853C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C6D0Ev,
};
extern void _ZN8S7853C12D1Ev();
extern void _ZN8S7853C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C127S7853C6__7S7853C3[] = {
  ABISELECT(-72,-44),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-72,-44),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
  (VTBL_ENTRY)&_ZN8S7853C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C127S7853C6__A1__7S7853C3[] = {
  ABISELECT(-72,-44),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C127S7853C6__7S7853C3[] = {
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__7S7853C6__7S7853C3[] = {
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7853C6[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__7S7853C3[] = {
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__7S7853C3[] = {
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__7S7853C3[] = {
  ABISELECT(-88,-52),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C13__A2__7S7853C3[] = {
  ABISELECT(-88,-52),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
extern void _ZN8S7853C12D1Ev();
extern void _ZN8S7853C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__7S7853C3[] = {
  ABISELECT(-104,-60),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-104,-60),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
  (VTBL_ENTRY)&_ZN8S7853C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C12__A3__7S7853C3[] = {
  ABISELECT(-104,-60),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C12__A1__7S7853C3[] = {
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
};
extern void _ZN8S7853C15D1Ev();
extern void _ZN8S7853C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C15__7S7853C3[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-120,-68),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-120,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C15[0]),
  (VTBL_ENTRY)&_ZN8S7853C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C15__7S7853C3[] = {
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S7853C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__8S7853C15__7S7853C3[] = {
  ABISELECT(-88,-52),
  ABISELECT(-7,-3),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7853C15[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7853C15D1Ev,_ZTv0_n32_N8S7853C15D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7853C15D0Ev,_ZTv0_n32_N8S7853C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7853C6__8S7853C15__7S7853C3[] = {
  ABISELECT(48,24),
  ABISELECT(-72,-44),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-72,-44),
  ABISELECT(9,5),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S7853C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C15D1Ev,_ZTv0_n32_N8S7853C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C15D0Ev,_ZTv0_n32_N8S7853C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7853C16__7S7853C3[] = {
  ABISELECT(-120,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C16[0]),
};
extern void _ZN8S7853C17D1Ev();
extern void _ZN8S7853C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C17__A1__7S7853C3[] = {
  ABISELECT(-136,-76),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-136,-76),
  ABISELECT(-55,-27),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
  (VTBL_ENTRY)&_ZN8S7853C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C138S7853C17__A2__7S7853C3[] = {
  ABISELECT(-136,-76),
  ABISELECT(-55,-27),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C138S7853C17__A5__7S7853C3[] = {
  ABISELECT(-136,-76),
  ABISELECT(-55,-27),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C17__A3__7S7853C3[] = {
  ABISELECT(-152,-84),
  ABISELECT(-96,-52),
  ABISELECT(-152,-84),
  ABISELECT(-71,-35),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__7S7853C98S7853C17__A3__7S7853C3[] = {
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(96,52),
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7853C17D1Ev,_ZTv0_n32_N8S7853C17D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7853C17D0Ev,_ZTv0_n32_N8S7853C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7853C12__8S7853C17__A1__7S7853C3[] = {
  ABISELECT(32,16),
  ABISELECT(-104,-60),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-104,-60),
  ABISELECT(-23,-11),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C17D1Ev,_ZTv0_n32_N8S7853C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C17D0Ev,_ZTv0_n32_N8S7853C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C17__A1__7S7853C3[] = {
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__A__8S7853C17__A1__7S7853C3[] = {
  ABISELECT(-152,-84),
  ABISELECT(-96,-52),
  ABISELECT(-152,-84),
  ABISELECT(-71,-35),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
};
static  VTT_ENTRY vtt_S7853C3[] = {
  {&(_ZTV7S7853C3[16]),  16,122},
  {&(_tg__ZTV7S7853C9__A__7S7853C3[6]),  6,6},
  {&(_tg__ZTV8S7853C10__7S7853C9__A__7S7853C3[4]),  4,4},
  {&(_tg__ZTV8S7853C18__7S7853C3[11]),  11,14},
  {&(_tg__ZTV7S7853C58S7853C18__A1__7S7853C3[10]),  10,12},
  {&(_tg__ZTV7S7853C6__7S7853C58S7853C18__A1__7S7853C3[8]),  8,10},
  {&(_tg__ZTV7S7853C9__7S7853C58S7853C18__A1__7S7853C3[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C58S7853C18__A1__7S7853C3[6]),  6,6},
  {&(_tg__ZTV8S7853C13__7S7853C58S7853C18__A1__7S7853C3[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__7S7853C58S7853C18__A1__7S7853C3[8]),  8,10},
  {&(_tg__ZTV7S7853C6__8S7853C18__7S7853C3[8]),  8,10},
  {&(_tg__ZTV7S7853C9__8S7853C18__7S7853C3[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C18__7S7853C3[6]),  6,6},
  {&(_tg__ZTV8S7853C13__8S7853C18__7S7853C3[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__8S7853C18__7S7853C3[8]),  8,10},
  {&(_tg__ZTV8S7853C17__8S7853C18__7S7853C3[9]),  9,11},
  {&(_tg__ZTV7S7853C98S7853C17__A1__8S7853C18__7S7853C3[6]),  6,6},
  {&(_ZTV7S7853C3[47]),  47,122},
  {&(_ZTV7S7853C3[66]),  66,122},
  {&(_ZTV7S7853C3[76]),  76,122},
  {&(_ZTV7S7853C3[66]),  66,122},
  {&(_ZTV7S7853C3[66]),  66,122},
  {&(_ZTV7S7853C3[82]),  82,122},
  {&(_ZTV7S7853C3[90]),  90,122},
  {&(_ZTV7S7853C3[103]),  103,122},
  {&(_ZTV7S7853C3[103]),  103,122},
  {&(_ZTV7S7853C3[55]),  55,122},
  {&(_ZTV7S7853C3[29]),  29,122},
  {&(_ZTV7S7853C3[114]),  114,122},
  {&(_ZTV7S7853C3[122]),  122,122},
  {&(_tg__ZTV7S7853C4__7S7853C3[14]),  14,16},
  {&(_tg__ZTV8S7853C177S7853C4__7S7853C3[8]),  8,10},
  {&(_tg__ZTV8S7853C138S7853C177S7853C4__A1__7S7853C3[4]),  4,4},
  {&(_tg__ZTV8S7853C108S7853C138S7853C177S7853C4__A4__7S7853C3[4]),  4,4},
  {&(_tg__ZTV7S7853C98S7853C177S7853C4__A1__7S7853C3[6]),  6,6},
  {&(_tg__ZTV8S7853C10__7S7853C98S7853C177S7853C4__A1__7S7853C3[4]),  4,4},
  {&(_tg__ZTV8S7853C12__8S7853C177S7853C4__7S7853C3[8]),  8,10},
  {&(_tg__ZTV7S7853C9__8S7853C177S7853C4__7S7853C3[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C177S7853C4__7S7853C3[6]),  6,6},
  {&(_tg__ZTV7S7853C9__A__8S7853C177S7853C4__7S7853C3[6]),  6,6},
  {&(_tg__ZTV7S7853C5__7S7853C4__7S7853C3[11]),  11,13},
  {&(_tg__ZTV7S7853C6__7S7853C4__7S7853C3[8]),  8,10},
  {&(_tg__ZTV7S7853C5__7S7853C4__7S7853C3[11]),  11,13},
  {&(_tg__ZTV7S7853C5__7S7853C4__7S7853C3[11]),  11,13},
  {&(_tg__ZTV8S7853C13__7S7853C4__7S7853C3[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__7S7853C4__7S7853C3[8]),  8,10},
  {&(_tg__ZTV8S7853C15__7S7853C4__7S7853C3[11]),  11,13},
  {&(_tg__ZTV8S7853C15__7S7853C4__7S7853C3[11]),  11,13},
  {&(_tg__ZTV7S7853C98S7853C17__A1__7S7853C4__7S7853C3[6]),  6,6},
  {&(_tg__ZTV7S7853C5__7S7853C3[10]),  10,12},
  {&(_tg__ZTV7S7853C6__7S7853C5__7S7853C3[8]),  8,10},
  {&(_tg__ZTV7S7853C5__7S7853C3[10]),  10,12},
  {&(_tg__ZTV7S7853C5__7S7853C3[10]),  10,12},
  {&(_tg__ZTV8S7853C13__7S7853C5__7S7853C3[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__7S7853C5__7S7853C3[8]),  8,10},
  {&(_tg__ZTV7S7853C6__7S7853C3[7]),  7,9},
  {&(_tg__ZTV8S7853C127S7853C6__7S7853C3[7]),  7,9},
  {&(_tg__ZTV8S7853C108S7853C127S7853C6__A1__7S7853C3[4]),  4,4},
  {&(_tg__ZTV7S7853C9__8S7853C127S7853C6__7S7853C3[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C127S7853C6__7S7853C3[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C6__7S7853C3[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C6__7S7853C3[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C3[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C3[6]),  6,6},
  {&(_tg__ZTV8S7853C10__7S7853C3[4]),  4,4},
  {&(_tg__ZTV8S7853C13__7S7853C3[4]),  4,4},
  {&(_tg__ZTV8S7853C108S7853C13__A2__7S7853C3[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__7S7853C3[7]),  7,9},
  {&(_tg__ZTV8S7853C108S7853C12__A3__7S7853C3[4]),  4,4},
  {&(_tg__ZTV7S7853C9__8S7853C12__A1__7S7853C3[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C12__A1__7S7853C3[6]),  6,6},
  {&(_tg__ZTV8S7853C15__7S7853C3[10]),  10,12},
  {&(_tg__ZTV7S7853C9__8S7853C15__7S7853C3[6]),  6,6},
  {&(_tg__ZTV8S7853C15__7S7853C3[10]),  10,12},
  {&(_tg__ZTV8S7853C13__8S7853C15__7S7853C3[4]),  4,4},
  {&(_tg__ZTV7S7853C6__8S7853C15__7S7853C3[8]),  8,10},
  {&(_tg__ZTV7S7853C9__8S7853C15__7S7853C3[6]),  6,6},
  {&(_tg__ZTV8S7853C16__7S7853C3[3]),  3,3},
  {&(_tg__ZTV8S7853C17__A1__7S7853C3[8]),  8,10},
  {&(_tg__ZTV8S7853C138S7853C17__A2__7S7853C3[4]),  4,4},
  {&(_tg__ZTV8S7853C108S7853C138S7853C17__A5__7S7853C3[4]),  4,4},
  {&(_tg__ZTV7S7853C98S7853C17__A3__7S7853C3[6]),  6,6},
  {&(_tg__ZTV8S7853C10__7S7853C98S7853C17__A3__7S7853C3[4]),  4,4},
  {&(_tg__ZTV8S7853C12__8S7853C17__A1__7S7853C3[8]),  8,10},
  {&(_tg__ZTV7S7853C9__8S7853C17__A1__7S7853C3[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C17__A1__7S7853C3[6]),  6,6},
  {&(_tg__ZTV7S7853C9__A__8S7853C17__A1__7S7853C3[6]),  6,6},
};
extern VTBL_ENTRY _ZTI7S7853C3[];
extern  VTBL_ENTRY _ZTV7S7853C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C3[];
static VTBL_ENTRY alt_thunk_names57[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7853C4D0Ev,_ZThn44_N7S7853C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7853C4D0Ev,_ZThn28_N7S7853C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7853C4D1Ev,_ZThn44_N7S7853C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7853C4D1Ev,_ZThn28_N7S7853C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7853C4D0Ev,_ZThn52_N7S7853C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7853C4D0Ev,_ZThn16_N7S7853C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7853C4D1Ev,_ZThn52_N7S7853C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7853C4D1Ev,_ZThn16_N7S7853C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7853C17D0Ev,_ZTv0_n32_N8S7853C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7853C17D0Ev,_ZThn44_N8S7853C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7853C17D1Ev,_ZTv0_n32_N8S7853C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7853C17D1Ev,_ZThn44_N8S7853C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7853C18D0Ev,_ZTv0_n36_N8S7853C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7853C18D0Ev,_ZThn72_N8S7853C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7853C18D1Ev,_ZTv0_n36_N8S7853C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7853C18D1Ev,_ZThn72_N8S7853C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7853C18D0Ev,_ZTv0_n32_N8S7853C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7853C18D0Ev,_ZThn56_N8S7853C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7853C18D0Ev,_ZThn40_N8S7853C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7853C18D1Ev,_ZTv0_n32_N8S7853C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7853C18D1Ev,_ZThn56_N8S7853C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7853C18D1Ev,_ZThn40_N8S7853C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7853C5D0Ev,_ZThn28_N7S7853C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7853C5D0Ev,_ZThn12_N7S7853C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7853C5D0Ev,_ZThn56_N7S7853C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7853C5D0Ev,_ZThn40_N7S7853C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7853C5D1Ev,_ZThn28_N7S7853C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7853C5D1Ev,_ZThn12_N7S7853C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7853C5D1Ev,_ZThn56_N7S7853C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7853C5D1Ev,_ZThn40_N7S7853C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7853C3D0Ev,_ZTv0_n36_N7S7853C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7853C3D0Ev,_ZThn76_N7S7853C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7853C3D1Ev,_ZTv0_n36_N7S7853C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7853C3D1Ev,_ZThn76_N7S7853C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C3D0Ev,_ZTv0_n32_N7S7853C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7853C3D0Ev,_ZThn60_N7S7853C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7853C3D0Ev,_ZThn44_N7S7853C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C3D1Ev,_ZTv0_n32_N7S7853C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7853C3D1Ev,_ZThn60_N7S7853C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7853C3D1Ev,_ZThn44_N7S7853C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7853C3D0Ev,_ZTv0_n44_N7S7853C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7853C3D0Ev,_ZThn68_N7S7853C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7853C3D0Ev,_ZThn32_N7S7853C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7853C3D1Ev,_ZTv0_n44_N7S7853C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7853C3D1Ev,_ZThn68_N7S7853C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7853C3D1Ev,_ZThn32_N7S7853C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7853C3D0Ev,_ZTv0_n60_N7S7853C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7853C3D0Ev,_ZThn16_N7S7853C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7853C3D1Ev,_ZTv0_n60_N7S7853C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7853C3D1Ev,_ZThn16_N7S7853C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7853C3 = {  "S7853C3", // class name
  bases_S7853C3, 52,
  &(vtc_S7853C3[0]), // expected_vtbl_contents
  &(vtt_S7853C3[0]), // expected_vtt_contents
  ABISELECT(168,92), // object size
  NSPAIRA(_ZTI7S7853C3),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7853C3),122, //virtual function table var
  16, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7853C3),87, //virtual table table var
  24, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names57,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7853C2  : virtual S7853C3 {
  int s7853c2f0[2];
  virtual  ~S7853C2(); // _ZN7S7853C2D2Ev
  S7853C2(); // tgen
};
//SIG(-1 S7853C2) C1{ VBC2{ VBC3{ VBC4{ VBC5{ VBC6{ m} VBC7{ m} VBC8{ BC6 VBC9{ VBC6 BC7 VBC10{ m}} VBC7} BC10 BC11{ BC7 VBC6 VBC10 BC9 VBC8 vd} vd} VBC12{ BC10 BC7 BC9 Fi} VBC11 vd Fi[2]} VBC13{ m} VBC14{ VBC9 VBC15{ VBC7} VBC12 BC10 VBC5 vd Fi} BC16{ VBC11 BC12 BC8 BC10 vd} vd} BC6 BC8 BC17{ BC13 VBC6 BC4 VBC16 vd v1} vd} vd Fi[2]}


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

static void Test_S7853C2()
{
  extern Class_Descriptor cd_S7853C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(24,27)];
    init_test(&cd_S7853C2, buf);
    S7853C2 *dp, &lv = *(dp=new (buf) S7853C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(184,104), "sizeof(S7853C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7853C2)");
    /*is_ambiguous_... S7853C6::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C6*), ABISELECT(97,61), "S7853C2");
    /*is_ambiguous_... S7853C2::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*), ABISELECT(97,61), "S7853C2");
    /*is_ambiguous_... S7853C12::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C12*)(S7853C6*), ABISELECT(97,61), "S7853C2");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C12*)(S7853C6*), ABISELECT(97,61), "S7853C2");
    /*is_ambiguous_... S7853C2::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C13*), ABISELECT(97,61), "S7853C2");
    /*is_ambiguous_... S7853C2::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C12*), ABISELECT(97,61), "S7853C2");
    /*is_ambiguous_... S7853C2::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C12*), ABISELECT(97,61), "S7853C2");
    check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(97,61), "S7853C2");
    /*is_ambiguous_... S7853C18::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C18*)(S7853C3*), ABISELECT(97,61), "S7853C2");
    /*is_ambiguous_... S7853C2::S7853C17 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C13*)(S7853C17*), ABISELECT(97,61), "S7853C2");
    /*is_ambiguous_... S7853C6::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C6*), ABISELECT(97,61), "S7853C2");
    /*is_ambiguous_... S7853C2::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C9*), ABISELECT(97,61), "S7853C2");
    check_base_class_offset(lv, (S7856C15*)(S7853C16*), ABISELECT(97,61), "S7853C2");
    /*is_ambiguous_... S7853C17::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C9*)(S7853C17*)(S7853C4*), ABISELECT(97,61), "S7853C2");
    /*is_ambiguous_... S7853C3::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C9*)(S7853C3*), ABISELECT(97,61), "S7853C2");
    /*is_ambiguous_... S7853C2::S7853C17 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C9*)(S7853C17*), ABISELECT(97,61), "S7853C2");
    /*is_ambiguous_... S7853C2::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C9*), 0, "S7853C2");
    /*is_ambiguous_... S7853C2::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*), 0, "S7853C2");
    /*is_ambiguous_... S7853C2::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*), 0, "S7853C2");
    check_base_class_offset(lv, (S7856C12*)(S7853C12*)(S7853C6*), 0, "S7853C2");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C12*)(S7853C6*), 0, "S7853C2");
    /*is_ambiguous_... S7853C2::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C13*), 0, "S7853C2");
    /*is_ambiguous_... S7853C2::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C12*), 0, "S7853C2");
    /*is_ambiguous_... S7853C2::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C12*), 0, "S7853C2");
    check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C13*)(S7853C17*)(S7853C4*), 0, "S7853C2");
    /*is_ambiguous_... S7853C2::S7853C17 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C13*)(S7853C17*), 0, "S7853C2");
    /*is_ambiguous_... S7853C2::S7853C9 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C9*), 0, "S7853C2");
    /*is_ambiguous_... S7853C15::S7853C10 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C15*), 0, "S7853C2");
    /*is_ambiguous_... S7853C17::S7853C9 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C9*)(S7853C17*)(S7853C4*), 0, "S7853C2");
    /*is_ambiguous_... S7853C3::S7853C9 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C9*)(S7853C3*), 0, "S7853C2");
    /*is_ambiguous_... S7853C2::S7853C17 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C9*)(S7853C17*), 0, "S7853C2");
    check_base_class_offset(lv, (S7853C9*)(S7853C6*), 0, "S7853C2");
    check_base_class_offset(lv, (S7853C9*)(S7853C12*)(S7853C6*), 0, "S7853C2");
    /*is_ambiguous_... S7853C2::S7853C12 */ AMB_check_base_class_offset(lv, (S7853C9*)(S7853C12*), 0, "S7853C2");
    /*is_ambiguous_... S7853C6::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C6*), ABISELECT(88,56), "S7853C2");
    /*is_ambiguous_... S7853C12::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C12*)(S7853C6*), ABISELECT(96,60), "S7853C2");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C12*)(S7853C6*), ABISELECT(88,56), "S7853C2");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C12*)(S7853C6*), ABISELECT(88,56), "S7853C2");
    check_base_class_offset(lv, (S7853C12*)(S7853C6*), ABISELECT(88,56), "S7853C2");
    /*is_ambiguous_... S7853C2::S7853C5 */ AMB_check_base_class_offset(lv, (S7853C6*)(S7853C5*), ABISELECT(88,56), "S7853C2");
    check_base_class_offset(lv, (S7853C6*)(S7853C15*), ABISELECT(88,56), "S7853C2");
    check_base_class_offset(lv, (S7853C6*)(S7853C5*)(S7853C18*)(S7853C3*), ABISELECT(88,56), "S7853C2");
    /*is_ambiguous_... S7853C2::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C13*), ABISELECT(104,64), "S7853C2");
    /*is_ambiguous_... S7853C2::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C13*), ABISELECT(112,68), "S7853C2");
    /*is_ambiguous_... S7853C2::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C13*), ABISELECT(104,64), "S7853C2");
    /*is_ambiguous_... S7853C2::S7853C13 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C13*), ABISELECT(104,64), "S7853C2");
    /*is_ambiguous_... S7853C2::S7853C5 */ AMB_check_base_class_offset(lv, (S7853C13*)(S7853C5*), ABISELECT(104,64), "S7853C2");
    check_base_class_offset(lv, (S7853C13*)(S7853C15*), ABISELECT(104,64), "S7853C2");
    check_base_class_offset(lv, (S7853C13*)(S7853C5*)(S7853C18*)(S7853C3*), ABISELECT(104,64), "S7853C2");
    /*is_ambiguous_... S7853C2::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C12*), ABISELECT(128,76), "S7853C2");
    /*is_ambiguous_... S7853C2::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C12*), ABISELECT(120,72), "S7853C2");
    /*is_ambiguous_... S7853C2::S7853C12 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C12*), ABISELECT(120,72), "S7853C2");
    /*is_ambiguous_... S7853C2::S7853C5 */ AMB_check_base_class_offset(lv, (S7853C12*)(S7853C5*), ABISELECT(120,72), "S7853C2");
    check_base_class_offset(lv, (S7853C12*)(S7853C17*)(S7853C4*), ABISELECT(120,72), "S7853C2");
    /*is_ambiguous_... S7853C5::S7853C12 */ AMB_check_base_class_offset(lv, (S7853C12*)(S7853C5*)(S7853C18*)(S7853C3*), ABISELECT(120,72), "S7853C2");
    /*is_ambiguous_... S7853C2::S7853C17 */ AMB_check_base_class_offset(lv, (S7853C12*)(S7853C17*), ABISELECT(120,72), "S7853C2");
    check_base_class_offset(lv, (S7853C5*)(S7853C4*), ABISELECT(72,44), "S7853C2");
    check_base_class_offset(lv, (S7856C9_nt*)(S7853C4*), 0, "S7853C2");
    check_base_class_offset(lv, (S7853C16*)(S7853C15*), ABISELECT(136,80), "S7853C2");
    /*is_ambiguous_... S7853C15::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C15*), ABISELECT(136,80), "S7853C2");
    check_base_class_offset(lv, (S7853C15*)(S7853C4*), ABISELECT(136,80), "S7853C2");
    /*is_ambiguous_... S7853C13::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(40,28), "S7853C2");
    /*is_ambiguous_... S7853C13::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(48,32), "S7853C2");
    check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(40,28), "S7853C2");
    check_base_class_offset(lv, (S7853C10*)(S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(40,28), "S7853C2");
    check_base_class_offset(lv, (S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(40,28), "S7853C2");
    /*is_ambiguous_... S7853C17::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C9*)(S7853C17*)(S7853C4*), ABISELECT(56,36), "S7853C2");
    /*is_ambiguous_... S7853C17::S7853C9 */ AMB_check_base_class_offset(lv, (S7853C9*)(S7853C17*)(S7853C4*), ABISELECT(56,36), "S7853C2");
    /*is_ambiguous_... S7853C17::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C17*)(S7853C4*), ABISELECT(64,40), "S7853C2");
    check_base_class_offset(lv, (S7853C17*)(S7853C4*), ABISELECT(40,28), "S7853C2");
    check_base_class_offset(lv, (S7853C4*)(S7853C3*), ABISELECT(40,28), "S7853C2");
    /*is_ambiguous_... S7853C3::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C3*), ABISELECT(24,16), "S7853C2");
    /*is_ambiguous_... S7853C3::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C9*)(S7853C3*), ABISELECT(16,12), "S7853C2");
    /*is_ambiguous_... S7853C3::S7853C9 */ AMB_check_base_class_offset(lv, (S7853C9*)(S7853C3*), ABISELECT(16,12), "S7853C2");
    check_base_class_offset(lv, (S7856C9_nt*)(S7853C18*)(S7853C3*), ABISELECT(24,16), "S7853C2");
    check_base_class_offset(lv, (S7853C5*)(S7853C18*)(S7853C3*), ABISELECT(24,16), "S7853C2");
    /*is_ambiguous_... S7853C2::S7853C17 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C13*)(S7853C17*), ABISELECT(152,88), "S7853C2");
    /*is_ambiguous_... S7853C2::S7853C17 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C13*)(S7853C17*), ABISELECT(160,92), "S7853C2");
    /*is_ambiguous_... S7853C2::S7853C17 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C13*)(S7853C17*), ABISELECT(152,88), "S7853C2");
    /*is_ambiguous_... S7853C2::S7853C17 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C13*)(S7853C17*), ABISELECT(152,88), "S7853C2");
    /*is_ambiguous_... S7853C2::S7853C17 */ AMB_check_base_class_offset(lv, (S7853C13*)(S7853C17*), ABISELECT(152,88), "S7853C2");
    /*is_ambiguous_... S7853C2::S7853C17 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C9*)(S7853C17*), ABISELECT(168,96), "S7853C2");
    /*is_ambiguous_... S7853C2::S7853C17 */ AMB_check_base_class_offset(lv, (S7853C9*)(S7853C17*), ABISELECT(168,96), "S7853C2");
    /*is_ambiguous_... S7853C2::S7853C17 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C17*), ABISELECT(176,100), "S7853C2");
    check_base_class_offset(lv, (S7853C17*)(S7853C18*)(S7853C3*), ABISELECT(152,88), "S7853C2");
    check_base_class_offset(lv, (S7853C18*)(S7853C3*), ABISELECT(24,16), "S7853C2");
    check_base_class_offset(lv, (S7853C3*), ABISELECT(16,12), "S7853C2");
    check_field_offset(lv, s7853c2f0, ABISELECT(8,4), "S7853C2.s7853c2f0");
    test_class_info(&lv, &cd_S7853C2);
    dp->~S7853C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7853C2(Test_S7853C2, "S7853C2", ABISELECT(184,104));

#else // __cplusplus

extern void _ZN7S7853C2C1Ev();
extern void _ZN7S7853C2D2Ev();
Name_Map name_map_S7853C2[] = {
  NSPAIR(_ZN7S7853C2C1Ev),
  NSPAIR(_ZN7S7853C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C9;
extern VTBL_ENTRY _ZTI7S7853C9[];
extern  VTBL_ENTRY _ZTV7S7853C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C12;
extern VTBL_ENTRY _ZTI8S7853C12[];
extern  VTBL_ENTRY _ZTV8S7853C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C12[];
extern Class_Descriptor cd_S7853C6;
extern VTBL_ENTRY _ZTI7S7853C6[];
extern  VTBL_ENTRY _ZTV7S7853C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C6[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C13;
extern VTBL_ENTRY _ZTI8S7853C13[];
extern  VTBL_ENTRY _ZTV8S7853C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C13[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C12;
extern VTBL_ENTRY _ZTI8S7853C12[];
extern  VTBL_ENTRY _ZTV8S7853C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C12[];
extern Class_Descriptor cd_S7853C5;
extern VTBL_ENTRY _ZTI7S7853C5[];
extern  VTBL_ENTRY _ZTV7S7853C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C5[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7853C16;
extern VTBL_ENTRY _ZTI8S7853C16[];
extern  VTBL_ENTRY _ZTV8S7853C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C16[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7853C15;
extern VTBL_ENTRY _ZTI8S7853C15[];
extern  VTBL_ENTRY _ZTV8S7853C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C13;
extern VTBL_ENTRY _ZTI8S7853C13[];
extern  VTBL_ENTRY _ZTV8S7853C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C13[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7853C9;
extern VTBL_ENTRY _ZTI7S7853C9[];
extern  VTBL_ENTRY _ZTV7S7853C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7853C17;
extern VTBL_ENTRY _ZTI8S7853C17[];
extern  VTBL_ENTRY _ZTV8S7853C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C17[];
extern Class_Descriptor cd_S7853C4;
extern VTBL_ENTRY _ZTI7S7853C4[];
extern  VTBL_ENTRY _ZTV7S7853C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C4[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7853C9;
extern VTBL_ENTRY _ZTI7S7853C9[];
extern  VTBL_ENTRY _ZTV7S7853C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C9[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7853C5;
extern VTBL_ENTRY _ZTI7S7853C5[];
extern  VTBL_ENTRY _ZTV7S7853C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C5[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C13;
extern VTBL_ENTRY _ZTI8S7853C13[];
extern  VTBL_ENTRY _ZTV8S7853C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C13[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7853C9;
extern VTBL_ENTRY _ZTI7S7853C9[];
extern  VTBL_ENTRY _ZTV7S7853C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7853C17;
extern VTBL_ENTRY _ZTI8S7853C17[];
extern  VTBL_ENTRY _ZTV8S7853C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C17[];
extern Class_Descriptor cd_S7853C18;
extern VTBL_ENTRY _ZTI8S7853C18[];
extern  VTBL_ENTRY _ZTV8S7853C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C18[];
extern Class_Descriptor cd_S7853C3;
extern VTBL_ENTRY _ZTI7S7853C3[];
extern  VTBL_ENTRY _ZTV7S7853C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C3[];
static Base_Class bases_S7853C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    ABISELECT(97,61), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(97,61), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7853C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7853C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(88,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(96,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(88,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(88,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7853C12,    ABISELECT(88,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7853C6,    ABISELECT(88,56), //bcp->offset
    89, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(104,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(112,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(104,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(104,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    82, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7853C13,    ABISELECT(104,64), //bcp->offset
    99, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(128,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(120,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(120,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    84, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7853C12,    ABISELECT(120,72), //bcp->offset
    103, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    83, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7853C5,    ABISELECT(72,44), //bcp->offset
    76, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S7853C16,    ABISELECT(136,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    93, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(136,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7853C15,    ABISELECT(136,80), //bcp->offset
    113, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    87, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(40,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(48,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(40,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(40,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7853C13,    ABISELECT(40,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(56,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S7853C9,    ABISELECT(56,36), //bcp->offset
    70, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7853C17,    ABISELECT(40,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S7853C4,    ABISELECT(40,28), //bcp->offset
    53, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    52, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    52, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S7853C9,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    52, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S7853C5,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(152,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(160,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(152,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(152,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    96, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S7853C13,    ABISELECT(152,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    95, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(168,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S7853C9,    ABISELECT(168,96), //bcp->offset
    137, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    97, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(176,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S7853C17,    ABISELECT(152,88), //bcp->offset
    126, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    94, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    51, //immediately_derived
  0, 1},
  {&cd_S7853C18,    ABISELECT(24,16), //bcp->offset
    39, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    52, //immediately_derived
  0, 0},
  {&cd_S7853C3,    ABISELECT(16,12), //bcp->offset
    19, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7853C2[];
extern void _ZN7S7853C2D1Ev();
extern void _ZN7S7853C2D0Ev();
extern void ABISELECT(_ZTv0_n136_N7S7853C2D1Ev,_ZTv0_n68_N7S7853C2D1Ev)();
extern void ABISELECT(_ZThn16_N7S7853C2D1Ev,_ZThn12_N7S7853C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N7S7853C2D0Ev,_ZTv0_n68_N7S7853C2D0Ev)();
extern void ABISELECT(_ZThn16_N7S7853C2D0Ev,_ZThn12_N7S7853C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn8_n136_N7S7853C2D1Ev,_ZTvn4_n68_N7S7853C2D1Ev)();
extern void ABISELECT(_ZTvn8_n136_N7S7853C2D0Ev,_ZTvn4_n68_N7S7853C2D0Ev)();
extern void _ZN8S7853C182v1Ev();
extern void ABISELECT(_ZTv0_n120_N7S7853C2D1Ev,_ZTv0_n60_N7S7853C2D1Ev)();
extern void ABISELECT(_ZThn40_N7S7853C2D1Ev,_ZThn28_N7S7853C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S7853C2D0Ev,_ZTv0_n60_N7S7853C2D0Ev)();
extern void ABISELECT(_ZThn40_N7S7853C2D0Ev,_ZThn28_N7S7853C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7853C2D1Ev,_ZTv0_n44_N7S7853C2D1Ev)();
extern void ABISELECT(_ZThn72_N7S7853C2D1Ev,_ZThn44_N7S7853C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7853C2D0Ev,_ZTv0_n44_N7S7853C2D0Ev)();
extern void ABISELECT(_ZThn72_N7S7853C2D0Ev,_ZThn44_N7S7853C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C2D1Ev,_ZTv0_n32_N7S7853C2D1Ev)();
extern void ABISELECT(_ZThn88_N7S7853C2D1Ev,_ZThn56_N7S7853C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C2D0Ev,_ZTv0_n32_N7S7853C2D0Ev)();
extern void ABISELECT(_ZThn88_N7S7853C2D0Ev,_ZThn56_N7S7853C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C2D1Ev,_ZTv0_n32_N7S7853C2D1Ev)();
extern void ABISELECT(_ZThn120_N7S7853C2D1Ev,_ZThn72_N7S7853C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C2D0Ev,_ZTv0_n32_N7S7853C2D0Ev)();
extern void ABISELECT(_ZThn120_N7S7853C2D0Ev,_ZThn72_N7S7853C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7853C2D1Ev,_ZTv0_n44_N7S7853C2D1Ev)();
extern void ABISELECT(_ZThn136_N7S7853C2D1Ev,_ZThn80_N7S7853C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7853C2D0Ev,_ZTv0_n44_N7S7853C2D0Ev)();
extern void ABISELECT(_ZThn136_N7S7853C2D0Ev,_ZThn80_N7S7853C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7853C2D1Ev,_ZTv0_n36_N7S7853C2D1Ev)();
extern void ABISELECT(_ZThn152_N7S7853C2D1Ev,_ZThn88_N7S7853C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7853C2D0Ev,_ZTv0_n36_N7S7853C2D0Ev)();
extern void ABISELECT(_ZThn152_N7S7853C2D0Ev,_ZThn88_N7S7853C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7853C2[] = {
  ABISELECT(152,88),
  ABISELECT(136,80),
  ABISELECT(136,80),
  0,
  ABISELECT(120,72),
  ABISELECT(104,64),
  0,
  ABISELECT(88,56),
  ABISELECT(72,44),
  ABISELECT(40,28),
  ABISELECT(16,12),
  ABISELECT(97,61),
  0,
  0,
  ABISELECT(97,61),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C2[0]),
  (VTBL_ENTRY)&_ZN7S7853C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C2D0Ev,
  ABISELECT(8,4),
  ABISELECT(-16,-12),
  ABISELECT(136,76),
  ABISELECT(120,68),
  ABISELECT(120,68),
  ABISELECT(-16,-12),
  ABISELECT(104,60),
  ABISELECT(88,52),
  ABISELECT(-16,-12),
  ABISELECT(72,44),
  ABISELECT(56,32),
  ABISELECT(24,16),
  ABISELECT(81,49),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(81,49),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7853C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N7S7853C2D1Ev,_ZTv0_n68_N7S7853C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N7S7853C2D0Ev,_ZTv0_n68_N7S7853C2D0Ev),
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(-24,-16),
  ABISELECT(64,40),
  ABISELECT(73,45),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  ABISELECT(73,45),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7853C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N7S7853C2D1Ev,_ZTvn4_n68_N7S7853C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N7S7853C2D0Ev,_ZTvn4_n68_N7S7853C2D0Ev),
  (VTBL_ENTRY)&_ZN8S7853C182v1Ev,
  ABISELECT(-40,-28),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-40,-28),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(57,33),
  ABISELECT(-40,-28),
  ABISELECT(-40,-28),
  ABISELECT(80,44),
  ABISELECT(-40,-28),
  ABISELECT(57,33),
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI7S7853C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7853C2D1Ev,_ZTv0_n60_N7S7853C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7853C2D0Ev,_ZTv0_n60_N7S7853C2D0Ev),
  ABISELECT(41,25),
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  ABISELECT(41,25),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI7S7853C2[0]),
  ABISELECT(-72,-44),
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(-72,-44),
  ABISELECT(16,12),
  ABISELECT(25,17),
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  ABISELECT(25,17),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI7S7853C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C2D1Ev,_ZTv0_n44_N7S7853C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C2D0Ev,_ZTv0_n44_N7S7853C2D0Ev),
  ABISELECT(-88,-56),
  ABISELECT(9,5),
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  ABISELECT(9,5),
  ABISELECT(-88,-56),
  (VTBL_ENTRY)&(_ZTI7S7853C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C2D1Ev,_ZTv0_n32_N7S7853C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C2D0Ev,_ZTv0_n32_N7S7853C2D0Ev),
  ABISELECT(-104,-64),
  ABISELECT(-7,-3),
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI7S7853C2[0]),
  ABISELECT(-120,-72),
  ABISELECT(-23,-11),
  ABISELECT(-120,-72),
  ABISELECT(-120,-72),
  ABISELECT(-120,-72),
  ABISELECT(-23,-11),
  ABISELECT(-120,-72),
  (VTBL_ENTRY)&(_ZTI7S7853C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C2D1Ev,_ZTv0_n32_N7S7853C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C2D0Ev,_ZTv0_n32_N7S7853C2D0Ev),
  ABISELECT(-136,-80),
  ABISELECT(-136,-80),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-136,-80),
  ABISELECT(-39,-19),
  ABISELECT(-136,-80),
  ABISELECT(-39,-19),
  ABISELECT(-136,-80),
  (VTBL_ENTRY)&(_ZTI7S7853C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C2D1Ev,_ZTv0_n44_N7S7853C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C2D0Ev,_ZTv0_n44_N7S7853C2D0Ev),
  ABISELECT(-152,-88),
  ABISELECT(-55,-27),
  ABISELECT(-152,-88),
  ABISELECT(-152,-88),
  ABISELECT(-32,-16),
  ABISELECT(-152,-88),
  ABISELECT(-55,-27),
  ABISELECT(-152,-88),
  (VTBL_ENTRY)&(_ZTI7S7853C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7853C2D1Ev,_ZTv0_n36_N7S7853C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7853C2D0Ev,_ZTv0_n36_N7S7853C2D0Ev),
  ABISELECT(-71,-35),
  ABISELECT(-168,-96),
  ABISELECT(-168,-96),
  ABISELECT(-71,-35),
  ABISELECT(-168,-96),
  (VTBL_ENTRY)&(_ZTI7S7853C2[0]),
};
extern VTBL_ENTRY _ZTV7S7853C2[];
extern void _ZN7S7853C3D1Ev();
extern void _ZN7S7853C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7853C3__7S7853C2[] = {
  ABISELECT(136,76),
  ABISELECT(120,68),
  ABISELECT(120,68),
  ABISELECT(-16,-12),
  ABISELECT(104,60),
  ABISELECT(88,52),
  ABISELECT(-16,-12),
  ABISELECT(72,44),
  ABISELECT(56,32),
  ABISELECT(24,16),
  ABISELECT(81,49),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(81,49),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
  (VTBL_ENTRY)&_ZN7S7853C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C3D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7853C97S7853C3__A2__7S7853C2[] = {
  ABISELECT(81,49),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(81,49),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__7S7853C97S7853C3__A2__7S7853C2[] = {
  0,
  ABISELECT(97,61),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
extern void _ZN8S7853C18D1Ev();
extern void _ZN8S7853C18D0Ev();
extern void _ZN8S7853C182v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C187S7853C3__7S7853C2[] = {
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(-24,-16),
  ABISELECT(64,40),
  ABISELECT(73,45),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  ABISELECT(73,45),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C18[0]),
  (VTBL_ENTRY)&_ZN8S7853C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C18D0Ev,
  (VTBL_ENTRY)&_ZN8S7853C182v1Ev,
};
extern void _ZN7S7853C5D1Ev();
extern void _ZN7S7853C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7853C58S7853C187S7853C3__A1__7S7853C2[] = {
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(-24,-16),
  ABISELECT(64,40),
  ABISELECT(73,45),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  ABISELECT(73,45),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&_ZN7S7853C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C5D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev)();
extern void ABISELECT(_ZThn64_N7S7853C5D1Ev,_ZThn40_N7S7853C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev)();
extern void ABISELECT(_ZThn64_N7S7853C5D0Ev,_ZThn40_N7S7853C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C6__7S7853C58S7853C187S7853C3__A1__7S7853C2[] = {
  ABISELECT(-64,-40),
  ABISELECT(9,5),
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  ABISELECT(9,5),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__7S7853C58S7853C187S7853C3__A1__7S7853C2[] = {
  ABISELECT(97,61),
  0,
  0,
  ABISELECT(97,61),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__7S7853C58S7853C187S7853C3__A1__7S7853C2[] = {
  ABISELECT(-104,-64),
  ABISELECT(-7,-3),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev)();
extern void ABISELECT(_ZThn96_N7S7853C5D1Ev,_ZThn56_N7S7853C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev)();
extern void ABISELECT(_ZThn96_N7S7853C5D0Ev,_ZThn56_N7S7853C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__7S7853C58S7853C187S7853C3__A1__7S7853C2[] = {
  ABISELECT(-96,-56),
  ABISELECT(-23,-11),
  ABISELECT(-120,-72),
  ABISELECT(-120,-72),
  ABISELECT(-120,-72),
  ABISELECT(-23,-11),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7853C18D1Ev,_ZTv0_n32_N8S7853C18D1Ev)();
extern void ABISELECT(_ZThn64_N8S7853C18D1Ev,_ZThn40_N8S7853C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7853C18D0Ev,_ZTv0_n32_N8S7853C18D0Ev)();
extern void ABISELECT(_ZThn64_N8S7853C18D0Ev,_ZThn40_N8S7853C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C6__8S7853C187S7853C3__7S7853C2[] = {
  ABISELECT(-64,-40),
  ABISELECT(9,5),
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  ABISELECT(9,5),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S7853C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C18D1Ev,_ZTv0_n32_N8S7853C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C18D0Ev,_ZTv0_n32_N8S7853C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C187S7853C3__7S7853C2[] = {
  ABISELECT(97,61),
  0,
  0,
  ABISELECT(97,61),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI8S7853C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__8S7853C187S7853C3__7S7853C2[] = {
  ABISELECT(-104,-64),
  ABISELECT(-7,-3),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S7853C18[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7853C18D1Ev,_ZTv0_n32_N8S7853C18D1Ev)();
extern void ABISELECT(_ZThn96_N8S7853C18D1Ev,_ZThn56_N8S7853C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7853C18D0Ev,_ZTv0_n32_N8S7853C18D0Ev)();
extern void ABISELECT(_ZThn96_N8S7853C18D0Ev,_ZThn56_N8S7853C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__8S7853C187S7853C3__7S7853C2[] = {
  ABISELECT(-96,-56),
  ABISELECT(-23,-11),
  ABISELECT(-120,-72),
  ABISELECT(-120,-72),
  ABISELECT(-120,-72),
  ABISELECT(-23,-11),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S7853C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C18D1Ev,_ZTv0_n32_N8S7853C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C18D0Ev,_ZTv0_n32_N8S7853C18D0Ev),
};
extern void ABISELECT(_ZTv0_n72_N8S7853C18D1Ev,_ZTv0_n36_N8S7853C18D1Ev)();
extern void ABISELECT(_ZThn128_N8S7853C18D1Ev,_ZThn72_N8S7853C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7853C18D0Ev,_ZTv0_n36_N8S7853C18D0Ev)();
extern void ABISELECT(_ZThn128_N8S7853C18D0Ev,_ZThn72_N8S7853C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C17__8S7853C187S7853C3__7S7853C2[] = {
  ABISELECT(-128,-72),
  ABISELECT(-55,-27),
  ABISELECT(-152,-88),
  ABISELECT(-152,-88),
  ABISELECT(-32,-16),
  ABISELECT(-152,-88),
  ABISELECT(-55,-27),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S7853C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7853C18D1Ev,_ZTv0_n36_N8S7853C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7853C18D0Ev,_ZTv0_n36_N8S7853C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C17__A1__8S7853C187S7853C3__7S7853C2[] = {
  ABISELECT(-71,-35),
  ABISELECT(-168,-96),
  ABISELECT(-168,-96),
  ABISELECT(-71,-35),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI8S7853C18[0]),
};
extern void ABISELECT(_ZTv0_n120_N7S7853C3D1Ev,_ZTv0_n60_N7S7853C3D1Ev)();
extern void ABISELECT(_ZThn24_N7S7853C3D1Ev,_ZThn16_N7S7853C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S7853C3D0Ev,_ZTv0_n60_N7S7853C3D0Ev)();
extern void ABISELECT(_ZThn24_N7S7853C3D0Ev,_ZThn16_N7S7853C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C4__7S7853C3__7S7853C2[] = {
  ABISELECT(-24,-16),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-40,-28),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(57,33),
  ABISELECT(-40,-28),
  ABISELECT(-40,-28),
  ABISELECT(80,44),
  ABISELECT(-40,-28),
  ABISELECT(57,33),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7853C3D1Ev,_ZTv0_n60_N7S7853C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7853C3D0Ev,_ZTv0_n60_N7S7853C3D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7853C3D1Ev,_ZTv0_n44_N7S7853C3D1Ev)();
extern void ABISELECT(_ZThn56_N7S7853C3D1Ev,_ZThn32_N7S7853C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7853C3D0Ev,_ZTv0_n44_N7S7853C3D0Ev)();
extern void ABISELECT(_ZThn56_N7S7853C3D0Ev,_ZThn32_N7S7853C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C5__7S7853C3__7S7853C2[] = {
  ABISELECT(-56,-32),
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(-72,-44),
  ABISELECT(16,12),
  ABISELECT(25,17),
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  ABISELECT(25,17),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C3D1Ev,_ZTv0_n44_N7S7853C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C3D0Ev,_ZTv0_n44_N7S7853C3D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7853C3D1Ev,_ZTv0_n32_N7S7853C3D1Ev)();
extern void ABISELECT(_ZThn72_N7S7853C3D1Ev,_ZThn44_N7S7853C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C3D0Ev,_ZTv0_n32_N7S7853C3D0Ev)();
extern void ABISELECT(_ZThn72_N7S7853C3D0Ev,_ZThn44_N7S7853C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C6__7S7853C3__7S7853C2[] = {
  ABISELECT(-72,-44),
  ABISELECT(9,5),
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  ABISELECT(9,5),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C3D1Ev,_ZTv0_n32_N7S7853C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C3D0Ev,_ZTv0_n32_N7S7853C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__7S7853C3__7S7853C2[] = {
  ABISELECT(97,61),
  0,
  0,
  ABISELECT(97,61),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__7S7853C3__7S7853C2[] = {
  ABISELECT(-104,-64),
  ABISELECT(-7,-3),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7853C3D1Ev,_ZTv0_n32_N7S7853C3D1Ev)();
extern void ABISELECT(_ZThn104_N7S7853C3D1Ev,_ZThn60_N7S7853C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C3D0Ev,_ZTv0_n32_N7S7853C3D0Ev)();
extern void ABISELECT(_ZThn104_N7S7853C3D0Ev,_ZThn60_N7S7853C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__7S7853C3__7S7853C2[] = {
  ABISELECT(-104,-60),
  ABISELECT(-23,-11),
  ABISELECT(-120,-72),
  ABISELECT(-120,-72),
  ABISELECT(-120,-72),
  ABISELECT(-23,-11),
  ABISELECT(-104,-60),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C3D1Ev,_ZTv0_n32_N7S7853C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C3D0Ev,_ZTv0_n32_N7S7853C3D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7853C3D1Ev,_ZTv0_n44_N7S7853C3D1Ev)();
extern void ABISELECT(_ZThn120_N7S7853C3D1Ev,_ZThn68_N7S7853C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7853C3D0Ev,_ZTv0_n44_N7S7853C3D0Ev)();
extern void ABISELECT(_ZThn120_N7S7853C3D0Ev,_ZThn68_N7S7853C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C15__7S7853C3__7S7853C2[] = {
  ABISELECT(-120,-68),
  ABISELECT(-136,-80),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-136,-80),
  ABISELECT(-39,-19),
  ABISELECT(-136,-80),
  ABISELECT(-39,-19),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C3D1Ev,_ZTv0_n44_N7S7853C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C3D0Ev,_ZTv0_n44_N7S7853C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C177S7853C4__A1__7S7853C3__7S7853C2[] = {
  ABISELECT(41,25),
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  ABISELECT(41,25),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
};
extern void ABISELECT(_ZThn8_N7S7853C3D1Ev,_ZThn4_N7S7853C3D1Ev)();
extern void ABISELECT(_ZThn8_N7S7853C3D0Ev,_ZThn4_N7S7853C3D0Ev)();
extern void _ZN8S7853C182v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C18__7S7853C3__7S7853C2[] = {
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(-24,-16),
  ABISELECT(64,40),
  ABISELECT(73,45),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  ABISELECT(73,45),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7853C3D1Ev,_ZThn4_N7S7853C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7853C3D0Ev,_ZThn4_N7S7853C3D0Ev),
  (VTBL_ENTRY)&_ZN8S7853C182v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N7S7853C3D1Ev,_ZTv0_n36_N7S7853C3D1Ev)();
extern void ABISELECT(_ZThn136_N7S7853C3D1Ev,_ZThn76_N7S7853C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7853C3D0Ev,_ZTv0_n36_N7S7853C3D0Ev)();
extern void ABISELECT(_ZThn136_N7S7853C3D0Ev,_ZThn76_N7S7853C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C17__A1__7S7853C3__7S7853C2[] = {
  ABISELECT(-136,-76),
  ABISELECT(-55,-27),
  ABISELECT(-152,-88),
  ABISELECT(-152,-88),
  ABISELECT(-32,-16),
  ABISELECT(-152,-88),
  ABISELECT(-55,-27),
  ABISELECT(-136,-76),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7853C3D1Ev,_ZTv0_n36_N7S7853C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7853C3D0Ev,_ZTv0_n36_N7S7853C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C17__A3__7S7853C3__7S7853C2[] = {
  ABISELECT(-71,-35),
  ABISELECT(-168,-96),
  ABISELECT(-168,-96),
  ABISELECT(-71,-35),
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
};
extern void _ZN7S7853C4D1Ev();
extern void _ZN7S7853C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7853C4__7S7853C2[] = {
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-40,-28),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(57,33),
  ABISELECT(-40,-28),
  ABISELECT(-40,-28),
  ABISELECT(80,44),
  ABISELECT(-40,-28),
  ABISELECT(57,33),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&_ZN7S7853C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C4D0Ev,
};
extern void _ZN8S7853C17D1Ev();
extern void _ZN8S7853C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C177S7853C4__7S7853C2[] = {
  ABISELECT(57,33),
  ABISELECT(-40,-28),
  ABISELECT(-40,-28),
  ABISELECT(80,44),
  ABISELECT(-40,-28),
  ABISELECT(57,33),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
  (VTBL_ENTRY)&_ZN8S7853C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C138S7853C177S7853C4__A1__7S7853C2[] = {
  ABISELECT(-40,-28),
  ABISELECT(57,33),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C138S7853C177S7853C4__A4__7S7853C2[] = {
  ABISELECT(-40,-28),
  ABISELECT(57,33),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C177S7853C4__A1__7S7853C2[] = {
  ABISELECT(41,25),
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  ABISELECT(41,25),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__7S7853C98S7853C177S7853C4__A1__7S7853C2[] = {
  0,
  ABISELECT(97,61),
  ABISELECT(56,36),
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7853C17D1Ev,_ZTv0_n32_N8S7853C17D1Ev)();
extern void ABISELECT(_ZThn80_N8S7853C17D1Ev,_ZThn44_N8S7853C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7853C17D0Ev,_ZTv0_n32_N8S7853C17D0Ev)();
extern void ABISELECT(_ZThn80_N8S7853C17D0Ev,_ZThn44_N8S7853C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C12__8S7853C177S7853C4__7S7853C2[] = {
  ABISELECT(-80,-44),
  ABISELECT(-23,-11),
  ABISELECT(-120,-72),
  ABISELECT(-120,-72),
  ABISELECT(-120,-72),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C17D1Ev,_ZTv0_n32_N8S7853C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C17D0Ev,_ZTv0_n32_N8S7853C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C177S7853C4__7S7853C2[] = {
  ABISELECT(97,61),
  0,
  0,
  ABISELECT(97,61),
  ABISELECT(40,28),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__A__8S7853C177S7853C4__7S7853C2[] = {
  ABISELECT(41,25),
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev)();
extern void ABISELECT(_ZThn32_N7S7853C4D1Ev,_ZThn16_N7S7853C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev)();
extern void ABISELECT(_ZThn32_N7S7853C4D0Ev,_ZThn16_N7S7853C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C5__7S7853C4__7S7853C2[] = {
  ABISELECT(-32,-16),
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(-72,-44),
  ABISELECT(16,12),
  ABISELECT(25,17),
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev)();
extern void ABISELECT(_ZThn48_N7S7853C4D1Ev,_ZThn28_N7S7853C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev)();
extern void ABISELECT(_ZThn48_N7S7853C4D0Ev,_ZThn28_N7S7853C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C6__7S7853C4__7S7853C2[] = {
  ABISELECT(-48,-28),
  ABISELECT(9,5),
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__7S7853C4__7S7853C2[] = {
  ABISELECT(97,61),
  0,
  0,
  ABISELECT(97,61),
  ABISELECT(40,28),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__7S7853C4__7S7853C2[] = {
  ABISELECT(-104,-64),
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev)();
extern void ABISELECT(_ZThn80_N7S7853C4D1Ev,_ZThn44_N7S7853C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev)();
extern void ABISELECT(_ZThn80_N7S7853C4D0Ev,_ZThn44_N7S7853C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__7S7853C4__7S7853C2[] = {
  ABISELECT(-80,-44),
  ABISELECT(-23,-11),
  ABISELECT(-120,-72),
  ABISELECT(-120,-72),
  ABISELECT(-120,-72),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev)();
extern void ABISELECT(_ZThn96_N7S7853C4D1Ev,_ZThn52_N7S7853C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev)();
extern void ABISELECT(_ZThn96_N7S7853C4D0Ev,_ZThn52_N7S7853C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C15__7S7853C4__7S7853C2[] = {
  ABISELECT(-96,-52),
  ABISELECT(-136,-80),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-136,-80),
  ABISELECT(-39,-19),
  ABISELECT(-136,-80),
  ABISELECT(-39,-19),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C17__A1__7S7853C4__7S7853C2[] = {
  ABISELECT(41,25),
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
};
extern void _ZN7S7853C5D1Ev();
extern void _ZN7S7853C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7853C5__7S7853C2[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(-72,-44),
  ABISELECT(16,12),
  ABISELECT(25,17),
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&_ZN7S7853C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C5D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev)();
extern void ABISELECT(_ZThn16_N7S7853C5D1Ev,_ZThn12_N7S7853C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev)();
extern void ABISELECT(_ZThn16_N7S7853C5D0Ev,_ZThn12_N7S7853C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C6__7S7853C5__7S7853C2[] = {
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__7S7853C5__7S7853C2[] = {
  ABISELECT(97,61),
  0,
  0,
  ABISELECT(97,61),
  ABISELECT(72,44),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__7S7853C5__7S7853C2[] = {
  ABISELECT(-104,-64),
  ABISELECT(-7,-3),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev)();
extern void ABISELECT(_ZThn48_N7S7853C5D1Ev,_ZThn28_N7S7853C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev)();
extern void ABISELECT(_ZThn48_N7S7853C5D0Ev,_ZThn28_N7S7853C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__7S7853C5__7S7853C2[] = {
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-120,-72),
  ABISELECT(-120,-72),
  ABISELECT(-120,-72),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev),
};
extern void _ZN7S7853C6D1Ev();
extern void _ZN7S7853C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7853C6__7S7853C2[] = {
  ABISELECT(9,5),
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C6[0]),
  (VTBL_ENTRY)&_ZN7S7853C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C6D0Ev,
};
extern void _ZN8S7853C12D1Ev();
extern void _ZN8S7853C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C127S7853C6__7S7853C2[] = {
  ABISELECT(9,5),
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
  (VTBL_ENTRY)&_ZN8S7853C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C127S7853C6__A1__7S7853C2[] = {
  ABISELECT(-88,-56),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C127S7853C6__7S7853C2[] = {
  ABISELECT(97,61),
  0,
  0,
  ABISELECT(97,61),
  ABISELECT(88,56),
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__7S7853C6__7S7853C2[] = {
  ABISELECT(97,61),
  0,
  0,
  ABISELECT(97,61),
  ABISELECT(88,56),
  (VTBL_ENTRY)&(_ZTI7S7853C6[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__7S7853C2[] = {
  ABISELECT(97,61),
  0,
  0,
  ABISELECT(97,61),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__7S7853C2[] = {
  0,
  ABISELECT(97,61),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__7S7853C2[] = {
  ABISELECT(-104,-64),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C13__A2__7S7853C2[] = {
  ABISELECT(-104,-64),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
extern void _ZN8S7853C12D1Ev();
extern void _ZN8S7853C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__7S7853C2[] = {
  ABISELECT(-23,-11),
  ABISELECT(-120,-72),
  ABISELECT(-120,-72),
  ABISELECT(-120,-72),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
  (VTBL_ENTRY)&_ZN8S7853C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C12__A3__7S7853C2[] = {
  ABISELECT(-120,-72),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C12__A1__7S7853C2[] = {
  ABISELECT(97,61),
  0,
  0,
  ABISELECT(97,61),
  ABISELECT(120,72),
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
};
extern void _ZN8S7853C15D1Ev();
extern void _ZN8S7853C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C15__7S7853C2[] = {
  ABISELECT(-136,-80),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-136,-80),
  ABISELECT(-39,-19),
  ABISELECT(-136,-80),
  ABISELECT(-39,-19),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C15[0]),
  (VTBL_ENTRY)&_ZN8S7853C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C15__7S7853C2[] = {
  ABISELECT(97,61),
  0,
  0,
  ABISELECT(97,61),
  ABISELECT(136,80),
  (VTBL_ENTRY)&(_ZTI8S7853C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__8S7853C15__7S7853C2[] = {
  ABISELECT(-104,-64),
  ABISELECT(-7,-3),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7853C15[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7853C15D1Ev,_ZTv0_n32_N8S7853C15D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7853C15D0Ev,_ZTv0_n32_N8S7853C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7853C6__8S7853C15__7S7853C2[] = {
  ABISELECT(48,24),
  ABISELECT(9,5),
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  ABISELECT(9,5),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S7853C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C15D1Ev,_ZTv0_n32_N8S7853C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C15D0Ev,_ZTv0_n32_N8S7853C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7853C16__7S7853C2[] = {
  ABISELECT(-39,-19),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C16[0]),
};
extern void _ZN8S7853C17D1Ev();
extern void _ZN8S7853C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C17__A1__7S7853C2[] = {
  ABISELECT(-55,-27),
  ABISELECT(-152,-88),
  ABISELECT(-152,-88),
  ABISELECT(-32,-16),
  ABISELECT(-152,-88),
  ABISELECT(-55,-27),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
  (VTBL_ENTRY)&_ZN8S7853C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C138S7853C17__A2__7S7853C2[] = {
  ABISELECT(-152,-88),
  ABISELECT(-55,-27),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C138S7853C17__A5__7S7853C2[] = {
  ABISELECT(-152,-88),
  ABISELECT(-55,-27),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C17__A3__7S7853C2[] = {
  ABISELECT(-71,-35),
  ABISELECT(-168,-96),
  ABISELECT(-168,-96),
  ABISELECT(-71,-35),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__7S7853C98S7853C17__A3__7S7853C2[] = {
  0,
  ABISELECT(97,61),
  ABISELECT(168,96),
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7853C17D1Ev,_ZTv0_n32_N8S7853C17D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7853C17D0Ev,_ZTv0_n32_N8S7853C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7853C12__8S7853C17__A1__7S7853C2[] = {
  ABISELECT(32,16),
  ABISELECT(-23,-11),
  ABISELECT(-120,-72),
  ABISELECT(-120,-72),
  ABISELECT(-120,-72),
  ABISELECT(-23,-11),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C17D1Ev,_ZTv0_n32_N8S7853C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C17D0Ev,_ZTv0_n32_N8S7853C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C17__A1__7S7853C2[] = {
  ABISELECT(97,61),
  0,
  0,
  ABISELECT(97,61),
  ABISELECT(152,88),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__A__8S7853C17__A1__7S7853C2[] = {
  ABISELECT(-71,-35),
  ABISELECT(-168,-96),
  ABISELECT(-168,-96),
  ABISELECT(-71,-35),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
};
static  VTT_ENTRY vtt_S7853C2[] = {
  {&(_ZTV7S7853C2[17]),  17,143},
  {&(_ZTV7S7853C2[37]),  37,143},
  {&(_ZTV7S7853C2[68]),  68,143},
  {&(_ZTV7S7853C2[87]),  87,143},
  {&(_ZTV7S7853C2[97]),  97,143},
  {&(_ZTV7S7853C2[17]),  17,143},
  {&(_ZTV7S7853C2[17]),  17,143},
  {&(_ZTV7S7853C2[103]),  103,143},
  {&(_ZTV7S7853C2[111]),  111,143},
  {&(_ZTV7S7853C2[124]),  124,143},
  {&(_ZTV7S7853C2[124]),  124,143},
  {&(_ZTV7S7853C2[76]),  76,143},
  {&(_ZTV7S7853C2[50]),  50,143},
  {&(_ZTV7S7853C2[135]),  135,143},
  {&(_ZTV7S7853C2[143]),  143,143},
  {&(_tg__ZTV7S7853C3__7S7853C2[16]),  16,18},
  {&(_tg__ZTV7S7853C97S7853C3__A2__7S7853C2[6]),  6,6},
  {&(_tg__ZTV8S7853C10__7S7853C97S7853C3__A2__7S7853C2[4]),  4,4},
  {&(_tg__ZTV8S7853C187S7853C3__7S7853C2[11]),  11,14},
  {&(_tg__ZTV7S7853C58S7853C187S7853C3__A1__7S7853C2[10]),  10,12},
  {&(_tg__ZTV7S7853C6__7S7853C58S7853C187S7853C3__A1__7S7853C2[8]),  8,10},
  {&(_tg__ZTV7S7853C9__7S7853C58S7853C187S7853C3__A1__7S7853C2[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C58S7853C187S7853C3__A1__7S7853C2[6]),  6,6},
  {&(_tg__ZTV8S7853C13__7S7853C58S7853C187S7853C3__A1__7S7853C2[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__7S7853C58S7853C187S7853C3__A1__7S7853C2[8]),  8,10},
  {&(_tg__ZTV7S7853C6__8S7853C187S7853C3__7S7853C2[8]),  8,10},
  {&(_tg__ZTV7S7853C9__8S7853C187S7853C3__7S7853C2[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C187S7853C3__7S7853C2[6]),  6,6},
  {&(_tg__ZTV8S7853C13__8S7853C187S7853C3__7S7853C2[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__8S7853C187S7853C3__7S7853C2[8]),  8,10},
  {&(_tg__ZTV8S7853C17__8S7853C187S7853C3__7S7853C2[9]),  9,11},
  {&(_tg__ZTV7S7853C98S7853C17__A1__8S7853C187S7853C3__7S7853C2[6]),  6,6},
  {&(_tg__ZTV7S7853C4__7S7853C3__7S7853C2[15]),  15,17},
  {&(_tg__ZTV7S7853C5__7S7853C3__7S7853C2[11]),  11,13},
  {&(_tg__ZTV7S7853C6__7S7853C3__7S7853C2[8]),  8,10},
  {&(_tg__ZTV7S7853C9__7S7853C3__7S7853C2[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C3__7S7853C2[6]),  6,6},
  {&(_tg__ZTV8S7853C13__7S7853C3__7S7853C2[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__7S7853C3__7S7853C2[8]),  8,10},
  {&(_tg__ZTV8S7853C15__7S7853C3__7S7853C2[11]),  11,13},
  {&(_tg__ZTV8S7853C15__7S7853C3__7S7853C2[11]),  11,13},
  {&(_tg__ZTV7S7853C98S7853C177S7853C4__A1__7S7853C3__7S7853C2[6]),  6,6},
  {&(_tg__ZTV8S7853C18__7S7853C3__7S7853C2[11]),  11,14},
  {&(_tg__ZTV8S7853C17__A1__7S7853C3__7S7853C2[9]),  9,11},
  {&(_tg__ZTV7S7853C98S7853C17__A3__7S7853C3__7S7853C2[6]),  6,6},
  {&(_tg__ZTV7S7853C4__7S7853C2[14]),  14,16},
  {&(_tg__ZTV8S7853C177S7853C4__7S7853C2[8]),  8,10},
  {&(_tg__ZTV8S7853C138S7853C177S7853C4__A1__7S7853C2[4]),  4,4},
  {&(_tg__ZTV8S7853C108S7853C138S7853C177S7853C4__A4__7S7853C2[4]),  4,4},
  {&(_tg__ZTV7S7853C98S7853C177S7853C4__A1__7S7853C2[6]),  6,6},
  {&(_tg__ZTV8S7853C10__7S7853C98S7853C177S7853C4__A1__7S7853C2[4]),  4,4},
  {&(_tg__ZTV8S7853C12__8S7853C177S7853C4__7S7853C2[8]),  8,10},
  {&(_tg__ZTV7S7853C9__8S7853C177S7853C4__7S7853C2[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C177S7853C4__7S7853C2[6]),  6,6},
  {&(_tg__ZTV7S7853C9__A__8S7853C177S7853C4__7S7853C2[6]),  6,6},
  {&(_tg__ZTV7S7853C5__7S7853C4__7S7853C2[11]),  11,13},
  {&(_tg__ZTV7S7853C6__7S7853C4__7S7853C2[8]),  8,10},
  {&(_tg__ZTV7S7853C9__7S7853C4__7S7853C2[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C4__7S7853C2[6]),  6,6},
  {&(_tg__ZTV8S7853C13__7S7853C4__7S7853C2[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__7S7853C4__7S7853C2[8]),  8,10},
  {&(_tg__ZTV8S7853C15__7S7853C4__7S7853C2[11]),  11,13},
  {&(_tg__ZTV8S7853C15__7S7853C4__7S7853C2[11]),  11,13},
  {&(_tg__ZTV7S7853C98S7853C17__A1__7S7853C4__7S7853C2[6]),  6,6},
  {&(_tg__ZTV7S7853C5__7S7853C2[10]),  10,12},
  {&(_tg__ZTV7S7853C6__7S7853C5__7S7853C2[8]),  8,10},
  {&(_tg__ZTV7S7853C9__7S7853C5__7S7853C2[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C5__7S7853C2[6]),  6,6},
  {&(_tg__ZTV8S7853C13__7S7853C5__7S7853C2[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__7S7853C5__7S7853C2[8]),  8,10},
  {&(_tg__ZTV7S7853C6__7S7853C2[7]),  7,9},
  {&(_tg__ZTV8S7853C127S7853C6__7S7853C2[7]),  7,9},
  {&(_tg__ZTV8S7853C108S7853C127S7853C6__A1__7S7853C2[4]),  4,4},
  {&(_tg__ZTV7S7853C9__8S7853C127S7853C6__7S7853C2[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C127S7853C6__7S7853C2[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C6__7S7853C2[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C6__7S7853C2[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C2[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C2[6]),  6,6},
  {&(_tg__ZTV8S7853C10__7S7853C2[4]),  4,4},
  {&(_tg__ZTV8S7853C13__7S7853C2[4]),  4,4},
  {&(_tg__ZTV8S7853C108S7853C13__A2__7S7853C2[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__7S7853C2[7]),  7,9},
  {&(_tg__ZTV8S7853C108S7853C12__A3__7S7853C2[4]),  4,4},
  {&(_tg__ZTV7S7853C9__8S7853C12__A1__7S7853C2[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C12__A1__7S7853C2[6]),  6,6},
  {&(_tg__ZTV8S7853C15__7S7853C2[10]),  10,12},
  {&(_tg__ZTV7S7853C9__8S7853C15__7S7853C2[6]),  6,6},
  {&(_tg__ZTV8S7853C15__7S7853C2[10]),  10,12},
  {&(_tg__ZTV8S7853C13__8S7853C15__7S7853C2[4]),  4,4},
  {&(_tg__ZTV7S7853C6__8S7853C15__7S7853C2[8]),  8,10},
  {&(_tg__ZTV7S7853C9__8S7853C15__7S7853C2[6]),  6,6},
  {&(_tg__ZTV8S7853C16__7S7853C2[3]),  3,3},
  {&(_tg__ZTV8S7853C17__A1__7S7853C2[8]),  8,10},
  {&(_tg__ZTV8S7853C138S7853C17__A2__7S7853C2[4]),  4,4},
  {&(_tg__ZTV8S7853C108S7853C138S7853C17__A5__7S7853C2[4]),  4,4},
  {&(_tg__ZTV7S7853C98S7853C17__A3__7S7853C2[6]),  6,6},
  {&(_tg__ZTV8S7853C10__7S7853C98S7853C17__A3__7S7853C2[4]),  4,4},
  {&(_tg__ZTV8S7853C12__8S7853C17__A1__7S7853C2[8]),  8,10},
  {&(_tg__ZTV7S7853C9__8S7853C17__A1__7S7853C2[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C17__A1__7S7853C2[6]),  6,6},
  {&(_tg__ZTV7S7853C9__A__8S7853C17__A1__7S7853C2[6]),  6,6},
};
extern VTBL_ENTRY _ZTI7S7853C2[];
extern  VTBL_ENTRY _ZTV7S7853C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C2[];
static VTBL_ENTRY alt_thunk_names58[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7853C4D0Ev,_ZThn44_N7S7853C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7853C4D0Ev,_ZThn28_N7S7853C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7853C4D1Ev,_ZThn44_N7S7853C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7853C4D1Ev,_ZThn28_N7S7853C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7853C4D0Ev,_ZThn52_N7S7853C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7853C4D0Ev,_ZThn16_N7S7853C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7853C4D1Ev,_ZThn52_N7S7853C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7853C4D1Ev,_ZThn16_N7S7853C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7853C17D0Ev,_ZTv0_n32_N8S7853C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7853C17D0Ev,_ZThn44_N8S7853C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7853C17D1Ev,_ZTv0_n32_N8S7853C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7853C17D1Ev,_ZThn44_N8S7853C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7853C3D0Ev,_ZTv0_n36_N7S7853C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7853C3D0Ev,_ZThn76_N7S7853C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7853C3D1Ev,_ZTv0_n36_N7S7853C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7853C3D1Ev,_ZThn76_N7S7853C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C3D0Ev,_ZTv0_n32_N7S7853C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7853C3D0Ev,_ZThn60_N7S7853C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7853C3D0Ev,_ZThn44_N7S7853C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C3D1Ev,_ZTv0_n32_N7S7853C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7853C3D1Ev,_ZThn60_N7S7853C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7853C3D1Ev,_ZThn44_N7S7853C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7853C3D0Ev,_ZTv0_n44_N7S7853C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7853C3D0Ev,_ZThn68_N7S7853C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7853C3D0Ev,_ZThn32_N7S7853C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7853C3D1Ev,_ZTv0_n44_N7S7853C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7853C3D1Ev,_ZThn68_N7S7853C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7853C3D1Ev,_ZThn32_N7S7853C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7853C3D0Ev,_ZTv0_n60_N7S7853C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7853C3D0Ev,_ZThn16_N7S7853C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7853C3D1Ev,_ZTv0_n60_N7S7853C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7853C3D1Ev,_ZThn16_N7S7853C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7853C18D0Ev,_ZTv0_n36_N8S7853C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7853C18D0Ev,_ZThn72_N8S7853C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7853C18D1Ev,_ZTv0_n36_N8S7853C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7853C18D1Ev,_ZThn72_N8S7853C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7853C18D0Ev,_ZTv0_n32_N8S7853C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7853C18D0Ev,_ZThn56_N8S7853C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7853C18D0Ev,_ZThn40_N8S7853C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7853C18D1Ev,_ZTv0_n32_N8S7853C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7853C18D1Ev,_ZThn56_N8S7853C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7853C18D1Ev,_ZThn40_N8S7853C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7853C5D0Ev,_ZThn28_N7S7853C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7853C5D0Ev,_ZThn12_N7S7853C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7853C5D0Ev,_ZThn56_N7S7853C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7853C5D0Ev,_ZThn40_N7S7853C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7853C5D1Ev,_ZThn28_N7S7853C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7853C5D1Ev,_ZThn12_N7S7853C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7853C5D1Ev,_ZThn56_N7S7853C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7853C5D1Ev,_ZThn40_N7S7853C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7853C2D0Ev,_ZTv0_n36_N7S7853C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S7853C2D0Ev,_ZThn88_N7S7853C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7853C2D1Ev,_ZTv0_n36_N7S7853C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S7853C2D1Ev,_ZThn88_N7S7853C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C2D0Ev,_ZTv0_n32_N7S7853C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7853C2D0Ev,_ZThn72_N7S7853C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7853C2D0Ev,_ZThn56_N7S7853C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C2D1Ev,_ZTv0_n32_N7S7853C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7853C2D1Ev,_ZThn72_N7S7853C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7853C2D1Ev,_ZThn56_N7S7853C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7853C2D0Ev,_ZTv0_n44_N7S7853C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7853C2D0Ev,_ZThn80_N7S7853C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7853C2D0Ev,_ZThn44_N7S7853C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7853C2D1Ev,_ZTv0_n44_N7S7853C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7853C2D1Ev,_ZThn80_N7S7853C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7853C2D1Ev,_ZThn44_N7S7853C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7853C2D0Ev,_ZTv0_n60_N7S7853C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7853C2D0Ev,_ZThn28_N7S7853C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7853C2D1Ev,_ZTv0_n60_N7S7853C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7853C2D1Ev,_ZThn28_N7S7853C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N7S7853C2D0Ev,_ZTv0_n68_N7S7853C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7853C2D0Ev,_ZThn12_N7S7853C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N7S7853C2D1Ev,_ZTv0_n68_N7S7853C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7853C2D1Ev,_ZThn12_N7S7853C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7853C2 = {  "S7853C2", // class name
  bases_S7853C2, 53,
  &(vtc_S7853C2[0]), // expected_vtbl_contents
  &(vtt_S7853C2[0]), // expected_vtt_contents
  ABISELECT(184,104), // object size
  NSPAIRA(_ZTI7S7853C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7853C2),143, //virtual function table var
  17, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7853C2),102, //virtual table table var
  25, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names58,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7853C19  : S7853C6 {
  virtual  ~S7853C19(); // _ZN8S7853C19D2Ev
  S7853C19(); // tgen
};
//SIG(-1 S7853C19) C1{ BC2{ VBC3{ m} VBC4{ m} VBC5{ BC3 VBC6{ VBC3 BC4 VBC7{ m}} VBC4} BC7 BC8{ BC4 VBC3 VBC7 BC6 VBC5 vd} vd} vd}


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

static void Test_S7853C19()
{
  extern Class_Descriptor cd_S7853C19;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S7853C19, buf);
    S7853C19 *dp, &lv = *(dp=new (buf) S7853C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S7853C19)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7853C19)");
    /*is_ambiguous_... S7853C6::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C6*), 0, "S7853C19");
    /*is_ambiguous_... S7853C19::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*), 0, "S7853C19");
    /*is_ambiguous_... S7853C12::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C12*)(S7853C6*), 0, "S7853C19");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C12*)(S7853C6*), 0, "S7853C19");
    /*is_ambiguous_... S7853C6::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C6*), ABISELECT(9,5), "S7853C19");
    /*is_ambiguous_... S7853C9::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C9*), ABISELECT(9,5), "S7853C19");
    /*is_ambiguous_... S7853C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C9*), ABISELECT(16,8), "S7853C19");
    /*is_ambiguous_... S7853C19::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*), ABISELECT(16,8), "S7853C19");
    /*is_ambiguous_... S7853C19::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*), ABISELECT(24,12), "S7853C19");
    check_base_class_offset(lv, (S7856C12*)(S7853C12*)(S7853C6*), ABISELECT(24,12), "S7853C19");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C12*)(S7853C6*), ABISELECT(24,12), "S7853C19");
    check_base_class_offset(lv, (S7853C10*)(S7853C9*), ABISELECT(16,8), "S7853C19");
    check_base_class_offset(lv, (S7853C9*)(S7853C6*), ABISELECT(16,8), "S7853C19");
    check_base_class_offset(lv, (S7853C9*)(S7853C12*)(S7853C6*), ABISELECT(16,8), "S7853C19");
    /*is_ambiguous_... S7853C6::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C6*), 0, "S7853C19");
    /*is_ambiguous_... S7853C12::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C12*)(S7853C6*), ABISELECT(8,4), "S7853C19");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C12*)(S7853C6*), 0, "S7853C19");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C12*)(S7853C6*), 0, "S7853C19");
    check_base_class_offset(lv, (S7853C12*)(S7853C6*), 0, "S7853C19");
    check_base_class_offset(lv, (S7853C6*), 0, "S7853C19");
    test_class_info(&lv, &cd_S7853C19);
    dp->~S7853C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7853C19(Test_S7853C19, "S7853C19", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S7853C19C1Ev();
extern void _ZN8S7853C19D2Ev();
Name_Map name_map_S7853C19[] = {
  NSPAIR(_ZN8S7853C19C1Ev),
  NSPAIR(_ZN8S7853C19D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C9;
extern VTBL_ENTRY _ZTI7S7853C9[];
extern  VTBL_ENTRY _ZTV7S7853C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C12;
extern VTBL_ENTRY _ZTI8S7853C12[];
extern  VTBL_ENTRY _ZTV8S7853C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C12[];
extern Class_Descriptor cd_S7853C6;
extern VTBL_ENTRY _ZTI7S7853C6[];
extern  VTBL_ENTRY _ZTV7S7853C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C6[];
static Base_Class bases_S7853C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7853C10,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7853C9,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7853C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7853C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7853C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7853C19[];
extern void _ZN8S7853C19D1Ev();
extern void _ZN8S7853C19D0Ev();
static  VTBL_ENTRY vtc_S7853C19[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C19[0]),
  (VTBL_ENTRY)&_ZN8S7853C19D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C19D0Ev,
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7853C19[0]),
};
extern VTBL_ENTRY _ZTV8S7853C19[];
extern void _ZN7S7853C6D1Ev();
extern void _ZN7S7853C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7853C6__8S7853C19[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C6[0]),
  (VTBL_ENTRY)&_ZN7S7853C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C6D0Ev,
};
extern void _ZN8S7853C12D1Ev();
extern void _ZN8S7853C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C127S7853C6__8S7853C19[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
  (VTBL_ENTRY)&_ZN8S7853C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C127S7853C6__A1__8S7853C19[] = {
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C127S7853C6__8S7853C19[] = {
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__7S7853C6__8S7853C19[] = {
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7853C6[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C19[] = {
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__8S7853C19[] = {
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTT_ENTRY vtt_S7853C19[] = {
  {&(_ZTV8S7853C19[7]),  7,15},
  {&(_tg__ZTV7S7853C6__8S7853C19[7]),  7,9},
  {&(_tg__ZTV8S7853C127S7853C6__8S7853C19[7]),  7,9},
  {&(_tg__ZTV8S7853C108S7853C127S7853C6__A1__8S7853C19[4]),  4,4},
  {&(_tg__ZTV7S7853C9__8S7853C127S7853C6__8S7853C19[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C127S7853C6__8S7853C19[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C6__8S7853C19[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C6__8S7853C19[6]),  6,6},
  {&(_ZTV8S7853C19[15]),  15,15},
  {&(_ZTV8S7853C19[15]),  15,15},
  {&(_tg__ZTV7S7853C9__8S7853C19[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C19[6]),  6,6},
  {&(_tg__ZTV8S7853C10__8S7853C19[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S7853C19[];
extern  VTBL_ENTRY _ZTV8S7853C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C19[];
Class_Descriptor cd_S7853C19 = {  "S7853C19", // class name
  bases_S7853C19, 13,
  &(vtc_S7853C19[0]), // expected_vtbl_contents
  &(vtt_S7853C19[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S7853C19),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S7853C19),15, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7853C19),13, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7853C21  : virtual S7853C6 , virtual S7853C4 {
  virtual  ~S7853C21(); // _ZN8S7853C21D2Ev
  S7853C21(); // tgen
};
//SIG(-1 S7853C21) C1{ VBC2{ VBC3{ m} VBC4{ m} VBC5{ BC3 VBC6{ VBC3 BC4 VBC7{ m}} VBC4} BC7 BC8{ BC4 VBC3 VBC7 BC6 VBC5 vd} vd} VBC9{ VBC10{ VBC2 VBC11{ BC7 BC4 BC6 Fi} VBC8 vd Fi[2]} VBC12{ m} VBC13{ VBC6 VBC14{ VBC4} VBC11 BC7 VBC2 vd Fi} BC15{ VBC8 BC11 BC5 BC7 vd} vd} vd}


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

static void Test_S7853C21()
{
  extern Class_Descriptor cd_S7853C21;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,17)];
    init_test(&cd_S7853C21, buf);
    S7853C21 *dp, &lv = *(dp=new (buf) S7853C21());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,64), "sizeof(S7853C21)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7853C21)");
    /*is_ambiguous_... S7853C6::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C6*), ABISELECT(17,9), "S7853C21");
    /*is_ambiguous_... S7853C21::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*), ABISELECT(17,9), "S7853C21");
    /*is_ambiguous_... S7853C12::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C12*)(S7853C6*), ABISELECT(17,9), "S7853C21");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C12*)(S7853C6*), ABISELECT(17,9), "S7853C21");
    /*is_ambiguous_... S7853C21::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C13*), ABISELECT(17,9), "S7853C21");
    /*is_ambiguous_... S7853C21::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C12*), ABISELECT(17,9), "S7853C21");
    /*is_ambiguous_... S7853C21::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C12*), ABISELECT(17,9), "S7853C21");
    check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(17,9), "S7853C21");
    /*is_ambiguous_... S7853C6::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C6*), ABISELECT(17,9), "S7853C21");
    /*is_ambiguous_... S7853C21::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C9*), ABISELECT(17,9), "S7853C21");
    check_base_class_offset(lv, (S7856C15*)(S7853C16*), ABISELECT(17,9), "S7853C21");
    /*is_ambiguous_... S7853C17::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C9*)(S7853C17*)(S7853C4*), ABISELECT(17,9), "S7853C21");
    /*is_ambiguous_... S7853C21::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C9*), 0, "S7853C21");
    /*is_ambiguous_... S7853C21::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*), 0, "S7853C21");
    /*is_ambiguous_... S7853C21::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*), 0, "S7853C21");
    check_base_class_offset(lv, (S7856C12*)(S7853C12*)(S7853C6*), 0, "S7853C21");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C12*)(S7853C6*), 0, "S7853C21");
    /*is_ambiguous_... S7853C21::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C13*), 0, "S7853C21");
    /*is_ambiguous_... S7853C21::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C12*), 0, "S7853C21");
    /*is_ambiguous_... S7853C21::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C12*), 0, "S7853C21");
    check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C13*)(S7853C17*)(S7853C4*), 0, "S7853C21");
    /*is_ambiguous_... S7853C21::S7853C9 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C9*), 0, "S7853C21");
    /*is_ambiguous_... S7853C15::S7853C10 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C15*), 0, "S7853C21");
    /*is_ambiguous_... S7853C17::S7853C9 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C9*)(S7853C17*)(S7853C4*), 0, "S7853C21");
    check_base_class_offset(lv, (S7853C9*)(S7853C6*), 0, "S7853C21");
    check_base_class_offset(lv, (S7853C9*)(S7853C12*)(S7853C6*), 0, "S7853C21");
    /*is_ambiguous_... S7853C21::S7853C12 */ AMB_check_base_class_offset(lv, (S7853C9*)(S7853C12*), 0, "S7853C21");
    /*is_ambiguous_... S7853C6::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C6*), ABISELECT(8,4), "S7853C21");
    /*is_ambiguous_... S7853C12::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C12*)(S7853C6*), ABISELECT(16,8), "S7853C21");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C12*)(S7853C6*), ABISELECT(8,4), "S7853C21");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C12*)(S7853C6*), ABISELECT(8,4), "S7853C21");
    check_base_class_offset(lv, (S7853C12*)(S7853C6*), ABISELECT(8,4), "S7853C21");
    check_base_class_offset(lv, (S7853C6*), ABISELECT(8,4), "S7853C21");
    check_base_class_offset(lv, (S7853C6*)(S7853C5*), ABISELECT(8,4), "S7853C21");
    check_base_class_offset(lv, (S7853C6*)(S7853C15*), ABISELECT(8,4), "S7853C21");
    /*is_ambiguous_... S7853C21::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C13*), ABISELECT(72,40), "S7853C21");
    /*is_ambiguous_... S7853C21::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C13*), ABISELECT(80,44), "S7853C21");
    /*is_ambiguous_... S7853C21::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C13*), ABISELECT(72,40), "S7853C21");
    /*is_ambiguous_... S7853C21::S7853C13 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C13*), ABISELECT(72,40), "S7853C21");
    check_base_class_offset(lv, (S7853C13*)(S7853C5*), ABISELECT(72,40), "S7853C21");
    check_base_class_offset(lv, (S7853C13*)(S7853C15*), ABISELECT(72,40), "S7853C21");
    /*is_ambiguous_... S7853C21::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C12*), ABISELECT(96,52), "S7853C21");
    /*is_ambiguous_... S7853C21::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C12*), ABISELECT(88,48), "S7853C21");
    /*is_ambiguous_... S7853C21::S7853C12 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C12*), ABISELECT(88,48), "S7853C21");
    /*is_ambiguous_... S7853C5::S7853C12 */ AMB_check_base_class_offset(lv, (S7853C12*)(S7853C5*), ABISELECT(88,48), "S7853C21");
    check_base_class_offset(lv, (S7853C12*)(S7853C17*)(S7853C4*), ABISELECT(88,48), "S7853C21");
    check_base_class_offset(lv, (S7853C5*)(S7853C4*), ABISELECT(56,28), "S7853C21");
    check_base_class_offset(lv, (S7856C9_nt*)(S7853C4*), 0, "S7853C21");
    check_base_class_offset(lv, (S7853C16*)(S7853C15*), ABISELECT(104,56), "S7853C21");
    /*is_ambiguous_... S7853C15::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C15*), ABISELECT(104,56), "S7853C21");
    check_base_class_offset(lv, (S7853C15*)(S7853C4*), ABISELECT(104,56), "S7853C21");
    /*is_ambiguous_... S7853C13::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(24,12), "S7853C21");
    /*is_ambiguous_... S7853C13::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(32,16), "S7853C21");
    check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(24,12), "S7853C21");
    check_base_class_offset(lv, (S7853C10*)(S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(24,12), "S7853C21");
    check_base_class_offset(lv, (S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(24,12), "S7853C21");
    /*is_ambiguous_... S7853C17::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C9*)(S7853C17*)(S7853C4*), ABISELECT(40,20), "S7853C21");
    /*is_ambiguous_... S7853C17::S7853C9 */ AMB_check_base_class_offset(lv, (S7853C9*)(S7853C17*)(S7853C4*), ABISELECT(40,20), "S7853C21");
    /*is_ambiguous_... S7853C17::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C17*)(S7853C4*), ABISELECT(48,24), "S7853C21");
    check_base_class_offset(lv, (S7853C17*)(S7853C4*), ABISELECT(24,12), "S7853C21");
    check_base_class_offset(lv, (S7853C4*), ABISELECT(24,12), "S7853C21");
    test_class_info(&lv, &cd_S7853C21);
    dp->~S7853C21();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7853C21(Test_S7853C21, "S7853C21", ABISELECT(120,64));

#else // __cplusplus

extern void _ZN8S7853C21C1Ev();
extern void _ZN8S7853C21D2Ev();
Name_Map name_map_S7853C21[] = {
  NSPAIR(_ZN8S7853C21C1Ev),
  NSPAIR(_ZN8S7853C21D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C9;
extern VTBL_ENTRY _ZTI7S7853C9[];
extern  VTBL_ENTRY _ZTV7S7853C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C12;
extern VTBL_ENTRY _ZTI8S7853C12[];
extern  VTBL_ENTRY _ZTV8S7853C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C12[];
extern Class_Descriptor cd_S7853C6;
extern VTBL_ENTRY _ZTI7S7853C6[];
extern  VTBL_ENTRY _ZTV7S7853C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C6[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C13;
extern VTBL_ENTRY _ZTI8S7853C13[];
extern  VTBL_ENTRY _ZTV8S7853C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C13[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C12;
extern VTBL_ENTRY _ZTI8S7853C12[];
extern  VTBL_ENTRY _ZTV8S7853C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C12[];
extern Class_Descriptor cd_S7853C5;
extern VTBL_ENTRY _ZTI7S7853C5[];
extern  VTBL_ENTRY _ZTV7S7853C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C5[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7853C16;
extern VTBL_ENTRY _ZTI8S7853C16[];
extern  VTBL_ENTRY _ZTV8S7853C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C16[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7853C15;
extern VTBL_ENTRY _ZTI8S7853C15[];
extern  VTBL_ENTRY _ZTV8S7853C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C13;
extern VTBL_ENTRY _ZTI8S7853C13[];
extern  VTBL_ENTRY _ZTV8S7853C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C13[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7853C9;
extern VTBL_ENTRY _ZTI7S7853C9[];
extern  VTBL_ENTRY _ZTV7S7853C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7853C17;
extern VTBL_ENTRY _ZTI8S7853C17[];
extern  VTBL_ENTRY _ZTV8S7853C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C17[];
extern Class_Descriptor cd_S7853C4;
extern VTBL_ENTRY _ZTI7S7853C4[];
extern  VTBL_ENTRY _ZTV7S7853C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C4[];
static Base_Class bases_S7853C21[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    ABISELECT(17,9), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(17,9), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7853C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7853C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7853C12,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7853C6,    ABISELECT(8,4), //bcp->offset
    17, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7853C13,    ABISELECT(72,40), //bcp->offset
    63, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7853C12,    ABISELECT(88,48), //bcp->offset
    67, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7853C5,    ABISELECT(56,28), //bcp->offset
    50, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S7853C16,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7853C15,    ABISELECT(104,56), //bcp->offset
    77, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7853C13,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S7853C9,    ABISELECT(40,20), //bcp->offset
    44, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7853C17,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S7853C4,    ABISELECT(24,12), //bcp->offset
    27, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7853C21[];
extern void _ZN8S7853C21D1Ev();
extern void _ZN8S7853C21D0Ev();
extern void ABISELECT(_ZTv0_n64_N8S7853C21D1Ev,_ZTv0_n32_N8S7853C21D1Ev)();
extern void ABISELECT(_ZThn8_N8S7853C21D1Ev,_ZThn4_N8S7853C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7853C21D0Ev,_ZTv0_n32_N8S7853C21D0Ev)();
extern void ABISELECT(_ZThn8_N8S7853C21D0Ev,_ZThn4_N8S7853C21D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S7853C21D1Ev,_ZTv0_n60_N8S7853C21D1Ev)();
extern void ABISELECT(_ZThn24_N8S7853C21D1Ev,_ZThn12_N8S7853C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S7853C21D0Ev,_ZTv0_n60_N8S7853C21D0Ev)();
extern void ABISELECT(_ZThn24_N8S7853C21D0Ev,_ZThn12_N8S7853C21D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7853C21D1Ev,_ZTv0_n44_N8S7853C21D1Ev)();
extern void ABISELECT(_ZThn56_N8S7853C21D1Ev,_ZThn28_N8S7853C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7853C21D0Ev,_ZTv0_n44_N8S7853C21D0Ev)();
extern void ABISELECT(_ZThn56_N8S7853C21D0Ev,_ZThn28_N8S7853C21D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7853C21D1Ev,_ZTv0_n32_N8S7853C21D1Ev)();
extern void ABISELECT(_ZThn88_N8S7853C21D1Ev,_ZThn48_N8S7853C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7853C21D0Ev,_ZTv0_n32_N8S7853C21D0Ev)();
extern void ABISELECT(_ZThn88_N8S7853C21D0Ev,_ZThn48_N8S7853C21D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7853C21D1Ev,_ZTv0_n44_N8S7853C21D1Ev)();
extern void ABISELECT(_ZThn104_N8S7853C21D1Ev,_ZThn56_N8S7853C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7853C21D0Ev,_ZTv0_n44_N8S7853C21D0Ev)();
extern void ABISELECT(_ZThn104_N8S7853C21D0Ev,_ZThn56_N8S7853C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7853C21[] = {
  ABISELECT(104,56),
  ABISELECT(104,56),
  0,
  ABISELECT(88,48),
  ABISELECT(72,40),
  ABISELECT(56,28),
  ABISELECT(24,12),
  0,
  ABISELECT(8,4),
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C21[0]),
  (VTBL_ENTRY)&_ZN8S7853C21D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C21D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7853C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C21D1Ev,_ZTv0_n32_N8S7853C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C21D0Ev,_ZTv0_n32_N8S7853C21D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(80,44),
  ABISELECT(80,44),
  ABISELECT(-24,-12),
  ABISELECT(48,28),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(-7,-3),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(64,36),
  ABISELECT(-24,-12),
  ABISELECT(-7,-3),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7853C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7853C21D1Ev,_ZTv0_n60_N8S7853C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7853C21D0Ev,_ZTv0_n60_N8S7853C21D0Ev),
  ABISELECT(-23,-11),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-23,-11),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S7853C21[0]),
  ABISELECT(-56,-28),
  ABISELECT(32,20),
  ABISELECT(16,12),
  ABISELECT(-56,-28),
  ABISELECT(-48,-24),
  ABISELECT(-39,-19),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-39,-19),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S7853C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7853C21D1Ev,_ZTv0_n44_N8S7853C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7853C21D0Ev,_ZTv0_n44_N8S7853C21D0Ev),
  ABISELECT(-72,-40),
  ABISELECT(-55,-31),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S7853C21[0]),
  ABISELECT(-88,-48),
  ABISELECT(-71,-39),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-71,-39),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S7853C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C21D1Ev,_ZTv0_n32_N8S7853C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C21D0Ev,_ZTv0_n32_N8S7853C21D0Ev),
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  ABISELECT(-96,-52),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-104,-56),
  ABISELECT(-87,-47),
  ABISELECT(-104,-56),
  ABISELECT(-87,-47),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S7853C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7853C21D1Ev,_ZTv0_n44_N8S7853C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7853C21D0Ev,_ZTv0_n44_N8S7853C21D0Ev),
};
extern VTBL_ENTRY _ZTV8S7853C21[];
extern void _ZN7S7853C6D1Ev();
extern void _ZN7S7853C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7853C6__8S7853C21[] = {
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C6[0]),
  (VTBL_ENTRY)&_ZN7S7853C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C6D0Ev,
};
extern void _ZN8S7853C12D1Ev();
extern void _ZN8S7853C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C127S7853C6__8S7853C21[] = {
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
  (VTBL_ENTRY)&_ZN8S7853C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C127S7853C6__A1__8S7853C21[] = {
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C127S7853C6__8S7853C21[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__7S7853C6__8S7853C21[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI7S7853C6[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C21[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__8S7853C21[] = {
  0,
  ABISELECT(17,9),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
extern void _ZN7S7853C4D1Ev();
extern void _ZN7S7853C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7853C4__8S7853C21[] = {
  ABISELECT(80,44),
  ABISELECT(80,44),
  ABISELECT(-24,-12),
  ABISELECT(48,28),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(-7,-3),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(64,36),
  ABISELECT(-24,-12),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&_ZN7S7853C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C4D0Ev,
};
extern void _ZN8S7853C17D1Ev();
extern void _ZN8S7853C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C177S7853C4__8S7853C21[] = {
  ABISELECT(-7,-3),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(64,36),
  ABISELECT(-24,-12),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
  (VTBL_ENTRY)&_ZN8S7853C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C138S7853C177S7853C4__A1__8S7853C21[] = {
  ABISELECT(-24,-12),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C138S7853C177S7853C4__A4__8S7853C21[] = {
  ABISELECT(-24,-12),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C177S7853C4__A1__8S7853C21[] = {
  ABISELECT(-23,-11),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__7S7853C98S7853C177S7853C4__A1__8S7853C21[] = {
  0,
  ABISELECT(17,9),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7853C17D1Ev,_ZTv0_n32_N8S7853C17D1Ev)();
extern void ABISELECT(_ZThn64_N8S7853C17D1Ev,_ZThn36_N8S7853C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7853C17D0Ev,_ZTv0_n32_N8S7853C17D0Ev)();
extern void ABISELECT(_ZThn64_N8S7853C17D0Ev,_ZThn36_N8S7853C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C12__8S7853C177S7853C4__8S7853C21[] = {
  ABISELECT(-64,-36),
  ABISELECT(-71,-39),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-71,-39),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C17D1Ev,_ZTv0_n32_N8S7853C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C17D0Ev,_ZTv0_n32_N8S7853C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C177S7853C4__8S7853C21[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__A__8S7853C177S7853C4__8S7853C21[] = {
  ABISELECT(-23,-11),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-23,-11),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev)();
extern void ABISELECT(_ZThn32_N7S7853C4D1Ev,_ZThn16_N7S7853C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev)();
extern void ABISELECT(_ZThn32_N7S7853C4D0Ev,_ZThn16_N7S7853C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C5__7S7853C4__8S7853C21[] = {
  ABISELECT(-32,-16),
  ABISELECT(32,20),
  ABISELECT(16,12),
  ABISELECT(-56,-28),
  ABISELECT(-48,-24),
  ABISELECT(-39,-19),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-39,-19),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7853C6__7S7853C4__8S7853C21[] = {
  ABISELECT(16,8),
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__7S7853C4__8S7853C21[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__7S7853C4__8S7853C21[] = {
  ABISELECT(-72,-40),
  ABISELECT(-55,-31),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev)();
extern void ABISELECT(_ZThn64_N7S7853C4D1Ev,_ZThn36_N7S7853C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev)();
extern void ABISELECT(_ZThn64_N7S7853C4D0Ev,_ZThn36_N7S7853C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__7S7853C4__8S7853C21[] = {
  ABISELECT(-64,-36),
  ABISELECT(-71,-39),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-71,-39),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev)();
extern void ABISELECT(_ZThn80_N7S7853C4D1Ev,_ZThn44_N7S7853C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev)();
extern void ABISELECT(_ZThn80_N7S7853C4D0Ev,_ZThn44_N7S7853C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C15__7S7853C4__8S7853C21[] = {
  ABISELECT(-80,-44),
  ABISELECT(-104,-56),
  ABISELECT(-96,-52),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-104,-56),
  ABISELECT(-87,-47),
  ABISELECT(-104,-56),
  ABISELECT(-87,-47),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C17__A1__7S7853C4__8S7853C21[] = {
  ABISELECT(-23,-11),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-23,-11),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
};
extern void _ZN7S7853C5D1Ev();
extern void _ZN7S7853C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7853C5__8S7853C21[] = {
  ABISELECT(32,20),
  ABISELECT(16,12),
  ABISELECT(-56,-28),
  ABISELECT(-48,-24),
  ABISELECT(-39,-19),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-39,-19),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&_ZN7S7853C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C5D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7853C6__7S7853C5__8S7853C21[] = {
  ABISELECT(48,24),
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__7S7853C5__8S7853C21[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__7S7853C5__8S7853C21[] = {
  ABISELECT(-72,-40),
  ABISELECT(-55,-31),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev)();
extern void ABISELECT(_ZThn32_N7S7853C5D1Ev,_ZThn20_N7S7853C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev)();
extern void ABISELECT(_ZThn32_N7S7853C5D0Ev,_ZThn20_N7S7853C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__7S7853C5__8S7853C21[] = {
  ABISELECT(-32,-20),
  ABISELECT(-71,-39),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-71,-39),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__8S7853C21[] = {
  ABISELECT(-72,-40),
  ABISELECT(-55,-31),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C13__A2__8S7853C21[] = {
  ABISELECT(-72,-40),
  ABISELECT(-55,-31),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
extern void _ZN8S7853C12D1Ev();
extern void _ZN8S7853C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__8S7853C21[] = {
  ABISELECT(-71,-39),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-71,-39),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
  (VTBL_ENTRY)&_ZN8S7853C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C12__A3__8S7853C21[] = {
  ABISELECT(-88,-48),
  ABISELECT(-71,-39),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C12__A1__8S7853C21[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
};
extern void _ZN8S7853C15D1Ev();
extern void _ZN8S7853C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C15__8S7853C21[] = {
  ABISELECT(-104,-56),
  ABISELECT(-96,-52),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-104,-56),
  ABISELECT(-87,-47),
  ABISELECT(-104,-56),
  ABISELECT(-87,-47),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C15[0]),
  (VTBL_ENTRY)&_ZN8S7853C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C15__8S7853C21[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  ABISELECT(104,56),
  (VTBL_ENTRY)&(_ZTI8S7853C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__8S7853C15__8S7853C21[] = {
  ABISELECT(-72,-40),
  ABISELECT(-55,-31),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7853C15[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7853C15D1Ev,_ZTv0_n32_N8S7853C15D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7853C15D0Ev,_ZTv0_n32_N8S7853C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7853C6__8S7853C15__8S7853C21[] = {
  ABISELECT(96,52),
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  ABISELECT(96,52),
  (VTBL_ENTRY)&(_ZTI8S7853C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C15D1Ev,_ZTv0_n32_N8S7853C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C15D0Ev,_ZTv0_n32_N8S7853C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7853C16__8S7853C21[] = {
  ABISELECT(-87,-47),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C16[0]),
};
static  VTT_ENTRY vtt_S7853C21[] = {
  {&(_ZTV8S7853C21[15]),  15,90},
  {&(_ZTV8S7853C21[25]),  25,90},
  {&(_ZTV8S7853C21[15]),  15,90},
  {&(_ZTV8S7853C21[15]),  15,90},
  {&(_ZTV8S7853C21[42]),  42,90},
  {&(_ZTV8S7853C21[61]),  61,90},
  {&(_ZTV8S7853C21[67]),  67,90},
  {&(_ZTV8S7853C21[75]),  75,90},
  {&(_ZTV8S7853C21[88]),  88,90},
  {&(_ZTV8S7853C21[88]),  88,90},
  {&(_ZTV8S7853C21[50]),  50,90},
  {&(_tg__ZTV7S7853C6__8S7853C21[7]),  7,9},
  {&(_tg__ZTV8S7853C127S7853C6__8S7853C21[7]),  7,9},
  {&(_tg__ZTV8S7853C108S7853C127S7853C6__A1__8S7853C21[4]),  4,4},
  {&(_tg__ZTV7S7853C9__8S7853C127S7853C6__8S7853C21[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C127S7853C6__8S7853C21[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C6__8S7853C21[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C6__8S7853C21[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C21[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C21[6]),  6,6},
  {&(_tg__ZTV8S7853C10__8S7853C21[4]),  4,4},
  {&(_tg__ZTV7S7853C4__8S7853C21[14]),  14,16},
  {&(_tg__ZTV8S7853C177S7853C4__8S7853C21[8]),  8,10},
  {&(_tg__ZTV8S7853C138S7853C177S7853C4__A1__8S7853C21[4]),  4,4},
  {&(_tg__ZTV8S7853C108S7853C138S7853C177S7853C4__A4__8S7853C21[4]),  4,4},
  {&(_tg__ZTV7S7853C98S7853C177S7853C4__A1__8S7853C21[6]),  6,6},
  {&(_tg__ZTV8S7853C10__7S7853C98S7853C177S7853C4__A1__8S7853C21[4]),  4,4},
  {&(_tg__ZTV8S7853C12__8S7853C177S7853C4__8S7853C21[8]),  8,10},
  {&(_tg__ZTV7S7853C9__8S7853C177S7853C4__8S7853C21[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C177S7853C4__8S7853C21[6]),  6,6},
  {&(_tg__ZTV7S7853C9__A__8S7853C177S7853C4__8S7853C21[6]),  6,6},
  {&(_tg__ZTV7S7853C5__7S7853C4__8S7853C21[11]),  11,13},
  {&(_tg__ZTV7S7853C6__7S7853C4__8S7853C21[8]),  8,10},
  {&(_tg__ZTV7S7853C9__7S7853C4__8S7853C21[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C4__8S7853C21[6]),  6,6},
  {&(_tg__ZTV8S7853C13__7S7853C4__8S7853C21[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__7S7853C4__8S7853C21[8]),  8,10},
  {&(_tg__ZTV8S7853C15__7S7853C4__8S7853C21[11]),  11,13},
  {&(_tg__ZTV8S7853C15__7S7853C4__8S7853C21[11]),  11,13},
  {&(_tg__ZTV7S7853C98S7853C17__A1__7S7853C4__8S7853C21[6]),  6,6},
  {&(_tg__ZTV7S7853C5__8S7853C21[10]),  10,12},
  {&(_tg__ZTV7S7853C6__7S7853C5__8S7853C21[8]),  8,10},
  {&(_tg__ZTV7S7853C9__7S7853C5__8S7853C21[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C5__8S7853C21[6]),  6,6},
  {&(_tg__ZTV8S7853C13__7S7853C5__8S7853C21[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__7S7853C5__8S7853C21[8]),  8,10},
  {&(_tg__ZTV8S7853C13__8S7853C21[4]),  4,4},
  {&(_tg__ZTV8S7853C108S7853C13__A2__8S7853C21[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__8S7853C21[7]),  7,9},
  {&(_tg__ZTV8S7853C108S7853C12__A3__8S7853C21[4]),  4,4},
  {&(_tg__ZTV7S7853C9__8S7853C12__A1__8S7853C21[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C12__A1__8S7853C21[6]),  6,6},
  {&(_tg__ZTV8S7853C15__8S7853C21[10]),  10,12},
  {&(_tg__ZTV7S7853C9__8S7853C15__8S7853C21[6]),  6,6},
  {&(_tg__ZTV8S7853C15__8S7853C21[10]),  10,12},
  {&(_tg__ZTV8S7853C13__8S7853C15__8S7853C21[4]),  4,4},
  {&(_tg__ZTV7S7853C6__8S7853C15__8S7853C21[8]),  8,10},
  {&(_tg__ZTV7S7853C9__8S7853C15__8S7853C21[6]),  6,6},
  {&(_tg__ZTV8S7853C16__8S7853C21[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S7853C21[];
extern  VTBL_ENTRY _ZTV8S7853C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C21[];
static VTBL_ENTRY alt_thunk_names59[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7853C5D0Ev,_ZThn20_N7S7853C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7853C5D1Ev,_ZThn20_N7S7853C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7853C4D0Ev,_ZThn36_N7S7853C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7853C4D1Ev,_ZThn36_N7S7853C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7853C4D0Ev,_ZThn44_N7S7853C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7853C4D0Ev,_ZThn16_N7S7853C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7853C4D1Ev,_ZThn44_N7S7853C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7853C4D1Ev,_ZThn16_N7S7853C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7853C17D0Ev,_ZTv0_n32_N8S7853C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7853C17D0Ev,_ZThn36_N8S7853C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7853C17D1Ev,_ZTv0_n32_N8S7853C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7853C17D1Ev,_ZThn36_N8S7853C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7853C21D0Ev,_ZTv0_n44_N8S7853C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7853C21D0Ev,_ZThn56_N8S7853C21D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7853C21D0Ev,_ZThn28_N8S7853C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7853C21D1Ev,_ZTv0_n44_N8S7853C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7853C21D1Ev,_ZThn56_N8S7853C21D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7853C21D1Ev,_ZThn28_N8S7853C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7853C21D0Ev,_ZTv0_n60_N8S7853C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7853C21D0Ev,_ZThn12_N8S7853C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7853C21D1Ev,_ZTv0_n60_N8S7853C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7853C21D1Ev,_ZThn12_N8S7853C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7853C21D0Ev,_ZTv0_n32_N8S7853C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7853C21D0Ev,_ZThn48_N8S7853C21D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7853C21D0Ev,_ZThn4_N8S7853C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7853C21D1Ev,_ZTv0_n32_N8S7853C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7853C21D1Ev,_ZThn48_N8S7853C21D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7853C21D1Ev,_ZThn4_N8S7853C21D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7853C21 = {  "S7853C21", // class name
  bases_S7853C21, 37,
  &(vtc_S7853C21[0]), // expected_vtbl_contents
  &(vtt_S7853C21[0]), // expected_vtt_contents
  ABISELECT(120,64), // object size
  NSPAIRA(_ZTI8S7853C21),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S7853C21),90, //virtual function table var
  15, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7853C21),59, //virtual table table var
  17, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names59,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7853C22  : S7856C15 , S7853C16 {
  virtual  ~S7853C22(); // _ZN8S7853C22D2Ev
  S7853C22(); // tgen
};
//SIG(-1 S7853C22) C1{ BC2{ m} BC3{ VBC2} vd}


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

static void Test_S7853C22()
{
  extern Class_Descriptor cd_S7853C22;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S7853C22, buf);
    S7853C22 *dp, &lv = *(dp=new (buf) S7853C22());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S7853C22)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7853C22)");
    /*is_ambiguous_... S7853C22::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), 0, "S7853C22");
    check_base_class_offset(lv, (S7856C15*)(S7853C16*), ABISELECT(8,4), "S7853C22");
    check_base_class_offset(lv, (S7853C16*), 0, "S7853C22");
    test_class_info(&lv, &cd_S7853C22);
    dp->~S7853C22();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7853C22(Test_S7853C22, "S7853C22", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S7853C22C1Ev();
extern void _ZN8S7853C22D2Ev();
Name_Map name_map_S7853C22[] = {
  NSPAIR(_ZN8S7853C22C1Ev),
  NSPAIR(_ZN8S7853C22D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C16;
extern VTBL_ENTRY _ZTI8S7853C16[];
extern  VTBL_ENTRY _ZTV8S7853C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C16[];
static Base_Class bases_S7853C22[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7853C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7853C22[];
extern void _ZN8S7853C22D1Ev();
extern void _ZN8S7853C22D0Ev();
static  VTBL_ENTRY vtc_S7853C22[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C22[0]),
  (VTBL_ENTRY)&_ZN8S7853C22D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C22D0Ev,
};
extern VTBL_ENTRY _ZTV8S7853C22[];
static  VTBL_ENTRY _tg__ZTV8S7853C16__8S7853C22[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C16[0]),
};
static  VTT_ENTRY vtt_S7853C22[] = {
  {&(_ZTV8S7853C22[3]),  3,5},
  {&(_tg__ZTV8S7853C16__8S7853C22[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S7853C22[];
extern  VTBL_ENTRY _ZTV8S7853C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C22[];
Class_Descriptor cd_S7853C22 = {  "S7853C22", // class name
  bases_S7853C22, 3,
  &(vtc_S7853C22[0]), // expected_vtbl_contents
  &(vtt_S7853C22[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S7853C22),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S7853C22),5, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7853C22),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7853C20  : S7853C6 , virtual S7853C13 , virtual S7853C21 , S7853C22 , S77C13_nt {
  int s7853c20f0;
  ~S7853C20(); // tgen
  S7853C20(); // tgen
};
//SIG(-1 S7853C20) C1{ BC2{ VBC3{ m} VBC4{ m} VBC5{ BC3 VBC6{ VBC3 BC4 VBC7{ m}} VBC4} BC7 BC8{ BC4 VBC3 VBC7 BC6 VBC5 vd} vd} VBC9{ BC7 BC4 BC6 Fi} VBC10{ VBC2 VBC11{ VBC12{ VBC2 VBC9 VBC8 vd Fi[2]} VBC13{ m} VBC14{ VBC6 VBC15{ VBC4} VBC9 BC7 VBC2 vd Fi} BC16{ VBC8 BC9 BC5 BC7 vd} vd} vd} BC17{ BC4 BC15 vd} BC18{ m} Fi}


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

static void Test_S7853C20()
{
  extern Class_Descriptor cd_S7853C20;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(20,22)];
    init_test(&cd_S7853C20, buf);
    S7853C20 *dp, &lv = *(dp=new (buf) S7853C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(152,84), "sizeof(S7853C20)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7853C20)");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C6*), 0, "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*), 0, "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C12*)(S7853C6*), 0, "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C12*)(S7853C6*), 0, "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C13*), 0, "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C6*), 0, "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C12*)(S7853C6*), 0, "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C12*)(S7853C6*), 0, "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C12*), 0, "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C12*), 0, "S7853C20");
    check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C13*)(S7853C17*)(S7853C4*), 0, "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C6*), ABISELECT(28,16), "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C9*), ABISELECT(28,16), "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C6*), ABISELECT(28,16), "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C16 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C16*), ABISELECT(28,16), "S7853C20");
    /*is_ambiguous_... S7853C17::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C9*)(S7853C17*)(S7853C4*), ABISELECT(28,16), "S7853C20");
    check_base_class_offset(lv, (S7856C15*)(S7853C16*)(S7853C22*), ABISELECT(28,16), "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C9*), ABISELECT(48,28), "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*), ABISELECT(48,28), "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*), ABISELECT(28,16), "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C12*)(S7853C6*), ABISELECT(28,16), "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C12*)(S7853C6*), ABISELECT(28,16), "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C13*), ABISELECT(28,16), "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C12*)(S7853C6*), ABISELECT(28,16), "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C12*)(S7853C6*), ABISELECT(28,16), "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C12*), ABISELECT(28,16), "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C12*), ABISELECT(28,16), "S7853C20");
    check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(28,16), "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C9 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C9*), ABISELECT(48,28), "S7853C20");
    /*is_ambiguous_... S7853C15::S7853C10 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C15*), ABISELECT(48,28), "S7853C20");
    /*is_ambiguous_... S7853C17::S7853C9 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C9*)(S7853C17*)(S7853C4*), ABISELECT(48,28), "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7853C9*)(S7853C6*), ABISELECT(48,28), "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7853C9*)(S7853C12*)(S7853C6*), ABISELECT(48,28), "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7853C9*)(S7853C6*), ABISELECT(48,28), "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7853C9*)(S7853C12*)(S7853C6*), ABISELECT(48,28), "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C12 */ AMB_check_base_class_offset(lv, (S7853C9*)(S7853C12*), ABISELECT(48,28), "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C6*), 0, "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C12*)(S7853C6*), ABISELECT(8,4), "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C12*)(S7853C6*), 0, "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C12*)(S7853C6*), 0, "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7853C12*)(S7853C6*), 0, "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7853C6*), 0, "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C13*), ABISELECT(32,20), "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C13*), ABISELECT(40,24), "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C13*), ABISELECT(32,20), "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C13 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C13*), ABISELECT(32,20), "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C13 */ AMB_check_base_class_offset(lv, (S7853C13*), ABISELECT(32,20), "S7853C20");
    check_base_class_offset(lv, (S7853C13*)(S7853C5*), ABISELECT(32,20), "S7853C20");
    check_base_class_offset(lv, (S7853C13*)(S7853C15*), ABISELECT(32,20), "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C6*), ABISELECT(56,32), "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C12*)(S7853C6*), ABISELECT(64,36), "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C12*)(S7853C6*), ABISELECT(56,32), "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C12*)(S7853C6*), ABISELECT(56,32), "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7853C12*)(S7853C6*), ABISELECT(56,32), "S7853C20");
    check_base_class_offset(lv, (S7853C6*)(S7853C21*), ABISELECT(56,32), "S7853C20");
    check_base_class_offset(lv, (S7853C6*)(S7853C5*), ABISELECT(56,32), "S7853C20");
    check_base_class_offset(lv, (S7853C6*)(S7853C15*), ABISELECT(56,32), "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C12*), ABISELECT(128,72), "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C12*), ABISELECT(120,68), "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C12 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C12*), ABISELECT(120,68), "S7853C20");
    /*is_ambiguous_... S7853C5::S7853C12 */ AMB_check_base_class_offset(lv, (S7853C12*)(S7853C5*), ABISELECT(120,68), "S7853C20");
    check_base_class_offset(lv, (S7853C12*)(S7853C17*)(S7853C4*), ABISELECT(120,68), "S7853C20");
    check_base_class_offset(lv, (S7853C5*)(S7853C4*), ABISELECT(104,56), "S7853C20");
    check_base_class_offset(lv, (S7856C9_nt*)(S7853C4*), 0, "S7853C20");
    check_base_class_offset(lv, (S7853C16*)(S7853C15*), ABISELECT(136,76), "S7853C20");
    /*is_ambiguous_... S7853C15::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C15*), ABISELECT(136,76), "S7853C20");
    check_base_class_offset(lv, (S7853C15*)(S7853C4*), ABISELECT(136,76), "S7853C20");
    /*is_ambiguous_... S7853C13::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(72,40), "S7853C20");
    /*is_ambiguous_... S7853C13::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(80,44), "S7853C20");
    check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(72,40), "S7853C20");
    check_base_class_offset(lv, (S7853C10*)(S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(72,40), "S7853C20");
    check_base_class_offset(lv, (S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(72,40), "S7853C20");
    /*is_ambiguous_... S7853C17::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C9*)(S7853C17*)(S7853C4*), ABISELECT(88,48), "S7853C20");
    /*is_ambiguous_... S7853C17::S7853C9 */ AMB_check_base_class_offset(lv, (S7853C9*)(S7853C17*)(S7853C4*), ABISELECT(88,48), "S7853C20");
    /*is_ambiguous_... S7853C17::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C17*)(S7853C4*), ABISELECT(96,52), "S7853C20");
    check_base_class_offset(lv, (S7853C17*)(S7853C4*), ABISELECT(72,40), "S7853C20");
    check_base_class_offset(lv, (S7853C4*)(S7853C21*), ABISELECT(72,40), "S7853C20");
    check_base_class_offset(lv, (S7853C21*), ABISELECT(48,28), "S7853C20");
    /*is_ambiguous_... S7853C22::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C22*), ABISELECT(16,8), "S7853C20");
    check_base_class_offset(lv, (S7853C16*)(S7853C22*), ABISELECT(16,8), "S7853C20");
    check_base_class_offset(lv, (S7853C22*), ABISELECT(16,8), "S7853C20");
    check_base_class_offset(lv, (S77C13_nt*), 0, "S7853C20");
    check_field_offset(lv, s7853c20f0, ABISELECT(24,12), "S7853C20.s7853c20f0");
    test_class_info(&lv, &cd_S7853C20);
    dp->~S7853C20();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7853C20(Test_S7853C20, "S7853C20", ABISELECT(152,84));

#else // __cplusplus

extern void _ZN8S7853C20C1Ev();
extern void _ZN8S7853C20D1Ev();
Name_Map name_map_S7853C20[] = {
  NSPAIR(_ZN8S7853C20C1Ev),
  NSPAIR(_ZN8S7853C20D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C9;
extern VTBL_ENTRY _ZTI7S7853C9[];
extern  VTBL_ENTRY _ZTV7S7853C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C12;
extern VTBL_ENTRY _ZTI8S7853C12[];
extern  VTBL_ENTRY _ZTV8S7853C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C12[];
extern Class_Descriptor cd_S7853C6;
extern VTBL_ENTRY _ZTI7S7853C6[];
extern  VTBL_ENTRY _ZTV7S7853C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C6[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C13;
extern VTBL_ENTRY _ZTI8S7853C13[];
extern  VTBL_ENTRY _ZTV8S7853C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C13[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C12;
extern VTBL_ENTRY _ZTI8S7853C12[];
extern  VTBL_ENTRY _ZTV8S7853C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C12[];
extern Class_Descriptor cd_S7853C6;
extern VTBL_ENTRY _ZTI7S7853C6[];
extern  VTBL_ENTRY _ZTV7S7853C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C6[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C12;
extern VTBL_ENTRY _ZTI8S7853C12[];
extern  VTBL_ENTRY _ZTV8S7853C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C12[];
extern Class_Descriptor cd_S7853C5;
extern VTBL_ENTRY _ZTI7S7853C5[];
extern  VTBL_ENTRY _ZTV7S7853C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C5[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7853C16;
extern VTBL_ENTRY _ZTI8S7853C16[];
extern  VTBL_ENTRY _ZTV8S7853C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C16[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7853C15;
extern VTBL_ENTRY _ZTI8S7853C15[];
extern  VTBL_ENTRY _ZTV8S7853C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C13;
extern VTBL_ENTRY _ZTI8S7853C13[];
extern  VTBL_ENTRY _ZTV8S7853C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C13[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7853C9;
extern VTBL_ENTRY _ZTI7S7853C9[];
extern  VTBL_ENTRY _ZTV7S7853C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7853C17;
extern VTBL_ENTRY _ZTI8S7853C17[];
extern  VTBL_ENTRY _ZTV8S7853C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C17[];
extern Class_Descriptor cd_S7853C4;
extern VTBL_ENTRY _ZTI7S7853C4[];
extern  VTBL_ENTRY _ZTV7S7853C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C4[];
extern Class_Descriptor cd_S7853C21;
extern VTBL_ENTRY _ZTI8S7853C21[];
extern  VTBL_ENTRY _ZTV8S7853C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C21[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C16;
extern VTBL_ENTRY _ZTI8S7853C16[];
extern  VTBL_ENTRY _ZTV8S7853C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C16[];
extern Class_Descriptor cd_S7853C22;
extern VTBL_ENTRY _ZTI8S7853C22[];
extern  VTBL_ENTRY _ZTV8S7853C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C22[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
static Base_Class bases_S7853C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(28,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(28,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7853C10,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7853C9,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7853C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7853C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7853C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7853C13,    ABISELECT(32,20), //bcp->offset
    23, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7853C12,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7853C6,    ABISELECT(56,32), //bcp->offset
    45, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(128,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S7853C12,    ABISELECT(120,68), //bcp->offset
    91, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S7853C5,    ABISELECT(104,56), //bcp->offset
    78, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S7853C16,    ABISELECT(136,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(136,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7853C15,    ABISELECT(136,76), //bcp->offset
    101, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S7853C13,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S7853C9,    ABISELECT(88,48), //bcp->offset
    72, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S7853C17,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S7853C4,    ABISELECT(72,40), //bcp->offset
    55, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    43, //immediately_derived
  0, 1},
  {&cd_S7853C21,    ABISELECT(48,28), //bcp->offset
    27, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S7853C16,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S7853C22,    ABISELECT(16,8), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7853C20[];
extern void _ZN8S7853C20D1Ev();
extern void _ZN8S7853C20D0Ev();
extern void ABISELECT(_ZThn16_N8S7853C20D1Ev,_ZThn8_N8S7853C20D1Ev)();
extern void ABISELECT(_ZThn16_N8S7853C20D0Ev,_ZThn8_N8S7853C20D0Ev)();
extern void ABISELECT(_ZTv0_n128_N8S7853C20D1Ev,_ZTv0_n64_N8S7853C20D1Ev)();
extern void ABISELECT(_ZThn48_N8S7853C20D1Ev,_ZThn28_N8S7853C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S7853C20D0Ev,_ZTv0_n64_N8S7853C20D0Ev)();
extern void ABISELECT(_ZThn48_N8S7853C20D0Ev,_ZThn28_N8S7853C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7853C20D1Ev,_ZTv0_n32_N8S7853C20D1Ev)();
extern void ABISELECT(_ZThn56_N8S7853C20D1Ev,_ZThn32_N8S7853C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7853C20D0Ev,_ZTv0_n32_N8S7853C20D0Ev)();
extern void ABISELECT(_ZThn56_N8S7853C20D0Ev,_ZThn32_N8S7853C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S7853C20D1Ev,_ZTv0_n60_N8S7853C20D1Ev)();
extern void ABISELECT(_ZThn72_N8S7853C20D1Ev,_ZThn40_N8S7853C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S7853C20D0Ev,_ZTv0_n60_N8S7853C20D0Ev)();
extern void ABISELECT(_ZThn72_N8S7853C20D0Ev,_ZThn40_N8S7853C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7853C20D1Ev,_ZTv0_n44_N8S7853C20D1Ev)();
extern void ABISELECT(_ZThn104_N8S7853C20D1Ev,_ZThn56_N8S7853C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7853C20D0Ev,_ZTv0_n44_N8S7853C20D0Ev)();
extern void ABISELECT(_ZThn104_N8S7853C20D0Ev,_ZThn56_N8S7853C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7853C20D1Ev,_ZTv0_n32_N8S7853C20D1Ev)();
extern void ABISELECT(_ZThn120_N8S7853C20D1Ev,_ZThn68_N8S7853C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7853C20D0Ev,_ZTv0_n32_N8S7853C20D0Ev)();
extern void ABISELECT(_ZThn120_N8S7853C20D0Ev,_ZThn68_N8S7853C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7853C20D1Ev,_ZTv0_n44_N8S7853C20D1Ev)();
extern void ABISELECT(_ZThn136_N8S7853C20D1Ev,_ZThn76_N8S7853C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7853C20D0Ev,_ZTv0_n44_N8S7853C20D0Ev)();
extern void ABISELECT(_ZThn136_N8S7853C20D0Ev,_ZThn76_N8S7853C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7853C20[] = {
  ABISELECT(136,76),
  ABISELECT(136,76),
  0,
  ABISELECT(120,68),
  ABISELECT(104,56),
  ABISELECT(72,40),
  ABISELECT(56,32),
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(28,16),
  ABISELECT(48,28),
  ABISELECT(48,28),
  ABISELECT(28,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C20[0]),
  (VTBL_ENTRY)&_ZN8S7853C20D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C20D0Ev,
  ABISELECT(12,8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7853C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S7853C20D1Ev,_ZThn8_N8S7853C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S7853C20D0Ev,_ZThn8_N8S7853C20D0Ev),
  -4,
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S7853C20[0]),
  ABISELECT(-48,-28),
  ABISELECT(88,48),
  ABISELECT(88,48),
  ABISELECT(-48,-28),
  ABISELECT(72,40),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  ABISELECT(24,12),
  0,
  ABISELECT(8,4),
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7853C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7853C20D1Ev,_ZTv0_n64_N8S7853C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7853C20D0Ev,_ZTv0_n64_N8S7853C20D0Ev),
  ABISELECT(-56,-32),
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S7853C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C20D1Ev,_ZTv0_n32_N8S7853C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C20D0Ev,_ZTv0_n32_N8S7853C20D0Ev),
  ABISELECT(-72,-40),
  ABISELECT(64,36),
  ABISELECT(64,36),
  ABISELECT(-72,-40),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(-44,-24),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(48,28),
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S7853C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7853C20D1Ev,_ZTv0_n60_N8S7853C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7853C20D0Ev,_ZTv0_n60_N8S7853C20D0Ev),
  ABISELECT(-60,-32),
  ABISELECT(-40,-20),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S7853C20[0]),
  ABISELECT(-104,-56),
  ABISELECT(16,12),
  ABISELECT(-72,-36),
  ABISELECT(-56,-28),
  ABISELECT(-48,-24),
  ABISELECT(-76,-40),
  ABISELECT(-56,-28),
  ABISELECT(-76,-40),
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S7853C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7853C20D1Ev,_ZTv0_n44_N8S7853C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7853C20D0Ev,_ZTv0_n44_N8S7853C20D0Ev),
  ABISELECT(-120,-68),
  ABISELECT(-92,-52),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI8S7853C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C20D1Ev,_ZTv0_n32_N8S7853C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C20D0Ev,_ZTv0_n32_N8S7853C20D0Ev),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-80,-44),
  ABISELECT(-104,-56),
  0,
  ABISELECT(-108,-60),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-108,-60),
  ABISELECT(-136,-76),
  (VTBL_ENTRY)&(_ZTI8S7853C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7853C20D1Ev,_ZTv0_n44_N8S7853C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7853C20D0Ev,_ZTv0_n44_N8S7853C20D0Ev),
};
extern VTBL_ENTRY _ZTV8S7853C20[];
extern void _ZN7S7853C6D1Ev();
extern void _ZN7S7853C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7853C6__A__8S7853C20[] = {
  ABISELECT(28,16),
  ABISELECT(48,28),
  ABISELECT(48,28),
  ABISELECT(28,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C6[0]),
  (VTBL_ENTRY)&_ZN7S7853C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C6D0Ev,
};
extern void _ZN8S7853C12D1Ev();
extern void _ZN8S7853C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C127S7853C6__8S7853C20[] = {
  ABISELECT(28,16),
  ABISELECT(48,28),
  ABISELECT(48,28),
  ABISELECT(28,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
  (VTBL_ENTRY)&_ZN8S7853C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C127S7853C6__A1__8S7853C20[] = {
  ABISELECT(28,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C127S7853C6__8S7853C20[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__7S7853C6__A__8S7853C20[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7853C6[0]),
};
extern void _ZN8S7853C22D1Ev();
extern void _ZN8S7853C22D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C22__8S7853C20[] = {
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C22[0]),
  (VTBL_ENTRY)&_ZN8S7853C22D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C22D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C168S7853C22__A1__8S7853C20[] = {
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C16[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C20[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__8S7853C20[] = {
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__8S7853C20[] = {
  -4,
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C13__A2__8S7853C20[] = {
  -4,
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
extern void _ZN8S7853C21D1Ev();
extern void _ZN8S7853C21D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C21__8S7853C20[] = {
  ABISELECT(88,48),
  ABISELECT(88,48),
  ABISELECT(-48,-28),
  ABISELECT(72,40),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  ABISELECT(24,12),
  0,
  ABISELECT(8,4),
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C21[0]),
  (VTBL_ENTRY)&_ZN8S7853C21D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C21D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N8S7853C21D1Ev,_ZTv0_n32_N8S7853C21D1Ev)();
extern void ABISELECT(_ZThn8_N8S7853C21D1Ev,_ZThn4_N8S7853C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7853C21D0Ev,_ZTv0_n32_N8S7853C21D0Ev)();
extern void ABISELECT(_ZThn8_N8S7853C21D0Ev,_ZThn4_N8S7853C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C6__8S7853C21__8S7853C20[] = {
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7853C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C21D1Ev,_ZTv0_n32_N8S7853C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C21D0Ev,_ZTv0_n32_N8S7853C21D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S7853C21D1Ev,_ZTv0_n60_N8S7853C21D1Ev)();
extern void ABISELECT(_ZThn24_N8S7853C21D1Ev,_ZThn12_N8S7853C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S7853C21D0Ev,_ZTv0_n60_N8S7853C21D0Ev)();
extern void ABISELECT(_ZThn24_N8S7853C21D0Ev,_ZThn12_N8S7853C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C4__8S7853C21__8S7853C20[] = {
  ABISELECT(-24,-12),
  ABISELECT(64,36),
  ABISELECT(64,36),
  ABISELECT(-72,-40),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(-44,-24),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(48,28),
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7853C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7853C21D1Ev,_ZTv0_n60_N8S7853C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7853C21D0Ev,_ZTv0_n60_N8S7853C21D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7853C21D1Ev,_ZTv0_n44_N8S7853C21D1Ev)();
extern void ABISELECT(_ZThn56_N8S7853C21D1Ev,_ZThn28_N8S7853C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7853C21D0Ev,_ZTv0_n44_N8S7853C21D0Ev)();
extern void ABISELECT(_ZThn56_N8S7853C21D0Ev,_ZThn28_N8S7853C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C5__8S7853C21__8S7853C20[] = {
  ABISELECT(-56,-28),
  ABISELECT(16,12),
  ABISELECT(-72,-36),
  ABISELECT(-56,-28),
  ABISELECT(-48,-24),
  ABISELECT(-76,-40),
  ABISELECT(-56,-28),
  ABISELECT(-76,-40),
  ABISELECT(-104,-56),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S7853C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7853C21D1Ev,_ZTv0_n44_N8S7853C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7853C21D0Ev,_ZTv0_n44_N8S7853C21D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__8S7853C21__8S7853C20[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S7853C21[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7853C21D1Ev,_ZTv0_n32_N8S7853C21D1Ev)();
extern void ABISELECT(_ZThn72_N8S7853C21D1Ev,_ZThn40_N8S7853C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7853C21D0Ev,_ZTv0_n32_N8S7853C21D0Ev)();
extern void ABISELECT(_ZThn72_N8S7853C21D0Ev,_ZThn40_N8S7853C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__8S7853C21__8S7853C20[] = {
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S7853C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C21D1Ev,_ZTv0_n32_N8S7853C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C21D0Ev,_ZTv0_n32_N8S7853C21D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7853C21D1Ev,_ZTv0_n44_N8S7853C21D1Ev)();
extern void ABISELECT(_ZThn88_N8S7853C21D1Ev,_ZThn48_N8S7853C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7853C21D0Ev,_ZTv0_n44_N8S7853C21D0Ev)();
extern void ABISELECT(_ZThn88_N8S7853C21D0Ev,_ZThn48_N8S7853C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C15__8S7853C21__8S7853C20[] = {
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-80,-44),
  ABISELECT(-104,-56),
  0,
  ABISELECT(-108,-60),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-108,-60),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S7853C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7853C21D1Ev,_ZTv0_n44_N8S7853C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7853C21D0Ev,_ZTv0_n44_N8S7853C21D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C177S7853C4__A1__8S7853C21__8S7853C20[] = {
  ABISELECT(-60,-32),
  ABISELECT(-40,-20),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S7853C21[0]),
};
extern void _ZN7S7853C6D1Ev();
extern void _ZN7S7853C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7853C6__A1__8S7853C20[] = {
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C6[0]),
  (VTBL_ENTRY)&_ZN7S7853C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C6D0Ev,
};
extern void _ZN8S7853C12D1Ev();
extern void _ZN8S7853C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C127S7853C6__A1__8S7853C20[] = {
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
  (VTBL_ENTRY)&_ZN8S7853C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C127S7853C6__A3__8S7853C20[] = {
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C127S7853C6__A1__8S7853C20[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__7S7853C6__A1__8S7853C20[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI7S7853C6[0]),
};
extern void _ZN7S7853C4D1Ev();
extern void _ZN7S7853C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7853C4__8S7853C20[] = {
  ABISELECT(64,36),
  ABISELECT(64,36),
  ABISELECT(-72,-40),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(-44,-24),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(48,28),
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&_ZN7S7853C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C4D0Ev,
};
extern void _ZN8S7853C17D1Ev();
extern void _ZN8S7853C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C177S7853C4__8S7853C20[] = {
  ABISELECT(-44,-24),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(48,28),
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
  (VTBL_ENTRY)&_ZN8S7853C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C138S7853C177S7853C4__A1__8S7853C20[] = {
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C138S7853C177S7853C4__A5__8S7853C20[] = {
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C177S7853C4__A1__8S7853C20[] = {
  ABISELECT(-60,-32),
  ABISELECT(-40,-20),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__7S7853C98S7853C177S7853C4__A1__8S7853C20[] = {
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7853C17D1Ev,_ZTv0_n32_N8S7853C17D1Ev)();
extern void ABISELECT(_ZThn48_N8S7853C17D1Ev,_ZThn28_N8S7853C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7853C17D0Ev,_ZTv0_n32_N8S7853C17D0Ev)();
extern void ABISELECT(_ZThn48_N8S7853C17D0Ev,_ZThn28_N8S7853C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C12__8S7853C177S7853C4__8S7853C20[] = {
  ABISELECT(-48,-28),
  ABISELECT(-92,-52),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C17D1Ev,_ZTv0_n32_N8S7853C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C17D0Ev,_ZTv0_n32_N8S7853C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C177S7853C4__8S7853C20[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__A__8S7853C177S7853C4__8S7853C20[] = {
  ABISELECT(-60,-32),
  ABISELECT(-40,-20),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev)();
extern void ABISELECT(_ZThn32_N7S7853C4D1Ev,_ZThn16_N7S7853C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev)();
extern void ABISELECT(_ZThn32_N7S7853C4D0Ev,_ZThn16_N7S7853C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C5__7S7853C4__8S7853C20[] = {
  ABISELECT(-32,-16),
  ABISELECT(16,12),
  ABISELECT(-72,-36),
  ABISELECT(-56,-28),
  ABISELECT(-48,-24),
  ABISELECT(-76,-40),
  ABISELECT(-56,-28),
  ABISELECT(-76,-40),
  ABISELECT(-104,-56),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7853C6__7S7853C4__8S7853C20[] = {
  ABISELECT(16,8),
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__7S7853C4__8S7853C20[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__7S7853C4__8S7853C20[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev)();
extern void ABISELECT(_ZThn48_N7S7853C4D1Ev,_ZThn28_N7S7853C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev)();
extern void ABISELECT(_ZThn48_N7S7853C4D0Ev,_ZThn28_N7S7853C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__7S7853C4__8S7853C20[] = {
  ABISELECT(-48,-28),
  ABISELECT(-92,-52),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev)();
extern void ABISELECT(_ZThn64_N7S7853C4D1Ev,_ZThn36_N7S7853C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev)();
extern void ABISELECT(_ZThn64_N7S7853C4D0Ev,_ZThn36_N7S7853C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C15__7S7853C4__8S7853C20[] = {
  ABISELECT(-64,-36),
  ABISELECT(-88,-48),
  ABISELECT(-80,-44),
  ABISELECT(-104,-56),
  0,
  ABISELECT(-108,-60),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-108,-60),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C17__A1__7S7853C4__8S7853C20[] = {
  ABISELECT(-60,-32),
  ABISELECT(-40,-20),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
};
extern void _ZN7S7853C5D1Ev();
extern void _ZN7S7853C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7853C5__8S7853C20[] = {
  ABISELECT(16,12),
  ABISELECT(-72,-36),
  ABISELECT(-56,-28),
  ABISELECT(-48,-24),
  ABISELECT(-76,-40),
  ABISELECT(-56,-28),
  ABISELECT(-76,-40),
  ABISELECT(-104,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&_ZN7S7853C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C5D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7853C6__7S7853C5__8S7853C20[] = {
  ABISELECT(48,24),
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__7S7853C5__8S7853C20[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__7S7853C5__8S7853C20[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev)();
extern void ABISELECT(_ZThn16_N7S7853C5D1Ev,_ZThn12_N7S7853C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev)();
extern void ABISELECT(_ZThn16_N7S7853C5D0Ev,_ZThn12_N7S7853C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__7S7853C5__8S7853C20[] = {
  ABISELECT(-16,-12),
  ABISELECT(-92,-52),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev),
};
extern void _ZN8S7853C12D1Ev();
extern void _ZN8S7853C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C12__A2__8S7853C20[] = {
  ABISELECT(-92,-52),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
  (VTBL_ENTRY)&_ZN8S7853C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C12__A4__8S7853C20[] = {
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C12__A2__8S7853C20[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(72,40),
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
};
extern void _ZN8S7853C15D1Ev();
extern void _ZN8S7853C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C15__8S7853C20[] = {
  ABISELECT(-88,-48),
  ABISELECT(-80,-44),
  ABISELECT(-104,-56),
  0,
  ABISELECT(-108,-60),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-108,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C15[0]),
  (VTBL_ENTRY)&_ZN8S7853C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C15__8S7853C20[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI8S7853C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__8S7853C15__8S7853C20[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(104,56),
  (VTBL_ENTRY)&(_ZTI8S7853C15[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7853C15D1Ev,_ZTv0_n32_N8S7853C15D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7853C15D0Ev,_ZTv0_n32_N8S7853C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7853C6__8S7853C15__8S7853C20[] = {
  ABISELECT(80,44),
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI8S7853C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C15D1Ev,_ZTv0_n32_N8S7853C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C15D0Ev,_ZTv0_n32_N8S7853C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7853C16__8S7853C20[] = {
  ABISELECT(-108,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C16[0]),
};
static  VTT_ENTRY vtt_S7853C20[] = {
  {&(_ZTV8S7853C20[16]),  16,114},
  {&(_tg__ZTV7S7853C6__A__8S7853C20[7]),  7,9},
  {&(_tg__ZTV8S7853C127S7853C6__8S7853C20[7]),  7,9},
  {&(_tg__ZTV8S7853C108S7853C127S7853C6__A1__8S7853C20[4]),  4,4},
  {&(_tg__ZTV7S7853C9__8S7853C127S7853C6__8S7853C20[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C127S7853C6__8S7853C20[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C6__A__8S7853C20[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C6__A__8S7853C20[6]),  6,6},
  {&(_tg__ZTV8S7853C22__8S7853C20[3]),  3,5},
  {&(_tg__ZTV8S7853C168S7853C22__A1__8S7853C20[3]),  3,3},
  {&(_ZTV8S7853C20[43]),  43,114},
  {&(_ZTV8S7853C20[43]),  43,114},
  {&(_ZTV8S7853C20[27]),  27,114},
  {&(_ZTV8S7853C20[43]),  43,114},
  {&(_ZTV8S7853C20[53]),  53,114},
  {&(_ZTV8S7853C20[70]),  70,114},
  {&(_ZTV8S7853C20[89]),  89,114},
  {&(_ZTV8S7853C20[99]),  99,114},
  {&(_ZTV8S7853C20[112]),  112,114},
  {&(_ZTV8S7853C20[112]),  112,114},
  {&(_ZTV8S7853C20[78]),  78,114},
  {&(_ZTV8S7853C20[21]),  21,114},
  {&(_tg__ZTV7S7853C9__8S7853C20[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C20[6]),  6,6},
  {&(_tg__ZTV8S7853C10__8S7853C20[4]),  4,4},
  {&(_tg__ZTV8S7853C13__8S7853C20[4]),  4,4},
  {&(_tg__ZTV8S7853C108S7853C13__A2__8S7853C20[4]),  4,4},
  {&(_tg__ZTV8S7853C21__8S7853C20[15]),  15,17},
  {&(_tg__ZTV7S7853C6__8S7853C21__8S7853C20[8]),  8,10},
  {&(_tg__ZTV8S7853C21__8S7853C20[15]),  15,17},
  {&(_tg__ZTV8S7853C21__8S7853C20[15]),  15,17},
  {&(_tg__ZTV7S7853C4__8S7853C21__8S7853C20[15]),  15,17},
  {&(_tg__ZTV7S7853C5__8S7853C21__8S7853C20[11]),  11,13},
  {&(_tg__ZTV8S7853C13__8S7853C21__8S7853C20[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__8S7853C21__8S7853C20[8]),  8,10},
  {&(_tg__ZTV8S7853C15__8S7853C21__8S7853C20[11]),  11,13},
  {&(_tg__ZTV8S7853C15__8S7853C21__8S7853C20[11]),  11,13},
  {&(_tg__ZTV7S7853C98S7853C177S7853C4__A1__8S7853C21__8S7853C20[6]),  6,6},
  {&(_tg__ZTV7S7853C6__A1__8S7853C20[7]),  7,9},
  {&(_tg__ZTV8S7853C127S7853C6__A1__8S7853C20[7]),  7,9},
  {&(_tg__ZTV8S7853C108S7853C127S7853C6__A3__8S7853C20[4]),  4,4},
  {&(_tg__ZTV7S7853C9__8S7853C127S7853C6__A1__8S7853C20[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C127S7853C6__A1__8S7853C20[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C6__A1__8S7853C20[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C6__A1__8S7853C20[6]),  6,6},
  {&(_tg__ZTV7S7853C4__8S7853C20[14]),  14,16},
  {&(_tg__ZTV8S7853C177S7853C4__8S7853C20[8]),  8,10},
  {&(_tg__ZTV8S7853C138S7853C177S7853C4__A1__8S7853C20[4]),  4,4},
  {&(_tg__ZTV8S7853C108S7853C138S7853C177S7853C4__A5__8S7853C20[4]),  4,4},
  {&(_tg__ZTV7S7853C98S7853C177S7853C4__A1__8S7853C20[6]),  6,6},
  {&(_tg__ZTV8S7853C10__7S7853C98S7853C177S7853C4__A1__8S7853C20[4]),  4,4},
  {&(_tg__ZTV8S7853C12__8S7853C177S7853C4__8S7853C20[8]),  8,10},
  {&(_tg__ZTV7S7853C9__8S7853C177S7853C4__8S7853C20[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C177S7853C4__8S7853C20[6]),  6,6},
  {&(_tg__ZTV7S7853C9__A__8S7853C177S7853C4__8S7853C20[6]),  6,6},
  {&(_tg__ZTV7S7853C5__7S7853C4__8S7853C20[11]),  11,13},
  {&(_tg__ZTV7S7853C6__7S7853C4__8S7853C20[8]),  8,10},
  {&(_tg__ZTV7S7853C9__7S7853C4__8S7853C20[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C4__8S7853C20[6]),  6,6},
  {&(_tg__ZTV8S7853C13__7S7853C4__8S7853C20[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__7S7853C4__8S7853C20[8]),  8,10},
  {&(_tg__ZTV8S7853C15__7S7853C4__8S7853C20[11]),  11,13},
  {&(_tg__ZTV8S7853C15__7S7853C4__8S7853C20[11]),  11,13},
  {&(_tg__ZTV7S7853C98S7853C17__A1__7S7853C4__8S7853C20[6]),  6,6},
  {&(_tg__ZTV7S7853C5__8S7853C20[10]),  10,12},
  {&(_tg__ZTV7S7853C6__7S7853C5__8S7853C20[8]),  8,10},
  {&(_tg__ZTV7S7853C9__7S7853C5__8S7853C20[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C5__8S7853C20[6]),  6,6},
  {&(_tg__ZTV8S7853C13__7S7853C5__8S7853C20[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__7S7853C5__8S7853C20[8]),  8,10},
  {&(_tg__ZTV8S7853C12__A2__8S7853C20[7]),  7,9},
  {&(_tg__ZTV8S7853C108S7853C12__A4__8S7853C20[4]),  4,4},
  {&(_tg__ZTV7S7853C9__8S7853C12__A2__8S7853C20[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C12__A2__8S7853C20[6]),  6,6},
  {&(_tg__ZTV8S7853C15__8S7853C20[10]),  10,12},
  {&(_tg__ZTV7S7853C9__8S7853C15__8S7853C20[6]),  6,6},
  {&(_tg__ZTV8S7853C15__8S7853C20[10]),  10,12},
  {&(_tg__ZTV8S7853C13__8S7853C15__8S7853C20[4]),  4,4},
  {&(_tg__ZTV7S7853C6__8S7853C15__8S7853C20[8]),  8,10},
  {&(_tg__ZTV7S7853C9__8S7853C15__8S7853C20[6]),  6,6},
  {&(_tg__ZTV8S7853C16__8S7853C20[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S7853C20[];
extern  VTBL_ENTRY _ZTV8S7853C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C20[];
static VTBL_ENTRY alt_thunk_names60[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7853C5D0Ev,_ZThn12_N7S7853C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7853C5D1Ev,_ZThn12_N7S7853C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7853C4D0Ev,_ZThn28_N7S7853C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7853C4D1Ev,_ZThn28_N7S7853C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7853C4D0Ev,_ZThn36_N7S7853C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7853C4D0Ev,_ZThn16_N7S7853C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7853C4D1Ev,_ZThn36_N7S7853C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7853C4D1Ev,_ZThn16_N7S7853C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7853C17D0Ev,_ZTv0_n32_N8S7853C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7853C17D0Ev,_ZThn28_N8S7853C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7853C17D1Ev,_ZTv0_n32_N8S7853C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7853C17D1Ev,_ZThn28_N8S7853C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7853C21D0Ev,_ZTv0_n44_N8S7853C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7853C21D0Ev,_ZThn48_N8S7853C21D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7853C21D0Ev,_ZThn28_N8S7853C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7853C21D1Ev,_ZTv0_n44_N8S7853C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7853C21D1Ev,_ZThn48_N8S7853C21D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7853C21D1Ev,_ZThn28_N8S7853C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7853C21D0Ev,_ZTv0_n60_N8S7853C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7853C21D0Ev,_ZThn12_N8S7853C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7853C21D1Ev,_ZTv0_n60_N8S7853C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7853C21D1Ev,_ZThn12_N8S7853C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7853C21D0Ev,_ZTv0_n32_N8S7853C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7853C21D0Ev,_ZThn40_N8S7853C21D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7853C21D0Ev,_ZThn4_N8S7853C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7853C21D1Ev,_ZTv0_n32_N8S7853C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7853C21D1Ev,_ZThn40_N8S7853C21D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7853C21D1Ev,_ZThn4_N8S7853C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7853C20D0Ev,_ZTv0_n44_N8S7853C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7853C20D0Ev,_ZThn76_N8S7853C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7853C20D0Ev,_ZThn56_N8S7853C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7853C20D1Ev,_ZTv0_n44_N8S7853C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7853C20D1Ev,_ZThn76_N8S7853C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7853C20D1Ev,_ZThn56_N8S7853C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7853C20D0Ev,_ZTv0_n60_N8S7853C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7853C20D0Ev,_ZThn40_N8S7853C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7853C20D1Ev,_ZTv0_n60_N8S7853C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7853C20D1Ev,_ZThn40_N8S7853C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7853C20D0Ev,_ZTv0_n32_N8S7853C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7853C20D0Ev,_ZThn68_N8S7853C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7853C20D0Ev,_ZThn32_N8S7853C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7853C20D1Ev,_ZTv0_n32_N8S7853C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7853C20D1Ev,_ZThn68_N8S7853C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7853C20D1Ev,_ZThn32_N8S7853C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7853C20D0Ev,_ZTv0_n64_N8S7853C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7853C20D0Ev,_ZThn28_N8S7853C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7853C20D1Ev,_ZTv0_n64_N8S7853C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7853C20D1Ev,_ZThn28_N8S7853C20D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7853C20 = {  "S7853C20", // class name
  bases_S7853C20, 48,
  &(vtc_S7853C20[0]), // expected_vtbl_contents
  &(vtt_S7853C20[0]), // expected_vtt_contents
  ABISELECT(152,84), // object size
  NSPAIRA(_ZTI8S7853C20),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S7853C20),114, //virtual function table var
  16, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7853C20),81, //virtual table table var
  23, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names60,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7853C24  : S7853C9 , virtual S7853C5 , S7853C4 , virtual S7853C3 {
  char s7853c24f0;
  virtual  ~S7853C24(); // _ZN8S7853C24D2Ev
  S7853C24(); // tgen
};
//SIG(-1 S7853C24) C1{ BC2{ BC3{ m} VBC4{ VBC3 BC5{ m} VBC6{ m}} VBC5} VBC7{ VBC8{ VBC3 VBC5 VBC2 BC6 BC9{ BC5 VBC3 VBC6 BC4 VBC2 vd} vd} VBC10{ BC6 BC5 BC4 Fi} VBC9 vd Fi[2]} BC11{ VBC7 VBC12{ m} VBC13{ VBC4 VBC14{ VBC5} VBC10 BC6 VBC8 vd Fi} BC15{ VBC9 BC10 BC2 BC6 vd} vd} VBC16{ VBC11 BC3 BC2 BC17{ BC12 VBC3 BC7 VBC15 vd v1} vd} vd Fc}


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

static void Test_S7853C24()
{
  extern Class_Descriptor cd_S7853C24;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(27,29)];
    init_test(&cd_S7853C24, buf);
    S7853C24 *dp, &lv = *(dp=new (buf) S7853C24());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,112), "sizeof(S7853C24)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7853C24)");
    /*is_ambiguous_... S7853C24::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C9*), 0, "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*), ABISELECT(34,18), "S7853C24");
    /*is_ambiguous_... S7853C6::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C6*), ABISELECT(34,18), "S7853C24");
    /*is_ambiguous_... S7853C12::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C12*)(S7853C6*), ABISELECT(34,18), "S7853C24");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C12*)(S7853C6*), ABISELECT(34,18), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C13*), ABISELECT(34,18), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C12*), ABISELECT(34,18), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C12*), ABISELECT(34,18), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(34,18), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(34,18), "S7853C24");
    /*is_ambiguous_... S7853C18::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C18*)(S7853C3*), ABISELECT(34,18), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C17 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C13*)(S7853C17*), ABISELECT(34,18), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*), 0, "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*), 0, "S7853C24");
    check_base_class_offset(lv, (S7856C12*)(S7853C12*)(S7853C6*), 0, "S7853C24");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C12*)(S7853C6*), 0, "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C13*), 0, "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C12*), 0, "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C12*), 0, "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C13*)(S7853C17*)(S7853C4*), 0, "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C13*)(S7853C17*)(S7853C4*), 0, "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C17 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C13*)(S7853C17*), 0, "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C9 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C9*), 0, "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C9 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C9*), 0, "S7853C24");
    /*is_ambiguous_... S7853C15::S7853C10 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C15*), 0, "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C9*)(S7853C17*)(S7853C4*), 0, "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C9*)(S7853C17*)(S7853C4*), 0, "S7853C24");
    /*is_ambiguous_... S7853C3::S7853C9 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C9*)(S7853C3*), 0, "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C17 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C9*)(S7853C17*), 0, "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C9*), ABISELECT(34,18), "S7853C24");
    /*is_ambiguous_... S7853C6::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C6*), ABISELECT(34,18), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C9*), ABISELECT(34,18), "S7853C24");
    check_base_class_offset(lv, (S7856C15*)(S7853C16*), ABISELECT(34,18), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C9*)(S7853C17*)(S7853C4*), ABISELECT(34,18), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C9*)(S7853C17*)(S7853C4*), ABISELECT(34,18), "S7853C24");
    /*is_ambiguous_... S7853C3::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C9*)(S7853C3*), ABISELECT(34,18), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C17 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C9*)(S7853C17*), ABISELECT(34,18), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C9 */ AMB_check_base_class_offset(lv, (S7853C9*), 0, "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C9*), ABISELECT(40,20), "S7853C24");
    check_base_class_offset(lv, (S7853C9*)(S7853C6*), ABISELECT(40,20), "S7853C24");
    check_base_class_offset(lv, (S7853C9*)(S7853C12*)(S7853C6*), ABISELECT(40,20), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C12 */ AMB_check_base_class_offset(lv, (S7853C9*)(S7853C12*), ABISELECT(40,20), "S7853C24");
    /*is_ambiguous_... S7853C6::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C6*), ABISELECT(56,32), "S7853C24");
    /*is_ambiguous_... S7853C12::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C12*)(S7853C6*), ABISELECT(64,36), "S7853C24");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C12*)(S7853C6*), ABISELECT(56,32), "S7853C24");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C12*)(S7853C6*), ABISELECT(56,32), "S7853C24");
    check_base_class_offset(lv, (S7853C12*)(S7853C6*), ABISELECT(56,32), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C5 */ AMB_check_base_class_offset(lv, (S7853C6*)(S7853C5*), ABISELECT(56,32), "S7853C24");
    check_base_class_offset(lv, (S7853C6*)(S7853C15*), ABISELECT(56,32), "S7853C24");
    check_base_class_offset(lv, (S7853C6*)(S7853C5*)(S7853C18*)(S7853C3*), ABISELECT(56,32), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C13*), ABISELECT(72,40), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C13*), ABISELECT(80,44), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C13*), ABISELECT(72,40), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C13 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C13*), ABISELECT(72,40), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C5 */ AMB_check_base_class_offset(lv, (S7853C13*)(S7853C5*), ABISELECT(72,40), "S7853C24");
    check_base_class_offset(lv, (S7853C13*)(S7853C15*), ABISELECT(72,40), "S7853C24");
    check_base_class_offset(lv, (S7853C13*)(S7853C5*)(S7853C18*)(S7853C3*), ABISELECT(72,40), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C12*), ABISELECT(96,52), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C12*), ABISELECT(88,48), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C12 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C12*), ABISELECT(88,48), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C5 */ AMB_check_base_class_offset(lv, (S7853C12*)(S7853C5*), ABISELECT(88,48), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7853C12*)(S7853C17*)(S7853C4*), ABISELECT(88,48), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7853C12*)(S7853C17*)(S7853C4*), ABISELECT(88,48), "S7853C24");
    /*is_ambiguous_... S7853C5::S7853C12 */ AMB_check_base_class_offset(lv, (S7853C12*)(S7853C5*)(S7853C18*)(S7853C3*), ABISELECT(88,48), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C17 */ AMB_check_base_class_offset(lv, (S7853C12*)(S7853C17*), ABISELECT(88,48), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C5 */ AMB_check_base_class_offset(lv, (S7853C5*), ABISELECT(40,20), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7853C5*)(S7853C4*), ABISELECT(40,20), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7853C5*)(S7853C4*), ABISELECT(40,20), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7853C4*), 0, "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7853C4*), 0, "S7853C24");
    check_base_class_offset(lv, (S7853C16*)(S7853C15*), ABISELECT(104,56), "S7853C24");
    /*is_ambiguous_... S7853C15::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C15*), ABISELECT(104,56), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7853C15*)(S7853C4*), ABISELECT(104,56), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7853C15*)(S7853C4*), ABISELECT(104,56), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(8,4), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(16,8), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(8,4), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(8,4), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(8,4), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C9*)(S7853C17*)(S7853C4*), ABISELECT(24,12), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7853C9*)(S7853C17*)(S7853C4*), ABISELECT(24,12), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C17*)(S7853C4*), ABISELECT(32,16), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7853C17*)(S7853C4*), ABISELECT(8,4), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7853C4*), ABISELECT(8,4), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(144,80), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(152,84), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(144,80), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(144,80), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(144,80), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C9*)(S7853C17*)(S7853C4*), ABISELECT(160,88), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7853C9*)(S7853C17*)(S7853C4*), ABISELECT(160,88), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C17*)(S7853C4*), ABISELECT(168,92), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7853C17*)(S7853C4*), ABISELECT(144,80), "S7853C24");
    check_base_class_offset(lv, (S7853C4*)(S7853C3*), ABISELECT(144,80), "S7853C24");
    /*is_ambiguous_... S7853C3::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C3*), ABISELECT(128,68), "S7853C24");
    /*is_ambiguous_... S7853C3::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C9*)(S7853C3*), ABISELECT(120,64), "S7853C24");
    /*is_ambiguous_... S7853C3::S7853C9 */ AMB_check_base_class_offset(lv, (S7853C9*)(S7853C3*), ABISELECT(120,64), "S7853C24");
    check_base_class_offset(lv, (S7856C9_nt*)(S7853C18*)(S7853C3*), ABISELECT(128,68), "S7853C24");
    check_base_class_offset(lv, (S7853C5*)(S7853C18*)(S7853C3*), ABISELECT(128,68), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C17 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C13*)(S7853C17*), ABISELECT(176,96), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C17 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C13*)(S7853C17*), ABISELECT(184,100), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C17 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C13*)(S7853C17*), ABISELECT(176,96), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C17 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C13*)(S7853C17*), ABISELECT(176,96), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C17 */ AMB_check_base_class_offset(lv, (S7853C13*)(S7853C17*), ABISELECT(176,96), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C17 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C9*)(S7853C17*), ABISELECT(192,104), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C17 */ AMB_check_base_class_offset(lv, (S7853C9*)(S7853C17*), ABISELECT(192,104), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C17 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C17*), ABISELECT(200,108), "S7853C24");
    check_base_class_offset(lv, (S7853C17*)(S7853C18*)(S7853C3*), ABISELECT(176,96), "S7853C24");
    check_base_class_offset(lv, (S7853C18*)(S7853C3*), ABISELECT(128,68), "S7853C24");
    check_base_class_offset(lv, (S7853C3*), ABISELECT(120,64), "S7853C24");
    check_field_offset(lv, s7853c24f0, ABISELECT(33,17), "S7853C24.s7853c24f0");
    test_class_info(&lv, &cd_S7853C24);
    dp->~S7853C24();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7853C24(Test_S7853C24, "S7853C24", ABISELECT(208,112));

#else // __cplusplus

extern void _ZN8S7853C24C1Ev();
extern void _ZN8S7853C24D2Ev();
Name_Map name_map_S7853C24[] = {
  NSPAIR(_ZN8S7853C24C1Ev),
  NSPAIR(_ZN8S7853C24D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C9;
extern VTBL_ENTRY _ZTI7S7853C9[];
extern  VTBL_ENTRY _ZTV7S7853C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C9[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7853C9;
extern VTBL_ENTRY _ZTI7S7853C9[];
extern  VTBL_ENTRY _ZTV7S7853C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C12;
extern VTBL_ENTRY _ZTI8S7853C12[];
extern  VTBL_ENTRY _ZTV8S7853C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C12[];
extern Class_Descriptor cd_S7853C6;
extern VTBL_ENTRY _ZTI7S7853C6[];
extern  VTBL_ENTRY _ZTV7S7853C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C6[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C13;
extern VTBL_ENTRY _ZTI8S7853C13[];
extern  VTBL_ENTRY _ZTV8S7853C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C13[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C12;
extern VTBL_ENTRY _ZTI8S7853C12[];
extern  VTBL_ENTRY _ZTV8S7853C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C12[];
extern Class_Descriptor cd_S7853C5;
extern VTBL_ENTRY _ZTI7S7853C5[];
extern  VTBL_ENTRY _ZTV7S7853C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C5[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7853C16;
extern VTBL_ENTRY _ZTI8S7853C16[];
extern  VTBL_ENTRY _ZTV8S7853C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C16[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7853C15;
extern VTBL_ENTRY _ZTI8S7853C15[];
extern  VTBL_ENTRY _ZTV8S7853C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C13;
extern VTBL_ENTRY _ZTI8S7853C13[];
extern  VTBL_ENTRY _ZTV8S7853C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C13[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7853C9;
extern VTBL_ENTRY _ZTI7S7853C9[];
extern  VTBL_ENTRY _ZTV7S7853C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7853C17;
extern VTBL_ENTRY _ZTI8S7853C17[];
extern  VTBL_ENTRY _ZTV8S7853C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C17[];
extern Class_Descriptor cd_S7853C4;
extern VTBL_ENTRY _ZTI7S7853C4[];
extern  VTBL_ENTRY _ZTV7S7853C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C4[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C13;
extern VTBL_ENTRY _ZTI8S7853C13[];
extern  VTBL_ENTRY _ZTV8S7853C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C13[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7853C9;
extern VTBL_ENTRY _ZTI7S7853C9[];
extern  VTBL_ENTRY _ZTV7S7853C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7853C17;
extern VTBL_ENTRY _ZTI8S7853C17[];
extern  VTBL_ENTRY _ZTV8S7853C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C17[];
extern Class_Descriptor cd_S7853C4;
extern VTBL_ENTRY _ZTI7S7853C4[];
extern  VTBL_ENTRY _ZTV7S7853C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C4[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7853C9;
extern VTBL_ENTRY _ZTI7S7853C9[];
extern  VTBL_ENTRY _ZTV7S7853C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C9[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7853C5;
extern VTBL_ENTRY _ZTI7S7853C5[];
extern  VTBL_ENTRY _ZTV7S7853C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C5[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C13;
extern VTBL_ENTRY _ZTI8S7853C13[];
extern  VTBL_ENTRY _ZTV8S7853C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C13[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7853C9;
extern VTBL_ENTRY _ZTI7S7853C9[];
extern  VTBL_ENTRY _ZTV7S7853C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7853C17;
extern VTBL_ENTRY _ZTI8S7853C17[];
extern  VTBL_ENTRY _ZTV8S7853C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C17[];
extern Class_Descriptor cd_S7853C18;
extern VTBL_ENTRY _ZTI8S7853C18[];
extern  VTBL_ENTRY _ZTV8S7853C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C18[];
extern Class_Descriptor cd_S7853C3;
extern VTBL_ENTRY _ZTI7S7853C3[];
extern  VTBL_ENTRY _ZTV7S7853C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C3[];
static Base_Class bases_S7853C24[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(34,18), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7853C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(34,18), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7853C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7853C9,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7853C12,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7853C6,    ABISELECT(56,32), //bcp->offset
    54, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7853C13,    ABISELECT(72,40), //bcp->offset
    64, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7853C12,    ABISELECT(88,48), //bcp->offset
    68, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S7853C5,    ABISELECT(40,20), //bcp->offset
    41, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    38, //immediately_derived
  0, 1},
  {&cd_S7853C16,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S7853C15,    ABISELECT(104,56), //bcp->offset
    78, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    38, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S7853C13,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7853C9,    ABISELECT(24,12), //bcp->offset
    35, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S7853C17,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S7853C4,    ABISELECT(8,4), //bcp->offset
    19, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    ABISELECT(144,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(152,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(144,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(144,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    101, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S7853C13,    ABISELECT(144,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    100, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S7853C9,    ABISELECT(160,88), //bcp->offset
    142, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    102, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(168,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S7853C17,    ABISELECT(144,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    99, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S7853C4,    ABISELECT(144,80), //bcp->offset
    125, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    98, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    64, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(128,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    64, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(120,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S7853C9,    ABISELECT(120,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    69, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    64, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(128,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    63, //immediately_derived
  0, 0},
  {&cd_S7853C5,    ABISELECT(128,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    63, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(176,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(184,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(176,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(176,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    119, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S7853C13,    ABISELECT(176,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    118, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(192,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    60, //immediately_derived
  0, 0},
  {&cd_S7853C9,    ABISELECT(192,104), //bcp->offset
    159, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    120, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(200,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S7853C17,    ABISELECT(176,96), //bcp->offset
    148, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    117, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    63, //immediately_derived
  0, 1},
  {&cd_S7853C18,    ABISELECT(128,68), //bcp->offset
    111, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    64, //immediately_derived
  0, 0},
  {&cd_S7853C3,    ABISELECT(120,64), //bcp->offset
    91, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7853C24[];
extern void _ZN8S7853C24D1Ev();
extern void _ZN8S7853C24D0Ev();
extern void ABISELECT(_ZThn8_N8S7853C24D1Ev,_ZThn4_N8S7853C24D1Ev)();
extern void ABISELECT(_ZThn8_N8S7853C24D0Ev,_ZThn4_N8S7853C24D0Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7853C24D1Ev,_ZTv0_n44_N8S7853C24D1Ev)();
extern void ABISELECT(_ZThn40_N8S7853C24D1Ev,_ZThn20_N8S7853C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7853C24D0Ev,_ZTv0_n44_N8S7853C24D0Ev)();
extern void ABISELECT(_ZThn40_N8S7853C24D0Ev,_ZThn20_N8S7853C24D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7853C24D1Ev,_ZTv0_n32_N8S7853C24D1Ev)();
extern void ABISELECT(_ZThn56_N8S7853C24D1Ev,_ZThn32_N8S7853C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7853C24D0Ev,_ZTv0_n32_N8S7853C24D0Ev)();
extern void ABISELECT(_ZThn56_N8S7853C24D0Ev,_ZThn32_N8S7853C24D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7853C24D1Ev,_ZTv0_n32_N8S7853C24D1Ev)();
extern void ABISELECT(_ZThn88_N8S7853C24D1Ev,_ZThn48_N8S7853C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7853C24D0Ev,_ZTv0_n32_N8S7853C24D0Ev)();
extern void ABISELECT(_ZThn88_N8S7853C24D0Ev,_ZThn48_N8S7853C24D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7853C24D1Ev,_ZTv0_n44_N8S7853C24D1Ev)();
extern void ABISELECT(_ZThn104_N8S7853C24D1Ev,_ZThn56_N8S7853C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7853C24D0Ev,_ZTv0_n44_N8S7853C24D0Ev)();
extern void ABISELECT(_ZThn104_N8S7853C24D0Ev,_ZThn56_N8S7853C24D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N8S7853C24D1Ev,_ZTv0_n68_N8S7853C24D1Ev)();
extern void ABISELECT(_ZThn120_N8S7853C24D1Ev,_ZThn64_N8S7853C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N8S7853C24D0Ev,_ZTv0_n68_N8S7853C24D0Ev)();
extern void ABISELECT(_ZThn120_N8S7853C24D0Ev,_ZThn64_N8S7853C24D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn8_n136_N8S7853C24D1Ev,_ZTvn4_n68_N8S7853C24D1Ev)();
extern void ABISELECT(_ZTvn8_n136_N8S7853C24D0Ev,_ZTvn4_n68_N8S7853C24D0Ev)();
extern void _ZN8S7853C182v1Ev();
extern void ABISELECT(_ZTv0_n120_N8S7853C24D1Ev,_ZTv0_n60_N8S7853C24D1Ev)();
extern void ABISELECT(_ZThn144_N8S7853C24D1Ev,_ZThn80_N8S7853C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S7853C24D0Ev,_ZTv0_n60_N8S7853C24D0Ev)();
extern void ABISELECT(_ZThn144_N8S7853C24D0Ev,_ZThn80_N8S7853C24D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7853C24D1Ev,_ZTv0_n36_N8S7853C24D1Ev)();
extern void ABISELECT(_ZThn176_N8S7853C24D1Ev,_ZThn96_N8S7853C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7853C24D0Ev,_ZTv0_n36_N8S7853C24D0Ev)();
extern void ABISELECT(_ZThn176_N8S7853C24D0Ev,_ZThn96_N8S7853C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7853C24[] = {
  ABISELECT(176,96),
  ABISELECT(144,80),
  ABISELECT(120,64),
  ABISELECT(104,56),
  ABISELECT(104,56),
  0,
  ABISELECT(88,48),
  ABISELECT(72,40),
  ABISELECT(40,20),
  ABISELECT(56,32),
  ABISELECT(40,20),
  ABISELECT(34,18),
  0,
  0,
  ABISELECT(34,18),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C24[0]),
  (VTBL_ENTRY)&_ZN8S7853C24D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C24D0Ev,
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-8,-4),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(26,14),
  ABISELECT(-8,-4),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-8,-4),
  ABISELECT(26,14),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7853C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7853C24D1Ev,_ZThn4_N8S7853C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7853C24D0Ev,_ZThn4_N8S7853C24D0Ev),
  ABISELECT(10,6),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(10,6),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7853C24[0]),
  ABISELECT(-40,-20),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S7853C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7853C24D1Ev,_ZTv0_n44_N8S7853C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7853C24D0Ev,_ZTv0_n44_N8S7853C24D0Ev),
  ABISELECT(-56,-32),
  ABISELECT(-22,-14),
  ABISELECT(-56,-32),
  ABISELECT(-16,-12),
  ABISELECT(-56,-32),
  ABISELECT(-22,-14),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S7853C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C24D1Ev,_ZTv0_n32_N8S7853C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C24D0Ev,_ZTv0_n32_N8S7853C24D0Ev),
  ABISELECT(-72,-40),
  ABISELECT(-38,-22),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S7853C24[0]),
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  ABISELECT(-88,-48),
  ABISELECT(-48,-28),
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S7853C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C24D1Ev,_ZTv0_n32_N8S7853C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C24D0Ev,_ZTv0_n32_N8S7853C24D0Ev),
  ABISELECT(-104,-56),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-104,-56),
  ABISELECT(-70,-38),
  ABISELECT(-104,-56),
  ABISELECT(-70,-38),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S7853C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7853C24D1Ev,_ZTv0_n44_N8S7853C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7853C24D0Ev,_ZTv0_n44_N8S7853C24D0Ev),
  ABISELECT(8,4),
  ABISELECT(-120,-64),
  ABISELECT(56,32),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-120,-64),
  ABISELECT(-32,-16),
  ABISELECT(-48,-24),
  ABISELECT(-80,-44),
  ABISELECT(-64,-32),
  ABISELECT(-80,-44),
  ABISELECT(24,16),
  ABISELECT(-86,-46),
  ABISELECT(-120,-64),
  ABISELECT(-120,-64),
  ABISELECT(-86,-46),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI8S7853C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S7853C24D1Ev,_ZTv0_n68_N8S7853C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S7853C24D0Ev,_ZTv0_n68_N8S7853C24D0Ev),
  ABISELECT(48,28),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-88,-48),
  ABISELECT(-72,-36),
  ABISELECT(-94,-50),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-94,-50),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S7853C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N8S7853C24D1Ev,_ZTvn4_n68_N8S7853C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N8S7853C24D0Ev,_ZTvn4_n68_N8S7853C24D0Ev),
  (VTBL_ENTRY)&_ZN8S7853C182v1Ev,
  ABISELECT(-144,-80),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-144,-80),
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-104,-60),
  ABISELECT(-110,-62),
  ABISELECT(-144,-80),
  ABISELECT(-104,-60),
  ABISELECT(-56,-32),
  ABISELECT(-144,-80),
  ABISELECT(-110,-62),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI8S7853C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7853C24D1Ev,_ZTv0_n60_N8S7853C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7853C24D0Ev,_ZTv0_n60_N8S7853C24D0Ev),
  ABISELECT(-126,-70),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  ABISELECT(-126,-70),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S7853C24[0]),
  ABISELECT(-176,-96),
  ABISELECT(-142,-78),
  ABISELECT(-176,-96),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-176,-96),
  ABISELECT(-142,-78),
  ABISELECT(-176,-96),
  (VTBL_ENTRY)&(_ZTI8S7853C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7853C24D1Ev,_ZTv0_n36_N8S7853C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7853C24D0Ev,_ZTv0_n36_N8S7853C24D0Ev),
  ABISELECT(-158,-86),
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  ABISELECT(-158,-86),
  ABISELECT(-192,-104),
  (VTBL_ENTRY)&(_ZTI8S7853C24[0]),
};
extern VTBL_ENTRY _ZTV8S7853C24[];
static  VTBL_ENTRY _tg__ZTV7S7853C9__A__8S7853C24[] = {
  ABISELECT(34,18),
  0,
  0,
  ABISELECT(34,18),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
extern void _ZN7S7853C4D1Ev();
extern void _ZN7S7853C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7853C4__A__8S7853C24[] = {
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-8,-4),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(26,14),
  ABISELECT(-8,-4),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-8,-4),
  ABISELECT(26,14),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&_ZN7S7853C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C4D0Ev,
};
extern void _ZN8S7853C17D1Ev();
extern void _ZN8S7853C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C177S7853C4__8S7853C24[] = {
  ABISELECT(26,14),
  ABISELECT(-8,-4),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-8,-4),
  ABISELECT(26,14),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
  (VTBL_ENTRY)&_ZN8S7853C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C138S7853C177S7853C4__A1__8S7853C24[] = {
  ABISELECT(-8,-4),
  ABISELECT(26,14),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C138S7853C177S7853C4__A4__8S7853C24[] = {
  ABISELECT(-8,-4),
  ABISELECT(26,14),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C177S7853C4__A2__8S7853C24[] = {
  ABISELECT(10,6),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(10,6),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__7S7853C98S7853C177S7853C4__A2__8S7853C24[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7853C17D1Ev,_ZTv0_n32_N8S7853C17D1Ev)();
extern void ABISELECT(_ZThn80_N8S7853C17D1Ev,_ZThn44_N8S7853C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7853C17D0Ev,_ZTv0_n32_N8S7853C17D0Ev)();
extern void ABISELECT(_ZThn80_N8S7853C17D0Ev,_ZThn44_N8S7853C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C12__8S7853C177S7853C4__8S7853C24[] = {
  ABISELECT(-80,-44),
  ABISELECT(-54,-30),
  ABISELECT(-88,-48),
  ABISELECT(-48,-28),
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C17D1Ev,_ZTv0_n32_N8S7853C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C17D0Ev,_ZTv0_n32_N8S7853C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C177S7853C4__8S7853C24[] = {
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__A1__8S7853C177S7853C4__8S7853C24[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__A__8S7853C177S7853C4__8S7853C24[] = {
  ABISELECT(10,6),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(10,6),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev)();
extern void ABISELECT(_ZThn32_N7S7853C4D1Ev,_ZThn16_N7S7853C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev)();
extern void ABISELECT(_ZThn32_N7S7853C4D0Ev,_ZThn16_N7S7853C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C5__7S7853C4__A__8S7853C24[] = {
  ABISELECT(-32,-16),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev)();
extern void ABISELECT(_ZThn48_N7S7853C4D1Ev,_ZThn28_N7S7853C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev)();
extern void ABISELECT(_ZThn48_N7S7853C4D0Ev,_ZThn28_N7S7853C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C6__7S7853C4__A__8S7853C24[] = {
  ABISELECT(-48,-28),
  ABISELECT(-22,-14),
  ABISELECT(-56,-32),
  ABISELECT(-16,-12),
  ABISELECT(-56,-32),
  ABISELECT(-22,-14),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__7S7853C4__A__8S7853C24[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__7S7853C4__A__8S7853C24[] = {
  ABISELECT(-72,-40),
  ABISELECT(-38,-22),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev)();
extern void ABISELECT(_ZThn80_N7S7853C4D1Ev,_ZThn44_N7S7853C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev)();
extern void ABISELECT(_ZThn80_N7S7853C4D0Ev,_ZThn44_N7S7853C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__7S7853C4__A__8S7853C24[] = {
  ABISELECT(-80,-44),
  ABISELECT(-54,-30),
  ABISELECT(-88,-48),
  ABISELECT(-48,-28),
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev)();
extern void ABISELECT(_ZThn96_N7S7853C4D1Ev,_ZThn52_N7S7853C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev)();
extern void ABISELECT(_ZThn96_N7S7853C4D0Ev,_ZThn52_N7S7853C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C15__7S7853C4__A__8S7853C24[] = {
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-104,-56),
  ABISELECT(-70,-38),
  ABISELECT(-104,-56),
  ABISELECT(-70,-38),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C17__A1__7S7853C4__A__8S7853C24[] = {
  ABISELECT(10,6),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(10,6),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__8S7853C24[] = {
  0,
  ABISELECT(34,18),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
extern void _ZN7S7853C5D1Ev();
extern void _ZN7S7853C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7853C5__8S7853C24[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&_ZN7S7853C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C5D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev)();
extern void ABISELECT(_ZThn16_N7S7853C5D1Ev,_ZThn12_N7S7853C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev)();
extern void ABISELECT(_ZThn16_N7S7853C5D0Ev,_ZThn12_N7S7853C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C6__7S7853C5__8S7853C24[] = {
  ABISELECT(-16,-12),
  ABISELECT(-22,-14),
  ABISELECT(-56,-32),
  ABISELECT(-16,-12),
  ABISELECT(-56,-32),
  ABISELECT(-22,-14),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__7S7853C5__8S7853C24[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__7S7853C5__8S7853C24[] = {
  ABISELECT(-72,-40),
  ABISELECT(-38,-22),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev)();
extern void ABISELECT(_ZThn48_N7S7853C5D1Ev,_ZThn28_N7S7853C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev)();
extern void ABISELECT(_ZThn48_N7S7853C5D0Ev,_ZThn28_N7S7853C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__7S7853C5__8S7853C24[] = {
  ABISELECT(-48,-28),
  ABISELECT(-54,-30),
  ABISELECT(-88,-48),
  ABISELECT(-48,-28),
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev),
};
extern void _ZN7S7853C6D1Ev();
extern void _ZN7S7853C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7853C6__8S7853C24[] = {
  ABISELECT(-22,-14),
  ABISELECT(-56,-32),
  ABISELECT(-16,-12),
  ABISELECT(-56,-32),
  ABISELECT(-22,-14),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C6[0]),
  (VTBL_ENTRY)&_ZN7S7853C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C6D0Ev,
};
extern void _ZN8S7853C12D1Ev();
extern void _ZN8S7853C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C127S7853C6__8S7853C24[] = {
  ABISELECT(-22,-14),
  ABISELECT(-56,-32),
  ABISELECT(-16,-12),
  ABISELECT(-56,-32),
  ABISELECT(-22,-14),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
  (VTBL_ENTRY)&_ZN8S7853C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C127S7853C6__A1__8S7853C24[] = {
  ABISELECT(-56,-32),
  ABISELECT(-22,-14),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C127S7853C6__8S7853C24[] = {
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__A1__8S7853C127S7853C6__8S7853C24[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__7S7853C6__8S7853C24[] = {
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7853C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__7S7853C6__8S7853C24[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI7S7853C6[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__A1__8S7853C24[] = {
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__7S7853C9__A1__8S7853C24[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__8S7853C24[] = {
  ABISELECT(-72,-40),
  ABISELECT(-38,-22),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C13__A2__8S7853C24[] = {
  ABISELECT(-72,-40),
  ABISELECT(-38,-22),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
extern void _ZN8S7853C12D1Ev();
extern void _ZN8S7853C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__8S7853C24[] = {
  ABISELECT(-54,-30),
  ABISELECT(-88,-48),
  ABISELECT(-48,-28),
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
  (VTBL_ENTRY)&_ZN8S7853C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C12__A3__8S7853C24[] = {
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C12__A1__8S7853C24[] = {
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__A1__8S7853C12__A1__8S7853C24[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
};
extern void _ZN8S7853C15D1Ev();
extern void _ZN8S7853C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C15__8S7853C24[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-104,-56),
  ABISELECT(-70,-38),
  ABISELECT(-104,-56),
  ABISELECT(-70,-38),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C15[0]),
  (VTBL_ENTRY)&_ZN8S7853C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__8S7853C15__8S7853C24[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(104,56),
  (VTBL_ENTRY)&(_ZTI8S7853C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__8S7853C15__8S7853C24[] = {
  ABISELECT(-72,-40),
  ABISELECT(-38,-22),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7853C15[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7853C15D1Ev,_ZTv0_n32_N8S7853C15D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7853C15D0Ev,_ZTv0_n32_N8S7853C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7853C6__8S7853C15__8S7853C24[] = {
  ABISELECT(48,24),
  ABISELECT(-22,-14),
  ABISELECT(-56,-32),
  ABISELECT(-16,-12),
  ABISELECT(-56,-32),
  ABISELECT(-22,-14),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S7853C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C15D1Ev,_ZTv0_n32_N8S7853C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C15D0Ev,_ZTv0_n32_N8S7853C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C15__8S7853C24[] = {
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S7853C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C16__8S7853C24[] = {
  ABISELECT(-70,-38),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C16[0]),
};
extern void _ZN7S7853C3D1Ev();
extern void _ZN7S7853C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7853C3__8S7853C24[] = {
  ABISELECT(56,32),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-120,-64),
  ABISELECT(-32,-16),
  ABISELECT(-48,-24),
  ABISELECT(-80,-44),
  ABISELECT(-64,-32),
  ABISELECT(-80,-44),
  ABISELECT(24,16),
  ABISELECT(-86,-46),
  ABISELECT(-120,-64),
  ABISELECT(-120,-64),
  ABISELECT(-86,-46),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
  (VTBL_ENTRY)&_ZN7S7853C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C3D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7853C97S7853C3__A4__8S7853C24[] = {
  ABISELECT(-86,-46),
  ABISELECT(-120,-64),
  ABISELECT(-120,-64),
  ABISELECT(-86,-46),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__7S7853C97S7853C3__A4__8S7853C24[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(120,64),
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
extern void _ZN8S7853C18D1Ev();
extern void _ZN8S7853C18D0Ev();
extern void _ZN8S7853C182v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C187S7853C3__8S7853C24[] = {
  ABISELECT(48,28),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-88,-48),
  ABISELECT(-72,-36),
  ABISELECT(-94,-50),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-94,-50),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C18[0]),
  (VTBL_ENTRY)&_ZN8S7853C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C18D0Ev,
  (VTBL_ENTRY)&_ZN8S7853C182v1Ev,
};
extern void _ZN7S7853C5D1Ev();
extern void _ZN7S7853C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7853C58S7853C187S7853C3__A1__8S7853C24[] = {
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-88,-48),
  ABISELECT(-72,-36),
  ABISELECT(-94,-50),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-94,-50),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&_ZN7S7853C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C5D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7853C6__7S7853C58S7853C187S7853C3__A1__8S7853C24[] = {
  ABISELECT(72,36),
  ABISELECT(-22,-14),
  ABISELECT(-56,-32),
  ABISELECT(-16,-12),
  ABISELECT(-56,-32),
  ABISELECT(-22,-14),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__7S7853C58S7853C187S7853C3__A1__8S7853C24[] = {
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__7S7853C58S7853C187S7853C3__A1__8S7853C24[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__7S7853C58S7853C187S7853C3__A1__8S7853C24[] = {
  ABISELECT(-72,-40),
  ABISELECT(-38,-22),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__7S7853C58S7853C187S7853C3__A1__8S7853C24[] = {
  ABISELECT(40,20),
  ABISELECT(-54,-30),
  ABISELECT(-88,-48),
  ABISELECT(-48,-28),
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7853C18D1Ev,_ZTv0_n32_N8S7853C18D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7853C18D0Ev,_ZTv0_n32_N8S7853C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7853C6__8S7853C187S7853C3__8S7853C24[] = {
  ABISELECT(72,36),
  ABISELECT(-22,-14),
  ABISELECT(-56,-32),
  ABISELECT(-16,-12),
  ABISELECT(-56,-32),
  ABISELECT(-22,-14),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI8S7853C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C18D1Ev,_ZTv0_n32_N8S7853C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C18D0Ev,_ZTv0_n32_N8S7853C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C187S7853C3__8S7853C24[] = {
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI8S7853C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__8S7853C187S7853C3__8S7853C24[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI8S7853C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__8S7853C187S7853C3__8S7853C24[] = {
  ABISELECT(-72,-40),
  ABISELECT(-38,-22),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI8S7853C18[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7853C18D1Ev,_ZTv0_n32_N8S7853C18D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7853C18D0Ev,_ZTv0_n32_N8S7853C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__8S7853C187S7853C3__8S7853C24[] = {
  ABISELECT(40,20),
  ABISELECT(-54,-30),
  ABISELECT(-88,-48),
  ABISELECT(-48,-28),
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S7853C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C18D1Ev,_ZTv0_n32_N8S7853C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C18D0Ev,_ZTv0_n32_N8S7853C18D0Ev),
};
extern void ABISELECT(_ZTv0_n72_N8S7853C18D1Ev,_ZTv0_n36_N8S7853C18D1Ev)();
extern void ABISELECT(_ZThn48_N8S7853C18D1Ev,_ZThn28_N8S7853C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7853C18D0Ev,_ZTv0_n36_N8S7853C18D0Ev)();
extern void ABISELECT(_ZThn48_N8S7853C18D0Ev,_ZThn28_N8S7853C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C17__8S7853C187S7853C3__8S7853C24[] = {
  ABISELECT(-48,-28),
  ABISELECT(-142,-78),
  ABISELECT(-176,-96),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-176,-96),
  ABISELECT(-142,-78),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7853C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7853C18D1Ev,_ZTv0_n36_N8S7853C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7853C18D0Ev,_ZTv0_n36_N8S7853C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C17__A1__8S7853C187S7853C3__8S7853C24[] = {
  ABISELECT(-158,-86),
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  ABISELECT(-158,-86),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S7853C18[0]),
};
extern void ABISELECT(_ZTv0_n120_N7S7853C3D1Ev,_ZTv0_n60_N7S7853C3D1Ev)();
extern void ABISELECT(_ZThn24_N7S7853C3D1Ev,_ZThn16_N7S7853C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S7853C3D0Ev,_ZTv0_n60_N7S7853C3D0Ev)();
extern void ABISELECT(_ZThn24_N7S7853C3D0Ev,_ZThn16_N7S7853C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C4__7S7853C3__8S7853C24[] = {
  ABISELECT(-24,-16),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-144,-80),
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-104,-60),
  ABISELECT(-110,-62),
  ABISELECT(-144,-80),
  ABISELECT(-104,-60),
  ABISELECT(-56,-32),
  ABISELECT(-144,-80),
  ABISELECT(-110,-62),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7853C3D1Ev,_ZTv0_n60_N7S7853C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7853C3D0Ev,_ZTv0_n60_N7S7853C3D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7853C3D1Ev,_ZTv0_n44_N7S7853C3D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7853C3D0Ev,_ZTv0_n44_N7S7853C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7853C5__7S7853C3__8S7853C24[] = {
  ABISELECT(80,44),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C3D1Ev,_ZTv0_n44_N7S7853C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C3D0Ev,_ZTv0_n44_N7S7853C3D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7853C3D1Ev,_ZTv0_n32_N7S7853C3D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7853C3D0Ev,_ZTv0_n32_N7S7853C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7853C6__7S7853C3__8S7853C24[] = {
  ABISELECT(64,32),
  ABISELECT(-22,-14),
  ABISELECT(-56,-32),
  ABISELECT(-16,-12),
  ABISELECT(-56,-32),
  ABISELECT(-22,-14),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C3D1Ev,_ZTv0_n32_N7S7853C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C3D0Ev,_ZTv0_n32_N7S7853C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__7S7853C3__8S7853C24[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(120,64),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__7S7853C3__8S7853C24[] = {
  ABISELECT(-72,-40),
  ABISELECT(-38,-22),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7853C3D1Ev,_ZTv0_n32_N7S7853C3D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7853C3D0Ev,_ZTv0_n32_N7S7853C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__7S7853C3__8S7853C24[] = {
  ABISELECT(32,16),
  ABISELECT(-54,-30),
  ABISELECT(-88,-48),
  ABISELECT(-48,-28),
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C3D1Ev,_ZTv0_n32_N7S7853C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C3D0Ev,_ZTv0_n32_N7S7853C3D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7853C3D1Ev,_ZTv0_n44_N7S7853C3D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7853C3D0Ev,_ZTv0_n44_N7S7853C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7853C15__7S7853C3__8S7853C24[] = {
  ABISELECT(16,8),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-104,-56),
  ABISELECT(-70,-38),
  ABISELECT(-104,-56),
  ABISELECT(-70,-38),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C3D1Ev,_ZTv0_n44_N7S7853C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C3D0Ev,_ZTv0_n44_N7S7853C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C177S7853C4__A1__7S7853C3__8S7853C24[] = {
  ABISELECT(-126,-70),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  ABISELECT(-126,-70),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
};
extern void ABISELECT(_ZThn8_N7S7853C3D1Ev,_ZThn4_N7S7853C3D1Ev)();
extern void ABISELECT(_ZThn8_N7S7853C3D0Ev,_ZThn4_N7S7853C3D0Ev)();
extern void _ZN8S7853C182v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C18__7S7853C3__8S7853C24[] = {
  ABISELECT(48,28),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-88,-48),
  ABISELECT(-72,-36),
  ABISELECT(-94,-50),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-94,-50),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7853C3D1Ev,_ZThn4_N7S7853C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7853C3D0Ev,_ZThn4_N7S7853C3D0Ev),
  (VTBL_ENTRY)&_ZN8S7853C182v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N7S7853C3D1Ev,_ZTv0_n36_N7S7853C3D1Ev)();
extern void ABISELECT(_ZThn56_N7S7853C3D1Ev,_ZThn32_N7S7853C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7853C3D0Ev,_ZTv0_n36_N7S7853C3D0Ev)();
extern void ABISELECT(_ZThn56_N7S7853C3D0Ev,_ZThn32_N7S7853C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C17__A1__7S7853C3__8S7853C24[] = {
  ABISELECT(-56,-32),
  ABISELECT(-142,-78),
  ABISELECT(-176,-96),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-176,-96),
  ABISELECT(-142,-78),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7853C3D1Ev,_ZTv0_n36_N7S7853C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7853C3D0Ev,_ZTv0_n36_N7S7853C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C17__A3__7S7853C3__8S7853C24[] = {
  ABISELECT(-158,-86),
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  ABISELECT(-158,-86),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
};
extern void _ZN7S7853C4D1Ev();
extern void _ZN7S7853C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7853C4__A1__8S7853C24[] = {
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-144,-80),
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-104,-60),
  ABISELECT(-110,-62),
  ABISELECT(-144,-80),
  ABISELECT(-104,-60),
  ABISELECT(-56,-32),
  ABISELECT(-144,-80),
  ABISELECT(-110,-62),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&_ZN7S7853C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C4D0Ev,
};
extern void _ZN8S7853C17D1Ev();
extern void _ZN8S7853C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C177S7853C4__A1__8S7853C24[] = {
  ABISELECT(-110,-62),
  ABISELECT(-144,-80),
  ABISELECT(-104,-60),
  ABISELECT(-56,-32),
  ABISELECT(-144,-80),
  ABISELECT(-110,-62),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
  (VTBL_ENTRY)&_ZN8S7853C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C138S7853C177S7853C4__A2__8S7853C24[] = {
  ABISELECT(-144,-80),
  ABISELECT(-110,-62),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C138S7853C177S7853C4__A5__8S7853C24[] = {
  ABISELECT(-144,-80),
  ABISELECT(-110,-62),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C177S7853C4__A3__8S7853C24[] = {
  ABISELECT(-126,-70),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  ABISELECT(-126,-70),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__7S7853C98S7853C177S7853C4__A3__8S7853C24[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(160,88),
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7853C17D1Ev,_ZTv0_n32_N8S7853C17D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7853C17D0Ev,_ZTv0_n32_N8S7853C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7853C12__8S7853C177S7853C4__A1__8S7853C24[] = {
  ABISELECT(56,32),
  ABISELECT(-54,-30),
  ABISELECT(-88,-48),
  ABISELECT(-48,-28),
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C17D1Ev,_ZTv0_n32_N8S7853C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C17D0Ev,_ZTv0_n32_N8S7853C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C177S7853C4__A1__8S7853C24[] = {
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(104,60),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__A1__8S7853C177S7853C4__A1__8S7853C24[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(144,80),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__A__8S7853C177S7853C4__A1__8S7853C24[] = {
  ABISELECT(-126,-70),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  ABISELECT(-126,-70),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7853C5__7S7853C4__A1__8S7853C24[] = {
  ABISELECT(104,60),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(104,60),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7853C6__7S7853C4__A1__8S7853C24[] = {
  ABISELECT(88,48),
  ABISELECT(-22,-14),
  ABISELECT(-56,-32),
  ABISELECT(-16,-12),
  ABISELECT(-56,-32),
  ABISELECT(-22,-14),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__7S7853C4__A1__8S7853C24[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(144,80),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__7S7853C4__A1__8S7853C24[] = {
  ABISELECT(-72,-40),
  ABISELECT(-38,-22),
  ABISELECT(72,40),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__7S7853C4__A1__8S7853C24[] = {
  ABISELECT(56,32),
  ABISELECT(-54,-30),
  ABISELECT(-88,-48),
  ABISELECT(-48,-28),
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7853C15__7S7853C4__A1__8S7853C24[] = {
  ABISELECT(40,24),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-104,-56),
  ABISELECT(-70,-38),
  ABISELECT(-104,-56),
  ABISELECT(-70,-38),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C17__A1__7S7853C4__A1__8S7853C24[] = {
  ABISELECT(-126,-70),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  ABISELECT(-126,-70),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
};
extern void _ZN8S7853C17D1Ev();
extern void _ZN8S7853C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C17__A2__8S7853C24[] = {
  ABISELECT(-142,-78),
  ABISELECT(-176,-96),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-176,-96),
  ABISELECT(-142,-78),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
  (VTBL_ENTRY)&_ZN8S7853C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C138S7853C17__A3__8S7853C24[] = {
  ABISELECT(-176,-96),
  ABISELECT(-142,-78),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C138S7853C17__A6__8S7853C24[] = {
  ABISELECT(-176,-96),
  ABISELECT(-142,-78),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C17__A5__8S7853C24[] = {
  ABISELECT(-158,-86),
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  ABISELECT(-158,-86),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__7S7853C98S7853C17__A5__8S7853C24[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(192,104),
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7853C17D1Ev,_ZTv0_n32_N8S7853C17D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7853C17D0Ev,_ZTv0_n32_N8S7853C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7853C12__8S7853C17__A2__8S7853C24[] = {
  ABISELECT(88,48),
  ABISELECT(-54,-30),
  ABISELECT(-88,-48),
  ABISELECT(-48,-28),
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C17D1Ev,_ZTv0_n32_N8S7853C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C17D0Ev,_ZTv0_n32_N8S7853C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C17__A2__8S7853C24[] = {
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(136,76),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__A1__8S7853C17__A2__8S7853C24[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(176,96),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__A__8S7853C17__A2__8S7853C24[] = {
  ABISELECT(-158,-86),
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  ABISELECT(-158,-86),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
};
static  VTT_ENTRY vtt_S7853C24[] = {
  {&(_ZTV8S7853C24[17]),  17,165},
  {&(_tg__ZTV7S7853C9__A__8S7853C24[6]),  6,6},
  {&(_tg__ZTV7S7853C9__A__8S7853C24[6]),  6,6},
  {&(_tg__ZTV7S7853C4__A__8S7853C24[14]),  14,16},
  {&(_tg__ZTV8S7853C177S7853C4__8S7853C24[8]),  8,10},
  {&(_tg__ZTV8S7853C138S7853C177S7853C4__A1__8S7853C24[4]),  4,4},
  {&(_tg__ZTV8S7853C108S7853C138S7853C177S7853C4__A4__8S7853C24[4]),  4,4},
  {&(_tg__ZTV7S7853C98S7853C177S7853C4__A2__8S7853C24[6]),  6,6},
  {&(_tg__ZTV8S7853C10__7S7853C98S7853C177S7853C4__A2__8S7853C24[4]),  4,4},
  {&(_tg__ZTV8S7853C12__8S7853C177S7853C4__8S7853C24[8]),  8,10},
  {&(_tg__ZTV7S7853C9__8S7853C177S7853C4__8S7853C24[6]),  6,6},
  {&(_tg__ZTV8S7853C10__A1__8S7853C177S7853C4__8S7853C24[4]),  4,4},
  {&(_tg__ZTV7S7853C9__A__8S7853C177S7853C4__8S7853C24[6]),  6,6},
  {&(_tg__ZTV7S7853C5__7S7853C4__A__8S7853C24[11]),  11,13},
  {&(_tg__ZTV7S7853C6__7S7853C4__A__8S7853C24[8]),  8,10},
  {&(_tg__ZTV7S7853C5__7S7853C4__A__8S7853C24[11]),  11,13},
  {&(_tg__ZTV8S7853C10__7S7853C4__A__8S7853C24[4]),  4,4},
  {&(_tg__ZTV8S7853C13__7S7853C4__A__8S7853C24[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__7S7853C4__A__8S7853C24[8]),  8,10},
  {&(_tg__ZTV8S7853C15__7S7853C4__A__8S7853C24[11]),  11,13},
  {&(_tg__ZTV8S7853C15__7S7853C4__A__8S7853C24[11]),  11,13},
  {&(_tg__ZTV7S7853C98S7853C17__A1__7S7853C4__A__8S7853C24[6]),  6,6},
  {&(_ZTV8S7853C24[17]),  17,165},
  {&(_ZTV8S7853C24[52]),  52,165},
  {&(_ZTV8S7853C24[62]),  62,165},
  {&(_ZTV8S7853C24[52]),  52,165},
  {&(_ZTV8S7853C24[68]),  68,165},
  {&(_ZTV8S7853C24[76]),  76,165},
  {&(_ZTV8S7853C24[33]),  33,165},
  {&(_ZTV8S7853C24[89]),  89,165},
  {&(_ZTV8S7853C24[89]),  89,165},
  {&(_ZTV8S7853C24[41]),  41,165},
  {&(_ZTV8S7853C24[109]),  109,165},
  {&(_ZTV8S7853C24[140]),  140,165},
  {&(_ZTV8S7853C24[148]),  148,165},
  {&(_ZTV8S7853C24[122]),  122,165},
  {&(_ZTV8S7853C24[157]),  157,165},
  {&(_ZTV8S7853C24[165]),  165,165},
  {&(_tg__ZTV8S7853C10__8S7853C24[4]),  4,4},
  {&(_tg__ZTV7S7853C5__8S7853C24[10]),  10,12},
  {&(_tg__ZTV7S7853C6__7S7853C5__8S7853C24[8]),  8,10},
  {&(_tg__ZTV7S7853C5__8S7853C24[10]),  10,12},
  {&(_tg__ZTV8S7853C10__7S7853C5__8S7853C24[4]),  4,4},
  {&(_tg__ZTV8S7853C13__7S7853C5__8S7853C24[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__7S7853C5__8S7853C24[8]),  8,10},
  {&(_tg__ZTV7S7853C6__8S7853C24[7]),  7,9},
  {&(_tg__ZTV8S7853C127S7853C6__8S7853C24[7]),  7,9},
  {&(_tg__ZTV8S7853C108S7853C127S7853C6__A1__8S7853C24[4]),  4,4},
  {&(_tg__ZTV7S7853C9__8S7853C127S7853C6__8S7853C24[6]),  6,6},
  {&(_tg__ZTV8S7853C10__A1__8S7853C127S7853C6__8S7853C24[4]),  4,4},
  {&(_tg__ZTV7S7853C9__7S7853C6__8S7853C24[6]),  6,6},
  {&(_tg__ZTV8S7853C10__7S7853C6__8S7853C24[4]),  4,4},
  {&(_tg__ZTV7S7853C9__A1__8S7853C24[6]),  6,6},
  {&(_tg__ZTV8S7853C10__7S7853C9__A1__8S7853C24[4]),  4,4},
  {&(_tg__ZTV8S7853C13__8S7853C24[4]),  4,4},
  {&(_tg__ZTV8S7853C108S7853C13__A2__8S7853C24[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__8S7853C24[7]),  7,9},
  {&(_tg__ZTV8S7853C108S7853C12__A3__8S7853C24[4]),  4,4},
  {&(_tg__ZTV7S7853C9__8S7853C12__A1__8S7853C24[6]),  6,6},
  {&(_tg__ZTV8S7853C10__A1__8S7853C12__A1__8S7853C24[4]),  4,4},
  {&(_tg__ZTV8S7853C15__8S7853C24[10]),  10,12},
  {&(_tg__ZTV8S7853C10__8S7853C15__8S7853C24[4]),  4,4},
  {&(_tg__ZTV8S7853C15__8S7853C24[10]),  10,12},
  {&(_tg__ZTV8S7853C13__8S7853C15__8S7853C24[4]),  4,4},
  {&(_tg__ZTV7S7853C6__8S7853C15__8S7853C24[8]),  8,10},
  {&(_tg__ZTV7S7853C9__8S7853C15__8S7853C24[6]),  6,6},
  {&(_tg__ZTV8S7853C16__8S7853C24[3]),  3,3},
  {&(_tg__ZTV7S7853C3__8S7853C24[16]),  16,18},
  {&(_tg__ZTV7S7853C97S7853C3__A4__8S7853C24[6]),  6,6},
  {&(_tg__ZTV8S7853C10__7S7853C97S7853C3__A4__8S7853C24[4]),  4,4},
  {&(_tg__ZTV8S7853C187S7853C3__8S7853C24[11]),  11,14},
  {&(_tg__ZTV7S7853C58S7853C187S7853C3__A1__8S7853C24[10]),  10,12},
  {&(_tg__ZTV7S7853C6__7S7853C58S7853C187S7853C3__A1__8S7853C24[8]),  8,10},
  {&(_tg__ZTV7S7853C9__7S7853C58S7853C187S7853C3__A1__8S7853C24[6]),  6,6},
  {&(_tg__ZTV8S7853C10__7S7853C58S7853C187S7853C3__A1__8S7853C24[4]),  4,4},
  {&(_tg__ZTV8S7853C13__7S7853C58S7853C187S7853C3__A1__8S7853C24[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__7S7853C58S7853C187S7853C3__A1__8S7853C24[8]),  8,10},
  {&(_tg__ZTV7S7853C6__8S7853C187S7853C3__8S7853C24[8]),  8,10},
  {&(_tg__ZTV7S7853C9__8S7853C187S7853C3__8S7853C24[6]),  6,6},
  {&(_tg__ZTV8S7853C10__8S7853C187S7853C3__8S7853C24[4]),  4,4},
  {&(_tg__ZTV8S7853C13__8S7853C187S7853C3__8S7853C24[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__8S7853C187S7853C3__8S7853C24[8]),  8,10},
  {&(_tg__ZTV8S7853C17__8S7853C187S7853C3__8S7853C24[9]),  9,11},
  {&(_tg__ZTV7S7853C98S7853C17__A1__8S7853C187S7853C3__8S7853C24[6]),  6,6},
  {&(_tg__ZTV7S7853C4__7S7853C3__8S7853C24[15]),  15,17},
  {&(_tg__ZTV7S7853C5__7S7853C3__8S7853C24[11]),  11,13},
  {&(_tg__ZTV7S7853C6__7S7853C3__8S7853C24[8]),  8,10},
  {&(_tg__ZTV7S7853C5__7S7853C3__8S7853C24[11]),  11,13},
  {&(_tg__ZTV8S7853C10__7S7853C3__8S7853C24[4]),  4,4},
  {&(_tg__ZTV8S7853C13__7S7853C3__8S7853C24[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__7S7853C3__8S7853C24[8]),  8,10},
  {&(_tg__ZTV8S7853C15__7S7853C3__8S7853C24[11]),  11,13},
  {&(_tg__ZTV8S7853C15__7S7853C3__8S7853C24[11]),  11,13},
  {&(_tg__ZTV7S7853C98S7853C177S7853C4__A1__7S7853C3__8S7853C24[6]),  6,6},
  {&(_tg__ZTV8S7853C18__7S7853C3__8S7853C24[11]),  11,14},
  {&(_tg__ZTV8S7853C17__A1__7S7853C3__8S7853C24[9]),  9,11},
  {&(_tg__ZTV7S7853C98S7853C17__A3__7S7853C3__8S7853C24[6]),  6,6},
  {&(_tg__ZTV7S7853C4__A1__8S7853C24[14]),  14,16},
  {&(_tg__ZTV8S7853C177S7853C4__A1__8S7853C24[8]),  8,10},
  {&(_tg__ZTV8S7853C138S7853C177S7853C4__A2__8S7853C24[4]),  4,4},
  {&(_tg__ZTV8S7853C108S7853C138S7853C177S7853C4__A5__8S7853C24[4]),  4,4},
  {&(_tg__ZTV7S7853C98S7853C177S7853C4__A3__8S7853C24[6]),  6,6},
  {&(_tg__ZTV8S7853C10__7S7853C98S7853C177S7853C4__A3__8S7853C24[4]),  4,4},
  {&(_tg__ZTV8S7853C12__8S7853C177S7853C4__A1__8S7853C24[8]),  8,10},
  {&(_tg__ZTV7S7853C9__8S7853C177S7853C4__A1__8S7853C24[6]),  6,6},
  {&(_tg__ZTV8S7853C10__A1__8S7853C177S7853C4__A1__8S7853C24[4]),  4,4},
  {&(_tg__ZTV7S7853C9__A__8S7853C177S7853C4__A1__8S7853C24[6]),  6,6},
  {&(_tg__ZTV7S7853C5__7S7853C4__A1__8S7853C24[11]),  11,13},
  {&(_tg__ZTV7S7853C6__7S7853C4__A1__8S7853C24[8]),  8,10},
  {&(_tg__ZTV7S7853C5__7S7853C4__A1__8S7853C24[11]),  11,13},
  {&(_tg__ZTV8S7853C10__7S7853C4__A1__8S7853C24[4]),  4,4},
  {&(_tg__ZTV8S7853C13__7S7853C4__A1__8S7853C24[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__7S7853C4__A1__8S7853C24[8]),  8,10},
  {&(_tg__ZTV8S7853C15__7S7853C4__A1__8S7853C24[11]),  11,13},
  {&(_tg__ZTV8S7853C15__7S7853C4__A1__8S7853C24[11]),  11,13},
  {&(_tg__ZTV7S7853C98S7853C17__A1__7S7853C4__A1__8S7853C24[6]),  6,6},
  {&(_tg__ZTV8S7853C17__A2__8S7853C24[8]),  8,10},
  {&(_tg__ZTV8S7853C138S7853C17__A3__8S7853C24[4]),  4,4},
  {&(_tg__ZTV8S7853C108S7853C138S7853C17__A6__8S7853C24[4]),  4,4},
  {&(_tg__ZTV7S7853C98S7853C17__A5__8S7853C24[6]),  6,6},
  {&(_tg__ZTV8S7853C10__7S7853C98S7853C17__A5__8S7853C24[4]),  4,4},
  {&(_tg__ZTV8S7853C12__8S7853C17__A2__8S7853C24[8]),  8,10},
  {&(_tg__ZTV7S7853C9__8S7853C17__A2__8S7853C24[6]),  6,6},
  {&(_tg__ZTV8S7853C10__A1__8S7853C17__A2__8S7853C24[4]),  4,4},
  {&(_tg__ZTV7S7853C9__A__8S7853C17__A2__8S7853C24[6]),  6,6},
};
extern VTBL_ENTRY _ZTI8S7853C24[];
extern  VTBL_ENTRY _ZTV8S7853C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C24[];
static VTBL_ENTRY alt_thunk_names61[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7853C3D0Ev,_ZTv0_n36_N7S7853C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7853C3D0Ev,_ZThn32_N7S7853C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7853C3D1Ev,_ZTv0_n36_N7S7853C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7853C3D1Ev,_ZThn32_N7S7853C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7853C3D0Ev,_ZTv0_n60_N7S7853C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7853C3D0Ev,_ZThn16_N7S7853C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7853C3D1Ev,_ZTv0_n60_N7S7853C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7853C3D1Ev,_ZThn16_N7S7853C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7853C18D0Ev,_ZTv0_n36_N8S7853C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7853C18D0Ev,_ZThn28_N8S7853C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7853C18D1Ev,_ZTv0_n36_N8S7853C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7853C18D1Ev,_ZThn28_N8S7853C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7853C5D0Ev,_ZThn28_N7S7853C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7853C5D0Ev,_ZThn12_N7S7853C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7853C5D1Ev,_ZThn28_N7S7853C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7853C5D1Ev,_ZThn12_N7S7853C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7853C4D0Ev,_ZThn44_N7S7853C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7853C4D0Ev,_ZThn28_N7S7853C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7853C4D1Ev,_ZThn44_N7S7853C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7853C4D1Ev,_ZThn28_N7S7853C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7853C4D0Ev,_ZThn52_N7S7853C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7853C4D0Ev,_ZThn16_N7S7853C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7853C4D1Ev,_ZThn52_N7S7853C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7853C4D1Ev,_ZThn16_N7S7853C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7853C17D0Ev,_ZTv0_n32_N8S7853C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7853C17D0Ev,_ZThn44_N8S7853C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7853C17D1Ev,_ZTv0_n32_N8S7853C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7853C17D1Ev,_ZThn44_N8S7853C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7853C24D0Ev,_ZTv0_n36_N8S7853C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S7853C24D0Ev,_ZThn96_N8S7853C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7853C24D1Ev,_ZTv0_n36_N8S7853C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S7853C24D1Ev,_ZThn96_N8S7853C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7853C24D0Ev,_ZTv0_n60_N8S7853C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7853C24D0Ev,_ZThn80_N8S7853C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7853C24D1Ev,_ZTv0_n60_N8S7853C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7853C24D1Ev,_ZThn80_N8S7853C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N8S7853C24D0Ev,_ZTv0_n68_N8S7853C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7853C24D0Ev,_ZThn64_N8S7853C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N8S7853C24D1Ev,_ZTv0_n68_N8S7853C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7853C24D1Ev,_ZThn64_N8S7853C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7853C24D0Ev,_ZTv0_n32_N8S7853C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7853C24D0Ev,_ZThn48_N8S7853C24D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7853C24D0Ev,_ZThn32_N8S7853C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7853C24D1Ev,_ZTv0_n32_N8S7853C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7853C24D1Ev,_ZThn48_N8S7853C24D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7853C24D1Ev,_ZThn32_N8S7853C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7853C24D0Ev,_ZTv0_n44_N8S7853C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7853C24D0Ev,_ZThn56_N8S7853C24D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S7853C24D0Ev,_ZThn20_N8S7853C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7853C24D1Ev,_ZTv0_n44_N8S7853C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7853C24D1Ev,_ZThn56_N8S7853C24D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S7853C24D1Ev,_ZThn20_N8S7853C24D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7853C24 = {  "S7853C24", // class name
  bases_S7853C24, 65,
  &(vtc_S7853C24[0]), // expected_vtbl_contents
  &(vtt_S7853C24[0]), // expected_vtt_contents
  ABISELECT(208,112), // object size
  NSPAIRA(_ZTI8S7853C24),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S7853C24),165, //virtual function table var
  17, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7853C24),125, //virtual table table var
  31, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names61,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7853C1  : S7853C2 , virtual S7853C19 , S7853C20 , S7856C12 , virtual S7853C24 {
  void *s7853c1f0;
  virtual  ~S7853C1(); // _ZN7S7853C1D2Ev
  S7853C1(); // tgen
};
//SIG(1 S7853C1) C1{ BC2{ VBC3{ VBC4{ VBC5{ VBC6{ VBC7{ m} VBC8{ m} VBC9{ BC7 VBC10{ VBC7 BC8 VBC11{ m}} VBC8} BC11 BC12{ BC8 VBC7 VBC11 BC10 VBC9 vd} vd} VBC13{ BC11 BC8 BC10 Fi} VBC12 vd Fi[2]} VBC14{ m} VBC15{ VBC10 VBC16{ VBC8} VBC13 BC11 VBC6 vd Fi} BC17{ VBC12 BC13 BC9 BC11 vd} vd} BC7 BC9 BC18{ BC14 VBC7 BC5 VBC17 vd v1} vd} vd Fi[2]} VBC19{ BC6 vd} BC20{ BC6 VBC13 VBC21{ VBC6 VBC4 vd} BC22{ BC8 BC16 vd} BC23{ m} Fi} BC11 VBC24{ BC9 VBC5 BC4 VBC3 vd Fc} vd Fp}


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

static void Test_S7853C1()
{
  extern Class_Descriptor cd_S7853C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(37,40)];
    init_test(&cd_S7853C1, buf);
    S7853C1 *dp, &lv = *(dp=new (buf) S7853C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(288,156), "sizeof(S7853C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7853C1)");
    /*is_ambiguous_... S7853C1::S7853C6 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C6*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C6 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C12*)(S7853C6*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C6 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C12*)(S7853C6*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C13*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C12*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C12*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C4 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C18::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C18*)(S7853C3*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C17 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C13*)(S7853C17*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C6::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C6*)(S7853C19*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C12::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C12*)(S7853C6*)(S7853C19*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C12*)(S7853C6*)(S7853C19*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C6*)(S7853C20*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C12*)(S7853C6*)(S7853C20*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C12*)(S7853C6*)(S7853C20*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C13*)(S7853C17*)(S7853C4*)(S7853C24*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C6 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C6*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C9*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C16 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C16*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C4 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C9*)(S7853C17*)(S7853C4*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C3::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C9*)(S7853C3*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C17 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C9*)(S7853C17*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C6::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C6*)(S7853C19*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C6*)(S7853C20*), ABISELECT(137,81), "S7853C1");
    check_base_class_offset(lv, (S7856C15*)(S7853C16*)(S7853C22*)(S7853C20*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C24::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C9*)(S7853C24*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C9*)(S7853C17*)(S7853C4*)(S7853C24*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C9*), 0, "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*), 0, "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C6 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C12*)(S7853C6*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C6 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C12*)(S7853C6*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C13*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C12*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C12*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C4 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C17 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C13*)(S7853C17*), ABISELECT(137,81), "S7853C1");
    check_base_class_offset(lv, (S7856C12*)(S7853C12*)(S7853C6*)(S7853C19*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C12*)(S7853C6*)(S7853C19*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C12*)(S7853C6*)(S7853C20*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C12*)(S7853C6*)(S7853C20*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C13*)(S7853C17*)(S7853C4*)(S7853C24*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C9 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C9*), 0, "S7853C1");
    /*is_ambiguous_... S7853C15::S7853C10 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C15*), 0, "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C4 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C9*)(S7853C17*)(S7853C4*), 0, "S7853C1");
    /*is_ambiguous_... S7853C3::S7853C9 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C9*)(S7853C3*), 0, "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C17 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C9*)(S7853C17*), 0, "S7853C1");
    /*is_ambiguous_... S7853C24::S7853C9 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C9*)(S7853C24*), 0, "S7853C1");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C9*)(S7853C17*)(S7853C4*)(S7853C24*), 0, "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C6 */ AMB_check_base_class_offset(lv, (S7853C9*)(S7853C6*), 0, "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C6 */ AMB_check_base_class_offset(lv, (S7853C9*)(S7853C12*)(S7853C6*), 0, "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C12 */ AMB_check_base_class_offset(lv, (S7853C9*)(S7853C12*), 0, "S7853C1");
    check_base_class_offset(lv, (S7853C9*)(S7853C6*)(S7853C19*), 0, "S7853C1");
    check_base_class_offset(lv, (S7853C9*)(S7853C12*)(S7853C6*)(S7853C19*), 0, "S7853C1");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7853C9*)(S7853C6*)(S7853C20*), 0, "S7853C1");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7853C9*)(S7853C12*)(S7853C6*)(S7853C20*), 0, "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C6 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C6*), ABISELECT(128,76), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C6 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C12*)(S7853C6*), ABISELECT(136,80), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C6 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C12*)(S7853C6*), ABISELECT(128,76), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C6 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C12*)(S7853C6*), ABISELECT(128,76), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C6 */ AMB_check_base_class_offset(lv, (S7853C12*)(S7853C6*), ABISELECT(128,76), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C5 */ AMB_check_base_class_offset(lv, (S7853C6*)(S7853C5*), ABISELECT(128,76), "S7853C1");
    check_base_class_offset(lv, (S7853C6*)(S7853C15*), ABISELECT(128,76), "S7853C1");
    check_base_class_offset(lv, (S7853C6*)(S7853C5*)(S7853C18*)(S7853C3*), ABISELECT(128,76), "S7853C1");
    check_base_class_offset(lv, (S7853C6*)(S7853C21*), ABISELECT(128,76), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C13*), ABISELECT(144,84), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C13*), ABISELECT(152,88), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C13*), ABISELECT(144,84), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C13 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C13*), ABISELECT(144,84), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C5 */ AMB_check_base_class_offset(lv, (S7853C13*)(S7853C5*), ABISELECT(144,84), "S7853C1");
    check_base_class_offset(lv, (S7853C13*)(S7853C15*), ABISELECT(144,84), "S7853C1");
    check_base_class_offset(lv, (S7853C13*)(S7853C5*)(S7853C18*)(S7853C3*), ABISELECT(144,84), "S7853C1");
    /*is_ambiguous_... S7853C20::S7853C13 */ AMB_check_base_class_offset(lv, (S7853C13*)(S7853C20*), ABISELECT(144,84), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C12*), ABISELECT(168,96), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C12*), ABISELECT(160,92), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C12 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C12*), ABISELECT(160,92), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C5 */ AMB_check_base_class_offset(lv, (S7853C12*)(S7853C5*), ABISELECT(160,92), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C4 */ AMB_check_base_class_offset(lv, (S7853C12*)(S7853C17*)(S7853C4*), ABISELECT(160,92), "S7853C1");
    /*is_ambiguous_... S7853C5::S7853C12 */ AMB_check_base_class_offset(lv, (S7853C12*)(S7853C5*)(S7853C18*)(S7853C3*), ABISELECT(160,92), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C17 */ AMB_check_base_class_offset(lv, (S7853C12*)(S7853C17*), ABISELECT(160,92), "S7853C1");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7853C12*)(S7853C17*)(S7853C4*)(S7853C24*), ABISELECT(160,92), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C4 */ AMB_check_base_class_offset(lv, (S7853C5*)(S7853C4*), ABISELECT(112,64), "S7853C1");
    /*is_ambiguous_... S7853C24::S7853C5 */ AMB_check_base_class_offset(lv, (S7853C5*)(S7853C24*), ABISELECT(112,64), "S7853C1");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7853C5*)(S7853C4*)(S7853C24*), ABISELECT(112,64), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C4 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7853C4*), 0, "S7853C1");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7853C4*)(S7853C24*), 0, "S7853C1");
    check_base_class_offset(lv, (S7853C16*)(S7853C15*), ABISELECT(176,100), "S7853C1");
    /*is_ambiguous_... S7853C15::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C15*), ABISELECT(176,100), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C4 */ AMB_check_base_class_offset(lv, (S7853C15*)(S7853C4*), ABISELECT(176,100), "S7853C1");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7853C15*)(S7853C4*)(S7853C24*), ABISELECT(176,100), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C4 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(80,48), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C4 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(88,52), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C4 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(80,48), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C4 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(80,48), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C4 */ AMB_check_base_class_offset(lv, (S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(80,48), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C4 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C9*)(S7853C17*)(S7853C4*), ABISELECT(96,56), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C4 */ AMB_check_base_class_offset(lv, (S7853C9*)(S7853C17*)(S7853C4*), ABISELECT(96,56), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C4 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C17*)(S7853C4*), ABISELECT(104,60), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C4 */ AMB_check_base_class_offset(lv, (S7853C17*)(S7853C4*), ABISELECT(80,48), "S7853C1");
    check_base_class_offset(lv, (S7853C4*)(S7853C3*), ABISELECT(80,48), "S7853C1");
    check_base_class_offset(lv, (S7853C4*)(S7853C21*), ABISELECT(80,48), "S7853C1");
    /*is_ambiguous_... S7853C3::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C3*), ABISELECT(64,36), "S7853C1");
    /*is_ambiguous_... S7853C3::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C9*)(S7853C3*), ABISELECT(56,32), "S7853C1");
    /*is_ambiguous_... S7853C3::S7853C9 */ AMB_check_base_class_offset(lv, (S7853C9*)(S7853C3*), ABISELECT(56,32), "S7853C1");
    check_base_class_offset(lv, (S7856C9_nt*)(S7853C18*)(S7853C3*), ABISELECT(64,36), "S7853C1");
    check_base_class_offset(lv, (S7853C5*)(S7853C18*)(S7853C3*), ABISELECT(64,36), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C17 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C13*)(S7853C17*), ABISELECT(192,108), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C17 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C13*)(S7853C17*), ABISELECT(200,112), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C17 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C13*)(S7853C17*), ABISELECT(192,108), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C17 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C13*)(S7853C17*), ABISELECT(192,108), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C17 */ AMB_check_base_class_offset(lv, (S7853C13*)(S7853C17*), ABISELECT(192,108), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C17 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C9*)(S7853C17*), ABISELECT(208,116), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C17 */ AMB_check_base_class_offset(lv, (S7853C9*)(S7853C17*), ABISELECT(208,116), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C17 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C17*), ABISELECT(216,120), "S7853C1");
    check_base_class_offset(lv, (S7853C17*)(S7853C18*)(S7853C3*), ABISELECT(192,108), "S7853C1");
    check_base_class_offset(lv, (S7853C18*)(S7853C3*), ABISELECT(64,36), "S7853C1");
    check_base_class_offset(lv, (S7853C3*)(S7853C2*), ABISELECT(56,32), "S7853C1");
    check_base_class_offset(lv, (S7853C3*)(S7853C24*), ABISELECT(56,32), "S7853C1");
    check_base_class_offset(lv, (S7853C2*), 0, "S7853C1");
    /*is_ambiguous_... S7853C6::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C6*)(S7853C19*), ABISELECT(224,124), "S7853C1");
    /*is_ambiguous_... S7853C12::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C12*)(S7853C6*)(S7853C19*), ABISELECT(232,128), "S7853C1");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C12*)(S7853C6*)(S7853C19*), ABISELECT(224,124), "S7853C1");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C12*)(S7853C6*)(S7853C19*), ABISELECT(224,124), "S7853C1");
    check_base_class_offset(lv, (S7853C12*)(S7853C6*)(S7853C19*), ABISELECT(224,124), "S7853C1");
    check_base_class_offset(lv, (S7853C6*)(S7853C19*), ABISELECT(224,124), "S7853C1");
    check_base_class_offset(lv, (S7853C19*), ABISELECT(224,124), "S7853C1");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C6*)(S7853C20*), ABISELECT(16,12), "S7853C1");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C12*)(S7853C6*)(S7853C20*), ABISELECT(24,16), "S7853C1");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C12*)(S7853C6*)(S7853C20*), ABISELECT(16,12), "S7853C1");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C12*)(S7853C6*)(S7853C20*), ABISELECT(16,12), "S7853C1");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7853C12*)(S7853C6*)(S7853C20*), ABISELECT(16,12), "S7853C1");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7853C6*)(S7853C20*), ABISELECT(16,12), "S7853C1");
    check_base_class_offset(lv, (S7853C21*)(S7853C20*), ABISELECT(240,132), "S7853C1");
    /*is_ambiguous_... S7853C22::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C22*)(S7853C20*), ABISELECT(32,20), "S7853C1");
    check_base_class_offset(lv, (S7853C16*)(S7853C22*)(S7853C20*), ABISELECT(32,20), "S7853C1");
    check_base_class_offset(lv, (S7853C22*)(S7853C20*), ABISELECT(32,20), "S7853C1");
    check_base_class_offset(lv, (S77C13_nt*)(S7853C20*), ABISELECT(16,12), "S7853C1");
    check_base_class_offset(lv, (S7853C20*), ABISELECT(16,12), "S7853C1");
    /*is_ambiguous_... S7853C1::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), 0, "S7853C1");
    /*is_ambiguous_... S7853C24::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C9*)(S7853C24*), ABISELECT(248,136), "S7853C1");
    /*is_ambiguous_... S7853C24::S7853C9 */ AMB_check_base_class_offset(lv, (S7853C9*)(S7853C24*), ABISELECT(248,136), "S7853C1");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C13*)(S7853C17*)(S7853C4*)(S7853C24*), ABISELECT(256,140), "S7853C1");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C13*)(S7853C17*)(S7853C4*)(S7853C24*), ABISELECT(264,144), "S7853C1");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C13*)(S7853C17*)(S7853C4*)(S7853C24*), ABISELECT(256,140), "S7853C1");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C13*)(S7853C17*)(S7853C4*)(S7853C24*), ABISELECT(256,140), "S7853C1");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7853C13*)(S7853C17*)(S7853C4*)(S7853C24*), ABISELECT(256,140), "S7853C1");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C9*)(S7853C17*)(S7853C4*)(S7853C24*), ABISELECT(272,148), "S7853C1");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7853C9*)(S7853C17*)(S7853C4*)(S7853C24*), ABISELECT(272,148), "S7853C1");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C17*)(S7853C4*)(S7853C24*), ABISELECT(280,152), "S7853C1");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7853C17*)(S7853C4*)(S7853C24*), ABISELECT(256,140), "S7853C1");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7853C4*)(S7853C24*), ABISELECT(256,140), "S7853C1");
    check_base_class_offset(lv, (S7853C24*), ABISELECT(248,136), "S7853C1");
    check_field_offset(lv, s7853c1f0, ABISELECT(48,28), "S7853C1.s7853c1f0");
    test_class_info(&lv, &cd_S7853C1);
    dp->~S7853C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7853C1(Test_S7853C1, "S7853C1", ABISELECT(288,156));

#else // __cplusplus

extern void _ZN7S7853C1C1Ev();
extern void _ZN7S7853C1D2Ev();
Name_Map name_map_S7853C1[] = {
  NSPAIR(_ZN7S7853C1C1Ev),
  NSPAIR(_ZN7S7853C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C9;
extern VTBL_ENTRY _ZTI7S7853C9[];
extern  VTBL_ENTRY _ZTV7S7853C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C12;
extern VTBL_ENTRY _ZTI8S7853C12[];
extern  VTBL_ENTRY _ZTV8S7853C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C12[];
extern Class_Descriptor cd_S7853C6;
extern VTBL_ENTRY _ZTI7S7853C6[];
extern  VTBL_ENTRY _ZTV7S7853C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C6[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C13;
extern VTBL_ENTRY _ZTI8S7853C13[];
extern  VTBL_ENTRY _ZTV8S7853C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C13[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C12;
extern VTBL_ENTRY _ZTI8S7853C12[];
extern  VTBL_ENTRY _ZTV8S7853C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C12[];
extern Class_Descriptor cd_S7853C5;
extern VTBL_ENTRY _ZTI7S7853C5[];
extern  VTBL_ENTRY _ZTV7S7853C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C5[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7853C16;
extern VTBL_ENTRY _ZTI8S7853C16[];
extern  VTBL_ENTRY _ZTV8S7853C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C16[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7853C15;
extern VTBL_ENTRY _ZTI8S7853C15[];
extern  VTBL_ENTRY _ZTV8S7853C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C13;
extern VTBL_ENTRY _ZTI8S7853C13[];
extern  VTBL_ENTRY _ZTV8S7853C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C13[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7853C9;
extern VTBL_ENTRY _ZTI7S7853C9[];
extern  VTBL_ENTRY _ZTV7S7853C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7853C17;
extern VTBL_ENTRY _ZTI8S7853C17[];
extern  VTBL_ENTRY _ZTV8S7853C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C17[];
extern Class_Descriptor cd_S7853C4;
extern VTBL_ENTRY _ZTI7S7853C4[];
extern  VTBL_ENTRY _ZTV7S7853C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C4[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7853C9;
extern VTBL_ENTRY _ZTI7S7853C9[];
extern  VTBL_ENTRY _ZTV7S7853C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C9[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7853C5;
extern VTBL_ENTRY _ZTI7S7853C5[];
extern  VTBL_ENTRY _ZTV7S7853C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C5[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C13;
extern VTBL_ENTRY _ZTI8S7853C13[];
extern  VTBL_ENTRY _ZTV8S7853C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C13[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7853C9;
extern VTBL_ENTRY _ZTI7S7853C9[];
extern  VTBL_ENTRY _ZTV7S7853C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7853C17;
extern VTBL_ENTRY _ZTI8S7853C17[];
extern  VTBL_ENTRY _ZTV8S7853C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C17[];
extern Class_Descriptor cd_S7853C18;
extern VTBL_ENTRY _ZTI8S7853C18[];
extern  VTBL_ENTRY _ZTV8S7853C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C18[];
extern Class_Descriptor cd_S7853C3;
extern VTBL_ENTRY _ZTI7S7853C3[];
extern  VTBL_ENTRY _ZTV7S7853C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C3[];
extern Class_Descriptor cd_S7853C2;
extern VTBL_ENTRY _ZTI7S7853C2[];
extern  VTBL_ENTRY _ZTV7S7853C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C2[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C12;
extern VTBL_ENTRY _ZTI8S7853C12[];
extern  VTBL_ENTRY _ZTV8S7853C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C12[];
extern Class_Descriptor cd_S7853C6;
extern VTBL_ENTRY _ZTI7S7853C6[];
extern  VTBL_ENTRY _ZTV7S7853C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C6[];
extern Class_Descriptor cd_S7853C19;
extern VTBL_ENTRY _ZTI8S7853C19[];
extern  VTBL_ENTRY _ZTV8S7853C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C19[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C12;
extern VTBL_ENTRY _ZTI8S7853C12[];
extern  VTBL_ENTRY _ZTV8S7853C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C12[];
extern Class_Descriptor cd_S7853C6;
extern VTBL_ENTRY _ZTI7S7853C6[];
extern  VTBL_ENTRY _ZTV7S7853C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C6[];
extern Class_Descriptor cd_S7853C21;
extern VTBL_ENTRY _ZTI8S7853C21[];
extern  VTBL_ENTRY _ZTV8S7853C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C21[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C16;
extern VTBL_ENTRY _ZTI8S7853C16[];
extern  VTBL_ENTRY _ZTV8S7853C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C16[];
extern Class_Descriptor cd_S7853C22;
extern VTBL_ENTRY _ZTI8S7853C22[];
extern  VTBL_ENTRY _ZTV8S7853C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C22[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7853C20;
extern VTBL_ENTRY _ZTI8S7853C20[];
extern  VTBL_ENTRY _ZTV8S7853C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C20[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7853C9;
extern VTBL_ENTRY _ZTI7S7853C9[];
extern  VTBL_ENTRY _ZTV7S7853C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C13;
extern VTBL_ENTRY _ZTI8S7853C13[];
extern  VTBL_ENTRY _ZTV8S7853C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C13[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7853C9;
extern VTBL_ENTRY _ZTI7S7853C9[];
extern  VTBL_ENTRY _ZTV7S7853C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7853C17;
extern VTBL_ENTRY _ZTI8S7853C17[];
extern  VTBL_ENTRY _ZTV8S7853C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C17[];
extern Class_Descriptor cd_S7853C4;
extern VTBL_ENTRY _ZTI7S7853C4[];
extern  VTBL_ENTRY _ZTV7S7853C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C4[];
extern Class_Descriptor cd_S7853C24;
extern VTBL_ENTRY _ZTI8S7853C24[];
extern  VTBL_ENTRY _ZTV8S7853C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C24[];
static Base_Class bases_S7853C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    ABISELECT(137,81), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(137,81), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(137,81), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7853C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    124, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7853C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    122, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(128,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(136,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(128,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(128,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    117, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7853C12,    ABISELECT(128,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    116, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7853C6,    ABISELECT(128,76), //bcp->offset
    115, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    115, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(144,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(152,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(144,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(144,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    126, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7853C13,    ABISELECT(144,84), //bcp->offset
    125, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    125, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(168,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(160,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(160,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    128, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7853C12,    ABISELECT(160,92), //bcp->offset
    129, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    127, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7853C5,    ABISELECT(112,64), //bcp->offset
    102, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    109, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S7853C16,    ABISELECT(176,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    137, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(176,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7853C15,    ABISELECT(176,100), //bcp->offset
    139, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    131, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(88,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    93, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7853C13,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    92, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(96,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S7853C9,    ABISELECT(96,56), //bcp->offset
    96, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    94, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(104,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7853C17,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    91, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S7853C4,    ABISELECT(80,48), //bcp->offset
    79, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    90, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    52, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    52, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S7853C9,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    52, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S7853C5,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(192,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(200,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(192,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(192,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    140, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S7853C13,    ABISELECT(192,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    139, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(208,116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S7853C9,    ABISELECT(208,116), //bcp->offset
    163, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    141, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(216,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S7853C17,    ABISELECT(192,108), //bcp->offset
    152, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    138, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    51, //immediately_derived
  0, 1},
  {&cd_S7853C18,    ABISELECT(64,36), //bcp->offset
    65, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    52, //immediately_derived
  0, 0},
  {&cd_S7853C3,    ABISELECT(56,32), //bcp->offset
    45, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    53, //immediately_derived
  0, 1},
  {&cd_S7853C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    ABISELECT(224,124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    59, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(232,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(224,124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(224,124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    150, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S7853C12,    ABISELECT(224,124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    149, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    59, //immediately_derived
  0, 0},
  {&cd_S7853C6,    ABISELECT(224,124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    148, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    60, //immediately_derived
  0, 0},
  {&cd_S7853C19,    ABISELECT(224,124), //bcp->offset
    169, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    147, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    66, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    65, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    64, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    65, //immediately_derived
  0, 0},
  {&cd_S7853C12,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    40, //init_seq
    66, //immediately_derived
  0, 0},
  {&cd_S7853C6,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    41, //init_seq
    72, //immediately_derived
  0, 0},
  {&cd_S7853C21,    ABISELECT(240,132), //bcp->offset
    179, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    55, //bcp->index_in_construction_vtbl_array
    157, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    72, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    70, //immediately_derived
  0, 0},
  {&cd_S7853C16,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    42, //init_seq
    70, //immediately_derived
  0, 0},
  {&cd_S7853C22,    ABISELECT(32,20), //bcp->offset
    40, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    56, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    43, //init_seq
    72, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    72, //immediately_derived
  0, 0},
  {&cd_S7853C20,    ABISELECT(16,12), //bcp->offset
    22, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    54, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    44, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    ABISELECT(248,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    75, //immediately_derived
  0, 0},
  {&cd_S7853C9,    ABISELECT(248,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    169, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    86, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(256,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    80, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(264,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    80, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(256,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    79, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(256,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    174, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    80, //immediately_derived
  0, 0},
  {&cd_S7853C13,    ABISELECT(256,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    173, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    84, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(272,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    82, //immediately_derived
  0, 0},
  {&cd_S7853C9,    ABISELECT(272,148), //bcp->offset
    233, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    59, //bcp->index_in_construction_vtbl_array
    175, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    84, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(280,152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    84, //immediately_derived
  0, 0},
  {&cd_S7853C17,    ABISELECT(256,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    172, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    85, //immediately_derived
  0, 0},
  {&cd_S7853C4,    ABISELECT(256,140), //bcp->offset
    217, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    58, //bcp->index_in_construction_vtbl_array
    171, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    86, //immediately_derived
  0, 0},
  {&cd_S7853C24,    ABISELECT(248,136), //bcp->offset
    197, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    57, //bcp->index_in_construction_vtbl_array
    168, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7853C1[];
extern void _ZN7S7853C1D1Ev();
extern void _ZN7S7853C1D0Ev();
extern void ABISELECT(_ZThn16_N7S7853C1D1Ev,_ZThn12_N7S7853C1D1Ev)();
extern void ABISELECT(_ZThn16_N7S7853C1D0Ev,_ZThn12_N7S7853C1D0Ev)();
extern void ABISELECT(_ZThn32_N7S7853C1D1Ev,_ZThn20_N7S7853C1D1Ev)();
extern void ABISELECT(_ZThn32_N7S7853C1D0Ev,_ZThn20_N7S7853C1D0Ev)();
extern void ABISELECT(_ZTv0_n136_N7S7853C1D1Ev,_ZTv0_n68_N7S7853C1D1Ev)();
extern void ABISELECT(_ZThn56_N7S7853C1D1Ev,_ZThn32_N7S7853C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N7S7853C1D0Ev,_ZTv0_n68_N7S7853C1D0Ev)();
extern void ABISELECT(_ZThn56_N7S7853C1D0Ev,_ZThn32_N7S7853C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn8_n136_N7S7853C1D1Ev,_ZTvn4_n68_N7S7853C1D1Ev)();
extern void ABISELECT(_ZTvn8_n136_N7S7853C1D0Ev,_ZTvn4_n68_N7S7853C1D0Ev)();
extern void _ZN8S7853C182v1Ev();
extern void ABISELECT(_ZTv0_n120_N7S7853C1D1Ev,_ZTv0_n60_N7S7853C1D1Ev)();
extern void ABISELECT(_ZThn80_N7S7853C1D1Ev,_ZThn48_N7S7853C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S7853C1D0Ev,_ZTv0_n60_N7S7853C1D0Ev)();
extern void ABISELECT(_ZThn80_N7S7853C1D0Ev,_ZThn48_N7S7853C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7853C1D1Ev,_ZTv0_n44_N7S7853C1D1Ev)();
extern void ABISELECT(_ZThn112_N7S7853C1D1Ev,_ZThn64_N7S7853C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7853C1D0Ev,_ZTv0_n44_N7S7853C1D0Ev)();
extern void ABISELECT(_ZThn112_N7S7853C1D0Ev,_ZThn64_N7S7853C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C1D1Ev,_ZTv0_n32_N7S7853C1D1Ev)();
extern void ABISELECT(_ZThn128_N7S7853C1D1Ev,_ZThn76_N7S7853C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C1D0Ev,_ZTv0_n32_N7S7853C1D0Ev)();
extern void ABISELECT(_ZThn128_N7S7853C1D0Ev,_ZThn76_N7S7853C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C1D1Ev,_ZTv0_n32_N7S7853C1D1Ev)();
extern void ABISELECT(_ZThn160_N7S7853C1D1Ev,_ZThn92_N7S7853C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C1D0Ev,_ZTv0_n32_N7S7853C1D0Ev)();
extern void ABISELECT(_ZThn160_N7S7853C1D0Ev,_ZThn92_N7S7853C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7853C1D1Ev,_ZTv0_n44_N7S7853C1D1Ev)();
extern void ABISELECT(_ZThn176_N7S7853C1D1Ev,_ZThn100_N7S7853C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7853C1D0Ev,_ZTv0_n44_N7S7853C1D0Ev)();
extern void ABISELECT(_ZThn176_N7S7853C1D0Ev,_ZThn100_N7S7853C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7853C1D1Ev,_ZTv0_n36_N7S7853C1D1Ev)();
extern void ABISELECT(_ZThn192_N7S7853C1D1Ev,_ZThn108_N7S7853C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7853C1D0Ev,_ZTv0_n36_N7S7853C1D0Ev)();
extern void ABISELECT(_ZThn192_N7S7853C1D0Ev,_ZThn108_N7S7853C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C1D1Ev,_ZTv0_n32_N7S7853C1D1Ev)();
extern void ABISELECT(_ZThn224_N7S7853C1D1Ev,_ZThn124_N7S7853C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C1D0Ev,_ZTv0_n32_N7S7853C1D0Ev)();
extern void ABISELECT(_ZThn224_N7S7853C1D0Ev,_ZThn124_N7S7853C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N7S7853C1D1Ev,_ZTv0_n64_N7S7853C1D1Ev)();
extern void ABISELECT(_ZThn240_N7S7853C1D1Ev,_ZThn132_N7S7853C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N7S7853C1D0Ev,_ZTv0_n64_N7S7853C1D0Ev)();
extern void ABISELECT(_ZThn240_N7S7853C1D0Ev,_ZThn132_N7S7853C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N7S7853C1D1Ev,_ZTv0_n72_N7S7853C1D1Ev)();
extern void ABISELECT(_ZThn248_N7S7853C1D1Ev,_ZThn136_N7S7853C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N7S7853C1D0Ev,_ZTv0_n72_N7S7853C1D0Ev)();
extern void ABISELECT(_ZThn248_N7S7853C1D0Ev,_ZThn136_N7S7853C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn8_n144_N7S7853C1D1Ev,_ZTvn4_n72_N7S7853C1D1Ev)();
extern void ABISELECT(_ZTvn8_n144_N7S7853C1D0Ev,_ZTvn4_n72_N7S7853C1D0Ev)();
static  VTBL_ENTRY vtc_S7853C1[] = {
  ABISELECT(248,136),
  ABISELECT(240,132),
  ABISELECT(224,124),
  ABISELECT(192,108),
  ABISELECT(176,100),
  ABISELECT(176,100),
  0,
  ABISELECT(160,92),
  ABISELECT(144,84),
  0,
  ABISELECT(128,76),
  ABISELECT(112,64),
  ABISELECT(80,48),
  ABISELECT(56,32),
  ABISELECT(137,81),
  0,
  ABISELECT(137,81),
  ABISELECT(137,81),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C1[0]),
  (VTBL_ENTRY)&_ZN7S7853C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C1D0Ev,
  ABISELECT(160,88),
  ABISELECT(160,88),
  ABISELECT(-16,-12),
  ABISELECT(144,80),
  ABISELECT(96,52),
  ABISELECT(64,36),
  ABISELECT(112,64),
  ABISELECT(224,120),
  ABISELECT(128,72),
  ABISELECT(121,69),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(121,69),
  ABISELECT(121,69),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7853C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S7853C1D1Ev,_ZThn12_N7S7853C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S7853C1D0Ev,_ZThn12_N7S7853C1D0Ev),
  ABISELECT(105,61),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S7853C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S7853C1D1Ev,_ZThn20_N7S7853C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S7853C1D0Ev,_ZThn20_N7S7853C1D0Ev),
  ABISELECT(8,4),
  ABISELECT(-56,-32),
  ABISELECT(136,76),
  ABISELECT(120,68),
  ABISELECT(120,68),
  ABISELECT(-56,-32),
  ABISELECT(104,60),
  ABISELECT(88,52),
  ABISELECT(-56,-32),
  ABISELECT(72,44),
  ABISELECT(56,32),
  ABISELECT(24,16),
  ABISELECT(81,49),
  ABISELECT(-56,-32),
  ABISELECT(81,49),
  ABISELECT(81,49),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S7853C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N7S7853C1D1Ev,_ZTv0_n68_N7S7853C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N7S7853C1D0Ev,_ZTv0_n68_N7S7853C1D0Ev),
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(-64,-36),
  ABISELECT(64,40),
  ABISELECT(73,45),
  ABISELECT(-64,-36),
  ABISELECT(73,45),
  ABISELECT(73,45),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S7853C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N7S7853C1D1Ev,_ZTvn4_n68_N7S7853C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N7S7853C1D0Ev,_ZTvn4_n68_N7S7853C1D0Ev),
  (VTBL_ENTRY)&_ZN8S7853C182v1Ev,
  ABISELECT(-80,-48),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-80,-48),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(57,33),
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  ABISELECT(80,44),
  ABISELECT(57,33),
  ABISELECT(57,33),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S7853C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7853C1D1Ev,_ZTv0_n60_N7S7853C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7853C1D0Ev,_ZTv0_n60_N7S7853C1D0Ev),
  ABISELECT(41,25),
  ABISELECT(-96,-56),
  ABISELECT(41,25),
  ABISELECT(41,25),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI7S7853C1[0]),
  ABISELECT(-112,-64),
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(-112,-64),
  ABISELECT(16,12),
  ABISELECT(25,17),
  ABISELECT(-112,-64),
  ABISELECT(25,17),
  ABISELECT(25,17),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI7S7853C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C1D1Ev,_ZTv0_n44_N7S7853C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C1D0Ev,_ZTv0_n44_N7S7853C1D0Ev),
  ABISELECT(-128,-76),
  ABISELECT(9,5),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  ABISELECT(9,5),
  ABISELECT(9,5),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI7S7853C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C1D1Ev,_ZTv0_n32_N7S7853C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C1D0Ev,_ZTv0_n32_N7S7853C1D0Ev),
  ABISELECT(-7,-3),
  ABISELECT(-7,-3),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI7S7853C1[0]),
  ABISELECT(-160,-92),
  ABISELECT(-23,-11),
  ABISELECT(-160,-92),
  ABISELECT(-160,-92),
  ABISELECT(-23,-11),
  ABISELECT(-23,-11),
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI7S7853C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C1D1Ev,_ZTv0_n32_N7S7853C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C1D0Ev,_ZTv0_n32_N7S7853C1D0Ev),
  ABISELECT(-176,-100),
  ABISELECT(-176,-100),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-39,-19),
  ABISELECT(-39,-19),
  ABISELECT(-176,-100),
  ABISELECT(-39,-19),
  ABISELECT(-176,-100),
  (VTBL_ENTRY)&(_ZTI7S7853C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C1D1Ev,_ZTv0_n44_N7S7853C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C1D0Ev,_ZTv0_n44_N7S7853C1D0Ev),
  ABISELECT(-192,-108),
  ABISELECT(-55,-27),
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  ABISELECT(-32,-16),
  ABISELECT(-55,-27),
  ABISELECT(-55,-27),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI7S7853C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7853C1D1Ev,_ZTv0_n36_N7S7853C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7853C1D0Ev,_ZTv0_n36_N7S7853C1D0Ev),
  ABISELECT(-71,-35),
  ABISELECT(-208,-116),
  ABISELECT(-71,-35),
  ABISELECT(-71,-35),
  ABISELECT(-208,-116),
  (VTBL_ENTRY)&(_ZTI7S7853C1[0]),
  ABISELECT(-224,-124),
  ABISELECT(-87,-43),
  ABISELECT(-224,-124),
  ABISELECT(-224,-124),
  ABISELECT(-87,-43),
  ABISELECT(-87,-43),
  ABISELECT(-224,-124),
  (VTBL_ENTRY)&(_ZTI7S7853C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C1D1Ev,_ZTv0_n32_N7S7853C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C1D0Ev,_ZTv0_n32_N7S7853C1D0Ev),
  ABISELECT(-240,-132),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-240,-132),
  ABISELECT(-80,-40),
  ABISELECT(-96,-48),
  ABISELECT(-128,-68),
  ABISELECT(-160,-84),
  ABISELECT(-240,-132),
  ABISELECT(-112,-56),
  ABISELECT(-103,-51),
  ABISELECT(-240,-132),
  ABISELECT(-103,-51),
  ABISELECT(-103,-51),
  ABISELECT(-240,-132),
  (VTBL_ENTRY)&(_ZTI7S7853C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S7853C1D1Ev,_ZTv0_n64_N7S7853C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S7853C1D0Ev,_ZTv0_n64_N7S7853C1D0Ev),
  ABISELECT(-248,-136),
  ABISELECT(-56,-28),
  ABISELECT(-168,-88),
  ABISELECT(-192,-104),
  ABISELECT(-72,-36),
  ABISELECT(-72,-36),
  ABISELECT(-248,-136),
  ABISELECT(-88,-44),
  ABISELECT(-104,-52),
  ABISELECT(-248,-136),
  ABISELECT(-120,-60),
  ABISELECT(-136,-72),
  ABISELECT(-111,-55),
  ABISELECT(-248,-136),
  ABISELECT(-111,-55),
  ABISELECT(-111,-55),
  ABISELECT(-248,-136),
  (VTBL_ENTRY)&(_ZTI7S7853C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N7S7853C1D1Ev,_ZTv0_n72_N7S7853C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N7S7853C1D0Ev,_ZTv0_n72_N7S7853C1D0Ev),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-256,-140),
  ABISELECT(-112,-56),
  ABISELECT(-128,-64),
  ABISELECT(-144,-76),
  ABISELECT(-119,-59),
  ABISELECT(-256,-140),
  ABISELECT(-256,-140),
  ABISELECT(-96,-48),
  ABISELECT(-119,-59),
  ABISELECT(-119,-59),
  ABISELECT(-256,-140),
  (VTBL_ENTRY)&(_ZTI7S7853C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n144_N7S7853C1D1Ev,_ZTvn4_n72_N7S7853C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n144_N7S7853C1D0Ev,_ZTvn4_n72_N7S7853C1D0Ev),
  ABISELECT(-135,-67),
  ABISELECT(-272,-148),
  ABISELECT(-135,-67),
  ABISELECT(-135,-67),
  ABISELECT(-272,-148),
  (VTBL_ENTRY)&(_ZTI7S7853C1[0]),
};
extern VTBL_ENTRY _ZTV7S7853C1[];
extern void _ZN7S7853C2D1Ev();
extern void _ZN7S7853C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7853C2__7S7853C1[] = {
  ABISELECT(192,108),
  ABISELECT(176,100),
  ABISELECT(176,100),
  0,
  ABISELECT(160,92),
  ABISELECT(144,84),
  0,
  ABISELECT(128,76),
  ABISELECT(112,64),
  ABISELECT(80,48),
  ABISELECT(56,32),
  ABISELECT(137,81),
  0,
  ABISELECT(137,81),
  ABISELECT(137,81),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C2[0]),
  (VTBL_ENTRY)&_ZN7S7853C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C2D0Ev,
};
extern void ABISELECT(_ZTv0_n136_N7S7853C2D1Ev,_ZTv0_n68_N7S7853C2D1Ev)();
extern void ABISELECT(_ZThn56_N7S7853C2D1Ev,_ZThn32_N7S7853C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N7S7853C2D0Ev,_ZTv0_n68_N7S7853C2D0Ev)();
extern void ABISELECT(_ZThn56_N7S7853C2D0Ev,_ZThn32_N7S7853C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C3__7S7853C2__7S7853C1[] = {
  ABISELECT(8,4),
  ABISELECT(-56,-32),
  ABISELECT(136,76),
  ABISELECT(120,68),
  ABISELECT(120,68),
  ABISELECT(-56,-32),
  ABISELECT(104,60),
  ABISELECT(88,52),
  ABISELECT(-56,-32),
  ABISELECT(72,44),
  ABISELECT(56,32),
  ABISELECT(24,16),
  ABISELECT(81,49),
  ABISELECT(-56,-32),
  ABISELECT(81,49),
  ABISELECT(81,49),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S7853C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N7S7853C2D1Ev,_ZTv0_n68_N7S7853C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N7S7853C2D0Ev,_ZTv0_n68_N7S7853C2D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N7S7853C2D1Ev,_ZTv0_n60_N7S7853C2D1Ev)();
extern void ABISELECT(_ZThn80_N7S7853C2D1Ev,_ZThn48_N7S7853C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S7853C2D0Ev,_ZTv0_n60_N7S7853C2D0Ev)();
extern void ABISELECT(_ZThn80_N7S7853C2D0Ev,_ZThn48_N7S7853C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C4__7S7853C2__7S7853C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-80,-48),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(57,33),
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  ABISELECT(80,44),
  ABISELECT(57,33),
  ABISELECT(57,33),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S7853C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7853C2D1Ev,_ZTv0_n60_N7S7853C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7853C2D0Ev,_ZTv0_n60_N7S7853C2D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7853C2D1Ev,_ZTv0_n44_N7S7853C2D1Ev)();
extern void ABISELECT(_ZThn112_N7S7853C2D1Ev,_ZThn64_N7S7853C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7853C2D0Ev,_ZTv0_n44_N7S7853C2D0Ev)();
extern void ABISELECT(_ZThn112_N7S7853C2D0Ev,_ZThn64_N7S7853C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C5__7S7853C2__7S7853C1[] = {
  ABISELECT(-112,-64),
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(-112,-64),
  ABISELECT(16,12),
  ABISELECT(25,17),
  ABISELECT(-112,-64),
  ABISELECT(25,17),
  ABISELECT(25,17),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI7S7853C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C2D1Ev,_ZTv0_n44_N7S7853C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C2D0Ev,_ZTv0_n44_N7S7853C2D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7853C2D1Ev,_ZTv0_n32_N7S7853C2D1Ev)();
extern void ABISELECT(_ZThn128_N7S7853C2D1Ev,_ZThn76_N7S7853C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C2D0Ev,_ZTv0_n32_N7S7853C2D0Ev)();
extern void ABISELECT(_ZThn128_N7S7853C2D0Ev,_ZThn76_N7S7853C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C6__7S7853C2__7S7853C1[] = {
  ABISELECT(-128,-76),
  ABISELECT(9,5),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  ABISELECT(9,5),
  ABISELECT(9,5),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI7S7853C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C2D1Ev,_ZTv0_n32_N7S7853C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C2D0Ev,_ZTv0_n32_N7S7853C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__7S7853C2__7S7853C1[] = {
  ABISELECT(-7,-3),
  ABISELECT(-7,-3),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI7S7853C2[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7853C2D1Ev,_ZTv0_n32_N7S7853C2D1Ev)();
extern void ABISELECT(_ZThn160_N7S7853C2D1Ev,_ZThn92_N7S7853C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C2D0Ev,_ZTv0_n32_N7S7853C2D0Ev)();
extern void ABISELECT(_ZThn160_N7S7853C2D0Ev,_ZThn92_N7S7853C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__7S7853C2__7S7853C1[] = {
  ABISELECT(-160,-92),
  ABISELECT(-23,-11),
  ABISELECT(-160,-92),
  ABISELECT(-160,-92),
  ABISELECT(-23,-11),
  ABISELECT(-23,-11),
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI7S7853C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C2D1Ev,_ZTv0_n32_N7S7853C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C2D0Ev,_ZTv0_n32_N7S7853C2D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7853C2D1Ev,_ZTv0_n44_N7S7853C2D1Ev)();
extern void ABISELECT(_ZThn176_N7S7853C2D1Ev,_ZThn100_N7S7853C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7853C2D0Ev,_ZTv0_n44_N7S7853C2D0Ev)();
extern void ABISELECT(_ZThn176_N7S7853C2D0Ev,_ZThn100_N7S7853C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C15__7S7853C2__7S7853C1[] = {
  ABISELECT(-176,-100),
  ABISELECT(-176,-100),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-39,-19),
  ABISELECT(-39,-19),
  ABISELECT(-176,-100),
  ABISELECT(-39,-19),
  ABISELECT(-176,-100),
  (VTBL_ENTRY)&(_ZTI7S7853C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C2D1Ev,_ZTv0_n44_N7S7853C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C2D0Ev,_ZTv0_n44_N7S7853C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C177S7853C4__A1__7S7853C2__7S7853C1[] = {
  ABISELECT(41,25),
  ABISELECT(-96,-56),
  ABISELECT(41,25),
  ABISELECT(41,25),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI7S7853C2[0]),
};
extern void ABISELECT(_ZTvn8_n136_N7S7853C2D1Ev,_ZTvn4_n68_N7S7853C2D1Ev)();
extern void ABISELECT(_ZTvn8_n136_N7S7853C2D0Ev,_ZTvn4_n68_N7S7853C2D0Ev)();
extern void _ZN8S7853C182v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C187S7853C3__7S7853C2__7S7853C1[] = {
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(-64,-36),
  ABISELECT(64,40),
  ABISELECT(73,45),
  ABISELECT(-64,-36),
  ABISELECT(73,45),
  ABISELECT(73,45),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S7853C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N7S7853C2D1Ev,_ZTvn4_n68_N7S7853C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N7S7853C2D0Ev,_ZTvn4_n68_N7S7853C2D0Ev),
  (VTBL_ENTRY)&_ZN8S7853C182v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N7S7853C2D1Ev,_ZTv0_n36_N7S7853C2D1Ev)();
extern void ABISELECT(_ZThn192_N7S7853C2D1Ev,_ZThn108_N7S7853C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7853C2D0Ev,_ZTv0_n36_N7S7853C2D0Ev)();
extern void ABISELECT(_ZThn192_N7S7853C2D0Ev,_ZThn108_N7S7853C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C17__A1__7S7853C2__7S7853C1[] = {
  ABISELECT(-192,-108),
  ABISELECT(-55,-27),
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  ABISELECT(-32,-16),
  ABISELECT(-55,-27),
  ABISELECT(-55,-27),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI7S7853C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7853C2D1Ev,_ZTv0_n36_N7S7853C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7853C2D0Ev,_ZTv0_n36_N7S7853C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C17__A3__7S7853C2__7S7853C1[] = {
  ABISELECT(-71,-35),
  ABISELECT(-208,-116),
  ABISELECT(-71,-35),
  ABISELECT(-71,-35),
  ABISELECT(-208,-116),
  (VTBL_ENTRY)&(_ZTI7S7853C2[0]),
};
extern void _ZN8S7853C20D1Ev();
extern void _ZN8S7853C20D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C20__7S7853C1[] = {
  ABISELECT(160,88),
  ABISELECT(160,88),
  ABISELECT(-16,-12),
  ABISELECT(144,80),
  ABISELECT(96,52),
  ABISELECT(64,36),
  ABISELECT(112,64),
  ABISELECT(224,120),
  ABISELECT(128,72),
  ABISELECT(121,69),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(121,69),
  ABISELECT(121,69),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C20[0]),
  (VTBL_ENTRY)&_ZN8S7853C20D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C20D0Ev,
};
extern void _ZN7S7853C6D1Ev();
extern void _ZN7S7853C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7853C68S7853C20__A2__7S7853C1[] = {
  ABISELECT(121,69),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(121,69),
  ABISELECT(121,69),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C6[0]),
  (VTBL_ENTRY)&_ZN7S7853C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C6D0Ev,
};
extern void _ZN8S7853C12D1Ev();
extern void _ZN8S7853C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C127S7853C68S7853C20__A3__7S7853C1[] = {
  ABISELECT(121,69),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(121,69),
  ABISELECT(121,69),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
  (VTBL_ENTRY)&_ZN8S7853C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C127S7853C68S7853C20__A7__7S7853C1[] = {
  ABISELECT(121,69),
  ABISELECT(121,69),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C127S7853C68S7853C20__A3__7S7853C1[] = {
  ABISELECT(137,81),
  0,
  ABISELECT(137,81),
  ABISELECT(137,81),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__7S7853C68S7853C20__A2__7S7853C1[] = {
  ABISELECT(137,81),
  0,
  ABISELECT(137,81),
  ABISELECT(137,81),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7853C6[0]),
};
extern void _ZN8S7853C22D1Ev();
extern void _ZN8S7853C22D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C228S7853C20__7S7853C1[] = {
  ABISELECT(105,61),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C22[0]),
  (VTBL_ENTRY)&_ZN8S7853C22D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C22D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C168S7853C228S7853C20__A1__7S7853C1[] = {
  ABISELECT(105,61),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C16[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C20__7S7853C1[] = {
  ABISELECT(137,81),
  0,
  ABISELECT(137,81),
  ABISELECT(137,81),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S7853C20[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__8S7853C20__7S7853C1[] = {
  ABISELECT(-7,-3),
  ABISELECT(-7,-3),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S7853C20[0]),
};
extern void ABISELECT(_ZTv0_n128_N8S7853C20D1Ev,_ZTv0_n64_N8S7853C20D1Ev)();
extern void ABISELECT(_ZThn224_N8S7853C20D1Ev,_ZThn120_N8S7853C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S7853C20D0Ev,_ZTv0_n64_N8S7853C20D0Ev)();
extern void ABISELECT(_ZThn224_N8S7853C20D0Ev,_ZThn120_N8S7853C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C21__8S7853C20__7S7853C1[] = {
  ABISELECT(-224,-120),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-240,-132),
  ABISELECT(-80,-40),
  ABISELECT(-96,-48),
  ABISELECT(-128,-68),
  ABISELECT(-160,-84),
  ABISELECT(-240,-132),
  ABISELECT(-112,-56),
  ABISELECT(-103,-51),
  ABISELECT(-240,-132),
  ABISELECT(-103,-51),
  ABISELECT(-103,-51),
  ABISELECT(-224,-120),
  (VTBL_ENTRY)&(_ZTI8S7853C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7853C20D1Ev,_ZTv0_n64_N8S7853C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7853C20D0Ev,_ZTv0_n64_N8S7853C20D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7853C20D1Ev,_ZTv0_n32_N8S7853C20D1Ev)();
extern void ABISELECT(_ZThn112_N8S7853C20D1Ev,_ZThn64_N8S7853C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7853C20D0Ev,_ZTv0_n32_N8S7853C20D0Ev)();
extern void ABISELECT(_ZThn112_N8S7853C20D0Ev,_ZThn64_N8S7853C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C6__A1__8S7853C20__7S7853C1[] = {
  ABISELECT(-112,-64),
  ABISELECT(9,5),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  ABISELECT(9,5),
  ABISELECT(9,5),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI8S7853C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C20D1Ev,_ZTv0_n32_N8S7853C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C20D0Ev,_ZTv0_n32_N8S7853C20D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S7853C20D1Ev,_ZTv0_n60_N8S7853C20D1Ev)();
extern void ABISELECT(_ZThn64_N8S7853C20D1Ev,_ZThn36_N8S7853C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S7853C20D0Ev,_ZTv0_n60_N8S7853C20D0Ev)();
extern void ABISELECT(_ZThn64_N8S7853C20D0Ev,_ZThn36_N8S7853C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C4__8S7853C20__7S7853C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-80,-48),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(57,33),
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  ABISELECT(80,44),
  ABISELECT(57,33),
  ABISELECT(57,33),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S7853C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7853C20D1Ev,_ZTv0_n60_N8S7853C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7853C20D0Ev,_ZTv0_n60_N8S7853C20D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7853C20D1Ev,_ZTv0_n44_N8S7853C20D1Ev)();
extern void ABISELECT(_ZThn96_N8S7853C20D1Ev,_ZThn52_N8S7853C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7853C20D0Ev,_ZTv0_n44_N8S7853C20D0Ev)();
extern void ABISELECT(_ZThn96_N8S7853C20D0Ev,_ZThn52_N8S7853C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C5__8S7853C20__7S7853C1[] = {
  ABISELECT(-96,-52),
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(-112,-64),
  ABISELECT(16,12),
  ABISELECT(25,17),
  ABISELECT(-112,-64),
  ABISELECT(25,17),
  ABISELECT(25,17),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S7853C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7853C20D1Ev,_ZTv0_n44_N8S7853C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7853C20D0Ev,_ZTv0_n44_N8S7853C20D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7853C20D1Ev,_ZTv0_n32_N8S7853C20D1Ev)();
extern void ABISELECT(_ZThn144_N8S7853C20D1Ev,_ZThn80_N8S7853C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7853C20D0Ev,_ZTv0_n32_N8S7853C20D0Ev)();
extern void ABISELECT(_ZThn144_N8S7853C20D0Ev,_ZThn80_N8S7853C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C12__A2__8S7853C20__7S7853C1[] = {
  ABISELECT(-144,-80),
  ABISELECT(-23,-11),
  ABISELECT(-160,-92),
  ABISELECT(-160,-92),
  ABISELECT(-23,-11),
  ABISELECT(-23,-11),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI8S7853C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C20D1Ev,_ZTv0_n32_N8S7853C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C20D0Ev,_ZTv0_n32_N8S7853C20D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7853C20D1Ev,_ZTv0_n44_N8S7853C20D1Ev)();
extern void ABISELECT(_ZThn160_N8S7853C20D1Ev,_ZThn88_N8S7853C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7853C20D0Ev,_ZTv0_n44_N8S7853C20D0Ev)();
extern void ABISELECT(_ZThn160_N8S7853C20D0Ev,_ZThn88_N8S7853C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C15__8S7853C20__7S7853C1[] = {
  ABISELECT(-160,-88),
  ABISELECT(-176,-100),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-39,-19),
  ABISELECT(-39,-19),
  ABISELECT(-176,-100),
  ABISELECT(-39,-19),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S7853C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7853C20D1Ev,_ZTv0_n44_N8S7853C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7853C20D0Ev,_ZTv0_n44_N8S7853C20D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C177S7853C4__A1__8S7853C20__7S7853C1[] = {
  ABISELECT(41,25),
  ABISELECT(-96,-56),
  ABISELECT(41,25),
  ABISELECT(41,25),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S7853C20[0]),
};
extern void ABISELECT(_ZThn16_N8S7853C20D1Ev,_ZThn8_N8S7853C20D1Ev)();
extern void ABISELECT(_ZThn16_N8S7853C20D0Ev,_ZThn8_N8S7853C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7853C22__8S7853C20__7S7853C1[] = {
  ABISELECT(105,61),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7853C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S7853C20D1Ev,_ZThn8_N8S7853C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S7853C20D0Ev,_ZThn8_N8S7853C20D0Ev),
};
extern void _ZN7S7853C3D1Ev();
extern void _ZN7S7853C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7853C3__7S7853C1[] = {
  ABISELECT(136,76),
  ABISELECT(120,68),
  ABISELECT(120,68),
  ABISELECT(-56,-32),
  ABISELECT(104,60),
  ABISELECT(88,52),
  ABISELECT(-56,-32),
  ABISELECT(72,44),
  ABISELECT(56,32),
  ABISELECT(24,16),
  ABISELECT(81,49),
  ABISELECT(-56,-32),
  ABISELECT(81,49),
  ABISELECT(81,49),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
  (VTBL_ENTRY)&_ZN7S7853C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C3D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7853C97S7853C3__A2__7S7853C1[] = {
  ABISELECT(81,49),
  ABISELECT(-56,-32),
  ABISELECT(81,49),
  ABISELECT(81,49),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__7S7853C97S7853C3__A2__7S7853C1[] = {
  ABISELECT(137,81),
  ABISELECT(137,81),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
extern void _ZN8S7853C18D1Ev();
extern void _ZN8S7853C18D0Ev();
extern void _ZN8S7853C182v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C187S7853C3__7S7853C1[] = {
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(-64,-36),
  ABISELECT(64,40),
  ABISELECT(73,45),
  ABISELECT(-64,-36),
  ABISELECT(73,45),
  ABISELECT(73,45),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C18[0]),
  (VTBL_ENTRY)&_ZN8S7853C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C18D0Ev,
  (VTBL_ENTRY)&_ZN8S7853C182v1Ev,
};
extern void _ZN7S7853C5D1Ev();
extern void _ZN7S7853C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7853C58S7853C187S7853C3__A1__7S7853C1[] = {
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(-64,-36),
  ABISELECT(64,40),
  ABISELECT(73,45),
  ABISELECT(-64,-36),
  ABISELECT(73,45),
  ABISELECT(73,45),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&_ZN7S7853C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C5D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev)();
extern void ABISELECT(_ZThn64_N7S7853C5D1Ev,_ZThn40_N7S7853C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev)();
extern void ABISELECT(_ZThn64_N7S7853C5D0Ev,_ZThn40_N7S7853C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C6__7S7853C58S7853C187S7853C3__A1__7S7853C1[] = {
  ABISELECT(-64,-40),
  ABISELECT(9,5),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  ABISELECT(9,5),
  ABISELECT(9,5),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__7S7853C58S7853C187S7853C3__A1__7S7853C1[] = {
  ABISELECT(137,81),
  0,
  ABISELECT(137,81),
  ABISELECT(137,81),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__7S7853C58S7853C187S7853C3__A1__7S7853C1[] = {
  ABISELECT(-7,-3),
  ABISELECT(-7,-3),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev)();
extern void ABISELECT(_ZThn96_N7S7853C5D1Ev,_ZThn56_N7S7853C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev)();
extern void ABISELECT(_ZThn96_N7S7853C5D0Ev,_ZThn56_N7S7853C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__7S7853C58S7853C187S7853C3__A1__7S7853C1[] = {
  ABISELECT(-96,-56),
  ABISELECT(-23,-11),
  ABISELECT(-160,-92),
  ABISELECT(-160,-92),
  ABISELECT(-23,-11),
  ABISELECT(-23,-11),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7853C18D1Ev,_ZTv0_n32_N8S7853C18D1Ev)();
extern void ABISELECT(_ZThn64_N8S7853C18D1Ev,_ZThn40_N8S7853C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7853C18D0Ev,_ZTv0_n32_N8S7853C18D0Ev)();
extern void ABISELECT(_ZThn64_N8S7853C18D0Ev,_ZThn40_N8S7853C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C6__8S7853C187S7853C3__7S7853C1[] = {
  ABISELECT(-64,-40),
  ABISELECT(9,5),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  ABISELECT(9,5),
  ABISELECT(9,5),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S7853C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C18D1Ev,_ZTv0_n32_N8S7853C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C18D0Ev,_ZTv0_n32_N8S7853C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C187S7853C3__7S7853C1[] = {
  ABISELECT(137,81),
  0,
  ABISELECT(137,81),
  ABISELECT(137,81),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S7853C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__8S7853C187S7853C3__7S7853C1[] = {
  ABISELECT(-7,-3),
  ABISELECT(-7,-3),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S7853C18[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7853C18D1Ev,_ZTv0_n32_N8S7853C18D1Ev)();
extern void ABISELECT(_ZThn96_N8S7853C18D1Ev,_ZThn56_N8S7853C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7853C18D0Ev,_ZTv0_n32_N8S7853C18D0Ev)();
extern void ABISELECT(_ZThn96_N8S7853C18D0Ev,_ZThn56_N8S7853C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__8S7853C187S7853C3__7S7853C1[] = {
  ABISELECT(-96,-56),
  ABISELECT(-23,-11),
  ABISELECT(-160,-92),
  ABISELECT(-160,-92),
  ABISELECT(-23,-11),
  ABISELECT(-23,-11),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S7853C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C18D1Ev,_ZTv0_n32_N8S7853C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C18D0Ev,_ZTv0_n32_N8S7853C18D0Ev),
};
extern void ABISELECT(_ZTv0_n72_N8S7853C18D1Ev,_ZTv0_n36_N8S7853C18D1Ev)();
extern void ABISELECT(_ZThn128_N8S7853C18D1Ev,_ZThn72_N8S7853C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7853C18D0Ev,_ZTv0_n36_N8S7853C18D0Ev)();
extern void ABISELECT(_ZThn128_N8S7853C18D0Ev,_ZThn72_N8S7853C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C17__8S7853C187S7853C3__7S7853C1[] = {
  ABISELECT(-128,-72),
  ABISELECT(-55,-27),
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  ABISELECT(-32,-16),
  ABISELECT(-55,-27),
  ABISELECT(-55,-27),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S7853C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7853C18D1Ev,_ZTv0_n36_N8S7853C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7853C18D0Ev,_ZTv0_n36_N8S7853C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C17__A1__8S7853C187S7853C3__7S7853C1[] = {
  ABISELECT(-71,-35),
  ABISELECT(-208,-116),
  ABISELECT(-71,-35),
  ABISELECT(-71,-35),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI8S7853C18[0]),
};
extern void ABISELECT(_ZTv0_n120_N7S7853C3D1Ev,_ZTv0_n60_N7S7853C3D1Ev)();
extern void ABISELECT(_ZThn24_N7S7853C3D1Ev,_ZThn16_N7S7853C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S7853C3D0Ev,_ZTv0_n60_N7S7853C3D0Ev)();
extern void ABISELECT(_ZThn24_N7S7853C3D0Ev,_ZThn16_N7S7853C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C4__7S7853C3__7S7853C1[] = {
  ABISELECT(-24,-16),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-80,-48),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(57,33),
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  ABISELECT(80,44),
  ABISELECT(57,33),
  ABISELECT(57,33),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7853C3D1Ev,_ZTv0_n60_N7S7853C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7853C3D0Ev,_ZTv0_n60_N7S7853C3D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7853C3D1Ev,_ZTv0_n44_N7S7853C3D1Ev)();
extern void ABISELECT(_ZThn56_N7S7853C3D1Ev,_ZThn32_N7S7853C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7853C3D0Ev,_ZTv0_n44_N7S7853C3D0Ev)();
extern void ABISELECT(_ZThn56_N7S7853C3D0Ev,_ZThn32_N7S7853C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C5__7S7853C3__7S7853C1[] = {
  ABISELECT(-56,-32),
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(-112,-64),
  ABISELECT(16,12),
  ABISELECT(25,17),
  ABISELECT(-112,-64),
  ABISELECT(25,17),
  ABISELECT(25,17),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C3D1Ev,_ZTv0_n44_N7S7853C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C3D0Ev,_ZTv0_n44_N7S7853C3D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7853C3D1Ev,_ZTv0_n32_N7S7853C3D1Ev)();
extern void ABISELECT(_ZThn72_N7S7853C3D1Ev,_ZThn44_N7S7853C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C3D0Ev,_ZTv0_n32_N7S7853C3D0Ev)();
extern void ABISELECT(_ZThn72_N7S7853C3D0Ev,_ZThn44_N7S7853C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C6__7S7853C3__7S7853C1[] = {
  ABISELECT(-72,-44),
  ABISELECT(9,5),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  ABISELECT(9,5),
  ABISELECT(9,5),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C3D1Ev,_ZTv0_n32_N7S7853C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C3D0Ev,_ZTv0_n32_N7S7853C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__7S7853C3__7S7853C1[] = {
  ABISELECT(137,81),
  0,
  ABISELECT(137,81),
  ABISELECT(137,81),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__7S7853C3__7S7853C1[] = {
  ABISELECT(-7,-3),
  ABISELECT(-7,-3),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7853C3D1Ev,_ZTv0_n32_N7S7853C3D1Ev)();
extern void ABISELECT(_ZThn104_N7S7853C3D1Ev,_ZThn60_N7S7853C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C3D0Ev,_ZTv0_n32_N7S7853C3D0Ev)();
extern void ABISELECT(_ZThn104_N7S7853C3D0Ev,_ZThn60_N7S7853C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__7S7853C3__7S7853C1[] = {
  ABISELECT(-104,-60),
  ABISELECT(-23,-11),
  ABISELECT(-160,-92),
  ABISELECT(-160,-92),
  ABISELECT(-23,-11),
  ABISELECT(-23,-11),
  ABISELECT(-104,-60),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C3D1Ev,_ZTv0_n32_N7S7853C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C3D0Ev,_ZTv0_n32_N7S7853C3D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7853C3D1Ev,_ZTv0_n44_N7S7853C3D1Ev)();
extern void ABISELECT(_ZThn120_N7S7853C3D1Ev,_ZThn68_N7S7853C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7853C3D0Ev,_ZTv0_n44_N7S7853C3D0Ev)();
extern void ABISELECT(_ZThn120_N7S7853C3D0Ev,_ZThn68_N7S7853C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C15__7S7853C3__7S7853C1[] = {
  ABISELECT(-120,-68),
  ABISELECT(-176,-100),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-39,-19),
  ABISELECT(-39,-19),
  ABISELECT(-176,-100),
  ABISELECT(-39,-19),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C3D1Ev,_ZTv0_n44_N7S7853C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C3D0Ev,_ZTv0_n44_N7S7853C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C177S7853C4__A1__7S7853C3__7S7853C1[] = {
  ABISELECT(41,25),
  ABISELECT(-96,-56),
  ABISELECT(41,25),
  ABISELECT(41,25),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
};
extern void ABISELECT(_ZThn8_N7S7853C3D1Ev,_ZThn4_N7S7853C3D1Ev)();
extern void ABISELECT(_ZThn8_N7S7853C3D0Ev,_ZThn4_N7S7853C3D0Ev)();
extern void _ZN8S7853C182v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C18__7S7853C3__7S7853C1[] = {
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(-64,-36),
  ABISELECT(64,40),
  ABISELECT(73,45),
  ABISELECT(-64,-36),
  ABISELECT(73,45),
  ABISELECT(73,45),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7853C3D1Ev,_ZThn4_N7S7853C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7853C3D0Ev,_ZThn4_N7S7853C3D0Ev),
  (VTBL_ENTRY)&_ZN8S7853C182v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N7S7853C3D1Ev,_ZTv0_n36_N7S7853C3D1Ev)();
extern void ABISELECT(_ZThn136_N7S7853C3D1Ev,_ZThn76_N7S7853C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7853C3D0Ev,_ZTv0_n36_N7S7853C3D0Ev)();
extern void ABISELECT(_ZThn136_N7S7853C3D0Ev,_ZThn76_N7S7853C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C17__A1__7S7853C3__7S7853C1[] = {
  ABISELECT(-136,-76),
  ABISELECT(-55,-27),
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  ABISELECT(-32,-16),
  ABISELECT(-55,-27),
  ABISELECT(-55,-27),
  ABISELECT(-136,-76),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7853C3D1Ev,_ZTv0_n36_N7S7853C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7853C3D0Ev,_ZTv0_n36_N7S7853C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C17__A3__7S7853C3__7S7853C1[] = {
  ABISELECT(-71,-35),
  ABISELECT(-208,-116),
  ABISELECT(-71,-35),
  ABISELECT(-71,-35),
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
};
extern void _ZN7S7853C4D1Ev();
extern void _ZN7S7853C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7853C4__7S7853C1[] = {
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-80,-48),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(57,33),
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  ABISELECT(80,44),
  ABISELECT(57,33),
  ABISELECT(57,33),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&_ZN7S7853C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C4D0Ev,
};
extern void _ZN8S7853C17D1Ev();
extern void _ZN8S7853C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C177S7853C4__7S7853C1[] = {
  ABISELECT(57,33),
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  ABISELECT(80,44),
  ABISELECT(57,33),
  ABISELECT(57,33),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
  (VTBL_ENTRY)&_ZN8S7853C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C138S7853C177S7853C4__A1__7S7853C1[] = {
  ABISELECT(57,33),
  ABISELECT(57,33),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C138S7853C177S7853C4__A4__7S7853C1[] = {
  ABISELECT(57,33),
  ABISELECT(57,33),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C177S7853C4__A1__7S7853C1[] = {
  ABISELECT(41,25),
  ABISELECT(-96,-56),
  ABISELECT(41,25),
  ABISELECT(41,25),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__7S7853C98S7853C177S7853C4__A1__7S7853C1[] = {
  ABISELECT(137,81),
  ABISELECT(137,81),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7853C17D1Ev,_ZTv0_n32_N8S7853C17D1Ev)();
extern void ABISELECT(_ZThn80_N8S7853C17D1Ev,_ZThn44_N8S7853C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7853C17D0Ev,_ZTv0_n32_N8S7853C17D0Ev)();
extern void ABISELECT(_ZThn80_N8S7853C17D0Ev,_ZThn44_N8S7853C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C12__8S7853C177S7853C4__7S7853C1[] = {
  ABISELECT(-80,-44),
  ABISELECT(-23,-11),
  ABISELECT(-160,-92),
  ABISELECT(-160,-92),
  ABISELECT(-23,-11),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C17D1Ev,_ZTv0_n32_N8S7853C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C17D0Ev,_ZTv0_n32_N8S7853C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C177S7853C4__7S7853C1[] = {
  ABISELECT(137,81),
  0,
  ABISELECT(137,81),
  ABISELECT(137,81),
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__A__8S7853C177S7853C4__7S7853C1[] = {
  ABISELECT(41,25),
  ABISELECT(-96,-56),
  ABISELECT(41,25),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev)();
extern void ABISELECT(_ZThn32_N7S7853C4D1Ev,_ZThn16_N7S7853C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev)();
extern void ABISELECT(_ZThn32_N7S7853C4D0Ev,_ZThn16_N7S7853C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C5__7S7853C4__7S7853C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(-112,-64),
  ABISELECT(16,12),
  ABISELECT(25,17),
  ABISELECT(-112,-64),
  ABISELECT(25,17),
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev)();
extern void ABISELECT(_ZThn48_N7S7853C4D1Ev,_ZThn28_N7S7853C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev)();
extern void ABISELECT(_ZThn48_N7S7853C4D0Ev,_ZThn28_N7S7853C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C6__7S7853C4__7S7853C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(9,5),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  ABISELECT(9,5),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__7S7853C4__7S7853C1[] = {
  ABISELECT(137,81),
  0,
  ABISELECT(137,81),
  ABISELECT(137,81),
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__7S7853C4__7S7853C1[] = {
  ABISELECT(-7,-3),
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev)();
extern void ABISELECT(_ZThn80_N7S7853C4D1Ev,_ZThn44_N7S7853C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev)();
extern void ABISELECT(_ZThn80_N7S7853C4D0Ev,_ZThn44_N7S7853C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__7S7853C4__7S7853C1[] = {
  ABISELECT(-80,-44),
  ABISELECT(-23,-11),
  ABISELECT(-160,-92),
  ABISELECT(-160,-92),
  ABISELECT(-23,-11),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev)();
extern void ABISELECT(_ZThn96_N7S7853C4D1Ev,_ZThn52_N7S7853C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev)();
extern void ABISELECT(_ZThn96_N7S7853C4D0Ev,_ZThn52_N7S7853C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C15__7S7853C4__7S7853C1[] = {
  ABISELECT(-96,-52),
  ABISELECT(-176,-100),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-39,-19),
  ABISELECT(-39,-19),
  ABISELECT(-176,-100),
  ABISELECT(-39,-19),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C17__A1__7S7853C4__7S7853C1[] = {
  ABISELECT(41,25),
  ABISELECT(-96,-56),
  ABISELECT(41,25),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
};
extern void _ZN7S7853C5D1Ev();
extern void _ZN7S7853C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7853C5__7S7853C1[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(-112,-64),
  ABISELECT(16,12),
  ABISELECT(25,17),
  ABISELECT(-112,-64),
  ABISELECT(25,17),
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&_ZN7S7853C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C5D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev)();
extern void ABISELECT(_ZThn16_N7S7853C5D1Ev,_ZThn12_N7S7853C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev)();
extern void ABISELECT(_ZThn16_N7S7853C5D0Ev,_ZThn12_N7S7853C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C6__7S7853C5__7S7853C1[] = {
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  ABISELECT(9,5),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__7S7853C5__7S7853C1[] = {
  ABISELECT(137,81),
  0,
  ABISELECT(137,81),
  ABISELECT(137,81),
  ABISELECT(112,64),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__7S7853C5__7S7853C1[] = {
  ABISELECT(-7,-3),
  ABISELECT(-7,-3),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev)();
extern void ABISELECT(_ZThn48_N7S7853C5D1Ev,_ZThn28_N7S7853C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev)();
extern void ABISELECT(_ZThn48_N7S7853C5D0Ev,_ZThn28_N7S7853C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__7S7853C5__7S7853C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-160,-92),
  ABISELECT(-160,-92),
  ABISELECT(-23,-11),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev),
};
extern void _ZN7S7853C6D1Ev();
extern void _ZN7S7853C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7853C6__7S7853C1[] = {
  ABISELECT(9,5),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  ABISELECT(9,5),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C6[0]),
  (VTBL_ENTRY)&_ZN7S7853C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C6D0Ev,
};
extern void _ZN8S7853C12D1Ev();
extern void _ZN8S7853C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C127S7853C6__7S7853C1[] = {
  ABISELECT(9,5),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  ABISELECT(9,5),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
  (VTBL_ENTRY)&_ZN8S7853C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C127S7853C6__A1__7S7853C1[] = {
  ABISELECT(9,5),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C127S7853C6__7S7853C1[] = {
  ABISELECT(137,81),
  0,
  ABISELECT(137,81),
  ABISELECT(137,81),
  ABISELECT(128,76),
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__7S7853C6__7S7853C1[] = {
  ABISELECT(137,81),
  0,
  ABISELECT(137,81),
  ABISELECT(137,81),
  ABISELECT(128,76),
  (VTBL_ENTRY)&(_ZTI7S7853C6[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__7S7853C1[] = {
  ABISELECT(137,81),
  0,
  ABISELECT(137,81),
  ABISELECT(137,81),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__7S7853C1[] = {
  ABISELECT(137,81),
  ABISELECT(137,81),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__7S7853C1[] = {
  ABISELECT(-7,-3),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C13__A2__7S7853C1[] = {
  ABISELECT(-7,-3),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
extern void _ZN8S7853C12D1Ev();
extern void _ZN8S7853C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__7S7853C1[] = {
  ABISELECT(-23,-11),
  ABISELECT(-160,-92),
  ABISELECT(-160,-92),
  ABISELECT(-23,-11),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
  (VTBL_ENTRY)&_ZN8S7853C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C12__A3__7S7853C1[] = {
  ABISELECT(-23,-11),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C12__A1__7S7853C1[] = {
  ABISELECT(137,81),
  0,
  ABISELECT(137,81),
  ABISELECT(137,81),
  ABISELECT(160,92),
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
};
extern void _ZN8S7853C15D1Ev();
extern void _ZN8S7853C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C15__7S7853C1[] = {
  ABISELECT(-176,-100),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-39,-19),
  ABISELECT(-39,-19),
  ABISELECT(-176,-100),
  ABISELECT(-39,-19),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C15[0]),
  (VTBL_ENTRY)&_ZN8S7853C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C15__7S7853C1[] = {
  ABISELECT(137,81),
  0,
  ABISELECT(137,81),
  ABISELECT(137,81),
  ABISELECT(176,100),
  (VTBL_ENTRY)&(_ZTI8S7853C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__8S7853C15__7S7853C1[] = {
  ABISELECT(-7,-3),
  ABISELECT(-7,-3),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7853C15[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7853C15D1Ev,_ZTv0_n32_N8S7853C15D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7853C15D0Ev,_ZTv0_n32_N8S7853C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7853C6__8S7853C15__7S7853C1[] = {
  ABISELECT(48,24),
  ABISELECT(9,5),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  ABISELECT(9,5),
  ABISELECT(9,5),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S7853C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C15D1Ev,_ZTv0_n32_N8S7853C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C15D0Ev,_ZTv0_n32_N8S7853C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7853C16__7S7853C1[] = {
  ABISELECT(-39,-19),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C16[0]),
};
extern void _ZN8S7853C17D1Ev();
extern void _ZN8S7853C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C17__A1__7S7853C1[] = {
  ABISELECT(-55,-27),
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  ABISELECT(-32,-16),
  ABISELECT(-55,-27),
  ABISELECT(-55,-27),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
  (VTBL_ENTRY)&_ZN8S7853C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C138S7853C17__A2__7S7853C1[] = {
  ABISELECT(-55,-27),
  ABISELECT(-55,-27),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C138S7853C17__A5__7S7853C1[] = {
  ABISELECT(-55,-27),
  ABISELECT(-55,-27),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C17__A3__7S7853C1[] = {
  ABISELECT(-71,-35),
  ABISELECT(-208,-116),
  ABISELECT(-71,-35),
  ABISELECT(-71,-35),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__7S7853C98S7853C17__A3__7S7853C1[] = {
  ABISELECT(137,81),
  ABISELECT(137,81),
  ABISELECT(208,116),
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7853C17D1Ev,_ZTv0_n32_N8S7853C17D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7853C17D0Ev,_ZTv0_n32_N8S7853C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7853C12__8S7853C17__A1__7S7853C1[] = {
  ABISELECT(32,16),
  ABISELECT(-23,-11),
  ABISELECT(-160,-92),
  ABISELECT(-160,-92),
  ABISELECT(-23,-11),
  ABISELECT(-23,-11),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C17D1Ev,_ZTv0_n32_N8S7853C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C17D0Ev,_ZTv0_n32_N8S7853C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C17__A1__7S7853C1[] = {
  ABISELECT(137,81),
  0,
  ABISELECT(137,81),
  ABISELECT(137,81),
  ABISELECT(192,108),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__A__8S7853C17__A1__7S7853C1[] = {
  ABISELECT(-71,-35),
  ABISELECT(-208,-116),
  ABISELECT(-71,-35),
  ABISELECT(-71,-35),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
};
extern void _ZN8S7853C19D1Ev();
extern void _ZN8S7853C19D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C19__7S7853C1[] = {
  ABISELECT(-87,-43),
  ABISELECT(-224,-124),
  ABISELECT(-224,-124),
  ABISELECT(-87,-43),
  ABISELECT(-87,-43),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C19[0]),
  (VTBL_ENTRY)&_ZN8S7853C19D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C19D0Ev,
};
extern void _ZN7S7853C6D1Ev();
extern void _ZN7S7853C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7853C68S7853C19__A1__7S7853C1[] = {
  ABISELECT(-87,-43),
  ABISELECT(-224,-124),
  ABISELECT(-224,-124),
  ABISELECT(-87,-43),
  ABISELECT(-87,-43),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C6[0]),
  (VTBL_ENTRY)&_ZN7S7853C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C6D0Ev,
};
extern void _ZN8S7853C12D1Ev();
extern void _ZN8S7853C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C127S7853C68S7853C19__A2__7S7853C1[] = {
  ABISELECT(-87,-43),
  ABISELECT(-224,-124),
  ABISELECT(-224,-124),
  ABISELECT(-87,-43),
  ABISELECT(-87,-43),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
  (VTBL_ENTRY)&_ZN8S7853C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C127S7853C68S7853C19__A6__7S7853C1[] = {
  ABISELECT(-87,-43),
  ABISELECT(-87,-43),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C127S7853C68S7853C19__A2__7S7853C1[] = {
  ABISELECT(137,81),
  0,
  ABISELECT(137,81),
  ABISELECT(137,81),
  ABISELECT(224,124),
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__7S7853C68S7853C19__A1__7S7853C1[] = {
  ABISELECT(137,81),
  0,
  ABISELECT(137,81),
  ABISELECT(137,81),
  ABISELECT(224,124),
  (VTBL_ENTRY)&(_ZTI7S7853C6[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C19__7S7853C1[] = {
  ABISELECT(137,81),
  0,
  ABISELECT(137,81),
  ABISELECT(137,81),
  ABISELECT(224,124),
  (VTBL_ENTRY)&(_ZTI8S7853C19[0]),
};
extern void _ZN8S7853C21D1Ev();
extern void _ZN8S7853C21D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C21__7S7853C1[] = {
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-240,-132),
  ABISELECT(-80,-40),
  ABISELECT(-96,-48),
  ABISELECT(-128,-68),
  ABISELECT(-160,-84),
  ABISELECT(-240,-132),
  ABISELECT(-112,-56),
  ABISELECT(-103,-51),
  ABISELECT(-240,-132),
  ABISELECT(-103,-51),
  ABISELECT(-103,-51),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C21[0]),
  (VTBL_ENTRY)&_ZN8S7853C21D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C21D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N8S7853C21D1Ev,_ZTv0_n32_N8S7853C21D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7853C21D0Ev,_ZTv0_n32_N8S7853C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7853C6__8S7853C21__7S7853C1[] = {
  ABISELECT(112,56),
  ABISELECT(9,5),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  ABISELECT(9,5),
  ABISELECT(9,5),
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI8S7853C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C21D1Ev,_ZTv0_n32_N8S7853C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C21D0Ev,_ZTv0_n32_N8S7853C21D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C21__7S7853C1[] = {
  ABISELECT(137,81),
  0,
  ABISELECT(137,81),
  ABISELECT(137,81),
  ABISELECT(240,132),
  (VTBL_ENTRY)&(_ZTI8S7853C21[0]),
};
extern void ABISELECT(_ZTv0_n120_N8S7853C21D1Ev,_ZTv0_n60_N8S7853C21D1Ev)();
extern void ABISELECT(_ZTv0_n120_N8S7853C21D0Ev,_ZTv0_n60_N8S7853C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7853C4__8S7853C21__7S7853C1[] = {
  ABISELECT(160,84),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-80,-48),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(57,33),
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  ABISELECT(80,44),
  ABISELECT(57,33),
  ABISELECT(57,33),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI8S7853C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7853C21D1Ev,_ZTv0_n60_N8S7853C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7853C21D0Ev,_ZTv0_n60_N8S7853C21D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7853C21D1Ev,_ZTv0_n44_N8S7853C21D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7853C21D0Ev,_ZTv0_n44_N8S7853C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7853C5__8S7853C21__7S7853C1[] = {
  ABISELECT(128,68),
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(-112,-64),
  ABISELECT(16,12),
  ABISELECT(25,17),
  ABISELECT(-112,-64),
  ABISELECT(25,17),
  ABISELECT(25,17),
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI8S7853C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7853C21D1Ev,_ZTv0_n44_N8S7853C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7853C21D0Ev,_ZTv0_n44_N8S7853C21D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__8S7853C21__7S7853C1[] = {
  ABISELECT(-7,-3),
  ABISELECT(-7,-3),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI8S7853C21[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7853C21D1Ev,_ZTv0_n32_N8S7853C21D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7853C21D0Ev,_ZTv0_n32_N8S7853C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__8S7853C21__7S7853C1[] = {
  ABISELECT(80,40),
  ABISELECT(-23,-11),
  ABISELECT(-160,-92),
  ABISELECT(-160,-92),
  ABISELECT(-23,-11),
  ABISELECT(-23,-11),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S7853C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C21D1Ev,_ZTv0_n32_N8S7853C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C21D0Ev,_ZTv0_n32_N8S7853C21D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7853C21D1Ev,_ZTv0_n44_N8S7853C21D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7853C21D0Ev,_ZTv0_n44_N8S7853C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7853C15__8S7853C21__7S7853C1[] = {
  ABISELECT(64,32),
  ABISELECT(-176,-100),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-39,-19),
  ABISELECT(-39,-19),
  ABISELECT(-176,-100),
  ABISELECT(-39,-19),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S7853C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7853C21D1Ev,_ZTv0_n44_N8S7853C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7853C21D0Ev,_ZTv0_n44_N8S7853C21D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C177S7853C4__A1__8S7853C21__7S7853C1[] = {
  ABISELECT(41,25),
  ABISELECT(-96,-56),
  ABISELECT(41,25),
  ABISELECT(41,25),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S7853C21[0]),
};
extern void _ZN8S7853C24D1Ev();
extern void _ZN8S7853C24D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C24__7S7853C1[] = {
  ABISELECT(-56,-28),
  ABISELECT(-168,-88),
  ABISELECT(-192,-104),
  ABISELECT(-72,-36),
  ABISELECT(-72,-36),
  ABISELECT(-248,-136),
  ABISELECT(-88,-44),
  ABISELECT(-104,-52),
  ABISELECT(-248,-136),
  ABISELECT(-120,-60),
  ABISELECT(-136,-72),
  ABISELECT(-111,-55),
  ABISELECT(-248,-136),
  ABISELECT(-111,-55),
  ABISELECT(-111,-55),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C24[0]),
  (VTBL_ENTRY)&_ZN8S7853C24D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C24D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C24__A4__7S7853C1[] = {
  ABISELECT(-111,-55),
  ABISELECT(-248,-136),
  ABISELECT(-111,-55),
  ABISELECT(-111,-55),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__7S7853C98S7853C24__A4__7S7853C1[] = {
  ABISELECT(137,81),
  ABISELECT(137,81),
  ABISELECT(248,136),
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
extern void _ZN7S7853C4D1Ev();
extern void _ZN7S7853C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7853C48S7853C24__A1__7S7853C1[] = {
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-256,-140),
  ABISELECT(-112,-56),
  ABISELECT(-128,-64),
  ABISELECT(-144,-76),
  ABISELECT(-119,-59),
  ABISELECT(-256,-140),
  ABISELECT(-256,-140),
  ABISELECT(-96,-48),
  ABISELECT(-119,-59),
  ABISELECT(-119,-59),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&_ZN7S7853C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C4D0Ev,
};
extern void _ZN8S7853C17D1Ev();
extern void _ZN8S7853C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C177S7853C48S7853C24__A2__7S7853C1[] = {
  ABISELECT(-119,-59),
  ABISELECT(-256,-140),
  ABISELECT(-256,-140),
  ABISELECT(-96,-48),
  ABISELECT(-119,-59),
  ABISELECT(-119,-59),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
  (VTBL_ENTRY)&_ZN8S7853C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C138S7853C177S7853C48S7853C24__A3__7S7853C1[] = {
  ABISELECT(-119,-59),
  ABISELECT(-119,-59),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C138S7853C177S7853C48S7853C24__A8__7S7853C1[] = {
  ABISELECT(-119,-59),
  ABISELECT(-119,-59),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C177S7853C48S7853C24__A5__7S7853C1[] = {
  ABISELECT(-135,-67),
  ABISELECT(-272,-148),
  ABISELECT(-135,-67),
  ABISELECT(-135,-67),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__7S7853C98S7853C177S7853C48S7853C24__A5__7S7853C1[] = {
  ABISELECT(137,81),
  ABISELECT(137,81),
  ABISELECT(272,148),
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7853C17D1Ev,_ZTv0_n32_N8S7853C17D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7853C17D0Ev,_ZTv0_n32_N8S7853C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7853C12__8S7853C177S7853C48S7853C24__A2__7S7853C1[] = {
  ABISELECT(96,48),
  ABISELECT(-23,-11),
  ABISELECT(-160,-92),
  ABISELECT(-160,-92),
  ABISELECT(-23,-11),
  ABISELECT(-23,-11),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C17D1Ev,_ZTv0_n32_N8S7853C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C17D0Ev,_ZTv0_n32_N8S7853C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C177S7853C48S7853C24__A2__7S7853C1[] = {
  ABISELECT(137,81),
  0,
  ABISELECT(137,81),
  ABISELECT(137,81),
  ABISELECT(256,140),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__A__8S7853C177S7853C48S7853C24__A2__7S7853C1[] = {
  ABISELECT(-135,-67),
  ABISELECT(-272,-148),
  ABISELECT(-135,-67),
  ABISELECT(-135,-67),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7853C5__7S7853C48S7853C24__A1__7S7853C1[] = {
  ABISELECT(144,76),
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(-112,-64),
  ABISELECT(16,12),
  ABISELECT(25,17),
  ABISELECT(-112,-64),
  ABISELECT(25,17),
  ABISELECT(25,17),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7853C6__7S7853C48S7853C24__A1__7S7853C1[] = {
  ABISELECT(128,64),
  ABISELECT(9,5),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  ABISELECT(9,5),
  ABISELECT(9,5),
  ABISELECT(128,64),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__7S7853C48S7853C24__A1__7S7853C1[] = {
  ABISELECT(137,81),
  0,
  ABISELECT(137,81),
  ABISELECT(137,81),
  ABISELECT(256,140),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__7S7853C48S7853C24__A1__7S7853C1[] = {
  ABISELECT(-7,-3),
  ABISELECT(-7,-3),
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__7S7853C48S7853C24__A1__7S7853C1[] = {
  ABISELECT(96,48),
  ABISELECT(-23,-11),
  ABISELECT(-160,-92),
  ABISELECT(-160,-92),
  ABISELECT(-23,-11),
  ABISELECT(-23,-11),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7853C15__7S7853C48S7853C24__A1__7S7853C1[] = {
  ABISELECT(80,40),
  ABISELECT(-176,-100),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-39,-19),
  ABISELECT(-39,-19),
  ABISELECT(-176,-100),
  ABISELECT(-39,-19),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C17__A1__7S7853C48S7853C24__A1__7S7853C1[] = {
  ABISELECT(-135,-67),
  ABISELECT(-272,-148),
  ABISELECT(-135,-67),
  ABISELECT(-135,-67),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__A1__8S7853C24__7S7853C1[] = {
  ABISELECT(137,81),
  0,
  ABISELECT(137,81),
  ABISELECT(137,81),
  ABISELECT(248,136),
  (VTBL_ENTRY)&(_ZTI8S7853C24[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S7853C24D1Ev,_ZTv0_n44_N8S7853C24D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7853C24D0Ev,_ZTv0_n44_N8S7853C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7853C5__8S7853C24__7S7853C1[] = {
  ABISELECT(136,72),
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(-112,-64),
  ABISELECT(16,12),
  ABISELECT(25,17),
  ABISELECT(-112,-64),
  ABISELECT(25,17),
  ABISELECT(25,17),
  ABISELECT(136,72),
  (VTBL_ENTRY)&(_ZTI8S7853C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7853C24D1Ev,_ZTv0_n44_N8S7853C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7853C24D0Ev,_ZTv0_n44_N8S7853C24D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7853C24D1Ev,_ZTv0_n32_N8S7853C24D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7853C24D0Ev,_ZTv0_n32_N8S7853C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7853C6__8S7853C24__7S7853C1[] = {
  ABISELECT(120,60),
  ABISELECT(9,5),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  ABISELECT(9,5),
  ABISELECT(9,5),
  ABISELECT(120,60),
  (VTBL_ENTRY)&(_ZTI8S7853C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C24D1Ev,_ZTv0_n32_N8S7853C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C24D0Ev,_ZTv0_n32_N8S7853C24D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__8S7853C24__7S7853C1[] = {
  ABISELECT(-7,-3),
  ABISELECT(-7,-3),
  ABISELECT(104,52),
  (VTBL_ENTRY)&(_ZTI8S7853C24[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7853C24D1Ev,_ZTv0_n32_N8S7853C24D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7853C24D0Ev,_ZTv0_n32_N8S7853C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__8S7853C24__7S7853C1[] = {
  ABISELECT(88,44),
  ABISELECT(-23,-11),
  ABISELECT(-160,-92),
  ABISELECT(-160,-92),
  ABISELECT(-23,-11),
  ABISELECT(-23,-11),
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI8S7853C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C24D1Ev,_ZTv0_n32_N8S7853C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C24D0Ev,_ZTv0_n32_N8S7853C24D0Ev),
};
extern void ABISELECT(_ZThn8_N8S7853C24D1Ev,_ZThn4_N8S7853C24D1Ev)();
extern void ABISELECT(_ZThn8_N8S7853C24D0Ev,_ZThn4_N8S7853C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7853C4__A__8S7853C24__7S7853C1[] = {
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-256,-140),
  ABISELECT(-112,-56),
  ABISELECT(-128,-64),
  ABISELECT(-144,-76),
  ABISELECT(-119,-59),
  ABISELECT(-256,-140),
  ABISELECT(-256,-140),
  ABISELECT(-96,-48),
  ABISELECT(-119,-59),
  ABISELECT(-119,-59),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7853C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7853C24D1Ev,_ZThn4_N8S7853C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7853C24D0Ev,_ZThn4_N8S7853C24D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7853C24D1Ev,_ZTv0_n44_N8S7853C24D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7853C24D0Ev,_ZTv0_n44_N8S7853C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7853C15__8S7853C24__7S7853C1[] = {
  ABISELECT(72,36),
  ABISELECT(-176,-100),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-39,-19),
  ABISELECT(-39,-19),
  ABISELECT(-176,-100),
  ABISELECT(-39,-19),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI8S7853C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7853C24D1Ev,_ZTv0_n44_N8S7853C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7853C24D0Ev,_ZTv0_n44_N8S7853C24D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C177S7853C4__A2__8S7853C24__7S7853C1[] = {
  ABISELECT(-135,-67),
  ABISELECT(-272,-148),
  ABISELECT(-135,-67),
  ABISELECT(-135,-67),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7853C24[0]),
};
extern void ABISELECT(_ZTv0_n136_N8S7853C24D1Ev,_ZTv0_n68_N8S7853C24D1Ev)();
extern void ABISELECT(_ZTv0_n136_N8S7853C24D0Ev,_ZTv0_n68_N8S7853C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7853C3__8S7853C24__7S7853C1[] = {
  ABISELECT(8,4),
  ABISELECT(192,104),
  ABISELECT(136,76),
  ABISELECT(120,68),
  ABISELECT(120,68),
  ABISELECT(-56,-32),
  ABISELECT(104,60),
  ABISELECT(88,52),
  ABISELECT(-56,-32),
  ABISELECT(72,44),
  ABISELECT(56,32),
  ABISELECT(24,16),
  ABISELECT(81,49),
  ABISELECT(-56,-32),
  ABISELECT(81,49),
  ABISELECT(81,49),
  ABISELECT(192,104),
  (VTBL_ENTRY)&(_ZTI8S7853C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S7853C24D1Ev,_ZTv0_n68_N8S7853C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S7853C24D0Ev,_ZTv0_n68_N8S7853C24D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S7853C24D1Ev,_ZTv0_n60_N8S7853C24D1Ev)();
extern void ABISELECT(_ZTv0_n120_N8S7853C24D0Ev,_ZTv0_n60_N8S7853C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7853C4__A1__8S7853C24__7S7853C1[] = {
  ABISELECT(168,88),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-80,-48),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(57,33),
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  ABISELECT(80,44),
  ABISELECT(57,33),
  ABISELECT(57,33),
  ABISELECT(168,88),
  (VTBL_ENTRY)&(_ZTI8S7853C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7853C24D1Ev,_ZTv0_n60_N8S7853C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7853C24D0Ev,_ZTv0_n60_N8S7853C24D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C177S7853C4__A3__8S7853C24__7S7853C1[] = {
  ABISELECT(41,25),
  ABISELECT(-96,-56),
  ABISELECT(41,25),
  ABISELECT(41,25),
  ABISELECT(152,80),
  (VTBL_ENTRY)&(_ZTI8S7853C24[0]),
};
extern void ABISELECT(_ZTvn8_n136_N8S7853C24D1Ev,_ZTvn4_n68_N8S7853C24D1Ev)();
extern void ABISELECT(_ZTvn8_n136_N8S7853C24D0Ev,_ZTvn4_n68_N8S7853C24D0Ev)();
extern void _ZN8S7853C182v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C187S7853C3__8S7853C24__7S7853C1[] = {
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(-64,-36),
  ABISELECT(64,40),
  ABISELECT(73,45),
  ABISELECT(-64,-36),
  ABISELECT(73,45),
  ABISELECT(73,45),
  ABISELECT(184,100),
  (VTBL_ENTRY)&(_ZTI8S7853C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N8S7853C24D1Ev,_ZTvn4_n68_N8S7853C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N8S7853C24D0Ev,_ZTvn4_n68_N8S7853C24D0Ev),
  (VTBL_ENTRY)&_ZN8S7853C182v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N8S7853C24D1Ev,_ZTv0_n36_N8S7853C24D1Ev)();
extern void ABISELECT(_ZTv0_n72_N8S7853C24D0Ev,_ZTv0_n36_N8S7853C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7853C17__A2__8S7853C24__7S7853C1[] = {
  ABISELECT(56,28),
  ABISELECT(-55,-27),
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  ABISELECT(-32,-16),
  ABISELECT(-55,-27),
  ABISELECT(-55,-27),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI8S7853C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7853C24D1Ev,_ZTv0_n36_N8S7853C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7853C24D0Ev,_ZTv0_n36_N8S7853C24D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C17__A5__8S7853C24__7S7853C1[] = {
  ABISELECT(-71,-35),
  ABISELECT(-208,-116),
  ABISELECT(-71,-35),
  ABISELECT(-71,-35),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S7853C24[0]),
};
static  VTT_ENTRY vtt_S7853C1[] = {
  {&(_ZTV7S7853C1[20]),  20,239},
  {&(_tg__ZTV7S7853C2__7S7853C1[17]),  17,19},
  {&(_tg__ZTV7S7853C3__7S7853C2__7S7853C1[18]),  18,20},
  {&(_tg__ZTV7S7853C4__7S7853C2__7S7853C1[15]),  15,17},
  {&(_tg__ZTV7S7853C5__7S7853C2__7S7853C1[11]),  11,13},
  {&(_tg__ZTV7S7853C6__7S7853C2__7S7853C1[8]),  8,10},
  {&(_tg__ZTV7S7853C2__7S7853C1[17]),  17,19},
  {&(_tg__ZTV7S7853C2__7S7853C1[17]),  17,19},
  {&(_tg__ZTV8S7853C13__7S7853C2__7S7853C1[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__7S7853C2__7S7853C1[8]),  8,10},
  {&(_tg__ZTV8S7853C15__7S7853C2__7S7853C1[11]),  11,13},
  {&(_tg__ZTV8S7853C15__7S7853C2__7S7853C1[11]),  11,13},
  {&(_tg__ZTV7S7853C98S7853C177S7853C4__A1__7S7853C2__7S7853C1[6]),  6,6},
  {&(_tg__ZTV8S7853C187S7853C3__7S7853C2__7S7853C1[11]),  11,14},
  {&(_tg__ZTV8S7853C17__A1__7S7853C2__7S7853C1[9]),  9,11},
  {&(_tg__ZTV7S7853C98S7853C17__A3__7S7853C2__7S7853C1[6]),  6,6},
  {&(_tg__ZTV8S7853C20__7S7853C1[16]),  16,18},
  {&(_tg__ZTV7S7853C68S7853C20__A2__7S7853C1[7]),  7,9},
  {&(_tg__ZTV8S7853C127S7853C68S7853C20__A3__7S7853C1[7]),  7,9},
  {&(_tg__ZTV8S7853C108S7853C127S7853C68S7853C20__A7__7S7853C1[4]),  4,4},
  {&(_tg__ZTV7S7853C9__8S7853C127S7853C68S7853C20__A3__7S7853C1[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C127S7853C68S7853C20__A3__7S7853C1[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C68S7853C20__A2__7S7853C1[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C68S7853C20__A2__7S7853C1[6]),  6,6},
  {&(_tg__ZTV8S7853C228S7853C20__7S7853C1[3]),  3,5},
  {&(_tg__ZTV8S7853C168S7853C228S7853C20__A1__7S7853C1[3]),  3,3},
  {&(_tg__ZTV7S7853C9__8S7853C20__7S7853C1[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C20__7S7853C1[6]),  6,6},
  {&(_tg__ZTV8S7853C13__8S7853C20__7S7853C1[4]),  4,4},
  {&(_tg__ZTV8S7853C21__8S7853C20__7S7853C1[16]),  16,18},
  {&(_tg__ZTV7S7853C6__A1__8S7853C20__7S7853C1[8]),  8,10},
  {&(_tg__ZTV7S7853C4__8S7853C20__7S7853C1[15]),  15,17},
  {&(_tg__ZTV7S7853C5__8S7853C20__7S7853C1[11]),  11,13},
  {&(_tg__ZTV8S7853C12__A2__8S7853C20__7S7853C1[8]),  8,10},
  {&(_tg__ZTV8S7853C15__8S7853C20__7S7853C1[11]),  11,13},
  {&(_tg__ZTV8S7853C15__8S7853C20__7S7853C1[11]),  11,13},
  {&(_tg__ZTV7S7853C98S7853C177S7853C4__A1__8S7853C20__7S7853C1[6]),  6,6},
  {&(_tg__ZTV8S7853C22__8S7853C20__7S7853C1[3]),  3,5},
  {&(_ZTV7S7853C1[63]),  63,239},
  {&(_ZTV7S7853C1[94]),  94,239},
  {&(_ZTV7S7853C1[113]),  113,239},
  {&(_ZTV7S7853C1[123]),  123,239},
  {&(_ZTV7S7853C1[20]),  20,239},
  {&(_ZTV7S7853C1[20]),  20,239},
  {&(_ZTV7S7853C1[129]),  129,239},
  {&(_ZTV7S7853C1[137]),  137,239},
  {&(_ZTV7S7853C1[150]),  150,239},
  {&(_ZTV7S7853C1[150]),  150,239},
  {&(_ZTV7S7853C1[102]),  102,239},
  {&(_ZTV7S7853C1[76]),  76,239},
  {&(_ZTV7S7853C1[161]),  161,239},
  {&(_ZTV7S7853C1[169]),  169,239},
  {&(_ZTV7S7853C1[177]),  177,239},
  {&(_ZTV7S7853C1[38]),  38,239},
  {&(_ZTV7S7853C1[195]),  195,239},
  {&(_ZTV7S7853C1[43]),  43,239},
  {&(_ZTV7S7853C1[215]),  215,239},
  {&(_ZTV7S7853C1[231]),  231,239},
  {&(_ZTV7S7853C1[239]),  239,239},
  {&(_tg__ZTV7S7853C3__7S7853C1[16]),  16,18},
  {&(_tg__ZTV7S7853C97S7853C3__A2__7S7853C1[6]),  6,6},
  {&(_tg__ZTV8S7853C10__7S7853C97S7853C3__A2__7S7853C1[4]),  4,4},
  {&(_tg__ZTV8S7853C187S7853C3__7S7853C1[11]),  11,14},
  {&(_tg__ZTV7S7853C58S7853C187S7853C3__A1__7S7853C1[10]),  10,12},
  {&(_tg__ZTV7S7853C6__7S7853C58S7853C187S7853C3__A1__7S7853C1[8]),  8,10},
  {&(_tg__ZTV7S7853C9__7S7853C58S7853C187S7853C3__A1__7S7853C1[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C58S7853C187S7853C3__A1__7S7853C1[6]),  6,6},
  {&(_tg__ZTV8S7853C13__7S7853C58S7853C187S7853C3__A1__7S7853C1[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__7S7853C58S7853C187S7853C3__A1__7S7853C1[8]),  8,10},
  {&(_tg__ZTV7S7853C6__8S7853C187S7853C3__7S7853C1[8]),  8,10},
  {&(_tg__ZTV7S7853C9__8S7853C187S7853C3__7S7853C1[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C187S7853C3__7S7853C1[6]),  6,6},
  {&(_tg__ZTV8S7853C13__8S7853C187S7853C3__7S7853C1[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__8S7853C187S7853C3__7S7853C1[8]),  8,10},
  {&(_tg__ZTV8S7853C17__8S7853C187S7853C3__7S7853C1[9]),  9,11},
  {&(_tg__ZTV7S7853C98S7853C17__A1__8S7853C187S7853C3__7S7853C1[6]),  6,6},
  {&(_tg__ZTV7S7853C4__7S7853C3__7S7853C1[15]),  15,17},
  {&(_tg__ZTV7S7853C5__7S7853C3__7S7853C1[11]),  11,13},
  {&(_tg__ZTV7S7853C6__7S7853C3__7S7853C1[8]),  8,10},
  {&(_tg__ZTV7S7853C9__7S7853C3__7S7853C1[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C3__7S7853C1[6]),  6,6},
  {&(_tg__ZTV8S7853C13__7S7853C3__7S7853C1[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__7S7853C3__7S7853C1[8]),  8,10},
  {&(_tg__ZTV8S7853C15__7S7853C3__7S7853C1[11]),  11,13},
  {&(_tg__ZTV8S7853C15__7S7853C3__7S7853C1[11]),  11,13},
  {&(_tg__ZTV7S7853C98S7853C177S7853C4__A1__7S7853C3__7S7853C1[6]),  6,6},
  {&(_tg__ZTV8S7853C18__7S7853C3__7S7853C1[11]),  11,14},
  {&(_tg__ZTV8S7853C17__A1__7S7853C3__7S7853C1[9]),  9,11},
  {&(_tg__ZTV7S7853C98S7853C17__A3__7S7853C3__7S7853C1[6]),  6,6},
  {&(_tg__ZTV7S7853C4__7S7853C1[14]),  14,16},
  {&(_tg__ZTV8S7853C177S7853C4__7S7853C1[8]),  8,10},
  {&(_tg__ZTV8S7853C138S7853C177S7853C4__A1__7S7853C1[4]),  4,4},
  {&(_tg__ZTV8S7853C108S7853C138S7853C177S7853C4__A4__7S7853C1[4]),  4,4},
  {&(_tg__ZTV7S7853C98S7853C177S7853C4__A1__7S7853C1[6]),  6,6},
  {&(_tg__ZTV8S7853C10__7S7853C98S7853C177S7853C4__A1__7S7853C1[4]),  4,4},
  {&(_tg__ZTV8S7853C12__8S7853C177S7853C4__7S7853C1[8]),  8,10},
  {&(_tg__ZTV7S7853C9__8S7853C177S7853C4__7S7853C1[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C177S7853C4__7S7853C1[6]),  6,6},
  {&(_tg__ZTV7S7853C9__A__8S7853C177S7853C4__7S7853C1[6]),  6,6},
  {&(_tg__ZTV7S7853C5__7S7853C4__7S7853C1[11]),  11,13},
  {&(_tg__ZTV7S7853C6__7S7853C4__7S7853C1[8]),  8,10},
  {&(_tg__ZTV7S7853C9__7S7853C4__7S7853C1[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C4__7S7853C1[6]),  6,6},
  {&(_tg__ZTV8S7853C13__7S7853C4__7S7853C1[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__7S7853C4__7S7853C1[8]),  8,10},
  {&(_tg__ZTV8S7853C15__7S7853C4__7S7853C1[11]),  11,13},
  {&(_tg__ZTV8S7853C15__7S7853C4__7S7853C1[11]),  11,13},
  {&(_tg__ZTV7S7853C98S7853C17__A1__7S7853C4__7S7853C1[6]),  6,6},
  {&(_tg__ZTV7S7853C5__7S7853C1[10]),  10,12},
  {&(_tg__ZTV7S7853C6__7S7853C5__7S7853C1[8]),  8,10},
  {&(_tg__ZTV7S7853C9__7S7853C5__7S7853C1[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C5__7S7853C1[6]),  6,6},
  {&(_tg__ZTV8S7853C13__7S7853C5__7S7853C1[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__7S7853C5__7S7853C1[8]),  8,10},
  {&(_tg__ZTV7S7853C6__7S7853C1[7]),  7,9},
  {&(_tg__ZTV8S7853C127S7853C6__7S7853C1[7]),  7,9},
  {&(_tg__ZTV8S7853C108S7853C127S7853C6__A1__7S7853C1[4]),  4,4},
  {&(_tg__ZTV7S7853C9__8S7853C127S7853C6__7S7853C1[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C127S7853C6__7S7853C1[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C6__7S7853C1[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C6__7S7853C1[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C1[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C1[6]),  6,6},
  {&(_tg__ZTV8S7853C10__7S7853C1[4]),  4,4},
  {&(_tg__ZTV8S7853C13__7S7853C1[4]),  4,4},
  {&(_tg__ZTV8S7853C108S7853C13__A2__7S7853C1[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__7S7853C1[7]),  7,9},
  {&(_tg__ZTV8S7853C108S7853C12__A3__7S7853C1[4]),  4,4},
  {&(_tg__ZTV7S7853C9__8S7853C12__A1__7S7853C1[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C12__A1__7S7853C1[6]),  6,6},
  {&(_tg__ZTV8S7853C15__7S7853C1[10]),  10,12},
  {&(_tg__ZTV7S7853C9__8S7853C15__7S7853C1[6]),  6,6},
  {&(_tg__ZTV8S7853C15__7S7853C1[10]),  10,12},
  {&(_tg__ZTV8S7853C13__8S7853C15__7S7853C1[4]),  4,4},
  {&(_tg__ZTV7S7853C6__8S7853C15__7S7853C1[8]),  8,10},
  {&(_tg__ZTV7S7853C9__8S7853C15__7S7853C1[6]),  6,6},
  {&(_tg__ZTV8S7853C16__7S7853C1[3]),  3,3},
  {&(_tg__ZTV8S7853C17__A1__7S7853C1[8]),  8,10},
  {&(_tg__ZTV8S7853C138S7853C17__A2__7S7853C1[4]),  4,4},
  {&(_tg__ZTV8S7853C108S7853C138S7853C17__A5__7S7853C1[4]),  4,4},
  {&(_tg__ZTV7S7853C98S7853C17__A3__7S7853C1[6]),  6,6},
  {&(_tg__ZTV8S7853C10__7S7853C98S7853C17__A3__7S7853C1[4]),  4,4},
  {&(_tg__ZTV8S7853C12__8S7853C17__A1__7S7853C1[8]),  8,10},
  {&(_tg__ZTV7S7853C9__8S7853C17__A1__7S7853C1[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C17__A1__7S7853C1[6]),  6,6},
  {&(_tg__ZTV7S7853C9__A__8S7853C17__A1__7S7853C1[6]),  6,6},
  {&(_tg__ZTV8S7853C19__7S7853C1[7]),  7,9},
  {&(_tg__ZTV7S7853C68S7853C19__A1__7S7853C1[7]),  7,9},
  {&(_tg__ZTV8S7853C127S7853C68S7853C19__A2__7S7853C1[7]),  7,9},
  {&(_tg__ZTV8S7853C108S7853C127S7853C68S7853C19__A6__7S7853C1[4]),  4,4},
  {&(_tg__ZTV7S7853C9__8S7853C127S7853C68S7853C19__A2__7S7853C1[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C127S7853C68S7853C19__A2__7S7853C1[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C68S7853C19__A1__7S7853C1[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C68S7853C19__A1__7S7853C1[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C19__7S7853C1[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C19__7S7853C1[6]),  6,6},
  {&(_tg__ZTV8S7853C21__7S7853C1[15]),  15,17},
  {&(_tg__ZTV7S7853C6__8S7853C21__7S7853C1[8]),  8,10},
  {&(_tg__ZTV7S7853C9__8S7853C21__7S7853C1[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C21__7S7853C1[6]),  6,6},
  {&(_tg__ZTV7S7853C4__8S7853C21__7S7853C1[15]),  15,17},
  {&(_tg__ZTV7S7853C5__8S7853C21__7S7853C1[11]),  11,13},
  {&(_tg__ZTV8S7853C13__8S7853C21__7S7853C1[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__8S7853C21__7S7853C1[8]),  8,10},
  {&(_tg__ZTV8S7853C15__8S7853C21__7S7853C1[11]),  11,13},
  {&(_tg__ZTV8S7853C15__8S7853C21__7S7853C1[11]),  11,13},
  {&(_tg__ZTV7S7853C98S7853C177S7853C4__A1__8S7853C21__7S7853C1[6]),  6,6},
  {&(_tg__ZTV8S7853C24__7S7853C1[17]),  17,19},
  {&(_tg__ZTV7S7853C98S7853C24__A4__7S7853C1[6]),  6,6},
  {&(_tg__ZTV8S7853C10__7S7853C98S7853C24__A4__7S7853C1[4]),  4,4},
  {&(_tg__ZTV7S7853C48S7853C24__A1__7S7853C1[14]),  14,16},
  {&(_tg__ZTV8S7853C177S7853C48S7853C24__A2__7S7853C1[8]),  8,10},
  {&(_tg__ZTV8S7853C138S7853C177S7853C48S7853C24__A3__7S7853C1[4]),  4,4},
  {&(_tg__ZTV8S7853C108S7853C138S7853C177S7853C48S7853C24__A8__7S7853C1[4]),  4,4},
  {&(_tg__ZTV7S7853C98S7853C177S7853C48S7853C24__A5__7S7853C1[6]),  6,6},
  {&(_tg__ZTV8S7853C10__7S7853C98S7853C177S7853C48S7853C24__A5__7S7853C1[4]),  4,4},
  {&(_tg__ZTV8S7853C12__8S7853C177S7853C48S7853C24__A2__7S7853C1[8]),  8,10},
  {&(_tg__ZTV7S7853C9__8S7853C177S7853C48S7853C24__A2__7S7853C1[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C177S7853C48S7853C24__A2__7S7853C1[6]),  6,6},
  {&(_tg__ZTV7S7853C9__A__8S7853C177S7853C48S7853C24__A2__7S7853C1[6]),  6,6},
  {&(_tg__ZTV7S7853C5__7S7853C48S7853C24__A1__7S7853C1[11]),  11,13},
  {&(_tg__ZTV7S7853C6__7S7853C48S7853C24__A1__7S7853C1[8]),  8,10},
  {&(_tg__ZTV7S7853C9__7S7853C48S7853C24__A1__7S7853C1[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C48S7853C24__A1__7S7853C1[6]),  6,6},
  {&(_tg__ZTV8S7853C13__7S7853C48S7853C24__A1__7S7853C1[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__7S7853C48S7853C24__A1__7S7853C1[8]),  8,10},
  {&(_tg__ZTV8S7853C15__7S7853C48S7853C24__A1__7S7853C1[11]),  11,13},
  {&(_tg__ZTV8S7853C15__7S7853C48S7853C24__A1__7S7853C1[11]),  11,13},
  {&(_tg__ZTV7S7853C98S7853C17__A1__7S7853C48S7853C24__A1__7S7853C1[6]),  6,6},
  {&(_tg__ZTV7S7853C9__A1__8S7853C24__7S7853C1[6]),  6,6},
  {&(_tg__ZTV7S7853C5__8S7853C24__7S7853C1[11]),  11,13},
  {&(_tg__ZTV7S7853C6__8S7853C24__7S7853C1[8]),  8,10},
  {&(_tg__ZTV7S7853C9__A1__8S7853C24__7S7853C1[6]),  6,6},
  {&(_tg__ZTV8S7853C13__8S7853C24__7S7853C1[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__8S7853C24__7S7853C1[8]),  8,10},
  {&(_tg__ZTV7S7853C4__A__8S7853C24__7S7853C1[14]),  14,16},
  {&(_tg__ZTV8S7853C15__8S7853C24__7S7853C1[11]),  11,13},
  {&(_tg__ZTV8S7853C15__8S7853C24__7S7853C1[11]),  11,13},
  {&(_tg__ZTV7S7853C98S7853C177S7853C4__A2__8S7853C24__7S7853C1[6]),  6,6},
  {&(_tg__ZTV7S7853C3__8S7853C24__7S7853C1[18]),  18,20},
  {&(_tg__ZTV7S7853C4__A1__8S7853C24__7S7853C1[15]),  15,17},
  {&(_tg__ZTV7S7853C98S7853C177S7853C4__A3__8S7853C24__7S7853C1[6]),  6,6},
  {&(_tg__ZTV8S7853C187S7853C3__8S7853C24__7S7853C1[11]),  11,14},
  {&(_tg__ZTV8S7853C17__A2__8S7853C24__7S7853C1[9]),  9,11},
  {&(_tg__ZTV7S7853C98S7853C17__A5__8S7853C24__7S7853C1[6]),  6,6},
};
extern VTBL_ENTRY _ZTI7S7853C1[];
extern  VTBL_ENTRY _ZTV7S7853C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C1[];
static VTBL_ENTRY alt_thunk_names62[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7853C4D0Ev,_ZThn44_N7S7853C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7853C4D0Ev,_ZThn28_N7S7853C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7853C4D1Ev,_ZThn44_N7S7853C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7853C4D1Ev,_ZThn28_N7S7853C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7853C4D0Ev,_ZThn52_N7S7853C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7853C4D0Ev,_ZThn16_N7S7853C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7853C4D1Ev,_ZThn52_N7S7853C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7853C4D1Ev,_ZThn16_N7S7853C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7853C17D0Ev,_ZTv0_n32_N8S7853C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7853C17D0Ev,_ZThn44_N8S7853C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7853C17D1Ev,_ZTv0_n32_N8S7853C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7853C17D1Ev,_ZThn44_N8S7853C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7853C3D0Ev,_ZTv0_n36_N7S7853C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7853C3D0Ev,_ZThn76_N7S7853C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7853C3D1Ev,_ZTv0_n36_N7S7853C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7853C3D1Ev,_ZThn76_N7S7853C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C3D0Ev,_ZTv0_n32_N7S7853C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7853C3D0Ev,_ZThn60_N7S7853C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7853C3D0Ev,_ZThn44_N7S7853C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C3D1Ev,_ZTv0_n32_N7S7853C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7853C3D1Ev,_ZThn60_N7S7853C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7853C3D1Ev,_ZThn44_N7S7853C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7853C3D0Ev,_ZTv0_n44_N7S7853C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7853C3D0Ev,_ZThn68_N7S7853C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7853C3D0Ev,_ZThn32_N7S7853C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7853C3D1Ev,_ZTv0_n44_N7S7853C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7853C3D1Ev,_ZThn68_N7S7853C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7853C3D1Ev,_ZThn32_N7S7853C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7853C3D0Ev,_ZTv0_n60_N7S7853C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7853C3D0Ev,_ZThn16_N7S7853C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7853C3D1Ev,_ZTv0_n60_N7S7853C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7853C3D1Ev,_ZThn16_N7S7853C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7853C18D0Ev,_ZTv0_n36_N8S7853C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7853C18D0Ev,_ZThn72_N8S7853C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7853C18D1Ev,_ZTv0_n36_N8S7853C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7853C18D1Ev,_ZThn72_N8S7853C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7853C18D0Ev,_ZTv0_n32_N8S7853C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7853C18D0Ev,_ZThn56_N8S7853C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7853C18D0Ev,_ZThn40_N8S7853C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7853C18D1Ev,_ZTv0_n32_N8S7853C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7853C18D1Ev,_ZThn56_N8S7853C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7853C18D1Ev,_ZThn40_N8S7853C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7853C5D0Ev,_ZThn28_N7S7853C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7853C5D0Ev,_ZThn12_N7S7853C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7853C5D0Ev,_ZThn56_N7S7853C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7853C5D0Ev,_ZThn40_N7S7853C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7853C5D1Ev,_ZThn28_N7S7853C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7853C5D1Ev,_ZThn12_N7S7853C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7853C5D1Ev,_ZThn56_N7S7853C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7853C5D1Ev,_ZThn40_N7S7853C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7853C20D0Ev,_ZTv0_n44_N8S7853C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7853C20D0Ev,_ZThn88_N8S7853C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7853C20D0Ev,_ZThn52_N8S7853C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7853C20D1Ev,_ZTv0_n44_N8S7853C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7853C20D1Ev,_ZThn88_N8S7853C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7853C20D1Ev,_ZThn52_N8S7853C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7853C20D0Ev,_ZTv0_n60_N8S7853C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7853C20D0Ev,_ZThn36_N8S7853C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7853C20D1Ev,_ZTv0_n60_N8S7853C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7853C20D1Ev,_ZThn36_N8S7853C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7853C20D0Ev,_ZTv0_n32_N8S7853C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7853C20D0Ev,_ZThn80_N8S7853C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7853C20D0Ev,_ZThn64_N8S7853C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7853C20D1Ev,_ZTv0_n32_N8S7853C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7853C20D1Ev,_ZThn80_N8S7853C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7853C20D1Ev,_ZThn64_N8S7853C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7853C20D0Ev,_ZTv0_n64_N8S7853C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S7853C20D0Ev,_ZThn120_N8S7853C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7853C20D1Ev,_ZTv0_n64_N8S7853C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S7853C20D1Ev,_ZThn120_N8S7853C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7853C2D0Ev,_ZTv0_n36_N7S7853C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S7853C2D0Ev,_ZThn108_N7S7853C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7853C2D1Ev,_ZTv0_n36_N7S7853C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S7853C2D1Ev,_ZThn108_N7S7853C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C2D0Ev,_ZTv0_n32_N7S7853C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7853C2D0Ev,_ZThn92_N7S7853C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7853C2D0Ev,_ZThn76_N7S7853C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C2D1Ev,_ZTv0_n32_N7S7853C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7853C2D1Ev,_ZThn92_N7S7853C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7853C2D1Ev,_ZThn76_N7S7853C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7853C2D0Ev,_ZTv0_n44_N7S7853C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S7853C2D0Ev,_ZThn100_N7S7853C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7853C2D0Ev,_ZThn64_N7S7853C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7853C2D1Ev,_ZTv0_n44_N7S7853C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S7853C2D1Ev,_ZThn100_N7S7853C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7853C2D1Ev,_ZThn64_N7S7853C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7853C2D0Ev,_ZTv0_n60_N7S7853C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7853C2D0Ev,_ZThn48_N7S7853C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7853C2D1Ev,_ZTv0_n60_N7S7853C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7853C2D1Ev,_ZThn48_N7S7853C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N7S7853C2D0Ev,_ZTv0_n68_N7S7853C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7853C2D0Ev,_ZThn32_N7S7853C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N7S7853C2D1Ev,_ZTv0_n68_N7S7853C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7853C2D1Ev,_ZThn32_N7S7853C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N7S7853C1D0Ev,_ZTv0_n72_N7S7853C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N7S7853C1D0Ev,_ZThn136_N7S7853C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N7S7853C1D1Ev,_ZTv0_n72_N7S7853C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N7S7853C1D1Ev,_ZThn136_N7S7853C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N7S7853C1D0Ev,_ZTv0_n64_N7S7853C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N7S7853C1D0Ev,_ZThn132_N7S7853C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N7S7853C1D1Ev,_ZTv0_n64_N7S7853C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N7S7853C1D1Ev,_ZThn132_N7S7853C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7853C1D0Ev,_ZTv0_n36_N7S7853C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S7853C1D0Ev,_ZThn108_N7S7853C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7853C1D1Ev,_ZTv0_n36_N7S7853C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S7853C1D1Ev,_ZThn108_N7S7853C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C1D0Ev,_ZTv0_n32_N7S7853C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N7S7853C1D0Ev,_ZThn124_N7S7853C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7853C1D0Ev,_ZThn92_N7S7853C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7853C1D0Ev,_ZThn76_N7S7853C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C1D1Ev,_ZTv0_n32_N7S7853C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N7S7853C1D1Ev,_ZThn124_N7S7853C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7853C1D1Ev,_ZThn92_N7S7853C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7853C1D1Ev,_ZThn76_N7S7853C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7853C1D0Ev,_ZTv0_n44_N7S7853C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S7853C1D0Ev,_ZThn100_N7S7853C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7853C1D0Ev,_ZThn64_N7S7853C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7853C1D1Ev,_ZTv0_n44_N7S7853C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S7853C1D1Ev,_ZThn100_N7S7853C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7853C1D1Ev,_ZThn64_N7S7853C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7853C1D0Ev,_ZTv0_n60_N7S7853C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7853C1D0Ev,_ZThn48_N7S7853C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7853C1D1Ev,_ZTv0_n60_N7S7853C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7853C1D1Ev,_ZThn48_N7S7853C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N7S7853C1D0Ev,_ZTv0_n68_N7S7853C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7853C1D0Ev,_ZThn32_N7S7853C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N7S7853C1D1Ev,_ZTv0_n68_N7S7853C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7853C1D1Ev,_ZThn32_N7S7853C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7853C1 = {  "S7853C1", // class name
  bases_S7853C1, 87,
  &(vtc_S7853C1[0]), // expected_vtbl_contents
  &(vtt_S7853C1[0]), // expected_vtt_contents
  ABISELECT(288,156), // object size
  NSPAIRA(_ZTI7S7853C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S7853C1),239, //virtual function table var
  20, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7853C1),205, //virtual table table var
  44, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names62,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19113C6  : S8033C7 {
  void *s19113c6f0;
  ::S20291C14_nt s19113c6f1;
  void *s19113c6f2;
  long double s19113c6f3;
  ~S19113C6(); // tgen
  S19113C6(); // tgen
};
//SIG(-1 S19113C6) C1{ BC2{ vd m Fc Fc:0 Fl[8] FD} Fp FC3{} Fp FD}


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

static void Test_S19113C6()
{
  extern Class_Descriptor cd_S19113C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(10,20)];
    init_test(&cd_S19113C6, buf);
    S19113C6 *dp, &lv = *(dp=new (buf) S19113C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,76), "sizeof(S19113C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19113C6)");
    check_base_class_offset(lv, (S8033C7*), 0, "S19113C6");
    check_field_offset(lv, s19113c6f0, ABISELECT(96,52), "S19113C6.s19113c6f0");
    check_field_offset(lv, s19113c6f1, ABISELECT(104,56), "S19113C6.s19113c6f1");
    check_field_offset(lv, s19113c6f2, ABISELECT(112,60), "S19113C6.s19113c6f2");
    check_field_offset(lv, s19113c6f3, ABISELECT(128,64), "S19113C6.s19113c6f3");
    test_class_info(&lv, &cd_S19113C6);
    dp->~S19113C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19113C6(Test_S19113C6, "S19113C6", ABISELECT(144,76));

#else // __cplusplus

extern void _ZN8S19113C6C1Ev();
extern void _ZN8S19113C6D1Ev();
Name_Map name_map_S19113C6[] = {
  NSPAIR(_ZN8S19113C6C1Ev),
  NSPAIR(_ZN8S19113C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
static Base_Class bases_S19113C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19113C6[];
extern void _ZN8S19113C6D1Ev();
extern void _ZN8S19113C6D0Ev();
static  VTBL_ENTRY vtc_S19113C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19113C6[0]),
  (VTBL_ENTRY)&_ZN8S19113C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19113C6D0Ev,
};
extern VTBL_ENTRY _ZTI8S19113C6[];
extern  VTBL_ENTRY _ZTV8S19113C6[];
Class_Descriptor cd_S19113C6 = {  "S19113C6", // class name
  bases_S19113C6, 1,
  &(vtc_S19113C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,76), // object size
  NSPAIRA(_ZTI8S19113C6),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19113C6),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19113C8  : S19113C6 , virtual S8033C7 {
  ::S8033C7 s19113c8f0;
  void *s19113c8f1;
  virtual  ~S19113C8(); // _ZN8S19113C8D2Ev
  S19113C8(); // tgen
};
//SIG(-1 S19113C8) C1{ BC2{ BC3{ vd m Fc Fc:0 Fl[8] FD} Fp FC4{} Fp FD} VBC3 vd FC3 Fp}


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

static void Test_S19113C8()
{
  extern Class_Descriptor cd_S19113C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(23,47)];
    init_test(&cd_S19113C8, buf);
    S19113C8 *dp, &lv = *(dp=new (buf) S19113C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(352,184), "sizeof(S19113C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19113C8)");
    check_base_class_offset(lv, (S8033C7*)(S19113C6*), 0, "S19113C8");
    check_base_class_offset(lv, (S19113C6*), 0, "S19113C8");
    /*is_ambiguous_... S19113C8::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*), ABISELECT(256,132), "S19113C8");
    check_field_offset(lv, s19113c8f0, ABISELECT(144,76), "S19113C8.s19113c8f0");
    check_field_offset(lv, s19113c8f1, ABISELECT(240,128), "S19113C8.s19113c8f1");
    test_class_info(&lv, &cd_S19113C8);
    dp->~S19113C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19113C8(Test_S19113C8, "S19113C8", ABISELECT(352,184));

#else // __cplusplus

extern void _ZN8S19113C8C1Ev();
extern void _ZN8S19113C8D2Ev();
Name_Map name_map_S19113C8[] = {
  NSPAIR(_ZN8S19113C8C1Ev),
  NSPAIR(_ZN8S19113C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19113C6;
extern VTBL_ENTRY _ZTI8S19113C6[];
extern  VTBL_ENTRY _ZTV8S19113C6[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
static Base_Class bases_S19113C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19113C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S8033C7,    ABISELECT(256,132), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19113C8[];
extern void _ZN8S19113C8D1Ev();
extern void _ZN8S19113C8D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S19113C8D1Ev,_ZTv0_n12_N8S19113C8D1Ev)();
extern void ABISELECT(_ZThn256_N8S19113C8D1Ev,_ZThn132_N8S19113C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19113C8D0Ev,_ZTv0_n12_N8S19113C8D0Ev)();
extern void ABISELECT(_ZThn256_N8S19113C8D0Ev,_ZThn132_N8S19113C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19113C8[] = {
  ABISELECT(256,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S19113C8[0]),
  (VTBL_ENTRY)&_ZN8S19113C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19113C8D0Ev,
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  (VTBL_ENTRY)&(_ZTI8S19113C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C8D1Ev,_ZTv0_n12_N8S19113C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C8D0Ev,_ZTv0_n12_N8S19113C8D0Ev),
};
extern VTBL_ENTRY _ZTV8S19113C8[];
static  VTT_ENTRY vtt_S19113C8[] = {
  {&(_ZTV8S19113C8[3]),  3,10},
  {&(_ZTV8S19113C8[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S19113C8[];
extern  VTBL_ENTRY _ZTV8S19113C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19113C8[];
static VTBL_ENTRY alt_thunk_names63[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19113C8D0Ev,_ZTv0_n12_N8S19113C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19113C8D0Ev,_ZThn132_N8S19113C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19113C8D1Ev,_ZTv0_n12_N8S19113C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19113C8D1Ev,_ZThn132_N8S19113C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19113C8 = {  "S19113C8", // class name
  bases_S19113C8, 3,
  &(vtc_S19113C8[0]), // expected_vtbl_contents
  &(vtt_S19113C8[0]), // expected_vtt_contents
  ABISELECT(352,184), // object size
  NSPAIRA(_ZTI8S19113C8),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19113C8),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19113C8),2, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names63,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19113C5  : S8033C7 , virtual S19113C6 {
  int s19113c5f0;
  char s19113c5f1;
  void *s19113c5f2;
  int s19113c5f3;
  void *s19113c5f4[2];
  ::S19113C8 s19113c5f5;
  virtual  ~S19113C5(); // _ZN8S19113C5D2Ev
  virtual void  v2(); // _ZN8S19113C52v2Ev
  S19113C5(); // tgen
};
//SIG(-1 S19113C5) C1{ BC2{ vd m Fc Fc:0 Fl[8] FD} VBC3{ BC2 Fp FC4{} Fp FD} vd v1 Fi Fc Fp Fi Fp[2] FC5{ BC3 VBC2 vd FC2 Fp}}


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

static void Test_S19113C5()
{
  extern Class_Descriptor cd_S19113C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(41,85)];
    init_test(&cd_S19113C5, buf);
    S19113C5 *dp, &lv = *(dp=new (buf) S19113C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(640,336), "sizeof(S19113C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19113C5)");
    /*is_ambiguous_... S19113C5::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*), 0, "S19113C5");
    check_base_class_offset(lv, (S8033C7*)(S19113C6*), ABISELECT(496,260), "S19113C5");
    check_base_class_offset(lv, (S19113C6*), ABISELECT(496,260), "S19113C5");
    check_field_offset(lv, s19113c5f0, ABISELECT(96,52), "S19113C5.s19113c5f0");
    check_field_offset(lv, s19113c5f1, ABISELECT(100,56), "S19113C5.s19113c5f1");
    check_field_offset(lv, s19113c5f2, ABISELECT(104,60), "S19113C5.s19113c5f2");
    check_field_offset(lv, s19113c5f3, ABISELECT(112,64), "S19113C5.s19113c5f3");
    check_field_offset(lv, s19113c5f4, ABISELECT(120,68), "S19113C5.s19113c5f4");
    check_field_offset(lv, s19113c5f5, ABISELECT(144,76), "S19113C5.s19113c5f5");
    test_class_info(&lv, &cd_S19113C5);
    dp->~S19113C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19113C5(Test_S19113C5, "S19113C5", ABISELECT(640,336));

#else // __cplusplus

extern void _ZN8S19113C5C1Ev();
extern void _ZN8S19113C5D2Ev();
Name_Map name_map_S19113C5[] = {
  NSPAIR(_ZN8S19113C5C1Ev),
  NSPAIR(_ZN8S19113C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19113C6;
extern VTBL_ENTRY _ZTI8S19113C6[];
extern  VTBL_ENTRY _ZTV8S19113C6[];
static Base_Class bases_S19113C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S8033C7,    ABISELECT(496,260), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19113C6,    ABISELECT(496,260), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19113C5[];
extern void _ZN8S19113C5D1Ev();
extern void _ZN8S19113C5D0Ev();
extern void _ZN8S19113C52v2Ev();
extern void ABISELECT(_ZTv0_n24_N8S19113C5D1Ev,_ZTv0_n12_N8S19113C5D1Ev)();
extern void ABISELECT(_ZThn496_N8S19113C5D1Ev,_ZThn260_N8S19113C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19113C5D0Ev,_ZTv0_n12_N8S19113C5D0Ev)();
extern void ABISELECT(_ZThn496_N8S19113C5D0Ev,_ZThn260_N8S19113C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19113C5[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19113C5[0]),
  (VTBL_ENTRY)&_ZN8S19113C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19113C5D0Ev,
  (VTBL_ENTRY)&_ZN8S19113C52v2Ev,
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI8S19113C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C5D1Ev,_ZTv0_n12_N8S19113C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C5D0Ev,_ZTv0_n12_N8S19113C5D0Ev),
};
extern VTBL_ENTRY _ZTV8S19113C5[];
static  VTT_ENTRY vtt_S19113C5[] = {
  {&(_ZTV8S19113C5[3]),  3,11},
  {&(_ZTV8S19113C5[9]),  9,11},
};
extern VTBL_ENTRY _ZTI8S19113C5[];
extern  VTBL_ENTRY _ZTV8S19113C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19113C5[];
static VTBL_ENTRY alt_thunk_names64[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19113C5D0Ev,_ZTv0_n12_N8S19113C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19113C5D0Ev,_ZThn260_N8S19113C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19113C5D1Ev,_ZTv0_n12_N8S19113C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19113C5D1Ev,_ZThn260_N8S19113C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19113C5 = {  "S19113C5", // class name
  bases_S19113C5, 3,
  &(vtc_S19113C5[0]), // expected_vtbl_contents
  &(vtt_S19113C5[0]), // expected_vtt_contents
  ABISELECT(640,336), // object size
  NSPAIRA(_ZTI8S19113C5),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19113C5),11, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19113C5),2, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names64,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19113C3  : S8033C7 , virtual S19113C5 {
  void *s19113c3f0;
  __tsi64 s19113c3f1[2];
  char s19113c3f2;
  void *s19113c3f3;
  int s19113c3f4;
  virtual  ~S19113C3(); // _ZN8S19113C3D2Ev
  S19113C3(); // tgen
};
//SIG(-1 S19113C3) C1{ BC2{ vd m Fc Fc:0 Fl[8] FD} VBC3{ BC2 VBC4{ BC2 Fp FC5{} Fp FD} vd v1 Fi Fc Fp Fi Fp[2] FC6{ BC4 VBC2 vd FC2 Fp}} vd Fp FL[2] Fc Fp Fi}


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

static void Test_S19113C3()
{
  extern Class_Descriptor cd_S19113C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(50,106)];
    init_test(&cd_S19113C3, buf);
    S19113C3 *dp, &lv = *(dp=new (buf) S19113C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(784,420), "sizeof(S19113C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19113C3)");
    /*is_ambiguous_... S19113C3::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*), 0, "S19113C3");
    /*is_ambiguous_... S19113C5::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19113C5*), ABISELECT(144,84), "S19113C3");
    check_base_class_offset(lv, (S8033C7*)(S19113C6*), ABISELECT(640,344), "S19113C3");
    check_base_class_offset(lv, (S19113C6*)(S19113C5*), ABISELECT(640,344), "S19113C3");
    check_base_class_offset(lv, (S19113C5*), ABISELECT(144,84), "S19113C3");
    check_field_offset(lv, s19113c3f0, ABISELECT(96,52), "S19113C3.s19113c3f0");
    check_field_offset(lv, s19113c3f1, ABISELECT(104,56), "S19113C3.s19113c3f1");
    check_field_offset(lv, s19113c3f2, ABISELECT(120,72), "S19113C3.s19113c3f2");
    check_field_offset(lv, s19113c3f3, ABISELECT(128,76), "S19113C3.s19113c3f3");
    check_field_offset(lv, s19113c3f4, ABISELECT(136,80), "S19113C3.s19113c3f4");
    test_class_info(&lv, &cd_S19113C3);
    dp->~S19113C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19113C3(Test_S19113C3, "S19113C3", ABISELECT(784,420));

#else // __cplusplus

extern void _ZN8S19113C3C1Ev();
extern void _ZN8S19113C3D2Ev();
Name_Map name_map_S19113C3[] = {
  NSPAIR(_ZN8S19113C3C1Ev),
  NSPAIR(_ZN8S19113C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19113C6;
extern VTBL_ENTRY _ZTI8S19113C6[];
extern  VTBL_ENTRY _ZTV8S19113C6[];
extern Class_Descriptor cd_S19113C5;
extern VTBL_ENTRY _ZTI8S19113C5[];
extern  VTBL_ENTRY _ZTV8S19113C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19113C5[];
static Base_Class bases_S19113C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S8033C7,    ABISELECT(144,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(640,344), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19113C6,    ABISELECT(640,344), //bcp->offset
    14, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19113C5,    ABISELECT(144,84), //bcp->offset
    6, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19113C3[];
extern void _ZN8S19113C3D1Ev();
extern void _ZN8S19113C3D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S19113C3D1Ev,_ZTv0_n16_N8S19113C3D1Ev)();
extern void ABISELECT(_ZThn144_N8S19113C3D1Ev,_ZThn84_N8S19113C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19113C3D0Ev,_ZTv0_n16_N8S19113C3D0Ev)();
extern void ABISELECT(_ZThn144_N8S19113C3D0Ev,_ZThn84_N8S19113C3D0Ev)() __attribute__((weak));
extern void _ZN8S19113C52v2Ev();
extern void ABISELECT(_ZTv0_n24_N8S19113C3D1Ev,_ZTv0_n12_N8S19113C3D1Ev)();
extern void ABISELECT(_ZThn640_N8S19113C3D1Ev,_ZThn344_N8S19113C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19113C3D0Ev,_ZTv0_n12_N8S19113C3D0Ev)();
extern void ABISELECT(_ZThn640_N8S19113C3D0Ev,_ZThn344_N8S19113C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19113C3[] = {
  ABISELECT(640,344),
  ABISELECT(144,84),
  0,
  (VTBL_ENTRY)&(_ZTI8S19113C3[0]),
  (VTBL_ENTRY)&_ZN8S19113C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19113C3D0Ev,
  0,
  ABISELECT(-144,-84),
  ABISELECT(496,260),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI8S19113C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19113C3D1Ev,_ZTv0_n16_N8S19113C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19113C3D0Ev,_ZTv0_n16_N8S19113C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19113C52v2Ev,
  ABISELECT(-640,-344),
  ABISELECT(-640,-344),
  (VTBL_ENTRY)&(_ZTI8S19113C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C3D1Ev,_ZTv0_n12_N8S19113C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C3D0Ev,_ZTv0_n12_N8S19113C3D0Ev),
};
extern VTBL_ENTRY _ZTV8S19113C3[];
extern void _ZN8S19113C5D1Ev();
extern void _ZN8S19113C5D0Ev();
extern void _ZN8S19113C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C5__8S19113C3[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19113C5[0]),
  (VTBL_ENTRY)&_ZN8S19113C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19113C5D0Ev,
  (VTBL_ENTRY)&_ZN8S19113C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19113C5D1Ev,_ZTv0_n12_N8S19113C5D1Ev)();
extern void ABISELECT(_ZThn496_N8S19113C5D1Ev,_ZThn260_N8S19113C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19113C5D0Ev,_ZTv0_n12_N8S19113C5D0Ev)();
extern void ABISELECT(_ZThn496_N8S19113C5D0Ev,_ZThn260_N8S19113C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19113C6__8S19113C5__8S19113C3[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI8S19113C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C5D1Ev,_ZTv0_n12_N8S19113C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C5D0Ev,_ZTv0_n12_N8S19113C5D0Ev),
};
static  VTT_ENTRY vtt_S19113C3[] = {
  {&(_ZTV8S19113C3[4]),  4,19},
  {&(_ZTV8S19113C3[11]),  11,19},
  {&(_ZTV8S19113C3[17]),  17,19},
  {&(_tg__ZTV8S19113C5__8S19113C3[3]),  3,6},
  {&(_tg__ZTV8S19113C6__8S19113C5__8S19113C3[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19113C3[];
extern  VTBL_ENTRY _ZTV8S19113C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19113C3[];
static VTBL_ENTRY alt_thunk_names65[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19113C5D0Ev,_ZTv0_n12_N8S19113C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19113C5D0Ev,_ZThn260_N8S19113C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19113C5D1Ev,_ZTv0_n12_N8S19113C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19113C5D1Ev,_ZThn260_N8S19113C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19113C3D0Ev,_ZTv0_n12_N8S19113C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N8S19113C3D0Ev,_ZThn344_N8S19113C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19113C3D1Ev,_ZTv0_n12_N8S19113C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N8S19113C3D1Ev,_ZThn344_N8S19113C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19113C3D0Ev,_ZTv0_n16_N8S19113C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S19113C3D0Ev,_ZThn84_N8S19113C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19113C3D1Ev,_ZTv0_n16_N8S19113C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S19113C3D1Ev,_ZThn84_N8S19113C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19113C3 = {  "S19113C3", // class name
  bases_S19113C3, 5,
  &(vtc_S19113C3[0]), // expected_vtbl_contents
  &(vtt_S19113C3[0]), // expected_vtt_contents
  ABISELECT(784,420), // object size
  NSPAIRA(_ZTI8S19113C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19113C3),19, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19113C3),5, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names65,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19113C9  : virtual S19113C6 {
  char s19113c9f0;
  short s19113c9f1;
  long double s19113c9f2;
  void *s19113c9f3[2];
  virtual void  v3(); // _ZN8S19113C92v3Ev
  ~S19113C9(); // tgen
  S19113C9(); // tgen
};
//SIG(-1 S19113C9) C1{ VBC2{ BC3{ vd m Fc Fc:0 Fl[8] FD} Fp FC4{} Fp FD} v1 Fc Fs FD Fp[2]}


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

static void Test_S19113C9()
{
  extern Class_Descriptor cd_S19113C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,27)];
    init_test(&cd_S19113C9, buf);
    S19113C9 *dp, &lv = *(dp=new (buf) S19113C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,104), "sizeof(S19113C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19113C9)");
    check_base_class_offset(lv, (S8033C7*)(S19113C6*), ABISELECT(48,28), "S19113C9");
    check_base_class_offset(lv, (S19113C6*), ABISELECT(48,28), "S19113C9");
    check_field_offset(lv, s19113c9f0, ABISELECT(8,4), "S19113C9.s19113c9f0");
    check_field_offset(lv, s19113c9f1, ABISELECT(10,6), "S19113C9.s19113c9f1");
    check_field_offset(lv, s19113c9f2, ABISELECT(16,8), "S19113C9.s19113c9f2");
    check_field_offset(lv, s19113c9f3, ABISELECT(32,20), "S19113C9.s19113c9f3");
    test_class_info(&lv, &cd_S19113C9);
    dp->~S19113C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19113C9(Test_S19113C9, "S19113C9", ABISELECT(192,104));

#else // __cplusplus

extern void _ZN8S19113C9C1Ev();
extern void _ZN8S19113C9D1Ev();
Name_Map name_map_S19113C9[] = {
  NSPAIR(_ZN8S19113C9C1Ev),
  NSPAIR(_ZN8S19113C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19113C6;
extern VTBL_ENTRY _ZTI8S19113C6[];
extern  VTBL_ENTRY _ZTV8S19113C6[];
static Base_Class bases_S19113C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19113C6,    ABISELECT(48,28), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19113C9[];
extern void _ZN8S19113C92v3Ev();
extern void _ZN8S19113C9D1Ev();
extern void _ZN8S19113C9D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S19113C9D1Ev,_ZTv0_n12_N8S19113C9D1Ev)();
extern void ABISELECT(_ZThn48_N8S19113C9D1Ev,_ZThn28_N8S19113C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19113C9D0Ev,_ZTv0_n12_N8S19113C9D0Ev)();
extern void ABISELECT(_ZThn48_N8S19113C9D0Ev,_ZThn28_N8S19113C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19113C9[] = {
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19113C9[0]),
  (VTBL_ENTRY)&_ZN8S19113C92v3Ev,
  (VTBL_ENTRY)&_ZN8S19113C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19113C9D0Ev,
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19113C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C9D1Ev,_ZTv0_n12_N8S19113C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C9D0Ev,_ZTv0_n12_N8S19113C9D0Ev),
};
extern VTBL_ENTRY _ZTV8S19113C9[];
static  VTT_ENTRY vtt_S19113C9[] = {
  {&(_ZTV8S19113C9[3]),  3,11},
  {&(_ZTV8S19113C9[9]),  9,11},
};
extern VTBL_ENTRY _ZTI8S19113C9[];
extern  VTBL_ENTRY _ZTV8S19113C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19113C9[];
static VTBL_ENTRY alt_thunk_names66[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19113C9D0Ev,_ZTv0_n12_N8S19113C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19113C9D0Ev,_ZThn28_N8S19113C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19113C9D1Ev,_ZTv0_n12_N8S19113C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19113C9D1Ev,_ZThn28_N8S19113C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19113C9 = {  "S19113C9", // class name
  bases_S19113C9, 2,
  &(vtc_S19113C9[0]), // expected_vtbl_contents
  &(vtt_S19113C9[0]), // expected_vtt_contents
  ABISELECT(192,104), // object size
  NSPAIRA(_ZTI8S19113C9),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19113C9),11, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19113C9),2, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names66,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19113C2  : S19113C3 , virtual S19113C9 {
  char s19113c2f0;
  int s19113c2f1:32;
  virtual  ~S19113C2(); // _ZN8S19113C2D2Ev
  S19113C2(); // tgen
};
//SIG(-1 S19113C2) C1{ BC2{ BC3{ vd m Fc Fc:0 Fl[8] FD} VBC4{ BC3 VBC5{ BC3 Fp FC6{} Fp FD} vd v1 Fi Fc Fp Fi Fp[2] FC7{ BC5 VBC3 vd FC3 Fp}} vd Fp FL[2] Fc Fp Fi} VBC8{ VBC5 v2 Fc Fs FD Fp[2]} vd Fc Fi:32}


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

static void Test_S19113C2()
{
  extern Class_Descriptor cd_S19113C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(54,115)];
    init_test(&cd_S19113C2, buf);
    S19113C2 *dp, &lv = *(dp=new (buf) S19113C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(848,456), "sizeof(S19113C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19113C2)");
    /*is_ambiguous_... S19113C3::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19113C3*), 0, "S19113C2");
    /*is_ambiguous_... S19113C5::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19113C5*), ABISELECT(160,92), "S19113C2");
    check_base_class_offset(lv, (S8033C7*)(S19113C6*), ABISELECT(656,352), "S19113C2");
    check_base_class_offset(lv, (S19113C6*)(S19113C5*), ABISELECT(656,352), "S19113C2");
    check_base_class_offset(lv, (S19113C6*)(S19113C9*), ABISELECT(656,352), "S19113C2");
    check_base_class_offset(lv, (S19113C5*)(S19113C3*), ABISELECT(160,92), "S19113C2");
    check_base_class_offset(lv, (S19113C3*), 0, "S19113C2");
    check_base_class_offset(lv, (S19113C9*), ABISELECT(800,428), "S19113C2");
    check_field_offset(lv, s19113c2f0, ABISELECT(140,84), "S19113C2.s19113c2f0");
    set_bf_and_test(lv, s19113c2f1, ABISELECT(144,88), 0, 32, 1, "S19113C2");
    set_bf_and_test(lv, s19113c2f1, ABISELECT(144,88), 0, 32, hide_sll(1LL<<31), "S19113C2");
    test_class_info(&lv, &cd_S19113C2);
    dp->~S19113C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19113C2(Test_S19113C2, "S19113C2", ABISELECT(848,456));

#else // __cplusplus

extern void _ZN8S19113C2C1Ev();
extern void _ZN8S19113C2D2Ev();
Name_Map name_map_S19113C2[] = {
  NSPAIR(_ZN8S19113C2C1Ev),
  NSPAIR(_ZN8S19113C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19113C6;
extern VTBL_ENTRY _ZTI8S19113C6[];
extern  VTBL_ENTRY _ZTV8S19113C6[];
extern Class_Descriptor cd_S19113C5;
extern VTBL_ENTRY _ZTI8S19113C5[];
extern  VTBL_ENTRY _ZTV8S19113C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19113C5[];
extern Class_Descriptor cd_S19113C3;
extern VTBL_ENTRY _ZTI8S19113C3[];
extern  VTBL_ENTRY _ZTV8S19113C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19113C3[];
extern Class_Descriptor cd_S19113C9;
extern VTBL_ENTRY _ZTI8S19113C9[];
extern  VTBL_ENTRY _ZTV8S19113C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19113C9[];
static Base_Class bases_S19113C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(160,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(656,352), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19113C6,    ABISELECT(656,352), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19113C5,    ABISELECT(160,92), //bcp->offset
    7, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19113C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19113C9,    ABISELECT(800,428), //bcp->offset
    20, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19113C2[];
extern void _ZN8S19113C2D1Ev();
extern void _ZN8S19113C2D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S19113C2D1Ev,_ZTv0_n16_N8S19113C2D1Ev)();
extern void ABISELECT(_ZThn160_N8S19113C2D1Ev,_ZThn92_N8S19113C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19113C2D0Ev,_ZTv0_n16_N8S19113C2D0Ev)();
extern void ABISELECT(_ZThn160_N8S19113C2D0Ev,_ZThn92_N8S19113C2D0Ev)() __attribute__((weak));
extern void _ZN8S19113C52v2Ev();
extern void ABISELECT(_ZTv0_n24_N8S19113C2D1Ev,_ZTv0_n12_N8S19113C2D1Ev)();
extern void ABISELECT(_ZThn656_N8S19113C2D1Ev,_ZThn352_N8S19113C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19113C2D0Ev,_ZTv0_n12_N8S19113C2D0Ev)();
extern void ABISELECT(_ZThn656_N8S19113C2D0Ev,_ZThn352_N8S19113C2D0Ev)() __attribute__((weak));
extern void _ZN8S19113C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N8S19113C2D1Ev,_ZTv0_n20_N8S19113C2D1Ev)();
extern void ABISELECT(_ZThn800_N8S19113C2D1Ev,_ZThn428_N8S19113C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19113C2D0Ev,_ZTv0_n20_N8S19113C2D0Ev)();
extern void ABISELECT(_ZThn800_N8S19113C2D0Ev,_ZThn428_N8S19113C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19113C2[] = {
  ABISELECT(800,428),
  ABISELECT(656,352),
  ABISELECT(160,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S19113C2[0]),
  (VTBL_ENTRY)&_ZN8S19113C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19113C2D0Ev,
  0,
  ABISELECT(-160,-92),
  ABISELECT(496,260),
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI8S19113C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19113C2D1Ev,_ZTv0_n16_N8S19113C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19113C2D0Ev,_ZTv0_n16_N8S19113C2D0Ev),
  (VTBL_ENTRY)&_ZN8S19113C52v2Ev,
  ABISELECT(-656,-352),
  ABISELECT(-656,-352),
  (VTBL_ENTRY)&(_ZTI8S19113C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C2D1Ev,_ZTv0_n12_N8S19113C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C2D0Ev,_ZTv0_n12_N8S19113C2D0Ev),
  ABISELECT(-800,-428),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-800,-428),
  (VTBL_ENTRY)&(_ZTI8S19113C2[0]),
  (VTBL_ENTRY)&_ZN8S19113C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19113C2D1Ev,_ZTv0_n20_N8S19113C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19113C2D0Ev,_ZTv0_n20_N8S19113C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S19113C2[];
extern void _ZN8S19113C3D1Ev();
extern void _ZN8S19113C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C3__8S19113C2[] = {
  ABISELECT(656,352),
  ABISELECT(160,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S19113C3[0]),
  (VTBL_ENTRY)&_ZN8S19113C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19113C3D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19113C3D1Ev,_ZTv0_n16_N8S19113C3D1Ev)();
extern void ABISELECT(_ZThn160_N8S19113C3D1Ev,_ZThn92_N8S19113C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19113C3D0Ev,_ZTv0_n16_N8S19113C3D0Ev)();
extern void ABISELECT(_ZThn160_N8S19113C3D0Ev,_ZThn92_N8S19113C3D0Ev)() __attribute__((weak));
extern void _ZN8S19113C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C5__8S19113C3__8S19113C2[] = {
  0,
  ABISELECT(-160,-92),
  ABISELECT(496,260),
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI8S19113C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19113C3D1Ev,_ZTv0_n16_N8S19113C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19113C3D0Ev,_ZTv0_n16_N8S19113C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19113C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19113C3D1Ev,_ZTv0_n12_N8S19113C3D1Ev)();
extern void ABISELECT(_ZThn656_N8S19113C3D1Ev,_ZThn352_N8S19113C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19113C3D0Ev,_ZTv0_n12_N8S19113C3D0Ev)();
extern void ABISELECT(_ZThn656_N8S19113C3D0Ev,_ZThn352_N8S19113C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19113C6__8S19113C3__8S19113C2[] = {
  ABISELECT(-656,-352),
  ABISELECT(-656,-352),
  (VTBL_ENTRY)&(_ZTI8S19113C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C3D1Ev,_ZTv0_n12_N8S19113C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C3D0Ev,_ZTv0_n12_N8S19113C3D0Ev),
};
extern void _ZN8S19113C5D1Ev();
extern void _ZN8S19113C5D0Ev();
extern void _ZN8S19113C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C5__8S19113C2[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19113C5[0]),
  (VTBL_ENTRY)&_ZN8S19113C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19113C5D0Ev,
  (VTBL_ENTRY)&_ZN8S19113C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19113C5D1Ev,_ZTv0_n12_N8S19113C5D1Ev)();
extern void ABISELECT(_ZThn496_N8S19113C5D1Ev,_ZThn260_N8S19113C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19113C5D0Ev,_ZTv0_n12_N8S19113C5D0Ev)();
extern void ABISELECT(_ZThn496_N8S19113C5D0Ev,_ZThn260_N8S19113C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19113C6__8S19113C5__8S19113C2[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI8S19113C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C5D1Ev,_ZTv0_n12_N8S19113C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C5D0Ev,_ZTv0_n12_N8S19113C5D0Ev),
};
extern void _ZN8S19113C92v3Ev();
extern void _ZN8S19113C9D1Ev();
extern void _ZN8S19113C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C9__8S19113C2[] = {
  ABISELECT(-144,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19113C9[0]),
  (VTBL_ENTRY)&_ZN8S19113C92v3Ev,
  (VTBL_ENTRY)&_ZN8S19113C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19113C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19113C9D1Ev,_ZTv0_n12_N8S19113C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19113C9D0Ev,_ZTv0_n12_N8S19113C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19113C6__8S19113C9__8S19113C2[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S19113C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C9D1Ev,_ZTv0_n12_N8S19113C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C9D0Ev,_ZTv0_n12_N8S19113C9D0Ev),
};
static  VTT_ENTRY vtt_S19113C2[] = {
  {&(_ZTV8S19113C2[5]),  5,28},
  {&(_tg__ZTV8S19113C3__8S19113C2[4]),  4,6},
  {&(_tg__ZTV8S19113C5__8S19113C3__8S19113C2[5]),  5,8},
  {&(_tg__ZTV8S19113C6__8S19113C3__8S19113C2[3]),  3,5},
  {&(_ZTV8S19113C2[12]),  12,28},
  {&(_ZTV8S19113C2[18]),  18,28},
  {&(_ZTV8S19113C2[25]),  25,28},
  {&(_tg__ZTV8S19113C5__8S19113C2[3]),  3,6},
  {&(_tg__ZTV8S19113C6__8S19113C5__8S19113C2[3]),  3,5},
  {&(_tg__ZTV8S19113C9__8S19113C2[3]),  3,6},
  {&(_tg__ZTV8S19113C6__8S19113C9__8S19113C2[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19113C2[];
extern  VTBL_ENTRY _ZTV8S19113C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19113C2[];
static VTBL_ENTRY alt_thunk_names67[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19113C5D0Ev,_ZTv0_n12_N8S19113C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19113C5D0Ev,_ZThn260_N8S19113C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19113C5D1Ev,_ZTv0_n12_N8S19113C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19113C5D1Ev,_ZThn260_N8S19113C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19113C3D0Ev,_ZTv0_n12_N8S19113C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S19113C3D0Ev,_ZThn352_N8S19113C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19113C3D1Ev,_ZTv0_n12_N8S19113C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S19113C3D1Ev,_ZThn352_N8S19113C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19113C3D0Ev,_ZTv0_n16_N8S19113C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19113C3D0Ev,_ZThn92_N8S19113C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19113C3D1Ev,_ZTv0_n16_N8S19113C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19113C3D1Ev,_ZThn92_N8S19113C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19113C2D0Ev,_ZTv0_n20_N8S19113C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn800_N8S19113C2D0Ev,_ZThn428_N8S19113C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19113C2D1Ev,_ZTv0_n20_N8S19113C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn800_N8S19113C2D1Ev,_ZThn428_N8S19113C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19113C2D0Ev,_ZTv0_n12_N8S19113C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S19113C2D0Ev,_ZThn352_N8S19113C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19113C2D1Ev,_ZTv0_n12_N8S19113C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S19113C2D1Ev,_ZThn352_N8S19113C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19113C2D0Ev,_ZTv0_n16_N8S19113C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19113C2D0Ev,_ZThn92_N8S19113C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19113C2D1Ev,_ZTv0_n16_N8S19113C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19113C2D1Ev,_ZThn92_N8S19113C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19113C2 = {  "S19113C2", // class name
  bases_S19113C2, 7,
  &(vtc_S19113C2[0]), // expected_vtbl_contents
  &(vtt_S19113C2[0]), // expected_vtt_contents
  ABISELECT(848,456), // object size
  NSPAIRA(_ZTI8S19113C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19113C2),28, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19113C2),11, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names67,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19113C14  {
  long double s19113c14f0;
  void *s19113c14f1;
  ::S8033C7 s19113c14f2;
  __tsi64 s19113c14f3;
  long double s19113c14f4;
  int s19113c14f5;
  virtual void  v4(); // _ZN9S19113C142v4Ev
  ~S19113C14(); // tgen
  S19113C14(); // tgen
};
//SIG(-1 S19113C14) C1{ v1 FD Fp FC2{ vd m Fc Fc:0 Fl[8] FD} FL FD Fi}


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

static void Test_S19113C14()
{
  extern Class_Descriptor cd_S19113C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,25)];
    init_test(&cd_S19113C14, buf);
    S19113C14 *dp, &lv = *(dp=new (buf) S19113C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,96), "sizeof(S19113C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19113C14)");
    check_field_offset(lv, s19113c14f0, ABISELECT(16,4), "S19113C14.s19113c14f0");
    check_field_offset(lv, s19113c14f1, ABISELECT(32,16), "S19113C14.s19113c14f1");
    check_field_offset(lv, s19113c14f2, ABISELECT(48,20), "S19113C14.s19113c14f2");
    check_field_offset(lv, s19113c14f3, ABISELECT(144,72), "S19113C14.s19113c14f3");
    check_field_offset(lv, s19113c14f4, ABISELECT(160,80), "S19113C14.s19113c14f4");
    check_field_offset(lv, s19113c14f5, ABISELECT(176,92), "S19113C14.s19113c14f5");
    test_class_info(&lv, &cd_S19113C14);
    dp->~S19113C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19113C14(Test_S19113C14, "S19113C14", ABISELECT(192,96));

#else // __cplusplus

extern void _ZN9S19113C14C1Ev();
extern void _ZN9S19113C14D1Ev();
Name_Map name_map_S19113C14[] = {
  NSPAIR(_ZN9S19113C14C1Ev),
  NSPAIR(_ZN9S19113C14D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S19113C14[];
extern void _ZN9S19113C142v4Ev();
static  VTBL_ENTRY vtc_S19113C14[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S19113C14[0]),
  (VTBL_ENTRY)&_ZN9S19113C142v4Ev,
};
extern VTBL_ENTRY _ZTI9S19113C14[];
extern  VTBL_ENTRY _ZTV9S19113C14[];
Class_Descriptor cd_S19113C14 = {  "S19113C14", // class name
  0,0,//no base classes
  &(vtc_S19113C14[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(192,96), // object size
  NSPAIRA(_ZTI9S19113C14),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S19113C14),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19113C13  : virtual S19113C8 , virtual S19113C5 , virtual S19113C2 , virtual S8033C4 , virtual S19113C14 {
  void *s19113c13f0;
  ::S19113C14 s19113c13f1[3];
  ::S19113C14 s19113c13f2;
  char s19113c13f3;
  virtual  ~S19113C13(); // _ZN9S19113C13D2Ev
  S19113C13(); // tgen
};
//SIG(-1 S19113C13) C1{ VBC2{ BC3{ BC4{ vd m Fc Fc:0 Fl[8] FD} Fp FC5{} Fp FD} VBC4 vd FC4 Fp} VBC6{ BC4 VBC3 vd v1 Fi Fc Fp Fi Fp[2] FC2} VBC7{ BC8{ BC4 VBC6 vd Fp FL[2] Fc Fp Fi} VBC9{ VBC3 v2 Fc Fs FD Fp[2]} vd Fc Fi:32} VBC10{ m Fp[3] FL[8]} VBC11{ v3 FD Fp FC4 FL FD Fi} vd Fp FC11[3] FC11 Fc}


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

static void Test_S19113C13()
{
  extern Class_Descriptor cd_S19113C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(144,303)];
    init_test(&cd_S19113C13, buf);
    S19113C13 *dp, &lv = *(dp=new (buf) S19113C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2288,1208), "sizeof(S19113C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19113C13)");
    check_base_class_offset(lv, (S8033C7*)(S19113C6*)(S19113C8*), ABISELECT(800,396), "S19113C13");
    check_base_class_offset(lv, (S19113C6*)(S19113C8*), ABISELECT(800,396), "S19113C13");
    /*is_ambiguous_... S19113C8::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19113C8*), ABISELECT(1056,528), "S19113C13");
    check_base_class_offset(lv, (S19113C8*), ABISELECT(800,396), "S19113C13");
    /*is_ambiguous_... S19113C5::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19113C5*), ABISELECT(1152,580), "S19113C13");
    /*is_ambiguous_... S19113C13::S19113C6 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19113C6*), ABISELECT(1648,840), "S19113C13");
    check_base_class_offset(lv, (S19113C6*)(S19113C5*), ABISELECT(1648,840), "S19113C13");
    check_base_class_offset(lv, (S19113C6*)(S19113C9*), ABISELECT(1648,840), "S19113C13");
    check_base_class_offset(lv, (S19113C5*), ABISELECT(1152,580), "S19113C13");
    check_base_class_offset(lv, (S19113C5*)(S19113C3*)(S19113C2*), ABISELECT(1152,580), "S19113C13");
    /*is_ambiguous_... S19113C3::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19113C3*)(S19113C2*), ABISELECT(1792,916), "S19113C13");
    check_base_class_offset(lv, (S19113C3*)(S19113C2*), ABISELECT(1792,916), "S19113C13");
    check_base_class_offset(lv, (S19113C9*)(S19113C2*), ABISELECT(1952,1008), "S19113C13");
    check_base_class_offset(lv, (S19113C2*), ABISELECT(1792,916), "S19113C13");
    check_base_class_offset(lv, (S8033C4*), ABISELECT(2000,1036), "S19113C13");
    check_base_class_offset(lv, (S19113C14*), ABISELECT(2096,1112), "S19113C13");
    check_field_offset(lv, s19113c13f0, ABISELECT(8,4), "S19113C13.s19113c13f0");
    check_field_offset(lv, s19113c13f1, ABISELECT(16,8), "S19113C13.s19113c13f1");
    check_field_offset(lv, s19113c13f2, ABISELECT(592,296), "S19113C13.s19113c13f2");
    check_field_offset(lv, s19113c13f3, ABISELECT(784,392), "S19113C13.s19113c13f3");
    test_class_info(&lv, &cd_S19113C13);
    dp->~S19113C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19113C13(Test_S19113C13, "S19113C13", ABISELECT(2288,1208));

#else // __cplusplus

extern void _ZN9S19113C13C1Ev();
extern void _ZN9S19113C13D2Ev();
Name_Map name_map_S19113C13[] = {
  NSPAIR(_ZN9S19113C13C1Ev),
  NSPAIR(_ZN9S19113C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19113C6;
extern VTBL_ENTRY _ZTI8S19113C6[];
extern  VTBL_ENTRY _ZTV8S19113C6[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19113C8;
extern VTBL_ENTRY _ZTI8S19113C8[];
extern  VTBL_ENTRY _ZTV8S19113C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19113C8[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19113C6;
extern VTBL_ENTRY _ZTI8S19113C6[];
extern  VTBL_ENTRY _ZTV8S19113C6[];
extern Class_Descriptor cd_S19113C5;
extern VTBL_ENTRY _ZTI8S19113C5[];
extern  VTBL_ENTRY _ZTV8S19113C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19113C5[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19113C3;
extern VTBL_ENTRY _ZTI8S19113C3[];
extern  VTBL_ENTRY _ZTV8S19113C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19113C3[];
extern Class_Descriptor cd_S19113C9;
extern VTBL_ENTRY _ZTI8S19113C9[];
extern  VTBL_ENTRY _ZTV8S19113C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19113C9[];
extern Class_Descriptor cd_S19113C2;
extern VTBL_ENTRY _ZTI8S19113C2[];
extern  VTBL_ENTRY _ZTV8S19113C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19113C2[];
extern Class_Descriptor cd_S8033C4;
extern VTBL_ENTRY _ZTI7S8033C4[];
extern Class_Descriptor cd_S19113C14;
extern VTBL_ENTRY _ZTI9S19113C14[];
extern  VTBL_ENTRY _ZTV9S19113C14[];
static Base_Class bases_S19113C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    ABISELECT(800,396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19113C6,    ABISELECT(800,396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(1056,528), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19113C8,    ABISELECT(800,396), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C7,    ABISELECT(1152,580), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(1648,840), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19113C6,    ABISELECT(1648,840), //bcp->offset
    31, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19113C5,    ABISELECT(1152,580), //bcp->offset
    23, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C7,    ABISELECT(1792,916), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19113C3,    ABISELECT(1792,916), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19113C9,    ABISELECT(1952,1008), //bcp->offset
    44, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19113C2,    ABISELECT(1792,916), //bcp->offset
    36, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C4,    ABISELECT(2000,1036), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19113C14,    ABISELECT(2096,1112), //bcp->offset
    52, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19113C13[];
extern void _ZN9S19113C13D1Ev();
extern void _ZN9S19113C13D0Ev();
extern void ABISELECT(_ZTv0_n32_N9S19113C13D1Ev,_ZTv0_n16_N9S19113C13D1Ev)();
extern void ABISELECT(_ZThn800_N9S19113C13D1Ev,_ZThn396_N9S19113C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19113C13D0Ev,_ZTv0_n16_N9S19113C13D0Ev)();
extern void ABISELECT(_ZThn800_N9S19113C13D0Ev,_ZThn396_N9S19113C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19113C13D1Ev,_ZTv0_n12_N9S19113C13D1Ev)();
extern void ABISELECT(_ZThn1056_N9S19113C13D1Ev,_ZThn528_N9S19113C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19113C13D0Ev,_ZTv0_n12_N9S19113C13D0Ev)();
extern void ABISELECT(_ZThn1056_N9S19113C13D0Ev,_ZThn528_N9S19113C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19113C13D1Ev,_ZTv0_n16_N9S19113C13D1Ev)();
extern void ABISELECT(_ZThn1152_N9S19113C13D1Ev,_ZThn580_N9S19113C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19113C13D0Ev,_ZTv0_n16_N9S19113C13D0Ev)();
extern void ABISELECT(_ZThn1152_N9S19113C13D0Ev,_ZThn580_N9S19113C13D0Ev)() __attribute__((weak));
extern void _ZN8S19113C52v2Ev();
extern void ABISELECT(_ZTv0_n24_N9S19113C13D1Ev,_ZTv0_n12_N9S19113C13D1Ev)();
extern void ABISELECT(_ZThn1648_N9S19113C13D1Ev,_ZThn840_N9S19113C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19113C13D0Ev,_ZTv0_n12_N9S19113C13D0Ev)();
extern void ABISELECT(_ZThn1648_N9S19113C13D0Ev,_ZThn840_N9S19113C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19113C13D1Ev,_ZTv0_n24_N9S19113C13D1Ev)();
extern void ABISELECT(_ZThn1792_N9S19113C13D1Ev,_ZThn916_N9S19113C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19113C13D0Ev,_ZTv0_n24_N9S19113C13D0Ev)();
extern void ABISELECT(_ZThn1792_N9S19113C13D0Ev,_ZThn916_N9S19113C13D0Ev)() __attribute__((weak));
extern void _ZN8S19113C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N9S19113C13D1Ev,_ZTv0_n20_N9S19113C13D1Ev)();
extern void ABISELECT(_ZThn1952_N9S19113C13D1Ev,_ZThn1008_N9S19113C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19113C13D0Ev,_ZTv0_n20_N9S19113C13D0Ev)();
extern void ABISELECT(_ZThn1952_N9S19113C13D0Ev,_ZThn1008_N9S19113C13D0Ev)() __attribute__((weak));
extern void _ZN9S19113C142v4Ev();
static  VTBL_ENTRY vtc_S19113C13[] = {
  ABISELECT(2096,1112),
  ABISELECT(2000,1036),
  ABISELECT(1952,1008),
  ABISELECT(1792,916),
  ABISELECT(1648,840),
  ABISELECT(1152,580),
  ABISELECT(1056,528),
  ABISELECT(800,396),
  0,
  (VTBL_ENTRY)&(_ZTI9S19113C13[0]),
  (VTBL_ENTRY)&_ZN9S19113C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19113C13D0Ev,
  ABISELECT(-800,-396),
  ABISELECT(256,132),
  ABISELECT(-800,-396),
  (VTBL_ENTRY)&(_ZTI9S19113C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19113C13D1Ev,_ZTv0_n16_N9S19113C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19113C13D0Ev,_ZTv0_n16_N9S19113C13D0Ev),
  ABISELECT(-1056,-528),
  ABISELECT(-1056,-528),
  (VTBL_ENTRY)&(_ZTI9S19113C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19113C13D1Ev,_ZTv0_n12_N9S19113C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19113C13D0Ev,_ZTv0_n12_N9S19113C13D0Ev),
  0,
  ABISELECT(-1152,-580),
  ABISELECT(496,260),
  ABISELECT(-1152,-580),
  (VTBL_ENTRY)&(_ZTI9S19113C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19113C13D1Ev,_ZTv0_n16_N9S19113C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19113C13D0Ev,_ZTv0_n16_N9S19113C13D0Ev),
  (VTBL_ENTRY)&_ZN8S19113C52v2Ev,
  ABISELECT(-1648,-840),
  ABISELECT(-1648,-840),
  (VTBL_ENTRY)&(_ZTI9S19113C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19113C13D1Ev,_ZTv0_n12_N9S19113C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19113C13D0Ev,_ZTv0_n12_N9S19113C13D0Ev),
  ABISELECT(-1792,-916),
  ABISELECT(160,92),
  ABISELECT(-144,-76),
  ABISELECT(-640,-336),
  ABISELECT(-1792,-916),
  (VTBL_ENTRY)&(_ZTI9S19113C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19113C13D1Ev,_ZTv0_n24_N9S19113C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19113C13D0Ev,_ZTv0_n24_N9S19113C13D0Ev),
  ABISELECT(-1952,-1008),
  0,
  ABISELECT(-304,-168),
  ABISELECT(-1952,-1008),
  (VTBL_ENTRY)&(_ZTI9S19113C13[0]),
  (VTBL_ENTRY)&_ZN8S19113C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19113C13D1Ev,_ZTv0_n20_N9S19113C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19113C13D0Ev,_ZTv0_n20_N9S19113C13D0Ev),
  0,
  ABISELECT(-2096,-1112),
  (VTBL_ENTRY)&(_ZTI9S19113C13[0]),
  (VTBL_ENTRY)&_ZN9S19113C142v4Ev,
};
extern VTBL_ENTRY _ZTV9S19113C13[];
extern void _ZN8S19113C8D1Ev();
extern void _ZN8S19113C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C8__9S19113C13[] = {
  ABISELECT(256,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S19113C8[0]),
  (VTBL_ENTRY)&_ZN8S19113C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19113C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19113C8D1Ev,_ZTv0_n12_N8S19113C8D1Ev)();
extern void ABISELECT(_ZThn256_N8S19113C8D1Ev,_ZThn132_N8S19113C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19113C8D0Ev,_ZTv0_n12_N8S19113C8D0Ev)();
extern void ABISELECT(_ZThn256_N8S19113C8D0Ev,_ZThn132_N8S19113C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__8S19113C8__9S19113C13[] = {
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  (VTBL_ENTRY)&(_ZTI8S19113C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C8D1Ev,_ZTv0_n12_N8S19113C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C8D0Ev,_ZTv0_n12_N8S19113C8D0Ev),
};
extern void _ZN8S19113C5D1Ev();
extern void _ZN8S19113C5D0Ev();
extern void _ZN8S19113C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C5__9S19113C13[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19113C5[0]),
  (VTBL_ENTRY)&_ZN8S19113C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19113C5D0Ev,
  (VTBL_ENTRY)&_ZN8S19113C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19113C5D1Ev,_ZTv0_n12_N8S19113C5D1Ev)();
extern void ABISELECT(_ZThn496_N8S19113C5D1Ev,_ZThn260_N8S19113C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19113C5D0Ev,_ZTv0_n12_N8S19113C5D0Ev)();
extern void ABISELECT(_ZThn496_N8S19113C5D0Ev,_ZThn260_N8S19113C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19113C6__8S19113C5__9S19113C13[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI8S19113C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C5D1Ev,_ZTv0_n12_N8S19113C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C5D0Ev,_ZTv0_n12_N8S19113C5D0Ev),
};
extern void _ZN8S19113C2D1Ev();
extern void _ZN8S19113C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C2__9S19113C13[] = {
  ABISELECT(160,92),
  ABISELECT(-144,-76),
  ABISELECT(-640,-336),
  0,
  (VTBL_ENTRY)&(_ZTI8S19113C2[0]),
  (VTBL_ENTRY)&_ZN8S19113C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19113C2D0Ev,
};
extern void _ZN8S19113C3D1Ev();
extern void _ZN8S19113C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C38S19113C2__9S19113C13[] = {
  ABISELECT(-144,-76),
  ABISELECT(-640,-336),
  0,
  (VTBL_ENTRY)&(_ZTI8S19113C3[0]),
  (VTBL_ENTRY)&_ZN8S19113C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19113C3D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19113C3D1Ev,_ZTv0_n16_N8S19113C3D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19113C3D0Ev,_ZTv0_n16_N8S19113C3D0Ev)();
extern void _ZN8S19113C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C5__8S19113C38S19113C2__9S19113C13[] = {
  0,
  ABISELECT(640,336),
  ABISELECT(496,260),
  ABISELECT(640,336),
  (VTBL_ENTRY)&(_ZTI8S19113C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19113C3D1Ev,_ZTv0_n16_N8S19113C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19113C3D0Ev,_ZTv0_n16_N8S19113C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19113C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19113C3D1Ev,_ZTv0_n12_N8S19113C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19113C3D0Ev,_ZTv0_n12_N8S19113C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19113C6__8S19113C38S19113C2__9S19113C13[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S19113C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C3D1Ev,_ZTv0_n12_N8S19113C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C3D0Ev,_ZTv0_n12_N8S19113C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19113C2D1Ev,_ZTv0_n16_N8S19113C2D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19113C2D0Ev,_ZTv0_n16_N8S19113C2D0Ev)();
extern void _ZN8S19113C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C5__8S19113C2__9S19113C13[] = {
  0,
  ABISELECT(640,336),
  ABISELECT(496,260),
  ABISELECT(640,336),
  (VTBL_ENTRY)&(_ZTI8S19113C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19113C2D1Ev,_ZTv0_n16_N8S19113C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19113C2D0Ev,_ZTv0_n16_N8S19113C2D0Ev),
  (VTBL_ENTRY)&_ZN8S19113C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19113C2D1Ev,_ZTv0_n12_N8S19113C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19113C2D0Ev,_ZTv0_n12_N8S19113C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19113C6__8S19113C2__9S19113C13[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S19113C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C2D1Ev,_ZTv0_n12_N8S19113C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C2D0Ev,_ZTv0_n12_N8S19113C2D0Ev),
};
extern void _ZN8S19113C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N8S19113C2D1Ev,_ZTv0_n20_N8S19113C2D1Ev)();
extern void ABISELECT(_ZThn160_N8S19113C2D1Ev,_ZThn92_N8S19113C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19113C2D0Ev,_ZTv0_n20_N8S19113C2D0Ev)();
extern void ABISELECT(_ZThn160_N8S19113C2D0Ev,_ZThn92_N8S19113C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19113C9__8S19113C2__9S19113C13[] = {
  ABISELECT(-160,-92),
  0,
  ABISELECT(-304,-168),
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI8S19113C2[0]),
  (VTBL_ENTRY)&_ZN8S19113C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19113C2D1Ev,_ZTv0_n20_N8S19113C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19113C2D0Ev,_ZTv0_n20_N8S19113C2D0Ev),
};
extern void _ZN8S19113C92v3Ev();
extern void _ZN8S19113C9D1Ev();
extern void _ZN8S19113C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C9__9S19113C13[] = {
  ABISELECT(-304,-168),
  0,
  (VTBL_ENTRY)&(_ZTI8S19113C9[0]),
  (VTBL_ENTRY)&_ZN8S19113C92v3Ev,
  (VTBL_ENTRY)&_ZN8S19113C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19113C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19113C9D1Ev,_ZTv0_n12_N8S19113C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19113C9D0Ev,_ZTv0_n12_N8S19113C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19113C6__8S19113C9__9S19113C13[] = {
  ABISELECT(304,168),
  ABISELECT(304,168),
  (VTBL_ENTRY)&(_ZTI8S19113C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C9D1Ev,_ZTv0_n12_N8S19113C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C9D0Ev,_ZTv0_n12_N8S19113C9D0Ev),
};
static  VTT_ENTRY vtt_S19113C13[] = {
  {&(_ZTV9S19113C13[10]),  10,56},
  {&(_ZTV9S19113C13[16]),  16,56},
  {&(_ZTV9S19113C13[21]),  21,56},
  {&(_ZTV9S19113C13[28]),  28,56},
  {&(_ZTV9S19113C13[34]),  34,56},
  {&(_ZTV9S19113C13[42]),  42,56},
  {&(_ZTV9S19113C13[49]),  49,56},
  {&(_ZTV9S19113C13[55]),  55,56},
  {&(_tg__ZTV8S19113C8__9S19113C13[3]),  3,5},
  {&(_tg__ZTV7S8033C7__A1__8S19113C8__9S19113C13[3]),  3,5},
  {&(_tg__ZTV8S19113C5__9S19113C13[3]),  3,6},
  {&(_tg__ZTV8S19113C6__8S19113C5__9S19113C13[3]),  3,5},
  {&(_tg__ZTV8S19113C2__9S19113C13[5]),  5,7},
  {&(_tg__ZTV8S19113C38S19113C2__9S19113C13[4]),  4,6},
  {&(_tg__ZTV8S19113C5__8S19113C38S19113C2__9S19113C13[5]),  5,8},
  {&(_tg__ZTV8S19113C6__8S19113C38S19113C2__9S19113C13[3]),  3,5},
  {&(_tg__ZTV8S19113C5__8S19113C2__9S19113C13[5]),  5,8},
  {&(_tg__ZTV8S19113C6__8S19113C2__9S19113C13[3]),  3,5},
  {&(_tg__ZTV8S19113C9__8S19113C2__9S19113C13[5]),  5,8},
  {&(_tg__ZTV8S19113C9__9S19113C13[3]),  3,6},
  {&(_tg__ZTV8S19113C6__8S19113C9__9S19113C13[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19113C13[];
extern  VTBL_ENTRY _ZTV9S19113C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19113C13[];
static VTBL_ENTRY alt_thunk_names68[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19113C2D0Ev,_ZTv0_n20_N8S19113C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19113C2D0Ev,_ZThn92_N8S19113C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19113C2D1Ev,_ZTv0_n20_N8S19113C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19113C2D1Ev,_ZThn92_N8S19113C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19113C5D0Ev,_ZTv0_n12_N8S19113C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19113C5D0Ev,_ZThn260_N8S19113C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19113C5D1Ev,_ZTv0_n12_N8S19113C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19113C5D1Ev,_ZThn260_N8S19113C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19113C8D0Ev,_ZTv0_n12_N8S19113C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19113C8D0Ev,_ZThn132_N8S19113C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19113C8D1Ev,_ZTv0_n12_N8S19113C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19113C8D1Ev,_ZThn132_N8S19113C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19113C13D0Ev,_ZTv0_n20_N9S19113C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1952_N9S19113C13D0Ev,_ZThn1008_N9S19113C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19113C13D1Ev,_ZTv0_n20_N9S19113C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1952_N9S19113C13D1Ev,_ZThn1008_N9S19113C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19113C13D0Ev,_ZTv0_n24_N9S19113C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1792_N9S19113C13D0Ev,_ZThn916_N9S19113C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19113C13D1Ev,_ZTv0_n24_N9S19113C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1792_N9S19113C13D1Ev,_ZThn916_N9S19113C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19113C13D0Ev,_ZTv0_n12_N9S19113C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1648_N9S19113C13D0Ev,_ZThn840_N9S19113C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1056_N9S19113C13D0Ev,_ZThn528_N9S19113C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19113C13D1Ev,_ZTv0_n12_N9S19113C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1648_N9S19113C13D1Ev,_ZThn840_N9S19113C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1056_N9S19113C13D1Ev,_ZThn528_N9S19113C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19113C13D0Ev,_ZTv0_n16_N9S19113C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1152_N9S19113C13D0Ev,_ZThn580_N9S19113C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn800_N9S19113C13D0Ev,_ZThn396_N9S19113C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19113C13D1Ev,_ZTv0_n16_N9S19113C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1152_N9S19113C13D1Ev,_ZThn580_N9S19113C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn800_N9S19113C13D1Ev,_ZThn396_N9S19113C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19113C13 = {  "S19113C13", // class name
  bases_S19113C13, 14,
  &(vtc_S19113C13[0]), // expected_vtbl_contents
  &(vtt_S19113C13[0]), // expected_vtt_contents
  ABISELECT(2288,1208), // object size
  NSPAIRA(_ZTI9S19113C13),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19113C13),56, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19113C13),21, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names68,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19113C12  : virtual S19113C5 , S8033C4 , virtual S19113C9 , S19113C13 {
  ::S19113C14 s19113c12f0;
  void *s19113c12f1;
  __tsi64 s19113c12f2[2];
  int s19113c12f3:31;
  int s19113c12f4;
  ::S20291C14_nt s19113c12f5;
  ::S19113C14 s19113c12f6;
  ::S19113C14 s19113c12f7;
  void *s19113c12f8;
  ~S19113C12(); // tgen
  S19113C12(); // tgen
};
//SIG(-1 S19113C12) C1{ VBC2{ BC3{ vd m Fc Fc:0 Fl[8] FD} VBC4{ BC3 Fp FC5{} Fp FD} vd v1 Fi Fc Fp Fi Fp[2] FC6{ BC4 VBC3 vd FC3 Fp}} BC7{ m Fp[3] FL[8]} VBC8{ VBC4 v2 Fc Fs FD Fp[2]} BC9{ VBC6 VBC2 VBC10{ BC11{ BC3 VBC2 vd Fp FL[2] Fc Fp Fi} VBC8 vd Fc Fi:32} VBC7 VBC12{ v3 FD Fp FC3 FL FD Fi} vd Fp FC12[3] FC12 Fc} FC12 Fp FL[2] Fi:31 Fi FC5 FC12 FC12 Fp}


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

static void Test_S19113C12()
{
  extern Class_Descriptor cd_S19113C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(188,403)];
    init_test(&cd_S19113C12, buf);
    S19113C12 *dp, &lv = *(dp=new (buf) S19113C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2992,1608), "sizeof(S19113C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19113C12)");
    /*is_ambiguous_... S19113C5::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19113C5*), ABISELECT(1520,796), "S19113C12");
    /*is_ambiguous_... S19113C12::S19113C6 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19113C6*), ABISELECT(2016,1056), "S19113C12");
    check_base_class_offset(lv, (S19113C6*)(S19113C5*), ABISELECT(2016,1056), "S19113C12");
    check_base_class_offset(lv, (S19113C6*)(S19113C9*), ABISELECT(2016,1056), "S19113C12");
    check_base_class_offset(lv, (S19113C5*), ABISELECT(1520,796), "S19113C12");
    check_base_class_offset(lv, (S19113C5*)(S19113C13*), ABISELECT(1520,796), "S19113C12");
    check_base_class_offset(lv, (S19113C5*)(S19113C3*)(S19113C2*), ABISELECT(1520,796), "S19113C12");
    /*is_ambiguous_... S19113C12::S8033C4 */ AMB_check_base_class_offset(lv, (S8033C4*), ABISELECT(792,396), "S19113C12");
    check_base_class_offset(lv, (S19113C9*), ABISELECT(2160,1132), "S19113C12");
    check_base_class_offset(lv, (S19113C9*)(S19113C2*), ABISELECT(2160,1132), "S19113C12");
    check_base_class_offset(lv, (S8033C7*)(S19113C6*)(S19113C8*), ABISELECT(2208,1160), "S19113C12");
    check_base_class_offset(lv, (S19113C6*)(S19113C8*), ABISELECT(2208,1160), "S19113C12");
    /*is_ambiguous_... S19113C8::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19113C8*), ABISELECT(2464,1292), "S19113C12");
    check_base_class_offset(lv, (S19113C8*)(S19113C13*), ABISELECT(2208,1160), "S19113C12");
    /*is_ambiguous_... S19113C3::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19113C3*)(S19113C2*), ABISELECT(2560,1344), "S19113C12");
    check_base_class_offset(lv, (S19113C3*)(S19113C2*), ABISELECT(2560,1344), "S19113C12");
    check_base_class_offset(lv, (S19113C2*)(S19113C13*), ABISELECT(2560,1344), "S19113C12");
    check_base_class_offset(lv, (S8033C4*)(S19113C13*), ABISELECT(2712,1436), "S19113C12");
    check_base_class_offset(lv, (S19113C14*)(S19113C13*), ABISELECT(2800,1512), "S19113C12");
    check_base_class_offset(lv, (S19113C13*), 0, "S19113C12");
    check_field_offset(lv, s19113c12f0, ABISELECT(880,472), "S19113C12.s19113c12f0");
    check_field_offset(lv, s19113c12f1, ABISELECT(1072,568), "S19113C12.s19113c12f1");
    check_field_offset(lv, s19113c12f2, ABISELECT(1080,572), "S19113C12.s19113c12f2");
    set_bf_and_test(lv, s19113c12f3, ABISELECT(1096,588), 0, 31, 1, "S19113C12");
    set_bf_and_test(lv, s19113c12f3, ABISELECT(1096,588), 0, 31, hide_sll(1LL<<30), "S19113C12");
    check_field_offset(lv, s19113c12f4, ABISELECT(1100,592), "S19113C12.s19113c12f4");
    check_field_offset(lv, s19113c12f5, ABISELECT(1104,596), "S19113C12.s19113c12f5");
    check_field_offset(lv, s19113c12f6, ABISELECT(1120,600), "S19113C12.s19113c12f6");
    check_field_offset(lv, s19113c12f7, ABISELECT(1312,696), "S19113C12.s19113c12f7");
    check_field_offset(lv, s19113c12f8, ABISELECT(1504,792), "S19113C12.s19113c12f8");
    test_class_info(&lv, &cd_S19113C12);
    dp->~S19113C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19113C12(Test_S19113C12, "S19113C12", ABISELECT(2992,1608));

#else // __cplusplus

extern void _ZN9S19113C12C1Ev();
extern void _ZN9S19113C12D1Ev();
Name_Map name_map_S19113C12[] = {
  NSPAIR(_ZN9S19113C12C1Ev),
  NSPAIR(_ZN9S19113C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19113C6;
extern VTBL_ENTRY _ZTI8S19113C6[];
extern  VTBL_ENTRY _ZTV8S19113C6[];
extern Class_Descriptor cd_S19113C5;
extern VTBL_ENTRY _ZTI8S19113C5[];
extern  VTBL_ENTRY _ZTV8S19113C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19113C5[];
extern Class_Descriptor cd_S8033C4;
extern VTBL_ENTRY _ZTI7S8033C4[];
extern Class_Descriptor cd_S19113C9;
extern VTBL_ENTRY _ZTI8S19113C9[];
extern  VTBL_ENTRY _ZTV8S19113C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19113C9[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19113C6;
extern VTBL_ENTRY _ZTI8S19113C6[];
extern  VTBL_ENTRY _ZTV8S19113C6[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19113C8;
extern VTBL_ENTRY _ZTI8S19113C8[];
extern  VTBL_ENTRY _ZTV8S19113C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19113C8[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19113C3;
extern VTBL_ENTRY _ZTI8S19113C3[];
extern  VTBL_ENTRY _ZTV8S19113C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19113C3[];
extern Class_Descriptor cd_S19113C2;
extern VTBL_ENTRY _ZTI8S19113C2[];
extern  VTBL_ENTRY _ZTV8S19113C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19113C2[];
extern Class_Descriptor cd_S8033C4;
extern VTBL_ENTRY _ZTI7S8033C4[];
extern Class_Descriptor cd_S19113C14;
extern VTBL_ENTRY _ZTI9S19113C14[];
extern  VTBL_ENTRY _ZTV9S19113C14[];
extern Class_Descriptor cd_S19113C13;
extern VTBL_ENTRY _ZTI9S19113C13[];
extern  VTBL_ENTRY _ZTV9S19113C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19113C13[];
static Base_Class bases_S19113C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    ABISELECT(1520,796), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(2016,1056), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19113C6,    ABISELECT(2016,1056), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19113C5,    ABISELECT(1520,796), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C4,    ABISELECT(792,396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19113C9,    ABISELECT(2160,1132), //bcp->offset
    25, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C7,    ABISELECT(2208,1160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19113C6,    ABISELECT(2208,1160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(2464,1292), //bcp->offset
    39, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19113C8,    ABISELECT(2208,1160), //bcp->offset
    33, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S8033C7,    ABISELECT(2560,1344), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19113C3,    ABISELECT(2560,1344), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19113C2,    ABISELECT(2560,1344), //bcp->offset
    44, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S8033C4,    ABISELECT(2712,1436), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19113C14,    ABISELECT(2800,1512), //bcp->offset
    52, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19113C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19113C12[];
extern void _ZN9S19113C12D1Ev();
extern void _ZN9S19113C12D0Ev();
extern void ABISELECT(_ZTv0_n32_N9S19113C12D1Ev,_ZTv0_n16_N9S19113C12D1Ev)();
extern void ABISELECT(_ZThn1520_N9S19113C12D1Ev,_ZThn796_N9S19113C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19113C12D0Ev,_ZTv0_n16_N9S19113C12D0Ev)();
extern void ABISELECT(_ZThn1520_N9S19113C12D0Ev,_ZThn796_N9S19113C12D0Ev)() __attribute__((weak));
extern void _ZN8S19113C52v2Ev();
extern void ABISELECT(_ZTv0_n24_N9S19113C12D1Ev,_ZTv0_n12_N9S19113C12D1Ev)();
extern void ABISELECT(_ZThn2016_N9S19113C12D1Ev,_ZThn1056_N9S19113C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19113C12D0Ev,_ZTv0_n12_N9S19113C12D0Ev)();
extern void ABISELECT(_ZThn2016_N9S19113C12D0Ev,_ZThn1056_N9S19113C12D0Ev)() __attribute__((weak));
extern void _ZN8S19113C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N9S19113C12D1Ev,_ZTv0_n20_N9S19113C12D1Ev)();
extern void ABISELECT(_ZThn2160_N9S19113C12D1Ev,_ZThn1132_N9S19113C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19113C12D0Ev,_ZTv0_n20_N9S19113C12D0Ev)();
extern void ABISELECT(_ZThn2160_N9S19113C12D0Ev,_ZThn1132_N9S19113C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19113C12D1Ev,_ZTv0_n16_N9S19113C12D1Ev)();
extern void ABISELECT(_ZThn2208_N9S19113C12D1Ev,_ZThn1160_N9S19113C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19113C12D0Ev,_ZTv0_n16_N9S19113C12D0Ev)();
extern void ABISELECT(_ZThn2208_N9S19113C12D0Ev,_ZThn1160_N9S19113C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19113C12D1Ev,_ZTv0_n12_N9S19113C12D1Ev)();
extern void ABISELECT(_ZThn2464_N9S19113C12D1Ev,_ZThn1292_N9S19113C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19113C12D0Ev,_ZTv0_n12_N9S19113C12D0Ev)();
extern void ABISELECT(_ZThn2464_N9S19113C12D0Ev,_ZThn1292_N9S19113C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19113C12D1Ev,_ZTv0_n24_N9S19113C12D1Ev)();
extern void ABISELECT(_ZThn2560_N9S19113C12D1Ev,_ZThn1344_N9S19113C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19113C12D0Ev,_ZTv0_n24_N9S19113C12D0Ev)();
extern void ABISELECT(_ZThn2560_N9S19113C12D0Ev,_ZThn1344_N9S19113C12D0Ev)() __attribute__((weak));
extern void _ZN9S19113C142v4Ev();
static  VTBL_ENTRY vtc_S19113C12[] = {
  ABISELECT(2800,1512),
  ABISELECT(2712,1436),
  ABISELECT(2160,1132),
  ABISELECT(2560,1344),
  ABISELECT(2016,1056),
  ABISELECT(1520,796),
  ABISELECT(2464,1292),
  ABISELECT(2208,1160),
  0,
  (VTBL_ENTRY)&(_ZTI9S19113C12[0]),
  (VTBL_ENTRY)&_ZN9S19113C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19113C12D0Ev,
  0,
  ABISELECT(-1520,-796),
  ABISELECT(496,260),
  ABISELECT(-1520,-796),
  (VTBL_ENTRY)&(_ZTI9S19113C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19113C12D1Ev,_ZTv0_n16_N9S19113C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19113C12D0Ev,_ZTv0_n16_N9S19113C12D0Ev),
  (VTBL_ENTRY)&_ZN8S19113C52v2Ev,
  ABISELECT(-2016,-1056),
  ABISELECT(-2016,-1056),
  (VTBL_ENTRY)&(_ZTI9S19113C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19113C12D1Ev,_ZTv0_n12_N9S19113C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19113C12D0Ev,_ZTv0_n12_N9S19113C12D0Ev),
  ABISELECT(-2160,-1132),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-2160,-1132),
  (VTBL_ENTRY)&(_ZTI9S19113C12[0]),
  (VTBL_ENTRY)&_ZN8S19113C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19113C12D1Ev,_ZTv0_n20_N9S19113C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19113C12D0Ev,_ZTv0_n20_N9S19113C12D0Ev),
  ABISELECT(-2208,-1160),
  ABISELECT(256,132),
  ABISELECT(-2208,-1160),
  (VTBL_ENTRY)&(_ZTI9S19113C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19113C12D1Ev,_ZTv0_n16_N9S19113C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19113C12D0Ev,_ZTv0_n16_N9S19113C12D0Ev),
  ABISELECT(-2464,-1292),
  ABISELECT(-2464,-1292),
  (VTBL_ENTRY)&(_ZTI9S19113C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19113C12D1Ev,_ZTv0_n12_N9S19113C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19113C12D0Ev,_ZTv0_n12_N9S19113C12D0Ev),
  ABISELECT(-2560,-1344),
  ABISELECT(-400,-212),
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  ABISELECT(-2560,-1344),
  (VTBL_ENTRY)&(_ZTI9S19113C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19113C12D1Ev,_ZTv0_n24_N9S19113C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19113C12D0Ev,_ZTv0_n24_N9S19113C12D0Ev),
  0,
  ABISELECT(-2800,-1512),
  (VTBL_ENTRY)&(_ZTI9S19113C12[0]),
  (VTBL_ENTRY)&_ZN9S19113C142v4Ev,
};
extern VTBL_ENTRY _ZTV9S19113C12[];
extern void _ZN9S19113C13D1Ev();
extern void _ZN9S19113C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19113C13__9S19113C12[] = {
  ABISELECT(2800,1512),
  ABISELECT(2712,1436),
  ABISELECT(2160,1132),
  ABISELECT(2560,1344),
  ABISELECT(2016,1056),
  ABISELECT(1520,796),
  ABISELECT(2464,1292),
  ABISELECT(2208,1160),
  0,
  (VTBL_ENTRY)&(_ZTI9S19113C13[0]),
  (VTBL_ENTRY)&_ZN9S19113C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19113C13D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19113C13D1Ev,_ZTv0_n16_N9S19113C13D1Ev)();
extern void ABISELECT(_ZThn2208_N9S19113C13D1Ev,_ZThn1160_N9S19113C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19113C13D0Ev,_ZTv0_n16_N9S19113C13D0Ev)();
extern void ABISELECT(_ZThn2208_N9S19113C13D0Ev,_ZThn1160_N9S19113C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19113C8__9S19113C13__9S19113C12[] = {
  ABISELECT(-2208,-1160),
  ABISELECT(256,132),
  ABISELECT(-2208,-1160),
  (VTBL_ENTRY)&(_ZTI9S19113C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19113C13D1Ev,_ZTv0_n16_N9S19113C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19113C13D0Ev,_ZTv0_n16_N9S19113C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19113C13D1Ev,_ZTv0_n12_N9S19113C13D1Ev)();
extern void ABISELECT(_ZThn2464_N9S19113C13D1Ev,_ZThn1292_N9S19113C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19113C13D0Ev,_ZTv0_n12_N9S19113C13D0Ev)();
extern void ABISELECT(_ZThn2464_N9S19113C13D0Ev,_ZThn1292_N9S19113C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__9S19113C13__9S19113C12[] = {
  ABISELECT(-2464,-1292),
  ABISELECT(-2464,-1292),
  (VTBL_ENTRY)&(_ZTI9S19113C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19113C13D1Ev,_ZTv0_n12_N9S19113C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19113C13D0Ev,_ZTv0_n12_N9S19113C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19113C13D1Ev,_ZTv0_n16_N9S19113C13D1Ev)();
extern void ABISELECT(_ZThn1520_N9S19113C13D1Ev,_ZThn796_N9S19113C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19113C13D0Ev,_ZTv0_n16_N9S19113C13D0Ev)();
extern void ABISELECT(_ZThn1520_N9S19113C13D0Ev,_ZThn796_N9S19113C13D0Ev)() __attribute__((weak));
extern void _ZN8S19113C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C5__9S19113C13__9S19113C12[] = {
  0,
  ABISELECT(-1520,-796),
  ABISELECT(496,260),
  ABISELECT(-1520,-796),
  (VTBL_ENTRY)&(_ZTI9S19113C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19113C13D1Ev,_ZTv0_n16_N9S19113C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19113C13D0Ev,_ZTv0_n16_N9S19113C13D0Ev),
  (VTBL_ENTRY)&_ZN8S19113C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19113C13D1Ev,_ZTv0_n12_N9S19113C13D1Ev)();
extern void ABISELECT(_ZThn2016_N9S19113C13D1Ev,_ZThn1056_N9S19113C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19113C13D0Ev,_ZTv0_n12_N9S19113C13D0Ev)();
extern void ABISELECT(_ZThn2016_N9S19113C13D0Ev,_ZThn1056_N9S19113C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19113C6__A1__9S19113C13__9S19113C12[] = {
  ABISELECT(-2016,-1056),
  ABISELECT(-2016,-1056),
  (VTBL_ENTRY)&(_ZTI9S19113C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19113C13D1Ev,_ZTv0_n12_N9S19113C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19113C13D0Ev,_ZTv0_n12_N9S19113C13D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19113C13D1Ev,_ZTv0_n24_N9S19113C13D1Ev)();
extern void ABISELECT(_ZThn2560_N9S19113C13D1Ev,_ZThn1344_N9S19113C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19113C13D0Ev,_ZTv0_n24_N9S19113C13D0Ev)();
extern void ABISELECT(_ZThn2560_N9S19113C13D0Ev,_ZThn1344_N9S19113C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19113C2__9S19113C13__9S19113C12[] = {
  ABISELECT(-2560,-1344),
  ABISELECT(-400,-212),
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  ABISELECT(-2560,-1344),
  (VTBL_ENTRY)&(_ZTI9S19113C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19113C13D1Ev,_ZTv0_n24_N9S19113C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19113C13D0Ev,_ZTv0_n24_N9S19113C13D0Ev),
};
extern void _ZN8S19113C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N9S19113C13D1Ev,_ZTv0_n20_N9S19113C13D1Ev)();
extern void ABISELECT(_ZThn2160_N9S19113C13D1Ev,_ZThn1132_N9S19113C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19113C13D0Ev,_ZTv0_n20_N9S19113C13D0Ev)();
extern void ABISELECT(_ZThn2160_N9S19113C13D0Ev,_ZThn1132_N9S19113C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19113C9__9S19113C13__9S19113C12[] = {
  ABISELECT(-2160,-1132),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-2160,-1132),
  (VTBL_ENTRY)&(_ZTI9S19113C13[0]),
  (VTBL_ENTRY)&_ZN8S19113C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19113C13D1Ev,_ZTv0_n20_N9S19113C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19113C13D0Ev,_ZTv0_n20_N9S19113C13D0Ev),
};
extern void _ZN9S19113C142v4Ev();
static  VTBL_ENTRY _tg__ZTV9S19113C14__9S19113C13__9S19113C12[] = {
  0,
  ABISELECT(-2800,-1512),
  (VTBL_ENTRY)&(_ZTI9S19113C13[0]),
  (VTBL_ENTRY)&_ZN9S19113C142v4Ev,
};
extern void _ZN8S19113C5D1Ev();
extern void _ZN8S19113C5D0Ev();
extern void _ZN8S19113C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C5__9S19113C12[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19113C5[0]),
  (VTBL_ENTRY)&_ZN8S19113C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19113C5D0Ev,
  (VTBL_ENTRY)&_ZN8S19113C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19113C5D1Ev,_ZTv0_n12_N8S19113C5D1Ev)();
extern void ABISELECT(_ZThn496_N8S19113C5D1Ev,_ZThn260_N8S19113C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19113C5D0Ev,_ZTv0_n12_N8S19113C5D0Ev)();
extern void ABISELECT(_ZThn496_N8S19113C5D0Ev,_ZThn260_N8S19113C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19113C6__8S19113C5__9S19113C12[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI8S19113C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C5D1Ev,_ZTv0_n12_N8S19113C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C5D0Ev,_ZTv0_n12_N8S19113C5D0Ev),
};
extern void _ZN8S19113C92v3Ev();
extern void _ZN8S19113C9D1Ev();
extern void _ZN8S19113C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C9__9S19113C12[] = {
  ABISELECT(-144,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19113C9[0]),
  (VTBL_ENTRY)&_ZN8S19113C92v3Ev,
  (VTBL_ENTRY)&_ZN8S19113C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19113C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19113C9D1Ev,_ZTv0_n12_N8S19113C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19113C9D0Ev,_ZTv0_n12_N8S19113C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19113C6__8S19113C9__9S19113C12[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S19113C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C9D1Ev,_ZTv0_n12_N8S19113C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C9D0Ev,_ZTv0_n12_N8S19113C9D0Ev),
};
extern void _ZN8S19113C8D1Ev();
extern void _ZN8S19113C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C8__9S19113C12[] = {
  ABISELECT(256,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S19113C8[0]),
  (VTBL_ENTRY)&_ZN8S19113C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19113C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19113C8D1Ev,_ZTv0_n12_N8S19113C8D1Ev)();
extern void ABISELECT(_ZThn256_N8S19113C8D1Ev,_ZThn132_N8S19113C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19113C8D0Ev,_ZTv0_n12_N8S19113C8D0Ev)();
extern void ABISELECT(_ZThn256_N8S19113C8D0Ev,_ZThn132_N8S19113C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__8S19113C8__9S19113C12[] = {
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  (VTBL_ENTRY)&(_ZTI8S19113C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C8D1Ev,_ZTv0_n12_N8S19113C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C8D0Ev,_ZTv0_n12_N8S19113C8D0Ev),
};
extern void _ZN8S19113C2D1Ev();
extern void _ZN8S19113C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C2__9S19113C12[] = {
  ABISELECT(-400,-212),
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  0,
  (VTBL_ENTRY)&(_ZTI8S19113C2[0]),
  (VTBL_ENTRY)&_ZN8S19113C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19113C2D0Ev,
};
extern void _ZN8S19113C3D1Ev();
extern void _ZN8S19113C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C38S19113C2__9S19113C12[] = {
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  0,
  (VTBL_ENTRY)&(_ZTI8S19113C3[0]),
  (VTBL_ENTRY)&_ZN8S19113C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19113C3D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19113C3D1Ev,_ZTv0_n16_N8S19113C3D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19113C3D0Ev,_ZTv0_n16_N8S19113C3D0Ev)();
extern void _ZN8S19113C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C5__8S19113C38S19113C2__9S19113C12[] = {
  0,
  ABISELECT(1040,548),
  ABISELECT(496,260),
  ABISELECT(1040,548),
  (VTBL_ENTRY)&(_ZTI8S19113C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19113C3D1Ev,_ZTv0_n16_N8S19113C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19113C3D0Ev,_ZTv0_n16_N8S19113C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19113C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19113C3D1Ev,_ZTv0_n12_N8S19113C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19113C3D0Ev,_ZTv0_n12_N8S19113C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19113C6__8S19113C38S19113C2__9S19113C12[] = {
  ABISELECT(544,288),
  ABISELECT(544,288),
  (VTBL_ENTRY)&(_ZTI8S19113C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C3D1Ev,_ZTv0_n12_N8S19113C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C3D0Ev,_ZTv0_n12_N8S19113C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19113C2D1Ev,_ZTv0_n16_N8S19113C2D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19113C2D0Ev,_ZTv0_n16_N8S19113C2D0Ev)();
extern void _ZN8S19113C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C5__8S19113C2__9S19113C12[] = {
  0,
  ABISELECT(1040,548),
  ABISELECT(496,260),
  ABISELECT(1040,548),
  (VTBL_ENTRY)&(_ZTI8S19113C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19113C2D1Ev,_ZTv0_n16_N8S19113C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19113C2D0Ev,_ZTv0_n16_N8S19113C2D0Ev),
  (VTBL_ENTRY)&_ZN8S19113C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19113C2D1Ev,_ZTv0_n12_N8S19113C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19113C2D0Ev,_ZTv0_n12_N8S19113C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19113C6__8S19113C2__9S19113C12[] = {
  ABISELECT(544,288),
  ABISELECT(544,288),
  (VTBL_ENTRY)&(_ZTI8S19113C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C2D1Ev,_ZTv0_n12_N8S19113C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C2D0Ev,_ZTv0_n12_N8S19113C2D0Ev),
};
extern void _ZN8S19113C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N8S19113C2D1Ev,_ZTv0_n20_N8S19113C2D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S19113C2D0Ev,_ZTv0_n20_N8S19113C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19113C9__8S19113C2__9S19113C12[] = {
  ABISELECT(400,212),
  0,
  ABISELECT(-144,-76),
  ABISELECT(400,212),
  (VTBL_ENTRY)&(_ZTI8S19113C2[0]),
  (VTBL_ENTRY)&_ZN8S19113C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19113C2D1Ev,_ZTv0_n20_N8S19113C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19113C2D0Ev,_ZTv0_n20_N8S19113C2D0Ev),
};
static  VTT_ENTRY vtt_S19113C12[] = {
  {&(_ZTV9S19113C12[10]),  10,56},
  {&(_tg__ZTV9S19113C13__9S19113C12[10]),  10,12},
  {&(_tg__ZTV8S19113C8__9S19113C13__9S19113C12[4]),  4,6},
  {&(_tg__ZTV7S8033C7__A1__9S19113C13__9S19113C12[3]),  3,5},
  {&(_tg__ZTV8S19113C5__9S19113C13__9S19113C12[5]),  5,8},
  {&(_tg__ZTV8S19113C6__A1__9S19113C13__9S19113C12[3]),  3,5},
  {&(_tg__ZTV8S19113C2__9S19113C13__9S19113C12[6]),  6,8},
  {&(_tg__ZTV8S19113C9__9S19113C13__9S19113C12[5]),  5,8},
  {&(_tg__ZTV9S19113C14__9S19113C13__9S19113C12[3]),  3,4},
  {&(_ZTV9S19113C12[17]),  17,56},
  {&(_ZTV9S19113C12[23]),  23,56},
  {&(_ZTV9S19113C12[30]),  30,56},
  {&(_ZTV9S19113C12[37]),  37,56},
  {&(_ZTV9S19113C12[42]),  42,56},
  {&(_ZTV9S19113C12[50]),  50,56},
  {&(_ZTV9S19113C12[55]),  55,56},
  {&(_tg__ZTV8S19113C5__9S19113C12[3]),  3,6},
  {&(_tg__ZTV8S19113C6__8S19113C5__9S19113C12[3]),  3,5},
  {&(_tg__ZTV8S19113C9__9S19113C12[3]),  3,6},
  {&(_tg__ZTV8S19113C6__8S19113C9__9S19113C12[3]),  3,5},
  {&(_tg__ZTV8S19113C8__9S19113C12[3]),  3,5},
  {&(_tg__ZTV7S8033C7__A1__8S19113C8__9S19113C12[3]),  3,5},
  {&(_tg__ZTV8S19113C2__9S19113C12[5]),  5,7},
  {&(_tg__ZTV8S19113C38S19113C2__9S19113C12[4]),  4,6},
  {&(_tg__ZTV8S19113C5__8S19113C38S19113C2__9S19113C12[5]),  5,8},
  {&(_tg__ZTV8S19113C6__8S19113C38S19113C2__9S19113C12[3]),  3,5},
  {&(_tg__ZTV8S19113C5__8S19113C2__9S19113C12[5]),  5,8},
  {&(_tg__ZTV8S19113C6__8S19113C2__9S19113C12[3]),  3,5},
  {&(_tg__ZTV8S19113C9__8S19113C2__9S19113C12[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S19113C12[];
extern  VTBL_ENTRY _ZTV9S19113C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19113C12[];
static VTBL_ENTRY alt_thunk_names69[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19113C8D0Ev,_ZTv0_n12_N8S19113C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19113C8D0Ev,_ZThn132_N8S19113C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19113C8D1Ev,_ZTv0_n12_N8S19113C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19113C8D1Ev,_ZThn132_N8S19113C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19113C5D0Ev,_ZTv0_n12_N8S19113C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19113C5D0Ev,_ZThn260_N8S19113C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19113C5D1Ev,_ZTv0_n12_N8S19113C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19113C5D1Ev,_ZThn260_N8S19113C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19113C13D0Ev,_ZTv0_n20_N9S19113C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N9S19113C13D0Ev,_ZThn1132_N9S19113C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19113C13D1Ev,_ZTv0_n20_N9S19113C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N9S19113C13D1Ev,_ZThn1132_N9S19113C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19113C13D0Ev,_ZTv0_n24_N9S19113C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N9S19113C13D0Ev,_ZThn1344_N9S19113C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19113C13D1Ev,_ZTv0_n24_N9S19113C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N9S19113C13D1Ev,_ZThn1344_N9S19113C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19113C13D0Ev,_ZTv0_n12_N9S19113C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2016_N9S19113C13D0Ev,_ZThn1056_N9S19113C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2464_N9S19113C13D0Ev,_ZThn1292_N9S19113C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19113C13D1Ev,_ZTv0_n12_N9S19113C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2016_N9S19113C13D1Ev,_ZThn1056_N9S19113C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2464_N9S19113C13D1Ev,_ZThn1292_N9S19113C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19113C13D0Ev,_ZTv0_n16_N9S19113C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N9S19113C13D0Ev,_ZThn796_N9S19113C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2208_N9S19113C13D0Ev,_ZThn1160_N9S19113C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19113C13D1Ev,_ZTv0_n16_N9S19113C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N9S19113C13D1Ev,_ZThn796_N9S19113C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2208_N9S19113C13D1Ev,_ZThn1160_N9S19113C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19113C12D0Ev,_ZTv0_n24_N9S19113C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N9S19113C12D0Ev,_ZThn1344_N9S19113C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19113C12D1Ev,_ZTv0_n24_N9S19113C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N9S19113C12D1Ev,_ZThn1344_N9S19113C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19113C12D0Ev,_ZTv0_n20_N9S19113C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N9S19113C12D0Ev,_ZThn1132_N9S19113C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19113C12D1Ev,_ZTv0_n20_N9S19113C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N9S19113C12D1Ev,_ZThn1132_N9S19113C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19113C12D0Ev,_ZTv0_n12_N9S19113C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2464_N9S19113C12D0Ev,_ZThn1292_N9S19113C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2016_N9S19113C12D0Ev,_ZThn1056_N9S19113C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19113C12D1Ev,_ZTv0_n12_N9S19113C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2464_N9S19113C12D1Ev,_ZThn1292_N9S19113C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2016_N9S19113C12D1Ev,_ZThn1056_N9S19113C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19113C12D0Ev,_ZTv0_n16_N9S19113C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2208_N9S19113C12D0Ev,_ZThn1160_N9S19113C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N9S19113C12D0Ev,_ZThn796_N9S19113C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19113C12D1Ev,_ZTv0_n16_N9S19113C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2208_N9S19113C12D1Ev,_ZThn1160_N9S19113C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N9S19113C12D1Ev,_ZThn796_N9S19113C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19113C12 = {  "S19113C12", // class name
  bases_S19113C12, 16,
  &(vtc_S19113C12[0]), // expected_vtbl_contents
  &(vtt_S19113C12[0]), // expected_vtt_contents
  ABISELECT(2992,1608), // object size
  NSPAIRA(_ZTI9S19113C12),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19113C12),56, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19113C12),29, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names69,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19113C10  : virtual S8033C4 , virtual S19113C12 , S19113C14 , S8033C7 {
  ::S19113C14 s19113c10f0;
  int s19113c10f1;
  char s19113c10f2[6];
  long double s19113c10f3;
  int s19113c10f4;
  __tsi64 s19113c10f5;
  virtual void  v5(); // _ZN9S19113C102v5Ev
  ~S19113C10(); // tgen
  S19113C10(); // tgen
};
//SIG(-1 S19113C10) C1{ VBC2{ m Fp[3] FL[8]} VBC3{ VBC4{ BC5{ vd m Fc Fc:0 Fl[8] FD} VBC6{ BC5 Fp FC7{} Fp FD} vd v2 Fi Fc Fp Fi Fp[2] FC8{ BC6 VBC5 vd FC5 Fp}} BC2 VBC9{ VBC6 v3 Fc Fs FD Fp[2]} BC10{ VBC8 VBC4 VBC11{ BC12{ BC5 VBC4 vd Fp FL[2] Fc Fp Fi} VBC9 vd Fc Fi:32} VBC2 VBC13{ v4 FD Fp FC5 FL FD Fi} vd Fp FC13[3] FC13 Fc} FC13 Fp FL[2] Fi:31 Fi FC7 FC13 FC13 Fp} BC13 BC5 v1 FC13 Fi Fc[6] FD Fi FL}


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

static void Test_S19113C10()
{
  extern Class_Descriptor cd_S19113C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(222,473)];
    init_test(&cd_S19113C10, buf);
    S19113C10 *dp, &lv = *(dp=new (buf) S19113C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(3536,1888), "sizeof(S19113C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19113C10)");
    /*is_ambiguous_... S19113C10::S8033C4 */ AMB_check_base_class_offset(lv, (S8033C4*), ABISELECT(528,280), "S19113C10");
    check_base_class_offset(lv, (S8033C4*)(S19113C13*)(S19113C12*), ABISELECT(528,280), "S19113C10");
    /*is_ambiguous_... S19113C5::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19113C5*), ABISELECT(2144,1152), "S19113C10");
    /*is_ambiguous_... S19113C10::S19113C6 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19113C6*), ABISELECT(2640,1412), "S19113C10");
    check_base_class_offset(lv, (S19113C6*)(S19113C5*), ABISELECT(2640,1412), "S19113C10");
    check_base_class_offset(lv, (S19113C6*)(S19113C9*), ABISELECT(2640,1412), "S19113C10");
    check_base_class_offset(lv, (S19113C5*)(S19113C12*), ABISELECT(2144,1152), "S19113C10");
    check_base_class_offset(lv, (S19113C5*)(S19113C13*)(S19113C12*), ABISELECT(2144,1152), "S19113C10");
    check_base_class_offset(lv, (S19113C5*)(S19113C3*)(S19113C2*), ABISELECT(2144,1152), "S19113C10");
    /*is_ambiguous_... S19113C12::S8033C4 */ AMB_check_base_class_offset(lv, (S8033C4*)(S19113C12*), ABISELECT(1416,752), "S19113C10");
    check_base_class_offset(lv, (S19113C9*)(S19113C12*), ABISELECT(2784,1488), "S19113C10");
    check_base_class_offset(lv, (S19113C9*)(S19113C2*), ABISELECT(2784,1488), "S19113C10");
    check_base_class_offset(lv, (S8033C7*)(S19113C6*)(S19113C8*), ABISELECT(2832,1516), "S19113C10");
    check_base_class_offset(lv, (S19113C6*)(S19113C8*), ABISELECT(2832,1516), "S19113C10");
    /*is_ambiguous_... S19113C8::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19113C8*), ABISELECT(3088,1648), "S19113C10");
    check_base_class_offset(lv, (S19113C8*)(S19113C13*)(S19113C12*), ABISELECT(2832,1516), "S19113C10");
    /*is_ambiguous_... S19113C3::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19113C3*)(S19113C2*), ABISELECT(3184,1700), "S19113C10");
    check_base_class_offset(lv, (S19113C3*)(S19113C2*), ABISELECT(3184,1700), "S19113C10");
    check_base_class_offset(lv, (S19113C2*)(S19113C13*)(S19113C12*), ABISELECT(3184,1700), "S19113C10");
    check_base_class_offset(lv, (S19113C14*)(S19113C13*)(S19113C12*), ABISELECT(3344,1792), "S19113C10");
    check_base_class_offset(lv, (S19113C13*)(S19113C12*), ABISELECT(624,356), "S19113C10");
    check_base_class_offset(lv, (S19113C12*), ABISELECT(624,356), "S19113C10");
    /*is_ambiguous_... S19113C10::S19113C14 */ AMB_check_base_class_offset(lv, (S19113C14*), 0, "S19113C10");
    /*is_ambiguous_... S19113C10::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*), ABISELECT(192,96), "S19113C10");
    check_field_offset(lv, s19113c10f0, ABISELECT(288,148), "S19113C10.s19113c10f0");
    check_field_offset(lv, s19113c10f1, ABISELECT(480,244), "S19113C10.s19113c10f1");
    check_field_offset(lv, s19113c10f2, ABISELECT(484,248), "S19113C10.s19113c10f2");
    check_field_offset(lv, s19113c10f3, ABISELECT(496,256), "S19113C10.s19113c10f3");
    check_field_offset(lv, s19113c10f4, ABISELECT(512,268), "S19113C10.s19113c10f4");
    check_field_offset(lv, s19113c10f5, ABISELECT(520,272), "S19113C10.s19113c10f5");
    test_class_info(&lv, &cd_S19113C10);
    dp->~S19113C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19113C10(Test_S19113C10, "S19113C10", ABISELECT(3536,1888));

#else // __cplusplus

extern void _ZN9S19113C10C1Ev();
extern void _ZN9S19113C10D1Ev();
Name_Map name_map_S19113C10[] = {
  NSPAIR(_ZN9S19113C10C1Ev),
  NSPAIR(_ZN9S19113C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C4;
extern VTBL_ENTRY _ZTI7S8033C4[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19113C6;
extern VTBL_ENTRY _ZTI8S19113C6[];
extern  VTBL_ENTRY _ZTV8S19113C6[];
extern Class_Descriptor cd_S19113C5;
extern VTBL_ENTRY _ZTI8S19113C5[];
extern  VTBL_ENTRY _ZTV8S19113C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19113C5[];
extern Class_Descriptor cd_S8033C4;
extern VTBL_ENTRY _ZTI7S8033C4[];
extern Class_Descriptor cd_S19113C9;
extern VTBL_ENTRY _ZTI8S19113C9[];
extern  VTBL_ENTRY _ZTV8S19113C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19113C9[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19113C6;
extern VTBL_ENTRY _ZTI8S19113C6[];
extern  VTBL_ENTRY _ZTV8S19113C6[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19113C8;
extern VTBL_ENTRY _ZTI8S19113C8[];
extern  VTBL_ENTRY _ZTV8S19113C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19113C8[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19113C3;
extern VTBL_ENTRY _ZTI8S19113C3[];
extern  VTBL_ENTRY _ZTV8S19113C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19113C3[];
extern Class_Descriptor cd_S19113C2;
extern VTBL_ENTRY _ZTI8S19113C2[];
extern  VTBL_ENTRY _ZTV8S19113C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19113C2[];
extern Class_Descriptor cd_S19113C14;
extern VTBL_ENTRY _ZTI9S19113C14[];
extern  VTBL_ENTRY _ZTV9S19113C14[];
extern Class_Descriptor cd_S19113C13;
extern VTBL_ENTRY _ZTI9S19113C13[];
extern  VTBL_ENTRY _ZTV9S19113C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19113C13[];
extern Class_Descriptor cd_S19113C12;
extern VTBL_ENTRY _ZTI9S19113C12[];
extern  VTBL_ENTRY _ZTV9S19113C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19113C12[];
extern Class_Descriptor cd_S19113C14;
extern VTBL_ENTRY _ZTI9S19113C14[];
extern  VTBL_ENTRY _ZTV9S19113C14[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
static Base_Class bases_S19113C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C4,    ABISELECT(528,280), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C7,    ABISELECT(2144,1152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(2640,1412), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19113C6,    ABISELECT(2640,1412), //bcp->offset
    40, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19113C5,    ABISELECT(2144,1152), //bcp->offset
    32, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S8033C4,    ABISELECT(1416,752), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19113C9,    ABISELECT(2784,1488), //bcp->offset
    45, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S8033C7,    ABISELECT(2832,1516), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19113C6,    ABISELECT(2832,1516), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(3088,1648), //bcp->offset
    59, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19113C8,    ABISELECT(2832,1516), //bcp->offset
    53, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S8033C7,    ABISELECT(3184,1700), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19113C3,    ABISELECT(3184,1700), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19113C2,    ABISELECT(3184,1700), //bcp->offset
    64, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19113C14,    ABISELECT(3344,1792), //bcp->offset
    72, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19113C13,    ABISELECT(624,356), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19113C12,    ABISELECT(624,356), //bcp->offset
    19, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19113C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S8033C7,    ABISELECT(192,96), //bcp->offset
    15, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19113C10[];
extern void _ZN9S19113C142v4Ev();
extern void _ZN9S19113C102v5Ev();
extern void _ZN9S19113C10D1Ev();
extern void _ZN9S19113C10D0Ev();
extern void ABISELECT(_ZThn192_N9S19113C10D1Ev,_ZThn96_N9S19113C10D1Ev)();
extern void ABISELECT(_ZThn192_N9S19113C10D0Ev,_ZThn96_N9S19113C10D0Ev)();
extern void ABISELECT(_ZTv0_n88_N9S19113C10D1Ev,_ZTv0_n44_N9S19113C10D1Ev)();
extern void ABISELECT(_ZThn624_N9S19113C10D1Ev,_ZThn356_N9S19113C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19113C10D0Ev,_ZTv0_n44_N9S19113C10D0Ev)();
extern void ABISELECT(_ZThn624_N9S19113C10D0Ev,_ZThn356_N9S19113C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19113C10D1Ev,_ZTv0_n16_N9S19113C10D1Ev)();
extern void ABISELECT(_ZThn2144_N9S19113C10D1Ev,_ZThn1152_N9S19113C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19113C10D0Ev,_ZTv0_n16_N9S19113C10D0Ev)();
extern void ABISELECT(_ZThn2144_N9S19113C10D0Ev,_ZThn1152_N9S19113C10D0Ev)() __attribute__((weak));
extern void _ZN8S19113C52v2Ev();
extern void ABISELECT(_ZTv0_n24_N9S19113C10D1Ev,_ZTv0_n12_N9S19113C10D1Ev)();
extern void ABISELECT(_ZThn2640_N9S19113C10D1Ev,_ZThn1412_N9S19113C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19113C10D0Ev,_ZTv0_n12_N9S19113C10D0Ev)();
extern void ABISELECT(_ZThn2640_N9S19113C10D0Ev,_ZThn1412_N9S19113C10D0Ev)() __attribute__((weak));
extern void _ZN8S19113C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N9S19113C10D1Ev,_ZTv0_n20_N9S19113C10D1Ev)();
extern void ABISELECT(_ZThn2784_N9S19113C10D1Ev,_ZThn1488_N9S19113C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19113C10D0Ev,_ZTv0_n20_N9S19113C10D0Ev)();
extern void ABISELECT(_ZThn2784_N9S19113C10D0Ev,_ZThn1488_N9S19113C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19113C10D1Ev,_ZTv0_n16_N9S19113C10D1Ev)();
extern void ABISELECT(_ZThn2832_N9S19113C10D1Ev,_ZThn1516_N9S19113C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19113C10D0Ev,_ZTv0_n16_N9S19113C10D0Ev)();
extern void ABISELECT(_ZThn2832_N9S19113C10D0Ev,_ZThn1516_N9S19113C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19113C10D1Ev,_ZTv0_n12_N9S19113C10D1Ev)();
extern void ABISELECT(_ZThn3088_N9S19113C10D1Ev,_ZThn1648_N9S19113C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19113C10D0Ev,_ZTv0_n12_N9S19113C10D0Ev)();
extern void ABISELECT(_ZThn3088_N9S19113C10D0Ev,_ZThn1648_N9S19113C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19113C10D1Ev,_ZTv0_n24_N9S19113C10D1Ev)();
extern void ABISELECT(_ZThn3184_N9S19113C10D1Ev,_ZThn1700_N9S19113C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19113C10D0Ev,_ZTv0_n24_N9S19113C10D0Ev)();
extern void ABISELECT(_ZThn3184_N9S19113C10D0Ev,_ZThn1700_N9S19113C10D0Ev)() __attribute__((weak));
extern void _ZN9S19113C142v4Ev();
static  VTBL_ENTRY vtc_S19113C10[] = {
  ABISELECT(3344,1792),
  ABISELECT(3184,1700),
  ABISELECT(3088,1648),
  ABISELECT(2832,1516),
  ABISELECT(2784,1488),
  ABISELECT(2640,1412),
  ABISELECT(2144,1152),
  ABISELECT(624,356),
  ABISELECT(528,280),
  0,
  (VTBL_ENTRY)&(_ZTI9S19113C10[0]),
  (VTBL_ENTRY)&_ZN9S19113C142v4Ev,
  (VTBL_ENTRY)&_ZN9S19113C102v5Ev,
  (VTBL_ENTRY)&_ZN9S19113C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19113C10D0Ev,
  ABISELECT(-192,-96),
  (VTBL_ENTRY)&(_ZTI9S19113C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn192_N9S19113C10D1Ev,_ZThn96_N9S19113C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn192_N9S19113C10D0Ev,_ZThn96_N9S19113C10D0Ev),
  ABISELECT(-624,-356),
  ABISELECT(2720,1436),
  ABISELECT(-96,-76),
  ABISELECT(2160,1132),
  ABISELECT(2560,1344),
  ABISELECT(2016,1056),
  ABISELECT(1520,796),
  ABISELECT(2464,1292),
  ABISELECT(2208,1160),
  ABISELECT(-624,-356),
  (VTBL_ENTRY)&(_ZTI9S19113C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19113C10D1Ev,_ZTv0_n44_N9S19113C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19113C10D0Ev,_ZTv0_n44_N9S19113C10D0Ev),
  0,
  ABISELECT(-2144,-1152),
  ABISELECT(496,260),
  ABISELECT(-2144,-1152),
  (VTBL_ENTRY)&(_ZTI9S19113C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19113C10D1Ev,_ZTv0_n16_N9S19113C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19113C10D0Ev,_ZTv0_n16_N9S19113C10D0Ev),
  (VTBL_ENTRY)&_ZN8S19113C52v2Ev,
  ABISELECT(-2640,-1412),
  ABISELECT(-2640,-1412),
  (VTBL_ENTRY)&(_ZTI9S19113C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19113C10D1Ev,_ZTv0_n12_N9S19113C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19113C10D0Ev,_ZTv0_n12_N9S19113C10D0Ev),
  ABISELECT(-2784,-1488),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-2784,-1488),
  (VTBL_ENTRY)&(_ZTI9S19113C10[0]),
  (VTBL_ENTRY)&_ZN8S19113C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19113C10D1Ev,_ZTv0_n20_N9S19113C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19113C10D0Ev,_ZTv0_n20_N9S19113C10D0Ev),
  ABISELECT(-2832,-1516),
  ABISELECT(256,132),
  ABISELECT(-2832,-1516),
  (VTBL_ENTRY)&(_ZTI9S19113C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19113C10D1Ev,_ZTv0_n16_N9S19113C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19113C10D0Ev,_ZTv0_n16_N9S19113C10D0Ev),
  ABISELECT(-3088,-1648),
  ABISELECT(-3088,-1648),
  (VTBL_ENTRY)&(_ZTI9S19113C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19113C10D1Ev,_ZTv0_n12_N9S19113C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19113C10D0Ev,_ZTv0_n12_N9S19113C10D0Ev),
  ABISELECT(-3184,-1700),
  ABISELECT(-400,-212),
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  ABISELECT(-3184,-1700),
  (VTBL_ENTRY)&(_ZTI9S19113C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19113C10D1Ev,_ZTv0_n24_N9S19113C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19113C10D0Ev,_ZTv0_n24_N9S19113C10D0Ev),
  0,
  ABISELECT(-3344,-1792),
  (VTBL_ENTRY)&(_ZTI9S19113C10[0]),
  (VTBL_ENTRY)&_ZN9S19113C142v4Ev,
};
extern VTBL_ENTRY _ZTV9S19113C10[];
extern void _ZN9S19113C12D1Ev();
extern void _ZN9S19113C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19113C12__9S19113C10[] = {
  ABISELECT(2720,1436),
  ABISELECT(-96,-76),
  ABISELECT(2160,1132),
  ABISELECT(2560,1344),
  ABISELECT(2016,1056),
  ABISELECT(1520,796),
  ABISELECT(2464,1292),
  ABISELECT(2208,1160),
  0,
  (VTBL_ENTRY)&(_ZTI9S19113C12[0]),
  (VTBL_ENTRY)&_ZN9S19113C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19113C12D0Ev,
};
extern void _ZN9S19113C13D1Ev();
extern void _ZN9S19113C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19113C139S19113C12__9S19113C10[] = {
  ABISELECT(2720,1436),
  ABISELECT(-96,-76),
  ABISELECT(2160,1132),
  ABISELECT(2560,1344),
  ABISELECT(2016,1056),
  ABISELECT(1520,796),
  ABISELECT(2464,1292),
  ABISELECT(2208,1160),
  0,
  (VTBL_ENTRY)&(_ZTI9S19113C13[0]),
  (VTBL_ENTRY)&_ZN9S19113C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19113C13D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19113C13D1Ev,_ZTv0_n16_N9S19113C13D1Ev)();
extern void ABISELECT(_ZThn2208_N9S19113C13D1Ev,_ZThn1160_N9S19113C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19113C13D0Ev,_ZTv0_n16_N9S19113C13D0Ev)();
extern void ABISELECT(_ZThn2208_N9S19113C13D0Ev,_ZThn1160_N9S19113C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19113C8__9S19113C139S19113C12__9S19113C10[] = {
  ABISELECT(-2208,-1160),
  ABISELECT(256,132),
  ABISELECT(-2208,-1160),
  (VTBL_ENTRY)&(_ZTI9S19113C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19113C13D1Ev,_ZTv0_n16_N9S19113C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19113C13D0Ev,_ZTv0_n16_N9S19113C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19113C13D1Ev,_ZTv0_n12_N9S19113C13D1Ev)();
extern void ABISELECT(_ZThn2464_N9S19113C13D1Ev,_ZThn1292_N9S19113C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19113C13D0Ev,_ZTv0_n12_N9S19113C13D0Ev)();
extern void ABISELECT(_ZThn2464_N9S19113C13D0Ev,_ZThn1292_N9S19113C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__9S19113C139S19113C12__9S19113C10[] = {
  ABISELECT(-2464,-1292),
  ABISELECT(-2464,-1292),
  (VTBL_ENTRY)&(_ZTI9S19113C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19113C13D1Ev,_ZTv0_n12_N9S19113C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19113C13D0Ev,_ZTv0_n12_N9S19113C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19113C13D1Ev,_ZTv0_n16_N9S19113C13D1Ev)();
extern void ABISELECT(_ZThn1520_N9S19113C13D1Ev,_ZThn796_N9S19113C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19113C13D0Ev,_ZTv0_n16_N9S19113C13D0Ev)();
extern void ABISELECT(_ZThn1520_N9S19113C13D0Ev,_ZThn796_N9S19113C13D0Ev)() __attribute__((weak));
extern void _ZN8S19113C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C5__9S19113C139S19113C12__9S19113C10[] = {
  0,
  ABISELECT(-1520,-796),
  ABISELECT(496,260),
  ABISELECT(-1520,-796),
  (VTBL_ENTRY)&(_ZTI9S19113C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19113C13D1Ev,_ZTv0_n16_N9S19113C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19113C13D0Ev,_ZTv0_n16_N9S19113C13D0Ev),
  (VTBL_ENTRY)&_ZN8S19113C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19113C13D1Ev,_ZTv0_n12_N9S19113C13D1Ev)();
extern void ABISELECT(_ZThn2016_N9S19113C13D1Ev,_ZThn1056_N9S19113C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19113C13D0Ev,_ZTv0_n12_N9S19113C13D0Ev)();
extern void ABISELECT(_ZThn2016_N9S19113C13D0Ev,_ZThn1056_N9S19113C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19113C6__A1__9S19113C139S19113C12__9S19113C10[] = {
  ABISELECT(-2016,-1056),
  ABISELECT(-2016,-1056),
  (VTBL_ENTRY)&(_ZTI9S19113C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19113C13D1Ev,_ZTv0_n12_N9S19113C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19113C13D0Ev,_ZTv0_n12_N9S19113C13D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19113C13D1Ev,_ZTv0_n24_N9S19113C13D1Ev)();
extern void ABISELECT(_ZThn2560_N9S19113C13D1Ev,_ZThn1344_N9S19113C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19113C13D0Ev,_ZTv0_n24_N9S19113C13D0Ev)();
extern void ABISELECT(_ZThn2560_N9S19113C13D0Ev,_ZThn1344_N9S19113C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19113C2__9S19113C139S19113C12__9S19113C10[] = {
  ABISELECT(-2560,-1344),
  ABISELECT(-400,-212),
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  ABISELECT(-2560,-1344),
  (VTBL_ENTRY)&(_ZTI9S19113C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19113C13D1Ev,_ZTv0_n24_N9S19113C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19113C13D0Ev,_ZTv0_n24_N9S19113C13D0Ev),
};
extern void _ZN8S19113C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N9S19113C13D1Ev,_ZTv0_n20_N9S19113C13D1Ev)();
extern void ABISELECT(_ZThn2160_N9S19113C13D1Ev,_ZThn1132_N9S19113C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19113C13D0Ev,_ZTv0_n20_N9S19113C13D0Ev)();
extern void ABISELECT(_ZThn2160_N9S19113C13D0Ev,_ZThn1132_N9S19113C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19113C9__9S19113C139S19113C12__9S19113C10[] = {
  ABISELECT(-2160,-1132),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-2160,-1132),
  (VTBL_ENTRY)&(_ZTI9S19113C13[0]),
  (VTBL_ENTRY)&_ZN8S19113C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19113C13D1Ev,_ZTv0_n20_N9S19113C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19113C13D0Ev,_ZTv0_n20_N9S19113C13D0Ev),
};
extern void _ZN9S19113C142v4Ev();
static  VTBL_ENTRY _tg__ZTV9S19113C14__9S19113C139S19113C12__9S19113C10[] = {
  0,
  ABISELECT(-2720,-1436),
  (VTBL_ENTRY)&(_ZTI9S19113C13[0]),
  (VTBL_ENTRY)&_ZN9S19113C142v4Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19113C12D1Ev,_ZTv0_n16_N9S19113C12D1Ev)();
extern void ABISELECT(_ZThn1520_N9S19113C12D1Ev,_ZThn796_N9S19113C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19113C12D0Ev,_ZTv0_n16_N9S19113C12D0Ev)();
extern void ABISELECT(_ZThn1520_N9S19113C12D0Ev,_ZThn796_N9S19113C12D0Ev)() __attribute__((weak));
extern void _ZN8S19113C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C5__9S19113C12__9S19113C10[] = {
  0,
  ABISELECT(-1520,-796),
  ABISELECT(496,260),
  ABISELECT(-1520,-796),
  (VTBL_ENTRY)&(_ZTI9S19113C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19113C12D1Ev,_ZTv0_n16_N9S19113C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19113C12D0Ev,_ZTv0_n16_N9S19113C12D0Ev),
  (VTBL_ENTRY)&_ZN8S19113C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19113C12D1Ev,_ZTv0_n12_N9S19113C12D1Ev)();
extern void ABISELECT(_ZThn2016_N9S19113C12D1Ev,_ZThn1056_N9S19113C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19113C12D0Ev,_ZTv0_n12_N9S19113C12D0Ev)();
extern void ABISELECT(_ZThn2016_N9S19113C12D0Ev,_ZThn1056_N9S19113C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19113C6__9S19113C12__9S19113C10[] = {
  ABISELECT(-2016,-1056),
  ABISELECT(-2016,-1056),
  (VTBL_ENTRY)&(_ZTI9S19113C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19113C12D1Ev,_ZTv0_n12_N9S19113C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19113C12D0Ev,_ZTv0_n12_N9S19113C12D0Ev),
};
extern void _ZN8S19113C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N9S19113C12D1Ev,_ZTv0_n20_N9S19113C12D1Ev)();
extern void ABISELECT(_ZThn2160_N9S19113C12D1Ev,_ZThn1132_N9S19113C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19113C12D0Ev,_ZTv0_n20_N9S19113C12D0Ev)();
extern void ABISELECT(_ZThn2160_N9S19113C12D0Ev,_ZThn1132_N9S19113C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19113C9__9S19113C12__9S19113C10[] = {
  ABISELECT(-2160,-1132),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-2160,-1132),
  (VTBL_ENTRY)&(_ZTI9S19113C12[0]),
  (VTBL_ENTRY)&_ZN8S19113C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19113C12D1Ev,_ZTv0_n20_N9S19113C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19113C12D0Ev,_ZTv0_n20_N9S19113C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19113C12D1Ev,_ZTv0_n16_N9S19113C12D1Ev)();
extern void ABISELECT(_ZThn2208_N9S19113C12D1Ev,_ZThn1160_N9S19113C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19113C12D0Ev,_ZTv0_n16_N9S19113C12D0Ev)();
extern void ABISELECT(_ZThn2208_N9S19113C12D0Ev,_ZThn1160_N9S19113C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19113C8__9S19113C12__9S19113C10[] = {
  ABISELECT(-2208,-1160),
  ABISELECT(256,132),
  ABISELECT(-2208,-1160),
  (VTBL_ENTRY)&(_ZTI9S19113C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19113C12D1Ev,_ZTv0_n16_N9S19113C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19113C12D0Ev,_ZTv0_n16_N9S19113C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19113C12D1Ev,_ZTv0_n12_N9S19113C12D1Ev)();
extern void ABISELECT(_ZThn2464_N9S19113C12D1Ev,_ZThn1292_N9S19113C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19113C12D0Ev,_ZTv0_n12_N9S19113C12D0Ev)();
extern void ABISELECT(_ZThn2464_N9S19113C12D0Ev,_ZThn1292_N9S19113C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A3__9S19113C12__9S19113C10[] = {
  ABISELECT(-2464,-1292),
  ABISELECT(-2464,-1292),
  (VTBL_ENTRY)&(_ZTI9S19113C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19113C12D1Ev,_ZTv0_n12_N9S19113C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19113C12D0Ev,_ZTv0_n12_N9S19113C12D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19113C12D1Ev,_ZTv0_n24_N9S19113C12D1Ev)();
extern void ABISELECT(_ZThn2560_N9S19113C12D1Ev,_ZThn1344_N9S19113C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19113C12D0Ev,_ZTv0_n24_N9S19113C12D0Ev)();
extern void ABISELECT(_ZThn2560_N9S19113C12D0Ev,_ZThn1344_N9S19113C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19113C2__9S19113C12__9S19113C10[] = {
  ABISELECT(-2560,-1344),
  ABISELECT(-400,-212),
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  ABISELECT(-2560,-1344),
  (VTBL_ENTRY)&(_ZTI9S19113C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19113C12D1Ev,_ZTv0_n24_N9S19113C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19113C12D0Ev,_ZTv0_n24_N9S19113C12D0Ev),
};
extern void _ZN9S19113C142v4Ev();
static  VTBL_ENTRY _tg__ZTV9S19113C14__9S19113C12__9S19113C10[] = {
  0,
  ABISELECT(-2720,-1436),
  (VTBL_ENTRY)&(_ZTI9S19113C12[0]),
  (VTBL_ENTRY)&_ZN9S19113C142v4Ev,
};
extern void _ZN8S19113C5D1Ev();
extern void _ZN8S19113C5D0Ev();
extern void _ZN8S19113C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C5__9S19113C10[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19113C5[0]),
  (VTBL_ENTRY)&_ZN8S19113C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19113C5D0Ev,
  (VTBL_ENTRY)&_ZN8S19113C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19113C5D1Ev,_ZTv0_n12_N8S19113C5D1Ev)();
extern void ABISELECT(_ZThn496_N8S19113C5D1Ev,_ZThn260_N8S19113C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19113C5D0Ev,_ZTv0_n12_N8S19113C5D0Ev)();
extern void ABISELECT(_ZThn496_N8S19113C5D0Ev,_ZThn260_N8S19113C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19113C6__8S19113C5__9S19113C10[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI8S19113C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C5D1Ev,_ZTv0_n12_N8S19113C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C5D0Ev,_ZTv0_n12_N8S19113C5D0Ev),
};
extern void _ZN8S19113C92v3Ev();
extern void _ZN8S19113C9D1Ev();
extern void _ZN8S19113C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C9__9S19113C10[] = {
  ABISELECT(-144,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19113C9[0]),
  (VTBL_ENTRY)&_ZN8S19113C92v3Ev,
  (VTBL_ENTRY)&_ZN8S19113C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19113C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19113C9D1Ev,_ZTv0_n12_N8S19113C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19113C9D0Ev,_ZTv0_n12_N8S19113C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19113C6__8S19113C9__9S19113C10[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S19113C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C9D1Ev,_ZTv0_n12_N8S19113C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C9D0Ev,_ZTv0_n12_N8S19113C9D0Ev),
};
extern void _ZN8S19113C8D1Ev();
extern void _ZN8S19113C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C8__9S19113C10[] = {
  ABISELECT(256,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S19113C8[0]),
  (VTBL_ENTRY)&_ZN8S19113C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19113C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19113C8D1Ev,_ZTv0_n12_N8S19113C8D1Ev)();
extern void ABISELECT(_ZThn256_N8S19113C8D1Ev,_ZThn132_N8S19113C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19113C8D0Ev,_ZTv0_n12_N8S19113C8D0Ev)();
extern void ABISELECT(_ZThn256_N8S19113C8D0Ev,_ZThn132_N8S19113C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__8S19113C8__9S19113C10[] = {
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  (VTBL_ENTRY)&(_ZTI8S19113C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C8D1Ev,_ZTv0_n12_N8S19113C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C8D0Ev,_ZTv0_n12_N8S19113C8D0Ev),
};
extern void _ZN8S19113C2D1Ev();
extern void _ZN8S19113C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C2__9S19113C10[] = {
  ABISELECT(-400,-212),
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  0,
  (VTBL_ENTRY)&(_ZTI8S19113C2[0]),
  (VTBL_ENTRY)&_ZN8S19113C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19113C2D0Ev,
};
extern void _ZN8S19113C3D1Ev();
extern void _ZN8S19113C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C38S19113C2__9S19113C10[] = {
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  0,
  (VTBL_ENTRY)&(_ZTI8S19113C3[0]),
  (VTBL_ENTRY)&_ZN8S19113C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19113C3D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19113C3D1Ev,_ZTv0_n16_N8S19113C3D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19113C3D0Ev,_ZTv0_n16_N8S19113C3D0Ev)();
extern void _ZN8S19113C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C5__8S19113C38S19113C2__9S19113C10[] = {
  0,
  ABISELECT(1040,548),
  ABISELECT(496,260),
  ABISELECT(1040,548),
  (VTBL_ENTRY)&(_ZTI8S19113C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19113C3D1Ev,_ZTv0_n16_N8S19113C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19113C3D0Ev,_ZTv0_n16_N8S19113C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19113C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19113C3D1Ev,_ZTv0_n12_N8S19113C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19113C3D0Ev,_ZTv0_n12_N8S19113C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19113C6__8S19113C38S19113C2__9S19113C10[] = {
  ABISELECT(544,288),
  ABISELECT(544,288),
  (VTBL_ENTRY)&(_ZTI8S19113C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C3D1Ev,_ZTv0_n12_N8S19113C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C3D0Ev,_ZTv0_n12_N8S19113C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19113C2D1Ev,_ZTv0_n16_N8S19113C2D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19113C2D0Ev,_ZTv0_n16_N8S19113C2D0Ev)();
extern void _ZN8S19113C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C5__8S19113C2__9S19113C10[] = {
  0,
  ABISELECT(1040,548),
  ABISELECT(496,260),
  ABISELECT(1040,548),
  (VTBL_ENTRY)&(_ZTI8S19113C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19113C2D1Ev,_ZTv0_n16_N8S19113C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19113C2D0Ev,_ZTv0_n16_N8S19113C2D0Ev),
  (VTBL_ENTRY)&_ZN8S19113C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19113C2D1Ev,_ZTv0_n12_N8S19113C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19113C2D0Ev,_ZTv0_n12_N8S19113C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19113C6__8S19113C2__9S19113C10[] = {
  ABISELECT(544,288),
  ABISELECT(544,288),
  (VTBL_ENTRY)&(_ZTI8S19113C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C2D1Ev,_ZTv0_n12_N8S19113C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C2D0Ev,_ZTv0_n12_N8S19113C2D0Ev),
};
extern void _ZN8S19113C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N8S19113C2D1Ev,_ZTv0_n20_N8S19113C2D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S19113C2D0Ev,_ZTv0_n20_N8S19113C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19113C9__8S19113C2__9S19113C10[] = {
  ABISELECT(400,212),
  0,
  ABISELECT(-144,-76),
  ABISELECT(400,212),
  (VTBL_ENTRY)&(_ZTI8S19113C2[0]),
  (VTBL_ENTRY)&_ZN8S19113C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19113C2D1Ev,_ZTv0_n20_N8S19113C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19113C2D0Ev,_ZTv0_n20_N8S19113C2D0Ev),
};
static  VTT_ENTRY vtt_S19113C10[] = {
  {&(_ZTV9S19113C10[11]),  11,76},
  {&(_ZTV9S19113C10[30]),  30,76},
  {&(_ZTV9S19113C10[37]),  37,76},
  {&(_ZTV9S19113C10[43]),  43,76},
  {&(_ZTV9S19113C10[50]),  50,76},
  {&(_ZTV9S19113C10[57]),  57,76},
  {&(_ZTV9S19113C10[62]),  62,76},
  {&(_ZTV9S19113C10[70]),  70,76},
  {&(_ZTV9S19113C10[75]),  75,76},
  {&(_tg__ZTV9S19113C12__9S19113C10[10]),  10,12},
  {&(_tg__ZTV9S19113C139S19113C12__9S19113C10[10]),  10,12},
  {&(_tg__ZTV8S19113C8__9S19113C139S19113C12__9S19113C10[4]),  4,6},
  {&(_tg__ZTV7S8033C7__A1__9S19113C139S19113C12__9S19113C10[3]),  3,5},
  {&(_tg__ZTV8S19113C5__9S19113C139S19113C12__9S19113C10[5]),  5,8},
  {&(_tg__ZTV8S19113C6__A1__9S19113C139S19113C12__9S19113C10[3]),  3,5},
  {&(_tg__ZTV8S19113C2__9S19113C139S19113C12__9S19113C10[6]),  6,8},
  {&(_tg__ZTV8S19113C9__9S19113C139S19113C12__9S19113C10[5]),  5,8},
  {&(_tg__ZTV9S19113C14__9S19113C139S19113C12__9S19113C10[3]),  3,4},
  {&(_tg__ZTV8S19113C5__9S19113C12__9S19113C10[5]),  5,8},
  {&(_tg__ZTV8S19113C6__9S19113C12__9S19113C10[3]),  3,5},
  {&(_tg__ZTV8S19113C9__9S19113C12__9S19113C10[5]),  5,8},
  {&(_tg__ZTV8S19113C8__9S19113C12__9S19113C10[4]),  4,6},
  {&(_tg__ZTV7S8033C7__A3__9S19113C12__9S19113C10[3]),  3,5},
  {&(_tg__ZTV8S19113C2__9S19113C12__9S19113C10[6]),  6,8},
  {&(_tg__ZTV9S19113C14__9S19113C12__9S19113C10[3]),  3,4},
  {&(_tg__ZTV8S19113C5__9S19113C10[3]),  3,6},
  {&(_tg__ZTV8S19113C6__8S19113C5__9S19113C10[3]),  3,5},
  {&(_tg__ZTV8S19113C9__9S19113C10[3]),  3,6},
  {&(_tg__ZTV8S19113C6__8S19113C9__9S19113C10[3]),  3,5},
  {&(_tg__ZTV8S19113C8__9S19113C10[3]),  3,5},
  {&(_tg__ZTV7S8033C7__A1__8S19113C8__9S19113C10[3]),  3,5},
  {&(_tg__ZTV8S19113C2__9S19113C10[5]),  5,7},
  {&(_tg__ZTV8S19113C38S19113C2__9S19113C10[4]),  4,6},
  {&(_tg__ZTV8S19113C5__8S19113C38S19113C2__9S19113C10[5]),  5,8},
  {&(_tg__ZTV8S19113C6__8S19113C38S19113C2__9S19113C10[3]),  3,5},
  {&(_tg__ZTV8S19113C5__8S19113C2__9S19113C10[5]),  5,8},
  {&(_tg__ZTV8S19113C6__8S19113C2__9S19113C10[3]),  3,5},
  {&(_tg__ZTV8S19113C9__8S19113C2__9S19113C10[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S19113C10[];
extern  VTBL_ENTRY _ZTV9S19113C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19113C10[];
static VTBL_ENTRY alt_thunk_names70[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19113C8D0Ev,_ZTv0_n12_N8S19113C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19113C8D0Ev,_ZThn132_N8S19113C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19113C8D1Ev,_ZTv0_n12_N8S19113C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19113C8D1Ev,_ZThn132_N8S19113C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19113C5D0Ev,_ZTv0_n12_N8S19113C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19113C5D0Ev,_ZThn260_N8S19113C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19113C5D1Ev,_ZTv0_n12_N8S19113C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19113C5D1Ev,_ZThn260_N8S19113C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19113C12D0Ev,_ZTv0_n24_N9S19113C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N9S19113C12D0Ev,_ZThn1344_N9S19113C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19113C12D1Ev,_ZTv0_n24_N9S19113C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N9S19113C12D1Ev,_ZThn1344_N9S19113C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19113C12D0Ev,_ZTv0_n20_N9S19113C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N9S19113C12D0Ev,_ZThn1132_N9S19113C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19113C12D1Ev,_ZTv0_n20_N9S19113C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N9S19113C12D1Ev,_ZThn1132_N9S19113C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19113C12D0Ev,_ZTv0_n12_N9S19113C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2464_N9S19113C12D0Ev,_ZThn1292_N9S19113C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2016_N9S19113C12D0Ev,_ZThn1056_N9S19113C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19113C12D1Ev,_ZTv0_n12_N9S19113C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2464_N9S19113C12D1Ev,_ZThn1292_N9S19113C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2016_N9S19113C12D1Ev,_ZThn1056_N9S19113C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19113C12D0Ev,_ZTv0_n16_N9S19113C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2208_N9S19113C12D0Ev,_ZThn1160_N9S19113C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N9S19113C12D0Ev,_ZThn796_N9S19113C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19113C12D1Ev,_ZTv0_n16_N9S19113C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2208_N9S19113C12D1Ev,_ZThn1160_N9S19113C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N9S19113C12D1Ev,_ZThn796_N9S19113C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19113C13D0Ev,_ZTv0_n20_N9S19113C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N9S19113C13D0Ev,_ZThn1132_N9S19113C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19113C13D1Ev,_ZTv0_n20_N9S19113C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N9S19113C13D1Ev,_ZThn1132_N9S19113C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19113C13D0Ev,_ZTv0_n24_N9S19113C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N9S19113C13D0Ev,_ZThn1344_N9S19113C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19113C13D1Ev,_ZTv0_n24_N9S19113C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N9S19113C13D1Ev,_ZThn1344_N9S19113C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19113C13D0Ev,_ZTv0_n12_N9S19113C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2016_N9S19113C13D0Ev,_ZThn1056_N9S19113C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2464_N9S19113C13D0Ev,_ZThn1292_N9S19113C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19113C13D1Ev,_ZTv0_n12_N9S19113C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2016_N9S19113C13D1Ev,_ZThn1056_N9S19113C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2464_N9S19113C13D1Ev,_ZThn1292_N9S19113C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19113C13D0Ev,_ZTv0_n16_N9S19113C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N9S19113C13D0Ev,_ZThn796_N9S19113C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2208_N9S19113C13D0Ev,_ZThn1160_N9S19113C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19113C13D1Ev,_ZTv0_n16_N9S19113C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N9S19113C13D1Ev,_ZThn796_N9S19113C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2208_N9S19113C13D1Ev,_ZThn1160_N9S19113C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19113C10D0Ev,_ZTv0_n24_N9S19113C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3184_N9S19113C10D0Ev,_ZThn1700_N9S19113C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19113C10D1Ev,_ZTv0_n24_N9S19113C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3184_N9S19113C10D1Ev,_ZThn1700_N9S19113C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19113C10D0Ev,_ZTv0_n20_N9S19113C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2784_N9S19113C10D0Ev,_ZThn1488_N9S19113C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19113C10D1Ev,_ZTv0_n20_N9S19113C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2784_N9S19113C10D1Ev,_ZThn1488_N9S19113C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19113C10D0Ev,_ZTv0_n12_N9S19113C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3088_N9S19113C10D0Ev,_ZThn1648_N9S19113C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2640_N9S19113C10D0Ev,_ZThn1412_N9S19113C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19113C10D1Ev,_ZTv0_n12_N9S19113C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3088_N9S19113C10D1Ev,_ZThn1648_N9S19113C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2640_N9S19113C10D1Ev,_ZThn1412_N9S19113C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19113C10D0Ev,_ZTv0_n16_N9S19113C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2832_N9S19113C10D0Ev,_ZThn1516_N9S19113C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2144_N9S19113C10D0Ev,_ZThn1152_N9S19113C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19113C10D1Ev,_ZTv0_n16_N9S19113C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2832_N9S19113C10D1Ev,_ZThn1516_N9S19113C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2144_N9S19113C10D1Ev,_ZThn1152_N9S19113C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19113C10D0Ev,_ZTv0_n44_N9S19113C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn624_N9S19113C10D0Ev,_ZThn356_N9S19113C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19113C10D1Ev,_ZTv0_n44_N9S19113C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn624_N9S19113C10D1Ev,_ZThn356_N9S19113C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19113C10 = {  "S19113C10", // class name
  bases_S19113C10, 19,
  &(vtc_S19113C10[0]), // expected_vtbl_contents
  &(vtt_S19113C10[0]), // expected_vtt_contents
  ABISELECT(3536,1888), // object size
  NSPAIRA(_ZTI9S19113C10),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19113C10),76, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19113C10),38, //virtual table table var
  17, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names70,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19113C1  : virtual S19113C2 , virtual S19113C10 {
  int s19113c1f0:21;
  ::S19113C14 s19113c1f1;
  __tsi64 s19113c1f2;
  int s19113c1f3;
  ::S19113C13 s19113c1f4;
  ::S19113C10 s19113c1f5;
  virtual void  v1(); // _ZN8S19113C12v1Ev
  ~S19113C1(); // tgen
  S19113C1(); // tgen
};
//SIG(1 S19113C1) C1{ VBC2{ BC3{ BC4{ vd m Fc Fc:0 Fl[8] FD} VBC5{ BC4 VBC6{ BC4 Fp FC7{} Fp FD} vd v2 Fi Fc Fp Fi Fp[2] FC8{ BC6 VBC4 vd FC4 Fp}} vd Fp FL[2] Fc Fp Fi} VBC9{ VBC6 v3 Fc Fs FD Fp[2]} vd Fc Fi:32} VBC10{ VBC11{ m Fp[3] FL[8]} VBC12{ VBC5 BC11 VBC9 BC13{ VBC8 VBC5 VBC2 VBC11 VBC14{ v4 FD Fp FC4 FL FD Fi} vd Fp FC14[3] FC14 Fc} FC14 Fp FL[2] Fi:31 Fi FC7 FC14 FC14 Fp} BC14 BC4 v5 FC14 Fi Fc[6] FD Fi FL} v1 Fi:21 FC14 FL Fi FC13 FC10}


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

static void Test_S19113C1()
{
  extern Class_Descriptor cd_S19113C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(600,1276)];
    init_test(&cd_S19113C1, buf);
    S19113C1 *dp, &lv = *(dp=new (buf) S19113C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(9584,5100), "sizeof(S19113C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19113C1)");
    /*is_ambiguous_... S19113C3::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19113C3*)(S19113C2*), ABISELECT(6048,3212), "S19113C1");
    /*is_ambiguous_... S19113C5::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19113C5*), ABISELECT(6208,3304), "S19113C1");
    /*is_ambiguous_... S19113C1::S19113C6 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19113C6*), ABISELECT(6704,3564), "S19113C1");
    check_base_class_offset(lv, (S19113C6*)(S19113C5*), ABISELECT(6704,3564), "S19113C1");
    check_base_class_offset(lv, (S19113C6*)(S19113C9*), ABISELECT(6704,3564), "S19113C1");
    check_base_class_offset(lv, (S19113C5*)(S19113C3*)(S19113C2*), ABISELECT(6208,3304), "S19113C1");
    check_base_class_offset(lv, (S19113C5*)(S19113C12*), ABISELECT(6208,3304), "S19113C1");
    check_base_class_offset(lv, (S19113C5*)(S19113C13*)(S19113C12*), ABISELECT(6208,3304), "S19113C1");
    check_base_class_offset(lv, (S19113C3*)(S19113C2*), ABISELECT(6048,3212), "S19113C1");
    check_base_class_offset(lv, (S19113C9*)(S19113C2*), ABISELECT(6848,3640), "S19113C1");
    check_base_class_offset(lv, (S19113C9*)(S19113C12*), ABISELECT(6848,3640), "S19113C1");
    check_base_class_offset(lv, (S19113C2*), ABISELECT(6048,3212), "S19113C1");
    check_base_class_offset(lv, (S19113C2*)(S19113C13*)(S19113C12*), ABISELECT(6048,3212), "S19113C1");
    /*is_ambiguous_... S19113C10::S8033C4 */ AMB_check_base_class_offset(lv, (S8033C4*)(S19113C10*), ABISELECT(7424,3948), "S19113C1");
    check_base_class_offset(lv, (S8033C4*)(S19113C13*)(S19113C12*), ABISELECT(7424,3948), "S19113C1");
    /*is_ambiguous_... S19113C12::S8033C4 */ AMB_check_base_class_offset(lv, (S8033C4*)(S19113C12*), ABISELECT(8312,4420), "S19113C1");
    check_base_class_offset(lv, (S8033C7*)(S19113C6*)(S19113C8*), ABISELECT(9040,4820), "S19113C1");
    check_base_class_offset(lv, (S19113C6*)(S19113C8*), ABISELECT(9040,4820), "S19113C1");
    /*is_ambiguous_... S19113C8::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19113C8*), ABISELECT(9296,4952), "S19113C1");
    check_base_class_offset(lv, (S19113C8*)(S19113C13*)(S19113C12*), ABISELECT(9040,4820), "S19113C1");
    check_base_class_offset(lv, (S19113C14*)(S19113C13*)(S19113C12*), ABISELECT(9392,5004), "S19113C1");
    check_base_class_offset(lv, (S19113C13*)(S19113C12*), ABISELECT(7520,4024), "S19113C1");
    check_base_class_offset(lv, (S19113C12*)(S19113C10*), ABISELECT(7520,4024), "S19113C1");
    /*is_ambiguous_... S19113C10::S19113C14 */ AMB_check_base_class_offset(lv, (S19113C14*)(S19113C10*), ABISELECT(6896,3668), "S19113C1");
    /*is_ambiguous_... S19113C10::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19113C10*), ABISELECT(7088,3764), "S19113C1");
    check_base_class_offset(lv, (S19113C10*), ABISELECT(6896,3668), "S19113C1");
    set_bf_and_test(lv, s19113c1f0, ABISELECT(8,4), 0, 21, 1, "S19113C1");
    set_bf_and_test(lv, s19113c1f0, ABISELECT(8,4), 0, 21, hide_sll(1LL<<20), "S19113C1");
    check_field_offset(lv, s19113c1f1, ABISELECT(16,8), "S19113C1.s19113c1f1");
    check_field_offset(lv, s19113c1f2, ABISELECT(208,104), "S19113C1.s19113c1f2");
    check_field_offset(lv, s19113c1f3, ABISELECT(216,112), "S19113C1.s19113c1f3");
    check_field_offset(lv, s19113c1f4, ABISELECT(224,116), "S19113C1.s19113c1f4");
    check_field_offset(lv, s19113c1f5, ABISELECT(2512,1324), "S19113C1.s19113c1f5");
    test_class_info(&lv, &cd_S19113C1);
    dp->~S19113C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19113C1(Test_S19113C1, "S19113C1", ABISELECT(9584,5100));

#else // __cplusplus

extern void _ZN8S19113C1C1Ev();
extern void _ZN8S19113C1D1Ev();
Name_Map name_map_S19113C1[] = {
  NSPAIR(_ZN8S19113C1C1Ev),
  NSPAIR(_ZN8S19113C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19113C6;
extern VTBL_ENTRY _ZTI8S19113C6[];
extern  VTBL_ENTRY _ZTV8S19113C6[];
extern Class_Descriptor cd_S19113C5;
extern VTBL_ENTRY _ZTI8S19113C5[];
extern  VTBL_ENTRY _ZTV8S19113C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19113C5[];
extern Class_Descriptor cd_S19113C3;
extern VTBL_ENTRY _ZTI8S19113C3[];
extern  VTBL_ENTRY _ZTV8S19113C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19113C3[];
extern Class_Descriptor cd_S19113C9;
extern VTBL_ENTRY _ZTI8S19113C9[];
extern  VTBL_ENTRY _ZTV8S19113C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19113C9[];
extern Class_Descriptor cd_S19113C2;
extern VTBL_ENTRY _ZTI8S19113C2[];
extern  VTBL_ENTRY _ZTV8S19113C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19113C2[];
extern Class_Descriptor cd_S8033C4;
extern VTBL_ENTRY _ZTI7S8033C4[];
extern Class_Descriptor cd_S8033C4;
extern VTBL_ENTRY _ZTI7S8033C4[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19113C6;
extern VTBL_ENTRY _ZTI8S19113C6[];
extern  VTBL_ENTRY _ZTV8S19113C6[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19113C8;
extern VTBL_ENTRY _ZTI8S19113C8[];
extern  VTBL_ENTRY _ZTV8S19113C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19113C8[];
extern Class_Descriptor cd_S19113C14;
extern VTBL_ENTRY _ZTI9S19113C14[];
extern  VTBL_ENTRY _ZTV9S19113C14[];
extern Class_Descriptor cd_S19113C13;
extern VTBL_ENTRY _ZTI9S19113C13[];
extern  VTBL_ENTRY _ZTV9S19113C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19113C13[];
extern Class_Descriptor cd_S19113C12;
extern VTBL_ENTRY _ZTI9S19113C12[];
extern  VTBL_ENTRY _ZTV9S19113C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19113C12[];
extern Class_Descriptor cd_S19113C14;
extern VTBL_ENTRY _ZTI9S19113C14[];
extern  VTBL_ENTRY _ZTV9S19113C14[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19113C10;
extern VTBL_ENTRY _ZTI9S19113C10[];
extern  VTBL_ENTRY _ZTV9S19113C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19113C10[];
static Base_Class bases_S19113C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    ABISELECT(6048,3212), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(6208,3304), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(6704,3564), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19113C6,    ABISELECT(6704,3564), //bcp->offset
    31, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19113C5,    ABISELECT(6208,3304), //bcp->offset
    23, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19113C3,    ABISELECT(6048,3212), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19113C9,    ABISELECT(6848,3640), //bcp->offset
    36, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19113C2,    ABISELECT(6048,3212), //bcp->offset
    15, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C4,    ABISELECT(7424,3948), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S8033C4,    ABISELECT(8312,4420), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(9040,4820), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19113C6,    ABISELECT(9040,4820), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(9296,4952), //bcp->offset
    85, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19113C8,    ABISELECT(9040,4820), //bcp->offset
    79, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19113C14,    ABISELECT(9392,5004), //bcp->offset
    90, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19113C13,    ABISELECT(7520,4024), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19113C12,    ABISELECT(7520,4024), //bcp->offset
    66, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S19113C14,    ABISELECT(6896,3668), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(7088,3764), //bcp->offset
    62, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19113C10,    ABISELECT(6896,3668), //bcp->offset
    44, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19113C1[];
extern void _ZN8S19113C12v1Ev();
extern void _ZN8S19113C1D1Ev();
extern void _ZN8S19113C1D0Ev();
extern void ABISELECT(_ZTv0_n48_N8S19113C1D1Ev,_ZTv0_n24_N8S19113C1D1Ev)();
extern void ABISELECT(_ZThn6048_N8S19113C1D1Ev,_ZThn3212_N8S19113C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19113C1D0Ev,_ZTv0_n24_N8S19113C1D0Ev)();
extern void ABISELECT(_ZThn6048_N8S19113C1D0Ev,_ZThn3212_N8S19113C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19113C1D1Ev,_ZTv0_n16_N8S19113C1D1Ev)();
extern void ABISELECT(_ZThn6208_N8S19113C1D1Ev,_ZThn3304_N8S19113C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19113C1D0Ev,_ZTv0_n16_N8S19113C1D0Ev)();
extern void ABISELECT(_ZThn6208_N8S19113C1D0Ev,_ZThn3304_N8S19113C1D0Ev)() __attribute__((weak));
extern void _ZN8S19113C52v2Ev();
extern void ABISELECT(_ZTv0_n24_N8S19113C1D1Ev,_ZTv0_n12_N8S19113C1D1Ev)();
extern void ABISELECT(_ZThn6704_N8S19113C1D1Ev,_ZThn3564_N8S19113C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19113C1D0Ev,_ZTv0_n12_N8S19113C1D0Ev)();
extern void ABISELECT(_ZThn6704_N8S19113C1D0Ev,_ZThn3564_N8S19113C1D0Ev)() __attribute__((weak));
extern void _ZN8S19113C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N8S19113C1D1Ev,_ZTv0_n20_N8S19113C1D1Ev)();
extern void ABISELECT(_ZThn6848_N8S19113C1D1Ev,_ZThn3640_N8S19113C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19113C1D0Ev,_ZTv0_n20_N8S19113C1D0Ev)();
extern void ABISELECT(_ZThn6848_N8S19113C1D0Ev,_ZThn3640_N8S19113C1D0Ev)() __attribute__((weak));
extern void _ZN9S19113C142v4Ev();
extern void _ZN9S19113C102v5Ev();
extern void ABISELECT(_ZTv0_n112_N8S19113C1D1Ev,_ZTv0_n56_N8S19113C1D1Ev)();
extern void ABISELECT(_ZThn6896_N8S19113C1D1Ev,_ZThn3668_N8S19113C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n112_N8S19113C1D0Ev,_ZTv0_n56_N8S19113C1D0Ev)();
extern void ABISELECT(_ZThn6896_N8S19113C1D0Ev,_ZThn3668_N8S19113C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn192_n112_N8S19113C1D1Ev,_ZTvn96_n56_N8S19113C1D1Ev)();
extern void ABISELECT(_ZTvn192_n112_N8S19113C1D0Ev,_ZTvn96_n56_N8S19113C1D0Ev)();
extern void ABISELECT(_ZTv0_n88_N8S19113C1D1Ev,_ZTv0_n44_N8S19113C1D1Ev)();
extern void ABISELECT(_ZThn7520_N8S19113C1D1Ev,_ZThn4024_N8S19113C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19113C1D0Ev,_ZTv0_n44_N8S19113C1D0Ev)();
extern void ABISELECT(_ZThn7520_N8S19113C1D0Ev,_ZThn4024_N8S19113C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19113C1D1Ev,_ZTv0_n16_N8S19113C1D1Ev)();
extern void ABISELECT(_ZThn9040_N8S19113C1D1Ev,_ZThn4820_N8S19113C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19113C1D0Ev,_ZTv0_n16_N8S19113C1D0Ev)();
extern void ABISELECT(_ZThn9040_N8S19113C1D0Ev,_ZThn4820_N8S19113C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19113C1D1Ev,_ZTv0_n12_N8S19113C1D1Ev)();
extern void ABISELECT(_ZThn9296_N8S19113C1D1Ev,_ZThn4952_N8S19113C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19113C1D0Ev,_ZTv0_n12_N8S19113C1D0Ev)();
extern void ABISELECT(_ZThn9296_N8S19113C1D0Ev,_ZThn4952_N8S19113C1D0Ev)() __attribute__((weak));
extern void _ZN9S19113C142v4Ev();
static  VTBL_ENTRY vtc_S19113C1[] = {
  ABISELECT(9392,5004),
  ABISELECT(9296,4952),
  ABISELECT(9040,4820),
  ABISELECT(7520,4024),
  ABISELECT(7424,3948),
  ABISELECT(6896,3668),
  ABISELECT(6848,3640),
  ABISELECT(6704,3564),
  ABISELECT(6208,3304),
  ABISELECT(6048,3212),
  0,
  (VTBL_ENTRY)&(_ZTI8S19113C1[0]),
  (VTBL_ENTRY)&_ZN8S19113C12v1Ev,
  (VTBL_ENTRY)&_ZN8S19113C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19113C1D0Ev,
  ABISELECT(-6048,-3212),
  ABISELECT(800,428),
  ABISELECT(656,352),
  ABISELECT(160,92),
  ABISELECT(-6048,-3212),
  (VTBL_ENTRY)&(_ZTI8S19113C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19113C1D1Ev,_ZTv0_n24_N8S19113C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19113C1D0Ev,_ZTv0_n24_N8S19113C1D0Ev),
  0,
  ABISELECT(-6208,-3304),
  ABISELECT(496,260),
  ABISELECT(-6208,-3304),
  (VTBL_ENTRY)&(_ZTI8S19113C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19113C1D1Ev,_ZTv0_n16_N8S19113C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19113C1D0Ev,_ZTv0_n16_N8S19113C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19113C52v2Ev,
  ABISELECT(-6704,-3564),
  ABISELECT(-6704,-3564),
  (VTBL_ENTRY)&(_ZTI8S19113C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C1D1Ev,_ZTv0_n12_N8S19113C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C1D0Ev,_ZTv0_n12_N8S19113C1D0Ev),
  ABISELECT(-6848,-3640),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-6848,-3640),
  (VTBL_ENTRY)&(_ZTI8S19113C1[0]),
  (VTBL_ENTRY)&_ZN8S19113C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19113C1D1Ev,_ZTv0_n20_N8S19113C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19113C1D0Ev,_ZTv0_n20_N8S19113C1D0Ev),
  ABISELECT(-6896,-3668),
  0,
  0,
  ABISELECT(2496,1336),
  ABISELECT(-848,-456),
  ABISELECT(2400,1284),
  ABISELECT(2144,1152),
  ABISELECT(-48,-28),
  ABISELECT(-192,-104),
  ABISELECT(-688,-364),
  ABISELECT(624,356),
  ABISELECT(528,280),
  ABISELECT(-6896,-3668),
  (VTBL_ENTRY)&(_ZTI8S19113C1[0]),
  (VTBL_ENTRY)&_ZN9S19113C142v4Ev,
  (VTBL_ENTRY)&_ZN9S19113C102v5Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N8S19113C1D1Ev,_ZTv0_n56_N8S19113C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N8S19113C1D0Ev,_ZTv0_n56_N8S19113C1D0Ev),
  ABISELECT(-7088,-3764),
  (VTBL_ENTRY)&(_ZTI8S19113C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn192_n112_N8S19113C1D1Ev,_ZTvn96_n56_N8S19113C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn192_n112_N8S19113C1D0Ev,_ZTvn96_n56_N8S19113C1D0Ev),
  ABISELECT(-7520,-4024),
  ABISELECT(1872,980),
  ABISELECT(-96,-76),
  ABISELECT(-672,-384),
  ABISELECT(-1472,-812),
  ABISELECT(-816,-460),
  ABISELECT(-1312,-720),
  ABISELECT(1776,928),
  ABISELECT(1520,796),
  ABISELECT(-7520,-4024),
  (VTBL_ENTRY)&(_ZTI8S19113C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19113C1D1Ev,_ZTv0_n44_N8S19113C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19113C1D0Ev,_ZTv0_n44_N8S19113C1D0Ev),
  ABISELECT(-9040,-4820),
  ABISELECT(256,132),
  ABISELECT(-9040,-4820),
  (VTBL_ENTRY)&(_ZTI8S19113C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19113C1D1Ev,_ZTv0_n16_N8S19113C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19113C1D0Ev,_ZTv0_n16_N8S19113C1D0Ev),
  ABISELECT(-9296,-4952),
  ABISELECT(-9296,-4952),
  (VTBL_ENTRY)&(_ZTI8S19113C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C1D1Ev,_ZTv0_n12_N8S19113C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C1D0Ev,_ZTv0_n12_N8S19113C1D0Ev),
  0,
  ABISELECT(-9392,-5004),
  (VTBL_ENTRY)&(_ZTI8S19113C1[0]),
  (VTBL_ENTRY)&_ZN9S19113C142v4Ev,
};
extern VTBL_ENTRY _ZTV8S19113C1[];
extern void _ZN8S19113C2D1Ev();
extern void _ZN8S19113C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C2__8S19113C1[] = {
  ABISELECT(800,428),
  ABISELECT(656,352),
  ABISELECT(160,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S19113C2[0]),
  (VTBL_ENTRY)&_ZN8S19113C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19113C2D0Ev,
};
extern void _ZN8S19113C3D1Ev();
extern void _ZN8S19113C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C38S19113C2__8S19113C1[] = {
  ABISELECT(656,352),
  ABISELECT(160,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S19113C3[0]),
  (VTBL_ENTRY)&_ZN8S19113C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19113C3D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19113C3D1Ev,_ZTv0_n16_N8S19113C3D1Ev)();
extern void ABISELECT(_ZThn160_N8S19113C3D1Ev,_ZThn92_N8S19113C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19113C3D0Ev,_ZTv0_n16_N8S19113C3D0Ev)();
extern void ABISELECT(_ZThn160_N8S19113C3D0Ev,_ZThn92_N8S19113C3D0Ev)() __attribute__((weak));
extern void _ZN8S19113C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C5__8S19113C38S19113C2__8S19113C1[] = {
  0,
  ABISELECT(-160,-92),
  ABISELECT(496,260),
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI8S19113C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19113C3D1Ev,_ZTv0_n16_N8S19113C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19113C3D0Ev,_ZTv0_n16_N8S19113C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19113C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19113C3D1Ev,_ZTv0_n12_N8S19113C3D1Ev)();
extern void ABISELECT(_ZThn656_N8S19113C3D1Ev,_ZThn352_N8S19113C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19113C3D0Ev,_ZTv0_n12_N8S19113C3D0Ev)();
extern void ABISELECT(_ZThn656_N8S19113C3D0Ev,_ZThn352_N8S19113C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19113C6__8S19113C38S19113C2__8S19113C1[] = {
  ABISELECT(-656,-352),
  ABISELECT(-656,-352),
  (VTBL_ENTRY)&(_ZTI8S19113C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C3D1Ev,_ZTv0_n12_N8S19113C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C3D0Ev,_ZTv0_n12_N8S19113C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19113C2D1Ev,_ZTv0_n16_N8S19113C2D1Ev)();
extern void ABISELECT(_ZThn160_N8S19113C2D1Ev,_ZThn92_N8S19113C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19113C2D0Ev,_ZTv0_n16_N8S19113C2D0Ev)();
extern void ABISELECT(_ZThn160_N8S19113C2D0Ev,_ZThn92_N8S19113C2D0Ev)() __attribute__((weak));
extern void _ZN8S19113C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C5__8S19113C2__8S19113C1[] = {
  0,
  ABISELECT(-160,-92),
  ABISELECT(496,260),
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI8S19113C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19113C2D1Ev,_ZTv0_n16_N8S19113C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19113C2D0Ev,_ZTv0_n16_N8S19113C2D0Ev),
  (VTBL_ENTRY)&_ZN8S19113C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19113C2D1Ev,_ZTv0_n12_N8S19113C2D1Ev)();
extern void ABISELECT(_ZThn656_N8S19113C2D1Ev,_ZThn352_N8S19113C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19113C2D0Ev,_ZTv0_n12_N8S19113C2D0Ev)();
extern void ABISELECT(_ZThn656_N8S19113C2D0Ev,_ZThn352_N8S19113C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19113C6__8S19113C2__8S19113C1[] = {
  ABISELECT(-656,-352),
  ABISELECT(-656,-352),
  (VTBL_ENTRY)&(_ZTI8S19113C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C2D1Ev,_ZTv0_n12_N8S19113C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C2D0Ev,_ZTv0_n12_N8S19113C2D0Ev),
};
extern void _ZN8S19113C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N8S19113C2D1Ev,_ZTv0_n20_N8S19113C2D1Ev)();
extern void ABISELECT(_ZThn800_N8S19113C2D1Ev,_ZThn428_N8S19113C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19113C2D0Ev,_ZTv0_n20_N8S19113C2D0Ev)();
extern void ABISELECT(_ZThn800_N8S19113C2D0Ev,_ZThn428_N8S19113C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19113C9__8S19113C2__8S19113C1[] = {
  ABISELECT(-800,-428),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-800,-428),
  (VTBL_ENTRY)&(_ZTI8S19113C2[0]),
  (VTBL_ENTRY)&_ZN8S19113C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19113C2D1Ev,_ZTv0_n20_N8S19113C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19113C2D0Ev,_ZTv0_n20_N8S19113C2D0Ev),
};
extern void _ZN8S19113C5D1Ev();
extern void _ZN8S19113C5D0Ev();
extern void _ZN8S19113C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C5__8S19113C1[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19113C5[0]),
  (VTBL_ENTRY)&_ZN8S19113C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19113C5D0Ev,
  (VTBL_ENTRY)&_ZN8S19113C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19113C5D1Ev,_ZTv0_n12_N8S19113C5D1Ev)();
extern void ABISELECT(_ZThn496_N8S19113C5D1Ev,_ZThn260_N8S19113C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19113C5D0Ev,_ZTv0_n12_N8S19113C5D0Ev)();
extern void ABISELECT(_ZThn496_N8S19113C5D0Ev,_ZThn260_N8S19113C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19113C6__8S19113C5__8S19113C1[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI8S19113C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C5D1Ev,_ZTv0_n12_N8S19113C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C5D0Ev,_ZTv0_n12_N8S19113C5D0Ev),
};
extern void _ZN8S19113C92v3Ev();
extern void _ZN8S19113C9D1Ev();
extern void _ZN8S19113C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C9__8S19113C1[] = {
  ABISELECT(-144,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19113C9[0]),
  (VTBL_ENTRY)&_ZN8S19113C92v3Ev,
  (VTBL_ENTRY)&_ZN8S19113C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19113C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19113C9D1Ev,_ZTv0_n12_N8S19113C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19113C9D0Ev,_ZTv0_n12_N8S19113C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19113C6__8S19113C9__8S19113C1[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S19113C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C9D1Ev,_ZTv0_n12_N8S19113C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C9D0Ev,_ZTv0_n12_N8S19113C9D0Ev),
};
extern void _ZN9S19113C142v4Ev();
extern void _ZN9S19113C102v5Ev();
extern void _ZN9S19113C10D1Ev();
extern void _ZN9S19113C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19113C10__8S19113C1[] = {
  ABISELECT(2496,1336),
  ABISELECT(-848,-456),
  ABISELECT(2400,1284),
  ABISELECT(2144,1152),
  ABISELECT(-48,-28),
  ABISELECT(-192,-104),
  ABISELECT(-688,-364),
  ABISELECT(624,356),
  ABISELECT(528,280),
  0,
  (VTBL_ENTRY)&(_ZTI9S19113C10[0]),
  (VTBL_ENTRY)&_ZN9S19113C142v4Ev,
  (VTBL_ENTRY)&_ZN9S19113C102v5Ev,
  (VTBL_ENTRY)&_ZN9S19113C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19113C10D0Ev,
};
extern void ABISELECT(_ZTv0_n88_N9S19113C10D1Ev,_ZTv0_n44_N9S19113C10D1Ev)();
extern void ABISELECT(_ZThn624_N9S19113C10D1Ev,_ZThn356_N9S19113C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19113C10D0Ev,_ZTv0_n44_N9S19113C10D0Ev)();
extern void ABISELECT(_ZThn624_N9S19113C10D0Ev,_ZThn356_N9S19113C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19113C12__9S19113C10__8S19113C1[] = {
  ABISELECT(-624,-356),
  ABISELECT(1872,980),
  ABISELECT(-96,-76),
  ABISELECT(-672,-384),
  ABISELECT(-1472,-812),
  ABISELECT(-816,-460),
  ABISELECT(-1312,-720),
  ABISELECT(1776,928),
  ABISELECT(1520,796),
  ABISELECT(-624,-356),
  (VTBL_ENTRY)&(_ZTI9S19113C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19113C10D1Ev,_ZTv0_n44_N9S19113C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19113C10D0Ev,_ZTv0_n44_N9S19113C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19113C10D1Ev,_ZTv0_n16_N9S19113C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19113C10D0Ev,_ZTv0_n16_N9S19113C10D0Ev)();
extern void _ZN8S19113C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C5__9S19113C10__8S19113C1[] = {
  0,
  ABISELECT(688,364),
  ABISELECT(496,260),
  ABISELECT(688,364),
  (VTBL_ENTRY)&(_ZTI9S19113C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19113C10D1Ev,_ZTv0_n16_N9S19113C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19113C10D0Ev,_ZTv0_n16_N9S19113C10D0Ev),
  (VTBL_ENTRY)&_ZN8S19113C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19113C10D1Ev,_ZTv0_n12_N9S19113C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19113C10D0Ev,_ZTv0_n12_N9S19113C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19113C6__9S19113C10__8S19113C1[] = {
  ABISELECT(192,104),
  ABISELECT(192,104),
  (VTBL_ENTRY)&(_ZTI9S19113C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19113C10D1Ev,_ZTv0_n12_N9S19113C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19113C10D0Ev,_ZTv0_n12_N9S19113C10D0Ev),
};
extern void _ZN8S19113C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N9S19113C10D1Ev,_ZTv0_n20_N9S19113C10D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19113C10D0Ev,_ZTv0_n20_N9S19113C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19113C9__9S19113C10__8S19113C1[] = {
  ABISELECT(48,28),
  0,
  ABISELECT(-144,-76),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S19113C10[0]),
  (VTBL_ENTRY)&_ZN8S19113C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19113C10D1Ev,_ZTv0_n20_N9S19113C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19113C10D0Ev,_ZTv0_n20_N9S19113C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19113C10D1Ev,_ZTv0_n16_N9S19113C10D1Ev)();
extern void ABISELECT(_ZThn2144_N9S19113C10D1Ev,_ZThn1152_N9S19113C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19113C10D0Ev,_ZTv0_n16_N9S19113C10D0Ev)();
extern void ABISELECT(_ZThn2144_N9S19113C10D0Ev,_ZThn1152_N9S19113C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19113C8__9S19113C10__8S19113C1[] = {
  ABISELECT(-2144,-1152),
  ABISELECT(256,132),
  ABISELECT(-2144,-1152),
  (VTBL_ENTRY)&(_ZTI9S19113C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19113C10D1Ev,_ZTv0_n16_N9S19113C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19113C10D0Ev,_ZTv0_n16_N9S19113C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19113C10D1Ev,_ZTv0_n12_N9S19113C10D1Ev)();
extern void ABISELECT(_ZThn2400_N9S19113C10D1Ev,_ZThn1284_N9S19113C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19113C10D0Ev,_ZTv0_n12_N9S19113C10D0Ev)();
extern void ABISELECT(_ZThn2400_N9S19113C10D0Ev,_ZThn1284_N9S19113C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A3__9S19113C10__8S19113C1[] = {
  ABISELECT(-2400,-1284),
  ABISELECT(-2400,-1284),
  (VTBL_ENTRY)&(_ZTI9S19113C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19113C10D1Ev,_ZTv0_n12_N9S19113C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19113C10D0Ev,_ZTv0_n12_N9S19113C10D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19113C10D1Ev,_ZTv0_n24_N9S19113C10D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19113C10D0Ev,_ZTv0_n24_N9S19113C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19113C2__9S19113C10__8S19113C1[] = {
  ABISELECT(848,456),
  ABISELECT(800,428),
  ABISELECT(656,352),
  ABISELECT(160,92),
  ABISELECT(848,456),
  (VTBL_ENTRY)&(_ZTI9S19113C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19113C10D1Ev,_ZTv0_n24_N9S19113C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19113C10D0Ev,_ZTv0_n24_N9S19113C10D0Ev),
};
extern void _ZN9S19113C142v4Ev();
static  VTBL_ENTRY _tg__ZTV9S19113C14__9S19113C10__8S19113C1[] = {
  0,
  ABISELECT(-2496,-1336),
  (VTBL_ENTRY)&(_ZTI9S19113C10[0]),
  (VTBL_ENTRY)&_ZN9S19113C142v4Ev,
};
extern void _ZN9S19113C12D1Ev();
extern void _ZN9S19113C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19113C12__8S19113C1[] = {
  ABISELECT(1872,980),
  ABISELECT(-96,-76),
  ABISELECT(-672,-384),
  ABISELECT(-1472,-812),
  ABISELECT(-816,-460),
  ABISELECT(-1312,-720),
  ABISELECT(1776,928),
  ABISELECT(1520,796),
  0,
  (VTBL_ENTRY)&(_ZTI9S19113C12[0]),
  (VTBL_ENTRY)&_ZN9S19113C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19113C12D0Ev,
};
extern void _ZN9S19113C13D1Ev();
extern void _ZN9S19113C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19113C139S19113C12__8S19113C1[] = {
  ABISELECT(1872,980),
  ABISELECT(-96,-76),
  ABISELECT(-672,-384),
  ABISELECT(-1472,-812),
  ABISELECT(-816,-460),
  ABISELECT(-1312,-720),
  ABISELECT(1776,928),
  ABISELECT(1520,796),
  0,
  (VTBL_ENTRY)&(_ZTI9S19113C13[0]),
  (VTBL_ENTRY)&_ZN9S19113C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19113C13D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19113C13D1Ev,_ZTv0_n16_N9S19113C13D1Ev)();
extern void ABISELECT(_ZThn1520_N9S19113C13D1Ev,_ZThn796_N9S19113C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19113C13D0Ev,_ZTv0_n16_N9S19113C13D0Ev)();
extern void ABISELECT(_ZThn1520_N9S19113C13D0Ev,_ZThn796_N9S19113C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19113C8__9S19113C139S19113C12__8S19113C1[] = {
  ABISELECT(-1520,-796),
  ABISELECT(256,132),
  ABISELECT(-1520,-796),
  (VTBL_ENTRY)&(_ZTI9S19113C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19113C13D1Ev,_ZTv0_n16_N9S19113C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19113C13D0Ev,_ZTv0_n16_N9S19113C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19113C13D1Ev,_ZTv0_n12_N9S19113C13D1Ev)();
extern void ABISELECT(_ZThn1776_N9S19113C13D1Ev,_ZThn928_N9S19113C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19113C13D0Ev,_ZTv0_n12_N9S19113C13D0Ev)();
extern void ABISELECT(_ZThn1776_N9S19113C13D0Ev,_ZThn928_N9S19113C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__9S19113C139S19113C12__8S19113C1[] = {
  ABISELECT(-1776,-928),
  ABISELECT(-1776,-928),
  (VTBL_ENTRY)&(_ZTI9S19113C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19113C13D1Ev,_ZTv0_n12_N9S19113C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19113C13D0Ev,_ZTv0_n12_N9S19113C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19113C13D1Ev,_ZTv0_n16_N9S19113C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19113C13D0Ev,_ZTv0_n16_N9S19113C13D0Ev)();
extern void _ZN8S19113C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C5__9S19113C139S19113C12__8S19113C1[] = {
  0,
  ABISELECT(1312,720),
  ABISELECT(496,260),
  ABISELECT(1312,720),
  (VTBL_ENTRY)&(_ZTI9S19113C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19113C13D1Ev,_ZTv0_n16_N9S19113C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19113C13D0Ev,_ZTv0_n16_N9S19113C13D0Ev),
  (VTBL_ENTRY)&_ZN8S19113C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19113C13D1Ev,_ZTv0_n12_N9S19113C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19113C13D0Ev,_ZTv0_n12_N9S19113C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19113C6__A1__9S19113C139S19113C12__8S19113C1[] = {
  ABISELECT(816,460),
  ABISELECT(816,460),
  (VTBL_ENTRY)&(_ZTI9S19113C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19113C13D1Ev,_ZTv0_n12_N9S19113C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19113C13D0Ev,_ZTv0_n12_N9S19113C13D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19113C13D1Ev,_ZTv0_n24_N9S19113C13D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19113C13D0Ev,_ZTv0_n24_N9S19113C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19113C2__9S19113C139S19113C12__8S19113C1[] = {
  ABISELECT(1472,812),
  ABISELECT(800,428),
  ABISELECT(656,352),
  ABISELECT(160,92),
  ABISELECT(1472,812),
  (VTBL_ENTRY)&(_ZTI9S19113C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19113C13D1Ev,_ZTv0_n24_N9S19113C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19113C13D0Ev,_ZTv0_n24_N9S19113C13D0Ev),
};
extern void _ZN8S19113C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N9S19113C13D1Ev,_ZTv0_n20_N9S19113C13D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19113C13D0Ev,_ZTv0_n20_N9S19113C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19113C9__9S19113C139S19113C12__8S19113C1[] = {
  ABISELECT(672,384),
  0,
  ABISELECT(-144,-76),
  ABISELECT(672,384),
  (VTBL_ENTRY)&(_ZTI9S19113C13[0]),
  (VTBL_ENTRY)&_ZN8S19113C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19113C13D1Ev,_ZTv0_n20_N9S19113C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19113C13D0Ev,_ZTv0_n20_N9S19113C13D0Ev),
};
extern void _ZN9S19113C142v4Ev();
static  VTBL_ENTRY _tg__ZTV9S19113C14__9S19113C139S19113C12__8S19113C1[] = {
  0,
  ABISELECT(-1872,-980),
  (VTBL_ENTRY)&(_ZTI9S19113C13[0]),
  (VTBL_ENTRY)&_ZN9S19113C142v4Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19113C12D1Ev,_ZTv0_n16_N9S19113C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19113C12D0Ev,_ZTv0_n16_N9S19113C12D0Ev)();
extern void _ZN8S19113C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C5__9S19113C12__8S19113C1[] = {
  0,
  ABISELECT(1312,720),
  ABISELECT(496,260),
  ABISELECT(1312,720),
  (VTBL_ENTRY)&(_ZTI9S19113C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19113C12D1Ev,_ZTv0_n16_N9S19113C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19113C12D0Ev,_ZTv0_n16_N9S19113C12D0Ev),
  (VTBL_ENTRY)&_ZN8S19113C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19113C12D1Ev,_ZTv0_n12_N9S19113C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19113C12D0Ev,_ZTv0_n12_N9S19113C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19113C6__9S19113C12__8S19113C1[] = {
  ABISELECT(816,460),
  ABISELECT(816,460),
  (VTBL_ENTRY)&(_ZTI9S19113C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19113C12D1Ev,_ZTv0_n12_N9S19113C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19113C12D0Ev,_ZTv0_n12_N9S19113C12D0Ev),
};
extern void _ZN8S19113C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N9S19113C12D1Ev,_ZTv0_n20_N9S19113C12D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19113C12D0Ev,_ZTv0_n20_N9S19113C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19113C9__9S19113C12__8S19113C1[] = {
  ABISELECT(672,384),
  0,
  ABISELECT(-144,-76),
  ABISELECT(672,384),
  (VTBL_ENTRY)&(_ZTI9S19113C12[0]),
  (VTBL_ENTRY)&_ZN8S19113C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19113C12D1Ev,_ZTv0_n20_N9S19113C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19113C12D0Ev,_ZTv0_n20_N9S19113C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19113C12D1Ev,_ZTv0_n16_N9S19113C12D1Ev)();
extern void ABISELECT(_ZThn1520_N9S19113C12D1Ev,_ZThn796_N9S19113C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19113C12D0Ev,_ZTv0_n16_N9S19113C12D0Ev)();
extern void ABISELECT(_ZThn1520_N9S19113C12D0Ev,_ZThn796_N9S19113C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19113C8__9S19113C12__8S19113C1[] = {
  ABISELECT(-1520,-796),
  ABISELECT(256,132),
  ABISELECT(-1520,-796),
  (VTBL_ENTRY)&(_ZTI9S19113C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19113C12D1Ev,_ZTv0_n16_N9S19113C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19113C12D0Ev,_ZTv0_n16_N9S19113C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19113C12D1Ev,_ZTv0_n12_N9S19113C12D1Ev)();
extern void ABISELECT(_ZThn1776_N9S19113C12D1Ev,_ZThn928_N9S19113C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19113C12D0Ev,_ZTv0_n12_N9S19113C12D0Ev)();
extern void ABISELECT(_ZThn1776_N9S19113C12D0Ev,_ZThn928_N9S19113C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A3__9S19113C12__8S19113C1[] = {
  ABISELECT(-1776,-928),
  ABISELECT(-1776,-928),
  (VTBL_ENTRY)&(_ZTI9S19113C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19113C12D1Ev,_ZTv0_n12_N9S19113C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19113C12D0Ev,_ZTv0_n12_N9S19113C12D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19113C12D1Ev,_ZTv0_n24_N9S19113C12D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19113C12D0Ev,_ZTv0_n24_N9S19113C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19113C2__9S19113C12__8S19113C1[] = {
  ABISELECT(1472,812),
  ABISELECT(800,428),
  ABISELECT(656,352),
  ABISELECT(160,92),
  ABISELECT(1472,812),
  (VTBL_ENTRY)&(_ZTI9S19113C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19113C12D1Ev,_ZTv0_n24_N9S19113C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19113C12D0Ev,_ZTv0_n24_N9S19113C12D0Ev),
};
extern void _ZN9S19113C142v4Ev();
static  VTBL_ENTRY _tg__ZTV9S19113C14__9S19113C12__8S19113C1[] = {
  0,
  ABISELECT(-1872,-980),
  (VTBL_ENTRY)&(_ZTI9S19113C12[0]),
  (VTBL_ENTRY)&_ZN9S19113C142v4Ev,
};
extern void _ZN8S19113C8D1Ev();
extern void _ZN8S19113C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C8__8S19113C1[] = {
  ABISELECT(256,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S19113C8[0]),
  (VTBL_ENTRY)&_ZN8S19113C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19113C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19113C8D1Ev,_ZTv0_n12_N8S19113C8D1Ev)();
extern void ABISELECT(_ZThn256_N8S19113C8D1Ev,_ZThn132_N8S19113C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19113C8D0Ev,_ZTv0_n12_N8S19113C8D0Ev)();
extern void ABISELECT(_ZThn256_N8S19113C8D0Ev,_ZThn132_N8S19113C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__8S19113C8__8S19113C1[] = {
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  (VTBL_ENTRY)&(_ZTI8S19113C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C8D1Ev,_ZTv0_n12_N8S19113C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C8D0Ev,_ZTv0_n12_N8S19113C8D0Ev),
};
static  VTT_ENTRY vtt_S19113C1[] = {
  {&(_ZTV8S19113C1[12]),  12,94},
  {&(_ZTV8S19113C1[21]),  21,94},
  {&(_ZTV8S19113C1[28]),  28,94},
  {&(_ZTV8S19113C1[34]),  34,94},
  {&(_ZTV8S19113C1[41]),  41,94},
  {&(_ZTV8S19113C1[58]),  58,94},
  {&(_ZTV8S19113C1[77]),  77,94},
  {&(_ZTV8S19113C1[83]),  83,94},
  {&(_ZTV8S19113C1[88]),  88,94},
  {&(_ZTV8S19113C1[93]),  93,94},
  {&(_ZTV8S19113C1[64]),  64,94},
  {&(_tg__ZTV8S19113C2__8S19113C1[5]),  5,7},
  {&(_tg__ZTV8S19113C38S19113C2__8S19113C1[4]),  4,6},
  {&(_tg__ZTV8S19113C5__8S19113C38S19113C2__8S19113C1[5]),  5,8},
  {&(_tg__ZTV8S19113C6__8S19113C38S19113C2__8S19113C1[3]),  3,5},
  {&(_tg__ZTV8S19113C5__8S19113C2__8S19113C1[5]),  5,8},
  {&(_tg__ZTV8S19113C6__8S19113C2__8S19113C1[3]),  3,5},
  {&(_tg__ZTV8S19113C9__8S19113C2__8S19113C1[5]),  5,8},
  {&(_tg__ZTV8S19113C5__8S19113C1[3]),  3,6},
  {&(_tg__ZTV8S19113C6__8S19113C5__8S19113C1[3]),  3,5},
  {&(_tg__ZTV8S19113C9__8S19113C1[3]),  3,6},
  {&(_tg__ZTV8S19113C6__8S19113C9__8S19113C1[3]),  3,5},
  {&(_tg__ZTV9S19113C10__8S19113C1[11]),  11,15},
  {&(_tg__ZTV9S19113C12__9S19113C10__8S19113C1[11]),  11,13},
  {&(_tg__ZTV8S19113C5__9S19113C10__8S19113C1[5]),  5,8},
  {&(_tg__ZTV8S19113C6__9S19113C10__8S19113C1[3]),  3,5},
  {&(_tg__ZTV8S19113C9__9S19113C10__8S19113C1[5]),  5,8},
  {&(_tg__ZTV8S19113C8__9S19113C10__8S19113C1[4]),  4,6},
  {&(_tg__ZTV7S8033C7__A3__9S19113C10__8S19113C1[3]),  3,5},
  {&(_tg__ZTV8S19113C2__9S19113C10__8S19113C1[6]),  6,8},
  {&(_tg__ZTV9S19113C14__9S19113C10__8S19113C1[3]),  3,4},
  {&(_tg__ZTV9S19113C12__8S19113C1[10]),  10,12},
  {&(_tg__ZTV9S19113C139S19113C12__8S19113C1[10]),  10,12},
  {&(_tg__ZTV8S19113C8__9S19113C139S19113C12__8S19113C1[4]),  4,6},
  {&(_tg__ZTV7S8033C7__A1__9S19113C139S19113C12__8S19113C1[3]),  3,5},
  {&(_tg__ZTV8S19113C5__9S19113C139S19113C12__8S19113C1[5]),  5,8},
  {&(_tg__ZTV8S19113C6__A1__9S19113C139S19113C12__8S19113C1[3]),  3,5},
  {&(_tg__ZTV8S19113C2__9S19113C139S19113C12__8S19113C1[6]),  6,8},
  {&(_tg__ZTV8S19113C9__9S19113C139S19113C12__8S19113C1[5]),  5,8},
  {&(_tg__ZTV9S19113C14__9S19113C139S19113C12__8S19113C1[3]),  3,4},
  {&(_tg__ZTV8S19113C5__9S19113C12__8S19113C1[5]),  5,8},
  {&(_tg__ZTV8S19113C6__9S19113C12__8S19113C1[3]),  3,5},
  {&(_tg__ZTV8S19113C9__9S19113C12__8S19113C1[5]),  5,8},
  {&(_tg__ZTV8S19113C8__9S19113C12__8S19113C1[4]),  4,6},
  {&(_tg__ZTV7S8033C7__A3__9S19113C12__8S19113C1[3]),  3,5},
  {&(_tg__ZTV8S19113C2__9S19113C12__8S19113C1[6]),  6,8},
  {&(_tg__ZTV9S19113C14__9S19113C12__8S19113C1[3]),  3,4},
  {&(_tg__ZTV8S19113C8__8S19113C1[3]),  3,5},
  {&(_tg__ZTV7S8033C7__A1__8S19113C8__8S19113C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19113C1[];
extern  VTBL_ENTRY _ZTV8S19113C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19113C1[];
static VTBL_ENTRY alt_thunk_names71[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19113C8D0Ev,_ZTv0_n12_N8S19113C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19113C8D0Ev,_ZThn132_N8S19113C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19113C8D1Ev,_ZTv0_n12_N8S19113C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19113C8D1Ev,_ZThn132_N8S19113C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19113C12D0Ev,_ZTv0_n12_N9S19113C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1776_N9S19113C12D0Ev,_ZThn928_N9S19113C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19113C12D1Ev,_ZTv0_n12_N9S19113C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1776_N9S19113C12D1Ev,_ZThn928_N9S19113C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19113C12D0Ev,_ZTv0_n16_N9S19113C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N9S19113C12D0Ev,_ZThn796_N9S19113C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19113C12D1Ev,_ZTv0_n16_N9S19113C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N9S19113C12D1Ev,_ZThn796_N9S19113C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19113C13D0Ev,_ZTv0_n12_N9S19113C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1776_N9S19113C13D0Ev,_ZThn928_N9S19113C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19113C13D1Ev,_ZTv0_n12_N9S19113C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1776_N9S19113C13D1Ev,_ZThn928_N9S19113C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19113C13D0Ev,_ZTv0_n16_N9S19113C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N9S19113C13D0Ev,_ZThn796_N9S19113C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19113C13D1Ev,_ZTv0_n16_N9S19113C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N9S19113C13D1Ev,_ZThn796_N9S19113C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19113C10D0Ev,_ZTv0_n12_N9S19113C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2400_N9S19113C10D0Ev,_ZThn1284_N9S19113C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19113C10D1Ev,_ZTv0_n12_N9S19113C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2400_N9S19113C10D1Ev,_ZThn1284_N9S19113C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19113C10D0Ev,_ZTv0_n16_N9S19113C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2144_N9S19113C10D0Ev,_ZThn1152_N9S19113C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19113C10D1Ev,_ZTv0_n16_N9S19113C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2144_N9S19113C10D1Ev,_ZThn1152_N9S19113C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19113C10D0Ev,_ZTv0_n44_N9S19113C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn624_N9S19113C10D0Ev,_ZThn356_N9S19113C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19113C10D1Ev,_ZTv0_n44_N9S19113C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn624_N9S19113C10D1Ev,_ZThn356_N9S19113C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19113C5D0Ev,_ZTv0_n12_N8S19113C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19113C5D0Ev,_ZThn260_N8S19113C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19113C5D1Ev,_ZTv0_n12_N8S19113C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19113C5D1Ev,_ZThn260_N8S19113C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19113C2D0Ev,_ZTv0_n20_N8S19113C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn800_N8S19113C2D0Ev,_ZThn428_N8S19113C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19113C2D1Ev,_ZTv0_n20_N8S19113C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn800_N8S19113C2D1Ev,_ZThn428_N8S19113C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19113C2D0Ev,_ZTv0_n12_N8S19113C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S19113C2D0Ev,_ZThn352_N8S19113C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19113C2D1Ev,_ZTv0_n12_N8S19113C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S19113C2D1Ev,_ZThn352_N8S19113C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19113C2D0Ev,_ZTv0_n16_N8S19113C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19113C2D0Ev,_ZThn92_N8S19113C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19113C2D1Ev,_ZTv0_n16_N8S19113C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19113C2D1Ev,_ZThn92_N8S19113C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19113C3D0Ev,_ZTv0_n12_N8S19113C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S19113C3D0Ev,_ZThn352_N8S19113C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19113C3D1Ev,_ZTv0_n12_N8S19113C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S19113C3D1Ev,_ZThn352_N8S19113C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19113C3D0Ev,_ZTv0_n16_N8S19113C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19113C3D0Ev,_ZThn92_N8S19113C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19113C3D1Ev,_ZTv0_n16_N8S19113C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19113C3D1Ev,_ZThn92_N8S19113C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19113C1D0Ev,_ZTv0_n44_N8S19113C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7520_N8S19113C1D0Ev,_ZThn4024_N8S19113C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19113C1D1Ev,_ZTv0_n44_N8S19113C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7520_N8S19113C1D1Ev,_ZThn4024_N8S19113C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N8S19113C1D0Ev,_ZTv0_n56_N8S19113C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6896_N8S19113C1D0Ev,_ZThn3668_N8S19113C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N8S19113C1D1Ev,_ZTv0_n56_N8S19113C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6896_N8S19113C1D1Ev,_ZThn3668_N8S19113C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19113C1D0Ev,_ZTv0_n20_N8S19113C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6848_N8S19113C1D0Ev,_ZThn3640_N8S19113C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19113C1D1Ev,_ZTv0_n20_N8S19113C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6848_N8S19113C1D1Ev,_ZThn3640_N8S19113C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19113C1D0Ev,_ZTv0_n12_N8S19113C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9296_N8S19113C1D0Ev,_ZThn4952_N8S19113C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn6704_N8S19113C1D0Ev,_ZThn3564_N8S19113C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19113C1D1Ev,_ZTv0_n12_N8S19113C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9296_N8S19113C1D1Ev,_ZThn4952_N8S19113C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn6704_N8S19113C1D1Ev,_ZThn3564_N8S19113C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19113C1D0Ev,_ZTv0_n16_N8S19113C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9040_N8S19113C1D0Ev,_ZThn4820_N8S19113C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn6208_N8S19113C1D0Ev,_ZThn3304_N8S19113C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19113C1D1Ev,_ZTv0_n16_N8S19113C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9040_N8S19113C1D1Ev,_ZThn4820_N8S19113C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn6208_N8S19113C1D1Ev,_ZThn3304_N8S19113C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19113C1D0Ev,_ZTv0_n24_N8S19113C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6048_N8S19113C1D0Ev,_ZThn3212_N8S19113C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19113C1D1Ev,_ZTv0_n24_N8S19113C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6048_N8S19113C1D1Ev,_ZThn3212_N8S19113C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19113C1 = {  "S19113C1", // class name
  bases_S19113C1, 20,
  &(vtc_S19113C1[0]), // expected_vtbl_contents
  &(vtt_S19113C1[0]), // expected_vtt_contents
  ABISELECT(9584,5100), // object size
  NSPAIRA(_ZTI8S19113C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19113C1),94, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19113C1),49, //virtual table table var
  18, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names71,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19112C6  : S8033C7 {
  void *s19112c6f0;
  ::S20291C14_nt s19112c6f1;
  void *s19112c6f2;
  long double s19112c6f3;
  ~S19112C6(); // tgen
  S19112C6(); // tgen
};
//SIG(-1 S19112C6) C1{ BC2{ vd m Fc Fc:0 Fl[8] FD} Fp FC3{} Fp FD}


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

static void Test_S19112C6()
{
  extern Class_Descriptor cd_S19112C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(10,20)];
    init_test(&cd_S19112C6, buf);
    S19112C6 *dp, &lv = *(dp=new (buf) S19112C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,76), "sizeof(S19112C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19112C6)");
    check_base_class_offset(lv, (S8033C7*), 0, "S19112C6");
    check_field_offset(lv, s19112c6f0, ABISELECT(96,52), "S19112C6.s19112c6f0");
    check_field_offset(lv, s19112c6f1, ABISELECT(104,56), "S19112C6.s19112c6f1");
    check_field_offset(lv, s19112c6f2, ABISELECT(112,60), "S19112C6.s19112c6f2");
    check_field_offset(lv, s19112c6f3, ABISELECT(128,64), "S19112C6.s19112c6f3");
    test_class_info(&lv, &cd_S19112C6);
    dp->~S19112C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19112C6(Test_S19112C6, "S19112C6", ABISELECT(144,76));

#else // __cplusplus

extern void _ZN8S19112C6C1Ev();
extern void _ZN8S19112C6D1Ev();
Name_Map name_map_S19112C6[] = {
  NSPAIR(_ZN8S19112C6C1Ev),
  NSPAIR(_ZN8S19112C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
static Base_Class bases_S19112C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19112C6[];
extern void _ZN8S19112C6D1Ev();
extern void _ZN8S19112C6D0Ev();
static  VTBL_ENTRY vtc_S19112C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19112C6[0]),
  (VTBL_ENTRY)&_ZN8S19112C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19112C6D0Ev,
};
extern VTBL_ENTRY _ZTI8S19112C6[];
extern  VTBL_ENTRY _ZTV8S19112C6[];
Class_Descriptor cd_S19112C6 = {  "S19112C6", // class name
  bases_S19112C6, 1,
  &(vtc_S19112C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,76), // object size
  NSPAIRA(_ZTI8S19112C6),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19112C6),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19112C8  : S19112C6 , virtual S8033C7 {
  ::S8033C7 s19112c8f0;
  void *s19112c8f1;
  virtual  ~S19112C8(); // _ZN8S19112C8D2Ev
  S19112C8(); // tgen
};
//SIG(-1 S19112C8) C1{ BC2{ BC3{ vd m Fc Fc:0 Fl[8] FD} Fp FC4{} Fp FD} VBC3 vd FC3 Fp}


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

static void Test_S19112C8()
{
  extern Class_Descriptor cd_S19112C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(23,47)];
    init_test(&cd_S19112C8, buf);
    S19112C8 *dp, &lv = *(dp=new (buf) S19112C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(352,184), "sizeof(S19112C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19112C8)");
    check_base_class_offset(lv, (S8033C7*)(S19112C6*), 0, "S19112C8");
    check_base_class_offset(lv, (S19112C6*), 0, "S19112C8");
    /*is_ambiguous_... S19112C8::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*), ABISELECT(256,132), "S19112C8");
    check_field_offset(lv, s19112c8f0, ABISELECT(144,76), "S19112C8.s19112c8f0");
    check_field_offset(lv, s19112c8f1, ABISELECT(240,128), "S19112C8.s19112c8f1");
    test_class_info(&lv, &cd_S19112C8);
    dp->~S19112C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19112C8(Test_S19112C8, "S19112C8", ABISELECT(352,184));

#else // __cplusplus

extern void _ZN8S19112C8C1Ev();
extern void _ZN8S19112C8D2Ev();
Name_Map name_map_S19112C8[] = {
  NSPAIR(_ZN8S19112C8C1Ev),
  NSPAIR(_ZN8S19112C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19112C6;
extern VTBL_ENTRY _ZTI8S19112C6[];
extern  VTBL_ENTRY _ZTV8S19112C6[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
static Base_Class bases_S19112C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19112C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S8033C7,    ABISELECT(256,132), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19112C8[];
extern void _ZN8S19112C8D1Ev();
extern void _ZN8S19112C8D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S19112C8D1Ev,_ZTv0_n12_N8S19112C8D1Ev)();
extern void ABISELECT(_ZThn256_N8S19112C8D1Ev,_ZThn132_N8S19112C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19112C8D0Ev,_ZTv0_n12_N8S19112C8D0Ev)();
extern void ABISELECT(_ZThn256_N8S19112C8D0Ev,_ZThn132_N8S19112C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19112C8[] = {
  ABISELECT(256,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S19112C8[0]),
  (VTBL_ENTRY)&_ZN8S19112C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19112C8D0Ev,
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  (VTBL_ENTRY)&(_ZTI8S19112C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C8D1Ev,_ZTv0_n12_N8S19112C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C8D0Ev,_ZTv0_n12_N8S19112C8D0Ev),
};
extern VTBL_ENTRY _ZTV8S19112C8[];
static  VTT_ENTRY vtt_S19112C8[] = {
  {&(_ZTV8S19112C8[3]),  3,10},
  {&(_ZTV8S19112C8[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S19112C8[];
extern  VTBL_ENTRY _ZTV8S19112C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19112C8[];
static VTBL_ENTRY alt_thunk_names72[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19112C8D0Ev,_ZTv0_n12_N8S19112C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19112C8D0Ev,_ZThn132_N8S19112C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19112C8D1Ev,_ZTv0_n12_N8S19112C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19112C8D1Ev,_ZThn132_N8S19112C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19112C8 = {  "S19112C8", // class name
  bases_S19112C8, 3,
  &(vtc_S19112C8[0]), // expected_vtbl_contents
  &(vtt_S19112C8[0]), // expected_vtt_contents
  ABISELECT(352,184), // object size
  NSPAIRA(_ZTI8S19112C8),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19112C8),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19112C8),2, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names72,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19112C5  : S8033C7 , virtual S19112C6 {
  int s19112c5f0;
  char s19112c5f1;
  void *s19112c5f2;
  int s19112c5f3;
  void *s19112c5f4[2];
  ::S19112C8 s19112c5f5;
  virtual  ~S19112C5(); // _ZN8S19112C5D2Ev
  virtual void  v2(); // _ZN8S19112C52v2Ev
  S19112C5(); // tgen
};
//SIG(-1 S19112C5) C1{ BC2{ vd m Fc Fc:0 Fl[8] FD} VBC3{ BC2 Fp FC4{} Fp FD} vd v1 Fi Fc Fp Fi Fp[2] FC5{ BC3 VBC2 vd FC2 Fp}}


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

static void Test_S19112C5()
{
  extern Class_Descriptor cd_S19112C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(41,85)];
    init_test(&cd_S19112C5, buf);
    S19112C5 *dp, &lv = *(dp=new (buf) S19112C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(640,336), "sizeof(S19112C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19112C5)");
    /*is_ambiguous_... S19112C5::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*), 0, "S19112C5");
    check_base_class_offset(lv, (S8033C7*)(S19112C6*), ABISELECT(496,260), "S19112C5");
    check_base_class_offset(lv, (S19112C6*), ABISELECT(496,260), "S19112C5");
    check_field_offset(lv, s19112c5f0, ABISELECT(96,52), "S19112C5.s19112c5f0");
    check_field_offset(lv, s19112c5f1, ABISELECT(100,56), "S19112C5.s19112c5f1");
    check_field_offset(lv, s19112c5f2, ABISELECT(104,60), "S19112C5.s19112c5f2");
    check_field_offset(lv, s19112c5f3, ABISELECT(112,64), "S19112C5.s19112c5f3");
    check_field_offset(lv, s19112c5f4, ABISELECT(120,68), "S19112C5.s19112c5f4");
    check_field_offset(lv, s19112c5f5, ABISELECT(144,76), "S19112C5.s19112c5f5");
    test_class_info(&lv, &cd_S19112C5);
    dp->~S19112C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19112C5(Test_S19112C5, "S19112C5", ABISELECT(640,336));

#else // __cplusplus

extern void _ZN8S19112C5C1Ev();
extern void _ZN8S19112C5D2Ev();
Name_Map name_map_S19112C5[] = {
  NSPAIR(_ZN8S19112C5C1Ev),
  NSPAIR(_ZN8S19112C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19112C6;
extern VTBL_ENTRY _ZTI8S19112C6[];
extern  VTBL_ENTRY _ZTV8S19112C6[];
static Base_Class bases_S19112C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S8033C7,    ABISELECT(496,260), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19112C6,    ABISELECT(496,260), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19112C5[];
extern void _ZN8S19112C5D1Ev();
extern void _ZN8S19112C5D0Ev();
extern void _ZN8S19112C52v2Ev();
extern void ABISELECT(_ZTv0_n24_N8S19112C5D1Ev,_ZTv0_n12_N8S19112C5D1Ev)();
extern void ABISELECT(_ZThn496_N8S19112C5D1Ev,_ZThn260_N8S19112C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19112C5D0Ev,_ZTv0_n12_N8S19112C5D0Ev)();
extern void ABISELECT(_ZThn496_N8S19112C5D0Ev,_ZThn260_N8S19112C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19112C5[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19112C5[0]),
  (VTBL_ENTRY)&_ZN8S19112C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19112C5D0Ev,
  (VTBL_ENTRY)&_ZN8S19112C52v2Ev,
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI8S19112C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C5D1Ev,_ZTv0_n12_N8S19112C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C5D0Ev,_ZTv0_n12_N8S19112C5D0Ev),
};
extern VTBL_ENTRY _ZTV8S19112C5[];
static  VTT_ENTRY vtt_S19112C5[] = {
  {&(_ZTV8S19112C5[3]),  3,11},
  {&(_ZTV8S19112C5[9]),  9,11},
};
extern VTBL_ENTRY _ZTI8S19112C5[];
extern  VTBL_ENTRY _ZTV8S19112C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19112C5[];
static VTBL_ENTRY alt_thunk_names73[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19112C5D0Ev,_ZTv0_n12_N8S19112C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19112C5D0Ev,_ZThn260_N8S19112C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19112C5D1Ev,_ZTv0_n12_N8S19112C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19112C5D1Ev,_ZThn260_N8S19112C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19112C5 = {  "S19112C5", // class name
  bases_S19112C5, 3,
  &(vtc_S19112C5[0]), // expected_vtbl_contents
  &(vtt_S19112C5[0]), // expected_vtt_contents
  ABISELECT(640,336), // object size
  NSPAIRA(_ZTI8S19112C5),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19112C5),11, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19112C5),2, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names73,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19112C3  : S8033C7 , virtual S19112C5 {
  void *s19112c3f0;
  __tsi64 s19112c3f1;
  long s19112c3f2;
  char s19112c3f3;
  void *s19112c3f4;
  int s19112c3f5;
  virtual  ~S19112C3(); // _ZN8S19112C3D2Ev
  S19112C3(); // tgen
};
//SIG(-1 S19112C3) C1{ BC2{ vd m Fc Fc:0 Fl[8] FD} VBC3{ BC2 VBC4{ BC2 Fp FC5{} Fp FD} vd v1 Fi Fc Fp Fi Fp[2] FC6{ BC4 VBC2 vd FC2 Fp}} vd Fp FL Fl Fc Fp Fi}


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

static void Test_S19112C3()
{
  extern Class_Descriptor cd_S19112C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(50,105)];
    init_test(&cd_S19112C3, buf);
    S19112C3 *dp, &lv = *(dp=new (buf) S19112C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(784,416), "sizeof(S19112C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19112C3)");
    /*is_ambiguous_... S19112C3::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*), 0, "S19112C3");
    /*is_ambiguous_... S19112C5::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19112C5*), ABISELECT(144,80), "S19112C3");
    check_base_class_offset(lv, (S8033C7*)(S19112C6*), ABISELECT(640,340), "S19112C3");
    check_base_class_offset(lv, (S19112C6*)(S19112C5*), ABISELECT(640,340), "S19112C3");
    check_base_class_offset(lv, (S19112C5*), ABISELECT(144,80), "S19112C3");
    check_field_offset(lv, s19112c3f0, ABISELECT(96,52), "S19112C3.s19112c3f0");
    check_field_offset(lv, s19112c3f1, ABISELECT(104,56), "S19112C3.s19112c3f1");
    check_field_offset(lv, s19112c3f2, ABISELECT(112,64), "S19112C3.s19112c3f2");
    check_field_offset(lv, s19112c3f3, ABISELECT(120,68), "S19112C3.s19112c3f3");
    check_field_offset(lv, s19112c3f4, ABISELECT(128,72), "S19112C3.s19112c3f4");
    check_field_offset(lv, s19112c3f5, ABISELECT(136,76), "S19112C3.s19112c3f5");
    test_class_info(&lv, &cd_S19112C3);
    dp->~S19112C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19112C3(Test_S19112C3, "S19112C3", ABISELECT(784,416));

#else // __cplusplus

extern void _ZN8S19112C3C1Ev();
extern void _ZN8S19112C3D2Ev();
Name_Map name_map_S19112C3[] = {
  NSPAIR(_ZN8S19112C3C1Ev),
  NSPAIR(_ZN8S19112C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19112C6;
extern VTBL_ENTRY _ZTI8S19112C6[];
extern  VTBL_ENTRY _ZTV8S19112C6[];
extern Class_Descriptor cd_S19112C5;
extern VTBL_ENTRY _ZTI8S19112C5[];
extern  VTBL_ENTRY _ZTV8S19112C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19112C5[];
static Base_Class bases_S19112C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S8033C7,    ABISELECT(144,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(640,340), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19112C6,    ABISELECT(640,340), //bcp->offset
    14, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19112C5,    ABISELECT(144,80), //bcp->offset
    6, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19112C3[];
extern void _ZN8S19112C3D1Ev();
extern void _ZN8S19112C3D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S19112C3D1Ev,_ZTv0_n16_N8S19112C3D1Ev)();
extern void ABISELECT(_ZThn144_N8S19112C3D1Ev,_ZThn80_N8S19112C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19112C3D0Ev,_ZTv0_n16_N8S19112C3D0Ev)();
extern void ABISELECT(_ZThn144_N8S19112C3D0Ev,_ZThn80_N8S19112C3D0Ev)() __attribute__((weak));
extern void _ZN8S19112C52v2Ev();
extern void ABISELECT(_ZTv0_n24_N8S19112C3D1Ev,_ZTv0_n12_N8S19112C3D1Ev)();
extern void ABISELECT(_ZThn640_N8S19112C3D1Ev,_ZThn340_N8S19112C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19112C3D0Ev,_ZTv0_n12_N8S19112C3D0Ev)();
extern void ABISELECT(_ZThn640_N8S19112C3D0Ev,_ZThn340_N8S19112C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19112C3[] = {
  ABISELECT(640,340),
  ABISELECT(144,80),
  0,
  (VTBL_ENTRY)&(_ZTI8S19112C3[0]),
  (VTBL_ENTRY)&_ZN8S19112C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19112C3D0Ev,
  0,
  ABISELECT(-144,-80),
  ABISELECT(496,260),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI8S19112C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19112C3D1Ev,_ZTv0_n16_N8S19112C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19112C3D0Ev,_ZTv0_n16_N8S19112C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19112C52v2Ev,
  ABISELECT(-640,-340),
  ABISELECT(-640,-340),
  (VTBL_ENTRY)&(_ZTI8S19112C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C3D1Ev,_ZTv0_n12_N8S19112C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C3D0Ev,_ZTv0_n12_N8S19112C3D0Ev),
};
extern VTBL_ENTRY _ZTV8S19112C3[];
extern void _ZN8S19112C5D1Ev();
extern void _ZN8S19112C5D0Ev();
extern void _ZN8S19112C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C5__8S19112C3[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19112C5[0]),
  (VTBL_ENTRY)&_ZN8S19112C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19112C5D0Ev,
  (VTBL_ENTRY)&_ZN8S19112C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19112C5D1Ev,_ZTv0_n12_N8S19112C5D1Ev)();
extern void ABISELECT(_ZThn496_N8S19112C5D1Ev,_ZThn260_N8S19112C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19112C5D0Ev,_ZTv0_n12_N8S19112C5D0Ev)();
extern void ABISELECT(_ZThn496_N8S19112C5D0Ev,_ZThn260_N8S19112C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19112C6__8S19112C5__8S19112C3[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI8S19112C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C5D1Ev,_ZTv0_n12_N8S19112C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C5D0Ev,_ZTv0_n12_N8S19112C5D0Ev),
};
static  VTT_ENTRY vtt_S19112C3[] = {
  {&(_ZTV8S19112C3[4]),  4,19},
  {&(_ZTV8S19112C3[11]),  11,19},
  {&(_ZTV8S19112C3[17]),  17,19},
  {&(_tg__ZTV8S19112C5__8S19112C3[3]),  3,6},
  {&(_tg__ZTV8S19112C6__8S19112C5__8S19112C3[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19112C3[];
extern  VTBL_ENTRY _ZTV8S19112C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19112C3[];
static VTBL_ENTRY alt_thunk_names74[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19112C5D0Ev,_ZTv0_n12_N8S19112C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19112C5D0Ev,_ZThn260_N8S19112C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19112C5D1Ev,_ZTv0_n12_N8S19112C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19112C5D1Ev,_ZThn260_N8S19112C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19112C3D0Ev,_ZTv0_n12_N8S19112C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N8S19112C3D0Ev,_ZThn340_N8S19112C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19112C3D1Ev,_ZTv0_n12_N8S19112C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N8S19112C3D1Ev,_ZThn340_N8S19112C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19112C3D0Ev,_ZTv0_n16_N8S19112C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S19112C3D0Ev,_ZThn80_N8S19112C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19112C3D1Ev,_ZTv0_n16_N8S19112C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S19112C3D1Ev,_ZThn80_N8S19112C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19112C3 = {  "S19112C3", // class name
  bases_S19112C3, 5,
  &(vtc_S19112C3[0]), // expected_vtbl_contents
  &(vtt_S19112C3[0]), // expected_vtt_contents
  ABISELECT(784,416), // object size
  NSPAIRA(_ZTI8S19112C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19112C3),19, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19112C3),5, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names74,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19112C9  : virtual S19112C6 {
  char s19112c9f0;
  short s19112c9f1;
  long double s19112c9f2;
  void *s19112c9f3[2];
  virtual void  v3(); // _ZN8S19112C92v3Ev
  ~S19112C9(); // tgen
  S19112C9(); // tgen
};
//SIG(-1 S19112C9) C1{ VBC2{ BC3{ vd m Fc Fc:0 Fl[8] FD} Fp FC4{} Fp FD} v1 Fc Fs FD Fp[2]}


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

static void Test_S19112C9()
{
  extern Class_Descriptor cd_S19112C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,27)];
    init_test(&cd_S19112C9, buf);
    S19112C9 *dp, &lv = *(dp=new (buf) S19112C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,104), "sizeof(S19112C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19112C9)");
    check_base_class_offset(lv, (S8033C7*)(S19112C6*), ABISELECT(48,28), "S19112C9");
    check_base_class_offset(lv, (S19112C6*), ABISELECT(48,28), "S19112C9");
    check_field_offset(lv, s19112c9f0, ABISELECT(8,4), "S19112C9.s19112c9f0");
    check_field_offset(lv, s19112c9f1, ABISELECT(10,6), "S19112C9.s19112c9f1");
    check_field_offset(lv, s19112c9f2, ABISELECT(16,8), "S19112C9.s19112c9f2");
    check_field_offset(lv, s19112c9f3, ABISELECT(32,20), "S19112C9.s19112c9f3");
    test_class_info(&lv, &cd_S19112C9);
    dp->~S19112C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19112C9(Test_S19112C9, "S19112C9", ABISELECT(192,104));

#else // __cplusplus

extern void _ZN8S19112C9C1Ev();
extern void _ZN8S19112C9D1Ev();
Name_Map name_map_S19112C9[] = {
  NSPAIR(_ZN8S19112C9C1Ev),
  NSPAIR(_ZN8S19112C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19112C6;
extern VTBL_ENTRY _ZTI8S19112C6[];
extern  VTBL_ENTRY _ZTV8S19112C6[];
static Base_Class bases_S19112C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19112C6,    ABISELECT(48,28), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19112C9[];
extern void _ZN8S19112C92v3Ev();
extern void _ZN8S19112C9D1Ev();
extern void _ZN8S19112C9D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S19112C9D1Ev,_ZTv0_n12_N8S19112C9D1Ev)();
extern void ABISELECT(_ZThn48_N8S19112C9D1Ev,_ZThn28_N8S19112C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19112C9D0Ev,_ZTv0_n12_N8S19112C9D0Ev)();
extern void ABISELECT(_ZThn48_N8S19112C9D0Ev,_ZThn28_N8S19112C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19112C9[] = {
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19112C9[0]),
  (VTBL_ENTRY)&_ZN8S19112C92v3Ev,
  (VTBL_ENTRY)&_ZN8S19112C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19112C9D0Ev,
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19112C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C9D1Ev,_ZTv0_n12_N8S19112C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C9D0Ev,_ZTv0_n12_N8S19112C9D0Ev),
};
extern VTBL_ENTRY _ZTV8S19112C9[];
static  VTT_ENTRY vtt_S19112C9[] = {
  {&(_ZTV8S19112C9[3]),  3,11},
  {&(_ZTV8S19112C9[9]),  9,11},
};
extern VTBL_ENTRY _ZTI8S19112C9[];
extern  VTBL_ENTRY _ZTV8S19112C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19112C9[];
static VTBL_ENTRY alt_thunk_names75[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19112C9D0Ev,_ZTv0_n12_N8S19112C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19112C9D0Ev,_ZThn28_N8S19112C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19112C9D1Ev,_ZTv0_n12_N8S19112C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19112C9D1Ev,_ZThn28_N8S19112C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19112C9 = {  "S19112C9", // class name
  bases_S19112C9, 2,
  &(vtc_S19112C9[0]), // expected_vtbl_contents
  &(vtt_S19112C9[0]), // expected_vtt_contents
  ABISELECT(192,104), // object size
  NSPAIRA(_ZTI8S19112C9),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19112C9),11, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19112C9),2, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names75,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19112C2  : S19112C3 , virtual S19112C9 {
  char s19112c2f0;
  __tsi64 s19112c2f1:35;
  virtual  ~S19112C2(); // _ZN8S19112C2D2Ev
  S19112C2(); // tgen
};
//SIG(-1 S19112C2) C1{ BC2{ BC3{ vd m Fc Fc:0 Fl[8] FD} VBC4{ BC3 VBC5{ BC3 Fp FC6{} Fp FD} vd v1 Fi Fc Fp Fi Fp[2] FC7{ BC5 VBC3 vd FC3 Fp}} vd Fp FL Fl Fc Fp Fi} VBC8{ VBC5 v2 Fc Fs FD Fp[2]} vd Fc FL:35}


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

static void Test_S19112C2()
{
  extern Class_Descriptor cd_S19112C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(54,114)];
    init_test(&cd_S19112C2, buf);
    S19112C2 *dp, &lv = *(dp=new (buf) S19112C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(848,452), "sizeof(S19112C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19112C2)");
    /*is_ambiguous_... S19112C3::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19112C3*), 0, "S19112C2");
    /*is_ambiguous_... S19112C5::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19112C5*), ABISELECT(160,88), "S19112C2");
    check_base_class_offset(lv, (S8033C7*)(S19112C6*), ABISELECT(656,348), "S19112C2");
    check_base_class_offset(lv, (S19112C6*)(S19112C5*), ABISELECT(656,348), "S19112C2");
    check_base_class_offset(lv, (S19112C6*)(S19112C9*), ABISELECT(656,348), "S19112C2");
    check_base_class_offset(lv, (S19112C5*)(S19112C3*), ABISELECT(160,88), "S19112C2");
    check_base_class_offset(lv, (S19112C3*), 0, "S19112C2");
    check_base_class_offset(lv, (S19112C9*), ABISELECT(800,424), "S19112C2");
    check_field_offset(lv, s19112c2f0, ABISELECT(140,80), "S19112C2.s19112c2f0");
    set_bf_and_test(lv, s19112c2f1, ABISELECT(144,81), 0, 35, 1, "S19112C2");
    set_bf_and_test(lv, s19112c2f1, ABISELECT(144,81), 0, 35, hide_sll(1LL<<34), "S19112C2");
    test_class_info(&lv, &cd_S19112C2);
    dp->~S19112C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19112C2(Test_S19112C2, "S19112C2", ABISELECT(848,452));

#else // __cplusplus

extern void _ZN8S19112C2C1Ev();
extern void _ZN8S19112C2D2Ev();
Name_Map name_map_S19112C2[] = {
  NSPAIR(_ZN8S19112C2C1Ev),
  NSPAIR(_ZN8S19112C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19112C6;
extern VTBL_ENTRY _ZTI8S19112C6[];
extern  VTBL_ENTRY _ZTV8S19112C6[];
extern Class_Descriptor cd_S19112C5;
extern VTBL_ENTRY _ZTI8S19112C5[];
extern  VTBL_ENTRY _ZTV8S19112C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19112C5[];
extern Class_Descriptor cd_S19112C3;
extern VTBL_ENTRY _ZTI8S19112C3[];
extern  VTBL_ENTRY _ZTV8S19112C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19112C3[];
extern Class_Descriptor cd_S19112C9;
extern VTBL_ENTRY _ZTI8S19112C9[];
extern  VTBL_ENTRY _ZTV8S19112C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19112C9[];
static Base_Class bases_S19112C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(656,348), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19112C6,    ABISELECT(656,348), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19112C5,    ABISELECT(160,88), //bcp->offset
    7, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19112C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19112C9,    ABISELECT(800,424), //bcp->offset
    20, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19112C2[];
extern void _ZN8S19112C2D1Ev();
extern void _ZN8S19112C2D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S19112C2D1Ev,_ZTv0_n16_N8S19112C2D1Ev)();
extern void ABISELECT(_ZThn160_N8S19112C2D1Ev,_ZThn88_N8S19112C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19112C2D0Ev,_ZTv0_n16_N8S19112C2D0Ev)();
extern void ABISELECT(_ZThn160_N8S19112C2D0Ev,_ZThn88_N8S19112C2D0Ev)() __attribute__((weak));
extern void _ZN8S19112C52v2Ev();
extern void ABISELECT(_ZTv0_n24_N8S19112C2D1Ev,_ZTv0_n12_N8S19112C2D1Ev)();
extern void ABISELECT(_ZThn656_N8S19112C2D1Ev,_ZThn348_N8S19112C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19112C2D0Ev,_ZTv0_n12_N8S19112C2D0Ev)();
extern void ABISELECT(_ZThn656_N8S19112C2D0Ev,_ZThn348_N8S19112C2D0Ev)() __attribute__((weak));
extern void _ZN8S19112C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N8S19112C2D1Ev,_ZTv0_n20_N8S19112C2D1Ev)();
extern void ABISELECT(_ZThn800_N8S19112C2D1Ev,_ZThn424_N8S19112C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19112C2D0Ev,_ZTv0_n20_N8S19112C2D0Ev)();
extern void ABISELECT(_ZThn800_N8S19112C2D0Ev,_ZThn424_N8S19112C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19112C2[] = {
  ABISELECT(800,424),
  ABISELECT(656,348),
  ABISELECT(160,88),
  0,
  (VTBL_ENTRY)&(_ZTI8S19112C2[0]),
  (VTBL_ENTRY)&_ZN8S19112C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19112C2D0Ev,
  0,
  ABISELECT(-160,-88),
  ABISELECT(496,260),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S19112C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19112C2D1Ev,_ZTv0_n16_N8S19112C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19112C2D0Ev,_ZTv0_n16_N8S19112C2D0Ev),
  (VTBL_ENTRY)&_ZN8S19112C52v2Ev,
  ABISELECT(-656,-348),
  ABISELECT(-656,-348),
  (VTBL_ENTRY)&(_ZTI8S19112C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C2D1Ev,_ZTv0_n12_N8S19112C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C2D0Ev,_ZTv0_n12_N8S19112C2D0Ev),
  ABISELECT(-800,-424),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-800,-424),
  (VTBL_ENTRY)&(_ZTI8S19112C2[0]),
  (VTBL_ENTRY)&_ZN8S19112C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19112C2D1Ev,_ZTv0_n20_N8S19112C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19112C2D0Ev,_ZTv0_n20_N8S19112C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S19112C2[];
extern void _ZN8S19112C3D1Ev();
extern void _ZN8S19112C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C3__8S19112C2[] = {
  ABISELECT(656,348),
  ABISELECT(160,88),
  0,
  (VTBL_ENTRY)&(_ZTI8S19112C3[0]),
  (VTBL_ENTRY)&_ZN8S19112C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19112C3D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19112C3D1Ev,_ZTv0_n16_N8S19112C3D1Ev)();
extern void ABISELECT(_ZThn160_N8S19112C3D1Ev,_ZThn88_N8S19112C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19112C3D0Ev,_ZTv0_n16_N8S19112C3D0Ev)();
extern void ABISELECT(_ZThn160_N8S19112C3D0Ev,_ZThn88_N8S19112C3D0Ev)() __attribute__((weak));
extern void _ZN8S19112C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C5__8S19112C3__8S19112C2[] = {
  0,
  ABISELECT(-160,-88),
  ABISELECT(496,260),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S19112C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19112C3D1Ev,_ZTv0_n16_N8S19112C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19112C3D0Ev,_ZTv0_n16_N8S19112C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19112C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19112C3D1Ev,_ZTv0_n12_N8S19112C3D1Ev)();
extern void ABISELECT(_ZThn656_N8S19112C3D1Ev,_ZThn348_N8S19112C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19112C3D0Ev,_ZTv0_n12_N8S19112C3D0Ev)();
extern void ABISELECT(_ZThn656_N8S19112C3D0Ev,_ZThn348_N8S19112C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19112C6__8S19112C3__8S19112C2[] = {
  ABISELECT(-656,-348),
  ABISELECT(-656,-348),
  (VTBL_ENTRY)&(_ZTI8S19112C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C3D1Ev,_ZTv0_n12_N8S19112C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C3D0Ev,_ZTv0_n12_N8S19112C3D0Ev),
};
extern void _ZN8S19112C5D1Ev();
extern void _ZN8S19112C5D0Ev();
extern void _ZN8S19112C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C5__8S19112C2[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19112C5[0]),
  (VTBL_ENTRY)&_ZN8S19112C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19112C5D0Ev,
  (VTBL_ENTRY)&_ZN8S19112C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19112C5D1Ev,_ZTv0_n12_N8S19112C5D1Ev)();
extern void ABISELECT(_ZThn496_N8S19112C5D1Ev,_ZThn260_N8S19112C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19112C5D0Ev,_ZTv0_n12_N8S19112C5D0Ev)();
extern void ABISELECT(_ZThn496_N8S19112C5D0Ev,_ZThn260_N8S19112C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19112C6__8S19112C5__8S19112C2[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI8S19112C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C5D1Ev,_ZTv0_n12_N8S19112C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C5D0Ev,_ZTv0_n12_N8S19112C5D0Ev),
};
extern void _ZN8S19112C92v3Ev();
extern void _ZN8S19112C9D1Ev();
extern void _ZN8S19112C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C9__8S19112C2[] = {
  ABISELECT(-144,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19112C9[0]),
  (VTBL_ENTRY)&_ZN8S19112C92v3Ev,
  (VTBL_ENTRY)&_ZN8S19112C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19112C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19112C9D1Ev,_ZTv0_n12_N8S19112C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19112C9D0Ev,_ZTv0_n12_N8S19112C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19112C6__8S19112C9__8S19112C2[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S19112C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C9D1Ev,_ZTv0_n12_N8S19112C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C9D0Ev,_ZTv0_n12_N8S19112C9D0Ev),
};
static  VTT_ENTRY vtt_S19112C2[] = {
  {&(_ZTV8S19112C2[5]),  5,28},
  {&(_tg__ZTV8S19112C3__8S19112C2[4]),  4,6},
  {&(_tg__ZTV8S19112C5__8S19112C3__8S19112C2[5]),  5,8},
  {&(_tg__ZTV8S19112C6__8S19112C3__8S19112C2[3]),  3,5},
  {&(_ZTV8S19112C2[12]),  12,28},
  {&(_ZTV8S19112C2[18]),  18,28},
  {&(_ZTV8S19112C2[25]),  25,28},
  {&(_tg__ZTV8S19112C5__8S19112C2[3]),  3,6},
  {&(_tg__ZTV8S19112C6__8S19112C5__8S19112C2[3]),  3,5},
  {&(_tg__ZTV8S19112C9__8S19112C2[3]),  3,6},
  {&(_tg__ZTV8S19112C6__8S19112C9__8S19112C2[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19112C2[];
extern  VTBL_ENTRY _ZTV8S19112C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19112C2[];
static VTBL_ENTRY alt_thunk_names76[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19112C5D0Ev,_ZTv0_n12_N8S19112C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19112C5D0Ev,_ZThn260_N8S19112C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19112C5D1Ev,_ZTv0_n12_N8S19112C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19112C5D1Ev,_ZThn260_N8S19112C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19112C3D0Ev,_ZTv0_n12_N8S19112C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S19112C3D0Ev,_ZThn348_N8S19112C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19112C3D1Ev,_ZTv0_n12_N8S19112C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S19112C3D1Ev,_ZThn348_N8S19112C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19112C3D0Ev,_ZTv0_n16_N8S19112C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19112C3D0Ev,_ZThn88_N8S19112C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19112C3D1Ev,_ZTv0_n16_N8S19112C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19112C3D1Ev,_ZThn88_N8S19112C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19112C2D0Ev,_ZTv0_n20_N8S19112C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn800_N8S19112C2D0Ev,_ZThn424_N8S19112C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19112C2D1Ev,_ZTv0_n20_N8S19112C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn800_N8S19112C2D1Ev,_ZThn424_N8S19112C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19112C2D0Ev,_ZTv0_n12_N8S19112C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S19112C2D0Ev,_ZThn348_N8S19112C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19112C2D1Ev,_ZTv0_n12_N8S19112C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S19112C2D1Ev,_ZThn348_N8S19112C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19112C2D0Ev,_ZTv0_n16_N8S19112C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19112C2D0Ev,_ZThn88_N8S19112C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19112C2D1Ev,_ZTv0_n16_N8S19112C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19112C2D1Ev,_ZThn88_N8S19112C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19112C2 = {  "S19112C2", // class name
  bases_S19112C2, 7,
  &(vtc_S19112C2[0]), // expected_vtbl_contents
  &(vtt_S19112C2[0]), // expected_vtt_contents
  ABISELECT(848,452), // object size
  NSPAIRA(_ZTI8S19112C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19112C2),28, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19112C2),11, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names76,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19112C14  {
  long double s19112c14f0;
  void *s19112c14f1;
  ::S8033C7 s19112c14f2;
  __tsi64 s19112c14f3;
  long double s19112c14f4;
  int s19112c14f5;
  virtual void  v4(); // _ZN9S19112C142v4Ev
  ~S19112C14(); // tgen
  S19112C14(); // tgen
};
//SIG(-1 S19112C14) C1{ v1 FD Fp FC2{ vd m Fc Fc:0 Fl[8] FD} FL FD Fi}


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

static void Test_S19112C14()
{
  extern Class_Descriptor cd_S19112C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,25)];
    init_test(&cd_S19112C14, buf);
    S19112C14 *dp, &lv = *(dp=new (buf) S19112C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,96), "sizeof(S19112C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19112C14)");
    check_field_offset(lv, s19112c14f0, ABISELECT(16,4), "S19112C14.s19112c14f0");
    check_field_offset(lv, s19112c14f1, ABISELECT(32,16), "S19112C14.s19112c14f1");
    check_field_offset(lv, s19112c14f2, ABISELECT(48,20), "S19112C14.s19112c14f2");
    check_field_offset(lv, s19112c14f3, ABISELECT(144,72), "S19112C14.s19112c14f3");
    check_field_offset(lv, s19112c14f4, ABISELECT(160,80), "S19112C14.s19112c14f4");
    check_field_offset(lv, s19112c14f5, ABISELECT(176,92), "S19112C14.s19112c14f5");
    test_class_info(&lv, &cd_S19112C14);
    dp->~S19112C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19112C14(Test_S19112C14, "S19112C14", ABISELECT(192,96));

#else // __cplusplus

extern void _ZN9S19112C14C1Ev();
extern void _ZN9S19112C14D1Ev();
Name_Map name_map_S19112C14[] = {
  NSPAIR(_ZN9S19112C14C1Ev),
  NSPAIR(_ZN9S19112C14D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S19112C14[];
extern void _ZN9S19112C142v4Ev();
static  VTBL_ENTRY vtc_S19112C14[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S19112C14[0]),
  (VTBL_ENTRY)&_ZN9S19112C142v4Ev,
};
extern VTBL_ENTRY _ZTI9S19112C14[];
extern  VTBL_ENTRY _ZTV9S19112C14[];
Class_Descriptor cd_S19112C14 = {  "S19112C14", // class name
  0,0,//no base classes
  &(vtc_S19112C14[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(192,96), // object size
  NSPAIRA(_ZTI9S19112C14),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S19112C14),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19112C13  : virtual S19112C8 , virtual S19112C5 , virtual S19112C2 , virtual S8033C4 , virtual S19112C14 {
  void *s19112c13f0;
  ::S19112C14 s19112c13f1[3];
  ::S19112C14 s19112c13f2;
  char s19112c13f3;
  virtual  ~S19112C13(); // _ZN9S19112C13D2Ev
  S19112C13(); // tgen
};
//SIG(-1 S19112C13) C1{ VBC2{ BC3{ BC4{ vd m Fc Fc:0 Fl[8] FD} Fp FC5{} Fp FD} VBC4 vd FC4 Fp} VBC6{ BC4 VBC3 vd v1 Fi Fc Fp Fi Fp[2] FC2} VBC7{ BC8{ BC4 VBC6 vd Fp FL Fl Fc Fp Fi} VBC9{ VBC3 v2 Fc Fs FD Fp[2]} vd Fc FL:35} VBC10{ m Fp[3] FL[8]} VBC11{ v3 FD Fp FC4 FL FD Fi} vd Fp FC11[3] FC11 Fc}


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

static void Test_S19112C13()
{
  extern Class_Descriptor cd_S19112C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(144,302)];
    init_test(&cd_S19112C13, buf);
    S19112C13 *dp, &lv = *(dp=new (buf) S19112C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2288,1204), "sizeof(S19112C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19112C13)");
    check_base_class_offset(lv, (S8033C7*)(S19112C6*)(S19112C8*), ABISELECT(800,396), "S19112C13");
    check_base_class_offset(lv, (S19112C6*)(S19112C8*), ABISELECT(800,396), "S19112C13");
    /*is_ambiguous_... S19112C8::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19112C8*), ABISELECT(1056,528), "S19112C13");
    check_base_class_offset(lv, (S19112C8*), ABISELECT(800,396), "S19112C13");
    /*is_ambiguous_... S19112C5::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19112C5*), ABISELECT(1152,580), "S19112C13");
    /*is_ambiguous_... S19112C13::S19112C6 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19112C6*), ABISELECT(1648,840), "S19112C13");
    check_base_class_offset(lv, (S19112C6*)(S19112C5*), ABISELECT(1648,840), "S19112C13");
    check_base_class_offset(lv, (S19112C6*)(S19112C9*), ABISELECT(1648,840), "S19112C13");
    check_base_class_offset(lv, (S19112C5*), ABISELECT(1152,580), "S19112C13");
    check_base_class_offset(lv, (S19112C5*)(S19112C3*)(S19112C2*), ABISELECT(1152,580), "S19112C13");
    /*is_ambiguous_... S19112C3::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19112C3*)(S19112C2*), ABISELECT(1792,916), "S19112C13");
    check_base_class_offset(lv, (S19112C3*)(S19112C2*), ABISELECT(1792,916), "S19112C13");
    check_base_class_offset(lv, (S19112C9*)(S19112C2*), ABISELECT(1952,1004), "S19112C13");
    check_base_class_offset(lv, (S19112C2*), ABISELECT(1792,916), "S19112C13");
    check_base_class_offset(lv, (S8033C4*), ABISELECT(2000,1032), "S19112C13");
    check_base_class_offset(lv, (S19112C14*), ABISELECT(2096,1108), "S19112C13");
    check_field_offset(lv, s19112c13f0, ABISELECT(8,4), "S19112C13.s19112c13f0");
    check_field_offset(lv, s19112c13f1, ABISELECT(16,8), "S19112C13.s19112c13f1");
    check_field_offset(lv, s19112c13f2, ABISELECT(592,296), "S19112C13.s19112c13f2");
    check_field_offset(lv, s19112c13f3, ABISELECT(784,392), "S19112C13.s19112c13f3");
    test_class_info(&lv, &cd_S19112C13);
    dp->~S19112C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19112C13(Test_S19112C13, "S19112C13", ABISELECT(2288,1204));

#else // __cplusplus

extern void _ZN9S19112C13C1Ev();
extern void _ZN9S19112C13D2Ev();
Name_Map name_map_S19112C13[] = {
  NSPAIR(_ZN9S19112C13C1Ev),
  NSPAIR(_ZN9S19112C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19112C6;
extern VTBL_ENTRY _ZTI8S19112C6[];
extern  VTBL_ENTRY _ZTV8S19112C6[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19112C8;
extern VTBL_ENTRY _ZTI8S19112C8[];
extern  VTBL_ENTRY _ZTV8S19112C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19112C8[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19112C6;
extern VTBL_ENTRY _ZTI8S19112C6[];
extern  VTBL_ENTRY _ZTV8S19112C6[];
extern Class_Descriptor cd_S19112C5;
extern VTBL_ENTRY _ZTI8S19112C5[];
extern  VTBL_ENTRY _ZTV8S19112C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19112C5[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19112C3;
extern VTBL_ENTRY _ZTI8S19112C3[];
extern  VTBL_ENTRY _ZTV8S19112C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19112C3[];
extern Class_Descriptor cd_S19112C9;
extern VTBL_ENTRY _ZTI8S19112C9[];
extern  VTBL_ENTRY _ZTV8S19112C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19112C9[];
extern Class_Descriptor cd_S19112C2;
extern VTBL_ENTRY _ZTI8S19112C2[];
extern  VTBL_ENTRY _ZTV8S19112C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19112C2[];
extern Class_Descriptor cd_S8033C4;
extern VTBL_ENTRY _ZTI7S8033C4[];
extern Class_Descriptor cd_S19112C14;
extern VTBL_ENTRY _ZTI9S19112C14[];
extern  VTBL_ENTRY _ZTV9S19112C14[];
static Base_Class bases_S19112C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    ABISELECT(800,396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19112C6,    ABISELECT(800,396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(1056,528), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19112C8,    ABISELECT(800,396), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C7,    ABISELECT(1152,580), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(1648,840), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19112C6,    ABISELECT(1648,840), //bcp->offset
    31, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19112C5,    ABISELECT(1152,580), //bcp->offset
    23, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C7,    ABISELECT(1792,916), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19112C3,    ABISELECT(1792,916), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19112C9,    ABISELECT(1952,1004), //bcp->offset
    44, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19112C2,    ABISELECT(1792,916), //bcp->offset
    36, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C4,    ABISELECT(2000,1032), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19112C14,    ABISELECT(2096,1108), //bcp->offset
    52, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19112C13[];
extern void _ZN9S19112C13D1Ev();
extern void _ZN9S19112C13D0Ev();
extern void ABISELECT(_ZTv0_n32_N9S19112C13D1Ev,_ZTv0_n16_N9S19112C13D1Ev)();
extern void ABISELECT(_ZThn800_N9S19112C13D1Ev,_ZThn396_N9S19112C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19112C13D0Ev,_ZTv0_n16_N9S19112C13D0Ev)();
extern void ABISELECT(_ZThn800_N9S19112C13D0Ev,_ZThn396_N9S19112C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19112C13D1Ev,_ZTv0_n12_N9S19112C13D1Ev)();
extern void ABISELECT(_ZThn1056_N9S19112C13D1Ev,_ZThn528_N9S19112C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19112C13D0Ev,_ZTv0_n12_N9S19112C13D0Ev)();
extern void ABISELECT(_ZThn1056_N9S19112C13D0Ev,_ZThn528_N9S19112C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19112C13D1Ev,_ZTv0_n16_N9S19112C13D1Ev)();
extern void ABISELECT(_ZThn1152_N9S19112C13D1Ev,_ZThn580_N9S19112C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19112C13D0Ev,_ZTv0_n16_N9S19112C13D0Ev)();
extern void ABISELECT(_ZThn1152_N9S19112C13D0Ev,_ZThn580_N9S19112C13D0Ev)() __attribute__((weak));
extern void _ZN8S19112C52v2Ev();
extern void ABISELECT(_ZTv0_n24_N9S19112C13D1Ev,_ZTv0_n12_N9S19112C13D1Ev)();
extern void ABISELECT(_ZThn1648_N9S19112C13D1Ev,_ZThn840_N9S19112C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19112C13D0Ev,_ZTv0_n12_N9S19112C13D0Ev)();
extern void ABISELECT(_ZThn1648_N9S19112C13D0Ev,_ZThn840_N9S19112C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19112C13D1Ev,_ZTv0_n24_N9S19112C13D1Ev)();
extern void ABISELECT(_ZThn1792_N9S19112C13D1Ev,_ZThn916_N9S19112C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19112C13D0Ev,_ZTv0_n24_N9S19112C13D0Ev)();
extern void ABISELECT(_ZThn1792_N9S19112C13D0Ev,_ZThn916_N9S19112C13D0Ev)() __attribute__((weak));
extern void _ZN8S19112C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N9S19112C13D1Ev,_ZTv0_n20_N9S19112C13D1Ev)();
extern void ABISELECT(_ZThn1952_N9S19112C13D1Ev,_ZThn1004_N9S19112C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19112C13D0Ev,_ZTv0_n20_N9S19112C13D0Ev)();
extern void ABISELECT(_ZThn1952_N9S19112C13D0Ev,_ZThn1004_N9S19112C13D0Ev)() __attribute__((weak));
extern void _ZN9S19112C142v4Ev();
static  VTBL_ENTRY vtc_S19112C13[] = {
  ABISELECT(2096,1108),
  ABISELECT(2000,1032),
  ABISELECT(1952,1004),
  ABISELECT(1792,916),
  ABISELECT(1648,840),
  ABISELECT(1152,580),
  ABISELECT(1056,528),
  ABISELECT(800,396),
  0,
  (VTBL_ENTRY)&(_ZTI9S19112C13[0]),
  (VTBL_ENTRY)&_ZN9S19112C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19112C13D0Ev,
  ABISELECT(-800,-396),
  ABISELECT(256,132),
  ABISELECT(-800,-396),
  (VTBL_ENTRY)&(_ZTI9S19112C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19112C13D1Ev,_ZTv0_n16_N9S19112C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19112C13D0Ev,_ZTv0_n16_N9S19112C13D0Ev),
  ABISELECT(-1056,-528),
  ABISELECT(-1056,-528),
  (VTBL_ENTRY)&(_ZTI9S19112C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19112C13D1Ev,_ZTv0_n12_N9S19112C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19112C13D0Ev,_ZTv0_n12_N9S19112C13D0Ev),
  0,
  ABISELECT(-1152,-580),
  ABISELECT(496,260),
  ABISELECT(-1152,-580),
  (VTBL_ENTRY)&(_ZTI9S19112C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19112C13D1Ev,_ZTv0_n16_N9S19112C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19112C13D0Ev,_ZTv0_n16_N9S19112C13D0Ev),
  (VTBL_ENTRY)&_ZN8S19112C52v2Ev,
  ABISELECT(-1648,-840),
  ABISELECT(-1648,-840),
  (VTBL_ENTRY)&(_ZTI9S19112C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19112C13D1Ev,_ZTv0_n12_N9S19112C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19112C13D0Ev,_ZTv0_n12_N9S19112C13D0Ev),
  ABISELECT(-1792,-916),
  ABISELECT(160,88),
  ABISELECT(-144,-76),
  ABISELECT(-640,-336),
  ABISELECT(-1792,-916),
  (VTBL_ENTRY)&(_ZTI9S19112C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19112C13D1Ev,_ZTv0_n24_N9S19112C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19112C13D0Ev,_ZTv0_n24_N9S19112C13D0Ev),
  ABISELECT(-1952,-1004),
  0,
  ABISELECT(-304,-164),
  ABISELECT(-1952,-1004),
  (VTBL_ENTRY)&(_ZTI9S19112C13[0]),
  (VTBL_ENTRY)&_ZN8S19112C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19112C13D1Ev,_ZTv0_n20_N9S19112C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19112C13D0Ev,_ZTv0_n20_N9S19112C13D0Ev),
  0,
  ABISELECT(-2096,-1108),
  (VTBL_ENTRY)&(_ZTI9S19112C13[0]),
  (VTBL_ENTRY)&_ZN9S19112C142v4Ev,
};
extern VTBL_ENTRY _ZTV9S19112C13[];
extern void _ZN8S19112C8D1Ev();
extern void _ZN8S19112C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C8__9S19112C13[] = {
  ABISELECT(256,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S19112C8[0]),
  (VTBL_ENTRY)&_ZN8S19112C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19112C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19112C8D1Ev,_ZTv0_n12_N8S19112C8D1Ev)();
extern void ABISELECT(_ZThn256_N8S19112C8D1Ev,_ZThn132_N8S19112C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19112C8D0Ev,_ZTv0_n12_N8S19112C8D0Ev)();
extern void ABISELECT(_ZThn256_N8S19112C8D0Ev,_ZThn132_N8S19112C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__8S19112C8__9S19112C13[] = {
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  (VTBL_ENTRY)&(_ZTI8S19112C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C8D1Ev,_ZTv0_n12_N8S19112C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C8D0Ev,_ZTv0_n12_N8S19112C8D0Ev),
};
extern void _ZN8S19112C5D1Ev();
extern void _ZN8S19112C5D0Ev();
extern void _ZN8S19112C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C5__9S19112C13[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19112C5[0]),
  (VTBL_ENTRY)&_ZN8S19112C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19112C5D0Ev,
  (VTBL_ENTRY)&_ZN8S19112C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19112C5D1Ev,_ZTv0_n12_N8S19112C5D1Ev)();
extern void ABISELECT(_ZThn496_N8S19112C5D1Ev,_ZThn260_N8S19112C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19112C5D0Ev,_ZTv0_n12_N8S19112C5D0Ev)();
extern void ABISELECT(_ZThn496_N8S19112C5D0Ev,_ZThn260_N8S19112C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19112C6__8S19112C5__9S19112C13[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI8S19112C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C5D1Ev,_ZTv0_n12_N8S19112C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C5D0Ev,_ZTv0_n12_N8S19112C5D0Ev),
};
extern void _ZN8S19112C2D1Ev();
extern void _ZN8S19112C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C2__9S19112C13[] = {
  ABISELECT(160,88),
  ABISELECT(-144,-76),
  ABISELECT(-640,-336),
  0,
  (VTBL_ENTRY)&(_ZTI8S19112C2[0]),
  (VTBL_ENTRY)&_ZN8S19112C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19112C2D0Ev,
};
extern void _ZN8S19112C3D1Ev();
extern void _ZN8S19112C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C38S19112C2__9S19112C13[] = {
  ABISELECT(-144,-76),
  ABISELECT(-640,-336),
  0,
  (VTBL_ENTRY)&(_ZTI8S19112C3[0]),
  (VTBL_ENTRY)&_ZN8S19112C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19112C3D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19112C3D1Ev,_ZTv0_n16_N8S19112C3D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19112C3D0Ev,_ZTv0_n16_N8S19112C3D0Ev)();
extern void _ZN8S19112C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C5__8S19112C38S19112C2__9S19112C13[] = {
  0,
  ABISELECT(640,336),
  ABISELECT(496,260),
  ABISELECT(640,336),
  (VTBL_ENTRY)&(_ZTI8S19112C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19112C3D1Ev,_ZTv0_n16_N8S19112C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19112C3D0Ev,_ZTv0_n16_N8S19112C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19112C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19112C3D1Ev,_ZTv0_n12_N8S19112C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19112C3D0Ev,_ZTv0_n12_N8S19112C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19112C6__8S19112C38S19112C2__9S19112C13[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S19112C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C3D1Ev,_ZTv0_n12_N8S19112C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C3D0Ev,_ZTv0_n12_N8S19112C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19112C2D1Ev,_ZTv0_n16_N8S19112C2D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19112C2D0Ev,_ZTv0_n16_N8S19112C2D0Ev)();
extern void _ZN8S19112C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C5__8S19112C2__9S19112C13[] = {
  0,
  ABISELECT(640,336),
  ABISELECT(496,260),
  ABISELECT(640,336),
  (VTBL_ENTRY)&(_ZTI8S19112C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19112C2D1Ev,_ZTv0_n16_N8S19112C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19112C2D0Ev,_ZTv0_n16_N8S19112C2D0Ev),
  (VTBL_ENTRY)&_ZN8S19112C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19112C2D1Ev,_ZTv0_n12_N8S19112C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19112C2D0Ev,_ZTv0_n12_N8S19112C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19112C6__8S19112C2__9S19112C13[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S19112C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C2D1Ev,_ZTv0_n12_N8S19112C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C2D0Ev,_ZTv0_n12_N8S19112C2D0Ev),
};
extern void _ZN8S19112C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N8S19112C2D1Ev,_ZTv0_n20_N8S19112C2D1Ev)();
extern void ABISELECT(_ZThn160_N8S19112C2D1Ev,_ZThn88_N8S19112C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19112C2D0Ev,_ZTv0_n20_N8S19112C2D0Ev)();
extern void ABISELECT(_ZThn160_N8S19112C2D0Ev,_ZThn88_N8S19112C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19112C9__8S19112C2__9S19112C13[] = {
  ABISELECT(-160,-88),
  0,
  ABISELECT(-304,-164),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S19112C2[0]),
  (VTBL_ENTRY)&_ZN8S19112C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19112C2D1Ev,_ZTv0_n20_N8S19112C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19112C2D0Ev,_ZTv0_n20_N8S19112C2D0Ev),
};
extern void _ZN8S19112C92v3Ev();
extern void _ZN8S19112C9D1Ev();
extern void _ZN8S19112C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C9__9S19112C13[] = {
  ABISELECT(-304,-164),
  0,
  (VTBL_ENTRY)&(_ZTI8S19112C9[0]),
  (VTBL_ENTRY)&_ZN8S19112C92v3Ev,
  (VTBL_ENTRY)&_ZN8S19112C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19112C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19112C9D1Ev,_ZTv0_n12_N8S19112C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19112C9D0Ev,_ZTv0_n12_N8S19112C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19112C6__8S19112C9__9S19112C13[] = {
  ABISELECT(304,164),
  ABISELECT(304,164),
  (VTBL_ENTRY)&(_ZTI8S19112C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C9D1Ev,_ZTv0_n12_N8S19112C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C9D0Ev,_ZTv0_n12_N8S19112C9D0Ev),
};
static  VTT_ENTRY vtt_S19112C13[] = {
  {&(_ZTV9S19112C13[10]),  10,56},
  {&(_ZTV9S19112C13[16]),  16,56},
  {&(_ZTV9S19112C13[21]),  21,56},
  {&(_ZTV9S19112C13[28]),  28,56},
  {&(_ZTV9S19112C13[34]),  34,56},
  {&(_ZTV9S19112C13[42]),  42,56},
  {&(_ZTV9S19112C13[49]),  49,56},
  {&(_ZTV9S19112C13[55]),  55,56},
  {&(_tg__ZTV8S19112C8__9S19112C13[3]),  3,5},
  {&(_tg__ZTV7S8033C7__A1__8S19112C8__9S19112C13[3]),  3,5},
  {&(_tg__ZTV8S19112C5__9S19112C13[3]),  3,6},
  {&(_tg__ZTV8S19112C6__8S19112C5__9S19112C13[3]),  3,5},
  {&(_tg__ZTV8S19112C2__9S19112C13[5]),  5,7},
  {&(_tg__ZTV8S19112C38S19112C2__9S19112C13[4]),  4,6},
  {&(_tg__ZTV8S19112C5__8S19112C38S19112C2__9S19112C13[5]),  5,8},
  {&(_tg__ZTV8S19112C6__8S19112C38S19112C2__9S19112C13[3]),  3,5},
  {&(_tg__ZTV8S19112C5__8S19112C2__9S19112C13[5]),  5,8},
  {&(_tg__ZTV8S19112C6__8S19112C2__9S19112C13[3]),  3,5},
  {&(_tg__ZTV8S19112C9__8S19112C2__9S19112C13[5]),  5,8},
  {&(_tg__ZTV8S19112C9__9S19112C13[3]),  3,6},
  {&(_tg__ZTV8S19112C6__8S19112C9__9S19112C13[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19112C13[];
extern  VTBL_ENTRY _ZTV9S19112C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19112C13[];
static VTBL_ENTRY alt_thunk_names77[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19112C2D0Ev,_ZTv0_n20_N8S19112C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19112C2D0Ev,_ZThn88_N8S19112C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19112C2D1Ev,_ZTv0_n20_N8S19112C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19112C2D1Ev,_ZThn88_N8S19112C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19112C5D0Ev,_ZTv0_n12_N8S19112C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19112C5D0Ev,_ZThn260_N8S19112C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19112C5D1Ev,_ZTv0_n12_N8S19112C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19112C5D1Ev,_ZThn260_N8S19112C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19112C8D0Ev,_ZTv0_n12_N8S19112C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19112C8D0Ev,_ZThn132_N8S19112C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19112C8D1Ev,_ZTv0_n12_N8S19112C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19112C8D1Ev,_ZThn132_N8S19112C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19112C13D0Ev,_ZTv0_n20_N9S19112C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1952_N9S19112C13D0Ev,_ZThn1004_N9S19112C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19112C13D1Ev,_ZTv0_n20_N9S19112C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1952_N9S19112C13D1Ev,_ZThn1004_N9S19112C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19112C13D0Ev,_ZTv0_n24_N9S19112C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1792_N9S19112C13D0Ev,_ZThn916_N9S19112C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19112C13D1Ev,_ZTv0_n24_N9S19112C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1792_N9S19112C13D1Ev,_ZThn916_N9S19112C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19112C13D0Ev,_ZTv0_n12_N9S19112C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1648_N9S19112C13D0Ev,_ZThn840_N9S19112C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1056_N9S19112C13D0Ev,_ZThn528_N9S19112C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19112C13D1Ev,_ZTv0_n12_N9S19112C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1648_N9S19112C13D1Ev,_ZThn840_N9S19112C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1056_N9S19112C13D1Ev,_ZThn528_N9S19112C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19112C13D0Ev,_ZTv0_n16_N9S19112C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1152_N9S19112C13D0Ev,_ZThn580_N9S19112C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn800_N9S19112C13D0Ev,_ZThn396_N9S19112C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19112C13D1Ev,_ZTv0_n16_N9S19112C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1152_N9S19112C13D1Ev,_ZThn580_N9S19112C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn800_N9S19112C13D1Ev,_ZThn396_N9S19112C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19112C13 = {  "S19112C13", // class name
  bases_S19112C13, 14,
  &(vtc_S19112C13[0]), // expected_vtbl_contents
  &(vtt_S19112C13[0]), // expected_vtt_contents
  ABISELECT(2288,1204), // object size
  NSPAIRA(_ZTI9S19112C13),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19112C13),56, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19112C13),21, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names77,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19112C12  : virtual S19112C5 , S8033C4 , virtual S19112C9 , S19112C13 {
  ::S19112C14 s19112c12f0;
  void *s19112c12f1;
  long s19112c12f2[2];
  __tsi64 s19112c12f3:31;
  int s19112c12f4;
  ::S20291C14_nt s19112c12f5;
  ::S19112C14 s19112c12f6;
  ::S19112C14 s19112c12f7;
  void *s19112c12f8;
  ~S19112C12(); // tgen
  S19112C12(); // tgen
};
//SIG(-1 S19112C12) C1{ VBC2{ BC3{ vd m Fc Fc:0 Fl[8] FD} VBC4{ BC3 Fp FC5{} Fp FD} vd v1 Fi Fc Fp Fi Fp[2] FC6{ BC4 VBC3 vd FC3 Fp}} BC7{ m Fp[3] FL[8]} VBC8{ VBC4 v2 Fc Fs FD Fp[2]} BC9{ VBC6 VBC2 VBC10{ BC11{ BC3 VBC2 vd Fp FL Fl Fc Fp Fi} VBC8 vd Fc FL:35} VBC7 VBC12{ v3 FD Fp FC3 FL FD Fi} vd Fp FC12[3] FC12 Fc} FC12 Fp Fl[2] FL:31 Fi FC5 FC12 FC12 Fp}


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

static void Test_S19112C12()
{
  extern Class_Descriptor cd_S19112C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(188,400)];
    init_test(&cd_S19112C12, buf);
    S19112C12 *dp, &lv = *(dp=new (buf) S19112C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2992,1596), "sizeof(S19112C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19112C12)");
    /*is_ambiguous_... S19112C5::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19112C5*), ABISELECT(1520,788), "S19112C12");
    /*is_ambiguous_... S19112C12::S19112C6 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19112C6*), ABISELECT(2016,1048), "S19112C12");
    check_base_class_offset(lv, (S19112C6*)(S19112C5*), ABISELECT(2016,1048), "S19112C12");
    check_base_class_offset(lv, (S19112C6*)(S19112C9*), ABISELECT(2016,1048), "S19112C12");
    check_base_class_offset(lv, (S19112C5*), ABISELECT(1520,788), "S19112C12");
    check_base_class_offset(lv, (S19112C5*)(S19112C13*), ABISELECT(1520,788), "S19112C12");
    check_base_class_offset(lv, (S19112C5*)(S19112C3*)(S19112C2*), ABISELECT(1520,788), "S19112C12");
    /*is_ambiguous_... S19112C12::S8033C4 */ AMB_check_base_class_offset(lv, (S8033C4*), ABISELECT(792,396), "S19112C12");
    check_base_class_offset(lv, (S19112C9*), ABISELECT(2160,1124), "S19112C12");
    check_base_class_offset(lv, (S19112C9*)(S19112C2*), ABISELECT(2160,1124), "S19112C12");
    check_base_class_offset(lv, (S8033C7*)(S19112C6*)(S19112C8*), ABISELECT(2208,1152), "S19112C12");
    check_base_class_offset(lv, (S19112C6*)(S19112C8*), ABISELECT(2208,1152), "S19112C12");
    /*is_ambiguous_... S19112C8::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19112C8*), ABISELECT(2464,1284), "S19112C12");
    check_base_class_offset(lv, (S19112C8*)(S19112C13*), ABISELECT(2208,1152), "S19112C12");
    /*is_ambiguous_... S19112C3::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19112C3*)(S19112C2*), ABISELECT(2560,1336), "S19112C12");
    check_base_class_offset(lv, (S19112C3*)(S19112C2*), ABISELECT(2560,1336), "S19112C12");
    check_base_class_offset(lv, (S19112C2*)(S19112C13*), ABISELECT(2560,1336), "S19112C12");
    check_base_class_offset(lv, (S8033C4*)(S19112C13*), ABISELECT(2712,1424), "S19112C12");
    check_base_class_offset(lv, (S19112C14*)(S19112C13*), ABISELECT(2800,1500), "S19112C12");
    check_base_class_offset(lv, (S19112C13*), 0, "S19112C12");
    check_field_offset(lv, s19112c12f0, ABISELECT(880,472), "S19112C12.s19112c12f0");
    check_field_offset(lv, s19112c12f1, ABISELECT(1072,568), "S19112C12.s19112c12f1");
    check_field_offset(lv, s19112c12f2, ABISELECT(1080,572), "S19112C12.s19112c12f2");
    set_bf_and_test(lv, s19112c12f3, ABISELECT(1096,580), 0, 31, 1, "S19112C12");
    set_bf_and_test(lv, s19112c12f3, ABISELECT(1096,580), 0, 31, hide_sll(1LL<<30), "S19112C12");
    check_field_offset(lv, s19112c12f4, ABISELECT(1100,584), "S19112C12.s19112c12f4");
    check_field_offset(lv, s19112c12f5, ABISELECT(1104,588), "S19112C12.s19112c12f5");
    check_field_offset(lv, s19112c12f6, ABISELECT(1120,592), "S19112C12.s19112c12f6");
    check_field_offset(lv, s19112c12f7, ABISELECT(1312,688), "S19112C12.s19112c12f7");
    check_field_offset(lv, s19112c12f8, ABISELECT(1504,784), "S19112C12.s19112c12f8");
    test_class_info(&lv, &cd_S19112C12);
    dp->~S19112C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19112C12(Test_S19112C12, "S19112C12", ABISELECT(2992,1596));

#else // __cplusplus

extern void _ZN9S19112C12C1Ev();
extern void _ZN9S19112C12D1Ev();
Name_Map name_map_S19112C12[] = {
  NSPAIR(_ZN9S19112C12C1Ev),
  NSPAIR(_ZN9S19112C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19112C6;
extern VTBL_ENTRY _ZTI8S19112C6[];
extern  VTBL_ENTRY _ZTV8S19112C6[];
extern Class_Descriptor cd_S19112C5;
extern VTBL_ENTRY _ZTI8S19112C5[];
extern  VTBL_ENTRY _ZTV8S19112C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19112C5[];
extern Class_Descriptor cd_S8033C4;
extern VTBL_ENTRY _ZTI7S8033C4[];
extern Class_Descriptor cd_S19112C9;
extern VTBL_ENTRY _ZTI8S19112C9[];
extern  VTBL_ENTRY _ZTV8S19112C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19112C9[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19112C6;
extern VTBL_ENTRY _ZTI8S19112C6[];
extern  VTBL_ENTRY _ZTV8S19112C6[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19112C8;
extern VTBL_ENTRY _ZTI8S19112C8[];
extern  VTBL_ENTRY _ZTV8S19112C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19112C8[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19112C3;
extern VTBL_ENTRY _ZTI8S19112C3[];
extern  VTBL_ENTRY _ZTV8S19112C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19112C3[];
extern Class_Descriptor cd_S19112C2;
extern VTBL_ENTRY _ZTI8S19112C2[];
extern  VTBL_ENTRY _ZTV8S19112C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19112C2[];
extern Class_Descriptor cd_S8033C4;
extern VTBL_ENTRY _ZTI7S8033C4[];
extern Class_Descriptor cd_S19112C14;
extern VTBL_ENTRY _ZTI9S19112C14[];
extern  VTBL_ENTRY _ZTV9S19112C14[];
extern Class_Descriptor cd_S19112C13;
extern VTBL_ENTRY _ZTI9S19112C13[];
extern  VTBL_ENTRY _ZTV9S19112C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19112C13[];
static Base_Class bases_S19112C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    ABISELECT(1520,788), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(2016,1048), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19112C6,    ABISELECT(2016,1048), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19112C5,    ABISELECT(1520,788), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C4,    ABISELECT(792,396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19112C9,    ABISELECT(2160,1124), //bcp->offset
    25, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C7,    ABISELECT(2208,1152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19112C6,    ABISELECT(2208,1152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(2464,1284), //bcp->offset
    39, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19112C8,    ABISELECT(2208,1152), //bcp->offset
    33, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S8033C7,    ABISELECT(2560,1336), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19112C3,    ABISELECT(2560,1336), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19112C2,    ABISELECT(2560,1336), //bcp->offset
    44, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S8033C4,    ABISELECT(2712,1424), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19112C14,    ABISELECT(2800,1500), //bcp->offset
    52, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19112C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19112C12[];
extern void _ZN9S19112C12D1Ev();
extern void _ZN9S19112C12D0Ev();
extern void ABISELECT(_ZTv0_n32_N9S19112C12D1Ev,_ZTv0_n16_N9S19112C12D1Ev)();
extern void ABISELECT(_ZThn1520_N9S19112C12D1Ev,_ZThn788_N9S19112C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19112C12D0Ev,_ZTv0_n16_N9S19112C12D0Ev)();
extern void ABISELECT(_ZThn1520_N9S19112C12D0Ev,_ZThn788_N9S19112C12D0Ev)() __attribute__((weak));
extern void _ZN8S19112C52v2Ev();
extern void ABISELECT(_ZTv0_n24_N9S19112C12D1Ev,_ZTv0_n12_N9S19112C12D1Ev)();
extern void ABISELECT(_ZThn2016_N9S19112C12D1Ev,_ZThn1048_N9S19112C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19112C12D0Ev,_ZTv0_n12_N9S19112C12D0Ev)();
extern void ABISELECT(_ZThn2016_N9S19112C12D0Ev,_ZThn1048_N9S19112C12D0Ev)() __attribute__((weak));
extern void _ZN8S19112C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N9S19112C12D1Ev,_ZTv0_n20_N9S19112C12D1Ev)();
extern void ABISELECT(_ZThn2160_N9S19112C12D1Ev,_ZThn1124_N9S19112C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19112C12D0Ev,_ZTv0_n20_N9S19112C12D0Ev)();
extern void ABISELECT(_ZThn2160_N9S19112C12D0Ev,_ZThn1124_N9S19112C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19112C12D1Ev,_ZTv0_n16_N9S19112C12D1Ev)();
extern void ABISELECT(_ZThn2208_N9S19112C12D1Ev,_ZThn1152_N9S19112C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19112C12D0Ev,_ZTv0_n16_N9S19112C12D0Ev)();
extern void ABISELECT(_ZThn2208_N9S19112C12D0Ev,_ZThn1152_N9S19112C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19112C12D1Ev,_ZTv0_n12_N9S19112C12D1Ev)();
extern void ABISELECT(_ZThn2464_N9S19112C12D1Ev,_ZThn1284_N9S19112C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19112C12D0Ev,_ZTv0_n12_N9S19112C12D0Ev)();
extern void ABISELECT(_ZThn2464_N9S19112C12D0Ev,_ZThn1284_N9S19112C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19112C12D1Ev,_ZTv0_n24_N9S19112C12D1Ev)();
extern void ABISELECT(_ZThn2560_N9S19112C12D1Ev,_ZThn1336_N9S19112C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19112C12D0Ev,_ZTv0_n24_N9S19112C12D0Ev)();
extern void ABISELECT(_ZThn2560_N9S19112C12D0Ev,_ZThn1336_N9S19112C12D0Ev)() __attribute__((weak));
extern void _ZN9S19112C142v4Ev();
static  VTBL_ENTRY vtc_S19112C12[] = {
  ABISELECT(2800,1500),
  ABISELECT(2712,1424),
  ABISELECT(2160,1124),
  ABISELECT(2560,1336),
  ABISELECT(2016,1048),
  ABISELECT(1520,788),
  ABISELECT(2464,1284),
  ABISELECT(2208,1152),
  0,
  (VTBL_ENTRY)&(_ZTI9S19112C12[0]),
  (VTBL_ENTRY)&_ZN9S19112C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19112C12D0Ev,
  0,
  ABISELECT(-1520,-788),
  ABISELECT(496,260),
  ABISELECT(-1520,-788),
  (VTBL_ENTRY)&(_ZTI9S19112C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19112C12D1Ev,_ZTv0_n16_N9S19112C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19112C12D0Ev,_ZTv0_n16_N9S19112C12D0Ev),
  (VTBL_ENTRY)&_ZN8S19112C52v2Ev,
  ABISELECT(-2016,-1048),
  ABISELECT(-2016,-1048),
  (VTBL_ENTRY)&(_ZTI9S19112C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19112C12D1Ev,_ZTv0_n12_N9S19112C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19112C12D0Ev,_ZTv0_n12_N9S19112C12D0Ev),
  ABISELECT(-2160,-1124),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-2160,-1124),
  (VTBL_ENTRY)&(_ZTI9S19112C12[0]),
  (VTBL_ENTRY)&_ZN8S19112C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19112C12D1Ev,_ZTv0_n20_N9S19112C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19112C12D0Ev,_ZTv0_n20_N9S19112C12D0Ev),
  ABISELECT(-2208,-1152),
  ABISELECT(256,132),
  ABISELECT(-2208,-1152),
  (VTBL_ENTRY)&(_ZTI9S19112C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19112C12D1Ev,_ZTv0_n16_N9S19112C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19112C12D0Ev,_ZTv0_n16_N9S19112C12D0Ev),
  ABISELECT(-2464,-1284),
  ABISELECT(-2464,-1284),
  (VTBL_ENTRY)&(_ZTI9S19112C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19112C12D1Ev,_ZTv0_n12_N9S19112C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19112C12D0Ev,_ZTv0_n12_N9S19112C12D0Ev),
  ABISELECT(-2560,-1336),
  ABISELECT(-400,-212),
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  ABISELECT(-2560,-1336),
  (VTBL_ENTRY)&(_ZTI9S19112C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19112C12D1Ev,_ZTv0_n24_N9S19112C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19112C12D0Ev,_ZTv0_n24_N9S19112C12D0Ev),
  0,
  ABISELECT(-2800,-1500),
  (VTBL_ENTRY)&(_ZTI9S19112C12[0]),
  (VTBL_ENTRY)&_ZN9S19112C142v4Ev,
};
extern VTBL_ENTRY _ZTV9S19112C12[];
extern void _ZN9S19112C13D1Ev();
extern void _ZN9S19112C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19112C13__9S19112C12[] = {
  ABISELECT(2800,1500),
  ABISELECT(2712,1424),
  ABISELECT(2160,1124),
  ABISELECT(2560,1336),
  ABISELECT(2016,1048),
  ABISELECT(1520,788),
  ABISELECT(2464,1284),
  ABISELECT(2208,1152),
  0,
  (VTBL_ENTRY)&(_ZTI9S19112C13[0]),
  (VTBL_ENTRY)&_ZN9S19112C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19112C13D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19112C13D1Ev,_ZTv0_n16_N9S19112C13D1Ev)();
extern void ABISELECT(_ZThn2208_N9S19112C13D1Ev,_ZThn1152_N9S19112C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19112C13D0Ev,_ZTv0_n16_N9S19112C13D0Ev)();
extern void ABISELECT(_ZThn2208_N9S19112C13D0Ev,_ZThn1152_N9S19112C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19112C8__9S19112C13__9S19112C12[] = {
  ABISELECT(-2208,-1152),
  ABISELECT(256,132),
  ABISELECT(-2208,-1152),
  (VTBL_ENTRY)&(_ZTI9S19112C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19112C13D1Ev,_ZTv0_n16_N9S19112C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19112C13D0Ev,_ZTv0_n16_N9S19112C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19112C13D1Ev,_ZTv0_n12_N9S19112C13D1Ev)();
extern void ABISELECT(_ZThn2464_N9S19112C13D1Ev,_ZThn1284_N9S19112C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19112C13D0Ev,_ZTv0_n12_N9S19112C13D0Ev)();
extern void ABISELECT(_ZThn2464_N9S19112C13D0Ev,_ZThn1284_N9S19112C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__9S19112C13__9S19112C12[] = {
  ABISELECT(-2464,-1284),
  ABISELECT(-2464,-1284),
  (VTBL_ENTRY)&(_ZTI9S19112C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19112C13D1Ev,_ZTv0_n12_N9S19112C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19112C13D0Ev,_ZTv0_n12_N9S19112C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19112C13D1Ev,_ZTv0_n16_N9S19112C13D1Ev)();
extern void ABISELECT(_ZThn1520_N9S19112C13D1Ev,_ZThn788_N9S19112C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19112C13D0Ev,_ZTv0_n16_N9S19112C13D0Ev)();
extern void ABISELECT(_ZThn1520_N9S19112C13D0Ev,_ZThn788_N9S19112C13D0Ev)() __attribute__((weak));
extern void _ZN8S19112C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C5__9S19112C13__9S19112C12[] = {
  0,
  ABISELECT(-1520,-788),
  ABISELECT(496,260),
  ABISELECT(-1520,-788),
  (VTBL_ENTRY)&(_ZTI9S19112C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19112C13D1Ev,_ZTv0_n16_N9S19112C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19112C13D0Ev,_ZTv0_n16_N9S19112C13D0Ev),
  (VTBL_ENTRY)&_ZN8S19112C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19112C13D1Ev,_ZTv0_n12_N9S19112C13D1Ev)();
extern void ABISELECT(_ZThn2016_N9S19112C13D1Ev,_ZThn1048_N9S19112C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19112C13D0Ev,_ZTv0_n12_N9S19112C13D0Ev)();
extern void ABISELECT(_ZThn2016_N9S19112C13D0Ev,_ZThn1048_N9S19112C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19112C6__A1__9S19112C13__9S19112C12[] = {
  ABISELECT(-2016,-1048),
  ABISELECT(-2016,-1048),
  (VTBL_ENTRY)&(_ZTI9S19112C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19112C13D1Ev,_ZTv0_n12_N9S19112C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19112C13D0Ev,_ZTv0_n12_N9S19112C13D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19112C13D1Ev,_ZTv0_n24_N9S19112C13D1Ev)();
extern void ABISELECT(_ZThn2560_N9S19112C13D1Ev,_ZThn1336_N9S19112C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19112C13D0Ev,_ZTv0_n24_N9S19112C13D0Ev)();
extern void ABISELECT(_ZThn2560_N9S19112C13D0Ev,_ZThn1336_N9S19112C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19112C2__9S19112C13__9S19112C12[] = {
  ABISELECT(-2560,-1336),
  ABISELECT(-400,-212),
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  ABISELECT(-2560,-1336),
  (VTBL_ENTRY)&(_ZTI9S19112C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19112C13D1Ev,_ZTv0_n24_N9S19112C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19112C13D0Ev,_ZTv0_n24_N9S19112C13D0Ev),
};
extern void _ZN8S19112C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N9S19112C13D1Ev,_ZTv0_n20_N9S19112C13D1Ev)();
extern void ABISELECT(_ZThn2160_N9S19112C13D1Ev,_ZThn1124_N9S19112C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19112C13D0Ev,_ZTv0_n20_N9S19112C13D0Ev)();
extern void ABISELECT(_ZThn2160_N9S19112C13D0Ev,_ZThn1124_N9S19112C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19112C9__9S19112C13__9S19112C12[] = {
  ABISELECT(-2160,-1124),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-2160,-1124),
  (VTBL_ENTRY)&(_ZTI9S19112C13[0]),
  (VTBL_ENTRY)&_ZN8S19112C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19112C13D1Ev,_ZTv0_n20_N9S19112C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19112C13D0Ev,_ZTv0_n20_N9S19112C13D0Ev),
};
extern void _ZN9S19112C142v4Ev();
static  VTBL_ENTRY _tg__ZTV9S19112C14__9S19112C13__9S19112C12[] = {
  0,
  ABISELECT(-2800,-1500),
  (VTBL_ENTRY)&(_ZTI9S19112C13[0]),
  (VTBL_ENTRY)&_ZN9S19112C142v4Ev,
};
extern void _ZN8S19112C5D1Ev();
extern void _ZN8S19112C5D0Ev();
extern void _ZN8S19112C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C5__9S19112C12[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19112C5[0]),
  (VTBL_ENTRY)&_ZN8S19112C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19112C5D0Ev,
  (VTBL_ENTRY)&_ZN8S19112C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19112C5D1Ev,_ZTv0_n12_N8S19112C5D1Ev)();
extern void ABISELECT(_ZThn496_N8S19112C5D1Ev,_ZThn260_N8S19112C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19112C5D0Ev,_ZTv0_n12_N8S19112C5D0Ev)();
extern void ABISELECT(_ZThn496_N8S19112C5D0Ev,_ZThn260_N8S19112C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19112C6__8S19112C5__9S19112C12[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI8S19112C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C5D1Ev,_ZTv0_n12_N8S19112C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C5D0Ev,_ZTv0_n12_N8S19112C5D0Ev),
};
extern void _ZN8S19112C92v3Ev();
extern void _ZN8S19112C9D1Ev();
extern void _ZN8S19112C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C9__9S19112C12[] = {
  ABISELECT(-144,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19112C9[0]),
  (VTBL_ENTRY)&_ZN8S19112C92v3Ev,
  (VTBL_ENTRY)&_ZN8S19112C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19112C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19112C9D1Ev,_ZTv0_n12_N8S19112C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19112C9D0Ev,_ZTv0_n12_N8S19112C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19112C6__8S19112C9__9S19112C12[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S19112C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C9D1Ev,_ZTv0_n12_N8S19112C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C9D0Ev,_ZTv0_n12_N8S19112C9D0Ev),
};
extern void _ZN8S19112C8D1Ev();
extern void _ZN8S19112C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C8__9S19112C12[] = {
  ABISELECT(256,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S19112C8[0]),
  (VTBL_ENTRY)&_ZN8S19112C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19112C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19112C8D1Ev,_ZTv0_n12_N8S19112C8D1Ev)();
extern void ABISELECT(_ZThn256_N8S19112C8D1Ev,_ZThn132_N8S19112C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19112C8D0Ev,_ZTv0_n12_N8S19112C8D0Ev)();
extern void ABISELECT(_ZThn256_N8S19112C8D0Ev,_ZThn132_N8S19112C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__8S19112C8__9S19112C12[] = {
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  (VTBL_ENTRY)&(_ZTI8S19112C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C8D1Ev,_ZTv0_n12_N8S19112C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C8D0Ev,_ZTv0_n12_N8S19112C8D0Ev),
};
extern void _ZN8S19112C2D1Ev();
extern void _ZN8S19112C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C2__9S19112C12[] = {
  ABISELECT(-400,-212),
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  0,
  (VTBL_ENTRY)&(_ZTI8S19112C2[0]),
  (VTBL_ENTRY)&_ZN8S19112C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19112C2D0Ev,
};
extern void _ZN8S19112C3D1Ev();
extern void _ZN8S19112C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C38S19112C2__9S19112C12[] = {
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  0,
  (VTBL_ENTRY)&(_ZTI8S19112C3[0]),
  (VTBL_ENTRY)&_ZN8S19112C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19112C3D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19112C3D1Ev,_ZTv0_n16_N8S19112C3D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19112C3D0Ev,_ZTv0_n16_N8S19112C3D0Ev)();
extern void _ZN8S19112C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C5__8S19112C38S19112C2__9S19112C12[] = {
  0,
  ABISELECT(1040,548),
  ABISELECT(496,260),
  ABISELECT(1040,548),
  (VTBL_ENTRY)&(_ZTI8S19112C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19112C3D1Ev,_ZTv0_n16_N8S19112C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19112C3D0Ev,_ZTv0_n16_N8S19112C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19112C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19112C3D1Ev,_ZTv0_n12_N8S19112C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19112C3D0Ev,_ZTv0_n12_N8S19112C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19112C6__8S19112C38S19112C2__9S19112C12[] = {
  ABISELECT(544,288),
  ABISELECT(544,288),
  (VTBL_ENTRY)&(_ZTI8S19112C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C3D1Ev,_ZTv0_n12_N8S19112C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C3D0Ev,_ZTv0_n12_N8S19112C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19112C2D1Ev,_ZTv0_n16_N8S19112C2D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19112C2D0Ev,_ZTv0_n16_N8S19112C2D0Ev)();
extern void _ZN8S19112C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C5__8S19112C2__9S19112C12[] = {
  0,
  ABISELECT(1040,548),
  ABISELECT(496,260),
  ABISELECT(1040,548),
  (VTBL_ENTRY)&(_ZTI8S19112C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19112C2D1Ev,_ZTv0_n16_N8S19112C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19112C2D0Ev,_ZTv0_n16_N8S19112C2D0Ev),
  (VTBL_ENTRY)&_ZN8S19112C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19112C2D1Ev,_ZTv0_n12_N8S19112C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19112C2D0Ev,_ZTv0_n12_N8S19112C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19112C6__8S19112C2__9S19112C12[] = {
  ABISELECT(544,288),
  ABISELECT(544,288),
  (VTBL_ENTRY)&(_ZTI8S19112C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C2D1Ev,_ZTv0_n12_N8S19112C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C2D0Ev,_ZTv0_n12_N8S19112C2D0Ev),
};
extern void _ZN8S19112C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N8S19112C2D1Ev,_ZTv0_n20_N8S19112C2D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S19112C2D0Ev,_ZTv0_n20_N8S19112C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19112C9__8S19112C2__9S19112C12[] = {
  ABISELECT(400,212),
  0,
  ABISELECT(-144,-76),
  ABISELECT(400,212),
  (VTBL_ENTRY)&(_ZTI8S19112C2[0]),
  (VTBL_ENTRY)&_ZN8S19112C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19112C2D1Ev,_ZTv0_n20_N8S19112C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19112C2D0Ev,_ZTv0_n20_N8S19112C2D0Ev),
};
static  VTT_ENTRY vtt_S19112C12[] = {
  {&(_ZTV9S19112C12[10]),  10,56},
  {&(_tg__ZTV9S19112C13__9S19112C12[10]),  10,12},
  {&(_tg__ZTV8S19112C8__9S19112C13__9S19112C12[4]),  4,6},
  {&(_tg__ZTV7S8033C7__A1__9S19112C13__9S19112C12[3]),  3,5},
  {&(_tg__ZTV8S19112C5__9S19112C13__9S19112C12[5]),  5,8},
  {&(_tg__ZTV8S19112C6__A1__9S19112C13__9S19112C12[3]),  3,5},
  {&(_tg__ZTV8S19112C2__9S19112C13__9S19112C12[6]),  6,8},
  {&(_tg__ZTV8S19112C9__9S19112C13__9S19112C12[5]),  5,8},
  {&(_tg__ZTV9S19112C14__9S19112C13__9S19112C12[3]),  3,4},
  {&(_ZTV9S19112C12[17]),  17,56},
  {&(_ZTV9S19112C12[23]),  23,56},
  {&(_ZTV9S19112C12[30]),  30,56},
  {&(_ZTV9S19112C12[37]),  37,56},
  {&(_ZTV9S19112C12[42]),  42,56},
  {&(_ZTV9S19112C12[50]),  50,56},
  {&(_ZTV9S19112C12[55]),  55,56},
  {&(_tg__ZTV8S19112C5__9S19112C12[3]),  3,6},
  {&(_tg__ZTV8S19112C6__8S19112C5__9S19112C12[3]),  3,5},
  {&(_tg__ZTV8S19112C9__9S19112C12[3]),  3,6},
  {&(_tg__ZTV8S19112C6__8S19112C9__9S19112C12[3]),  3,5},
  {&(_tg__ZTV8S19112C8__9S19112C12[3]),  3,5},
  {&(_tg__ZTV7S8033C7__A1__8S19112C8__9S19112C12[3]),  3,5},
  {&(_tg__ZTV8S19112C2__9S19112C12[5]),  5,7},
  {&(_tg__ZTV8S19112C38S19112C2__9S19112C12[4]),  4,6},
  {&(_tg__ZTV8S19112C5__8S19112C38S19112C2__9S19112C12[5]),  5,8},
  {&(_tg__ZTV8S19112C6__8S19112C38S19112C2__9S19112C12[3]),  3,5},
  {&(_tg__ZTV8S19112C5__8S19112C2__9S19112C12[5]),  5,8},
  {&(_tg__ZTV8S19112C6__8S19112C2__9S19112C12[3]),  3,5},
  {&(_tg__ZTV8S19112C9__8S19112C2__9S19112C12[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S19112C12[];
extern  VTBL_ENTRY _ZTV9S19112C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19112C12[];
static VTBL_ENTRY alt_thunk_names78[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19112C8D0Ev,_ZTv0_n12_N8S19112C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19112C8D0Ev,_ZThn132_N8S19112C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19112C8D1Ev,_ZTv0_n12_N8S19112C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19112C8D1Ev,_ZThn132_N8S19112C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19112C5D0Ev,_ZTv0_n12_N8S19112C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19112C5D0Ev,_ZThn260_N8S19112C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19112C5D1Ev,_ZTv0_n12_N8S19112C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19112C5D1Ev,_ZThn260_N8S19112C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19112C13D0Ev,_ZTv0_n20_N9S19112C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N9S19112C13D0Ev,_ZThn1124_N9S19112C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19112C13D1Ev,_ZTv0_n20_N9S19112C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N9S19112C13D1Ev,_ZThn1124_N9S19112C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19112C13D0Ev,_ZTv0_n24_N9S19112C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N9S19112C13D0Ev,_ZThn1336_N9S19112C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19112C13D1Ev,_ZTv0_n24_N9S19112C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N9S19112C13D1Ev,_ZThn1336_N9S19112C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19112C13D0Ev,_ZTv0_n12_N9S19112C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2016_N9S19112C13D0Ev,_ZThn1048_N9S19112C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2464_N9S19112C13D0Ev,_ZThn1284_N9S19112C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19112C13D1Ev,_ZTv0_n12_N9S19112C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2016_N9S19112C13D1Ev,_ZThn1048_N9S19112C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2464_N9S19112C13D1Ev,_ZThn1284_N9S19112C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19112C13D0Ev,_ZTv0_n16_N9S19112C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N9S19112C13D0Ev,_ZThn788_N9S19112C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2208_N9S19112C13D0Ev,_ZThn1152_N9S19112C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19112C13D1Ev,_ZTv0_n16_N9S19112C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N9S19112C13D1Ev,_ZThn788_N9S19112C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2208_N9S19112C13D1Ev,_ZThn1152_N9S19112C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19112C12D0Ev,_ZTv0_n24_N9S19112C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N9S19112C12D0Ev,_ZThn1336_N9S19112C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19112C12D1Ev,_ZTv0_n24_N9S19112C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N9S19112C12D1Ev,_ZThn1336_N9S19112C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19112C12D0Ev,_ZTv0_n20_N9S19112C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N9S19112C12D0Ev,_ZThn1124_N9S19112C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19112C12D1Ev,_ZTv0_n20_N9S19112C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N9S19112C12D1Ev,_ZThn1124_N9S19112C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19112C12D0Ev,_ZTv0_n12_N9S19112C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2464_N9S19112C12D0Ev,_ZThn1284_N9S19112C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2016_N9S19112C12D0Ev,_ZThn1048_N9S19112C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19112C12D1Ev,_ZTv0_n12_N9S19112C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2464_N9S19112C12D1Ev,_ZThn1284_N9S19112C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2016_N9S19112C12D1Ev,_ZThn1048_N9S19112C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19112C12D0Ev,_ZTv0_n16_N9S19112C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2208_N9S19112C12D0Ev,_ZThn1152_N9S19112C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N9S19112C12D0Ev,_ZThn788_N9S19112C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19112C12D1Ev,_ZTv0_n16_N9S19112C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2208_N9S19112C12D1Ev,_ZThn1152_N9S19112C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N9S19112C12D1Ev,_ZThn788_N9S19112C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19112C12 = {  "S19112C12", // class name
  bases_S19112C12, 16,
  &(vtc_S19112C12[0]), // expected_vtbl_contents
  &(vtt_S19112C12[0]), // expected_vtt_contents
  ABISELECT(2992,1596), // object size
  NSPAIRA(_ZTI9S19112C12),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19112C12),56, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19112C12),29, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names78,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19112C10  : virtual S8033C4 , virtual S19112C12 , S19112C14 , S8033C7 {
  ::S19112C14 s19112c10f0;
  int s19112c10f1;
  char s19112c10f2[6];
  long double s19112c10f3;
  int s19112c10f4;
  __tsi64 s19112c10f5;
  virtual void  v5(); // _ZN9S19112C102v5Ev
  ~S19112C10(); // tgen
  S19112C10(); // tgen
};
//SIG(-1 S19112C10) C1{ VBC2{ m Fp[3] FL[8]} VBC3{ VBC4{ BC5{ vd m Fc Fc:0 Fl[8] FD} VBC6{ BC5 Fp FC7{} Fp FD} vd v2 Fi Fc Fp Fi Fp[2] FC8{ BC6 VBC5 vd FC5 Fp}} BC2 VBC9{ VBC6 v3 Fc Fs FD Fp[2]} BC10{ VBC8 VBC4 VBC11{ BC12{ BC5 VBC4 vd Fp FL Fl Fc Fp Fi} VBC9 vd Fc FL:35} VBC2 VBC13{ v4 FD Fp FC5 FL FD Fi} vd Fp FC13[3] FC13 Fc} FC13 Fp Fl[2] FL:31 Fi FC7 FC13 FC13 Fp} BC13 BC5 v1 FC13 Fi Fc[6] FD Fi FL}


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

static void Test_S19112C10()
{
  extern Class_Descriptor cd_S19112C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(222,470)];
    init_test(&cd_S19112C10, buf);
    S19112C10 *dp, &lv = *(dp=new (buf) S19112C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(3536,1876), "sizeof(S19112C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19112C10)");
    /*is_ambiguous_... S19112C10::S8033C4 */ AMB_check_base_class_offset(lv, (S8033C4*), ABISELECT(528,280), "S19112C10");
    check_base_class_offset(lv, (S8033C4*)(S19112C13*)(S19112C12*), ABISELECT(528,280), "S19112C10");
    /*is_ambiguous_... S19112C5::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19112C5*), ABISELECT(2144,1144), "S19112C10");
    /*is_ambiguous_... S19112C10::S19112C6 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19112C6*), ABISELECT(2640,1404), "S19112C10");
    check_base_class_offset(lv, (S19112C6*)(S19112C5*), ABISELECT(2640,1404), "S19112C10");
    check_base_class_offset(lv, (S19112C6*)(S19112C9*), ABISELECT(2640,1404), "S19112C10");
    check_base_class_offset(lv, (S19112C5*)(S19112C12*), ABISELECT(2144,1144), "S19112C10");
    check_base_class_offset(lv, (S19112C5*)(S19112C13*)(S19112C12*), ABISELECT(2144,1144), "S19112C10");
    check_base_class_offset(lv, (S19112C5*)(S19112C3*)(S19112C2*), ABISELECT(2144,1144), "S19112C10");
    /*is_ambiguous_... S19112C12::S8033C4 */ AMB_check_base_class_offset(lv, (S8033C4*)(S19112C12*), ABISELECT(1416,752), "S19112C10");
    check_base_class_offset(lv, (S19112C9*)(S19112C12*), ABISELECT(2784,1480), "S19112C10");
    check_base_class_offset(lv, (S19112C9*)(S19112C2*), ABISELECT(2784,1480), "S19112C10");
    check_base_class_offset(lv, (S8033C7*)(S19112C6*)(S19112C8*), ABISELECT(2832,1508), "S19112C10");
    check_base_class_offset(lv, (S19112C6*)(S19112C8*), ABISELECT(2832,1508), "S19112C10");
    /*is_ambiguous_... S19112C8::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19112C8*), ABISELECT(3088,1640), "S19112C10");
    check_base_class_offset(lv, (S19112C8*)(S19112C13*)(S19112C12*), ABISELECT(2832,1508), "S19112C10");
    /*is_ambiguous_... S19112C3::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19112C3*)(S19112C2*), ABISELECT(3184,1692), "S19112C10");
    check_base_class_offset(lv, (S19112C3*)(S19112C2*), ABISELECT(3184,1692), "S19112C10");
    check_base_class_offset(lv, (S19112C2*)(S19112C13*)(S19112C12*), ABISELECT(3184,1692), "S19112C10");
    check_base_class_offset(lv, (S19112C14*)(S19112C13*)(S19112C12*), ABISELECT(3344,1780), "S19112C10");
    check_base_class_offset(lv, (S19112C13*)(S19112C12*), ABISELECT(624,356), "S19112C10");
    check_base_class_offset(lv, (S19112C12*), ABISELECT(624,356), "S19112C10");
    /*is_ambiguous_... S19112C10::S19112C14 */ AMB_check_base_class_offset(lv, (S19112C14*), 0, "S19112C10");
    /*is_ambiguous_... S19112C10::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*), ABISELECT(192,96), "S19112C10");
    check_field_offset(lv, s19112c10f0, ABISELECT(288,148), "S19112C10.s19112c10f0");
    check_field_offset(lv, s19112c10f1, ABISELECT(480,244), "S19112C10.s19112c10f1");
    check_field_offset(lv, s19112c10f2, ABISELECT(484,248), "S19112C10.s19112c10f2");
    check_field_offset(lv, s19112c10f3, ABISELECT(496,256), "S19112C10.s19112c10f3");
    check_field_offset(lv, s19112c10f4, ABISELECT(512,268), "S19112C10.s19112c10f4");
    check_field_offset(lv, s19112c10f5, ABISELECT(520,272), "S19112C10.s19112c10f5");
    test_class_info(&lv, &cd_S19112C10);
    dp->~S19112C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19112C10(Test_S19112C10, "S19112C10", ABISELECT(3536,1876));

#else // __cplusplus

extern void _ZN9S19112C10C1Ev();
extern void _ZN9S19112C10D1Ev();
Name_Map name_map_S19112C10[] = {
  NSPAIR(_ZN9S19112C10C1Ev),
  NSPAIR(_ZN9S19112C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C4;
extern VTBL_ENTRY _ZTI7S8033C4[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19112C6;
extern VTBL_ENTRY _ZTI8S19112C6[];
extern  VTBL_ENTRY _ZTV8S19112C6[];
extern Class_Descriptor cd_S19112C5;
extern VTBL_ENTRY _ZTI8S19112C5[];
extern  VTBL_ENTRY _ZTV8S19112C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19112C5[];
extern Class_Descriptor cd_S8033C4;
extern VTBL_ENTRY _ZTI7S8033C4[];
extern Class_Descriptor cd_S19112C9;
extern VTBL_ENTRY _ZTI8S19112C9[];
extern  VTBL_ENTRY _ZTV8S19112C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19112C9[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19112C6;
extern VTBL_ENTRY _ZTI8S19112C6[];
extern  VTBL_ENTRY _ZTV8S19112C6[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19112C8;
extern VTBL_ENTRY _ZTI8S19112C8[];
extern  VTBL_ENTRY _ZTV8S19112C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19112C8[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19112C3;
extern VTBL_ENTRY _ZTI8S19112C3[];
extern  VTBL_ENTRY _ZTV8S19112C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19112C3[];
extern Class_Descriptor cd_S19112C2;
extern VTBL_ENTRY _ZTI8S19112C2[];
extern  VTBL_ENTRY _ZTV8S19112C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19112C2[];
extern Class_Descriptor cd_S19112C14;
extern VTBL_ENTRY _ZTI9S19112C14[];
extern  VTBL_ENTRY _ZTV9S19112C14[];
extern Class_Descriptor cd_S19112C13;
extern VTBL_ENTRY _ZTI9S19112C13[];
extern  VTBL_ENTRY _ZTV9S19112C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19112C13[];
extern Class_Descriptor cd_S19112C12;
extern VTBL_ENTRY _ZTI9S19112C12[];
extern  VTBL_ENTRY _ZTV9S19112C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19112C12[];
extern Class_Descriptor cd_S19112C14;
extern VTBL_ENTRY _ZTI9S19112C14[];
extern  VTBL_ENTRY _ZTV9S19112C14[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
static Base_Class bases_S19112C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C4,    ABISELECT(528,280), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C7,    ABISELECT(2144,1144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(2640,1404), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19112C6,    ABISELECT(2640,1404), //bcp->offset
    40, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19112C5,    ABISELECT(2144,1144), //bcp->offset
    32, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S8033C4,    ABISELECT(1416,752), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19112C9,    ABISELECT(2784,1480), //bcp->offset
    45, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S8033C7,    ABISELECT(2832,1508), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19112C6,    ABISELECT(2832,1508), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(3088,1640), //bcp->offset
    59, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19112C8,    ABISELECT(2832,1508), //bcp->offset
    53, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S8033C7,    ABISELECT(3184,1692), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19112C3,    ABISELECT(3184,1692), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19112C2,    ABISELECT(3184,1692), //bcp->offset
    64, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19112C14,    ABISELECT(3344,1780), //bcp->offset
    72, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19112C13,    ABISELECT(624,356), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19112C12,    ABISELECT(624,356), //bcp->offset
    19, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19112C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S8033C7,    ABISELECT(192,96), //bcp->offset
    15, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19112C10[];
extern void _ZN9S19112C142v4Ev();
extern void _ZN9S19112C102v5Ev();
extern void _ZN9S19112C10D1Ev();
extern void _ZN9S19112C10D0Ev();
extern void ABISELECT(_ZThn192_N9S19112C10D1Ev,_ZThn96_N9S19112C10D1Ev)();
extern void ABISELECT(_ZThn192_N9S19112C10D0Ev,_ZThn96_N9S19112C10D0Ev)();
extern void ABISELECT(_ZTv0_n88_N9S19112C10D1Ev,_ZTv0_n44_N9S19112C10D1Ev)();
extern void ABISELECT(_ZThn624_N9S19112C10D1Ev,_ZThn356_N9S19112C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19112C10D0Ev,_ZTv0_n44_N9S19112C10D0Ev)();
extern void ABISELECT(_ZThn624_N9S19112C10D0Ev,_ZThn356_N9S19112C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19112C10D1Ev,_ZTv0_n16_N9S19112C10D1Ev)();
extern void ABISELECT(_ZThn2144_N9S19112C10D1Ev,_ZThn1144_N9S19112C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19112C10D0Ev,_ZTv0_n16_N9S19112C10D0Ev)();
extern void ABISELECT(_ZThn2144_N9S19112C10D0Ev,_ZThn1144_N9S19112C10D0Ev)() __attribute__((weak));
extern void _ZN8S19112C52v2Ev();
extern void ABISELECT(_ZTv0_n24_N9S19112C10D1Ev,_ZTv0_n12_N9S19112C10D1Ev)();
extern void ABISELECT(_ZThn2640_N9S19112C10D1Ev,_ZThn1404_N9S19112C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19112C10D0Ev,_ZTv0_n12_N9S19112C10D0Ev)();
extern void ABISELECT(_ZThn2640_N9S19112C10D0Ev,_ZThn1404_N9S19112C10D0Ev)() __attribute__((weak));
extern void _ZN8S19112C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N9S19112C10D1Ev,_ZTv0_n20_N9S19112C10D1Ev)();
extern void ABISELECT(_ZThn2784_N9S19112C10D1Ev,_ZThn1480_N9S19112C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19112C10D0Ev,_ZTv0_n20_N9S19112C10D0Ev)();
extern void ABISELECT(_ZThn2784_N9S19112C10D0Ev,_ZThn1480_N9S19112C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19112C10D1Ev,_ZTv0_n16_N9S19112C10D1Ev)();
extern void ABISELECT(_ZThn2832_N9S19112C10D1Ev,_ZThn1508_N9S19112C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19112C10D0Ev,_ZTv0_n16_N9S19112C10D0Ev)();
extern void ABISELECT(_ZThn2832_N9S19112C10D0Ev,_ZThn1508_N9S19112C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19112C10D1Ev,_ZTv0_n12_N9S19112C10D1Ev)();
extern void ABISELECT(_ZThn3088_N9S19112C10D1Ev,_ZThn1640_N9S19112C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19112C10D0Ev,_ZTv0_n12_N9S19112C10D0Ev)();
extern void ABISELECT(_ZThn3088_N9S19112C10D0Ev,_ZThn1640_N9S19112C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19112C10D1Ev,_ZTv0_n24_N9S19112C10D1Ev)();
extern void ABISELECT(_ZThn3184_N9S19112C10D1Ev,_ZThn1692_N9S19112C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19112C10D0Ev,_ZTv0_n24_N9S19112C10D0Ev)();
extern void ABISELECT(_ZThn3184_N9S19112C10D0Ev,_ZThn1692_N9S19112C10D0Ev)() __attribute__((weak));
extern void _ZN9S19112C142v4Ev();
static  VTBL_ENTRY vtc_S19112C10[] = {
  ABISELECT(3344,1780),
  ABISELECT(3184,1692),
  ABISELECT(3088,1640),
  ABISELECT(2832,1508),
  ABISELECT(2784,1480),
  ABISELECT(2640,1404),
  ABISELECT(2144,1144),
  ABISELECT(624,356),
  ABISELECT(528,280),
  0,
  (VTBL_ENTRY)&(_ZTI9S19112C10[0]),
  (VTBL_ENTRY)&_ZN9S19112C142v4Ev,
  (VTBL_ENTRY)&_ZN9S19112C102v5Ev,
  (VTBL_ENTRY)&_ZN9S19112C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19112C10D0Ev,
  ABISELECT(-192,-96),
  (VTBL_ENTRY)&(_ZTI9S19112C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn192_N9S19112C10D1Ev,_ZThn96_N9S19112C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn192_N9S19112C10D0Ev,_ZThn96_N9S19112C10D0Ev),
  ABISELECT(-624,-356),
  ABISELECT(2720,1424),
  ABISELECT(-96,-76),
  ABISELECT(2160,1124),
  ABISELECT(2560,1336),
  ABISELECT(2016,1048),
  ABISELECT(1520,788),
  ABISELECT(2464,1284),
  ABISELECT(2208,1152),
  ABISELECT(-624,-356),
  (VTBL_ENTRY)&(_ZTI9S19112C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19112C10D1Ev,_ZTv0_n44_N9S19112C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19112C10D0Ev,_ZTv0_n44_N9S19112C10D0Ev),
  0,
  ABISELECT(-2144,-1144),
  ABISELECT(496,260),
  ABISELECT(-2144,-1144),
  (VTBL_ENTRY)&(_ZTI9S19112C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19112C10D1Ev,_ZTv0_n16_N9S19112C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19112C10D0Ev,_ZTv0_n16_N9S19112C10D0Ev),
  (VTBL_ENTRY)&_ZN8S19112C52v2Ev,
  ABISELECT(-2640,-1404),
  ABISELECT(-2640,-1404),
  (VTBL_ENTRY)&(_ZTI9S19112C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19112C10D1Ev,_ZTv0_n12_N9S19112C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19112C10D0Ev,_ZTv0_n12_N9S19112C10D0Ev),
  ABISELECT(-2784,-1480),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-2784,-1480),
  (VTBL_ENTRY)&(_ZTI9S19112C10[0]),
  (VTBL_ENTRY)&_ZN8S19112C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19112C10D1Ev,_ZTv0_n20_N9S19112C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19112C10D0Ev,_ZTv0_n20_N9S19112C10D0Ev),
  ABISELECT(-2832,-1508),
  ABISELECT(256,132),
  ABISELECT(-2832,-1508),
  (VTBL_ENTRY)&(_ZTI9S19112C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19112C10D1Ev,_ZTv0_n16_N9S19112C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19112C10D0Ev,_ZTv0_n16_N9S19112C10D0Ev),
  ABISELECT(-3088,-1640),
  ABISELECT(-3088,-1640),
  (VTBL_ENTRY)&(_ZTI9S19112C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19112C10D1Ev,_ZTv0_n12_N9S19112C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19112C10D0Ev,_ZTv0_n12_N9S19112C10D0Ev),
  ABISELECT(-3184,-1692),
  ABISELECT(-400,-212),
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  ABISELECT(-3184,-1692),
  (VTBL_ENTRY)&(_ZTI9S19112C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19112C10D1Ev,_ZTv0_n24_N9S19112C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19112C10D0Ev,_ZTv0_n24_N9S19112C10D0Ev),
  0,
  ABISELECT(-3344,-1780),
  (VTBL_ENTRY)&(_ZTI9S19112C10[0]),
  (VTBL_ENTRY)&_ZN9S19112C142v4Ev,
};
extern VTBL_ENTRY _ZTV9S19112C10[];
extern void _ZN9S19112C12D1Ev();
extern void _ZN9S19112C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19112C12__9S19112C10[] = {
  ABISELECT(2720,1424),
  ABISELECT(-96,-76),
  ABISELECT(2160,1124),
  ABISELECT(2560,1336),
  ABISELECT(2016,1048),
  ABISELECT(1520,788),
  ABISELECT(2464,1284),
  ABISELECT(2208,1152),
  0,
  (VTBL_ENTRY)&(_ZTI9S19112C12[0]),
  (VTBL_ENTRY)&_ZN9S19112C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19112C12D0Ev,
};
extern void _ZN9S19112C13D1Ev();
extern void _ZN9S19112C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19112C139S19112C12__9S19112C10[] = {
  ABISELECT(2720,1424),
  ABISELECT(-96,-76),
  ABISELECT(2160,1124),
  ABISELECT(2560,1336),
  ABISELECT(2016,1048),
  ABISELECT(1520,788),
  ABISELECT(2464,1284),
  ABISELECT(2208,1152),
  0,
  (VTBL_ENTRY)&(_ZTI9S19112C13[0]),
  (VTBL_ENTRY)&_ZN9S19112C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19112C13D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19112C13D1Ev,_ZTv0_n16_N9S19112C13D1Ev)();
extern void ABISELECT(_ZThn2208_N9S19112C13D1Ev,_ZThn1152_N9S19112C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19112C13D0Ev,_ZTv0_n16_N9S19112C13D0Ev)();
extern void ABISELECT(_ZThn2208_N9S19112C13D0Ev,_ZThn1152_N9S19112C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19112C8__9S19112C139S19112C12__9S19112C10[] = {
  ABISELECT(-2208,-1152),
  ABISELECT(256,132),
  ABISELECT(-2208,-1152),
  (VTBL_ENTRY)&(_ZTI9S19112C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19112C13D1Ev,_ZTv0_n16_N9S19112C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19112C13D0Ev,_ZTv0_n16_N9S19112C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19112C13D1Ev,_ZTv0_n12_N9S19112C13D1Ev)();
extern void ABISELECT(_ZThn2464_N9S19112C13D1Ev,_ZThn1284_N9S19112C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19112C13D0Ev,_ZTv0_n12_N9S19112C13D0Ev)();
extern void ABISELECT(_ZThn2464_N9S19112C13D0Ev,_ZThn1284_N9S19112C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__9S19112C139S19112C12__9S19112C10[] = {
  ABISELECT(-2464,-1284),
  ABISELECT(-2464,-1284),
  (VTBL_ENTRY)&(_ZTI9S19112C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19112C13D1Ev,_ZTv0_n12_N9S19112C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19112C13D0Ev,_ZTv0_n12_N9S19112C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19112C13D1Ev,_ZTv0_n16_N9S19112C13D1Ev)();
extern void ABISELECT(_ZThn1520_N9S19112C13D1Ev,_ZThn788_N9S19112C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19112C13D0Ev,_ZTv0_n16_N9S19112C13D0Ev)();
extern void ABISELECT(_ZThn1520_N9S19112C13D0Ev,_ZThn788_N9S19112C13D0Ev)() __attribute__((weak));
extern void _ZN8S19112C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C5__9S19112C139S19112C12__9S19112C10[] = {
  0,
  ABISELECT(-1520,-788),
  ABISELECT(496,260),
  ABISELECT(-1520,-788),
  (VTBL_ENTRY)&(_ZTI9S19112C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19112C13D1Ev,_ZTv0_n16_N9S19112C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19112C13D0Ev,_ZTv0_n16_N9S19112C13D0Ev),
  (VTBL_ENTRY)&_ZN8S19112C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19112C13D1Ev,_ZTv0_n12_N9S19112C13D1Ev)();
extern void ABISELECT(_ZThn2016_N9S19112C13D1Ev,_ZThn1048_N9S19112C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19112C13D0Ev,_ZTv0_n12_N9S19112C13D0Ev)();
extern void ABISELECT(_ZThn2016_N9S19112C13D0Ev,_ZThn1048_N9S19112C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19112C6__A1__9S19112C139S19112C12__9S19112C10[] = {
  ABISELECT(-2016,-1048),
  ABISELECT(-2016,-1048),
  (VTBL_ENTRY)&(_ZTI9S19112C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19112C13D1Ev,_ZTv0_n12_N9S19112C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19112C13D0Ev,_ZTv0_n12_N9S19112C13D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19112C13D1Ev,_ZTv0_n24_N9S19112C13D1Ev)();
extern void ABISELECT(_ZThn2560_N9S19112C13D1Ev,_ZThn1336_N9S19112C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19112C13D0Ev,_ZTv0_n24_N9S19112C13D0Ev)();
extern void ABISELECT(_ZThn2560_N9S19112C13D0Ev,_ZThn1336_N9S19112C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19112C2__9S19112C139S19112C12__9S19112C10[] = {
  ABISELECT(-2560,-1336),
  ABISELECT(-400,-212),
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  ABISELECT(-2560,-1336),
  (VTBL_ENTRY)&(_ZTI9S19112C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19112C13D1Ev,_ZTv0_n24_N9S19112C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19112C13D0Ev,_ZTv0_n24_N9S19112C13D0Ev),
};
extern void _ZN8S19112C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N9S19112C13D1Ev,_ZTv0_n20_N9S19112C13D1Ev)();
extern void ABISELECT(_ZThn2160_N9S19112C13D1Ev,_ZThn1124_N9S19112C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19112C13D0Ev,_ZTv0_n20_N9S19112C13D0Ev)();
extern void ABISELECT(_ZThn2160_N9S19112C13D0Ev,_ZThn1124_N9S19112C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19112C9__9S19112C139S19112C12__9S19112C10[] = {
  ABISELECT(-2160,-1124),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-2160,-1124),
  (VTBL_ENTRY)&(_ZTI9S19112C13[0]),
  (VTBL_ENTRY)&_ZN8S19112C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19112C13D1Ev,_ZTv0_n20_N9S19112C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19112C13D0Ev,_ZTv0_n20_N9S19112C13D0Ev),
};
extern void _ZN9S19112C142v4Ev();
static  VTBL_ENTRY _tg__ZTV9S19112C14__9S19112C139S19112C12__9S19112C10[] = {
  0,
  ABISELECT(-2720,-1424),
  (VTBL_ENTRY)&(_ZTI9S19112C13[0]),
  (VTBL_ENTRY)&_ZN9S19112C142v4Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19112C12D1Ev,_ZTv0_n16_N9S19112C12D1Ev)();
extern void ABISELECT(_ZThn1520_N9S19112C12D1Ev,_ZThn788_N9S19112C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19112C12D0Ev,_ZTv0_n16_N9S19112C12D0Ev)();
extern void ABISELECT(_ZThn1520_N9S19112C12D0Ev,_ZThn788_N9S19112C12D0Ev)() __attribute__((weak));
extern void _ZN8S19112C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C5__9S19112C12__9S19112C10[] = {
  0,
  ABISELECT(-1520,-788),
  ABISELECT(496,260),
  ABISELECT(-1520,-788),
  (VTBL_ENTRY)&(_ZTI9S19112C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19112C12D1Ev,_ZTv0_n16_N9S19112C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19112C12D0Ev,_ZTv0_n16_N9S19112C12D0Ev),
  (VTBL_ENTRY)&_ZN8S19112C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19112C12D1Ev,_ZTv0_n12_N9S19112C12D1Ev)();
extern void ABISELECT(_ZThn2016_N9S19112C12D1Ev,_ZThn1048_N9S19112C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19112C12D0Ev,_ZTv0_n12_N9S19112C12D0Ev)();
extern void ABISELECT(_ZThn2016_N9S19112C12D0Ev,_ZThn1048_N9S19112C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19112C6__9S19112C12__9S19112C10[] = {
  ABISELECT(-2016,-1048),
  ABISELECT(-2016,-1048),
  (VTBL_ENTRY)&(_ZTI9S19112C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19112C12D1Ev,_ZTv0_n12_N9S19112C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19112C12D0Ev,_ZTv0_n12_N9S19112C12D0Ev),
};
extern void _ZN8S19112C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N9S19112C12D1Ev,_ZTv0_n20_N9S19112C12D1Ev)();
extern void ABISELECT(_ZThn2160_N9S19112C12D1Ev,_ZThn1124_N9S19112C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19112C12D0Ev,_ZTv0_n20_N9S19112C12D0Ev)();
extern void ABISELECT(_ZThn2160_N9S19112C12D0Ev,_ZThn1124_N9S19112C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19112C9__9S19112C12__9S19112C10[] = {
  ABISELECT(-2160,-1124),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-2160,-1124),
  (VTBL_ENTRY)&(_ZTI9S19112C12[0]),
  (VTBL_ENTRY)&_ZN8S19112C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19112C12D1Ev,_ZTv0_n20_N9S19112C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19112C12D0Ev,_ZTv0_n20_N9S19112C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19112C12D1Ev,_ZTv0_n16_N9S19112C12D1Ev)();
extern void ABISELECT(_ZThn2208_N9S19112C12D1Ev,_ZThn1152_N9S19112C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19112C12D0Ev,_ZTv0_n16_N9S19112C12D0Ev)();
extern void ABISELECT(_ZThn2208_N9S19112C12D0Ev,_ZThn1152_N9S19112C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19112C8__9S19112C12__9S19112C10[] = {
  ABISELECT(-2208,-1152),
  ABISELECT(256,132),
  ABISELECT(-2208,-1152),
  (VTBL_ENTRY)&(_ZTI9S19112C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19112C12D1Ev,_ZTv0_n16_N9S19112C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19112C12D0Ev,_ZTv0_n16_N9S19112C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19112C12D1Ev,_ZTv0_n12_N9S19112C12D1Ev)();
extern void ABISELECT(_ZThn2464_N9S19112C12D1Ev,_ZThn1284_N9S19112C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19112C12D0Ev,_ZTv0_n12_N9S19112C12D0Ev)();
extern void ABISELECT(_ZThn2464_N9S19112C12D0Ev,_ZThn1284_N9S19112C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A3__9S19112C12__9S19112C10[] = {
  ABISELECT(-2464,-1284),
  ABISELECT(-2464,-1284),
  (VTBL_ENTRY)&(_ZTI9S19112C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19112C12D1Ev,_ZTv0_n12_N9S19112C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19112C12D0Ev,_ZTv0_n12_N9S19112C12D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19112C12D1Ev,_ZTv0_n24_N9S19112C12D1Ev)();
extern void ABISELECT(_ZThn2560_N9S19112C12D1Ev,_ZThn1336_N9S19112C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19112C12D0Ev,_ZTv0_n24_N9S19112C12D0Ev)();
extern void ABISELECT(_ZThn2560_N9S19112C12D0Ev,_ZThn1336_N9S19112C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19112C2__9S19112C12__9S19112C10[] = {
  ABISELECT(-2560,-1336),
  ABISELECT(-400,-212),
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  ABISELECT(-2560,-1336),
  (VTBL_ENTRY)&(_ZTI9S19112C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19112C12D1Ev,_ZTv0_n24_N9S19112C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19112C12D0Ev,_ZTv0_n24_N9S19112C12D0Ev),
};
extern void _ZN9S19112C142v4Ev();
static  VTBL_ENTRY _tg__ZTV9S19112C14__9S19112C12__9S19112C10[] = {
  0,
  ABISELECT(-2720,-1424),
  (VTBL_ENTRY)&(_ZTI9S19112C12[0]),
  (VTBL_ENTRY)&_ZN9S19112C142v4Ev,
};
extern void _ZN8S19112C5D1Ev();
extern void _ZN8S19112C5D0Ev();
extern void _ZN8S19112C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C5__9S19112C10[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19112C5[0]),
  (VTBL_ENTRY)&_ZN8S19112C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19112C5D0Ev,
  (VTBL_ENTRY)&_ZN8S19112C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19112C5D1Ev,_ZTv0_n12_N8S19112C5D1Ev)();
extern void ABISELECT(_ZThn496_N8S19112C5D1Ev,_ZThn260_N8S19112C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19112C5D0Ev,_ZTv0_n12_N8S19112C5D0Ev)();
extern void ABISELECT(_ZThn496_N8S19112C5D0Ev,_ZThn260_N8S19112C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19112C6__8S19112C5__9S19112C10[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI8S19112C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C5D1Ev,_ZTv0_n12_N8S19112C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C5D0Ev,_ZTv0_n12_N8S19112C5D0Ev),
};
extern void _ZN8S19112C92v3Ev();
extern void _ZN8S19112C9D1Ev();
extern void _ZN8S19112C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C9__9S19112C10[] = {
  ABISELECT(-144,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19112C9[0]),
  (VTBL_ENTRY)&_ZN8S19112C92v3Ev,
  (VTBL_ENTRY)&_ZN8S19112C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19112C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19112C9D1Ev,_ZTv0_n12_N8S19112C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19112C9D0Ev,_ZTv0_n12_N8S19112C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19112C6__8S19112C9__9S19112C10[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S19112C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C9D1Ev,_ZTv0_n12_N8S19112C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C9D0Ev,_ZTv0_n12_N8S19112C9D0Ev),
};
extern void _ZN8S19112C8D1Ev();
extern void _ZN8S19112C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C8__9S19112C10[] = {
  ABISELECT(256,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S19112C8[0]),
  (VTBL_ENTRY)&_ZN8S19112C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19112C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19112C8D1Ev,_ZTv0_n12_N8S19112C8D1Ev)();
extern void ABISELECT(_ZThn256_N8S19112C8D1Ev,_ZThn132_N8S19112C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19112C8D0Ev,_ZTv0_n12_N8S19112C8D0Ev)();
extern void ABISELECT(_ZThn256_N8S19112C8D0Ev,_ZThn132_N8S19112C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__8S19112C8__9S19112C10[] = {
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  (VTBL_ENTRY)&(_ZTI8S19112C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C8D1Ev,_ZTv0_n12_N8S19112C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C8D0Ev,_ZTv0_n12_N8S19112C8D0Ev),
};
extern void _ZN8S19112C2D1Ev();
extern void _ZN8S19112C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C2__9S19112C10[] = {
  ABISELECT(-400,-212),
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  0,
  (VTBL_ENTRY)&(_ZTI8S19112C2[0]),
  (VTBL_ENTRY)&_ZN8S19112C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19112C2D0Ev,
};
extern void _ZN8S19112C3D1Ev();
extern void _ZN8S19112C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C38S19112C2__9S19112C10[] = {
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  0,
  (VTBL_ENTRY)&(_ZTI8S19112C3[0]),
  (VTBL_ENTRY)&_ZN8S19112C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19112C3D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19112C3D1Ev,_ZTv0_n16_N8S19112C3D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19112C3D0Ev,_ZTv0_n16_N8S19112C3D0Ev)();
extern void _ZN8S19112C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C5__8S19112C38S19112C2__9S19112C10[] = {
  0,
  ABISELECT(1040,548),
  ABISELECT(496,260),
  ABISELECT(1040,548),
  (VTBL_ENTRY)&(_ZTI8S19112C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19112C3D1Ev,_ZTv0_n16_N8S19112C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19112C3D0Ev,_ZTv0_n16_N8S19112C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19112C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19112C3D1Ev,_ZTv0_n12_N8S19112C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19112C3D0Ev,_ZTv0_n12_N8S19112C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19112C6__8S19112C38S19112C2__9S19112C10[] = {
  ABISELECT(544,288),
  ABISELECT(544,288),
  (VTBL_ENTRY)&(_ZTI8S19112C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C3D1Ev,_ZTv0_n12_N8S19112C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C3D0Ev,_ZTv0_n12_N8S19112C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19112C2D1Ev,_ZTv0_n16_N8S19112C2D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19112C2D0Ev,_ZTv0_n16_N8S19112C2D0Ev)();
extern void _ZN8S19112C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C5__8S19112C2__9S19112C10[] = {
  0,
  ABISELECT(1040,548),
  ABISELECT(496,260),
  ABISELECT(1040,548),
  (VTBL_ENTRY)&(_ZTI8S19112C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19112C2D1Ev,_ZTv0_n16_N8S19112C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19112C2D0Ev,_ZTv0_n16_N8S19112C2D0Ev),
  (VTBL_ENTRY)&_ZN8S19112C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19112C2D1Ev,_ZTv0_n12_N8S19112C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19112C2D0Ev,_ZTv0_n12_N8S19112C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19112C6__8S19112C2__9S19112C10[] = {
  ABISELECT(544,288),
  ABISELECT(544,288),
  (VTBL_ENTRY)&(_ZTI8S19112C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C2D1Ev,_ZTv0_n12_N8S19112C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C2D0Ev,_ZTv0_n12_N8S19112C2D0Ev),
};
extern void _ZN8S19112C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N8S19112C2D1Ev,_ZTv0_n20_N8S19112C2D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S19112C2D0Ev,_ZTv0_n20_N8S19112C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19112C9__8S19112C2__9S19112C10[] = {
  ABISELECT(400,212),
  0,
  ABISELECT(-144,-76),
  ABISELECT(400,212),
  (VTBL_ENTRY)&(_ZTI8S19112C2[0]),
  (VTBL_ENTRY)&_ZN8S19112C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19112C2D1Ev,_ZTv0_n20_N8S19112C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19112C2D0Ev,_ZTv0_n20_N8S19112C2D0Ev),
};
static  VTT_ENTRY vtt_S19112C10[] = {
  {&(_ZTV9S19112C10[11]),  11,76},
  {&(_ZTV9S19112C10[30]),  30,76},
  {&(_ZTV9S19112C10[37]),  37,76},
  {&(_ZTV9S19112C10[43]),  43,76},
  {&(_ZTV9S19112C10[50]),  50,76},
  {&(_ZTV9S19112C10[57]),  57,76},
  {&(_ZTV9S19112C10[62]),  62,76},
  {&(_ZTV9S19112C10[70]),  70,76},
  {&(_ZTV9S19112C10[75]),  75,76},
  {&(_tg__ZTV9S19112C12__9S19112C10[10]),  10,12},
  {&(_tg__ZTV9S19112C139S19112C12__9S19112C10[10]),  10,12},
  {&(_tg__ZTV8S19112C8__9S19112C139S19112C12__9S19112C10[4]),  4,6},
  {&(_tg__ZTV7S8033C7__A1__9S19112C139S19112C12__9S19112C10[3]),  3,5},
  {&(_tg__ZTV8S19112C5__9S19112C139S19112C12__9S19112C10[5]),  5,8},
  {&(_tg__ZTV8S19112C6__A1__9S19112C139S19112C12__9S19112C10[3]),  3,5},
  {&(_tg__ZTV8S19112C2__9S19112C139S19112C12__9S19112C10[6]),  6,8},
  {&(_tg__ZTV8S19112C9__9S19112C139S19112C12__9S19112C10[5]),  5,8},
  {&(_tg__ZTV9S19112C14__9S19112C139S19112C12__9S19112C10[3]),  3,4},
  {&(_tg__ZTV8S19112C5__9S19112C12__9S19112C10[5]),  5,8},
  {&(_tg__ZTV8S19112C6__9S19112C12__9S19112C10[3]),  3,5},
  {&(_tg__ZTV8S19112C9__9S19112C12__9S19112C10[5]),  5,8},
  {&(_tg__ZTV8S19112C8__9S19112C12__9S19112C10[4]),  4,6},
  {&(_tg__ZTV7S8033C7__A3__9S19112C12__9S19112C10[3]),  3,5},
  {&(_tg__ZTV8S19112C2__9S19112C12__9S19112C10[6]),  6,8},
  {&(_tg__ZTV9S19112C14__9S19112C12__9S19112C10[3]),  3,4},
  {&(_tg__ZTV8S19112C5__9S19112C10[3]),  3,6},
  {&(_tg__ZTV8S19112C6__8S19112C5__9S19112C10[3]),  3,5},
  {&(_tg__ZTV8S19112C9__9S19112C10[3]),  3,6},
  {&(_tg__ZTV8S19112C6__8S19112C9__9S19112C10[3]),  3,5},
  {&(_tg__ZTV8S19112C8__9S19112C10[3]),  3,5},
  {&(_tg__ZTV7S8033C7__A1__8S19112C8__9S19112C10[3]),  3,5},
  {&(_tg__ZTV8S19112C2__9S19112C10[5]),  5,7},
  {&(_tg__ZTV8S19112C38S19112C2__9S19112C10[4]),  4,6},
  {&(_tg__ZTV8S19112C5__8S19112C38S19112C2__9S19112C10[5]),  5,8},
  {&(_tg__ZTV8S19112C6__8S19112C38S19112C2__9S19112C10[3]),  3,5},
  {&(_tg__ZTV8S19112C5__8S19112C2__9S19112C10[5]),  5,8},
  {&(_tg__ZTV8S19112C6__8S19112C2__9S19112C10[3]),  3,5},
  {&(_tg__ZTV8S19112C9__8S19112C2__9S19112C10[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S19112C10[];
extern  VTBL_ENTRY _ZTV9S19112C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19112C10[];
static VTBL_ENTRY alt_thunk_names79[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19112C8D0Ev,_ZTv0_n12_N8S19112C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19112C8D0Ev,_ZThn132_N8S19112C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19112C8D1Ev,_ZTv0_n12_N8S19112C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19112C8D1Ev,_ZThn132_N8S19112C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19112C5D0Ev,_ZTv0_n12_N8S19112C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19112C5D0Ev,_ZThn260_N8S19112C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19112C5D1Ev,_ZTv0_n12_N8S19112C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19112C5D1Ev,_ZThn260_N8S19112C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19112C12D0Ev,_ZTv0_n24_N9S19112C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N9S19112C12D0Ev,_ZThn1336_N9S19112C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19112C12D1Ev,_ZTv0_n24_N9S19112C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N9S19112C12D1Ev,_ZThn1336_N9S19112C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19112C12D0Ev,_ZTv0_n20_N9S19112C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N9S19112C12D0Ev,_ZThn1124_N9S19112C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19112C12D1Ev,_ZTv0_n20_N9S19112C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N9S19112C12D1Ev,_ZThn1124_N9S19112C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19112C12D0Ev,_ZTv0_n12_N9S19112C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2464_N9S19112C12D0Ev,_ZThn1284_N9S19112C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2016_N9S19112C12D0Ev,_ZThn1048_N9S19112C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19112C12D1Ev,_ZTv0_n12_N9S19112C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2464_N9S19112C12D1Ev,_ZThn1284_N9S19112C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2016_N9S19112C12D1Ev,_ZThn1048_N9S19112C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19112C12D0Ev,_ZTv0_n16_N9S19112C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2208_N9S19112C12D0Ev,_ZThn1152_N9S19112C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N9S19112C12D0Ev,_ZThn788_N9S19112C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19112C12D1Ev,_ZTv0_n16_N9S19112C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2208_N9S19112C12D1Ev,_ZThn1152_N9S19112C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N9S19112C12D1Ev,_ZThn788_N9S19112C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19112C13D0Ev,_ZTv0_n20_N9S19112C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N9S19112C13D0Ev,_ZThn1124_N9S19112C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19112C13D1Ev,_ZTv0_n20_N9S19112C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N9S19112C13D1Ev,_ZThn1124_N9S19112C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19112C13D0Ev,_ZTv0_n24_N9S19112C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N9S19112C13D0Ev,_ZThn1336_N9S19112C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19112C13D1Ev,_ZTv0_n24_N9S19112C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N9S19112C13D1Ev,_ZThn1336_N9S19112C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19112C13D0Ev,_ZTv0_n12_N9S19112C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2016_N9S19112C13D0Ev,_ZThn1048_N9S19112C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2464_N9S19112C13D0Ev,_ZThn1284_N9S19112C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19112C13D1Ev,_ZTv0_n12_N9S19112C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2016_N9S19112C13D1Ev,_ZThn1048_N9S19112C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2464_N9S19112C13D1Ev,_ZThn1284_N9S19112C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19112C13D0Ev,_ZTv0_n16_N9S19112C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N9S19112C13D0Ev,_ZThn788_N9S19112C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2208_N9S19112C13D0Ev,_ZThn1152_N9S19112C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19112C13D1Ev,_ZTv0_n16_N9S19112C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N9S19112C13D1Ev,_ZThn788_N9S19112C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2208_N9S19112C13D1Ev,_ZThn1152_N9S19112C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19112C10D0Ev,_ZTv0_n24_N9S19112C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3184_N9S19112C10D0Ev,_ZThn1692_N9S19112C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19112C10D1Ev,_ZTv0_n24_N9S19112C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3184_N9S19112C10D1Ev,_ZThn1692_N9S19112C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19112C10D0Ev,_ZTv0_n20_N9S19112C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2784_N9S19112C10D0Ev,_ZThn1480_N9S19112C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19112C10D1Ev,_ZTv0_n20_N9S19112C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2784_N9S19112C10D1Ev,_ZThn1480_N9S19112C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19112C10D0Ev,_ZTv0_n12_N9S19112C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3088_N9S19112C10D0Ev,_ZThn1640_N9S19112C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2640_N9S19112C10D0Ev,_ZThn1404_N9S19112C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19112C10D1Ev,_ZTv0_n12_N9S19112C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3088_N9S19112C10D1Ev,_ZThn1640_N9S19112C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2640_N9S19112C10D1Ev,_ZThn1404_N9S19112C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19112C10D0Ev,_ZTv0_n16_N9S19112C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2832_N9S19112C10D0Ev,_ZThn1508_N9S19112C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2144_N9S19112C10D0Ev,_ZThn1144_N9S19112C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19112C10D1Ev,_ZTv0_n16_N9S19112C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2832_N9S19112C10D1Ev,_ZThn1508_N9S19112C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2144_N9S19112C10D1Ev,_ZThn1144_N9S19112C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19112C10D0Ev,_ZTv0_n44_N9S19112C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn624_N9S19112C10D0Ev,_ZThn356_N9S19112C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19112C10D1Ev,_ZTv0_n44_N9S19112C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn624_N9S19112C10D1Ev,_ZThn356_N9S19112C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19112C10 = {  "S19112C10", // class name
  bases_S19112C10, 19,
  &(vtc_S19112C10[0]), // expected_vtbl_contents
  &(vtt_S19112C10[0]), // expected_vtt_contents
  ABISELECT(3536,1876), // object size
  NSPAIRA(_ZTI9S19112C10),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19112C10),76, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19112C10),38, //virtual table table var
  17, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names79,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19112C1  : virtual S19112C2 , virtual S19112C10 {
  int s19112c1f0:21;
  ::S19112C14 s19112c1f1;
  long s19112c1f2;
  int s19112c1f3;
  ::S19112C13 s19112c1f4;
  ::S19112C10 s19112c1f5;
  virtual void  v1(); // _ZN8S19112C12v1Ev
  ~S19112C1(); // tgen
  S19112C1(); // tgen
};
//SIG(1 S19112C1) C1{ VBC2{ BC3{ BC4{ vd m Fc Fc:0 Fl[8] FD} VBC5{ BC4 VBC6{ BC4 Fp FC7{} Fp FD} vd v2 Fi Fc Fp Fi Fp[2] FC8{ BC6 VBC4 vd FC4 Fp}} vd Fp FL Fl Fc Fp Fi} VBC9{ VBC6 v3 Fc Fs FD Fp[2]} vd Fc FL:35} VBC10{ VBC11{ m Fp[3] FL[8]} VBC12{ VBC5 BC11 VBC9 BC13{ VBC8 VBC5 VBC2 VBC11 VBC14{ v4 FD Fp FC4 FL FD Fi} vd Fp FC14[3] FC14 Fc} FC14 Fp Fl[2] FL:31 Fi FC7 FC14 FC14 Fp} BC14 BC4 v5 FC14 Fi Fc[6] FD Fi FL} v1 Fi:21 FC14 Fl Fi FC13 FC10}


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

static void Test_S19112C1()
{
  extern Class_Descriptor cd_S19112C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(600,1268)];
    init_test(&cd_S19112C1, buf);
    S19112C1 *dp, &lv = *(dp=new (buf) S19112C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(9584,5068), "sizeof(S19112C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19112C1)");
    /*is_ambiguous_... S19112C3::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19112C3*)(S19112C2*), ABISELECT(6048,3192), "S19112C1");
    /*is_ambiguous_... S19112C5::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19112C5*), ABISELECT(6208,3280), "S19112C1");
    /*is_ambiguous_... S19112C1::S19112C6 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19112C6*), ABISELECT(6704,3540), "S19112C1");
    check_base_class_offset(lv, (S19112C6*)(S19112C5*), ABISELECT(6704,3540), "S19112C1");
    check_base_class_offset(lv, (S19112C6*)(S19112C9*), ABISELECT(6704,3540), "S19112C1");
    check_base_class_offset(lv, (S19112C5*)(S19112C3*)(S19112C2*), ABISELECT(6208,3280), "S19112C1");
    check_base_class_offset(lv, (S19112C5*)(S19112C12*), ABISELECT(6208,3280), "S19112C1");
    check_base_class_offset(lv, (S19112C5*)(S19112C13*)(S19112C12*), ABISELECT(6208,3280), "S19112C1");
    check_base_class_offset(lv, (S19112C3*)(S19112C2*), ABISELECT(6048,3192), "S19112C1");
    check_base_class_offset(lv, (S19112C9*)(S19112C2*), ABISELECT(6848,3616), "S19112C1");
    check_base_class_offset(lv, (S19112C9*)(S19112C12*), ABISELECT(6848,3616), "S19112C1");
    check_base_class_offset(lv, (S19112C2*), ABISELECT(6048,3192), "S19112C1");
    check_base_class_offset(lv, (S19112C2*)(S19112C13*)(S19112C12*), ABISELECT(6048,3192), "S19112C1");
    /*is_ambiguous_... S19112C10::S8033C4 */ AMB_check_base_class_offset(lv, (S8033C4*)(S19112C10*), ABISELECT(7424,3924), "S19112C1");
    check_base_class_offset(lv, (S8033C4*)(S19112C13*)(S19112C12*), ABISELECT(7424,3924), "S19112C1");
    /*is_ambiguous_... S19112C12::S8033C4 */ AMB_check_base_class_offset(lv, (S8033C4*)(S19112C12*), ABISELECT(8312,4396), "S19112C1");
    check_base_class_offset(lv, (S8033C7*)(S19112C6*)(S19112C8*), ABISELECT(9040,4788), "S19112C1");
    check_base_class_offset(lv, (S19112C6*)(S19112C8*), ABISELECT(9040,4788), "S19112C1");
    /*is_ambiguous_... S19112C8::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19112C8*), ABISELECT(9296,4920), "S19112C1");
    check_base_class_offset(lv, (S19112C8*)(S19112C13*)(S19112C12*), ABISELECT(9040,4788), "S19112C1");
    check_base_class_offset(lv, (S19112C14*)(S19112C13*)(S19112C12*), ABISELECT(9392,4972), "S19112C1");
    check_base_class_offset(lv, (S19112C13*)(S19112C12*), ABISELECT(7520,4000), "S19112C1");
    check_base_class_offset(lv, (S19112C12*)(S19112C10*), ABISELECT(7520,4000), "S19112C1");
    /*is_ambiguous_... S19112C10::S19112C14 */ AMB_check_base_class_offset(lv, (S19112C14*)(S19112C10*), ABISELECT(6896,3644), "S19112C1");
    /*is_ambiguous_... S19112C10::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19112C10*), ABISELECT(7088,3740), "S19112C1");
    check_base_class_offset(lv, (S19112C10*), ABISELECT(6896,3644), "S19112C1");
    set_bf_and_test(lv, s19112c1f0, ABISELECT(8,4), 0, 21, 1, "S19112C1");
    set_bf_and_test(lv, s19112c1f0, ABISELECT(8,4), 0, 21, hide_sll(1LL<<20), "S19112C1");
    check_field_offset(lv, s19112c1f1, ABISELECT(16,8), "S19112C1.s19112c1f1");
    check_field_offset(lv, s19112c1f2, ABISELECT(208,104), "S19112C1.s19112c1f2");
    check_field_offset(lv, s19112c1f3, ABISELECT(216,108), "S19112C1.s19112c1f3");
    check_field_offset(lv, s19112c1f4, ABISELECT(224,112), "S19112C1.s19112c1f4");
    check_field_offset(lv, s19112c1f5, ABISELECT(2512,1316), "S19112C1.s19112c1f5");
    test_class_info(&lv, &cd_S19112C1);
    dp->~S19112C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19112C1(Test_S19112C1, "S19112C1", ABISELECT(9584,5068));

#else // __cplusplus

extern void _ZN8S19112C1C1Ev();
extern void _ZN8S19112C1D1Ev();
Name_Map name_map_S19112C1[] = {
  NSPAIR(_ZN8S19112C1C1Ev),
  NSPAIR(_ZN8S19112C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19112C6;
extern VTBL_ENTRY _ZTI8S19112C6[];
extern  VTBL_ENTRY _ZTV8S19112C6[];
extern Class_Descriptor cd_S19112C5;
extern VTBL_ENTRY _ZTI8S19112C5[];
extern  VTBL_ENTRY _ZTV8S19112C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19112C5[];
extern Class_Descriptor cd_S19112C3;
extern VTBL_ENTRY _ZTI8S19112C3[];
extern  VTBL_ENTRY _ZTV8S19112C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19112C3[];
extern Class_Descriptor cd_S19112C9;
extern VTBL_ENTRY _ZTI8S19112C9[];
extern  VTBL_ENTRY _ZTV8S19112C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19112C9[];
extern Class_Descriptor cd_S19112C2;
extern VTBL_ENTRY _ZTI8S19112C2[];
extern  VTBL_ENTRY _ZTV8S19112C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19112C2[];
extern Class_Descriptor cd_S8033C4;
extern VTBL_ENTRY _ZTI7S8033C4[];
extern Class_Descriptor cd_S8033C4;
extern VTBL_ENTRY _ZTI7S8033C4[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19112C6;
extern VTBL_ENTRY _ZTI8S19112C6[];
extern  VTBL_ENTRY _ZTV8S19112C6[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19112C8;
extern VTBL_ENTRY _ZTI8S19112C8[];
extern  VTBL_ENTRY _ZTV8S19112C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19112C8[];
extern Class_Descriptor cd_S19112C14;
extern VTBL_ENTRY _ZTI9S19112C14[];
extern  VTBL_ENTRY _ZTV9S19112C14[];
extern Class_Descriptor cd_S19112C13;
extern VTBL_ENTRY _ZTI9S19112C13[];
extern  VTBL_ENTRY _ZTV9S19112C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19112C13[];
extern Class_Descriptor cd_S19112C12;
extern VTBL_ENTRY _ZTI9S19112C12[];
extern  VTBL_ENTRY _ZTV9S19112C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19112C12[];
extern Class_Descriptor cd_S19112C14;
extern VTBL_ENTRY _ZTI9S19112C14[];
extern  VTBL_ENTRY _ZTV9S19112C14[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19112C10;
extern VTBL_ENTRY _ZTI9S19112C10[];
extern  VTBL_ENTRY _ZTV9S19112C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19112C10[];
static Base_Class bases_S19112C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    ABISELECT(6048,3192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(6208,3280), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(6704,3540), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19112C6,    ABISELECT(6704,3540), //bcp->offset
    31, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19112C5,    ABISELECT(6208,3280), //bcp->offset
    23, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19112C3,    ABISELECT(6048,3192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19112C9,    ABISELECT(6848,3616), //bcp->offset
    36, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19112C2,    ABISELECT(6048,3192), //bcp->offset
    15, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C4,    ABISELECT(7424,3924), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S8033C4,    ABISELECT(8312,4396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(9040,4788), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19112C6,    ABISELECT(9040,4788), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(9296,4920), //bcp->offset
    85, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19112C8,    ABISELECT(9040,4788), //bcp->offset
    79, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19112C14,    ABISELECT(9392,4972), //bcp->offset
    90, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19112C13,    ABISELECT(7520,4000), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19112C12,    ABISELECT(7520,4000), //bcp->offset
    66, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S19112C14,    ABISELECT(6896,3644), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(7088,3740), //bcp->offset
    62, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19112C10,    ABISELECT(6896,3644), //bcp->offset
    44, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19112C1[];
extern void _ZN8S19112C12v1Ev();
extern void _ZN8S19112C1D1Ev();
extern void _ZN8S19112C1D0Ev();
extern void ABISELECT(_ZTv0_n48_N8S19112C1D1Ev,_ZTv0_n24_N8S19112C1D1Ev)();
extern void ABISELECT(_ZThn6048_N8S19112C1D1Ev,_ZThn3192_N8S19112C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19112C1D0Ev,_ZTv0_n24_N8S19112C1D0Ev)();
extern void ABISELECT(_ZThn6048_N8S19112C1D0Ev,_ZThn3192_N8S19112C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19112C1D1Ev,_ZTv0_n16_N8S19112C1D1Ev)();
extern void ABISELECT(_ZThn6208_N8S19112C1D1Ev,_ZThn3280_N8S19112C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19112C1D0Ev,_ZTv0_n16_N8S19112C1D0Ev)();
extern void ABISELECT(_ZThn6208_N8S19112C1D0Ev,_ZThn3280_N8S19112C1D0Ev)() __attribute__((weak));
extern void _ZN8S19112C52v2Ev();
extern void ABISELECT(_ZTv0_n24_N8S19112C1D1Ev,_ZTv0_n12_N8S19112C1D1Ev)();
extern void ABISELECT(_ZThn6704_N8S19112C1D1Ev,_ZThn3540_N8S19112C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19112C1D0Ev,_ZTv0_n12_N8S19112C1D0Ev)();
extern void ABISELECT(_ZThn6704_N8S19112C1D0Ev,_ZThn3540_N8S19112C1D0Ev)() __attribute__((weak));
extern void _ZN8S19112C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N8S19112C1D1Ev,_ZTv0_n20_N8S19112C1D1Ev)();
extern void ABISELECT(_ZThn6848_N8S19112C1D1Ev,_ZThn3616_N8S19112C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19112C1D0Ev,_ZTv0_n20_N8S19112C1D0Ev)();
extern void ABISELECT(_ZThn6848_N8S19112C1D0Ev,_ZThn3616_N8S19112C1D0Ev)() __attribute__((weak));
extern void _ZN9S19112C142v4Ev();
extern void _ZN9S19112C102v5Ev();
extern void ABISELECT(_ZTv0_n112_N8S19112C1D1Ev,_ZTv0_n56_N8S19112C1D1Ev)();
extern void ABISELECT(_ZThn6896_N8S19112C1D1Ev,_ZThn3644_N8S19112C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n112_N8S19112C1D0Ev,_ZTv0_n56_N8S19112C1D0Ev)();
extern void ABISELECT(_ZThn6896_N8S19112C1D0Ev,_ZThn3644_N8S19112C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn192_n112_N8S19112C1D1Ev,_ZTvn96_n56_N8S19112C1D1Ev)();
extern void ABISELECT(_ZTvn192_n112_N8S19112C1D0Ev,_ZTvn96_n56_N8S19112C1D0Ev)();
extern void ABISELECT(_ZTv0_n88_N8S19112C1D1Ev,_ZTv0_n44_N8S19112C1D1Ev)();
extern void ABISELECT(_ZThn7520_N8S19112C1D1Ev,_ZThn4000_N8S19112C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19112C1D0Ev,_ZTv0_n44_N8S19112C1D0Ev)();
extern void ABISELECT(_ZThn7520_N8S19112C1D0Ev,_ZThn4000_N8S19112C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19112C1D1Ev,_ZTv0_n16_N8S19112C1D1Ev)();
extern void ABISELECT(_ZThn9040_N8S19112C1D1Ev,_ZThn4788_N8S19112C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19112C1D0Ev,_ZTv0_n16_N8S19112C1D0Ev)();
extern void ABISELECT(_ZThn9040_N8S19112C1D0Ev,_ZThn4788_N8S19112C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19112C1D1Ev,_ZTv0_n12_N8S19112C1D1Ev)();
extern void ABISELECT(_ZThn9296_N8S19112C1D1Ev,_ZThn4920_N8S19112C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19112C1D0Ev,_ZTv0_n12_N8S19112C1D0Ev)();
extern void ABISELECT(_ZThn9296_N8S19112C1D0Ev,_ZThn4920_N8S19112C1D0Ev)() __attribute__((weak));
extern void _ZN9S19112C142v4Ev();
static  VTBL_ENTRY vtc_S19112C1[] = {
  ABISELECT(9392,4972),
  ABISELECT(9296,4920),
  ABISELECT(9040,4788),
  ABISELECT(7520,4000),
  ABISELECT(7424,3924),
  ABISELECT(6896,3644),
  ABISELECT(6848,3616),
  ABISELECT(6704,3540),
  ABISELECT(6208,3280),
  ABISELECT(6048,3192),
  0,
  (VTBL_ENTRY)&(_ZTI8S19112C1[0]),
  (VTBL_ENTRY)&_ZN8S19112C12v1Ev,
  (VTBL_ENTRY)&_ZN8S19112C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19112C1D0Ev,
  ABISELECT(-6048,-3192),
  ABISELECT(800,424),
  ABISELECT(656,348),
  ABISELECT(160,88),
  ABISELECT(-6048,-3192),
  (VTBL_ENTRY)&(_ZTI8S19112C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19112C1D1Ev,_ZTv0_n24_N8S19112C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19112C1D0Ev,_ZTv0_n24_N8S19112C1D0Ev),
  0,
  ABISELECT(-6208,-3280),
  ABISELECT(496,260),
  ABISELECT(-6208,-3280),
  (VTBL_ENTRY)&(_ZTI8S19112C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19112C1D1Ev,_ZTv0_n16_N8S19112C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19112C1D0Ev,_ZTv0_n16_N8S19112C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19112C52v2Ev,
  ABISELECT(-6704,-3540),
  ABISELECT(-6704,-3540),
  (VTBL_ENTRY)&(_ZTI8S19112C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C1D1Ev,_ZTv0_n12_N8S19112C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C1D0Ev,_ZTv0_n12_N8S19112C1D0Ev),
  ABISELECT(-6848,-3616),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-6848,-3616),
  (VTBL_ENTRY)&(_ZTI8S19112C1[0]),
  (VTBL_ENTRY)&_ZN8S19112C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19112C1D1Ev,_ZTv0_n20_N8S19112C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19112C1D0Ev,_ZTv0_n20_N8S19112C1D0Ev),
  ABISELECT(-6896,-3644),
  0,
  0,
  ABISELECT(2496,1328),
  ABISELECT(-848,-452),
  ABISELECT(2400,1276),
  ABISELECT(2144,1144),
  ABISELECT(-48,-28),
  ABISELECT(-192,-104),
  ABISELECT(-688,-364),
  ABISELECT(624,356),
  ABISELECT(528,280),
  ABISELECT(-6896,-3644),
  (VTBL_ENTRY)&(_ZTI8S19112C1[0]),
  (VTBL_ENTRY)&_ZN9S19112C142v4Ev,
  (VTBL_ENTRY)&_ZN9S19112C102v5Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N8S19112C1D1Ev,_ZTv0_n56_N8S19112C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N8S19112C1D0Ev,_ZTv0_n56_N8S19112C1D0Ev),
  ABISELECT(-7088,-3740),
  (VTBL_ENTRY)&(_ZTI8S19112C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn192_n112_N8S19112C1D1Ev,_ZTvn96_n56_N8S19112C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn192_n112_N8S19112C1D0Ev,_ZTvn96_n56_N8S19112C1D0Ev),
  ABISELECT(-7520,-4000),
  ABISELECT(1872,972),
  ABISELECT(-96,-76),
  ABISELECT(-672,-384),
  ABISELECT(-1472,-808),
  ABISELECT(-816,-460),
  ABISELECT(-1312,-720),
  ABISELECT(1776,920),
  ABISELECT(1520,788),
  ABISELECT(-7520,-4000),
  (VTBL_ENTRY)&(_ZTI8S19112C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19112C1D1Ev,_ZTv0_n44_N8S19112C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19112C1D0Ev,_ZTv0_n44_N8S19112C1D0Ev),
  ABISELECT(-9040,-4788),
  ABISELECT(256,132),
  ABISELECT(-9040,-4788),
  (VTBL_ENTRY)&(_ZTI8S19112C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19112C1D1Ev,_ZTv0_n16_N8S19112C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19112C1D0Ev,_ZTv0_n16_N8S19112C1D0Ev),
  ABISELECT(-9296,-4920),
  ABISELECT(-9296,-4920),
  (VTBL_ENTRY)&(_ZTI8S19112C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C1D1Ev,_ZTv0_n12_N8S19112C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C1D0Ev,_ZTv0_n12_N8S19112C1D0Ev),
  0,
  ABISELECT(-9392,-4972),
  (VTBL_ENTRY)&(_ZTI8S19112C1[0]),
  (VTBL_ENTRY)&_ZN9S19112C142v4Ev,
};
extern VTBL_ENTRY _ZTV8S19112C1[];
extern void _ZN8S19112C2D1Ev();
extern void _ZN8S19112C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C2__8S19112C1[] = {
  ABISELECT(800,424),
  ABISELECT(656,348),
  ABISELECT(160,88),
  0,
  (VTBL_ENTRY)&(_ZTI8S19112C2[0]),
  (VTBL_ENTRY)&_ZN8S19112C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19112C2D0Ev,
};
extern void _ZN8S19112C3D1Ev();
extern void _ZN8S19112C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C38S19112C2__8S19112C1[] = {
  ABISELECT(656,348),
  ABISELECT(160,88),
  0,
  (VTBL_ENTRY)&(_ZTI8S19112C3[0]),
  (VTBL_ENTRY)&_ZN8S19112C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19112C3D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19112C3D1Ev,_ZTv0_n16_N8S19112C3D1Ev)();
extern void ABISELECT(_ZThn160_N8S19112C3D1Ev,_ZThn88_N8S19112C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19112C3D0Ev,_ZTv0_n16_N8S19112C3D0Ev)();
extern void ABISELECT(_ZThn160_N8S19112C3D0Ev,_ZThn88_N8S19112C3D0Ev)() __attribute__((weak));
extern void _ZN8S19112C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C5__8S19112C38S19112C2__8S19112C1[] = {
  0,
  ABISELECT(-160,-88),
  ABISELECT(496,260),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S19112C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19112C3D1Ev,_ZTv0_n16_N8S19112C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19112C3D0Ev,_ZTv0_n16_N8S19112C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19112C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19112C3D1Ev,_ZTv0_n12_N8S19112C3D1Ev)();
extern void ABISELECT(_ZThn656_N8S19112C3D1Ev,_ZThn348_N8S19112C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19112C3D0Ev,_ZTv0_n12_N8S19112C3D0Ev)();
extern void ABISELECT(_ZThn656_N8S19112C3D0Ev,_ZThn348_N8S19112C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19112C6__8S19112C38S19112C2__8S19112C1[] = {
  ABISELECT(-656,-348),
  ABISELECT(-656,-348),
  (VTBL_ENTRY)&(_ZTI8S19112C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C3D1Ev,_ZTv0_n12_N8S19112C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C3D0Ev,_ZTv0_n12_N8S19112C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19112C2D1Ev,_ZTv0_n16_N8S19112C2D1Ev)();
extern void ABISELECT(_ZThn160_N8S19112C2D1Ev,_ZThn88_N8S19112C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19112C2D0Ev,_ZTv0_n16_N8S19112C2D0Ev)();
extern void ABISELECT(_ZThn160_N8S19112C2D0Ev,_ZThn88_N8S19112C2D0Ev)() __attribute__((weak));
extern void _ZN8S19112C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C5__8S19112C2__8S19112C1[] = {
  0,
  ABISELECT(-160,-88),
  ABISELECT(496,260),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S19112C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19112C2D1Ev,_ZTv0_n16_N8S19112C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19112C2D0Ev,_ZTv0_n16_N8S19112C2D0Ev),
  (VTBL_ENTRY)&_ZN8S19112C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19112C2D1Ev,_ZTv0_n12_N8S19112C2D1Ev)();
extern void ABISELECT(_ZThn656_N8S19112C2D1Ev,_ZThn348_N8S19112C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19112C2D0Ev,_ZTv0_n12_N8S19112C2D0Ev)();
extern void ABISELECT(_ZThn656_N8S19112C2D0Ev,_ZThn348_N8S19112C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19112C6__8S19112C2__8S19112C1[] = {
  ABISELECT(-656,-348),
  ABISELECT(-656,-348),
  (VTBL_ENTRY)&(_ZTI8S19112C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C2D1Ev,_ZTv0_n12_N8S19112C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C2D0Ev,_ZTv0_n12_N8S19112C2D0Ev),
};
extern void _ZN8S19112C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N8S19112C2D1Ev,_ZTv0_n20_N8S19112C2D1Ev)();
extern void ABISELECT(_ZThn800_N8S19112C2D1Ev,_ZThn424_N8S19112C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19112C2D0Ev,_ZTv0_n20_N8S19112C2D0Ev)();
extern void ABISELECT(_ZThn800_N8S19112C2D0Ev,_ZThn424_N8S19112C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19112C9__8S19112C2__8S19112C1[] = {
  ABISELECT(-800,-424),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-800,-424),
  (VTBL_ENTRY)&(_ZTI8S19112C2[0]),
  (VTBL_ENTRY)&_ZN8S19112C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19112C2D1Ev,_ZTv0_n20_N8S19112C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19112C2D0Ev,_ZTv0_n20_N8S19112C2D0Ev),
};
extern void _ZN8S19112C5D1Ev();
extern void _ZN8S19112C5D0Ev();
extern void _ZN8S19112C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C5__8S19112C1[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19112C5[0]),
  (VTBL_ENTRY)&_ZN8S19112C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19112C5D0Ev,
  (VTBL_ENTRY)&_ZN8S19112C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19112C5D1Ev,_ZTv0_n12_N8S19112C5D1Ev)();
extern void ABISELECT(_ZThn496_N8S19112C5D1Ev,_ZThn260_N8S19112C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19112C5D0Ev,_ZTv0_n12_N8S19112C5D0Ev)();
extern void ABISELECT(_ZThn496_N8S19112C5D0Ev,_ZThn260_N8S19112C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19112C6__8S19112C5__8S19112C1[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI8S19112C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C5D1Ev,_ZTv0_n12_N8S19112C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C5D0Ev,_ZTv0_n12_N8S19112C5D0Ev),
};
extern void _ZN8S19112C92v3Ev();
extern void _ZN8S19112C9D1Ev();
extern void _ZN8S19112C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C9__8S19112C1[] = {
  ABISELECT(-144,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19112C9[0]),
  (VTBL_ENTRY)&_ZN8S19112C92v3Ev,
  (VTBL_ENTRY)&_ZN8S19112C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19112C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19112C9D1Ev,_ZTv0_n12_N8S19112C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19112C9D0Ev,_ZTv0_n12_N8S19112C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19112C6__8S19112C9__8S19112C1[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S19112C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C9D1Ev,_ZTv0_n12_N8S19112C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C9D0Ev,_ZTv0_n12_N8S19112C9D0Ev),
};
extern void _ZN9S19112C142v4Ev();
extern void _ZN9S19112C102v5Ev();
extern void _ZN9S19112C10D1Ev();
extern void _ZN9S19112C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19112C10__8S19112C1[] = {
  ABISELECT(2496,1328),
  ABISELECT(-848,-452),
  ABISELECT(2400,1276),
  ABISELECT(2144,1144),
  ABISELECT(-48,-28),
  ABISELECT(-192,-104),
  ABISELECT(-688,-364),
  ABISELECT(624,356),
  ABISELECT(528,280),
  0,
  (VTBL_ENTRY)&(_ZTI9S19112C10[0]),
  (VTBL_ENTRY)&_ZN9S19112C142v4Ev,
  (VTBL_ENTRY)&_ZN9S19112C102v5Ev,
  (VTBL_ENTRY)&_ZN9S19112C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19112C10D0Ev,
};
extern void ABISELECT(_ZTv0_n88_N9S19112C10D1Ev,_ZTv0_n44_N9S19112C10D1Ev)();
extern void ABISELECT(_ZThn624_N9S19112C10D1Ev,_ZThn356_N9S19112C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19112C10D0Ev,_ZTv0_n44_N9S19112C10D0Ev)();
extern void ABISELECT(_ZThn624_N9S19112C10D0Ev,_ZThn356_N9S19112C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19112C12__9S19112C10__8S19112C1[] = {
  ABISELECT(-624,-356),
  ABISELECT(1872,972),
  ABISELECT(-96,-76),
  ABISELECT(-672,-384),
  ABISELECT(-1472,-808),
  ABISELECT(-816,-460),
  ABISELECT(-1312,-720),
  ABISELECT(1776,920),
  ABISELECT(1520,788),
  ABISELECT(-624,-356),
  (VTBL_ENTRY)&(_ZTI9S19112C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19112C10D1Ev,_ZTv0_n44_N9S19112C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19112C10D0Ev,_ZTv0_n44_N9S19112C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19112C10D1Ev,_ZTv0_n16_N9S19112C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19112C10D0Ev,_ZTv0_n16_N9S19112C10D0Ev)();
extern void _ZN8S19112C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C5__9S19112C10__8S19112C1[] = {
  0,
  ABISELECT(688,364),
  ABISELECT(496,260),
  ABISELECT(688,364),
  (VTBL_ENTRY)&(_ZTI9S19112C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19112C10D1Ev,_ZTv0_n16_N9S19112C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19112C10D0Ev,_ZTv0_n16_N9S19112C10D0Ev),
  (VTBL_ENTRY)&_ZN8S19112C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19112C10D1Ev,_ZTv0_n12_N9S19112C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19112C10D0Ev,_ZTv0_n12_N9S19112C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19112C6__9S19112C10__8S19112C1[] = {
  ABISELECT(192,104),
  ABISELECT(192,104),
  (VTBL_ENTRY)&(_ZTI9S19112C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19112C10D1Ev,_ZTv0_n12_N9S19112C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19112C10D0Ev,_ZTv0_n12_N9S19112C10D0Ev),
};
extern void _ZN8S19112C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N9S19112C10D1Ev,_ZTv0_n20_N9S19112C10D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19112C10D0Ev,_ZTv0_n20_N9S19112C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19112C9__9S19112C10__8S19112C1[] = {
  ABISELECT(48,28),
  0,
  ABISELECT(-144,-76),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S19112C10[0]),
  (VTBL_ENTRY)&_ZN8S19112C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19112C10D1Ev,_ZTv0_n20_N9S19112C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19112C10D0Ev,_ZTv0_n20_N9S19112C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19112C10D1Ev,_ZTv0_n16_N9S19112C10D1Ev)();
extern void ABISELECT(_ZThn2144_N9S19112C10D1Ev,_ZThn1144_N9S19112C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19112C10D0Ev,_ZTv0_n16_N9S19112C10D0Ev)();
extern void ABISELECT(_ZThn2144_N9S19112C10D0Ev,_ZThn1144_N9S19112C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19112C8__9S19112C10__8S19112C1[] = {
  ABISELECT(-2144,-1144),
  ABISELECT(256,132),
  ABISELECT(-2144,-1144),
  (VTBL_ENTRY)&(_ZTI9S19112C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19112C10D1Ev,_ZTv0_n16_N9S19112C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19112C10D0Ev,_ZTv0_n16_N9S19112C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19112C10D1Ev,_ZTv0_n12_N9S19112C10D1Ev)();
extern void ABISELECT(_ZThn2400_N9S19112C10D1Ev,_ZThn1276_N9S19112C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19112C10D0Ev,_ZTv0_n12_N9S19112C10D0Ev)();
extern void ABISELECT(_ZThn2400_N9S19112C10D0Ev,_ZThn1276_N9S19112C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A3__9S19112C10__8S19112C1[] = {
  ABISELECT(-2400,-1276),
  ABISELECT(-2400,-1276),
  (VTBL_ENTRY)&(_ZTI9S19112C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19112C10D1Ev,_ZTv0_n12_N9S19112C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19112C10D0Ev,_ZTv0_n12_N9S19112C10D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19112C10D1Ev,_ZTv0_n24_N9S19112C10D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19112C10D0Ev,_ZTv0_n24_N9S19112C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19112C2__9S19112C10__8S19112C1[] = {
  ABISELECT(848,452),
  ABISELECT(800,424),
  ABISELECT(656,348),
  ABISELECT(160,88),
  ABISELECT(848,452),
  (VTBL_ENTRY)&(_ZTI9S19112C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19112C10D1Ev,_ZTv0_n24_N9S19112C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19112C10D0Ev,_ZTv0_n24_N9S19112C10D0Ev),
};
extern void _ZN9S19112C142v4Ev();
static  VTBL_ENTRY _tg__ZTV9S19112C14__9S19112C10__8S19112C1[] = {
  0,
  ABISELECT(-2496,-1328),
  (VTBL_ENTRY)&(_ZTI9S19112C10[0]),
  (VTBL_ENTRY)&_ZN9S19112C142v4Ev,
};
extern void _ZN9S19112C12D1Ev();
extern void _ZN9S19112C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19112C12__8S19112C1[] = {
  ABISELECT(1872,972),
  ABISELECT(-96,-76),
  ABISELECT(-672,-384),
  ABISELECT(-1472,-808),
  ABISELECT(-816,-460),
  ABISELECT(-1312,-720),
  ABISELECT(1776,920),
  ABISELECT(1520,788),
  0,
  (VTBL_ENTRY)&(_ZTI9S19112C12[0]),
  (VTBL_ENTRY)&_ZN9S19112C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19112C12D0Ev,
};
extern void _ZN9S19112C13D1Ev();
extern void _ZN9S19112C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19112C139S19112C12__8S19112C1[] = {
  ABISELECT(1872,972),
  ABISELECT(-96,-76),
  ABISELECT(-672,-384),
  ABISELECT(-1472,-808),
  ABISELECT(-816,-460),
  ABISELECT(-1312,-720),
  ABISELECT(1776,920),
  ABISELECT(1520,788),
  0,
  (VTBL_ENTRY)&(_ZTI9S19112C13[0]),
  (VTBL_ENTRY)&_ZN9S19112C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19112C13D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19112C13D1Ev,_ZTv0_n16_N9S19112C13D1Ev)();
extern void ABISELECT(_ZThn1520_N9S19112C13D1Ev,_ZThn788_N9S19112C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19112C13D0Ev,_ZTv0_n16_N9S19112C13D0Ev)();
extern void ABISELECT(_ZThn1520_N9S19112C13D0Ev,_ZThn788_N9S19112C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19112C8__9S19112C139S19112C12__8S19112C1[] = {
  ABISELECT(-1520,-788),
  ABISELECT(256,132),
  ABISELECT(-1520,-788),
  (VTBL_ENTRY)&(_ZTI9S19112C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19112C13D1Ev,_ZTv0_n16_N9S19112C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19112C13D0Ev,_ZTv0_n16_N9S19112C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19112C13D1Ev,_ZTv0_n12_N9S19112C13D1Ev)();
extern void ABISELECT(_ZThn1776_N9S19112C13D1Ev,_ZThn920_N9S19112C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19112C13D0Ev,_ZTv0_n12_N9S19112C13D0Ev)();
extern void ABISELECT(_ZThn1776_N9S19112C13D0Ev,_ZThn920_N9S19112C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__9S19112C139S19112C12__8S19112C1[] = {
  ABISELECT(-1776,-920),
  ABISELECT(-1776,-920),
  (VTBL_ENTRY)&(_ZTI9S19112C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19112C13D1Ev,_ZTv0_n12_N9S19112C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19112C13D0Ev,_ZTv0_n12_N9S19112C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19112C13D1Ev,_ZTv0_n16_N9S19112C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19112C13D0Ev,_ZTv0_n16_N9S19112C13D0Ev)();
extern void _ZN8S19112C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C5__9S19112C139S19112C12__8S19112C1[] = {
  0,
  ABISELECT(1312,720),
  ABISELECT(496,260),
  ABISELECT(1312,720),
  (VTBL_ENTRY)&(_ZTI9S19112C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19112C13D1Ev,_ZTv0_n16_N9S19112C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19112C13D0Ev,_ZTv0_n16_N9S19112C13D0Ev),
  (VTBL_ENTRY)&_ZN8S19112C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19112C13D1Ev,_ZTv0_n12_N9S19112C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19112C13D0Ev,_ZTv0_n12_N9S19112C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19112C6__A1__9S19112C139S19112C12__8S19112C1[] = {
  ABISELECT(816,460),
  ABISELECT(816,460),
  (VTBL_ENTRY)&(_ZTI9S19112C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19112C13D1Ev,_ZTv0_n12_N9S19112C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19112C13D0Ev,_ZTv0_n12_N9S19112C13D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19112C13D1Ev,_ZTv0_n24_N9S19112C13D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19112C13D0Ev,_ZTv0_n24_N9S19112C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19112C2__9S19112C139S19112C12__8S19112C1[] = {
  ABISELECT(1472,808),
  ABISELECT(800,424),
  ABISELECT(656,348),
  ABISELECT(160,88),
  ABISELECT(1472,808),
  (VTBL_ENTRY)&(_ZTI9S19112C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19112C13D1Ev,_ZTv0_n24_N9S19112C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19112C13D0Ev,_ZTv0_n24_N9S19112C13D0Ev),
};
extern void _ZN8S19112C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N9S19112C13D1Ev,_ZTv0_n20_N9S19112C13D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19112C13D0Ev,_ZTv0_n20_N9S19112C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19112C9__9S19112C139S19112C12__8S19112C1[] = {
  ABISELECT(672,384),
  0,
  ABISELECT(-144,-76),
  ABISELECT(672,384),
  (VTBL_ENTRY)&(_ZTI9S19112C13[0]),
  (VTBL_ENTRY)&_ZN8S19112C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19112C13D1Ev,_ZTv0_n20_N9S19112C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19112C13D0Ev,_ZTv0_n20_N9S19112C13D0Ev),
};
extern void _ZN9S19112C142v4Ev();
static  VTBL_ENTRY _tg__ZTV9S19112C14__9S19112C139S19112C12__8S19112C1[] = {
  0,
  ABISELECT(-1872,-972),
  (VTBL_ENTRY)&(_ZTI9S19112C13[0]),
  (VTBL_ENTRY)&_ZN9S19112C142v4Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19112C12D1Ev,_ZTv0_n16_N9S19112C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19112C12D0Ev,_ZTv0_n16_N9S19112C12D0Ev)();
extern void _ZN8S19112C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C5__9S19112C12__8S19112C1[] = {
  0,
  ABISELECT(1312,720),
  ABISELECT(496,260),
  ABISELECT(1312,720),
  (VTBL_ENTRY)&(_ZTI9S19112C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19112C12D1Ev,_ZTv0_n16_N9S19112C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19112C12D0Ev,_ZTv0_n16_N9S19112C12D0Ev),
  (VTBL_ENTRY)&_ZN8S19112C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19112C12D1Ev,_ZTv0_n12_N9S19112C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19112C12D0Ev,_ZTv0_n12_N9S19112C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19112C6__9S19112C12__8S19112C1[] = {
  ABISELECT(816,460),
  ABISELECT(816,460),
  (VTBL_ENTRY)&(_ZTI9S19112C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19112C12D1Ev,_ZTv0_n12_N9S19112C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19112C12D0Ev,_ZTv0_n12_N9S19112C12D0Ev),
};
extern void _ZN8S19112C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N9S19112C12D1Ev,_ZTv0_n20_N9S19112C12D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19112C12D0Ev,_ZTv0_n20_N9S19112C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19112C9__9S19112C12__8S19112C1[] = {
  ABISELECT(672,384),
  0,
  ABISELECT(-144,-76),
  ABISELECT(672,384),
  (VTBL_ENTRY)&(_ZTI9S19112C12[0]),
  (VTBL_ENTRY)&_ZN8S19112C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19112C12D1Ev,_ZTv0_n20_N9S19112C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19112C12D0Ev,_ZTv0_n20_N9S19112C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19112C12D1Ev,_ZTv0_n16_N9S19112C12D1Ev)();
extern void ABISELECT(_ZThn1520_N9S19112C12D1Ev,_ZThn788_N9S19112C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19112C12D0Ev,_ZTv0_n16_N9S19112C12D0Ev)();
extern void ABISELECT(_ZThn1520_N9S19112C12D0Ev,_ZThn788_N9S19112C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19112C8__9S19112C12__8S19112C1[] = {
  ABISELECT(-1520,-788),
  ABISELECT(256,132),
  ABISELECT(-1520,-788),
  (VTBL_ENTRY)&(_ZTI9S19112C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19112C12D1Ev,_ZTv0_n16_N9S19112C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19112C12D0Ev,_ZTv0_n16_N9S19112C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19112C12D1Ev,_ZTv0_n12_N9S19112C12D1Ev)();
extern void ABISELECT(_ZThn1776_N9S19112C12D1Ev,_ZThn920_N9S19112C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19112C12D0Ev,_ZTv0_n12_N9S19112C12D0Ev)();
extern void ABISELECT(_ZThn1776_N9S19112C12D0Ev,_ZThn920_N9S19112C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A3__9S19112C12__8S19112C1[] = {
  ABISELECT(-1776,-920),
  ABISELECT(-1776,-920),
  (VTBL_ENTRY)&(_ZTI9S19112C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19112C12D1Ev,_ZTv0_n12_N9S19112C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19112C12D0Ev,_ZTv0_n12_N9S19112C12D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19112C12D1Ev,_ZTv0_n24_N9S19112C12D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19112C12D0Ev,_ZTv0_n24_N9S19112C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19112C2__9S19112C12__8S19112C1[] = {
  ABISELECT(1472,808),
  ABISELECT(800,424),
  ABISELECT(656,348),
  ABISELECT(160,88),
  ABISELECT(1472,808),
  (VTBL_ENTRY)&(_ZTI9S19112C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19112C12D1Ev,_ZTv0_n24_N9S19112C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19112C12D0Ev,_ZTv0_n24_N9S19112C12D0Ev),
};
extern void _ZN9S19112C142v4Ev();
static  VTBL_ENTRY _tg__ZTV9S19112C14__9S19112C12__8S19112C1[] = {
  0,
  ABISELECT(-1872,-972),
  (VTBL_ENTRY)&(_ZTI9S19112C12[0]),
  (VTBL_ENTRY)&_ZN9S19112C142v4Ev,
};
extern void _ZN8S19112C8D1Ev();
extern void _ZN8S19112C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C8__8S19112C1[] = {
  ABISELECT(256,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S19112C8[0]),
  (VTBL_ENTRY)&_ZN8S19112C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19112C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19112C8D1Ev,_ZTv0_n12_N8S19112C8D1Ev)();
extern void ABISELECT(_ZThn256_N8S19112C8D1Ev,_ZThn132_N8S19112C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19112C8D0Ev,_ZTv0_n12_N8S19112C8D0Ev)();
extern void ABISELECT(_ZThn256_N8S19112C8D0Ev,_ZThn132_N8S19112C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__8S19112C8__8S19112C1[] = {
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  (VTBL_ENTRY)&(_ZTI8S19112C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C8D1Ev,_ZTv0_n12_N8S19112C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C8D0Ev,_ZTv0_n12_N8S19112C8D0Ev),
};
static  VTT_ENTRY vtt_S19112C1[] = {
  {&(_ZTV8S19112C1[12]),  12,94},
  {&(_ZTV8S19112C1[21]),  21,94},
  {&(_ZTV8S19112C1[28]),  28,94},
  {&(_ZTV8S19112C1[34]),  34,94},
  {&(_ZTV8S19112C1[41]),  41,94},
  {&(_ZTV8S19112C1[58]),  58,94},
  {&(_ZTV8S19112C1[77]),  77,94},
  {&(_ZTV8S19112C1[83]),  83,94},
  {&(_ZTV8S19112C1[88]),  88,94},
  {&(_ZTV8S19112C1[93]),  93,94},
  {&(_ZTV8S19112C1[64]),  64,94},
  {&(_tg__ZTV8S19112C2__8S19112C1[5]),  5,7},
  {&(_tg__ZTV8S19112C38S19112C2__8S19112C1[4]),  4,6},
  {&(_tg__ZTV8S19112C5__8S19112C38S19112C2__8S19112C1[5]),  5,8},
  {&(_tg__ZTV8S19112C6__8S19112C38S19112C2__8S19112C1[3]),  3,5},
  {&(_tg__ZTV8S19112C5__8S19112C2__8S19112C1[5]),  5,8},
  {&(_tg__ZTV8S19112C6__8S19112C2__8S19112C1[3]),  3,5},
  {&(_tg__ZTV8S19112C9__8S19112C2__8S19112C1[5]),  5,8},
  {&(_tg__ZTV8S19112C5__8S19112C1[3]),  3,6},
  {&(_tg__ZTV8S19112C6__8S19112C5__8S19112C1[3]),  3,5},
  {&(_tg__ZTV8S19112C9__8S19112C1[3]),  3,6},
  {&(_tg__ZTV8S19112C6__8S19112C9__8S19112C1[3]),  3,5},
  {&(_tg__ZTV9S19112C10__8S19112C1[11]),  11,15},
  {&(_tg__ZTV9S19112C12__9S19112C10__8S19112C1[11]),  11,13},
  {&(_tg__ZTV8S19112C5__9S19112C10__8S19112C1[5]),  5,8},
  {&(_tg__ZTV8S19112C6__9S19112C10__8S19112C1[3]),  3,5},
  {&(_tg__ZTV8S19112C9__9S19112C10__8S19112C1[5]),  5,8},
  {&(_tg__ZTV8S19112C8__9S19112C10__8S19112C1[4]),  4,6},
  {&(_tg__ZTV7S8033C7__A3__9S19112C10__8S19112C1[3]),  3,5},
  {&(_tg__ZTV8S19112C2__9S19112C10__8S19112C1[6]),  6,8},
  {&(_tg__ZTV9S19112C14__9S19112C10__8S19112C1[3]),  3,4},
  {&(_tg__ZTV9S19112C12__8S19112C1[10]),  10,12},
  {&(_tg__ZTV9S19112C139S19112C12__8S19112C1[10]),  10,12},
  {&(_tg__ZTV8S19112C8__9S19112C139S19112C12__8S19112C1[4]),  4,6},
  {&(_tg__ZTV7S8033C7__A1__9S19112C139S19112C12__8S19112C1[3]),  3,5},
  {&(_tg__ZTV8S19112C5__9S19112C139S19112C12__8S19112C1[5]),  5,8},
  {&(_tg__ZTV8S19112C6__A1__9S19112C139S19112C12__8S19112C1[3]),  3,5},
  {&(_tg__ZTV8S19112C2__9S19112C139S19112C12__8S19112C1[6]),  6,8},
  {&(_tg__ZTV8S19112C9__9S19112C139S19112C12__8S19112C1[5]),  5,8},
  {&(_tg__ZTV9S19112C14__9S19112C139S19112C12__8S19112C1[3]),  3,4},
  {&(_tg__ZTV8S19112C5__9S19112C12__8S19112C1[5]),  5,8},
  {&(_tg__ZTV8S19112C6__9S19112C12__8S19112C1[3]),  3,5},
  {&(_tg__ZTV8S19112C9__9S19112C12__8S19112C1[5]),  5,8},
  {&(_tg__ZTV8S19112C8__9S19112C12__8S19112C1[4]),  4,6},
  {&(_tg__ZTV7S8033C7__A3__9S19112C12__8S19112C1[3]),  3,5},
  {&(_tg__ZTV8S19112C2__9S19112C12__8S19112C1[6]),  6,8},
  {&(_tg__ZTV9S19112C14__9S19112C12__8S19112C1[3]),  3,4},
  {&(_tg__ZTV8S19112C8__8S19112C1[3]),  3,5},
  {&(_tg__ZTV7S8033C7__A1__8S19112C8__8S19112C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19112C1[];
extern  VTBL_ENTRY _ZTV8S19112C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19112C1[];
static VTBL_ENTRY alt_thunk_names80[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19112C8D0Ev,_ZTv0_n12_N8S19112C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19112C8D0Ev,_ZThn132_N8S19112C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19112C8D1Ev,_ZTv0_n12_N8S19112C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19112C8D1Ev,_ZThn132_N8S19112C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19112C12D0Ev,_ZTv0_n12_N9S19112C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1776_N9S19112C12D0Ev,_ZThn920_N9S19112C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19112C12D1Ev,_ZTv0_n12_N9S19112C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1776_N9S19112C12D1Ev,_ZThn920_N9S19112C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19112C12D0Ev,_ZTv0_n16_N9S19112C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N9S19112C12D0Ev,_ZThn788_N9S19112C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19112C12D1Ev,_ZTv0_n16_N9S19112C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N9S19112C12D1Ev,_ZThn788_N9S19112C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19112C13D0Ev,_ZTv0_n12_N9S19112C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1776_N9S19112C13D0Ev,_ZThn920_N9S19112C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19112C13D1Ev,_ZTv0_n12_N9S19112C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1776_N9S19112C13D1Ev,_ZThn920_N9S19112C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19112C13D0Ev,_ZTv0_n16_N9S19112C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N9S19112C13D0Ev,_ZThn788_N9S19112C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19112C13D1Ev,_ZTv0_n16_N9S19112C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N9S19112C13D1Ev,_ZThn788_N9S19112C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19112C10D0Ev,_ZTv0_n12_N9S19112C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2400_N9S19112C10D0Ev,_ZThn1276_N9S19112C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19112C10D1Ev,_ZTv0_n12_N9S19112C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2400_N9S19112C10D1Ev,_ZThn1276_N9S19112C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19112C10D0Ev,_ZTv0_n16_N9S19112C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2144_N9S19112C10D0Ev,_ZThn1144_N9S19112C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19112C10D1Ev,_ZTv0_n16_N9S19112C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2144_N9S19112C10D1Ev,_ZThn1144_N9S19112C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19112C10D0Ev,_ZTv0_n44_N9S19112C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn624_N9S19112C10D0Ev,_ZThn356_N9S19112C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19112C10D1Ev,_ZTv0_n44_N9S19112C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn624_N9S19112C10D1Ev,_ZThn356_N9S19112C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19112C5D0Ev,_ZTv0_n12_N8S19112C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19112C5D0Ev,_ZThn260_N8S19112C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19112C5D1Ev,_ZTv0_n12_N8S19112C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19112C5D1Ev,_ZThn260_N8S19112C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19112C2D0Ev,_ZTv0_n20_N8S19112C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn800_N8S19112C2D0Ev,_ZThn424_N8S19112C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19112C2D1Ev,_ZTv0_n20_N8S19112C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn800_N8S19112C2D1Ev,_ZThn424_N8S19112C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19112C2D0Ev,_ZTv0_n12_N8S19112C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S19112C2D0Ev,_ZThn348_N8S19112C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19112C2D1Ev,_ZTv0_n12_N8S19112C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S19112C2D1Ev,_ZThn348_N8S19112C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19112C2D0Ev,_ZTv0_n16_N8S19112C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19112C2D0Ev,_ZThn88_N8S19112C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19112C2D1Ev,_ZTv0_n16_N8S19112C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19112C2D1Ev,_ZThn88_N8S19112C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19112C3D0Ev,_ZTv0_n12_N8S19112C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S19112C3D0Ev,_ZThn348_N8S19112C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19112C3D1Ev,_ZTv0_n12_N8S19112C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S19112C3D1Ev,_ZThn348_N8S19112C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19112C3D0Ev,_ZTv0_n16_N8S19112C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19112C3D0Ev,_ZThn88_N8S19112C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19112C3D1Ev,_ZTv0_n16_N8S19112C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19112C3D1Ev,_ZThn88_N8S19112C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19112C1D0Ev,_ZTv0_n44_N8S19112C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7520_N8S19112C1D0Ev,_ZThn4000_N8S19112C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19112C1D1Ev,_ZTv0_n44_N8S19112C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7520_N8S19112C1D1Ev,_ZThn4000_N8S19112C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N8S19112C1D0Ev,_ZTv0_n56_N8S19112C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6896_N8S19112C1D0Ev,_ZThn3644_N8S19112C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N8S19112C1D1Ev,_ZTv0_n56_N8S19112C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6896_N8S19112C1D1Ev,_ZThn3644_N8S19112C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19112C1D0Ev,_ZTv0_n20_N8S19112C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6848_N8S19112C1D0Ev,_ZThn3616_N8S19112C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19112C1D1Ev,_ZTv0_n20_N8S19112C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6848_N8S19112C1D1Ev,_ZThn3616_N8S19112C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19112C1D0Ev,_ZTv0_n12_N8S19112C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9296_N8S19112C1D0Ev,_ZThn4920_N8S19112C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn6704_N8S19112C1D0Ev,_ZThn3540_N8S19112C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19112C1D1Ev,_ZTv0_n12_N8S19112C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9296_N8S19112C1D1Ev,_ZThn4920_N8S19112C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn6704_N8S19112C1D1Ev,_ZThn3540_N8S19112C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19112C1D0Ev,_ZTv0_n16_N8S19112C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9040_N8S19112C1D0Ev,_ZThn4788_N8S19112C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn6208_N8S19112C1D0Ev,_ZThn3280_N8S19112C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19112C1D1Ev,_ZTv0_n16_N8S19112C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9040_N8S19112C1D1Ev,_ZThn4788_N8S19112C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn6208_N8S19112C1D1Ev,_ZThn3280_N8S19112C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19112C1D0Ev,_ZTv0_n24_N8S19112C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6048_N8S19112C1D0Ev,_ZThn3192_N8S19112C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19112C1D1Ev,_ZTv0_n24_N8S19112C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6048_N8S19112C1D1Ev,_ZThn3192_N8S19112C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19112C1 = {  "S19112C1", // class name
  bases_S19112C1, 20,
  &(vtc_S19112C1[0]), // expected_vtbl_contents
  &(vtt_S19112C1[0]), // expected_vtt_contents
  ABISELECT(9584,5068), // object size
  NSPAIRA(_ZTI8S19112C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19112C1),94, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19112C1),49, //virtual table table var
  18, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names80,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1182C5  : virtual S7856C24 , S7856C15 , virtual S7856C12 {
  ~S1182C5(); // tgen
  S1182C5(); // tgen
};
//SIG(-1 S1182C5) C1{ VBC2{ m} BC3{ m} VBC4{ m}}


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

static void Test_S1182C5()
{
  extern Class_Descriptor cd_S1182C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S1182C5, buf);
    S1182C5 *dp, &lv = *(dp=new (buf) S1182C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S1182C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1182C5)");
    check_base_class_offset(lv, (S7856C24*), 0, "S1182C5");
    check_base_class_offset(lv, (S7856C15*), 0, "S1182C5");
    check_base_class_offset(lv, (S7856C12*), 0, "S1182C5");
    test_class_info(&lv, &cd_S1182C5);
    dp->~S1182C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1182C5(Test_S1182C5, "S1182C5", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S1182C5C1Ev();
extern void _ZN7S1182C5D1Ev();
Name_Map name_map_S1182C5[] = {
  NSPAIR(_ZN7S1182C5C1Ev),
  NSPAIR(_ZN7S1182C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
static Base_Class bases_S1182C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S1182C5[];
static  VTBL_ENTRY vtc_S1182C5[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
extern VTBL_ENTRY _ZTV7S1182C5[];
static  VTT_ENTRY vtt_S1182C5[] = {
  {&(_ZTV7S1182C5[4]),  4,4},
};
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
Class_Descriptor cd_S1182C5 = {  "S1182C5", // class name
  bases_S1182C5, 3,
  &(vtc_S1182C5[0]), // expected_vtbl_contents
  &(vtt_S1182C5[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S1182C5),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S1182C5),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1182C5),1, //virtual table table var
  0, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1182C3  : S7856C24 , virtual S1182C5 , virtual S7856C15 {
  ~S1182C3(); // tgen
  S1182C3(); // tgen
};
//SIG(-1 S1182C3) C1{ BC2{ m} VBC3{ VBC2 BC4{ m} VBC5{ m}} VBC4}


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

static void Test_S1182C3()
{
  extern Class_Descriptor cd_S1182C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S1182C3, buf);
    S1182C3 *dp, &lv = *(dp=new (buf) S1182C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S1182C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1182C3)");
    /*is_ambiguous_... S1182C3::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), 0, "S1182C3");
    check_base_class_offset(lv, (S7856C24*)(S1182C5*), ABISELECT(8,4), "S1182C3");
    check_base_class_offset(lv, (S7856C15*)(S1182C5*), 0, "S1182C3");
    check_base_class_offset(lv, (S7856C12*)(S1182C5*), 0, "S1182C3");
    check_base_class_offset(lv, (S1182C5*), 0, "S1182C3");
    /*is_ambiguous_... S1182C3::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(8,4), "S1182C3");
    test_class_info(&lv, &cd_S1182C3);
    dp->~S1182C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1182C3(Test_S1182C3, "S1182C3", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S1182C3C1Ev();
extern void _ZN7S1182C3D1Ev();
Name_Map name_map_S1182C3[] = {
  NSPAIR(_ZN7S1182C3C1Ev),
  NSPAIR(_ZN7S1182C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
static Base_Class bases_S1182C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S1182C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S1182C3[];
static  VTBL_ENTRY vtc_S1182C3[] = {
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
extern VTBL_ENTRY _ZTV7S1182C3[];
static  VTBL_ENTRY _tg__ZTV7S1182C5__7S1182C3[] = {
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTT_ENTRY vtt_S1182C3[] = {
  {&(_ZTV7S1182C3[6]),  6,6},
  {&(_ZTV7S1182C3[6]),  6,6},
  {&(_tg__ZTV7S1182C5__7S1182C3[4]),  4,4},
};
extern VTBL_ENTRY _ZTI7S1182C3[];
extern  VTBL_ENTRY _ZTV7S1182C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C3[];
Class_Descriptor cd_S1182C3 = {  "S1182C3", // class name
  bases_S1182C3, 6,
  &(vtc_S1182C3[0]), // expected_vtbl_contents
  &(vtt_S1182C3[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S1182C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S1182C3),6, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1182C3),3, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1182C10  : S7856C15 , virtual S7856C24 , virtual S7856C12 , S1182C5 , virtual S1182C3 {
  virtual  ~S1182C10(); // _ZN8S1182C10D2Ev
  S1182C10(); // tgen
};
//SIG(-1 S1182C10) C1{ BC2{ m} VBC3{ m} VBC4{ m} BC5{ VBC3 BC2 VBC4} VBC6{ BC3 VBC5 VBC2} vd}


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

static void Test_S1182C10()
{
  extern Class_Descriptor cd_S1182C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S1182C10, buf);
    S1182C10 *dp, &lv = *(dp=new (buf) S1182C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S1182C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1182C10)");
    /*is_ambiguous_... S1182C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(8,4), "S1182C10");
    /*is_ambiguous_... S1182C10::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), 0, "S1182C10");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*), 0, "S1182C10");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*), 0, "S1182C10");
    check_base_class_offset(lv, (S7856C12*), 0, "S1182C10");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*), 0, "S1182C10");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*), 0, "S1182C10");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*), 0, "S1182C10");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S1182C5*), 0, "S1182C10");
    /*is_ambiguous_... S1182C3::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C3*), ABISELECT(16,8), "S1182C10");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*), ABISELECT(16,8), "S1182C10");
    check_base_class_offset(lv, (S1182C5*)(S1182C3*), ABISELECT(16,8), "S1182C10");
    /*is_ambiguous_... S1182C3::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C3*), ABISELECT(24,12), "S1182C10");
    check_base_class_offset(lv, (S1182C3*), ABISELECT(16,8), "S1182C10");
    test_class_info(&lv, &cd_S1182C10);
    dp->~S1182C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1182C10(Test_S1182C10, "S1182C10", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S1182C10C1Ev();
extern void _ZN8S1182C10D2Ev();
Name_Map name_map_S1182C10[] = {
  NSPAIR(_ZN8S1182C10C1Ev),
  NSPAIR(_ZN8S1182C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C3;
extern VTBL_ENTRY _ZTI7S1182C3[];
extern  VTBL_ENTRY _ZTV7S1182C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C3[];
static Base_Class bases_S1182C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S1182C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S1182C3,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S1182C10[];
extern void _ZN8S1182C10D1Ev();
extern void _ZN8S1182C10D0Ev();
static  VTBL_ENTRY vtc_S1182C10[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
  (VTBL_ENTRY)&_ZN8S1182C10D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C10D0Ev,
  ABISELECT(8,4),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
};
extern VTBL_ENTRY _ZTV8S1182C10[];
static  VTBL_ENTRY _tg__ZTV7S1182C5__A__8S1182C10[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C10[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__A1__8S1182C10[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTT_ENTRY vtt_S1182C10[] = {
  {&(_ZTV8S1182C10[7]),  7,15},
  {&(_tg__ZTV7S1182C5__A__8S1182C10[4]),  4,4},
  {&(_ZTV8S1182C10[15]),  15,15},
  {&(_ZTV8S1182C10[15]),  15,15},
  {&(_tg__ZTV7S1182C3__8S1182C10[6]),  6,6},
  {&(_tg__ZTV7S1182C3__8S1182C10[6]),  6,6},
  {&(_tg__ZTV7S1182C5__A1__8S1182C10[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S1182C10[];
extern  VTBL_ENTRY _ZTV8S1182C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C10[];
Class_Descriptor cd_S1182C10 = {  "S1182C10", // class name
  bases_S1182C10, 10,
  &(vtc_S1182C10[0]), // expected_vtbl_contents
  &(vtt_S1182C10[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S1182C10),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S1182C10),15, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1182C10),7, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1182C9  : virtual S7856C24 , virtual S7856C15 , virtual S1182C3 , S7856C12 , S1182C10 {
  virtual  ~S1182C9(); // _ZN7S1182C9D2Ev
  S1182C9(); // tgen
};
//SIG(-1 S1182C9) C1{ VBC2{ m} VBC3{ m} VBC4{ BC2 VBC5{ VBC2 BC3 VBC6{ m}} VBC3} BC6 BC7{ BC3 VBC2 VBC6 BC5 VBC4 vd} vd}


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

static void Test_S1182C9()
{
  extern Class_Descriptor cd_S1182C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S1182C9, buf);
    S1182C9 *dp, &lv = *(dp=new (buf) S1182C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S1182C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1182C9)");
    /*is_ambiguous_... S1182C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), 0, "S1182C9");
    /*is_ambiguous_... S1182C9::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*), 0, "S1182C9");
    /*is_ambiguous_... S1182C10::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C10*), 0, "S1182C9");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C10*), 0, "S1182C9");
    /*is_ambiguous_... S1182C9::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(9,5), "S1182C9");
    /*is_ambiguous_... S1182C3::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C3*), ABISELECT(9,5), "S1182C9");
    /*is_ambiguous_... S1182C3::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C3*), ABISELECT(16,8), "S1182C9");
    /*is_ambiguous_... S1182C9::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*), ABISELECT(16,8), "S1182C9");
    /*is_ambiguous_... S1182C9::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*), ABISELECT(24,12), "S1182C9");
    check_base_class_offset(lv, (S7856C12*)(S1182C10*), ABISELECT(24,12), "S1182C9");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C10*), ABISELECT(24,12), "S1182C9");
    check_base_class_offset(lv, (S1182C5*)(S1182C3*), ABISELECT(16,8), "S1182C9");
    check_base_class_offset(lv, (S1182C3*), ABISELECT(16,8), "S1182C9");
    check_base_class_offset(lv, (S1182C3*)(S1182C10*), ABISELECT(16,8), "S1182C9");
    /*is_ambiguous_... S1182C9::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), 0, "S1182C9");
    /*is_ambiguous_... S1182C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C10*), ABISELECT(8,4), "S1182C9");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C10*), 0, "S1182C9");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C10*), 0, "S1182C9");
    check_base_class_offset(lv, (S1182C10*), 0, "S1182C9");
    test_class_info(&lv, &cd_S1182C9);
    dp->~S1182C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1182C9(Test_S1182C9, "S1182C9", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN7S1182C9C1Ev();
extern void _ZN7S1182C9D2Ev();
Name_Map name_map_S1182C9[] = {
  NSPAIR(_ZN7S1182C9C1Ev),
  NSPAIR(_ZN7S1182C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C3;
extern VTBL_ENTRY _ZTI7S1182C3[];
extern  VTBL_ENTRY _ZTV7S1182C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C3[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C10;
extern VTBL_ENTRY _ZTI8S1182C10[];
extern  VTBL_ENTRY _ZTV8S1182C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C10[];
static Base_Class bases_S1182C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S1182C5,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S1182C3,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S1182C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S1182C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1182C9[];
extern void _ZN7S1182C9D1Ev();
extern void _ZN7S1182C9D0Ev();
static  VTBL_ENTRY vtc_S1182C9[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C9[0]),
  (VTBL_ENTRY)&_ZN7S1182C9D1Ev,
  (VTBL_ENTRY)&_ZN7S1182C9D0Ev,
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S1182C9[0]),
};
extern VTBL_ENTRY _ZTV7S1182C9[];
extern void _ZN8S1182C10D1Ev();
extern void _ZN8S1182C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C10__7S1182C9[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
  (VTBL_ENTRY)&_ZN8S1182C10D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C10D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C10__A1__7S1182C9[] = {
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C10__7S1182C9[] = {
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__7S1182C9[] = {
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__7S1182C9[] = {
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTT_ENTRY vtt_S1182C9[] = {
  {&(_ZTV7S1182C9[7]),  7,15},
  {&(_tg__ZTV8S1182C10__7S1182C9[7]),  7,9},
  {&(_tg__ZTV7S1182C58S1182C10__A1__7S1182C9[4]),  4,4},
  {&(_tg__ZTV7S1182C3__8S1182C10__7S1182C9[6]),  6,6},
  {&(_tg__ZTV7S1182C3__8S1182C10__7S1182C9[6]),  6,6},
  {&(_ZTV7S1182C9[15]),  15,15},
  {&(_ZTV7S1182C9[15]),  15,15},
  {&(_tg__ZTV7S1182C3__7S1182C9[6]),  6,6},
  {&(_tg__ZTV7S1182C3__7S1182C9[6]),  6,6},
  {&(_tg__ZTV7S1182C5__7S1182C9[4]),  4,4},
};
extern VTBL_ENTRY _ZTI7S1182C9[];
extern  VTBL_ENTRY _ZTV7S1182C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C9[];
Class_Descriptor cd_S1182C9 = {  "S1182C9", // class name
  bases_S1182C9, 12,
  &(vtc_S1182C9[0]), // expected_vtbl_contents
  &(vtt_S1182C9[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI7S1182C9),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S1182C9),15, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1182C9),10, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1182C11  : S7856C12 , S7856C15 , S1182C5 {
  int s1182c11f0;
  ~S1182C11(); // tgen
  S1182C11(); // tgen
};
//SIG(-1 S1182C11) C1{ BC2{ m} BC3{ m} BC4{ VBC5{ m} BC3 VBC2} Fi}


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

static void Test_S1182C11()
{
  extern Class_Descriptor cd_S1182C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S1182C11, buf);
    S1182C11 *dp, &lv = *(dp=new (buf) S1182C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S1182C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1182C11)");
    /*is_ambiguous_... S1182C11::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), 0, "S1182C11");
    /*is_ambiguous_... S1182C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(8,4), "S1182C11");
    check_base_class_offset(lv, (S7856C24*)(S1182C5*), 0, "S1182C11");
    check_base_class_offset(lv, (S7856C15*)(S1182C5*), 0, "S1182C11");
    check_base_class_offset(lv, (S7856C12*)(S1182C5*), ABISELECT(12,8), "S1182C11");
    check_base_class_offset(lv, (S1182C5*), 0, "S1182C11");
    check_field_offset(lv, s1182c11f0, ABISELECT(8,4), "S1182C11.s1182c11f0");
    test_class_info(&lv, &cd_S1182C11);
    dp->~S1182C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1182C11(Test_S1182C11, "S1182C11", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S1182C11C1Ev();
extern void _ZN8S1182C11D1Ev();
Name_Map name_map_S1182C11[] = {
  NSPAIR(_ZN8S1182C11C1Ev),
  NSPAIR(_ZN8S1182C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
static Base_Class bases_S1182C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S1182C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S1182C11[];
static  VTBL_ENTRY vtc_S1182C11[] = {
  ABISELECT(12,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C11[0]),
};
extern VTBL_ENTRY _ZTV8S1182C11[];
static  VTBL_ENTRY _tg__ZTV7S1182C5__8S1182C11[] = {
  ABISELECT(12,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTT_ENTRY vtt_S1182C11[] = {
  {&(_ZTV8S1182C11[4]),  4,4},
  {&(_tg__ZTV7S1182C5__8S1182C11[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S1182C11[];
extern  VTBL_ENTRY _ZTV8S1182C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C11[];
Class_Descriptor cd_S1182C11 = {  "S1182C11", // class name
  bases_S1182C11, 6,
  &(vtc_S1182C11[0]), // expected_vtbl_contents
  &(vtt_S1182C11[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S1182C11),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S1182C11),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1182C11),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1182C8  : virtual S1182C9 , virtual S1182C11 , virtual S1182C10 {
  int s1182c8f0[2];
  virtual  ~S1182C8(); // _ZN7S1182C8D2Ev
  S1182C8(); // tgen
};
//SIG(-1 S1182C8) C1{ VBC2{ VBC3{ m} VBC4{ m} VBC5{ BC3 VBC6{ VBC3 BC4 VBC7{ m}} VBC4} BC7 BC8{ BC4 VBC3 VBC7 BC6 VBC5 vd} vd} VBC9{ BC7 BC4 BC6 Fi} VBC8 vd Fi[2]}


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

static void Test_S1182C8()
{
  extern Class_Descriptor cd_S1182C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,10)];
    init_test(&cd_S1182C8, buf);
    S1182C8 *dp, &lv = *(dp=new (buf) S1182C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S1182C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1182C8)");
    /*is_ambiguous_... S1182C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C9*), ABISELECT(25,17), "S1182C8");
    /*is_ambiguous_... S1182C8::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*), ABISELECT(25,17), "S1182C8");
    /*is_ambiguous_... S1182C10::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C10*)(S1182C9*), ABISELECT(25,17), "S1182C8");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C10*)(S1182C9*), ABISELECT(25,17), "S1182C8");
    check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C11*), ABISELECT(25,17), "S1182C8");
    /*is_ambiguous_... S1182C8::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C10*), ABISELECT(25,17), "S1182C8");
    /*is_ambiguous_... S1182C8::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C10*), ABISELECT(25,17), "S1182C8");
    /*is_ambiguous_... S1182C9::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C9*), ABISELECT(25,17), "S1182C8");
    /*is_ambiguous_... S1182C3::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C3*), ABISELECT(25,17), "S1182C8");
    /*is_ambiguous_... S1182C3::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C3*), 0, "S1182C8");
    /*is_ambiguous_... S1182C8::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*), 0, "S1182C8");
    /*is_ambiguous_... S1182C8::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*), 0, "S1182C8");
    check_base_class_offset(lv, (S7856C12*)(S1182C10*)(S1182C9*), 0, "S1182C8");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C10*)(S1182C9*), 0, "S1182C8");
    check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C11*), 0, "S1182C8");
    /*is_ambiguous_... S1182C8::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C10*), 0, "S1182C8");
    /*is_ambiguous_... S1182C8::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C10*), 0, "S1182C8");
    check_base_class_offset(lv, (S1182C5*)(S1182C3*), 0, "S1182C8");
    check_base_class_offset(lv, (S1182C3*)(S1182C9*), 0, "S1182C8");
    check_base_class_offset(lv, (S1182C3*)(S1182C10*)(S1182C9*), 0, "S1182C8");
    /*is_ambiguous_... S1182C8::S1182C10 */ AMB_check_base_class_offset(lv, (S1182C3*)(S1182C10*), 0, "S1182C8");
    /*is_ambiguous_... S1182C9::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C9*), ABISELECT(16,12), "S1182C8");
    /*is_ambiguous_... S1182C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C10*)(S1182C9*), ABISELECT(24,16), "S1182C8");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C10*)(S1182C9*), ABISELECT(16,12), "S1182C8");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C10*)(S1182C9*), ABISELECT(16,12), "S1182C8");
    check_base_class_offset(lv, (S1182C10*)(S1182C9*), ABISELECT(16,12), "S1182C8");
    check_base_class_offset(lv, (S1182C9*), ABISELECT(16,12), "S1182C8");
    /*is_ambiguous_... S1182C11::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C11*), ABISELECT(32,20), "S1182C8");
    /*is_ambiguous_... S1182C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C11*), ABISELECT(40,24), "S1182C8");
    check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C11*), ABISELECT(32,20), "S1182C8");
    check_base_class_offset(lv, (S1182C5*)(S1182C11*), ABISELECT(32,20), "S1182C8");
    check_base_class_offset(lv, (S1182C11*), ABISELECT(32,20), "S1182C8");
    /*is_ambiguous_... S1182C8::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C10*), ABISELECT(56,32), "S1182C8");
    /*is_ambiguous_... S1182C8::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C10*), ABISELECT(48,28), "S1182C8");
    /*is_ambiguous_... S1182C8::S1182C10 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C10*), ABISELECT(48,28), "S1182C8");
    /*is_ambiguous_... S1182C8::S1182C10 */ AMB_check_base_class_offset(lv, (S1182C10*), ABISELECT(48,28), "S1182C8");
    check_field_offset(lv, s1182c8f0, ABISELECT(8,4), "S1182C8.s1182c8f0");
    test_class_info(&lv, &cd_S1182C8);
    dp->~S1182C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1182C8(Test_S1182C8, "S1182C8", ABISELECT(64,36));

#else // __cplusplus

extern void _ZN7S1182C8C1Ev();
extern void _ZN7S1182C8D2Ev();
Name_Map name_map_S1182C8[] = {
  NSPAIR(_ZN7S1182C8C1Ev),
  NSPAIR(_ZN7S1182C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C3;
extern VTBL_ENTRY _ZTI7S1182C3[];
extern  VTBL_ENTRY _ZTV7S1182C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C3[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C10;
extern VTBL_ENTRY _ZTI8S1182C10[];
extern  VTBL_ENTRY _ZTV8S1182C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C10[];
extern Class_Descriptor cd_S1182C9;
extern VTBL_ENTRY _ZTI7S1182C9[];
extern  VTBL_ENTRY _ZTV7S1182C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C11;
extern VTBL_ENTRY _ZTI8S1182C11[];
extern  VTBL_ENTRY _ZTV8S1182C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C11[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C10;
extern VTBL_ENTRY _ZTI8S1182C10[];
extern  VTBL_ENTRY _ZTV8S1182C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C10[];
static Base_Class bases_S1182C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    ABISELECT(25,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(25,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S1182C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S1182C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S1182C10,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S1182C9,    ABISELECT(16,12), //bcp->offset
    12, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S1182C11,    ABISELECT(32,20), //bcp->offset
    22, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S1182C10,    ABISELECT(48,28), //bcp->offset
    26, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S1182C8[];
extern void _ZN7S1182C8D1Ev();
extern void _ZN7S1182C8D0Ev();
extern void ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev)();
extern void ABISELECT(_ZThn16_N7S1182C8D1Ev,_ZThn12_N7S1182C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev)();
extern void ABISELECT(_ZThn16_N7S1182C8D0Ev,_ZThn12_N7S1182C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev)();
extern void ABISELECT(_ZThn48_N7S1182C8D1Ev,_ZThn28_N7S1182C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev)();
extern void ABISELECT(_ZThn48_N7S1182C8D0Ev,_ZThn28_N7S1182C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S1182C8[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
  (VTBL_ENTRY)&_ZN7S1182C8D1Ev,
  (VTBL_ENTRY)&_ZN7S1182C8D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev),
  ABISELECT(-32,-20),
  ABISELECT(-7,-3),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev),
};
extern VTBL_ENTRY _ZTV7S1182C8[];
extern void _ZN7S1182C9D1Ev();
extern void _ZN7S1182C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1182C9__7S1182C8[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C9[0]),
  (VTBL_ENTRY)&_ZN7S1182C9D1Ev,
  (VTBL_ENTRY)&_ZN7S1182C9D0Ev,
};
extern void _ZN8S1182C10D1Ev();
extern void _ZN8S1182C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C107S1182C9__7S1182C8[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
  (VTBL_ENTRY)&_ZN8S1182C10D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C10D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C107S1182C9__A1__7S1182C8[] = {
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C107S1182C9__7S1182C8[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__7S1182C9__7S1182C8[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S1182C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__7S1182C8[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__7S1182C8[] = {
  0,
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__7S1182C8[] = {
  ABISELECT(-32,-20),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C11[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C11__A2__7S1182C8[] = {
  ABISELECT(-32,-20),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
extern void _ZN8S1182C10D1Ev();
extern void _ZN8S1182C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C10__A1__7S1182C8[] = {
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
  (VTBL_ENTRY)&_ZN8S1182C10D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C10D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C10__A3__7S1182C8[] = {
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C10__A1__7S1182C8[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
};
static  VTT_ENTRY vtt_S1182C8[] = {
  {&(_ZTV7S1182C8[10]),  10,36},
  {&(_ZTV7S1182C8[20]),  20,36},
  {&(_ZTV7S1182C8[10]),  10,36},
  {&(_ZTV7S1182C8[10]),  10,36},
  {&(_ZTV7S1182C8[26]),  26,36},
  {&(_ZTV7S1182C8[34]),  34,36},
  {&(_tg__ZTV7S1182C9__7S1182C8[7]),  7,9},
  {&(_tg__ZTV8S1182C107S1182C9__7S1182C8[7]),  7,9},
  {&(_tg__ZTV7S1182C58S1182C107S1182C9__A1__7S1182C8[4]),  4,4},
  {&(_tg__ZTV7S1182C3__8S1182C107S1182C9__7S1182C8[6]),  6,6},
  {&(_tg__ZTV7S1182C3__8S1182C107S1182C9__7S1182C8[6]),  6,6},
  {&(_tg__ZTV7S1182C3__7S1182C9__7S1182C8[6]),  6,6},
  {&(_tg__ZTV7S1182C3__7S1182C9__7S1182C8[6]),  6,6},
  {&(_tg__ZTV7S1182C3__7S1182C8[6]),  6,6},
  {&(_tg__ZTV7S1182C3__7S1182C8[6]),  6,6},
  {&(_tg__ZTV7S1182C5__7S1182C8[4]),  4,4},
  {&(_tg__ZTV8S1182C11__7S1182C8[4]),  4,4},
  {&(_tg__ZTV7S1182C58S1182C11__A2__7S1182C8[4]),  4,4},
  {&(_tg__ZTV8S1182C10__A1__7S1182C8[7]),  7,9},
  {&(_tg__ZTV7S1182C58S1182C10__A3__7S1182C8[4]),  4,4},
  {&(_tg__ZTV7S1182C3__8S1182C10__A1__7S1182C8[6]),  6,6},
  {&(_tg__ZTV7S1182C3__8S1182C10__A1__7S1182C8[6]),  6,6},
};
extern VTBL_ENTRY _ZTI7S1182C8[];
extern  VTBL_ENTRY _ZTV7S1182C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C8[];
static VTBL_ENTRY alt_thunk_names81[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S1182C8D0Ev,_ZThn28_N7S1182C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S1182C8D0Ev,_ZThn12_N7S1182C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S1182C8D1Ev,_ZThn28_N7S1182C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S1182C8D1Ev,_ZThn12_N7S1182C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S1182C8 = {  "S1182C8", // class name
  bases_S1182C8, 22,
  &(vtc_S1182C8[0]), // expected_vtbl_contents
  &(vtt_S1182C8[0]), // expected_vtt_contents
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI7S1182C8),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S1182C8),36, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1182C8),22, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names81,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1182C15  : virtual S7856C15 {
  ~S1182C15(); // tgen
  S1182C15(); // tgen
};
//SIG(-1 S1182C15) C1{ VBC2{ m}}


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

static void Test_S1182C15()
{
  extern Class_Descriptor cd_S1182C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S1182C15, buf);
    S1182C15 *dp, &lv = *(dp=new (buf) S1182C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S1182C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1182C15)");
    check_base_class_offset(lv, (S7856C15*), 0, "S1182C15");
    test_class_info(&lv, &cd_S1182C15);
    dp->~S1182C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1182C15(Test_S1182C15, "S1182C15", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S1182C15C1Ev();
extern void _ZN8S1182C15D1Ev();
Name_Map name_map_S1182C15[] = {
  NSPAIR(_ZN8S1182C15C1Ev),
  NSPAIR(_ZN8S1182C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
static Base_Class bases_S1182C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S1182C15[];
static  VTBL_ENTRY vtc_S1182C15[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C15[0]),
};
extern VTBL_ENTRY _ZTV8S1182C15[];
static  VTT_ENTRY vtt_S1182C15[] = {
  {&(_ZTV8S1182C15[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S1182C15[];
extern  VTBL_ENTRY _ZTV8S1182C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C15[];
Class_Descriptor cd_S1182C15 = {  "S1182C15", // class name
  bases_S1182C15, 1,
  &(vtc_S1182C15[0]), // expected_vtbl_contents
  &(vtt_S1182C15[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S1182C15),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S1182C15),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1182C15),1, //virtual table table var
  0, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1182C14  : virtual S1182C5 , virtual S1182C15 , virtual S1182C11 , S7856C12 , virtual S1182C9 {
  int s1182c14f0;
  virtual  ~S1182C14(); // _ZN8S1182C14D2Ev
  S1182C14(); // tgen
};
//SIG(-1 S1182C14) C1{ VBC2{ VBC3{ m} BC4{ m} VBC5{ m}} VBC6{ VBC4} VBC7{ BC5 BC4 BC2 Fi} BC5 VBC8{ VBC3 VBC4 VBC9{ BC3 VBC2 VBC4} BC5 BC10{ BC4 VBC3 VBC5 BC2 VBC9 vd} vd} vd Fi}


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

static void Test_S1182C14()
{
  extern Class_Descriptor cd_S1182C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S1182C14, buf);
    S1182C14 *dp, &lv = *(dp=new (buf) S1182C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S1182C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1182C14)");
    /*is_ambiguous_... S1182C14::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*), 0, "S1182C14");
    check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C11*), 0, "S1182C14");
    /*is_ambiguous_... S1182C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C9*), 0, "S1182C14");
    /*is_ambiguous_... S1182C10::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C10*)(S1182C9*), 0, "S1182C14");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C10*)(S1182C9*), 0, "S1182C14");
    /*is_ambiguous_... S1182C14::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*), ABISELECT(48,28), "S1182C14");
    /*is_ambiguous_... S1182C14::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*), ABISELECT(12,8), "S1182C14");
    check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C11*), ABISELECT(12,8), "S1182C14");
    check_base_class_offset(lv, (S7856C12*)(S1182C10*)(S1182C9*), ABISELECT(12,8), "S1182C14");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C10*)(S1182C9*), ABISELECT(12,8), "S1182C14");
    /*is_ambiguous_... S1182C14::S1182C5 */ AMB_check_base_class_offset(lv, (S1182C5*), ABISELECT(48,28), "S1182C14");
    check_base_class_offset(lv, (S1182C5*)(S1182C3*), ABISELECT(48,28), "S1182C14");
    check_base_class_offset(lv, (S7856C15*)(S1182C15*), 0, "S1182C14");
    /*is_ambiguous_... S1182C9::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C9*), 0, "S1182C14");
    /*is_ambiguous_... S1182C3::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C3*), 0, "S1182C14");
    check_base_class_offset(lv, (S1182C15*), 0, "S1182C14");
    /*is_ambiguous_... S1182C11::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C11*), ABISELECT(16,12), "S1182C14");
    /*is_ambiguous_... S1182C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C11*), ABISELECT(24,16), "S1182C14");
    check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C11*), ABISELECT(16,12), "S1182C14");
    check_base_class_offset(lv, (S1182C5*)(S1182C11*), ABISELECT(16,12), "S1182C14");
    check_base_class_offset(lv, (S1182C11*), ABISELECT(16,12), "S1182C14");
    /*is_ambiguous_... S1182C14::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), 0, "S1182C14");
    /*is_ambiguous_... S1182C3::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C3*), ABISELECT(48,28), "S1182C14");
    check_base_class_offset(lv, (S1182C3*)(S1182C9*), ABISELECT(48,28), "S1182C14");
    check_base_class_offset(lv, (S1182C3*)(S1182C10*)(S1182C9*), ABISELECT(48,28), "S1182C14");
    /*is_ambiguous_... S1182C9::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C9*), ABISELECT(32,20), "S1182C14");
    /*is_ambiguous_... S1182C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C10*)(S1182C9*), ABISELECT(40,24), "S1182C14");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C10*)(S1182C9*), ABISELECT(32,20), "S1182C14");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C10*)(S1182C9*), ABISELECT(32,20), "S1182C14");
    check_base_class_offset(lv, (S1182C10*)(S1182C9*), ABISELECT(32,20), "S1182C14");
    check_base_class_offset(lv, (S1182C9*), ABISELECT(32,20), "S1182C14");
    check_field_offset(lv, s1182c14f0, ABISELECT(8,4), "S1182C14.s1182c14f0");
    test_class_info(&lv, &cd_S1182C14);
    dp->~S1182C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1182C14(Test_S1182C14, "S1182C14", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN8S1182C14C1Ev();
extern void _ZN8S1182C14D2Ev();
Name_Map name_map_S1182C14[] = {
  NSPAIR(_ZN8S1182C14C1Ev),
  NSPAIR(_ZN8S1182C14D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C15;
extern VTBL_ENTRY _ZTI8S1182C15[];
extern  VTBL_ENTRY _ZTV8S1182C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C11;
extern VTBL_ENTRY _ZTI8S1182C11[];
extern  VTBL_ENTRY _ZTV8S1182C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C11[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S1182C3;
extern VTBL_ENTRY _ZTI7S1182C3[];
extern  VTBL_ENTRY _ZTV7S1182C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C3[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C10;
extern VTBL_ENTRY _ZTI8S1182C10[];
extern  VTBL_ENTRY _ZTV8S1182C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C10[];
extern Class_Descriptor cd_S1182C9;
extern VTBL_ENTRY _ZTI7S1182C9[];
extern  VTBL_ENTRY _ZTV7S1182C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C9[];
static Base_Class bases_S1182C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S1182C5,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S1182C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S1182C11,    ABISELECT(16,12), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S1182C3,    ABISELECT(48,28), //bcp->offset
    26, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S1182C10,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S1182C9,    ABISELECT(32,20), //bcp->offset
    16, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S1182C14[];
extern void _ZN8S1182C14D1Ev();
extern void _ZN8S1182C14D0Ev();
extern void ABISELECT(_ZTv0_n64_N8S1182C14D1Ev,_ZTv0_n32_N8S1182C14D1Ev)();
extern void ABISELECT(_ZThn32_N8S1182C14D1Ev,_ZThn20_N8S1182C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C14D0Ev,_ZTv0_n32_N8S1182C14D0Ev)();
extern void ABISELECT(_ZThn32_N8S1182C14D0Ev,_ZThn20_N8S1182C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S1182C14[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  ABISELECT(12,8),
  0,
  ABISELECT(48,28),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
  (VTBL_ENTRY)&_ZN8S1182C14D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C14D0Ev,
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C14D1Ev,_ZTv0_n32_N8S1182C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C14D0Ev,_ZTv0_n32_N8S1182C14D0Ev),
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
};
extern VTBL_ENTRY _ZTV8S1182C14[];
static  VTBL_ENTRY _tg__ZTV7S1182C5__8S1182C14[] = {
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1182C15__8S1182C14[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__8S1182C14[] = {
  -4,
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C11[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C11__A1__8S1182C14[] = {
  -4,
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
extern void _ZN7S1182C9D1Ev();
extern void _ZN7S1182C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1182C9__8S1182C14[] = {
  ABISELECT(-32,-20),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C9[0]),
  (VTBL_ENTRY)&_ZN7S1182C9D1Ev,
  (VTBL_ENTRY)&_ZN7S1182C9D0Ev,
};
extern void _ZN8S1182C10D1Ev();
extern void _ZN8S1182C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C107S1182C9__8S1182C14[] = {
  ABISELECT(-32,-20),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
  (VTBL_ENTRY)&_ZN8S1182C10D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C10D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C107S1182C9__A2__8S1182C14[] = {
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C107S1182C9__8S1182C14[] = {
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__7S1182C9__8S1182C14[] = {
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S1182C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C14[] = {
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
static  VTT_ENTRY vtt_S1182C14[] = {
  {&(_ZTV8S1182C14[10]),  10,32},
  {&(_ZTV8S1182C14[32]),  32,32},
  {&(_ZTV8S1182C14[10]),  10,32},
  {&(_ZTV8S1182C14[16]),  16,32},
  {&(_ZTV8S1182C14[24]),  24,32},
  {&(_ZTV8S1182C14[32]),  32,32},
  {&(_tg__ZTV7S1182C5__8S1182C14[4]),  4,4},
  {&(_tg__ZTV8S1182C15__8S1182C14[3]),  3,3},
  {&(_tg__ZTV8S1182C11__8S1182C14[4]),  4,4},
  {&(_tg__ZTV7S1182C58S1182C11__A1__8S1182C14[4]),  4,4},
  {&(_tg__ZTV7S1182C9__8S1182C14[7]),  7,9},
  {&(_tg__ZTV8S1182C107S1182C9__8S1182C14[7]),  7,9},
  {&(_tg__ZTV7S1182C58S1182C107S1182C9__A2__8S1182C14[4]),  4,4},
  {&(_tg__ZTV7S1182C3__8S1182C107S1182C9__8S1182C14[6]),  6,6},
  {&(_tg__ZTV7S1182C3__8S1182C107S1182C9__8S1182C14[6]),  6,6},
  {&(_tg__ZTV7S1182C3__7S1182C9__8S1182C14[6]),  6,6},
  {&(_tg__ZTV7S1182C3__7S1182C9__8S1182C14[6]),  6,6},
  {&(_tg__ZTV7S1182C3__8S1182C14[6]),  6,6},
  {&(_tg__ZTV7S1182C3__8S1182C14[6]),  6,6},
};
extern VTBL_ENTRY _ZTI8S1182C14[];
extern  VTBL_ENTRY _ZTV8S1182C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C14[];
static VTBL_ENTRY alt_thunk_names82[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C14D0Ev,_ZTv0_n32_N8S1182C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S1182C14D0Ev,_ZThn20_N8S1182C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C14D1Ev,_ZTv0_n32_N8S1182C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S1182C14D1Ev,_ZThn20_N8S1182C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S1182C14 = {  "S1182C14", // class name
  bases_S1182C14, 20,
  &(vtc_S1182C14[0]), // expected_vtbl_contents
  &(vtt_S1182C14[0]), // expected_vtt_contents
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI8S1182C14),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S1182C14),32, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1182C14),19, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names82,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1182C16  : virtual S1182C10 , S1182C11 , S1182C3 , S7856C12 {
  virtual  ~S1182C16(); // _ZN8S1182C16D2Ev
  S1182C16(); // tgen
};
//SIG(-1 S1182C16) C1{ VBC2{ BC3{ m} VBC4{ m} VBC5{ m} BC6{ VBC4 BC3 VBC5} VBC7{ BC4 VBC6 VBC3} vd} BC8{ BC5 BC3 BC6 Fi} BC7 BC5 vd}


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

static void Test_S1182C16()
{
  extern Class_Descriptor cd_S1182C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[8];
    init_test(&cd_S1182C16, buf);
    S1182C16 *dp, &lv = *(dp=new (buf) S1182C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,28), "sizeof(S1182C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1182C16)");
    /*is_ambiguous_... S1182C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C10*), ABISELECT(32,16), "S1182C16");
    /*is_ambiguous_... S1182C10::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C10*), 0, "S1182C16");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C10*), 0, "S1182C16");
    /*is_ambiguous_... S1182C16::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*), 0, "S1182C16");
    check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C11*), 0, "S1182C16");
    check_base_class_offset(lv, (S7856C12*)(S1182C10*), ABISELECT(33,17), "S1182C16");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C10*), ABISELECT(33,17), "S1182C16");
    /*is_ambiguous_... S1182C16::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*), ABISELECT(33,17), "S1182C16");
    check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C11*), ABISELECT(33,17), "S1182C16");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C10*), ABISELECT(24,12), "S1182C16");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C10*), ABISELECT(24,12), "S1182C16");
    /*is_ambiguous_... S1182C16::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C3*), ABISELECT(40,20), "S1182C16");
    /*is_ambiguous_... S1182C16::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*), ABISELECT(40,20), "S1182C16");
    /*is_ambiguous_... S1182C16::S1182C3 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C3*), ABISELECT(40,20), "S1182C16");
    /*is_ambiguous_... S1182C16::S1182C3 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C3*), ABISELECT(40,20), "S1182C16");
    /*is_ambiguous_... S1182C16::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C3*), ABISELECT(48,24), "S1182C16");
    /*is_ambiguous_... S1182C16::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C3*), ABISELECT(48,24), "S1182C16");
    check_base_class_offset(lv, (S1182C3*)(S1182C10*), ABISELECT(40,20), "S1182C16");
    check_base_class_offset(lv, (S1182C10*), ABISELECT(24,12), "S1182C16");
    /*is_ambiguous_... S1182C11::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C11*), 0, "S1182C16");
    /*is_ambiguous_... S1182C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C11*), ABISELECT(8,4), "S1182C16");
    check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C11*), 0, "S1182C16");
    check_base_class_offset(lv, (S1182C5*)(S1182C11*), 0, "S1182C16");
    check_base_class_offset(lv, (S1182C11*), 0, "S1182C16");
    /*is_ambiguous_... S1182C16::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C3*), ABISELECT(16,8), "S1182C16");
    /*is_ambiguous_... S1182C16::S1182C3 */ AMB_check_base_class_offset(lv, (S1182C3*), ABISELECT(16,8), "S1182C16");
    /*is_ambiguous_... S1182C16::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), ABISELECT(24,12), "S1182C16");
    test_class_info(&lv, &cd_S1182C16);
    dp->~S1182C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1182C16(Test_S1182C16, "S1182C16", ABISELECT(56,28));

#else // __cplusplus

extern void _ZN8S1182C16C1Ev();
extern void _ZN8S1182C16D2Ev();
Name_Map name_map_S1182C16[] = {
  NSPAIR(_ZN8S1182C16C1Ev),
  NSPAIR(_ZN8S1182C16D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C3;
extern VTBL_ENTRY _ZTI7S1182C3[];
extern  VTBL_ENTRY _ZTV7S1182C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C3[];
extern Class_Descriptor cd_S1182C10;
extern VTBL_ENTRY _ZTI8S1182C10[];
extern  VTBL_ENTRY _ZTV8S1182C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C11;
extern VTBL_ENTRY _ZTI8S1182C11[];
extern  VTBL_ENTRY _ZTV8S1182C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C11[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S1182C3;
extern VTBL_ENTRY _ZTI7S1182C3[];
extern  VTBL_ENTRY _ZTV7S1182C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C3[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
static Base_Class bases_S1182C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(33,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S1182C3,    ABISELECT(40,20), //bcp->offset
    26, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S1182C10,    ABISELECT(24,12), //bcp->offset
    16, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S1182C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S1182C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S1182C3,    ABISELECT(16,8), //bcp->offset
    10, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S1182C16[];
extern void _ZN8S1182C16D1Ev();
extern void _ZN8S1182C16D0Ev();
extern void ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev)();
extern void ABISELECT(_ZThn24_N8S1182C16D1Ev,_ZThn12_N8S1182C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev)();
extern void ABISELECT(_ZThn24_N8S1182C16D0Ev,_ZThn12_N8S1182C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S1182C16[] = {
  ABISELECT(48,24),
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(24,12),
  ABISELECT(33,17),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
  (VTBL_ENTRY)&_ZN8S1182C16D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C16D0Ev,
  ABISELECT(32,16),
  ABISELECT(24,12),
  ABISELECT(17,9),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
  ABISELECT(-24,-12),
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(9,5),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev),
  ABISELECT(8,4),
  0,
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
extern VTBL_ENTRY _ZTV8S1182C16[];
static  VTBL_ENTRY _tg__ZTV8S1182C11__8S1182C16[] = {
  ABISELECT(33,17),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C11[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C11__A2__8S1182C16[] = {
  ABISELECT(33,17),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__A__8S1182C16[] = {
  ABISELECT(32,16),
  ABISELECT(24,12),
  ABISELECT(17,9),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__7S1182C3__A__8S1182C16[] = {
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
extern void _ZN8S1182C10D1Ev();
extern void _ZN8S1182C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C10__8S1182C16[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(9,5),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
  (VTBL_ENTRY)&_ZN8S1182C10D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C10D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C10__8S1182C16[] = {
  ABISELECT(9,5),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C10__8S1182C16[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C16[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__A1__8S1182C16[] = {
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTT_ENTRY vtt_S1182C16[] = {
  {&(_ZTV8S1182C16[8]),  8,32},
  {&(_tg__ZTV8S1182C11__8S1182C16[4]),  4,4},
  {&(_tg__ZTV7S1182C58S1182C11__A2__8S1182C16[4]),  4,4},
  {&(_tg__ZTV7S1182C3__A__8S1182C16[6]),  6,6},
  {&(_tg__ZTV7S1182C5__7S1182C3__A__8S1182C16[4]),  4,4},
  {&(_ZTV8S1182C16[24]),  24,32},
  {&(_ZTV8S1182C16[32]),  32,32},
  {&(_ZTV8S1182C16[32]),  32,32},
  {&(_ZTV8S1182C16[16]),  16,32},
  {&(_tg__ZTV8S1182C10__8S1182C16[7]),  7,9},
  {&(_tg__ZTV7S1182C58S1182C10__8S1182C16[4]),  4,4},
  {&(_tg__ZTV7S1182C3__8S1182C10__8S1182C16[6]),  6,6},
  {&(_tg__ZTV7S1182C3__8S1182C10__8S1182C16[6]),  6,6},
  {&(_tg__ZTV7S1182C3__8S1182C16[6]),  6,6},
  {&(_tg__ZTV7S1182C3__8S1182C16[6]),  6,6},
  {&(_tg__ZTV7S1182C5__A1__8S1182C16[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S1182C16[];
extern  VTBL_ENTRY _ZTV8S1182C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C16[];
static VTBL_ENTRY alt_thunk_names83[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S1182C16D0Ev,_ZThn12_N8S1182C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S1182C16D1Ev,_ZThn12_N8S1182C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S1182C16 = {  "S1182C16", // class name
  bases_S1182C16, 19,
  &(vtc_S1182C16[0]), // expected_vtbl_contents
  &(vtt_S1182C16[0]), // expected_vtt_contents
  ABISELECT(56,28), // object size
  NSPAIRA(_ZTI8S1182C16),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S1182C16),32, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1182C16),16, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names83,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1182C12  : virtual S1182C8 , virtual S7856C9_nt , virtual S1182C14 , S1182C16 {
  virtual  ~S1182C12(); // _ZN8S1182C12D2Ev
  S1182C12(); // tgen
};
//SIG(-1 S1182C12) C1{ VBC2{ VBC3{ VBC4{ m} VBC5{ m} VBC6{ BC4 VBC7{ VBC4 BC5 VBC8{ m}} VBC5} BC8 BC9{ BC5 VBC4 VBC8 BC7 VBC6 vd} vd} VBC10{ BC8 BC5 BC7 Fi} VBC9 vd Fi[2]} VBC11{ m} VBC12{ VBC7 VBC13{ VBC5} VBC10 BC8 VBC3 vd Fi} BC14{ VBC9 BC10 BC6 BC8 vd} vd}


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

static void Test_S1182C12()
{
  extern Class_Descriptor cd_S1182C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,16)];
    init_test(&cd_S1182C12, buf);
    S1182C12 *dp, &lv = *(dp=new (buf) S1182C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,60), "sizeof(S1182C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1182C12)");
    /*is_ambiguous_... S1182C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C9*), 0, "S1182C12");
    /*is_ambiguous_... S1182C12::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*), 0, "S1182C12");
    /*is_ambiguous_... S1182C10::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C10*)(S1182C9*), 0, "S1182C12");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C10*)(S1182C9*), 0, "S1182C12");
    /*is_ambiguous_... S1182C12::S1182C11 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C11*), 0, "S1182C12");
    /*is_ambiguous_... S1182C12::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C10*), 0, "S1182C12");
    /*is_ambiguous_... S1182C12::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C10*), 0, "S1182C12");
    check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C11*)(S1182C16*), 0, "S1182C12");
    /*is_ambiguous_... S1182C9::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C9*), ABISELECT(57,33), "S1182C12");
    /*is_ambiguous_... S1182C12::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C3*), ABISELECT(57,33), "S1182C12");
    check_base_class_offset(lv, (S7856C15*)(S1182C15*), ABISELECT(57,33), "S1182C12");
    /*is_ambiguous_... S1182C16::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C3*)(S1182C16*), ABISELECT(57,33), "S1182C12");
    /*is_ambiguous_... S1182C12::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C3*), ABISELECT(32,16), "S1182C12");
    /*is_ambiguous_... S1182C12::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*), ABISELECT(32,16), "S1182C12");
    /*is_ambiguous_... S1182C12::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*), ABISELECT(57,33), "S1182C12");
    check_base_class_offset(lv, (S7856C12*)(S1182C10*)(S1182C9*), ABISELECT(57,33), "S1182C12");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C10*)(S1182C9*), ABISELECT(57,33), "S1182C12");
    /*is_ambiguous_... S1182C12::S1182C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C11*), ABISELECT(57,33), "S1182C12");
    /*is_ambiguous_... S1182C12::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C10*), ABISELECT(57,33), "S1182C12");
    /*is_ambiguous_... S1182C12::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C10*), ABISELECT(57,33), "S1182C12");
    check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C11*)(S1182C16*), ABISELECT(57,33), "S1182C12");
    /*is_ambiguous_... S1182C12::S1182C3 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C3*), ABISELECT(32,16), "S1182C12");
    /*is_ambiguous_... S1182C14::S1182C5 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C14*), ABISELECT(32,16), "S1182C12");
    /*is_ambiguous_... S1182C16::S1182C3 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C3*)(S1182C16*), ABISELECT(32,16), "S1182C12");
    check_base_class_offset(lv, (S1182C3*)(S1182C9*), ABISELECT(32,16), "S1182C12");
    check_base_class_offset(lv, (S1182C3*)(S1182C10*)(S1182C9*), ABISELECT(32,16), "S1182C12");
    /*is_ambiguous_... S1182C12::S1182C10 */ AMB_check_base_class_offset(lv, (S1182C3*)(S1182C10*), ABISELECT(32,16), "S1182C12");
    /*is_ambiguous_... S1182C9::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C9*), ABISELECT(48,28), "S1182C12");
    /*is_ambiguous_... S1182C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C10*)(S1182C9*), ABISELECT(56,32), "S1182C12");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C10*)(S1182C9*), ABISELECT(48,28), "S1182C12");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C10*)(S1182C9*), ABISELECT(48,28), "S1182C12");
    check_base_class_offset(lv, (S1182C10*)(S1182C9*), ABISELECT(48,28), "S1182C12");
    check_base_class_offset(lv, (S1182C9*)(S1182C8*), ABISELECT(48,28), "S1182C12");
    check_base_class_offset(lv, (S1182C9*)(S1182C14*), ABISELECT(48,28), "S1182C12");
    /*is_ambiguous_... S1182C12::S1182C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C11*), ABISELECT(64,36), "S1182C12");
    /*is_ambiguous_... S1182C12::S1182C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C11*), ABISELECT(72,40), "S1182C12");
    /*is_ambiguous_... S1182C12::S1182C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C11*), ABISELECT(64,36), "S1182C12");
    /*is_ambiguous_... S1182C12::S1182C11 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C11*), ABISELECT(64,36), "S1182C12");
    check_base_class_offset(lv, (S1182C11*)(S1182C8*), ABISELECT(64,36), "S1182C12");
    check_base_class_offset(lv, (S1182C11*)(S1182C14*), ABISELECT(64,36), "S1182C12");
    /*is_ambiguous_... S1182C12::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C10*), ABISELECT(88,48), "S1182C12");
    /*is_ambiguous_... S1182C12::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C10*), ABISELECT(80,44), "S1182C12");
    /*is_ambiguous_... S1182C12::S1182C10 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C10*), ABISELECT(80,44), "S1182C12");
    /*is_ambiguous_... S1182C8::S1182C10 */ AMB_check_base_class_offset(lv, (S1182C10*)(S1182C8*), ABISELECT(80,44), "S1182C12");
    check_base_class_offset(lv, (S1182C10*)(S1182C16*), ABISELECT(80,44), "S1182C12");
    check_base_class_offset(lv, (S1182C8*), ABISELECT(32,16), "S1182C12");
    check_base_class_offset(lv, (S7856C9_nt*), 0, "S1182C12");
    check_base_class_offset(lv, (S1182C15*)(S1182C14*), ABISELECT(96,52), "S1182C12");
    /*is_ambiguous_... S1182C14::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C14*), ABISELECT(96,52), "S1182C12");
    check_base_class_offset(lv, (S1182C14*), ABISELECT(96,52), "S1182C12");
    /*is_ambiguous_... S1182C11::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C11*)(S1182C16*), 0, "S1182C12");
    /*is_ambiguous_... S1182C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C11*)(S1182C16*), ABISELECT(8,4), "S1182C12");
    check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C11*)(S1182C16*), 0, "S1182C12");
    check_base_class_offset(lv, (S1182C5*)(S1182C11*)(S1182C16*), 0, "S1182C12");
    check_base_class_offset(lv, (S1182C11*)(S1182C16*), 0, "S1182C12");
    /*is_ambiguous_... S1182C16::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C3*)(S1182C16*), ABISELECT(16,8), "S1182C12");
    /*is_ambiguous_... S1182C16::S1182C3 */ AMB_check_base_class_offset(lv, (S1182C3*)(S1182C16*), ABISELECT(16,8), "S1182C12");
    /*is_ambiguous_... S1182C16::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C16*), ABISELECT(24,12), "S1182C12");
    check_base_class_offset(lv, (S1182C16*), 0, "S1182C12");
    test_class_info(&lv, &cd_S1182C12);
    dp->~S1182C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1182C12(Test_S1182C12, "S1182C12", ABISELECT(112,60));

#else // __cplusplus

extern void _ZN8S1182C12C1Ev();
extern void _ZN8S1182C12D2Ev();
Name_Map name_map_S1182C12[] = {
  NSPAIR(_ZN8S1182C12C1Ev),
  NSPAIR(_ZN8S1182C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C3;
extern VTBL_ENTRY _ZTI7S1182C3[];
extern  VTBL_ENTRY _ZTV7S1182C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C3[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C10;
extern VTBL_ENTRY _ZTI8S1182C10[];
extern  VTBL_ENTRY _ZTV8S1182C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C10[];
extern Class_Descriptor cd_S1182C9;
extern VTBL_ENTRY _ZTI7S1182C9[];
extern  VTBL_ENTRY _ZTV7S1182C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C11;
extern VTBL_ENTRY _ZTI8S1182C11[];
extern  VTBL_ENTRY _ZTV8S1182C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C11[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C10;
extern VTBL_ENTRY _ZTI8S1182C10[];
extern  VTBL_ENTRY _ZTV8S1182C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C10[];
extern Class_Descriptor cd_S1182C8;
extern VTBL_ENTRY _ZTI7S1182C8[];
extern  VTBL_ENTRY _ZTV7S1182C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C8[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S1182C15;
extern VTBL_ENTRY _ZTI8S1182C15[];
extern  VTBL_ENTRY _ZTV8S1182C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1182C14;
extern VTBL_ENTRY _ZTI8S1182C14[];
extern  VTBL_ENTRY _ZTV8S1182C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C14[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C11;
extern VTBL_ENTRY _ZTI8S1182C11[];
extern  VTBL_ENTRY _ZTV8S1182C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C11[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S1182C3;
extern VTBL_ENTRY _ZTI7S1182C3[];
extern  VTBL_ENTRY _ZTV7S1182C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C3[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1182C16;
extern VTBL_ENTRY _ZTI8S1182C16[];
extern  VTBL_ENTRY _ZTV8S1182C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C16[];
static Base_Class bases_S1182C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(57,33), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(57,33), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S1182C5,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S1182C3,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S1182C10,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S1182C9,    ABISELECT(48,28), //bcp->offset
    35, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S1182C11,    ABISELECT(64,36), //bcp->offset
    45, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S1182C10,    ABISELECT(80,44), //bcp->offset
    49, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S1182C8,    ABISELECT(32,16), //bcp->offset
    22, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1182C15,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S1182C14,    ABISELECT(96,52), //bcp->offset
    59, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S1182C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S1182C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S1182C3,    ABISELECT(16,8), //bcp->offset
    16, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S1182C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S1182C12[];
extern void _ZN8S1182C12D1Ev();
extern void _ZN8S1182C12D0Ev();
extern void ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev)();
extern void ABISELECT(_ZThn32_N8S1182C12D1Ev,_ZThn16_N8S1182C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev)();
extern void ABISELECT(_ZThn32_N8S1182C12D0Ev,_ZThn16_N8S1182C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev)();
extern void ABISELECT(_ZThn48_N8S1182C12D1Ev,_ZThn28_N8S1182C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev)();
extern void ABISELECT(_ZThn48_N8S1182C12D0Ev,_ZThn28_N8S1182C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev)();
extern void ABISELECT(_ZThn80_N8S1182C12D1Ev,_ZThn44_N8S1182C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev)();
extern void ABISELECT(_ZThn80_N8S1182C12D0Ev,_ZThn44_N8S1182C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev)();
extern void ABISELECT(_ZThn96_N8S1182C12D1Ev,_ZThn52_N8S1182C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev)();
extern void ABISELECT(_ZThn96_N8S1182C12D0Ev,_ZThn52_N8S1182C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S1182C12[] = {
  ABISELECT(96,52),
  ABISELECT(96,52),
  0,
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(57,33),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&_ZN8S1182C12D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C12D0Ev,
  ABISELECT(41,25),
  ABISELECT(16,8),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  ABISELECT(-32,-16),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev),
  ABISELECT(-48,-28),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev),
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  ABISELECT(-80,-44),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev),
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-39,-19),
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-39,-19),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev),
};
extern VTBL_ENTRY _ZTV8S1182C12[];
extern void _ZN8S1182C16D1Ev();
extern void _ZN8S1182C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C16__8S1182C12[] = {
  ABISELECT(57,33),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
  (VTBL_ENTRY)&_ZN8S1182C16D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1182C118S1182C16__A1__8S1182C12[] = {
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C11[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C118S1182C16__A4__8S1182C12[] = {
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C16__A1__8S1182C12[] = {
  ABISELECT(41,25),
  ABISELECT(16,8),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__7S1182C38S1182C16__A1__8S1182C12[] = {
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev)();
extern void ABISELECT(_ZThn80_N8S1182C16D1Ev,_ZThn44_N8S1182C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev)();
extern void ABISELECT(_ZThn80_N8S1182C16D0Ev,_ZThn44_N8S1182C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C10__8S1182C16__8S1182C12[] = {
  ABISELECT(-80,-44),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C16__8S1182C12[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__A__8S1182C16__8S1182C12[] = {
  ABISELECT(41,25),
  ABISELECT(16,8),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
extern void _ZN7S1182C8D1Ev();
extern void _ZN7S1182C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1182C8__8S1182C12[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
  (VTBL_ENTRY)&_ZN7S1182C8D1Ev,
  (VTBL_ENTRY)&_ZN7S1182C8D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev)();
extern void ABISELECT(_ZThn16_N7S1182C8D1Ev,_ZThn12_N7S1182C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev)();
extern void ABISELECT(_ZThn16_N7S1182C8D0Ev,_ZThn12_N7S1182C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1182C9__7S1182C8__8S1182C12[] = {
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__7S1182C8__8S1182C12[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev)();
extern void ABISELECT(_ZThn48_N7S1182C8D1Ev,_ZThn28_N7S1182C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev)();
extern void ABISELECT(_ZThn48_N7S1182C8D0Ev,_ZThn28_N7S1182C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C10__A1__7S1182C8__8S1182C12[] = {
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev),
};
extern void _ZN7S1182C9D1Ev();
extern void _ZN7S1182C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1182C9__8S1182C12[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C9[0]),
  (VTBL_ENTRY)&_ZN7S1182C9D1Ev,
  (VTBL_ENTRY)&_ZN7S1182C9D0Ev,
};
extern void _ZN8S1182C10D1Ev();
extern void _ZN8S1182C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C107S1182C9__8S1182C12[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
  (VTBL_ENTRY)&_ZN8S1182C10D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C10D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C107S1182C9__A1__8S1182C12[] = {
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C107S1182C9__8S1182C12[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__7S1182C9__8S1182C12[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S1182C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C12[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__8S1182C12[] = {
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__8S1182C12[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C11[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C11__A2__8S1182C12[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
extern void _ZN8S1182C10D1Ev();
extern void _ZN8S1182C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C10__A1__8S1182C12[] = {
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
  (VTBL_ENTRY)&_ZN8S1182C10D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C10D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C10__A3__8S1182C12[] = {
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C10__A1__8S1182C12[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
};
extern void _ZN8S1182C14D1Ev();
extern void _ZN8S1182C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C14__8S1182C12[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-39,-19),
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-39,-19),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
  (VTBL_ENTRY)&_ZN8S1182C14D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C14D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C14__8S1182C12[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__8S1182C14__8S1182C12[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C14D1Ev,_ZTv0_n32_N8S1182C14D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1182C14D0Ev,_ZTv0_n32_N8S1182C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S1182C9__8S1182C14__8S1182C12[] = {
  ABISELECT(48,24),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C14D1Ev,_ZTv0_n32_N8S1182C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C14D0Ev,_ZTv0_n32_N8S1182C14D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1182C15__8S1182C12[] = {
  ABISELECT(-39,-19),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C15[0]),
};
static  VTT_ENTRY vtt_S1182C12[] = {
  {&(_ZTV8S1182C12[14]),  14,72},
  {&(_tg__ZTV8S1182C16__8S1182C12[8]),  8,10},
  {&(_tg__ZTV8S1182C118S1182C16__A1__8S1182C12[4]),  4,4},
  {&(_tg__ZTV7S1182C58S1182C118S1182C16__A4__8S1182C12[4]),  4,4},
  {&(_tg__ZTV7S1182C38S1182C16__A1__8S1182C12[6]),  6,6},
  {&(_tg__ZTV7S1182C5__7S1182C38S1182C16__A1__8S1182C12[4]),  4,4},
  {&(_tg__ZTV8S1182C10__8S1182C16__8S1182C12[8]),  8,10},
  {&(_tg__ZTV7S1182C3__8S1182C16__8S1182C12[6]),  6,6},
  {&(_tg__ZTV7S1182C3__8S1182C16__8S1182C12[6]),  6,6},
  {&(_tg__ZTV7S1182C3__A__8S1182C16__8S1182C12[6]),  6,6},
  {&(_ZTV8S1182C12[33]),  33,72},
  {&(_ZTV8S1182C12[43]),  43,72},
  {&(_ZTV8S1182C12[33]),  33,72},
  {&(_ZTV8S1182C12[33]),  33,72},
  {&(_ZTV8S1182C12[49]),  49,72},
  {&(_ZTV8S1182C12[57]),  57,72},
  {&(_ZTV8S1182C12[70]),  70,72},
  {&(_ZTV8S1182C12[70]),  70,72},
  {&(_ZTV8S1182C12[22]),  22,72},
  {&(_tg__ZTV7S1182C8__8S1182C12[10]),  10,12},
  {&(_tg__ZTV7S1182C9__7S1182C8__8S1182C12[8]),  8,10},
  {&(_tg__ZTV7S1182C8__8S1182C12[10]),  10,12},
  {&(_tg__ZTV7S1182C8__8S1182C12[10]),  10,12},
  {&(_tg__ZTV8S1182C11__7S1182C8__8S1182C12[4]),  4,4},
  {&(_tg__ZTV8S1182C10__A1__7S1182C8__8S1182C12[8]),  8,10},
  {&(_tg__ZTV7S1182C9__8S1182C12[7]),  7,9},
  {&(_tg__ZTV8S1182C107S1182C9__8S1182C12[7]),  7,9},
  {&(_tg__ZTV7S1182C58S1182C107S1182C9__A1__8S1182C12[4]),  4,4},
  {&(_tg__ZTV7S1182C3__8S1182C107S1182C9__8S1182C12[6]),  6,6},
  {&(_tg__ZTV7S1182C3__8S1182C107S1182C9__8S1182C12[6]),  6,6},
  {&(_tg__ZTV7S1182C3__7S1182C9__8S1182C12[6]),  6,6},
  {&(_tg__ZTV7S1182C3__7S1182C9__8S1182C12[6]),  6,6},
  {&(_tg__ZTV7S1182C3__8S1182C12[6]),  6,6},
  {&(_tg__ZTV7S1182C3__8S1182C12[6]),  6,6},
  {&(_tg__ZTV7S1182C5__8S1182C12[4]),  4,4},
  {&(_tg__ZTV8S1182C11__8S1182C12[4]),  4,4},
  {&(_tg__ZTV7S1182C58S1182C11__A2__8S1182C12[4]),  4,4},
  {&(_tg__ZTV8S1182C10__A1__8S1182C12[7]),  7,9},
  {&(_tg__ZTV7S1182C58S1182C10__A3__8S1182C12[4]),  4,4},
  {&(_tg__ZTV7S1182C3__8S1182C10__A1__8S1182C12[6]),  6,6},
  {&(_tg__ZTV7S1182C3__8S1182C10__A1__8S1182C12[6]),  6,6},
  {&(_tg__ZTV8S1182C14__8S1182C12[10]),  10,12},
  {&(_tg__ZTV7S1182C3__8S1182C14__8S1182C12[6]),  6,6},
  {&(_tg__ZTV8S1182C14__8S1182C12[10]),  10,12},
  {&(_tg__ZTV8S1182C11__8S1182C14__8S1182C12[4]),  4,4},
  {&(_tg__ZTV7S1182C9__8S1182C14__8S1182C12[8]),  8,10},
  {&(_tg__ZTV7S1182C3__8S1182C14__8S1182C12[6]),  6,6},
  {&(_tg__ZTV8S1182C15__8S1182C12[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S1182C12[];
extern  VTBL_ENTRY _ZTV8S1182C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C12[];
static VTBL_ENTRY alt_thunk_names84[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S1182C8D0Ev,_ZThn28_N7S1182C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S1182C8D0Ev,_ZThn12_N7S1182C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S1182C8D1Ev,_ZThn28_N7S1182C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S1182C8D1Ev,_ZThn12_N7S1182C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S1182C16D0Ev,_ZThn44_N8S1182C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S1182C16D1Ev,_ZThn44_N8S1182C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S1182C12D0Ev,_ZThn44_N8S1182C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S1182C12D0Ev,_ZThn28_N8S1182C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S1182C12D1Ev,_ZThn44_N8S1182C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S1182C12D1Ev,_ZThn28_N8S1182C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S1182C12D0Ev,_ZThn52_N8S1182C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S1182C12D0Ev,_ZThn16_N8S1182C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S1182C12D1Ev,_ZThn52_N8S1182C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S1182C12D1Ev,_ZThn16_N8S1182C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S1182C12 = {  "S1182C12", // class name
  bases_S1182C12, 36,
  &(vtc_S1182C12[0]), // expected_vtbl_contents
  &(vtt_S1182C12[0]), // expected_vtt_contents
  ABISELECT(112,60), // object size
  NSPAIRA(_ZTI8S1182C12),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S1182C12),72, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1182C12),48, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names84,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1182C18  : S7856C9_nt , virtual S7856C24 , S1182C8 , virtual S1182C16 {
  virtual  ~S1182C18(); // _ZN8S1182C18D2Ev
  virtual void  v1(); // _ZN8S1182C182v1Ev
  S1182C18(); // tgen
};
//SIG(-1 S1182C18) C1{ BC2{ m} VBC3{ m} BC4{ VBC5{ VBC3 VBC6{ m} VBC7{ BC3 VBC8{ VBC3 BC6 VBC9{ m}} VBC6} BC9 BC10{ BC6 VBC3 VBC9 BC8 VBC7 vd} vd} VBC11{ BC9 BC6 BC8 Fi} VBC10 vd Fi[2]} VBC12{ VBC10 BC11 BC7 BC9 vd} vd v1}


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

static void Test_S1182C18()
{
  extern Class_Descriptor cd_S1182C18;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,14)];
    init_test(&cd_S1182C18, buf);
    S1182C18 *dp, &lv = *(dp=new (buf) S1182C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,52), "sizeof(S1182C18)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1182C18)");
    check_base_class_offset(lv, (S7856C9_nt*), 0, "S1182C18");
    /*is_ambiguous_... S1182C18::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), ABISELECT(16,12), "S1182C18");
    /*is_ambiguous_... S1182C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C9*), ABISELECT(16,12), "S1182C18");
    /*is_ambiguous_... S1182C18::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*), ABISELECT(16,12), "S1182C18");
    /*is_ambiguous_... S1182C10::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C10*)(S1182C9*), ABISELECT(16,12), "S1182C18");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C10*)(S1182C9*), ABISELECT(16,12), "S1182C18");
    /*is_ambiguous_... S1182C18::S1182C11 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C11*), ABISELECT(16,12), "S1182C18");
    /*is_ambiguous_... S1182C18::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C10*), ABISELECT(16,12), "S1182C18");
    /*is_ambiguous_... S1182C18::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C10*), ABISELECT(16,12), "S1182C18");
    check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C11*)(S1182C16*), ABISELECT(16,12), "S1182C18");
    /*is_ambiguous_... S1182C9::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C9*), ABISELECT(25,17), "S1182C18");
    /*is_ambiguous_... S1182C18::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C3*), ABISELECT(25,17), "S1182C18");
    /*is_ambiguous_... S1182C16::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C3*)(S1182C16*), ABISELECT(25,17), "S1182C18");
    /*is_ambiguous_... S1182C18::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C3*), 0, "S1182C18");
    /*is_ambiguous_... S1182C18::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*), 0, "S1182C18");
    /*is_ambiguous_... S1182C18::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*), 0, "S1182C18");
    check_base_class_offset(lv, (S7856C12*)(S1182C10*)(S1182C9*), 0, "S1182C18");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C10*)(S1182C9*), 0, "S1182C18");
    /*is_ambiguous_... S1182C18::S1182C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C11*), 0, "S1182C18");
    /*is_ambiguous_... S1182C18::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C10*), 0, "S1182C18");
    /*is_ambiguous_... S1182C18::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C10*), 0, "S1182C18");
    check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C11*)(S1182C16*), 0, "S1182C18");
    /*is_ambiguous_... S1182C18::S1182C3 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C3*), 0, "S1182C18");
    /*is_ambiguous_... S1182C16::S1182C3 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C3*)(S1182C16*), 0, "S1182C18");
    check_base_class_offset(lv, (S1182C3*)(S1182C9*), 0, "S1182C18");
    check_base_class_offset(lv, (S1182C3*)(S1182C10*)(S1182C9*), 0, "S1182C18");
    /*is_ambiguous_... S1182C18::S1182C10 */ AMB_check_base_class_offset(lv, (S1182C3*)(S1182C10*), 0, "S1182C18");
    /*is_ambiguous_... S1182C9::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C9*), ABISELECT(16,12), "S1182C18");
    /*is_ambiguous_... S1182C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C10*)(S1182C9*), ABISELECT(24,16), "S1182C18");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C10*)(S1182C9*), ABISELECT(16,12), "S1182C18");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C10*)(S1182C9*), ABISELECT(16,12), "S1182C18");
    check_base_class_offset(lv, (S1182C10*)(S1182C9*), ABISELECT(16,12), "S1182C18");
    check_base_class_offset(lv, (S1182C9*)(S1182C8*), ABISELECT(16,12), "S1182C18");
    /*is_ambiguous_... S1182C18::S1182C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C11*), ABISELECT(32,20), "S1182C18");
    /*is_ambiguous_... S1182C18::S1182C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C11*), ABISELECT(40,24), "S1182C18");
    /*is_ambiguous_... S1182C18::S1182C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C11*), ABISELECT(32,20), "S1182C18");
    /*is_ambiguous_... S1182C18::S1182C11 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C11*), ABISELECT(32,20), "S1182C18");
    check_base_class_offset(lv, (S1182C11*)(S1182C8*), ABISELECT(32,20), "S1182C18");
    /*is_ambiguous_... S1182C18::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C10*), ABISELECT(56,32), "S1182C18");
    /*is_ambiguous_... S1182C18::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C10*), ABISELECT(48,28), "S1182C18");
    /*is_ambiguous_... S1182C18::S1182C10 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C10*), ABISELECT(48,28), "S1182C18");
    /*is_ambiguous_... S1182C8::S1182C10 */ AMB_check_base_class_offset(lv, (S1182C10*)(S1182C8*), ABISELECT(48,28), "S1182C18");
    check_base_class_offset(lv, (S1182C10*)(S1182C16*), ABISELECT(48,28), "S1182C18");
    check_base_class_offset(lv, (S1182C8*), 0, "S1182C18");
    /*is_ambiguous_... S1182C11::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C11*)(S1182C16*), ABISELECT(64,36), "S1182C18");
    /*is_ambiguous_... S1182C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C11*)(S1182C16*), ABISELECT(72,40), "S1182C18");
    check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C11*)(S1182C16*), ABISELECT(64,36), "S1182C18");
    check_base_class_offset(lv, (S1182C5*)(S1182C11*)(S1182C16*), ABISELECT(64,36), "S1182C18");
    check_base_class_offset(lv, (S1182C11*)(S1182C16*), ABISELECT(64,36), "S1182C18");
    /*is_ambiguous_... S1182C16::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C3*)(S1182C16*), ABISELECT(80,44), "S1182C18");
    /*is_ambiguous_... S1182C16::S1182C3 */ AMB_check_base_class_offset(lv, (S1182C3*)(S1182C16*), ABISELECT(80,44), "S1182C18");
    /*is_ambiguous_... S1182C16::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C16*), ABISELECT(88,48), "S1182C18");
    check_base_class_offset(lv, (S1182C16*), ABISELECT(64,36), "S1182C18");
    test_class_info(&lv, &cd_S1182C18);
    dp->~S1182C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1182C18(Test_S1182C18, "S1182C18", ABISELECT(96,52));

#else // __cplusplus

extern void _ZN8S1182C18C1Ev();
extern void _ZN8S1182C18D2Ev();
Name_Map name_map_S1182C18[] = {
  NSPAIR(_ZN8S1182C18C1Ev),
  NSPAIR(_ZN8S1182C18D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C3;
extern VTBL_ENTRY _ZTI7S1182C3[];
extern  VTBL_ENTRY _ZTV7S1182C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C3[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C10;
extern VTBL_ENTRY _ZTI8S1182C10[];
extern  VTBL_ENTRY _ZTV8S1182C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C10[];
extern Class_Descriptor cd_S1182C9;
extern VTBL_ENTRY _ZTI7S1182C9[];
extern  VTBL_ENTRY _ZTV7S1182C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C11;
extern VTBL_ENTRY _ZTI8S1182C11[];
extern  VTBL_ENTRY _ZTV8S1182C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C11[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C10;
extern VTBL_ENTRY _ZTI8S1182C10[];
extern  VTBL_ENTRY _ZTV8S1182C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C10[];
extern Class_Descriptor cd_S1182C8;
extern VTBL_ENTRY _ZTI7S1182C8[];
extern  VTBL_ENTRY _ZTV7S1182C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C8[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C11;
extern VTBL_ENTRY _ZTI8S1182C11[];
extern  VTBL_ENTRY _ZTV8S1182C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C11[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S1182C3;
extern VTBL_ENTRY _ZTI7S1182C3[];
extern  VTBL_ENTRY _ZTV7S1182C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C3[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1182C16;
extern VTBL_ENTRY _ZTI8S1182C16[];
extern  VTBL_ENTRY _ZTV8S1182C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C16[];
static Base_Class bases_S1182C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    ABISELECT(25,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S1182C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S1182C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S1182C10,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S1182C9,    ABISELECT(16,12), //bcp->offset
    14, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S1182C11,    ABISELECT(32,20), //bcp->offset
    24, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S1182C10,    ABISELECT(48,28), //bcp->offset
    28, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S1182C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S1182C11,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S1182C3,    ABISELECT(80,44), //bcp->offset
    49, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S1182C16,    ABISELECT(64,36), //bcp->offset
    38, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S1182C18[];
extern void _ZN8S1182C18D1Ev();
extern void _ZN8S1182C18D0Ev();
extern void _ZN8S1182C182v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S1182C18D1Ev,_ZTv0_n32_N8S1182C18D1Ev)();
extern void ABISELECT(_ZThn16_N8S1182C18D1Ev,_ZThn12_N8S1182C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C18D0Ev,_ZTv0_n32_N8S1182C18D0Ev)();
extern void ABISELECT(_ZThn16_N8S1182C18D0Ev,_ZThn12_N8S1182C18D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C18D1Ev,_ZTv0_n32_N8S1182C18D1Ev)();
extern void ABISELECT(_ZThn48_N8S1182C18D1Ev,_ZThn28_N8S1182C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C18D0Ev,_ZTv0_n32_N8S1182C18D0Ev)();
extern void ABISELECT(_ZThn48_N8S1182C18D0Ev,_ZThn28_N8S1182C18D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S1182C18D1Ev,_ZTv0_n36_N8S1182C18D1Ev)();
extern void ABISELECT(_ZThn64_N8S1182C18D1Ev,_ZThn36_N8S1182C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S1182C18D0Ev,_ZTv0_n36_N8S1182C18D0Ev)();
extern void ABISELECT(_ZThn64_N8S1182C18D0Ev,_ZThn36_N8S1182C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S1182C18[] = {
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C18[0]),
  (VTBL_ENTRY)&_ZN8S1182C18D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C18D0Ev,
  (VTBL_ENTRY)&_ZN8S1182C182v1Ev,
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  0,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S1182C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C18D1Ev,_ZTv0_n32_N8S1182C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C18D0Ev,_ZTv0_n32_N8S1182C18D0Ev),
  ABISELECT(-32,-20),
  ABISELECT(-16,-8),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S1182C18[0]),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S1182C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C18D1Ev,_ZTv0_n32_N8S1182C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C18D0Ev,_ZTv0_n32_N8S1182C18D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-16,-8),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S1182C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S1182C18D1Ev,_ZTv0_n36_N8S1182C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S1182C18D0Ev,_ZTv0_n36_N8S1182C18D0Ev),
  ABISELECT(-55,-27),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-64,-32),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S1182C18[0]),
};
extern VTBL_ENTRY _ZTV8S1182C18[];
extern void _ZN7S1182C8D1Ev();
extern void _ZN7S1182C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1182C8__8S1182C18[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
  (VTBL_ENTRY)&_ZN7S1182C8D1Ev,
  (VTBL_ENTRY)&_ZN7S1182C8D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev)();
extern void ABISELECT(_ZThn16_N7S1182C8D1Ev,_ZThn12_N7S1182C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev)();
extern void ABISELECT(_ZThn16_N7S1182C8D0Ev,_ZThn12_N7S1182C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1182C9__7S1182C8__8S1182C18[] = {
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  0,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__7S1182C8__8S1182C18[] = {
  ABISELECT(-32,-20),
  ABISELECT(-16,-8),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev)();
extern void ABISELECT(_ZThn48_N7S1182C8D1Ev,_ZThn28_N7S1182C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev)();
extern void ABISELECT(_ZThn48_N7S1182C8D0Ev,_ZThn28_N7S1182C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C10__A1__7S1182C8__8S1182C18[] = {
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev),
};
extern void _ZN7S1182C9D1Ev();
extern void _ZN7S1182C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1182C9__8S1182C18[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C9[0]),
  (VTBL_ENTRY)&_ZN7S1182C9D1Ev,
  (VTBL_ENTRY)&_ZN7S1182C9D0Ev,
};
extern void _ZN8S1182C10D1Ev();
extern void _ZN8S1182C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C107S1182C9__8S1182C18[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
  (VTBL_ENTRY)&_ZN8S1182C10D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C10D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C107S1182C9__A1__8S1182C18[] = {
  ABISELECT(-16,-12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C107S1182C9__8S1182C18[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__7S1182C9__8S1182C18[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S1182C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C18[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__8S1182C18[] = {
  0,
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__8S1182C18[] = {
  ABISELECT(-32,-20),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C11[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C11__A2__8S1182C18[] = {
  ABISELECT(-32,-20),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
extern void _ZN8S1182C10D1Ev();
extern void _ZN8S1182C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C10__A1__8S1182C18[] = {
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
  (VTBL_ENTRY)&_ZN8S1182C10D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C10D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C10__A3__8S1182C18[] = {
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C10__A1__8S1182C18[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(16,12),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
};
extern void _ZN8S1182C16D1Ev();
extern void _ZN8S1182C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C16__8S1182C18[] = {
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-16,-8),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
  (VTBL_ENTRY)&_ZN8S1182C16D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1182C118S1182C16__A1__8S1182C18[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C11[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C118S1182C16__A4__8S1182C18[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C16__A1__8S1182C18[] = {
  ABISELECT(-55,-27),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-64,-32),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__7S1182C38S1182C16__A1__8S1182C18[] = {
  0,
  ABISELECT(16,12),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1182C10__8S1182C16__8S1182C18[] = {
  ABISELECT(16,8),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C16__8S1182C18[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(16,12),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__A__8S1182C16__8S1182C18[] = {
  ABISELECT(-55,-27),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-64,-32),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
static  VTT_ENTRY vtt_S1182C18[] = {
  {&(_ZTV8S1182C18[11]),  11,55},
  {&(_tg__ZTV7S1182C8__8S1182C18[10]),  10,12},
  {&(_tg__ZTV7S1182C9__7S1182C8__8S1182C18[8]),  8,10},
  {&(_tg__ZTV7S1182C8__8S1182C18[10]),  10,12},
  {&(_tg__ZTV7S1182C8__8S1182C18[10]),  10,12},
  {&(_tg__ZTV8S1182C11__7S1182C8__8S1182C18[4]),  4,4},
  {&(_tg__ZTV8S1182C10__A1__7S1182C8__8S1182C18[8]),  8,10},
  {&(_ZTV8S1182C18[22]),  22,55},
  {&(_ZTV8S1182C18[11]),  11,55},
  {&(_ZTV8S1182C18[11]),  11,55},
  {&(_ZTV8S1182C18[28]),  28,55},
  {&(_ZTV8S1182C18[36]),  36,55},
  {&(_ZTV8S1182C18[47]),  47,55},
  {&(_ZTV8S1182C18[55]),  55,55},
  {&(_tg__ZTV7S1182C9__8S1182C18[7]),  7,9},
  {&(_tg__ZTV8S1182C107S1182C9__8S1182C18[7]),  7,9},
  {&(_tg__ZTV7S1182C58S1182C107S1182C9__A1__8S1182C18[4]),  4,4},
  {&(_tg__ZTV7S1182C3__8S1182C107S1182C9__8S1182C18[6]),  6,6},
  {&(_tg__ZTV7S1182C3__8S1182C107S1182C9__8S1182C18[6]),  6,6},
  {&(_tg__ZTV7S1182C3__7S1182C9__8S1182C18[6]),  6,6},
  {&(_tg__ZTV7S1182C3__7S1182C9__8S1182C18[6]),  6,6},
  {&(_tg__ZTV7S1182C3__8S1182C18[6]),  6,6},
  {&(_tg__ZTV7S1182C3__8S1182C18[6]),  6,6},
  {&(_tg__ZTV7S1182C5__8S1182C18[4]),  4,4},
  {&(_tg__ZTV8S1182C11__8S1182C18[4]),  4,4},
  {&(_tg__ZTV7S1182C58S1182C11__A2__8S1182C18[4]),  4,4},
  {&(_tg__ZTV8S1182C10__A1__8S1182C18[7]),  7,9},
  {&(_tg__ZTV7S1182C58S1182C10__A3__8S1182C18[4]),  4,4},
  {&(_tg__ZTV7S1182C3__8S1182C10__A1__8S1182C18[6]),  6,6},
  {&(_tg__ZTV7S1182C3__8S1182C10__A1__8S1182C18[6]),  6,6},
  {&(_tg__ZTV8S1182C16__8S1182C18[8]),  8,10},
  {&(_tg__ZTV8S1182C118S1182C16__A1__8S1182C18[4]),  4,4},
  {&(_tg__ZTV7S1182C58S1182C118S1182C16__A4__8S1182C18[4]),  4,4},
  {&(_tg__ZTV7S1182C38S1182C16__A1__8S1182C18[6]),  6,6},
  {&(_tg__ZTV7S1182C5__7S1182C38S1182C16__A1__8S1182C18[4]),  4,4},
  {&(_tg__ZTV8S1182C10__8S1182C16__8S1182C18[8]),  8,10},
  {&(_tg__ZTV7S1182C3__8S1182C16__8S1182C18[6]),  6,6},
  {&(_tg__ZTV7S1182C3__8S1182C16__8S1182C18[6]),  6,6},
  {&(_tg__ZTV7S1182C3__A__8S1182C16__8S1182C18[6]),  6,6},
};
extern VTBL_ENTRY _ZTI8S1182C18[];
extern  VTBL_ENTRY _ZTV8S1182C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C18[];
static VTBL_ENTRY alt_thunk_names85[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S1182C8D0Ev,_ZThn28_N7S1182C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S1182C8D0Ev,_ZThn12_N7S1182C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S1182C8D1Ev,_ZThn28_N7S1182C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S1182C8D1Ev,_ZThn12_N7S1182C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S1182C18D0Ev,_ZTv0_n36_N8S1182C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S1182C18D0Ev,_ZThn36_N8S1182C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S1182C18D1Ev,_ZTv0_n36_N8S1182C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S1182C18D1Ev,_ZThn36_N8S1182C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C18D0Ev,_ZTv0_n32_N8S1182C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S1182C18D0Ev,_ZThn28_N8S1182C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S1182C18D0Ev,_ZThn12_N8S1182C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C18D1Ev,_ZTv0_n32_N8S1182C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S1182C18D1Ev,_ZThn28_N8S1182C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S1182C18D1Ev,_ZThn12_N8S1182C18D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S1182C18 = {  "S1182C18", // class name
  bases_S1182C18, 33,
  &(vtc_S1182C18[0]), // expected_vtbl_contents
  &(vtt_S1182C18[0]), // expected_vtt_contents
  ABISELECT(96,52), // object size
  NSPAIRA(_ZTI8S1182C18),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S1182C18),55, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1182C18),39, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names85,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1182C17  : virtual S1182C12 , S7856C24 , S1182C3 , S1182C18 {
  virtual  ~S1182C17(); // _ZN8S1182C17D2Ev
  S1182C17(); // tgen
};
//SIG(-1 S1182C17) C1{ VBC2{ VBC3{ VBC4{ VBC5{ m} VBC6{ m} VBC7{ BC5 VBC8{ VBC5 BC6 VBC9{ m}} VBC6} BC9 BC10{ BC6 VBC5 VBC9 BC8 VBC7 vd} vd} VBC11{ BC9 BC6 BC8 Fi} VBC10 vd Fi[2]} VBC12{ m} VBC13{ VBC8 VBC14{ VBC6} VBC11 BC9 VBC4 vd Fi} BC15{ VBC10 BC11 BC7 BC9 vd} vd} BC5 BC7 BC16{ BC12 VBC5 BC3 VBC15 vd v1} vd}


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

static void Test_S1182C17()
{
  extern Class_Descriptor cd_S1182C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(22,24)];
    init_test(&cd_S1182C17, buf);
    S1182C17 *dp, &lv = *(dp=new (buf) S1182C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(168,92), "sizeof(S1182C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1182C17)");
    /*is_ambiguous_... S1182C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C9*), ABISELECT(81,49), "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*), ABISELECT(81,49), "S1182C17");
    /*is_ambiguous_... S1182C10::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C10*)(S1182C9*), ABISELECT(81,49), "S1182C17");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C10*)(S1182C9*), ABISELECT(81,49), "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C11 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C11*), ABISELECT(81,49), "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C10*), ABISELECT(81,49), "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C10*), ABISELECT(81,49), "S1182C17");
    check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C11*)(S1182C16*)(S1182C12*), ABISELECT(81,49), "S1182C17");
    /*is_ambiguous_... S1182C18::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C18*), ABISELECT(81,49), "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C11*)(S1182C16*), ABISELECT(81,49), "S1182C17");
    /*is_ambiguous_... S1182C9::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C9*), 0, "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C3*), 0, "S1182C17");
    check_base_class_offset(lv, (S7856C15*)(S1182C15*), 0, "S1182C17");
    /*is_ambiguous_... S1182C16::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C3*)(S1182C16*)(S1182C12*), 0, "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C3*), 0, "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C3*)(S1182C16*), 0, "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C3*), ABISELECT(56,32), "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*), ABISELECT(56,32), "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*), 0, "S1182C17");
    check_base_class_offset(lv, (S7856C12*)(S1182C10*)(S1182C9*), 0, "S1182C17");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C10*)(S1182C9*), 0, "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C11*), 0, "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C10*), 0, "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C10*), 0, "S1182C17");
    check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C11*)(S1182C16*)(S1182C12*), 0, "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C11*)(S1182C16*), 0, "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C3 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C3*), ABISELECT(56,32), "S1182C17");
    /*is_ambiguous_... S1182C14::S1182C5 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C14*), ABISELECT(56,32), "S1182C17");
    /*is_ambiguous_... S1182C16::S1182C3 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C3*)(S1182C16*)(S1182C12*), ABISELECT(56,32), "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C3 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C3*), ABISELECT(56,32), "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C16 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C3*)(S1182C16*), ABISELECT(56,32), "S1182C17");
    check_base_class_offset(lv, (S1182C3*)(S1182C9*), ABISELECT(56,32), "S1182C17");
    check_base_class_offset(lv, (S1182C3*)(S1182C10*)(S1182C9*), ABISELECT(56,32), "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C10 */ AMB_check_base_class_offset(lv, (S1182C3*)(S1182C10*), ABISELECT(56,32), "S1182C17");
    /*is_ambiguous_... S1182C9::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C9*), ABISELECT(72,44), "S1182C17");
    /*is_ambiguous_... S1182C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C10*)(S1182C9*), ABISELECT(80,48), "S1182C17");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C10*)(S1182C9*), ABISELECT(72,44), "S1182C17");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C10*)(S1182C9*), ABISELECT(72,44), "S1182C17");
    check_base_class_offset(lv, (S1182C10*)(S1182C9*), ABISELECT(72,44), "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C8 */ AMB_check_base_class_offset(lv, (S1182C9*)(S1182C8*), ABISELECT(72,44), "S1182C17");
    check_base_class_offset(lv, (S1182C9*)(S1182C14*), ABISELECT(72,44), "S1182C17");
    check_base_class_offset(lv, (S1182C9*)(S1182C8*)(S1182C18*), ABISELECT(72,44), "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C11*), ABISELECT(88,52), "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C11*), ABISELECT(96,56), "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C11*), ABISELECT(88,52), "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C11 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C11*), ABISELECT(88,52), "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C8 */ AMB_check_base_class_offset(lv, (S1182C11*)(S1182C8*), ABISELECT(88,52), "S1182C17");
    check_base_class_offset(lv, (S1182C11*)(S1182C14*), ABISELECT(88,52), "S1182C17");
    check_base_class_offset(lv, (S1182C11*)(S1182C8*)(S1182C18*), ABISELECT(88,52), "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C10*), ABISELECT(112,64), "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C10*), ABISELECT(104,60), "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C10 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C10*), ABISELECT(104,60), "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C8 */ AMB_check_base_class_offset(lv, (S1182C10*)(S1182C8*), ABISELECT(104,60), "S1182C17");
    check_base_class_offset(lv, (S1182C10*)(S1182C16*)(S1182C12*), ABISELECT(104,60), "S1182C17");
    /*is_ambiguous_... S1182C8::S1182C10 */ AMB_check_base_class_offset(lv, (S1182C10*)(S1182C8*)(S1182C18*), ABISELECT(104,60), "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C16 */ AMB_check_base_class_offset(lv, (S1182C10*)(S1182C16*), ABISELECT(104,60), "S1182C17");
    check_base_class_offset(lv, (S1182C8*)(S1182C12*), ABISELECT(56,32), "S1182C17");
    check_base_class_offset(lv, (S7856C9_nt*)(S1182C12*), 0, "S1182C17");
    check_base_class_offset(lv, (S1182C15*)(S1182C14*), ABISELECT(120,68), "S1182C17");
    /*is_ambiguous_... S1182C14::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C14*), ABISELECT(120,68), "S1182C17");
    check_base_class_offset(lv, (S1182C14*)(S1182C12*), ABISELECT(120,68), "S1182C17");
    /*is_ambiguous_... S1182C11::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C11*)(S1182C16*)(S1182C12*), ABISELECT(24,16), "S1182C17");
    /*is_ambiguous_... S1182C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C11*)(S1182C16*)(S1182C12*), ABISELECT(32,20), "S1182C17");
    check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C11*)(S1182C16*)(S1182C12*), ABISELECT(24,16), "S1182C17");
    check_base_class_offset(lv, (S1182C5*)(S1182C11*)(S1182C16*)(S1182C12*), ABISELECT(24,16), "S1182C17");
    check_base_class_offset(lv, (S1182C11*)(S1182C16*)(S1182C12*), ABISELECT(24,16), "S1182C17");
    /*is_ambiguous_... S1182C16::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C3*)(S1182C16*)(S1182C12*), ABISELECT(40,24), "S1182C17");
    /*is_ambiguous_... S1182C16::S1182C3 */ AMB_check_base_class_offset(lv, (S1182C3*)(S1182C16*)(S1182C12*), ABISELECT(40,24), "S1182C17");
    /*is_ambiguous_... S1182C16::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C16*)(S1182C12*), ABISELECT(48,28), "S1182C17");
    check_base_class_offset(lv, (S1182C16*)(S1182C12*), ABISELECT(24,16), "S1182C17");
    check_base_class_offset(lv, (S1182C12*), ABISELECT(24,16), "S1182C17");
    /*is_ambiguous_... S1182C17::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), ABISELECT(8,4), "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C3*), 0, "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C3 */ AMB_check_base_class_offset(lv, (S1182C3*), 0, "S1182C17");
    check_base_class_offset(lv, (S7856C9_nt*)(S1182C18*), ABISELECT(8,4), "S1182C17");
    check_base_class_offset(lv, (S1182C8*)(S1182C18*), ABISELECT(8,4), "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C11*)(S1182C16*), ABISELECT(136,76), "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C11*)(S1182C16*), ABISELECT(144,80), "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C11*)(S1182C16*), ABISELECT(136,76), "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C16 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C11*)(S1182C16*), ABISELECT(136,76), "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C16 */ AMB_check_base_class_offset(lv, (S1182C11*)(S1182C16*), ABISELECT(136,76), "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C3*)(S1182C16*), ABISELECT(152,84), "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C16 */ AMB_check_base_class_offset(lv, (S1182C3*)(S1182C16*), ABISELECT(152,84), "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C16*), ABISELECT(160,88), "S1182C17");
    check_base_class_offset(lv, (S1182C16*)(S1182C18*), ABISELECT(136,76), "S1182C17");
    check_base_class_offset(lv, (S1182C18*), ABISELECT(8,4), "S1182C17");
    test_class_info(&lv, &cd_S1182C17);
    dp->~S1182C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1182C17(Test_S1182C17, "S1182C17", ABISELECT(168,92));

#else // __cplusplus

extern void _ZN8S1182C17C1Ev();
extern void _ZN8S1182C17D2Ev();
Name_Map name_map_S1182C17[] = {
  NSPAIR(_ZN8S1182C17C1Ev),
  NSPAIR(_ZN8S1182C17D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C3;
extern VTBL_ENTRY _ZTI7S1182C3[];
extern  VTBL_ENTRY _ZTV7S1182C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C3[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C10;
extern VTBL_ENTRY _ZTI8S1182C10[];
extern  VTBL_ENTRY _ZTV8S1182C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C10[];
extern Class_Descriptor cd_S1182C9;
extern VTBL_ENTRY _ZTI7S1182C9[];
extern  VTBL_ENTRY _ZTV7S1182C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C11;
extern VTBL_ENTRY _ZTI8S1182C11[];
extern  VTBL_ENTRY _ZTV8S1182C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C11[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C10;
extern VTBL_ENTRY _ZTI8S1182C10[];
extern  VTBL_ENTRY _ZTV8S1182C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C10[];
extern Class_Descriptor cd_S1182C8;
extern VTBL_ENTRY _ZTI7S1182C8[];
extern  VTBL_ENTRY _ZTV7S1182C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C8[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S1182C15;
extern VTBL_ENTRY _ZTI8S1182C15[];
extern  VTBL_ENTRY _ZTV8S1182C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1182C14;
extern VTBL_ENTRY _ZTI8S1182C14[];
extern  VTBL_ENTRY _ZTV8S1182C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C14[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C11;
extern VTBL_ENTRY _ZTI8S1182C11[];
extern  VTBL_ENTRY _ZTV8S1182C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C11[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S1182C3;
extern VTBL_ENTRY _ZTI7S1182C3[];
extern  VTBL_ENTRY _ZTV7S1182C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C3[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1182C16;
extern VTBL_ENTRY _ZTI8S1182C16[];
extern  VTBL_ENTRY _ZTV8S1182C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C16[];
extern Class_Descriptor cd_S1182C12;
extern VTBL_ENTRY _ZTI8S1182C12[];
extern  VTBL_ENTRY _ZTV8S1182C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S1182C3;
extern VTBL_ENTRY _ZTI7S1182C3[];
extern  VTBL_ENTRY _ZTV7S1182C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C3[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S1182C8;
extern VTBL_ENTRY _ZTI7S1182C8[];
extern  VTBL_ENTRY _ZTV7S1182C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C8[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C11;
extern VTBL_ENTRY _ZTI8S1182C11[];
extern  VTBL_ENTRY _ZTV8S1182C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C11[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S1182C3;
extern VTBL_ENTRY _ZTI7S1182C3[];
extern  VTBL_ENTRY _ZTV7S1182C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C3[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1182C16;
extern VTBL_ENTRY _ZTI8S1182C16[];
extern  VTBL_ENTRY _ZTV8S1182C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C16[];
extern Class_Descriptor cd_S1182C18;
extern VTBL_ENTRY _ZTI8S1182C18[];
extern  VTBL_ENTRY _ZTV8S1182C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C18[];
static Base_Class bases_S1182C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    ABISELECT(81,49), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S1182C5,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S1182C3,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(72,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(72,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(72,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S1182C10,    ABISELECT(72,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S1182C9,    ABISELECT(72,44), //bcp->offset
    68, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(88,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(96,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(88,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(88,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S1182C11,    ABISELECT(88,52), //bcp->offset
    78, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    66, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(112,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(104,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(104,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    69, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S1182C10,    ABISELECT(104,60), //bcp->offset
    82, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S1182C8,    ABISELECT(56,32), //bcp->offset
    55, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S1182C15,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S1182C14,    ABISELECT(120,68), //bcp->offset
    92, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S1182C11,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S1182C3,    ABISELECT(40,24), //bcp->offset
    49, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S1182C16,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S1182C12,    ABISELECT(24,16), //bcp->offset
    32, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S1182C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C9_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S1182C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(136,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(144,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(136,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(136,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S1182C11,    ABISELECT(136,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(152,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S1182C3,    ABISELECT(152,84), //bcp->offset
    116, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    82, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S1182C16,    ABISELECT(136,76), //bcp->offset
    105, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    79, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    51, //immediately_derived
  0, 1},
  {&cd_S1182C18,    ABISELECT(8,4), //bcp->offset
    18, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S1182C17[];
extern void _ZN8S1182C17D1Ev();
extern void _ZN8S1182C17D0Ev();
extern void ABISELECT(_ZThn8_N8S1182C17D1Ev,_ZThn4_N8S1182C17D1Ev)();
extern void ABISELECT(_ZThn8_N8S1182C17D0Ev,_ZThn4_N8S1182C17D0Ev)();
extern void _ZN8S1182C182v1Ev();
extern void ABISELECT(_ZTv0_n120_N8S1182C17D1Ev,_ZTv0_n60_N8S1182C17D1Ev)();
extern void ABISELECT(_ZThn24_N8S1182C17D1Ev,_ZThn16_N8S1182C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S1182C17D0Ev,_ZTv0_n60_N8S1182C17D0Ev)();
extern void ABISELECT(_ZThn24_N8S1182C17D0Ev,_ZThn16_N8S1182C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1182C17D1Ev,_ZTv0_n44_N8S1182C17D1Ev)();
extern void ABISELECT(_ZThn56_N8S1182C17D1Ev,_ZThn32_N8S1182C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1182C17D0Ev,_ZTv0_n44_N8S1182C17D0Ev)();
extern void ABISELECT(_ZThn56_N8S1182C17D0Ev,_ZThn32_N8S1182C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C17D1Ev,_ZTv0_n32_N8S1182C17D1Ev)();
extern void ABISELECT(_ZThn72_N8S1182C17D1Ev,_ZThn44_N8S1182C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C17D0Ev,_ZTv0_n32_N8S1182C17D0Ev)();
extern void ABISELECT(_ZThn72_N8S1182C17D0Ev,_ZThn44_N8S1182C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C17D1Ev,_ZTv0_n32_N8S1182C17D1Ev)();
extern void ABISELECT(_ZThn104_N8S1182C17D1Ev,_ZThn60_N8S1182C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C17D0Ev,_ZTv0_n32_N8S1182C17D0Ev)();
extern void ABISELECT(_ZThn104_N8S1182C17D0Ev,_ZThn60_N8S1182C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1182C17D1Ev,_ZTv0_n44_N8S1182C17D1Ev)();
extern void ABISELECT(_ZThn120_N8S1182C17D1Ev,_ZThn68_N8S1182C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1182C17D0Ev,_ZTv0_n44_N8S1182C17D0Ev)();
extern void ABISELECT(_ZThn120_N8S1182C17D0Ev,_ZThn68_N8S1182C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S1182C17D1Ev,_ZTv0_n36_N8S1182C17D1Ev)();
extern void ABISELECT(_ZThn136_N8S1182C17D1Ev,_ZThn76_N8S1182C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S1182C17D0Ev,_ZTv0_n36_N8S1182C17D0Ev)();
extern void ABISELECT(_ZThn136_N8S1182C17D0Ev,_ZThn76_N8S1182C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S1182C17[] = {
  ABISELECT(136,76),
  ABISELECT(120,68),
  ABISELECT(120,68),
  0,
  ABISELECT(104,60),
  ABISELECT(88,52),
  ABISELECT(56,32),
  ABISELECT(72,44),
  ABISELECT(56,32),
  ABISELECT(24,16),
  0,
  ABISELECT(56,32),
  0,
  ABISELECT(81,49),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C17[0]),
  (VTBL_ENTRY)&_ZN8S1182C17D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C17D0Ev,
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(48,28),
  ABISELECT(64,40),
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  ABISELECT(-8,-4),
  ABISELECT(73,45),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S1182C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S1182C17D1Ev,_ZThn4_N8S1182C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S1182C17D0Ev,_ZThn4_N8S1182C17D0Ev),
  (VTBL_ENTRY)&_ZN8S1182C182v1Ev,
  ABISELECT(-24,-16),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-24,-16),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-24,-16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-24,-16),
  ABISELECT(57,33),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S1182C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S1182C17D1Ev,_ZTv0_n60_N8S1182C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S1182C17D0Ev,_ZTv0_n60_N8S1182C17D0Ev),
  ABISELECT(-40,-24),
  ABISELECT(16,8),
  ABISELECT(-40,-24),
  ABISELECT(41,25),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S1182C17[0]),
  ABISELECT(-56,-32),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S1182C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C17D1Ev,_ZTv0_n44_N8S1182C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C17D0Ev,_ZTv0_n44_N8S1182C17D0Ev),
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-72,-44),
  ABISELECT(9,5),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI8S1182C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C17D1Ev,_ZTv0_n32_N8S1182C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C17D0Ev,_ZTv0_n32_N8S1182C17D0Ev),
  ABISELECT(-88,-52),
  ABISELECT(-7,-3),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S1182C17[0]),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-104,-60),
  ABISELECT(-23,-11),
  ABISELECT(-104,-60),
  (VTBL_ENTRY)&(_ZTI8S1182C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C17D1Ev,_ZTv0_n32_N8S1182C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C17D0Ev,_ZTv0_n32_N8S1182C17D0Ev),
  ABISELECT(-120,-68),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-120,-68),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI8S1182C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C17D1Ev,_ZTv0_n44_N8S1182C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C17D0Ev,_ZTv0_n44_N8S1182C17D0Ev),
  ABISELECT(-136,-76),
  ABISELECT(-136,-76),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-136,-76),
  ABISELECT(-55,-27),
  ABISELECT(-136,-76),
  (VTBL_ENTRY)&(_ZTI8S1182C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S1182C17D1Ev,_ZTv0_n36_N8S1182C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S1182C17D0Ev,_ZTv0_n36_N8S1182C17D0Ev),
  ABISELECT(-152,-84),
  ABISELECT(-96,-52),
  ABISELECT(-152,-84),
  ABISELECT(-71,-35),
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI8S1182C17[0]),
};
extern VTBL_ENTRY _ZTV8S1182C17[];
static  VTBL_ENTRY _tg__ZTV7S1182C3__A__8S1182C17[] = {
  0,
  ABISELECT(56,32),
  0,
  ABISELECT(81,49),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__7S1182C3__A__8S1182C17[] = {
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
extern void _ZN8S1182C18D1Ev();
extern void _ZN8S1182C18D0Ev();
extern void _ZN8S1182C182v1Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C18__8S1182C17[] = {
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(48,28),
  ABISELECT(64,40),
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  ABISELECT(-8,-4),
  ABISELECT(73,45),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C18[0]),
  (VTBL_ENTRY)&_ZN8S1182C18D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C18D0Ev,
  (VTBL_ENTRY)&_ZN8S1182C182v1Ev,
};
extern void _ZN7S1182C8D1Ev();
extern void _ZN7S1182C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1182C88S1182C18__A1__8S1182C17[] = {
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(48,28),
  ABISELECT(64,40),
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  ABISELECT(-8,-4),
  ABISELECT(73,45),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
  (VTBL_ENTRY)&_ZN7S1182C8D1Ev,
  (VTBL_ENTRY)&_ZN7S1182C8D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev)();
extern void ABISELECT(_ZThn64_N7S1182C8D1Ev,_ZThn40_N7S1182C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev)();
extern void ABISELECT(_ZThn64_N7S1182C8D0Ev,_ZThn40_N7S1182C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1182C9__7S1182C88S1182C18__A1__8S1182C17[] = {
  ABISELECT(-64,-40),
  ABISELECT(-72,-44),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-72,-44),
  ABISELECT(9,5),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__7S1182C88S1182C18__A1__8S1182C17[] = {
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__7S1182C88S1182C18__A1__8S1182C17[] = {
  ABISELECT(-88,-52),
  ABISELECT(-7,-3),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev)();
extern void ABISELECT(_ZThn96_N7S1182C8D1Ev,_ZThn56_N7S1182C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev)();
extern void ABISELECT(_ZThn96_N7S1182C8D0Ev,_ZThn56_N7S1182C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C10__A1__7S1182C88S1182C18__A1__8S1182C17[] = {
  ABISELECT(-96,-56),
  ABISELECT(-104,-60),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-104,-60),
  ABISELECT(-23,-11),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C18D1Ev,_ZTv0_n32_N8S1182C18D1Ev)();
extern void ABISELECT(_ZThn64_N8S1182C18D1Ev,_ZThn40_N8S1182C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C18D0Ev,_ZTv0_n32_N8S1182C18D0Ev)();
extern void ABISELECT(_ZThn64_N8S1182C18D0Ev,_ZThn40_N8S1182C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1182C9__8S1182C18__8S1182C17[] = {
  ABISELECT(-64,-40),
  ABISELECT(-72,-44),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-72,-44),
  ABISELECT(9,5),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S1182C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C18D1Ev,_ZTv0_n32_N8S1182C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C18D0Ev,_ZTv0_n32_N8S1182C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C18__8S1182C17[] = {
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S1182C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__8S1182C18__8S1182C17[] = {
  ABISELECT(-88,-52),
  ABISELECT(-7,-3),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S1182C18[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C18D1Ev,_ZTv0_n32_N8S1182C18D1Ev)();
extern void ABISELECT(_ZThn96_N8S1182C18D1Ev,_ZThn56_N8S1182C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C18D0Ev,_ZTv0_n32_N8S1182C18D0Ev)();
extern void ABISELECT(_ZThn96_N8S1182C18D0Ev,_ZThn56_N8S1182C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C10__A1__8S1182C18__8S1182C17[] = {
  ABISELECT(-96,-56),
  ABISELECT(-104,-60),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-104,-60),
  ABISELECT(-23,-11),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S1182C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C18D1Ev,_ZTv0_n32_N8S1182C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C18D0Ev,_ZTv0_n32_N8S1182C18D0Ev),
};
extern void ABISELECT(_ZTv0_n72_N8S1182C18D1Ev,_ZTv0_n36_N8S1182C18D1Ev)();
extern void ABISELECT(_ZThn128_N8S1182C18D1Ev,_ZThn72_N8S1182C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S1182C18D0Ev,_ZTv0_n36_N8S1182C18D0Ev)();
extern void ABISELECT(_ZThn128_N8S1182C18D0Ev,_ZThn72_N8S1182C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C16__8S1182C18__8S1182C17[] = {
  ABISELECT(-128,-72),
  ABISELECT(-136,-76),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-136,-76),
  ABISELECT(-55,-27),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S1182C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S1182C18D1Ev,_ZTv0_n36_N8S1182C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S1182C18D0Ev,_ZTv0_n36_N8S1182C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C16__A1__8S1182C18__8S1182C17[] = {
  ABISELECT(-152,-84),
  ABISELECT(-96,-52),
  ABISELECT(-152,-84),
  ABISELECT(-71,-35),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI8S1182C18[0]),
};
extern void _ZN8S1182C12D1Ev();
extern void _ZN8S1182C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C12__8S1182C17[] = {
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-24,-16),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-24,-16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-24,-16),
  ABISELECT(57,33),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&_ZN8S1182C12D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C12D0Ev,
};
extern void _ZN8S1182C16D1Ev();
extern void _ZN8S1182C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C168S1182C12__8S1182C17[] = {
  ABISELECT(-24,-16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-24,-16),
  ABISELECT(57,33),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
  (VTBL_ENTRY)&_ZN8S1182C16D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1182C118S1182C168S1182C12__A1__8S1182C17[] = {
  ABISELECT(-24,-16),
  ABISELECT(57,33),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C11[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C118S1182C168S1182C12__A4__8S1182C17[] = {
  ABISELECT(-24,-16),
  ABISELECT(57,33),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C168S1182C12__A1__8S1182C17[] = {
  ABISELECT(-40,-24),
  ABISELECT(16,8),
  ABISELECT(-40,-24),
  ABISELECT(41,25),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__7S1182C38S1182C168S1182C12__A1__8S1182C17[] = {
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev)();
extern void ABISELECT(_ZThn80_N8S1182C16D1Ev,_ZThn44_N8S1182C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev)();
extern void ABISELECT(_ZThn80_N8S1182C16D0Ev,_ZThn44_N8S1182C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C10__8S1182C168S1182C12__8S1182C17[] = {
  ABISELECT(-80,-44),
  ABISELECT(-104,-60),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-104,-60),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C168S1182C12__8S1182C17[] = {
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__A__8S1182C168S1182C12__8S1182C17[] = {
  ABISELECT(-40,-24),
  ABISELECT(16,8),
  ABISELECT(-40,-24),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev)();
extern void ABISELECT(_ZThn32_N8S1182C12D1Ev,_ZThn16_N8S1182C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev)();
extern void ABISELECT(_ZThn32_N8S1182C12D0Ev,_ZThn16_N8S1182C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1182C8__8S1182C12__8S1182C17[] = {
  ABISELECT(-32,-16),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev)();
extern void ABISELECT(_ZThn48_N8S1182C12D1Ev,_ZThn28_N8S1182C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev)();
extern void ABISELECT(_ZThn48_N8S1182C12D0Ev,_ZThn28_N8S1182C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1182C9__8S1182C12__8S1182C17[] = {
  ABISELECT(-48,-28),
  ABISELECT(-72,-44),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-72,-44),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__8S1182C12__8S1182C17[] = {
  ABISELECT(-88,-52),
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev)();
extern void ABISELECT(_ZThn80_N8S1182C12D1Ev,_ZThn44_N8S1182C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev)();
extern void ABISELECT(_ZThn80_N8S1182C12D0Ev,_ZThn44_N8S1182C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C10__A1__8S1182C12__8S1182C17[] = {
  ABISELECT(-80,-44),
  ABISELECT(-104,-60),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-104,-60),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev)();
extern void ABISELECT(_ZThn96_N8S1182C12D1Ev,_ZThn52_N8S1182C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev)();
extern void ABISELECT(_ZThn96_N8S1182C12D0Ev,_ZThn52_N8S1182C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C14__8S1182C12__8S1182C17[] = {
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-120,-68),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-120,-68),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C16__A1__8S1182C12__8S1182C17[] = {
  ABISELECT(-40,-24),
  ABISELECT(16,8),
  ABISELECT(-40,-24),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
};
extern void _ZN7S1182C8D1Ev();
extern void _ZN7S1182C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1182C8__8S1182C17[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
  (VTBL_ENTRY)&_ZN7S1182C8D1Ev,
  (VTBL_ENTRY)&_ZN7S1182C8D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev)();
extern void ABISELECT(_ZThn16_N7S1182C8D1Ev,_ZThn12_N7S1182C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev)();
extern void ABISELECT(_ZThn16_N7S1182C8D0Ev,_ZThn12_N7S1182C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1182C9__7S1182C8__8S1182C17[] = {
  ABISELECT(-16,-12),
  ABISELECT(-72,-44),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-72,-44),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__7S1182C8__8S1182C17[] = {
  ABISELECT(-88,-52),
  ABISELECT(-7,-3),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev)();
extern void ABISELECT(_ZThn48_N7S1182C8D1Ev,_ZThn28_N7S1182C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev)();
extern void ABISELECT(_ZThn48_N7S1182C8D0Ev,_ZThn28_N7S1182C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C10__A1__7S1182C8__8S1182C17[] = {
  ABISELECT(-48,-28),
  ABISELECT(-104,-60),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-104,-60),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev),
};
extern void _ZN7S1182C9D1Ev();
extern void _ZN7S1182C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1182C9__8S1182C17[] = {
  ABISELECT(-72,-44),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-72,-44),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C9[0]),
  (VTBL_ENTRY)&_ZN7S1182C9D1Ev,
  (VTBL_ENTRY)&_ZN7S1182C9D0Ev,
};
extern void _ZN8S1182C10D1Ev();
extern void _ZN8S1182C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C107S1182C9__8S1182C17[] = {
  ABISELECT(-72,-44),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-72,-44),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
  (VTBL_ENTRY)&_ZN8S1182C10D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C10D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C107S1182C9__A1__8S1182C17[] = {
  ABISELECT(-72,-44),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C107S1182C9__8S1182C17[] = {
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__7S1182C9__8S1182C17[] = {
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S1182C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C17[] = {
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__8S1182C17[] = {
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__8S1182C17[] = {
  ABISELECT(-88,-52),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C11[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C11__A2__8S1182C17[] = {
  ABISELECT(-88,-52),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
extern void _ZN8S1182C10D1Ev();
extern void _ZN8S1182C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C10__A1__8S1182C17[] = {
  ABISELECT(-104,-60),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-104,-60),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
  (VTBL_ENTRY)&_ZN8S1182C10D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C10D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C10__A3__8S1182C17[] = {
  ABISELECT(-104,-60),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C10__A1__8S1182C17[] = {
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
};
extern void _ZN8S1182C14D1Ev();
extern void _ZN8S1182C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C14__8S1182C17[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-120,-68),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-120,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
  (VTBL_ENTRY)&_ZN8S1182C14D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C14D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C14__8S1182C17[] = {
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__8S1182C14__8S1182C17[] = {
  ABISELECT(-88,-52),
  ABISELECT(-7,-3),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C14D1Ev,_ZTv0_n32_N8S1182C14D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1182C14D0Ev,_ZTv0_n32_N8S1182C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S1182C9__8S1182C14__8S1182C17[] = {
  ABISELECT(48,24),
  ABISELECT(-72,-44),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-72,-44),
  ABISELECT(9,5),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C14D1Ev,_ZTv0_n32_N8S1182C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C14D0Ev,_ZTv0_n32_N8S1182C14D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1182C15__8S1182C17[] = {
  ABISELECT(-120,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C15[0]),
};
extern void _ZN8S1182C16D1Ev();
extern void _ZN8S1182C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C16__A1__8S1182C17[] = {
  ABISELECT(-136,-76),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-136,-76),
  ABISELECT(-55,-27),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
  (VTBL_ENTRY)&_ZN8S1182C16D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1182C118S1182C16__A2__8S1182C17[] = {
  ABISELECT(-136,-76),
  ABISELECT(-55,-27),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C11[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C118S1182C16__A5__8S1182C17[] = {
  ABISELECT(-136,-76),
  ABISELECT(-55,-27),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C16__A3__8S1182C17[] = {
  ABISELECT(-152,-84),
  ABISELECT(-96,-52),
  ABISELECT(-152,-84),
  ABISELECT(-71,-35),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__7S1182C38S1182C16__A3__8S1182C17[] = {
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(96,52),
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1182C10__8S1182C16__A1__8S1182C17[] = {
  ABISELECT(32,16),
  ABISELECT(-104,-60),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-104,-60),
  ABISELECT(-23,-11),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C16__A1__8S1182C17[] = {
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__A__8S1182C16__A1__8S1182C17[] = {
  ABISELECT(-152,-84),
  ABISELECT(-96,-52),
  ABISELECT(-152,-84),
  ABISELECT(-71,-35),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
static  VTT_ENTRY vtt_S1182C17[] = {
  {&(_ZTV8S1182C17[16]),  16,122},
  {&(_tg__ZTV7S1182C3__A__8S1182C17[6]),  6,6},
  {&(_tg__ZTV7S1182C5__7S1182C3__A__8S1182C17[4]),  4,4},
  {&(_tg__ZTV8S1182C18__8S1182C17[11]),  11,14},
  {&(_tg__ZTV7S1182C88S1182C18__A1__8S1182C17[10]),  10,12},
  {&(_tg__ZTV7S1182C9__7S1182C88S1182C18__A1__8S1182C17[8]),  8,10},
  {&(_tg__ZTV7S1182C3__7S1182C88S1182C18__A1__8S1182C17[6]),  6,6},
  {&(_tg__ZTV7S1182C3__7S1182C88S1182C18__A1__8S1182C17[6]),  6,6},
  {&(_tg__ZTV8S1182C11__7S1182C88S1182C18__A1__8S1182C17[4]),  4,4},
  {&(_tg__ZTV8S1182C10__A1__7S1182C88S1182C18__A1__8S1182C17[8]),  8,10},
  {&(_tg__ZTV7S1182C9__8S1182C18__8S1182C17[8]),  8,10},
  {&(_tg__ZTV7S1182C3__8S1182C18__8S1182C17[6]),  6,6},
  {&(_tg__ZTV7S1182C3__8S1182C18__8S1182C17[6]),  6,6},
  {&(_tg__ZTV8S1182C11__8S1182C18__8S1182C17[4]),  4,4},
  {&(_tg__ZTV8S1182C10__A1__8S1182C18__8S1182C17[8]),  8,10},
  {&(_tg__ZTV8S1182C16__8S1182C18__8S1182C17[9]),  9,11},
  {&(_tg__ZTV7S1182C38S1182C16__A1__8S1182C18__8S1182C17[6]),  6,6},
  {&(_ZTV8S1182C17[47]),  47,122},
  {&(_ZTV8S1182C17[66]),  66,122},
  {&(_ZTV8S1182C17[76]),  76,122},
  {&(_ZTV8S1182C17[66]),  66,122},
  {&(_ZTV8S1182C17[66]),  66,122},
  {&(_ZTV8S1182C17[82]),  82,122},
  {&(_ZTV8S1182C17[90]),  90,122},
  {&(_ZTV8S1182C17[103]),  103,122},
  {&(_ZTV8S1182C17[103]),  103,122},
  {&(_ZTV8S1182C17[55]),  55,122},
  {&(_ZTV8S1182C17[29]),  29,122},
  {&(_ZTV8S1182C17[114]),  114,122},
  {&(_ZTV8S1182C17[122]),  122,122},
  {&(_tg__ZTV8S1182C12__8S1182C17[14]),  14,16},
  {&(_tg__ZTV8S1182C168S1182C12__8S1182C17[8]),  8,10},
  {&(_tg__ZTV8S1182C118S1182C168S1182C12__A1__8S1182C17[4]),  4,4},
  {&(_tg__ZTV7S1182C58S1182C118S1182C168S1182C12__A4__8S1182C17[4]),  4,4},
  {&(_tg__ZTV7S1182C38S1182C168S1182C12__A1__8S1182C17[6]),  6,6},
  {&(_tg__ZTV7S1182C5__7S1182C38S1182C168S1182C12__A1__8S1182C17[4]),  4,4},
  {&(_tg__ZTV8S1182C10__8S1182C168S1182C12__8S1182C17[8]),  8,10},
  {&(_tg__ZTV7S1182C3__8S1182C168S1182C12__8S1182C17[6]),  6,6},
  {&(_tg__ZTV7S1182C3__8S1182C168S1182C12__8S1182C17[6]),  6,6},
  {&(_tg__ZTV7S1182C3__A__8S1182C168S1182C12__8S1182C17[6]),  6,6},
  {&(_tg__ZTV7S1182C8__8S1182C12__8S1182C17[11]),  11,13},
  {&(_tg__ZTV7S1182C9__8S1182C12__8S1182C17[8]),  8,10},
  {&(_tg__ZTV7S1182C8__8S1182C12__8S1182C17[11]),  11,13},
  {&(_tg__ZTV7S1182C8__8S1182C12__8S1182C17[11]),  11,13},
  {&(_tg__ZTV8S1182C11__8S1182C12__8S1182C17[4]),  4,4},
  {&(_tg__ZTV8S1182C10__A1__8S1182C12__8S1182C17[8]),  8,10},
  {&(_tg__ZTV8S1182C14__8S1182C12__8S1182C17[11]),  11,13},
  {&(_tg__ZTV8S1182C14__8S1182C12__8S1182C17[11]),  11,13},
  {&(_tg__ZTV7S1182C38S1182C16__A1__8S1182C12__8S1182C17[6]),  6,6},
  {&(_tg__ZTV7S1182C8__8S1182C17[10]),  10,12},
  {&(_tg__ZTV7S1182C9__7S1182C8__8S1182C17[8]),  8,10},
  {&(_tg__ZTV7S1182C8__8S1182C17[10]),  10,12},
  {&(_tg__ZTV7S1182C8__8S1182C17[10]),  10,12},
  {&(_tg__ZTV8S1182C11__7S1182C8__8S1182C17[4]),  4,4},
  {&(_tg__ZTV8S1182C10__A1__7S1182C8__8S1182C17[8]),  8,10},
  {&(_tg__ZTV7S1182C9__8S1182C17[7]),  7,9},
  {&(_tg__ZTV8S1182C107S1182C9__8S1182C17[7]),  7,9},
  {&(_tg__ZTV7S1182C58S1182C107S1182C9__A1__8S1182C17[4]),  4,4},
  {&(_tg__ZTV7S1182C3__8S1182C107S1182C9__8S1182C17[6]),  6,6},
  {&(_tg__ZTV7S1182C3__8S1182C107S1182C9__8S1182C17[6]),  6,6},
  {&(_tg__ZTV7S1182C3__7S1182C9__8S1182C17[6]),  6,6},
  {&(_tg__ZTV7S1182C3__7S1182C9__8S1182C17[6]),  6,6},
  {&(_tg__ZTV7S1182C3__8S1182C17[6]),  6,6},
  {&(_tg__ZTV7S1182C3__8S1182C17[6]),  6,6},
  {&(_tg__ZTV7S1182C5__8S1182C17[4]),  4,4},
  {&(_tg__ZTV8S1182C11__8S1182C17[4]),  4,4},
  {&(_tg__ZTV7S1182C58S1182C11__A2__8S1182C17[4]),  4,4},
  {&(_tg__ZTV8S1182C10__A1__8S1182C17[7]),  7,9},
  {&(_tg__ZTV7S1182C58S1182C10__A3__8S1182C17[4]),  4,4},
  {&(_tg__ZTV7S1182C3__8S1182C10__A1__8S1182C17[6]),  6,6},
  {&(_tg__ZTV7S1182C3__8S1182C10__A1__8S1182C17[6]),  6,6},
  {&(_tg__ZTV8S1182C14__8S1182C17[10]),  10,12},
  {&(_tg__ZTV7S1182C3__8S1182C14__8S1182C17[6]),  6,6},
  {&(_tg__ZTV8S1182C14__8S1182C17[10]),  10,12},
  {&(_tg__ZTV8S1182C11__8S1182C14__8S1182C17[4]),  4,4},
  {&(_tg__ZTV7S1182C9__8S1182C14__8S1182C17[8]),  8,10},
  {&(_tg__ZTV7S1182C3__8S1182C14__8S1182C17[6]),  6,6},
  {&(_tg__ZTV8S1182C15__8S1182C17[3]),  3,3},
  {&(_tg__ZTV8S1182C16__A1__8S1182C17[8]),  8,10},
  {&(_tg__ZTV8S1182C118S1182C16__A2__8S1182C17[4]),  4,4},
  {&(_tg__ZTV7S1182C58S1182C118S1182C16__A5__8S1182C17[4]),  4,4},
  {&(_tg__ZTV7S1182C38S1182C16__A3__8S1182C17[6]),  6,6},
  {&(_tg__ZTV7S1182C5__7S1182C38S1182C16__A3__8S1182C17[4]),  4,4},
  {&(_tg__ZTV8S1182C10__8S1182C16__A1__8S1182C17[8]),  8,10},
  {&(_tg__ZTV7S1182C3__8S1182C16__A1__8S1182C17[6]),  6,6},
  {&(_tg__ZTV7S1182C3__8S1182C16__A1__8S1182C17[6]),  6,6},
  {&(_tg__ZTV7S1182C3__A__8S1182C16__A1__8S1182C17[6]),  6,6},
};
extern VTBL_ENTRY _ZTI8S1182C17[];
extern  VTBL_ENTRY _ZTV8S1182C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C17[];
static VTBL_ENTRY alt_thunk_names86[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S1182C12D0Ev,_ZThn44_N8S1182C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S1182C12D0Ev,_ZThn28_N8S1182C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S1182C12D1Ev,_ZThn44_N8S1182C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S1182C12D1Ev,_ZThn28_N8S1182C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S1182C12D0Ev,_ZThn52_N8S1182C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S1182C12D0Ev,_ZThn16_N8S1182C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S1182C12D1Ev,_ZThn52_N8S1182C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S1182C12D1Ev,_ZThn16_N8S1182C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S1182C16D0Ev,_ZThn44_N8S1182C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S1182C16D1Ev,_ZThn44_N8S1182C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S1182C18D0Ev,_ZTv0_n36_N8S1182C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S1182C18D0Ev,_ZThn72_N8S1182C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S1182C18D1Ev,_ZTv0_n36_N8S1182C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S1182C18D1Ev,_ZThn72_N8S1182C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C18D0Ev,_ZTv0_n32_N8S1182C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S1182C18D0Ev,_ZThn56_N8S1182C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S1182C18D0Ev,_ZThn40_N8S1182C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C18D1Ev,_ZTv0_n32_N8S1182C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S1182C18D1Ev,_ZThn56_N8S1182C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S1182C18D1Ev,_ZThn40_N8S1182C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S1182C8D0Ev,_ZThn28_N7S1182C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S1182C8D0Ev,_ZThn12_N7S1182C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S1182C8D0Ev,_ZThn56_N7S1182C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S1182C8D0Ev,_ZThn40_N7S1182C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S1182C8D1Ev,_ZThn28_N7S1182C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S1182C8D1Ev,_ZThn12_N7S1182C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S1182C8D1Ev,_ZThn56_N7S1182C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S1182C8D1Ev,_ZThn40_N7S1182C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S1182C17D0Ev,_ZTv0_n36_N8S1182C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S1182C17D0Ev,_ZThn76_N8S1182C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S1182C17D1Ev,_ZTv0_n36_N8S1182C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S1182C17D1Ev,_ZThn76_N8S1182C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C17D0Ev,_ZTv0_n32_N8S1182C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S1182C17D0Ev,_ZThn60_N8S1182C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S1182C17D0Ev,_ZThn44_N8S1182C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C17D1Ev,_ZTv0_n32_N8S1182C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S1182C17D1Ev,_ZThn60_N8S1182C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S1182C17D1Ev,_ZThn44_N8S1182C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1182C17D0Ev,_ZTv0_n44_N8S1182C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S1182C17D0Ev,_ZThn68_N8S1182C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S1182C17D0Ev,_ZThn32_N8S1182C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1182C17D1Ev,_ZTv0_n44_N8S1182C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S1182C17D1Ev,_ZThn68_N8S1182C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S1182C17D1Ev,_ZThn32_N8S1182C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S1182C17D0Ev,_ZTv0_n60_N8S1182C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S1182C17D0Ev,_ZThn16_N8S1182C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S1182C17D1Ev,_ZTv0_n60_N8S1182C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S1182C17D1Ev,_ZThn16_N8S1182C17D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S1182C17 = {  "S1182C17", // class name
  bases_S1182C17, 52,
  &(vtc_S1182C17[0]), // expected_vtbl_contents
  &(vtt_S1182C17[0]), // expected_vtt_contents
  ABISELECT(168,92), // object size
  NSPAIRA(_ZTI8S1182C17),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S1182C17),122, //virtual function table var
  16, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1182C17),87, //virtual table table var
  24, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names86,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1182C2  : S1182C3 , virtual S1182C8 , S1182C12 , virtual S1182C17 {
  char s1182c2f0;
  virtual  ~S1182C2(); // _ZN7S1182C2D2Ev
  S1182C2(); // tgen
};
//SIG(-1 S1182C2) C1{ BC2{ BC3{ m} VBC4{ VBC3 BC5{ m} VBC6{ m}} VBC5} VBC7{ VBC8{ VBC3 VBC5 VBC2 BC6 BC9{ BC5 VBC3 VBC6 BC4 VBC2 vd} vd} VBC10{ BC6 BC5 BC4 Fi} VBC9 vd Fi[2]} BC11{ VBC7 VBC12{ m} VBC13{ VBC4 VBC14{ VBC5} VBC10 BC6 VBC8 vd Fi} BC15{ VBC9 BC10 BC2 BC6 vd} vd} VBC16{ VBC11 BC3 BC2 BC17{ BC12 VBC3 BC7 VBC15 vd v1} vd} vd Fc}


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

static void Test_S1182C2()
{
  extern Class_Descriptor cd_S1182C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(27,29)];
    init_test(&cd_S1182C2, buf);
    S1182C2 *dp, &lv = *(dp=new (buf) S1182C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,112), "sizeof(S1182C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1182C2)");
    /*is_ambiguous_... S1182C2::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C3*), 0, "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*), ABISELECT(34,18), "S1182C2");
    /*is_ambiguous_... S1182C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C9*), ABISELECT(34,18), "S1182C2");
    /*is_ambiguous_... S1182C10::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C10*)(S1182C9*), ABISELECT(34,18), "S1182C2");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C10*)(S1182C9*), ABISELECT(34,18), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C11 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C11*), ABISELECT(34,18), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C10*), ABISELECT(34,18), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C10*), ABISELECT(34,18), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C11*)(S1182C16*)(S1182C12*), ABISELECT(34,18), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C11*)(S1182C16*)(S1182C12*), ABISELECT(34,18), "S1182C2");
    /*is_ambiguous_... S1182C18::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C18*)(S1182C17*), ABISELECT(34,18), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C11*)(S1182C16*), ABISELECT(34,18), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*), 0, "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*), 0, "S1182C2");
    check_base_class_offset(lv, (S7856C12*)(S1182C10*)(S1182C9*), 0, "S1182C2");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C10*)(S1182C9*), 0, "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C11*), 0, "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C10*), 0, "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C10*), 0, "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C11*)(S1182C16*)(S1182C12*), 0, "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C11*)(S1182C16*)(S1182C12*), 0, "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C11*)(S1182C16*), 0, "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C3 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C3*), 0, "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C3 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C3*), 0, "S1182C2");
    /*is_ambiguous_... S1182C14::S1182C5 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C14*), 0, "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C3*)(S1182C16*)(S1182C12*), 0, "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C3*)(S1182C16*)(S1182C12*), 0, "S1182C2");
    /*is_ambiguous_... S1182C17::S1182C3 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C3*)(S1182C17*), 0, "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C16 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C3*)(S1182C16*), 0, "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C3*), ABISELECT(34,18), "S1182C2");
    /*is_ambiguous_... S1182C9::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C9*), ABISELECT(34,18), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C3*), ABISELECT(34,18), "S1182C2");
    check_base_class_offset(lv, (S7856C15*)(S1182C15*), ABISELECT(34,18), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C3*)(S1182C16*)(S1182C12*), ABISELECT(34,18), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C3*)(S1182C16*)(S1182C12*), ABISELECT(34,18), "S1182C2");
    /*is_ambiguous_... S1182C17::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C3*)(S1182C17*), ABISELECT(34,18), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C3*)(S1182C16*), ABISELECT(34,18), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C3 */ AMB_check_base_class_offset(lv, (S1182C3*), 0, "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C3*), ABISELECT(40,20), "S1182C2");
    check_base_class_offset(lv, (S1182C3*)(S1182C9*), ABISELECT(40,20), "S1182C2");
    check_base_class_offset(lv, (S1182C3*)(S1182C10*)(S1182C9*), ABISELECT(40,20), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C10 */ AMB_check_base_class_offset(lv, (S1182C3*)(S1182C10*), ABISELECT(40,20), "S1182C2");
    /*is_ambiguous_... S1182C9::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C9*), ABISELECT(56,32), "S1182C2");
    /*is_ambiguous_... S1182C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C10*)(S1182C9*), ABISELECT(64,36), "S1182C2");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C10*)(S1182C9*), ABISELECT(56,32), "S1182C2");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C10*)(S1182C9*), ABISELECT(56,32), "S1182C2");
    check_base_class_offset(lv, (S1182C10*)(S1182C9*), ABISELECT(56,32), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C8 */ AMB_check_base_class_offset(lv, (S1182C9*)(S1182C8*), ABISELECT(56,32), "S1182C2");
    check_base_class_offset(lv, (S1182C9*)(S1182C14*), ABISELECT(56,32), "S1182C2");
    check_base_class_offset(lv, (S1182C9*)(S1182C8*)(S1182C18*)(S1182C17*), ABISELECT(56,32), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C11*), ABISELECT(72,40), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C11*), ABISELECT(80,44), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C11*), ABISELECT(72,40), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C11 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C11*), ABISELECT(72,40), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C8 */ AMB_check_base_class_offset(lv, (S1182C11*)(S1182C8*), ABISELECT(72,40), "S1182C2");
    check_base_class_offset(lv, (S1182C11*)(S1182C14*), ABISELECT(72,40), "S1182C2");
    check_base_class_offset(lv, (S1182C11*)(S1182C8*)(S1182C18*)(S1182C17*), ABISELECT(72,40), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C10*), ABISELECT(96,52), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C10*), ABISELECT(88,48), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C10 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C10*), ABISELECT(88,48), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C8 */ AMB_check_base_class_offset(lv, (S1182C10*)(S1182C8*), ABISELECT(88,48), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S1182C10*)(S1182C16*)(S1182C12*), ABISELECT(88,48), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S1182C10*)(S1182C16*)(S1182C12*), ABISELECT(88,48), "S1182C2");
    /*is_ambiguous_... S1182C8::S1182C10 */ AMB_check_base_class_offset(lv, (S1182C10*)(S1182C8*)(S1182C18*)(S1182C17*), ABISELECT(88,48), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C16 */ AMB_check_base_class_offset(lv, (S1182C10*)(S1182C16*), ABISELECT(88,48), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C8 */ AMB_check_base_class_offset(lv, (S1182C8*), ABISELECT(40,20), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S1182C8*)(S1182C12*), ABISELECT(40,20), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S1182C8*)(S1182C12*), ABISELECT(40,20), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S1182C12*), 0, "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S1182C12*), 0, "S1182C2");
    check_base_class_offset(lv, (S1182C15*)(S1182C14*), ABISELECT(104,56), "S1182C2");
    /*is_ambiguous_... S1182C14::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C14*), ABISELECT(104,56), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S1182C14*)(S1182C12*), ABISELECT(104,56), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S1182C14*)(S1182C12*), ABISELECT(104,56), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C11*)(S1182C16*)(S1182C12*), ABISELECT(8,4), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C11*)(S1182C16*)(S1182C12*), ABISELECT(16,8), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C11*)(S1182C16*)(S1182C12*), ABISELECT(8,4), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C11*)(S1182C16*)(S1182C12*), ABISELECT(8,4), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S1182C11*)(S1182C16*)(S1182C12*), ABISELECT(8,4), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C3*)(S1182C16*)(S1182C12*), ABISELECT(24,12), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S1182C3*)(S1182C16*)(S1182C12*), ABISELECT(24,12), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C16*)(S1182C12*), ABISELECT(32,16), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S1182C16*)(S1182C12*), ABISELECT(8,4), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S1182C12*), ABISELECT(8,4), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C11*)(S1182C16*)(S1182C12*), ABISELECT(144,80), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C11*)(S1182C16*)(S1182C12*), ABISELECT(152,84), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C11*)(S1182C16*)(S1182C12*), ABISELECT(144,80), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C11*)(S1182C16*)(S1182C12*), ABISELECT(144,80), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S1182C11*)(S1182C16*)(S1182C12*), ABISELECT(144,80), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C3*)(S1182C16*)(S1182C12*), ABISELECT(160,88), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S1182C3*)(S1182C16*)(S1182C12*), ABISELECT(160,88), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C16*)(S1182C12*), ABISELECT(168,92), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S1182C16*)(S1182C12*), ABISELECT(144,80), "S1182C2");
    check_base_class_offset(lv, (S1182C12*)(S1182C17*), ABISELECT(144,80), "S1182C2");
    /*is_ambiguous_... S1182C17::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C17*), ABISELECT(128,68), "S1182C2");
    /*is_ambiguous_... S1182C17::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C3*)(S1182C17*), ABISELECT(120,64), "S1182C2");
    /*is_ambiguous_... S1182C17::S1182C3 */ AMB_check_base_class_offset(lv, (S1182C3*)(S1182C17*), ABISELECT(120,64), "S1182C2");
    check_base_class_offset(lv, (S7856C9_nt*)(S1182C18*)(S1182C17*), ABISELECT(128,68), "S1182C2");
    check_base_class_offset(lv, (S1182C8*)(S1182C18*)(S1182C17*), ABISELECT(128,68), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C11*)(S1182C16*), ABISELECT(176,96), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C11*)(S1182C16*), ABISELECT(184,100), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C11*)(S1182C16*), ABISELECT(176,96), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C16 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C11*)(S1182C16*), ABISELECT(176,96), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C16 */ AMB_check_base_class_offset(lv, (S1182C11*)(S1182C16*), ABISELECT(176,96), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C3*)(S1182C16*), ABISELECT(192,104), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C16 */ AMB_check_base_class_offset(lv, (S1182C3*)(S1182C16*), ABISELECT(192,104), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C16*), ABISELECT(200,108), "S1182C2");
    check_base_class_offset(lv, (S1182C16*)(S1182C18*)(S1182C17*), ABISELECT(176,96), "S1182C2");
    check_base_class_offset(lv, (S1182C18*)(S1182C17*), ABISELECT(128,68), "S1182C2");
    check_base_class_offset(lv, (S1182C17*), ABISELECT(120,64), "S1182C2");
    check_field_offset(lv, s1182c2f0, ABISELECT(33,17), "S1182C2.s1182c2f0");
    test_class_info(&lv, &cd_S1182C2);
    dp->~S1182C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1182C2(Test_S1182C2, "S1182C2", ABISELECT(208,112));

#else // __cplusplus

extern void _ZN7S1182C2C1Ev();
extern void _ZN7S1182C2D2Ev();
Name_Map name_map_S1182C2[] = {
  NSPAIR(_ZN7S1182C2C1Ev),
  NSPAIR(_ZN7S1182C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C3;
extern VTBL_ENTRY _ZTI7S1182C3[];
extern  VTBL_ENTRY _ZTV7S1182C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C3[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S1182C3;
extern VTBL_ENTRY _ZTI7S1182C3[];
extern  VTBL_ENTRY _ZTV7S1182C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C3[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C10;
extern VTBL_ENTRY _ZTI8S1182C10[];
extern  VTBL_ENTRY _ZTV8S1182C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C10[];
extern Class_Descriptor cd_S1182C9;
extern VTBL_ENTRY _ZTI7S1182C9[];
extern  VTBL_ENTRY _ZTV7S1182C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C11;
extern VTBL_ENTRY _ZTI8S1182C11[];
extern  VTBL_ENTRY _ZTV8S1182C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C11[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C10;
extern VTBL_ENTRY _ZTI8S1182C10[];
extern  VTBL_ENTRY _ZTV8S1182C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C10[];
extern Class_Descriptor cd_S1182C8;
extern VTBL_ENTRY _ZTI7S1182C8[];
extern  VTBL_ENTRY _ZTV7S1182C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C8[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S1182C15;
extern VTBL_ENTRY _ZTI8S1182C15[];
extern  VTBL_ENTRY _ZTV8S1182C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1182C14;
extern VTBL_ENTRY _ZTI8S1182C14[];
extern  VTBL_ENTRY _ZTV8S1182C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C14[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C11;
extern VTBL_ENTRY _ZTI8S1182C11[];
extern  VTBL_ENTRY _ZTV8S1182C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C11[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S1182C3;
extern VTBL_ENTRY _ZTI7S1182C3[];
extern  VTBL_ENTRY _ZTV7S1182C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C3[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1182C16;
extern VTBL_ENTRY _ZTI8S1182C16[];
extern  VTBL_ENTRY _ZTV8S1182C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C16[];
extern Class_Descriptor cd_S1182C12;
extern VTBL_ENTRY _ZTI8S1182C12[];
extern  VTBL_ENTRY _ZTV8S1182C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C11;
extern VTBL_ENTRY _ZTI8S1182C11[];
extern  VTBL_ENTRY _ZTV8S1182C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C11[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S1182C3;
extern VTBL_ENTRY _ZTI7S1182C3[];
extern  VTBL_ENTRY _ZTV7S1182C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C3[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1182C16;
extern VTBL_ENTRY _ZTI8S1182C16[];
extern  VTBL_ENTRY _ZTV8S1182C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C16[];
extern Class_Descriptor cd_S1182C12;
extern VTBL_ENTRY _ZTI8S1182C12[];
extern  VTBL_ENTRY _ZTV8S1182C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S1182C3;
extern VTBL_ENTRY _ZTI7S1182C3[];
extern  VTBL_ENTRY _ZTV7S1182C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C3[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S1182C8;
extern VTBL_ENTRY _ZTI7S1182C8[];
extern  VTBL_ENTRY _ZTV7S1182C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C8[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C11;
extern VTBL_ENTRY _ZTI8S1182C11[];
extern  VTBL_ENTRY _ZTV8S1182C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C11[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S1182C3;
extern VTBL_ENTRY _ZTI7S1182C3[];
extern  VTBL_ENTRY _ZTV7S1182C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C3[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1182C16;
extern VTBL_ENTRY _ZTI8S1182C16[];
extern  VTBL_ENTRY _ZTV8S1182C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C16[];
extern Class_Descriptor cd_S1182C18;
extern VTBL_ENTRY _ZTI8S1182C18[];
extern  VTBL_ENTRY _ZTV8S1182C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C18[];
extern Class_Descriptor cd_S1182C17;
extern VTBL_ENTRY _ZTI8S1182C17[];
extern  VTBL_ENTRY _ZTV8S1182C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C17[];
static Base_Class bases_S1182C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(34,18), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S1182C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(34,18), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S1182C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S1182C3,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S1182C10,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S1182C9,    ABISELECT(56,32), //bcp->offset
    54, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S1182C11,    ABISELECT(72,40), //bcp->offset
    64, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S1182C10,    ABISELECT(88,48), //bcp->offset
    68, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S1182C8,    ABISELECT(40,20), //bcp->offset
    41, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    38, //immediately_derived
  0, 1},
  {&cd_S1182C15,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S1182C14,    ABISELECT(104,56), //bcp->offset
    78, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    38, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S1182C11,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S1182C3,    ABISELECT(24,12), //bcp->offset
    35, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S1182C16,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S1182C12,    ABISELECT(8,4), //bcp->offset
    19, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    ABISELECT(144,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(152,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(144,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(144,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    101, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S1182C11,    ABISELECT(144,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    100, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S1182C3,    ABISELECT(160,88), //bcp->offset
    142, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    102, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(168,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S1182C16,    ABISELECT(144,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    99, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S1182C12,    ABISELECT(144,80), //bcp->offset
    125, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    98, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    64, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(128,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    64, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(120,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S1182C3,    ABISELECT(120,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    69, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    64, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(128,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    63, //immediately_derived
  0, 0},
  {&cd_S1182C8,    ABISELECT(128,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    63, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(176,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(184,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(176,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(176,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    119, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S1182C11,    ABISELECT(176,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    118, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(192,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    60, //immediately_derived
  0, 0},
  {&cd_S1182C3,    ABISELECT(192,104), //bcp->offset
    159, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    120, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(200,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S1182C16,    ABISELECT(176,96), //bcp->offset
    148, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    117, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    63, //immediately_derived
  0, 1},
  {&cd_S1182C18,    ABISELECT(128,68), //bcp->offset
    111, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    64, //immediately_derived
  0, 0},
  {&cd_S1182C17,    ABISELECT(120,64), //bcp->offset
    91, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S1182C2[];
extern void _ZN7S1182C2D1Ev();
extern void _ZN7S1182C2D0Ev();
extern void ABISELECT(_ZThn8_N7S1182C2D1Ev,_ZThn4_N7S1182C2D1Ev)();
extern void ABISELECT(_ZThn8_N7S1182C2D0Ev,_ZThn4_N7S1182C2D0Ev)();
extern void ABISELECT(_ZTv0_n88_N7S1182C2D1Ev,_ZTv0_n44_N7S1182C2D1Ev)();
extern void ABISELECT(_ZThn40_N7S1182C2D1Ev,_ZThn20_N7S1182C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S1182C2D0Ev,_ZTv0_n44_N7S1182C2D0Ev)();
extern void ABISELECT(_ZThn40_N7S1182C2D0Ev,_ZThn20_N7S1182C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1182C2D1Ev,_ZTv0_n32_N7S1182C2D1Ev)();
extern void ABISELECT(_ZThn56_N7S1182C2D1Ev,_ZThn32_N7S1182C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1182C2D0Ev,_ZTv0_n32_N7S1182C2D0Ev)();
extern void ABISELECT(_ZThn56_N7S1182C2D0Ev,_ZThn32_N7S1182C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1182C2D1Ev,_ZTv0_n32_N7S1182C2D1Ev)();
extern void ABISELECT(_ZThn88_N7S1182C2D1Ev,_ZThn48_N7S1182C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1182C2D0Ev,_ZTv0_n32_N7S1182C2D0Ev)();
extern void ABISELECT(_ZThn88_N7S1182C2D0Ev,_ZThn48_N7S1182C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S1182C2D1Ev,_ZTv0_n44_N7S1182C2D1Ev)();
extern void ABISELECT(_ZThn104_N7S1182C2D1Ev,_ZThn56_N7S1182C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S1182C2D0Ev,_ZTv0_n44_N7S1182C2D0Ev)();
extern void ABISELECT(_ZThn104_N7S1182C2D0Ev,_ZThn56_N7S1182C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N7S1182C2D1Ev,_ZTv0_n68_N7S1182C2D1Ev)();
extern void ABISELECT(_ZThn120_N7S1182C2D1Ev,_ZThn64_N7S1182C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N7S1182C2D0Ev,_ZTv0_n68_N7S1182C2D0Ev)();
extern void ABISELECT(_ZThn120_N7S1182C2D0Ev,_ZThn64_N7S1182C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn8_n136_N7S1182C2D1Ev,_ZTvn4_n68_N7S1182C2D1Ev)();
extern void ABISELECT(_ZTvn8_n136_N7S1182C2D0Ev,_ZTvn4_n68_N7S1182C2D0Ev)();
extern void _ZN8S1182C182v1Ev();
extern void ABISELECT(_ZTv0_n120_N7S1182C2D1Ev,_ZTv0_n60_N7S1182C2D1Ev)();
extern void ABISELECT(_ZThn144_N7S1182C2D1Ev,_ZThn80_N7S1182C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S1182C2D0Ev,_ZTv0_n60_N7S1182C2D0Ev)();
extern void ABISELECT(_ZThn144_N7S1182C2D0Ev,_ZThn80_N7S1182C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S1182C2D1Ev,_ZTv0_n36_N7S1182C2D1Ev)();
extern void ABISELECT(_ZThn176_N7S1182C2D1Ev,_ZThn96_N7S1182C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S1182C2D0Ev,_ZTv0_n36_N7S1182C2D0Ev)();
extern void ABISELECT(_ZThn176_N7S1182C2D0Ev,_ZThn96_N7S1182C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S1182C2[] = {
  ABISELECT(176,96),
  ABISELECT(144,80),
  ABISELECT(120,64),
  ABISELECT(104,56),
  ABISELECT(104,56),
  0,
  ABISELECT(88,48),
  ABISELECT(72,40),
  ABISELECT(40,20),
  ABISELECT(56,32),
  ABISELECT(40,20),
  ABISELECT(34,18),
  0,
  0,
  ABISELECT(34,18),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C2[0]),
  (VTBL_ENTRY)&_ZN7S1182C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1182C2D0Ev,
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-8,-4),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(26,14),
  ABISELECT(-8,-4),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-8,-4),
  ABISELECT(26,14),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S1182C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S1182C2D1Ev,_ZThn4_N7S1182C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S1182C2D0Ev,_ZThn4_N7S1182C2D0Ev),
  ABISELECT(10,6),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(10,6),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S1182C2[0]),
  ABISELECT(-40,-20),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S1182C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S1182C2D1Ev,_ZTv0_n44_N7S1182C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S1182C2D0Ev,_ZTv0_n44_N7S1182C2D0Ev),
  ABISELECT(-56,-32),
  ABISELECT(-22,-14),
  ABISELECT(-56,-32),
  ABISELECT(-16,-12),
  ABISELECT(-56,-32),
  ABISELECT(-22,-14),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S1182C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C2D1Ev,_ZTv0_n32_N7S1182C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C2D0Ev,_ZTv0_n32_N7S1182C2D0Ev),
  ABISELECT(-72,-40),
  ABISELECT(-38,-22),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI7S1182C2[0]),
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  ABISELECT(-88,-48),
  ABISELECT(-48,-28),
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI7S1182C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C2D1Ev,_ZTv0_n32_N7S1182C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C2D0Ev,_ZTv0_n32_N7S1182C2D0Ev),
  ABISELECT(-104,-56),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-104,-56),
  ABISELECT(-70,-38),
  ABISELECT(-104,-56),
  ABISELECT(-70,-38),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI7S1182C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S1182C2D1Ev,_ZTv0_n44_N7S1182C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S1182C2D0Ev,_ZTv0_n44_N7S1182C2D0Ev),
  ABISELECT(8,4),
  ABISELECT(-120,-64),
  ABISELECT(56,32),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-120,-64),
  ABISELECT(-32,-16),
  ABISELECT(-48,-24),
  ABISELECT(-80,-44),
  ABISELECT(-64,-32),
  ABISELECT(-80,-44),
  ABISELECT(24,16),
  ABISELECT(-86,-46),
  ABISELECT(-120,-64),
  ABISELECT(-120,-64),
  ABISELECT(-86,-46),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI7S1182C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N7S1182C2D1Ev,_ZTv0_n68_N7S1182C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N7S1182C2D0Ev,_ZTv0_n68_N7S1182C2D0Ev),
  ABISELECT(48,28),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-88,-48),
  ABISELECT(-72,-36),
  ABISELECT(-94,-50),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-94,-50),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI7S1182C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N7S1182C2D1Ev,_ZTvn4_n68_N7S1182C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N7S1182C2D0Ev,_ZTvn4_n68_N7S1182C2D0Ev),
  (VTBL_ENTRY)&_ZN8S1182C182v1Ev,
  ABISELECT(-144,-80),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-144,-80),
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-104,-60),
  ABISELECT(-110,-62),
  ABISELECT(-144,-80),
  ABISELECT(-104,-60),
  ABISELECT(-56,-32),
  ABISELECT(-144,-80),
  ABISELECT(-110,-62),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI7S1182C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S1182C2D1Ev,_ZTv0_n60_N7S1182C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S1182C2D0Ev,_ZTv0_n60_N7S1182C2D0Ev),
  ABISELECT(-126,-70),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  ABISELECT(-126,-70),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI7S1182C2[0]),
  ABISELECT(-176,-96),
  ABISELECT(-142,-78),
  ABISELECT(-176,-96),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-176,-96),
  ABISELECT(-142,-78),
  ABISELECT(-176,-96),
  (VTBL_ENTRY)&(_ZTI7S1182C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S1182C2D1Ev,_ZTv0_n36_N7S1182C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S1182C2D0Ev,_ZTv0_n36_N7S1182C2D0Ev),
  ABISELECT(-158,-86),
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  ABISELECT(-158,-86),
  ABISELECT(-192,-104),
  (VTBL_ENTRY)&(_ZTI7S1182C2[0]),
};
extern VTBL_ENTRY _ZTV7S1182C2[];
static  VTBL_ENTRY _tg__ZTV7S1182C3__A__7S1182C2[] = {
  ABISELECT(34,18),
  0,
  0,
  ABISELECT(34,18),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
extern void _ZN8S1182C12D1Ev();
extern void _ZN8S1182C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C12__A__7S1182C2[] = {
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-8,-4),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(26,14),
  ABISELECT(-8,-4),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-8,-4),
  ABISELECT(26,14),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&_ZN8S1182C12D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C12D0Ev,
};
extern void _ZN8S1182C16D1Ev();
extern void _ZN8S1182C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C168S1182C12__7S1182C2[] = {
  ABISELECT(26,14),
  ABISELECT(-8,-4),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-8,-4),
  ABISELECT(26,14),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
  (VTBL_ENTRY)&_ZN8S1182C16D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1182C118S1182C168S1182C12__A1__7S1182C2[] = {
  ABISELECT(-8,-4),
  ABISELECT(26,14),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C11[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C118S1182C168S1182C12__A4__7S1182C2[] = {
  ABISELECT(-8,-4),
  ABISELECT(26,14),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C168S1182C12__A2__7S1182C2[] = {
  ABISELECT(10,6),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(10,6),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__7S1182C38S1182C168S1182C12__A2__7S1182C2[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev)();
extern void ABISELECT(_ZThn80_N8S1182C16D1Ev,_ZThn44_N8S1182C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev)();
extern void ABISELECT(_ZThn80_N8S1182C16D0Ev,_ZThn44_N8S1182C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C10__8S1182C168S1182C12__7S1182C2[] = {
  ABISELECT(-80,-44),
  ABISELECT(-54,-30),
  ABISELECT(-88,-48),
  ABISELECT(-48,-28),
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C168S1182C12__7S1182C2[] = {
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__A1__8S1182C168S1182C12__7S1182C2[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__A__8S1182C168S1182C12__7S1182C2[] = {
  ABISELECT(10,6),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(10,6),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev)();
extern void ABISELECT(_ZThn32_N8S1182C12D1Ev,_ZThn16_N8S1182C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev)();
extern void ABISELECT(_ZThn32_N8S1182C12D0Ev,_ZThn16_N8S1182C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1182C8__8S1182C12__A__7S1182C2[] = {
  ABISELECT(-32,-16),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev)();
extern void ABISELECT(_ZThn48_N8S1182C12D1Ev,_ZThn28_N8S1182C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev)();
extern void ABISELECT(_ZThn48_N8S1182C12D0Ev,_ZThn28_N8S1182C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1182C9__8S1182C12__A__7S1182C2[] = {
  ABISELECT(-48,-28),
  ABISELECT(-22,-14),
  ABISELECT(-56,-32),
  ABISELECT(-16,-12),
  ABISELECT(-56,-32),
  ABISELECT(-22,-14),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__8S1182C12__A__7S1182C2[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__8S1182C12__A__7S1182C2[] = {
  ABISELECT(-72,-40),
  ABISELECT(-38,-22),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev)();
extern void ABISELECT(_ZThn80_N8S1182C12D1Ev,_ZThn44_N8S1182C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev)();
extern void ABISELECT(_ZThn80_N8S1182C12D0Ev,_ZThn44_N8S1182C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C10__A1__8S1182C12__A__7S1182C2[] = {
  ABISELECT(-80,-44),
  ABISELECT(-54,-30),
  ABISELECT(-88,-48),
  ABISELECT(-48,-28),
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev)();
extern void ABISELECT(_ZThn96_N8S1182C12D1Ev,_ZThn52_N8S1182C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev)();
extern void ABISELECT(_ZThn96_N8S1182C12D0Ev,_ZThn52_N8S1182C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C14__8S1182C12__A__7S1182C2[] = {
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-104,-56),
  ABISELECT(-70,-38),
  ABISELECT(-104,-56),
  ABISELECT(-70,-38),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C16__A1__8S1182C12__A__7S1182C2[] = {
  ABISELECT(10,6),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(10,6),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__7S1182C2[] = {
  0,
  ABISELECT(34,18),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
extern void _ZN7S1182C8D1Ev();
extern void _ZN7S1182C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1182C8__7S1182C2[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
  (VTBL_ENTRY)&_ZN7S1182C8D1Ev,
  (VTBL_ENTRY)&_ZN7S1182C8D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev)();
extern void ABISELECT(_ZThn16_N7S1182C8D1Ev,_ZThn12_N7S1182C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev)();
extern void ABISELECT(_ZThn16_N7S1182C8D0Ev,_ZThn12_N7S1182C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1182C9__7S1182C8__7S1182C2[] = {
  ABISELECT(-16,-12),
  ABISELECT(-22,-14),
  ABISELECT(-56,-32),
  ABISELECT(-16,-12),
  ABISELECT(-56,-32),
  ABISELECT(-22,-14),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__7S1182C8__7S1182C2[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__7S1182C8__7S1182C2[] = {
  ABISELECT(-72,-40),
  ABISELECT(-38,-22),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev)();
extern void ABISELECT(_ZThn48_N7S1182C8D1Ev,_ZThn28_N7S1182C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev)();
extern void ABISELECT(_ZThn48_N7S1182C8D0Ev,_ZThn28_N7S1182C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C10__A1__7S1182C8__7S1182C2[] = {
  ABISELECT(-48,-28),
  ABISELECT(-54,-30),
  ABISELECT(-88,-48),
  ABISELECT(-48,-28),
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev),
};
extern void _ZN7S1182C9D1Ev();
extern void _ZN7S1182C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1182C9__7S1182C2[] = {
  ABISELECT(-22,-14),
  ABISELECT(-56,-32),
  ABISELECT(-16,-12),
  ABISELECT(-56,-32),
  ABISELECT(-22,-14),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C9[0]),
  (VTBL_ENTRY)&_ZN7S1182C9D1Ev,
  (VTBL_ENTRY)&_ZN7S1182C9D0Ev,
};
extern void _ZN8S1182C10D1Ev();
extern void _ZN8S1182C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C107S1182C9__7S1182C2[] = {
  ABISELECT(-22,-14),
  ABISELECT(-56,-32),
  ABISELECT(-16,-12),
  ABISELECT(-56,-32),
  ABISELECT(-22,-14),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
  (VTBL_ENTRY)&_ZN8S1182C10D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C10D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C107S1182C9__A1__7S1182C2[] = {
  ABISELECT(-56,-32),
  ABISELECT(-22,-14),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C107S1182C9__7S1182C2[] = {
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__A1__8S1182C107S1182C9__7S1182C2[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__7S1182C9__7S1182C2[] = {
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S1182C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__7S1182C9__7S1182C2[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI7S1182C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__A1__7S1182C2[] = {
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__7S1182C3__A1__7S1182C2[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__7S1182C2[] = {
  ABISELECT(-72,-40),
  ABISELECT(-38,-22),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C11[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C11__A2__7S1182C2[] = {
  ABISELECT(-72,-40),
  ABISELECT(-38,-22),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
extern void _ZN8S1182C10D1Ev();
extern void _ZN8S1182C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C10__A1__7S1182C2[] = {
  ABISELECT(-54,-30),
  ABISELECT(-88,-48),
  ABISELECT(-48,-28),
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
  (VTBL_ENTRY)&_ZN8S1182C10D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C10D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C10__A3__7S1182C2[] = {
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C10__A1__7S1182C2[] = {
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__A1__8S1182C10__A1__7S1182C2[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
};
extern void _ZN8S1182C14D1Ev();
extern void _ZN8S1182C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C14__7S1182C2[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-104,-56),
  ABISELECT(-70,-38),
  ABISELECT(-104,-56),
  ABISELECT(-70,-38),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
  (VTBL_ENTRY)&_ZN8S1182C14D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C14D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__8S1182C14__7S1182C2[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(104,56),
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__8S1182C14__7S1182C2[] = {
  ABISELECT(-72,-40),
  ABISELECT(-38,-22),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C14D1Ev,_ZTv0_n32_N8S1182C14D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1182C14D0Ev,_ZTv0_n32_N8S1182C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S1182C9__8S1182C14__7S1182C2[] = {
  ABISELECT(48,24),
  ABISELECT(-22,-14),
  ABISELECT(-56,-32),
  ABISELECT(-16,-12),
  ABISELECT(-56,-32),
  ABISELECT(-22,-14),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C14D1Ev,_ZTv0_n32_N8S1182C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C14D0Ev,_ZTv0_n32_N8S1182C14D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C14__7S1182C2[] = {
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1182C15__7S1182C2[] = {
  ABISELECT(-70,-38),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C15[0]),
};
extern void _ZN8S1182C17D1Ev();
extern void _ZN8S1182C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C17__7S1182C2[] = {
  ABISELECT(56,32),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-120,-64),
  ABISELECT(-32,-16),
  ABISELECT(-48,-24),
  ABISELECT(-80,-44),
  ABISELECT(-64,-32),
  ABISELECT(-80,-44),
  ABISELECT(24,16),
  ABISELECT(-86,-46),
  ABISELECT(-120,-64),
  ABISELECT(-120,-64),
  ABISELECT(-86,-46),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C17[0]),
  (VTBL_ENTRY)&_ZN8S1182C17D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C17__A4__7S1182C2[] = {
  ABISELECT(-86,-46),
  ABISELECT(-120,-64),
  ABISELECT(-120,-64),
  ABISELECT(-86,-46),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__7S1182C38S1182C17__A4__7S1182C2[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(120,64),
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
extern void _ZN8S1182C18D1Ev();
extern void _ZN8S1182C18D0Ev();
extern void _ZN8S1182C182v1Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C188S1182C17__7S1182C2[] = {
  ABISELECT(48,28),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-88,-48),
  ABISELECT(-72,-36),
  ABISELECT(-94,-50),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-94,-50),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C18[0]),
  (VTBL_ENTRY)&_ZN8S1182C18D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C18D0Ev,
  (VTBL_ENTRY)&_ZN8S1182C182v1Ev,
};
extern void _ZN7S1182C8D1Ev();
extern void _ZN7S1182C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1182C88S1182C188S1182C17__A1__7S1182C2[] = {
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-88,-48),
  ABISELECT(-72,-36),
  ABISELECT(-94,-50),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-94,-50),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
  (VTBL_ENTRY)&_ZN7S1182C8D1Ev,
  (VTBL_ENTRY)&_ZN7S1182C8D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S1182C9__7S1182C88S1182C188S1182C17__A1__7S1182C2[] = {
  ABISELECT(72,36),
  ABISELECT(-22,-14),
  ABISELECT(-56,-32),
  ABISELECT(-16,-12),
  ABISELECT(-56,-32),
  ABISELECT(-22,-14),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__7S1182C88S1182C188S1182C17__A1__7S1182C2[] = {
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__7S1182C88S1182C188S1182C17__A1__7S1182C2[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__7S1182C88S1182C188S1182C17__A1__7S1182C2[] = {
  ABISELECT(-72,-40),
  ABISELECT(-38,-22),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1182C10__A1__7S1182C88S1182C188S1182C17__A1__7S1182C2[] = {
  ABISELECT(40,20),
  ABISELECT(-54,-30),
  ABISELECT(-88,-48),
  ABISELECT(-48,-28),
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C18D1Ev,_ZTv0_n32_N8S1182C18D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1182C18D0Ev,_ZTv0_n32_N8S1182C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S1182C9__8S1182C188S1182C17__7S1182C2[] = {
  ABISELECT(72,36),
  ABISELECT(-22,-14),
  ABISELECT(-56,-32),
  ABISELECT(-16,-12),
  ABISELECT(-56,-32),
  ABISELECT(-22,-14),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI8S1182C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C18D1Ev,_ZTv0_n32_N8S1182C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C18D0Ev,_ZTv0_n32_N8S1182C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C188S1182C17__7S1182C2[] = {
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI8S1182C18[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__8S1182C188S1182C17__7S1182C2[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI8S1182C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__8S1182C188S1182C17__7S1182C2[] = {
  ABISELECT(-72,-40),
  ABISELECT(-38,-22),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI8S1182C18[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C18D1Ev,_ZTv0_n32_N8S1182C18D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1182C18D0Ev,_ZTv0_n32_N8S1182C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1182C10__A1__8S1182C188S1182C17__7S1182C2[] = {
  ABISELECT(40,20),
  ABISELECT(-54,-30),
  ABISELECT(-88,-48),
  ABISELECT(-48,-28),
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S1182C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C18D1Ev,_ZTv0_n32_N8S1182C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C18D0Ev,_ZTv0_n32_N8S1182C18D0Ev),
};
extern void ABISELECT(_ZTv0_n72_N8S1182C18D1Ev,_ZTv0_n36_N8S1182C18D1Ev)();
extern void ABISELECT(_ZThn48_N8S1182C18D1Ev,_ZThn28_N8S1182C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S1182C18D0Ev,_ZTv0_n36_N8S1182C18D0Ev)();
extern void ABISELECT(_ZThn48_N8S1182C18D0Ev,_ZThn28_N8S1182C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C16__8S1182C188S1182C17__7S1182C2[] = {
  ABISELECT(-48,-28),
  ABISELECT(-142,-78),
  ABISELECT(-176,-96),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-176,-96),
  ABISELECT(-142,-78),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S1182C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S1182C18D1Ev,_ZTv0_n36_N8S1182C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S1182C18D0Ev,_ZTv0_n36_N8S1182C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C16__A1__8S1182C188S1182C17__7S1182C2[] = {
  ABISELECT(-158,-86),
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  ABISELECT(-158,-86),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S1182C18[0]),
};
extern void ABISELECT(_ZTv0_n120_N8S1182C17D1Ev,_ZTv0_n60_N8S1182C17D1Ev)();
extern void ABISELECT(_ZThn24_N8S1182C17D1Ev,_ZThn16_N8S1182C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S1182C17D0Ev,_ZTv0_n60_N8S1182C17D0Ev)();
extern void ABISELECT(_ZThn24_N8S1182C17D0Ev,_ZThn16_N8S1182C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C12__8S1182C17__7S1182C2[] = {
  ABISELECT(-24,-16),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-144,-80),
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-104,-60),
  ABISELECT(-110,-62),
  ABISELECT(-144,-80),
  ABISELECT(-104,-60),
  ABISELECT(-56,-32),
  ABISELECT(-144,-80),
  ABISELECT(-110,-62),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S1182C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S1182C17D1Ev,_ZTv0_n60_N8S1182C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S1182C17D0Ev,_ZTv0_n60_N8S1182C17D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S1182C17D1Ev,_ZTv0_n44_N8S1182C17D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S1182C17D0Ev,_ZTv0_n44_N8S1182C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S1182C8__8S1182C17__7S1182C2[] = {
  ABISELECT(80,44),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI8S1182C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C17D1Ev,_ZTv0_n44_N8S1182C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C17D0Ev,_ZTv0_n44_N8S1182C17D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C17D1Ev,_ZTv0_n32_N8S1182C17D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1182C17D0Ev,_ZTv0_n32_N8S1182C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S1182C9__8S1182C17__7S1182C2[] = {
  ABISELECT(64,32),
  ABISELECT(-22,-14),
  ABISELECT(-56,-32),
  ABISELECT(-16,-12),
  ABISELECT(-56,-32),
  ABISELECT(-22,-14),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S1182C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C17D1Ev,_ZTv0_n32_N8S1182C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C17D0Ev,_ZTv0_n32_N8S1182C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__8S1182C17__7S1182C2[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(120,64),
  (VTBL_ENTRY)&(_ZTI8S1182C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__8S1182C17__7S1182C2[] = {
  ABISELECT(-72,-40),
  ABISELECT(-38,-22),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S1182C17[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C17D1Ev,_ZTv0_n32_N8S1182C17D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1182C17D0Ev,_ZTv0_n32_N8S1182C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1182C10__A1__8S1182C17__7S1182C2[] = {
  ABISELECT(32,16),
  ABISELECT(-54,-30),
  ABISELECT(-88,-48),
  ABISELECT(-48,-28),
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S1182C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C17D1Ev,_ZTv0_n32_N8S1182C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C17D0Ev,_ZTv0_n32_N8S1182C17D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S1182C17D1Ev,_ZTv0_n44_N8S1182C17D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S1182C17D0Ev,_ZTv0_n44_N8S1182C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1182C14__8S1182C17__7S1182C2[] = {
  ABISELECT(16,8),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-104,-56),
  ABISELECT(-70,-38),
  ABISELECT(-104,-56),
  ABISELECT(-70,-38),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S1182C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C17D1Ev,_ZTv0_n44_N8S1182C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C17D0Ev,_ZTv0_n44_N8S1182C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C168S1182C12__A1__8S1182C17__7S1182C2[] = {
  ABISELECT(-126,-70),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  ABISELECT(-126,-70),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S1182C17[0]),
};
extern void ABISELECT(_ZThn8_N8S1182C17D1Ev,_ZThn4_N8S1182C17D1Ev)();
extern void ABISELECT(_ZThn8_N8S1182C17D0Ev,_ZThn4_N8S1182C17D0Ev)();
extern void _ZN8S1182C182v1Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C18__8S1182C17__7S1182C2[] = {
  ABISELECT(48,28),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-88,-48),
  ABISELECT(-72,-36),
  ABISELECT(-94,-50),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-94,-50),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S1182C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S1182C17D1Ev,_ZThn4_N8S1182C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S1182C17D0Ev,_ZThn4_N8S1182C17D0Ev),
  (VTBL_ENTRY)&_ZN8S1182C182v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N8S1182C17D1Ev,_ZTv0_n36_N8S1182C17D1Ev)();
extern void ABISELECT(_ZThn56_N8S1182C17D1Ev,_ZThn32_N8S1182C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S1182C17D0Ev,_ZTv0_n36_N8S1182C17D0Ev)();
extern void ABISELECT(_ZThn56_N8S1182C17D0Ev,_ZThn32_N8S1182C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C16__A1__8S1182C17__7S1182C2[] = {
  ABISELECT(-56,-32),
  ABISELECT(-142,-78),
  ABISELECT(-176,-96),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-176,-96),
  ABISELECT(-142,-78),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S1182C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S1182C17D1Ev,_ZTv0_n36_N8S1182C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S1182C17D0Ev,_ZTv0_n36_N8S1182C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C16__A3__8S1182C17__7S1182C2[] = {
  ABISELECT(-158,-86),
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  ABISELECT(-158,-86),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S1182C17[0]),
};
extern void _ZN8S1182C12D1Ev();
extern void _ZN8S1182C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C12__A1__7S1182C2[] = {
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-144,-80),
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-104,-60),
  ABISELECT(-110,-62),
  ABISELECT(-144,-80),
  ABISELECT(-104,-60),
  ABISELECT(-56,-32),
  ABISELECT(-144,-80),
  ABISELECT(-110,-62),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&_ZN8S1182C12D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C12D0Ev,
};
extern void _ZN8S1182C16D1Ev();
extern void _ZN8S1182C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C168S1182C12__A1__7S1182C2[] = {
  ABISELECT(-110,-62),
  ABISELECT(-144,-80),
  ABISELECT(-104,-60),
  ABISELECT(-56,-32),
  ABISELECT(-144,-80),
  ABISELECT(-110,-62),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
  (VTBL_ENTRY)&_ZN8S1182C16D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1182C118S1182C168S1182C12__A2__7S1182C2[] = {
  ABISELECT(-144,-80),
  ABISELECT(-110,-62),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C11[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C118S1182C168S1182C12__A5__7S1182C2[] = {
  ABISELECT(-144,-80),
  ABISELECT(-110,-62),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C168S1182C12__A3__7S1182C2[] = {
  ABISELECT(-126,-70),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  ABISELECT(-126,-70),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__7S1182C38S1182C168S1182C12__A3__7S1182C2[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(160,88),
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1182C10__8S1182C168S1182C12__A1__7S1182C2[] = {
  ABISELECT(56,32),
  ABISELECT(-54,-30),
  ABISELECT(-88,-48),
  ABISELECT(-48,-28),
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C168S1182C12__A1__7S1182C2[] = {
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(104,60),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__A1__8S1182C168S1182C12__A1__7S1182C2[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(144,80),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__A__8S1182C168S1182C12__A1__7S1182C2[] = {
  ABISELECT(-126,-70),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  ABISELECT(-126,-70),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S1182C8__8S1182C12__A1__7S1182C2[] = {
  ABISELECT(104,60),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(104,60),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S1182C9__8S1182C12__A1__7S1182C2[] = {
  ABISELECT(88,48),
  ABISELECT(-22,-14),
  ABISELECT(-56,-32),
  ABISELECT(-16,-12),
  ABISELECT(-56,-32),
  ABISELECT(-22,-14),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__8S1182C12__A1__7S1182C2[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(144,80),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__8S1182C12__A1__7S1182C2[] = {
  ABISELECT(-72,-40),
  ABISELECT(-38,-22),
  ABISELECT(72,40),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1182C10__A1__8S1182C12__A1__7S1182C2[] = {
  ABISELECT(56,32),
  ABISELECT(-54,-30),
  ABISELECT(-88,-48),
  ABISELECT(-48,-28),
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1182C14__8S1182C12__A1__7S1182C2[] = {
  ABISELECT(40,24),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-104,-56),
  ABISELECT(-70,-38),
  ABISELECT(-104,-56),
  ABISELECT(-70,-38),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C16__A1__8S1182C12__A1__7S1182C2[] = {
  ABISELECT(-126,-70),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  ABISELECT(-126,-70),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
};
extern void _ZN8S1182C16D1Ev();
extern void _ZN8S1182C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C16__A2__7S1182C2[] = {
  ABISELECT(-142,-78),
  ABISELECT(-176,-96),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-176,-96),
  ABISELECT(-142,-78),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
  (VTBL_ENTRY)&_ZN8S1182C16D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1182C118S1182C16__A3__7S1182C2[] = {
  ABISELECT(-176,-96),
  ABISELECT(-142,-78),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C11[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C118S1182C16__A6__7S1182C2[] = {
  ABISELECT(-176,-96),
  ABISELECT(-142,-78),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C16__A5__7S1182C2[] = {
  ABISELECT(-158,-86),
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  ABISELECT(-158,-86),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__7S1182C38S1182C16__A5__7S1182C2[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(192,104),
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1182C10__8S1182C16__A2__7S1182C2[] = {
  ABISELECT(88,48),
  ABISELECT(-54,-30),
  ABISELECT(-88,-48),
  ABISELECT(-48,-28),
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C16__A2__7S1182C2[] = {
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(136,76),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__A1__8S1182C16__A2__7S1182C2[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(176,96),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__A__8S1182C16__A2__7S1182C2[] = {
  ABISELECT(-158,-86),
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  ABISELECT(-158,-86),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
static  VTT_ENTRY vtt_S1182C2[] = {
  {&(_ZTV7S1182C2[17]),  17,165},
  {&(_tg__ZTV7S1182C3__A__7S1182C2[6]),  6,6},
  {&(_tg__ZTV7S1182C3__A__7S1182C2[6]),  6,6},
  {&(_tg__ZTV8S1182C12__A__7S1182C2[14]),  14,16},
  {&(_tg__ZTV8S1182C168S1182C12__7S1182C2[8]),  8,10},
  {&(_tg__ZTV8S1182C118S1182C168S1182C12__A1__7S1182C2[4]),  4,4},
  {&(_tg__ZTV7S1182C58S1182C118S1182C168S1182C12__A4__7S1182C2[4]),  4,4},
  {&(_tg__ZTV7S1182C38S1182C168S1182C12__A2__7S1182C2[6]),  6,6},
  {&(_tg__ZTV7S1182C5__7S1182C38S1182C168S1182C12__A2__7S1182C2[4]),  4,4},
  {&(_tg__ZTV8S1182C10__8S1182C168S1182C12__7S1182C2[8]),  8,10},
  {&(_tg__ZTV7S1182C3__8S1182C168S1182C12__7S1182C2[6]),  6,6},
  {&(_tg__ZTV7S1182C5__A1__8S1182C168S1182C12__7S1182C2[4]),  4,4},
  {&(_tg__ZTV7S1182C3__A__8S1182C168S1182C12__7S1182C2[6]),  6,6},
  {&(_tg__ZTV7S1182C8__8S1182C12__A__7S1182C2[11]),  11,13},
  {&(_tg__ZTV7S1182C9__8S1182C12__A__7S1182C2[8]),  8,10},
  {&(_tg__ZTV7S1182C8__8S1182C12__A__7S1182C2[11]),  11,13},
  {&(_tg__ZTV7S1182C5__8S1182C12__A__7S1182C2[4]),  4,4},
  {&(_tg__ZTV8S1182C11__8S1182C12__A__7S1182C2[4]),  4,4},
  {&(_tg__ZTV8S1182C10__A1__8S1182C12__A__7S1182C2[8]),  8,10},
  {&(_tg__ZTV8S1182C14__8S1182C12__A__7S1182C2[11]),  11,13},
  {&(_tg__ZTV8S1182C14__8S1182C12__A__7S1182C2[11]),  11,13},
  {&(_tg__ZTV7S1182C38S1182C16__A1__8S1182C12__A__7S1182C2[6]),  6,6},
  {&(_ZTV7S1182C2[17]),  17,165},
  {&(_ZTV7S1182C2[52]),  52,165},
  {&(_ZTV7S1182C2[62]),  62,165},
  {&(_ZTV7S1182C2[52]),  52,165},
  {&(_ZTV7S1182C2[68]),  68,165},
  {&(_ZTV7S1182C2[76]),  76,165},
  {&(_ZTV7S1182C2[33]),  33,165},
  {&(_ZTV7S1182C2[89]),  89,165},
  {&(_ZTV7S1182C2[89]),  89,165},
  {&(_ZTV7S1182C2[41]),  41,165},
  {&(_ZTV7S1182C2[109]),  109,165},
  {&(_ZTV7S1182C2[140]),  140,165},
  {&(_ZTV7S1182C2[148]),  148,165},
  {&(_ZTV7S1182C2[122]),  122,165},
  {&(_ZTV7S1182C2[157]),  157,165},
  {&(_ZTV7S1182C2[165]),  165,165},
  {&(_tg__ZTV7S1182C5__7S1182C2[4]),  4,4},
  {&(_tg__ZTV7S1182C8__7S1182C2[10]),  10,12},
  {&(_tg__ZTV7S1182C9__7S1182C8__7S1182C2[8]),  8,10},
  {&(_tg__ZTV7S1182C8__7S1182C2[10]),  10,12},
  {&(_tg__ZTV7S1182C5__7S1182C8__7S1182C2[4]),  4,4},
  {&(_tg__ZTV8S1182C11__7S1182C8__7S1182C2[4]),  4,4},
  {&(_tg__ZTV8S1182C10__A1__7S1182C8__7S1182C2[8]),  8,10},
  {&(_tg__ZTV7S1182C9__7S1182C2[7]),  7,9},
  {&(_tg__ZTV8S1182C107S1182C9__7S1182C2[7]),  7,9},
  {&(_tg__ZTV7S1182C58S1182C107S1182C9__A1__7S1182C2[4]),  4,4},
  {&(_tg__ZTV7S1182C3__8S1182C107S1182C9__7S1182C2[6]),  6,6},
  {&(_tg__ZTV7S1182C5__A1__8S1182C107S1182C9__7S1182C2[4]),  4,4},
  {&(_tg__ZTV7S1182C3__7S1182C9__7S1182C2[6]),  6,6},
  {&(_tg__ZTV7S1182C5__7S1182C9__7S1182C2[4]),  4,4},
  {&(_tg__ZTV7S1182C3__A1__7S1182C2[6]),  6,6},
  {&(_tg__ZTV7S1182C5__7S1182C3__A1__7S1182C2[4]),  4,4},
  {&(_tg__ZTV8S1182C11__7S1182C2[4]),  4,4},
  {&(_tg__ZTV7S1182C58S1182C11__A2__7S1182C2[4]),  4,4},
  {&(_tg__ZTV8S1182C10__A1__7S1182C2[7]),  7,9},
  {&(_tg__ZTV7S1182C58S1182C10__A3__7S1182C2[4]),  4,4},
  {&(_tg__ZTV7S1182C3__8S1182C10__A1__7S1182C2[6]),  6,6},
  {&(_tg__ZTV7S1182C5__A1__8S1182C10__A1__7S1182C2[4]),  4,4},
  {&(_tg__ZTV8S1182C14__7S1182C2[10]),  10,12},
  {&(_tg__ZTV7S1182C5__8S1182C14__7S1182C2[4]),  4,4},
  {&(_tg__ZTV8S1182C14__7S1182C2[10]),  10,12},
  {&(_tg__ZTV8S1182C11__8S1182C14__7S1182C2[4]),  4,4},
  {&(_tg__ZTV7S1182C9__8S1182C14__7S1182C2[8]),  8,10},
  {&(_tg__ZTV7S1182C3__8S1182C14__7S1182C2[6]),  6,6},
  {&(_tg__ZTV8S1182C15__7S1182C2[3]),  3,3},
  {&(_tg__ZTV8S1182C17__7S1182C2[16]),  16,18},
  {&(_tg__ZTV7S1182C38S1182C17__A4__7S1182C2[6]),  6,6},
  {&(_tg__ZTV7S1182C5__7S1182C38S1182C17__A4__7S1182C2[4]),  4,4},
  {&(_tg__ZTV8S1182C188S1182C17__7S1182C2[11]),  11,14},
  {&(_tg__ZTV7S1182C88S1182C188S1182C17__A1__7S1182C2[10]),  10,12},
  {&(_tg__ZTV7S1182C9__7S1182C88S1182C188S1182C17__A1__7S1182C2[8]),  8,10},
  {&(_tg__ZTV7S1182C3__7S1182C88S1182C188S1182C17__A1__7S1182C2[6]),  6,6},
  {&(_tg__ZTV7S1182C5__7S1182C88S1182C188S1182C17__A1__7S1182C2[4]),  4,4},
  {&(_tg__ZTV8S1182C11__7S1182C88S1182C188S1182C17__A1__7S1182C2[4]),  4,4},
  {&(_tg__ZTV8S1182C10__A1__7S1182C88S1182C188S1182C17__A1__7S1182C2[8]),  8,10},
  {&(_tg__ZTV7S1182C9__8S1182C188S1182C17__7S1182C2[8]),  8,10},
  {&(_tg__ZTV7S1182C3__8S1182C188S1182C17__7S1182C2[6]),  6,6},
  {&(_tg__ZTV7S1182C5__8S1182C188S1182C17__7S1182C2[4]),  4,4},
  {&(_tg__ZTV8S1182C11__8S1182C188S1182C17__7S1182C2[4]),  4,4},
  {&(_tg__ZTV8S1182C10__A1__8S1182C188S1182C17__7S1182C2[8]),  8,10},
  {&(_tg__ZTV8S1182C16__8S1182C188S1182C17__7S1182C2[9]),  9,11},
  {&(_tg__ZTV7S1182C38S1182C16__A1__8S1182C188S1182C17__7S1182C2[6]),  6,6},
  {&(_tg__ZTV8S1182C12__8S1182C17__7S1182C2[15]),  15,17},
  {&(_tg__ZTV7S1182C8__8S1182C17__7S1182C2[11]),  11,13},
  {&(_tg__ZTV7S1182C9__8S1182C17__7S1182C2[8]),  8,10},
  {&(_tg__ZTV7S1182C8__8S1182C17__7S1182C2[11]),  11,13},
  {&(_tg__ZTV7S1182C5__8S1182C17__7S1182C2[4]),  4,4},
  {&(_tg__ZTV8S1182C11__8S1182C17__7S1182C2[4]),  4,4},
  {&(_tg__ZTV8S1182C10__A1__8S1182C17__7S1182C2[8]),  8,10},
  {&(_tg__ZTV8S1182C14__8S1182C17__7S1182C2[11]),  11,13},
  {&(_tg__ZTV8S1182C14__8S1182C17__7S1182C2[11]),  11,13},
  {&(_tg__ZTV7S1182C38S1182C168S1182C12__A1__8S1182C17__7S1182C2[6]),  6,6},
  {&(_tg__ZTV8S1182C18__8S1182C17__7S1182C2[11]),  11,14},
  {&(_tg__ZTV8S1182C16__A1__8S1182C17__7S1182C2[9]),  9,11},
  {&(_tg__ZTV7S1182C38S1182C16__A3__8S1182C17__7S1182C2[6]),  6,6},
  {&(_tg__ZTV8S1182C12__A1__7S1182C2[14]),  14,16},
  {&(_tg__ZTV8S1182C168S1182C12__A1__7S1182C2[8]),  8,10},
  {&(_tg__ZTV8S1182C118S1182C168S1182C12__A2__7S1182C2[4]),  4,4},
  {&(_tg__ZTV7S1182C58S1182C118S1182C168S1182C12__A5__7S1182C2[4]),  4,4},
  {&(_tg__ZTV7S1182C38S1182C168S1182C12__A3__7S1182C2[6]),  6,6},
  {&(_tg__ZTV7S1182C5__7S1182C38S1182C168S1182C12__A3__7S1182C2[4]),  4,4},
  {&(_tg__ZTV8S1182C10__8S1182C168S1182C12__A1__7S1182C2[8]),  8,10},
  {&(_tg__ZTV7S1182C3__8S1182C168S1182C12__A1__7S1182C2[6]),  6,6},
  {&(_tg__ZTV7S1182C5__A1__8S1182C168S1182C12__A1__7S1182C2[4]),  4,4},
  {&(_tg__ZTV7S1182C3__A__8S1182C168S1182C12__A1__7S1182C2[6]),  6,6},
  {&(_tg__ZTV7S1182C8__8S1182C12__A1__7S1182C2[11]),  11,13},
  {&(_tg__ZTV7S1182C9__8S1182C12__A1__7S1182C2[8]),  8,10},
  {&(_tg__ZTV7S1182C8__8S1182C12__A1__7S1182C2[11]),  11,13},
  {&(_tg__ZTV7S1182C5__8S1182C12__A1__7S1182C2[4]),  4,4},
  {&(_tg__ZTV8S1182C11__8S1182C12__A1__7S1182C2[4]),  4,4},
  {&(_tg__ZTV8S1182C10__A1__8S1182C12__A1__7S1182C2[8]),  8,10},
  {&(_tg__ZTV8S1182C14__8S1182C12__A1__7S1182C2[11]),  11,13},
  {&(_tg__ZTV8S1182C14__8S1182C12__A1__7S1182C2[11]),  11,13},
  {&(_tg__ZTV7S1182C38S1182C16__A1__8S1182C12__A1__7S1182C2[6]),  6,6},
  {&(_tg__ZTV8S1182C16__A2__7S1182C2[8]),  8,10},
  {&(_tg__ZTV8S1182C118S1182C16__A3__7S1182C2[4]),  4,4},
  {&(_tg__ZTV7S1182C58S1182C118S1182C16__A6__7S1182C2[4]),  4,4},
  {&(_tg__ZTV7S1182C38S1182C16__A5__7S1182C2[6]),  6,6},
  {&(_tg__ZTV7S1182C5__7S1182C38S1182C16__A5__7S1182C2[4]),  4,4},
  {&(_tg__ZTV8S1182C10__8S1182C16__A2__7S1182C2[8]),  8,10},
  {&(_tg__ZTV7S1182C3__8S1182C16__A2__7S1182C2[6]),  6,6},
  {&(_tg__ZTV7S1182C5__A1__8S1182C16__A2__7S1182C2[4]),  4,4},
  {&(_tg__ZTV7S1182C3__A__8S1182C16__A2__7S1182C2[6]),  6,6},
};
extern VTBL_ENTRY _ZTI7S1182C2[];
extern  VTBL_ENTRY _ZTV7S1182C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C2[];
static VTBL_ENTRY alt_thunk_names87[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S1182C17D0Ev,_ZTv0_n36_N8S1182C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S1182C17D0Ev,_ZThn32_N8S1182C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S1182C17D1Ev,_ZTv0_n36_N8S1182C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S1182C17D1Ev,_ZThn32_N8S1182C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S1182C17D0Ev,_ZTv0_n60_N8S1182C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S1182C17D0Ev,_ZThn16_N8S1182C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S1182C17D1Ev,_ZTv0_n60_N8S1182C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S1182C17D1Ev,_ZThn16_N8S1182C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S1182C18D0Ev,_ZTv0_n36_N8S1182C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S1182C18D0Ev,_ZThn28_N8S1182C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S1182C18D1Ev,_ZTv0_n36_N8S1182C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S1182C18D1Ev,_ZThn28_N8S1182C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S1182C8D0Ev,_ZThn28_N7S1182C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S1182C8D0Ev,_ZThn12_N7S1182C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S1182C8D1Ev,_ZThn28_N7S1182C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S1182C8D1Ev,_ZThn12_N7S1182C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S1182C12D0Ev,_ZThn44_N8S1182C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S1182C12D0Ev,_ZThn28_N8S1182C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S1182C12D1Ev,_ZThn44_N8S1182C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S1182C12D1Ev,_ZThn28_N8S1182C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S1182C12D0Ev,_ZThn52_N8S1182C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S1182C12D0Ev,_ZThn16_N8S1182C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S1182C12D1Ev,_ZThn52_N8S1182C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S1182C12D1Ev,_ZThn16_N8S1182C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S1182C16D0Ev,_ZThn44_N8S1182C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S1182C16D1Ev,_ZThn44_N8S1182C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S1182C2D0Ev,_ZTv0_n36_N7S1182C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S1182C2D0Ev,_ZThn96_N7S1182C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S1182C2D1Ev,_ZTv0_n36_N7S1182C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S1182C2D1Ev,_ZThn96_N7S1182C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S1182C2D0Ev,_ZTv0_n60_N7S1182C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S1182C2D0Ev,_ZThn80_N7S1182C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S1182C2D1Ev,_ZTv0_n60_N7S1182C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S1182C2D1Ev,_ZThn80_N7S1182C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N7S1182C2D0Ev,_ZTv0_n68_N7S1182C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S1182C2D0Ev,_ZThn64_N7S1182C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N7S1182C2D1Ev,_ZTv0_n68_N7S1182C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S1182C2D1Ev,_ZThn64_N7S1182C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1182C2D0Ev,_ZTv0_n32_N7S1182C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S1182C2D0Ev,_ZThn48_N7S1182C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S1182C2D0Ev,_ZThn32_N7S1182C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1182C2D1Ev,_ZTv0_n32_N7S1182C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S1182C2D1Ev,_ZThn48_N7S1182C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S1182C2D1Ev,_ZThn32_N7S1182C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S1182C2D0Ev,_ZTv0_n44_N7S1182C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S1182C2D0Ev,_ZThn56_N7S1182C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S1182C2D0Ev,_ZThn20_N7S1182C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S1182C2D1Ev,_ZTv0_n44_N7S1182C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S1182C2D1Ev,_ZThn56_N7S1182C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S1182C2D1Ev,_ZThn20_N7S1182C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S1182C2 = {  "S1182C2", // class name
  bases_S1182C2, 65,
  &(vtc_S1182C2[0]), // expected_vtbl_contents
  &(vtt_S1182C2[0]), // expected_vtt_contents
  ABISELECT(208,112), // object size
  NSPAIRA(_ZTI7S1182C2),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S1182C2),165, //virtual function table var
  17, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1182C2),125, //virtual table table var
  31, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names87,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1182C19  : S1182C5 , S7856C12 {
  short s1182c19f0;
  ~S1182C19(); // tgen
  S1182C19(); // tgen
};
//SIG(-1 S1182C19) C1{ BC2{ VBC3{ m} BC4{ m} VBC5{ m}} BC5 Fs}


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

static void Test_S1182C19()
{
  extern Class_Descriptor cd_S1182C19;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S1182C19, buf);
    S1182C19 *dp, &lv = *(dp=new (buf) S1182C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S1182C19)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1182C19)");
    check_base_class_offset(lv, (S7856C24*)(S1182C5*), 0, "S1182C19");
    check_base_class_offset(lv, (S7856C15*)(S1182C5*), 0, "S1182C19");
    check_base_class_offset(lv, (S7856C12*)(S1182C5*), ABISELECT(10,6), "S1182C19");
    check_base_class_offset(lv, (S1182C5*), 0, "S1182C19");
    /*is_ambiguous_... S1182C19::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), 0, "S1182C19");
    check_field_offset(lv, s1182c19f0, ABISELECT(8,4), "S1182C19.s1182c19f0");
    test_class_info(&lv, &cd_S1182C19);
    dp->~S1182C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1182C19(Test_S1182C19, "S1182C19", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S1182C19C1Ev();
extern void _ZN8S1182C19D1Ev();
Name_Map name_map_S1182C19[] = {
  NSPAIR(_ZN8S1182C19C1Ev),
  NSPAIR(_ZN8S1182C19D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
static Base_Class bases_S1182C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(10,6), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S1182C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S1182C19[];
static  VTBL_ENTRY vtc_S1182C19[] = {
  ABISELECT(10,6),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C19[0]),
};
extern VTBL_ENTRY _ZTV8S1182C19[];
static  VTBL_ENTRY _tg__ZTV7S1182C5__8S1182C19[] = {
  ABISELECT(10,6),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTT_ENTRY vtt_S1182C19[] = {
  {&(_ZTV8S1182C19[4]),  4,4},
  {&(_tg__ZTV7S1182C5__8S1182C19[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S1182C19[];
extern  VTBL_ENTRY _ZTV8S1182C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C19[];
Class_Descriptor cd_S1182C19 = {  "S1182C19", // class name
  bases_S1182C19, 5,
  &(vtc_S1182C19[0]), // expected_vtbl_contents
  &(vtt_S1182C19[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S1182C19),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S1182C19),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1182C19),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1182C21  : S7856C15 , S1182C15 {
  virtual  ~S1182C21(); // _ZN8S1182C21D2Ev
  S1182C21(); // tgen
};
//SIG(-1 S1182C21) C1{ BC2{ m} BC3{ VBC2} vd}


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

static void Test_S1182C21()
{
  extern Class_Descriptor cd_S1182C21;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S1182C21, buf);
    S1182C21 *dp, &lv = *(dp=new (buf) S1182C21());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S1182C21)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1182C21)");
    /*is_ambiguous_... S1182C21::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), 0, "S1182C21");
    check_base_class_offset(lv, (S7856C15*)(S1182C15*), ABISELECT(8,4), "S1182C21");
    check_base_class_offset(lv, (S1182C15*), 0, "S1182C21");
    test_class_info(&lv, &cd_S1182C21);
    dp->~S1182C21();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1182C21(Test_S1182C21, "S1182C21", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S1182C21C1Ev();
extern void _ZN8S1182C21D2Ev();
Name_Map name_map_S1182C21[] = {
  NSPAIR(_ZN8S1182C21C1Ev),
  NSPAIR(_ZN8S1182C21D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C15;
extern VTBL_ENTRY _ZTI8S1182C15[];
extern  VTBL_ENTRY _ZTV8S1182C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C15[];
static Base_Class bases_S1182C21[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S1182C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S1182C21[];
extern void _ZN8S1182C21D1Ev();
extern void _ZN8S1182C21D0Ev();
static  VTBL_ENTRY vtc_S1182C21[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C21[0]),
  (VTBL_ENTRY)&_ZN8S1182C21D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C21D0Ev,
};
extern VTBL_ENTRY _ZTV8S1182C21[];
static  VTBL_ENTRY _tg__ZTV8S1182C15__8S1182C21[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C15[0]),
};
static  VTT_ENTRY vtt_S1182C21[] = {
  {&(_ZTV8S1182C21[3]),  3,5},
  {&(_tg__ZTV8S1182C15__8S1182C21[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S1182C21[];
extern  VTBL_ENTRY _ZTV8S1182C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C21[];
Class_Descriptor cd_S1182C21 = {  "S1182C21", // class name
  bases_S1182C21, 3,
  &(vtc_S1182C21[0]), // expected_vtbl_contents
  &(vtt_S1182C21[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S1182C21),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S1182C21),5, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1182C21),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1182C22  : S1182C15 , virtual S7856C12 , S1182C12 , S1182C21 {
  virtual  ~S1182C22(); // _ZN8S1182C22D2Ev
  S1182C22(); // tgen
};
//SIG(-1 S1182C22) C1{ BC2{ VBC3{ m}} VBC4{ m} BC5{ VBC6{ VBC7{ VBC8{ m} VBC3 VBC9{ BC8 VBC10{ VBC8 BC3 VBC4} VBC3} BC4 BC11{ BC3 VBC8 VBC4 BC10 VBC9 vd} vd} VBC12{ BC4 BC3 BC10 Fi} VBC11 vd Fi[2]} VBC13{ m} VBC14{ VBC10 VBC2 VBC12 BC4 VBC7 vd Fi} BC15{ VBC11 BC12 BC9 BC4 vd} vd} BC16{ BC3 BC2 vd} vd}


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

static void Test_S1182C22()
{
  extern Class_Descriptor cd_S1182C22;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,18)];
    init_test(&cd_S1182C22, buf);
    S1182C22 *dp, &lv = *(dp=new (buf) S1182C22());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,68), "sizeof(S1182C22)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1182C22)");
    /*is_ambiguous_... S1182C22::S1182C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C15*), 0, "S1182C22");
    /*is_ambiguous_... S1182C9::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C9*), 0, "S1182C22");
    /*is_ambiguous_... S1182C22::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C3*), 0, "S1182C22");
    /*is_ambiguous_... S1182C22::S1182C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C15*), 0, "S1182C22");
    /*is_ambiguous_... S1182C16::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C3*)(S1182C16*)(S1182C12*), 0, "S1182C22");
    check_base_class_offset(lv, (S7856C15*)(S1182C15*)(S1182C21*), 0, "S1182C22");
    /*is_ambiguous_... S1182C22::S1182C15 */ AMB_check_base_class_offset(lv, (S1182C15*), 0, "S1182C22");
    /*is_ambiguous_... S1182C22::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), 0, "S1182C22");
    /*is_ambiguous_... S1182C22::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*), 0, "S1182C22");
    check_base_class_offset(lv, (S7856C12*)(S1182C10*)(S1182C9*), 0, "S1182C22");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C10*)(S1182C9*), 0, "S1182C22");
    /*is_ambiguous_... S1182C22::S1182C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C11*), 0, "S1182C22");
    /*is_ambiguous_... S1182C22::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C10*), 0, "S1182C22");
    /*is_ambiguous_... S1182C22::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C10*), 0, "S1182C22");
    check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C11*)(S1182C16*)(S1182C12*), 0, "S1182C22");
    /*is_ambiguous_... S1182C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C9*), 0, "S1182C22");
    /*is_ambiguous_... S1182C22::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*), 0, "S1182C22");
    /*is_ambiguous_... S1182C10::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C10*)(S1182C9*), 0, "S1182C22");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C10*)(S1182C9*), 0, "S1182C22");
    /*is_ambiguous_... S1182C22::S1182C11 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C11*), 0, "S1182C22");
    /*is_ambiguous_... S1182C22::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C10*), 0, "S1182C22");
    /*is_ambiguous_... S1182C22::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C10*), 0, "S1182C22");
    check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C11*)(S1182C16*)(S1182C12*), 0, "S1182C22");
    /*is_ambiguous_... S1182C22::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C3*), ABISELECT(48,24), "S1182C22");
    /*is_ambiguous_... S1182C22::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*), ABISELECT(48,24), "S1182C22");
    /*is_ambiguous_... S1182C22::S1182C3 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C3*), ABISELECT(48,24), "S1182C22");
    /*is_ambiguous_... S1182C14::S1182C5 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C14*), ABISELECT(48,24), "S1182C22");
    /*is_ambiguous_... S1182C16::S1182C3 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C3*)(S1182C16*)(S1182C12*), ABISELECT(48,24), "S1182C22");
    check_base_class_offset(lv, (S1182C3*)(S1182C9*), ABISELECT(48,24), "S1182C22");
    check_base_class_offset(lv, (S1182C3*)(S1182C10*)(S1182C9*), ABISELECT(48,24), "S1182C22");
    /*is_ambiguous_... S1182C22::S1182C10 */ AMB_check_base_class_offset(lv, (S1182C3*)(S1182C10*), ABISELECT(48,24), "S1182C22");
    /*is_ambiguous_... S1182C9::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C9*), ABISELECT(64,36), "S1182C22");
    /*is_ambiguous_... S1182C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C10*)(S1182C9*), ABISELECT(72,40), "S1182C22");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C10*)(S1182C9*), ABISELECT(64,36), "S1182C22");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C10*)(S1182C9*), ABISELECT(64,36), "S1182C22");
    check_base_class_offset(lv, (S1182C10*)(S1182C9*), ABISELECT(64,36), "S1182C22");
    check_base_class_offset(lv, (S1182C9*)(S1182C8*), ABISELECT(64,36), "S1182C22");
    check_base_class_offset(lv, (S1182C9*)(S1182C14*), ABISELECT(64,36), "S1182C22");
    /*is_ambiguous_... S1182C22::S1182C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C11*), ABISELECT(80,44), "S1182C22");
    /*is_ambiguous_... S1182C22::S1182C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C11*), ABISELECT(88,48), "S1182C22");
    /*is_ambiguous_... S1182C22::S1182C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C11*), ABISELECT(80,44), "S1182C22");
    /*is_ambiguous_... S1182C22::S1182C11 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C11*), ABISELECT(80,44), "S1182C22");
    check_base_class_offset(lv, (S1182C11*)(S1182C8*), ABISELECT(80,44), "S1182C22");
    check_base_class_offset(lv, (S1182C11*)(S1182C14*), ABISELECT(80,44), "S1182C22");
    /*is_ambiguous_... S1182C22::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C10*), ABISELECT(104,56), "S1182C22");
    /*is_ambiguous_... S1182C22::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C10*), ABISELECT(96,52), "S1182C22");
    /*is_ambiguous_... S1182C22::S1182C10 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C10*), ABISELECT(96,52), "S1182C22");
    /*is_ambiguous_... S1182C8::S1182C10 */ AMB_check_base_class_offset(lv, (S1182C10*)(S1182C8*), ABISELECT(96,52), "S1182C22");
    check_base_class_offset(lv, (S1182C10*)(S1182C16*)(S1182C12*), ABISELECT(96,52), "S1182C22");
    check_base_class_offset(lv, (S1182C8*)(S1182C12*), ABISELECT(48,24), "S1182C22");
    check_base_class_offset(lv, (S7856C9_nt*)(S1182C12*), 0, "S1182C22");
    check_base_class_offset(lv, (S1182C15*)(S1182C14*), ABISELECT(112,60), "S1182C22");
    /*is_ambiguous_... S1182C14::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C14*), ABISELECT(112,60), "S1182C22");
    check_base_class_offset(lv, (S1182C14*)(S1182C12*), ABISELECT(112,60), "S1182C22");
    /*is_ambiguous_... S1182C11::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C11*)(S1182C16*)(S1182C12*), ABISELECT(8,4), "S1182C22");
    /*is_ambiguous_... S1182C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C11*)(S1182C16*)(S1182C12*), ABISELECT(16,8), "S1182C22");
    check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C11*)(S1182C16*)(S1182C12*), ABISELECT(8,4), "S1182C22");
    check_base_class_offset(lv, (S1182C5*)(S1182C11*)(S1182C16*)(S1182C12*), ABISELECT(8,4), "S1182C22");
    check_base_class_offset(lv, (S1182C11*)(S1182C16*)(S1182C12*), ABISELECT(8,4), "S1182C22");
    /*is_ambiguous_... S1182C16::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C3*)(S1182C16*)(S1182C12*), ABISELECT(24,12), "S1182C22");
    /*is_ambiguous_... S1182C16::S1182C3 */ AMB_check_base_class_offset(lv, (S1182C3*)(S1182C16*)(S1182C12*), ABISELECT(24,12), "S1182C22");
    /*is_ambiguous_... S1182C16::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C16*)(S1182C12*), ABISELECT(32,16), "S1182C22");
    check_base_class_offset(lv, (S1182C16*)(S1182C12*), ABISELECT(8,4), "S1182C22");
    check_base_class_offset(lv, (S1182C12*), ABISELECT(8,4), "S1182C22");
    /*is_ambiguous_... S1182C21::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C21*), ABISELECT(40,20), "S1182C22");
    check_base_class_offset(lv, (S1182C15*)(S1182C21*), ABISELECT(40,20), "S1182C22");
    check_base_class_offset(lv, (S1182C21*), ABISELECT(40,20), "S1182C22");
    test_class_info(&lv, &cd_S1182C22);
    dp->~S1182C22();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1182C22(Test_S1182C22, "S1182C22", ABISELECT(128,68));

#else // __cplusplus

extern void _ZN8S1182C22C1Ev();
extern void _ZN8S1182C22D2Ev();
Name_Map name_map_S1182C22[] = {
  NSPAIR(_ZN8S1182C22C1Ev),
  NSPAIR(_ZN8S1182C22D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C15;
extern VTBL_ENTRY _ZTI8S1182C15[];
extern  VTBL_ENTRY _ZTV8S1182C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C3;
extern VTBL_ENTRY _ZTI7S1182C3[];
extern  VTBL_ENTRY _ZTV7S1182C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C3[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C10;
extern VTBL_ENTRY _ZTI8S1182C10[];
extern  VTBL_ENTRY _ZTV8S1182C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C10[];
extern Class_Descriptor cd_S1182C9;
extern VTBL_ENTRY _ZTI7S1182C9[];
extern  VTBL_ENTRY _ZTV7S1182C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C11;
extern VTBL_ENTRY _ZTI8S1182C11[];
extern  VTBL_ENTRY _ZTV8S1182C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C11[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C10;
extern VTBL_ENTRY _ZTI8S1182C10[];
extern  VTBL_ENTRY _ZTV8S1182C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C10[];
extern Class_Descriptor cd_S1182C8;
extern VTBL_ENTRY _ZTI7S1182C8[];
extern  VTBL_ENTRY _ZTV7S1182C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C8[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S1182C15;
extern VTBL_ENTRY _ZTI8S1182C15[];
extern  VTBL_ENTRY _ZTV8S1182C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1182C14;
extern VTBL_ENTRY _ZTI8S1182C14[];
extern  VTBL_ENTRY _ZTV8S1182C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C14[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C11;
extern VTBL_ENTRY _ZTI8S1182C11[];
extern  VTBL_ENTRY _ZTV8S1182C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C11[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S1182C3;
extern VTBL_ENTRY _ZTI7S1182C3[];
extern  VTBL_ENTRY _ZTV7S1182C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C3[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1182C16;
extern VTBL_ENTRY _ZTI8S1182C16[];
extern  VTBL_ENTRY _ZTV8S1182C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C16[];
extern Class_Descriptor cd_S1182C12;
extern VTBL_ENTRY _ZTI8S1182C12[];
extern  VTBL_ENTRY _ZTV8S1182C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C15;
extern VTBL_ENTRY _ZTI8S1182C15[];
extern  VTBL_ENTRY _ZTV8S1182C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C15[];
extern Class_Descriptor cd_S1182C21;
extern VTBL_ENTRY _ZTI8S1182C21[];
extern  VTBL_ENTRY _ZTV8S1182C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C21[];
static Base_Class bases_S1182C22[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S1182C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S1182C3,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S1182C10,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S1182C9,    ABISELECT(64,36), //bcp->offset
    56, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S1182C11,    ABISELECT(80,44), //bcp->offset
    66, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S1182C10,    ABISELECT(96,52), //bcp->offset
    70, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S1182C8,    ABISELECT(48,24), //bcp->offset
    43, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    37, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    37, //immediately_derived
  0, 1},
  {&cd_S1182C15,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S1182C14,    ABISELECT(112,60), //bcp->offset
    80, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    37, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S1182C11,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S1182C3,    ABISELECT(24,12), //bcp->offset
    32, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S1182C16,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S1182C12,    ABISELECT(8,4), //bcp->offset
    16, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C15,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S1182C15,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S1182C21,    ABISELECT(40,20), //bcp->offset
    38, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S1182C22[];
extern void _ZN8S1182C22D1Ev();
extern void _ZN8S1182C22D0Ev();
extern void ABISELECT(_ZThn8_N8S1182C22D1Ev,_ZThn4_N8S1182C22D1Ev)();
extern void ABISELECT(_ZThn8_N8S1182C22D0Ev,_ZThn4_N8S1182C22D0Ev)();
extern void ABISELECT(_ZThn40_N8S1182C22D1Ev,_ZThn20_N8S1182C22D1Ev)();
extern void ABISELECT(_ZThn40_N8S1182C22D0Ev,_ZThn20_N8S1182C22D0Ev)();
extern void ABISELECT(_ZTv0_n88_N8S1182C22D1Ev,_ZTv0_n44_N8S1182C22D1Ev)();
extern void ABISELECT(_ZThn48_N8S1182C22D1Ev,_ZThn24_N8S1182C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1182C22D0Ev,_ZTv0_n44_N8S1182C22D0Ev)();
extern void ABISELECT(_ZThn48_N8S1182C22D0Ev,_ZThn24_N8S1182C22D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C22D1Ev,_ZTv0_n32_N8S1182C22D1Ev)();
extern void ABISELECT(_ZThn64_N8S1182C22D1Ev,_ZThn36_N8S1182C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C22D0Ev,_ZTv0_n32_N8S1182C22D0Ev)();
extern void ABISELECT(_ZThn64_N8S1182C22D0Ev,_ZThn36_N8S1182C22D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C22D1Ev,_ZTv0_n32_N8S1182C22D1Ev)();
extern void ABISELECT(_ZThn96_N8S1182C22D1Ev,_ZThn52_N8S1182C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C22D0Ev,_ZTv0_n32_N8S1182C22D0Ev)();
extern void ABISELECT(_ZThn96_N8S1182C22D0Ev,_ZThn52_N8S1182C22D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1182C22D1Ev,_ZTv0_n44_N8S1182C22D1Ev)();
extern void ABISELECT(_ZThn112_N8S1182C22D1Ev,_ZThn60_N8S1182C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1182C22D0Ev,_ZTv0_n44_N8S1182C22D0Ev)();
extern void ABISELECT(_ZThn112_N8S1182C22D0Ev,_ZThn60_N8S1182C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S1182C22[] = {
  ABISELECT(112,60),
  ABISELECT(112,60),
  0,
  ABISELECT(96,52),
  ABISELECT(80,44),
  ABISELECT(48,24),
  ABISELECT(48,24),
  0,
  ABISELECT(64,36),
  ABISELECT(48,24),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C22[0]),
  (VTBL_ENTRY)&_ZN8S1182C22D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C22D0Ev,
  ABISELECT(104,56),
  ABISELECT(104,56),
  ABISELECT(-8,-4),
  ABISELECT(72,40),
  ABISELECT(56,32),
  ABISELECT(40,20),
  ABISELECT(-8,-4),
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(88,48),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S1182C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S1182C22D1Ev,_ZThn4_N8S1182C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S1182C22D0Ev,_ZThn4_N8S1182C22D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S1182C22[0]),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S1182C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S1182C22D1Ev,_ZThn20_N8S1182C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S1182C22D0Ev,_ZThn20_N8S1182C22D0Ev),
  ABISELECT(-48,-24),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S1182C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C22D1Ev,_ZTv0_n44_N8S1182C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C22D0Ev,_ZTv0_n44_N8S1182C22D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S1182C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C22D1Ev,_ZTv0_n32_N8S1182C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C22D0Ev,_ZTv0_n32_N8S1182C22D0Ev),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S1182C22[0]),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S1182C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C22D1Ev,_ZTv0_n32_N8S1182C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C22D0Ev,_ZTv0_n32_N8S1182C22D0Ev),
  ABISELECT(-112,-60),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-64,-36),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S1182C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C22D1Ev,_ZTv0_n44_N8S1182C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C22D0Ev,_ZTv0_n44_N8S1182C22D0Ev),
};
extern VTBL_ENTRY _ZTV8S1182C22[];
static  VTBL_ENTRY _tg__ZTV8S1182C15__A__8S1182C22[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C15[0]),
};
extern void _ZN8S1182C12D1Ev();
extern void _ZN8S1182C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C12__8S1182C22[] = {
  ABISELECT(104,56),
  ABISELECT(104,56),
  ABISELECT(-8,-4),
  ABISELECT(72,40),
  ABISELECT(56,32),
  ABISELECT(40,20),
  ABISELECT(-8,-4),
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(88,48),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&_ZN8S1182C12D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C12D0Ev,
};
extern void _ZN8S1182C16D1Ev();
extern void _ZN8S1182C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C168S1182C12__8S1182C22[] = {
  ABISELECT(-8,-4),
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(88,48),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
  (VTBL_ENTRY)&_ZN8S1182C16D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1182C118S1182C168S1182C12__A1__8S1182C22[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C11[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C118S1182C168S1182C12__A4__8S1182C22[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C168S1182C12__A1__8S1182C22[] = {
  ABISELECT(-24,-12),
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__7S1182C38S1182C168S1182C12__A1__8S1182C22[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev)();
extern void ABISELECT(_ZThn88_N8S1182C16D1Ev,_ZThn48_N8S1182C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev)();
extern void ABISELECT(_ZThn88_N8S1182C16D0Ev,_ZThn48_N8S1182C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C10__8S1182C168S1182C12__8S1182C22[] = {
  ABISELECT(-88,-48),
  ABISELECT(-96,-52),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C168S1182C12__8S1182C22[] = {
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__A__8S1182C168S1182C12__8S1182C22[] = {
  ABISELECT(-24,-12),
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev)();
extern void ABISELECT(_ZThn40_N8S1182C12D1Ev,_ZThn20_N8S1182C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev)();
extern void ABISELECT(_ZThn40_N8S1182C12D0Ev,_ZThn20_N8S1182C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1182C8__8S1182C12__8S1182C22[] = {
  ABISELECT(-40,-20),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev)();
extern void ABISELECT(_ZThn56_N8S1182C12D1Ev,_ZThn32_N8S1182C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev)();
extern void ABISELECT(_ZThn56_N8S1182C12D0Ev,_ZThn32_N8S1182C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1182C9__8S1182C12__8S1182C22[] = {
  ABISELECT(-56,-32),
  ABISELECT(-64,-36),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__8S1182C12__8S1182C22[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev)();
extern void ABISELECT(_ZThn88_N8S1182C12D1Ev,_ZThn48_N8S1182C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev)();
extern void ABISELECT(_ZThn88_N8S1182C12D0Ev,_ZThn48_N8S1182C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C10__A1__8S1182C12__8S1182C22[] = {
  ABISELECT(-88,-48),
  ABISELECT(-96,-52),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev)();
extern void ABISELECT(_ZThn104_N8S1182C12D1Ev,_ZThn56_N8S1182C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev)();
extern void ABISELECT(_ZThn104_N8S1182C12D0Ev,_ZThn56_N8S1182C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C14__8S1182C12__8S1182C22[] = {
  ABISELECT(-104,-56),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-64,-36),
  ABISELECT(-112,-60),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C16__A1__8S1182C12__8S1182C22[] = {
  ABISELECT(-24,-12),
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
};
extern void _ZN8S1182C21D1Ev();
extern void _ZN8S1182C21D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C21__8S1182C22[] = {
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C21[0]),
  (VTBL_ENTRY)&_ZN8S1182C21D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C21D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1182C158S1182C21__A2__8S1182C22[] = {
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C15[0]),
};
extern void _ZN7S1182C8D1Ev();
extern void _ZN7S1182C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1182C8__8S1182C22[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
  (VTBL_ENTRY)&_ZN7S1182C8D1Ev,
  (VTBL_ENTRY)&_ZN7S1182C8D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev)();
extern void ABISELECT(_ZThn16_N7S1182C8D1Ev,_ZThn12_N7S1182C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev)();
extern void ABISELECT(_ZThn16_N7S1182C8D0Ev,_ZThn12_N7S1182C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1182C9__7S1182C8__8S1182C22[] = {
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__7S1182C8__8S1182C22[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev)();
extern void ABISELECT(_ZThn48_N7S1182C8D1Ev,_ZThn28_N7S1182C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev)();
extern void ABISELECT(_ZThn48_N7S1182C8D0Ev,_ZThn28_N7S1182C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C10__A1__7S1182C8__8S1182C22[] = {
  ABISELECT(-48,-28),
  ABISELECT(-96,-52),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev),
};
extern void _ZN7S1182C9D1Ev();
extern void _ZN7S1182C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1182C9__8S1182C22[] = {
  ABISELECT(-64,-36),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C9[0]),
  (VTBL_ENTRY)&_ZN7S1182C9D1Ev,
  (VTBL_ENTRY)&_ZN7S1182C9D0Ev,
};
extern void _ZN8S1182C10D1Ev();
extern void _ZN8S1182C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C107S1182C9__8S1182C22[] = {
  ABISELECT(-64,-36),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
  (VTBL_ENTRY)&_ZN8S1182C10D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C10D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C107S1182C9__A1__8S1182C22[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C107S1182C9__8S1182C22[] = {
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__7S1182C9__8S1182C22[] = {
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S1182C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C22[] = {
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__8S1182C22[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__8S1182C22[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C11[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C11__A2__8S1182C22[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
extern void _ZN8S1182C10D1Ev();
extern void _ZN8S1182C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C10__A1__8S1182C22[] = {
  ABISELECT(-96,-52),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
  (VTBL_ENTRY)&_ZN8S1182C10D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C10D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C10__A3__8S1182C22[] = {
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C10__A1__8S1182C22[] = {
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
};
extern void _ZN8S1182C14D1Ev();
extern void _ZN8S1182C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C14__8S1182C22[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-64,-36),
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
  (VTBL_ENTRY)&_ZN8S1182C14D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C14D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C14__8S1182C22[] = {
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__8S1182C14__8S1182C22[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C14D1Ev,_ZTv0_n32_N8S1182C14D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1182C14D0Ev,_ZTv0_n32_N8S1182C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S1182C9__8S1182C14__8S1182C22[] = {
  ABISELECT(48,24),
  ABISELECT(-64,-36),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C14D1Ev,_ZTv0_n32_N8S1182C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C14D0Ev,_ZTv0_n32_N8S1182C14D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1182C15__A1__8S1182C22[] = {
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C15[0]),
};
static  VTT_ENTRY vtt_S1182C22[] = {
  {&(_ZTV8S1182C22[14]),  14,93},
  {&(_tg__ZTV8S1182C15__A__8S1182C22[3]),  3,3},
  {&(_tg__ZTV8S1182C12__8S1182C22[14]),  14,16},
  {&(_tg__ZTV8S1182C168S1182C12__8S1182C22[8]),  8,10},
  {&(_tg__ZTV8S1182C118S1182C168S1182C12__A1__8S1182C22[4]),  4,4},
  {&(_tg__ZTV7S1182C58S1182C118S1182C168S1182C12__A4__8S1182C22[4]),  4,4},
  {&(_tg__ZTV7S1182C38S1182C168S1182C12__A1__8S1182C22[6]),  6,6},
  {&(_tg__ZTV7S1182C5__7S1182C38S1182C168S1182C12__A1__8S1182C22[4]),  4,4},
  {&(_tg__ZTV8S1182C10__8S1182C168S1182C12__8S1182C22[8]),  8,10},
  {&(_tg__ZTV7S1182C3__8S1182C168S1182C12__8S1182C22[6]),  6,6},
  {&(_tg__ZTV7S1182C3__8S1182C168S1182C12__8S1182C22[6]),  6,6},
  {&(_tg__ZTV7S1182C3__A__8S1182C168S1182C12__8S1182C22[6]),  6,6},
  {&(_tg__ZTV7S1182C8__8S1182C12__8S1182C22[11]),  11,13},
  {&(_tg__ZTV7S1182C9__8S1182C12__8S1182C22[8]),  8,10},
  {&(_tg__ZTV7S1182C8__8S1182C12__8S1182C22[11]),  11,13},
  {&(_tg__ZTV7S1182C8__8S1182C12__8S1182C22[11]),  11,13},
  {&(_tg__ZTV8S1182C11__8S1182C12__8S1182C22[4]),  4,4},
  {&(_tg__ZTV8S1182C10__A1__8S1182C12__8S1182C22[8]),  8,10},
  {&(_tg__ZTV8S1182C14__8S1182C12__8S1182C22[11]),  11,13},
  {&(_tg__ZTV8S1182C14__8S1182C12__8S1182C22[11]),  11,13},
  {&(_tg__ZTV7S1182C38S1182C16__A1__8S1182C12__8S1182C22[6]),  6,6},
  {&(_tg__ZTV8S1182C21__8S1182C22[3]),  3,5},
  {&(_tg__ZTV8S1182C158S1182C21__A2__8S1182C22[3]),  3,3},
  {&(_ZTV8S1182C22[30]),  30,93},
  {&(_ZTV8S1182C22[54]),  54,93},
  {&(_ZTV8S1182C22[64]),  64,93},
  {&(_ZTV8S1182C22[54]),  54,93},
  {&(_ZTV8S1182C22[54]),  54,93},
  {&(_ZTV8S1182C22[70]),  70,93},
  {&(_ZTV8S1182C22[78]),  78,93},
  {&(_ZTV8S1182C22[91]),  91,93},
  {&(_ZTV8S1182C22[91]),  91,93},
  {&(_ZTV8S1182C22[38]),  38,93},
  {&(_ZTV8S1182C22[41]),  41,93},
  {&(_tg__ZTV7S1182C8__8S1182C22[10]),  10,12},
  {&(_tg__ZTV7S1182C9__7S1182C8__8S1182C22[8]),  8,10},
  {&(_tg__ZTV7S1182C8__8S1182C22[10]),  10,12},
  {&(_tg__ZTV7S1182C8__8S1182C22[10]),  10,12},
  {&(_tg__ZTV8S1182C11__7S1182C8__8S1182C22[4]),  4,4},
  {&(_tg__ZTV8S1182C10__A1__7S1182C8__8S1182C22[8]),  8,10},
  {&(_tg__ZTV7S1182C9__8S1182C22[7]),  7,9},
  {&(_tg__ZTV8S1182C107S1182C9__8S1182C22[7]),  7,9},
  {&(_tg__ZTV7S1182C58S1182C107S1182C9__A1__8S1182C22[4]),  4,4},
  {&(_tg__ZTV7S1182C3__8S1182C107S1182C9__8S1182C22[6]),  6,6},
  {&(_tg__ZTV7S1182C3__8S1182C107S1182C9__8S1182C22[6]),  6,6},
  {&(_tg__ZTV7S1182C3__7S1182C9__8S1182C22[6]),  6,6},
  {&(_tg__ZTV7S1182C3__7S1182C9__8S1182C22[6]),  6,6},
  {&(_tg__ZTV7S1182C3__8S1182C22[6]),  6,6},
  {&(_tg__ZTV7S1182C3__8S1182C22[6]),  6,6},
  {&(_tg__ZTV7S1182C5__8S1182C22[4]),  4,4},
  {&(_tg__ZTV8S1182C11__8S1182C22[4]),  4,4},
  {&(_tg__ZTV7S1182C58S1182C11__A2__8S1182C22[4]),  4,4},
  {&(_tg__ZTV8S1182C10__A1__8S1182C22[7]),  7,9},
  {&(_tg__ZTV7S1182C58S1182C10__A3__8S1182C22[4]),  4,4},
  {&(_tg__ZTV7S1182C3__8S1182C10__A1__8S1182C22[6]),  6,6},
  {&(_tg__ZTV7S1182C3__8S1182C10__A1__8S1182C22[6]),  6,6},
  {&(_tg__ZTV8S1182C14__8S1182C22[10]),  10,12},
  {&(_tg__ZTV7S1182C3__8S1182C14__8S1182C22[6]),  6,6},
  {&(_tg__ZTV8S1182C14__8S1182C22[10]),  10,12},
  {&(_tg__ZTV8S1182C11__8S1182C14__8S1182C22[4]),  4,4},
  {&(_tg__ZTV7S1182C9__8S1182C14__8S1182C22[8]),  8,10},
  {&(_tg__ZTV7S1182C3__8S1182C14__8S1182C22[6]),  6,6},
  {&(_tg__ZTV8S1182C15__A1__8S1182C22[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S1182C22[];
extern  VTBL_ENTRY _ZTV8S1182C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C22[];
static VTBL_ENTRY alt_thunk_names88[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S1182C8D0Ev,_ZThn28_N7S1182C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S1182C8D0Ev,_ZThn12_N7S1182C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S1182C8D1Ev,_ZThn28_N7S1182C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S1182C8D1Ev,_ZThn12_N7S1182C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S1182C12D0Ev,_ZThn48_N8S1182C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S1182C12D0Ev,_ZThn32_N8S1182C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S1182C12D1Ev,_ZThn48_N8S1182C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S1182C12D1Ev,_ZThn32_N8S1182C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S1182C12D0Ev,_ZThn56_N8S1182C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S1182C12D0Ev,_ZThn20_N8S1182C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S1182C12D1Ev,_ZThn56_N8S1182C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S1182C12D1Ev,_ZThn20_N8S1182C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S1182C16D0Ev,_ZThn48_N8S1182C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S1182C16D1Ev,_ZThn48_N8S1182C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C22D0Ev,_ZTv0_n32_N8S1182C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S1182C22D0Ev,_ZThn52_N8S1182C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S1182C22D0Ev,_ZThn36_N8S1182C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C22D1Ev,_ZTv0_n32_N8S1182C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S1182C22D1Ev,_ZThn52_N8S1182C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S1182C22D1Ev,_ZThn36_N8S1182C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1182C22D0Ev,_ZTv0_n44_N8S1182C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S1182C22D0Ev,_ZThn60_N8S1182C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S1182C22D0Ev,_ZThn24_N8S1182C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1182C22D1Ev,_ZTv0_n44_N8S1182C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S1182C22D1Ev,_ZThn60_N8S1182C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S1182C22D1Ev,_ZThn24_N8S1182C22D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S1182C22 = {  "S1182C22", // class name
  bases_S1182C22, 41,
  &(vtc_S1182C22[0]), // expected_vtbl_contents
  &(vtt_S1182C22[0]), // expected_vtt_contents
  ABISELECT(128,68), // object size
  NSPAIRA(_ZTI8S1182C22),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S1182C22),93, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1182C22),63, //virtual table table var
  20, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names88,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1182C20  : virtual S1182C21 , virtual S1182C9 , S1182C22 , S1182C16 , S1182C14 {
  virtual  ~S1182C20(); // _ZN8S1182C20D2Ev
  S1182C20(); // tgen
};
//SIG(-1 S1182C20) C1{ VBC2{ BC3{ m} BC4{ VBC3} vd} VBC5{ VBC6{ m} VBC3 VBC7{ BC6 VBC8{ VBC6 BC3 VBC9{ m}} VBC3} BC9 BC10{ BC3 VBC6 VBC9 BC8 VBC7 vd} vd} BC11{ BC4 VBC9 BC12{ VBC13{ VBC5 VBC14{ BC9 BC3 BC8 Fi} VBC10 vd Fi[2]} VBC15{ m} VBC16{ VBC8 VBC4 VBC14 BC9 VBC5 vd Fi} BC17{ VBC10 BC14 BC7 BC9 vd} vd} BC2 vd} BC17 BC16 vd}


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

static void Test_S1182C20()
{
  extern Class_Descriptor cd_S1182C20;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(24,25)];
    init_test(&cd_S1182C20, buf);
    S1182C20 *dp, &lv = *(dp=new (buf) S1182C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(184,96), "sizeof(S1182C20)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1182C20)");
    /*is_ambiguous_... S1182C20::S1182C21 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C21*), ABISELECT(96,48), "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C21 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C15*)(S1182C21*), 0, "S1182C20");
    /*is_ambiguous_... S1182C9::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C9*), 0, "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C3*), 0, "S1182C20");
    /*is_ambiguous_... S1182C22::S1182C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C15*)(S1182C22*), 0, "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C15*), 0, "S1182C20");
    /*is_ambiguous_... S1182C16::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C3*)(S1182C16*)(S1182C12*)(S1182C22*), 0, "S1182C20");
    check_base_class_offset(lv, (S7856C15*)(S1182C15*)(S1182C21*)(S1182C22*), 0, "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C3*)(S1182C16*), 0, "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C21 */ AMB_check_base_class_offset(lv, (S1182C15*)(S1182C21*), ABISELECT(96,48), "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C21 */ AMB_check_base_class_offset(lv, (S1182C21*), ABISELECT(96,48), "S1182C20");
    /*is_ambiguous_... S1182C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C9*), 0, "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*), 0, "S1182C20");
    /*is_ambiguous_... S1182C10::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C10*)(S1182C9*), 0, "S1182C20");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C10*)(S1182C9*), 0, "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C11 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C11*), 0, "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C10*), 0, "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C10*), 0, "S1182C20");
    check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C11*)(S1182C16*)(S1182C12*)(S1182C22*), 0, "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C11*)(S1182C16*), 0, "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C3*), ABISELECT(120,60), "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*), ABISELECT(120,60), "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*), 0, "S1182C20");
    check_base_class_offset(lv, (S7856C12*)(S1182C10*)(S1182C9*), 0, "S1182C20");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C10*)(S1182C9*), 0, "S1182C20");
    /*is_ambiguous_... S1182C22::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C22*), 0, "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C11*), 0, "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C10*), 0, "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C10*), 0, "S1182C20");
    check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C11*)(S1182C16*)(S1182C12*)(S1182C22*), 0, "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C11*)(S1182C16*), 0, "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C3 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C3*), ABISELECT(120,60), "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C14 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C14*), ABISELECT(120,60), "S1182C20");
    /*is_ambiguous_... S1182C16::S1182C3 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C3*)(S1182C16*)(S1182C12*)(S1182C22*), ABISELECT(120,60), "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C16 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C3*)(S1182C16*), ABISELECT(120,60), "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C14 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C14*), ABISELECT(120,60), "S1182C20");
    check_base_class_offset(lv, (S1182C3*)(S1182C9*), ABISELECT(120,60), "S1182C20");
    check_base_class_offset(lv, (S1182C3*)(S1182C10*)(S1182C9*), ABISELECT(120,60), "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C10 */ AMB_check_base_class_offset(lv, (S1182C3*)(S1182C10*), ABISELECT(120,60), "S1182C20");
    /*is_ambiguous_... S1182C9::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C9*), ABISELECT(104,52), "S1182C20");
    /*is_ambiguous_... S1182C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C10*)(S1182C9*), ABISELECT(112,56), "S1182C20");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C10*)(S1182C9*), ABISELECT(104,52), "S1182C20");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C10*)(S1182C9*), ABISELECT(104,52), "S1182C20");
    check_base_class_offset(lv, (S1182C10*)(S1182C9*), ABISELECT(104,52), "S1182C20");
    check_base_class_offset(lv, (S1182C9*), ABISELECT(104,52), "S1182C20");
    check_base_class_offset(lv, (S1182C9*)(S1182C8*), ABISELECT(104,52), "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C14 */ AMB_check_base_class_offset(lv, (S1182C9*)(S1182C14*), ABISELECT(104,52), "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C14 */ AMB_check_base_class_offset(lv, (S1182C9*)(S1182C14*), ABISELECT(104,52), "S1182C20");
    /*is_ambiguous_... S1182C22::S1182C15 */ AMB_check_base_class_offset(lv, (S1182C15*)(S1182C22*), 0, "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C11*), ABISELECT(136,72), "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C11*), ABISELECT(144,76), "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C11*), ABISELECT(136,72), "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C11 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C11*), ABISELECT(136,72), "S1182C20");
    check_base_class_offset(lv, (S1182C11*)(S1182C8*), ABISELECT(136,72), "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C14 */ AMB_check_base_class_offset(lv, (S1182C11*)(S1182C14*), ABISELECT(136,72), "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C14 */ AMB_check_base_class_offset(lv, (S1182C11*)(S1182C14*), ABISELECT(136,72), "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C10*), ABISELECT(160,84), "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C10*), ABISELECT(152,80), "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C10 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C10*), ABISELECT(152,80), "S1182C20");
    /*is_ambiguous_... S1182C8::S1182C10 */ AMB_check_base_class_offset(lv, (S1182C10*)(S1182C8*), ABISELECT(152,80), "S1182C20");
    check_base_class_offset(lv, (S1182C10*)(S1182C16*)(S1182C12*)(S1182C22*), ABISELECT(152,80), "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C16 */ AMB_check_base_class_offset(lv, (S1182C10*)(S1182C16*), ABISELECT(152,80), "S1182C20");
    check_base_class_offset(lv, (S1182C8*)(S1182C12*)(S1182C22*), ABISELECT(120,60), "S1182C20");
    check_base_class_offset(lv, (S7856C9_nt*)(S1182C12*)(S1182C22*), 0, "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C14 */ AMB_check_base_class_offset(lv, (S1182C15*)(S1182C14*), ABISELECT(168,88), "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C14 */ AMB_check_base_class_offset(lv, (S1182C15*)(S1182C14*), ABISELECT(168,88), "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C14 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C14*), ABISELECT(168,88), "S1182C20");
    check_base_class_offset(lv, (S1182C14*)(S1182C12*)(S1182C22*), ABISELECT(168,88), "S1182C20");
    /*is_ambiguous_... S1182C11::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C11*)(S1182C16*)(S1182C12*)(S1182C22*), ABISELECT(8,4), "S1182C20");
    /*is_ambiguous_... S1182C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C11*)(S1182C16*)(S1182C12*)(S1182C22*), ABISELECT(16,8), "S1182C20");
    check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C11*)(S1182C16*)(S1182C12*)(S1182C22*), ABISELECT(8,4), "S1182C20");
    check_base_class_offset(lv, (S1182C5*)(S1182C11*)(S1182C16*)(S1182C12*)(S1182C22*), ABISELECT(8,4), "S1182C20");
    check_base_class_offset(lv, (S1182C11*)(S1182C16*)(S1182C12*)(S1182C22*), ABISELECT(8,4), "S1182C20");
    /*is_ambiguous_... S1182C16::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C3*)(S1182C16*)(S1182C12*)(S1182C22*), ABISELECT(24,12), "S1182C20");
    /*is_ambiguous_... S1182C16::S1182C3 */ AMB_check_base_class_offset(lv, (S1182C3*)(S1182C16*)(S1182C12*)(S1182C22*), ABISELECT(24,12), "S1182C20");
    /*is_ambiguous_... S1182C16::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C16*)(S1182C12*)(S1182C22*), ABISELECT(32,16), "S1182C20");
    check_base_class_offset(lv, (S1182C16*)(S1182C12*)(S1182C22*), ABISELECT(8,4), "S1182C20");
    check_base_class_offset(lv, (S1182C12*)(S1182C22*), ABISELECT(8,4), "S1182C20");
    /*is_ambiguous_... S1182C21::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C21*)(S1182C22*), ABISELECT(40,20), "S1182C20");
    check_base_class_offset(lv, (S1182C15*)(S1182C21*)(S1182C22*), ABISELECT(40,20), "S1182C20");
    check_base_class_offset(lv, (S1182C21*)(S1182C22*), ABISELECT(40,20), "S1182C20");
    check_base_class_offset(lv, (S1182C22*), 0, "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C11*)(S1182C16*), ABISELECT(48,24), "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C11*)(S1182C16*), ABISELECT(56,28), "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C11*)(S1182C16*), ABISELECT(48,24), "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C16 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C11*)(S1182C16*), ABISELECT(48,24), "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C16 */ AMB_check_base_class_offset(lv, (S1182C11*)(S1182C16*), ABISELECT(48,24), "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C3*)(S1182C16*), ABISELECT(64,32), "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C16 */ AMB_check_base_class_offset(lv, (S1182C3*)(S1182C16*), ABISELECT(64,32), "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C16*), ABISELECT(72,36), "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C16 */ AMB_check_base_class_offset(lv, (S1182C16*), ABISELECT(48,24), "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C14 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C14*), ABISELECT(80,40), "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C14 */ AMB_check_base_class_offset(lv, (S1182C14*), ABISELECT(80,40), "S1182C20");
    test_class_info(&lv, &cd_S1182C20);
    dp->~S1182C20();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1182C20(Test_S1182C20, "S1182C20", ABISELECT(184,96));

#else // __cplusplus

extern void _ZN8S1182C20C1Ev();
extern void _ZN8S1182C20D2Ev();
Name_Map name_map_S1182C20[] = {
  NSPAIR(_ZN8S1182C20C1Ev),
  NSPAIR(_ZN8S1182C20D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C15;
extern VTBL_ENTRY _ZTI8S1182C15[];
extern  VTBL_ENTRY _ZTV8S1182C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C15[];
extern Class_Descriptor cd_S1182C21;
extern VTBL_ENTRY _ZTI8S1182C21[];
extern  VTBL_ENTRY _ZTV8S1182C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C21[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C3;
extern VTBL_ENTRY _ZTI7S1182C3[];
extern  VTBL_ENTRY _ZTV7S1182C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C3[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C10;
extern VTBL_ENTRY _ZTI8S1182C10[];
extern  VTBL_ENTRY _ZTV8S1182C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C10[];
extern Class_Descriptor cd_S1182C9;
extern VTBL_ENTRY _ZTI7S1182C9[];
extern  VTBL_ENTRY _ZTV7S1182C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C9[];
extern Class_Descriptor cd_S1182C15;
extern VTBL_ENTRY _ZTI8S1182C15[];
extern  VTBL_ENTRY _ZTV8S1182C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C11;
extern VTBL_ENTRY _ZTI8S1182C11[];
extern  VTBL_ENTRY _ZTV8S1182C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C11[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C10;
extern VTBL_ENTRY _ZTI8S1182C10[];
extern  VTBL_ENTRY _ZTV8S1182C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C10[];
extern Class_Descriptor cd_S1182C8;
extern VTBL_ENTRY _ZTI7S1182C8[];
extern  VTBL_ENTRY _ZTV7S1182C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C8[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S1182C15;
extern VTBL_ENTRY _ZTI8S1182C15[];
extern  VTBL_ENTRY _ZTV8S1182C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1182C14;
extern VTBL_ENTRY _ZTI8S1182C14[];
extern  VTBL_ENTRY _ZTV8S1182C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C14[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C11;
extern VTBL_ENTRY _ZTI8S1182C11[];
extern  VTBL_ENTRY _ZTV8S1182C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C11[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S1182C3;
extern VTBL_ENTRY _ZTI7S1182C3[];
extern  VTBL_ENTRY _ZTV7S1182C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C3[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1182C16;
extern VTBL_ENTRY _ZTI8S1182C16[];
extern  VTBL_ENTRY _ZTV8S1182C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C16[];
extern Class_Descriptor cd_S1182C12;
extern VTBL_ENTRY _ZTI8S1182C12[];
extern  VTBL_ENTRY _ZTV8S1182C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C15;
extern VTBL_ENTRY _ZTI8S1182C15[];
extern  VTBL_ENTRY _ZTV8S1182C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C15[];
extern Class_Descriptor cd_S1182C21;
extern VTBL_ENTRY _ZTI8S1182C21[];
extern  VTBL_ENTRY _ZTV8S1182C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C21[];
extern Class_Descriptor cd_S1182C22;
extern VTBL_ENTRY _ZTI8S1182C22[];
extern  VTBL_ENTRY _ZTV8S1182C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C22[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C11;
extern VTBL_ENTRY _ZTI8S1182C11[];
extern  VTBL_ENTRY _ZTV8S1182C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C11[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S1182C3;
extern VTBL_ENTRY _ZTI7S1182C3[];
extern  VTBL_ENTRY _ZTV7S1182C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C3[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1182C16;
extern VTBL_ENTRY _ZTI8S1182C16[];
extern  VTBL_ENTRY _ZTV8S1182C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C16[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1182C14;
extern VTBL_ENTRY _ZTI8S1182C14[];
extern  VTBL_ENTRY _ZTV8S1182C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C14[];
static Base_Class bases_S1182C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S1182C15,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1182C21,    ABISELECT(96,48), //bcp->offset
    72, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    66, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S1182C5,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    54, //bcp->index_in_construction_vtbl_array
    77, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S1182C3,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(112,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S1182C10,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    69, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S1182C9,    ABISELECT(104,52), //bcp->offset
    78, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1182C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(136,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(144,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(136,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(136,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    85, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S1182C11,    ABISELECT(136,72), //bcp->offset
    101, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    57, //bcp->index_in_construction_vtbl_array
    84, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(160,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(152,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(152,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    87, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S1182C10,    ABISELECT(152,80), //bcp->offset
    105, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    58, //bcp->index_in_construction_vtbl_array
    86, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S1182C8,    ABISELECT(120,60), //bcp->offset
    88, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    56, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    40, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    40, //immediately_derived
  0, 1},
  {&cd_S1182C15,    ABISELECT(168,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    60, //bcp->index_in_construction_vtbl_array
    96, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    30, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(168,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S1182C14,    ABISELECT(168,88), //bcp->offset
    115, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    59, //bcp->index_in_construction_vtbl_array
    90, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    40, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S1182C11,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S1182C3,    ABISELECT(24,12), //bcp->offset
    33, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    61, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S1182C16,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S1182C12,    ABISELECT(8,4), //bcp->offset
    17, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    55, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S1182C15,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S1182C21,    ABISELECT(40,20), //bcp->offset
    39, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    62, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S1182C22,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S1182C11,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    53, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S1182C3,    ABISELECT(64,32), //bcp->offset
    54, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    64, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    53, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(72,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    53, //immediately_derived
  0, 0},
  {&cd_S1182C16,    ABISELECT(48,24), //bcp->offset
    44, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    63, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S1182C14,    ABISELECT(80,40), //bcp->offset
    60, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    65, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S1182C20[];
extern void _ZN8S1182C20D1Ev();
extern void _ZN8S1182C20D0Ev();
extern void ABISELECT(_ZThn8_N8S1182C20D1Ev,_ZThn4_N8S1182C20D1Ev)();
extern void ABISELECT(_ZThn8_N8S1182C20D0Ev,_ZThn4_N8S1182C20D0Ev)();
extern void ABISELECT(_ZThn40_N8S1182C20D1Ev,_ZThn20_N8S1182C20D1Ev)();
extern void ABISELECT(_ZThn40_N8S1182C20D0Ev,_ZThn20_N8S1182C20D0Ev)();
extern void ABISELECT(_ZThn48_N8S1182C20D1Ev,_ZThn24_N8S1182C20D1Ev)();
extern void ABISELECT(_ZThn48_N8S1182C20D0Ev,_ZThn24_N8S1182C20D0Ev)();
extern void ABISELECT(_ZThn80_N8S1182C20D1Ev,_ZThn40_N8S1182C20D1Ev)();
extern void ABISELECT(_ZThn80_N8S1182C20D0Ev,_ZThn40_N8S1182C20D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S1182C20D1Ev,_ZTv0_n16_N8S1182C20D1Ev)();
extern void ABISELECT(_ZThn96_N8S1182C20D1Ev,_ZThn48_N8S1182C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S1182C20D0Ev,_ZTv0_n16_N8S1182C20D0Ev)();
extern void ABISELECT(_ZThn96_N8S1182C20D0Ev,_ZThn48_N8S1182C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C20D1Ev,_ZTv0_n32_N8S1182C20D1Ev)();
extern void ABISELECT(_ZThn104_N8S1182C20D1Ev,_ZThn52_N8S1182C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C20D0Ev,_ZTv0_n32_N8S1182C20D0Ev)();
extern void ABISELECT(_ZThn104_N8S1182C20D0Ev,_ZThn52_N8S1182C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1182C20D1Ev,_ZTv0_n44_N8S1182C20D1Ev)();
extern void ABISELECT(_ZThn120_N8S1182C20D1Ev,_ZThn60_N8S1182C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1182C20D0Ev,_ZTv0_n44_N8S1182C20D0Ev)();
extern void ABISELECT(_ZThn120_N8S1182C20D0Ev,_ZThn60_N8S1182C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C20D1Ev,_ZTv0_n32_N8S1182C20D1Ev)();
extern void ABISELECT(_ZThn152_N8S1182C20D1Ev,_ZThn80_N8S1182C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C20D0Ev,_ZTv0_n32_N8S1182C20D0Ev)();
extern void ABISELECT(_ZThn152_N8S1182C20D0Ev,_ZThn80_N8S1182C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1182C20D1Ev,_ZTv0_n44_N8S1182C20D1Ev)();
extern void ABISELECT(_ZThn168_N8S1182C20D1Ev,_ZThn88_N8S1182C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1182C20D0Ev,_ZTv0_n44_N8S1182C20D0Ev)();
extern void ABISELECT(_ZThn168_N8S1182C20D0Ev,_ZThn88_N8S1182C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S1182C20[] = {
  ABISELECT(96,48),
  ABISELECT(168,88),
  ABISELECT(168,88),
  0,
  ABISELECT(152,80),
  ABISELECT(136,72),
  ABISELECT(120,60),
  ABISELECT(120,60),
  0,
  ABISELECT(104,52),
  ABISELECT(120,60),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C20[0]),
  (VTBL_ENTRY)&_ZN8S1182C20D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C20D0Ev,
  ABISELECT(160,84),
  ABISELECT(160,84),
  ABISELECT(-8,-4),
  ABISELECT(128,68),
  ABISELECT(96,48),
  ABISELECT(112,56),
  ABISELECT(-8,-4),
  ABISELECT(112,56),
  ABISELECT(112,56),
  ABISELECT(144,76),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S1182C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S1182C20D1Ev,_ZThn4_N8S1182C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S1182C20D0Ev,_ZThn4_N8S1182C20D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(96,48),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S1182C20[0]),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S1182C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S1182C20D1Ev,_ZThn20_N8S1182C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S1182C20D0Ev,_ZThn20_N8S1182C20D0Ev),
  ABISELECT(-48,-24),
  ABISELECT(72,36),
  ABISELECT(72,36),
  ABISELECT(104,56),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S1182C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S1182C20D1Ev,_ZThn24_N8S1182C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S1182C20D0Ev,_ZThn24_N8S1182C20D0Ev),
  ABISELECT(-64,-32),
  ABISELECT(56,28),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S1182C20[0]),
  ABISELECT(40,20),
  ABISELECT(24,12),
  ABISELECT(56,32),
  ABISELECT(88,48),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(40,20),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S1182C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S1182C20D1Ev,_ZThn40_N8S1182C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S1182C20D0Ev,_ZThn40_N8S1182C20D0Ev),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S1182C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S1182C20D1Ev,_ZTv0_n16_N8S1182C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S1182C20D0Ev,_ZTv0_n16_N8S1182C20D0Ev),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S1182C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C20D1Ev,_ZTv0_n32_N8S1182C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C20D0Ev,_ZTv0_n32_N8S1182C20D0Ev),
  ABISELECT(-120,-60),
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-120,-60),
  0,
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI8S1182C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C20D1Ev,_ZTv0_n44_N8S1182C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C20D0Ev,_ZTv0_n44_N8S1182C20D0Ev),
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI8S1182C20[0]),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  (VTBL_ENTRY)&(_ZTI8S1182C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C20D1Ev,_ZTv0_n32_N8S1182C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C20D0Ev,_ZTv0_n32_N8S1182C20D0Ev),
  ABISELECT(-168,-88),
  ABISELECT(-48,-28),
  ABISELECT(-64,-36),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-168,-88),
  ABISELECT(-168,-88),
  ABISELECT(-48,-28),
  ABISELECT(-168,-88),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S1182C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C20D1Ev,_ZTv0_n44_N8S1182C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C20D0Ev,_ZTv0_n44_N8S1182C20D0Ev),
};
extern VTBL_ENTRY _ZTV8S1182C20[];
extern void _ZN8S1182C22D1Ev();
extern void _ZN8S1182C22D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C22__8S1182C20[] = {
  ABISELECT(168,88),
  ABISELECT(168,88),
  0,
  ABISELECT(152,80),
  ABISELECT(136,72),
  ABISELECT(120,60),
  ABISELECT(120,60),
  0,
  ABISELECT(104,52),
  ABISELECT(120,60),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C22[0]),
  (VTBL_ENTRY)&_ZN8S1182C22D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C22D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1182C158S1182C22__A1__8S1182C20[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C15[0]),
};
extern void _ZN8S1182C12D1Ev();
extern void _ZN8S1182C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C128S1182C22__8S1182C20[] = {
  ABISELECT(160,84),
  ABISELECT(160,84),
  ABISELECT(-8,-4),
  ABISELECT(128,68),
  ABISELECT(96,48),
  ABISELECT(112,56),
  ABISELECT(-8,-4),
  ABISELECT(112,56),
  ABISELECT(112,56),
  ABISELECT(144,76),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&_ZN8S1182C12D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C12D0Ev,
};
extern void _ZN8S1182C16D1Ev();
extern void _ZN8S1182C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C168S1182C128S1182C22__8S1182C20[] = {
  ABISELECT(-8,-4),
  ABISELECT(112,56),
  ABISELECT(112,56),
  ABISELECT(144,76),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
  (VTBL_ENTRY)&_ZN8S1182C16D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1182C118S1182C168S1182C128S1182C22__A1__8S1182C20[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C11[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C118S1182C168S1182C128S1182C22__A4__8S1182C20[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C168S1182C128S1182C22__A1__8S1182C20[] = {
  ABISELECT(-24,-12),
  ABISELECT(96,48),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__7S1182C38S1182C168S1182C128S1182C22__A1__8S1182C20[] = {
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev)();
extern void ABISELECT(_ZThn144_N8S1182C16D1Ev,_ZThn76_N8S1182C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev)();
extern void ABISELECT(_ZThn144_N8S1182C16D0Ev,_ZThn76_N8S1182C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C10__8S1182C168S1182C128S1182C22__8S1182C20[] = {
  ABISELECT(-144,-76),
  ABISELECT(-152,-80),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(-144,-76),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C168S1182C128S1182C22__8S1182C20[] = {
  ABISELECT(-120,-60),
  0,
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__A__8S1182C168S1182C128S1182C22__8S1182C20[] = {
  ABISELECT(-24,-12),
  ABISELECT(96,48),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev)();
extern void ABISELECT(_ZThn112_N8S1182C12D1Ev,_ZThn56_N8S1182C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev)();
extern void ABISELECT(_ZThn112_N8S1182C12D0Ev,_ZThn56_N8S1182C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1182C8__8S1182C128S1182C22__8S1182C20[] = {
  ABISELECT(-112,-56),
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-120,-60),
  0,
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev)();
extern void ABISELECT(_ZThn96_N8S1182C12D1Ev,_ZThn48_N8S1182C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev)();
extern void ABISELECT(_ZThn96_N8S1182C12D0Ev,_ZThn48_N8S1182C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1182C9__8S1182C128S1182C22__8S1182C20[] = {
  ABISELECT(-96,-48),
  ABISELECT(-104,-52),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__8S1182C128S1182C22__8S1182C20[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev)();
extern void ABISELECT(_ZThn144_N8S1182C12D1Ev,_ZThn76_N8S1182C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev)();
extern void ABISELECT(_ZThn144_N8S1182C12D0Ev,_ZThn76_N8S1182C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C10__A1__8S1182C128S1182C22__8S1182C20[] = {
  ABISELECT(-144,-76),
  ABISELECT(-152,-80),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(-144,-76),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev)();
extern void ABISELECT(_ZThn160_N8S1182C12D1Ev,_ZThn84_N8S1182C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev)();
extern void ABISELECT(_ZThn160_N8S1182C12D0Ev,_ZThn84_N8S1182C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C14__8S1182C128S1182C22__8S1182C20[] = {
  ABISELECT(-160,-84),
  ABISELECT(-48,-28),
  ABISELECT(-64,-36),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-168,-88),
  ABISELECT(-168,-88),
  ABISELECT(-48,-28),
  ABISELECT(-168,-88),
  ABISELECT(-160,-84),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C16__A1__8S1182C128S1182C22__8S1182C20[] = {
  ABISELECT(-24,-12),
  ABISELECT(96,48),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
};
extern void _ZN8S1182C21D1Ev();
extern void _ZN8S1182C21D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C218S1182C22__A1__8S1182C20[] = {
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C21[0]),
  (VTBL_ENTRY)&_ZN8S1182C21D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C21D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1182C158S1182C218S1182C22__A3__8S1182C20[] = {
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C15[0]),
};
extern void ABISELECT(_ZThn8_N8S1182C22D1Ev,_ZThn4_N8S1182C22D1Ev)();
extern void ABISELECT(_ZThn8_N8S1182C22D0Ev,_ZThn4_N8S1182C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1182C12__8S1182C22__8S1182C20[] = {
  ABISELECT(160,84),
  ABISELECT(160,84),
  ABISELECT(-8,-4),
  ABISELECT(128,68),
  ABISELECT(96,48),
  ABISELECT(112,56),
  ABISELECT(-8,-4),
  ABISELECT(112,56),
  ABISELECT(112,56),
  ABISELECT(144,76),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S1182C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S1182C22D1Ev,_ZThn4_N8S1182C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S1182C22D0Ev,_ZThn4_N8S1182C22D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S1182C22D1Ev,_ZTv0_n44_N8S1182C22D1Ev)();
extern void ABISELECT(_ZThn120_N8S1182C22D1Ev,_ZThn60_N8S1182C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1182C22D0Ev,_ZTv0_n44_N8S1182C22D0Ev)();
extern void ABISELECT(_ZThn120_N8S1182C22D0Ev,_ZThn60_N8S1182C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1182C8__8S1182C22__8S1182C20[] = {
  ABISELECT(-120,-60),
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-120,-60),
  0,
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI8S1182C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C22D1Ev,_ZTv0_n44_N8S1182C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C22D0Ev,_ZTv0_n44_N8S1182C22D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C22D1Ev,_ZTv0_n32_N8S1182C22D1Ev)();
extern void ABISELECT(_ZThn104_N8S1182C22D1Ev,_ZThn52_N8S1182C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C22D0Ev,_ZTv0_n32_N8S1182C22D0Ev)();
extern void ABISELECT(_ZThn104_N8S1182C22D0Ev,_ZThn52_N8S1182C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1182C9__8S1182C22__8S1182C20[] = {
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S1182C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C22D1Ev,_ZTv0_n32_N8S1182C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C22D0Ev,_ZTv0_n32_N8S1182C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__8S1182C22__8S1182C20[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI8S1182C22[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C22D1Ev,_ZTv0_n32_N8S1182C22D1Ev)();
extern void ABISELECT(_ZThn152_N8S1182C22D1Ev,_ZThn80_N8S1182C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C22D0Ev,_ZTv0_n32_N8S1182C22D0Ev)();
extern void ABISELECT(_ZThn152_N8S1182C22D0Ev,_ZThn80_N8S1182C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C10__A1__8S1182C22__8S1182C20[] = {
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  (VTBL_ENTRY)&(_ZTI8S1182C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C22D1Ev,_ZTv0_n32_N8S1182C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C22D0Ev,_ZTv0_n32_N8S1182C22D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S1182C22D1Ev,_ZTv0_n44_N8S1182C22D1Ev)();
extern void ABISELECT(_ZThn168_N8S1182C22D1Ev,_ZThn88_N8S1182C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1182C22D0Ev,_ZTv0_n44_N8S1182C22D0Ev)();
extern void ABISELECT(_ZThn168_N8S1182C22D0Ev,_ZThn88_N8S1182C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C14__8S1182C22__8S1182C20[] = {
  ABISELECT(-168,-88),
  ABISELECT(-48,-28),
  ABISELECT(-64,-36),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-168,-88),
  ABISELECT(-168,-88),
  ABISELECT(-48,-28),
  ABISELECT(-168,-88),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S1182C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C22D1Ev,_ZTv0_n44_N8S1182C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C22D0Ev,_ZTv0_n44_N8S1182C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C168S1182C12__A1__8S1182C22__8S1182C20[] = {
  ABISELECT(-24,-12),
  ABISELECT(96,48),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S1182C22[0]),
};
extern void ABISELECT(_ZThn40_N8S1182C22D1Ev,_ZThn20_N8S1182C22D1Ev)();
extern void ABISELECT(_ZThn40_N8S1182C22D0Ev,_ZThn20_N8S1182C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1182C21__8S1182C22__8S1182C20[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S1182C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S1182C22D1Ev,_ZThn20_N8S1182C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S1182C22D0Ev,_ZThn20_N8S1182C22D0Ev),
};
extern void _ZN8S1182C16D1Ev();
extern void _ZN8S1182C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C16__A1__8S1182C20[] = {
  ABISELECT(-48,-24),
  ABISELECT(72,36),
  ABISELECT(72,36),
  ABISELECT(104,56),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
  (VTBL_ENTRY)&_ZN8S1182C16D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1182C118S1182C16__A2__8S1182C20[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C11[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C118S1182C16__A5__8S1182C20[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C16__A2__8S1182C20[] = {
  ABISELECT(-64,-32),
  ABISELECT(56,28),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__7S1182C38S1182C16__A2__8S1182C20[] = {
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev)();
extern void ABISELECT(_ZThn104_N8S1182C16D1Ev,_ZThn56_N8S1182C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev)();
extern void ABISELECT(_ZThn104_N8S1182C16D0Ev,_ZThn56_N8S1182C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C10__8S1182C16__A1__8S1182C20[] = {
  ABISELECT(-104,-56),
  ABISELECT(-152,-80),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C16__A1__8S1182C20[] = {
  ABISELECT(-120,-60),
  0,
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__A__8S1182C16__A1__8S1182C20[] = {
  ABISELECT(-64,-32),
  ABISELECT(56,28),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
extern void _ZN8S1182C14D1Ev();
extern void _ZN8S1182C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C14__A__8S1182C20[] = {
  ABISELECT(40,20),
  ABISELECT(24,12),
  ABISELECT(56,32),
  ABISELECT(88,48),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(40,20),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
  (VTBL_ENTRY)&_ZN8S1182C14D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C14D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C14__A__8S1182C20[] = {
  ABISELECT(-120,-60),
  0,
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1182C15__8S1182C14__A__8S1182C20[] = {
  ABISELECT(-168,-88),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__8S1182C14__A__8S1182C20[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C14D1Ev,_ZTv0_n32_N8S1182C14D1Ev)();
extern void ABISELECT(_ZThn24_N8S1182C14D1Ev,_ZThn12_N8S1182C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C14D0Ev,_ZTv0_n32_N8S1182C14D0Ev)();
extern void ABISELECT(_ZThn24_N8S1182C14D0Ev,_ZThn12_N8S1182C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1182C9__8S1182C14__A__8S1182C20[] = {
  ABISELECT(-24,-12),
  ABISELECT(-104,-52),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C14D1Ev,_ZTv0_n32_N8S1182C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C14D0Ev,_ZTv0_n32_N8S1182C14D0Ev),
};
extern void _ZN8S1182C21D1Ev();
extern void _ZN8S1182C21D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C21__8S1182C20[] = {
  ABISELECT(-96,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C21[0]),
  (VTBL_ENTRY)&_ZN8S1182C21D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C21D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1182C158S1182C21__8S1182C20[] = {
  ABISELECT(-96,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C15[0]),
};
extern void _ZN7S1182C9D1Ev();
extern void _ZN7S1182C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1182C9__8S1182C20[] = {
  ABISELECT(-104,-52),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C9[0]),
  (VTBL_ENTRY)&_ZN7S1182C9D1Ev,
  (VTBL_ENTRY)&_ZN7S1182C9D0Ev,
};
extern void _ZN8S1182C10D1Ev();
extern void _ZN8S1182C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C107S1182C9__8S1182C20[] = {
  ABISELECT(-104,-52),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
  (VTBL_ENTRY)&_ZN8S1182C10D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C10D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C107S1182C9__A1__8S1182C20[] = {
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C107S1182C9__8S1182C20[] = {
  ABISELECT(-120,-60),
  0,
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__7S1182C9__8S1182C20[] = {
  ABISELECT(-120,-60),
  0,
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S1182C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C20[] = {
  ABISELECT(-120,-60),
  0,
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__8S1182C20[] = {
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
extern void _ZN7S1182C8D1Ev();
extern void _ZN7S1182C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1182C8__8S1182C20[] = {
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-120,-60),
  0,
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
  (VTBL_ENTRY)&_ZN7S1182C8D1Ev,
  (VTBL_ENTRY)&_ZN7S1182C8D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S1182C9__7S1182C8__8S1182C20[] = {
  ABISELECT(16,8),
  ABISELECT(-104,-52),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__7S1182C8__8S1182C20[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev)();
extern void ABISELECT(_ZThn32_N7S1182C8D1Ev,_ZThn20_N7S1182C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev)();
extern void ABISELECT(_ZThn32_N7S1182C8D0Ev,_ZThn20_N7S1182C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C10__A1__7S1182C8__8S1182C20[] = {
  ABISELECT(-32,-20),
  ABISELECT(-152,-80),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__8S1182C20[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C11[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C11__A2__8S1182C20[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
extern void _ZN8S1182C10D1Ev();
extern void _ZN8S1182C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C10__A1__8S1182C20[] = {
  ABISELECT(-152,-80),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
  (VTBL_ENTRY)&_ZN8S1182C10D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C10D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C10__A3__8S1182C20[] = {
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C10__A1__8S1182C20[] = {
  ABISELECT(-120,-60),
  0,
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
};
extern void _ZN8S1182C14D1Ev();
extern void _ZN8S1182C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C14__8S1182C20[] = {
  ABISELECT(-48,-28),
  ABISELECT(-64,-36),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-168,-88),
  ABISELECT(-168,-88),
  ABISELECT(-48,-28),
  ABISELECT(-168,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
  (VTBL_ENTRY)&_ZN8S1182C14D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C14D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C14__8S1182C20[] = {
  ABISELECT(-120,-60),
  0,
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__8S1182C14__8S1182C20[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C14D1Ev,_ZTv0_n32_N8S1182C14D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1182C14D0Ev,_ZTv0_n32_N8S1182C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S1182C9__8S1182C14__8S1182C20[] = {
  ABISELECT(64,36),
  ABISELECT(-104,-52),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C14D1Ev,_ZTv0_n32_N8S1182C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C14D0Ev,_ZTv0_n32_N8S1182C14D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1182C15__A2__8S1182C20[] = {
  ABISELECT(-168,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C15[0]),
};
static  VTT_ENTRY vtt_S1182C20[] = {
  {&(_ZTV8S1182C20[15]),  15,128},
  {&(_tg__ZTV8S1182C22__8S1182C20[14]),  14,16},
  {&(_tg__ZTV8S1182C158S1182C22__A1__8S1182C20[3]),  3,3},
  {&(_tg__ZTV8S1182C128S1182C22__8S1182C20[14]),  14,16},
  {&(_tg__ZTV8S1182C168S1182C128S1182C22__8S1182C20[8]),  8,10},
  {&(_tg__ZTV8S1182C118S1182C168S1182C128S1182C22__A1__8S1182C20[4]),  4,4},
  {&(_tg__ZTV7S1182C58S1182C118S1182C168S1182C128S1182C22__A4__8S1182C20[4]),  4,4},
  {&(_tg__ZTV7S1182C38S1182C168S1182C128S1182C22__A1__8S1182C20[6]),  6,6},
  {&(_tg__ZTV7S1182C5__7S1182C38S1182C168S1182C128S1182C22__A1__8S1182C20[4]),  4,4},
  {&(_tg__ZTV8S1182C10__8S1182C168S1182C128S1182C22__8S1182C20[8]),  8,10},
  {&(_tg__ZTV7S1182C3__8S1182C168S1182C128S1182C22__8S1182C20[6]),  6,6},
  {&(_tg__ZTV7S1182C3__8S1182C168S1182C128S1182C22__8S1182C20[6]),  6,6},
  {&(_tg__ZTV7S1182C3__A__8S1182C168S1182C128S1182C22__8S1182C20[6]),  6,6},
  {&(_tg__ZTV7S1182C8__8S1182C128S1182C22__8S1182C20[11]),  11,13},
  {&(_tg__ZTV7S1182C9__8S1182C128S1182C22__8S1182C20[8]),  8,10},
  {&(_tg__ZTV7S1182C8__8S1182C128S1182C22__8S1182C20[11]),  11,13},
  {&(_tg__ZTV7S1182C8__8S1182C128S1182C22__8S1182C20[11]),  11,13},
  {&(_tg__ZTV8S1182C11__8S1182C128S1182C22__8S1182C20[4]),  4,4},
  {&(_tg__ZTV8S1182C10__A1__8S1182C128S1182C22__8S1182C20[8]),  8,10},
  {&(_tg__ZTV8S1182C14__8S1182C128S1182C22__8S1182C20[11]),  11,13},
  {&(_tg__ZTV8S1182C14__8S1182C128S1182C22__8S1182C20[11]),  11,13},
  {&(_tg__ZTV7S1182C38S1182C16__A1__8S1182C128S1182C22__8S1182C20[6]),  6,6},
  {&(_tg__ZTV8S1182C218S1182C22__A1__8S1182C20[3]),  3,5},
  {&(_tg__ZTV8S1182C158S1182C218S1182C22__A3__8S1182C20[3]),  3,3},
  {&(_tg__ZTV8S1182C12__8S1182C22__8S1182C20[14]),  14,16},
  {&(_tg__ZTV7S1182C8__8S1182C22__8S1182C20[11]),  11,13},
  {&(_tg__ZTV7S1182C9__8S1182C22__8S1182C20[8]),  8,10},
  {&(_tg__ZTV7S1182C8__8S1182C22__8S1182C20[11]),  11,13},
  {&(_tg__ZTV7S1182C8__8S1182C22__8S1182C20[11]),  11,13},
  {&(_tg__ZTV8S1182C11__8S1182C22__8S1182C20[4]),  4,4},
  {&(_tg__ZTV8S1182C10__A1__8S1182C22__8S1182C20[8]),  8,10},
  {&(_tg__ZTV8S1182C14__8S1182C22__8S1182C20[11]),  11,13},
  {&(_tg__ZTV8S1182C14__8S1182C22__8S1182C20[11]),  11,13},
  {&(_tg__ZTV7S1182C38S1182C168S1182C12__A1__8S1182C22__8S1182C20[6]),  6,6},
  {&(_tg__ZTV8S1182C21__8S1182C22__8S1182C20[3]),  3,5},
  {&(_tg__ZTV8S1182C16__A1__8S1182C20[8]),  8,10},
  {&(_tg__ZTV8S1182C118S1182C16__A2__8S1182C20[4]),  4,4},
  {&(_tg__ZTV7S1182C58S1182C118S1182C16__A5__8S1182C20[4]),  4,4},
  {&(_tg__ZTV7S1182C38S1182C16__A2__8S1182C20[6]),  6,6},
  {&(_tg__ZTV7S1182C5__7S1182C38S1182C16__A2__8S1182C20[4]),  4,4},
  {&(_tg__ZTV8S1182C10__8S1182C16__A1__8S1182C20[8]),  8,10},
  {&(_tg__ZTV7S1182C3__8S1182C16__A1__8S1182C20[6]),  6,6},
  {&(_tg__ZTV7S1182C3__8S1182C16__A1__8S1182C20[6]),  6,6},
  {&(_tg__ZTV7S1182C3__A__8S1182C16__A1__8S1182C20[6]),  6,6},
  {&(_tg__ZTV8S1182C14__A__8S1182C20[10]),  10,12},
  {&(_tg__ZTV7S1182C3__8S1182C14__A__8S1182C20[6]),  6,6},
  {&(_tg__ZTV8S1182C15__8S1182C14__A__8S1182C20[3]),  3,3},
  {&(_tg__ZTV8S1182C11__8S1182C14__A__8S1182C20[4]),  4,4},
  {&(_tg__ZTV7S1182C9__8S1182C14__A__8S1182C20[8]),  8,10},
  {&(_tg__ZTV7S1182C3__8S1182C14__A__8S1182C20[6]),  6,6},
  {&(_ZTV8S1182C20[76]),  76,128},
  {&(_ZTV8S1182C20[86]),  86,128},
  {&(_ZTV8S1182C20[99]),  99,128},
  {&(_ZTV8S1182C20[99]),  99,128},
  {&(_ZTV8S1182C20[31]),  31,128},
  {&(_ZTV8S1182C20[99]),  99,128},
  {&(_ZTV8S1182C20[105]),  105,128},
  {&(_ZTV8S1182C20[113]),  113,128},
  {&(_ZTV8S1182C20[126]),  126,128},
  {&(_ZTV8S1182C20[126]),  126,128},
  {&(_ZTV8S1182C20[39]),  39,128},
  {&(_ZTV8S1182C20[42]),  42,128},
  {&(_ZTV8S1182C20[52]),  52,128},
  {&(_ZTV8S1182C20[60]),  60,128},
  {&(_ZTV8S1182C20[70]),  70,128},
  {&(_tg__ZTV8S1182C21__8S1182C20[3]),  3,5},
  {&(_tg__ZTV8S1182C158S1182C21__8S1182C20[3]),  3,3},
  {&(_tg__ZTV7S1182C9__8S1182C20[7]),  7,9},
  {&(_tg__ZTV8S1182C107S1182C9__8S1182C20[7]),  7,9},
  {&(_tg__ZTV7S1182C58S1182C107S1182C9__A1__8S1182C20[4]),  4,4},
  {&(_tg__ZTV7S1182C3__8S1182C107S1182C9__8S1182C20[6]),  6,6},
  {&(_tg__ZTV7S1182C3__8S1182C107S1182C9__8S1182C20[6]),  6,6},
  {&(_tg__ZTV7S1182C3__7S1182C9__8S1182C20[6]),  6,6},
  {&(_tg__ZTV7S1182C3__7S1182C9__8S1182C20[6]),  6,6},
  {&(_tg__ZTV7S1182C3__8S1182C20[6]),  6,6},
  {&(_tg__ZTV7S1182C3__8S1182C20[6]),  6,6},
  {&(_tg__ZTV7S1182C5__8S1182C20[4]),  4,4},
  {&(_tg__ZTV7S1182C8__8S1182C20[10]),  10,12},
  {&(_tg__ZTV7S1182C9__7S1182C8__8S1182C20[8]),  8,10},
  {&(_tg__ZTV7S1182C8__8S1182C20[10]),  10,12},
  {&(_tg__ZTV7S1182C8__8S1182C20[10]),  10,12},
  {&(_tg__ZTV8S1182C11__7S1182C8__8S1182C20[4]),  4,4},
  {&(_tg__ZTV8S1182C10__A1__7S1182C8__8S1182C20[8]),  8,10},
  {&(_tg__ZTV8S1182C11__8S1182C20[4]),  4,4},
  {&(_tg__ZTV7S1182C58S1182C11__A2__8S1182C20[4]),  4,4},
  {&(_tg__ZTV8S1182C10__A1__8S1182C20[7]),  7,9},
  {&(_tg__ZTV7S1182C58S1182C10__A3__8S1182C20[4]),  4,4},
  {&(_tg__ZTV7S1182C3__8S1182C10__A1__8S1182C20[6]),  6,6},
  {&(_tg__ZTV7S1182C3__8S1182C10__A1__8S1182C20[6]),  6,6},
  {&(_tg__ZTV8S1182C14__8S1182C20[10]),  10,12},
  {&(_tg__ZTV7S1182C3__8S1182C14__8S1182C20[6]),  6,6},
  {&(_tg__ZTV8S1182C14__8S1182C20[10]),  10,12},
  {&(_tg__ZTV8S1182C11__8S1182C14__8S1182C20[4]),  4,4},
  {&(_tg__ZTV7S1182C9__8S1182C14__8S1182C20[8]),  8,10},
  {&(_tg__ZTV7S1182C3__8S1182C14__8S1182C20[6]),  6,6},
  {&(_tg__ZTV8S1182C15__A2__8S1182C20[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S1182C20[];
extern  VTBL_ENTRY _ZTV8S1182C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C20[];
static VTBL_ENTRY alt_thunk_names89[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S1182C8D0Ev,_ZThn20_N7S1182C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S1182C8D1Ev,_ZThn20_N7S1182C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C14D0Ev,_ZTv0_n32_N8S1182C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S1182C14D0Ev,_ZThn12_N8S1182C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C14D1Ev,_ZTv0_n32_N8S1182C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S1182C14D1Ev,_ZThn12_N8S1182C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C22D0Ev,_ZTv0_n32_N8S1182C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S1182C22D0Ev,_ZThn80_N8S1182C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S1182C22D0Ev,_ZThn52_N8S1182C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C22D1Ev,_ZTv0_n32_N8S1182C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S1182C22D1Ev,_ZThn80_N8S1182C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S1182C22D1Ev,_ZThn52_N8S1182C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1182C22D0Ev,_ZTv0_n44_N8S1182C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S1182C22D0Ev,_ZThn88_N8S1182C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S1182C22D0Ev,_ZThn60_N8S1182C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1182C22D1Ev,_ZTv0_n44_N8S1182C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S1182C22D1Ev,_ZThn88_N8S1182C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S1182C22D1Ev,_ZThn60_N8S1182C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S1182C12D0Ev,_ZThn76_N8S1182C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S1182C12D0Ev,_ZThn48_N8S1182C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S1182C12D1Ev,_ZThn76_N8S1182C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S1182C12D1Ev,_ZThn48_N8S1182C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S1182C12D0Ev,_ZThn84_N8S1182C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S1182C12D0Ev,_ZThn56_N8S1182C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S1182C12D1Ev,_ZThn84_N8S1182C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S1182C12D1Ev,_ZThn56_N8S1182C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S1182C16D0Ev,_ZThn56_N8S1182C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S1182C16D0Ev,_ZThn76_N8S1182C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S1182C16D1Ev,_ZThn56_N8S1182C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S1182C16D1Ev,_ZThn76_N8S1182C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1182C20D0Ev,_ZTv0_n44_N8S1182C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S1182C20D0Ev,_ZThn88_N8S1182C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S1182C20D0Ev,_ZThn60_N8S1182C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1182C20D1Ev,_ZTv0_n44_N8S1182C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S1182C20D1Ev,_ZThn88_N8S1182C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S1182C20D1Ev,_ZThn60_N8S1182C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C20D0Ev,_ZTv0_n32_N8S1182C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S1182C20D0Ev,_ZThn80_N8S1182C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S1182C20D0Ev,_ZThn52_N8S1182C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C20D1Ev,_ZTv0_n32_N8S1182C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S1182C20D1Ev,_ZThn80_N8S1182C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S1182C20D1Ev,_ZThn52_N8S1182C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S1182C20D0Ev,_ZTv0_n16_N8S1182C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S1182C20D0Ev,_ZThn48_N8S1182C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S1182C20D1Ev,_ZTv0_n16_N8S1182C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S1182C20D1Ev,_ZThn48_N8S1182C20D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S1182C20 = {  "S1182C20", // class name
  bases_S1182C20, 56,
  &(vtc_S1182C20[0]), // expected_vtbl_contents
  &(vtt_S1182C20[0]), // expected_vtt_contents
  ABISELECT(184,96), // object size
  NSPAIRA(_ZTI8S1182C20),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S1182C20),128, //virtual function table var
  15, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1182C20),96, //virtual table table var
  28, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names89,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1182C1  : S1182C2 , S7856C9_nt , S1182C19 , S1182C20 , S1182C5 {
  ~S1182C1(); // tgen
  S1182C1(); // tgen
};
//SIG(1 S1182C1) C1{ BC2{ BC3{ BC4{ m} VBC5{ VBC4 BC6{ m} VBC7{ m}} VBC6} VBC8{ VBC9{ VBC4 VBC6 VBC3 BC7 BC10{ BC6 VBC4 VBC7 BC5 VBC3 vd} vd} VBC11{ BC7 BC6 BC5 Fi} VBC10 vd Fi[2]} BC12{ VBC8 VBC13{ m} VBC14{ VBC5 VBC15{ VBC6} VBC11 BC7 VBC9 vd Fi} BC16{ VBC10 BC11 BC3 BC7 vd} vd} VBC17{ VBC12 BC4 BC3 BC18{ BC13 VBC4 BC8 VBC16 vd v1} vd} vd Fc} BC13 BC19{ BC5 BC7 Fs} BC20{ VBC21{ BC6 BC15 vd} VBC9 BC22{ BC15 VBC7 BC12 BC21 vd} BC16 BC14 vd} BC5}


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

static void Test_S1182C1()
{
  extern Class_Descriptor cd_S1182C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(44,46)];
    init_test(&cd_S1182C1, buf);
    S1182C1 *dp, &lv = *(dp=new (buf) S1182C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(344,180), "sizeof(S1182C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1182C1)");
    /*is_ambiguous_... S1182C2::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C3*)(S1182C2*), 0, "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*), ABISELECT(160,80), "S1182C1");
    /*is_ambiguous_... S1182C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C9*), ABISELECT(160,80), "S1182C1");
    /*is_ambiguous_... S1182C10::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C10*)(S1182C9*), ABISELECT(160,80), "S1182C1");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C10*)(S1182C9*), ABISELECT(160,80), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C11 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C11*), ABISELECT(160,80), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C10*), ABISELECT(160,80), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C10*), ABISELECT(160,80), "S1182C1");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C11*)(S1182C16*)(S1182C12*)(S1182C2*), ABISELECT(160,80), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C11*)(S1182C16*)(S1182C12*), ABISELECT(160,80), "S1182C1");
    /*is_ambiguous_... S1182C18::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C18*)(S1182C17*), ABISELECT(160,80), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C11*)(S1182C16*), ABISELECT(160,80), "S1182C1");
    check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C19*), ABISELECT(160,80), "S1182C1");
    check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C11*)(S1182C16*)(S1182C12*)(S1182C22*)(S1182C20*), ABISELECT(160,80), "S1182C1");
    /*is_ambiguous_... S1182C20::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C11*)(S1182C16*)(S1182C20*), ABISELECT(160,80), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*), ABISELECT(160,80), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*), 0, "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*), 0, "S1182C1");
    check_base_class_offset(lv, (S7856C12*)(S1182C10*)(S1182C9*), 0, "S1182C1");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C10*)(S1182C9*), 0, "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C11*), 0, "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C10*), 0, "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C10*), 0, "S1182C1");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C11*)(S1182C16*)(S1182C12*)(S1182C2*), 0, "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C11*)(S1182C16*)(S1182C12*), 0, "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C11*)(S1182C16*), 0, "S1182C1");
    check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C19*), 0, "S1182C1");
    /*is_ambiguous_... S1182C22::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C22*)(S1182C20*), 0, "S1182C1");
    check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C11*)(S1182C16*)(S1182C12*)(S1182C22*)(S1182C20*), 0, "S1182C1");
    /*is_ambiguous_... S1182C20::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C11*)(S1182C16*)(S1182C20*), 0, "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*), 0, "S1182C1");
    /*is_ambiguous_... S1182C2::S1182C3 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C3*)(S1182C2*), 0, "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C3 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C3*), 0, "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C14 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C14*), 0, "S1182C1");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C3*)(S1182C16*)(S1182C12*)(S1182C2*), 0, "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C12 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C3*)(S1182C16*)(S1182C12*), 0, "S1182C1");
    /*is_ambiguous_... S1182C17::S1182C3 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C3*)(S1182C17*), 0, "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C16 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C3*)(S1182C16*), 0, "S1182C1");
    /*is_ambiguous_... S1182C16::S1182C3 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C3*)(S1182C16*)(S1182C12*)(S1182C22*)(S1182C20*), 0, "S1182C1");
    /*is_ambiguous_... S1182C20::S1182C16 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C3*)(S1182C16*)(S1182C20*), 0, "S1182C1");
    /*is_ambiguous_... S1182C20::S1182C14 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C14*)(S1182C20*), 0, "S1182C1");
    /*is_ambiguous_... S1182C2::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C3*)(S1182C2*), ABISELECT(160,80), "S1182C1");
    /*is_ambiguous_... S1182C9::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C9*), ABISELECT(160,80), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C3*), ABISELECT(160,80), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C15*), ABISELECT(160,80), "S1182C1");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C3*)(S1182C16*)(S1182C12*)(S1182C2*), ABISELECT(160,80), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C3*)(S1182C16*)(S1182C12*), ABISELECT(160,80), "S1182C1");
    /*is_ambiguous_... S1182C17::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C3*)(S1182C17*), ABISELECT(160,80), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C3*)(S1182C16*), ABISELECT(160,80), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C21 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C15*)(S1182C21*), ABISELECT(160,80), "S1182C1");
    /*is_ambiguous_... S1182C22::S1182C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C15*)(S1182C22*)(S1182C20*), ABISELECT(160,80), "S1182C1");
    /*is_ambiguous_... S1182C16::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C3*)(S1182C16*)(S1182C12*)(S1182C22*)(S1182C20*), ABISELECT(160,80), "S1182C1");
    check_base_class_offset(lv, (S7856C15*)(S1182C15*)(S1182C21*)(S1182C22*)(S1182C20*), ABISELECT(160,80), "S1182C1");
    /*is_ambiguous_... S1182C20::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C3*)(S1182C16*)(S1182C20*), ABISELECT(160,80), "S1182C1");
    /*is_ambiguous_... S1182C2::S1182C3 */ AMB_check_base_class_offset(lv, (S1182C3*)(S1182C2*), 0, "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C3*), ABISELECT(168,84), "S1182C1");
    check_base_class_offset(lv, (S1182C3*)(S1182C9*), ABISELECT(168,84), "S1182C1");
    check_base_class_offset(lv, (S1182C3*)(S1182C10*)(S1182C9*), ABISELECT(168,84), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C10 */ AMB_check_base_class_offset(lv, (S1182C3*)(S1182C10*), ABISELECT(168,84), "S1182C1");
    /*is_ambiguous_... S1182C9::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C9*), ABISELECT(184,96), "S1182C1");
    /*is_ambiguous_... S1182C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C10*)(S1182C9*), ABISELECT(192,100), "S1182C1");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C10*)(S1182C9*), ABISELECT(184,96), "S1182C1");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C10*)(S1182C9*), ABISELECT(184,96), "S1182C1");
    check_base_class_offset(lv, (S1182C10*)(S1182C9*), ABISELECT(184,96), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C8 */ AMB_check_base_class_offset(lv, (S1182C9*)(S1182C8*), ABISELECT(184,96), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C14 */ AMB_check_base_class_offset(lv, (S1182C9*)(S1182C14*), ABISELECT(184,96), "S1182C1");
    check_base_class_offset(lv, (S1182C9*)(S1182C8*)(S1182C18*)(S1182C17*), ABISELECT(184,96), "S1182C1");
    check_base_class_offset(lv, (S1182C9*)(S1182C20*), ABISELECT(184,96), "S1182C1");
    /*is_ambiguous_... S1182C20::S1182C14 */ AMB_check_base_class_offset(lv, (S1182C9*)(S1182C14*)(S1182C20*), ABISELECT(184,96), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C11*), ABISELECT(200,104), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C11*), ABISELECT(208,108), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C11*), ABISELECT(200,104), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C11 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C11*), ABISELECT(200,104), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C8 */ AMB_check_base_class_offset(lv, (S1182C11*)(S1182C8*), ABISELECT(200,104), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C14 */ AMB_check_base_class_offset(lv, (S1182C11*)(S1182C14*), ABISELECT(200,104), "S1182C1");
    check_base_class_offset(lv, (S1182C11*)(S1182C8*)(S1182C18*)(S1182C17*), ABISELECT(200,104), "S1182C1");
    /*is_ambiguous_... S1182C20::S1182C14 */ AMB_check_base_class_offset(lv, (S1182C11*)(S1182C14*)(S1182C20*), ABISELECT(200,104), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C10*), ABISELECT(224,116), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C10*), ABISELECT(216,112), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C10 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C10*), ABISELECT(216,112), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C8 */ AMB_check_base_class_offset(lv, (S1182C10*)(S1182C8*), ABISELECT(216,112), "S1182C1");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S1182C10*)(S1182C16*)(S1182C12*)(S1182C2*), ABISELECT(216,112), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C12 */ AMB_check_base_class_offset(lv, (S1182C10*)(S1182C16*)(S1182C12*), ABISELECT(216,112), "S1182C1");
    /*is_ambiguous_... S1182C8::S1182C10 */ AMB_check_base_class_offset(lv, (S1182C10*)(S1182C8*)(S1182C18*)(S1182C17*), ABISELECT(216,112), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C16 */ AMB_check_base_class_offset(lv, (S1182C10*)(S1182C16*), ABISELECT(216,112), "S1182C1");
    check_base_class_offset(lv, (S1182C10*)(S1182C16*)(S1182C12*)(S1182C22*)(S1182C20*), ABISELECT(216,112), "S1182C1");
    /*is_ambiguous_... S1182C20::S1182C16 */ AMB_check_base_class_offset(lv, (S1182C10*)(S1182C16*)(S1182C20*), ABISELECT(216,112), "S1182C1");
    /*is_ambiguous_... S1182C2::S1182C8 */ AMB_check_base_class_offset(lv, (S1182C8*)(S1182C2*), ABISELECT(168,84), "S1182C1");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S1182C8*)(S1182C12*)(S1182C2*), ABISELECT(168,84), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C12 */ AMB_check_base_class_offset(lv, (S1182C8*)(S1182C12*), ABISELECT(168,84), "S1182C1");
    check_base_class_offset(lv, (S1182C8*)(S1182C12*)(S1182C22*)(S1182C20*), ABISELECT(168,84), "S1182C1");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S1182C12*)(S1182C2*), ABISELECT(225,117), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C12 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S1182C12*), ABISELECT(225,117), "S1182C1");
    check_base_class_offset(lv, (S7856C9_nt*)(S1182C12*)(S1182C22*)(S1182C20*), ABISELECT(225,117), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C14 */ AMB_check_base_class_offset(lv, (S1182C15*)(S1182C14*), ABISELECT(232,120), "S1182C1");
    /*is_ambiguous_... S1182C20::S1182C14 */ AMB_check_base_class_offset(lv, (S1182C15*)(S1182C14*)(S1182C20*), ABISELECT(232,120), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C14 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C14*), ABISELECT(232,120), "S1182C1");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S1182C14*)(S1182C12*)(S1182C2*), ABISELECT(232,120), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C12 */ AMB_check_base_class_offset(lv, (S1182C14*)(S1182C12*), ABISELECT(232,120), "S1182C1");
    check_base_class_offset(lv, (S1182C14*)(S1182C12*)(S1182C22*)(S1182C20*), ABISELECT(232,120), "S1182C1");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C11*)(S1182C16*)(S1182C12*)(S1182C2*), ABISELECT(8,4), "S1182C1");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C11*)(S1182C16*)(S1182C12*)(S1182C2*), ABISELECT(16,8), "S1182C1");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C11*)(S1182C16*)(S1182C12*)(S1182C2*), ABISELECT(8,4), "S1182C1");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C11*)(S1182C16*)(S1182C12*)(S1182C2*), ABISELECT(8,4), "S1182C1");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S1182C11*)(S1182C16*)(S1182C12*)(S1182C2*), ABISELECT(8,4), "S1182C1");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C3*)(S1182C16*)(S1182C12*)(S1182C2*), ABISELECT(24,12), "S1182C1");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S1182C3*)(S1182C16*)(S1182C12*)(S1182C2*), ABISELECT(24,12), "S1182C1");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C16*)(S1182C12*)(S1182C2*), ABISELECT(32,16), "S1182C1");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S1182C16*)(S1182C12*)(S1182C2*), ABISELECT(8,4), "S1182C1");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S1182C12*)(S1182C2*), ABISELECT(8,4), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C11*)(S1182C16*)(S1182C12*), ABISELECT(272,144), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C11*)(S1182C16*)(S1182C12*), ABISELECT(280,148), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C11*)(S1182C16*)(S1182C12*), ABISELECT(272,144), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C12 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C11*)(S1182C16*)(S1182C12*), ABISELECT(272,144), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C12 */ AMB_check_base_class_offset(lv, (S1182C11*)(S1182C16*)(S1182C12*), ABISELECT(272,144), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C3*)(S1182C16*)(S1182C12*), ABISELECT(288,152), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C12 */ AMB_check_base_class_offset(lv, (S1182C3*)(S1182C16*)(S1182C12*), ABISELECT(288,152), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C16*)(S1182C12*), ABISELECT(296,156), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C12 */ AMB_check_base_class_offset(lv, (S1182C16*)(S1182C12*), ABISELECT(272,144), "S1182C1");
    check_base_class_offset(lv, (S1182C12*)(S1182C17*), ABISELECT(272,144), "S1182C1");
    /*is_ambiguous_... S1182C17::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C17*), ABISELECT(256,132), "S1182C1");
    /*is_ambiguous_... S1182C17::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C3*)(S1182C17*), ABISELECT(248,128), "S1182C1");
    /*is_ambiguous_... S1182C17::S1182C3 */ AMB_check_base_class_offset(lv, (S1182C3*)(S1182C17*), ABISELECT(248,128), "S1182C1");
    check_base_class_offset(lv, (S7856C9_nt*)(S1182C18*)(S1182C17*), ABISELECT(256,132), "S1182C1");
    check_base_class_offset(lv, (S1182C8*)(S1182C18*)(S1182C17*), ABISELECT(256,132), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C11*)(S1182C16*), ABISELECT(304,160), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C11*)(S1182C16*), ABISELECT(312,164), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C11*)(S1182C16*), ABISELECT(304,160), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C16 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C11*)(S1182C16*), ABISELECT(304,160), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C16 */ AMB_check_base_class_offset(lv, (S1182C11*)(S1182C16*), ABISELECT(304,160), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C3*)(S1182C16*), ABISELECT(320,168), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C16 */ AMB_check_base_class_offset(lv, (S1182C3*)(S1182C16*), ABISELECT(320,168), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C16*), ABISELECT(328,172), "S1182C1");
    check_base_class_offset(lv, (S1182C16*)(S1182C18*)(S1182C17*), ABISELECT(304,160), "S1182C1");
    check_base_class_offset(lv, (S1182C18*)(S1182C17*), ABISELECT(256,132), "S1182C1");
    check_base_class_offset(lv, (S1182C17*)(S1182C2*), ABISELECT(248,128), "S1182C1");
    check_base_class_offset(lv, (S1182C2*), 0, "S1182C1");
    /*is_ambiguous_... S1182C1::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*), 0, "S1182C1");
    check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C19*), ABISELECT(40,20), "S1182C1");
    check_base_class_offset(lv, (S1182C5*)(S1182C19*), ABISELECT(40,20), "S1182C1");
    /*is_ambiguous_... S1182C19::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C19*), ABISELECT(40,20), "S1182C1");
    check_base_class_offset(lv, (S1182C19*), ABISELECT(40,20), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C21 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C21*), ABISELECT(336,176), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C21 */ AMB_check_base_class_offset(lv, (S1182C15*)(S1182C21*), ABISELECT(336,176), "S1182C1");
    /*is_ambiguous_... S1182C20::S1182C21 */ AMB_check_base_class_offset(lv, (S1182C21*)(S1182C20*), ABISELECT(336,176), "S1182C1");
    /*is_ambiguous_... S1182C22::S1182C15 */ AMB_check_base_class_offset(lv, (S1182C15*)(S1182C22*)(S1182C20*), ABISELECT(56,28), "S1182C1");
    /*is_ambiguous_... S1182C11::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C11*)(S1182C16*)(S1182C12*)(S1182C22*)(S1182C20*), ABISELECT(64,32), "S1182C1");
    /*is_ambiguous_... S1182C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C11*)(S1182C16*)(S1182C12*)(S1182C22*)(S1182C20*), ABISELECT(72,36), "S1182C1");
    check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C11*)(S1182C16*)(S1182C12*)(S1182C22*)(S1182C20*), ABISELECT(64,32), "S1182C1");
    check_base_class_offset(lv, (S1182C5*)(S1182C11*)(S1182C16*)(S1182C12*)(S1182C22*)(S1182C20*), ABISELECT(64,32), "S1182C1");
    check_base_class_offset(lv, (S1182C11*)(S1182C16*)(S1182C12*)(S1182C22*)(S1182C20*), ABISELECT(64,32), "S1182C1");
    /*is_ambiguous_... S1182C16::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C3*)(S1182C16*)(S1182C12*)(S1182C22*)(S1182C20*), ABISELECT(80,40), "S1182C1");
    /*is_ambiguous_... S1182C16::S1182C3 */ AMB_check_base_class_offset(lv, (S1182C3*)(S1182C16*)(S1182C12*)(S1182C22*)(S1182C20*), ABISELECT(80,40), "S1182C1");
    /*is_ambiguous_... S1182C16::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C16*)(S1182C12*)(S1182C22*)(S1182C20*), ABISELECT(88,44), "S1182C1");
    check_base_class_offset(lv, (S1182C16*)(S1182C12*)(S1182C22*)(S1182C20*), ABISELECT(64,32), "S1182C1");
    check_base_class_offset(lv, (S1182C12*)(S1182C22*)(S1182C20*), ABISELECT(64,32), "S1182C1");
    /*is_ambiguous_... S1182C21::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C21*)(S1182C22*)(S1182C20*), ABISELECT(96,48), "S1182C1");
    check_base_class_offset(lv, (S1182C15*)(S1182C21*)(S1182C22*)(S1182C20*), ABISELECT(96,48), "S1182C1");
    check_base_class_offset(lv, (S1182C21*)(S1182C22*)(S1182C20*), ABISELECT(96,48), "S1182C1");
    check_base_class_offset(lv, (S1182C22*)(S1182C20*), ABISELECT(56,28), "S1182C1");
    /*is_ambiguous_... S1182C20::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C11*)(S1182C16*)(S1182C20*), ABISELECT(104,52), "S1182C1");
    /*is_ambiguous_... S1182C20::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C11*)(S1182C16*)(S1182C20*), ABISELECT(112,56), "S1182C1");
    /*is_ambiguous_... S1182C20::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C11*)(S1182C16*)(S1182C20*), ABISELECT(104,52), "S1182C1");
    /*is_ambiguous_... S1182C20::S1182C16 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C11*)(S1182C16*)(S1182C20*), ABISELECT(104,52), "S1182C1");
    /*is_ambiguous_... S1182C20::S1182C16 */ AMB_check_base_class_offset(lv, (S1182C11*)(S1182C16*)(S1182C20*), ABISELECT(104,52), "S1182C1");
    /*is_ambiguous_... S1182C20::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C3*)(S1182C16*)(S1182C20*), ABISELECT(120,60), "S1182C1");
    /*is_ambiguous_... S1182C20::S1182C16 */ AMB_check_base_class_offset(lv, (S1182C3*)(S1182C16*)(S1182C20*), ABISELECT(120,60), "S1182C1");
    /*is_ambiguous_... S1182C20::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C16*)(S1182C20*), ABISELECT(128,64), "S1182C1");
    /*is_ambiguous_... S1182C20::S1182C16 */ AMB_check_base_class_offset(lv, (S1182C16*)(S1182C20*), ABISELECT(104,52), "S1182C1");
    /*is_ambiguous_... S1182C20::S1182C14 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C14*)(S1182C20*), ABISELECT(136,68), "S1182C1");
    /*is_ambiguous_... S1182C20::S1182C14 */ AMB_check_base_class_offset(lv, (S1182C14*)(S1182C20*), ABISELECT(136,68), "S1182C1");
    check_base_class_offset(lv, (S1182C20*), ABISELECT(56,28), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*), ABISELECT(152,76), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C5 */ AMB_check_base_class_offset(lv, (S1182C5*), ABISELECT(152,76), "S1182C1");
    test_class_info(&lv, &cd_S1182C1);
    dp->~S1182C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1182C1(Test_S1182C1, "S1182C1", ABISELECT(344,180));

#else // __cplusplus

extern void _ZN7S1182C1C1Ev();
extern void _ZN7S1182C1D1Ev();
Name_Map name_map_S1182C1[] = {
  NSPAIR(_ZN7S1182C1C1Ev),
  NSPAIR(_ZN7S1182C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C3;
extern VTBL_ENTRY _ZTI7S1182C3[];
extern  VTBL_ENTRY _ZTV7S1182C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C3[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S1182C3;
extern VTBL_ENTRY _ZTI7S1182C3[];
extern  VTBL_ENTRY _ZTV7S1182C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C3[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C10;
extern VTBL_ENTRY _ZTI8S1182C10[];
extern  VTBL_ENTRY _ZTV8S1182C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C10[];
extern Class_Descriptor cd_S1182C9;
extern VTBL_ENTRY _ZTI7S1182C9[];
extern  VTBL_ENTRY _ZTV7S1182C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C11;
extern VTBL_ENTRY _ZTI8S1182C11[];
extern  VTBL_ENTRY _ZTV8S1182C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C11[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C10;
extern VTBL_ENTRY _ZTI8S1182C10[];
extern  VTBL_ENTRY _ZTV8S1182C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C10[];
extern Class_Descriptor cd_S1182C8;
extern VTBL_ENTRY _ZTI7S1182C8[];
extern  VTBL_ENTRY _ZTV7S1182C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C8[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S1182C15;
extern VTBL_ENTRY _ZTI8S1182C15[];
extern  VTBL_ENTRY _ZTV8S1182C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1182C14;
extern VTBL_ENTRY _ZTI8S1182C14[];
extern  VTBL_ENTRY _ZTV8S1182C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C14[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C11;
extern VTBL_ENTRY _ZTI8S1182C11[];
extern  VTBL_ENTRY _ZTV8S1182C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C11[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S1182C3;
extern VTBL_ENTRY _ZTI7S1182C3[];
extern  VTBL_ENTRY _ZTV7S1182C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C3[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1182C16;
extern VTBL_ENTRY _ZTI8S1182C16[];
extern  VTBL_ENTRY _ZTV8S1182C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C16[];
extern Class_Descriptor cd_S1182C12;
extern VTBL_ENTRY _ZTI8S1182C12[];
extern  VTBL_ENTRY _ZTV8S1182C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C11;
extern VTBL_ENTRY _ZTI8S1182C11[];
extern  VTBL_ENTRY _ZTV8S1182C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C11[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S1182C3;
extern VTBL_ENTRY _ZTI7S1182C3[];
extern  VTBL_ENTRY _ZTV7S1182C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C3[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1182C16;
extern VTBL_ENTRY _ZTI8S1182C16[];
extern  VTBL_ENTRY _ZTV8S1182C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C16[];
extern Class_Descriptor cd_S1182C12;
extern VTBL_ENTRY _ZTI8S1182C12[];
extern  VTBL_ENTRY _ZTV8S1182C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S1182C3;
extern VTBL_ENTRY _ZTI7S1182C3[];
extern  VTBL_ENTRY _ZTV7S1182C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C3[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S1182C8;
extern VTBL_ENTRY _ZTI7S1182C8[];
extern  VTBL_ENTRY _ZTV7S1182C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C8[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C11;
extern VTBL_ENTRY _ZTI8S1182C11[];
extern  VTBL_ENTRY _ZTV8S1182C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C11[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S1182C3;
extern VTBL_ENTRY _ZTI7S1182C3[];
extern  VTBL_ENTRY _ZTV7S1182C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C3[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1182C16;
extern VTBL_ENTRY _ZTI8S1182C16[];
extern  VTBL_ENTRY _ZTV8S1182C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C16[];
extern Class_Descriptor cd_S1182C18;
extern VTBL_ENTRY _ZTI8S1182C18[];
extern  VTBL_ENTRY _ZTV8S1182C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C18[];
extern Class_Descriptor cd_S1182C17;
extern VTBL_ENTRY _ZTI8S1182C17[];
extern  VTBL_ENTRY _ZTV8S1182C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C17[];
extern Class_Descriptor cd_S1182C2;
extern VTBL_ENTRY _ZTI7S1182C2[];
extern  VTBL_ENTRY _ZTV7S1182C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C2[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1182C19;
extern VTBL_ENTRY _ZTI8S1182C19[];
extern  VTBL_ENTRY _ZTV8S1182C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C19[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C15;
extern VTBL_ENTRY _ZTI8S1182C15[];
extern  VTBL_ENTRY _ZTV8S1182C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C15[];
extern Class_Descriptor cd_S1182C21;
extern VTBL_ENTRY _ZTI8S1182C21[];
extern  VTBL_ENTRY _ZTV8S1182C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C21[];
extern Class_Descriptor cd_S1182C15;
extern VTBL_ENTRY _ZTI8S1182C15[];
extern  VTBL_ENTRY _ZTV8S1182C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C11;
extern VTBL_ENTRY _ZTI8S1182C11[];
extern  VTBL_ENTRY _ZTV8S1182C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C11[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S1182C3;
extern VTBL_ENTRY _ZTI7S1182C3[];
extern  VTBL_ENTRY _ZTV7S1182C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C3[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1182C16;
extern VTBL_ENTRY _ZTI8S1182C16[];
extern  VTBL_ENTRY _ZTV8S1182C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C16[];
extern Class_Descriptor cd_S1182C12;
extern VTBL_ENTRY _ZTI8S1182C12[];
extern  VTBL_ENTRY _ZTV8S1182C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C15;
extern VTBL_ENTRY _ZTI8S1182C15[];
extern  VTBL_ENTRY _ZTV8S1182C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C15[];
extern Class_Descriptor cd_S1182C21;
extern VTBL_ENTRY _ZTI8S1182C21[];
extern  VTBL_ENTRY _ZTV8S1182C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C21[];
extern Class_Descriptor cd_S1182C22;
extern VTBL_ENTRY _ZTI8S1182C22[];
extern  VTBL_ENTRY _ZTV8S1182C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C22[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C11;
extern VTBL_ENTRY _ZTI8S1182C11[];
extern  VTBL_ENTRY _ZTV8S1182C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C11[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S1182C3;
extern VTBL_ENTRY _ZTI7S1182C3[];
extern  VTBL_ENTRY _ZTV7S1182C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C3[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1182C16;
extern VTBL_ENTRY _ZTI8S1182C16[];
extern  VTBL_ENTRY _ZTV8S1182C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C16[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1182C14;
extern VTBL_ENTRY _ZTI8S1182C14[];
extern  VTBL_ENTRY _ZTV8S1182C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C14[];
extern Class_Descriptor cd_S1182C20;
extern VTBL_ENTRY _ZTI8S1182C20[];
extern  VTBL_ENTRY _ZTV8S1182C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C20[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
static Base_Class bases_S1182C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(160,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S1182C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    108, //bcp->index_in_construction_vtbl_array
    134, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(160,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S1182C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    65, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(168,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S1182C3,    ABISELECT(168,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    111, //bcp->index_in_construction_vtbl_array
    148, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(184,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(192,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(184,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(184,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    143, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S1182C10,    ABISELECT(184,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    142, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S1182C9,    ABISELECT(184,96), //bcp->offset
    135, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    110, //bcp->index_in_construction_vtbl_array
    141, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(200,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(208,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(200,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(200,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    151, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S1182C11,    ABISELECT(200,104), //bcp->offset
    145, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    112, //bcp->index_in_construction_vtbl_array
    150, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(224,116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(216,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(216,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    153, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S1182C10,    ABISELECT(216,112), //bcp->offset
    149, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    113, //bcp->index_in_construction_vtbl_array
    152, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S1182C8,    ABISELECT(168,84), //bcp->offset
    122, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    109, //bcp->index_in_construction_vtbl_array
    135, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    38, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(225,117), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    38, //immediately_derived
  0, 1},
  {&cd_S1182C15,    ABISELECT(232,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    116, //bcp->index_in_construction_vtbl_array
    162, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(232,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S1182C14,    ABISELECT(232,120), //bcp->offset
    159, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    115, //bcp->index_in_construction_vtbl_array
    156, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    38, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S1182C11,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S1182C3,    ABISELECT(24,12), //bcp->offset
    36, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    117, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S1182C16,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S1182C12,    ABISELECT(8,4), //bcp->offset
    20, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    114, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    65, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(272,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(280,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(272,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(272,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    196, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S1182C11,    ABISELECT(272,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    195, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(288,152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S1182C3,    ABISELECT(288,152), //bcp->offset
    223, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    120, //bcp->index_in_construction_vtbl_array
    197, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(296,156), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S1182C16,    ABISELECT(272,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    194, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S1182C12,    ABISELECT(272,144), //bcp->offset
    206, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    119, //bcp->index_in_construction_vtbl_array
    193, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    64, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(256,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    64, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(248,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S1182C3,    ABISELECT(248,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    164, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    64, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(256,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    63, //immediately_derived
  0, 0},
  {&cd_S1182C8,    ABISELECT(256,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    167, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    63, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(304,160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(312,164), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(304,160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(304,160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    214, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S1182C11,    ABISELECT(304,160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    213, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(320,168), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    60, //immediately_derived
  0, 0},
  {&cd_S1182C3,    ABISELECT(320,168), //bcp->offset
    240, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    123, //bcp->index_in_construction_vtbl_array
    215, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(328,172), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S1182C16,    ABISELECT(304,160), //bcp->offset
    229, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    122, //bcp->index_in_construction_vtbl_array
    212, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    63, //immediately_derived
  0, 1},
  {&cd_S1182C18,    ABISELECT(256,132), //bcp->offset
    192, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    121, //bcp->index_in_construction_vtbl_array
    166, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    64, //immediately_derived
  0, 0},
  {&cd_S1182C17,    ABISELECT(248,128), //bcp->offset
    172, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    118, //bcp->index_in_construction_vtbl_array
    163, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    65, //immediately_derived
  0, 1},
  {&cd_S1182C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C15,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    68, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    70, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    70, //immediately_derived
  0, 0},
  {&cd_S1182C19,    ABISELECT(40,20), //bcp->offset
    42, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    124, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C15,    ABISELECT(336,176), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    73, //immediately_derived
  0, 0},
  {&cd_S1182C15,    ABISELECT(336,176), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    222, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    73, //immediately_derived
  0, 0},
  {&cd_S1182C21,    ABISELECT(336,176), //bcp->offset
    246, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    126, //bcp->index_in_construction_vtbl_array
    221, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    100, //immediately_derived
  0, 1},
  {&cd_S1182C15,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    88, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    79, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(72,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    79, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    78, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    79, //immediately_derived
  0, 0},
  {&cd_S1182C11,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    83, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    81, //immediately_derived
  0, 0},
  {&cd_S1182C3,    ABISELECT(80,40), //bcp->offset
    79, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    128, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    40, //init_seq
    83, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(88,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    83, //immediately_derived
  0, 0},
  {&cd_S1182C16,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    41, //init_seq
    84, //immediately_derived
  0, 0},
  {&cd_S1182C12,    ABISELECT(64,32), //bcp->offset
    63, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    127, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    42, //init_seq
    88, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    87, //immediately_derived
  0, 0},
  {&cd_S1182C15,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    43, //init_seq
    87, //immediately_derived
  0, 0},
  {&cd_S1182C21,    ABISELECT(96,48), //bcp->offset
    85, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    129, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    44, //init_seq
    88, //immediately_derived
  0, 0},
  {&cd_S1182C22,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    45, //init_seq
    100, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    93, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(112,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    93, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    92, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    79, //bcp->base_subarray_index_in_construction_vtbl_array
    46, //init_seq
    93, //immediately_derived
  0, 0},
  {&cd_S1182C11,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    47, //init_seq
    97, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    95, //immediately_derived
  0, 0},
  {&cd_S1182C3,    ABISELECT(120,60), //bcp->offset
    100, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    131, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    48, //init_seq
    97, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(128,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    97, //immediately_derived
  0, 0},
  {&cd_S1182C16,    ABISELECT(104,52), //bcp->offset
    90, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    130, //bcp->index_in_construction_vtbl_array
    77, //bcp->base_subarray_index_in_construction_vtbl_array
    49, //init_seq
    100, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(136,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    99, //immediately_derived
  0, 0},
  {&cd_S1182C14,    ABISELECT(136,68), //bcp->offset
    106, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    132, //bcp->index_in_construction_vtbl_array
    86, //bcp->base_subarray_index_in_construction_vtbl_array
    50, //init_seq
    100, //immediately_derived
  0, 0},
  {&cd_S1182C20,    ABISELECT(56,28), //bcp->offset
    46, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    125, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    51, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C15,    ABISELECT(152,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    102, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(152,76), //bcp->offset
    118, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    133, //bcp->index_in_construction_vtbl_array
    107, //bcp->base_subarray_index_in_construction_vtbl_array
    52, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1182C1[];
extern void _ZN7S1182C1D1Ev();
extern void _ZN7S1182C1D0Ev();
extern void ABISELECT(_ZThn8_N7S1182C1D1Ev,_ZThn4_N7S1182C1D1Ev)();
extern void ABISELECT(_ZThn8_N7S1182C1D0Ev,_ZThn4_N7S1182C1D0Ev)();
extern void ABISELECT(_ZThn56_N7S1182C1D1Ev,_ZThn28_N7S1182C1D1Ev)();
extern void ABISELECT(_ZThn56_N7S1182C1D0Ev,_ZThn28_N7S1182C1D0Ev)();
extern void ABISELECT(_ZThn64_N7S1182C1D1Ev,_ZThn32_N7S1182C1D1Ev)();
extern void ABISELECT(_ZThn64_N7S1182C1D0Ev,_ZThn32_N7S1182C1D0Ev)();
extern void ABISELECT(_ZThn96_N7S1182C1D1Ev,_ZThn48_N7S1182C1D1Ev)();
extern void ABISELECT(_ZThn96_N7S1182C1D0Ev,_ZThn48_N7S1182C1D0Ev)();
extern void ABISELECT(_ZThn104_N7S1182C1D1Ev,_ZThn52_N7S1182C1D1Ev)();
extern void ABISELECT(_ZThn104_N7S1182C1D0Ev,_ZThn52_N7S1182C1D0Ev)();
extern void ABISELECT(_ZThn136_N7S1182C1D1Ev,_ZThn68_N7S1182C1D1Ev)();
extern void ABISELECT(_ZThn136_N7S1182C1D0Ev,_ZThn68_N7S1182C1D0Ev)();
extern void ABISELECT(_ZTv0_n88_N7S1182C1D1Ev,_ZTv0_n44_N7S1182C1D1Ev)();
extern void ABISELECT(_ZThn168_N7S1182C1D1Ev,_ZThn84_N7S1182C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S1182C1D0Ev,_ZTv0_n44_N7S1182C1D0Ev)();
extern void ABISELECT(_ZThn168_N7S1182C1D0Ev,_ZThn84_N7S1182C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1182C1D1Ev,_ZTv0_n32_N7S1182C1D1Ev)();
extern void ABISELECT(_ZThn184_N7S1182C1D1Ev,_ZThn96_N7S1182C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1182C1D0Ev,_ZTv0_n32_N7S1182C1D0Ev)();
extern void ABISELECT(_ZThn184_N7S1182C1D0Ev,_ZThn96_N7S1182C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1182C1D1Ev,_ZTv0_n32_N7S1182C1D1Ev)();
extern void ABISELECT(_ZThn216_N7S1182C1D1Ev,_ZThn112_N7S1182C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1182C1D0Ev,_ZTv0_n32_N7S1182C1D0Ev)();
extern void ABISELECT(_ZThn216_N7S1182C1D0Ev,_ZThn112_N7S1182C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S1182C1D1Ev,_ZTv0_n44_N7S1182C1D1Ev)();
extern void ABISELECT(_ZThn232_N7S1182C1D1Ev,_ZThn120_N7S1182C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S1182C1D0Ev,_ZTv0_n44_N7S1182C1D0Ev)();
extern void ABISELECT(_ZThn232_N7S1182C1D0Ev,_ZThn120_N7S1182C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N7S1182C1D1Ev,_ZTv0_n68_N7S1182C1D1Ev)();
extern void ABISELECT(_ZThn248_N7S1182C1D1Ev,_ZThn128_N7S1182C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N7S1182C1D0Ev,_ZTv0_n68_N7S1182C1D0Ev)();
extern void ABISELECT(_ZThn248_N7S1182C1D0Ev,_ZThn128_N7S1182C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn8_n136_N7S1182C1D1Ev,_ZTvn4_n68_N7S1182C1D1Ev)();
extern void ABISELECT(_ZTvn8_n136_N7S1182C1D0Ev,_ZTvn4_n68_N7S1182C1D0Ev)();
extern void _ZN8S1182C182v1Ev();
extern void ABISELECT(_ZTv0_n120_N7S1182C1D1Ev,_ZTv0_n60_N7S1182C1D1Ev)();
extern void ABISELECT(_ZThn272_N7S1182C1D1Ev,_ZThn144_N7S1182C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S1182C1D0Ev,_ZTv0_n60_N7S1182C1D0Ev)();
extern void ABISELECT(_ZThn272_N7S1182C1D0Ev,_ZThn144_N7S1182C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S1182C1D1Ev,_ZTv0_n36_N7S1182C1D1Ev)();
extern void ABISELECT(_ZThn304_N7S1182C1D1Ev,_ZThn160_N7S1182C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S1182C1D0Ev,_ZTv0_n36_N7S1182C1D0Ev)();
extern void ABISELECT(_ZThn304_N7S1182C1D0Ev,_ZThn160_N7S1182C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S1182C1D1Ev,_ZTv0_n16_N7S1182C1D1Ev)();
extern void ABISELECT(_ZThn336_N7S1182C1D1Ev,_ZThn176_N7S1182C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S1182C1D0Ev,_ZTv0_n16_N7S1182C1D0Ev)();
extern void ABISELECT(_ZThn336_N7S1182C1D0Ev,_ZThn176_N7S1182C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S1182C1[] = {
  ABISELECT(336,176),
  ABISELECT(304,160),
  ABISELECT(272,144),
  ABISELECT(248,128),
  ABISELECT(232,120),
  ABISELECT(232,120),
  ABISELECT(225,117),
  ABISELECT(216,112),
  ABISELECT(200,104),
  ABISELECT(168,84),
  ABISELECT(184,96),
  ABISELECT(168,84),
  ABISELECT(160,80),
  0,
  0,
  ABISELECT(160,80),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C1[0]),
  (VTBL_ENTRY)&_ZN7S1182C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1182C1D0Ev,
  ABISELECT(224,116),
  ABISELECT(224,116),
  ABISELECT(217,113),
  ABISELECT(192,100),
  ABISELECT(176,92),
  ABISELECT(160,80),
  ABISELECT(152,76),
  ABISELECT(-8,-4),
  ABISELECT(160,80),
  ABISELECT(208,108),
  ABISELECT(-8,-4),
  ABISELECT(152,76),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S1182C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S1182C1D1Ev,_ZThn4_N7S1182C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S1182C1D0Ev,_ZThn4_N7S1182C1D0Ev),
  ABISELECT(136,68),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(136,68),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S1182C1[0]),
  ABISELECT(-40,-20),
  ABISELECT(120,60),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S1182C1[0]),
  ABISELECT(280,148),
  ABISELECT(176,92),
  ABISELECT(176,92),
  ABISELECT(169,89),
  ABISELECT(160,84),
  ABISELECT(144,76),
  ABISELECT(-56,-28),
  ABISELECT(112,56),
  ABISELECT(104,52),
  ABISELECT(128,68),
  ABISELECT(112,56),
  ABISELECT(-56,-28),
  ABISELECT(104,52),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S1182C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S1182C1D1Ev,_ZThn28_N7S1182C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S1182C1D0Ev,_ZThn28_N7S1182C1D0Ev),
  ABISELECT(168,88),
  ABISELECT(168,88),
  ABISELECT(161,85),
  ABISELECT(136,72),
  ABISELECT(120,64),
  ABISELECT(104,52),
  ABISELECT(96,48),
  ABISELECT(-64,-32),
  ABISELECT(104,52),
  ABISELECT(152,80),
  ABISELECT(-64,-32),
  ABISELECT(96,48),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI7S1182C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S1182C1D1Ev,_ZThn32_N7S1182C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S1182C1D0Ev,_ZThn32_N7S1182C1D0Ev),
  ABISELECT(80,40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(80,40),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI7S1182C1[0]),
  ABISELECT(64,32),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI7S1182C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N7S1182C1D1Ev,_ZThn48_N7S1182C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N7S1182C1D0Ev,_ZThn48_N7S1182C1D0Ev),
  ABISELECT(56,28),
  ABISELECT(-104,-52),
  ABISELECT(64,32),
  ABISELECT(112,60),
  ABISELECT(-104,-52),
  ABISELECT(56,28),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI7S1182C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn104_N7S1182C1D1Ev,_ZThn52_N7S1182C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn104_N7S1182C1D0Ev,_ZThn52_N7S1182C1D0Ev),
  ABISELECT(40,20),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(40,20),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI7S1182C1[0]),
  ABISELECT(32,16),
  ABISELECT(48,28),
  ABISELECT(64,36),
  ABISELECT(96,52),
  ABISELECT(-136,-68),
  ABISELECT(24,12),
  ABISELECT(-136,-68),
  ABISELECT(24,12),
  ABISELECT(-136,-68),
  (VTBL_ENTRY)&(_ZTI7S1182C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn136_N7S1182C1D1Ev,_ZThn68_N7S1182C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn136_N7S1182C1D0Ev,_ZThn68_N7S1182C1D0Ev),
  ABISELECT(-152,-76),
  ABISELECT(8,4),
  ABISELECT(-152,-76),
  (VTBL_ENTRY)&(_ZTI7S1182C1[0]),
  ABISELECT(-168,-84),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-8,-4),
  ABISELECT(-168,-84),
  ABISELECT(-168,-84),
  ABISELECT(-8,-4),
  ABISELECT(-168,-84),
  (VTBL_ENTRY)&(_ZTI7S1182C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S1182C1D1Ev,_ZTv0_n44_N7S1182C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S1182C1D0Ev,_ZTv0_n44_N7S1182C1D0Ev),
  ABISELECT(-184,-96),
  ABISELECT(-24,-16),
  ABISELECT(-184,-96),
  ABISELECT(-16,-12),
  ABISELECT(-184,-96),
  ABISELECT(-24,-16),
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI7S1182C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C1D1Ev,_ZTv0_n32_N7S1182C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C1D0Ev,_ZTv0_n32_N7S1182C1D0Ev),
  ABISELECT(-200,-104),
  ABISELECT(-40,-24),
  ABISELECT(-200,-104),
  (VTBL_ENTRY)&(_ZTI7S1182C1[0]),
  ABISELECT(-216,-112),
  ABISELECT(-56,-32),
  ABISELECT(-216,-112),
  ABISELECT(-48,-28),
  ABISELECT(-216,-112),
  ABISELECT(-56,-32),
  ABISELECT(-216,-112),
  (VTBL_ENTRY)&(_ZTI7S1182C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C1D1Ev,_ZTv0_n32_N7S1182C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C1D0Ev,_ZTv0_n32_N7S1182C1D0Ev),
  ABISELECT(-232,-120),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-232,-120),
  ABISELECT(-72,-40),
  ABISELECT(-232,-120),
  ABISELECT(-72,-40),
  ABISELECT(-232,-120),
  (VTBL_ENTRY)&(_ZTI7S1182C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S1182C1D1Ev,_ZTv0_n44_N7S1182C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S1182C1D0Ev,_ZTv0_n44_N7S1182C1D0Ev),
  ABISELECT(8,4),
  ABISELECT(-248,-128),
  ABISELECT(56,32),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-23,-11),
  ABISELECT(-32,-16),
  ABISELECT(-48,-24),
  ABISELECT(-80,-44),
  ABISELECT(-64,-32),
  ABISELECT(-80,-44),
  ABISELECT(24,16),
  ABISELECT(-88,-48),
  ABISELECT(-248,-128),
  ABISELECT(-248,-128),
  ABISELECT(-88,-48),
  ABISELECT(-248,-128),
  (VTBL_ENTRY)&(_ZTI7S1182C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N7S1182C1D1Ev,_ZTv0_n68_N7S1182C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N7S1182C1D0Ev,_ZTv0_n68_N7S1182C1D0Ev),
  ABISELECT(48,28),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-88,-48),
  ABISELECT(-72,-36),
  ABISELECT(-96,-52),
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  ABISELECT(-96,-52),
  ABISELECT(-256,-132),
  (VTBL_ENTRY)&(_ZTI7S1182C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N7S1182C1D1Ev,_ZTvn4_n68_N7S1182C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N7S1182C1D0Ev,_ZTvn4_n68_N7S1182C1D0Ev),
  (VTBL_ENTRY)&_ZN8S1182C182v1Ev,
  ABISELECT(-272,-144),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-47,-27),
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-104,-60),
  ABISELECT(-112,-64),
  ABISELECT(-272,-144),
  ABISELECT(-104,-60),
  ABISELECT(-56,-32),
  ABISELECT(-272,-144),
  ABISELECT(-112,-64),
  ABISELECT(-272,-144),
  (VTBL_ENTRY)&(_ZTI7S1182C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S1182C1D1Ev,_ZTv0_n60_N7S1182C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S1182C1D0Ev,_ZTv0_n60_N7S1182C1D0Ev),
  ABISELECT(-128,-72),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-128,-72),
  ABISELECT(-288,-152),
  (VTBL_ENTRY)&(_ZTI7S1182C1[0]),
  ABISELECT(-304,-160),
  ABISELECT(-144,-80),
  ABISELECT(-304,-160),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-304,-160),
  ABISELECT(-144,-80),
  ABISELECT(-304,-160),
  (VTBL_ENTRY)&(_ZTI7S1182C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S1182C1D1Ev,_ZTv0_n36_N7S1182C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S1182C1D0Ev,_ZTv0_n36_N7S1182C1D0Ev),
  ABISELECT(-160,-88),
  ABISELECT(-320,-168),
  ABISELECT(-320,-168),
  ABISELECT(-160,-88),
  ABISELECT(-320,-168),
  (VTBL_ENTRY)&(_ZTI7S1182C1[0]),
  ABISELECT(-336,-176),
  ABISELECT(-176,-96),
  ABISELECT(-336,-176),
  (VTBL_ENTRY)&(_ZTI7S1182C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S1182C1D1Ev,_ZTv0_n16_N7S1182C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S1182C1D0Ev,_ZTv0_n16_N7S1182C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S1182C1[];
extern void _ZN7S1182C2D1Ev();
extern void _ZN7S1182C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1182C2__7S1182C1[] = {
  ABISELECT(304,160),
  ABISELECT(272,144),
  ABISELECT(248,128),
  ABISELECT(232,120),
  ABISELECT(232,120),
  ABISELECT(225,117),
  ABISELECT(216,112),
  ABISELECT(200,104),
  ABISELECT(168,84),
  ABISELECT(184,96),
  ABISELECT(168,84),
  ABISELECT(160,80),
  0,
  0,
  ABISELECT(160,80),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C2[0]),
  (VTBL_ENTRY)&_ZN7S1182C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1182C2D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1182C37S1182C2__7S1182C1[] = {
  ABISELECT(160,80),
  0,
  0,
  ABISELECT(160,80),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
extern void _ZN8S1182C12D1Ev();
extern void _ZN8S1182C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C127S1182C2__7S1182C1[] = {
  ABISELECT(224,116),
  ABISELECT(224,116),
  ABISELECT(217,113),
  ABISELECT(192,100),
  ABISELECT(176,92),
  ABISELECT(160,80),
  ABISELECT(152,76),
  ABISELECT(-8,-4),
  ABISELECT(160,80),
  ABISELECT(208,108),
  ABISELECT(-8,-4),
  ABISELECT(152,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&_ZN8S1182C12D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C12D0Ev,
};
extern void _ZN8S1182C16D1Ev();
extern void _ZN8S1182C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C168S1182C127S1182C2__7S1182C1[] = {
  ABISELECT(152,76),
  ABISELECT(-8,-4),
  ABISELECT(160,80),
  ABISELECT(208,108),
  ABISELECT(-8,-4),
  ABISELECT(152,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
  (VTBL_ENTRY)&_ZN8S1182C16D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1182C118S1182C168S1182C127S1182C2__A1__7S1182C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(152,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C11[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C118S1182C168S1182C127S1182C2__A4__7S1182C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(152,76),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C168S1182C127S1182C2__A2__7S1182C1[] = {
  ABISELECT(136,68),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(136,68),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__7S1182C38S1182C168S1182C127S1182C2__A2__7S1182C1[] = {
  0,
  ABISELECT(160,80),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev)();
extern void ABISELECT(_ZThn208_N8S1182C16D1Ev,_ZThn108_N8S1182C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev)();
extern void ABISELECT(_ZThn208_N8S1182C16D0Ev,_ZThn108_N8S1182C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C10__8S1182C168S1182C127S1182C2__7S1182C1[] = {
  ABISELECT(-208,-108),
  ABISELECT(-56,-32),
  ABISELECT(-216,-112),
  ABISELECT(-48,-28),
  ABISELECT(-216,-112),
  ABISELECT(-56,-32),
  ABISELECT(-208,-108),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C168S1182C127S1182C2__7S1182C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-168,-84),
  ABISELECT(-168,-84),
  ABISELECT(-8,-4),
  ABISELECT(-160,-80),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__A1__8S1182C168S1182C127S1182C2__7S1182C1[] = {
  0,
  ABISELECT(160,80),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__A__8S1182C168S1182C127S1182C2__7S1182C1[] = {
  ABISELECT(136,68),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(136,68),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev)();
extern void ABISELECT(_ZThn160_N8S1182C12D1Ev,_ZThn80_N8S1182C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev)();
extern void ABISELECT(_ZThn160_N8S1182C12D0Ev,_ZThn80_N8S1182C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1182C8__8S1182C127S1182C2__7S1182C1[] = {
  ABISELECT(-160,-80),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-8,-4),
  ABISELECT(-168,-84),
  ABISELECT(-168,-84),
  ABISELECT(-8,-4),
  ABISELECT(-160,-80),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev)();
extern void ABISELECT(_ZThn176_N8S1182C12D1Ev,_ZThn92_N8S1182C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev)();
extern void ABISELECT(_ZThn176_N8S1182C12D0Ev,_ZThn92_N8S1182C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1182C9__8S1182C127S1182C2__7S1182C1[] = {
  ABISELECT(-176,-92),
  ABISELECT(-24,-16),
  ABISELECT(-184,-96),
  ABISELECT(-16,-12),
  ABISELECT(-184,-96),
  ABISELECT(-24,-16),
  ABISELECT(-176,-92),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__8S1182C127S1182C2__7S1182C1[] = {
  0,
  ABISELECT(160,80),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__8S1182C127S1182C2__7S1182C1[] = {
  ABISELECT(-200,-104),
  ABISELECT(-40,-24),
  ABISELECT(-192,-100),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev)();
extern void ABISELECT(_ZThn208_N8S1182C12D1Ev,_ZThn108_N8S1182C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev)();
extern void ABISELECT(_ZThn208_N8S1182C12D0Ev,_ZThn108_N8S1182C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C10__A1__8S1182C127S1182C2__7S1182C1[] = {
  ABISELECT(-208,-108),
  ABISELECT(-56,-32),
  ABISELECT(-216,-112),
  ABISELECT(-48,-28),
  ABISELECT(-216,-112),
  ABISELECT(-56,-32),
  ABISELECT(-208,-108),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev)();
extern void ABISELECT(_ZThn224_N8S1182C12D1Ev,_ZThn116_N8S1182C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev)();
extern void ABISELECT(_ZThn224_N8S1182C12D0Ev,_ZThn116_N8S1182C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C14__8S1182C127S1182C2__7S1182C1[] = {
  ABISELECT(-224,-116),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-232,-120),
  ABISELECT(-72,-40),
  ABISELECT(-232,-120),
  ABISELECT(-72,-40),
  ABISELECT(-224,-116),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C16__A1__8S1182C127S1182C2__7S1182C1[] = {
  ABISELECT(136,68),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(136,68),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S1182C2D1Ev,_ZTv0_n44_N7S1182C2D1Ev)();
extern void ABISELECT(_ZThn168_N7S1182C2D1Ev,_ZThn84_N7S1182C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S1182C2D0Ev,_ZTv0_n44_N7S1182C2D0Ev)();
extern void ABISELECT(_ZThn168_N7S1182C2D0Ev,_ZThn84_N7S1182C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1182C8__7S1182C2__7S1182C1[] = {
  ABISELECT(-168,-84),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-8,-4),
  ABISELECT(-168,-84),
  ABISELECT(-168,-84),
  ABISELECT(-8,-4),
  ABISELECT(-168,-84),
  (VTBL_ENTRY)&(_ZTI7S1182C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S1182C2D1Ev,_ZTv0_n44_N7S1182C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S1182C2D0Ev,_ZTv0_n44_N7S1182C2D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S1182C2D1Ev,_ZTv0_n32_N7S1182C2D1Ev)();
extern void ABISELECT(_ZThn184_N7S1182C2D1Ev,_ZThn96_N7S1182C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1182C2D0Ev,_ZTv0_n32_N7S1182C2D0Ev)();
extern void ABISELECT(_ZThn184_N7S1182C2D0Ev,_ZThn96_N7S1182C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1182C9__7S1182C2__7S1182C1[] = {
  ABISELECT(-184,-96),
  ABISELECT(-24,-16),
  ABISELECT(-184,-96),
  ABISELECT(-16,-12),
  ABISELECT(-184,-96),
  ABISELECT(-24,-16),
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI7S1182C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C2D1Ev,_ZTv0_n32_N7S1182C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C2D0Ev,_ZTv0_n32_N7S1182C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__7S1182C2__7S1182C1[] = {
  ABISELECT(-200,-104),
  ABISELECT(-40,-24),
  ABISELECT(-200,-104),
  (VTBL_ENTRY)&(_ZTI7S1182C2[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S1182C2D1Ev,_ZTv0_n32_N7S1182C2D1Ev)();
extern void ABISELECT(_ZThn216_N7S1182C2D1Ev,_ZThn112_N7S1182C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1182C2D0Ev,_ZTv0_n32_N7S1182C2D0Ev)();
extern void ABISELECT(_ZThn216_N7S1182C2D0Ev,_ZThn112_N7S1182C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C10__A1__7S1182C2__7S1182C1[] = {
  ABISELECT(-216,-112),
  ABISELECT(-56,-32),
  ABISELECT(-216,-112),
  ABISELECT(-48,-28),
  ABISELECT(-216,-112),
  ABISELECT(-56,-32),
  ABISELECT(-216,-112),
  (VTBL_ENTRY)&(_ZTI7S1182C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C2D1Ev,_ZTv0_n32_N7S1182C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C2D0Ev,_ZTv0_n32_N7S1182C2D0Ev),
};
extern void ABISELECT(_ZThn8_N7S1182C2D1Ev,_ZThn4_N7S1182C2D1Ev)();
extern void ABISELECT(_ZThn8_N7S1182C2D0Ev,_ZThn4_N7S1182C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1182C12__A__7S1182C2__7S1182C1[] = {
  ABISELECT(224,116),
  ABISELECT(224,116),
  ABISELECT(217,113),
  ABISELECT(192,100),
  ABISELECT(176,92),
  ABISELECT(160,80),
  ABISELECT(152,76),
  ABISELECT(-8,-4),
  ABISELECT(160,80),
  ABISELECT(208,108),
  ABISELECT(-8,-4),
  ABISELECT(152,76),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S1182C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S1182C2D1Ev,_ZThn4_N7S1182C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S1182C2D0Ev,_ZThn4_N7S1182C2D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S1182C2D1Ev,_ZTv0_n44_N7S1182C2D1Ev)();
extern void ABISELECT(_ZThn232_N7S1182C2D1Ev,_ZThn120_N7S1182C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S1182C2D0Ev,_ZTv0_n44_N7S1182C2D0Ev)();
extern void ABISELECT(_ZThn232_N7S1182C2D0Ev,_ZThn120_N7S1182C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C14__7S1182C2__7S1182C1[] = {
  ABISELECT(-232,-120),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-232,-120),
  ABISELECT(-72,-40),
  ABISELECT(-232,-120),
  ABISELECT(-72,-40),
  ABISELECT(-232,-120),
  (VTBL_ENTRY)&(_ZTI7S1182C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S1182C2D1Ev,_ZTv0_n44_N7S1182C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S1182C2D0Ev,_ZTv0_n44_N7S1182C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C168S1182C12__A2__7S1182C2__7S1182C1[] = {
  ABISELECT(136,68),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(136,68),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S1182C2[0]),
};
extern void ABISELECT(_ZTv0_n136_N7S1182C2D1Ev,_ZTv0_n68_N7S1182C2D1Ev)();
extern void ABISELECT(_ZThn248_N7S1182C2D1Ev,_ZThn128_N7S1182C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N7S1182C2D0Ev,_ZTv0_n68_N7S1182C2D0Ev)();
extern void ABISELECT(_ZThn248_N7S1182C2D0Ev,_ZThn128_N7S1182C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C17__7S1182C2__7S1182C1[] = {
  ABISELECT(8,4),
  ABISELECT(-248,-128),
  ABISELECT(56,32),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-23,-11),
  ABISELECT(-32,-16),
  ABISELECT(-48,-24),
  ABISELECT(-80,-44),
  ABISELECT(-64,-32),
  ABISELECT(-80,-44),
  ABISELECT(24,16),
  ABISELECT(-88,-48),
  ABISELECT(-248,-128),
  ABISELECT(-248,-128),
  ABISELECT(-88,-48),
  ABISELECT(-248,-128),
  (VTBL_ENTRY)&(_ZTI7S1182C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N7S1182C2D1Ev,_ZTv0_n68_N7S1182C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N7S1182C2D0Ev,_ZTv0_n68_N7S1182C2D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N7S1182C2D1Ev,_ZTv0_n60_N7S1182C2D1Ev)();
extern void ABISELECT(_ZThn272_N7S1182C2D1Ev,_ZThn144_N7S1182C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S1182C2D0Ev,_ZTv0_n60_N7S1182C2D0Ev)();
extern void ABISELECT(_ZThn272_N7S1182C2D0Ev,_ZThn144_N7S1182C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C12__A1__7S1182C2__7S1182C1[] = {
  ABISELECT(-272,-144),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-47,-27),
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-104,-60),
  ABISELECT(-112,-64),
  ABISELECT(-272,-144),
  ABISELECT(-104,-60),
  ABISELECT(-56,-32),
  ABISELECT(-272,-144),
  ABISELECT(-112,-64),
  ABISELECT(-272,-144),
  (VTBL_ENTRY)&(_ZTI7S1182C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S1182C2D1Ev,_ZTv0_n60_N7S1182C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S1182C2D0Ev,_ZTv0_n60_N7S1182C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C168S1182C12__A3__7S1182C2__7S1182C1[] = {
  ABISELECT(-128,-72),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-128,-72),
  ABISELECT(-288,-152),
  (VTBL_ENTRY)&(_ZTI7S1182C2[0]),
};
extern void ABISELECT(_ZTvn8_n136_N7S1182C2D1Ev,_ZTvn4_n68_N7S1182C2D1Ev)();
extern void ABISELECT(_ZTvn8_n136_N7S1182C2D0Ev,_ZTvn4_n68_N7S1182C2D0Ev)();
extern void _ZN8S1182C182v1Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C188S1182C17__7S1182C2__7S1182C1[] = {
  ABISELECT(48,28),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-88,-48),
  ABISELECT(-72,-36),
  ABISELECT(-96,-52),
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  ABISELECT(-96,-52),
  ABISELECT(-256,-132),
  (VTBL_ENTRY)&(_ZTI7S1182C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N7S1182C2D1Ev,_ZTvn4_n68_N7S1182C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N7S1182C2D0Ev,_ZTvn4_n68_N7S1182C2D0Ev),
  (VTBL_ENTRY)&_ZN8S1182C182v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N7S1182C2D1Ev,_ZTv0_n36_N7S1182C2D1Ev)();
extern void ABISELECT(_ZThn304_N7S1182C2D1Ev,_ZThn160_N7S1182C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S1182C2D0Ev,_ZTv0_n36_N7S1182C2D0Ev)();
extern void ABISELECT(_ZThn304_N7S1182C2D0Ev,_ZThn160_N7S1182C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C16__A2__7S1182C2__7S1182C1[] = {
  ABISELECT(-304,-160),
  ABISELECT(-144,-80),
  ABISELECT(-304,-160),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-304,-160),
  ABISELECT(-144,-80),
  ABISELECT(-304,-160),
  (VTBL_ENTRY)&(_ZTI7S1182C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S1182C2D1Ev,_ZTv0_n36_N7S1182C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S1182C2D0Ev,_ZTv0_n36_N7S1182C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C16__A5__7S1182C2__7S1182C1[] = {
  ABISELECT(-160,-88),
  ABISELECT(-320,-168),
  ABISELECT(-320,-168),
  ABISELECT(-160,-88),
  ABISELECT(-320,-168),
  (VTBL_ENTRY)&(_ZTI7S1182C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1182C19__7S1182C1[] = {
  ABISELECT(-40,-20),
  ABISELECT(120,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C19[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C19__A7__7S1182C1[] = {
  ABISELECT(-40,-20),
  ABISELECT(120,60),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
extern void _ZN8S1182C20D1Ev();
extern void _ZN8S1182C20D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C20__7S1182C1[] = {
  ABISELECT(280,148),
  ABISELECT(176,92),
  ABISELECT(176,92),
  ABISELECT(169,89),
  ABISELECT(160,84),
  ABISELECT(144,76),
  ABISELECT(-56,-28),
  ABISELECT(112,56),
  ABISELECT(104,52),
  ABISELECT(128,68),
  ABISELECT(112,56),
  ABISELECT(-56,-28),
  ABISELECT(104,52),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C20[0]),
  (VTBL_ENTRY)&_ZN8S1182C20D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C20D0Ev,
};
extern void _ZN8S1182C22D1Ev();
extern void _ZN8S1182C22D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C228S1182C20__7S1182C1[] = {
  ABISELECT(176,92),
  ABISELECT(176,92),
  ABISELECT(169,89),
  ABISELECT(160,84),
  ABISELECT(144,76),
  ABISELECT(-56,-28),
  ABISELECT(112,56),
  ABISELECT(104,52),
  ABISELECT(128,68),
  ABISELECT(112,56),
  ABISELECT(-56,-28),
  ABISELECT(104,52),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C22[0]),
  (VTBL_ENTRY)&_ZN8S1182C22D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C22D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1182C158S1182C228S1182C20__A2__7S1182C1[] = {
  ABISELECT(104,52),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C15[0]),
};
extern void _ZN8S1182C12D1Ev();
extern void _ZN8S1182C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C128S1182C228S1182C20__A2__7S1182C1[] = {
  ABISELECT(168,88),
  ABISELECT(168,88),
  ABISELECT(161,85),
  ABISELECT(136,72),
  ABISELECT(120,64),
  ABISELECT(104,52),
  ABISELECT(96,48),
  ABISELECT(-64,-32),
  ABISELECT(104,52),
  ABISELECT(152,80),
  ABISELECT(-64,-32),
  ABISELECT(96,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&_ZN8S1182C12D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C12D0Ev,
};
extern void _ZN8S1182C16D1Ev();
extern void _ZN8S1182C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C168S1182C128S1182C228S1182C20__A3__7S1182C1[] = {
  ABISELECT(96,48),
  ABISELECT(-64,-32),
  ABISELECT(104,52),
  ABISELECT(152,80),
  ABISELECT(-64,-32),
  ABISELECT(96,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
  (VTBL_ENTRY)&_ZN8S1182C16D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1182C118S1182C168S1182C128S1182C228S1182C20__A4__7S1182C1[] = {
  ABISELECT(-64,-32),
  ABISELECT(96,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C11[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C118S1182C168S1182C128S1182C228S1182C20__A8__7S1182C1[] = {
  ABISELECT(-64,-32),
  ABISELECT(96,48),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C168S1182C128S1182C228S1182C20__A6__7S1182C1[] = {
  ABISELECT(80,40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(80,40),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__7S1182C38S1182C168S1182C128S1182C228S1182C20__A6__7S1182C1[] = {
  0,
  ABISELECT(160,80),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev)();
extern void ABISELECT(_ZThn152_N8S1182C16D1Ev,_ZThn80_N8S1182C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev)();
extern void ABISELECT(_ZThn152_N8S1182C16D0Ev,_ZThn80_N8S1182C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C10__8S1182C168S1182C128S1182C228S1182C20__A3__7S1182C1[] = {
  ABISELECT(-152,-80),
  ABISELECT(-56,-32),
  ABISELECT(-216,-112),
  ABISELECT(-48,-28),
  ABISELECT(-216,-112),
  ABISELECT(-56,-32),
  ABISELECT(-152,-80),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C168S1182C128S1182C228S1182C20__A3__7S1182C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-168,-84),
  ABISELECT(-168,-84),
  ABISELECT(-8,-4),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__A1__8S1182C168S1182C128S1182C228S1182C20__A3__7S1182C1[] = {
  0,
  ABISELECT(160,80),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__A__8S1182C168S1182C128S1182C228S1182C20__A3__7S1182C1[] = {
  ABISELECT(80,40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(80,40),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev)();
extern void ABISELECT(_ZThn104_N8S1182C12D1Ev,_ZThn52_N8S1182C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev)();
extern void ABISELECT(_ZThn104_N8S1182C12D0Ev,_ZThn52_N8S1182C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1182C8__8S1182C128S1182C228S1182C20__A2__7S1182C1[] = {
  ABISELECT(-104,-52),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-8,-4),
  ABISELECT(-168,-84),
  ABISELECT(-168,-84),
  ABISELECT(-8,-4),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev)();
extern void ABISELECT(_ZThn120_N8S1182C12D1Ev,_ZThn64_N8S1182C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev)();
extern void ABISELECT(_ZThn120_N8S1182C12D0Ev,_ZThn64_N8S1182C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1182C9__8S1182C128S1182C228S1182C20__A2__7S1182C1[] = {
  ABISELECT(-120,-64),
  ABISELECT(-24,-16),
  ABISELECT(-184,-96),
  ABISELECT(-16,-12),
  ABISELECT(-184,-96),
  ABISELECT(-24,-16),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__8S1182C128S1182C228S1182C20__A2__7S1182C1[] = {
  0,
  ABISELECT(160,80),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__8S1182C128S1182C228S1182C20__A2__7S1182C1[] = {
  ABISELECT(-200,-104),
  ABISELECT(-40,-24),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev)();
extern void ABISELECT(_ZThn152_N8S1182C12D1Ev,_ZThn80_N8S1182C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev)();
extern void ABISELECT(_ZThn152_N8S1182C12D0Ev,_ZThn80_N8S1182C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C10__A1__8S1182C128S1182C228S1182C20__A2__7S1182C1[] = {
  ABISELECT(-152,-80),
  ABISELECT(-56,-32),
  ABISELECT(-216,-112),
  ABISELECT(-48,-28),
  ABISELECT(-216,-112),
  ABISELECT(-56,-32),
  ABISELECT(-152,-80),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev)();
extern void ABISELECT(_ZThn168_N8S1182C12D1Ev,_ZThn88_N8S1182C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev)();
extern void ABISELECT(_ZThn168_N8S1182C12D0Ev,_ZThn88_N8S1182C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C14__8S1182C128S1182C228S1182C20__A2__7S1182C1[] = {
  ABISELECT(-168,-88),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-232,-120),
  ABISELECT(-72,-40),
  ABISELECT(-232,-120),
  ABISELECT(-72,-40),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C16__A1__8S1182C128S1182C228S1182C20__A2__7S1182C1[] = {
  ABISELECT(80,40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(80,40),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
};
extern void _ZN8S1182C21D1Ev();
extern void _ZN8S1182C21D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C218S1182C228S1182C20__A1__7S1182C1[] = {
  ABISELECT(64,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C21[0]),
  (VTBL_ENTRY)&_ZN8S1182C21D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C21D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1182C158S1182C218S1182C228S1182C20__A3__7S1182C1[] = {
  ABISELECT(64,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C15[0]),
};
extern void ABISELECT(_ZThn8_N8S1182C22D1Ev,_ZThn4_N8S1182C22D1Ev)();
extern void ABISELECT(_ZThn8_N8S1182C22D0Ev,_ZThn4_N8S1182C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1182C12__8S1182C228S1182C20__7S1182C1[] = {
  ABISELECT(168,88),
  ABISELECT(168,88),
  ABISELECT(161,85),
  ABISELECT(136,72),
  ABISELECT(120,64),
  ABISELECT(104,52),
  ABISELECT(96,48),
  ABISELECT(-64,-32),
  ABISELECT(104,52),
  ABISELECT(152,80),
  ABISELECT(-64,-32),
  ABISELECT(96,48),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S1182C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S1182C22D1Ev,_ZThn4_N8S1182C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S1182C22D0Ev,_ZThn4_N8S1182C22D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S1182C22D1Ev,_ZTv0_n44_N8S1182C22D1Ev)();
extern void ABISELECT(_ZThn112_N8S1182C22D1Ev,_ZThn56_N8S1182C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1182C22D0Ev,_ZTv0_n44_N8S1182C22D0Ev)();
extern void ABISELECT(_ZThn112_N8S1182C22D0Ev,_ZThn56_N8S1182C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1182C8__8S1182C228S1182C20__7S1182C1[] = {
  ABISELECT(-112,-56),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-8,-4),
  ABISELECT(-168,-84),
  ABISELECT(-168,-84),
  ABISELECT(-8,-4),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S1182C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C22D1Ev,_ZTv0_n44_N8S1182C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C22D0Ev,_ZTv0_n44_N8S1182C22D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C22D1Ev,_ZTv0_n32_N8S1182C22D1Ev)();
extern void ABISELECT(_ZThn128_N8S1182C22D1Ev,_ZThn68_N8S1182C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C22D0Ev,_ZTv0_n32_N8S1182C22D0Ev)();
extern void ABISELECT(_ZThn128_N8S1182C22D0Ev,_ZThn68_N8S1182C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1182C9__8S1182C228S1182C20__7S1182C1[] = {
  ABISELECT(-128,-68),
  ABISELECT(-24,-16),
  ABISELECT(-184,-96),
  ABISELECT(-16,-12),
  ABISELECT(-184,-96),
  ABISELECT(-24,-16),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S1182C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C22D1Ev,_ZTv0_n32_N8S1182C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C22D0Ev,_ZTv0_n32_N8S1182C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__8S1182C228S1182C20__7S1182C1[] = {
  0,
  ABISELECT(160,80),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI8S1182C22[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__8S1182C228S1182C20__7S1182C1[] = {
  ABISELECT(-200,-104),
  ABISELECT(-40,-24),
  ABISELECT(-144,-76),
  (VTBL_ENTRY)&(_ZTI8S1182C22[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C22D1Ev,_ZTv0_n32_N8S1182C22D1Ev)();
extern void ABISELECT(_ZThn160_N8S1182C22D1Ev,_ZThn84_N8S1182C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C22D0Ev,_ZTv0_n32_N8S1182C22D0Ev)();
extern void ABISELECT(_ZThn160_N8S1182C22D0Ev,_ZThn84_N8S1182C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C10__A1__8S1182C228S1182C20__7S1182C1[] = {
  ABISELECT(-160,-84),
  ABISELECT(-56,-32),
  ABISELECT(-216,-112),
  ABISELECT(-48,-28),
  ABISELECT(-216,-112),
  ABISELECT(-56,-32),
  ABISELECT(-160,-84),
  (VTBL_ENTRY)&(_ZTI8S1182C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C22D1Ev,_ZTv0_n32_N8S1182C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C22D0Ev,_ZTv0_n32_N8S1182C22D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S1182C22D1Ev,_ZTv0_n44_N8S1182C22D1Ev)();
extern void ABISELECT(_ZThn176_N8S1182C22D1Ev,_ZThn92_N8S1182C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1182C22D0Ev,_ZTv0_n44_N8S1182C22D0Ev)();
extern void ABISELECT(_ZThn176_N8S1182C22D0Ev,_ZThn92_N8S1182C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C14__8S1182C228S1182C20__7S1182C1[] = {
  ABISELECT(-176,-92),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-232,-120),
  ABISELECT(-72,-40),
  ABISELECT(-232,-120),
  ABISELECT(-72,-40),
  ABISELECT(-176,-92),
  (VTBL_ENTRY)&(_ZTI8S1182C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C22D1Ev,_ZTv0_n44_N8S1182C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C22D0Ev,_ZTv0_n44_N8S1182C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C168S1182C12__A1__8S1182C228S1182C20__7S1182C1[] = {
  ABISELECT(80,40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(80,40),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S1182C22[0]),
};
extern void ABISELECT(_ZThn40_N8S1182C22D1Ev,_ZThn20_N8S1182C22D1Ev)();
extern void ABISELECT(_ZThn40_N8S1182C22D0Ev,_ZThn20_N8S1182C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1182C21__8S1182C228S1182C20__7S1182C1[] = {
  ABISELECT(64,32),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S1182C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S1182C22D1Ev,_ZThn20_N8S1182C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S1182C22D0Ev,_ZThn20_N8S1182C22D0Ev),
};
extern void _ZN8S1182C16D1Ev();
extern void _ZN8S1182C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C168S1182C20__A4__7S1182C1[] = {
  ABISELECT(56,28),
  ABISELECT(-104,-52),
  ABISELECT(64,32),
  ABISELECT(112,60),
  ABISELECT(-104,-52),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
  (VTBL_ENTRY)&_ZN8S1182C16D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1182C118S1182C168S1182C20__A5__7S1182C1[] = {
  ABISELECT(-104,-52),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C11[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C118S1182C168S1182C20__A9__7S1182C1[] = {
  ABISELECT(-104,-52),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C168S1182C20__A7__7S1182C1[] = {
  ABISELECT(40,20),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__7S1182C38S1182C168S1182C20__A7__7S1182C1[] = {
  0,
  ABISELECT(160,80),
  ABISELECT(120,60),
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev)();
extern void ABISELECT(_ZThn112_N8S1182C16D1Ev,_ZThn60_N8S1182C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev)();
extern void ABISELECT(_ZThn112_N8S1182C16D0Ev,_ZThn60_N8S1182C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C10__8S1182C168S1182C20__A4__7S1182C1[] = {
  ABISELECT(-112,-60),
  ABISELECT(-56,-32),
  ABISELECT(-216,-112),
  ABISELECT(-48,-28),
  ABISELECT(-216,-112),
  ABISELECT(-56,-32),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C168S1182C20__A4__7S1182C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-168,-84),
  ABISELECT(-168,-84),
  ABISELECT(-8,-4),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__A1__8S1182C168S1182C20__A4__7S1182C1[] = {
  0,
  ABISELECT(160,80),
  ABISELECT(104,52),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__A__8S1182C168S1182C20__A4__7S1182C1[] = {
  ABISELECT(40,20),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(40,20),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
extern void _ZN8S1182C14D1Ev();
extern void _ZN8S1182C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C148S1182C20__A1__7S1182C1[] = {
  ABISELECT(32,16),
  ABISELECT(48,28),
  ABISELECT(64,36),
  ABISELECT(96,52),
  ABISELECT(-136,-68),
  ABISELECT(24,12),
  ABISELECT(-136,-68),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
  (VTBL_ENTRY)&_ZN8S1182C14D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C14D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__8S1182C148S1182C20__A1__7S1182C1[] = {
  0,
  ABISELECT(160,80),
  ABISELECT(136,68),
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1182C15__8S1182C148S1182C20__A1__7S1182C1[] = {
  ABISELECT(-72,-40),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__8S1182C148S1182C20__A1__7S1182C1[] = {
  ABISELECT(-200,-104),
  ABISELECT(-40,-24),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C14D1Ev,_ZTv0_n32_N8S1182C14D1Ev)();
extern void ABISELECT(_ZThn48_N8S1182C14D1Ev,_ZThn28_N8S1182C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C14D0Ev,_ZTv0_n32_N8S1182C14D0Ev)();
extern void ABISELECT(_ZThn48_N8S1182C14D0Ev,_ZThn28_N8S1182C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1182C9__8S1182C148S1182C20__A1__7S1182C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(-24,-16),
  ABISELECT(-184,-96),
  ABISELECT(-16,-12),
  ABISELECT(-184,-96),
  ABISELECT(-24,-16),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C14D1Ev,_ZTv0_n32_N8S1182C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C14D0Ev,_ZTv0_n32_N8S1182C14D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C148S1182C20__A1__7S1182C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-168,-84),
  ABISELECT(-168,-84),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
};
extern void ABISELECT(_ZTv0_n32_N8S1182C20D1Ev,_ZTv0_n16_N8S1182C20D1Ev)();
extern void ABISELECT(_ZThn280_N8S1182C20D1Ev,_ZThn148_N8S1182C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S1182C20D0Ev,_ZTv0_n16_N8S1182C20D0Ev)();
extern void ABISELECT(_ZThn280_N8S1182C20D0Ev,_ZThn148_N8S1182C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C21__8S1182C20__7S1182C1[] = {
  ABISELECT(-280,-148),
  ABISELECT(-176,-96),
  ABISELECT(-280,-148),
  (VTBL_ENTRY)&(_ZTI8S1182C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S1182C20D1Ev,_ZTv0_n16_N8S1182C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S1182C20D0Ev,_ZTv0_n16_N8S1182C20D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C20D1Ev,_ZTv0_n32_N8S1182C20D1Ev)();
extern void ABISELECT(_ZThn128_N8S1182C20D1Ev,_ZThn68_N8S1182C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C20D0Ev,_ZTv0_n32_N8S1182C20D0Ev)();
extern void ABISELECT(_ZThn128_N8S1182C20D0Ev,_ZThn68_N8S1182C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1182C9__8S1182C20__7S1182C1[] = {
  ABISELECT(-128,-68),
  ABISELECT(-24,-16),
  ABISELECT(-184,-96),
  ABISELECT(-16,-12),
  ABISELECT(-184,-96),
  ABISELECT(-24,-16),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S1182C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C20D1Ev,_ZTv0_n32_N8S1182C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C20D0Ev,_ZTv0_n32_N8S1182C20D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S1182C20D1Ev,_ZTv0_n44_N8S1182C20D1Ev)();
extern void ABISELECT(_ZThn112_N8S1182C20D1Ev,_ZThn56_N8S1182C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1182C20D0Ev,_ZTv0_n44_N8S1182C20D0Ev)();
extern void ABISELECT(_ZThn112_N8S1182C20D0Ev,_ZThn56_N8S1182C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1182C8__8S1182C20__7S1182C1[] = {
  ABISELECT(-112,-56),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-8,-4),
  ABISELECT(-168,-84),
  ABISELECT(-168,-84),
  ABISELECT(-8,-4),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S1182C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C20D1Ev,_ZTv0_n44_N8S1182C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C20D0Ev,_ZTv0_n44_N8S1182C20D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__8S1182C20__7S1182C1[] = {
  0,
  ABISELECT(160,80),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI8S1182C20[0]),
};
extern void ABISELECT(_ZThn8_N8S1182C20D1Ev,_ZThn4_N8S1182C20D1Ev)();
extern void ABISELECT(_ZThn8_N8S1182C20D0Ev,_ZThn4_N8S1182C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1182C128S1182C22__8S1182C20__7S1182C1[] = {
  ABISELECT(168,88),
  ABISELECT(168,88),
  ABISELECT(161,85),
  ABISELECT(136,72),
  ABISELECT(120,64),
  ABISELECT(104,52),
  ABISELECT(96,48),
  ABISELECT(-64,-32),
  ABISELECT(104,52),
  ABISELECT(152,80),
  ABISELECT(-64,-32),
  ABISELECT(96,48),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S1182C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S1182C20D1Ev,_ZThn4_N8S1182C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S1182C20D0Ev,_ZThn4_N8S1182C20D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__8S1182C20__7S1182C1[] = {
  ABISELECT(-200,-104),
  ABISELECT(-40,-24),
  ABISELECT(-144,-76),
  (VTBL_ENTRY)&(_ZTI8S1182C20[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C20D1Ev,_ZTv0_n32_N8S1182C20D1Ev)();
extern void ABISELECT(_ZThn160_N8S1182C20D1Ev,_ZThn84_N8S1182C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C20D0Ev,_ZTv0_n32_N8S1182C20D0Ev)();
extern void ABISELECT(_ZThn160_N8S1182C20D0Ev,_ZThn84_N8S1182C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C10__A1__8S1182C20__7S1182C1[] = {
  ABISELECT(-160,-84),
  ABISELECT(-56,-32),
  ABISELECT(-216,-112),
  ABISELECT(-48,-28),
  ABISELECT(-216,-112),
  ABISELECT(-56,-32),
  ABISELECT(-160,-84),
  (VTBL_ENTRY)&(_ZTI8S1182C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C20D1Ev,_ZTv0_n32_N8S1182C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C20D0Ev,_ZTv0_n32_N8S1182C20D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S1182C20D1Ev,_ZTv0_n44_N8S1182C20D1Ev)();
extern void ABISELECT(_ZThn176_N8S1182C20D1Ev,_ZThn92_N8S1182C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1182C20D0Ev,_ZTv0_n44_N8S1182C20D0Ev)();
extern void ABISELECT(_ZThn176_N8S1182C20D0Ev,_ZThn92_N8S1182C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C14__8S1182C20__7S1182C1[] = {
  ABISELECT(-176,-92),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-232,-120),
  ABISELECT(-72,-40),
  ABISELECT(-232,-120),
  ABISELECT(-72,-40),
  ABISELECT(-176,-92),
  (VTBL_ENTRY)&(_ZTI8S1182C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C20D1Ev,_ZTv0_n44_N8S1182C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C20D0Ev,_ZTv0_n44_N8S1182C20D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C168S1182C128S1182C22__A1__8S1182C20__7S1182C1[] = {
  ABISELECT(80,40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(80,40),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S1182C20[0]),
};
extern void ABISELECT(_ZThn40_N8S1182C20D1Ev,_ZThn20_N8S1182C20D1Ev)();
extern void ABISELECT(_ZThn40_N8S1182C20D0Ev,_ZThn20_N8S1182C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1182C218S1182C22__A1__8S1182C20__7S1182C1[] = {
  ABISELECT(64,32),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S1182C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S1182C20D1Ev,_ZThn20_N8S1182C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S1182C20D0Ev,_ZThn20_N8S1182C20D0Ev),
};
extern void ABISELECT(_ZThn48_N8S1182C20D1Ev,_ZThn24_N8S1182C20D1Ev)();
extern void ABISELECT(_ZThn48_N8S1182C20D0Ev,_ZThn24_N8S1182C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1182C16__A1__8S1182C20__7S1182C1[] = {
  ABISELECT(56,28),
  ABISELECT(-104,-52),
  ABISELECT(64,32),
  ABISELECT(112,60),
  ABISELECT(-104,-52),
  ABISELECT(56,28),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S1182C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S1182C20D1Ev,_ZThn24_N8S1182C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S1182C20D0Ev,_ZThn24_N8S1182C20D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C16__A2__8S1182C20__7S1182C1[] = {
  ABISELECT(40,20),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(40,20),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S1182C20[0]),
};
extern void ABISELECT(_ZThn80_N8S1182C20D1Ev,_ZThn40_N8S1182C20D1Ev)();
extern void ABISELECT(_ZThn80_N8S1182C20D0Ev,_ZThn40_N8S1182C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1182C14__A__8S1182C20__7S1182C1[] = {
  ABISELECT(32,16),
  ABISELECT(48,28),
  ABISELECT(64,36),
  ABISELECT(96,52),
  ABISELECT(-136,-68),
  ABISELECT(24,12),
  ABISELECT(-136,-68),
  ABISELECT(24,12),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S1182C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S1182C20D1Ev,_ZThn40_N8S1182C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S1182C20D0Ev,_ZThn40_N8S1182C20D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__A__7S1182C1[] = {
  ABISELECT(-152,-76),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__7S1182C1[] = {
  0,
  ABISELECT(160,80),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
extern void _ZN7S1182C8D1Ev();
extern void _ZN7S1182C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1182C8__7S1182C1[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-8,-4),
  ABISELECT(-168,-84),
  ABISELECT(-168,-84),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
  (VTBL_ENTRY)&_ZN7S1182C8D1Ev,
  (VTBL_ENTRY)&_ZN7S1182C8D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev)();
extern void ABISELECT(_ZThn16_N7S1182C8D1Ev,_ZThn12_N7S1182C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev)();
extern void ABISELECT(_ZThn16_N7S1182C8D0Ev,_ZThn12_N7S1182C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1182C9__7S1182C8__7S1182C1[] = {
  ABISELECT(-16,-12),
  ABISELECT(-24,-16),
  ABISELECT(-184,-96),
  ABISELECT(-16,-12),
  ABISELECT(-184,-96),
  ABISELECT(-24,-16),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__7S1182C8__7S1182C1[] = {
  0,
  ABISELECT(160,80),
  ABISELECT(168,84),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__7S1182C8__7S1182C1[] = {
  ABISELECT(-200,-104),
  ABISELECT(-40,-24),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev)();
extern void ABISELECT(_ZThn48_N7S1182C8D1Ev,_ZThn28_N7S1182C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev)();
extern void ABISELECT(_ZThn48_N7S1182C8D0Ev,_ZThn28_N7S1182C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C10__A1__7S1182C8__7S1182C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(-56,-32),
  ABISELECT(-216,-112),
  ABISELECT(-48,-28),
  ABISELECT(-216,-112),
  ABISELECT(-56,-32),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev),
};
extern void _ZN7S1182C9D1Ev();
extern void _ZN7S1182C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1182C9__7S1182C1[] = {
  ABISELECT(-24,-16),
  ABISELECT(-184,-96),
  ABISELECT(-16,-12),
  ABISELECT(-184,-96),
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C9[0]),
  (VTBL_ENTRY)&_ZN7S1182C9D1Ev,
  (VTBL_ENTRY)&_ZN7S1182C9D0Ev,
};
extern void _ZN8S1182C10D1Ev();
extern void _ZN8S1182C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C107S1182C9__7S1182C1[] = {
  ABISELECT(-24,-16),
  ABISELECT(-184,-96),
  ABISELECT(-16,-12),
  ABISELECT(-184,-96),
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
  (VTBL_ENTRY)&_ZN8S1182C10D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C10D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C107S1182C9__A1__7S1182C1[] = {
  ABISELECT(-184,-96),
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C107S1182C9__7S1182C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-168,-84),
  ABISELECT(-168,-84),
  ABISELECT(-8,-4),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__A1__8S1182C107S1182C9__7S1182C1[] = {
  0,
  ABISELECT(160,80),
  ABISELECT(184,96),
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__7S1182C9__7S1182C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-168,-84),
  ABISELECT(-168,-84),
  ABISELECT(-8,-4),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S1182C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__7S1182C9__7S1182C1[] = {
  0,
  ABISELECT(160,80),
  ABISELECT(184,96),
  (VTBL_ENTRY)&(_ZTI7S1182C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__A1__7S1182C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-168,-84),
  ABISELECT(-168,-84),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__7S1182C3__A1__7S1182C1[] = {
  0,
  ABISELECT(160,80),
  ABISELECT(168,84),
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__7S1182C1[] = {
  ABISELECT(-200,-104),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C11[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C11__A2__7S1182C1[] = {
  ABISELECT(-200,-104),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
extern void _ZN8S1182C10D1Ev();
extern void _ZN8S1182C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C10__A1__7S1182C1[] = {
  ABISELECT(-56,-32),
  ABISELECT(-216,-112),
  ABISELECT(-48,-28),
  ABISELECT(-216,-112),
  ABISELECT(-56,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
  (VTBL_ENTRY)&_ZN8S1182C10D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C10D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C10__A3__7S1182C1[] = {
  ABISELECT(-216,-112),
  ABISELECT(-56,-32),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C10__A1__7S1182C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-168,-84),
  ABISELECT(-168,-84),
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__A1__8S1182C10__A1__7S1182C1[] = {
  0,
  ABISELECT(160,80),
  ABISELECT(216,112),
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
};
extern void _ZN8S1182C14D1Ev();
extern void _ZN8S1182C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C14__7S1182C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-232,-120),
  ABISELECT(-72,-40),
  ABISELECT(-232,-120),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
  (VTBL_ENTRY)&_ZN8S1182C14D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C14D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__8S1182C14__7S1182C1[] = {
  0,
  ABISELECT(160,80),
  ABISELECT(232,120),
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__8S1182C14__7S1182C1[] = {
  ABISELECT(-200,-104),
  ABISELECT(-40,-24),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C14D1Ev,_ZTv0_n32_N8S1182C14D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1182C14D0Ev,_ZTv0_n32_N8S1182C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S1182C9__8S1182C14__7S1182C1[] = {
  ABISELECT(48,24),
  ABISELECT(-24,-16),
  ABISELECT(-184,-96),
  ABISELECT(-16,-12),
  ABISELECT(-184,-96),
  ABISELECT(-24,-16),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C14D1Ev,_ZTv0_n32_N8S1182C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C14D0Ev,_ZTv0_n32_N8S1182C14D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C14__7S1182C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-168,-84),
  ABISELECT(-168,-84),
  ABISELECT(-8,-4),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1182C15__7S1182C1[] = {
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C15[0]),
};
extern void _ZN8S1182C17D1Ev();
extern void _ZN8S1182C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C17__7S1182C1[] = {
  ABISELECT(56,32),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-23,-11),
  ABISELECT(-32,-16),
  ABISELECT(-48,-24),
  ABISELECT(-80,-44),
  ABISELECT(-64,-32),
  ABISELECT(-80,-44),
  ABISELECT(24,16),
  ABISELECT(-88,-48),
  ABISELECT(-248,-128),
  ABISELECT(-248,-128),
  ABISELECT(-88,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C17[0]),
  (VTBL_ENTRY)&_ZN8S1182C17D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C17__A4__7S1182C1[] = {
  ABISELECT(-88,-48),
  ABISELECT(-248,-128),
  ABISELECT(-248,-128),
  ABISELECT(-88,-48),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__7S1182C38S1182C17__A4__7S1182C1[] = {
  0,
  ABISELECT(160,80),
  ABISELECT(248,128),
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
extern void _ZN8S1182C18D1Ev();
extern void _ZN8S1182C18D0Ev();
extern void _ZN8S1182C182v1Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C188S1182C17__7S1182C1[] = {
  ABISELECT(48,28),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-88,-48),
  ABISELECT(-72,-36),
  ABISELECT(-96,-52),
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  ABISELECT(-96,-52),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C18[0]),
  (VTBL_ENTRY)&_ZN8S1182C18D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C18D0Ev,
  (VTBL_ENTRY)&_ZN8S1182C182v1Ev,
};
extern void _ZN7S1182C8D1Ev();
extern void _ZN7S1182C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1182C88S1182C188S1182C17__A1__7S1182C1[] = {
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-88,-48),
  ABISELECT(-72,-36),
  ABISELECT(-96,-52),
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  ABISELECT(-96,-52),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
  (VTBL_ENTRY)&_ZN7S1182C8D1Ev,
  (VTBL_ENTRY)&_ZN7S1182C8D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S1182C9__7S1182C88S1182C188S1182C17__A1__7S1182C1[] = {
  ABISELECT(72,36),
  ABISELECT(-24,-16),
  ABISELECT(-184,-96),
  ABISELECT(-16,-12),
  ABISELECT(-184,-96),
  ABISELECT(-24,-16),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__7S1182C88S1182C188S1182C17__A1__7S1182C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-168,-84),
  ABISELECT(-168,-84),
  ABISELECT(-8,-4),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__7S1182C88S1182C188S1182C17__A1__7S1182C1[] = {
  0,
  ABISELECT(160,80),
  ABISELECT(256,132),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__7S1182C88S1182C188S1182C17__A1__7S1182C1[] = {
  ABISELECT(-200,-104),
  ABISELECT(-40,-24),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1182C10__A1__7S1182C88S1182C188S1182C17__A1__7S1182C1[] = {
  ABISELECT(40,20),
  ABISELECT(-56,-32),
  ABISELECT(-216,-112),
  ABISELECT(-48,-28),
  ABISELECT(-216,-112),
  ABISELECT(-56,-32),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C18D1Ev,_ZTv0_n32_N8S1182C18D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1182C18D0Ev,_ZTv0_n32_N8S1182C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S1182C9__8S1182C188S1182C17__7S1182C1[] = {
  ABISELECT(72,36),
  ABISELECT(-24,-16),
  ABISELECT(-184,-96),
  ABISELECT(-16,-12),
  ABISELECT(-184,-96),
  ABISELECT(-24,-16),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI8S1182C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C18D1Ev,_ZTv0_n32_N8S1182C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C18D0Ev,_ZTv0_n32_N8S1182C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C188S1182C17__7S1182C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-168,-84),
  ABISELECT(-168,-84),
  ABISELECT(-8,-4),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI8S1182C18[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__8S1182C188S1182C17__7S1182C1[] = {
  0,
  ABISELECT(160,80),
  ABISELECT(256,132),
  (VTBL_ENTRY)&(_ZTI8S1182C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__8S1182C188S1182C17__7S1182C1[] = {
  ABISELECT(-200,-104),
  ABISELECT(-40,-24),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI8S1182C18[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C18D1Ev,_ZTv0_n32_N8S1182C18D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1182C18D0Ev,_ZTv0_n32_N8S1182C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1182C10__A1__8S1182C188S1182C17__7S1182C1[] = {
  ABISELECT(40,20),
  ABISELECT(-56,-32),
  ABISELECT(-216,-112),
  ABISELECT(-48,-28),
  ABISELECT(-216,-112),
  ABISELECT(-56,-32),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S1182C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C18D1Ev,_ZTv0_n32_N8S1182C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C18D0Ev,_ZTv0_n32_N8S1182C18D0Ev),
};
extern void ABISELECT(_ZTv0_n72_N8S1182C18D1Ev,_ZTv0_n36_N8S1182C18D1Ev)();
extern void ABISELECT(_ZThn48_N8S1182C18D1Ev,_ZThn28_N8S1182C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S1182C18D0Ev,_ZTv0_n36_N8S1182C18D0Ev)();
extern void ABISELECT(_ZThn48_N8S1182C18D0Ev,_ZThn28_N8S1182C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C16__8S1182C188S1182C17__7S1182C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(-144,-80),
  ABISELECT(-304,-160),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-304,-160),
  ABISELECT(-144,-80),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S1182C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S1182C18D1Ev,_ZTv0_n36_N8S1182C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S1182C18D0Ev,_ZTv0_n36_N8S1182C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C16__A1__8S1182C188S1182C17__7S1182C1[] = {
  ABISELECT(-160,-88),
  ABISELECT(-320,-168),
  ABISELECT(-320,-168),
  ABISELECT(-160,-88),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S1182C18[0]),
};
extern void ABISELECT(_ZTv0_n120_N8S1182C17D1Ev,_ZTv0_n60_N8S1182C17D1Ev)();
extern void ABISELECT(_ZThn24_N8S1182C17D1Ev,_ZThn16_N8S1182C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S1182C17D0Ev,_ZTv0_n60_N8S1182C17D0Ev)();
extern void ABISELECT(_ZThn24_N8S1182C17D0Ev,_ZThn16_N8S1182C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C12__8S1182C17__7S1182C1[] = {
  ABISELECT(-24,-16),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-47,-27),
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-104,-60),
  ABISELECT(-112,-64),
  ABISELECT(-272,-144),
  ABISELECT(-104,-60),
  ABISELECT(-56,-32),
  ABISELECT(-272,-144),
  ABISELECT(-112,-64),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S1182C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S1182C17D1Ev,_ZTv0_n60_N8S1182C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S1182C17D0Ev,_ZTv0_n60_N8S1182C17D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S1182C17D1Ev,_ZTv0_n44_N8S1182C17D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S1182C17D0Ev,_ZTv0_n44_N8S1182C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S1182C8__8S1182C17__7S1182C1[] = {
  ABISELECT(80,44),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-8,-4),
  ABISELECT(-168,-84),
  ABISELECT(-168,-84),
  ABISELECT(-8,-4),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI8S1182C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C17D1Ev,_ZTv0_n44_N8S1182C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C17D0Ev,_ZTv0_n44_N8S1182C17D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C17D1Ev,_ZTv0_n32_N8S1182C17D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1182C17D0Ev,_ZTv0_n32_N8S1182C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S1182C9__8S1182C17__7S1182C1[] = {
  ABISELECT(64,32),
  ABISELECT(-24,-16),
  ABISELECT(-184,-96),
  ABISELECT(-16,-12),
  ABISELECT(-184,-96),
  ABISELECT(-24,-16),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S1182C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C17D1Ev,_ZTv0_n32_N8S1182C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C17D0Ev,_ZTv0_n32_N8S1182C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__8S1182C17__7S1182C1[] = {
  0,
  ABISELECT(160,80),
  ABISELECT(248,128),
  (VTBL_ENTRY)&(_ZTI8S1182C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__8S1182C17__7S1182C1[] = {
  ABISELECT(-200,-104),
  ABISELECT(-40,-24),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S1182C17[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C17D1Ev,_ZTv0_n32_N8S1182C17D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1182C17D0Ev,_ZTv0_n32_N8S1182C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1182C10__A1__8S1182C17__7S1182C1[] = {
  ABISELECT(32,16),
  ABISELECT(-56,-32),
  ABISELECT(-216,-112),
  ABISELECT(-48,-28),
  ABISELECT(-216,-112),
  ABISELECT(-56,-32),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S1182C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C17D1Ev,_ZTv0_n32_N8S1182C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C17D0Ev,_ZTv0_n32_N8S1182C17D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S1182C17D1Ev,_ZTv0_n44_N8S1182C17D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S1182C17D0Ev,_ZTv0_n44_N8S1182C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1182C14__8S1182C17__7S1182C1[] = {
  ABISELECT(16,8),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-232,-120),
  ABISELECT(-72,-40),
  ABISELECT(-232,-120),
  ABISELECT(-72,-40),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S1182C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C17D1Ev,_ZTv0_n44_N8S1182C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C17D0Ev,_ZTv0_n44_N8S1182C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C168S1182C12__A1__8S1182C17__7S1182C1[] = {
  ABISELECT(-128,-72),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-128,-72),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S1182C17[0]),
};
extern void ABISELECT(_ZThn8_N8S1182C17D1Ev,_ZThn4_N8S1182C17D1Ev)();
extern void ABISELECT(_ZThn8_N8S1182C17D0Ev,_ZThn4_N8S1182C17D0Ev)();
extern void _ZN8S1182C182v1Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C18__8S1182C17__7S1182C1[] = {
  ABISELECT(48,28),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-88,-48),
  ABISELECT(-72,-36),
  ABISELECT(-96,-52),
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  ABISELECT(-96,-52),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S1182C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S1182C17D1Ev,_ZThn4_N8S1182C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S1182C17D0Ev,_ZThn4_N8S1182C17D0Ev),
  (VTBL_ENTRY)&_ZN8S1182C182v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N8S1182C17D1Ev,_ZTv0_n36_N8S1182C17D1Ev)();
extern void ABISELECT(_ZThn56_N8S1182C17D1Ev,_ZThn32_N8S1182C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S1182C17D0Ev,_ZTv0_n36_N8S1182C17D0Ev)();
extern void ABISELECT(_ZThn56_N8S1182C17D0Ev,_ZThn32_N8S1182C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C16__A1__8S1182C17__7S1182C1[] = {
  ABISELECT(-56,-32),
  ABISELECT(-144,-80),
  ABISELECT(-304,-160),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-304,-160),
  ABISELECT(-144,-80),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S1182C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S1182C17D1Ev,_ZTv0_n36_N8S1182C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S1182C17D0Ev,_ZTv0_n36_N8S1182C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C16__A3__8S1182C17__7S1182C1[] = {
  ABISELECT(-160,-88),
  ABISELECT(-320,-168),
  ABISELECT(-320,-168),
  ABISELECT(-160,-88),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S1182C17[0]),
};
extern void _ZN8S1182C12D1Ev();
extern void _ZN8S1182C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C12__A1__7S1182C1[] = {
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-47,-27),
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-104,-60),
  ABISELECT(-112,-64),
  ABISELECT(-272,-144),
  ABISELECT(-104,-60),
  ABISELECT(-56,-32),
  ABISELECT(-272,-144),
  ABISELECT(-112,-64),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&_ZN8S1182C12D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C12D0Ev,
};
extern void _ZN8S1182C16D1Ev();
extern void _ZN8S1182C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C168S1182C12__A1__7S1182C1[] = {
  ABISELECT(-112,-64),
  ABISELECT(-272,-144),
  ABISELECT(-104,-60),
  ABISELECT(-56,-32),
  ABISELECT(-272,-144),
  ABISELECT(-112,-64),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
  (VTBL_ENTRY)&_ZN8S1182C16D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1182C118S1182C168S1182C12__A2__7S1182C1[] = {
  ABISELECT(-272,-144),
  ABISELECT(-112,-64),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C11[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C118S1182C168S1182C12__A5__7S1182C1[] = {
  ABISELECT(-272,-144),
  ABISELECT(-112,-64),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C168S1182C12__A3__7S1182C1[] = {
  ABISELECT(-128,-72),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-128,-72),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__7S1182C38S1182C168S1182C12__A3__7S1182C1[] = {
  0,
  ABISELECT(160,80),
  ABISELECT(288,152),
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1182C10__8S1182C168S1182C12__A1__7S1182C1[] = {
  ABISELECT(56,32),
  ABISELECT(-56,-32),
  ABISELECT(-216,-112),
  ABISELECT(-48,-28),
  ABISELECT(-216,-112),
  ABISELECT(-56,-32),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C168S1182C12__A1__7S1182C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-168,-84),
  ABISELECT(-168,-84),
  ABISELECT(-8,-4),
  ABISELECT(104,60),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__A1__8S1182C168S1182C12__A1__7S1182C1[] = {
  0,
  ABISELECT(160,80),
  ABISELECT(272,144),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__A__8S1182C168S1182C12__A1__7S1182C1[] = {
  ABISELECT(-128,-72),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-128,-72),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S1182C8__8S1182C12__A1__7S1182C1[] = {
  ABISELECT(104,60),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-8,-4),
  ABISELECT(-168,-84),
  ABISELECT(-168,-84),
  ABISELECT(-8,-4),
  ABISELECT(104,60),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S1182C9__8S1182C12__A1__7S1182C1[] = {
  ABISELECT(88,48),
  ABISELECT(-24,-16),
  ABISELECT(-184,-96),
  ABISELECT(-16,-12),
  ABISELECT(-184,-96),
  ABISELECT(-24,-16),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__8S1182C12__A1__7S1182C1[] = {
  0,
  ABISELECT(160,80),
  ABISELECT(272,144),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__8S1182C12__A1__7S1182C1[] = {
  ABISELECT(-200,-104),
  ABISELECT(-40,-24),
  ABISELECT(72,40),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1182C10__A1__8S1182C12__A1__7S1182C1[] = {
  ABISELECT(56,32),
  ABISELECT(-56,-32),
  ABISELECT(-216,-112),
  ABISELECT(-48,-28),
  ABISELECT(-216,-112),
  ABISELECT(-56,-32),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1182C14__8S1182C12__A1__7S1182C1[] = {
  ABISELECT(40,24),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-232,-120),
  ABISELECT(-72,-40),
  ABISELECT(-232,-120),
  ABISELECT(-72,-40),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C16__A1__8S1182C12__A1__7S1182C1[] = {
  ABISELECT(-128,-72),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-128,-72),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
};
extern void _ZN8S1182C16D1Ev();
extern void _ZN8S1182C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C16__A2__7S1182C1[] = {
  ABISELECT(-144,-80),
  ABISELECT(-304,-160),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-304,-160),
  ABISELECT(-144,-80),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
  (VTBL_ENTRY)&_ZN8S1182C16D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1182C118S1182C16__A3__7S1182C1[] = {
  ABISELECT(-304,-160),
  ABISELECT(-144,-80),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C11[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C118S1182C16__A6__7S1182C1[] = {
  ABISELECT(-304,-160),
  ABISELECT(-144,-80),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C16__A5__7S1182C1[] = {
  ABISELECT(-160,-88),
  ABISELECT(-320,-168),
  ABISELECT(-320,-168),
  ABISELECT(-160,-88),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__7S1182C38S1182C16__A5__7S1182C1[] = {
  0,
  ABISELECT(160,80),
  ABISELECT(320,168),
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1182C10__8S1182C16__A2__7S1182C1[] = {
  ABISELECT(88,48),
  ABISELECT(-56,-32),
  ABISELECT(-216,-112),
  ABISELECT(-48,-28),
  ABISELECT(-216,-112),
  ABISELECT(-56,-32),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C16__A2__7S1182C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-168,-84),
  ABISELECT(-168,-84),
  ABISELECT(-8,-4),
  ABISELECT(136,76),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__A1__8S1182C16__A2__7S1182C1[] = {
  0,
  ABISELECT(160,80),
  ABISELECT(304,160),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__A__8S1182C16__A2__7S1182C1[] = {
  ABISELECT(-160,-88),
  ABISELECT(-320,-168),
  ABISELECT(-320,-168),
  ABISELECT(-160,-88),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
extern void _ZN8S1182C21D1Ev();
extern void _ZN8S1182C21D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C21__7S1182C1[] = {
  ABISELECT(-176,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C21[0]),
  (VTBL_ENTRY)&_ZN8S1182C21D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C21D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1182C158S1182C21__A1__7S1182C1[] = {
  ABISELECT(-176,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C15[0]),
};
static  VTT_ENTRY vtt_S1182C1[] = {
  {&(_ZTV7S1182C1[18]),  18,252},
  {&(_tg__ZTV7S1182C2__7S1182C1[17]),  17,19},
  {&(_tg__ZTV7S1182C37S1182C2__7S1182C1[6]),  6,6},
  {&(_tg__ZTV7S1182C37S1182C2__7S1182C1[6]),  6,6},
  {&(_tg__ZTV8S1182C127S1182C2__7S1182C1[14]),  14,16},
  {&(_tg__ZTV8S1182C168S1182C127S1182C2__7S1182C1[8]),  8,10},
  {&(_tg__ZTV8S1182C118S1182C168S1182C127S1182C2__A1__7S1182C1[4]),  4,4},
  {&(_tg__ZTV7S1182C58S1182C118S1182C168S1182C127S1182C2__A4__7S1182C1[4]),  4,4},
  {&(_tg__ZTV7S1182C38S1182C168S1182C127S1182C2__A2__7S1182C1[6]),  6,6},
  {&(_tg__ZTV7S1182C5__7S1182C38S1182C168S1182C127S1182C2__A2__7S1182C1[4]),  4,4},
  {&(_tg__ZTV8S1182C10__8S1182C168S1182C127S1182C2__7S1182C1[8]),  8,10},
  {&(_tg__ZTV7S1182C3__8S1182C168S1182C127S1182C2__7S1182C1[6]),  6,6},
  {&(_tg__ZTV7S1182C5__A1__8S1182C168S1182C127S1182C2__7S1182C1[4]),  4,4},
  {&(_tg__ZTV7S1182C3__A__8S1182C168S1182C127S1182C2__7S1182C1[6]),  6,6},
  {&(_tg__ZTV7S1182C8__8S1182C127S1182C2__7S1182C1[11]),  11,13},
  {&(_tg__ZTV7S1182C9__8S1182C127S1182C2__7S1182C1[8]),  8,10},
  {&(_tg__ZTV7S1182C8__8S1182C127S1182C2__7S1182C1[11]),  11,13},
  {&(_tg__ZTV7S1182C5__8S1182C127S1182C2__7S1182C1[4]),  4,4},
  {&(_tg__ZTV8S1182C11__8S1182C127S1182C2__7S1182C1[4]),  4,4},
  {&(_tg__ZTV8S1182C10__A1__8S1182C127S1182C2__7S1182C1[8]),  8,10},
  {&(_tg__ZTV8S1182C14__8S1182C127S1182C2__7S1182C1[11]),  11,13},
  {&(_tg__ZTV8S1182C14__8S1182C127S1182C2__7S1182C1[11]),  11,13},
  {&(_tg__ZTV7S1182C38S1182C16__A1__8S1182C127S1182C2__7S1182C1[6]),  6,6},
  {&(_tg__ZTV7S1182C2__7S1182C1[17]),  17,19},
  {&(_tg__ZTV7S1182C8__7S1182C2__7S1182C1[11]),  11,13},
  {&(_tg__ZTV7S1182C9__7S1182C2__7S1182C1[8]),  8,10},
  {&(_tg__ZTV7S1182C8__7S1182C2__7S1182C1[11]),  11,13},
  {&(_tg__ZTV8S1182C11__7S1182C2__7S1182C1[4]),  4,4},
  {&(_tg__ZTV8S1182C10__A1__7S1182C2__7S1182C1[8]),  8,10},
  {&(_tg__ZTV8S1182C12__A__7S1182C2__7S1182C1[14]),  14,16},
  {&(_tg__ZTV8S1182C14__7S1182C2__7S1182C1[11]),  11,13},
  {&(_tg__ZTV8S1182C14__7S1182C2__7S1182C1[11]),  11,13},
  {&(_tg__ZTV7S1182C38S1182C168S1182C12__A2__7S1182C2__7S1182C1[6]),  6,6},
  {&(_tg__ZTV8S1182C17__7S1182C2__7S1182C1[18]),  18,20},
  {&(_tg__ZTV8S1182C12__A1__7S1182C2__7S1182C1[15]),  15,17},
  {&(_tg__ZTV7S1182C38S1182C168S1182C12__A3__7S1182C2__7S1182C1[6]),  6,6},
  {&(_tg__ZTV8S1182C188S1182C17__7S1182C2__7S1182C1[11]),  11,14},
  {&(_tg__ZTV8S1182C16__A2__7S1182C2__7S1182C1[9]),  9,11},
  {&(_tg__ZTV7S1182C38S1182C16__A5__7S1182C2__7S1182C1[6]),  6,6},
  {&(_tg__ZTV8S1182C19__7S1182C1[4]),  4,4},
  {&(_tg__ZTV7S1182C58S1182C19__A7__7S1182C1[4]),  4,4},
  {&(_tg__ZTV8S1182C20__7S1182C1[15]),  15,17},
  {&(_tg__ZTV8S1182C228S1182C20__7S1182C1[14]),  14,16},
  {&(_tg__ZTV8S1182C158S1182C228S1182C20__A2__7S1182C1[3]),  3,3},
  {&(_tg__ZTV8S1182C128S1182C228S1182C20__A2__7S1182C1[14]),  14,16},
  {&(_tg__ZTV8S1182C168S1182C128S1182C228S1182C20__A3__7S1182C1[8]),  8,10},
  {&(_tg__ZTV8S1182C118S1182C168S1182C128S1182C228S1182C20__A4__7S1182C1[4]),  4,4},
  {&(_tg__ZTV7S1182C58S1182C118S1182C168S1182C128S1182C228S1182C20__A8__7S1182C1[4]),  4,4},
  {&(_tg__ZTV7S1182C38S1182C168S1182C128S1182C228S1182C20__A6__7S1182C1[6]),  6,6},
  {&(_tg__ZTV7S1182C5__7S1182C38S1182C168S1182C128S1182C228S1182C20__A6__7S1182C1[4]),  4,4},
  {&(_tg__ZTV8S1182C10__8S1182C168S1182C128S1182C228S1182C20__A3__7S1182C1[8]),  8,10},
  {&(_tg__ZTV7S1182C3__8S1182C168S1182C128S1182C228S1182C20__A3__7S1182C1[6]),  6,6},
  {&(_tg__ZTV7S1182C5__A1__8S1182C168S1182C128S1182C228S1182C20__A3__7S1182C1[4]),  4,4},
  {&(_tg__ZTV7S1182C3__A__8S1182C168S1182C128S1182C228S1182C20__A3__7S1182C1[6]),  6,6},
  {&(_tg__ZTV7S1182C8__8S1182C128S1182C228S1182C20__A2__7S1182C1[11]),  11,13},
  {&(_tg__ZTV7S1182C9__8S1182C128S1182C228S1182C20__A2__7S1182C1[8]),  8,10},
  {&(_tg__ZTV7S1182C8__8S1182C128S1182C228S1182C20__A2__7S1182C1[11]),  11,13},
  {&(_tg__ZTV7S1182C5__8S1182C128S1182C228S1182C20__A2__7S1182C1[4]),  4,4},
  {&(_tg__ZTV8S1182C11__8S1182C128S1182C228S1182C20__A2__7S1182C1[4]),  4,4},
  {&(_tg__ZTV8S1182C10__A1__8S1182C128S1182C228S1182C20__A2__7S1182C1[8]),  8,10},
  {&(_tg__ZTV8S1182C14__8S1182C128S1182C228S1182C20__A2__7S1182C1[11]),  11,13},
  {&(_tg__ZTV8S1182C14__8S1182C128S1182C228S1182C20__A2__7S1182C1[11]),  11,13},
  {&(_tg__ZTV7S1182C38S1182C16__A1__8S1182C128S1182C228S1182C20__A2__7S1182C1[6]),  6,6},
  {&(_tg__ZTV8S1182C218S1182C228S1182C20__A1__7S1182C1[3]),  3,5},
  {&(_tg__ZTV8S1182C158S1182C218S1182C228S1182C20__A3__7S1182C1[3]),  3,3},
  {&(_tg__ZTV8S1182C12__8S1182C228S1182C20__7S1182C1[14]),  14,16},
  {&(_tg__ZTV7S1182C8__8S1182C228S1182C20__7S1182C1[11]),  11,13},
  {&(_tg__ZTV7S1182C9__8S1182C228S1182C20__7S1182C1[8]),  8,10},
  {&(_tg__ZTV7S1182C8__8S1182C228S1182C20__7S1182C1[11]),  11,13},
  {&(_tg__ZTV7S1182C5__8S1182C228S1182C20__7S1182C1[4]),  4,4},
  {&(_tg__ZTV8S1182C11__8S1182C228S1182C20__7S1182C1[4]),  4,4},
  {&(_tg__ZTV8S1182C10__A1__8S1182C228S1182C20__7S1182C1[8]),  8,10},
  {&(_tg__ZTV8S1182C14__8S1182C228S1182C20__7S1182C1[11]),  11,13},
  {&(_tg__ZTV8S1182C14__8S1182C228S1182C20__7S1182C1[11]),  11,13},
  {&(_tg__ZTV7S1182C38S1182C168S1182C12__A1__8S1182C228S1182C20__7S1182C1[6]),  6,6},
  {&(_tg__ZTV8S1182C21__8S1182C228S1182C20__7S1182C1[3]),  3,5},
  {&(_tg__ZTV8S1182C168S1182C20__A4__7S1182C1[8]),  8,10},
  {&(_tg__ZTV8S1182C118S1182C168S1182C20__A5__7S1182C1[4]),  4,4},
  {&(_tg__ZTV7S1182C58S1182C118S1182C168S1182C20__A9__7S1182C1[4]),  4,4},
  {&(_tg__ZTV7S1182C38S1182C168S1182C20__A7__7S1182C1[6]),  6,6},
  {&(_tg__ZTV7S1182C5__7S1182C38S1182C168S1182C20__A7__7S1182C1[4]),  4,4},
  {&(_tg__ZTV8S1182C10__8S1182C168S1182C20__A4__7S1182C1[8]),  8,10},
  {&(_tg__ZTV7S1182C3__8S1182C168S1182C20__A4__7S1182C1[6]),  6,6},
  {&(_tg__ZTV7S1182C5__A1__8S1182C168S1182C20__A4__7S1182C1[4]),  4,4},
  {&(_tg__ZTV7S1182C3__A__8S1182C168S1182C20__A4__7S1182C1[6]),  6,6},
  {&(_tg__ZTV8S1182C148S1182C20__A1__7S1182C1[10]),  10,12},
  {&(_tg__ZTV7S1182C5__8S1182C148S1182C20__A1__7S1182C1[4]),  4,4},
  {&(_tg__ZTV8S1182C15__8S1182C148S1182C20__A1__7S1182C1[3]),  3,3},
  {&(_tg__ZTV8S1182C11__8S1182C148S1182C20__A1__7S1182C1[4]),  4,4},
  {&(_tg__ZTV7S1182C9__8S1182C148S1182C20__A1__7S1182C1[8]),  8,10},
  {&(_tg__ZTV7S1182C3__8S1182C148S1182C20__A1__7S1182C1[6]),  6,6},
  {&(_tg__ZTV8S1182C21__8S1182C20__7S1182C1[4]),  4,6},
  {&(_tg__ZTV7S1182C9__8S1182C20__7S1182C1[8]),  8,10},
  {&(_tg__ZTV7S1182C8__8S1182C20__7S1182C1[11]),  11,13},
  {&(_tg__ZTV7S1182C5__8S1182C20__7S1182C1[4]),  4,4},
  {&(_tg__ZTV8S1182C128S1182C22__8S1182C20__7S1182C1[14]),  14,16},
  {&(_tg__ZTV7S1182C8__8S1182C20__7S1182C1[11]),  11,13},
  {&(_tg__ZTV8S1182C11__8S1182C20__7S1182C1[4]),  4,4},
  {&(_tg__ZTV8S1182C10__A1__8S1182C20__7S1182C1[8]),  8,10},
  {&(_tg__ZTV8S1182C14__8S1182C20__7S1182C1[11]),  11,13},
  {&(_tg__ZTV8S1182C14__8S1182C20__7S1182C1[11]),  11,13},
  {&(_tg__ZTV7S1182C38S1182C168S1182C128S1182C22__A1__8S1182C20__7S1182C1[6]),  6,6},
  {&(_tg__ZTV8S1182C218S1182C22__A1__8S1182C20__7S1182C1[3]),  3,5},
  {&(_tg__ZTV8S1182C16__A1__8S1182C20__7S1182C1[8]),  8,10},
  {&(_tg__ZTV7S1182C38S1182C16__A2__8S1182C20__7S1182C1[6]),  6,6},
  {&(_tg__ZTV8S1182C14__A__8S1182C20__7S1182C1[10]),  10,12},
  {&(_tg__ZTV7S1182C5__A__7S1182C1[4]),  4,4},
  {&(_ZTV7S1182C1[18]),  18,252},
  {&(_ZTV7S1182C1[133]),  133,252},
  {&(_ZTV7S1182C1[143]),  143,252},
  {&(_ZTV7S1182C1[133]),  133,252},
  {&(_ZTV7S1182C1[149]),  149,252},
  {&(_ZTV7S1182C1[157]),  157,252},
  {&(_ZTV7S1182C1[34]),  34,252},
  {&(_ZTV7S1182C1[170]),  170,252},
  {&(_ZTV7S1182C1[170]),  170,252},
  {&(_ZTV7S1182C1[42]),  42,252},
  {&(_ZTV7S1182C1[190]),  190,252},
  {&(_ZTV7S1182C1[221]),  221,252},
  {&(_ZTV7S1182C1[229]),  229,252},
  {&(_ZTV7S1182C1[203]),  203,252},
  {&(_ZTV7S1182C1[238]),  238,252},
  {&(_ZTV7S1182C1[246]),  246,252},
  {&(_ZTV7S1182C1[46]),  46,252},
  {&(_ZTV7S1182C1[61]),  61,252},
  {&(_ZTV7S1182C1[250]),  250,252},
  {&(_ZTV7S1182C1[77]),  77,252},
  {&(_ZTV7S1182C1[85]),  85,252},
  {&(_ZTV7S1182C1[88]),  88,252},
  {&(_ZTV7S1182C1[98]),  98,252},
  {&(_ZTV7S1182C1[106]),  106,252},
  {&(_ZTV7S1182C1[116]),  116,252},
  {&(_ZTV7S1182C1[122]),  122,252},
  {&(_tg__ZTV7S1182C5__7S1182C1[4]),  4,4},
  {&(_tg__ZTV7S1182C8__7S1182C1[10]),  10,12},
  {&(_tg__ZTV7S1182C9__7S1182C8__7S1182C1[8]),  8,10},
  {&(_tg__ZTV7S1182C8__7S1182C1[10]),  10,12},
  {&(_tg__ZTV7S1182C5__7S1182C8__7S1182C1[4]),  4,4},
  {&(_tg__ZTV8S1182C11__7S1182C8__7S1182C1[4]),  4,4},
  {&(_tg__ZTV8S1182C10__A1__7S1182C8__7S1182C1[8]),  8,10},
  {&(_tg__ZTV7S1182C9__7S1182C1[7]),  7,9},
  {&(_tg__ZTV8S1182C107S1182C9__7S1182C1[7]),  7,9},
  {&(_tg__ZTV7S1182C58S1182C107S1182C9__A1__7S1182C1[4]),  4,4},
  {&(_tg__ZTV7S1182C3__8S1182C107S1182C9__7S1182C1[6]),  6,6},
  {&(_tg__ZTV7S1182C5__A1__8S1182C107S1182C9__7S1182C1[4]),  4,4},
  {&(_tg__ZTV7S1182C3__7S1182C9__7S1182C1[6]),  6,6},
  {&(_tg__ZTV7S1182C5__7S1182C9__7S1182C1[4]),  4,4},
  {&(_tg__ZTV7S1182C3__A1__7S1182C1[6]),  6,6},
  {&(_tg__ZTV7S1182C5__7S1182C3__A1__7S1182C1[4]),  4,4},
  {&(_tg__ZTV8S1182C11__7S1182C1[4]),  4,4},
  {&(_tg__ZTV7S1182C58S1182C11__A2__7S1182C1[4]),  4,4},
  {&(_tg__ZTV8S1182C10__A1__7S1182C1[7]),  7,9},
  {&(_tg__ZTV7S1182C58S1182C10__A3__7S1182C1[4]),  4,4},
  {&(_tg__ZTV7S1182C3__8S1182C10__A1__7S1182C1[6]),  6,6},
  {&(_tg__ZTV7S1182C5__A1__8S1182C10__A1__7S1182C1[4]),  4,4},
  {&(_tg__ZTV8S1182C14__7S1182C1[10]),  10,12},
  {&(_tg__ZTV7S1182C5__8S1182C14__7S1182C1[4]),  4,4},
  {&(_tg__ZTV8S1182C14__7S1182C1[10]),  10,12},
  {&(_tg__ZTV8S1182C11__8S1182C14__7S1182C1[4]),  4,4},
  {&(_tg__ZTV7S1182C9__8S1182C14__7S1182C1[8]),  8,10},
  {&(_tg__ZTV7S1182C3__8S1182C14__7S1182C1[6]),  6,6},
  {&(_tg__ZTV8S1182C15__7S1182C1[3]),  3,3},
  {&(_tg__ZTV8S1182C17__7S1182C1[16]),  16,18},
  {&(_tg__ZTV7S1182C38S1182C17__A4__7S1182C1[6]),  6,6},
  {&(_tg__ZTV7S1182C5__7S1182C38S1182C17__A4__7S1182C1[4]),  4,4},
  {&(_tg__ZTV8S1182C188S1182C17__7S1182C1[11]),  11,14},
  {&(_tg__ZTV7S1182C88S1182C188S1182C17__A1__7S1182C1[10]),  10,12},
  {&(_tg__ZTV7S1182C9__7S1182C88S1182C188S1182C17__A1__7S1182C1[8]),  8,10},
  {&(_tg__ZTV7S1182C3__7S1182C88S1182C188S1182C17__A1__7S1182C1[6]),  6,6},
  {&(_tg__ZTV7S1182C5__7S1182C88S1182C188S1182C17__A1__7S1182C1[4]),  4,4},
  {&(_tg__ZTV8S1182C11__7S1182C88S1182C188S1182C17__A1__7S1182C1[4]),  4,4},
  {&(_tg__ZTV8S1182C10__A1__7S1182C88S1182C188S1182C17__A1__7S1182C1[8]),  8,10},
  {&(_tg__ZTV7S1182C9__8S1182C188S1182C17__7S1182C1[8]),  8,10},
  {&(_tg__ZTV7S1182C3__8S1182C188S1182C17__7S1182C1[6]),  6,6},
  {&(_tg__ZTV7S1182C5__8S1182C188S1182C17__7S1182C1[4]),  4,4},
  {&(_tg__ZTV8S1182C11__8S1182C188S1182C17__7S1182C1[4]),  4,4},
  {&(_tg__ZTV8S1182C10__A1__8S1182C188S1182C17__7S1182C1[8]),  8,10},
  {&(_tg__ZTV8S1182C16__8S1182C188S1182C17__7S1182C1[9]),  9,11},
  {&(_tg__ZTV7S1182C38S1182C16__A1__8S1182C188S1182C17__7S1182C1[6]),  6,6},
  {&(_tg__ZTV8S1182C12__8S1182C17__7S1182C1[15]),  15,17},
  {&(_tg__ZTV7S1182C8__8S1182C17__7S1182C1[11]),  11,13},
  {&(_tg__ZTV7S1182C9__8S1182C17__7S1182C1[8]),  8,10},
  {&(_tg__ZTV7S1182C8__8S1182C17__7S1182C1[11]),  11,13},
  {&(_tg__ZTV7S1182C5__8S1182C17__7S1182C1[4]),  4,4},
  {&(_tg__ZTV8S1182C11__8S1182C17__7S1182C1[4]),  4,4},
  {&(_tg__ZTV8S1182C10__A1__8S1182C17__7S1182C1[8]),  8,10},
  {&(_tg__ZTV8S1182C14__8S1182C17__7S1182C1[11]),  11,13},
  {&(_tg__ZTV8S1182C14__8S1182C17__7S1182C1[11]),  11,13},
  {&(_tg__ZTV7S1182C38S1182C168S1182C12__A1__8S1182C17__7S1182C1[6]),  6,6},
  {&(_tg__ZTV8S1182C18__8S1182C17__7S1182C1[11]),  11,14},
  {&(_tg__ZTV8S1182C16__A1__8S1182C17__7S1182C1[9]),  9,11},
  {&(_tg__ZTV7S1182C38S1182C16__A3__8S1182C17__7S1182C1[6]),  6,6},
  {&(_tg__ZTV8S1182C12__A1__7S1182C1[14]),  14,16},
  {&(_tg__ZTV8S1182C168S1182C12__A1__7S1182C1[8]),  8,10},
  {&(_tg__ZTV8S1182C118S1182C168S1182C12__A2__7S1182C1[4]),  4,4},
  {&(_tg__ZTV7S1182C58S1182C118S1182C168S1182C12__A5__7S1182C1[4]),  4,4},
  {&(_tg__ZTV7S1182C38S1182C168S1182C12__A3__7S1182C1[6]),  6,6},
  {&(_tg__ZTV7S1182C5__7S1182C38S1182C168S1182C12__A3__7S1182C1[4]),  4,4},
  {&(_tg__ZTV8S1182C10__8S1182C168S1182C12__A1__7S1182C1[8]),  8,10},
  {&(_tg__ZTV7S1182C3__8S1182C168S1182C12__A1__7S1182C1[6]),  6,6},
  {&(_tg__ZTV7S1182C5__A1__8S1182C168S1182C12__A1__7S1182C1[4]),  4,4},
  {&(_tg__ZTV7S1182C3__A__8S1182C168S1182C12__A1__7S1182C1[6]),  6,6},
  {&(_tg__ZTV7S1182C8__8S1182C12__A1__7S1182C1[11]),  11,13},
  {&(_tg__ZTV7S1182C9__8S1182C12__A1__7S1182C1[8]),  8,10},
  {&(_tg__ZTV7S1182C8__8S1182C12__A1__7S1182C1[11]),  11,13},
  {&(_tg__ZTV7S1182C5__8S1182C12__A1__7S1182C1[4]),  4,4},
  {&(_tg__ZTV8S1182C11__8S1182C12__A1__7S1182C1[4]),  4,4},
  {&(_tg__ZTV8S1182C10__A1__8S1182C12__A1__7S1182C1[8]),  8,10},
  {&(_tg__ZTV8S1182C14__8S1182C12__A1__7S1182C1[11]),  11,13},
  {&(_tg__ZTV8S1182C14__8S1182C12__A1__7S1182C1[11]),  11,13},
  {&(_tg__ZTV7S1182C38S1182C16__A1__8S1182C12__A1__7S1182C1[6]),  6,6},
  {&(_tg__ZTV8S1182C16__A2__7S1182C1[8]),  8,10},
  {&(_tg__ZTV8S1182C118S1182C16__A3__7S1182C1[4]),  4,4},
  {&(_tg__ZTV7S1182C58S1182C118S1182C16__A6__7S1182C1[4]),  4,4},
  {&(_tg__ZTV7S1182C38S1182C16__A5__7S1182C1[6]),  6,6},
  {&(_tg__ZTV7S1182C5__7S1182C38S1182C16__A5__7S1182C1[4]),  4,4},
  {&(_tg__ZTV8S1182C10__8S1182C16__A2__7S1182C1[8]),  8,10},
  {&(_tg__ZTV7S1182C3__8S1182C16__A2__7S1182C1[6]),  6,6},
  {&(_tg__ZTV7S1182C5__A1__8S1182C16__A2__7S1182C1[4]),  4,4},
  {&(_tg__ZTV7S1182C3__A__8S1182C16__A2__7S1182C1[6]),  6,6},
  {&(_tg__ZTV8S1182C21__7S1182C1[3]),  3,5},
  {&(_tg__ZTV8S1182C158S1182C21__A1__7S1182C1[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S1182C1[];
extern  VTBL_ENTRY _ZTV7S1182C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C1[];
static VTBL_ENTRY alt_thunk_names90[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S1182C17D0Ev,_ZTv0_n36_N8S1182C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S1182C17D0Ev,_ZThn32_N8S1182C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S1182C17D1Ev,_ZTv0_n36_N8S1182C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S1182C17D1Ev,_ZThn32_N8S1182C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S1182C17D0Ev,_ZTv0_n60_N8S1182C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S1182C17D0Ev,_ZThn16_N8S1182C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S1182C17D1Ev,_ZTv0_n60_N8S1182C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S1182C17D1Ev,_ZThn16_N8S1182C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S1182C18D0Ev,_ZTv0_n36_N8S1182C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S1182C18D0Ev,_ZThn28_N8S1182C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S1182C18D1Ev,_ZTv0_n36_N8S1182C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S1182C18D1Ev,_ZThn28_N8S1182C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S1182C8D0Ev,_ZThn28_N7S1182C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S1182C8D0Ev,_ZThn12_N7S1182C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S1182C8D1Ev,_ZThn28_N7S1182C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S1182C8D1Ev,_ZThn12_N7S1182C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1182C20D0Ev,_ZTv0_n44_N8S1182C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S1182C20D0Ev,_ZThn92_N8S1182C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S1182C20D0Ev,_ZThn56_N8S1182C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1182C20D1Ev,_ZTv0_n44_N8S1182C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S1182C20D1Ev,_ZThn92_N8S1182C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S1182C20D1Ev,_ZThn56_N8S1182C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C20D0Ev,_ZTv0_n32_N8S1182C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S1182C20D0Ev,_ZThn84_N8S1182C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S1182C20D0Ev,_ZThn68_N8S1182C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C20D1Ev,_ZTv0_n32_N8S1182C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S1182C20D1Ev,_ZThn84_N8S1182C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S1182C20D1Ev,_ZThn68_N8S1182C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S1182C20D0Ev,_ZTv0_n16_N8S1182C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S1182C20D0Ev,_ZThn148_N8S1182C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S1182C20D1Ev,_ZTv0_n16_N8S1182C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S1182C20D1Ev,_ZThn148_N8S1182C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C14D0Ev,_ZTv0_n32_N8S1182C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S1182C14D0Ev,_ZThn28_N8S1182C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C14D1Ev,_ZTv0_n32_N8S1182C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S1182C14D1Ev,_ZThn28_N8S1182C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C22D0Ev,_ZTv0_n32_N8S1182C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S1182C22D0Ev,_ZThn84_N8S1182C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S1182C22D0Ev,_ZThn68_N8S1182C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C22D1Ev,_ZTv0_n32_N8S1182C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S1182C22D1Ev,_ZThn84_N8S1182C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S1182C22D1Ev,_ZThn68_N8S1182C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1182C22D0Ev,_ZTv0_n44_N8S1182C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S1182C22D0Ev,_ZThn92_N8S1182C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S1182C22D0Ev,_ZThn56_N8S1182C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1182C22D1Ev,_ZTv0_n44_N8S1182C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S1182C22D1Ev,_ZThn92_N8S1182C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S1182C22D1Ev,_ZThn56_N8S1182C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S1182C2D0Ev,_ZTv0_n36_N7S1182C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N7S1182C2D0Ev,_ZThn160_N7S1182C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S1182C2D1Ev,_ZTv0_n36_N7S1182C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N7S1182C2D1Ev,_ZThn160_N7S1182C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S1182C2D0Ev,_ZTv0_n60_N7S1182C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N7S1182C2D0Ev,_ZThn144_N7S1182C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S1182C2D1Ev,_ZTv0_n60_N7S1182C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N7S1182C2D1Ev,_ZThn144_N7S1182C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N7S1182C2D0Ev,_ZTv0_n68_N7S1182C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N7S1182C2D0Ev,_ZThn128_N7S1182C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N7S1182C2D1Ev,_ZTv0_n68_N7S1182C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N7S1182C2D1Ev,_ZThn128_N7S1182C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1182C2D0Ev,_ZTv0_n32_N7S1182C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S1182C2D0Ev,_ZThn112_N7S1182C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S1182C2D0Ev,_ZThn96_N7S1182C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1182C2D1Ev,_ZTv0_n32_N7S1182C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S1182C2D1Ev,_ZThn112_N7S1182C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S1182C2D1Ev,_ZThn96_N7S1182C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S1182C2D0Ev,_ZTv0_n44_N7S1182C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N7S1182C2D0Ev,_ZThn120_N7S1182C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S1182C2D0Ev,_ZThn84_N7S1182C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S1182C2D1Ev,_ZTv0_n44_N7S1182C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N7S1182C2D1Ev,_ZThn120_N7S1182C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S1182C2D1Ev,_ZThn84_N7S1182C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S1182C12D0Ev,_ZThn80_N8S1182C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S1182C12D0Ev,_ZThn64_N8S1182C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S1182C12D0Ev,_ZThn108_N8S1182C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S1182C12D0Ev,_ZThn92_N8S1182C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S1182C12D1Ev,_ZThn80_N8S1182C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S1182C12D1Ev,_ZThn64_N8S1182C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S1182C12D1Ev,_ZThn108_N8S1182C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S1182C12D1Ev,_ZThn92_N8S1182C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S1182C12D0Ev,_ZThn88_N8S1182C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S1182C12D0Ev,_ZThn52_N8S1182C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S1182C12D0Ev,_ZThn116_N8S1182C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S1182C12D0Ev,_ZThn80_N8S1182C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S1182C12D1Ev,_ZThn88_N8S1182C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S1182C12D1Ev,_ZThn52_N8S1182C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S1182C12D1Ev,_ZThn116_N8S1182C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S1182C12D1Ev,_ZThn80_N8S1182C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S1182C16D0Ev,_ZThn60_N8S1182C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S1182C16D0Ev,_ZThn80_N8S1182C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S1182C16D0Ev,_ZThn108_N8S1182C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S1182C16D1Ev,_ZThn60_N8S1182C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S1182C16D1Ev,_ZThn80_N8S1182C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S1182C16D1Ev,_ZThn108_N8S1182C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S1182C1D0Ev,_ZTv0_n16_N7S1182C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N7S1182C1D0Ev,_ZThn176_N7S1182C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S1182C1D1Ev,_ZTv0_n16_N7S1182C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N7S1182C1D1Ev,_ZThn176_N7S1182C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S1182C1D0Ev,_ZTv0_n36_N7S1182C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N7S1182C1D0Ev,_ZThn160_N7S1182C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S1182C1D1Ev,_ZTv0_n36_N7S1182C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N7S1182C1D1Ev,_ZThn160_N7S1182C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S1182C1D0Ev,_ZTv0_n60_N7S1182C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N7S1182C1D0Ev,_ZThn144_N7S1182C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S1182C1D1Ev,_ZTv0_n60_N7S1182C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N7S1182C1D1Ev,_ZThn144_N7S1182C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N7S1182C1D0Ev,_ZTv0_n68_N7S1182C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N7S1182C1D0Ev,_ZThn128_N7S1182C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N7S1182C1D1Ev,_ZTv0_n68_N7S1182C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N7S1182C1D1Ev,_ZThn128_N7S1182C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1182C1D0Ev,_ZTv0_n32_N7S1182C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S1182C1D0Ev,_ZThn112_N7S1182C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S1182C1D0Ev,_ZThn96_N7S1182C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1182C1D1Ev,_ZTv0_n32_N7S1182C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S1182C1D1Ev,_ZThn112_N7S1182C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S1182C1D1Ev,_ZThn96_N7S1182C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S1182C1D0Ev,_ZTv0_n44_N7S1182C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N7S1182C1D0Ev,_ZThn120_N7S1182C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S1182C1D0Ev,_ZThn84_N7S1182C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S1182C1D1Ev,_ZTv0_n44_N7S1182C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N7S1182C1D1Ev,_ZThn120_N7S1182C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S1182C1D1Ev,_ZThn84_N7S1182C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S1182C1 = {  "S1182C1", // class name
  bases_S1182C1, 103,
  &(vtc_S1182C1[0]), // expected_vtbl_contents
  &(vtt_S1182C1[0]), // expected_vtt_contents
  ABISELECT(344,180), // object size
  NSPAIRA(_ZTI7S1182C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S1182C1),252, //virtual function table var
  18, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1182C1),222, //virtual table table var
  52, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names90,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6127C10  : virtual S7856C15 , S7856C12 , virtual S7856C9_nt {
  ~S6127C10(); // tgen
  S6127C10(); // tgen
};
//SIG(-1 S6127C10) C1{ VBC2{ m} BC3{ m} VBC4{ m}}


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

static void Test_S6127C10()
{
  extern Class_Descriptor cd_S6127C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S6127C10, buf);
    S6127C10 *dp, &lv = *(dp=new (buf) S6127C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S6127C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6127C10)");
    check_base_class_offset(lv, (S7856C15*), 0, "S6127C10");
    check_base_class_offset(lv, (S7856C12*), 0, "S6127C10");
    check_base_class_offset(lv, (S7856C9_nt*), 0, "S6127C10");
    test_class_info(&lv, &cd_S6127C10);
    dp->~S6127C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6127C10(Test_S6127C10, "S6127C10", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S6127C10C1Ev();
extern void _ZN8S6127C10D1Ev();
Name_Map name_map_S6127C10[] = {
  NSPAIR(_ZN8S6127C10C1Ev),
  NSPAIR(_ZN8S6127C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
static Base_Class bases_S6127C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S6127C10[];
static  VTBL_ENTRY vtc_S6127C10[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
extern VTBL_ENTRY _ZTV8S6127C10[];
static  VTT_ENTRY vtt_S6127C10[] = {
  {&(_ZTV8S6127C10[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
Class_Descriptor cd_S6127C10 = {  "S6127C10", // class name
  bases_S6127C10, 3,
  &(vtc_S6127C10[0]), // expected_vtbl_contents
  &(vtt_S6127C10[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S6127C10),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S6127C10),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6127C10),1, //virtual table table var
  0, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6127C9  : S7856C15 , virtual S6127C10 , virtual S7856C12 {
  ~S6127C9(); // tgen
  S6127C9(); // tgen
};
//SIG(-1 S6127C9) C1{ BC2{ m} VBC3{ VBC2 BC4{ m} VBC5{ m}} VBC4}


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

static void Test_S6127C9()
{
  extern Class_Descriptor cd_S6127C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S6127C9, buf);
    S6127C9 *dp, &lv = *(dp=new (buf) S6127C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S6127C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6127C9)");
    /*is_ambiguous_... S6127C9::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), 0, "S6127C9");
    check_base_class_offset(lv, (S7856C15*)(S6127C10*), ABISELECT(8,4), "S6127C9");
    check_base_class_offset(lv, (S7856C12*)(S6127C10*), 0, "S6127C9");
    check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*), 0, "S6127C9");
    check_base_class_offset(lv, (S6127C10*), 0, "S6127C9");
    /*is_ambiguous_... S6127C9::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), ABISELECT(8,4), "S6127C9");
    test_class_info(&lv, &cd_S6127C9);
    dp->~S6127C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6127C9(Test_S6127C9, "S6127C9", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S6127C9C1Ev();
extern void _ZN7S6127C9D1Ev();
Name_Map name_map_S6127C9[] = {
  NSPAIR(_ZN7S6127C9C1Ev),
  NSPAIR(_ZN7S6127C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
static Base_Class bases_S6127C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S6127C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S6127C9[];
static  VTBL_ENTRY vtc_S6127C9[] = {
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
extern VTBL_ENTRY _ZTV7S6127C9[];
static  VTBL_ENTRY _tg__ZTV8S6127C10__7S6127C9[] = {
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTT_ENTRY vtt_S6127C9[] = {
  {&(_ZTV7S6127C9[6]),  6,6},
  {&(_ZTV7S6127C9[6]),  6,6},
  {&(_tg__ZTV8S6127C10__7S6127C9[4]),  4,4},
};
extern VTBL_ENTRY _ZTI7S6127C9[];
extern  VTBL_ENTRY _ZTV7S6127C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C9[];
Class_Descriptor cd_S6127C9 = {  "S6127C9", // class name
  bases_S6127C9, 6,
  &(vtc_S6127C9[0]), // expected_vtbl_contents
  &(vtt_S6127C9[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S6127C9),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S6127C9),6, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6127C9),3, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6127C12  : S7856C12 , virtual S7856C15 , virtual S7856C9_nt , S6127C10 , virtual S6127C9 {
  virtual  ~S6127C12(); // _ZN8S6127C12D2Ev
  S6127C12(); // tgen
};
//SIG(-1 S6127C12) C1{ BC2{ m} VBC3{ m} VBC4{ m} BC5{ VBC3 BC2 VBC4} VBC6{ BC3 VBC5 VBC2} vd}


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

static void Test_S6127C12()
{
  extern Class_Descriptor cd_S6127C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S6127C12, buf);
    S6127C12 *dp, &lv = *(dp=new (buf) S6127C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S6127C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6127C12)");
    /*is_ambiguous_... S6127C12::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), ABISELECT(8,4), "S6127C12");
    /*is_ambiguous_... S6127C12::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), 0, "S6127C12");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*), 0, "S6127C12");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*), 0, "S6127C12");
    check_base_class_offset(lv, (S7856C9_nt*), 0, "S6127C12");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*), 0, "S6127C12");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*), 0, "S6127C12");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*), 0, "S6127C12");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S6127C10*), 0, "S6127C12");
    /*is_ambiguous_... S6127C9::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C9*), ABISELECT(16,8), "S6127C12");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*), ABISELECT(16,8), "S6127C12");
    check_base_class_offset(lv, (S6127C10*)(S6127C9*), ABISELECT(16,8), "S6127C12");
    /*is_ambiguous_... S6127C9::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C9*), ABISELECT(24,12), "S6127C12");
    check_base_class_offset(lv, (S6127C9*), ABISELECT(16,8), "S6127C12");
    test_class_info(&lv, &cd_S6127C12);
    dp->~S6127C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6127C12(Test_S6127C12, "S6127C12", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S6127C12C1Ev();
extern void _ZN8S6127C12D2Ev();
Name_Map name_map_S6127C12[] = {
  NSPAIR(_ZN8S6127C12C1Ev),
  NSPAIR(_ZN8S6127C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C9;
extern VTBL_ENTRY _ZTI7S6127C9[];
extern  VTBL_ENTRY _ZTV7S6127C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C9[];
static Base_Class bases_S6127C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C12,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S6127C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C15,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S6127C10,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S6127C9,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S6127C12[];
extern void _ZN8S6127C12D1Ev();
extern void _ZN8S6127C12D0Ev();
static  VTBL_ENTRY vtc_S6127C12[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C12[0]),
  (VTBL_ENTRY)&_ZN8S6127C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C12D0Ev,
  ABISELECT(8,4),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S6127C12[0]),
};
extern VTBL_ENTRY _ZTV8S6127C12[];
static  VTBL_ENTRY _tg__ZTV8S6127C10__A__8S6127C12[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C12[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C10__A1__8S6127C12[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTT_ENTRY vtt_S6127C12[] = {
  {&(_ZTV8S6127C12[7]),  7,15},
  {&(_tg__ZTV8S6127C10__A__8S6127C12[4]),  4,4},
  {&(_ZTV8S6127C12[15]),  15,15},
  {&(_ZTV8S6127C12[15]),  15,15},
  {&(_tg__ZTV7S6127C9__8S6127C12[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C12[6]),  6,6},
  {&(_tg__ZTV8S6127C10__A1__8S6127C12[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S6127C12[];
extern  VTBL_ENTRY _ZTV8S6127C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C12[];
Class_Descriptor cd_S6127C12 = {  "S6127C12", // class name
  bases_S6127C12, 10,
  &(vtc_S6127C12[0]), // expected_vtbl_contents
  &(vtt_S6127C12[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S6127C12),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S6127C12),15, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6127C12),7, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6127C6  : virtual S7856C15 , virtual S7856C12 , virtual S6127C9 , S7856C9_nt , S6127C12 {
  virtual  ~S6127C6(); // _ZN7S6127C6D2Ev
  S6127C6(); // tgen
};
//SIG(-1 S6127C6) C1{ VBC2{ m} VBC3{ m} VBC4{ BC2 VBC5{ VBC2 BC3 VBC6{ m}} VBC3} BC6 BC7{ BC3 VBC2 VBC6 BC5 VBC4 vd} vd}


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

static void Test_S6127C6()
{
  extern Class_Descriptor cd_S6127C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S6127C6, buf);
    S6127C6 *dp, &lv = *(dp=new (buf) S6127C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S6127C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6127C6)");
    /*is_ambiguous_... S6127C6::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), 0, "S6127C6");
    /*is_ambiguous_... S6127C6::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*), 0, "S6127C6");
    /*is_ambiguous_... S6127C12::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C12*), 0, "S6127C6");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*)(S6127C12*), 0, "S6127C6");
    /*is_ambiguous_... S6127C6::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), ABISELECT(9,5), "S6127C6");
    /*is_ambiguous_... S6127C9::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C9*), ABISELECT(9,5), "S6127C6");
    /*is_ambiguous_... S6127C9::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C9*), ABISELECT(16,8), "S6127C6");
    /*is_ambiguous_... S6127C6::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*), ABISELECT(16,8), "S6127C6");
    /*is_ambiguous_... S6127C6::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*), ABISELECT(24,12), "S6127C6");
    check_base_class_offset(lv, (S7856C9_nt*)(S6127C12*), ABISELECT(24,12), "S6127C6");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*)(S6127C12*), ABISELECT(24,12), "S6127C6");
    check_base_class_offset(lv, (S6127C10*)(S6127C9*), ABISELECT(16,8), "S6127C6");
    check_base_class_offset(lv, (S6127C9*), ABISELECT(16,8), "S6127C6");
    check_base_class_offset(lv, (S6127C9*)(S6127C12*), ABISELECT(16,8), "S6127C6");
    /*is_ambiguous_... S6127C6::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*), 0, "S6127C6");
    /*is_ambiguous_... S6127C12::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C12*), ABISELECT(8,4), "S6127C6");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*)(S6127C12*), 0, "S6127C6");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C12*), 0, "S6127C6");
    check_base_class_offset(lv, (S6127C12*), 0, "S6127C6");
    test_class_info(&lv, &cd_S6127C6);
    dp->~S6127C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6127C6(Test_S6127C6, "S6127C6", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN7S6127C6C1Ev();
extern void _ZN7S6127C6D2Ev();
Name_Map name_map_S6127C6[] = {
  NSPAIR(_ZN7S6127C6C1Ev),
  NSPAIR(_ZN7S6127C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C9;
extern VTBL_ENTRY _ZTI7S6127C9[];
extern  VTBL_ENTRY _ZTV7S6127C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C9[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C12;
extern VTBL_ENTRY _ZTI8S6127C12[];
extern  VTBL_ENTRY _ZTV8S6127C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C12[];
static Base_Class bases_S6127C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S6127C10,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S6127C9,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S6127C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S6127C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6127C6[];
extern void _ZN7S6127C6D1Ev();
extern void _ZN7S6127C6D0Ev();
static  VTBL_ENTRY vtc_S6127C6[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C6[0]),
  (VTBL_ENTRY)&_ZN7S6127C6D1Ev,
  (VTBL_ENTRY)&_ZN7S6127C6D0Ev,
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S6127C6[0]),
};
extern VTBL_ENTRY _ZTV7S6127C6[];
extern void _ZN8S6127C12D1Ev();
extern void _ZN8S6127C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C12__7S6127C6[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C12[0]),
  (VTBL_ENTRY)&_ZN8S6127C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6127C108S6127C12__A1__7S6127C6[] = {
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C12__7S6127C6[] = {
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S6127C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__7S6127C6[] = {
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C10__7S6127C6[] = {
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTT_ENTRY vtt_S6127C6[] = {
  {&(_ZTV7S6127C6[7]),  7,15},
  {&(_tg__ZTV8S6127C12__7S6127C6[7]),  7,9},
  {&(_tg__ZTV8S6127C108S6127C12__A1__7S6127C6[4]),  4,4},
  {&(_tg__ZTV7S6127C9__8S6127C12__7S6127C6[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C12__7S6127C6[6]),  6,6},
  {&(_ZTV7S6127C6[15]),  15,15},
  {&(_ZTV7S6127C6[15]),  15,15},
  {&(_tg__ZTV7S6127C9__7S6127C6[6]),  6,6},
  {&(_tg__ZTV7S6127C9__7S6127C6[6]),  6,6},
  {&(_tg__ZTV8S6127C10__7S6127C6[4]),  4,4},
};
extern VTBL_ENTRY _ZTI7S6127C6[];
extern  VTBL_ENTRY _ZTV7S6127C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C6[];
Class_Descriptor cd_S6127C6 = {  "S6127C6", // class name
  bases_S6127C6, 12,
  &(vtc_S6127C6[0]), // expected_vtbl_contents
  &(vtt_S6127C6[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI7S6127C6),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S6127C6),15, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6127C6),10, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6127C13  : S7856C9_nt , S7856C12 , S6127C10 {
  int s6127c13f0;
  ~S6127C13(); // tgen
  S6127C13(); // tgen
};
//SIG(-1 S6127C13) C1{ BC2{ m} BC3{ m} BC4{ VBC5{ m} BC3 VBC2} Fi}


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

static void Test_S6127C13()
{
  extern Class_Descriptor cd_S6127C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S6127C13, buf);
    S6127C13 *dp, &lv = *(dp=new (buf) S6127C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S6127C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6127C13)");
    /*is_ambiguous_... S6127C13::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*), 0, "S6127C13");
    /*is_ambiguous_... S6127C13::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), ABISELECT(8,4), "S6127C13");
    check_base_class_offset(lv, (S7856C15*)(S6127C10*), 0, "S6127C13");
    check_base_class_offset(lv, (S7856C12*)(S6127C10*), 0, "S6127C13");
    check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*), ABISELECT(12,8), "S6127C13");
    check_base_class_offset(lv, (S6127C10*), 0, "S6127C13");
    check_field_offset(lv, s6127c13f0, ABISELECT(8,4), "S6127C13.s6127c13f0");
    test_class_info(&lv, &cd_S6127C13);
    dp->~S6127C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6127C13(Test_S6127C13, "S6127C13", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S6127C13C1Ev();
extern void _ZN8S6127C13D1Ev();
Name_Map name_map_S6127C13[] = {
  NSPAIR(_ZN8S6127C13C1Ev),
  NSPAIR(_ZN8S6127C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
static Base_Class bases_S6127C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S6127C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S6127C13[];
static  VTBL_ENTRY vtc_S6127C13[] = {
  ABISELECT(12,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C13[0]),
};
extern VTBL_ENTRY _ZTV8S6127C13[];
static  VTBL_ENTRY _tg__ZTV8S6127C10__8S6127C13[] = {
  ABISELECT(12,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTT_ENTRY vtt_S6127C13[] = {
  {&(_ZTV8S6127C13[4]),  4,4},
  {&(_tg__ZTV8S6127C10__8S6127C13[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S6127C13[];
extern  VTBL_ENTRY _ZTV8S6127C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C13[];
Class_Descriptor cd_S6127C13 = {  "S6127C13", // class name
  bases_S6127C13, 6,
  &(vtc_S6127C13[0]), // expected_vtbl_contents
  &(vtt_S6127C13[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S6127C13),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S6127C13),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6127C13),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6127C5  : virtual S6127C6 , virtual S6127C13 , virtual S6127C12 {
  int s6127c5f0[2];
  virtual  ~S6127C5(); // _ZN7S6127C5D2Ev
  S6127C5(); // tgen
};
//SIG(-1 S6127C5) C1{ VBC2{ VBC3{ m} VBC4{ m} VBC5{ BC3 VBC6{ VBC3 BC4 VBC7{ m}} VBC4} BC7 BC8{ BC4 VBC3 VBC7 BC6 VBC5 vd} vd} VBC9{ BC7 BC4 BC6 Fi} VBC8 vd Fi[2]}


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

static void Test_S6127C5()
{
  extern Class_Descriptor cd_S6127C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,10)];
    init_test(&cd_S6127C5, buf);
    S6127C5 *dp, &lv = *(dp=new (buf) S6127C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S6127C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6127C5)");
    /*is_ambiguous_... S6127C6::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C6*), ABISELECT(25,17), "S6127C5");
    /*is_ambiguous_... S6127C5::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*), ABISELECT(25,17), "S6127C5");
    /*is_ambiguous_... S6127C12::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C12*)(S6127C6*), ABISELECT(25,17), "S6127C5");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*)(S6127C12*)(S6127C6*), ABISELECT(25,17), "S6127C5");
    check_base_class_offset(lv, (S7856C15*)(S6127C10*)(S6127C13*), ABISELECT(25,17), "S6127C5");
    /*is_ambiguous_... S6127C5::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C12*), ABISELECT(25,17), "S6127C5");
    /*is_ambiguous_... S6127C5::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*)(S6127C12*), ABISELECT(25,17), "S6127C5");
    /*is_ambiguous_... S6127C6::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C6*), ABISELECT(25,17), "S6127C5");
    /*is_ambiguous_... S6127C9::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C9*), ABISELECT(25,17), "S6127C5");
    /*is_ambiguous_... S6127C9::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C9*), 0, "S6127C5");
    /*is_ambiguous_... S6127C5::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*), 0, "S6127C5");
    /*is_ambiguous_... S6127C5::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*), 0, "S6127C5");
    check_base_class_offset(lv, (S7856C9_nt*)(S6127C12*)(S6127C6*), 0, "S6127C5");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*)(S6127C12*)(S6127C6*), 0, "S6127C5");
    check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*)(S6127C13*), 0, "S6127C5");
    /*is_ambiguous_... S6127C5::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C12*), 0, "S6127C5");
    /*is_ambiguous_... S6127C5::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*)(S6127C12*), 0, "S6127C5");
    check_base_class_offset(lv, (S6127C10*)(S6127C9*), 0, "S6127C5");
    check_base_class_offset(lv, (S6127C9*)(S6127C6*), 0, "S6127C5");
    check_base_class_offset(lv, (S6127C9*)(S6127C12*)(S6127C6*), 0, "S6127C5");
    /*is_ambiguous_... S6127C5::S6127C12 */ AMB_check_base_class_offset(lv, (S6127C9*)(S6127C12*), 0, "S6127C5");
    /*is_ambiguous_... S6127C6::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C6*), ABISELECT(16,12), "S6127C5");
    /*is_ambiguous_... S6127C12::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C12*)(S6127C6*), ABISELECT(24,16), "S6127C5");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*)(S6127C12*)(S6127C6*), ABISELECT(16,12), "S6127C5");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C12*)(S6127C6*), ABISELECT(16,12), "S6127C5");
    check_base_class_offset(lv, (S6127C12*)(S6127C6*), ABISELECT(16,12), "S6127C5");
    check_base_class_offset(lv, (S6127C6*), ABISELECT(16,12), "S6127C5");
    /*is_ambiguous_... S6127C13::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C13*), ABISELECT(32,20), "S6127C5");
    /*is_ambiguous_... S6127C13::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C13*), ABISELECT(40,24), "S6127C5");
    check_base_class_offset(lv, (S7856C12*)(S6127C10*)(S6127C13*), ABISELECT(32,20), "S6127C5");
    check_base_class_offset(lv, (S6127C10*)(S6127C13*), ABISELECT(32,20), "S6127C5");
    check_base_class_offset(lv, (S6127C13*), ABISELECT(32,20), "S6127C5");
    /*is_ambiguous_... S6127C5::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C12*), ABISELECT(56,32), "S6127C5");
    /*is_ambiguous_... S6127C5::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*)(S6127C12*), ABISELECT(48,28), "S6127C5");
    /*is_ambiguous_... S6127C5::S6127C12 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C12*), ABISELECT(48,28), "S6127C5");
    /*is_ambiguous_... S6127C5::S6127C12 */ AMB_check_base_class_offset(lv, (S6127C12*), ABISELECT(48,28), "S6127C5");
    check_field_offset(lv, s6127c5f0, ABISELECT(8,4), "S6127C5.s6127c5f0");
    test_class_info(&lv, &cd_S6127C5);
    dp->~S6127C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6127C5(Test_S6127C5, "S6127C5", ABISELECT(64,36));

#else // __cplusplus

extern void _ZN7S6127C5C1Ev();
extern void _ZN7S6127C5D2Ev();
Name_Map name_map_S6127C5[] = {
  NSPAIR(_ZN7S6127C5C1Ev),
  NSPAIR(_ZN7S6127C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C9;
extern VTBL_ENTRY _ZTI7S6127C9[];
extern  VTBL_ENTRY _ZTV7S6127C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C9[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C12;
extern VTBL_ENTRY _ZTI8S6127C12[];
extern  VTBL_ENTRY _ZTV8S6127C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C12[];
extern Class_Descriptor cd_S6127C6;
extern VTBL_ENTRY _ZTI7S6127C6[];
extern  VTBL_ENTRY _ZTV7S6127C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C6[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C13;
extern VTBL_ENTRY _ZTI8S6127C13[];
extern  VTBL_ENTRY _ZTV8S6127C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C13[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C12;
extern VTBL_ENTRY _ZTI8S6127C12[];
extern  VTBL_ENTRY _ZTV8S6127C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C12[];
static Base_Class bases_S6127C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    ABISELECT(25,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(25,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S6127C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S6127C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S6127C10,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S6127C12,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S6127C6,    ABISELECT(16,12), //bcp->offset
    12, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C9_nt,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S6127C10,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S6127C13,    ABISELECT(32,20), //bcp->offset
    22, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S6127C10,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S6127C12,    ABISELECT(48,28), //bcp->offset
    26, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S6127C5[];
extern void _ZN7S6127C5D1Ev();
extern void _ZN7S6127C5D0Ev();
extern void ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev)();
extern void ABISELECT(_ZThn16_N7S6127C5D1Ev,_ZThn12_N7S6127C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev)();
extern void ABISELECT(_ZThn16_N7S6127C5D0Ev,_ZThn12_N7S6127C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev)();
extern void ABISELECT(_ZThn48_N7S6127C5D1Ev,_ZThn28_N7S6127C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev)();
extern void ABISELECT(_ZThn48_N7S6127C5D0Ev,_ZThn28_N7S6127C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S6127C5[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C5[0]),
  (VTBL_ENTRY)&_ZN7S6127C5D1Ev,
  (VTBL_ENTRY)&_ZN7S6127C5D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S6127C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev),
  ABISELECT(-32,-20),
  ABISELECT(-7,-3),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S6127C5[0]),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S6127C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev),
};
extern VTBL_ENTRY _ZTV7S6127C5[];
extern void _ZN7S6127C6D1Ev();
extern void _ZN7S6127C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6127C6__7S6127C5[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C6[0]),
  (VTBL_ENTRY)&_ZN7S6127C6D1Ev,
  (VTBL_ENTRY)&_ZN7S6127C6D0Ev,
};
extern void _ZN8S6127C12D1Ev();
extern void _ZN8S6127C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C127S6127C6__7S6127C5[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C12[0]),
  (VTBL_ENTRY)&_ZN8S6127C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6127C108S6127C127S6127C6__A1__7S6127C5[] = {
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C127S6127C6__7S6127C5[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S6127C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__7S6127C6__7S6127C5[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S6127C6[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__7S6127C5[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C10__7S6127C5[] = {
  0,
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C13__7S6127C5[] = {
  ABISELECT(-32,-20),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C108S6127C13__A2__7S6127C5[] = {
  ABISELECT(-32,-20),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
extern void _ZN8S6127C12D1Ev();
extern void _ZN8S6127C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C12__A1__7S6127C5[] = {
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C12[0]),
  (VTBL_ENTRY)&_ZN8S6127C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6127C108S6127C12__A3__7S6127C5[] = {
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C12__A1__7S6127C5[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S6127C12[0]),
};
static  VTT_ENTRY vtt_S6127C5[] = {
  {&(_ZTV7S6127C5[10]),  10,36},
  {&(_ZTV7S6127C5[20]),  20,36},
  {&(_ZTV7S6127C5[10]),  10,36},
  {&(_ZTV7S6127C5[10]),  10,36},
  {&(_ZTV7S6127C5[26]),  26,36},
  {&(_ZTV7S6127C5[34]),  34,36},
  {&(_tg__ZTV7S6127C6__7S6127C5[7]),  7,9},
  {&(_tg__ZTV8S6127C127S6127C6__7S6127C5[7]),  7,9},
  {&(_tg__ZTV8S6127C108S6127C127S6127C6__A1__7S6127C5[4]),  4,4},
  {&(_tg__ZTV7S6127C9__8S6127C127S6127C6__7S6127C5[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C127S6127C6__7S6127C5[6]),  6,6},
  {&(_tg__ZTV7S6127C9__7S6127C6__7S6127C5[6]),  6,6},
  {&(_tg__ZTV7S6127C9__7S6127C6__7S6127C5[6]),  6,6},
  {&(_tg__ZTV7S6127C9__7S6127C5[6]),  6,6},
  {&(_tg__ZTV7S6127C9__7S6127C5[6]),  6,6},
  {&(_tg__ZTV8S6127C10__7S6127C5[4]),  4,4},
  {&(_tg__ZTV8S6127C13__7S6127C5[4]),  4,4},
  {&(_tg__ZTV8S6127C108S6127C13__A2__7S6127C5[4]),  4,4},
  {&(_tg__ZTV8S6127C12__A1__7S6127C5[7]),  7,9},
  {&(_tg__ZTV8S6127C108S6127C12__A3__7S6127C5[4]),  4,4},
  {&(_tg__ZTV7S6127C9__8S6127C12__A1__7S6127C5[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C12__A1__7S6127C5[6]),  6,6},
};
extern VTBL_ENTRY _ZTI7S6127C5[];
extern  VTBL_ENTRY _ZTV7S6127C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C5[];
static VTBL_ENTRY alt_thunk_names91[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S6127C5D0Ev,_ZThn28_N7S6127C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S6127C5D0Ev,_ZThn12_N7S6127C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S6127C5D1Ev,_ZThn28_N7S6127C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S6127C5D1Ev,_ZThn12_N7S6127C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6127C5 = {  "S6127C5", // class name
  bases_S6127C5, 22,
  &(vtc_S6127C5[0]), // expected_vtbl_contents
  &(vtt_S6127C5[0]), // expected_vtt_contents
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI7S6127C5),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S6127C5),36, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6127C5),22, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names91,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6127C16  : virtual S7856C12 {
  ~S6127C16(); // tgen
  S6127C16(); // tgen
};
//SIG(-1 S6127C16) C1{ VBC2{ m}}


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

static void Test_S6127C16()
{
  extern Class_Descriptor cd_S6127C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S6127C16, buf);
    S6127C16 *dp, &lv = *(dp=new (buf) S6127C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S6127C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6127C16)");
    check_base_class_offset(lv, (S7856C12*), 0, "S6127C16");
    test_class_info(&lv, &cd_S6127C16);
    dp->~S6127C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6127C16(Test_S6127C16, "S6127C16", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S6127C16C1Ev();
extern void _ZN8S6127C16D1Ev();
Name_Map name_map_S6127C16[] = {
  NSPAIR(_ZN8S6127C16C1Ev),
  NSPAIR(_ZN8S6127C16D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
static Base_Class bases_S6127C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S6127C16[];
static  VTBL_ENTRY vtc_S6127C16[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C16[0]),
};
extern VTBL_ENTRY _ZTV8S6127C16[];
static  VTT_ENTRY vtt_S6127C16[] = {
  {&(_ZTV8S6127C16[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S6127C16[];
extern  VTBL_ENTRY _ZTV8S6127C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C16[];
Class_Descriptor cd_S6127C16 = {  "S6127C16", // class name
  bases_S6127C16, 1,
  &(vtc_S6127C16[0]), // expected_vtbl_contents
  &(vtt_S6127C16[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S6127C16),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S6127C16),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6127C16),1, //virtual table table var
  0, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6127C15  : virtual S6127C10 , virtual S6127C16 , virtual S6127C13 , S7856C9_nt , virtual S6127C6 {
  int s6127c15f0;
  virtual  ~S6127C15(); // _ZN8S6127C15D2Ev
  S6127C15(); // tgen
};
//SIG(-1 S6127C15) C1{ VBC2{ VBC3{ m} BC4{ m} VBC5{ m}} VBC6{ VBC4} VBC7{ BC5 BC4 BC2 Fi} BC5 VBC8{ VBC3 VBC4 VBC9{ BC3 VBC2 VBC4} BC5 BC10{ BC4 VBC3 VBC5 BC2 VBC9 vd} vd} vd Fi}


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

static void Test_S6127C15()
{
  extern Class_Descriptor cd_S6127C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S6127C15, buf);
    S6127C15 *dp, &lv = *(dp=new (buf) S6127C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S6127C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6127C15)");
    /*is_ambiguous_... S6127C15::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*), 0, "S6127C15");
    check_base_class_offset(lv, (S7856C15*)(S6127C10*)(S6127C13*), 0, "S6127C15");
    /*is_ambiguous_... S6127C6::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C6*), 0, "S6127C15");
    /*is_ambiguous_... S6127C12::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C12*)(S6127C6*), 0, "S6127C15");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*)(S6127C12*)(S6127C6*), 0, "S6127C15");
    /*is_ambiguous_... S6127C15::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*), ABISELECT(48,28), "S6127C15");
    /*is_ambiguous_... S6127C15::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*), ABISELECT(12,8), "S6127C15");
    check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*)(S6127C13*), ABISELECT(12,8), "S6127C15");
    check_base_class_offset(lv, (S7856C9_nt*)(S6127C12*)(S6127C6*), ABISELECT(12,8), "S6127C15");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*)(S6127C12*)(S6127C6*), ABISELECT(12,8), "S6127C15");
    /*is_ambiguous_... S6127C15::S6127C10 */ AMB_check_base_class_offset(lv, (S6127C10*), ABISELECT(48,28), "S6127C15");
    check_base_class_offset(lv, (S6127C10*)(S6127C9*), ABISELECT(48,28), "S6127C15");
    check_base_class_offset(lv, (S7856C12*)(S6127C16*), 0, "S6127C15");
    /*is_ambiguous_... S6127C6::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C6*), 0, "S6127C15");
    /*is_ambiguous_... S6127C9::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C9*), 0, "S6127C15");
    check_base_class_offset(lv, (S6127C16*), 0, "S6127C15");
    /*is_ambiguous_... S6127C13::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C13*), ABISELECT(16,12), "S6127C15");
    /*is_ambiguous_... S6127C13::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C13*), ABISELECT(24,16), "S6127C15");
    check_base_class_offset(lv, (S7856C12*)(S6127C10*)(S6127C13*), ABISELECT(16,12), "S6127C15");
    check_base_class_offset(lv, (S6127C10*)(S6127C13*), ABISELECT(16,12), "S6127C15");
    check_base_class_offset(lv, (S6127C13*), ABISELECT(16,12), "S6127C15");
    /*is_ambiguous_... S6127C15::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*), 0, "S6127C15");
    /*is_ambiguous_... S6127C9::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C9*), ABISELECT(48,28), "S6127C15");
    check_base_class_offset(lv, (S6127C9*)(S6127C6*), ABISELECT(48,28), "S6127C15");
    check_base_class_offset(lv, (S6127C9*)(S6127C12*)(S6127C6*), ABISELECT(48,28), "S6127C15");
    /*is_ambiguous_... S6127C6::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C6*), ABISELECT(32,20), "S6127C15");
    /*is_ambiguous_... S6127C12::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C12*)(S6127C6*), ABISELECT(40,24), "S6127C15");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*)(S6127C12*)(S6127C6*), ABISELECT(32,20), "S6127C15");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C12*)(S6127C6*), ABISELECT(32,20), "S6127C15");
    check_base_class_offset(lv, (S6127C12*)(S6127C6*), ABISELECT(32,20), "S6127C15");
    check_base_class_offset(lv, (S6127C6*), ABISELECT(32,20), "S6127C15");
    check_field_offset(lv, s6127c15f0, ABISELECT(8,4), "S6127C15.s6127c15f0");
    test_class_info(&lv, &cd_S6127C15);
    dp->~S6127C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6127C15(Test_S6127C15, "S6127C15", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN8S6127C15C1Ev();
extern void _ZN8S6127C15D2Ev();
Name_Map name_map_S6127C15[] = {
  NSPAIR(_ZN8S6127C15C1Ev),
  NSPAIR(_ZN8S6127C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C16;
extern VTBL_ENTRY _ZTI8S6127C16[];
extern  VTBL_ENTRY _ZTV8S6127C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C16[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C13;
extern VTBL_ENTRY _ZTI8S6127C13[];
extern  VTBL_ENTRY _ZTV8S6127C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C13[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S6127C9;
extern VTBL_ENTRY _ZTI7S6127C9[];
extern  VTBL_ENTRY _ZTV7S6127C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C9[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C12;
extern VTBL_ENTRY _ZTI8S6127C12[];
extern  VTBL_ENTRY _ZTV8S6127C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C12[];
extern Class_Descriptor cd_S6127C6;
extern VTBL_ENTRY _ZTI7S6127C6[];
extern  VTBL_ENTRY _ZTV7S6127C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C6[];
static Base_Class bases_S6127C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S6127C10,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S6127C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C9_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S6127C10,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S6127C13,    ABISELECT(16,12), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C15,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S6127C9,    ABISELECT(48,28), //bcp->offset
    26, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S6127C10,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S6127C12,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S6127C6,    ABISELECT(32,20), //bcp->offset
    16, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S6127C15[];
extern void _ZN8S6127C15D1Ev();
extern void _ZN8S6127C15D0Ev();
extern void ABISELECT(_ZTv0_n64_N8S6127C15D1Ev,_ZTv0_n32_N8S6127C15D1Ev)();
extern void ABISELECT(_ZThn32_N8S6127C15D1Ev,_ZThn20_N8S6127C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6127C15D0Ev,_ZTv0_n32_N8S6127C15D0Ev)();
extern void ABISELECT(_ZThn32_N8S6127C15D0Ev,_ZThn20_N8S6127C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S6127C15[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  ABISELECT(12,8),
  0,
  ABISELECT(48,28),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C15[0]),
  (VTBL_ENTRY)&_ZN8S6127C15D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C15D0Ev,
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S6127C15[0]),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S6127C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C15D1Ev,_ZTv0_n32_N8S6127C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C15D0Ev,_ZTv0_n32_N8S6127C15D0Ev),
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S6127C15[0]),
};
extern VTBL_ENTRY _ZTV8S6127C15[];
static  VTBL_ENTRY _tg__ZTV8S6127C10__8S6127C15[] = {
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C16__8S6127C15[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C13__8S6127C15[] = {
  -4,
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C108S6127C13__A1__8S6127C15[] = {
  -4,
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
extern void _ZN7S6127C6D1Ev();
extern void _ZN7S6127C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6127C6__8S6127C15[] = {
  ABISELECT(-32,-20),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C6[0]),
  (VTBL_ENTRY)&_ZN7S6127C6D1Ev,
  (VTBL_ENTRY)&_ZN7S6127C6D0Ev,
};
extern void _ZN8S6127C12D1Ev();
extern void _ZN8S6127C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C127S6127C6__8S6127C15[] = {
  ABISELECT(-32,-20),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C12[0]),
  (VTBL_ENTRY)&_ZN8S6127C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6127C108S6127C127S6127C6__A2__8S6127C15[] = {
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C127S6127C6__8S6127C15[] = {
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S6127C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__7S6127C6__8S6127C15[] = {
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S6127C6[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C15[] = {
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
static  VTT_ENTRY vtt_S6127C15[] = {
  {&(_ZTV8S6127C15[10]),  10,32},
  {&(_ZTV8S6127C15[32]),  32,32},
  {&(_ZTV8S6127C15[10]),  10,32},
  {&(_ZTV8S6127C15[16]),  16,32},
  {&(_ZTV8S6127C15[24]),  24,32},
  {&(_ZTV8S6127C15[32]),  32,32},
  {&(_tg__ZTV8S6127C10__8S6127C15[4]),  4,4},
  {&(_tg__ZTV8S6127C16__8S6127C15[3]),  3,3},
  {&(_tg__ZTV8S6127C13__8S6127C15[4]),  4,4},
  {&(_tg__ZTV8S6127C108S6127C13__A1__8S6127C15[4]),  4,4},
  {&(_tg__ZTV7S6127C6__8S6127C15[7]),  7,9},
  {&(_tg__ZTV8S6127C127S6127C6__8S6127C15[7]),  7,9},
  {&(_tg__ZTV8S6127C108S6127C127S6127C6__A2__8S6127C15[4]),  4,4},
  {&(_tg__ZTV7S6127C9__8S6127C127S6127C6__8S6127C15[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C127S6127C6__8S6127C15[6]),  6,6},
  {&(_tg__ZTV7S6127C9__7S6127C6__8S6127C15[6]),  6,6},
  {&(_tg__ZTV7S6127C9__7S6127C6__8S6127C15[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C15[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C15[6]),  6,6},
};
extern VTBL_ENTRY _ZTI8S6127C15[];
extern  VTBL_ENTRY _ZTV8S6127C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C15[];
static VTBL_ENTRY alt_thunk_names92[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6127C15D0Ev,_ZTv0_n32_N8S6127C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S6127C15D0Ev,_ZThn20_N8S6127C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6127C15D1Ev,_ZTv0_n32_N8S6127C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S6127C15D1Ev,_ZThn20_N8S6127C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6127C15 = {  "S6127C15", // class name
  bases_S6127C15, 20,
  &(vtc_S6127C15[0]), // expected_vtbl_contents
  &(vtt_S6127C15[0]), // expected_vtt_contents
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI8S6127C15),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S6127C15),32, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6127C15),19, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names92,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6127C17  : virtual S6127C12 , S6127C13 , S6127C9 , S7856C9_nt {
  virtual  ~S6127C17(); // _ZN8S6127C17D2Ev
  S6127C17(); // tgen
};
//SIG(-1 S6127C17) C1{ VBC2{ BC3{ m} VBC4{ m} VBC5{ m} BC6{ VBC4 BC3 VBC5} VBC7{ BC4 VBC6 VBC3} vd} BC8{ BC5 BC3 BC6 Fi} BC7 BC5 vd}


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

static void Test_S6127C17()
{
  extern Class_Descriptor cd_S6127C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[8];
    init_test(&cd_S6127C17, buf);
    S6127C17 *dp, &lv = *(dp=new (buf) S6127C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,28), "sizeof(S6127C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6127C17)");
    /*is_ambiguous_... S6127C12::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C12*), ABISELECT(32,16), "S6127C17");
    /*is_ambiguous_... S6127C12::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C12*), 0, "S6127C17");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*)(S6127C12*), 0, "S6127C17");
    /*is_ambiguous_... S6127C17::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*), 0, "S6127C17");
    check_base_class_offset(lv, (S7856C15*)(S6127C10*)(S6127C13*), 0, "S6127C17");
    check_base_class_offset(lv, (S7856C9_nt*)(S6127C12*), ABISELECT(33,17), "S6127C17");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*)(S6127C12*), ABISELECT(33,17), "S6127C17");
    /*is_ambiguous_... S6127C17::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*), ABISELECT(33,17), "S6127C17");
    check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*)(S6127C13*), ABISELECT(33,17), "S6127C17");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*)(S6127C12*), ABISELECT(24,12), "S6127C17");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C12*), ABISELECT(24,12), "S6127C17");
    /*is_ambiguous_... S6127C17::S6127C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C9*), ABISELECT(40,20), "S6127C17");
    /*is_ambiguous_... S6127C17::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*), ABISELECT(40,20), "S6127C17");
    /*is_ambiguous_... S6127C17::S6127C9 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C9*), ABISELECT(40,20), "S6127C17");
    /*is_ambiguous_... S6127C17::S6127C9 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C9*), ABISELECT(40,20), "S6127C17");
    /*is_ambiguous_... S6127C17::S6127C9 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C9*), ABISELECT(48,24), "S6127C17");
    /*is_ambiguous_... S6127C17::S6127C9 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C9*), ABISELECT(48,24), "S6127C17");
    check_base_class_offset(lv, (S6127C9*)(S6127C12*), ABISELECT(40,20), "S6127C17");
    check_base_class_offset(lv, (S6127C12*), ABISELECT(24,12), "S6127C17");
    /*is_ambiguous_... S6127C13::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C13*), 0, "S6127C17");
    /*is_ambiguous_... S6127C13::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C13*), ABISELECT(8,4), "S6127C17");
    check_base_class_offset(lv, (S7856C12*)(S6127C10*)(S6127C13*), 0, "S6127C17");
    check_base_class_offset(lv, (S6127C10*)(S6127C13*), 0, "S6127C17");
    check_base_class_offset(lv, (S6127C13*), 0, "S6127C17");
    /*is_ambiguous_... S6127C17::S6127C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C9*), ABISELECT(16,8), "S6127C17");
    /*is_ambiguous_... S6127C17::S6127C9 */ AMB_check_base_class_offset(lv, (S6127C9*), ABISELECT(16,8), "S6127C17");
    /*is_ambiguous_... S6127C17::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*), ABISELECT(24,12), "S6127C17");
    test_class_info(&lv, &cd_S6127C17);
    dp->~S6127C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6127C17(Test_S6127C17, "S6127C17", ABISELECT(56,28));

#else // __cplusplus

extern void _ZN8S6127C17C1Ev();
extern void _ZN8S6127C17D2Ev();
Name_Map name_map_S6127C17[] = {
  NSPAIR(_ZN8S6127C17C1Ev),
  NSPAIR(_ZN8S6127C17D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C9;
extern VTBL_ENTRY _ZTI7S6127C9[];
extern  VTBL_ENTRY _ZTV7S6127C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C9[];
extern Class_Descriptor cd_S6127C12;
extern VTBL_ENTRY _ZTI8S6127C12[];
extern  VTBL_ENTRY _ZTV8S6127C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C13;
extern VTBL_ENTRY _ZTI8S6127C13[];
extern  VTBL_ENTRY _ZTV8S6127C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C13[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S6127C9;
extern VTBL_ENTRY _ZTI7S6127C9[];
extern  VTBL_ENTRY _ZTV7S6127C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C9[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
static Base_Class bases_S6127C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C12,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(33,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S6127C10,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S6127C10,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S6127C9,    ABISELECT(40,20), //bcp->offset
    26, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S6127C12,    ABISELECT(24,12), //bcp->offset
    16, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S6127C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S6127C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C15,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S6127C9,    ABISELECT(16,8), //bcp->offset
    10, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C9_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S6127C17[];
extern void _ZN8S6127C17D1Ev();
extern void _ZN8S6127C17D0Ev();
extern void ABISELECT(_ZTv0_n64_N8S6127C17D1Ev,_ZTv0_n32_N8S6127C17D1Ev)();
extern void ABISELECT(_ZThn24_N8S6127C17D1Ev,_ZThn12_N8S6127C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6127C17D0Ev,_ZTv0_n32_N8S6127C17D0Ev)();
extern void ABISELECT(_ZThn24_N8S6127C17D0Ev,_ZThn12_N8S6127C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S6127C17[] = {
  ABISELECT(48,24),
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(24,12),
  ABISELECT(33,17),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
  (VTBL_ENTRY)&_ZN8S6127C17D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C17D0Ev,
  ABISELECT(32,16),
  ABISELECT(24,12),
  ABISELECT(17,9),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
  ABISELECT(-24,-12),
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(9,5),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C17D1Ev,_ZTv0_n32_N8S6127C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C17D0Ev,_ZTv0_n32_N8S6127C17D0Ev),
  ABISELECT(8,4),
  0,
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
};
extern VTBL_ENTRY _ZTV8S6127C17[];
static  VTBL_ENTRY _tg__ZTV8S6127C13__8S6127C17[] = {
  ABISELECT(33,17),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C108S6127C13__A2__8S6127C17[] = {
  ABISELECT(33,17),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__A__8S6127C17[] = {
  ABISELECT(32,16),
  ABISELECT(24,12),
  ABISELECT(17,9),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C10__7S6127C9__A__8S6127C17[] = {
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
extern void _ZN8S6127C12D1Ev();
extern void _ZN8S6127C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C12__8S6127C17[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(9,5),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C12[0]),
  (VTBL_ENTRY)&_ZN8S6127C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6127C108S6127C12__8S6127C17[] = {
  ABISELECT(9,5),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C12__8S6127C17[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S6127C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C17[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C10__A1__8S6127C17[] = {
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTT_ENTRY vtt_S6127C17[] = {
  {&(_ZTV8S6127C17[8]),  8,32},
  {&(_tg__ZTV8S6127C13__8S6127C17[4]),  4,4},
  {&(_tg__ZTV8S6127C108S6127C13__A2__8S6127C17[4]),  4,4},
  {&(_tg__ZTV7S6127C9__A__8S6127C17[6]),  6,6},
  {&(_tg__ZTV8S6127C10__7S6127C9__A__8S6127C17[4]),  4,4},
  {&(_ZTV8S6127C17[24]),  24,32},
  {&(_ZTV8S6127C17[32]),  32,32},
  {&(_ZTV8S6127C17[32]),  32,32},
  {&(_ZTV8S6127C17[16]),  16,32},
  {&(_tg__ZTV8S6127C12__8S6127C17[7]),  7,9},
  {&(_tg__ZTV8S6127C108S6127C12__8S6127C17[4]),  4,4},
  {&(_tg__ZTV7S6127C9__8S6127C12__8S6127C17[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C12__8S6127C17[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C17[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C17[6]),  6,6},
  {&(_tg__ZTV8S6127C10__A1__8S6127C17[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S6127C17[];
extern  VTBL_ENTRY _ZTV8S6127C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C17[];
static VTBL_ENTRY alt_thunk_names93[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6127C17D0Ev,_ZTv0_n32_N8S6127C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S6127C17D0Ev,_ZThn12_N8S6127C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6127C17D1Ev,_ZTv0_n32_N8S6127C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S6127C17D1Ev,_ZThn12_N8S6127C17D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6127C17 = {  "S6127C17", // class name
  bases_S6127C17, 19,
  &(vtc_S6127C17[0]), // expected_vtbl_contents
  &(vtt_S6127C17[0]), // expected_vtt_contents
  ABISELECT(56,28), // object size
  NSPAIRA(_ZTI8S6127C17),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S6127C17),32, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6127C17),16, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names93,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6127C4  : virtual S6127C5 , virtual S77C13_nt , virtual S6127C15 , S6127C17 {
  virtual  ~S6127C4(); // _ZN7S6127C4D2Ev
  S6127C4(); // tgen
};
//SIG(-1 S6127C4) C1{ VBC2{ VBC3{ VBC4{ m} VBC5{ m} VBC6{ BC4 VBC7{ VBC4 BC5 VBC8{ m}} VBC5} BC8 BC9{ BC5 VBC4 VBC8 BC7 VBC6 vd} vd} VBC10{ BC8 BC5 BC7 Fi} VBC9 vd Fi[2]} VBC11{ m} VBC12{ VBC7 VBC13{ VBC5} VBC10 BC8 VBC3 vd Fi} BC14{ VBC9 BC10 BC6 BC8 vd} vd}


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

static void Test_S6127C4()
{
  extern Class_Descriptor cd_S6127C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,16)];
    init_test(&cd_S6127C4, buf);
    S6127C4 *dp, &lv = *(dp=new (buf) S6127C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,60), "sizeof(S6127C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6127C4)");
    /*is_ambiguous_... S6127C6::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C6*), 0, "S6127C4");
    /*is_ambiguous_... S6127C4::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*), 0, "S6127C4");
    /*is_ambiguous_... S6127C12::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C12*)(S6127C6*), 0, "S6127C4");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*)(S6127C12*)(S6127C6*), 0, "S6127C4");
    /*is_ambiguous_... S6127C4::S6127C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*)(S6127C13*), 0, "S6127C4");
    /*is_ambiguous_... S6127C4::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C12*), 0, "S6127C4");
    /*is_ambiguous_... S6127C4::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*)(S6127C12*), 0, "S6127C4");
    check_base_class_offset(lv, (S7856C15*)(S6127C10*)(S6127C13*)(S6127C17*), 0, "S6127C4");
    /*is_ambiguous_... S6127C6::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C6*), ABISELECT(57,33), "S6127C4");
    /*is_ambiguous_... S6127C4::S6127C9 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C9*), ABISELECT(57,33), "S6127C4");
    check_base_class_offset(lv, (S7856C12*)(S6127C16*), ABISELECT(57,33), "S6127C4");
    /*is_ambiguous_... S6127C17::S6127C9 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C9*)(S6127C17*), ABISELECT(57,33), "S6127C4");
    /*is_ambiguous_... S6127C4::S6127C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C9*), ABISELECT(32,16), "S6127C4");
    /*is_ambiguous_... S6127C4::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*), ABISELECT(32,16), "S6127C4");
    /*is_ambiguous_... S6127C4::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*), ABISELECT(57,33), "S6127C4");
    check_base_class_offset(lv, (S7856C9_nt*)(S6127C12*)(S6127C6*), ABISELECT(57,33), "S6127C4");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*)(S6127C12*)(S6127C6*), ABISELECT(57,33), "S6127C4");
    /*is_ambiguous_... S6127C4::S6127C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*)(S6127C13*), ABISELECT(57,33), "S6127C4");
    /*is_ambiguous_... S6127C4::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C12*), ABISELECT(57,33), "S6127C4");
    /*is_ambiguous_... S6127C4::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*)(S6127C12*), ABISELECT(57,33), "S6127C4");
    check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*)(S6127C13*)(S6127C17*), ABISELECT(57,33), "S6127C4");
    /*is_ambiguous_... S6127C4::S6127C9 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C9*), ABISELECT(32,16), "S6127C4");
    /*is_ambiguous_... S6127C15::S6127C10 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C15*), ABISELECT(32,16), "S6127C4");
    /*is_ambiguous_... S6127C17::S6127C9 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C9*)(S6127C17*), ABISELECT(32,16), "S6127C4");
    check_base_class_offset(lv, (S6127C9*)(S6127C6*), ABISELECT(32,16), "S6127C4");
    check_base_class_offset(lv, (S6127C9*)(S6127C12*)(S6127C6*), ABISELECT(32,16), "S6127C4");
    /*is_ambiguous_... S6127C4::S6127C12 */ AMB_check_base_class_offset(lv, (S6127C9*)(S6127C12*), ABISELECT(32,16), "S6127C4");
    /*is_ambiguous_... S6127C6::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C6*), ABISELECT(48,28), "S6127C4");
    /*is_ambiguous_... S6127C12::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C12*)(S6127C6*), ABISELECT(56,32), "S6127C4");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*)(S6127C12*)(S6127C6*), ABISELECT(48,28), "S6127C4");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C12*)(S6127C6*), ABISELECT(48,28), "S6127C4");
    check_base_class_offset(lv, (S6127C12*)(S6127C6*), ABISELECT(48,28), "S6127C4");
    check_base_class_offset(lv, (S6127C6*)(S6127C5*), ABISELECT(48,28), "S6127C4");
    check_base_class_offset(lv, (S6127C6*)(S6127C15*), ABISELECT(48,28), "S6127C4");
    /*is_ambiguous_... S6127C4::S6127C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C13*), ABISELECT(64,36), "S6127C4");
    /*is_ambiguous_... S6127C4::S6127C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C13*), ABISELECT(72,40), "S6127C4");
    /*is_ambiguous_... S6127C4::S6127C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*)(S6127C13*), ABISELECT(64,36), "S6127C4");
    /*is_ambiguous_... S6127C4::S6127C13 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C13*), ABISELECT(64,36), "S6127C4");
    check_base_class_offset(lv, (S6127C13*)(S6127C5*), ABISELECT(64,36), "S6127C4");
    check_base_class_offset(lv, (S6127C13*)(S6127C15*), ABISELECT(64,36), "S6127C4");
    /*is_ambiguous_... S6127C4::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C12*), ABISELECT(88,48), "S6127C4");
    /*is_ambiguous_... S6127C4::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*)(S6127C12*), ABISELECT(80,44), "S6127C4");
    /*is_ambiguous_... S6127C4::S6127C12 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C12*), ABISELECT(80,44), "S6127C4");
    /*is_ambiguous_... S6127C5::S6127C12 */ AMB_check_base_class_offset(lv, (S6127C12*)(S6127C5*), ABISELECT(80,44), "S6127C4");
    check_base_class_offset(lv, (S6127C12*)(S6127C17*), ABISELECT(80,44), "S6127C4");
    check_base_class_offset(lv, (S6127C5*), ABISELECT(32,16), "S6127C4");
    check_base_class_offset(lv, (S77C13_nt*), 0, "S6127C4");
    check_base_class_offset(lv, (S6127C16*)(S6127C15*), ABISELECT(96,52), "S6127C4");
    /*is_ambiguous_... S6127C15::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C15*), ABISELECT(96,52), "S6127C4");
    check_base_class_offset(lv, (S6127C15*), ABISELECT(96,52), "S6127C4");
    /*is_ambiguous_... S6127C13::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C13*)(S6127C17*), 0, "S6127C4");
    /*is_ambiguous_... S6127C13::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C13*)(S6127C17*), ABISELECT(8,4), "S6127C4");
    check_base_class_offset(lv, (S7856C12*)(S6127C10*)(S6127C13*)(S6127C17*), 0, "S6127C4");
    check_base_class_offset(lv, (S6127C10*)(S6127C13*)(S6127C17*), 0, "S6127C4");
    check_base_class_offset(lv, (S6127C13*)(S6127C17*), 0, "S6127C4");
    /*is_ambiguous_... S6127C17::S6127C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C9*)(S6127C17*), ABISELECT(16,8), "S6127C4");
    /*is_ambiguous_... S6127C17::S6127C9 */ AMB_check_base_class_offset(lv, (S6127C9*)(S6127C17*), ABISELECT(16,8), "S6127C4");
    /*is_ambiguous_... S6127C17::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C17*), ABISELECT(24,12), "S6127C4");
    check_base_class_offset(lv, (S6127C17*), 0, "S6127C4");
    test_class_info(&lv, &cd_S6127C4);
    dp->~S6127C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6127C4(Test_S6127C4, "S6127C4", ABISELECT(112,60));

#else // __cplusplus

extern void _ZN7S6127C4C1Ev();
extern void _ZN7S6127C4D2Ev();
Name_Map name_map_S6127C4[] = {
  NSPAIR(_ZN7S6127C4C1Ev),
  NSPAIR(_ZN7S6127C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C9;
extern VTBL_ENTRY _ZTI7S6127C9[];
extern  VTBL_ENTRY _ZTV7S6127C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C9[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C12;
extern VTBL_ENTRY _ZTI8S6127C12[];
extern  VTBL_ENTRY _ZTV8S6127C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C12[];
extern Class_Descriptor cd_S6127C6;
extern VTBL_ENTRY _ZTI7S6127C6[];
extern  VTBL_ENTRY _ZTV7S6127C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C6[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C13;
extern VTBL_ENTRY _ZTI8S6127C13[];
extern  VTBL_ENTRY _ZTV8S6127C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C13[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C12;
extern VTBL_ENTRY _ZTI8S6127C12[];
extern  VTBL_ENTRY _ZTV8S6127C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C12[];
extern Class_Descriptor cd_S6127C5;
extern VTBL_ENTRY _ZTI7S6127C5[];
extern  VTBL_ENTRY _ZTV7S6127C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C5[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S6127C16;
extern VTBL_ENTRY _ZTI8S6127C16[];
extern  VTBL_ENTRY _ZTV8S6127C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C16[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S6127C15;
extern VTBL_ENTRY _ZTI8S6127C15[];
extern  VTBL_ENTRY _ZTV8S6127C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C15[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C13;
extern VTBL_ENTRY _ZTI8S6127C13[];
extern  VTBL_ENTRY _ZTV8S6127C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C13[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S6127C9;
extern VTBL_ENTRY _ZTI7S6127C9[];
extern  VTBL_ENTRY _ZTV7S6127C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C9[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S6127C17;
extern VTBL_ENTRY _ZTI8S6127C17[];
extern  VTBL_ENTRY _ZTV8S6127C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C17[];
static Base_Class bases_S6127C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(57,33), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(57,33), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S6127C10,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S6127C9,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S6127C10,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S6127C12,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S6127C6,    ABISELECT(48,28), //bcp->offset
    35, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S6127C10,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S6127C13,    ABISELECT(64,36), //bcp->offset
    45, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S6127C10,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S6127C12,    ABISELECT(80,44), //bcp->offset
    49, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S6127C5,    ABISELECT(32,16), //bcp->offset
    22, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6127C16,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S6127C15,    ABISELECT(96,52), //bcp->offset
    59, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S6127C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S6127C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S6127C9,    ABISELECT(16,8), //bcp->offset
    16, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S6127C17,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6127C4[];
extern void _ZN7S6127C4D1Ev();
extern void _ZN7S6127C4D0Ev();
extern void ABISELECT(_ZTv0_n88_N7S6127C4D1Ev,_ZTv0_n44_N7S6127C4D1Ev)();
extern void ABISELECT(_ZThn32_N7S6127C4D1Ev,_ZThn16_N7S6127C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S6127C4D0Ev,_ZTv0_n44_N7S6127C4D0Ev)();
extern void ABISELECT(_ZThn32_N7S6127C4D0Ev,_ZThn16_N7S6127C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C4D1Ev,_ZTv0_n32_N7S6127C4D1Ev)();
extern void ABISELECT(_ZThn48_N7S6127C4D1Ev,_ZThn28_N7S6127C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C4D0Ev,_ZTv0_n32_N7S6127C4D0Ev)();
extern void ABISELECT(_ZThn48_N7S6127C4D0Ev,_ZThn28_N7S6127C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C4D1Ev,_ZTv0_n32_N7S6127C4D1Ev)();
extern void ABISELECT(_ZThn80_N7S6127C4D1Ev,_ZThn44_N7S6127C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C4D0Ev,_ZTv0_n32_N7S6127C4D0Ev)();
extern void ABISELECT(_ZThn80_N7S6127C4D0Ev,_ZThn44_N7S6127C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S6127C4D1Ev,_ZTv0_n44_N7S6127C4D1Ev)();
extern void ABISELECT(_ZThn96_N7S6127C4D1Ev,_ZThn52_N7S6127C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S6127C4D0Ev,_ZTv0_n44_N7S6127C4D0Ev)();
extern void ABISELECT(_ZThn96_N7S6127C4D0Ev,_ZThn52_N7S6127C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S6127C4[] = {
  ABISELECT(96,52),
  ABISELECT(96,52),
  0,
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(57,33),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
  (VTBL_ENTRY)&_ZN7S6127C4D1Ev,
  (VTBL_ENTRY)&_ZN7S6127C4D0Ev,
  ABISELECT(41,25),
  ABISELECT(16,8),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
  ABISELECT(-32,-16),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6127C4D1Ev,_ZTv0_n44_N7S6127C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6127C4D0Ev,_ZTv0_n44_N7S6127C4D0Ev),
  ABISELECT(-48,-28),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C4D1Ev,_ZTv0_n32_N7S6127C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C4D0Ev,_ZTv0_n32_N7S6127C4D0Ev),
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
  ABISELECT(-80,-44),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C4D1Ev,_ZTv0_n32_N7S6127C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C4D0Ev,_ZTv0_n32_N7S6127C4D0Ev),
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-39,-19),
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-39,-19),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6127C4D1Ev,_ZTv0_n44_N7S6127C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6127C4D0Ev,_ZTv0_n44_N7S6127C4D0Ev),
};
extern VTBL_ENTRY _ZTV7S6127C4[];
extern void _ZN8S6127C17D1Ev();
extern void _ZN8S6127C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C17__7S6127C4[] = {
  ABISELECT(57,33),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
  (VTBL_ENTRY)&_ZN8S6127C17D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6127C138S6127C17__A1__7S6127C4[] = {
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C108S6127C138S6127C17__A4__7S6127C4[] = {
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C98S6127C17__A1__7S6127C4[] = {
  ABISELECT(41,25),
  ABISELECT(16,8),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C10__7S6127C98S6127C17__A1__7S6127C4[] = {
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S6127C17D1Ev,_ZTv0_n32_N8S6127C17D1Ev)();
extern void ABISELECT(_ZThn80_N8S6127C17D1Ev,_ZThn44_N8S6127C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6127C17D0Ev,_ZTv0_n32_N8S6127C17D0Ev)();
extern void ABISELECT(_ZThn80_N8S6127C17D0Ev,_ZThn44_N8S6127C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6127C12__8S6127C17__7S6127C4[] = {
  ABISELECT(-80,-44),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C17D1Ev,_ZTv0_n32_N8S6127C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C17D0Ev,_ZTv0_n32_N8S6127C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C17__7S6127C4[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__A__8S6127C17__7S6127C4[] = {
  ABISELECT(41,25),
  ABISELECT(16,8),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
};
extern void _ZN7S6127C5D1Ev();
extern void _ZN7S6127C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6127C5__7S6127C4[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C5[0]),
  (VTBL_ENTRY)&_ZN7S6127C5D1Ev,
  (VTBL_ENTRY)&_ZN7S6127C5D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev)();
extern void ABISELECT(_ZThn16_N7S6127C5D1Ev,_ZThn12_N7S6127C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev)();
extern void ABISELECT(_ZThn16_N7S6127C5D0Ev,_ZThn12_N7S6127C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6127C6__7S6127C5__7S6127C4[] = {
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S6127C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S6127C13__7S6127C5__7S6127C4[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S6127C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev)();
extern void ABISELECT(_ZThn48_N7S6127C5D1Ev,_ZThn28_N7S6127C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev)();
extern void ABISELECT(_ZThn48_N7S6127C5D0Ev,_ZThn28_N7S6127C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6127C12__A1__7S6127C5__7S6127C4[] = {
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S6127C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev),
};
extern void _ZN7S6127C6D1Ev();
extern void _ZN7S6127C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6127C6__7S6127C4[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C6[0]),
  (VTBL_ENTRY)&_ZN7S6127C6D1Ev,
  (VTBL_ENTRY)&_ZN7S6127C6D0Ev,
};
extern void _ZN8S6127C12D1Ev();
extern void _ZN8S6127C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C127S6127C6__7S6127C4[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C12[0]),
  (VTBL_ENTRY)&_ZN8S6127C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6127C108S6127C127S6127C6__A1__7S6127C4[] = {
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C127S6127C6__7S6127C4[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S6127C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__7S6127C6__7S6127C4[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S6127C6[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__7S6127C4[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C10__7S6127C4[] = {
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C13__7S6127C4[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C108S6127C13__A2__7S6127C4[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
extern void _ZN8S6127C12D1Ev();
extern void _ZN8S6127C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C12__A1__7S6127C4[] = {
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C12[0]),
  (VTBL_ENTRY)&_ZN8S6127C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6127C108S6127C12__A3__7S6127C4[] = {
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C12__A1__7S6127C4[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S6127C12[0]),
};
extern void _ZN8S6127C15D1Ev();
extern void _ZN8S6127C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C15__7S6127C4[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-39,-19),
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-39,-19),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C15[0]),
  (VTBL_ENTRY)&_ZN8S6127C15D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C15__7S6127C4[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S6127C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C13__8S6127C15__7S6127C4[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S6127C15[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S6127C15D1Ev,_ZTv0_n32_N8S6127C15D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S6127C15D0Ev,_ZTv0_n32_N8S6127C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S6127C6__8S6127C15__7S6127C4[] = {
  ABISELECT(48,24),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S6127C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C15D1Ev,_ZTv0_n32_N8S6127C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C15D0Ev,_ZTv0_n32_N8S6127C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S6127C16__7S6127C4[] = {
  ABISELECT(-39,-19),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C16[0]),
};
static  VTT_ENTRY vtt_S6127C4[] = {
  {&(_ZTV7S6127C4[14]),  14,72},
  {&(_tg__ZTV8S6127C17__7S6127C4[8]),  8,10},
  {&(_tg__ZTV8S6127C138S6127C17__A1__7S6127C4[4]),  4,4},
  {&(_tg__ZTV8S6127C108S6127C138S6127C17__A4__7S6127C4[4]),  4,4},
  {&(_tg__ZTV7S6127C98S6127C17__A1__7S6127C4[6]),  6,6},
  {&(_tg__ZTV8S6127C10__7S6127C98S6127C17__A1__7S6127C4[4]),  4,4},
  {&(_tg__ZTV8S6127C12__8S6127C17__7S6127C4[8]),  8,10},
  {&(_tg__ZTV7S6127C9__8S6127C17__7S6127C4[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C17__7S6127C4[6]),  6,6},
  {&(_tg__ZTV7S6127C9__A__8S6127C17__7S6127C4[6]),  6,6},
  {&(_ZTV7S6127C4[33]),  33,72},
  {&(_ZTV7S6127C4[43]),  43,72},
  {&(_ZTV7S6127C4[33]),  33,72},
  {&(_ZTV7S6127C4[33]),  33,72},
  {&(_ZTV7S6127C4[49]),  49,72},
  {&(_ZTV7S6127C4[57]),  57,72},
  {&(_ZTV7S6127C4[70]),  70,72},
  {&(_ZTV7S6127C4[70]),  70,72},
  {&(_ZTV7S6127C4[22]),  22,72},
  {&(_tg__ZTV7S6127C5__7S6127C4[10]),  10,12},
  {&(_tg__ZTV7S6127C6__7S6127C5__7S6127C4[8]),  8,10},
  {&(_tg__ZTV7S6127C5__7S6127C4[10]),  10,12},
  {&(_tg__ZTV7S6127C5__7S6127C4[10]),  10,12},
  {&(_tg__ZTV8S6127C13__7S6127C5__7S6127C4[4]),  4,4},
  {&(_tg__ZTV8S6127C12__A1__7S6127C5__7S6127C4[8]),  8,10},
  {&(_tg__ZTV7S6127C6__7S6127C4[7]),  7,9},
  {&(_tg__ZTV8S6127C127S6127C6__7S6127C4[7]),  7,9},
  {&(_tg__ZTV8S6127C108S6127C127S6127C6__A1__7S6127C4[4]),  4,4},
  {&(_tg__ZTV7S6127C9__8S6127C127S6127C6__7S6127C4[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C127S6127C6__7S6127C4[6]),  6,6},
  {&(_tg__ZTV7S6127C9__7S6127C6__7S6127C4[6]),  6,6},
  {&(_tg__ZTV7S6127C9__7S6127C6__7S6127C4[6]),  6,6},
  {&(_tg__ZTV7S6127C9__7S6127C4[6]),  6,6},
  {&(_tg__ZTV7S6127C9__7S6127C4[6]),  6,6},
  {&(_tg__ZTV8S6127C10__7S6127C4[4]),  4,4},
  {&(_tg__ZTV8S6127C13__7S6127C4[4]),  4,4},
  {&(_tg__ZTV8S6127C108S6127C13__A2__7S6127C4[4]),  4,4},
  {&(_tg__ZTV8S6127C12__A1__7S6127C4[7]),  7,9},
  {&(_tg__ZTV8S6127C108S6127C12__A3__7S6127C4[4]),  4,4},
  {&(_tg__ZTV7S6127C9__8S6127C12__A1__7S6127C4[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C12__A1__7S6127C4[6]),  6,6},
  {&(_tg__ZTV8S6127C15__7S6127C4[10]),  10,12},
  {&(_tg__ZTV7S6127C9__8S6127C15__7S6127C4[6]),  6,6},
  {&(_tg__ZTV8S6127C15__7S6127C4[10]),  10,12},
  {&(_tg__ZTV8S6127C13__8S6127C15__7S6127C4[4]),  4,4},
  {&(_tg__ZTV7S6127C6__8S6127C15__7S6127C4[8]),  8,10},
  {&(_tg__ZTV7S6127C9__8S6127C15__7S6127C4[6]),  6,6},
  {&(_tg__ZTV8S6127C16__7S6127C4[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S6127C4[];
extern  VTBL_ENTRY _ZTV7S6127C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C4[];
static VTBL_ENTRY alt_thunk_names94[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S6127C5D0Ev,_ZThn28_N7S6127C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S6127C5D0Ev,_ZThn12_N7S6127C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S6127C5D1Ev,_ZThn28_N7S6127C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S6127C5D1Ev,_ZThn12_N7S6127C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6127C17D0Ev,_ZTv0_n32_N8S6127C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6127C17D0Ev,_ZThn44_N8S6127C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6127C17D1Ev,_ZTv0_n32_N8S6127C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6127C17D1Ev,_ZThn44_N8S6127C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S6127C4D0Ev,_ZTv0_n32_N7S6127C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S6127C4D0Ev,_ZThn44_N7S6127C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S6127C4D0Ev,_ZThn28_N7S6127C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S6127C4D1Ev,_ZTv0_n32_N7S6127C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S6127C4D1Ev,_ZThn44_N7S6127C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S6127C4D1Ev,_ZThn28_N7S6127C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S6127C4D0Ev,_ZTv0_n44_N7S6127C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S6127C4D0Ev,_ZThn52_N7S6127C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S6127C4D0Ev,_ZThn16_N7S6127C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S6127C4D1Ev,_ZTv0_n44_N7S6127C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S6127C4D1Ev,_ZThn52_N7S6127C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S6127C4D1Ev,_ZThn16_N7S6127C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6127C4 = {  "S6127C4", // class name
  bases_S6127C4, 36,
  &(vtc_S6127C4[0]), // expected_vtbl_contents
  &(vtt_S6127C4[0]), // expected_vtt_contents
  ABISELECT(112,60), // object size
  NSPAIRA(_ZTI7S6127C4),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S6127C4),72, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6127C4),48, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names94,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6127C18  : S77C13_nt , virtual S7856C15 , S6127C5 , virtual S6127C17 {
  virtual  ~S6127C18(); // _ZN8S6127C18D2Ev
  virtual void  v1(); // _ZN8S6127C182v1Ev
  S6127C18(); // tgen
};
//SIG(-1 S6127C18) C1{ BC2{ m} VBC3{ m} BC4{ VBC5{ VBC3 VBC6{ m} VBC7{ BC3 VBC8{ VBC3 BC6 VBC9{ m}} VBC6} BC9 BC10{ BC6 VBC3 VBC9 BC8 VBC7 vd} vd} VBC11{ BC9 BC6 BC8 Fi} VBC10 vd Fi[2]} VBC12{ VBC10 BC11 BC7 BC9 vd} vd v1}


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

static void Test_S6127C18()
{
  extern Class_Descriptor cd_S6127C18;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,14)];
    init_test(&cd_S6127C18, buf);
    S6127C18 *dp, &lv = *(dp=new (buf) S6127C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,52), "sizeof(S6127C18)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6127C18)");
    check_base_class_offset(lv, (S77C13_nt*), 0, "S6127C18");
    /*is_ambiguous_... S6127C18::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(16,12), "S6127C18");
    /*is_ambiguous_... S6127C6::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C6*), ABISELECT(16,12), "S6127C18");
    /*is_ambiguous_... S6127C18::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*), ABISELECT(16,12), "S6127C18");
    /*is_ambiguous_... S6127C12::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C12*)(S6127C6*), ABISELECT(16,12), "S6127C18");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*)(S6127C12*)(S6127C6*), ABISELECT(16,12), "S6127C18");
    /*is_ambiguous_... S6127C18::S6127C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*)(S6127C13*), ABISELECT(16,12), "S6127C18");
    /*is_ambiguous_... S6127C18::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C12*), ABISELECT(16,12), "S6127C18");
    /*is_ambiguous_... S6127C18::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*)(S6127C12*), ABISELECT(16,12), "S6127C18");
    check_base_class_offset(lv, (S7856C15*)(S6127C10*)(S6127C13*)(S6127C17*), ABISELECT(16,12), "S6127C18");
    /*is_ambiguous_... S6127C6::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C6*), ABISELECT(25,17), "S6127C18");
    /*is_ambiguous_... S6127C18::S6127C9 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C9*), ABISELECT(25,17), "S6127C18");
    /*is_ambiguous_... S6127C17::S6127C9 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C9*)(S6127C17*), ABISELECT(25,17), "S6127C18");
    /*is_ambiguous_... S6127C18::S6127C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C9*), 0, "S6127C18");
    /*is_ambiguous_... S6127C18::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*), 0, "S6127C18");
    /*is_ambiguous_... S6127C18::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*), 0, "S6127C18");
    check_base_class_offset(lv, (S7856C9_nt*)(S6127C12*)(S6127C6*), 0, "S6127C18");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*)(S6127C12*)(S6127C6*), 0, "S6127C18");
    /*is_ambiguous_... S6127C18::S6127C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*)(S6127C13*), 0, "S6127C18");
    /*is_ambiguous_... S6127C18::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C12*), 0, "S6127C18");
    /*is_ambiguous_... S6127C18::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*)(S6127C12*), 0, "S6127C18");
    check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*)(S6127C13*)(S6127C17*), 0, "S6127C18");
    /*is_ambiguous_... S6127C18::S6127C9 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C9*), 0, "S6127C18");
    /*is_ambiguous_... S6127C17::S6127C9 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C9*)(S6127C17*), 0, "S6127C18");
    check_base_class_offset(lv, (S6127C9*)(S6127C6*), 0, "S6127C18");
    check_base_class_offset(lv, (S6127C9*)(S6127C12*)(S6127C6*), 0, "S6127C18");
    /*is_ambiguous_... S6127C18::S6127C12 */ AMB_check_base_class_offset(lv, (S6127C9*)(S6127C12*), 0, "S6127C18");
    /*is_ambiguous_... S6127C6::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C6*), ABISELECT(16,12), "S6127C18");
    /*is_ambiguous_... S6127C12::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C12*)(S6127C6*), ABISELECT(24,16), "S6127C18");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*)(S6127C12*)(S6127C6*), ABISELECT(16,12), "S6127C18");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C12*)(S6127C6*), ABISELECT(16,12), "S6127C18");
    check_base_class_offset(lv, (S6127C12*)(S6127C6*), ABISELECT(16,12), "S6127C18");
    check_base_class_offset(lv, (S6127C6*)(S6127C5*), ABISELECT(16,12), "S6127C18");
    /*is_ambiguous_... S6127C18::S6127C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C13*), ABISELECT(32,20), "S6127C18");
    /*is_ambiguous_... S6127C18::S6127C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C13*), ABISELECT(40,24), "S6127C18");
    /*is_ambiguous_... S6127C18::S6127C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*)(S6127C13*), ABISELECT(32,20), "S6127C18");
    /*is_ambiguous_... S6127C18::S6127C13 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C13*), ABISELECT(32,20), "S6127C18");
    check_base_class_offset(lv, (S6127C13*)(S6127C5*), ABISELECT(32,20), "S6127C18");
    /*is_ambiguous_... S6127C18::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C12*), ABISELECT(56,32), "S6127C18");
    /*is_ambiguous_... S6127C18::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*)(S6127C12*), ABISELECT(48,28), "S6127C18");
    /*is_ambiguous_... S6127C18::S6127C12 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C12*), ABISELECT(48,28), "S6127C18");
    /*is_ambiguous_... S6127C5::S6127C12 */ AMB_check_base_class_offset(lv, (S6127C12*)(S6127C5*), ABISELECT(48,28), "S6127C18");
    check_base_class_offset(lv, (S6127C12*)(S6127C17*), ABISELECT(48,28), "S6127C18");
    check_base_class_offset(lv, (S6127C5*), 0, "S6127C18");
    /*is_ambiguous_... S6127C13::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C13*)(S6127C17*), ABISELECT(64,36), "S6127C18");
    /*is_ambiguous_... S6127C13::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C13*)(S6127C17*), ABISELECT(72,40), "S6127C18");
    check_base_class_offset(lv, (S7856C12*)(S6127C10*)(S6127C13*)(S6127C17*), ABISELECT(64,36), "S6127C18");
    check_base_class_offset(lv, (S6127C10*)(S6127C13*)(S6127C17*), ABISELECT(64,36), "S6127C18");
    check_base_class_offset(lv, (S6127C13*)(S6127C17*), ABISELECT(64,36), "S6127C18");
    /*is_ambiguous_... S6127C17::S6127C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C9*)(S6127C17*), ABISELECT(80,44), "S6127C18");
    /*is_ambiguous_... S6127C17::S6127C9 */ AMB_check_base_class_offset(lv, (S6127C9*)(S6127C17*), ABISELECT(80,44), "S6127C18");
    /*is_ambiguous_... S6127C17::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C17*), ABISELECT(88,48), "S6127C18");
    check_base_class_offset(lv, (S6127C17*), ABISELECT(64,36), "S6127C18");
    test_class_info(&lv, &cd_S6127C18);
    dp->~S6127C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6127C18(Test_S6127C18, "S6127C18", ABISELECT(96,52));

#else // __cplusplus

extern void _ZN8S6127C18C1Ev();
extern void _ZN8S6127C18D2Ev();
Name_Map name_map_S6127C18[] = {
  NSPAIR(_ZN8S6127C18C1Ev),
  NSPAIR(_ZN8S6127C18D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C9;
extern VTBL_ENTRY _ZTI7S6127C9[];
extern  VTBL_ENTRY _ZTV7S6127C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C9[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C12;
extern VTBL_ENTRY _ZTI8S6127C12[];
extern  VTBL_ENTRY _ZTV8S6127C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C12[];
extern Class_Descriptor cd_S6127C6;
extern VTBL_ENTRY _ZTI7S6127C6[];
extern  VTBL_ENTRY _ZTV7S6127C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C6[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C13;
extern VTBL_ENTRY _ZTI8S6127C13[];
extern  VTBL_ENTRY _ZTV8S6127C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C13[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C12;
extern VTBL_ENTRY _ZTI8S6127C12[];
extern  VTBL_ENTRY _ZTV8S6127C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C12[];
extern Class_Descriptor cd_S6127C5;
extern VTBL_ENTRY _ZTI7S6127C5[];
extern  VTBL_ENTRY _ZTV7S6127C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C5[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C13;
extern VTBL_ENTRY _ZTI8S6127C13[];
extern  VTBL_ENTRY _ZTV8S6127C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C13[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S6127C9;
extern VTBL_ENTRY _ZTI7S6127C9[];
extern  VTBL_ENTRY _ZTV7S6127C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C9[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S6127C17;
extern VTBL_ENTRY _ZTI8S6127C17[];
extern  VTBL_ENTRY _ZTV8S6127C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C17[];
static Base_Class bases_S6127C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C15,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    ABISELECT(25,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S6127C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S6127C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S6127C10,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S6127C12,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S6127C6,    ABISELECT(16,12), //bcp->offset
    14, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S6127C10,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S6127C13,    ABISELECT(32,20), //bcp->offset
    24, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S6127C10,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S6127C12,    ABISELECT(48,28), //bcp->offset
    28, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S6127C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C9_nt,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S6127C10,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S6127C13,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S6127C9,    ABISELECT(80,44), //bcp->offset
    49, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S6127C17,    ABISELECT(64,36), //bcp->offset
    38, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S6127C18[];
extern void _ZN8S6127C18D1Ev();
extern void _ZN8S6127C18D0Ev();
extern void _ZN8S6127C182v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S6127C18D1Ev,_ZTv0_n32_N8S6127C18D1Ev)();
extern void ABISELECT(_ZThn16_N8S6127C18D1Ev,_ZThn12_N8S6127C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6127C18D0Ev,_ZTv0_n32_N8S6127C18D0Ev)();
extern void ABISELECT(_ZThn16_N8S6127C18D0Ev,_ZThn12_N8S6127C18D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6127C18D1Ev,_ZTv0_n32_N8S6127C18D1Ev)();
extern void ABISELECT(_ZThn48_N8S6127C18D1Ev,_ZThn28_N8S6127C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6127C18D0Ev,_ZTv0_n32_N8S6127C18D0Ev)();
extern void ABISELECT(_ZThn48_N8S6127C18D0Ev,_ZThn28_N8S6127C18D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S6127C18D1Ev,_ZTv0_n36_N8S6127C18D1Ev)();
extern void ABISELECT(_ZThn64_N8S6127C18D1Ev,_ZThn36_N8S6127C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S6127C18D0Ev,_ZTv0_n36_N8S6127C18D0Ev)();
extern void ABISELECT(_ZThn64_N8S6127C18D0Ev,_ZThn36_N8S6127C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S6127C18[] = {
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C18[0]),
  (VTBL_ENTRY)&_ZN8S6127C18D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C18D0Ev,
  (VTBL_ENTRY)&_ZN8S6127C182v1Ev,
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  0,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S6127C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C18D1Ev,_ZTv0_n32_N8S6127C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C18D0Ev,_ZTv0_n32_N8S6127C18D0Ev),
  ABISELECT(-32,-20),
  ABISELECT(-16,-8),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S6127C18[0]),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S6127C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C18D1Ev,_ZTv0_n32_N8S6127C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C18D0Ev,_ZTv0_n32_N8S6127C18D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-16,-8),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S6127C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S6127C18D1Ev,_ZTv0_n36_N8S6127C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S6127C18D0Ev,_ZTv0_n36_N8S6127C18D0Ev),
  ABISELECT(-55,-27),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-64,-32),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S6127C18[0]),
};
extern VTBL_ENTRY _ZTV8S6127C18[];
extern void _ZN7S6127C5D1Ev();
extern void _ZN7S6127C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6127C5__8S6127C18[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C5[0]),
  (VTBL_ENTRY)&_ZN7S6127C5D1Ev,
  (VTBL_ENTRY)&_ZN7S6127C5D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev)();
extern void ABISELECT(_ZThn16_N7S6127C5D1Ev,_ZThn12_N7S6127C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev)();
extern void ABISELECT(_ZThn16_N7S6127C5D0Ev,_ZThn12_N7S6127C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6127C6__7S6127C5__8S6127C18[] = {
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  0,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S6127C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S6127C13__7S6127C5__8S6127C18[] = {
  ABISELECT(-32,-20),
  ABISELECT(-16,-8),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S6127C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev)();
extern void ABISELECT(_ZThn48_N7S6127C5D1Ev,_ZThn28_N7S6127C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev)();
extern void ABISELECT(_ZThn48_N7S6127C5D0Ev,_ZThn28_N7S6127C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6127C12__A1__7S6127C5__8S6127C18[] = {
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S6127C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev),
};
extern void _ZN7S6127C6D1Ev();
extern void _ZN7S6127C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6127C6__8S6127C18[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C6[0]),
  (VTBL_ENTRY)&_ZN7S6127C6D1Ev,
  (VTBL_ENTRY)&_ZN7S6127C6D0Ev,
};
extern void _ZN8S6127C12D1Ev();
extern void _ZN8S6127C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C127S6127C6__8S6127C18[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C12[0]),
  (VTBL_ENTRY)&_ZN8S6127C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6127C108S6127C127S6127C6__A1__8S6127C18[] = {
  ABISELECT(-16,-12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C127S6127C6__8S6127C18[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S6127C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__7S6127C6__8S6127C18[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S6127C6[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C18[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C10__8S6127C18[] = {
  0,
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C13__8S6127C18[] = {
  ABISELECT(-32,-20),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C108S6127C13__A2__8S6127C18[] = {
  ABISELECT(-32,-20),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
extern void _ZN8S6127C12D1Ev();
extern void _ZN8S6127C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C12__A1__8S6127C18[] = {
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C12[0]),
  (VTBL_ENTRY)&_ZN8S6127C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6127C108S6127C12__A3__8S6127C18[] = {
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C12__A1__8S6127C18[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(16,12),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S6127C12[0]),
};
extern void _ZN8S6127C17D1Ev();
extern void _ZN8S6127C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C17__8S6127C18[] = {
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-16,-8),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
  (VTBL_ENTRY)&_ZN8S6127C17D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6127C138S6127C17__A1__8S6127C18[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C108S6127C138S6127C17__A4__8S6127C18[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C98S6127C17__A1__8S6127C18[] = {
  ABISELECT(-55,-27),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-64,-32),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C10__7S6127C98S6127C17__A1__8S6127C18[] = {
  0,
  ABISELECT(16,12),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S6127C17D1Ev,_ZTv0_n32_N8S6127C17D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S6127C17D0Ev,_ZTv0_n32_N8S6127C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6127C12__8S6127C17__8S6127C18[] = {
  ABISELECT(16,8),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C17D1Ev,_ZTv0_n32_N8S6127C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C17D0Ev,_ZTv0_n32_N8S6127C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C17__8S6127C18[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(16,12),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__A__8S6127C17__8S6127C18[] = {
  ABISELECT(-55,-27),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-64,-32),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
};
static  VTT_ENTRY vtt_S6127C18[] = {
  {&(_ZTV8S6127C18[11]),  11,55},
  {&(_tg__ZTV7S6127C5__8S6127C18[10]),  10,12},
  {&(_tg__ZTV7S6127C6__7S6127C5__8S6127C18[8]),  8,10},
  {&(_tg__ZTV7S6127C5__8S6127C18[10]),  10,12},
  {&(_tg__ZTV7S6127C5__8S6127C18[10]),  10,12},
  {&(_tg__ZTV8S6127C13__7S6127C5__8S6127C18[4]),  4,4},
  {&(_tg__ZTV8S6127C12__A1__7S6127C5__8S6127C18[8]),  8,10},
  {&(_ZTV8S6127C18[22]),  22,55},
  {&(_ZTV8S6127C18[11]),  11,55},
  {&(_ZTV8S6127C18[11]),  11,55},
  {&(_ZTV8S6127C18[28]),  28,55},
  {&(_ZTV8S6127C18[36]),  36,55},
  {&(_ZTV8S6127C18[47]),  47,55},
  {&(_ZTV8S6127C18[55]),  55,55},
  {&(_tg__ZTV7S6127C6__8S6127C18[7]),  7,9},
  {&(_tg__ZTV8S6127C127S6127C6__8S6127C18[7]),  7,9},
  {&(_tg__ZTV8S6127C108S6127C127S6127C6__A1__8S6127C18[4]),  4,4},
  {&(_tg__ZTV7S6127C9__8S6127C127S6127C6__8S6127C18[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C127S6127C6__8S6127C18[6]),  6,6},
  {&(_tg__ZTV7S6127C9__7S6127C6__8S6127C18[6]),  6,6},
  {&(_tg__ZTV7S6127C9__7S6127C6__8S6127C18[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C18[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C18[6]),  6,6},
  {&(_tg__ZTV8S6127C10__8S6127C18[4]),  4,4},
  {&(_tg__ZTV8S6127C13__8S6127C18[4]),  4,4},
  {&(_tg__ZTV8S6127C108S6127C13__A2__8S6127C18[4]),  4,4},
  {&(_tg__ZTV8S6127C12__A1__8S6127C18[7]),  7,9},
  {&(_tg__ZTV8S6127C108S6127C12__A3__8S6127C18[4]),  4,4},
  {&(_tg__ZTV7S6127C9__8S6127C12__A1__8S6127C18[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C12__A1__8S6127C18[6]),  6,6},
  {&(_tg__ZTV8S6127C17__8S6127C18[8]),  8,10},
  {&(_tg__ZTV8S6127C138S6127C17__A1__8S6127C18[4]),  4,4},
  {&(_tg__ZTV8S6127C108S6127C138S6127C17__A4__8S6127C18[4]),  4,4},
  {&(_tg__ZTV7S6127C98S6127C17__A1__8S6127C18[6]),  6,6},
  {&(_tg__ZTV8S6127C10__7S6127C98S6127C17__A1__8S6127C18[4]),  4,4},
  {&(_tg__ZTV8S6127C12__8S6127C17__8S6127C18[8]),  8,10},
  {&(_tg__ZTV7S6127C9__8S6127C17__8S6127C18[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C17__8S6127C18[6]),  6,6},
  {&(_tg__ZTV7S6127C9__A__8S6127C17__8S6127C18[6]),  6,6},
};
extern VTBL_ENTRY _ZTI8S6127C18[];
extern  VTBL_ENTRY _ZTV8S6127C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C18[];
static VTBL_ENTRY alt_thunk_names95[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S6127C5D0Ev,_ZThn28_N7S6127C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S6127C5D0Ev,_ZThn12_N7S6127C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S6127C5D1Ev,_ZThn28_N7S6127C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S6127C5D1Ev,_ZThn12_N7S6127C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S6127C18D0Ev,_ZTv0_n36_N8S6127C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6127C18D0Ev,_ZThn36_N8S6127C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S6127C18D1Ev,_ZTv0_n36_N8S6127C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6127C18D1Ev,_ZThn36_N8S6127C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6127C18D0Ev,_ZTv0_n32_N8S6127C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S6127C18D0Ev,_ZThn28_N8S6127C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S6127C18D0Ev,_ZThn12_N8S6127C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6127C18D1Ev,_ZTv0_n32_N8S6127C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S6127C18D1Ev,_ZThn28_N8S6127C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S6127C18D1Ev,_ZThn12_N8S6127C18D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6127C18 = {  "S6127C18", // class name
  bases_S6127C18, 33,
  &(vtc_S6127C18[0]), // expected_vtbl_contents
  &(vtt_S6127C18[0]), // expected_vtt_contents
  ABISELECT(96,52), // object size
  NSPAIRA(_ZTI8S6127C18),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S6127C18),55, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6127C18),39, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names95,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6127C3  : virtual S6127C4 , S7856C15 , S6127C9 , S6127C18 {
  virtual  ~S6127C3(); // _ZN7S6127C3D2Ev
  S6127C3(); // tgen
};
//SIG(-1 S6127C3) C1{ VBC2{ VBC3{ VBC4{ VBC5{ m} VBC6{ m} VBC7{ BC5 VBC8{ VBC5 BC6 VBC9{ m}} VBC6} BC9 BC10{ BC6 VBC5 VBC9 BC8 VBC7 vd} vd} VBC11{ BC9 BC6 BC8 Fi} VBC10 vd Fi[2]} VBC12{ m} VBC13{ VBC8 VBC14{ VBC6} VBC11 BC9 VBC4 vd Fi} BC15{ VBC10 BC11 BC7 BC9 vd} vd} BC5 BC7 BC16{ BC12 VBC5 BC3 VBC15 vd v1} vd}


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

static void Test_S6127C3()
{
  extern Class_Descriptor cd_S6127C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(22,24)];
    init_test(&cd_S6127C3, buf);
    S6127C3 *dp, &lv = *(dp=new (buf) S6127C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(168,92), "sizeof(S6127C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6127C3)");
    /*is_ambiguous_... S6127C6::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C6*), ABISELECT(81,49), "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*), ABISELECT(81,49), "S6127C3");
    /*is_ambiguous_... S6127C12::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C12*)(S6127C6*), ABISELECT(81,49), "S6127C3");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*)(S6127C12*)(S6127C6*), ABISELECT(81,49), "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*)(S6127C13*), ABISELECT(81,49), "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C12*), ABISELECT(81,49), "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*)(S6127C12*), ABISELECT(81,49), "S6127C3");
    check_base_class_offset(lv, (S7856C15*)(S6127C10*)(S6127C13*)(S6127C17*)(S6127C4*), ABISELECT(81,49), "S6127C3");
    /*is_ambiguous_... S6127C18::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C18*), ABISELECT(81,49), "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C17 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*)(S6127C13*)(S6127C17*), ABISELECT(81,49), "S6127C3");
    /*is_ambiguous_... S6127C6::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C6*), 0, "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C9 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C9*), 0, "S6127C3");
    check_base_class_offset(lv, (S7856C12*)(S6127C16*), 0, "S6127C3");
    /*is_ambiguous_... S6127C17::S6127C9 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C9*)(S6127C17*)(S6127C4*), 0, "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C9 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C9*), 0, "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C17 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C9*)(S6127C17*), 0, "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C9*), ABISELECT(56,32), "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*), ABISELECT(56,32), "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*), 0, "S6127C3");
    check_base_class_offset(lv, (S7856C9_nt*)(S6127C12*)(S6127C6*), 0, "S6127C3");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*)(S6127C12*)(S6127C6*), 0, "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*)(S6127C13*), 0, "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C12*), 0, "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*)(S6127C12*), 0, "S6127C3");
    check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*)(S6127C13*)(S6127C17*)(S6127C4*), 0, "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C17 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*)(S6127C13*)(S6127C17*), 0, "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C9 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C9*), ABISELECT(56,32), "S6127C3");
    /*is_ambiguous_... S6127C15::S6127C10 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C15*), ABISELECT(56,32), "S6127C3");
    /*is_ambiguous_... S6127C17::S6127C9 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C9*)(S6127C17*)(S6127C4*), ABISELECT(56,32), "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C9 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C9*), ABISELECT(56,32), "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C17 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C9*)(S6127C17*), ABISELECT(56,32), "S6127C3");
    check_base_class_offset(lv, (S6127C9*)(S6127C6*), ABISELECT(56,32), "S6127C3");
    check_base_class_offset(lv, (S6127C9*)(S6127C12*)(S6127C6*), ABISELECT(56,32), "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C12 */ AMB_check_base_class_offset(lv, (S6127C9*)(S6127C12*), ABISELECT(56,32), "S6127C3");
    /*is_ambiguous_... S6127C6::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C6*), ABISELECT(72,44), "S6127C3");
    /*is_ambiguous_... S6127C12::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C12*)(S6127C6*), ABISELECT(80,48), "S6127C3");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*)(S6127C12*)(S6127C6*), ABISELECT(72,44), "S6127C3");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C12*)(S6127C6*), ABISELECT(72,44), "S6127C3");
    check_base_class_offset(lv, (S6127C12*)(S6127C6*), ABISELECT(72,44), "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C5 */ AMB_check_base_class_offset(lv, (S6127C6*)(S6127C5*), ABISELECT(72,44), "S6127C3");
    check_base_class_offset(lv, (S6127C6*)(S6127C15*), ABISELECT(72,44), "S6127C3");
    check_base_class_offset(lv, (S6127C6*)(S6127C5*)(S6127C18*), ABISELECT(72,44), "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C13*), ABISELECT(88,52), "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C13*), ABISELECT(96,56), "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*)(S6127C13*), ABISELECT(88,52), "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C13 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C13*), ABISELECT(88,52), "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C5 */ AMB_check_base_class_offset(lv, (S6127C13*)(S6127C5*), ABISELECT(88,52), "S6127C3");
    check_base_class_offset(lv, (S6127C13*)(S6127C15*), ABISELECT(88,52), "S6127C3");
    check_base_class_offset(lv, (S6127C13*)(S6127C5*)(S6127C18*), ABISELECT(88,52), "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C12*), ABISELECT(112,64), "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*)(S6127C12*), ABISELECT(104,60), "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C12 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C12*), ABISELECT(104,60), "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C5 */ AMB_check_base_class_offset(lv, (S6127C12*)(S6127C5*), ABISELECT(104,60), "S6127C3");
    check_base_class_offset(lv, (S6127C12*)(S6127C17*)(S6127C4*), ABISELECT(104,60), "S6127C3");
    /*is_ambiguous_... S6127C5::S6127C12 */ AMB_check_base_class_offset(lv, (S6127C12*)(S6127C5*)(S6127C18*), ABISELECT(104,60), "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C17 */ AMB_check_base_class_offset(lv, (S6127C12*)(S6127C17*), ABISELECT(104,60), "S6127C3");
    check_base_class_offset(lv, (S6127C5*)(S6127C4*), ABISELECT(56,32), "S6127C3");
    check_base_class_offset(lv, (S77C13_nt*)(S6127C4*), 0, "S6127C3");
    check_base_class_offset(lv, (S6127C16*)(S6127C15*), ABISELECT(120,68), "S6127C3");
    /*is_ambiguous_... S6127C15::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C15*), ABISELECT(120,68), "S6127C3");
    check_base_class_offset(lv, (S6127C15*)(S6127C4*), ABISELECT(120,68), "S6127C3");
    /*is_ambiguous_... S6127C13::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C13*)(S6127C17*)(S6127C4*), ABISELECT(24,16), "S6127C3");
    /*is_ambiguous_... S6127C13::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C13*)(S6127C17*)(S6127C4*), ABISELECT(32,20), "S6127C3");
    check_base_class_offset(lv, (S7856C12*)(S6127C10*)(S6127C13*)(S6127C17*)(S6127C4*), ABISELECT(24,16), "S6127C3");
    check_base_class_offset(lv, (S6127C10*)(S6127C13*)(S6127C17*)(S6127C4*), ABISELECT(24,16), "S6127C3");
    check_base_class_offset(lv, (S6127C13*)(S6127C17*)(S6127C4*), ABISELECT(24,16), "S6127C3");
    /*is_ambiguous_... S6127C17::S6127C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C9*)(S6127C17*)(S6127C4*), ABISELECT(40,24), "S6127C3");
    /*is_ambiguous_... S6127C17::S6127C9 */ AMB_check_base_class_offset(lv, (S6127C9*)(S6127C17*)(S6127C4*), ABISELECT(40,24), "S6127C3");
    /*is_ambiguous_... S6127C17::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C17*)(S6127C4*), ABISELECT(48,28), "S6127C3");
    check_base_class_offset(lv, (S6127C17*)(S6127C4*), ABISELECT(24,16), "S6127C3");
    check_base_class_offset(lv, (S6127C4*), ABISELECT(24,16), "S6127C3");
    /*is_ambiguous_... S6127C3::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(8,4), "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C9*), 0, "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C9 */ AMB_check_base_class_offset(lv, (S6127C9*), 0, "S6127C3");
    check_base_class_offset(lv, (S77C13_nt*)(S6127C18*), ABISELECT(8,4), "S6127C3");
    check_base_class_offset(lv, (S6127C5*)(S6127C18*), ABISELECT(8,4), "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C17 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C13*)(S6127C17*), ABISELECT(136,76), "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C17 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C13*)(S6127C17*), ABISELECT(144,80), "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C17 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*)(S6127C13*)(S6127C17*), ABISELECT(136,76), "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C17 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C13*)(S6127C17*), ABISELECT(136,76), "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C17 */ AMB_check_base_class_offset(lv, (S6127C13*)(S6127C17*), ABISELECT(136,76), "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C17 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C9*)(S6127C17*), ABISELECT(152,84), "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C17 */ AMB_check_base_class_offset(lv, (S6127C9*)(S6127C17*), ABISELECT(152,84), "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C17 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C17*), ABISELECT(160,88), "S6127C3");
    check_base_class_offset(lv, (S6127C17*)(S6127C18*), ABISELECT(136,76), "S6127C3");
    check_base_class_offset(lv, (S6127C18*), ABISELECT(8,4), "S6127C3");
    test_class_info(&lv, &cd_S6127C3);
    dp->~S6127C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6127C3(Test_S6127C3, "S6127C3", ABISELECT(168,92));

#else // __cplusplus

extern void _ZN7S6127C3C1Ev();
extern void _ZN7S6127C3D2Ev();
Name_Map name_map_S6127C3[] = {
  NSPAIR(_ZN7S6127C3C1Ev),
  NSPAIR(_ZN7S6127C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C9;
extern VTBL_ENTRY _ZTI7S6127C9[];
extern  VTBL_ENTRY _ZTV7S6127C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C9[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C12;
extern VTBL_ENTRY _ZTI8S6127C12[];
extern  VTBL_ENTRY _ZTV8S6127C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C12[];
extern Class_Descriptor cd_S6127C6;
extern VTBL_ENTRY _ZTI7S6127C6[];
extern  VTBL_ENTRY _ZTV7S6127C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C6[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C13;
extern VTBL_ENTRY _ZTI8S6127C13[];
extern  VTBL_ENTRY _ZTV8S6127C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C13[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C12;
extern VTBL_ENTRY _ZTI8S6127C12[];
extern  VTBL_ENTRY _ZTV8S6127C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C12[];
extern Class_Descriptor cd_S6127C5;
extern VTBL_ENTRY _ZTI7S6127C5[];
extern  VTBL_ENTRY _ZTV7S6127C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C5[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S6127C16;
extern VTBL_ENTRY _ZTI8S6127C16[];
extern  VTBL_ENTRY _ZTV8S6127C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C16[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S6127C15;
extern VTBL_ENTRY _ZTI8S6127C15[];
extern  VTBL_ENTRY _ZTV8S6127C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C15[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C13;
extern VTBL_ENTRY _ZTI8S6127C13[];
extern  VTBL_ENTRY _ZTV8S6127C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C13[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S6127C9;
extern VTBL_ENTRY _ZTI7S6127C9[];
extern  VTBL_ENTRY _ZTV7S6127C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C9[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S6127C17;
extern VTBL_ENTRY _ZTI8S6127C17[];
extern  VTBL_ENTRY _ZTV8S6127C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C17[];
extern Class_Descriptor cd_S6127C4;
extern VTBL_ENTRY _ZTI7S6127C4[];
extern  VTBL_ENTRY _ZTV7S6127C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C4[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S6127C9;
extern VTBL_ENTRY _ZTI7S6127C9[];
extern  VTBL_ENTRY _ZTV7S6127C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C9[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S6127C5;
extern VTBL_ENTRY _ZTI7S6127C5[];
extern  VTBL_ENTRY _ZTV7S6127C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C5[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C13;
extern VTBL_ENTRY _ZTI8S6127C13[];
extern  VTBL_ENTRY _ZTV8S6127C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C13[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S6127C9;
extern VTBL_ENTRY _ZTI7S6127C9[];
extern  VTBL_ENTRY _ZTV7S6127C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C9[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S6127C17;
extern VTBL_ENTRY _ZTI8S6127C17[];
extern  VTBL_ENTRY _ZTV8S6127C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C17[];
extern Class_Descriptor cd_S6127C18;
extern VTBL_ENTRY _ZTI8S6127C18[];
extern  VTBL_ENTRY _ZTV8S6127C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C18[];
static Base_Class bases_S6127C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    ABISELECT(81,49), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S6127C10,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S6127C9,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(72,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(72,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S6127C10,    ABISELECT(72,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S6127C12,    ABISELECT(72,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S6127C6,    ABISELECT(72,44), //bcp->offset
    68, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(88,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(96,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(88,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S6127C10,    ABISELECT(88,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S6127C13,    ABISELECT(88,52), //bcp->offset
    78, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    66, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(112,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(104,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S6127C10,    ABISELECT(104,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    69, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S6127C12,    ABISELECT(104,60), //bcp->offset
    82, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S6127C5,    ABISELECT(56,32), //bcp->offset
    55, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S6127C16,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S6127C15,    ABISELECT(120,68), //bcp->offset
    92, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S6127C10,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S6127C13,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S6127C9,    ABISELECT(40,24), //bcp->offset
    49, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S6127C17,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S6127C4,    ABISELECT(24,16), //bcp->offset
    32, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S6127C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S77C13_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S6127C5,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(136,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(144,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(136,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S6127C10,    ABISELECT(136,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S6127C13,    ABISELECT(136,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(152,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S6127C9,    ABISELECT(152,84), //bcp->offset
    116, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    82, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S6127C17,    ABISELECT(136,76), //bcp->offset
    105, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    79, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    51, //immediately_derived
  0, 1},
  {&cd_S6127C18,    ABISELECT(8,4), //bcp->offset
    18, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6127C3[];
extern void _ZN7S6127C3D1Ev();
extern void _ZN7S6127C3D0Ev();
extern void ABISELECT(_ZThn8_N7S6127C3D1Ev,_ZThn4_N7S6127C3D1Ev)();
extern void ABISELECT(_ZThn8_N7S6127C3D0Ev,_ZThn4_N7S6127C3D0Ev)();
extern void _ZN8S6127C182v1Ev();
extern void ABISELECT(_ZTv0_n120_N7S6127C3D1Ev,_ZTv0_n60_N7S6127C3D1Ev)();
extern void ABISELECT(_ZThn24_N7S6127C3D1Ev,_ZThn16_N7S6127C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S6127C3D0Ev,_ZTv0_n60_N7S6127C3D0Ev)();
extern void ABISELECT(_ZThn24_N7S6127C3D0Ev,_ZThn16_N7S6127C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S6127C3D1Ev,_ZTv0_n44_N7S6127C3D1Ev)();
extern void ABISELECT(_ZThn56_N7S6127C3D1Ev,_ZThn32_N7S6127C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S6127C3D0Ev,_ZTv0_n44_N7S6127C3D0Ev)();
extern void ABISELECT(_ZThn56_N7S6127C3D0Ev,_ZThn32_N7S6127C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C3D1Ev,_ZTv0_n32_N7S6127C3D1Ev)();
extern void ABISELECT(_ZThn72_N7S6127C3D1Ev,_ZThn44_N7S6127C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C3D0Ev,_ZTv0_n32_N7S6127C3D0Ev)();
extern void ABISELECT(_ZThn72_N7S6127C3D0Ev,_ZThn44_N7S6127C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C3D1Ev,_ZTv0_n32_N7S6127C3D1Ev)();
extern void ABISELECT(_ZThn104_N7S6127C3D1Ev,_ZThn60_N7S6127C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C3D0Ev,_ZTv0_n32_N7S6127C3D0Ev)();
extern void ABISELECT(_ZThn104_N7S6127C3D0Ev,_ZThn60_N7S6127C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S6127C3D1Ev,_ZTv0_n44_N7S6127C3D1Ev)();
extern void ABISELECT(_ZThn120_N7S6127C3D1Ev,_ZThn68_N7S6127C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S6127C3D0Ev,_ZTv0_n44_N7S6127C3D0Ev)();
extern void ABISELECT(_ZThn120_N7S6127C3D0Ev,_ZThn68_N7S6127C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S6127C3D1Ev,_ZTv0_n36_N7S6127C3D1Ev)();
extern void ABISELECT(_ZThn136_N7S6127C3D1Ev,_ZThn76_N7S6127C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S6127C3D0Ev,_ZTv0_n36_N7S6127C3D0Ev)();
extern void ABISELECT(_ZThn136_N7S6127C3D0Ev,_ZThn76_N7S6127C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S6127C3[] = {
  ABISELECT(136,76),
  ABISELECT(120,68),
  ABISELECT(120,68),
  0,
  ABISELECT(104,60),
  ABISELECT(88,52),
  ABISELECT(56,32),
  ABISELECT(72,44),
  ABISELECT(56,32),
  ABISELECT(24,16),
  0,
  ABISELECT(56,32),
  0,
  ABISELECT(81,49),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C3[0]),
  (VTBL_ENTRY)&_ZN7S6127C3D1Ev,
  (VTBL_ENTRY)&_ZN7S6127C3D0Ev,
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(48,28),
  ABISELECT(64,40),
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  ABISELECT(-8,-4),
  ABISELECT(73,45),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S6127C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S6127C3D1Ev,_ZThn4_N7S6127C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S6127C3D0Ev,_ZThn4_N7S6127C3D0Ev),
  (VTBL_ENTRY)&_ZN8S6127C182v1Ev,
  ABISELECT(-24,-16),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-24,-16),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-24,-16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-24,-16),
  ABISELECT(57,33),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S6127C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S6127C3D1Ev,_ZTv0_n60_N7S6127C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S6127C3D0Ev,_ZTv0_n60_N7S6127C3D0Ev),
  ABISELECT(-40,-24),
  ABISELECT(16,8),
  ABISELECT(-40,-24),
  ABISELECT(41,25),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S6127C3[0]),
  ABISELECT(-56,-32),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S6127C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6127C3D1Ev,_ZTv0_n44_N7S6127C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6127C3D0Ev,_ZTv0_n44_N7S6127C3D0Ev),
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-72,-44),
  ABISELECT(9,5),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI7S6127C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C3D1Ev,_ZTv0_n32_N7S6127C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C3D0Ev,_ZTv0_n32_N7S6127C3D0Ev),
  ABISELECT(-88,-52),
  ABISELECT(-7,-3),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI7S6127C3[0]),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-104,-60),
  ABISELECT(-23,-11),
  ABISELECT(-104,-60),
  (VTBL_ENTRY)&(_ZTI7S6127C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C3D1Ev,_ZTv0_n32_N7S6127C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C3D0Ev,_ZTv0_n32_N7S6127C3D0Ev),
  ABISELECT(-120,-68),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-120,-68),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI7S6127C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6127C3D1Ev,_ZTv0_n44_N7S6127C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6127C3D0Ev,_ZTv0_n44_N7S6127C3D0Ev),
  ABISELECT(-136,-76),
  ABISELECT(-136,-76),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-136,-76),
  ABISELECT(-55,-27),
  ABISELECT(-136,-76),
  (VTBL_ENTRY)&(_ZTI7S6127C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S6127C3D1Ev,_ZTv0_n36_N7S6127C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S6127C3D0Ev,_ZTv0_n36_N7S6127C3D0Ev),
  ABISELECT(-152,-84),
  ABISELECT(-96,-52),
  ABISELECT(-152,-84),
  ABISELECT(-71,-35),
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI7S6127C3[0]),
};
extern VTBL_ENTRY _ZTV7S6127C3[];
static  VTBL_ENTRY _tg__ZTV7S6127C9__A__7S6127C3[] = {
  0,
  ABISELECT(56,32),
  0,
  ABISELECT(81,49),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C10__7S6127C9__A__7S6127C3[] = {
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
extern void _ZN8S6127C18D1Ev();
extern void _ZN8S6127C18D0Ev();
extern void _ZN8S6127C182v1Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C18__7S6127C3[] = {
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(48,28),
  ABISELECT(64,40),
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  ABISELECT(-8,-4),
  ABISELECT(73,45),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C18[0]),
  (VTBL_ENTRY)&_ZN8S6127C18D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C18D0Ev,
  (VTBL_ENTRY)&_ZN8S6127C182v1Ev,
};
extern void _ZN7S6127C5D1Ev();
extern void _ZN7S6127C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6127C58S6127C18__A1__7S6127C3[] = {
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(48,28),
  ABISELECT(64,40),
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  ABISELECT(-8,-4),
  ABISELECT(73,45),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C5[0]),
  (VTBL_ENTRY)&_ZN7S6127C5D1Ev,
  (VTBL_ENTRY)&_ZN7S6127C5D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev)();
extern void ABISELECT(_ZThn64_N7S6127C5D1Ev,_ZThn40_N7S6127C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev)();
extern void ABISELECT(_ZThn64_N7S6127C5D0Ev,_ZThn40_N7S6127C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6127C6__7S6127C58S6127C18__A1__7S6127C3[] = {
  ABISELECT(-64,-40),
  ABISELECT(-72,-44),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-72,-44),
  ABISELECT(9,5),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S6127C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__7S6127C58S6127C18__A1__7S6127C3[] = {
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S6127C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C13__7S6127C58S6127C18__A1__7S6127C3[] = {
  ABISELECT(-88,-52),
  ABISELECT(-7,-3),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S6127C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev)();
extern void ABISELECT(_ZThn96_N7S6127C5D1Ev,_ZThn56_N7S6127C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev)();
extern void ABISELECT(_ZThn96_N7S6127C5D0Ev,_ZThn56_N7S6127C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6127C12__A1__7S6127C58S6127C18__A1__7S6127C3[] = {
  ABISELECT(-96,-56),
  ABISELECT(-104,-60),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-104,-60),
  ABISELECT(-23,-11),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI7S6127C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S6127C18D1Ev,_ZTv0_n32_N8S6127C18D1Ev)();
extern void ABISELECT(_ZThn64_N8S6127C18D1Ev,_ZThn40_N8S6127C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6127C18D0Ev,_ZTv0_n32_N8S6127C18D0Ev)();
extern void ABISELECT(_ZThn64_N8S6127C18D0Ev,_ZThn40_N8S6127C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6127C6__8S6127C18__7S6127C3[] = {
  ABISELECT(-64,-40),
  ABISELECT(-72,-44),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-72,-44),
  ABISELECT(9,5),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S6127C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C18D1Ev,_ZTv0_n32_N8S6127C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C18D0Ev,_ZTv0_n32_N8S6127C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C18__7S6127C3[] = {
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S6127C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C13__8S6127C18__7S6127C3[] = {
  ABISELECT(-88,-52),
  ABISELECT(-7,-3),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S6127C18[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S6127C18D1Ev,_ZTv0_n32_N8S6127C18D1Ev)();
extern void ABISELECT(_ZThn96_N8S6127C18D1Ev,_ZThn56_N8S6127C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6127C18D0Ev,_ZTv0_n32_N8S6127C18D0Ev)();
extern void ABISELECT(_ZThn96_N8S6127C18D0Ev,_ZThn56_N8S6127C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6127C12__A1__8S6127C18__7S6127C3[] = {
  ABISELECT(-96,-56),
  ABISELECT(-104,-60),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-104,-60),
  ABISELECT(-23,-11),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S6127C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C18D1Ev,_ZTv0_n32_N8S6127C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C18D0Ev,_ZTv0_n32_N8S6127C18D0Ev),
};
extern void ABISELECT(_ZTv0_n72_N8S6127C18D1Ev,_ZTv0_n36_N8S6127C18D1Ev)();
extern void ABISELECT(_ZThn128_N8S6127C18D1Ev,_ZThn72_N8S6127C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S6127C18D0Ev,_ZTv0_n36_N8S6127C18D0Ev)();
extern void ABISELECT(_ZThn128_N8S6127C18D0Ev,_ZThn72_N8S6127C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6127C17__8S6127C18__7S6127C3[] = {
  ABISELECT(-128,-72),
  ABISELECT(-136,-76),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-136,-76),
  ABISELECT(-55,-27),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S6127C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S6127C18D1Ev,_ZTv0_n36_N8S6127C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S6127C18D0Ev,_ZTv0_n36_N8S6127C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S6127C98S6127C17__A1__8S6127C18__7S6127C3[] = {
  ABISELECT(-152,-84),
  ABISELECT(-96,-52),
  ABISELECT(-152,-84),
  ABISELECT(-71,-35),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI8S6127C18[0]),
};
extern void _ZN7S6127C4D1Ev();
extern void _ZN7S6127C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6127C4__7S6127C3[] = {
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-24,-16),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-24,-16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-24,-16),
  ABISELECT(57,33),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
  (VTBL_ENTRY)&_ZN7S6127C4D1Ev,
  (VTBL_ENTRY)&_ZN7S6127C4D0Ev,
};
extern void _ZN8S6127C17D1Ev();
extern void _ZN8S6127C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C177S6127C4__7S6127C3[] = {
  ABISELECT(-24,-16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-24,-16),
  ABISELECT(57,33),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
  (VTBL_ENTRY)&_ZN8S6127C17D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6127C138S6127C177S6127C4__A1__7S6127C3[] = {
  ABISELECT(-24,-16),
  ABISELECT(57,33),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C108S6127C138S6127C177S6127C4__A4__7S6127C3[] = {
  ABISELECT(-24,-16),
  ABISELECT(57,33),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C98S6127C177S6127C4__A1__7S6127C3[] = {
  ABISELECT(-40,-24),
  ABISELECT(16,8),
  ABISELECT(-40,-24),
  ABISELECT(41,25),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C10__7S6127C98S6127C177S6127C4__A1__7S6127C3[] = {
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S6127C17D1Ev,_ZTv0_n32_N8S6127C17D1Ev)();
extern void ABISELECT(_ZThn80_N8S6127C17D1Ev,_ZThn44_N8S6127C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6127C17D0Ev,_ZTv0_n32_N8S6127C17D0Ev)();
extern void ABISELECT(_ZThn80_N8S6127C17D0Ev,_ZThn44_N8S6127C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6127C12__8S6127C177S6127C4__7S6127C3[] = {
  ABISELECT(-80,-44),
  ABISELECT(-104,-60),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-104,-60),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C17D1Ev,_ZTv0_n32_N8S6127C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C17D0Ev,_ZTv0_n32_N8S6127C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C177S6127C4__7S6127C3[] = {
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__A__8S6127C177S6127C4__7S6127C3[] = {
  ABISELECT(-40,-24),
  ABISELECT(16,8),
  ABISELECT(-40,-24),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S6127C4D1Ev,_ZTv0_n44_N7S6127C4D1Ev)();
extern void ABISELECT(_ZThn32_N7S6127C4D1Ev,_ZThn16_N7S6127C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S6127C4D0Ev,_ZTv0_n44_N7S6127C4D0Ev)();
extern void ABISELECT(_ZThn32_N7S6127C4D0Ev,_ZThn16_N7S6127C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6127C5__7S6127C4__7S6127C3[] = {
  ABISELECT(-32,-16),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6127C4D1Ev,_ZTv0_n44_N7S6127C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6127C4D0Ev,_ZTv0_n44_N7S6127C4D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S6127C4D1Ev,_ZTv0_n32_N7S6127C4D1Ev)();
extern void ABISELECT(_ZThn48_N7S6127C4D1Ev,_ZThn28_N7S6127C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C4D0Ev,_ZTv0_n32_N7S6127C4D0Ev)();
extern void ABISELECT(_ZThn48_N7S6127C4D0Ev,_ZThn28_N7S6127C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6127C6__7S6127C4__7S6127C3[] = {
  ABISELECT(-48,-28),
  ABISELECT(-72,-44),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-72,-44),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C4D1Ev,_ZTv0_n32_N7S6127C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C4D0Ev,_ZTv0_n32_N7S6127C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S6127C13__7S6127C4__7S6127C3[] = {
  ABISELECT(-88,-52),
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S6127C4D1Ev,_ZTv0_n32_N7S6127C4D1Ev)();
extern void ABISELECT(_ZThn80_N7S6127C4D1Ev,_ZThn44_N7S6127C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C4D0Ev,_ZTv0_n32_N7S6127C4D0Ev)();
extern void ABISELECT(_ZThn80_N7S6127C4D0Ev,_ZThn44_N7S6127C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6127C12__A1__7S6127C4__7S6127C3[] = {
  ABISELECT(-80,-44),
  ABISELECT(-104,-60),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-104,-60),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C4D1Ev,_ZTv0_n32_N7S6127C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C4D0Ev,_ZTv0_n32_N7S6127C4D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S6127C4D1Ev,_ZTv0_n44_N7S6127C4D1Ev)();
extern void ABISELECT(_ZThn96_N7S6127C4D1Ev,_ZThn52_N7S6127C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S6127C4D0Ev,_ZTv0_n44_N7S6127C4D0Ev)();
extern void ABISELECT(_ZThn96_N7S6127C4D0Ev,_ZThn52_N7S6127C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6127C15__7S6127C4__7S6127C3[] = {
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-120,-68),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-120,-68),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6127C4D1Ev,_ZTv0_n44_N7S6127C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6127C4D0Ev,_ZTv0_n44_N7S6127C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S6127C98S6127C17__A1__7S6127C4__7S6127C3[] = {
  ABISELECT(-40,-24),
  ABISELECT(16,8),
  ABISELECT(-40,-24),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
};
extern void _ZN7S6127C5D1Ev();
extern void _ZN7S6127C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6127C5__7S6127C3[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C5[0]),
  (VTBL_ENTRY)&_ZN7S6127C5D1Ev,
  (VTBL_ENTRY)&_ZN7S6127C5D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev)();
extern void ABISELECT(_ZThn16_N7S6127C5D1Ev,_ZThn12_N7S6127C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev)();
extern void ABISELECT(_ZThn16_N7S6127C5D0Ev,_ZThn12_N7S6127C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6127C6__7S6127C5__7S6127C3[] = {
  ABISELECT(-16,-12),
  ABISELECT(-72,-44),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-72,-44),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S6127C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S6127C13__7S6127C5__7S6127C3[] = {
  ABISELECT(-88,-52),
  ABISELECT(-7,-3),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S6127C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev)();
extern void ABISELECT(_ZThn48_N7S6127C5D1Ev,_ZThn28_N7S6127C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev)();
extern void ABISELECT(_ZThn48_N7S6127C5D0Ev,_ZThn28_N7S6127C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6127C12__A1__7S6127C5__7S6127C3[] = {
  ABISELECT(-48,-28),
  ABISELECT(-104,-60),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-104,-60),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S6127C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev),
};
extern void _ZN7S6127C6D1Ev();
extern void _ZN7S6127C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6127C6__7S6127C3[] = {
  ABISELECT(-72,-44),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-72,-44),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C6[0]),
  (VTBL_ENTRY)&_ZN7S6127C6D1Ev,
  (VTBL_ENTRY)&_ZN7S6127C6D0Ev,
};
extern void _ZN8S6127C12D1Ev();
extern void _ZN8S6127C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C127S6127C6__7S6127C3[] = {
  ABISELECT(-72,-44),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-72,-44),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C12[0]),
  (VTBL_ENTRY)&_ZN8S6127C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6127C108S6127C127S6127C6__A1__7S6127C3[] = {
  ABISELECT(-72,-44),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C127S6127C6__7S6127C3[] = {
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S6127C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__7S6127C6__7S6127C3[] = {
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S6127C6[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__7S6127C3[] = {
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C10__7S6127C3[] = {
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C13__7S6127C3[] = {
  ABISELECT(-88,-52),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C108S6127C13__A2__7S6127C3[] = {
  ABISELECT(-88,-52),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
extern void _ZN8S6127C12D1Ev();
extern void _ZN8S6127C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C12__A1__7S6127C3[] = {
  ABISELECT(-104,-60),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-104,-60),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C12[0]),
  (VTBL_ENTRY)&_ZN8S6127C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6127C108S6127C12__A3__7S6127C3[] = {
  ABISELECT(-104,-60),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C12__A1__7S6127C3[] = {
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S6127C12[0]),
};
extern void _ZN8S6127C15D1Ev();
extern void _ZN8S6127C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C15__7S6127C3[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-120,-68),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-120,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C15[0]),
  (VTBL_ENTRY)&_ZN8S6127C15D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C15__7S6127C3[] = {
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S6127C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C13__8S6127C15__7S6127C3[] = {
  ABISELECT(-88,-52),
  ABISELECT(-7,-3),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S6127C15[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S6127C15D1Ev,_ZTv0_n32_N8S6127C15D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S6127C15D0Ev,_ZTv0_n32_N8S6127C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S6127C6__8S6127C15__7S6127C3[] = {
  ABISELECT(48,24),
  ABISELECT(-72,-44),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-72,-44),
  ABISELECT(9,5),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S6127C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C15D1Ev,_ZTv0_n32_N8S6127C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C15D0Ev,_ZTv0_n32_N8S6127C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S6127C16__7S6127C3[] = {
  ABISELECT(-120,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C16[0]),
};
extern void _ZN8S6127C17D1Ev();
extern void _ZN8S6127C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C17__A1__7S6127C3[] = {
  ABISELECT(-136,-76),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-136,-76),
  ABISELECT(-55,-27),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
  (VTBL_ENTRY)&_ZN8S6127C17D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6127C138S6127C17__A2__7S6127C3[] = {
  ABISELECT(-136,-76),
  ABISELECT(-55,-27),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C108S6127C138S6127C17__A5__7S6127C3[] = {
  ABISELECT(-136,-76),
  ABISELECT(-55,-27),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C98S6127C17__A3__7S6127C3[] = {
  ABISELECT(-152,-84),
  ABISELECT(-96,-52),
  ABISELECT(-152,-84),
  ABISELECT(-71,-35),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C10__7S6127C98S6127C17__A3__7S6127C3[] = {
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(96,52),
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S6127C17D1Ev,_ZTv0_n32_N8S6127C17D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S6127C17D0Ev,_ZTv0_n32_N8S6127C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6127C12__8S6127C17__A1__7S6127C3[] = {
  ABISELECT(32,16),
  ABISELECT(-104,-60),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-104,-60),
  ABISELECT(-23,-11),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C17D1Ev,_ZTv0_n32_N8S6127C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C17D0Ev,_ZTv0_n32_N8S6127C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C17__A1__7S6127C3[] = {
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__A__8S6127C17__A1__7S6127C3[] = {
  ABISELECT(-152,-84),
  ABISELECT(-96,-52),
  ABISELECT(-152,-84),
  ABISELECT(-71,-35),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
};
static  VTT_ENTRY vtt_S6127C3[] = {
  {&(_ZTV7S6127C3[16]),  16,122},
  {&(_tg__ZTV7S6127C9__A__7S6127C3[6]),  6,6},
  {&(_tg__ZTV8S6127C10__7S6127C9__A__7S6127C3[4]),  4,4},
  {&(_tg__ZTV8S6127C18__7S6127C3[11]),  11,14},
  {&(_tg__ZTV7S6127C58S6127C18__A1__7S6127C3[10]),  10,12},
  {&(_tg__ZTV7S6127C6__7S6127C58S6127C18__A1__7S6127C3[8]),  8,10},
  {&(_tg__ZTV7S6127C9__7S6127C58S6127C18__A1__7S6127C3[6]),  6,6},
  {&(_tg__ZTV7S6127C9__7S6127C58S6127C18__A1__7S6127C3[6]),  6,6},
  {&(_tg__ZTV8S6127C13__7S6127C58S6127C18__A1__7S6127C3[4]),  4,4},
  {&(_tg__ZTV8S6127C12__A1__7S6127C58S6127C18__A1__7S6127C3[8]),  8,10},
  {&(_tg__ZTV7S6127C6__8S6127C18__7S6127C3[8]),  8,10},
  {&(_tg__ZTV7S6127C9__8S6127C18__7S6127C3[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C18__7S6127C3[6]),  6,6},
  {&(_tg__ZTV8S6127C13__8S6127C18__7S6127C3[4]),  4,4},
  {&(_tg__ZTV8S6127C12__A1__8S6127C18__7S6127C3[8]),  8,10},
  {&(_tg__ZTV8S6127C17__8S6127C18__7S6127C3[9]),  9,11},
  {&(_tg__ZTV7S6127C98S6127C17__A1__8S6127C18__7S6127C3[6]),  6,6},
  {&(_ZTV7S6127C3[47]),  47,122},
  {&(_ZTV7S6127C3[66]),  66,122},
  {&(_ZTV7S6127C3[76]),  76,122},
  {&(_ZTV7S6127C3[66]),  66,122},
  {&(_ZTV7S6127C3[66]),  66,122},
  {&(_ZTV7S6127C3[82]),  82,122},
  {&(_ZTV7S6127C3[90]),  90,122},
  {&(_ZTV7S6127C3[103]),  103,122},
  {&(_ZTV7S6127C3[103]),  103,122},
  {&(_ZTV7S6127C3[55]),  55,122},
  {&(_ZTV7S6127C3[29]),  29,122},
  {&(_ZTV7S6127C3[114]),  114,122},
  {&(_ZTV7S6127C3[122]),  122,122},
  {&(_tg__ZTV7S6127C4__7S6127C3[14]),  14,16},
  {&(_tg__ZTV8S6127C177S6127C4__7S6127C3[8]),  8,10},
  {&(_tg__ZTV8S6127C138S6127C177S6127C4__A1__7S6127C3[4]),  4,4},
  {&(_tg__ZTV8S6127C108S6127C138S6127C177S6127C4__A4__7S6127C3[4]),  4,4},
  {&(_tg__ZTV7S6127C98S6127C177S6127C4__A1__7S6127C3[6]),  6,6},
  {&(_tg__ZTV8S6127C10__7S6127C98S6127C177S6127C4__A1__7S6127C3[4]),  4,4},
  {&(_tg__ZTV8S6127C12__8S6127C177S6127C4__7S6127C3[8]),  8,10},
  {&(_tg__ZTV7S6127C9__8S6127C177S6127C4__7S6127C3[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C177S6127C4__7S6127C3[6]),  6,6},
  {&(_tg__ZTV7S6127C9__A__8S6127C177S6127C4__7S6127C3[6]),  6,6},
  {&(_tg__ZTV7S6127C5__7S6127C4__7S6127C3[11]),  11,13},
  {&(_tg__ZTV7S6127C6__7S6127C4__7S6127C3[8]),  8,10},
  {&(_tg__ZTV7S6127C5__7S6127C4__7S6127C3[11]),  11,13},
  {&(_tg__ZTV7S6127C5__7S6127C4__7S6127C3[11]),  11,13},
  {&(_tg__ZTV8S6127C13__7S6127C4__7S6127C3[4]),  4,4},
  {&(_tg__ZTV8S6127C12__A1__7S6127C4__7S6127C3[8]),  8,10},
  {&(_tg__ZTV8S6127C15__7S6127C4__7S6127C3[11]),  11,13},
  {&(_tg__ZTV8S6127C15__7S6127C4__7S6127C3[11]),  11,13},
  {&(_tg__ZTV7S6127C98S6127C17__A1__7S6127C4__7S6127C3[6]),  6,6},
  {&(_tg__ZTV7S6127C5__7S6127C3[10]),  10,12},
  {&(_tg__ZTV7S6127C6__7S6127C5__7S6127C3[8]),  8,10},
  {&(_tg__ZTV7S6127C5__7S6127C3[10]),  10,12},
  {&(_tg__ZTV7S6127C5__7S6127C3[10]),  10,12},
  {&(_tg__ZTV8S6127C13__7S6127C5__7S6127C3[4]),  4,4},
  {&(_tg__ZTV8S6127C12__A1__7S6127C5__7S6127C3[8]),  8,10},
  {&(_tg__ZTV7S6127C6__7S6127C3[7]),  7,9},
  {&(_tg__ZTV8S6127C127S6127C6__7S6127C3[7]),  7,9},
  {&(_tg__ZTV8S6127C108S6127C127S6127C6__A1__7S6127C3[4]),  4,4},
  {&(_tg__ZTV7S6127C9__8S6127C127S6127C6__7S6127C3[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C127S6127C6__7S6127C3[6]),  6,6},
  {&(_tg__ZTV7S6127C9__7S6127C6__7S6127C3[6]),  6,6},
  {&(_tg__ZTV7S6127C9__7S6127C6__7S6127C3[6]),  6,6},
  {&(_tg__ZTV7S6127C9__7S6127C3[6]),  6,6},
  {&(_tg__ZTV7S6127C9__7S6127C3[6]),  6,6},
  {&(_tg__ZTV8S6127C10__7S6127C3[4]),  4,4},
  {&(_tg__ZTV8S6127C13__7S6127C3[4]),  4,4},
  {&(_tg__ZTV8S6127C108S6127C13__A2__7S6127C3[4]),  4,4},
  {&(_tg__ZTV8S6127C12__A1__7S6127C3[7]),  7,9},
  {&(_tg__ZTV8S6127C108S6127C12__A3__7S6127C3[4]),  4,4},
  {&(_tg__ZTV7S6127C9__8S6127C12__A1__7S6127C3[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C12__A1__7S6127C3[6]),  6,6},
  {&(_tg__ZTV8S6127C15__7S6127C3[10]),  10,12},
  {&(_tg__ZTV7S6127C9__8S6127C15__7S6127C3[6]),  6,6},
  {&(_tg__ZTV8S6127C15__7S6127C3[10]),  10,12},
  {&(_tg__ZTV8S6127C13__8S6127C15__7S6127C3[4]),  4,4},
  {&(_tg__ZTV7S6127C6__8S6127C15__7S6127C3[8]),  8,10},
  {&(_tg__ZTV7S6127C9__8S6127C15__7S6127C3[6]),  6,6},
  {&(_tg__ZTV8S6127C16__7S6127C3[3]),  3,3},
  {&(_tg__ZTV8S6127C17__A1__7S6127C3[8]),  8,10},
  {&(_tg__ZTV8S6127C138S6127C17__A2__7S6127C3[4]),  4,4},
  {&(_tg__ZTV8S6127C108S6127C138S6127C17__A5__7S6127C3[4]),  4,4},
  {&(_tg__ZTV7S6127C98S6127C17__A3__7S6127C3[6]),  6,6},
  {&(_tg__ZTV8S6127C10__7S6127C98S6127C17__A3__7S6127C3[4]),  4,4},
  {&(_tg__ZTV8S6127C12__8S6127C17__A1__7S6127C3[8]),  8,10},
  {&(_tg__ZTV7S6127C9__8S6127C17__A1__7S6127C3[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C17__A1__7S6127C3[6]),  6,6},
  {&(_tg__ZTV7S6127C9__A__8S6127C17__A1__7S6127C3[6]),  6,6},
};
extern VTBL_ENTRY _ZTI7S6127C3[];
extern  VTBL_ENTRY _ZTV7S6127C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C3[];
static VTBL_ENTRY alt_thunk_names96[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S6127C4D0Ev,_ZTv0_n32_N7S6127C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S6127C4D0Ev,_ZThn44_N7S6127C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S6127C4D0Ev,_ZThn28_N7S6127C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S6127C4D1Ev,_ZTv0_n32_N7S6127C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S6127C4D1Ev,_ZThn44_N7S6127C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S6127C4D1Ev,_ZThn28_N7S6127C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S6127C4D0Ev,_ZTv0_n44_N7S6127C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S6127C4D0Ev,_ZThn52_N7S6127C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S6127C4D0Ev,_ZThn16_N7S6127C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S6127C4D1Ev,_ZTv0_n44_N7S6127C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S6127C4D1Ev,_ZThn52_N7S6127C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S6127C4D1Ev,_ZThn16_N7S6127C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6127C17D0Ev,_ZTv0_n32_N8S6127C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6127C17D0Ev,_ZThn44_N8S6127C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6127C17D1Ev,_ZTv0_n32_N8S6127C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6127C17D1Ev,_ZThn44_N8S6127C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S6127C18D0Ev,_ZTv0_n36_N8S6127C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S6127C18D0Ev,_ZThn72_N8S6127C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S6127C18D1Ev,_ZTv0_n36_N8S6127C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S6127C18D1Ev,_ZThn72_N8S6127C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6127C18D0Ev,_ZTv0_n32_N8S6127C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S6127C18D0Ev,_ZThn56_N8S6127C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6127C18D0Ev,_ZThn40_N8S6127C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6127C18D1Ev,_ZTv0_n32_N8S6127C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S6127C18D1Ev,_ZThn56_N8S6127C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6127C18D1Ev,_ZThn40_N8S6127C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S6127C5D0Ev,_ZThn28_N7S6127C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S6127C5D0Ev,_ZThn12_N7S6127C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S6127C5D0Ev,_ZThn56_N7S6127C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S6127C5D0Ev,_ZThn40_N7S6127C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S6127C5D1Ev,_ZThn28_N7S6127C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S6127C5D1Ev,_ZThn12_N7S6127C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S6127C5D1Ev,_ZThn56_N7S6127C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S6127C5D1Ev,_ZThn40_N7S6127C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S6127C3D0Ev,_ZTv0_n36_N7S6127C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S6127C3D0Ev,_ZThn76_N7S6127C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S6127C3D1Ev,_ZTv0_n36_N7S6127C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S6127C3D1Ev,_ZThn76_N7S6127C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S6127C3D0Ev,_ZTv0_n32_N7S6127C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S6127C3D0Ev,_ZThn60_N7S6127C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S6127C3D0Ev,_ZThn44_N7S6127C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S6127C3D1Ev,_ZTv0_n32_N7S6127C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S6127C3D1Ev,_ZThn60_N7S6127C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S6127C3D1Ev,_ZThn44_N7S6127C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S6127C3D0Ev,_ZTv0_n44_N7S6127C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S6127C3D0Ev,_ZThn68_N7S6127C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S6127C3D0Ev,_ZThn32_N7S6127C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S6127C3D1Ev,_ZTv0_n44_N7S6127C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S6127C3D1Ev,_ZThn68_N7S6127C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S6127C3D1Ev,_ZThn32_N7S6127C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S6127C3D0Ev,_ZTv0_n60_N7S6127C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S6127C3D0Ev,_ZThn16_N7S6127C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S6127C3D1Ev,_ZTv0_n60_N7S6127C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S6127C3D1Ev,_ZThn16_N7S6127C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6127C3 = {  "S6127C3", // class name
  bases_S6127C3, 52,
  &(vtc_S6127C3[0]), // expected_vtbl_contents
  &(vtt_S6127C3[0]), // expected_vtt_contents
  ABISELECT(168,92), // object size
  NSPAIRA(_ZTI7S6127C3),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S6127C3),122, //virtual function table var
  16, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6127C3),87, //virtual table table var
  24, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names96,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6127C20  : S7856C12 , S6127C16 {
  virtual  ~S6127C20(); // _ZN8S6127C20D2Ev
  S6127C20(); // tgen
};
//SIG(-1 S6127C20) C1{ BC2{ m} BC3{ VBC2} vd}


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

static void Test_S6127C20()
{
  extern Class_Descriptor cd_S6127C20;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S6127C20, buf);
    S6127C20 *dp, &lv = *(dp=new (buf) S6127C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S6127C20)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6127C20)");
    /*is_ambiguous_... S6127C20::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), 0, "S6127C20");
    check_base_class_offset(lv, (S7856C12*)(S6127C16*), ABISELECT(8,4), "S6127C20");
    check_base_class_offset(lv, (S6127C16*), 0, "S6127C20");
    test_class_info(&lv, &cd_S6127C20);
    dp->~S6127C20();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6127C20(Test_S6127C20, "S6127C20", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S6127C20C1Ev();
extern void _ZN8S6127C20D2Ev();
Name_Map name_map_S6127C20[] = {
  NSPAIR(_ZN8S6127C20C1Ev),
  NSPAIR(_ZN8S6127C20D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C16;
extern VTBL_ENTRY _ZTI8S6127C16[];
extern  VTBL_ENTRY _ZTV8S6127C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C16[];
static Base_Class bases_S6127C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S6127C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S6127C20[];
extern void _ZN8S6127C20D1Ev();
extern void _ZN8S6127C20D0Ev();
static  VTBL_ENTRY vtc_S6127C20[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C20[0]),
  (VTBL_ENTRY)&_ZN8S6127C20D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C20D0Ev,
};
extern VTBL_ENTRY _ZTV8S6127C20[];
static  VTBL_ENTRY _tg__ZTV8S6127C16__8S6127C20[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C16[0]),
};
static  VTT_ENTRY vtt_S6127C20[] = {
  {&(_ZTV8S6127C20[3]),  3,5},
  {&(_tg__ZTV8S6127C16__8S6127C20[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S6127C20[];
extern  VTBL_ENTRY _ZTV8S6127C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C20[];
Class_Descriptor cd_S6127C20 = {  "S6127C20", // class name
  bases_S6127C20, 3,
  &(vtc_S6127C20[0]), // expected_vtbl_contents
  &(vtt_S6127C20[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S6127C20),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S6127C20),5, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6127C20),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6127C21  : S6127C16 , virtual S7856C9_nt , S6127C4 , S6127C20 {
  virtual  ~S6127C21(); // _ZN8S6127C21D2Ev
  S6127C21(); // tgen
};
//SIG(-1 S6127C21) C1{ BC2{ VBC3{ m}} VBC4{ m} BC5{ VBC6{ VBC7{ VBC8{ m} VBC3 VBC9{ BC8 VBC10{ VBC8 BC3 VBC4} VBC3} BC4 BC11{ BC3 VBC8 VBC4 BC10 VBC9 vd} vd} VBC12{ BC4 BC3 BC10 Fi} VBC11 vd Fi[2]} VBC13{ m} VBC14{ VBC10 VBC2 VBC12 BC4 VBC7 vd Fi} BC15{ VBC11 BC12 BC9 BC4 vd} vd} BC16{ BC3 BC2 vd} vd}


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

static void Test_S6127C21()
{
  extern Class_Descriptor cd_S6127C21;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,18)];
    init_test(&cd_S6127C21, buf);
    S6127C21 *dp, &lv = *(dp=new (buf) S6127C21());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,68), "sizeof(S6127C21)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6127C21)");
    /*is_ambiguous_... S6127C21::S6127C16 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C16*), 0, "S6127C21");
    /*is_ambiguous_... S6127C6::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C6*), 0, "S6127C21");
    /*is_ambiguous_... S6127C21::S6127C9 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C9*), 0, "S6127C21");
    /*is_ambiguous_... S6127C21::S6127C16 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C16*), 0, "S6127C21");
    /*is_ambiguous_... S6127C17::S6127C9 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C9*)(S6127C17*)(S6127C4*), 0, "S6127C21");
    check_base_class_offset(lv, (S7856C12*)(S6127C16*)(S6127C20*), 0, "S6127C21");
    /*is_ambiguous_... S6127C21::S6127C16 */ AMB_check_base_class_offset(lv, (S6127C16*), 0, "S6127C21");
    /*is_ambiguous_... S6127C21::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*), 0, "S6127C21");
    /*is_ambiguous_... S6127C21::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*), 0, "S6127C21");
    check_base_class_offset(lv, (S7856C9_nt*)(S6127C12*)(S6127C6*), 0, "S6127C21");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*)(S6127C12*)(S6127C6*), 0, "S6127C21");
    /*is_ambiguous_... S6127C21::S6127C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*)(S6127C13*), 0, "S6127C21");
    /*is_ambiguous_... S6127C21::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C12*), 0, "S6127C21");
    /*is_ambiguous_... S6127C21::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*)(S6127C12*), 0, "S6127C21");
    check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*)(S6127C13*)(S6127C17*)(S6127C4*), 0, "S6127C21");
    /*is_ambiguous_... S6127C6::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C6*), 0, "S6127C21");
    /*is_ambiguous_... S6127C21::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*), 0, "S6127C21");
    /*is_ambiguous_... S6127C12::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C12*)(S6127C6*), 0, "S6127C21");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*)(S6127C12*)(S6127C6*), 0, "S6127C21");
    /*is_ambiguous_... S6127C21::S6127C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*)(S6127C13*), 0, "S6127C21");
    /*is_ambiguous_... S6127C21::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C12*), 0, "S6127C21");
    /*is_ambiguous_... S6127C21::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*)(S6127C12*), 0, "S6127C21");
    check_base_class_offset(lv, (S7856C15*)(S6127C10*)(S6127C13*)(S6127C17*)(S6127C4*), 0, "S6127C21");
    /*is_ambiguous_... S6127C21::S6127C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C9*), ABISELECT(48,24), "S6127C21");
    /*is_ambiguous_... S6127C21::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*), ABISELECT(48,24), "S6127C21");
    /*is_ambiguous_... S6127C21::S6127C9 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C9*), ABISELECT(48,24), "S6127C21");
    /*is_ambiguous_... S6127C15::S6127C10 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C15*), ABISELECT(48,24), "S6127C21");
    /*is_ambiguous_... S6127C17::S6127C9 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C9*)(S6127C17*)(S6127C4*), ABISELECT(48,24), "S6127C21");
    check_base_class_offset(lv, (S6127C9*)(S6127C6*), ABISELECT(48,24), "S6127C21");
    check_base_class_offset(lv, (S6127C9*)(S6127C12*)(S6127C6*), ABISELECT(48,24), "S6127C21");
    /*is_ambiguous_... S6127C21::S6127C12 */ AMB_check_base_class_offset(lv, (S6127C9*)(S6127C12*), ABISELECT(48,24), "S6127C21");
    /*is_ambiguous_... S6127C6::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C6*), ABISELECT(64,36), "S6127C21");
    /*is_ambiguous_... S6127C12::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C12*)(S6127C6*), ABISELECT(72,40), "S6127C21");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*)(S6127C12*)(S6127C6*), ABISELECT(64,36), "S6127C21");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C12*)(S6127C6*), ABISELECT(64,36), "S6127C21");
    check_base_class_offset(lv, (S6127C12*)(S6127C6*), ABISELECT(64,36), "S6127C21");
    check_base_class_offset(lv, (S6127C6*)(S6127C5*), ABISELECT(64,36), "S6127C21");
    check_base_class_offset(lv, (S6127C6*)(S6127C15*), ABISELECT(64,36), "S6127C21");
    /*is_ambiguous_... S6127C21::S6127C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C13*), ABISELECT(80,44), "S6127C21");
    /*is_ambiguous_... S6127C21::S6127C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C13*), ABISELECT(88,48), "S6127C21");
    /*is_ambiguous_... S6127C21::S6127C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*)(S6127C13*), ABISELECT(80,44), "S6127C21");
    /*is_ambiguous_... S6127C21::S6127C13 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C13*), ABISELECT(80,44), "S6127C21");
    check_base_class_offset(lv, (S6127C13*)(S6127C5*), ABISELECT(80,44), "S6127C21");
    check_base_class_offset(lv, (S6127C13*)(S6127C15*), ABISELECT(80,44), "S6127C21");
    /*is_ambiguous_... S6127C21::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C12*), ABISELECT(104,56), "S6127C21");
    /*is_ambiguous_... S6127C21::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*)(S6127C12*), ABISELECT(96,52), "S6127C21");
    /*is_ambiguous_... S6127C21::S6127C12 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C12*), ABISELECT(96,52), "S6127C21");
    /*is_ambiguous_... S6127C5::S6127C12 */ AMB_check_base_class_offset(lv, (S6127C12*)(S6127C5*), ABISELECT(96,52), "S6127C21");
    check_base_class_offset(lv, (S6127C12*)(S6127C17*)(S6127C4*), ABISELECT(96,52), "S6127C21");
    check_base_class_offset(lv, (S6127C5*)(S6127C4*), ABISELECT(48,24), "S6127C21");
    check_base_class_offset(lv, (S77C13_nt*)(S6127C4*), 0, "S6127C21");
    check_base_class_offset(lv, (S6127C16*)(S6127C15*), ABISELECT(112,60), "S6127C21");
    /*is_ambiguous_... S6127C15::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C15*), ABISELECT(112,60), "S6127C21");
    check_base_class_offset(lv, (S6127C15*)(S6127C4*), ABISELECT(112,60), "S6127C21");
    /*is_ambiguous_... S6127C13::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C13*)(S6127C17*)(S6127C4*), ABISELECT(8,4), "S6127C21");
    /*is_ambiguous_... S6127C13::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C13*)(S6127C17*)(S6127C4*), ABISELECT(16,8), "S6127C21");
    check_base_class_offset(lv, (S7856C12*)(S6127C10*)(S6127C13*)(S6127C17*)(S6127C4*), ABISELECT(8,4), "S6127C21");
    check_base_class_offset(lv, (S6127C10*)(S6127C13*)(S6127C17*)(S6127C4*), ABISELECT(8,4), "S6127C21");
    check_base_class_offset(lv, (S6127C13*)(S6127C17*)(S6127C4*), ABISELECT(8,4), "S6127C21");
    /*is_ambiguous_... S6127C17::S6127C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C9*)(S6127C17*)(S6127C4*), ABISELECT(24,12), "S6127C21");
    /*is_ambiguous_... S6127C17::S6127C9 */ AMB_check_base_class_offset(lv, (S6127C9*)(S6127C17*)(S6127C4*), ABISELECT(24,12), "S6127C21");
    /*is_ambiguous_... S6127C17::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C17*)(S6127C4*), ABISELECT(32,16), "S6127C21");
    check_base_class_offset(lv, (S6127C17*)(S6127C4*), ABISELECT(8,4), "S6127C21");
    check_base_class_offset(lv, (S6127C4*), ABISELECT(8,4), "S6127C21");
    /*is_ambiguous_... S6127C20::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C20*), ABISELECT(40,20), "S6127C21");
    check_base_class_offset(lv, (S6127C16*)(S6127C20*), ABISELECT(40,20), "S6127C21");
    check_base_class_offset(lv, (S6127C20*), ABISELECT(40,20), "S6127C21");
    test_class_info(&lv, &cd_S6127C21);
    dp->~S6127C21();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6127C21(Test_S6127C21, "S6127C21", ABISELECT(128,68));

#else // __cplusplus

extern void _ZN8S6127C21C1Ev();
extern void _ZN8S6127C21D2Ev();
Name_Map name_map_S6127C21[] = {
  NSPAIR(_ZN8S6127C21C1Ev),
  NSPAIR(_ZN8S6127C21D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C16;
extern VTBL_ENTRY _ZTI8S6127C16[];
extern  VTBL_ENTRY _ZTV8S6127C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C16[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C9;
extern VTBL_ENTRY _ZTI7S6127C9[];
extern  VTBL_ENTRY _ZTV7S6127C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C9[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C12;
extern VTBL_ENTRY _ZTI8S6127C12[];
extern  VTBL_ENTRY _ZTV8S6127C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C12[];
extern Class_Descriptor cd_S6127C6;
extern VTBL_ENTRY _ZTI7S6127C6[];
extern  VTBL_ENTRY _ZTV7S6127C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C6[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C13;
extern VTBL_ENTRY _ZTI8S6127C13[];
extern  VTBL_ENTRY _ZTV8S6127C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C13[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C12;
extern VTBL_ENTRY _ZTI8S6127C12[];
extern  VTBL_ENTRY _ZTV8S6127C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C12[];
extern Class_Descriptor cd_S6127C5;
extern VTBL_ENTRY _ZTI7S6127C5[];
extern  VTBL_ENTRY _ZTV7S6127C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C5[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S6127C16;
extern VTBL_ENTRY _ZTI8S6127C16[];
extern  VTBL_ENTRY _ZTV8S6127C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C16[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S6127C15;
extern VTBL_ENTRY _ZTI8S6127C15[];
extern  VTBL_ENTRY _ZTV8S6127C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C15[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C13;
extern VTBL_ENTRY _ZTI8S6127C13[];
extern  VTBL_ENTRY _ZTV8S6127C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C13[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S6127C9;
extern VTBL_ENTRY _ZTI7S6127C9[];
extern  VTBL_ENTRY _ZTV7S6127C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C9[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S6127C17;
extern VTBL_ENTRY _ZTI8S6127C17[];
extern  VTBL_ENTRY _ZTV8S6127C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C17[];
extern Class_Descriptor cd_S6127C4;
extern VTBL_ENTRY _ZTI7S6127C4[];
extern  VTBL_ENTRY _ZTV7S6127C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C4[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C16;
extern VTBL_ENTRY _ZTI8S6127C16[];
extern  VTBL_ENTRY _ZTV8S6127C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C16[];
extern Class_Descriptor cd_S6127C20;
extern VTBL_ENTRY _ZTI8S6127C20[];
extern  VTBL_ENTRY _ZTV8S6127C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C20[];
static Base_Class bases_S6127C21[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S6127C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S6127C10,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S6127C9,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S6127C10,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S6127C12,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S6127C6,    ABISELECT(64,36), //bcp->offset
    56, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S6127C10,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S6127C13,    ABISELECT(80,44), //bcp->offset
    66, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S6127C10,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S6127C12,    ABISELECT(96,52), //bcp->offset
    70, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S6127C5,    ABISELECT(48,24), //bcp->offset
    43, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    37, //immediately_derived
  0, 1},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    37, //immediately_derived
  0, 1},
  {&cd_S6127C16,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S6127C15,    ABISELECT(112,60), //bcp->offset
    80, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    37, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S6127C10,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S6127C13,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S6127C9,    ABISELECT(24,12), //bcp->offset
    32, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S6127C17,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S6127C4,    ABISELECT(8,4), //bcp->offset
    16, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S6127C16,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S6127C20,    ABISELECT(40,20), //bcp->offset
    38, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S6127C21[];
extern void _ZN8S6127C21D1Ev();
extern void _ZN8S6127C21D0Ev();
extern void ABISELECT(_ZThn8_N8S6127C21D1Ev,_ZThn4_N8S6127C21D1Ev)();
extern void ABISELECT(_ZThn8_N8S6127C21D0Ev,_ZThn4_N8S6127C21D0Ev)();
extern void ABISELECT(_ZThn40_N8S6127C21D1Ev,_ZThn20_N8S6127C21D1Ev)();
extern void ABISELECT(_ZThn40_N8S6127C21D0Ev,_ZThn20_N8S6127C21D0Ev)();
extern void ABISELECT(_ZTv0_n88_N8S6127C21D1Ev,_ZTv0_n44_N8S6127C21D1Ev)();
extern void ABISELECT(_ZThn48_N8S6127C21D1Ev,_ZThn24_N8S6127C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S6127C21D0Ev,_ZTv0_n44_N8S6127C21D0Ev)();
extern void ABISELECT(_ZThn48_N8S6127C21D0Ev,_ZThn24_N8S6127C21D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6127C21D1Ev,_ZTv0_n32_N8S6127C21D1Ev)();
extern void ABISELECT(_ZThn64_N8S6127C21D1Ev,_ZThn36_N8S6127C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6127C21D0Ev,_ZTv0_n32_N8S6127C21D0Ev)();
extern void ABISELECT(_ZThn64_N8S6127C21D0Ev,_ZThn36_N8S6127C21D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6127C21D1Ev,_ZTv0_n32_N8S6127C21D1Ev)();
extern void ABISELECT(_ZThn96_N8S6127C21D1Ev,_ZThn52_N8S6127C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6127C21D0Ev,_ZTv0_n32_N8S6127C21D0Ev)();
extern void ABISELECT(_ZThn96_N8S6127C21D0Ev,_ZThn52_N8S6127C21D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S6127C21D1Ev,_ZTv0_n44_N8S6127C21D1Ev)();
extern void ABISELECT(_ZThn112_N8S6127C21D1Ev,_ZThn60_N8S6127C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S6127C21D0Ev,_ZTv0_n44_N8S6127C21D0Ev)();
extern void ABISELECT(_ZThn112_N8S6127C21D0Ev,_ZThn60_N8S6127C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S6127C21[] = {
  ABISELECT(112,60),
  ABISELECT(112,60),
  0,
  ABISELECT(96,52),
  ABISELECT(80,44),
  ABISELECT(48,24),
  ABISELECT(48,24),
  0,
  ABISELECT(64,36),
  ABISELECT(48,24),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C21[0]),
  (VTBL_ENTRY)&_ZN8S6127C21D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C21D0Ev,
  ABISELECT(104,56),
  ABISELECT(104,56),
  ABISELECT(-8,-4),
  ABISELECT(72,40),
  ABISELECT(56,32),
  ABISELECT(40,20),
  ABISELECT(-8,-4),
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(88,48),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S6127C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S6127C21D1Ev,_ZThn4_N8S6127C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S6127C21D0Ev,_ZThn4_N8S6127C21D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S6127C21[0]),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S6127C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S6127C21D1Ev,_ZThn20_N8S6127C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S6127C21D0Ev,_ZThn20_N8S6127C21D0Ev),
  ABISELECT(-48,-24),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S6127C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6127C21D1Ev,_ZTv0_n44_N8S6127C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6127C21D0Ev,_ZTv0_n44_N8S6127C21D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S6127C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C21D1Ev,_ZTv0_n32_N8S6127C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C21D0Ev,_ZTv0_n32_N8S6127C21D0Ev),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S6127C21[0]),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S6127C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C21D1Ev,_ZTv0_n32_N8S6127C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C21D0Ev,_ZTv0_n32_N8S6127C21D0Ev),
  ABISELECT(-112,-60),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-64,-36),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S6127C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6127C21D1Ev,_ZTv0_n44_N8S6127C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6127C21D0Ev,_ZTv0_n44_N8S6127C21D0Ev),
};
extern VTBL_ENTRY _ZTV8S6127C21[];
static  VTBL_ENTRY _tg__ZTV8S6127C16__A__8S6127C21[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C16[0]),
};
extern void _ZN7S6127C4D1Ev();
extern void _ZN7S6127C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6127C4__8S6127C21[] = {
  ABISELECT(104,56),
  ABISELECT(104,56),
  ABISELECT(-8,-4),
  ABISELECT(72,40),
  ABISELECT(56,32),
  ABISELECT(40,20),
  ABISELECT(-8,-4),
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(88,48),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
  (VTBL_ENTRY)&_ZN7S6127C4D1Ev,
  (VTBL_ENTRY)&_ZN7S6127C4D0Ev,
};
extern void _ZN8S6127C17D1Ev();
extern void _ZN8S6127C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C177S6127C4__8S6127C21[] = {
  ABISELECT(-8,-4),
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(88,48),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
  (VTBL_ENTRY)&_ZN8S6127C17D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6127C138S6127C177S6127C4__A1__8S6127C21[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C108S6127C138S6127C177S6127C4__A4__8S6127C21[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C98S6127C177S6127C4__A1__8S6127C21[] = {
  ABISELECT(-24,-12),
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C10__7S6127C98S6127C177S6127C4__A1__8S6127C21[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S6127C17D1Ev,_ZTv0_n32_N8S6127C17D1Ev)();
extern void ABISELECT(_ZThn88_N8S6127C17D1Ev,_ZThn48_N8S6127C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6127C17D0Ev,_ZTv0_n32_N8S6127C17D0Ev)();
extern void ABISELECT(_ZThn88_N8S6127C17D0Ev,_ZThn48_N8S6127C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6127C12__8S6127C177S6127C4__8S6127C21[] = {
  ABISELECT(-88,-48),
  ABISELECT(-96,-52),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C17D1Ev,_ZTv0_n32_N8S6127C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C17D0Ev,_ZTv0_n32_N8S6127C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C177S6127C4__8S6127C21[] = {
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__A__8S6127C177S6127C4__8S6127C21[] = {
  ABISELECT(-24,-12),
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S6127C4D1Ev,_ZTv0_n44_N7S6127C4D1Ev)();
extern void ABISELECT(_ZThn40_N7S6127C4D1Ev,_ZThn20_N7S6127C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S6127C4D0Ev,_ZTv0_n44_N7S6127C4D0Ev)();
extern void ABISELECT(_ZThn40_N7S6127C4D0Ev,_ZThn20_N7S6127C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6127C5__7S6127C4__8S6127C21[] = {
  ABISELECT(-40,-20),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6127C4D1Ev,_ZTv0_n44_N7S6127C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6127C4D0Ev,_ZTv0_n44_N7S6127C4D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S6127C4D1Ev,_ZTv0_n32_N7S6127C4D1Ev)();
extern void ABISELECT(_ZThn56_N7S6127C4D1Ev,_ZThn32_N7S6127C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C4D0Ev,_ZTv0_n32_N7S6127C4D0Ev)();
extern void ABISELECT(_ZThn56_N7S6127C4D0Ev,_ZThn32_N7S6127C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6127C6__7S6127C4__8S6127C21[] = {
  ABISELECT(-56,-32),
  ABISELECT(-64,-36),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C4D1Ev,_ZTv0_n32_N7S6127C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C4D0Ev,_ZTv0_n32_N7S6127C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S6127C13__7S6127C4__8S6127C21[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S6127C4D1Ev,_ZTv0_n32_N7S6127C4D1Ev)();
extern void ABISELECT(_ZThn88_N7S6127C4D1Ev,_ZThn48_N7S6127C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C4D0Ev,_ZTv0_n32_N7S6127C4D0Ev)();
extern void ABISELECT(_ZThn88_N7S6127C4D0Ev,_ZThn48_N7S6127C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6127C12__A1__7S6127C4__8S6127C21[] = {
  ABISELECT(-88,-48),
  ABISELECT(-96,-52),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C4D1Ev,_ZTv0_n32_N7S6127C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C4D0Ev,_ZTv0_n32_N7S6127C4D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S6127C4D1Ev,_ZTv0_n44_N7S6127C4D1Ev)();
extern void ABISELECT(_ZThn104_N7S6127C4D1Ev,_ZThn56_N7S6127C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S6127C4D0Ev,_ZTv0_n44_N7S6127C4D0Ev)();
extern void ABISELECT(_ZThn104_N7S6127C4D0Ev,_ZThn56_N7S6127C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6127C15__7S6127C4__8S6127C21[] = {
  ABISELECT(-104,-56),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-64,-36),
  ABISELECT(-112,-60),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6127C4D1Ev,_ZTv0_n44_N7S6127C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6127C4D0Ev,_ZTv0_n44_N7S6127C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S6127C98S6127C17__A1__7S6127C4__8S6127C21[] = {
  ABISELECT(-24,-12),
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
};
extern void _ZN8S6127C20D1Ev();
extern void _ZN8S6127C20D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C20__8S6127C21[] = {
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C20[0]),
  (VTBL_ENTRY)&_ZN8S6127C20D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C20D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6127C168S6127C20__A2__8S6127C21[] = {
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C16[0]),
};
extern void _ZN7S6127C5D1Ev();
extern void _ZN7S6127C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6127C5__8S6127C21[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C5[0]),
  (VTBL_ENTRY)&_ZN7S6127C5D1Ev,
  (VTBL_ENTRY)&_ZN7S6127C5D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev)();
extern void ABISELECT(_ZThn16_N7S6127C5D1Ev,_ZThn12_N7S6127C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev)();
extern void ABISELECT(_ZThn16_N7S6127C5D0Ev,_ZThn12_N7S6127C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6127C6__7S6127C5__8S6127C21[] = {
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S6127C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S6127C13__7S6127C5__8S6127C21[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S6127C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev)();
extern void ABISELECT(_ZThn48_N7S6127C5D1Ev,_ZThn28_N7S6127C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev)();
extern void ABISELECT(_ZThn48_N7S6127C5D0Ev,_ZThn28_N7S6127C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6127C12__A1__7S6127C5__8S6127C21[] = {
  ABISELECT(-48,-28),
  ABISELECT(-96,-52),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S6127C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev),
};
extern void _ZN7S6127C6D1Ev();
extern void _ZN7S6127C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6127C6__8S6127C21[] = {
  ABISELECT(-64,-36),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C6[0]),
  (VTBL_ENTRY)&_ZN7S6127C6D1Ev,
  (VTBL_ENTRY)&_ZN7S6127C6D0Ev,
};
extern void _ZN8S6127C12D1Ev();
extern void _ZN8S6127C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C127S6127C6__8S6127C21[] = {
  ABISELECT(-64,-36),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C12[0]),
  (VTBL_ENTRY)&_ZN8S6127C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6127C108S6127C127S6127C6__A1__8S6127C21[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C127S6127C6__8S6127C21[] = {
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S6127C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__7S6127C6__8S6127C21[] = {
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S6127C6[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C21[] = {
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C10__8S6127C21[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C13__8S6127C21[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C108S6127C13__A2__8S6127C21[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
extern void _ZN8S6127C12D1Ev();
extern void _ZN8S6127C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C12__A1__8S6127C21[] = {
  ABISELECT(-96,-52),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C12[0]),
  (VTBL_ENTRY)&_ZN8S6127C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6127C108S6127C12__A3__8S6127C21[] = {
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C12__A1__8S6127C21[] = {
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S6127C12[0]),
};
extern void _ZN8S6127C15D1Ev();
extern void _ZN8S6127C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C15__8S6127C21[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-64,-36),
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C15[0]),
  (VTBL_ENTRY)&_ZN8S6127C15D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C15__8S6127C21[] = {
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S6127C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C13__8S6127C15__8S6127C21[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S6127C15[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S6127C15D1Ev,_ZTv0_n32_N8S6127C15D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S6127C15D0Ev,_ZTv0_n32_N8S6127C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S6127C6__8S6127C15__8S6127C21[] = {
  ABISELECT(48,24),
  ABISELECT(-64,-36),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S6127C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C15D1Ev,_ZTv0_n32_N8S6127C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C15D0Ev,_ZTv0_n32_N8S6127C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S6127C16__A1__8S6127C21[] = {
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C16[0]),
};
static  VTT_ENTRY vtt_S6127C21[] = {
  {&(_ZTV8S6127C21[14]),  14,93},
  {&(_tg__ZTV8S6127C16__A__8S6127C21[3]),  3,3},
  {&(_tg__ZTV7S6127C4__8S6127C21[14]),  14,16},
  {&(_tg__ZTV8S6127C177S6127C4__8S6127C21[8]),  8,10},
  {&(_tg__ZTV8S6127C138S6127C177S6127C4__A1__8S6127C21[4]),  4,4},
  {&(_tg__ZTV8S6127C108S6127C138S6127C177S6127C4__A4__8S6127C21[4]),  4,4},
  {&(_tg__ZTV7S6127C98S6127C177S6127C4__A1__8S6127C21[6]),  6,6},
  {&(_tg__ZTV8S6127C10__7S6127C98S6127C177S6127C4__A1__8S6127C21[4]),  4,4},
  {&(_tg__ZTV8S6127C12__8S6127C177S6127C4__8S6127C21[8]),  8,10},
  {&(_tg__ZTV7S6127C9__8S6127C177S6127C4__8S6127C21[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C177S6127C4__8S6127C21[6]),  6,6},
  {&(_tg__ZTV7S6127C9__A__8S6127C177S6127C4__8S6127C21[6]),  6,6},
  {&(_tg__ZTV7S6127C5__7S6127C4__8S6127C21[11]),  11,13},
  {&(_tg__ZTV7S6127C6__7S6127C4__8S6127C21[8]),  8,10},
  {&(_tg__ZTV7S6127C5__7S6127C4__8S6127C21[11]),  11,13},
  {&(_tg__ZTV7S6127C5__7S6127C4__8S6127C21[11]),  11,13},
  {&(_tg__ZTV8S6127C13__7S6127C4__8S6127C21[4]),  4,4},
  {&(_tg__ZTV8S6127C12__A1__7S6127C4__8S6127C21[8]),  8,10},
  {&(_tg__ZTV8S6127C15__7S6127C4__8S6127C21[11]),  11,13},
  {&(_tg__ZTV8S6127C15__7S6127C4__8S6127C21[11]),  11,13},
  {&(_tg__ZTV7S6127C98S6127C17__A1__7S6127C4__8S6127C21[6]),  6,6},
  {&(_tg__ZTV8S6127C20__8S6127C21[3]),  3,5},
  {&(_tg__ZTV8S6127C168S6127C20__A2__8S6127C21[3]),  3,3},
  {&(_ZTV8S6127C21[30]),  30,93},
  {&(_ZTV8S6127C21[54]),  54,93},
  {&(_ZTV8S6127C21[64]),  64,93},
  {&(_ZTV8S6127C21[54]),  54,93},
  {&(_ZTV8S6127C21[54]),  54,93},
  {&(_ZTV8S6127C21[70]),  70,93},
  {&(_ZTV8S6127C21[78]),  78,93},
  {&(_ZTV8S6127C21[91]),  91,93},
  {&(_ZTV8S6127C21[91]),  91,93},
  {&(_ZTV8S6127C21[38]),  38,93},
  {&(_ZTV8S6127C21[41]),  41,93},
  {&(_tg__ZTV7S6127C5__8S6127C21[10]),  10,12},
  {&(_tg__ZTV7S6127C6__7S6127C5__8S6127C21[8]),  8,10},
  {&(_tg__ZTV7S6127C5__8S6127C21[10]),  10,12},
  {&(_tg__ZTV7S6127C5__8S6127C21[10]),  10,12},
  {&(_tg__ZTV8S6127C13__7S6127C5__8S6127C21[4]),  4,4},
  {&(_tg__ZTV8S6127C12__A1__7S6127C5__8S6127C21[8]),  8,10},
  {&(_tg__ZTV7S6127C6__8S6127C21[7]),  7,9},
  {&(_tg__ZTV8S6127C127S6127C6__8S6127C21[7]),  7,9},
  {&(_tg__ZTV8S6127C108S6127C127S6127C6__A1__8S6127C21[4]),  4,4},
  {&(_tg__ZTV7S6127C9__8S6127C127S6127C6__8S6127C21[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C127S6127C6__8S6127C21[6]),  6,6},
  {&(_tg__ZTV7S6127C9__7S6127C6__8S6127C21[6]),  6,6},
  {&(_tg__ZTV7S6127C9__7S6127C6__8S6127C21[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C21[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C21[6]),  6,6},
  {&(_tg__ZTV8S6127C10__8S6127C21[4]),  4,4},
  {&(_tg__ZTV8S6127C13__8S6127C21[4]),  4,4},
  {&(_tg__ZTV8S6127C108S6127C13__A2__8S6127C21[4]),  4,4},
  {&(_tg__ZTV8S6127C12__A1__8S6127C21[7]),  7,9},
  {&(_tg__ZTV8S6127C108S6127C12__A3__8S6127C21[4]),  4,4},
  {&(_tg__ZTV7S6127C9__8S6127C12__A1__8S6127C21[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C12__A1__8S6127C21[6]),  6,6},
  {&(_tg__ZTV8S6127C15__8S6127C21[10]),  10,12},
  {&(_tg__ZTV7S6127C9__8S6127C15__8S6127C21[6]),  6,6},
  {&(_tg__ZTV8S6127C15__8S6127C21[10]),  10,12},
  {&(_tg__ZTV8S6127C13__8S6127C15__8S6127C21[4]),  4,4},
  {&(_tg__ZTV7S6127C6__8S6127C15__8S6127C21[8]),  8,10},
  {&(_tg__ZTV7S6127C9__8S6127C15__8S6127C21[6]),  6,6},
  {&(_tg__ZTV8S6127C16__A1__8S6127C21[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S6127C21[];
extern  VTBL_ENTRY _ZTV8S6127C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C21[];
static VTBL_ENTRY alt_thunk_names97[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S6127C5D0Ev,_ZThn28_N7S6127C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S6127C5D0Ev,_ZThn12_N7S6127C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S6127C5D1Ev,_ZThn28_N7S6127C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S6127C5D1Ev,_ZThn12_N7S6127C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S6127C4D0Ev,_ZTv0_n32_N7S6127C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S6127C4D0Ev,_ZThn48_N7S6127C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S6127C4D0Ev,_ZThn32_N7S6127C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S6127C4D1Ev,_ZTv0_n32_N7S6127C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S6127C4D1Ev,_ZThn48_N7S6127C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S6127C4D1Ev,_ZThn32_N7S6127C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S6127C4D0Ev,_ZTv0_n44_N7S6127C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S6127C4D0Ev,_ZThn56_N7S6127C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S6127C4D0Ev,_ZThn20_N7S6127C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S6127C4D1Ev,_ZTv0_n44_N7S6127C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S6127C4D1Ev,_ZThn56_N7S6127C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S6127C4D1Ev,_ZThn20_N7S6127C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6127C17D0Ev,_ZTv0_n32_N8S6127C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S6127C17D0Ev,_ZThn48_N8S6127C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6127C17D1Ev,_ZTv0_n32_N8S6127C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S6127C17D1Ev,_ZThn48_N8S6127C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6127C21D0Ev,_ZTv0_n32_N8S6127C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S6127C21D0Ev,_ZThn52_N8S6127C21D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6127C21D0Ev,_ZThn36_N8S6127C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6127C21D1Ev,_ZTv0_n32_N8S6127C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S6127C21D1Ev,_ZThn52_N8S6127C21D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6127C21D1Ev,_ZThn36_N8S6127C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S6127C21D0Ev,_ZTv0_n44_N8S6127C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S6127C21D0Ev,_ZThn60_N8S6127C21D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S6127C21D0Ev,_ZThn24_N8S6127C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S6127C21D1Ev,_ZTv0_n44_N8S6127C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S6127C21D1Ev,_ZThn60_N8S6127C21D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S6127C21D1Ev,_ZThn24_N8S6127C21D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6127C21 = {  "S6127C21", // class name
  bases_S6127C21, 41,
  &(vtc_S6127C21[0]), // expected_vtbl_contents
  &(vtt_S6127C21[0]), // expected_vtt_contents
  ABISELECT(128,68), // object size
  NSPAIRA(_ZTI8S6127C21),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S6127C21),93, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6127C21),63, //virtual table table var
  20, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names97,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6127C19  : virtual S6127C20 , virtual S6127C6 , S6127C21 , S6127C17 , S6127C15 {
  virtual  ~S6127C19(); // _ZN8S6127C19D2Ev
  S6127C19(); // tgen
};
//SIG(-1 S6127C19) C1{ VBC2{ BC3{ m} BC4{ VBC3} vd} VBC5{ VBC6{ m} VBC3 VBC7{ BC6 VBC8{ VBC6 BC3 VBC9{ m}} VBC3} BC9 BC10{ BC3 VBC6 VBC9 BC8 VBC7 vd} vd} BC11{ BC4 VBC9 BC12{ VBC13{ VBC5 VBC14{ BC9 BC3 BC8 Fi} VBC10 vd Fi[2]} VBC15{ m} VBC16{ VBC8 VBC4 VBC14 BC9 VBC5 vd Fi} BC17{ VBC10 BC14 BC7 BC9 vd} vd} BC2 vd} BC17 BC16 vd}


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

static void Test_S6127C19()
{
  extern Class_Descriptor cd_S6127C19;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(24,25)];
    init_test(&cd_S6127C19, buf);
    S6127C19 *dp, &lv = *(dp=new (buf) S6127C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(184,96), "sizeof(S6127C19)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6127C19)");
    /*is_ambiguous_... S6127C19::S6127C20 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C20*), ABISELECT(96,48), "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C20 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C16*)(S6127C20*), 0, "S6127C19");
    /*is_ambiguous_... S6127C6::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C6*), 0, "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C9 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C9*), 0, "S6127C19");
    /*is_ambiguous_... S6127C21::S6127C16 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C16*)(S6127C21*), 0, "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C16 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C16*), 0, "S6127C19");
    /*is_ambiguous_... S6127C17::S6127C9 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C9*)(S6127C17*)(S6127C4*)(S6127C21*), 0, "S6127C19");
    check_base_class_offset(lv, (S7856C12*)(S6127C16*)(S6127C20*)(S6127C21*), 0, "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C17 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C9*)(S6127C17*), 0, "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C20 */ AMB_check_base_class_offset(lv, (S6127C16*)(S6127C20*), ABISELECT(96,48), "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C20 */ AMB_check_base_class_offset(lv, (S6127C20*), ABISELECT(96,48), "S6127C19");
    /*is_ambiguous_... S6127C6::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C6*), 0, "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*), 0, "S6127C19");
    /*is_ambiguous_... S6127C12::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C12*)(S6127C6*), 0, "S6127C19");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*)(S6127C12*)(S6127C6*), 0, "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*)(S6127C13*), 0, "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C12*), 0, "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*)(S6127C12*), 0, "S6127C19");
    check_base_class_offset(lv, (S7856C15*)(S6127C10*)(S6127C13*)(S6127C17*)(S6127C4*)(S6127C21*), 0, "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C17 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*)(S6127C13*)(S6127C17*), 0, "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C9*), ABISELECT(120,60), "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*), ABISELECT(120,60), "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*), 0, "S6127C19");
    check_base_class_offset(lv, (S7856C9_nt*)(S6127C12*)(S6127C6*), 0, "S6127C19");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*)(S6127C12*)(S6127C6*), 0, "S6127C19");
    /*is_ambiguous_... S6127C21::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C21*), 0, "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*)(S6127C13*), 0, "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C12*), 0, "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*)(S6127C12*), 0, "S6127C19");
    check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*)(S6127C13*)(S6127C17*)(S6127C4*)(S6127C21*), 0, "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C17 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*)(S6127C13*)(S6127C17*), 0, "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C9 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C9*), ABISELECT(120,60), "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C15 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C15*), ABISELECT(120,60), "S6127C19");
    /*is_ambiguous_... S6127C17::S6127C9 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C9*)(S6127C17*)(S6127C4*)(S6127C21*), ABISELECT(120,60), "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C17 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C9*)(S6127C17*), ABISELECT(120,60), "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C15 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C15*), ABISELECT(120,60), "S6127C19");
    check_base_class_offset(lv, (S6127C9*)(S6127C6*), ABISELECT(120,60), "S6127C19");
    check_base_class_offset(lv, (S6127C9*)(S6127C12*)(S6127C6*), ABISELECT(120,60), "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C12 */ AMB_check_base_class_offset(lv, (S6127C9*)(S6127C12*), ABISELECT(120,60), "S6127C19");
    /*is_ambiguous_... S6127C6::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C6*), ABISELECT(104,52), "S6127C19");
    /*is_ambiguous_... S6127C12::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C12*)(S6127C6*), ABISELECT(112,56), "S6127C19");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*)(S6127C12*)(S6127C6*), ABISELECT(104,52), "S6127C19");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C12*)(S6127C6*), ABISELECT(104,52), "S6127C19");
    check_base_class_offset(lv, (S6127C12*)(S6127C6*), ABISELECT(104,52), "S6127C19");
    check_base_class_offset(lv, (S6127C6*), ABISELECT(104,52), "S6127C19");
    check_base_class_offset(lv, (S6127C6*)(S6127C5*), ABISELECT(104,52), "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C15 */ AMB_check_base_class_offset(lv, (S6127C6*)(S6127C15*), ABISELECT(104,52), "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C15 */ AMB_check_base_class_offset(lv, (S6127C6*)(S6127C15*), ABISELECT(104,52), "S6127C19");
    /*is_ambiguous_... S6127C21::S6127C16 */ AMB_check_base_class_offset(lv, (S6127C16*)(S6127C21*), 0, "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C13*), ABISELECT(136,72), "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C13*), ABISELECT(144,76), "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*)(S6127C13*), ABISELECT(136,72), "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C13 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C13*), ABISELECT(136,72), "S6127C19");
    check_base_class_offset(lv, (S6127C13*)(S6127C5*), ABISELECT(136,72), "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C15 */ AMB_check_base_class_offset(lv, (S6127C13*)(S6127C15*), ABISELECT(136,72), "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C15 */ AMB_check_base_class_offset(lv, (S6127C13*)(S6127C15*), ABISELECT(136,72), "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C12*), ABISELECT(160,84), "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*)(S6127C12*), ABISELECT(152,80), "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C12 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C12*), ABISELECT(152,80), "S6127C19");
    /*is_ambiguous_... S6127C5::S6127C12 */ AMB_check_base_class_offset(lv, (S6127C12*)(S6127C5*), ABISELECT(152,80), "S6127C19");
    check_base_class_offset(lv, (S6127C12*)(S6127C17*)(S6127C4*)(S6127C21*), ABISELECT(152,80), "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C17 */ AMB_check_base_class_offset(lv, (S6127C12*)(S6127C17*), ABISELECT(152,80), "S6127C19");
    check_base_class_offset(lv, (S6127C5*)(S6127C4*)(S6127C21*), ABISELECT(120,60), "S6127C19");
    check_base_class_offset(lv, (S77C13_nt*)(S6127C4*)(S6127C21*), 0, "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C15 */ AMB_check_base_class_offset(lv, (S6127C16*)(S6127C15*), ABISELECT(168,88), "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C15 */ AMB_check_base_class_offset(lv, (S6127C16*)(S6127C15*), ABISELECT(168,88), "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C15 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C15*), ABISELECT(168,88), "S6127C19");
    check_base_class_offset(lv, (S6127C15*)(S6127C4*)(S6127C21*), ABISELECT(168,88), "S6127C19");
    /*is_ambiguous_... S6127C13::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C13*)(S6127C17*)(S6127C4*)(S6127C21*), ABISELECT(8,4), "S6127C19");
    /*is_ambiguous_... S6127C13::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C13*)(S6127C17*)(S6127C4*)(S6127C21*), ABISELECT(16,8), "S6127C19");
    check_base_class_offset(lv, (S7856C12*)(S6127C10*)(S6127C13*)(S6127C17*)(S6127C4*)(S6127C21*), ABISELECT(8,4), "S6127C19");
    check_base_class_offset(lv, (S6127C10*)(S6127C13*)(S6127C17*)(S6127C4*)(S6127C21*), ABISELECT(8,4), "S6127C19");
    check_base_class_offset(lv, (S6127C13*)(S6127C17*)(S6127C4*)(S6127C21*), ABISELECT(8,4), "S6127C19");
    /*is_ambiguous_... S6127C17::S6127C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C9*)(S6127C17*)(S6127C4*)(S6127C21*), ABISELECT(24,12), "S6127C19");
    /*is_ambiguous_... S6127C17::S6127C9 */ AMB_check_base_class_offset(lv, (S6127C9*)(S6127C17*)(S6127C4*)(S6127C21*), ABISELECT(24,12), "S6127C19");
    /*is_ambiguous_... S6127C17::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C17*)(S6127C4*)(S6127C21*), ABISELECT(32,16), "S6127C19");
    check_base_class_offset(lv, (S6127C17*)(S6127C4*)(S6127C21*), ABISELECT(8,4), "S6127C19");
    check_base_class_offset(lv, (S6127C4*)(S6127C21*), ABISELECT(8,4), "S6127C19");
    /*is_ambiguous_... S6127C20::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C20*)(S6127C21*), ABISELECT(40,20), "S6127C19");
    check_base_class_offset(lv, (S6127C16*)(S6127C20*)(S6127C21*), ABISELECT(40,20), "S6127C19");
    check_base_class_offset(lv, (S6127C20*)(S6127C21*), ABISELECT(40,20), "S6127C19");
    check_base_class_offset(lv, (S6127C21*), 0, "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C17 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C13*)(S6127C17*), ABISELECT(48,24), "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C17 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C13*)(S6127C17*), ABISELECT(56,28), "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C17 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*)(S6127C13*)(S6127C17*), ABISELECT(48,24), "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C17 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C13*)(S6127C17*), ABISELECT(48,24), "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C17 */ AMB_check_base_class_offset(lv, (S6127C13*)(S6127C17*), ABISELECT(48,24), "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C17 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C9*)(S6127C17*), ABISELECT(64,32), "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C17 */ AMB_check_base_class_offset(lv, (S6127C9*)(S6127C17*), ABISELECT(64,32), "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C17 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C17*), ABISELECT(72,36), "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C17 */ AMB_check_base_class_offset(lv, (S6127C17*), ABISELECT(48,24), "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C15 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C15*), ABISELECT(80,40), "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C15 */ AMB_check_base_class_offset(lv, (S6127C15*), ABISELECT(80,40), "S6127C19");
    test_class_info(&lv, &cd_S6127C19);
    dp->~S6127C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6127C19(Test_S6127C19, "S6127C19", ABISELECT(184,96));

#else // __cplusplus

extern void _ZN8S6127C19C1Ev();
extern void _ZN8S6127C19D2Ev();
Name_Map name_map_S6127C19[] = {
  NSPAIR(_ZN8S6127C19C1Ev),
  NSPAIR(_ZN8S6127C19D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C16;
extern VTBL_ENTRY _ZTI8S6127C16[];
extern  VTBL_ENTRY _ZTV8S6127C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C16[];
extern Class_Descriptor cd_S6127C20;
extern VTBL_ENTRY _ZTI8S6127C20[];
extern  VTBL_ENTRY _ZTV8S6127C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C20[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C9;
extern VTBL_ENTRY _ZTI7S6127C9[];
extern  VTBL_ENTRY _ZTV7S6127C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C9[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C12;
extern VTBL_ENTRY _ZTI8S6127C12[];
extern  VTBL_ENTRY _ZTV8S6127C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C12[];
extern Class_Descriptor cd_S6127C6;
extern VTBL_ENTRY _ZTI7S6127C6[];
extern  VTBL_ENTRY _ZTV7S6127C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C6[];
extern Class_Descriptor cd_S6127C16;
extern VTBL_ENTRY _ZTI8S6127C16[];
extern  VTBL_ENTRY _ZTV8S6127C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C16[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C13;
extern VTBL_ENTRY _ZTI8S6127C13[];
extern  VTBL_ENTRY _ZTV8S6127C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C13[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C12;
extern VTBL_ENTRY _ZTI8S6127C12[];
extern  VTBL_ENTRY _ZTV8S6127C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C12[];
extern Class_Descriptor cd_S6127C5;
extern VTBL_ENTRY _ZTI7S6127C5[];
extern  VTBL_ENTRY _ZTV7S6127C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C5[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S6127C16;
extern VTBL_ENTRY _ZTI8S6127C16[];
extern  VTBL_ENTRY _ZTV8S6127C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C16[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S6127C15;
extern VTBL_ENTRY _ZTI8S6127C15[];
extern  VTBL_ENTRY _ZTV8S6127C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C15[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C13;
extern VTBL_ENTRY _ZTI8S6127C13[];
extern  VTBL_ENTRY _ZTV8S6127C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C13[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S6127C9;
extern VTBL_ENTRY _ZTI7S6127C9[];
extern  VTBL_ENTRY _ZTV7S6127C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C9[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S6127C17;
extern VTBL_ENTRY _ZTI8S6127C17[];
extern  VTBL_ENTRY _ZTV8S6127C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C17[];
extern Class_Descriptor cd_S6127C4;
extern VTBL_ENTRY _ZTI7S6127C4[];
extern  VTBL_ENTRY _ZTV7S6127C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C4[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C16;
extern VTBL_ENTRY _ZTI8S6127C16[];
extern  VTBL_ENTRY _ZTV8S6127C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C16[];
extern Class_Descriptor cd_S6127C20;
extern VTBL_ENTRY _ZTI8S6127C20[];
extern  VTBL_ENTRY _ZTV8S6127C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C20[];
extern Class_Descriptor cd_S6127C21;
extern VTBL_ENTRY _ZTI8S6127C21[];
extern  VTBL_ENTRY _ZTV8S6127C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C21[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C13;
extern VTBL_ENTRY _ZTI8S6127C13[];
extern  VTBL_ENTRY _ZTV8S6127C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C13[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S6127C9;
extern VTBL_ENTRY _ZTI7S6127C9[];
extern  VTBL_ENTRY _ZTV7S6127C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C9[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S6127C17;
extern VTBL_ENTRY _ZTI8S6127C17[];
extern  VTBL_ENTRY _ZTV8S6127C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C17[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S6127C15;
extern VTBL_ENTRY _ZTI8S6127C15[];
extern  VTBL_ENTRY _ZTV8S6127C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C15[];
static Base_Class bases_S6127C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C12,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S6127C16,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S6127C20,    ABISELECT(96,48), //bcp->offset
    72, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    66, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S6127C10,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    54, //bcp->index_in_construction_vtbl_array
    77, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S6127C9,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(112,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S6127C10,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S6127C12,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    69, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S6127C6,    ABISELECT(104,52), //bcp->offset
    78, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6127C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(136,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(144,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(136,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S6127C10,    ABISELECT(136,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    85, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S6127C13,    ABISELECT(136,72), //bcp->offset
    101, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    57, //bcp->index_in_construction_vtbl_array
    84, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(160,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(152,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S6127C10,    ABISELECT(152,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    87, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S6127C12,    ABISELECT(152,80), //bcp->offset
    105, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    58, //bcp->index_in_construction_vtbl_array
    86, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S6127C5,    ABISELECT(120,60), //bcp->offset
    88, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    56, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    40, //immediately_derived
  0, 1},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    40, //immediately_derived
  0, 1},
  {&cd_S6127C16,    ABISELECT(168,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    60, //bcp->index_in_construction_vtbl_array
    96, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    30, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(168,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S6127C15,    ABISELECT(168,88), //bcp->offset
    115, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    59, //bcp->index_in_construction_vtbl_array
    90, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    40, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S6127C10,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S6127C13,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S6127C9,    ABISELECT(24,12), //bcp->offset
    33, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    61, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S6127C17,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S6127C4,    ABISELECT(8,4), //bcp->offset
    17, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    55, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S6127C16,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S6127C20,    ABISELECT(40,20), //bcp->offset
    39, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    62, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S6127C21,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C9_nt,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S6127C10,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S6127C13,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    53, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S6127C9,    ABISELECT(64,32), //bcp->offset
    54, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    64, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    53, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(72,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    53, //immediately_derived
  0, 0},
  {&cd_S6127C17,    ABISELECT(48,24), //bcp->offset
    44, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    63, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C9_nt,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S6127C15,    ABISELECT(80,40), //bcp->offset
    60, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    65, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S6127C19[];
extern void _ZN8S6127C19D1Ev();
extern void _ZN8S6127C19D0Ev();
extern void ABISELECT(_ZThn8_N8S6127C19D1Ev,_ZThn4_N8S6127C19D1Ev)();
extern void ABISELECT(_ZThn8_N8S6127C19D0Ev,_ZThn4_N8S6127C19D0Ev)();
extern void ABISELECT(_ZThn40_N8S6127C19D1Ev,_ZThn20_N8S6127C19D1Ev)();
extern void ABISELECT(_ZThn40_N8S6127C19D0Ev,_ZThn20_N8S6127C19D0Ev)();
extern void ABISELECT(_ZThn48_N8S6127C19D1Ev,_ZThn24_N8S6127C19D1Ev)();
extern void ABISELECT(_ZThn48_N8S6127C19D0Ev,_ZThn24_N8S6127C19D0Ev)();
extern void ABISELECT(_ZThn80_N8S6127C19D1Ev,_ZThn40_N8S6127C19D1Ev)();
extern void ABISELECT(_ZThn80_N8S6127C19D0Ev,_ZThn40_N8S6127C19D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S6127C19D1Ev,_ZTv0_n16_N8S6127C19D1Ev)();
extern void ABISELECT(_ZThn96_N8S6127C19D1Ev,_ZThn48_N8S6127C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6127C19D0Ev,_ZTv0_n16_N8S6127C19D0Ev)();
extern void ABISELECT(_ZThn96_N8S6127C19D0Ev,_ZThn48_N8S6127C19D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6127C19D1Ev,_ZTv0_n32_N8S6127C19D1Ev)();
extern void ABISELECT(_ZThn104_N8S6127C19D1Ev,_ZThn52_N8S6127C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6127C19D0Ev,_ZTv0_n32_N8S6127C19D0Ev)();
extern void ABISELECT(_ZThn104_N8S6127C19D0Ev,_ZThn52_N8S6127C19D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S6127C19D1Ev,_ZTv0_n44_N8S6127C19D1Ev)();
extern void ABISELECT(_ZThn120_N8S6127C19D1Ev,_ZThn60_N8S6127C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S6127C19D0Ev,_ZTv0_n44_N8S6127C19D0Ev)();
extern void ABISELECT(_ZThn120_N8S6127C19D0Ev,_ZThn60_N8S6127C19D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6127C19D1Ev,_ZTv0_n32_N8S6127C19D1Ev)();
extern void ABISELECT(_ZThn152_N8S6127C19D1Ev,_ZThn80_N8S6127C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6127C19D0Ev,_ZTv0_n32_N8S6127C19D0Ev)();
extern void ABISELECT(_ZThn152_N8S6127C19D0Ev,_ZThn80_N8S6127C19D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S6127C19D1Ev,_ZTv0_n44_N8S6127C19D1Ev)();
extern void ABISELECT(_ZThn168_N8S6127C19D1Ev,_ZThn88_N8S6127C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S6127C19D0Ev,_ZTv0_n44_N8S6127C19D0Ev)();
extern void ABISELECT(_ZThn168_N8S6127C19D0Ev,_ZThn88_N8S6127C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S6127C19[] = {
  ABISELECT(96,48),
  ABISELECT(168,88),
  ABISELECT(168,88),
  0,
  ABISELECT(152,80),
  ABISELECT(136,72),
  ABISELECT(120,60),
  ABISELECT(120,60),
  0,
  ABISELECT(104,52),
  ABISELECT(120,60),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C19[0]),
  (VTBL_ENTRY)&_ZN8S6127C19D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C19D0Ev,
  ABISELECT(160,84),
  ABISELECT(160,84),
  ABISELECT(-8,-4),
  ABISELECT(128,68),
  ABISELECT(96,48),
  ABISELECT(112,56),
  ABISELECT(-8,-4),
  ABISELECT(112,56),
  ABISELECT(112,56),
  ABISELECT(144,76),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S6127C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S6127C19D1Ev,_ZThn4_N8S6127C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S6127C19D0Ev,_ZThn4_N8S6127C19D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(96,48),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S6127C19[0]),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S6127C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S6127C19D1Ev,_ZThn20_N8S6127C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S6127C19D0Ev,_ZThn20_N8S6127C19D0Ev),
  ABISELECT(-48,-24),
  ABISELECT(72,36),
  ABISELECT(72,36),
  ABISELECT(104,56),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S6127C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S6127C19D1Ev,_ZThn24_N8S6127C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S6127C19D0Ev,_ZThn24_N8S6127C19D0Ev),
  ABISELECT(-64,-32),
  ABISELECT(56,28),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S6127C19[0]),
  ABISELECT(40,20),
  ABISELECT(24,12),
  ABISELECT(56,32),
  ABISELECT(88,48),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(40,20),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S6127C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S6127C19D1Ev,_ZThn40_N8S6127C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S6127C19D0Ev,_ZThn40_N8S6127C19D0Ev),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S6127C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6127C19D1Ev,_ZTv0_n16_N8S6127C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6127C19D0Ev,_ZTv0_n16_N8S6127C19D0Ev),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S6127C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C19D1Ev,_ZTv0_n32_N8S6127C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C19D0Ev,_ZTv0_n32_N8S6127C19D0Ev),
  ABISELECT(-120,-60),
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-120,-60),
  0,
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI8S6127C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6127C19D1Ev,_ZTv0_n44_N8S6127C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6127C19D0Ev,_ZTv0_n44_N8S6127C19D0Ev),
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI8S6127C19[0]),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  (VTBL_ENTRY)&(_ZTI8S6127C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C19D1Ev,_ZTv0_n32_N8S6127C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C19D0Ev,_ZTv0_n32_N8S6127C19D0Ev),
  ABISELECT(-168,-88),
  ABISELECT(-48,-28),
  ABISELECT(-64,-36),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-168,-88),
  ABISELECT(-168,-88),
  ABISELECT(-48,-28),
  ABISELECT(-168,-88),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S6127C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6127C19D1Ev,_ZTv0_n44_N8S6127C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6127C19D0Ev,_ZTv0_n44_N8S6127C19D0Ev),
};
extern VTBL_ENTRY _ZTV8S6127C19[];
extern void _ZN8S6127C21D1Ev();
extern void _ZN8S6127C21D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C21__8S6127C19[] = {
  ABISELECT(168,88),
  ABISELECT(168,88),
  0,
  ABISELECT(152,80),
  ABISELECT(136,72),
  ABISELECT(120,60),
  ABISELECT(120,60),
  0,
  ABISELECT(104,52),
  ABISELECT(120,60),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C21[0]),
  (VTBL_ENTRY)&_ZN8S6127C21D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C21D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6127C168S6127C21__A1__8S6127C19[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C16[0]),
};
extern void _ZN7S6127C4D1Ev();
extern void _ZN7S6127C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6127C48S6127C21__8S6127C19[] = {
  ABISELECT(160,84),
  ABISELECT(160,84),
  ABISELECT(-8,-4),
  ABISELECT(128,68),
  ABISELECT(96,48),
  ABISELECT(112,56),
  ABISELECT(-8,-4),
  ABISELECT(112,56),
  ABISELECT(112,56),
  ABISELECT(144,76),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
  (VTBL_ENTRY)&_ZN7S6127C4D1Ev,
  (VTBL_ENTRY)&_ZN7S6127C4D0Ev,
};
extern void _ZN8S6127C17D1Ev();
extern void _ZN8S6127C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C177S6127C48S6127C21__8S6127C19[] = {
  ABISELECT(-8,-4),
  ABISELECT(112,56),
  ABISELECT(112,56),
  ABISELECT(144,76),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
  (VTBL_ENTRY)&_ZN8S6127C17D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6127C138S6127C177S6127C48S6127C21__A1__8S6127C19[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C108S6127C138S6127C177S6127C48S6127C21__A4__8S6127C19[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C98S6127C177S6127C48S6127C21__A1__8S6127C19[] = {
  ABISELECT(-24,-12),
  ABISELECT(96,48),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C10__7S6127C98S6127C177S6127C48S6127C21__A1__8S6127C19[] = {
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S6127C17D1Ev,_ZTv0_n32_N8S6127C17D1Ev)();
extern void ABISELECT(_ZThn144_N8S6127C17D1Ev,_ZThn76_N8S6127C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6127C17D0Ev,_ZTv0_n32_N8S6127C17D0Ev)();
extern void ABISELECT(_ZThn144_N8S6127C17D0Ev,_ZThn76_N8S6127C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6127C12__8S6127C177S6127C48S6127C21__8S6127C19[] = {
  ABISELECT(-144,-76),
  ABISELECT(-152,-80),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(-144,-76),
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C17D1Ev,_ZTv0_n32_N8S6127C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C17D0Ev,_ZTv0_n32_N8S6127C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C177S6127C48S6127C21__8S6127C19[] = {
  ABISELECT(-120,-60),
  0,
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__A__8S6127C177S6127C48S6127C21__8S6127C19[] = {
  ABISELECT(-24,-12),
  ABISELECT(96,48),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S6127C4D1Ev,_ZTv0_n44_N7S6127C4D1Ev)();
extern void ABISELECT(_ZThn112_N7S6127C4D1Ev,_ZThn56_N7S6127C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S6127C4D0Ev,_ZTv0_n44_N7S6127C4D0Ev)();
extern void ABISELECT(_ZThn112_N7S6127C4D0Ev,_ZThn56_N7S6127C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6127C5__7S6127C48S6127C21__8S6127C19[] = {
  ABISELECT(-112,-56),
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-120,-60),
  0,
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6127C4D1Ev,_ZTv0_n44_N7S6127C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6127C4D0Ev,_ZTv0_n44_N7S6127C4D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S6127C4D1Ev,_ZTv0_n32_N7S6127C4D1Ev)();
extern void ABISELECT(_ZThn96_N7S6127C4D1Ev,_ZThn48_N7S6127C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C4D0Ev,_ZTv0_n32_N7S6127C4D0Ev)();
extern void ABISELECT(_ZThn96_N7S6127C4D0Ev,_ZThn48_N7S6127C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6127C6__7S6127C48S6127C21__8S6127C19[] = {
  ABISELECT(-96,-48),
  ABISELECT(-104,-52),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C4D1Ev,_ZTv0_n32_N7S6127C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C4D0Ev,_ZTv0_n32_N7S6127C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S6127C13__7S6127C48S6127C21__8S6127C19[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S6127C4D1Ev,_ZTv0_n32_N7S6127C4D1Ev)();
extern void ABISELECT(_ZThn144_N7S6127C4D1Ev,_ZThn76_N7S6127C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C4D0Ev,_ZTv0_n32_N7S6127C4D0Ev)();
extern void ABISELECT(_ZThn144_N7S6127C4D0Ev,_ZThn76_N7S6127C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6127C12__A1__7S6127C48S6127C21__8S6127C19[] = {
  ABISELECT(-144,-76),
  ABISELECT(-152,-80),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(-144,-76),
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C4D1Ev,_ZTv0_n32_N7S6127C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C4D0Ev,_ZTv0_n32_N7S6127C4D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S6127C4D1Ev,_ZTv0_n44_N7S6127C4D1Ev)();
extern void ABISELECT(_ZThn160_N7S6127C4D1Ev,_ZThn84_N7S6127C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S6127C4D0Ev,_ZTv0_n44_N7S6127C4D0Ev)();
extern void ABISELECT(_ZThn160_N7S6127C4D0Ev,_ZThn84_N7S6127C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6127C15__7S6127C48S6127C21__8S6127C19[] = {
  ABISELECT(-160,-84),
  ABISELECT(-48,-28),
  ABISELECT(-64,-36),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-168,-88),
  ABISELECT(-168,-88),
  ABISELECT(-48,-28),
  ABISELECT(-168,-88),
  ABISELECT(-160,-84),
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6127C4D1Ev,_ZTv0_n44_N7S6127C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6127C4D0Ev,_ZTv0_n44_N7S6127C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S6127C98S6127C17__A1__7S6127C48S6127C21__8S6127C19[] = {
  ABISELECT(-24,-12),
  ABISELECT(96,48),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
};
extern void _ZN8S6127C20D1Ev();
extern void _ZN8S6127C20D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C208S6127C21__A1__8S6127C19[] = {
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C20[0]),
  (VTBL_ENTRY)&_ZN8S6127C20D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C20D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6127C168S6127C208S6127C21__A3__8S6127C19[] = {
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C16[0]),
};
extern void ABISELECT(_ZThn8_N8S6127C21D1Ev,_ZThn4_N8S6127C21D1Ev)();
extern void ABISELECT(_ZThn8_N8S6127C21D0Ev,_ZThn4_N8S6127C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S6127C4__8S6127C21__8S6127C19[] = {
  ABISELECT(160,84),
  ABISELECT(160,84),
  ABISELECT(-8,-4),
  ABISELECT(128,68),
  ABISELECT(96,48),
  ABISELECT(112,56),
  ABISELECT(-8,-4),
  ABISELECT(112,56),
  ABISELECT(112,56),
  ABISELECT(144,76),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S6127C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S6127C21D1Ev,_ZThn4_N8S6127C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S6127C21D0Ev,_ZThn4_N8S6127C21D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S6127C21D1Ev,_ZTv0_n44_N8S6127C21D1Ev)();
extern void ABISELECT(_ZThn120_N8S6127C21D1Ev,_ZThn60_N8S6127C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S6127C21D0Ev,_ZTv0_n44_N8S6127C21D0Ev)();
extern void ABISELECT(_ZThn120_N8S6127C21D0Ev,_ZThn60_N8S6127C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6127C5__8S6127C21__8S6127C19[] = {
  ABISELECT(-120,-60),
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-120,-60),
  0,
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI8S6127C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6127C21D1Ev,_ZTv0_n44_N8S6127C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6127C21D0Ev,_ZTv0_n44_N8S6127C21D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S6127C21D1Ev,_ZTv0_n32_N8S6127C21D1Ev)();
extern void ABISELECT(_ZThn104_N8S6127C21D1Ev,_ZThn52_N8S6127C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6127C21D0Ev,_ZTv0_n32_N8S6127C21D0Ev)();
extern void ABISELECT(_ZThn104_N8S6127C21D0Ev,_ZThn52_N8S6127C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6127C6__8S6127C21__8S6127C19[] = {
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S6127C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C21D1Ev,_ZTv0_n32_N8S6127C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C21D0Ev,_ZTv0_n32_N8S6127C21D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S6127C13__8S6127C21__8S6127C19[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI8S6127C21[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S6127C21D1Ev,_ZTv0_n32_N8S6127C21D1Ev)();
extern void ABISELECT(_ZThn152_N8S6127C21D1Ev,_ZThn80_N8S6127C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6127C21D0Ev,_ZTv0_n32_N8S6127C21D0Ev)();
extern void ABISELECT(_ZThn152_N8S6127C21D0Ev,_ZThn80_N8S6127C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6127C12__A1__8S6127C21__8S6127C19[] = {
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  (VTBL_ENTRY)&(_ZTI8S6127C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C21D1Ev,_ZTv0_n32_N8S6127C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C21D0Ev,_ZTv0_n32_N8S6127C21D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S6127C21D1Ev,_ZTv0_n44_N8S6127C21D1Ev)();
extern void ABISELECT(_ZThn168_N8S6127C21D1Ev,_ZThn88_N8S6127C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S6127C21D0Ev,_ZTv0_n44_N8S6127C21D0Ev)();
extern void ABISELECT(_ZThn168_N8S6127C21D0Ev,_ZThn88_N8S6127C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6127C15__8S6127C21__8S6127C19[] = {
  ABISELECT(-168,-88),
  ABISELECT(-48,-28),
  ABISELECT(-64,-36),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-168,-88),
  ABISELECT(-168,-88),
  ABISELECT(-48,-28),
  ABISELECT(-168,-88),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S6127C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6127C21D1Ev,_ZTv0_n44_N8S6127C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6127C21D0Ev,_ZTv0_n44_N8S6127C21D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S6127C98S6127C177S6127C4__A1__8S6127C21__8S6127C19[] = {
  ABISELECT(-24,-12),
  ABISELECT(96,48),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S6127C21[0]),
};
extern void ABISELECT(_ZThn40_N8S6127C21D1Ev,_ZThn20_N8S6127C21D1Ev)();
extern void ABISELECT(_ZThn40_N8S6127C21D0Ev,_ZThn20_N8S6127C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6127C20__8S6127C21__8S6127C19[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S6127C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S6127C21D1Ev,_ZThn20_N8S6127C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S6127C21D0Ev,_ZThn20_N8S6127C21D0Ev),
};
extern void _ZN8S6127C17D1Ev();
extern void _ZN8S6127C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C17__A1__8S6127C19[] = {
  ABISELECT(-48,-24),
  ABISELECT(72,36),
  ABISELECT(72,36),
  ABISELECT(104,56),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
  (VTBL_ENTRY)&_ZN8S6127C17D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6127C138S6127C17__A2__8S6127C19[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C108S6127C138S6127C17__A5__8S6127C19[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C98S6127C17__A2__8S6127C19[] = {
  ABISELECT(-64,-32),
  ABISELECT(56,28),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C10__7S6127C98S6127C17__A2__8S6127C19[] = {
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S6127C17D1Ev,_ZTv0_n32_N8S6127C17D1Ev)();
extern void ABISELECT(_ZThn104_N8S6127C17D1Ev,_ZThn56_N8S6127C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6127C17D0Ev,_ZTv0_n32_N8S6127C17D0Ev)();
extern void ABISELECT(_ZThn104_N8S6127C17D0Ev,_ZThn56_N8S6127C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6127C12__8S6127C17__A1__8S6127C19[] = {
  ABISELECT(-104,-56),
  ABISELECT(-152,-80),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C17D1Ev,_ZTv0_n32_N8S6127C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C17D0Ev,_ZTv0_n32_N8S6127C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C17__A1__8S6127C19[] = {
  ABISELECT(-120,-60),
  0,
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__A__8S6127C17__A1__8S6127C19[] = {
  ABISELECT(-64,-32),
  ABISELECT(56,28),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
};
extern void _ZN8S6127C15D1Ev();
extern void _ZN8S6127C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C15__A__8S6127C19[] = {
  ABISELECT(40,20),
  ABISELECT(24,12),
  ABISELECT(56,32),
  ABISELECT(88,48),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(40,20),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C15[0]),
  (VTBL_ENTRY)&_ZN8S6127C15D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C15__A__8S6127C19[] = {
  ABISELECT(-120,-60),
  0,
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S6127C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C16__8S6127C15__A__8S6127C19[] = {
  ABISELECT(-168,-88),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S6127C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C13__8S6127C15__A__8S6127C19[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S6127C15[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S6127C15D1Ev,_ZTv0_n32_N8S6127C15D1Ev)();
extern void ABISELECT(_ZThn24_N8S6127C15D1Ev,_ZThn12_N8S6127C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6127C15D0Ev,_ZTv0_n32_N8S6127C15D0Ev)();
extern void ABISELECT(_ZThn24_N8S6127C15D0Ev,_ZThn12_N8S6127C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6127C6__8S6127C15__A__8S6127C19[] = {
  ABISELECT(-24,-12),
  ABISELECT(-104,-52),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S6127C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C15D1Ev,_ZTv0_n32_N8S6127C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C15D0Ev,_ZTv0_n32_N8S6127C15D0Ev),
};
extern void _ZN8S6127C20D1Ev();
extern void _ZN8S6127C20D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C20__8S6127C19[] = {
  ABISELECT(-96,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C20[0]),
  (VTBL_ENTRY)&_ZN8S6127C20D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C20D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6127C168S6127C20__8S6127C19[] = {
  ABISELECT(-96,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C16[0]),
};
extern void _ZN7S6127C6D1Ev();
extern void _ZN7S6127C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6127C6__8S6127C19[] = {
  ABISELECT(-104,-52),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C6[0]),
  (VTBL_ENTRY)&_ZN7S6127C6D1Ev,
  (VTBL_ENTRY)&_ZN7S6127C6D0Ev,
};
extern void _ZN8S6127C12D1Ev();
extern void _ZN8S6127C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C127S6127C6__8S6127C19[] = {
  ABISELECT(-104,-52),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C12[0]),
  (VTBL_ENTRY)&_ZN8S6127C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6127C108S6127C127S6127C6__A1__8S6127C19[] = {
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C127S6127C6__8S6127C19[] = {
  ABISELECT(-120,-60),
  0,
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S6127C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__7S6127C6__8S6127C19[] = {
  ABISELECT(-120,-60),
  0,
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S6127C6[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C19[] = {
  ABISELECT(-120,-60),
  0,
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C10__8S6127C19[] = {
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
extern void _ZN7S6127C5D1Ev();
extern void _ZN7S6127C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6127C5__8S6127C19[] = {
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-120,-60),
  0,
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C5[0]),
  (VTBL_ENTRY)&_ZN7S6127C5D1Ev,
  (VTBL_ENTRY)&_ZN7S6127C5D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S6127C6__7S6127C5__8S6127C19[] = {
  ABISELECT(16,8),
  ABISELECT(-104,-52),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S6127C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S6127C13__7S6127C5__8S6127C19[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S6127C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev)();
extern void ABISELECT(_ZThn32_N7S6127C5D1Ev,_ZThn20_N7S6127C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev)();
extern void ABISELECT(_ZThn32_N7S6127C5D0Ev,_ZThn20_N7S6127C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6127C12__A1__7S6127C5__8S6127C19[] = {
  ABISELECT(-32,-20),
  ABISELECT(-152,-80),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S6127C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S6127C13__8S6127C19[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C108S6127C13__A2__8S6127C19[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
extern void _ZN8S6127C12D1Ev();
extern void _ZN8S6127C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C12__A1__8S6127C19[] = {
  ABISELECT(-152,-80),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C12[0]),
  (VTBL_ENTRY)&_ZN8S6127C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6127C108S6127C12__A3__8S6127C19[] = {
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C12__A1__8S6127C19[] = {
  ABISELECT(-120,-60),
  0,
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI8S6127C12[0]),
};
extern void _ZN8S6127C15D1Ev();
extern void _ZN8S6127C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C15__8S6127C19[] = {
  ABISELECT(-48,-28),
  ABISELECT(-64,-36),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-168,-88),
  ABISELECT(-168,-88),
  ABISELECT(-48,-28),
  ABISELECT(-168,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C15[0]),
  (VTBL_ENTRY)&_ZN8S6127C15D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C15__8S6127C19[] = {
  ABISELECT(-120,-60),
  0,
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S6127C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C13__8S6127C15__8S6127C19[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S6127C15[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S6127C15D1Ev,_ZTv0_n32_N8S6127C15D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S6127C15D0Ev,_ZTv0_n32_N8S6127C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S6127C6__8S6127C15__8S6127C19[] = {
  ABISELECT(64,36),
  ABISELECT(-104,-52),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S6127C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C15D1Ev,_ZTv0_n32_N8S6127C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C15D0Ev,_ZTv0_n32_N8S6127C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S6127C16__A2__8S6127C19[] = {
  ABISELECT(-168,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C16[0]),
};
static  VTT_ENTRY vtt_S6127C19[] = {
  {&(_ZTV8S6127C19[15]),  15,128},
  {&(_tg__ZTV8S6127C21__8S6127C19[14]),  14,16},
  {&(_tg__ZTV8S6127C168S6127C21__A1__8S6127C19[3]),  3,3},
  {&(_tg__ZTV7S6127C48S6127C21__8S6127C19[14]),  14,16},
  {&(_tg__ZTV8S6127C177S6127C48S6127C21__8S6127C19[8]),  8,10},
  {&(_tg__ZTV8S6127C138S6127C177S6127C48S6127C21__A1__8S6127C19[4]),  4,4},
  {&(_tg__ZTV8S6127C108S6127C138S6127C177S6127C48S6127C21__A4__8S6127C19[4]),  4,4},
  {&(_tg__ZTV7S6127C98S6127C177S6127C48S6127C21__A1__8S6127C19[6]),  6,6},
  {&(_tg__ZTV8S6127C10__7S6127C98S6127C177S6127C48S6127C21__A1__8S6127C19[4]),  4,4},
  {&(_tg__ZTV8S6127C12__8S6127C177S6127C48S6127C21__8S6127C19[8]),  8,10},
  {&(_tg__ZTV7S6127C9__8S6127C177S6127C48S6127C21__8S6127C19[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C177S6127C48S6127C21__8S6127C19[6]),  6,6},
  {&(_tg__ZTV7S6127C9__A__8S6127C177S6127C48S6127C21__8S6127C19[6]),  6,6},
  {&(_tg__ZTV7S6127C5__7S6127C48S6127C21__8S6127C19[11]),  11,13},
  {&(_tg__ZTV7S6127C6__7S6127C48S6127C21__8S6127C19[8]),  8,10},
  {&(_tg__ZTV7S6127C5__7S6127C48S6127C21__8S6127C19[11]),  11,13},
  {&(_tg__ZTV7S6127C5__7S6127C48S6127C21__8S6127C19[11]),  11,13},
  {&(_tg__ZTV8S6127C13__7S6127C48S6127C21__8S6127C19[4]),  4,4},
  {&(_tg__ZTV8S6127C12__A1__7S6127C48S6127C21__8S6127C19[8]),  8,10},
  {&(_tg__ZTV8S6127C15__7S6127C48S6127C21__8S6127C19[11]),  11,13},
  {&(_tg__ZTV8S6127C15__7S6127C48S6127C21__8S6127C19[11]),  11,13},
  {&(_tg__ZTV7S6127C98S6127C17__A1__7S6127C48S6127C21__8S6127C19[6]),  6,6},
  {&(_tg__ZTV8S6127C208S6127C21__A1__8S6127C19[3]),  3,5},
  {&(_tg__ZTV8S6127C168S6127C208S6127C21__A3__8S6127C19[3]),  3,3},
  {&(_tg__ZTV7S6127C4__8S6127C21__8S6127C19[14]),  14,16},
  {&(_tg__ZTV7S6127C5__8S6127C21__8S6127C19[11]),  11,13},
  {&(_tg__ZTV7S6127C6__8S6127C21__8S6127C19[8]),  8,10},
  {&(_tg__ZTV7S6127C5__8S6127C21__8S6127C19[11]),  11,13},
  {&(_tg__ZTV7S6127C5__8S6127C21__8S6127C19[11]),  11,13},
  {&(_tg__ZTV8S6127C13__8S6127C21__8S6127C19[4]),  4,4},
  {&(_tg__ZTV8S6127C12__A1__8S6127C21__8S6127C19[8]),  8,10},
  {&(_tg__ZTV8S6127C15__8S6127C21__8S6127C19[11]),  11,13},
  {&(_tg__ZTV8S6127C15__8S6127C21__8S6127C19[11]),  11,13},
  {&(_tg__ZTV7S6127C98S6127C177S6127C4__A1__8S6127C21__8S6127C19[6]),  6,6},
  {&(_tg__ZTV8S6127C20__8S6127C21__8S6127C19[3]),  3,5},
  {&(_tg__ZTV8S6127C17__A1__8S6127C19[8]),  8,10},
  {&(_tg__ZTV8S6127C138S6127C17__A2__8S6127C19[4]),  4,4},
  {&(_tg__ZTV8S6127C108S6127C138S6127C17__A5__8S6127C19[4]),  4,4},
  {&(_tg__ZTV7S6127C98S6127C17__A2__8S6127C19[6]),  6,6},
  {&(_tg__ZTV8S6127C10__7S6127C98S6127C17__A2__8S6127C19[4]),  4,4},
  {&(_tg__ZTV8S6127C12__8S6127C17__A1__8S6127C19[8]),  8,10},
  {&(_tg__ZTV7S6127C9__8S6127C17__A1__8S6127C19[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C17__A1__8S6127C19[6]),  6,6},
  {&(_tg__ZTV7S6127C9__A__8S6127C17__A1__8S6127C19[6]),  6,6},
  {&(_tg__ZTV8S6127C15__A__8S6127C19[10]),  10,12},
  {&(_tg__ZTV7S6127C9__8S6127C15__A__8S6127C19[6]),  6,6},
  {&(_tg__ZTV8S6127C16__8S6127C15__A__8S6127C19[3]),  3,3},
  {&(_tg__ZTV8S6127C13__8S6127C15__A__8S6127C19[4]),  4,4},
  {&(_tg__ZTV7S6127C6__8S6127C15__A__8S6127C19[8]),  8,10},
  {&(_tg__ZTV7S6127C9__8S6127C15__A__8S6127C19[6]),  6,6},
  {&(_ZTV8S6127C19[76]),  76,128},
  {&(_ZTV8S6127C19[86]),  86,128},
  {&(_ZTV8S6127C19[99]),  99,128},
  {&(_ZTV8S6127C19[99]),  99,128},
  {&(_ZTV8S6127C19[31]),  31,128},
  {&(_ZTV8S6127C19[99]),  99,128},
  {&(_ZTV8S6127C19[105]),  105,128},
  {&(_ZTV8S6127C19[113]),  113,128},
  {&(_ZTV8S6127C19[126]),  126,128},
  {&(_ZTV8S6127C19[126]),  126,128},
  {&(_ZTV8S6127C19[39]),  39,128},
  {&(_ZTV8S6127C19[42]),  42,128},
  {&(_ZTV8S6127C19[52]),  52,128},
  {&(_ZTV8S6127C19[60]),  60,128},
  {&(_ZTV8S6127C19[70]),  70,128},
  {&(_tg__ZTV8S6127C20__8S6127C19[3]),  3,5},
  {&(_tg__ZTV8S6127C168S6127C20__8S6127C19[3]),  3,3},
  {&(_tg__ZTV7S6127C6__8S6127C19[7]),  7,9},
  {&(_tg__ZTV8S6127C127S6127C6__8S6127C19[7]),  7,9},
  {&(_tg__ZTV8S6127C108S6127C127S6127C6__A1__8S6127C19[4]),  4,4},
  {&(_tg__ZTV7S6127C9__8S6127C127S6127C6__8S6127C19[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C127S6127C6__8S6127C19[6]),  6,6},
  {&(_tg__ZTV7S6127C9__7S6127C6__8S6127C19[6]),  6,6},
  {&(_tg__ZTV7S6127C9__7S6127C6__8S6127C19[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C19[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C19[6]),  6,6},
  {&(_tg__ZTV8S6127C10__8S6127C19[4]),  4,4},
  {&(_tg__ZTV7S6127C5__8S6127C19[10]),  10,12},
  {&(_tg__ZTV7S6127C6__7S6127C5__8S6127C19[8]),  8,10},
  {&(_tg__ZTV7S6127C5__8S6127C19[10]),  10,12},
  {&(_tg__ZTV7S6127C5__8S6127C19[10]),  10,12},
  {&(_tg__ZTV8S6127C13__7S6127C5__8S6127C19[4]),  4,4},
  {&(_tg__ZTV8S6127C12__A1__7S6127C5__8S6127C19[8]),  8,10},
  {&(_tg__ZTV8S6127C13__8S6127C19[4]),  4,4},
  {&(_tg__ZTV8S6127C108S6127C13__A2__8S6127C19[4]),  4,4},
  {&(_tg__ZTV8S6127C12__A1__8S6127C19[7]),  7,9},
  {&(_tg__ZTV8S6127C108S6127C12__A3__8S6127C19[4]),  4,4},
  {&(_tg__ZTV7S6127C9__8S6127C12__A1__8S6127C19[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C12__A1__8S6127C19[6]),  6,6},
  {&(_tg__ZTV8S6127C15__8S6127C19[10]),  10,12},
  {&(_tg__ZTV7S6127C9__8S6127C15__8S6127C19[6]),  6,6},
  {&(_tg__ZTV8S6127C15__8S6127C19[10]),  10,12},
  {&(_tg__ZTV8S6127C13__8S6127C15__8S6127C19[4]),  4,4},
  {&(_tg__ZTV7S6127C6__8S6127C15__8S6127C19[8]),  8,10},
  {&(_tg__ZTV7S6127C9__8S6127C15__8S6127C19[6]),  6,6},
  {&(_tg__ZTV8S6127C16__A2__8S6127C19[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S6127C19[];
extern  VTBL_ENTRY _ZTV8S6127C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C19[];
static VTBL_ENTRY alt_thunk_names98[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S6127C5D0Ev,_ZThn20_N7S6127C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S6127C5D1Ev,_ZThn20_N7S6127C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6127C15D0Ev,_ZTv0_n32_N8S6127C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S6127C15D0Ev,_ZThn12_N8S6127C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6127C15D1Ev,_ZTv0_n32_N8S6127C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S6127C15D1Ev,_ZThn12_N8S6127C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6127C21D0Ev,_ZTv0_n32_N8S6127C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S6127C21D0Ev,_ZThn80_N8S6127C21D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S6127C21D0Ev,_ZThn52_N8S6127C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6127C21D1Ev,_ZTv0_n32_N8S6127C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S6127C21D1Ev,_ZThn80_N8S6127C21D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S6127C21D1Ev,_ZThn52_N8S6127C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S6127C21D0Ev,_ZTv0_n44_N8S6127C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S6127C21D0Ev,_ZThn88_N8S6127C21D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S6127C21D0Ev,_ZThn60_N8S6127C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S6127C21D1Ev,_ZTv0_n44_N8S6127C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S6127C21D1Ev,_ZThn88_N8S6127C21D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S6127C21D1Ev,_ZThn60_N8S6127C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S6127C4D0Ev,_ZTv0_n32_N7S6127C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S6127C4D0Ev,_ZThn76_N7S6127C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S6127C4D0Ev,_ZThn48_N7S6127C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S6127C4D1Ev,_ZTv0_n32_N7S6127C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S6127C4D1Ev,_ZThn76_N7S6127C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S6127C4D1Ev,_ZThn48_N7S6127C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S6127C4D0Ev,_ZTv0_n44_N7S6127C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S6127C4D0Ev,_ZThn84_N7S6127C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S6127C4D0Ev,_ZThn56_N7S6127C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S6127C4D1Ev,_ZTv0_n44_N7S6127C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S6127C4D1Ev,_ZThn84_N7S6127C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S6127C4D1Ev,_ZThn56_N7S6127C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6127C17D0Ev,_ZTv0_n32_N8S6127C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S6127C17D0Ev,_ZThn56_N8S6127C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S6127C17D0Ev,_ZThn76_N8S6127C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6127C17D1Ev,_ZTv0_n32_N8S6127C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S6127C17D1Ev,_ZThn56_N8S6127C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S6127C17D1Ev,_ZThn76_N8S6127C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S6127C19D0Ev,_ZTv0_n44_N8S6127C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S6127C19D0Ev,_ZThn88_N8S6127C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S6127C19D0Ev,_ZThn60_N8S6127C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S6127C19D1Ev,_ZTv0_n44_N8S6127C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S6127C19D1Ev,_ZThn88_N8S6127C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S6127C19D1Ev,_ZThn60_N8S6127C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6127C19D0Ev,_ZTv0_n32_N8S6127C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S6127C19D0Ev,_ZThn80_N8S6127C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S6127C19D0Ev,_ZThn52_N8S6127C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6127C19D1Ev,_ZTv0_n32_N8S6127C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S6127C19D1Ev,_ZThn80_N8S6127C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S6127C19D1Ev,_ZThn52_N8S6127C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6127C19D0Ev,_ZTv0_n16_N8S6127C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S6127C19D0Ev,_ZThn48_N8S6127C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6127C19D1Ev,_ZTv0_n16_N8S6127C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S6127C19D1Ev,_ZThn48_N8S6127C19D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6127C19 = {  "S6127C19", // class name
  bases_S6127C19, 56,
  &(vtc_S6127C19[0]), // expected_vtbl_contents
  &(vtt_S6127C19[0]), // expected_vtt_contents
  ABISELECT(184,96), // object size
  NSPAIRA(_ZTI8S6127C19),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S6127C19),128, //virtual function table var
  15, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6127C19),96, //virtual table table var
  28, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names98,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6127C1  : S7856C24 , S6127C3 , virtual S6127C19 {
  long double s6127c1f0;
  virtual  ~S6127C1(); // _ZN7S6127C1D2Ev
  S6127C1(); // tgen
};
//SIG(1 S6127C1) C1{ BC2{ m} BC3{ VBC4{ VBC5{ VBC6{ VBC7{ m} VBC8{ m} VBC9{ BC7 VBC10{ VBC7 BC8 VBC11{ m}} VBC8} BC11 BC12{ BC8 VBC7 VBC11 BC10 VBC9 vd} vd} VBC13{ BC11 BC8 BC10 Fi} VBC12 vd Fi[2]} VBC14{ m} VBC15{ VBC10 VBC16{ VBC8} VBC13 BC11 VBC6 vd Fi} BC17{ VBC12 BC13 BC9 BC11 vd} vd} BC7 BC9 BC18{ BC14 VBC7 BC5 VBC17 vd v1} vd} VBC19{ VBC20{ BC8 BC16 vd} VBC6 BC21{ BC16 VBC11 BC4 BC20 vd} BC17 BC15 vd} vd FD}


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

static void Test_S6127C1()
{
  extern Class_Descriptor cd_S6127C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(20,40)];
    init_test(&cd_S6127C1, buf);
    S6127C1 *dp, &lv = *(dp=new (buf) S6127C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(304,156), "sizeof(S6127C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6127C1)");
    check_base_class_offset(lv, (S7856C24*), 0, "S6127C1");
    /*is_ambiguous_... S6127C6::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C6*), ABISELECT(105,61), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*), ABISELECT(105,61), "S6127C1");
    /*is_ambiguous_... S6127C12::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C12*)(S6127C6*), ABISELECT(105,61), "S6127C1");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*)(S6127C12*)(S6127C6*), ABISELECT(105,61), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*)(S6127C13*), ABISELECT(105,61), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C12*), ABISELECT(105,61), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*)(S6127C12*), ABISELECT(105,61), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C4 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*)(S6127C13*)(S6127C17*)(S6127C4*), ABISELECT(105,61), "S6127C1");
    /*is_ambiguous_... S6127C18::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C18*)(S6127C3*), ABISELECT(105,61), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C17 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*)(S6127C13*)(S6127C17*), ABISELECT(105,61), "S6127C1");
    check_base_class_offset(lv, (S7856C15*)(S6127C10*)(S6127C13*)(S6127C17*)(S6127C4*)(S6127C21*)(S6127C19*), ABISELECT(105,61), "S6127C1");
    /*is_ambiguous_... S6127C19::S6127C17 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*)(S6127C13*)(S6127C17*)(S6127C19*), ABISELECT(105,61), "S6127C1");
    /*is_ambiguous_... S6127C6::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C6*), 0, "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C9 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C9*), 0, "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C16 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C16*), 0, "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C4 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C9*)(S6127C17*)(S6127C4*), 0, "S6127C1");
    /*is_ambiguous_... S6127C3::S6127C9 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C9*)(S6127C3*), 0, "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C17 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C9*)(S6127C17*), 0, "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C20 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C16*)(S6127C20*), 0, "S6127C1");
    /*is_ambiguous_... S6127C21::S6127C16 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C16*)(S6127C21*)(S6127C19*), 0, "S6127C1");
    /*is_ambiguous_... S6127C17::S6127C9 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C9*)(S6127C17*)(S6127C4*)(S6127C21*)(S6127C19*), 0, "S6127C1");
    check_base_class_offset(lv, (S7856C12*)(S6127C16*)(S6127C20*)(S6127C21*)(S6127C19*), 0, "S6127C1");
    /*is_ambiguous_... S6127C19::S6127C17 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C9*)(S6127C17*)(S6127C19*), 0, "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C9*), ABISELECT(80,44), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*), ABISELECT(80,44), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*), 0, "S6127C1");
    check_base_class_offset(lv, (S7856C9_nt*)(S6127C12*)(S6127C6*), 0, "S6127C1");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*)(S6127C12*)(S6127C6*), 0, "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*)(S6127C13*), 0, "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C12*), 0, "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*)(S6127C12*), 0, "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C4 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*)(S6127C13*)(S6127C17*)(S6127C4*), 0, "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C17 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*)(S6127C13*)(S6127C17*), 0, "S6127C1");
    /*is_ambiguous_... S6127C21::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C21*)(S6127C19*), 0, "S6127C1");
    check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*)(S6127C13*)(S6127C17*)(S6127C4*)(S6127C21*)(S6127C19*), 0, "S6127C1");
    /*is_ambiguous_... S6127C19::S6127C17 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*)(S6127C13*)(S6127C17*)(S6127C19*), 0, "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C9 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C9*), ABISELECT(80,44), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C15 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C15*), ABISELECT(80,44), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C4 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C9*)(S6127C17*)(S6127C4*), ABISELECT(80,44), "S6127C1");
    /*is_ambiguous_... S6127C3::S6127C9 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C9*)(S6127C3*), ABISELECT(80,44), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C17 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C9*)(S6127C17*), ABISELECT(80,44), "S6127C1");
    /*is_ambiguous_... S6127C17::S6127C9 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C9*)(S6127C17*)(S6127C4*)(S6127C21*)(S6127C19*), ABISELECT(80,44), "S6127C1");
    /*is_ambiguous_... S6127C19::S6127C17 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C9*)(S6127C17*)(S6127C19*), ABISELECT(80,44), "S6127C1");
    /*is_ambiguous_... S6127C19::S6127C15 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C15*)(S6127C19*), ABISELECT(80,44), "S6127C1");
    check_base_class_offset(lv, (S6127C9*)(S6127C6*), ABISELECT(80,44), "S6127C1");
    check_base_class_offset(lv, (S6127C9*)(S6127C12*)(S6127C6*), ABISELECT(80,44), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C12 */ AMB_check_base_class_offset(lv, (S6127C9*)(S6127C12*), ABISELECT(80,44), "S6127C1");
    /*is_ambiguous_... S6127C6::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C6*), ABISELECT(96,56), "S6127C1");
    /*is_ambiguous_... S6127C12::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C12*)(S6127C6*), ABISELECT(104,60), "S6127C1");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*)(S6127C12*)(S6127C6*), ABISELECT(96,56), "S6127C1");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C12*)(S6127C6*), ABISELECT(96,56), "S6127C1");
    check_base_class_offset(lv, (S6127C12*)(S6127C6*), ABISELECT(96,56), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C5 */ AMB_check_base_class_offset(lv, (S6127C6*)(S6127C5*), ABISELECT(96,56), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C15 */ AMB_check_base_class_offset(lv, (S6127C6*)(S6127C15*), ABISELECT(96,56), "S6127C1");
    check_base_class_offset(lv, (S6127C6*)(S6127C5*)(S6127C18*)(S6127C3*), ABISELECT(96,56), "S6127C1");
    check_base_class_offset(lv, (S6127C6*)(S6127C19*), ABISELECT(96,56), "S6127C1");
    /*is_ambiguous_... S6127C19::S6127C15 */ AMB_check_base_class_offset(lv, (S6127C6*)(S6127C15*)(S6127C19*), ABISELECT(96,56), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C13*), ABISELECT(112,64), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C13*), ABISELECT(120,68), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*)(S6127C13*), ABISELECT(112,64), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C13 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C13*), ABISELECT(112,64), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C5 */ AMB_check_base_class_offset(lv, (S6127C13*)(S6127C5*), ABISELECT(112,64), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C15 */ AMB_check_base_class_offset(lv, (S6127C13*)(S6127C15*), ABISELECT(112,64), "S6127C1");
    check_base_class_offset(lv, (S6127C13*)(S6127C5*)(S6127C18*)(S6127C3*), ABISELECT(112,64), "S6127C1");
    /*is_ambiguous_... S6127C19::S6127C15 */ AMB_check_base_class_offset(lv, (S6127C13*)(S6127C15*)(S6127C19*), ABISELECT(112,64), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C12*), ABISELECT(136,76), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*)(S6127C12*), ABISELECT(128,72), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C12 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C12*), ABISELECT(128,72), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C5 */ AMB_check_base_class_offset(lv, (S6127C12*)(S6127C5*), ABISELECT(128,72), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C4 */ AMB_check_base_class_offset(lv, (S6127C12*)(S6127C17*)(S6127C4*), ABISELECT(128,72), "S6127C1");
    /*is_ambiguous_... S6127C5::S6127C12 */ AMB_check_base_class_offset(lv, (S6127C12*)(S6127C5*)(S6127C18*)(S6127C3*), ABISELECT(128,72), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C17 */ AMB_check_base_class_offset(lv, (S6127C12*)(S6127C17*), ABISELECT(128,72), "S6127C1");
    check_base_class_offset(lv, (S6127C12*)(S6127C17*)(S6127C4*)(S6127C21*)(S6127C19*), ABISELECT(128,72), "S6127C1");
    /*is_ambiguous_... S6127C19::S6127C17 */ AMB_check_base_class_offset(lv, (S6127C12*)(S6127C17*)(S6127C19*), ABISELECT(128,72), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C4 */ AMB_check_base_class_offset(lv, (S6127C5*)(S6127C4*), ABISELECT(80,44), "S6127C1");
    check_base_class_offset(lv, (S6127C5*)(S6127C4*)(S6127C21*)(S6127C19*), ABISELECT(80,44), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C4 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S6127C4*), 0, "S6127C1");
    check_base_class_offset(lv, (S77C13_nt*)(S6127C4*)(S6127C21*)(S6127C19*), 0, "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C15 */ AMB_check_base_class_offset(lv, (S6127C16*)(S6127C15*), ABISELECT(144,80), "S6127C1");
    /*is_ambiguous_... S6127C19::S6127C15 */ AMB_check_base_class_offset(lv, (S6127C16*)(S6127C15*)(S6127C19*), ABISELECT(144,80), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C15 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C15*), ABISELECT(144,80), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C4 */ AMB_check_base_class_offset(lv, (S6127C15*)(S6127C4*), ABISELECT(144,80), "S6127C1");
    check_base_class_offset(lv, (S6127C15*)(S6127C4*)(S6127C21*)(S6127C19*), ABISELECT(144,80), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C4 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C13*)(S6127C17*)(S6127C4*), ABISELECT(48,28), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C4 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C13*)(S6127C17*)(S6127C4*), ABISELECT(56,32), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C4 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*)(S6127C13*)(S6127C17*)(S6127C4*), ABISELECT(48,28), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C4 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C13*)(S6127C17*)(S6127C4*), ABISELECT(48,28), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C4 */ AMB_check_base_class_offset(lv, (S6127C13*)(S6127C17*)(S6127C4*), ABISELECT(48,28), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C4 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C9*)(S6127C17*)(S6127C4*), ABISELECT(64,36), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C4 */ AMB_check_base_class_offset(lv, (S6127C9*)(S6127C17*)(S6127C4*), ABISELECT(64,36), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C4 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C17*)(S6127C4*), ABISELECT(72,40), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C4 */ AMB_check_base_class_offset(lv, (S6127C17*)(S6127C4*), ABISELECT(48,28), "S6127C1");
    check_base_class_offset(lv, (S6127C4*)(S6127C3*), ABISELECT(48,28), "S6127C1");
    /*is_ambiguous_... S6127C3::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C3*), ABISELECT(8,4), "S6127C1");
    /*is_ambiguous_... S6127C3::S6127C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C9*)(S6127C3*), 0, "S6127C1");
    /*is_ambiguous_... S6127C3::S6127C9 */ AMB_check_base_class_offset(lv, (S6127C9*)(S6127C3*), 0, "S6127C1");
    check_base_class_offset(lv, (S77C13_nt*)(S6127C18*)(S6127C3*), ABISELECT(8,4), "S6127C1");
    check_base_class_offset(lv, (S6127C5*)(S6127C18*)(S6127C3*), ABISELECT(8,4), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C17 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C13*)(S6127C17*), ABISELECT(160,88), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C17 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C13*)(S6127C17*), ABISELECT(168,92), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C17 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*)(S6127C13*)(S6127C17*), ABISELECT(160,88), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C17 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C13*)(S6127C17*), ABISELECT(160,88), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C17 */ AMB_check_base_class_offset(lv, (S6127C13*)(S6127C17*), ABISELECT(160,88), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C17 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C9*)(S6127C17*), ABISELECT(176,96), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C17 */ AMB_check_base_class_offset(lv, (S6127C9*)(S6127C17*), ABISELECT(176,96), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C17 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C17*), ABISELECT(184,100), "S6127C1");
    check_base_class_offset(lv, (S6127C17*)(S6127C18*)(S6127C3*), ABISELECT(160,88), "S6127C1");
    check_base_class_offset(lv, (S6127C18*)(S6127C3*), ABISELECT(8,4), "S6127C1");
    check_base_class_offset(lv, (S6127C3*), 0, "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C20 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C20*), ABISELECT(288,152), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C20 */ AMB_check_base_class_offset(lv, (S6127C16*)(S6127C20*), ABISELECT(288,152), "S6127C1");
    /*is_ambiguous_... S6127C19::S6127C20 */ AMB_check_base_class_offset(lv, (S6127C20*)(S6127C19*), ABISELECT(288,152), "S6127C1");
    /*is_ambiguous_... S6127C21::S6127C16 */ AMB_check_base_class_offset(lv, (S6127C16*)(S6127C21*)(S6127C19*), ABISELECT(192,104), "S6127C1");
    /*is_ambiguous_... S6127C13::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C13*)(S6127C17*)(S6127C4*)(S6127C21*)(S6127C19*), ABISELECT(200,108), "S6127C1");
    /*is_ambiguous_... S6127C13::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C13*)(S6127C17*)(S6127C4*)(S6127C21*)(S6127C19*), ABISELECT(208,112), "S6127C1");
    check_base_class_offset(lv, (S7856C12*)(S6127C10*)(S6127C13*)(S6127C17*)(S6127C4*)(S6127C21*)(S6127C19*), ABISELECT(200,108), "S6127C1");
    check_base_class_offset(lv, (S6127C10*)(S6127C13*)(S6127C17*)(S6127C4*)(S6127C21*)(S6127C19*), ABISELECT(200,108), "S6127C1");
    check_base_class_offset(lv, (S6127C13*)(S6127C17*)(S6127C4*)(S6127C21*)(S6127C19*), ABISELECT(200,108), "S6127C1");
    /*is_ambiguous_... S6127C17::S6127C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C9*)(S6127C17*)(S6127C4*)(S6127C21*)(S6127C19*), ABISELECT(216,116), "S6127C1");
    /*is_ambiguous_... S6127C17::S6127C9 */ AMB_check_base_class_offset(lv, (S6127C9*)(S6127C17*)(S6127C4*)(S6127C21*)(S6127C19*), ABISELECT(216,116), "S6127C1");
    /*is_ambiguous_... S6127C17::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C17*)(S6127C4*)(S6127C21*)(S6127C19*), ABISELECT(224,120), "S6127C1");
    check_base_class_offset(lv, (S6127C17*)(S6127C4*)(S6127C21*)(S6127C19*), ABISELECT(200,108), "S6127C1");
    check_base_class_offset(lv, (S6127C4*)(S6127C21*)(S6127C19*), ABISELECT(200,108), "S6127C1");
    /*is_ambiguous_... S6127C20::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C20*)(S6127C21*)(S6127C19*), ABISELECT(232,124), "S6127C1");
    check_base_class_offset(lv, (S6127C16*)(S6127C20*)(S6127C21*)(S6127C19*), ABISELECT(232,124), "S6127C1");
    check_base_class_offset(lv, (S6127C20*)(S6127C21*)(S6127C19*), ABISELECT(232,124), "S6127C1");
    check_base_class_offset(lv, (S6127C21*)(S6127C19*), ABISELECT(192,104), "S6127C1");
    /*is_ambiguous_... S6127C19::S6127C17 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C13*)(S6127C17*)(S6127C19*), ABISELECT(240,128), "S6127C1");
    /*is_ambiguous_... S6127C19::S6127C17 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C13*)(S6127C17*)(S6127C19*), ABISELECT(248,132), "S6127C1");
    /*is_ambiguous_... S6127C19::S6127C17 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*)(S6127C13*)(S6127C17*)(S6127C19*), ABISELECT(240,128), "S6127C1");
    /*is_ambiguous_... S6127C19::S6127C17 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C13*)(S6127C17*)(S6127C19*), ABISELECT(240,128), "S6127C1");
    /*is_ambiguous_... S6127C19::S6127C17 */ AMB_check_base_class_offset(lv, (S6127C13*)(S6127C17*)(S6127C19*), ABISELECT(240,128), "S6127C1");
    /*is_ambiguous_... S6127C19::S6127C17 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C9*)(S6127C17*)(S6127C19*), ABISELECT(256,136), "S6127C1");
    /*is_ambiguous_... S6127C19::S6127C17 */ AMB_check_base_class_offset(lv, (S6127C9*)(S6127C17*)(S6127C19*), ABISELECT(256,136), "S6127C1");
    /*is_ambiguous_... S6127C19::S6127C17 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C17*)(S6127C19*), ABISELECT(264,140), "S6127C1");
    /*is_ambiguous_... S6127C19::S6127C17 */ AMB_check_base_class_offset(lv, (S6127C17*)(S6127C19*), ABISELECT(240,128), "S6127C1");
    /*is_ambiguous_... S6127C19::S6127C15 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C15*)(S6127C19*), ABISELECT(272,144), "S6127C1");
    /*is_ambiguous_... S6127C19::S6127C15 */ AMB_check_base_class_offset(lv, (S6127C15*)(S6127C19*), ABISELECT(272,144), "S6127C1");
    check_base_class_offset(lv, (S6127C19*), ABISELECT(192,104), "S6127C1");
    check_field_offset(lv, s6127c1f0, ABISELECT(32,16), "S6127C1.s6127c1f0");
    test_class_info(&lv, &cd_S6127C1);
    dp->~S6127C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6127C1(Test_S6127C1, "S6127C1", ABISELECT(304,156));

#else // __cplusplus

extern void _ZN7S6127C1C1Ev();
extern void _ZN7S6127C1D2Ev();
Name_Map name_map_S6127C1[] = {
  NSPAIR(_ZN7S6127C1C1Ev),
  NSPAIR(_ZN7S6127C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C9;
extern VTBL_ENTRY _ZTI7S6127C9[];
extern  VTBL_ENTRY _ZTV7S6127C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C9[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C12;
extern VTBL_ENTRY _ZTI8S6127C12[];
extern  VTBL_ENTRY _ZTV8S6127C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C12[];
extern Class_Descriptor cd_S6127C6;
extern VTBL_ENTRY _ZTI7S6127C6[];
extern  VTBL_ENTRY _ZTV7S6127C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C6[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C13;
extern VTBL_ENTRY _ZTI8S6127C13[];
extern  VTBL_ENTRY _ZTV8S6127C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C13[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C12;
extern VTBL_ENTRY _ZTI8S6127C12[];
extern  VTBL_ENTRY _ZTV8S6127C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C12[];
extern Class_Descriptor cd_S6127C5;
extern VTBL_ENTRY _ZTI7S6127C5[];
extern  VTBL_ENTRY _ZTV7S6127C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C5[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S6127C16;
extern VTBL_ENTRY _ZTI8S6127C16[];
extern  VTBL_ENTRY _ZTV8S6127C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C16[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S6127C15;
extern VTBL_ENTRY _ZTI8S6127C15[];
extern  VTBL_ENTRY _ZTV8S6127C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C15[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C13;
extern VTBL_ENTRY _ZTI8S6127C13[];
extern  VTBL_ENTRY _ZTV8S6127C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C13[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S6127C9;
extern VTBL_ENTRY _ZTI7S6127C9[];
extern  VTBL_ENTRY _ZTV7S6127C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C9[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S6127C17;
extern VTBL_ENTRY _ZTI8S6127C17[];
extern  VTBL_ENTRY _ZTV8S6127C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C17[];
extern Class_Descriptor cd_S6127C4;
extern VTBL_ENTRY _ZTI7S6127C4[];
extern  VTBL_ENTRY _ZTV7S6127C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C4[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S6127C9;
extern VTBL_ENTRY _ZTI7S6127C9[];
extern  VTBL_ENTRY _ZTV7S6127C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C9[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S6127C5;
extern VTBL_ENTRY _ZTI7S6127C5[];
extern  VTBL_ENTRY _ZTV7S6127C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C5[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C13;
extern VTBL_ENTRY _ZTI8S6127C13[];
extern  VTBL_ENTRY _ZTV8S6127C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C13[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S6127C9;
extern VTBL_ENTRY _ZTI7S6127C9[];
extern  VTBL_ENTRY _ZTV7S6127C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C9[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S6127C17;
extern VTBL_ENTRY _ZTI8S6127C17[];
extern  VTBL_ENTRY _ZTV8S6127C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C17[];
extern Class_Descriptor cd_S6127C18;
extern VTBL_ENTRY _ZTI8S6127C18[];
extern  VTBL_ENTRY _ZTV8S6127C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C18[];
extern Class_Descriptor cd_S6127C3;
extern VTBL_ENTRY _ZTI7S6127C3[];
extern  VTBL_ENTRY _ZTV7S6127C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C3[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C16;
extern VTBL_ENTRY _ZTI8S6127C16[];
extern  VTBL_ENTRY _ZTV8S6127C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C16[];
extern Class_Descriptor cd_S6127C20;
extern VTBL_ENTRY _ZTI8S6127C20[];
extern  VTBL_ENTRY _ZTV8S6127C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C20[];
extern Class_Descriptor cd_S6127C16;
extern VTBL_ENTRY _ZTI8S6127C16[];
extern  VTBL_ENTRY _ZTV8S6127C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C16[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C13;
extern VTBL_ENTRY _ZTI8S6127C13[];
extern  VTBL_ENTRY _ZTV8S6127C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C13[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S6127C9;
extern VTBL_ENTRY _ZTI7S6127C9[];
extern  VTBL_ENTRY _ZTV7S6127C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C9[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S6127C17;
extern VTBL_ENTRY _ZTI8S6127C17[];
extern  VTBL_ENTRY _ZTV8S6127C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C17[];
extern Class_Descriptor cd_S6127C4;
extern VTBL_ENTRY _ZTI7S6127C4[];
extern  VTBL_ENTRY _ZTV7S6127C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C4[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C16;
extern VTBL_ENTRY _ZTI8S6127C16[];
extern  VTBL_ENTRY _ZTV8S6127C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C16[];
extern Class_Descriptor cd_S6127C20;
extern VTBL_ENTRY _ZTI8S6127C20[];
extern  VTBL_ENTRY _ZTV8S6127C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C20[];
extern Class_Descriptor cd_S6127C21;
extern VTBL_ENTRY _ZTI8S6127C21[];
extern  VTBL_ENTRY _ZTV8S6127C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C21[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C13;
extern VTBL_ENTRY _ZTI8S6127C13[];
extern  VTBL_ENTRY _ZTV8S6127C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C13[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S6127C9;
extern VTBL_ENTRY _ZTI7S6127C9[];
extern  VTBL_ENTRY _ZTV7S6127C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C9[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S6127C17;
extern VTBL_ENTRY _ZTI8S6127C17[];
extern  VTBL_ENTRY _ZTV8S6127C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C17[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S6127C15;
extern VTBL_ENTRY _ZTI8S6127C15[];
extern  VTBL_ENTRY _ZTV8S6127C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C15[];
extern Class_Descriptor cd_S6127C19;
extern VTBL_ENTRY _ZTI8S6127C19[];
extern  VTBL_ENTRY _ZTV8S6127C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C19[];
static Base_Class bases_S6127C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C15,    ABISELECT(105,61), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S6127C10,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    87, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S6127C9,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    85, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(96,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(104,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(96,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S6127C10,    ABISELECT(96,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S6127C12,    ABISELECT(96,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    79, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S6127C6,    ABISELECT(96,56), //bcp->offset
    70, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(112,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(112,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S6127C10,    ABISELECT(112,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    89, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S6127C13,    ABISELECT(112,64), //bcp->offset
    80, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    88, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(136,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(128,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S6127C10,    ABISELECT(128,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    91, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S6127C12,    ABISELECT(128,72), //bcp->offset
    84, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    90, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S6127C5,    ABISELECT(80,44), //bcp->offset
    57, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    37, //immediately_derived
  0, 1},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    37, //immediately_derived
  0, 1},
  {&cd_S6127C16,    ABISELECT(144,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    100, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(144,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S6127C15,    ABISELECT(144,80), //bcp->offset
    94, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    94, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    37, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S6127C10,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S6127C13,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S6127C9,    ABISELECT(64,36), //bcp->offset
    51, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S6127C17,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S6127C4,    ABISELECT(48,28), //bcp->offset
    34, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    53, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    53, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S6127C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    53, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    52, //immediately_derived
  0, 0},
  {&cd_S6127C5,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    40, //init_seq
    52, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(168,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S6127C10,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    103, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S6127C13,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    102, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(176,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S6127C9,    ABISELECT(176,96), //bcp->offset
    118, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    104, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(184,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S6127C17,    ABISELECT(160,88), //bcp->offset
    107, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    101, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    52, //immediately_derived
  0, 1},
  {&cd_S6127C18,    ABISELECT(8,4), //bcp->offset
    20, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    41, //init_seq
    53, //immediately_derived
  0, 0},
  {&cd_S6127C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    42, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    ABISELECT(288,152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    56, //immediately_derived
  0, 0},
  {&cd_S6127C16,    ABISELECT(288,152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    176, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    56, //immediately_derived
  0, 0},
  {&cd_S6127C20,    ABISELECT(288,152), //bcp->offset
    197, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    175, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    83, //immediately_derived
  0, 1},
  {&cd_S6127C16,    ABISELECT(192,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    112, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    71, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(200,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(208,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(200,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    61, //immediately_derived
  0, 0},
  {&cd_S6127C10,    ABISELECT(200,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    116, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S6127C13,    ABISELECT(200,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    115, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    66, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(216,116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    64, //immediately_derived
  0, 0},
  {&cd_S6127C9,    ABISELECT(216,116), //bcp->offset
    158, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    117, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    66, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(224,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    66, //immediately_derived
  0, 0},
  {&cd_S6127C17,    ABISELECT(200,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    114, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    67, //immediately_derived
  0, 0},
  {&cd_S6127C4,    ABISELECT(200,108), //bcp->offset
    142, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    113, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    71, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(232,124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    70, //immediately_derived
  0, 0},
  {&cd_S6127C16,    ABISELECT(232,124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    133, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    70, //immediately_derived
  0, 0},
  {&cd_S6127C20,    ABISELECT(232,124), //bcp->offset
    164, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    132, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    71, //immediately_derived
  0, 0},
  {&cd_S6127C21,    ABISELECT(192,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    111, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    83, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(240,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    76, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(248,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    76, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(240,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    75, //immediately_derived
  0, 0},
  {&cd_S6127C10,    ABISELECT(240,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    147, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    76, //immediately_derived
  0, 0},
  {&cd_S6127C13,    ABISELECT(240,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    146, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    80, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(256,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    78, //immediately_derived
  0, 0},
  {&cd_S6127C9,    ABISELECT(256,136), //bcp->offset
    179, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    148, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    80, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(264,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    80, //immediately_derived
  0, 0},
  {&cd_S6127C17,    ABISELECT(240,128), //bcp->offset
    169, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    145, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    83, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(272,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    82, //immediately_derived
  0, 0},
  {&cd_S6127C15,    ABISELECT(272,144), //bcp->offset
    185, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    154, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    83, //immediately_derived
  0, 0},
  {&cd_S6127C19,    ABISELECT(192,104), //bcp->offset
    124, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    110, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S6127C1[];
extern void _ZN7S6127C1D1Ev();
extern void _ZN7S6127C1D0Ev();
extern void ABISELECT(_ZThn8_N7S6127C1D1Ev,_ZThn4_N7S6127C1D1Ev)();
extern void ABISELECT(_ZThn8_N7S6127C1D0Ev,_ZThn4_N7S6127C1D0Ev)();
extern void _ZN8S6127C182v1Ev();
extern void ABISELECT(_ZTv0_n120_N7S6127C1D1Ev,_ZTv0_n60_N7S6127C1D1Ev)();
extern void ABISELECT(_ZThn48_N7S6127C1D1Ev,_ZThn28_N7S6127C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S6127C1D0Ev,_ZTv0_n60_N7S6127C1D0Ev)();
extern void ABISELECT(_ZThn48_N7S6127C1D0Ev,_ZThn28_N7S6127C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S6127C1D1Ev,_ZTv0_n44_N7S6127C1D1Ev)();
extern void ABISELECT(_ZThn80_N7S6127C1D1Ev,_ZThn44_N7S6127C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S6127C1D0Ev,_ZTv0_n44_N7S6127C1D0Ev)();
extern void ABISELECT(_ZThn80_N7S6127C1D0Ev,_ZThn44_N7S6127C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C1D1Ev,_ZTv0_n32_N7S6127C1D1Ev)();
extern void ABISELECT(_ZThn96_N7S6127C1D1Ev,_ZThn56_N7S6127C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C1D0Ev,_ZTv0_n32_N7S6127C1D0Ev)();
extern void ABISELECT(_ZThn96_N7S6127C1D0Ev,_ZThn56_N7S6127C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C1D1Ev,_ZTv0_n32_N7S6127C1D1Ev)();
extern void ABISELECT(_ZThn128_N7S6127C1D1Ev,_ZThn72_N7S6127C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C1D0Ev,_ZTv0_n32_N7S6127C1D0Ev)();
extern void ABISELECT(_ZThn128_N7S6127C1D0Ev,_ZThn72_N7S6127C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S6127C1D1Ev,_ZTv0_n44_N7S6127C1D1Ev)();
extern void ABISELECT(_ZThn144_N7S6127C1D1Ev,_ZThn80_N7S6127C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S6127C1D0Ev,_ZTv0_n44_N7S6127C1D0Ev)();
extern void ABISELECT(_ZThn144_N7S6127C1D0Ev,_ZThn80_N7S6127C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S6127C1D1Ev,_ZTv0_n36_N7S6127C1D1Ev)();
extern void ABISELECT(_ZThn160_N7S6127C1D1Ev,_ZThn88_N7S6127C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S6127C1D0Ev,_ZTv0_n36_N7S6127C1D0Ev)();
extern void ABISELECT(_ZThn160_N7S6127C1D0Ev,_ZThn88_N7S6127C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N7S6127C1D1Ev,_ZTv0_n64_N7S6127C1D1Ev)();
extern void ABISELECT(_ZThn192_N7S6127C1D1Ev,_ZThn104_N7S6127C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N7S6127C1D0Ev,_ZTv0_n64_N7S6127C1D0Ev)();
extern void ABISELECT(_ZThn192_N7S6127C1D0Ev,_ZThn104_N7S6127C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn8_n128_N7S6127C1D1Ev,_ZTvn4_n64_N7S6127C1D1Ev)();
extern void ABISELECT(_ZTvn8_n128_N7S6127C1D0Ev,_ZTvn4_n64_N7S6127C1D0Ev)();
extern void ABISELECT(_ZTvn40_n128_N7S6127C1D1Ev,_ZTvn20_n64_N7S6127C1D1Ev)();
extern void ABISELECT(_ZTvn40_n128_N7S6127C1D0Ev,_ZTvn20_n64_N7S6127C1D0Ev)();
extern void ABISELECT(_ZTvn48_n128_N7S6127C1D1Ev,_ZTvn24_n64_N7S6127C1D1Ev)();
extern void ABISELECT(_ZTvn48_n128_N7S6127C1D0Ev,_ZTvn24_n64_N7S6127C1D0Ev)();
extern void ABISELECT(_ZTvn80_n128_N7S6127C1D1Ev,_ZTvn40_n64_N7S6127C1D1Ev)();
extern void ABISELECT(_ZTvn80_n128_N7S6127C1D0Ev,_ZTvn40_n64_N7S6127C1D0Ev)();
extern void ABISELECT(_ZTv0_n32_N7S6127C1D1Ev,_ZTv0_n16_N7S6127C1D1Ev)();
extern void ABISELECT(_ZThn288_N7S6127C1D1Ev,_ZThn152_N7S6127C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S6127C1D0Ev,_ZTv0_n16_N7S6127C1D0Ev)();
extern void ABISELECT(_ZThn288_N7S6127C1D0Ev,_ZThn152_N7S6127C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S6127C1[] = {
  ABISELECT(288,152),
  ABISELECT(192,104),
  ABISELECT(160,88),
  ABISELECT(144,80),
  ABISELECT(144,80),
  0,
  ABISELECT(128,72),
  ABISELECT(112,64),
  ABISELECT(80,44),
  ABISELECT(96,56),
  ABISELECT(80,44),
  ABISELECT(48,28),
  0,
  ABISELECT(80,44),
  0,
  ABISELECT(105,61),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C1[0]),
  (VTBL_ENTRY)&_ZN7S6127C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6127C1D0Ev,
  ABISELECT(152,84),
  ABISELECT(120,68),
  ABISELECT(104,60),
  ABISELECT(72,40),
  ABISELECT(88,52),
  ABISELECT(-8,-4),
  ABISELECT(72,40),
  ABISELECT(-8,-4),
  ABISELECT(97,57),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S6127C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S6127C1D1Ev,_ZThn4_N7S6127C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S6127C1D0Ev,_ZThn4_N7S6127C1D0Ev),
  (VTBL_ENTRY)&_ZN8S6127C182v1Ev,
  ABISELECT(-48,-28),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-48,-28),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-48,-28),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-48,-28),
  ABISELECT(57,33),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S6127C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S6127C1D1Ev,_ZTv0_n60_N7S6127C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S6127C1D0Ev,_ZTv0_n60_N7S6127C1D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(16,8),
  ABISELECT(-64,-36),
  ABISELECT(41,25),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S6127C1[0]),
  ABISELECT(-80,-44),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-80,-44),
  0,
  ABISELECT(-80,-44),
  ABISELECT(25,17),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S6127C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6127C1D1Ev,_ZTv0_n44_N7S6127C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6127C1D0Ev,_ZTv0_n44_N7S6127C1D0Ev),
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-96,-56),
  ABISELECT(9,5),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI7S6127C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C1D1Ev,_ZTv0_n32_N7S6127C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C1D0Ev,_ZTv0_n32_N7S6127C1D0Ev),
  ABISELECT(-112,-64),
  ABISELECT(-7,-3),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI7S6127C1[0]),
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-128,-72),
  ABISELECT(-23,-11),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI7S6127C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C1D1Ev,_ZTv0_n32_N7S6127C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C1D0Ev,_ZTv0_n32_N7S6127C1D0Ev),
  ABISELECT(-144,-80),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-144,-80),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI7S6127C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6127C1D1Ev,_ZTv0_n44_N7S6127C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6127C1D0Ev,_ZTv0_n44_N7S6127C1D0Ev),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-160,-88),
  ABISELECT(-55,-27),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI7S6127C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S6127C1D1Ev,_ZTv0_n36_N7S6127C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S6127C1D0Ev,_ZTv0_n36_N7S6127C1D0Ev),
  ABISELECT(-176,-96),
  ABISELECT(-96,-52),
  ABISELECT(-176,-96),
  ABISELECT(-71,-35),
  ABISELECT(-176,-96),
  (VTBL_ENTRY)&(_ZTI7S6127C1[0]),
  ABISELECT(-192,-104),
  ABISELECT(96,48),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-192,-104),
  ABISELECT(-64,-32),
  ABISELECT(-80,-40),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-87,-43),
  ABISELECT(-96,-48),
  ABISELECT(-112,-60),
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  (VTBL_ENTRY)&(_ZTI7S6127C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S6127C1D1Ev,_ZTv0_n64_N7S6127C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S6127C1D0Ev,_ZTv0_n64_N7S6127C1D0Ev),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-200,-108),
  ABISELECT(-88,-44),
  ABISELECT(-104,-52),
  ABISELECT(-120,-64),
  ABISELECT(-200,-108),
  ABISELECT(-120,-64),
  ABISELECT(-120,-64),
  ABISELECT(-72,-36),
  ABISELECT(-200,-108),
  ABISELECT(-95,-47),
  ABISELECT(-200,-108),
  (VTBL_ENTRY)&(_ZTI7S6127C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n128_N7S6127C1D1Ev,_ZTvn4_n64_N7S6127C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n128_N7S6127C1D0Ev,_ZTvn4_n64_N7S6127C1D0Ev),
  ABISELECT(-216,-116),
  ABISELECT(-136,-72),
  ABISELECT(-216,-116),
  ABISELECT(-111,-55),
  ABISELECT(-216,-116),
  (VTBL_ENTRY)&(_ZTI7S6127C1[0]),
  ABISELECT(-232,-124),
  ABISELECT(-232,-124),
  (VTBL_ENTRY)&(_ZTI7S6127C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n128_N7S6127C1D1Ev,_ZTvn20_n64_N7S6127C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n128_N7S6127C1D0Ev,_ZTvn20_n64_N7S6127C1D0Ev),
  ABISELECT(-240,-128),
  ABISELECT(-160,-84),
  ABISELECT(-160,-84),
  ABISELECT(-112,-56),
  ABISELECT(-240,-128),
  ABISELECT(-135,-67),
  ABISELECT(-240,-128),
  (VTBL_ENTRY)&(_ZTI7S6127C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n128_N7S6127C1D1Ev,_ZTvn24_n64_N7S6127C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n128_N7S6127C1D0Ev,_ZTvn24_n64_N7S6127C1D0Ev),
  ABISELECT(-256,-136),
  ABISELECT(-176,-92),
  ABISELECT(-256,-136),
  ABISELECT(-151,-75),
  ABISELECT(-256,-136),
  (VTBL_ENTRY)&(_ZTI7S6127C1[0]),
  ABISELECT(-192,-100),
  ABISELECT(-176,-88),
  ABISELECT(-160,-80),
  ABISELECT(-128,-64),
  ABISELECT(-272,-144),
  ABISELECT(-167,-83),
  ABISELECT(-192,-100),
  ABISELECT(-272,-144),
  ABISELECT(-272,-144),
  (VTBL_ENTRY)&(_ZTI7S6127C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n128_N7S6127C1D1Ev,_ZTvn40_n64_N7S6127C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n128_N7S6127C1D0Ev,_ZTvn40_n64_N7S6127C1D0Ev),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  (VTBL_ENTRY)&(_ZTI7S6127C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S6127C1D1Ev,_ZTv0_n16_N7S6127C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S6127C1D0Ev,_ZTv0_n16_N7S6127C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S6127C1[];
extern void _ZN7S6127C3D1Ev();
extern void _ZN7S6127C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6127C3__7S6127C1[] = {
  ABISELECT(160,88),
  ABISELECT(144,80),
  ABISELECT(144,80),
  0,
  ABISELECT(128,72),
  ABISELECT(112,64),
  ABISELECT(80,44),
  ABISELECT(96,56),
  ABISELECT(80,44),
  ABISELECT(48,28),
  0,
  ABISELECT(80,44),
  0,
  ABISELECT(105,61),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C3[0]),
  (VTBL_ENTRY)&_ZN7S6127C3D1Ev,
  (VTBL_ENTRY)&_ZN7S6127C3D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6127C97S6127C3__A2__7S6127C1[] = {
  0,
  ABISELECT(80,44),
  0,
  ABISELECT(105,61),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C10__7S6127C97S6127C3__A2__7S6127C1[] = {
  ABISELECT(-80,-44),
  ABISELECT(25,17),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
extern void _ZN8S6127C18D1Ev();
extern void _ZN8S6127C18D0Ev();
extern void _ZN8S6127C182v1Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C187S6127C3__7S6127C1[] = {
  ABISELECT(152,84),
  ABISELECT(120,68),
  ABISELECT(104,60),
  ABISELECT(72,40),
  ABISELECT(88,52),
  ABISELECT(-8,-4),
  ABISELECT(72,40),
  ABISELECT(-8,-4),
  ABISELECT(97,57),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C18[0]),
  (VTBL_ENTRY)&_ZN8S6127C18D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C18D0Ev,
  (VTBL_ENTRY)&_ZN8S6127C182v1Ev,
};
extern void _ZN7S6127C5D1Ev();
extern void _ZN7S6127C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6127C58S6127C187S6127C3__A1__7S6127C1[] = {
  ABISELECT(120,68),
  ABISELECT(104,60),
  ABISELECT(72,40),
  ABISELECT(88,52),
  ABISELECT(-8,-4),
  ABISELECT(72,40),
  ABISELECT(-8,-4),
  ABISELECT(97,57),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C5[0]),
  (VTBL_ENTRY)&_ZN7S6127C5D1Ev,
  (VTBL_ENTRY)&_ZN7S6127C5D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev)();
extern void ABISELECT(_ZThn88_N7S6127C5D1Ev,_ZThn52_N7S6127C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev)();
extern void ABISELECT(_ZThn88_N7S6127C5D0Ev,_ZThn52_N7S6127C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6127C6__7S6127C58S6127C187S6127C3__A1__7S6127C1[] = {
  ABISELECT(-88,-52),
  ABISELECT(-96,-56),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-96,-56),
  ABISELECT(9,5),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI7S6127C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__7S6127C58S6127C187S6127C3__A1__7S6127C1[] = {
  ABISELECT(-80,-44),
  0,
  ABISELECT(-80,-44),
  ABISELECT(25,17),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI7S6127C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C13__7S6127C58S6127C187S6127C3__A1__7S6127C1[] = {
  ABISELECT(-112,-64),
  ABISELECT(-7,-3),
  ABISELECT(-104,-60),
  (VTBL_ENTRY)&(_ZTI7S6127C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev)();
extern void ABISELECT(_ZThn120_N7S6127C5D1Ev,_ZThn68_N7S6127C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev)();
extern void ABISELECT(_ZThn120_N7S6127C5D0Ev,_ZThn68_N7S6127C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6127C12__A1__7S6127C58S6127C187S6127C3__A1__7S6127C1[] = {
  ABISELECT(-120,-68),
  ABISELECT(-128,-72),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-128,-72),
  ABISELECT(-23,-11),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI7S6127C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S6127C18D1Ev,_ZTv0_n32_N8S6127C18D1Ev)();
extern void ABISELECT(_ZThn88_N8S6127C18D1Ev,_ZThn52_N8S6127C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6127C18D0Ev,_ZTv0_n32_N8S6127C18D0Ev)();
extern void ABISELECT(_ZThn88_N8S6127C18D0Ev,_ZThn52_N8S6127C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6127C6__8S6127C187S6127C3__7S6127C1[] = {
  ABISELECT(-88,-52),
  ABISELECT(-96,-56),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-96,-56),
  ABISELECT(9,5),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S6127C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C18D1Ev,_ZTv0_n32_N8S6127C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C18D0Ev,_ZTv0_n32_N8S6127C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C187S6127C3__7S6127C1[] = {
  ABISELECT(-80,-44),
  0,
  ABISELECT(-80,-44),
  ABISELECT(25,17),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S6127C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C13__8S6127C187S6127C3__7S6127C1[] = {
  ABISELECT(-112,-64),
  ABISELECT(-7,-3),
  ABISELECT(-104,-60),
  (VTBL_ENTRY)&(_ZTI8S6127C18[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S6127C18D1Ev,_ZTv0_n32_N8S6127C18D1Ev)();
extern void ABISELECT(_ZThn120_N8S6127C18D1Ev,_ZThn68_N8S6127C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6127C18D0Ev,_ZTv0_n32_N8S6127C18D0Ev)();
extern void ABISELECT(_ZThn120_N8S6127C18D0Ev,_ZThn68_N8S6127C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6127C12__A1__8S6127C187S6127C3__7S6127C1[] = {
  ABISELECT(-120,-68),
  ABISELECT(-128,-72),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-128,-72),
  ABISELECT(-23,-11),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI8S6127C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C18D1Ev,_ZTv0_n32_N8S6127C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C18D0Ev,_ZTv0_n32_N8S6127C18D0Ev),
};
extern void ABISELECT(_ZTv0_n72_N8S6127C18D1Ev,_ZTv0_n36_N8S6127C18D1Ev)();
extern void ABISELECT(_ZThn152_N8S6127C18D1Ev,_ZThn84_N8S6127C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S6127C18D0Ev,_ZTv0_n36_N8S6127C18D0Ev)();
extern void ABISELECT(_ZThn152_N8S6127C18D0Ev,_ZThn84_N8S6127C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6127C17__8S6127C187S6127C3__7S6127C1[] = {
  ABISELECT(-152,-84),
  ABISELECT(-160,-88),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-160,-88),
  ABISELECT(-55,-27),
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI8S6127C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S6127C18D1Ev,_ZTv0_n36_N8S6127C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S6127C18D0Ev,_ZTv0_n36_N8S6127C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S6127C98S6127C17__A1__8S6127C187S6127C3__7S6127C1[] = {
  ABISELECT(-176,-96),
  ABISELECT(-96,-52),
  ABISELECT(-176,-96),
  ABISELECT(-71,-35),
  ABISELECT(-168,-92),
  (VTBL_ENTRY)&(_ZTI8S6127C18[0]),
};
extern void ABISELECT(_ZTv0_n120_N7S6127C3D1Ev,_ZTv0_n60_N7S6127C3D1Ev)();
extern void ABISELECT(_ZThn48_N7S6127C3D1Ev,_ZThn28_N7S6127C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S6127C3D0Ev,_ZTv0_n60_N7S6127C3D0Ev)();
extern void ABISELECT(_ZThn48_N7S6127C3D0Ev,_ZThn28_N7S6127C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6127C4__7S6127C3__7S6127C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-48,-28),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-48,-28),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-48,-28),
  ABISELECT(57,33),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S6127C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S6127C3D1Ev,_ZTv0_n60_N7S6127C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S6127C3D0Ev,_ZTv0_n60_N7S6127C3D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S6127C3D1Ev,_ZTv0_n44_N7S6127C3D1Ev)();
extern void ABISELECT(_ZThn80_N7S6127C3D1Ev,_ZThn44_N7S6127C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S6127C3D0Ev,_ZTv0_n44_N7S6127C3D0Ev)();
extern void ABISELECT(_ZThn80_N7S6127C3D0Ev,_ZThn44_N7S6127C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6127C5__7S6127C3__7S6127C1[] = {
  ABISELECT(-80,-44),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-80,-44),
  0,
  ABISELECT(-80,-44),
  ABISELECT(25,17),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S6127C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6127C3D1Ev,_ZTv0_n44_N7S6127C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6127C3D0Ev,_ZTv0_n44_N7S6127C3D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S6127C3D1Ev,_ZTv0_n32_N7S6127C3D1Ev)();
extern void ABISELECT(_ZThn96_N7S6127C3D1Ev,_ZThn56_N7S6127C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C3D0Ev,_ZTv0_n32_N7S6127C3D0Ev)();
extern void ABISELECT(_ZThn96_N7S6127C3D0Ev,_ZThn56_N7S6127C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6127C6__7S6127C3__7S6127C1[] = {
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-96,-56),
  ABISELECT(9,5),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI7S6127C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C3D1Ev,_ZTv0_n32_N7S6127C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C3D0Ev,_ZTv0_n32_N7S6127C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S6127C13__7S6127C3__7S6127C1[] = {
  ABISELECT(-112,-64),
  ABISELECT(-7,-3),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI7S6127C3[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S6127C3D1Ev,_ZTv0_n32_N7S6127C3D1Ev)();
extern void ABISELECT(_ZThn128_N7S6127C3D1Ev,_ZThn72_N7S6127C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C3D0Ev,_ZTv0_n32_N7S6127C3D0Ev)();
extern void ABISELECT(_ZThn128_N7S6127C3D0Ev,_ZThn72_N7S6127C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6127C12__A1__7S6127C3__7S6127C1[] = {
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-128,-72),
  ABISELECT(-23,-11),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI7S6127C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C3D1Ev,_ZTv0_n32_N7S6127C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C3D0Ev,_ZTv0_n32_N7S6127C3D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S6127C3D1Ev,_ZTv0_n44_N7S6127C3D1Ev)();
extern void ABISELECT(_ZThn144_N7S6127C3D1Ev,_ZThn80_N7S6127C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S6127C3D0Ev,_ZTv0_n44_N7S6127C3D0Ev)();
extern void ABISELECT(_ZThn144_N7S6127C3D0Ev,_ZThn80_N7S6127C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6127C15__7S6127C3__7S6127C1[] = {
  ABISELECT(-144,-80),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-144,-80),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI7S6127C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6127C3D1Ev,_ZTv0_n44_N7S6127C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6127C3D0Ev,_ZTv0_n44_N7S6127C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S6127C98S6127C177S6127C4__A1__7S6127C3__7S6127C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(16,8),
  ABISELECT(-64,-36),
  ABISELECT(41,25),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S6127C3[0]),
};
extern void ABISELECT(_ZThn8_N7S6127C3D1Ev,_ZThn4_N7S6127C3D1Ev)();
extern void ABISELECT(_ZThn8_N7S6127C3D0Ev,_ZThn4_N7S6127C3D0Ev)();
extern void _ZN8S6127C182v1Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C18__7S6127C3__7S6127C1[] = {
  ABISELECT(152,84),
  ABISELECT(120,68),
  ABISELECT(104,60),
  ABISELECT(72,40),
  ABISELECT(88,52),
  ABISELECT(-8,-4),
  ABISELECT(72,40),
  ABISELECT(-8,-4),
  ABISELECT(97,57),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S6127C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S6127C3D1Ev,_ZThn4_N7S6127C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S6127C3D0Ev,_ZThn4_N7S6127C3D0Ev),
  (VTBL_ENTRY)&_ZN8S6127C182v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N7S6127C3D1Ev,_ZTv0_n36_N7S6127C3D1Ev)();
extern void ABISELECT(_ZThn160_N7S6127C3D1Ev,_ZThn88_N7S6127C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S6127C3D0Ev,_ZTv0_n36_N7S6127C3D0Ev)();
extern void ABISELECT(_ZThn160_N7S6127C3D0Ev,_ZThn88_N7S6127C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6127C17__A1__7S6127C3__7S6127C1[] = {
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-160,-88),
  ABISELECT(-55,-27),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI7S6127C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S6127C3D1Ev,_ZTv0_n36_N7S6127C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S6127C3D0Ev,_ZTv0_n36_N7S6127C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S6127C98S6127C17__A3__7S6127C3__7S6127C1[] = {
  ABISELECT(-176,-96),
  ABISELECT(-96,-52),
  ABISELECT(-176,-96),
  ABISELECT(-71,-35),
  ABISELECT(-176,-96),
  (VTBL_ENTRY)&(_ZTI7S6127C3[0]),
};
extern void _ZN7S6127C4D1Ev();
extern void _ZN7S6127C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6127C4__7S6127C1[] = {
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-48,-28),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-48,-28),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-48,-28),
  ABISELECT(57,33),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
  (VTBL_ENTRY)&_ZN7S6127C4D1Ev,
  (VTBL_ENTRY)&_ZN7S6127C4D0Ev,
};
extern void _ZN8S6127C17D1Ev();
extern void _ZN8S6127C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C177S6127C4__7S6127C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-48,-28),
  ABISELECT(57,33),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
  (VTBL_ENTRY)&_ZN8S6127C17D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6127C138S6127C177S6127C4__A1__7S6127C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(57,33),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C108S6127C138S6127C177S6127C4__A4__7S6127C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(57,33),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C98S6127C177S6127C4__A1__7S6127C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(16,8),
  ABISELECT(-64,-36),
  ABISELECT(41,25),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C10__7S6127C98S6127C177S6127C4__A1__7S6127C1[] = {
  ABISELECT(-80,-44),
  ABISELECT(25,17),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S6127C17D1Ev,_ZTv0_n32_N8S6127C17D1Ev)();
extern void ABISELECT(_ZThn80_N8S6127C17D1Ev,_ZThn44_N8S6127C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6127C17D0Ev,_ZTv0_n32_N8S6127C17D0Ev)();
extern void ABISELECT(_ZThn80_N8S6127C17D0Ev,_ZThn44_N8S6127C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6127C12__8S6127C177S6127C4__7S6127C1[] = {
  ABISELECT(-80,-44),
  ABISELECT(-128,-72),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-128,-72),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C17D1Ev,_ZTv0_n32_N8S6127C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C17D0Ev,_ZTv0_n32_N8S6127C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C177S6127C4__7S6127C1[] = {
  ABISELECT(-80,-44),
  0,
  ABISELECT(-80,-44),
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__A__8S6127C177S6127C4__7S6127C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(16,8),
  ABISELECT(-64,-36),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S6127C4D1Ev,_ZTv0_n44_N7S6127C4D1Ev)();
extern void ABISELECT(_ZThn32_N7S6127C4D1Ev,_ZThn16_N7S6127C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S6127C4D0Ev,_ZTv0_n44_N7S6127C4D0Ev)();
extern void ABISELECT(_ZThn32_N7S6127C4D0Ev,_ZThn16_N7S6127C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6127C5__7S6127C4__7S6127C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-80,-44),
  0,
  ABISELECT(-80,-44),
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6127C4D1Ev,_ZTv0_n44_N7S6127C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6127C4D0Ev,_ZTv0_n44_N7S6127C4D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S6127C4D1Ev,_ZTv0_n32_N7S6127C4D1Ev)();
extern void ABISELECT(_ZThn48_N7S6127C4D1Ev,_ZThn28_N7S6127C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C4D0Ev,_ZTv0_n32_N7S6127C4D0Ev)();
extern void ABISELECT(_ZThn48_N7S6127C4D0Ev,_ZThn28_N7S6127C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6127C6__7S6127C4__7S6127C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(-96,-56),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-96,-56),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C4D1Ev,_ZTv0_n32_N7S6127C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C4D0Ev,_ZTv0_n32_N7S6127C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S6127C13__7S6127C4__7S6127C1[] = {
  ABISELECT(-112,-64),
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S6127C4D1Ev,_ZTv0_n32_N7S6127C4D1Ev)();
extern void ABISELECT(_ZThn80_N7S6127C4D1Ev,_ZThn44_N7S6127C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C4D0Ev,_ZTv0_n32_N7S6127C4D0Ev)();
extern void ABISELECT(_ZThn80_N7S6127C4D0Ev,_ZThn44_N7S6127C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6127C12__A1__7S6127C4__7S6127C1[] = {
  ABISELECT(-80,-44),
  ABISELECT(-128,-72),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-128,-72),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C4D1Ev,_ZTv0_n32_N7S6127C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C4D0Ev,_ZTv0_n32_N7S6127C4D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S6127C4D1Ev,_ZTv0_n44_N7S6127C4D1Ev)();
extern void ABISELECT(_ZThn96_N7S6127C4D1Ev,_ZThn52_N7S6127C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S6127C4D0Ev,_ZTv0_n44_N7S6127C4D0Ev)();
extern void ABISELECT(_ZThn96_N7S6127C4D0Ev,_ZThn52_N7S6127C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6127C15__7S6127C4__7S6127C1[] = {
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-144,-80),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-144,-80),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6127C4D1Ev,_ZTv0_n44_N7S6127C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6127C4D0Ev,_ZTv0_n44_N7S6127C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S6127C98S6127C17__A1__7S6127C4__7S6127C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(16,8),
  ABISELECT(-64,-36),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
};
extern void _ZN7S6127C5D1Ev();
extern void _ZN7S6127C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6127C5__7S6127C1[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-80,-44),
  0,
  ABISELECT(-80,-44),
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C5[0]),
  (VTBL_ENTRY)&_ZN7S6127C5D1Ev,
  (VTBL_ENTRY)&_ZN7S6127C5D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev)();
extern void ABISELECT(_ZThn16_N7S6127C5D1Ev,_ZThn12_N7S6127C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev)();
extern void ABISELECT(_ZThn16_N7S6127C5D0Ev,_ZThn12_N7S6127C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6127C6__7S6127C5__7S6127C1[] = {
  ABISELECT(-16,-12),
  ABISELECT(-96,-56),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-96,-56),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S6127C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S6127C13__7S6127C5__7S6127C1[] = {
  ABISELECT(-112,-64),
  ABISELECT(-7,-3),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S6127C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev)();
extern void ABISELECT(_ZThn48_N7S6127C5D1Ev,_ZThn28_N7S6127C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev)();
extern void ABISELECT(_ZThn48_N7S6127C5D0Ev,_ZThn28_N7S6127C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6127C12__A1__7S6127C5__7S6127C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(-128,-72),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-128,-72),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S6127C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev),
};
extern void _ZN7S6127C6D1Ev();
extern void _ZN7S6127C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6127C6__7S6127C1[] = {
  ABISELECT(-96,-56),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-96,-56),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C6[0]),
  (VTBL_ENTRY)&_ZN7S6127C6D1Ev,
  (VTBL_ENTRY)&_ZN7S6127C6D0Ev,
};
extern void _ZN8S6127C12D1Ev();
extern void _ZN8S6127C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C127S6127C6__7S6127C1[] = {
  ABISELECT(-96,-56),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-96,-56),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C12[0]),
  (VTBL_ENTRY)&_ZN8S6127C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6127C108S6127C127S6127C6__A1__7S6127C1[] = {
  ABISELECT(-96,-56),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C127S6127C6__7S6127C1[] = {
  ABISELECT(-80,-44),
  0,
  ABISELECT(-80,-44),
  ABISELECT(25,17),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S6127C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__7S6127C6__7S6127C1[] = {
  ABISELECT(-80,-44),
  0,
  ABISELECT(-80,-44),
  ABISELECT(25,17),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S6127C6[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__7S6127C1[] = {
  ABISELECT(-80,-44),
  0,
  ABISELECT(-80,-44),
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C10__7S6127C1[] = {
  ABISELECT(-80,-44),
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C13__7S6127C1[] = {
  ABISELECT(-112,-64),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C108S6127C13__A2__7S6127C1[] = {
  ABISELECT(-112,-64),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
extern void _ZN8S6127C12D1Ev();
extern void _ZN8S6127C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C12__A1__7S6127C1[] = {
  ABISELECT(-128,-72),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-128,-72),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C12[0]),
  (VTBL_ENTRY)&_ZN8S6127C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6127C108S6127C12__A3__7S6127C1[] = {
  ABISELECT(-128,-72),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C12__A1__7S6127C1[] = {
  ABISELECT(-80,-44),
  0,
  ABISELECT(-80,-44),
  ABISELECT(25,17),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S6127C12[0]),
};
extern void _ZN8S6127C15D1Ev();
extern void _ZN8S6127C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C15__7S6127C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-144,-80),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-144,-80),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C15[0]),
  (VTBL_ENTRY)&_ZN8S6127C15D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C15__7S6127C1[] = {
  ABISELECT(-80,-44),
  0,
  ABISELECT(-80,-44),
  ABISELECT(25,17),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S6127C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C13__8S6127C15__7S6127C1[] = {
  ABISELECT(-112,-64),
  ABISELECT(-7,-3),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S6127C15[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S6127C15D1Ev,_ZTv0_n32_N8S6127C15D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S6127C15D0Ev,_ZTv0_n32_N8S6127C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S6127C6__8S6127C15__7S6127C1[] = {
  ABISELECT(48,24),
  ABISELECT(-96,-56),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-96,-56),
  ABISELECT(9,5),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S6127C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C15D1Ev,_ZTv0_n32_N8S6127C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C15D0Ev,_ZTv0_n32_N8S6127C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S6127C16__7S6127C1[] = {
  ABISELECT(-144,-80),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C16[0]),
};
extern void _ZN8S6127C17D1Ev();
extern void _ZN8S6127C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C17__A1__7S6127C1[] = {
  ABISELECT(-160,-88),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-160,-88),
  ABISELECT(-55,-27),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
  (VTBL_ENTRY)&_ZN8S6127C17D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6127C138S6127C17__A2__7S6127C1[] = {
  ABISELECT(-160,-88),
  ABISELECT(-55,-27),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C108S6127C138S6127C17__A5__7S6127C1[] = {
  ABISELECT(-160,-88),
  ABISELECT(-55,-27),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C98S6127C17__A3__7S6127C1[] = {
  ABISELECT(-176,-96),
  ABISELECT(-96,-52),
  ABISELECT(-176,-96),
  ABISELECT(-71,-35),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C10__7S6127C98S6127C17__A3__7S6127C1[] = {
  ABISELECT(-80,-44),
  ABISELECT(25,17),
  ABISELECT(96,52),
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S6127C17D1Ev,_ZTv0_n32_N8S6127C17D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S6127C17D0Ev,_ZTv0_n32_N8S6127C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6127C12__8S6127C17__A1__7S6127C1[] = {
  ABISELECT(32,16),
  ABISELECT(-128,-72),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-128,-72),
  ABISELECT(-23,-11),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C17D1Ev,_ZTv0_n32_N8S6127C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C17D0Ev,_ZTv0_n32_N8S6127C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C17__A1__7S6127C1[] = {
  ABISELECT(-80,-44),
  0,
  ABISELECT(-80,-44),
  ABISELECT(25,17),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__A__8S6127C17__A1__7S6127C1[] = {
  ABISELECT(-176,-96),
  ABISELECT(-96,-52),
  ABISELECT(-176,-96),
  ABISELECT(-71,-35),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
};
extern void _ZN8S6127C19D1Ev();
extern void _ZN8S6127C19D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C19__7S6127C1[] = {
  ABISELECT(96,48),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-192,-104),
  ABISELECT(-64,-32),
  ABISELECT(-80,-40),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-87,-43),
  ABISELECT(-96,-48),
  ABISELECT(-112,-60),
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C19[0]),
  (VTBL_ENTRY)&_ZN8S6127C19D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C19D0Ev,
};
extern void _ZN8S6127C21D1Ev();
extern void _ZN8S6127C21D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C218S6127C19__7S6127C1[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-192,-104),
  ABISELECT(-64,-32),
  ABISELECT(-80,-40),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-87,-43),
  ABISELECT(-96,-48),
  ABISELECT(-112,-60),
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C21[0]),
  (VTBL_ENTRY)&_ZN8S6127C21D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C21D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6127C168S6127C218S6127C19__A2__7S6127C1[] = {
  ABISELECT(-192,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C16[0]),
};
extern void _ZN7S6127C4D1Ev();
extern void _ZN7S6127C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6127C48S6127C218S6127C19__A1__7S6127C1[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-200,-108),
  ABISELECT(-88,-44),
  ABISELECT(-104,-52),
  ABISELECT(-120,-64),
  ABISELECT(-200,-108),
  ABISELECT(-120,-64),
  ABISELECT(-120,-64),
  ABISELECT(-72,-36),
  ABISELECT(-200,-108),
  ABISELECT(-95,-47),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
  (VTBL_ENTRY)&_ZN7S6127C4D1Ev,
  (VTBL_ENTRY)&_ZN7S6127C4D0Ev,
};
extern void _ZN8S6127C17D1Ev();
extern void _ZN8S6127C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C177S6127C48S6127C218S6127C19__A2__7S6127C1[] = {
  ABISELECT(-200,-108),
  ABISELECT(-120,-64),
  ABISELECT(-120,-64),
  ABISELECT(-72,-36),
  ABISELECT(-200,-108),
  ABISELECT(-95,-47),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
  (VTBL_ENTRY)&_ZN8S6127C17D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6127C138S6127C177S6127C48S6127C218S6127C19__A3__7S6127C1[] = {
  ABISELECT(-200,-108),
  ABISELECT(-95,-47),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C108S6127C138S6127C177S6127C48S6127C218S6127C19__A6__7S6127C1[] = {
  ABISELECT(-200,-108),
  ABISELECT(-95,-47),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C98S6127C177S6127C48S6127C218S6127C19__A4__7S6127C1[] = {
  ABISELECT(-216,-116),
  ABISELECT(-136,-72),
  ABISELECT(-216,-116),
  ABISELECT(-111,-55),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C10__7S6127C98S6127C177S6127C48S6127C218S6127C19__A4__7S6127C1[] = {
  ABISELECT(-80,-44),
  ABISELECT(25,17),
  ABISELECT(136,72),
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S6127C17D1Ev,_ZTv0_n32_N8S6127C17D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S6127C17D0Ev,_ZTv0_n32_N8S6127C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6127C12__8S6127C177S6127C48S6127C218S6127C19__A2__7S6127C1[] = {
  ABISELECT(72,36),
  ABISELECT(-128,-72),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-128,-72),
  ABISELECT(-23,-11),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C17D1Ev,_ZTv0_n32_N8S6127C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C17D0Ev,_ZTv0_n32_N8S6127C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C177S6127C48S6127C218S6127C19__A2__7S6127C1[] = {
  ABISELECT(-80,-44),
  0,
  ABISELECT(-80,-44),
  ABISELECT(25,17),
  ABISELECT(120,64),
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__A__8S6127C177S6127C48S6127C218S6127C19__A2__7S6127C1[] = {
  ABISELECT(-216,-116),
  ABISELECT(-136,-72),
  ABISELECT(-216,-116),
  ABISELECT(-111,-55),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S6127C4D1Ev,_ZTv0_n44_N7S6127C4D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S6127C4D0Ev,_ZTv0_n44_N7S6127C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S6127C5__7S6127C48S6127C218S6127C19__A1__7S6127C1[] = {
  ABISELECT(120,64),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-80,-44),
  0,
  ABISELECT(-80,-44),
  ABISELECT(25,17),
  ABISELECT(120,64),
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6127C4D1Ev,_ZTv0_n44_N7S6127C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6127C4D0Ev,_ZTv0_n44_N7S6127C4D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S6127C4D1Ev,_ZTv0_n32_N7S6127C4D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S6127C4D0Ev,_ZTv0_n32_N7S6127C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S6127C6__7S6127C48S6127C218S6127C19__A1__7S6127C1[] = {
  ABISELECT(104,52),
  ABISELECT(-96,-56),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-96,-56),
  ABISELECT(9,5),
  ABISELECT(104,52),
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C4D1Ev,_ZTv0_n32_N7S6127C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C4D0Ev,_ZTv0_n32_N7S6127C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S6127C13__7S6127C48S6127C218S6127C19__A1__7S6127C1[] = {
  ABISELECT(-112,-64),
  ABISELECT(-7,-3),
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S6127C4D1Ev,_ZTv0_n32_N7S6127C4D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S6127C4D0Ev,_ZTv0_n32_N7S6127C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6127C12__A1__7S6127C48S6127C218S6127C19__A1__7S6127C1[] = {
  ABISELECT(72,36),
  ABISELECT(-128,-72),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-128,-72),
  ABISELECT(-23,-11),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C4D1Ev,_ZTv0_n32_N7S6127C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C4D0Ev,_ZTv0_n32_N7S6127C4D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S6127C4D1Ev,_ZTv0_n44_N7S6127C4D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S6127C4D0Ev,_ZTv0_n44_N7S6127C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6127C15__7S6127C48S6127C218S6127C19__A1__7S6127C1[] = {
  ABISELECT(56,28),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-144,-80),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-144,-80),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6127C4D1Ev,_ZTv0_n44_N7S6127C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6127C4D0Ev,_ZTv0_n44_N7S6127C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S6127C98S6127C17__A1__7S6127C48S6127C218S6127C19__A1__7S6127C1[] = {
  ABISELECT(-216,-116),
  ABISELECT(-136,-72),
  ABISELECT(-216,-116),
  ABISELECT(-111,-55),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
};
extern void _ZN8S6127C20D1Ev();
extern void _ZN8S6127C20D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C208S6127C218S6127C19__A1__7S6127C1[] = {
  ABISELECT(-232,-124),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C20[0]),
  (VTBL_ENTRY)&_ZN8S6127C20D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C20D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6127C168S6127C208S6127C218S6127C19__A3__7S6127C1[] = {
  ABISELECT(-232,-124),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C16[0]),
};
extern void ABISELECT(_ZThn8_N8S6127C21D1Ev,_ZThn4_N8S6127C21D1Ev)();
extern void ABISELECT(_ZThn8_N8S6127C21D0Ev,_ZThn4_N8S6127C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S6127C4__8S6127C218S6127C19__7S6127C1[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-200,-108),
  ABISELECT(-88,-44),
  ABISELECT(-104,-52),
  ABISELECT(-120,-64),
  ABISELECT(-200,-108),
  ABISELECT(-120,-64),
  ABISELECT(-120,-64),
  ABISELECT(-72,-36),
  ABISELECT(-200,-108),
  ABISELECT(-95,-47),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S6127C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S6127C21D1Ev,_ZThn4_N8S6127C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S6127C21D0Ev,_ZThn4_N8S6127C21D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S6127C21D1Ev,_ZTv0_n44_N8S6127C21D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S6127C21D0Ev,_ZTv0_n44_N8S6127C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S6127C5__8S6127C218S6127C19__7S6127C1[] = {
  ABISELECT(112,60),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-80,-44),
  0,
  ABISELECT(-80,-44),
  ABISELECT(25,17),
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI8S6127C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6127C21D1Ev,_ZTv0_n44_N8S6127C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6127C21D0Ev,_ZTv0_n44_N8S6127C21D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S6127C21D1Ev,_ZTv0_n32_N8S6127C21D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S6127C21D0Ev,_ZTv0_n32_N8S6127C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S6127C6__8S6127C218S6127C19__7S6127C1[] = {
  ABISELECT(96,48),
  ABISELECT(-96,-56),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-96,-56),
  ABISELECT(9,5),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI8S6127C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C21D1Ev,_ZTv0_n32_N8S6127C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C21D0Ev,_ZTv0_n32_N8S6127C21D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S6127C13__8S6127C218S6127C19__7S6127C1[] = {
  ABISELECT(-112,-64),
  ABISELECT(-7,-3),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S6127C21[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S6127C21D1Ev,_ZTv0_n32_N8S6127C21D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S6127C21D0Ev,_ZTv0_n32_N8S6127C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6127C12__A1__8S6127C218S6127C19__7S6127C1[] = {
  ABISELECT(64,32),
  ABISELECT(-128,-72),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-128,-72),
  ABISELECT(-23,-11),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S6127C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C21D1Ev,_ZTv0_n32_N8S6127C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C21D0Ev,_ZTv0_n32_N8S6127C21D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S6127C21D1Ev,_ZTv0_n44_N8S6127C21D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S6127C21D0Ev,_ZTv0_n44_N8S6127C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6127C15__8S6127C218S6127C19__7S6127C1[] = {
  ABISELECT(48,24),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-144,-80),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-144,-80),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S6127C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6127C21D1Ev,_ZTv0_n44_N8S6127C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6127C21D0Ev,_ZTv0_n44_N8S6127C21D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S6127C98S6127C177S6127C4__A1__8S6127C218S6127C19__7S6127C1[] = {
  ABISELECT(-216,-116),
  ABISELECT(-136,-72),
  ABISELECT(-216,-116),
  ABISELECT(-111,-55),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S6127C21[0]),
};
extern void ABISELECT(_ZThn40_N8S6127C21D1Ev,_ZThn20_N8S6127C21D1Ev)();
extern void ABISELECT(_ZThn40_N8S6127C21D0Ev,_ZThn20_N8S6127C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6127C20__8S6127C218S6127C19__7S6127C1[] = {
  ABISELECT(-232,-124),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S6127C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S6127C21D1Ev,_ZThn20_N8S6127C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S6127C21D0Ev,_ZThn20_N8S6127C21D0Ev),
};
extern void _ZN8S6127C17D1Ev();
extern void _ZN8S6127C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C178S6127C19__A3__7S6127C1[] = {
  ABISELECT(-240,-128),
  ABISELECT(-160,-84),
  ABISELECT(-160,-84),
  ABISELECT(-112,-56),
  ABISELECT(-240,-128),
  ABISELECT(-135,-67),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
  (VTBL_ENTRY)&_ZN8S6127C17D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6127C138S6127C178S6127C19__A4__7S6127C1[] = {
  ABISELECT(-240,-128),
  ABISELECT(-135,-67),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C108S6127C138S6127C178S6127C19__A7__7S6127C1[] = {
  ABISELECT(-240,-128),
  ABISELECT(-135,-67),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C98S6127C178S6127C19__A5__7S6127C1[] = {
  ABISELECT(-256,-136),
  ABISELECT(-176,-92),
  ABISELECT(-256,-136),
  ABISELECT(-151,-75),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C10__7S6127C98S6127C178S6127C19__A5__7S6127C1[] = {
  ABISELECT(-80,-44),
  ABISELECT(25,17),
  ABISELECT(176,92),
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S6127C17D1Ev,_ZTv0_n32_N8S6127C17D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S6127C17D0Ev,_ZTv0_n32_N8S6127C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6127C12__8S6127C178S6127C19__A3__7S6127C1[] = {
  ABISELECT(112,56),
  ABISELECT(-128,-72),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-128,-72),
  ABISELECT(-23,-11),
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C17D1Ev,_ZTv0_n32_N8S6127C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C17D0Ev,_ZTv0_n32_N8S6127C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C178S6127C19__A3__7S6127C1[] = {
  ABISELECT(-80,-44),
  0,
  ABISELECT(-80,-44),
  ABISELECT(25,17),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__A__8S6127C178S6127C19__A3__7S6127C1[] = {
  ABISELECT(-256,-136),
  ABISELECT(-176,-92),
  ABISELECT(-256,-136),
  ABISELECT(-151,-75),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
};
extern void _ZN8S6127C15D1Ev();
extern void _ZN8S6127C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C158S6127C19__A1__7S6127C1[] = {
  ABISELECT(-192,-100),
  ABISELECT(-176,-88),
  ABISELECT(-160,-80),
  ABISELECT(-128,-64),
  ABISELECT(-272,-144),
  ABISELECT(-167,-83),
  ABISELECT(-192,-100),
  ABISELECT(-272,-144),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C15[0]),
  (VTBL_ENTRY)&_ZN8S6127C15D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C158S6127C19__A1__7S6127C1[] = {
  ABISELECT(-80,-44),
  0,
  ABISELECT(-80,-44),
  ABISELECT(25,17),
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI8S6127C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C16__8S6127C158S6127C19__A1__7S6127C1[] = {
  ABISELECT(-144,-80),
  ABISELECT(128,64),
  (VTBL_ENTRY)&(_ZTI8S6127C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C13__8S6127C158S6127C19__A1__7S6127C1[] = {
  ABISELECT(-112,-64),
  ABISELECT(-7,-3),
  ABISELECT(160,80),
  (VTBL_ENTRY)&(_ZTI8S6127C15[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S6127C15D1Ev,_ZTv0_n32_N8S6127C15D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S6127C15D0Ev,_ZTv0_n32_N8S6127C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S6127C6__8S6127C158S6127C19__A1__7S6127C1[] = {
  ABISELECT(176,88),
  ABISELECT(-96,-56),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-96,-56),
  ABISELECT(9,5),
  ABISELECT(176,88),
  (VTBL_ENTRY)&(_ZTI8S6127C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C15D1Ev,_ZTv0_n32_N8S6127C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C15D0Ev,_ZTv0_n32_N8S6127C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S6127C19D1Ev,_ZTv0_n16_N8S6127C19D1Ev)();
extern void ABISELECT(_ZThn96_N8S6127C19D1Ev,_ZThn48_N8S6127C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6127C19D0Ev,_ZTv0_n16_N8S6127C19D0Ev)();
extern void ABISELECT(_ZThn96_N8S6127C19D0Ev,_ZThn48_N8S6127C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6127C20__8S6127C19__7S6127C1[] = {
  ABISELECT(-96,-48),
  ABISELECT(-288,-152),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S6127C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6127C19D1Ev,_ZTv0_n16_N8S6127C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6127C19D0Ev,_ZTv0_n16_N8S6127C19D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S6127C19D1Ev,_ZTv0_n32_N8S6127C19D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S6127C19D0Ev,_ZTv0_n32_N8S6127C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S6127C6__8S6127C19__7S6127C1[] = {
  ABISELECT(96,48),
  ABISELECT(-96,-56),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-96,-56),
  ABISELECT(9,5),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI8S6127C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C19D1Ev,_ZTv0_n32_N8S6127C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C19D0Ev,_ZTv0_n32_N8S6127C19D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S6127C19D1Ev,_ZTv0_n44_N8S6127C19D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S6127C19D0Ev,_ZTv0_n44_N8S6127C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S6127C5__8S6127C19__7S6127C1[] = {
  ABISELECT(112,60),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-80,-44),
  0,
  ABISELECT(-80,-44),
  ABISELECT(25,17),
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI8S6127C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6127C19D1Ev,_ZTv0_n44_N8S6127C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6127C19D0Ev,_ZTv0_n44_N8S6127C19D0Ev),
};
extern void ABISELECT(_ZThn8_N8S6127C19D1Ev,_ZThn4_N8S6127C19D1Ev)();
extern void ABISELECT(_ZThn8_N8S6127C19D0Ev,_ZThn4_N8S6127C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S6127C48S6127C21__8S6127C19__7S6127C1[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-200,-108),
  ABISELECT(-88,-44),
  ABISELECT(-104,-52),
  ABISELECT(-120,-64),
  ABISELECT(-200,-108),
  ABISELECT(-120,-64),
  ABISELECT(-120,-64),
  ABISELECT(-72,-36),
  ABISELECT(-200,-108),
  ABISELECT(-95,-47),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S6127C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S6127C19D1Ev,_ZThn4_N8S6127C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S6127C19D0Ev,_ZThn4_N8S6127C19D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S6127C13__8S6127C19__7S6127C1[] = {
  ABISELECT(-112,-64),
  ABISELECT(-7,-3),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S6127C19[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S6127C19D1Ev,_ZTv0_n32_N8S6127C19D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S6127C19D0Ev,_ZTv0_n32_N8S6127C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6127C12__A1__8S6127C19__7S6127C1[] = {
  ABISELECT(64,32),
  ABISELECT(-128,-72),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-128,-72),
  ABISELECT(-23,-11),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S6127C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C19D1Ev,_ZTv0_n32_N8S6127C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C19D0Ev,_ZTv0_n32_N8S6127C19D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S6127C19D1Ev,_ZTv0_n44_N8S6127C19D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S6127C19D0Ev,_ZTv0_n44_N8S6127C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6127C15__8S6127C19__7S6127C1[] = {
  ABISELECT(48,24),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-144,-80),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-144,-80),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S6127C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6127C19D1Ev,_ZTv0_n44_N8S6127C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6127C19D0Ev,_ZTv0_n44_N8S6127C19D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S6127C98S6127C177S6127C48S6127C21__A1__8S6127C19__7S6127C1[] = {
  ABISELECT(-216,-116),
  ABISELECT(-136,-72),
  ABISELECT(-216,-116),
  ABISELECT(-111,-55),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S6127C19[0]),
};
extern void ABISELECT(_ZThn40_N8S6127C19D1Ev,_ZThn20_N8S6127C19D1Ev)();
extern void ABISELECT(_ZThn40_N8S6127C19D0Ev,_ZThn20_N8S6127C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6127C208S6127C21__A1__8S6127C19__7S6127C1[] = {
  ABISELECT(-232,-124),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S6127C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S6127C19D1Ev,_ZThn20_N8S6127C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S6127C19D0Ev,_ZThn20_N8S6127C19D0Ev),
};
extern void ABISELECT(_ZThn48_N8S6127C19D1Ev,_ZThn24_N8S6127C19D1Ev)();
extern void ABISELECT(_ZThn48_N8S6127C19D0Ev,_ZThn24_N8S6127C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6127C17__A1__8S6127C19__7S6127C1[] = {
  ABISELECT(-240,-128),
  ABISELECT(-160,-84),
  ABISELECT(-160,-84),
  ABISELECT(-112,-56),
  ABISELECT(-240,-128),
  ABISELECT(-135,-67),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S6127C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S6127C19D1Ev,_ZThn24_N8S6127C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S6127C19D0Ev,_ZThn24_N8S6127C19D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S6127C98S6127C17__A2__8S6127C19__7S6127C1[] = {
  ABISELECT(-256,-136),
  ABISELECT(-176,-92),
  ABISELECT(-256,-136),
  ABISELECT(-151,-75),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S6127C19[0]),
};
extern void ABISELECT(_ZThn80_N8S6127C19D1Ev,_ZThn40_N8S6127C19D1Ev)();
extern void ABISELECT(_ZThn80_N8S6127C19D0Ev,_ZThn40_N8S6127C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6127C15__A__8S6127C19__7S6127C1[] = {
  ABISELECT(-192,-100),
  ABISELECT(-176,-88),
  ABISELECT(-160,-80),
  ABISELECT(-128,-64),
  ABISELECT(-272,-144),
  ABISELECT(-167,-83),
  ABISELECT(-192,-100),
  ABISELECT(-272,-144),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S6127C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S6127C19D1Ev,_ZThn40_N8S6127C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S6127C19D0Ev,_ZThn40_N8S6127C19D0Ev),
};
extern void _ZN8S6127C20D1Ev();
extern void _ZN8S6127C20D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C20__7S6127C1[] = {
  ABISELECT(-288,-152),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C20[0]),
  (VTBL_ENTRY)&_ZN8S6127C20D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C20D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6127C168S6127C20__A1__7S6127C1[] = {
  ABISELECT(-288,-152),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C16[0]),
};
static  VTT_ENTRY vtt_S6127C1[] = {
  {&(_ZTV7S6127C1[18]),  18,203},
  {&(_tg__ZTV7S6127C3__7S6127C1[16]),  16,18},
  {&(_tg__ZTV7S6127C97S6127C3__A2__7S6127C1[6]),  6,6},
  {&(_tg__ZTV8S6127C10__7S6127C97S6127C3__A2__7S6127C1[4]),  4,4},
  {&(_tg__ZTV8S6127C187S6127C3__7S6127C1[11]),  11,14},
  {&(_tg__ZTV7S6127C58S6127C187S6127C3__A1__7S6127C1[10]),  10,12},
  {&(_tg__ZTV7S6127C6__7S6127C58S6127C187S6127C3__A1__7S6127C1[8]),  8,10},
  {&(_tg__ZTV7S6127C9__7S6127C58S6127C187S6127C3__A1__7S6127C1[6]),  6,6},
  {&(_tg__ZTV7S6127C9__7S6127C58S6127C187S6127C3__A1__7S6127C1[6]),  6,6},
  {&(_tg__ZTV8S6127C13__7S6127C58S6127C187S6127C3__A1__7S6127C1[4]),  4,4},
  {&(_tg__ZTV8S6127C12__A1__7S6127C58S6127C187S6127C3__A1__7S6127C1[8]),  8,10},
  {&(_tg__ZTV7S6127C6__8S6127C187S6127C3__7S6127C1[8]),  8,10},
  {&(_tg__ZTV7S6127C9__8S6127C187S6127C3__7S6127C1[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C187S6127C3__7S6127C1[6]),  6,6},
  {&(_tg__ZTV8S6127C13__8S6127C187S6127C3__7S6127C1[4]),  4,4},
  {&(_tg__ZTV8S6127C12__A1__8S6127C187S6127C3__7S6127C1[8]),  8,10},
  {&(_tg__ZTV8S6127C17__8S6127C187S6127C3__7S6127C1[9]),  9,11},
  {&(_tg__ZTV7S6127C98S6127C17__A1__8S6127C187S6127C3__7S6127C1[6]),  6,6},
  {&(_tg__ZTV7S6127C4__7S6127C3__7S6127C1[15]),  15,17},
  {&(_tg__ZTV7S6127C5__7S6127C3__7S6127C1[11]),  11,13},
  {&(_tg__ZTV7S6127C6__7S6127C3__7S6127C1[8]),  8,10},
  {&(_tg__ZTV7S6127C5__7S6127C3__7S6127C1[11]),  11,13},
  {&(_tg__ZTV7S6127C5__7S6127C3__7S6127C1[11]),  11,13},
  {&(_tg__ZTV8S6127C13__7S6127C3__7S6127C1[4]),  4,4},
  {&(_tg__ZTV8S6127C12__A1__7S6127C3__7S6127C1[8]),  8,10},
  {&(_tg__ZTV8S6127C15__7S6127C3__7S6127C1[11]),  11,13},
  {&(_tg__ZTV8S6127C15__7S6127C3__7S6127C1[11]),  11,13},
  {&(_tg__ZTV7S6127C98S6127C177S6127C4__A1__7S6127C3__7S6127C1[6]),  6,6},
  {&(_tg__ZTV8S6127C18__7S6127C3__7S6127C1[11]),  11,14},
  {&(_tg__ZTV8S6127C17__A1__7S6127C3__7S6127C1[9]),  9,11},
  {&(_tg__ZTV7S6127C98S6127C17__A3__7S6127C3__7S6127C1[6]),  6,6},
  {&(_ZTV7S6127C1[49]),  49,203},
  {&(_ZTV7S6127C1[68]),  68,203},
  {&(_ZTV7S6127C1[78]),  78,203},
  {&(_ZTV7S6127C1[68]),  68,203},
  {&(_ZTV7S6127C1[68]),  68,203},
  {&(_ZTV7S6127C1[84]),  84,203},
  {&(_ZTV7S6127C1[92]),  92,203},
  {&(_ZTV7S6127C1[105]),  105,203},
  {&(_ZTV7S6127C1[105]),  105,203},
  {&(_ZTV7S6127C1[57]),  57,203},
  {&(_ZTV7S6127C1[31]),  31,203},
  {&(_ZTV7S6127C1[116]),  116,203},
  {&(_ZTV7S6127C1[124]),  124,203},
  {&(_ZTV7S6127C1[140]),  140,203},
  {&(_ZTV7S6127C1[201]),  201,203},
  {&(_ZTV7S6127C1[156]),  156,203},
  {&(_ZTV7S6127C1[164]),  164,203},
  {&(_ZTV7S6127C1[167]),  167,203},
  {&(_ZTV7S6127C1[177]),  177,203},
  {&(_ZTV7S6127C1[185]),  185,203},
  {&(_ZTV7S6127C1[195]),  195,203},
  {&(_tg__ZTV7S6127C4__7S6127C1[14]),  14,16},
  {&(_tg__ZTV8S6127C177S6127C4__7S6127C1[8]),  8,10},
  {&(_tg__ZTV8S6127C138S6127C177S6127C4__A1__7S6127C1[4]),  4,4},
  {&(_tg__ZTV8S6127C108S6127C138S6127C177S6127C4__A4__7S6127C1[4]),  4,4},
  {&(_tg__ZTV7S6127C98S6127C177S6127C4__A1__7S6127C1[6]),  6,6},
  {&(_tg__ZTV8S6127C10__7S6127C98S6127C177S6127C4__A1__7S6127C1[4]),  4,4},
  {&(_tg__ZTV8S6127C12__8S6127C177S6127C4__7S6127C1[8]),  8,10},
  {&(_tg__ZTV7S6127C9__8S6127C177S6127C4__7S6127C1[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C177S6127C4__7S6127C1[6]),  6,6},
  {&(_tg__ZTV7S6127C9__A__8S6127C177S6127C4__7S6127C1[6]),  6,6},
  {&(_tg__ZTV7S6127C5__7S6127C4__7S6127C1[11]),  11,13},
  {&(_tg__ZTV7S6127C6__7S6127C4__7S6127C1[8]),  8,10},
  {&(_tg__ZTV7S6127C5__7S6127C4__7S6127C1[11]),  11,13},
  {&(_tg__ZTV7S6127C5__7S6127C4__7S6127C1[11]),  11,13},
  {&(_tg__ZTV8S6127C13__7S6127C4__7S6127C1[4]),  4,4},
  {&(_tg__ZTV8S6127C12__A1__7S6127C4__7S6127C1[8]),  8,10},
  {&(_tg__ZTV8S6127C15__7S6127C4__7S6127C1[11]),  11,13},
  {&(_tg__ZTV8S6127C15__7S6127C4__7S6127C1[11]),  11,13},
  {&(_tg__ZTV7S6127C98S6127C17__A1__7S6127C4__7S6127C1[6]),  6,6},
  {&(_tg__ZTV7S6127C5__7S6127C1[10]),  10,12},
  {&(_tg__ZTV7S6127C6__7S6127C5__7S6127C1[8]),  8,10},
  {&(_tg__ZTV7S6127C5__7S6127C1[10]),  10,12},
  {&(_tg__ZTV7S6127C5__7S6127C1[10]),  10,12},
  {&(_tg__ZTV8S6127C13__7S6127C5__7S6127C1[4]),  4,4},
  {&(_tg__ZTV8S6127C12__A1__7S6127C5__7S6127C1[8]),  8,10},
  {&(_tg__ZTV7S6127C6__7S6127C1[7]),  7,9},
  {&(_tg__ZTV8S6127C127S6127C6__7S6127C1[7]),  7,9},
  {&(_tg__ZTV8S6127C108S6127C127S6127C6__A1__7S6127C1[4]),  4,4},
  {&(_tg__ZTV7S6127C9__8S6127C127S6127C6__7S6127C1[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C127S6127C6__7S6127C1[6]),  6,6},
  {&(_tg__ZTV7S6127C9__7S6127C6__7S6127C1[6]),  6,6},
  {&(_tg__ZTV7S6127C9__7S6127C6__7S6127C1[6]),  6,6},
  {&(_tg__ZTV7S6127C9__7S6127C1[6]),  6,6},
  {&(_tg__ZTV7S6127C9__7S6127C1[6]),  6,6},
  {&(_tg__ZTV8S6127C10__7S6127C1[4]),  4,4},
  {&(_tg__ZTV8S6127C13__7S6127C1[4]),  4,4},
  {&(_tg__ZTV8S6127C108S6127C13__A2__7S6127C1[4]),  4,4},
  {&(_tg__ZTV8S6127C12__A1__7S6127C1[7]),  7,9},
  {&(_tg__ZTV8S6127C108S6127C12__A3__7S6127C1[4]),  4,4},
  {&(_tg__ZTV7S6127C9__8S6127C12__A1__7S6127C1[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C12__A1__7S6127C1[6]),  6,6},
  {&(_tg__ZTV8S6127C15__7S6127C1[10]),  10,12},
  {&(_tg__ZTV7S6127C9__8S6127C15__7S6127C1[6]),  6,6},
  {&(_tg__ZTV8S6127C15__7S6127C1[10]),  10,12},
  {&(_tg__ZTV8S6127C13__8S6127C15__7S6127C1[4]),  4,4},
  {&(_tg__ZTV7S6127C6__8S6127C15__7S6127C1[8]),  8,10},
  {&(_tg__ZTV7S6127C9__8S6127C15__7S6127C1[6]),  6,6},
  {&(_tg__ZTV8S6127C16__7S6127C1[3]),  3,3},
  {&(_tg__ZTV8S6127C17__A1__7S6127C1[8]),  8,10},
  {&(_tg__ZTV8S6127C138S6127C17__A2__7S6127C1[4]),  4,4},
  {&(_tg__ZTV8S6127C108S6127C138S6127C17__A5__7S6127C1[4]),  4,4},
  {&(_tg__ZTV7S6127C98S6127C17__A3__7S6127C1[6]),  6,6},
  {&(_tg__ZTV8S6127C10__7S6127C98S6127C17__A3__7S6127C1[4]),  4,4},
  {&(_tg__ZTV8S6127C12__8S6127C17__A1__7S6127C1[8]),  8,10},
  {&(_tg__ZTV7S6127C9__8S6127C17__A1__7S6127C1[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C17__A1__7S6127C1[6]),  6,6},
  {&(_tg__ZTV7S6127C9__A__8S6127C17__A1__7S6127C1[6]),  6,6},
  {&(_tg__ZTV8S6127C19__7S6127C1[15]),  15,17},
  {&(_tg__ZTV8S6127C218S6127C19__7S6127C1[14]),  14,16},
  {&(_tg__ZTV8S6127C168S6127C218S6127C19__A2__7S6127C1[3]),  3,3},
  {&(_tg__ZTV7S6127C48S6127C218S6127C19__A1__7S6127C1[14]),  14,16},
  {&(_tg__ZTV8S6127C177S6127C48S6127C218S6127C19__A2__7S6127C1[8]),  8,10},
  {&(_tg__ZTV8S6127C138S6127C177S6127C48S6127C218S6127C19__A3__7S6127C1[4]),  4,4},
  {&(_tg__ZTV8S6127C108S6127C138S6127C177S6127C48S6127C218S6127C19__A6__7S6127C1[4]),  4,4},
  {&(_tg__ZTV7S6127C98S6127C177S6127C48S6127C218S6127C19__A4__7S6127C1[6]),  6,6},
  {&(_tg__ZTV8S6127C10__7S6127C98S6127C177S6127C48S6127C218S6127C19__A4__7S6127C1[4]),  4,4},
  {&(_tg__ZTV8S6127C12__8S6127C177S6127C48S6127C218S6127C19__A2__7S6127C1[8]),  8,10},
  {&(_tg__ZTV7S6127C9__8S6127C177S6127C48S6127C218S6127C19__A2__7S6127C1[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C177S6127C48S6127C218S6127C19__A2__7S6127C1[6]),  6,6},
  {&(_tg__ZTV7S6127C9__A__8S6127C177S6127C48S6127C218S6127C19__A2__7S6127C1[6]),  6,6},
  {&(_tg__ZTV7S6127C5__7S6127C48S6127C218S6127C19__A1__7S6127C1[11]),  11,13},
  {&(_tg__ZTV7S6127C6__7S6127C48S6127C218S6127C19__A1__7S6127C1[8]),  8,10},
  {&(_tg__ZTV7S6127C5__7S6127C48S6127C218S6127C19__A1__7S6127C1[11]),  11,13},
  {&(_tg__ZTV7S6127C5__7S6127C48S6127C218S6127C19__A1__7S6127C1[11]),  11,13},
  {&(_tg__ZTV8S6127C13__7S6127C48S6127C218S6127C19__A1__7S6127C1[4]),  4,4},
  {&(_tg__ZTV8S6127C12__A1__7S6127C48S6127C218S6127C19__A1__7S6127C1[8]),  8,10},
  {&(_tg__ZTV8S6127C15__7S6127C48S6127C218S6127C19__A1__7S6127C1[11]),  11,13},
  {&(_tg__ZTV8S6127C15__7S6127C48S6127C218S6127C19__A1__7S6127C1[11]),  11,13},
  {&(_tg__ZTV7S6127C98S6127C17__A1__7S6127C48S6127C218S6127C19__A1__7S6127C1[6]),  6,6},
  {&(_tg__ZTV8S6127C208S6127C218S6127C19__A1__7S6127C1[3]),  3,5},
  {&(_tg__ZTV8S6127C168S6127C208S6127C218S6127C19__A3__7S6127C1[3]),  3,3},
  {&(_tg__ZTV7S6127C4__8S6127C218S6127C19__7S6127C1[14]),  14,16},
  {&(_tg__ZTV7S6127C5__8S6127C218S6127C19__7S6127C1[11]),  11,13},
  {&(_tg__ZTV7S6127C6__8S6127C218S6127C19__7S6127C1[8]),  8,10},
  {&(_tg__ZTV7S6127C5__8S6127C218S6127C19__7S6127C1[11]),  11,13},
  {&(_tg__ZTV7S6127C5__8S6127C218S6127C19__7S6127C1[11]),  11,13},
  {&(_tg__ZTV8S6127C13__8S6127C218S6127C19__7S6127C1[4]),  4,4},
  {&(_tg__ZTV8S6127C12__A1__8S6127C218S6127C19__7S6127C1[8]),  8,10},
  {&(_tg__ZTV8S6127C15__8S6127C218S6127C19__7S6127C1[11]),  11,13},
  {&(_tg__ZTV8S6127C15__8S6127C218S6127C19__7S6127C1[11]),  11,13},
  {&(_tg__ZTV7S6127C98S6127C177S6127C4__A1__8S6127C218S6127C19__7S6127C1[6]),  6,6},
  {&(_tg__ZTV8S6127C20__8S6127C218S6127C19__7S6127C1[3]),  3,5},
  {&(_tg__ZTV8S6127C178S6127C19__A3__7S6127C1[8]),  8,10},
  {&(_tg__ZTV8S6127C138S6127C178S6127C19__A4__7S6127C1[4]),  4,4},
  {&(_tg__ZTV8S6127C108S6127C138S6127C178S6127C19__A7__7S6127C1[4]),  4,4},
  {&(_tg__ZTV7S6127C98S6127C178S6127C19__A5__7S6127C1[6]),  6,6},
  {&(_tg__ZTV8S6127C10__7S6127C98S6127C178S6127C19__A5__7S6127C1[4]),  4,4},
  {&(_tg__ZTV8S6127C12__8S6127C178S6127C19__A3__7S6127C1[8]),  8,10},
  {&(_tg__ZTV7S6127C9__8S6127C178S6127C19__A3__7S6127C1[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C178S6127C19__A3__7S6127C1[6]),  6,6},
  {&(_tg__ZTV7S6127C9__A__8S6127C178S6127C19__A3__7S6127C1[6]),  6,6},
  {&(_tg__ZTV8S6127C158S6127C19__A1__7S6127C1[10]),  10,12},
  {&(_tg__ZTV7S6127C9__8S6127C158S6127C19__A1__7S6127C1[6]),  6,6},
  {&(_tg__ZTV8S6127C16__8S6127C158S6127C19__A1__7S6127C1[3]),  3,3},
  {&(_tg__ZTV8S6127C13__8S6127C158S6127C19__A1__7S6127C1[4]),  4,4},
  {&(_tg__ZTV7S6127C6__8S6127C158S6127C19__A1__7S6127C1[8]),  8,10},
  {&(_tg__ZTV7S6127C9__8S6127C158S6127C19__A1__7S6127C1[6]),  6,6},
  {&(_tg__ZTV8S6127C20__8S6127C19__7S6127C1[4]),  4,6},
  {&(_tg__ZTV7S6127C6__8S6127C19__7S6127C1[8]),  8,10},
  {&(_tg__ZTV7S6127C5__8S6127C19__7S6127C1[11]),  11,13},
  {&(_tg__ZTV7S6127C5__8S6127C19__7S6127C1[11]),  11,13},
  {&(_tg__ZTV7S6127C48S6127C21__8S6127C19__7S6127C1[14]),  14,16},
  {&(_tg__ZTV7S6127C5__8S6127C19__7S6127C1[11]),  11,13},
  {&(_tg__ZTV8S6127C13__8S6127C19__7S6127C1[4]),  4,4},
  {&(_tg__ZTV8S6127C12__A1__8S6127C19__7S6127C1[8]),  8,10},
  {&(_tg__ZTV8S6127C15__8S6127C19__7S6127C1[11]),  11,13},
  {&(_tg__ZTV8S6127C15__8S6127C19__7S6127C1[11]),  11,13},
  {&(_tg__ZTV7S6127C98S6127C177S6127C48S6127C21__A1__8S6127C19__7S6127C1[6]),  6,6},
  {&(_tg__ZTV8S6127C208S6127C21__A1__8S6127C19__7S6127C1[3]),  3,5},
  {&(_tg__ZTV8S6127C17__A1__8S6127C19__7S6127C1[8]),  8,10},
  {&(_tg__ZTV7S6127C98S6127C17__A2__8S6127C19__7S6127C1[6]),  6,6},
  {&(_tg__ZTV8S6127C15__A__8S6127C19__7S6127C1[10]),  10,12},
  {&(_tg__ZTV8S6127C20__7S6127C1[3]),  3,5},
  {&(_tg__ZTV8S6127C168S6127C20__A1__7S6127C1[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S6127C1[];
extern  VTBL_ENTRY _ZTV7S6127C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C1[];
static VTBL_ENTRY alt_thunk_names99[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6127C19D0Ev,_ZTv0_n16_N8S6127C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S6127C19D0Ev,_ZThn48_N8S6127C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6127C19D1Ev,_ZTv0_n16_N8S6127C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S6127C19D1Ev,_ZThn48_N8S6127C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S6127C4D0Ev,_ZTv0_n32_N7S6127C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S6127C4D0Ev,_ZThn44_N7S6127C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S6127C4D0Ev,_ZThn28_N7S6127C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S6127C4D1Ev,_ZTv0_n32_N7S6127C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S6127C4D1Ev,_ZThn44_N7S6127C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S6127C4D1Ev,_ZThn28_N7S6127C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S6127C4D0Ev,_ZTv0_n44_N7S6127C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S6127C4D0Ev,_ZThn52_N7S6127C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S6127C4D0Ev,_ZThn16_N7S6127C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S6127C4D1Ev,_ZTv0_n44_N7S6127C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S6127C4D1Ev,_ZThn52_N7S6127C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S6127C4D1Ev,_ZThn16_N7S6127C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6127C17D0Ev,_ZTv0_n32_N8S6127C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6127C17D0Ev,_ZThn44_N8S6127C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6127C17D1Ev,_ZTv0_n32_N8S6127C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6127C17D1Ev,_ZThn44_N8S6127C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S6127C3D0Ev,_ZTv0_n36_N7S6127C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S6127C3D0Ev,_ZThn88_N7S6127C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S6127C3D1Ev,_ZTv0_n36_N7S6127C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S6127C3D1Ev,_ZThn88_N7S6127C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S6127C3D0Ev,_ZTv0_n32_N7S6127C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S6127C3D0Ev,_ZThn72_N7S6127C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S6127C3D0Ev,_ZThn56_N7S6127C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S6127C3D1Ev,_ZTv0_n32_N7S6127C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S6127C3D1Ev,_ZThn72_N7S6127C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S6127C3D1Ev,_ZThn56_N7S6127C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S6127C3D0Ev,_ZTv0_n44_N7S6127C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S6127C3D0Ev,_ZThn80_N7S6127C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S6127C3D0Ev,_ZThn44_N7S6127C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S6127C3D1Ev,_ZTv0_n44_N7S6127C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S6127C3D1Ev,_ZThn80_N7S6127C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S6127C3D1Ev,_ZThn44_N7S6127C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S6127C3D0Ev,_ZTv0_n60_N7S6127C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S6127C3D0Ev,_ZThn28_N7S6127C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S6127C3D1Ev,_ZTv0_n60_N7S6127C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S6127C3D1Ev,_ZThn28_N7S6127C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S6127C18D0Ev,_ZTv0_n36_N8S6127C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S6127C18D0Ev,_ZThn84_N8S6127C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S6127C18D1Ev,_ZTv0_n36_N8S6127C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S6127C18D1Ev,_ZThn84_N8S6127C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6127C18D0Ev,_ZTv0_n32_N8S6127C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S6127C18D0Ev,_ZThn68_N8S6127C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S6127C18D0Ev,_ZThn52_N8S6127C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6127C18D1Ev,_ZTv0_n32_N8S6127C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S6127C18D1Ev,_ZThn68_N8S6127C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S6127C18D1Ev,_ZThn52_N8S6127C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S6127C5D0Ev,_ZThn28_N7S6127C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S6127C5D0Ev,_ZThn12_N7S6127C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S6127C5D0Ev,_ZThn68_N7S6127C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S6127C5D0Ev,_ZThn52_N7S6127C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S6127C5D1Ev,_ZThn28_N7S6127C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S6127C5D1Ev,_ZThn12_N7S6127C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S6127C5D1Ev,_ZThn68_N7S6127C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S6127C5D1Ev,_ZThn52_N7S6127C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S6127C1D0Ev,_ZTv0_n16_N7S6127C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N7S6127C1D0Ev,_ZThn152_N7S6127C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S6127C1D1Ev,_ZTv0_n16_N7S6127C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N7S6127C1D1Ev,_ZThn152_N7S6127C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N7S6127C1D0Ev,_ZTv0_n64_N7S6127C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S6127C1D0Ev,_ZThn104_N7S6127C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N7S6127C1D1Ev,_ZTv0_n64_N7S6127C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S6127C1D1Ev,_ZThn104_N7S6127C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S6127C1D0Ev,_ZTv0_n36_N7S6127C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S6127C1D0Ev,_ZThn88_N7S6127C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S6127C1D1Ev,_ZTv0_n36_N7S6127C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S6127C1D1Ev,_ZThn88_N7S6127C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S6127C1D0Ev,_ZTv0_n32_N7S6127C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S6127C1D0Ev,_ZThn72_N7S6127C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S6127C1D0Ev,_ZThn56_N7S6127C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S6127C1D1Ev,_ZTv0_n32_N7S6127C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S6127C1D1Ev,_ZThn72_N7S6127C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S6127C1D1Ev,_ZThn56_N7S6127C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S6127C1D0Ev,_ZTv0_n44_N7S6127C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S6127C1D0Ev,_ZThn80_N7S6127C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S6127C1D0Ev,_ZThn44_N7S6127C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S6127C1D1Ev,_ZTv0_n44_N7S6127C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S6127C1D1Ev,_ZThn80_N7S6127C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S6127C1D1Ev,_ZThn44_N7S6127C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S6127C1D0Ev,_ZTv0_n60_N7S6127C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S6127C1D0Ev,_ZThn28_N7S6127C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S6127C1D1Ev,_ZTv0_n60_N7S6127C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S6127C1D1Ev,_ZThn28_N7S6127C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6127C1 = {  "S6127C1", // class name
  bases_S6127C1, 84,
  &(vtc_S6127C1[0]), // expected_vtbl_contents
  &(vtt_S6127C1[0]), // expected_vtt_contents
  ABISELECT(304,156), // object size
  NSPAIRA(_ZTI7S6127C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S6127C1),203, //virtual function table var
  18, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6127C1),176, //virtual table table var
  42, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names99,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21091C4  {
  virtual void  v6(); // _ZN8S21091C42v6Ev
  virtual void  v7(); // _ZN8S21091C42v7Ev
  ~S21091C4(); // tgen
  S21091C4(); // tgen
};
//SIG(-1 S21091C4) C1{ v1 v2}


void  S21091C4 ::v6(){vfunc_called(this, "_ZN8S21091C42v6Ev");}
void  S21091C4 ::v7(){vfunc_called(this, "_ZN8S21091C42v7Ev");}
S21091C4 ::~S21091C4(){ note_dtor("S21091C4", this);} // tgen
S21091C4 ::S21091C4(){ note_ctor("S21091C4", this);} // tgen

static void Test_S21091C4()
{
  extern Class_Descriptor cd_S21091C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S21091C4, buf);
    S21091C4 *dp, &lv = *(dp=new (buf) S21091C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S21091C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21091C4)");
    test_class_info(&lv, &cd_S21091C4);
    dp->~S21091C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21091C4(Test_S21091C4, "S21091C4", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S21091C4C1Ev();
extern void _ZN8S21091C4D1Ev();
Name_Map name_map_S21091C4[] = {
  NSPAIR(_ZN8S21091C4C1Ev),
  NSPAIR(_ZN8S21091C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21091C4[];
extern void _ZN8S21091C42v6Ev();
extern void _ZN8S21091C42v7Ev();
static  VTBL_ENTRY vtc_S21091C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21091C4[0]),
  (VTBL_ENTRY)&_ZN8S21091C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21091C42v7Ev,
};
extern VTBL_ENTRY _ZTI8S21091C4[];
extern  VTBL_ENTRY _ZTV8S21091C4[];
Class_Descriptor cd_S21091C4 = {  "S21091C4", // class name
  0,0,//no base classes
  &(vtc_S21091C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S21091C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21091C4),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21091C6  {
  ::S7856C24 s21091c6f0;
  int s21091c6f1[4];
  virtual void  v8(); // _ZN8S21091C62v8Ev
  ~S21091C6(); // tgen
  S21091C6(); // tgen
};
//SIG(-1 S21091C6) C1{ v1 FC2{ m} Fi[4]}


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

static void Test_S21091C6()
{
  extern Class_Descriptor cd_S21091C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,7)];
    init_test(&cd_S21091C6, buf);
    S21091C6 *dp, &lv = *(dp=new (buf) S21091C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S21091C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21091C6)");
    check_field_offset(lv, s21091c6f0, ABISELECT(8,4), "S21091C6.s21091c6f0");
    check_field_offset(lv, s21091c6f1, ABISELECT(12,8), "S21091C6.s21091c6f1");
    test_class_info(&lv, &cd_S21091C6);
    dp->~S21091C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21091C6(Test_S21091C6, "S21091C6", ABISELECT(32,24));

#else // __cplusplus

extern void _ZN8S21091C6C1Ev();
extern void _ZN8S21091C6D1Ev();
Name_Map name_map_S21091C6[] = {
  NSPAIR(_ZN8S21091C6C1Ev),
  NSPAIR(_ZN8S21091C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21091C6[];
extern void _ZN8S21091C62v8Ev();
static  VTBL_ENTRY vtc_S21091C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21091C6[0]),
  (VTBL_ENTRY)&_ZN8S21091C62v8Ev,
};
extern VTBL_ENTRY _ZTI8S21091C6[];
extern  VTBL_ENTRY _ZTV8S21091C6[];
Class_Descriptor cd_S21091C6 = {  "S21091C6", // class name
  0,0,//no base classes
  &(vtc_S21091C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,24), // object size
  NSPAIRA(_ZTI8S21091C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21091C6),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21091C8  {
  virtual void  v9(); // _ZN8S21091C82v9Ev
  virtual void  v10(); // _ZN8S21091C83v10Ev
  ~S21091C8(); // tgen
  S21091C8(); // tgen
};
//SIG(-1 S21091C8) C1{ v1 v2}


void  S21091C8 ::v9(){vfunc_called(this, "_ZN8S21091C82v9Ev");}
void  S21091C8 ::v10(){vfunc_called(this, "_ZN8S21091C83v10Ev");}
S21091C8 ::~S21091C8(){ note_dtor("S21091C8", this);} // tgen
S21091C8 ::S21091C8(){ note_ctor("S21091C8", this);} // tgen

static void Test_S21091C8()
{
  extern Class_Descriptor cd_S21091C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S21091C8, buf);
    S21091C8 *dp, &lv = *(dp=new (buf) S21091C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S21091C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21091C8)");
    test_class_info(&lv, &cd_S21091C8);
    dp->~S21091C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21091C8(Test_S21091C8, "S21091C8", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S21091C8C1Ev();
extern void _ZN8S21091C8D1Ev();
Name_Map name_map_S21091C8[] = {
  NSPAIR(_ZN8S21091C8C1Ev),
  NSPAIR(_ZN8S21091C8D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21091C8[];
extern void _ZN8S21091C82v9Ev();
extern void _ZN8S21091C83v10Ev();
static  VTBL_ENTRY vtc_S21091C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21091C8[0]),
  (VTBL_ENTRY)&_ZN8S21091C82v9Ev,
  (VTBL_ENTRY)&_ZN8S21091C83v10Ev,
};
extern VTBL_ENTRY _ZTI8S21091C8[];
extern  VTBL_ENTRY _ZTV8S21091C8[];
Class_Descriptor cd_S21091C8 = {  "S21091C8", // class name
  0,0,//no base classes
  &(vtc_S21091C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S21091C8),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21091C8),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21091C7  : S21091C8 {
  int s21091c7f0[5];
  void *s21091c7f1;
  __tsi64 s21091c7f2[4];
  virtual void  v11(); // _ZN8S21091C73v11Ev
  virtual void  v12(); // _ZN8S21091C73v12Ev
  virtual void  v13(); // _ZN8S21091C73v13Ev
  virtual void  v14(); // _ZN8S21091C73v14Ev
  ~S21091C7(); // tgen
  S21091C7(); // tgen
};
//SIG(-1 S21091C7) C1{ BC2{ v5 v6} v1 v2 v3 v4 Fi[5] Fp FL[4]}


void  S21091C7 ::v11(){vfunc_called(this, "_ZN8S21091C73v11Ev");}
void  S21091C7 ::v12(){vfunc_called(this, "_ZN8S21091C73v12Ev");}
void  S21091C7 ::v13(){vfunc_called(this, "_ZN8S21091C73v13Ev");}
void  S21091C7 ::v14(){vfunc_called(this, "_ZN8S21091C73v14Ev");}
S21091C7 ::~S21091C7(){ note_dtor("S21091C7", this);} // tgen
S21091C7 ::S21091C7(){ note_ctor("S21091C7", this);} // tgen

static void Test_S21091C7()
{
  extern Class_Descriptor cd_S21091C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,16)];
    init_test(&cd_S21091C7, buf);
    S21091C7 *dp, &lv = *(dp=new (buf) S21091C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,60), "sizeof(S21091C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21091C7)");
    check_base_class_offset(lv, (S21091C8*), 0, "S21091C7");
    check_field_offset(lv, s21091c7f0, ABISELECT(8,4), "S21091C7.s21091c7f0");
    check_field_offset(lv, s21091c7f1, ABISELECT(32,24), "S21091C7.s21091c7f1");
    check_field_offset(lv, s21091c7f2, ABISELECT(40,28), "S21091C7.s21091c7f2");
    test_class_info(&lv, &cd_S21091C7);
    dp->~S21091C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21091C7(Test_S21091C7, "S21091C7", ABISELECT(72,60));

#else // __cplusplus

extern void _ZN8S21091C7C1Ev();
extern void _ZN8S21091C7D1Ev();
Name_Map name_map_S21091C7[] = {
  NSPAIR(_ZN8S21091C7C1Ev),
  NSPAIR(_ZN8S21091C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21091C8;
extern VTBL_ENTRY _ZTI8S21091C8[];
extern  VTBL_ENTRY _ZTV8S21091C8[];
static Base_Class bases_S21091C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21091C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21091C7[];
extern void _ZN8S21091C82v9Ev();
extern void _ZN8S21091C83v10Ev();
extern void _ZN8S21091C73v11Ev();
extern void _ZN8S21091C73v12Ev();
extern void _ZN8S21091C73v13Ev();
extern void _ZN8S21091C73v14Ev();
static  VTBL_ENTRY vtc_S21091C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21091C7[0]),
  (VTBL_ENTRY)&_ZN8S21091C82v9Ev,
  (VTBL_ENTRY)&_ZN8S21091C83v10Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v12Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v13Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v14Ev,
};
extern VTBL_ENTRY _ZTI8S21091C7[];
extern  VTBL_ENTRY _ZTV8S21091C7[];
Class_Descriptor cd_S21091C7 = {  "S21091C7", // class name
  bases_S21091C7, 1,
  &(vtc_S21091C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,60), // object size
  NSPAIRA(_ZTI8S21091C7),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S21091C7),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21091C3  : virtual S21091C4 , virtual S7856C24 , S21091C6 , S21091C7 {
  virtual void  v15(); // _ZN8S21091C33v15Ev
  virtual void  v16(); // _ZN8S21091C33v16Ev
  virtual void  v17(); // _ZN8S21091C33v17Ev
  ~S21091C3(); // tgen
  S21091C3(); // tgen
};
//SIG(-1 S21091C3) C1{ VBC2{ v4 v5} VBC3{ m} BC4{ v6 FC3 Fi[4]} BC5{ BC6{ v7 v8} v9 v10 v11 v12 Fi[5] Fp FL[4]} v1 v2 v3}


void  S21091C3 ::v15(){vfunc_called(this, "_ZN8S21091C33v15Ev");}
void  S21091C3 ::v16(){vfunc_called(this, "_ZN8S21091C33v16Ev");}
void  S21091C3 ::v17(){vfunc_called(this, "_ZN8S21091C33v17Ev");}
S21091C3 ::~S21091C3(){ note_dtor("S21091C3", this);} // tgen
S21091C3 ::S21091C3(){ note_ctor("S21091C3", this);} // tgen

static void Test_S21091C3()
{
  extern Class_Descriptor cd_S21091C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,23)];
    init_test(&cd_S21091C3, buf);
    S21091C3 *dp, &lv = *(dp=new (buf) S21091C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,88), "sizeof(S21091C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21091C3)");
    check_base_class_offset(lv, (S21091C4*), ABISELECT(104,84), "S21091C3");
    check_base_class_offset(lv, (S7856C24*), 0, "S21091C3");
    check_base_class_offset(lv, (S21091C6*), 0, "S21091C3");
    check_base_class_offset(lv, (S21091C8*)(S21091C7*), ABISELECT(32,24), "S21091C3");
    check_base_class_offset(lv, (S21091C7*), ABISELECT(32,24), "S21091C3");
    test_class_info(&lv, &cd_S21091C3);
    dp->~S21091C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21091C3(Test_S21091C3, "S21091C3", ABISELECT(112,88));

#else // __cplusplus

extern void _ZN8S21091C3C1Ev();
extern void _ZN8S21091C3D1Ev();
Name_Map name_map_S21091C3[] = {
  NSPAIR(_ZN8S21091C3C1Ev),
  NSPAIR(_ZN8S21091C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21091C4;
extern VTBL_ENTRY _ZTI8S21091C4[];
extern  VTBL_ENTRY _ZTV8S21091C4[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S21091C6;
extern VTBL_ENTRY _ZTI8S21091C6[];
extern  VTBL_ENTRY _ZTV8S21091C6[];
extern Class_Descriptor cd_S21091C8;
extern VTBL_ENTRY _ZTI8S21091C8[];
extern  VTBL_ENTRY _ZTV8S21091C8[];
extern Class_Descriptor cd_S21091C7;
extern VTBL_ENTRY _ZTI8S21091C7[];
extern  VTBL_ENTRY _ZTV8S21091C7[];
static Base_Class bases_S21091C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21091C4,    ABISELECT(104,84), //bcp->offset
    16, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21091C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21091C8,    ABISELECT(32,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21091C7,    ABISELECT(32,24), //bcp->offset
    8, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21091C3[];
extern void _ZN8S21091C62v8Ev();
extern void _ZN8S21091C33v15Ev();
extern void _ZN8S21091C33v16Ev();
extern void _ZN8S21091C33v17Ev();
extern void _ZN8S21091C82v9Ev();
extern void _ZN8S21091C83v10Ev();
extern void _ZN8S21091C73v11Ev();
extern void _ZN8S21091C73v12Ev();
extern void _ZN8S21091C73v13Ev();
extern void _ZN8S21091C73v14Ev();
extern void _ZN8S21091C42v6Ev();
extern void _ZN8S21091C42v7Ev();
static  VTBL_ENTRY vtc_S21091C3[] = {
  0,
  ABISELECT(104,84),
  0,
  (VTBL_ENTRY)&(_ZTI8S21091C3[0]),
  (VTBL_ENTRY)&_ZN8S21091C62v8Ev,
  (VTBL_ENTRY)&_ZN8S21091C33v15Ev,
  (VTBL_ENTRY)&_ZN8S21091C33v16Ev,
  (VTBL_ENTRY)&_ZN8S21091C33v17Ev,
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI8S21091C3[0]),
  (VTBL_ENTRY)&_ZN8S21091C82v9Ev,
  (VTBL_ENTRY)&_ZN8S21091C83v10Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v12Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v13Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v14Ev,
  0,
  0,
  ABISELECT(-104,-84),
  (VTBL_ENTRY)&(_ZTI8S21091C3[0]),
  (VTBL_ENTRY)&_ZN8S21091C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21091C42v7Ev,
};
extern VTBL_ENTRY _ZTV8S21091C3[];
static  VTT_ENTRY vtt_S21091C3[] = {
  {&(_ZTV8S21091C3[4]),  4,22},
  {&(_ZTV8S21091C3[20]),  20,22},
};
extern VTBL_ENTRY _ZTI8S21091C3[];
extern  VTBL_ENTRY _ZTV8S21091C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21091C3[];
Class_Descriptor cd_S21091C3 = {  "S21091C3", // class name
  bases_S21091C3, 5,
  &(vtc_S21091C3[0]), // expected_vtbl_contents
  &(vtt_S21091C3[0]), // expected_vtt_contents
  ABISELECT(112,88), // object size
  NSPAIRA(_ZTI8S21091C3),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S21091C3),22, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21091C3),2, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21091C2  : virtual S21091C3 {
  ::S19994C18 s21091c2f0;
  ::S21091C7 s21091c2f1;
  int s21091c2f2;
  ::S19994C7 s21091c2f3;
  virtual void  v18(); // _ZN8S21091C23v18Ev
  virtual void  v19(); // _ZN8S21091C23v19Ev
  virtual void  v20(); // _ZN8S21091C23v20Ev
  virtual void  v21(); // _ZN8S21091C23v21Ev
  ~S21091C2(); // tgen
  S21091C2(); // tgen
};
//SIG(-1 S21091C2) C1{ VBC2{ VBC3{ v5 v6} VBC4{ m} BC5{ v7 FC4 Fi[4]} BC6{ BC7{ v8 v9} v10 v11 v12 v13 Fi[5] Fp FL[4]} v14 v15 v16} v1 v2 v3 v4 FC8{ VBC9{ v20 FC10{ m} Fi[4]} BC11{ v21 v22} VBC12{ v23 v24} BC13{ BC11 VBC14{ VBC10 VBC12 BC11 VBC15{ BC12 v25 v26 v27 v28 Fi[5] Fp FL[4]} v29} BC10 BC15 BC12 v30} BC16{ v31 Fp FD[7]} v17 v18 v19 Fi} FC6 Fi FC17{ BC14 VBC16 vd v32 Fp}}


void  S21091C2 ::v18(){vfunc_called(this, "_ZN8S21091C23v18Ev");}
void  S21091C2 ::v19(){vfunc_called(this, "_ZN8S21091C23v19Ev");}
void  S21091C2 ::v20(){vfunc_called(this, "_ZN8S21091C23v20Ev");}
void  S21091C2 ::v21(){vfunc_called(this, "_ZN8S21091C23v21Ev");}
S21091C2 ::~S21091C2(){ note_dtor("S21091C2", this);} // tgen
S21091C2 ::S21091C2(){ note_ctor("S21091C2", this);} // tgen

static void Test_S21091C2()
{
  extern Class_Descriptor cd_S21091C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(50,145)];
    init_test(&cd_S21091C2, buf);
    S21091C2 *dp, &lv = *(dp=new (buf) S21091C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(784,576), "sizeof(S21091C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21091C2)");
    check_base_class_offset(lv, (S21091C4*)(S21091C3*), 0, "S21091C2");
    check_base_class_offset(lv, (S7856C24*)(S21091C3*), 0, "S21091C2");
    check_base_class_offset(lv, (S21091C6*)(S21091C3*), ABISELECT(672,492), "S21091C2");
    check_base_class_offset(lv, (S21091C8*)(S21091C7*)(S21091C3*), ABISELECT(704,516), "S21091C2");
    check_base_class_offset(lv, (S21091C7*)(S21091C3*), ABISELECT(704,516), "S21091C2");
    check_base_class_offset(lv, (S21091C3*), ABISELECT(672,492), "S21091C2");
    check_field_offset(lv, s21091c2f0, ABISELECT(16,4), "S21091C2.s21091c2f0");
    check_field_offset(lv, s21091c2f1, ABISELECT(368,264), "S21091C2.s21091c2f1");
    check_field_offset(lv, s21091c2f2, ABISELECT(440,324), "S21091C2.s21091c2f2");
    check_field_offset(lv, s21091c2f3, ABISELECT(448,328), "S21091C2.s21091c2f3");
    test_class_info(&lv, &cd_S21091C2);
    dp->~S21091C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21091C2(Test_S21091C2, "S21091C2", ABISELECT(784,576));

#else // __cplusplus

extern void _ZN8S21091C2C1Ev();
extern void _ZN8S21091C2D1Ev();
Name_Map name_map_S21091C2[] = {
  NSPAIR(_ZN8S21091C2C1Ev),
  NSPAIR(_ZN8S21091C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21091C4;
extern VTBL_ENTRY _ZTI8S21091C4[];
extern  VTBL_ENTRY _ZTV8S21091C4[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S21091C6;
extern VTBL_ENTRY _ZTI8S21091C6[];
extern  VTBL_ENTRY _ZTV8S21091C6[];
extern Class_Descriptor cd_S21091C8;
extern VTBL_ENTRY _ZTI8S21091C8[];
extern  VTBL_ENTRY _ZTV8S21091C8[];
extern Class_Descriptor cd_S21091C7;
extern VTBL_ENTRY _ZTI8S21091C7[];
extern  VTBL_ENTRY _ZTV8S21091C7[];
extern Class_Descriptor cd_S21091C3;
extern VTBL_ENTRY _ZTI8S21091C3[];
extern  VTBL_ENTRY _ZTV8S21091C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21091C3[];
static Base_Class bases_S21091C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21091C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S21091C6,    ABISELECT(672,492), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S21091C8,    ABISELECT(704,516), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21091C7,    ABISELECT(704,516), //bcp->offset
    31, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S21091C3,    ABISELECT(672,492), //bcp->offset
    13, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21091C2[];
extern void _ZN8S21091C42v6Ev();
extern void _ZN8S21091C42v7Ev();
extern void _ZN8S21091C23v18Ev();
extern void _ZN8S21091C23v19Ev();
extern void _ZN8S21091C23v20Ev();
extern void _ZN8S21091C23v21Ev();
extern void _ZN8S21091C62v8Ev();
extern void _ZN8S21091C33v15Ev();
extern void _ZN8S21091C33v16Ev();
extern void _ZN8S21091C33v17Ev();
extern void _ZN8S21091C82v9Ev();
extern void _ZN8S21091C83v10Ev();
extern void _ZN8S21091C73v11Ev();
extern void _ZN8S21091C73v12Ev();
extern void _ZN8S21091C73v13Ev();
extern void _ZN8S21091C73v14Ev();
static  VTBL_ENTRY vtc_S21091C2[] = {
  0,
  0,
  ABISELECT(672,492),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21091C2[0]),
  (VTBL_ENTRY)&_ZN8S21091C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21091C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21091C23v18Ev,
  (VTBL_ENTRY)&_ZN8S21091C23v19Ev,
  (VTBL_ENTRY)&_ZN8S21091C23v20Ev,
  (VTBL_ENTRY)&_ZN8S21091C23v21Ev,
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  0,
  0,
  0,
  0,
  ABISELECT(-672,-492),
  ABISELECT(-672,-492),
  ABISELECT(-672,-492),
  (VTBL_ENTRY)&(_ZTI8S21091C2[0]),
  (VTBL_ENTRY)&_ZN8S21091C62v8Ev,
  (VTBL_ENTRY)&_ZN8S21091C33v15Ev,
  (VTBL_ENTRY)&_ZN8S21091C33v16Ev,
  (VTBL_ENTRY)&_ZN8S21091C33v17Ev,
  ABISELECT(-704,-516),
  (VTBL_ENTRY)&(_ZTI8S21091C2[0]),
  (VTBL_ENTRY)&_ZN8S21091C82v9Ev,
  (VTBL_ENTRY)&_ZN8S21091C83v10Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v12Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v13Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v14Ev,
};
extern VTBL_ENTRY _ZTV8S21091C2[];
extern void _ZN8S21091C62v8Ev();
extern void _ZN8S21091C33v15Ev();
extern void _ZN8S21091C33v16Ev();
extern void _ZN8S21091C33v17Ev();
static  VTBL_ENTRY _tg__ZTV8S21091C3__8S21091C2[] = {
  ABISELECT(-672,-492),
  ABISELECT(-672,-492),
  0,
  (VTBL_ENTRY)&(_ZTI8S21091C3[0]),
  (VTBL_ENTRY)&_ZN8S21091C62v8Ev,
  (VTBL_ENTRY)&_ZN8S21091C33v15Ev,
  (VTBL_ENTRY)&_ZN8S21091C33v16Ev,
  (VTBL_ENTRY)&_ZN8S21091C33v17Ev,
};
extern void _ZN8S21091C42v6Ev();
extern void _ZN8S21091C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21091C4__8S21091C3__8S21091C2[] = {
  0,
  0,
  ABISELECT(672,492),
  (VTBL_ENTRY)&(_ZTI8S21091C3[0]),
  (VTBL_ENTRY)&_ZN8S21091C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21091C42v7Ev,
};
static  VTT_ENTRY vtt_S21091C2[] = {
  {&(_ZTV8S21091C2[7]),  7,39},
  {&(_ZTV8S21091C2[27]),  27,39},
  {&(_ZTV8S21091C2[7]),  7,39},
  {&(_ZTV8S21091C2[33]),  33,39},
  {&(_tg__ZTV8S21091C3__8S21091C2[4]),  4,8},
  {&(_tg__ZTV8S21091C4__8S21091C3__8S21091C2[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S21091C2[];
extern  VTBL_ENTRY _ZTV8S21091C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21091C2[];
Class_Descriptor cd_S21091C2 = {  "S21091C2", // class name
  bases_S21091C2, 6,
  &(vtc_S21091C2[0]), // expected_vtbl_contents
  &(vtt_S21091C2[0]), // expected_vtt_contents
  ABISELECT(784,576), // object size
  NSPAIRA(_ZTI8S21091C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S21091C2),39, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21091C2),6, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21091C12  {
  void *s21091c12f0;
  long double s21091c12f1[7];
  virtual void  v22(); // _ZN9S21091C123v22Ev
  ~S21091C12(); // tgen
  S21091C12(); // tgen
};
//SIG(-1 S21091C12) C1{ v1 Fp FD[7]}


void  S21091C12 ::v22(){vfunc_called(this, "_ZN9S21091C123v22Ev");}
S21091C12 ::~S21091C12(){ note_dtor("S21091C12", this);} // tgen
S21091C12 ::S21091C12(){ note_ctor("S21091C12", this);} // tgen

static void Test_S21091C12()
{
  extern Class_Descriptor cd_S21091C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(9,24)];
    init_test(&cd_S21091C12, buf);
    S21091C12 *dp, &lv = *(dp=new (buf) S21091C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,92), "sizeof(S21091C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21091C12)");
    check_field_offset(lv, s21091c12f0, ABISELECT(8,4), "S21091C12.s21091c12f0");
    check_field_offset(lv, s21091c12f1, ABISELECT(16,8), "S21091C12.s21091c12f1");
    test_class_info(&lv, &cd_S21091C12);
    dp->~S21091C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21091C12(Test_S21091C12, "S21091C12", ABISELECT(128,92));

#else // __cplusplus

extern void _ZN9S21091C12C1Ev();
extern void _ZN9S21091C12D1Ev();
Name_Map name_map_S21091C12[] = {
  NSPAIR(_ZN9S21091C12C1Ev),
  NSPAIR(_ZN9S21091C12D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S21091C12[];
extern void _ZN9S21091C123v22Ev();
static  VTBL_ENTRY vtc_S21091C12[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S21091C12[0]),
  (VTBL_ENTRY)&_ZN9S21091C123v22Ev,
};
extern VTBL_ENTRY _ZTI9S21091C12[];
extern  VTBL_ENTRY _ZTV9S21091C12[];
Class_Descriptor cd_S21091C12 = {  "S21091C12", // class name
  0,0,//no base classes
  &(vtc_S21091C12[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(128,92), // object size
  NSPAIRA(_ZTI9S21091C12),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S21091C12),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21091C11  : virtual S7856C24 , virtual S21091C8 , S21091C4 , virtual S21091C7 {
  virtual void  v34(); // _ZN9S21091C113v34Ev
  ~S21091C11(); // tgen
  S21091C11(); // tgen
};
//SIG(-1 S21091C11) C1{ VBC2{ m} VBC3{ v2 v3} BC4{ v4 v5} VBC5{ BC3 v6 v7 v8 v9 Fi[5] Fp FL[4]} v1}


void  S21091C11 ::v34(){vfunc_called(this, "_ZN9S21091C113v34Ev");}
S21091C11 ::~S21091C11(){ note_dtor("S21091C11", this);} // tgen
S21091C11 ::S21091C11(){ note_ctor("S21091C11", this);} // tgen

static void Test_S21091C11()
{
  extern Class_Descriptor cd_S21091C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,18)];
    init_test(&cd_S21091C11, buf);
    S21091C11 *dp, &lv = *(dp=new (buf) S21091C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,68), "sizeof(S21091C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21091C11)");
    check_base_class_offset(lv, (S7856C24*), 0, "S21091C11");
    /*is_ambiguous_... S21091C11::S21091C8 */ AMB_check_base_class_offset(lv, (S21091C8*), ABISELECT(8,4), "S21091C11");
    check_base_class_offset(lv, (S21091C4*), 0, "S21091C11");
    check_base_class_offset(lv, (S21091C8*)(S21091C7*), ABISELECT(16,8), "S21091C11");
    check_base_class_offset(lv, (S21091C7*), ABISELECT(16,8), "S21091C11");
    test_class_info(&lv, &cd_S21091C11);
    dp->~S21091C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21091C11(Test_S21091C11, "S21091C11", ABISELECT(88,68));

#else // __cplusplus

extern void _ZN9S21091C11C1Ev();
extern void _ZN9S21091C11D1Ev();
Name_Map name_map_S21091C11[] = {
  NSPAIR(_ZN9S21091C11C1Ev),
  NSPAIR(_ZN9S21091C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S21091C8;
extern VTBL_ENTRY _ZTI8S21091C8[];
extern  VTBL_ENTRY _ZTV8S21091C8[];
extern Class_Descriptor cd_S21091C4;
extern VTBL_ENTRY _ZTI8S21091C4[];
extern  VTBL_ENTRY _ZTV8S21091C4[];
extern Class_Descriptor cd_S21091C8;
extern VTBL_ENTRY _ZTI8S21091C8[];
extern  VTBL_ENTRY _ZTV8S21091C8[];
extern Class_Descriptor cd_S21091C7;
extern VTBL_ENTRY _ZTI8S21091C7[];
extern  VTBL_ENTRY _ZTV8S21091C7[];
static Base_Class bases_S21091C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21091C8,    ABISELECT(8,4), //bcp->offset
    8, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21091C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21091C8,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21091C7,    ABISELECT(16,8), //bcp->offset
    14, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21091C11[];
extern void _ZN8S21091C42v6Ev();
extern void _ZN8S21091C42v7Ev();
extern void _ZN9S21091C113v34Ev();
extern void _ZN8S21091C82v9Ev();
extern void _ZN8S21091C83v10Ev();
extern void _ZN8S21091C82v9Ev();
extern void _ZN8S21091C83v10Ev();
extern void _ZN8S21091C73v11Ev();
extern void _ZN8S21091C73v12Ev();
extern void _ZN8S21091C73v13Ev();
extern void _ZN8S21091C73v14Ev();
static  VTBL_ENTRY vtc_S21091C11[] = {
  ABISELECT(16,8),
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21091C11[0]),
  (VTBL_ENTRY)&_ZN8S21091C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21091C42v7Ev,
  (VTBL_ENTRY)&_ZN9S21091C113v34Ev,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S21091C11[0]),
  (VTBL_ENTRY)&_ZN8S21091C82v9Ev,
  (VTBL_ENTRY)&_ZN8S21091C83v10Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21091C11[0]),
  (VTBL_ENTRY)&_ZN8S21091C82v9Ev,
  (VTBL_ENTRY)&_ZN8S21091C83v10Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v12Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v13Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v14Ev,
};
extern VTBL_ENTRY _ZTV9S21091C11[];
static  VTT_ENTRY vtt_S21091C11[] = {
  {&(_ZTV9S21091C11[5]),  5,28},
  {&(_ZTV9S21091C11[12]),  12,28},
  {&(_ZTV9S21091C11[22]),  22,28},
};
extern VTBL_ENTRY _ZTI9S21091C11[];
extern  VTBL_ENTRY _ZTV9S21091C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21091C11[];
Class_Descriptor cd_S21091C11 = {  "S21091C11", // class name
  bases_S21091C11, 5,
  &(vtc_S21091C11[0]), // expected_vtbl_contents
  &(vtt_S21091C11[0]), // expected_vtt_contents
  ABISELECT(88,68), // object size
  NSPAIRA(_ZTI9S21091C11),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S21091C11),28, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21091C11),3, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21091C10  : S21091C4 , virtual S21091C11 , S7856C24 , S21091C7 , S21091C8 {
  virtual void  v35(); // _ZN9S21091C103v35Ev
  ~S21091C10(); // tgen
  S21091C10(); // tgen
};
//SIG(-1 S21091C10) C1{ BC2{ v2 v3} VBC3{ VBC4{ m} VBC5{ v4 v5} BC2 VBC6{ BC5 v6 v7 v8 v9 Fi[5] Fp FL[4]} v10} BC4 BC6 BC5 v1}


void  S21091C10 ::v35(){vfunc_called(this, "_ZN9S21091C103v35Ev");}
S21091C10 ::~S21091C10(){ note_dtor("S21091C10", this);} // tgen
S21091C10 ::S21091C10(){ note_ctor("S21091C10", this);} // tgen

static void Test_S21091C10()
{
  extern Class_Descriptor cd_S21091C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,35)];
    init_test(&cd_S21091C10, buf);
    S21091C10 *dp, &lv = *(dp=new (buf) S21091C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,136), "sizeof(S21091C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21091C10)");
    /*is_ambiguous_... S21091C10::S21091C4 */ AMB_check_base_class_offset(lv, (S21091C4*), 0, "S21091C10");
    check_base_class_offset(lv, (S7856C24*)(S21091C11*), ABISELECT(96,72), "S21091C10");
    /*is_ambiguous_... S21091C11::S21091C8 */ AMB_check_base_class_offset(lv, (S21091C8*)(S21091C11*), ABISELECT(96,72), "S21091C10");
    check_base_class_offset(lv, (S21091C4*)(S21091C11*), ABISELECT(88,68), "S21091C10");
    /*is_ambiguous_... S21091C10::S21091C7 */ AMB_check_base_class_offset(lv, (S21091C8*)(S21091C7*), ABISELECT(104,76), "S21091C10");
    check_base_class_offset(lv, (S21091C7*)(S21091C11*), ABISELECT(104,76), "S21091C10");
    check_base_class_offset(lv, (S21091C11*), ABISELECT(88,68), "S21091C10");
    /*is_ambiguous_... S21091C10::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), 0, "S21091C10");
    /*is_ambiguous_... S21091C10::S21091C7 */ AMB_check_base_class_offset(lv, (S21091C8*)(S21091C7*), ABISELECT(8,4), "S21091C10");
    /*is_ambiguous_... S21091C10::S21091C7 */ AMB_check_base_class_offset(lv, (S21091C7*), ABISELECT(8,4), "S21091C10");
    /*is_ambiguous_... S21091C10::S21091C8 */ AMB_check_base_class_offset(lv, (S21091C8*), ABISELECT(80,64), "S21091C10");
    test_class_info(&lv, &cd_S21091C10);
    dp->~S21091C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21091C10(Test_S21091C10, "S21091C10", ABISELECT(176,136));

#else // __cplusplus

extern void _ZN9S21091C10C1Ev();
extern void _ZN9S21091C10D1Ev();
Name_Map name_map_S21091C10[] = {
  NSPAIR(_ZN9S21091C10C1Ev),
  NSPAIR(_ZN9S21091C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21091C4;
extern VTBL_ENTRY _ZTI8S21091C4[];
extern  VTBL_ENTRY _ZTV8S21091C4[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S21091C8;
extern VTBL_ENTRY _ZTI8S21091C8[];
extern  VTBL_ENTRY _ZTV8S21091C8[];
extern Class_Descriptor cd_S21091C4;
extern VTBL_ENTRY _ZTI8S21091C4[];
extern  VTBL_ENTRY _ZTV8S21091C4[];
extern Class_Descriptor cd_S21091C8;
extern VTBL_ENTRY _ZTI8S21091C8[];
extern  VTBL_ENTRY _ZTV8S21091C8[];
extern Class_Descriptor cd_S21091C7;
extern VTBL_ENTRY _ZTI8S21091C7[];
extern  VTBL_ENTRY _ZTV8S21091C7[];
extern Class_Descriptor cd_S21091C11;
extern VTBL_ENTRY _ZTI9S21091C11[];
extern  VTBL_ENTRY _ZTV9S21091C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21091C11[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S21091C8;
extern VTBL_ENTRY _ZTI8S21091C8[];
extern  VTBL_ENTRY _ZTV8S21091C8[];
extern Class_Descriptor cd_S21091C7;
extern VTBL_ENTRY _ZTI8S21091C7[];
extern  VTBL_ENTRY _ZTV8S21091C7[];
extern Class_Descriptor cd_S21091C8;
extern VTBL_ENTRY _ZTI8S21091C8[];
extern  VTBL_ENTRY _ZTV8S21091C8[];
static Base_Class bases_S21091C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21091C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    ABISELECT(96,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S21091C8,    ABISELECT(96,72), //bcp->offset
    32, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S21091C4,    ABISELECT(88,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S21091C8,    ABISELECT(104,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S21091C7,    ABISELECT(104,76), //bcp->offset
    38, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S21091C11,    ABISELECT(88,68), //bcp->offset
    21, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21091C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21091C7,    ABISELECT(8,4), //bcp->offset
    9, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21091C8,    ABISELECT(80,64), //bcp->offset
    17, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21091C10[];
extern void _ZN8S21091C42v6Ev();
extern void _ZN8S21091C42v7Ev();
extern void _ZN9S21091C103v35Ev();
extern void _ZN8S21091C82v9Ev();
extern void _ZN8S21091C83v10Ev();
extern void _ZN8S21091C73v11Ev();
extern void _ZN8S21091C73v12Ev();
extern void _ZN8S21091C73v13Ev();
extern void _ZN8S21091C73v14Ev();
extern void _ZN8S21091C82v9Ev();
extern void _ZN8S21091C83v10Ev();
extern void _ZN8S21091C42v6Ev();
extern void _ZN8S21091C42v7Ev();
extern void _ZN9S21091C113v34Ev();
extern void _ZN8S21091C82v9Ev();
extern void _ZN8S21091C83v10Ev();
extern void _ZN8S21091C82v9Ev();
extern void _ZN8S21091C83v10Ev();
extern void _ZN8S21091C73v11Ev();
extern void _ZN8S21091C73v12Ev();
extern void _ZN8S21091C73v13Ev();
extern void _ZN8S21091C73v14Ev();
static  VTBL_ENTRY vtc_S21091C10[] = {
  ABISELECT(104,76),
  ABISELECT(96,72),
  ABISELECT(96,72),
  ABISELECT(88,68),
  0,
  (VTBL_ENTRY)&(_ZTI9S21091C10[0]),
  (VTBL_ENTRY)&_ZN8S21091C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21091C42v7Ev,
  (VTBL_ENTRY)&_ZN9S21091C103v35Ev,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S21091C10[0]),
  (VTBL_ENTRY)&_ZN8S21091C82v9Ev,
  (VTBL_ENTRY)&_ZN8S21091C83v10Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v12Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v13Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v14Ev,
  ABISELECT(-80,-64),
  (VTBL_ENTRY)&(_ZTI9S21091C10[0]),
  (VTBL_ENTRY)&_ZN8S21091C82v9Ev,
  (VTBL_ENTRY)&_ZN8S21091C83v10Ev,
  0,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(-88,-68),
  (VTBL_ENTRY)&(_ZTI9S21091C10[0]),
  (VTBL_ENTRY)&_ZN8S21091C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21091C42v7Ev,
  (VTBL_ENTRY)&_ZN9S21091C113v34Ev,
  0,
  0,
  ABISELECT(-96,-72),
  (VTBL_ENTRY)&(_ZTI9S21091C10[0]),
  (VTBL_ENTRY)&_ZN8S21091C82v9Ev,
  (VTBL_ENTRY)&_ZN8S21091C83v10Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-104,-76),
  (VTBL_ENTRY)&(_ZTI9S21091C10[0]),
  (VTBL_ENTRY)&_ZN8S21091C82v9Ev,
  (VTBL_ENTRY)&_ZN8S21091C83v10Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v12Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v13Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v14Ev,
};
extern VTBL_ENTRY _ZTV9S21091C10[];
extern void _ZN8S21091C42v6Ev();
extern void _ZN8S21091C42v7Ev();
extern void _ZN9S21091C113v34Ev();
static  VTBL_ENTRY _tg__ZTV9S21091C11__9S21091C10[] = {
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S21091C11[0]),
  (VTBL_ENTRY)&_ZN8S21091C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21091C42v7Ev,
  (VTBL_ENTRY)&_ZN9S21091C113v34Ev,
};
extern void _ZN8S21091C82v9Ev();
extern void _ZN8S21091C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S21091C8__9S21091C11__9S21091C10[] = {
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S21091C11[0]),
  (VTBL_ENTRY)&_ZN8S21091C82v9Ev,
  (VTBL_ENTRY)&_ZN8S21091C83v10Ev,
};
extern void _ZN8S21091C82v9Ev();
extern void _ZN8S21091C83v10Ev();
extern void _ZN8S21091C73v11Ev();
extern void _ZN8S21091C73v12Ev();
extern void _ZN8S21091C73v13Ev();
extern void _ZN8S21091C73v14Ev();
static  VTBL_ENTRY _tg__ZTV8S21091C7__9S21091C11__9S21091C10[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21091C11[0]),
  (VTBL_ENTRY)&_ZN8S21091C82v9Ev,
  (VTBL_ENTRY)&_ZN8S21091C83v10Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v12Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v13Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v14Ev,
};
static  VTT_ENTRY vtt_S21091C10[] = {
  {&(_ZTV9S21091C10[6]),  6,52},
  {&(_ZTV9S21091C10[29]),  29,52},
  {&(_ZTV9S21091C10[36]),  36,52},
  {&(_ZTV9S21091C10[46]),  46,52},
  {&(_tg__ZTV9S21091C11__9S21091C10[5]),  5,8},
  {&(_tg__ZTV8S21091C8__9S21091C11__9S21091C10[4]),  4,6},
  {&(_tg__ZTV8S21091C7__9S21091C11__9S21091C10[8]),  8,14},
};
extern VTBL_ENTRY _ZTI9S21091C10[];
extern  VTBL_ENTRY _ZTV9S21091C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21091C10[];
Class_Descriptor cd_S21091C10 = {  "S21091C10", // class name
  bases_S21091C10, 11,
  &(vtc_S21091C10[0]), // expected_vtbl_contents
  &(vtt_S21091C10[0]), // expected_vtt_contents
  ABISELECT(176,136), // object size
  NSPAIRA(_ZTI9S21091C10),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S21091C10),52, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21091C10),7, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21091C15  : virtual S7856C24 , S21091C12 , S21091C7 {
  int s21091c15f0[10];
  ::S21091C10 s21091c15f1;
  virtual void  v23(); // _ZN9S21091C153v23Ev
  virtual void  v24(); // _ZN9S21091C153v24Ev
  virtual void  v25(); // _ZN9S21091C153v25Ev
  virtual void  v26(); // _ZN9S21091C153v26Ev
  virtual void  v27(); // _ZN9S21091C153v27Ev
  ~S21091C15(); // tgen
  S21091C15(); // tgen
};
//SIG(-1 S21091C15) C1{ VBC2{ m} BC3{ v6 Fp FD[7]} BC4{ BC5{ v7 v8} v9 v10 v11 v12 Fi[5] Fp FL[4]} v1 v2 v3 v4 v5 Fi[10] FC6{ BC7{ v14 v15} VBC8{ VBC2 VBC5 BC7 VBC4 v16} BC2 BC4 BC5 v13}}


void  S21091C15 ::v23(){vfunc_called(this, "_ZN9S21091C153v23Ev");}
void  S21091C15 ::v24(){vfunc_called(this, "_ZN9S21091C153v24Ev");}
void  S21091C15 ::v25(){vfunc_called(this, "_ZN9S21091C153v25Ev");}
void  S21091C15 ::v26(){vfunc_called(this, "_ZN9S21091C153v26Ev");}
void  S21091C15 ::v27(){vfunc_called(this, "_ZN9S21091C153v27Ev");}
S21091C15 ::~S21091C15(){ note_dtor("S21091C15", this);} // tgen
S21091C15 ::S21091C15(){ note_ctor("S21091C15", this);} // tgen

static void Test_S21091C15()
{
  extern Class_Descriptor cd_S21091C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(27,83)];
    init_test(&cd_S21091C15, buf);
    S21091C15 *dp, &lv = *(dp=new (buf) S21091C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(416,328), "sizeof(S21091C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21091C15)");
    check_base_class_offset(lv, (S7856C24*), 0, "S21091C15");
    check_base_class_offset(lv, (S21091C12*), 0, "S21091C15");
    check_base_class_offset(lv, (S21091C8*)(S21091C7*), ABISELECT(128,92), "S21091C15");
    check_base_class_offset(lv, (S21091C7*), ABISELECT(128,92), "S21091C15");
    check_field_offset(lv, s21091c15f0, ABISELECT(200,152), "S21091C15.s21091c15f0");
    check_field_offset(lv, s21091c15f1, ABISELECT(240,192), "S21091C15.s21091c15f1");
    test_class_info(&lv, &cd_S21091C15);
    dp->~S21091C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21091C15(Test_S21091C15, "S21091C15", ABISELECT(416,328));

#else // __cplusplus

extern void _ZN9S21091C15C1Ev();
extern void _ZN9S21091C15D1Ev();
Name_Map name_map_S21091C15[] = {
  NSPAIR(_ZN9S21091C15C1Ev),
  NSPAIR(_ZN9S21091C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S21091C12;
extern VTBL_ENTRY _ZTI9S21091C12[];
extern  VTBL_ENTRY _ZTV9S21091C12[];
extern Class_Descriptor cd_S21091C8;
extern VTBL_ENTRY _ZTI8S21091C8[];
extern  VTBL_ENTRY _ZTV8S21091C8[];
extern Class_Descriptor cd_S21091C7;
extern VTBL_ENTRY _ZTI8S21091C7[];
extern  VTBL_ENTRY _ZTV8S21091C7[];
static Base_Class bases_S21091C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21091C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21091C8,    ABISELECT(128,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S21091C7,    ABISELECT(128,92), //bcp->offset
    9, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21091C15[];
extern void _ZN9S21091C123v22Ev();
extern void _ZN9S21091C153v23Ev();
extern void _ZN9S21091C153v24Ev();
extern void _ZN9S21091C153v25Ev();
extern void _ZN9S21091C153v26Ev();
extern void _ZN9S21091C153v27Ev();
extern void _ZN8S21091C82v9Ev();
extern void _ZN8S21091C83v10Ev();
extern void _ZN8S21091C73v11Ev();
extern void _ZN8S21091C73v12Ev();
extern void _ZN8S21091C73v13Ev();
extern void _ZN8S21091C73v14Ev();
static  VTBL_ENTRY vtc_S21091C15[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21091C15[0]),
  (VTBL_ENTRY)&_ZN9S21091C123v22Ev,
  (VTBL_ENTRY)&_ZN9S21091C153v23Ev,
  (VTBL_ENTRY)&_ZN9S21091C153v24Ev,
  (VTBL_ENTRY)&_ZN9S21091C153v25Ev,
  (VTBL_ENTRY)&_ZN9S21091C153v26Ev,
  (VTBL_ENTRY)&_ZN9S21091C153v27Ev,
  ABISELECT(-128,-92),
  (VTBL_ENTRY)&(_ZTI9S21091C15[0]),
  (VTBL_ENTRY)&_ZN8S21091C82v9Ev,
  (VTBL_ENTRY)&_ZN8S21091C83v10Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v12Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v13Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v14Ev,
};
extern VTBL_ENTRY _ZTV9S21091C15[];
static  VTT_ENTRY vtt_S21091C15[] = {
  {&(_ZTV9S21091C15[3]),  3,17},
};
extern VTBL_ENTRY _ZTI9S21091C15[];
extern  VTBL_ENTRY _ZTV9S21091C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21091C15[];
Class_Descriptor cd_S21091C15 = {  "S21091C15", // class name
  bases_S21091C15, 4,
  &(vtc_S21091C15[0]), // expected_vtbl_contents
  &(vtt_S21091C15[0]), // expected_vtt_contents
  ABISELECT(416,328), // object size
  NSPAIRA(_ZTI9S21091C15),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S21091C15),17, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21091C15),1, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21091C14  : virtual S21091C15 {
  int s21091c14f0[2];
  virtual void  v28(); // _ZN9S21091C143v28Ev
  virtual void  v29(); // _ZN9S21091C143v29Ev
  virtual void  v30(); // _ZN9S21091C143v30Ev
  ~S21091C14(); // tgen
  S21091C14(); // tgen
};
//SIG(-1 S21091C14) C1{ VBC2{ VBC3{ m} BC4{ v4 Fp FD[7]} BC5{ BC6{ v5 v6} v7 v8 v9 v10 Fi[5] Fp FL[4]} v11 v12 v13 v14 v15 Fi[10] FC7{ BC8{ v17 v18} VBC9{ VBC3 VBC6 BC8 VBC5 v19} BC3 BC5 BC6 v16}} v1 v2 v3 Fi[2]}


void  S21091C14 ::v28(){vfunc_called(this, "_ZN9S21091C143v28Ev");}
void  S21091C14 ::v29(){vfunc_called(this, "_ZN9S21091C143v29Ev");}
void  S21091C14 ::v30(){vfunc_called(this, "_ZN9S21091C143v30Ev");}
S21091C14 ::~S21091C14(){ note_dtor("S21091C14", this);} // tgen
S21091C14 ::S21091C14(){ note_ctor("S21091C14", this);} // tgen

static void Test_S21091C14()
{
  extern Class_Descriptor cd_S21091C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(28,86)];
    init_test(&cd_S21091C14, buf);
    S21091C14 *dp, &lv = *(dp=new (buf) S21091C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(432,340), "sizeof(S21091C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21091C14)");
    check_base_class_offset(lv, (S7856C24*)(S21091C15*), 0, "S21091C14");
    check_base_class_offset(lv, (S21091C12*)(S21091C15*), ABISELECT(16,12), "S21091C14");
    check_base_class_offset(lv, (S21091C8*)(S21091C7*)(S21091C15*), ABISELECT(144,104), "S21091C14");
    check_base_class_offset(lv, (S21091C7*)(S21091C15*), ABISELECT(144,104), "S21091C14");
    check_base_class_offset(lv, (S21091C15*), ABISELECT(16,12), "S21091C14");
    check_field_offset(lv, s21091c14f0, ABISELECT(8,4), "S21091C14.s21091c14f0");
    test_class_info(&lv, &cd_S21091C14);
    dp->~S21091C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21091C14(Test_S21091C14, "S21091C14", ABISELECT(432,340));

#else // __cplusplus

extern void _ZN9S21091C14C1Ev();
extern void _ZN9S21091C14D1Ev();
Name_Map name_map_S21091C14[] = {
  NSPAIR(_ZN9S21091C14C1Ev),
  NSPAIR(_ZN9S21091C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S21091C12;
extern VTBL_ENTRY _ZTI9S21091C12[];
extern  VTBL_ENTRY _ZTV9S21091C12[];
extern Class_Descriptor cd_S21091C8;
extern VTBL_ENTRY _ZTI8S21091C8[];
extern  VTBL_ENTRY _ZTV8S21091C8[];
extern Class_Descriptor cd_S21091C7;
extern VTBL_ENTRY _ZTI8S21091C7[];
extern  VTBL_ENTRY _ZTV8S21091C7[];
extern Class_Descriptor cd_S21091C15;
extern VTBL_ENTRY _ZTI9S21091C15[];
extern  VTBL_ENTRY _ZTV9S21091C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21091C15[];
static Base_Class bases_S21091C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S21091C12,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21091C8,    ABISELECT(144,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S21091C7,    ABISELECT(144,104), //bcp->offset
    28, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21091C15,    ABISELECT(16,12), //bcp->offset
    7, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21091C14[];
extern void _ZN9S21091C143v28Ev();
extern void _ZN9S21091C143v29Ev();
extern void _ZN9S21091C143v30Ev();
extern void _ZN9S21091C123v22Ev();
extern void _ZN9S21091C153v23Ev();
extern void _ZN9S21091C153v24Ev();
extern void _ZN9S21091C153v25Ev();
extern void _ZN9S21091C153v26Ev();
extern void _ZN9S21091C153v27Ev();
extern void _ZN8S21091C82v9Ev();
extern void _ZN8S21091C83v10Ev();
extern void _ZN8S21091C73v11Ev();
extern void _ZN8S21091C73v12Ev();
extern void _ZN8S21091C73v13Ev();
extern void _ZN8S21091C73v14Ev();
static  VTBL_ENTRY vtc_S21091C14[] = {
  0,
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S21091C14[0]),
  (VTBL_ENTRY)&_ZN9S21091C143v28Ev,
  (VTBL_ENTRY)&_ZN9S21091C143v29Ev,
  (VTBL_ENTRY)&_ZN9S21091C143v30Ev,
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21091C14[0]),
  (VTBL_ENTRY)&_ZN9S21091C123v22Ev,
  (VTBL_ENTRY)&_ZN9S21091C153v23Ev,
  (VTBL_ENTRY)&_ZN9S21091C153v24Ev,
  (VTBL_ENTRY)&_ZN9S21091C153v25Ev,
  (VTBL_ENTRY)&_ZN9S21091C153v26Ev,
  (VTBL_ENTRY)&_ZN9S21091C153v27Ev,
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI9S21091C14[0]),
  (VTBL_ENTRY)&_ZN8S21091C82v9Ev,
  (VTBL_ENTRY)&_ZN8S21091C83v10Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v12Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v13Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v14Ev,
};
extern VTBL_ENTRY _ZTV9S21091C14[];
extern void _ZN9S21091C123v22Ev();
extern void _ZN9S21091C153v23Ev();
extern void _ZN9S21091C153v24Ev();
extern void _ZN9S21091C153v25Ev();
extern void _ZN9S21091C153v26Ev();
extern void _ZN9S21091C153v27Ev();
static  VTBL_ENTRY _tg__ZTV9S21091C15__9S21091C14[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S21091C15[0]),
  (VTBL_ENTRY)&_ZN9S21091C123v22Ev,
  (VTBL_ENTRY)&_ZN9S21091C153v23Ev,
  (VTBL_ENTRY)&_ZN9S21091C153v24Ev,
  (VTBL_ENTRY)&_ZN9S21091C153v25Ev,
  (VTBL_ENTRY)&_ZN9S21091C153v26Ev,
  (VTBL_ENTRY)&_ZN9S21091C153v27Ev,
};
static  VTT_ENTRY vtt_S21091C14[] = {
  {&(_ZTV9S21091C14[4]),  4,36},
  {&(_ZTV9S21091C14[22]),  22,36},
  {&(_ZTV9S21091C14[30]),  30,36},
  {&(_tg__ZTV9S21091C15__9S21091C14[3]),  3,9},
};
extern VTBL_ENTRY _ZTI9S21091C14[];
extern  VTBL_ENTRY _ZTV9S21091C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21091C14[];
Class_Descriptor cd_S21091C14 = {  "S21091C14", // class name
  bases_S21091C14, 5,
  &(vtc_S21091C14[0]), // expected_vtbl_contents
  &(vtt_S21091C14[0]), // expected_vtt_contents
  ABISELECT(432,340), // object size
  NSPAIRA(_ZTI9S21091C14),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S21091C14),36, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21091C14),4, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21091C1  : virtual S21091C2 , virtual S21091C14 {
  __tsi64 s21091c1f0[8];
  virtual void  v1(); // _ZN8S21091C12v1Ev
  virtual void  v2(); // _ZN8S21091C12v2Ev
  virtual void  v3(); // _ZN8S21091C12v3Ev
  virtual void  v4(); // _ZN8S21091C12v4Ev
  virtual void  v5(); // _ZN8S21091C12v5Ev
  ~S21091C1(); // tgen
  S21091C1(); // tgen
};
//SIG(1 S21091C1) C1{ VBC2{ VBC3{ VBC4{ v6 v7} VBC5{ m} BC6{ v8 FC5 Fi[4]} BC7{ BC8{ v9 v10} v11 v12 v13 v14 Fi[5] Fp FL[4]} v15 v16 v17} v18 v19 v20 v21 FC9{ VBC10{ v34 FC11{ m} Fi[4]} BC12{ v35 v36} VBC13{ v37 v38} BC14{ BC12 VBC15{ VBC11 VBC13 BC12 VBC16{ BC13 v39 v40 v41 v42 Fi[5] Fp FL[4]} v43} BC11 BC16 BC13 v44} BC17{ v45 Fp FD[7]} v31 v32 v33 Fi} FC7 Fi FC18{ BC15 VBC17 vd v46 Fp}} VBC19{ VBC20{ VBC5 BC21{ v22 Fp FD[7]} BC7 v23 v24 v25 v26 v27 Fi[10] FC22{ BC4 VBC23{ VBC5 VBC8 BC4 VBC7 v48} BC5 BC7 BC8 v47}} v28 v29 v30 Fi[2]} v1 v2 v3 v4 v5 FL[8]}


void  S21091C1 ::v1(){vfunc_called(this, "_ZN8S21091C12v1Ev");}
void  S21091C1 ::v2(){vfunc_called(this, "_ZN8S21091C12v2Ev");}
void  S21091C1 ::v3(){vfunc_called(this, "_ZN8S21091C12v3Ev");}
void  S21091C1 ::v4(){vfunc_called(this, "_ZN8S21091C12v4Ev");}
void  S21091C1 ::v5(){vfunc_called(this, "_ZN8S21091C12v5Ev");}
S21091C1 ::~S21091C1(){ note_dtor("S21091C1", this);} // tgen
S21091C1 ::S21091C1(){ note_ctor("S21091C1", this);} // tgen

static void Test_S21091C1()
{
  extern Class_Descriptor cd_S21091C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(82,247)];
    init_test(&cd_S21091C1, buf);
    S21091C1 *dp, &lv = *(dp=new (buf) S21091C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1296,984), "sizeof(S21091C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21091C1)");
    check_base_class_offset(lv, (S21091C4*)(S21091C3*), 0, "S21091C1");
    check_base_class_offset(lv, (S7856C24*)(S21091C3*), 0, "S21091C1");
    check_base_class_offset(lv, (S7856C24*)(S21091C15*), 0, "S21091C1");
    check_base_class_offset(lv, (S21091C6*)(S21091C3*), ABISELECT(752,560), "S21091C1");
    check_base_class_offset(lv, (S21091C8*)(S21091C7*)(S21091C3*), ABISELECT(784,584), "S21091C1");
    check_base_class_offset(lv, (S21091C7*)(S21091C3*), ABISELECT(784,584), "S21091C1");
    check_base_class_offset(lv, (S21091C3*)(S21091C2*), ABISELECT(752,560), "S21091C1");
    check_base_class_offset(lv, (S21091C2*), ABISELECT(80,68), "S21091C1");
    check_base_class_offset(lv, (S21091C12*)(S21091C15*), ABISELECT(880,656), "S21091C1");
    check_base_class_offset(lv, (S21091C8*)(S21091C7*)(S21091C15*), ABISELECT(1008,748), "S21091C1");
    check_base_class_offset(lv, (S21091C7*)(S21091C15*), ABISELECT(1008,748), "S21091C1");
    check_base_class_offset(lv, (S21091C15*)(S21091C14*), ABISELECT(880,656), "S21091C1");
    check_base_class_offset(lv, (S21091C14*), ABISELECT(856,644), "S21091C1");
    check_field_offset(lv, s21091c1f0, ABISELECT(8,4), "S21091C1.s21091c1f0");
    test_class_info(&lv, &cd_S21091C1);
    dp->~S21091C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21091C1(Test_S21091C1, "S21091C1", ABISELECT(1296,984));

#else // __cplusplus

extern void _ZN8S21091C1C1Ev();
extern void _ZN8S21091C1D1Ev();
Name_Map name_map_S21091C1[] = {
  NSPAIR(_ZN8S21091C1C1Ev),
  NSPAIR(_ZN8S21091C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21091C4;
extern VTBL_ENTRY _ZTI8S21091C4[];
extern  VTBL_ENTRY _ZTV8S21091C4[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S21091C6;
extern VTBL_ENTRY _ZTI8S21091C6[];
extern  VTBL_ENTRY _ZTV8S21091C6[];
extern Class_Descriptor cd_S21091C8;
extern VTBL_ENTRY _ZTI8S21091C8[];
extern  VTBL_ENTRY _ZTV8S21091C8[];
extern Class_Descriptor cd_S21091C7;
extern VTBL_ENTRY _ZTI8S21091C7[];
extern  VTBL_ENTRY _ZTV8S21091C7[];
extern Class_Descriptor cd_S21091C3;
extern VTBL_ENTRY _ZTI8S21091C3[];
extern  VTBL_ENTRY _ZTV8S21091C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21091C3[];
extern Class_Descriptor cd_S21091C2;
extern VTBL_ENTRY _ZTI8S21091C2[];
extern  VTBL_ENTRY _ZTV8S21091C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21091C2[];
extern Class_Descriptor cd_S21091C12;
extern VTBL_ENTRY _ZTI9S21091C12[];
extern  VTBL_ENTRY _ZTV9S21091C12[];
extern Class_Descriptor cd_S21091C8;
extern VTBL_ENTRY _ZTI8S21091C8[];
extern  VTBL_ENTRY _ZTV8S21091C8[];
extern Class_Descriptor cd_S21091C7;
extern VTBL_ENTRY _ZTI8S21091C7[];
extern  VTBL_ENTRY _ZTV8S21091C7[];
extern Class_Descriptor cd_S21091C15;
extern VTBL_ENTRY _ZTI9S21091C15[];
extern  VTBL_ENTRY _ZTV9S21091C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21091C15[];
extern Class_Descriptor cd_S21091C14;
extern VTBL_ENTRY _ZTI9S21091C14[];
extern  VTBL_ENTRY _ZTV9S21091C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21091C14[];
static Base_Class bases_S21091C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21091C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S21091C6,    ABISELECT(752,560), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S21091C8,    ABISELECT(784,584), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21091C7,    ABISELECT(784,584), //bcp->offset
    52, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S21091C3,    ABISELECT(752,560), //bcp->offset
    34, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S21091C2,    ABISELECT(80,68), //bcp->offset
    17, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21091C12,    ABISELECT(880,656), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S21091C8,    ABISELECT(1008,748), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21091C7,    ABISELECT(1008,748), //bcp->offset
    91, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S21091C15,    ABISELECT(880,656), //bcp->offset
    70, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S21091C14,    ABISELECT(856,644), //bcp->offset
    60, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21091C1[];
extern void _ZN8S21091C42v6Ev();
extern void _ZN8S21091C42v7Ev();
extern void _ZN8S21091C12v1Ev();
extern void _ZN8S21091C12v2Ev();
extern void _ZN8S21091C12v3Ev();
extern void _ZN8S21091C12v4Ev();
extern void _ZN8S21091C12v5Ev();
extern void _ZN8S21091C42v6Ev();
extern void _ZN8S21091C42v7Ev();
extern void _ZN8S21091C23v18Ev();
extern void _ZN8S21091C23v19Ev();
extern void _ZN8S21091C23v20Ev();
extern void _ZN8S21091C23v21Ev();
extern void _ZN8S21091C62v8Ev();
extern void _ZN8S21091C33v15Ev();
extern void _ZN8S21091C33v16Ev();
extern void _ZN8S21091C33v17Ev();
extern void _ZN8S21091C82v9Ev();
extern void _ZN8S21091C83v10Ev();
extern void _ZN8S21091C73v11Ev();
extern void _ZN8S21091C73v12Ev();
extern void _ZN8S21091C73v13Ev();
extern void _ZN8S21091C73v14Ev();
extern void _ZN9S21091C143v28Ev();
extern void _ZN9S21091C143v29Ev();
extern void _ZN9S21091C143v30Ev();
extern void _ZN9S21091C123v22Ev();
extern void _ZN9S21091C153v23Ev();
extern void _ZN9S21091C153v24Ev();
extern void _ZN9S21091C153v25Ev();
extern void _ZN9S21091C153v26Ev();
extern void _ZN9S21091C153v27Ev();
extern void _ZN8S21091C82v9Ev();
extern void _ZN8S21091C83v10Ev();
extern void _ZN8S21091C73v11Ev();
extern void _ZN8S21091C73v12Ev();
extern void _ZN8S21091C73v13Ev();
extern void _ZN8S21091C73v14Ev();
static  VTBL_ENTRY vtc_S21091C1[] = {
  ABISELECT(880,656),
  ABISELECT(856,644),
  0,
  0,
  ABISELECT(752,560),
  ABISELECT(80,68),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21091C1[0]),
  (VTBL_ENTRY)&_ZN8S21091C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21091C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21091C12v1Ev,
  (VTBL_ENTRY)&_ZN8S21091C12v2Ev,
  (VTBL_ENTRY)&_ZN8S21091C12v3Ev,
  (VTBL_ENTRY)&_ZN8S21091C12v4Ev,
  (VTBL_ENTRY)&_ZN8S21091C12v5Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-80,-68),
  ABISELECT(-80,-68),
  ABISELECT(672,492),
  ABISELECT(-80,-68),
  ABISELECT(-80,-68),
  ABISELECT(-80,-68),
  (VTBL_ENTRY)&(_ZTI8S21091C1[0]),
  (VTBL_ENTRY)&_ZN8S21091C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21091C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21091C23v18Ev,
  (VTBL_ENTRY)&_ZN8S21091C23v19Ev,
  (VTBL_ENTRY)&_ZN8S21091C23v20Ev,
  (VTBL_ENTRY)&_ZN8S21091C23v21Ev,
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  0,
  0,
  0,
  0,
  ABISELECT(-752,-560),
  ABISELECT(-752,-560),
  ABISELECT(-752,-560),
  (VTBL_ENTRY)&(_ZTI8S21091C1[0]),
  (VTBL_ENTRY)&_ZN8S21091C62v8Ev,
  (VTBL_ENTRY)&_ZN8S21091C33v15Ev,
  (VTBL_ENTRY)&_ZN8S21091C33v16Ev,
  (VTBL_ENTRY)&_ZN8S21091C33v17Ev,
  ABISELECT(-784,-584),
  (VTBL_ENTRY)&(_ZTI8S21091C1[0]),
  (VTBL_ENTRY)&_ZN8S21091C82v9Ev,
  (VTBL_ENTRY)&_ZN8S21091C83v10Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v12Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v13Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v14Ev,
  0,
  0,
  0,
  ABISELECT(-856,-644),
  ABISELECT(24,12),
  ABISELECT(-856,-644),
  (VTBL_ENTRY)&(_ZTI8S21091C1[0]),
  (VTBL_ENTRY)&_ZN9S21091C143v28Ev,
  (VTBL_ENTRY)&_ZN9S21091C143v29Ev,
  (VTBL_ENTRY)&_ZN9S21091C143v30Ev,
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-880,-656),
  ABISELECT(-880,-656),
  (VTBL_ENTRY)&(_ZTI8S21091C1[0]),
  (VTBL_ENTRY)&_ZN9S21091C123v22Ev,
  (VTBL_ENTRY)&_ZN9S21091C153v23Ev,
  (VTBL_ENTRY)&_ZN9S21091C153v24Ev,
  (VTBL_ENTRY)&_ZN9S21091C153v25Ev,
  (VTBL_ENTRY)&_ZN9S21091C153v26Ev,
  (VTBL_ENTRY)&_ZN9S21091C153v27Ev,
  ABISELECT(-1008,-748),
  (VTBL_ENTRY)&(_ZTI8S21091C1[0]),
  (VTBL_ENTRY)&_ZN8S21091C82v9Ev,
  (VTBL_ENTRY)&_ZN8S21091C83v10Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v12Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v13Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v14Ev,
};
extern VTBL_ENTRY _ZTV8S21091C1[];
extern void _ZN8S21091C42v6Ev();
extern void _ZN8S21091C42v7Ev();
extern void _ZN8S21091C23v18Ev();
extern void _ZN8S21091C23v19Ev();
extern void _ZN8S21091C23v20Ev();
extern void _ZN8S21091C23v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21091C2__8S21091C1[] = {
  ABISELECT(-80,-68),
  ABISELECT(-80,-68),
  ABISELECT(672,492),
  ABISELECT(-80,-68),
  ABISELECT(-80,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S21091C2[0]),
  (VTBL_ENTRY)&_ZN8S21091C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21091C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21091C23v18Ev,
  (VTBL_ENTRY)&_ZN8S21091C23v19Ev,
  (VTBL_ENTRY)&_ZN8S21091C23v20Ev,
  (VTBL_ENTRY)&_ZN8S21091C23v21Ev,
};
extern void _ZN8S21091C62v8Ev();
extern void _ZN8S21091C33v15Ev();
extern void _ZN8S21091C33v16Ev();
extern void _ZN8S21091C33v17Ev();
static  VTBL_ENTRY _tg__ZTV8S21091C3__8S21091C2__8S21091C1[] = {
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  0,
  0,
  0,
  0,
  ABISELECT(-752,-560),
  ABISELECT(-752,-560),
  ABISELECT(-672,-492),
  (VTBL_ENTRY)&(_ZTI8S21091C2[0]),
  (VTBL_ENTRY)&_ZN8S21091C62v8Ev,
  (VTBL_ENTRY)&_ZN8S21091C33v15Ev,
  (VTBL_ENTRY)&_ZN8S21091C33v16Ev,
  (VTBL_ENTRY)&_ZN8S21091C33v17Ev,
};
extern void _ZN8S21091C42v6Ev();
extern void _ZN8S21091C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21091C4__8S21091C2__8S21091C1[] = {
  0,
  0,
  ABISELECT(80,68),
  (VTBL_ENTRY)&(_ZTI8S21091C2[0]),
  (VTBL_ENTRY)&_ZN8S21091C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21091C42v7Ev,
};
extern void _ZN8S21091C82v9Ev();
extern void _ZN8S21091C83v10Ev();
extern void _ZN8S21091C73v11Ev();
extern void _ZN8S21091C73v12Ev();
extern void _ZN8S21091C73v13Ev();
extern void _ZN8S21091C73v14Ev();
static  VTBL_ENTRY _tg__ZTV8S21091C78S21091C3__8S21091C2__8S21091C1[] = {
  ABISELECT(-704,-516),
  (VTBL_ENTRY)&(_ZTI8S21091C2[0]),
  (VTBL_ENTRY)&_ZN8S21091C82v9Ev,
  (VTBL_ENTRY)&_ZN8S21091C83v10Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v12Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v13Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v14Ev,
};
extern void _ZN8S21091C62v8Ev();
extern void _ZN8S21091C33v15Ev();
extern void _ZN8S21091C33v16Ev();
extern void _ZN8S21091C33v17Ev();
static  VTBL_ENTRY _tg__ZTV8S21091C3__8S21091C1[] = {
  ABISELECT(-752,-560),
  ABISELECT(-752,-560),
  0,
  (VTBL_ENTRY)&(_ZTI8S21091C3[0]),
  (VTBL_ENTRY)&_ZN8S21091C62v8Ev,
  (VTBL_ENTRY)&_ZN8S21091C33v15Ev,
  (VTBL_ENTRY)&_ZN8S21091C33v16Ev,
  (VTBL_ENTRY)&_ZN8S21091C33v17Ev,
};
extern void _ZN8S21091C42v6Ev();
extern void _ZN8S21091C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21091C4__8S21091C3__8S21091C1[] = {
  0,
  0,
  ABISELECT(752,560),
  (VTBL_ENTRY)&(_ZTI8S21091C3[0]),
  (VTBL_ENTRY)&_ZN8S21091C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21091C42v7Ev,
};
extern void _ZN9S21091C143v28Ev();
extern void _ZN9S21091C143v29Ev();
extern void _ZN9S21091C143v30Ev();
static  VTBL_ENTRY _tg__ZTV9S21091C14__8S21091C1[] = {
  ABISELECT(-856,-644),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S21091C14[0]),
  (VTBL_ENTRY)&_ZN9S21091C143v28Ev,
  (VTBL_ENTRY)&_ZN9S21091C143v29Ev,
  (VTBL_ENTRY)&_ZN9S21091C143v30Ev,
};
extern void _ZN9S21091C123v22Ev();
extern void _ZN9S21091C153v23Ev();
extern void _ZN9S21091C153v24Ev();
extern void _ZN9S21091C153v25Ev();
extern void _ZN9S21091C153v26Ev();
extern void _ZN9S21091C153v27Ev();
static  VTBL_ENTRY _tg__ZTV9S21091C15__9S21091C14__8S21091C1[] = {
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-880,-656),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S21091C14[0]),
  (VTBL_ENTRY)&_ZN9S21091C123v22Ev,
  (VTBL_ENTRY)&_ZN9S21091C153v23Ev,
  (VTBL_ENTRY)&_ZN9S21091C153v24Ev,
  (VTBL_ENTRY)&_ZN9S21091C153v25Ev,
  (VTBL_ENTRY)&_ZN9S21091C153v26Ev,
  (VTBL_ENTRY)&_ZN9S21091C153v27Ev,
};
extern void _ZN8S21091C82v9Ev();
extern void _ZN8S21091C83v10Ev();
extern void _ZN8S21091C73v11Ev();
extern void _ZN8S21091C73v12Ev();
extern void _ZN8S21091C73v13Ev();
extern void _ZN8S21091C73v14Ev();
static  VTBL_ENTRY _tg__ZTV8S21091C79S21091C15__9S21091C14__8S21091C1[] = {
  ABISELECT(-152,-104),
  (VTBL_ENTRY)&(_ZTI9S21091C14[0]),
  (VTBL_ENTRY)&_ZN8S21091C82v9Ev,
  (VTBL_ENTRY)&_ZN8S21091C83v10Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v12Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v13Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v14Ev,
};
extern void _ZN9S21091C123v22Ev();
extern void _ZN9S21091C153v23Ev();
extern void _ZN9S21091C153v24Ev();
extern void _ZN9S21091C153v25Ev();
extern void _ZN9S21091C153v26Ev();
extern void _ZN9S21091C153v27Ev();
static  VTBL_ENTRY _tg__ZTV9S21091C15__8S21091C1[] = {
  ABISELECT(-880,-656),
  0,
  (VTBL_ENTRY)&(_ZTI9S21091C15[0]),
  (VTBL_ENTRY)&_ZN9S21091C123v22Ev,
  (VTBL_ENTRY)&_ZN9S21091C153v23Ev,
  (VTBL_ENTRY)&_ZN9S21091C153v24Ev,
  (VTBL_ENTRY)&_ZN9S21091C153v25Ev,
  (VTBL_ENTRY)&_ZN9S21091C153v26Ev,
  (VTBL_ENTRY)&_ZN9S21091C153v27Ev,
};
static  VTT_ENTRY vtt_S21091C1[] = {
  {&(_ZTV8S21091C1[10]),  10,99},
  {&(_ZTV8S21091C1[28]),  28,99},
  {&(_ZTV8S21091C1[48]),  48,99},
  {&(_ZTV8S21091C1[10]),  10,99},
  {&(_ZTV8S21091C1[54]),  54,99},
  {&(_ZTV8S21091C1[67]),  67,99},
  {&(_ZTV8S21091C1[85]),  85,99},
  {&(_ZTV8S21091C1[93]),  93,99},
  {&(_tg__ZTV8S21091C2__8S21091C1[7]),  7,13},
  {&(_tg__ZTV8S21091C3__8S21091C2__8S21091C1[14]),  14,18},
  {&(_tg__ZTV8S21091C4__8S21091C2__8S21091C1[4]),  4,6},
  {&(_tg__ZTV8S21091C78S21091C3__8S21091C2__8S21091C1[2]),  2,8},
  {&(_tg__ZTV8S21091C3__8S21091C1[4]),  4,8},
  {&(_tg__ZTV8S21091C4__8S21091C3__8S21091C1[4]),  4,6},
  {&(_tg__ZTV9S21091C14__8S21091C1[4]),  4,7},
  {&(_tg__ZTV9S21091C15__9S21091C14__8S21091C1[15]),  15,21},
  {&(_tg__ZTV8S21091C79S21091C15__9S21091C14__8S21091C1[2]),  2,8},
  {&(_tg__ZTV9S21091C15__8S21091C1[3]),  3,9},
};
extern VTBL_ENTRY _ZTI8S21091C1[];
extern  VTBL_ENTRY _ZTV8S21091C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21091C1[];
Class_Descriptor cd_S21091C1 = {  "S21091C1", // class name
  bases_S21091C1, 12,
  &(vtc_S21091C1[0]), // expected_vtbl_contents
  &(vtt_S21091C1[0]), // expected_vtt_contents
  ABISELECT(1296,984), // object size
  NSPAIRA(_ZTI8S21091C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S21091C1),99, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21091C1),18, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7445C3  {
  void *s7445c3f0;
  short s7445c3f1;
  int s7445c3f2;
  long double s7445c3f3[8];
  int s7445c3f4;
  void  mf7445c3(); // _ZN7S7445C38mf7445c3Ev
};
//SIG(-1 S7445C3) C1{ m Fp Fs Fi FD[8] Fi}


void  S7445C3 ::mf7445c3(){}

static void Test_S7445C3()
{
  {
    init_simple_test("S7445C3");
    S7445C3 lv;
    check2(sizeof(lv), ABISELECT(160,112), "sizeof(S7445C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7445C3)");
    check_field_offset(lv, s7445c3f0, 0, "S7445C3.s7445c3f0");
    check_field_offset(lv, s7445c3f1, ABISELECT(8,4), "S7445C3.s7445c3f1");
    check_field_offset(lv, s7445c3f2, ABISELECT(12,8), "S7445C3.s7445c3f2");
    check_field_offset(lv, s7445c3f3, ABISELECT(16,12), "S7445C3.s7445c3f3");
    check_field_offset(lv, s7445c3f4, ABISELECT(144,108), "S7445C3.s7445c3f4");
  }
}
static Arrange_To_Call_Me vS7445C3(Test_S7445C3, "S7445C3", ABISELECT(160,112));

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S7445C2  : virtual S7445C3 {
  int s7445c2f0;
  void *s7445c2f1;
  __tsi64 s7445c2f2:62;
  char s7445c2f3:4;
  virtual  ~S7445C2(); // _ZN7S7445C2D2Ev
  S7445C2(); // tgen
};
//SIG(-1 S7445C2) C1{ VBC2{ m Fp Fs Fi FD[8] Fi} vd Fi Fp FL:62 Fc:4}


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

static void Test_S7445C2()
{
  extern Class_Descriptor cd_S7445C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(14,35)];
    init_test(&cd_S7445C2, buf);
    S7445C2 *dp, &lv = *(dp=new (buf) S7445C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,136), "sizeof(S7445C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7445C2)");
    check_base_class_offset(lv, (S7445C3*), ABISELECT(48,24), "S7445C2");
    check_field_offset(lv, s7445c2f0, ABISELECT(8,4), "S7445C2.s7445c2f0");
    check_field_offset(lv, s7445c2f1, ABISELECT(16,8), "S7445C2.s7445c2f1");
    set_bf_and_test(lv, s7445c2f2, ABISELECT(24,12), 0, 62, 1, "S7445C2");
    set_bf_and_test(lv, s7445c2f2, ABISELECT(24,12), 0, 62, hide_sll(1LL<<61), "S7445C2");
    set_bf_and_test(lv, s7445c2f3, ABISELECT(32,20), 0, 4, 1, "S7445C2");
    set_bf_and_test(lv, s7445c2f3, ABISELECT(32,20), 0, 4, hide_sll(1LL<<3), "S7445C2");
    test_class_info(&lv, &cd_S7445C2);
    dp->~S7445C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7445C2(Test_S7445C2, "S7445C2", ABISELECT(208,136));

#else // __cplusplus

extern void _ZN7S7445C2C1Ev();
extern void _ZN7S7445C2D2Ev();
Name_Map name_map_S7445C2[] = {
  NSPAIR(_ZN7S7445C2C1Ev),
  NSPAIR(_ZN7S7445C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
static Base_Class bases_S7445C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7445C3,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7445C2[];
extern void _ZN7S7445C2D1Ev();
extern void _ZN7S7445C2D0Ev();
static  VTBL_ENTRY vtc_S7445C2[] = {
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C2[0]),
  (VTBL_ENTRY)&_ZN7S7445C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7445C2D0Ev,
};
extern VTBL_ENTRY _ZTV7S7445C2[];
static  VTT_ENTRY vtt_S7445C2[] = {
  {&(_ZTV7S7445C2[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S7445C2[];
extern  VTBL_ENTRY _ZTV7S7445C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C2[];
Class_Descriptor cd_S7445C2 = {  "S7445C2", // class name
  bases_S7445C2, 1,
  &(vtc_S7445C2[0]), // expected_vtbl_contents
  &(vtt_S7445C2[0]), // expected_vtt_contents
  ABISELECT(208,136), // object size
  NSPAIRA(_ZTI7S7445C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7445C2),5, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7445C2),1, //virtual table table var
  0, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7445C5  : virtual S7445C3 {
  ::S7445C2 s7445c5f0[5];
  ~S7445C5(); // tgen
  S7445C5(); // tgen
};
//SIG(-1 S7445C5) C1{ VBC2{ m Fp Fs Fi FD[8] Fi} FC3{ VBC2 vd Fi Fp FL:62 Fc:4}[5]}


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

static void Test_S7445C5()
{
  extern Class_Descriptor cd_S7445C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(77,200)];
    init_test(&cd_S7445C5, buf);
    S7445C5 *dp, &lv = *(dp=new (buf) S7445C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1216,796), "sizeof(S7445C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7445C5)");
    check_base_class_offset(lv, (S7445C3*), ABISELECT(1056,684), "S7445C5");
    check_field_offset(lv, s7445c5f0, ABISELECT(16,4), "S7445C5.s7445c5f0");
    test_class_info(&lv, &cd_S7445C5);
    dp->~S7445C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7445C5(Test_S7445C5, "S7445C5", ABISELECT(1216,796));

#else // __cplusplus

extern void _ZN7S7445C5C1Ev();
extern void _ZN7S7445C5D1Ev();
Name_Map name_map_S7445C5[] = {
  NSPAIR(_ZN7S7445C5C1Ev),
  NSPAIR(_ZN7S7445C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
static Base_Class bases_S7445C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7445C3,    ABISELECT(1056,684), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7445C5[];
static  VTBL_ENTRY vtc_S7445C5[] = {
  ABISELECT(1056,684),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C5[0]),
};
extern VTBL_ENTRY _ZTV7S7445C5[];
static  VTT_ENTRY vtt_S7445C5[] = {
  {&(_ZTV7S7445C5[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7445C5[];
extern  VTBL_ENTRY _ZTV7S7445C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C5[];
Class_Descriptor cd_S7445C5 = {  "S7445C5", // class name
  bases_S7445C5, 1,
  &(vtc_S7445C5[0]), // expected_vtbl_contents
  &(vtt_S7445C5[0]), // expected_vtt_contents
  ABISELECT(1216,796), // object size
  NSPAIRA(_ZTI7S7445C5),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7445C5),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7445C5),1, //virtual table table var
  0, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7445C7_nt  {
  __tsi64 s7445c7f0;
  virtual void  v5(); // _ZN10S7445C7_nt2v5Ev
  virtual void  v6(); // _ZN10S7445C7_nt2v6Ev
  ~S7445C7_nt(); // tgen
  S7445C7_nt(); // tgen
};
//SIG(-1 S7445C7_nt) C1{ v1 v2 FL}


void  S7445C7_nt ::v5(){vfunc_called(this, "_ZN10S7445C7_nt2v5Ev");}
void  S7445C7_nt ::v6(){vfunc_called(this, "_ZN10S7445C7_nt2v6Ev");}
S7445C7_nt ::~S7445C7_nt(){ note_dtor("S7445C7_nt", this);} // tgen
S7445C7_nt ::S7445C7_nt(){ note_ctor("S7445C7_nt", this);} // tgen

//skip512 S7445C7_nt

#else // __cplusplus

extern void _ZN10S7445C7_ntC1Ev();
extern void _ZN10S7445C7_ntD1Ev();
Name_Map name_map_S7445C7_nt[] = {
  NSPAIR(_ZN10S7445C7_ntC1Ev),
  NSPAIR(_ZN10S7445C7_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S7445C7_nt[];
extern void _ZN10S7445C7_nt2v5Ev();
extern void _ZN10S7445C7_nt2v6Ev();
static  VTBL_ENTRY vtc_S7445C7_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S7445C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v6Ev,
};
extern VTBL_ENTRY _ZTI10S7445C7_nt[];
VTBL_ENTRY *P__ZTI10S7445C7_nt = _ZTI10S7445C7_nt; 
extern  VTBL_ENTRY _ZTV10S7445C7_nt[];
Class_Descriptor cd_S7445C7_nt = {  "S7445C7_nt", // class name
  0,0,//no base classes
  &(vtc_S7445C7_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI10S7445C7_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S7445C7_nt),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7445C6  : virtual S7445C7_nt {
  ::S7445C2 s7445c6f0;
  void *s7445c6f1;
  virtual void  v7(); // _ZN7S7445C62v7Ev
  virtual void  v8(); // _ZN7S7445C62v8Ev
  ~S7445C6(); // tgen
  S7445C6(); // tgen
};
//SIG(-1 S7445C6) C1{ VBC2{ v3 v4 FL} v1 v2 FC3{ VBC4{ m Fp Fs Fi FD[8] Fi} vd Fi Fp FL:62 Fc:4} Fp}


void  S7445C6 ::v7(){vfunc_called(this, "_ZN7S7445C62v7Ev");}
void  S7445C6 ::v8(){vfunc_called(this, "_ZN7S7445C62v8Ev");}
S7445C6 ::~S7445C6(){ note_dtor("S7445C6", this);} // tgen
S7445C6 ::S7445C6(){ note_ctor("S7445C6", this);} // tgen

static void Test_S7445C6()
{
  extern Class_Descriptor cd_S7445C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(17,40)];
    init_test(&cd_S7445C6, buf);
    S7445C6 *dp, &lv = *(dp=new (buf) S7445C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(256,156), "sizeof(S7445C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7445C6)");
    check_base_class_offset(lv, (S7445C7_nt*), ABISELECT(232,144), "S7445C6");
    check_field_offset(lv, s7445c6f0, ABISELECT(16,4), "S7445C6.s7445c6f0");
    check_field_offset(lv, s7445c6f1, ABISELECT(224,140), "S7445C6.s7445c6f1");
    test_class_info(&lv, &cd_S7445C6);
    dp->~S7445C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7445C6(Test_S7445C6, "S7445C6", ABISELECT(256,156));

#else // __cplusplus

extern void _ZN7S7445C6C1Ev();
extern void _ZN7S7445C6D1Ev();
Name_Map name_map_S7445C6[] = {
  NSPAIR(_ZN7S7445C6C1Ev),
  NSPAIR(_ZN7S7445C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7445C7_nt;
extern VTBL_ENTRY _ZTI10S7445C7_nt[];
extern  VTBL_ENTRY _ZTV10S7445C7_nt[];
static Base_Class bases_S7445C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7445C7_nt,    ABISELECT(232,144), //bcp->offset
    5, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7445C6[];
extern void _ZN7S7445C62v7Ev();
extern void _ZN7S7445C62v8Ev();
extern void _ZN10S7445C7_nt2v5Ev();
extern void _ZN10S7445C7_nt2v6Ev();
static  VTBL_ENTRY vtc_S7445C6[] = {
  ABISELECT(232,144),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C6[0]),
  (VTBL_ENTRY)&_ZN7S7445C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7445C62v8Ev,
  0,
  0,
  ABISELECT(-232,-144),
  (VTBL_ENTRY)&(_ZTI7S7445C6[0]),
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v6Ev,
};
extern VTBL_ENTRY _ZTV7S7445C6[];
static  VTT_ENTRY vtt_S7445C6[] = {
  {&(_ZTV7S7445C6[3]),  3,11},
  {&(_ZTV7S7445C6[9]),  9,11},
};
extern VTBL_ENTRY _ZTI7S7445C6[];
extern  VTBL_ENTRY _ZTV7S7445C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C6[];
Class_Descriptor cd_S7445C6 = {  "S7445C6", // class name
  bases_S7445C6, 1,
  &(vtc_S7445C6[0]), // expected_vtbl_contents
  &(vtt_S7445C6[0]), // expected_vtt_contents
  ABISELECT(256,156), // object size
  NSPAIRA(_ZTI7S7445C6),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7445C6),11, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7445C6),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7445C8  : virtual S7445C5 , S7445C2 , S7445C7_nt , S7445C3 {
  virtual  ~S7445C8(); // _ZN7S7445C8D2Ev
  S7445C8(); // tgen
};
//SIG(-1 S7445C8) C1{ VBC2{ VBC3{ m Fp Fs Fi FD[8] Fi} FC4{ VBC3 vd Fi Fp FL:62 Fc:4}[5]} BC4 BC5{ v1 v2 FL} BC3 vd}


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

static void Test_S7445C8()
{
  extern Class_Descriptor cd_S7445C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(91,237)];
    init_test(&cd_S7445C8, buf);
    S7445C8 *dp, &lv = *(dp=new (buf) S7445C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1440,944), "sizeof(S7445C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7445C8)");
    check_base_class_offset(lv, (S7445C3*)(S7445C5*), ABISELECT(1280,832), "S7445C8");
    check_base_class_offset(lv, (S7445C3*)(S7445C2*), ABISELECT(1280,832), "S7445C8");
    check_base_class_offset(lv, (S7445C5*), ABISELECT(224,148), "S7445C8");
    check_base_class_offset(lv, (S7445C2*), 0, "S7445C8");
    check_base_class_offset(lv, (S7445C7_nt*), ABISELECT(40,24), "S7445C8");
    /*is_ambiguous_... S7445C8::S7445C3 */ AMB_check_base_class_offset(lv, (S7445C3*), ABISELECT(64,36), "S7445C8");
    test_class_info(&lv, &cd_S7445C8);
    dp->~S7445C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7445C8(Test_S7445C8, "S7445C8", ABISELECT(1440,944));

#else // __cplusplus

extern void _ZN7S7445C8C1Ev();
extern void _ZN7S7445C8D2Ev();
Name_Map name_map_S7445C8[] = {
  NSPAIR(_ZN7S7445C8C1Ev),
  NSPAIR(_ZN7S7445C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
extern Class_Descriptor cd_S7445C5;
extern VTBL_ENTRY _ZTI7S7445C5[];
extern  VTBL_ENTRY _ZTV7S7445C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C5[];
extern Class_Descriptor cd_S7445C2;
extern VTBL_ENTRY _ZTI7S7445C2[];
extern  VTBL_ENTRY _ZTV7S7445C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C2[];
extern Class_Descriptor cd_S7445C7_nt;
extern VTBL_ENTRY _ZTI10S7445C7_nt[];
extern  VTBL_ENTRY _ZTV10S7445C7_nt[];
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
static Base_Class bases_S7445C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7445C3,    ABISELECT(1280,832), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7445C5,    ABISELECT(224,148), //bcp->offset
    10, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7445C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7445C7_nt,    ABISELECT(40,24), //bcp->offset
    6, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7445C3,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7445C8[];
extern void _ZN7S7445C8D1Ev();
extern void _ZN7S7445C8D0Ev();
extern void _ZN10S7445C7_nt2v5Ev();
extern void _ZN10S7445C7_nt2v6Ev();
static  VTBL_ENTRY vtc_S7445C8[] = {
  ABISELECT(224,148),
  ABISELECT(1280,832),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C8[0]),
  (VTBL_ENTRY)&_ZN7S7445C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7445C8D0Ev,
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7445C8[0]),
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v6Ev,
  ABISELECT(1056,684),
  ABISELECT(-224,-148),
  (VTBL_ENTRY)&(_ZTI7S7445C8[0]),
};
extern VTBL_ENTRY _ZTV7S7445C8[];
extern void _ZN7S7445C2D1Ev();
extern void _ZN7S7445C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7445C2__7S7445C8[] = {
  ABISELECT(1280,832),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C2[0]),
  (VTBL_ENTRY)&_ZN7S7445C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7445C2D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7445C5__7S7445C8[] = {
  ABISELECT(1056,684),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C5[0]),
};
static  VTT_ENTRY vtt_S7445C8[] = {
  {&(_ZTV7S7445C8[4]),  4,13},
  {&(_tg__ZTV7S7445C2__7S7445C8[3]),  3,5},
  {&(_ZTV7S7445C8[13]),  13,13},
  {&(_tg__ZTV7S7445C5__7S7445C8[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7445C8[];
extern  VTBL_ENTRY _ZTV7S7445C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C8[];
Class_Descriptor cd_S7445C8 = {  "S7445C8", // class name
  bases_S7445C8, 5,
  &(vtc_S7445C8[0]), // expected_vtbl_contents
  &(vtt_S7445C8[0]), // expected_vtt_contents
  ABISELECT(1440,944), // object size
  NSPAIRA(_ZTI7S7445C8),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7445C8),13, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7445C8),4, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7445C4  : S7445C3 , virtual S7445C5 , virtual S7445C6 , S7445C8 {
  int s7445c4f0;
  long s7445c4f1;
  virtual  ~S7445C4(); // _ZN7S7445C4D2Ev
  virtual void  v9(); // _ZN7S7445C42v9Ev
  S7445C4(); // tgen
};
//SIG(-1 S7445C4) C1{ BC2{ m Fp Fs Fi FD[8] Fi} VBC3{ VBC2 FC4{ VBC2 vd Fi Fp FL:62 Fc:4}[5]} VBC5{ VBC6{ v2 v3 FL} v4 v5 FC4 Fp} BC7{ VBC3 BC4 BC6 BC2 vd} vd v1 Fi Fl}


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

static void Test_S7445C4()
{
  extern Class_Descriptor cd_S7445C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(118,306)];
    init_test(&cd_S7445C4, buf);
    S7445C4 *dp, &lv = *(dp=new (buf) S7445C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1872,1220), "sizeof(S7445C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7445C4)");
    /*is_ambiguous_... S7445C4::S7445C3 */ AMB_check_base_class_offset(lv, (S7445C3*), ABISELECT(224,148), "S7445C4");
    check_base_class_offset(lv, (S7445C3*)(S7445C5*), ABISELECT(1456,952), "S7445C4");
    check_base_class_offset(lv, (S7445C3*)(S7445C2*)(S7445C8*), ABISELECT(1456,952), "S7445C4");
    check_base_class_offset(lv, (S7445C5*), ABISELECT(400,268), "S7445C4");
    check_base_class_offset(lv, (S7445C5*)(S7445C8*), ABISELECT(400,268), "S7445C4");
    check_base_class_offset(lv, (S7445C7_nt*)(S7445C6*), ABISELECT(1848,1208), "S7445C4");
    check_base_class_offset(lv, (S7445C6*), ABISELECT(1616,1064), "S7445C4");
    check_base_class_offset(lv, (S7445C2*)(S7445C8*), 0, "S7445C4");
    check_base_class_offset(lv, (S7445C7_nt*)(S7445C8*), ABISELECT(40,24), "S7445C4");
    /*is_ambiguous_... S7445C8::S7445C3 */ AMB_check_base_class_offset(lv, (S7445C3*)(S7445C8*), ABISELECT(64,36), "S7445C4");
    check_base_class_offset(lv, (S7445C8*), 0, "S7445C4");
    check_field_offset(lv, s7445c4f0, ABISELECT(384,260), "S7445C4.s7445c4f0");
    check_field_offset(lv, s7445c4f1, ABISELECT(392,264), "S7445C4.s7445c4f1");
    test_class_info(&lv, &cd_S7445C4);
    dp->~S7445C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7445C4(Test_S7445C4, "S7445C4", ABISELECT(1872,1220));

#else // __cplusplus

extern void _ZN7S7445C4C1Ev();
extern void _ZN7S7445C4D2Ev();
Name_Map name_map_S7445C4[] = {
  NSPAIR(_ZN7S7445C4C1Ev),
  NSPAIR(_ZN7S7445C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
extern Class_Descriptor cd_S7445C5;
extern VTBL_ENTRY _ZTI7S7445C5[];
extern  VTBL_ENTRY _ZTV7S7445C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C5[];
extern Class_Descriptor cd_S7445C7_nt;
extern VTBL_ENTRY _ZTI10S7445C7_nt[];
extern  VTBL_ENTRY _ZTV10S7445C7_nt[];
extern Class_Descriptor cd_S7445C6;
extern VTBL_ENTRY _ZTI7S7445C6[];
extern  VTBL_ENTRY _ZTV7S7445C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C6[];
extern Class_Descriptor cd_S7445C2;
extern VTBL_ENTRY _ZTI7S7445C2[];
extern  VTBL_ENTRY _ZTV7S7445C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C2[];
extern Class_Descriptor cd_S7445C7_nt;
extern VTBL_ENTRY _ZTI10S7445C7_nt[];
extern  VTBL_ENTRY _ZTV10S7445C7_nt[];
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
extern Class_Descriptor cd_S7445C8;
extern VTBL_ENTRY _ZTI7S7445C8[];
extern  VTBL_ENTRY _ZTV7S7445C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C8[];
static Base_Class bases_S7445C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7445C3,    ABISELECT(224,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7445C3,    ABISELECT(1456,952), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7445C5,    ABISELECT(400,268), //bcp->offset
    13, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7445C7_nt,    ABISELECT(1848,1208), //bcp->offset
    23, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7445C6,    ABISELECT(1616,1064), //bcp->offset
    16, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7445C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7445C7_nt,    ABISELECT(40,24), //bcp->offset
    9, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7445C3,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7445C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7445C4[];
extern void _ZN7S7445C4D1Ev();
extern void _ZN7S7445C4D0Ev();
extern void _ZN7S7445C42v9Ev();
extern void _ZN10S7445C7_nt2v5Ev();
extern void _ZN10S7445C7_nt2v6Ev();
extern void _ZN7S7445C62v7Ev();
extern void _ZN7S7445C62v8Ev();
extern void _ZN10S7445C7_nt2v5Ev();
extern void _ZN10S7445C7_nt2v6Ev();
static  VTBL_ENTRY vtc_S7445C4[] = {
  ABISELECT(1848,1208),
  ABISELECT(1616,1064),
  ABISELECT(400,268),
  ABISELECT(1456,952),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C4[0]),
  (VTBL_ENTRY)&_ZN7S7445C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7445C4D0Ev,
  (VTBL_ENTRY)&_ZN7S7445C42v9Ev,
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7445C4[0]),
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v6Ev,
  ABISELECT(1056,684),
  ABISELECT(-400,-268),
  (VTBL_ENTRY)&(_ZTI7S7445C4[0]),
  0,
  0,
  ABISELECT(232,144),
  ABISELECT(-1616,-1064),
  (VTBL_ENTRY)&(_ZTI7S7445C4[0]),
  (VTBL_ENTRY)&_ZN7S7445C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7445C62v8Ev,
  0,
  0,
  ABISELECT(-1848,-1208),
  (VTBL_ENTRY)&(_ZTI7S7445C4[0]),
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v6Ev,
};
extern VTBL_ENTRY _ZTV7S7445C4[];
extern void _ZN7S7445C8D1Ev();
extern void _ZN7S7445C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7445C8__7S7445C4[] = {
  ABISELECT(400,268),
  ABISELECT(1456,952),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C8[0]),
  (VTBL_ENTRY)&_ZN7S7445C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7445C8D0Ev,
};
extern void _ZN7S7445C2D1Ev();
extern void _ZN7S7445C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7445C27S7445C8__7S7445C4[] = {
  ABISELECT(1456,952),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C2[0]),
  (VTBL_ENTRY)&_ZN7S7445C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7445C2D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7445C5__7S7445C8__7S7445C4[] = {
  ABISELECT(1056,684),
  ABISELECT(-400,-268),
  (VTBL_ENTRY)&(_ZTI7S7445C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7445C5__7S7445C4[] = {
  ABISELECT(1056,684),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C5[0]),
};
extern void _ZN7S7445C62v7Ev();
extern void _ZN7S7445C62v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7445C6__7S7445C4[] = {
  ABISELECT(232,144),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C6[0]),
  (VTBL_ENTRY)&_ZN7S7445C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7445C62v8Ev,
};
extern void _ZN10S7445C7_nt2v5Ev();
extern void _ZN10S7445C7_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV10S7445C7_nt__7S7445C6__7S7445C4[] = {
  0,
  0,
  ABISELECT(-232,-144),
  (VTBL_ENTRY)&(_ZTI7S7445C6[0]),
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v6Ev,
};
static  VTT_ENTRY vtt_S7445C4[] = {
  {&(_ZTV7S7445C4[6]),  6,29},
  {&(_tg__ZTV7S7445C8__7S7445C4[4]),  4,6},
  {&(_tg__ZTV7S7445C27S7445C8__7S7445C4[3]),  3,5},
  {&(_tg__ZTV7S7445C5__7S7445C8__7S7445C4[3]),  3,3},
  {&(_ZTV7S7445C4[16]),  16,29},
  {&(_ZTV7S7445C4[21]),  21,29},
  {&(_ZTV7S7445C4[27]),  27,29},
  {&(_tg__ZTV7S7445C5__7S7445C4[3]),  3,3},
  {&(_tg__ZTV7S7445C6__7S7445C4[3]),  3,5},
  {&(_tg__ZTV10S7445C7_nt__7S7445C6__7S7445C4[4]),  4,6},
};
extern VTBL_ENTRY _ZTI7S7445C4[];
extern  VTBL_ENTRY _ZTV7S7445C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C4[];
Class_Descriptor cd_S7445C4 = {  "S7445C4", // class name
  bases_S7445C4, 9,
  &(vtc_S7445C4[0]), // expected_vtbl_contents
  &(vtt_S7445C4[0]), // expected_vtt_contents
  ABISELECT(1872,1220), // object size
  NSPAIRA(_ZTI7S7445C4),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7445C4),29, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7445C4),10, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

union  S7445C11  {
  __tsi64 s7445c11f0;
  void *s7445c11f1;
  void  mf7445c11(); // _ZN8S7445C119mf7445c11Ev
};
//SIG(1 S7445C11) U1{ m FL Fp}

#endif // __cplusplus
#ifdef __cplusplus

struct  S7445C10  : virtual S7445C7_nt , virtual S7445C6 , virtual S7445C5 , virtual S7445C8 , virtual S7445C2 {
  __tsi64 s7445c10f0;
  long double s7445c10f1;
  ::S7445C11 s7445c10f2[3];
  int s7445c10f3;
  void *s7445c10f4;
  char s7445c10f5;
  int s7445c10f6;
  __tsi64 s7445c10f7;
  virtual  ~S7445C10(); // _ZN8S7445C10D2Ev
  S7445C10(); // tgen
};
//SIG(-1 S7445C10) C1{ VBC2{ v1 v2 FL} VBC3{ VBC2 v3 v4 FC4{ VBC5{ m Fp Fs Fi FD[8] Fi} vd Fi Fp FL:62 Fc:4} Fp} VBC6{ VBC5 FC4[5]} VBC7{ VBC6 BC4 BC2 BC5 vd} VBC4 vd FL FD FU8{ m FL Fp}[3] Fi Fp Fc Fi FL}


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

static void Test_S7445C10()
{
  extern Class_Descriptor cd_S7445C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(116,300)];
    init_test(&cd_S7445C10, buf);
    S7445C10 *dp, &lv = *(dp=new (buf) S7445C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1840,1196), "sizeof(S7445C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7445C10)");
    /*is_ambiguous_... S7445C10::S7445C7_nt */ AMB_check_base_class_offset(lv, (S7445C7_nt*), ABISELECT(88,72), "S7445C10");
    check_base_class_offset(lv, (S7445C7_nt*)(S7445C6*), ABISELECT(88,72), "S7445C10");
    check_base_class_offset(lv, (S7445C6*), ABISELECT(112,84), "S7445C10");
    check_base_class_offset(lv, (S7445C3*)(S7445C5*), ABISELECT(1408,912), "S7445C10");
    check_base_class_offset(lv, (S7445C3*)(S7445C2*)(S7445C8*), ABISELECT(1408,912), "S7445C10");
    /*is_ambiguous_... S7445C10::S7445C2 */ AMB_check_base_class_offset(lv, (S7445C3*)(S7445C2*), ABISELECT(1408,912), "S7445C10");
    check_base_class_offset(lv, (S7445C5*), ABISELECT(352,228), "S7445C10");
    check_base_class_offset(lv, (S7445C5*)(S7445C8*), ABISELECT(352,228), "S7445C10");
    check_base_class_offset(lv, (S7445C2*)(S7445C8*), ABISELECT(1568,1024), "S7445C10");
    check_base_class_offset(lv, (S7445C7_nt*)(S7445C8*), ABISELECT(1608,1048), "S7445C10");
    /*is_ambiguous_... S7445C8::S7445C3 */ AMB_check_base_class_offset(lv, (S7445C3*)(S7445C8*), ABISELECT(1632,1060), "S7445C10");
    check_base_class_offset(lv, (S7445C8*), ABISELECT(1568,1024), "S7445C10");
    /*is_ambiguous_... S7445C10::S7445C2 */ AMB_check_base_class_offset(lv, (S7445C2*), ABISELECT(1792,1172), "S7445C10");
    check_field_offset(lv, s7445c10f0, ABISELECT(8,4), "S7445C10.s7445c10f0");
    check_field_offset(lv, s7445c10f1, ABISELECT(16,12), "S7445C10.s7445c10f1");
    check_field_offset(lv, s7445c10f2, ABISELECT(32,24), "S7445C10.s7445c10f2");
    check_field_offset(lv, s7445c10f3, ABISELECT(56,48), "S7445C10.s7445c10f3");
    check_field_offset(lv, s7445c10f4, ABISELECT(64,52), "S7445C10.s7445c10f4");
    check_field_offset(lv, s7445c10f5, ABISELECT(72,56), "S7445C10.s7445c10f5");
    check_field_offset(lv, s7445c10f6, ABISELECT(76,60), "S7445C10.s7445c10f6");
    check_field_offset(lv, s7445c10f7, ABISELECT(80,64), "S7445C10.s7445c10f7");
    test_class_info(&lv, &cd_S7445C10);
    dp->~S7445C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7445C10(Test_S7445C10, "S7445C10", ABISELECT(1840,1196));

#else // __cplusplus

extern void _ZN8S7445C10C1Ev();
extern void _ZN8S7445C10D2Ev();
Name_Map name_map_S7445C10[] = {
  NSPAIR(_ZN8S7445C10C1Ev),
  NSPAIR(_ZN8S7445C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7445C7_nt;
extern VTBL_ENTRY _ZTI10S7445C7_nt[];
extern  VTBL_ENTRY _ZTV10S7445C7_nt[];
extern Class_Descriptor cd_S7445C6;
extern VTBL_ENTRY _ZTI7S7445C6[];
extern  VTBL_ENTRY _ZTV7S7445C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C6[];
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
extern Class_Descriptor cd_S7445C5;
extern VTBL_ENTRY _ZTI7S7445C5[];
extern  VTBL_ENTRY _ZTV7S7445C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C5[];
extern Class_Descriptor cd_S7445C2;
extern VTBL_ENTRY _ZTI7S7445C2[];
extern  VTBL_ENTRY _ZTV7S7445C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C2[];
extern Class_Descriptor cd_S7445C7_nt;
extern VTBL_ENTRY _ZTI10S7445C7_nt[];
extern  VTBL_ENTRY _ZTV10S7445C7_nt[];
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
extern Class_Descriptor cd_S7445C8;
extern VTBL_ENTRY _ZTI7S7445C8[];
extern  VTBL_ENTRY _ZTV7S7445C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C8[];
extern Class_Descriptor cd_S7445C2;
extern VTBL_ENTRY _ZTI7S7445C2[];
extern  VTBL_ENTRY _ZTV7S7445C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C2[];
static Base_Class bases_S7445C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7445C7_nt,    ABISELECT(88,72), //bcp->offset
    10, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7445C6,    ABISELECT(112,84), //bcp->offset
    16, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7445C3,    ABISELECT(1408,912), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7445C5,    ABISELECT(352,228), //bcp->offset
    23, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7445C2,    ABISELECT(1568,1024), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7445C7_nt,    ABISELECT(1608,1048), //bcp->offset
    35, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7445C3,    ABISELECT(1632,1060), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7445C8,    ABISELECT(1568,1024), //bcp->offset
    26, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7445C2,    ABISELECT(1792,1172), //bcp->offset
    39, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7445C10[];
extern void _ZN8S7445C10D1Ev();
extern void _ZN8S7445C10D0Ev();
extern void _ZN10S7445C7_nt2v5Ev();
extern void _ZN10S7445C7_nt2v6Ev();
extern void _ZN7S7445C62v7Ev();
extern void _ZN7S7445C62v8Ev();
extern void ABISELECT(_ZTv0_n40_N8S7445C10D1Ev,_ZTv0_n20_N8S7445C10D1Ev)();
extern void ABISELECT(_ZThn1568_N8S7445C10D1Ev,_ZThn1024_N8S7445C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S7445C10D0Ev,_ZTv0_n20_N8S7445C10D0Ev)();
extern void ABISELECT(_ZThn1568_N8S7445C10D0Ev,_ZThn1024_N8S7445C10D0Ev)() __attribute__((weak));
extern void _ZN10S7445C7_nt2v5Ev();
extern void _ZN10S7445C7_nt2v6Ev();
extern void ABISELECT(_ZTv0_n32_N8S7445C10D1Ev,_ZTv0_n16_N8S7445C10D1Ev)();
extern void ABISELECT(_ZThn1792_N8S7445C10D1Ev,_ZThn1172_N8S7445C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7445C10D0Ev,_ZTv0_n16_N8S7445C10D0Ev)();
extern void ABISELECT(_ZThn1792_N8S7445C10D0Ev,_ZThn1172_N8S7445C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7445C10[] = {
  ABISELECT(1792,1172),
  ABISELECT(1568,1024),
  ABISELECT(1408,912),
  ABISELECT(352,228),
  ABISELECT(112,84),
  ABISELECT(88,72),
  0,
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
  (VTBL_ENTRY)&_ZN8S7445C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7445C10D0Ev,
  0,
  0,
  ABISELECT(-88,-72),
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v6Ev,
  0,
  0,
  ABISELECT(-24,-12),
  ABISELECT(-112,-84),
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
  (VTBL_ENTRY)&_ZN7S7445C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7445C62v8Ev,
  ABISELECT(1056,684),
  ABISELECT(-352,-228),
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
  ABISELECT(40,24),
  ABISELECT(40,24),
  ABISELECT(-1568,-1024),
  ABISELECT(-1216,-796),
  ABISELECT(-160,-112),
  ABISELECT(-1568,-1024),
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7445C10D1Ev,_ZTv0_n20_N8S7445C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7445C10D0Ev,_ZTv0_n20_N8S7445C10D0Ev),
  ABISELECT(-1608,-1048),
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v6Ev,
  ABISELECT(-1792,-1172),
  ABISELECT(-384,-260),
  ABISELECT(-1792,-1172),
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7445C10D1Ev,_ZTv0_n16_N8S7445C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7445C10D0Ev,_ZTv0_n16_N8S7445C10D0Ev),
};
extern VTBL_ENTRY _ZTV8S7445C10[];
extern void _ZN7S7445C62v7Ev();
extern void _ZN7S7445C62v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7445C6__8S7445C10[] = {
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C6[0]),
  (VTBL_ENTRY)&_ZN7S7445C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7445C62v8Ev,
};
extern void _ZN10S7445C7_nt2v5Ev();
extern void _ZN10S7445C7_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV10S7445C7_nt__7S7445C6__8S7445C10[] = {
  0,
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI7S7445C6[0]),
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v6Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7445C5__8S7445C10[] = {
  ABISELECT(1056,684),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C5[0]),
};
extern void _ZN7S7445C8D1Ev();
extern void _ZN7S7445C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7445C8__8S7445C10[] = {
  ABISELECT(-1216,-796),
  ABISELECT(-160,-112),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C8[0]),
  (VTBL_ENTRY)&_ZN7S7445C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7445C8D0Ev,
};
extern void _ZN7S7445C2D1Ev();
extern void _ZN7S7445C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7445C27S7445C8__8S7445C10[] = {
  ABISELECT(-160,-112),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C2[0]),
  (VTBL_ENTRY)&_ZN7S7445C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7445C2D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7445C5__7S7445C8__8S7445C10[] = {
  ABISELECT(1056,684),
  ABISELECT(1216,796),
  (VTBL_ENTRY)&(_ZTI7S7445C8[0]),
};
extern void _ZN7S7445C2D1Ev();
extern void _ZN7S7445C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7445C2__A1__8S7445C10[] = {
  ABISELECT(-384,-260),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C2[0]),
  (VTBL_ENTRY)&_ZN7S7445C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7445C2D0Ev,
};
static  VTT_ENTRY vtt_S7445C10[] = {
  {&(_ZTV8S7445C10[8]),  8,45},
  {&(_ZTV8S7445C10[14]),  14,45},
  {&(_ZTV8S7445C10[21]),  21,45},
  {&(_ZTV8S7445C10[26]),  26,45},
  {&(_ZTV8S7445C10[33]),  33,45},
  {&(_ZTV8S7445C10[37]),  37,45},
  {&(_ZTV8S7445C10[43]),  43,45},
  {&(_tg__ZTV7S7445C6__8S7445C10[3]),  3,5},
  {&(_tg__ZTV10S7445C7_nt__7S7445C6__8S7445C10[4]),  4,6},
  {&(_tg__ZTV7S7445C5__8S7445C10[3]),  3,3},
  {&(_tg__ZTV7S7445C8__8S7445C10[4]),  4,6},
  {&(_tg__ZTV7S7445C27S7445C8__8S7445C10[3]),  3,5},
  {&(_tg__ZTV7S7445C5__7S7445C8__8S7445C10[3]),  3,3},
  {&(_tg__ZTV7S7445C2__A1__8S7445C10[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S7445C10[];
extern  VTBL_ENTRY _ZTV8S7445C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7445C10[];
static VTBL_ENTRY alt_thunk_names100[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7445C10D0Ev,_ZTv0_n16_N8S7445C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1792_N8S7445C10D0Ev,_ZThn1172_N8S7445C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7445C10D1Ev,_ZTv0_n16_N8S7445C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1792_N8S7445C10D1Ev,_ZThn1172_N8S7445C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S7445C10D0Ev,_ZTv0_n20_N8S7445C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1568_N8S7445C10D0Ev,_ZThn1024_N8S7445C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S7445C10D1Ev,_ZTv0_n20_N8S7445C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1568_N8S7445C10D1Ev,_ZThn1024_N8S7445C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7445C10 = {  "S7445C10", // class name
  bases_S7445C10, 9,
  &(vtc_S7445C10[0]), // expected_vtbl_contents
  &(vtt_S7445C10[0]), // expected_vtt_contents
  ABISELECT(1840,1196), // object size
  NSPAIRA(_ZTI8S7445C10),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S7445C10),45, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7445C10),14, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names100,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7445C12  : S7445C2 , S7445C3 , S7445C10 {
  ::S7445C5 s7445c12f0;
  void *s7445c12f1;
  long double s7445c12f2;
  __tsi64 s7445c12f3[9];
  void *s7445c12f4[3];
  void *s7445c12f5;
  int s7445c12f6;
  ::S7445C11 s7445c12f7;
  virtual  ~S7445C12(); // _ZN8S7445C12D2Ev
  virtual void  v10(); // _ZN8S7445C123v10Ev
  S7445C12(); // tgen
};
//SIG(-1 S7445C12) C1{ BC2{ VBC3{ m Fp Fs Fi FD[8] Fi} vd Fi Fp FL:62 Fc:4} BC3 BC4{ VBC5{ v2 v3 FL} VBC6{ VBC5 v4 v5 FC2 Fp} VBC7{ VBC3 FC2[5]} VBC8{ VBC7 BC2 BC5 BC3 vd} VBC2 vd FL FD FU9{ m FL Fp}[3] Fi Fp Fc Fi FL} vd v1 FC7 Fp FD FL[9] Fp[3] Fp Fi FU9}


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

static void Test_S7445C12()
{
  extern Class_Descriptor cd_S7445C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(215,562)];
    init_test(&cd_S7445C12, buf);
    S7445C12 *dp, &lv = *(dp=new (buf) S7445C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(3424,2244), "sizeof(S7445C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7445C12)");
    /*is_ambiguous_... S7445C12::S7445C2 */ AMB_check_base_class_offset(lv, (S7445C3*)(S7445C2*), ABISELECT(1680,1120), "S7445C12");
    check_base_class_offset(lv, (S7445C3*)(S7445C5*), ABISELECT(1680,1120), "S7445C12");
    check_base_class_offset(lv, (S7445C3*)(S7445C2*)(S7445C8*), ABISELECT(1680,1120), "S7445C12");
    /*is_ambiguous_... S7445C12::S7445C2 */ AMB_check_base_class_offset(lv, (S7445C3*)(S7445C2*), ABISELECT(1680,1120), "S7445C12");
    /*is_ambiguous_... S7445C12::S7445C2 */ AMB_check_base_class_offset(lv, (S7445C2*), 0, "S7445C12");
    /*is_ambiguous_... S7445C12::S7445C3 */ AMB_check_base_class_offset(lv, (S7445C3*), ABISELECT(48,24), "S7445C12");
    /*is_ambiguous_... S7445C10::S7445C7_nt */ AMB_check_base_class_offset(lv, (S7445C7_nt*)(S7445C10*), ABISELECT(1840,1232), "S7445C12");
    check_base_class_offset(lv, (S7445C7_nt*)(S7445C6*), ABISELECT(1840,1232), "S7445C12");
    check_base_class_offset(lv, (S7445C6*)(S7445C10*), ABISELECT(1856,1244), "S7445C12");
    check_base_class_offset(lv, (S7445C5*)(S7445C10*), ABISELECT(2096,1388), "S7445C12");
    check_base_class_offset(lv, (S7445C5*)(S7445C8*), ABISELECT(2096,1388), "S7445C12");
    check_base_class_offset(lv, (S7445C2*)(S7445C8*), ABISELECT(3152,2072), "S7445C12");
    check_base_class_offset(lv, (S7445C7_nt*)(S7445C8*), ABISELECT(3192,2096), "S7445C12");
    /*is_ambiguous_... S7445C8::S7445C3 */ AMB_check_base_class_offset(lv, (S7445C3*)(S7445C8*), ABISELECT(3216,2108), "S7445C12");
    check_base_class_offset(lv, (S7445C8*)(S7445C10*), ABISELECT(3152,2072), "S7445C12");
    /*is_ambiguous_... S7445C10::S7445C2 */ AMB_check_base_class_offset(lv, (S7445C2*)(S7445C10*), ABISELECT(3376,2220), "S7445C12");
    check_base_class_offset(lv, (S7445C10*), ABISELECT(208,136), "S7445C12");
    check_field_offset(lv, s7445c12f0, ABISELECT(304,208), "S7445C12.s7445c12f0");
    check_field_offset(lv, s7445c12f1, ABISELECT(1520,1004), "S7445C12.s7445c12f1");
    check_field_offset(lv, s7445c12f2, ABISELECT(1536,1008), "S7445C12.s7445c12f2");
    check_field_offset(lv, s7445c12f3, ABISELECT(1552,1020), "S7445C12.s7445c12f3");
    check_field_offset(lv, s7445c12f4, ABISELECT(1624,1092), "S7445C12.s7445c12f4");
    check_field_offset(lv, s7445c12f5, ABISELECT(1648,1104), "S7445C12.s7445c12f5");
    check_field_offset(lv, s7445c12f6, ABISELECT(1656,1108), "S7445C12.s7445c12f6");
    check_field_offset(lv, s7445c12f7, ABISELECT(1664,1112), "S7445C12.s7445c12f7");
    test_class_info(&lv, &cd_S7445C12);
    dp->~S7445C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7445C12(Test_S7445C12, "S7445C12", ABISELECT(3424,2244));

#else // __cplusplus

extern void _ZN8S7445C12C1Ev();
extern void _ZN8S7445C12D2Ev();
Name_Map name_map_S7445C12[] = {
  NSPAIR(_ZN8S7445C12C1Ev),
  NSPAIR(_ZN8S7445C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
extern Class_Descriptor cd_S7445C2;
extern VTBL_ENTRY _ZTI7S7445C2[];
extern  VTBL_ENTRY _ZTV7S7445C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C2[];
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
extern Class_Descriptor cd_S7445C7_nt;
extern VTBL_ENTRY _ZTI10S7445C7_nt[];
extern  VTBL_ENTRY _ZTV10S7445C7_nt[];
extern Class_Descriptor cd_S7445C6;
extern VTBL_ENTRY _ZTI7S7445C6[];
extern  VTBL_ENTRY _ZTV7S7445C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C6[];
extern Class_Descriptor cd_S7445C5;
extern VTBL_ENTRY _ZTI7S7445C5[];
extern  VTBL_ENTRY _ZTV7S7445C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C5[];
extern Class_Descriptor cd_S7445C2;
extern VTBL_ENTRY _ZTI7S7445C2[];
extern  VTBL_ENTRY _ZTV7S7445C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C2[];
extern Class_Descriptor cd_S7445C7_nt;
extern VTBL_ENTRY _ZTI10S7445C7_nt[];
extern  VTBL_ENTRY _ZTV10S7445C7_nt[];
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
extern Class_Descriptor cd_S7445C8;
extern VTBL_ENTRY _ZTI7S7445C8[];
extern  VTBL_ENTRY _ZTV7S7445C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C8[];
extern Class_Descriptor cd_S7445C2;
extern VTBL_ENTRY _ZTI7S7445C2[];
extern  VTBL_ENTRY _ZTV7S7445C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C2[];
extern Class_Descriptor cd_S7445C10;
extern VTBL_ENTRY _ZTI8S7445C10[];
extern  VTBL_ENTRY _ZTV8S7445C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7445C10[];
static Base_Class bases_S7445C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7445C3,    ABISELECT(1680,1120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7445C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7445C3,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7445C7_nt,    ABISELECT(1840,1232), //bcp->offset
    21, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7445C6,    ABISELECT(1856,1244), //bcp->offset
    27, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7445C5,    ABISELECT(2096,1388), //bcp->offset
    34, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7445C2,    ABISELECT(3152,2072), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7445C7_nt,    ABISELECT(3192,2096), //bcp->offset
    46, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7445C3,    ABISELECT(3216,2108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7445C8,    ABISELECT(3152,2072), //bcp->offset
    37, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7445C2,    ABISELECT(3376,2220), //bcp->offset
    50, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7445C10,    ABISELECT(208,136), //bcp->offset
    11, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7445C12[];
extern void _ZN8S7445C12D1Ev();
extern void _ZN8S7445C12D0Ev();
extern void _ZN8S7445C123v10Ev();
extern void ABISELECT(_ZThn208_N8S7445C12D1Ev,_ZThn136_N8S7445C12D1Ev)();
extern void ABISELECT(_ZThn208_N8S7445C12D0Ev,_ZThn136_N8S7445C12D0Ev)();
extern void _ZN10S7445C7_nt2v5Ev();
extern void _ZN10S7445C7_nt2v6Ev();
extern void _ZN7S7445C62v7Ev();
extern void _ZN7S7445C62v8Ev();
extern void ABISELECT(_ZTv0_n40_N8S7445C12D1Ev,_ZTv0_n20_N8S7445C12D1Ev)();
extern void ABISELECT(_ZThn3152_N8S7445C12D1Ev,_ZThn2072_N8S7445C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S7445C12D0Ev,_ZTv0_n20_N8S7445C12D0Ev)();
extern void ABISELECT(_ZThn3152_N8S7445C12D0Ev,_ZThn2072_N8S7445C12D0Ev)() __attribute__((weak));
extern void _ZN10S7445C7_nt2v5Ev();
extern void _ZN10S7445C7_nt2v6Ev();
extern void ABISELECT(_ZTv0_n32_N8S7445C12D1Ev,_ZTv0_n16_N8S7445C12D1Ev)();
extern void ABISELECT(_ZThn3376_N8S7445C12D1Ev,_ZThn2220_N8S7445C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7445C12D0Ev,_ZTv0_n16_N8S7445C12D0Ev)();
extern void ABISELECT(_ZThn3376_N8S7445C12D0Ev,_ZThn2220_N8S7445C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7445C12[] = {
  ABISELECT(3376,2220),
  ABISELECT(3152,2072),
  ABISELECT(2096,1388),
  ABISELECT(1856,1244),
  ABISELECT(1840,1232),
  ABISELECT(1680,1120),
  0,
  (VTBL_ENTRY)&(_ZTI8S7445C12[0]),
  (VTBL_ENTRY)&_ZN8S7445C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7445C12D0Ev,
  (VTBL_ENTRY)&_ZN8S7445C123v10Ev,
  ABISELECT(3168,2084),
  ABISELECT(2944,1936),
  ABISELECT(1472,984),
  ABISELECT(1888,1252),
  ABISELECT(1648,1108),
  ABISELECT(1632,1096),
  ABISELECT(-208,-136),
  (VTBL_ENTRY)&(_ZTI8S7445C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N8S7445C12D1Ev,_ZThn136_N8S7445C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N8S7445C12D0Ev,_ZThn136_N8S7445C12D0Ev),
  0,
  0,
  ABISELECT(-1840,-1232),
  (VTBL_ENTRY)&(_ZTI8S7445C12[0]),
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v6Ev,
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(-1856,-1244),
  (VTBL_ENTRY)&(_ZTI8S7445C12[0]),
  (VTBL_ENTRY)&_ZN7S7445C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7445C62v8Ev,
  ABISELECT(-416,-268),
  ABISELECT(-2096,-1388),
  (VTBL_ENTRY)&(_ZTI8S7445C12[0]),
  ABISELECT(40,24),
  ABISELECT(40,24),
  ABISELECT(-3152,-2072),
  ABISELECT(-1056,-684),
  ABISELECT(-1472,-952),
  ABISELECT(-3152,-2072),
  (VTBL_ENTRY)&(_ZTI8S7445C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7445C12D1Ev,_ZTv0_n20_N8S7445C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7445C12D0Ev,_ZTv0_n20_N8S7445C12D0Ev),
  ABISELECT(-3192,-2096),
  (VTBL_ENTRY)&(_ZTI8S7445C12[0]),
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v6Ev,
  ABISELECT(-3376,-2220),
  ABISELECT(-1696,-1100),
  ABISELECT(-3376,-2220),
  (VTBL_ENTRY)&(_ZTI8S7445C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7445C12D1Ev,_ZTv0_n16_N8S7445C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7445C12D0Ev,_ZTv0_n16_N8S7445C12D0Ev),
};
extern VTBL_ENTRY _ZTV8S7445C12[];
extern void _ZN7S7445C2D1Ev();
extern void _ZN7S7445C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7445C2__A__8S7445C12[] = {
  ABISELECT(1680,1120),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C2[0]),
  (VTBL_ENTRY)&_ZN7S7445C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7445C2D0Ev,
};
extern void _ZN8S7445C10D1Ev();
extern void _ZN8S7445C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7445C10__8S7445C12[] = {
  ABISELECT(3168,2084),
  ABISELECT(2944,1936),
  ABISELECT(1472,984),
  ABISELECT(1888,1252),
  ABISELECT(1648,1108),
  ABISELECT(1632,1096),
  0,
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
  (VTBL_ENTRY)&_ZN8S7445C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7445C10D0Ev,
};
extern void _ZN10S7445C7_nt2v5Ev();
extern void _ZN10S7445C7_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV10S7445C7_nt__8S7445C10__8S7445C12[] = {
  0,
  0,
  ABISELECT(-1632,-1096),
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v6Ev,
};
extern void _ZN7S7445C62v7Ev();
extern void _ZN7S7445C62v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7445C6__8S7445C10__8S7445C12[] = {
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(-1648,-1108),
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
  (VTBL_ENTRY)&_ZN7S7445C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7445C62v8Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7445C5__8S7445C10__8S7445C12[] = {
  ABISELECT(-416,-268),
  ABISELECT(-1888,-1252),
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
};
extern void ABISELECT(_ZTv0_n40_N8S7445C10D1Ev,_ZTv0_n20_N8S7445C10D1Ev)();
extern void ABISELECT(_ZThn2944_N8S7445C10D1Ev,_ZThn1936_N8S7445C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S7445C10D0Ev,_ZTv0_n20_N8S7445C10D0Ev)();
extern void ABISELECT(_ZThn2944_N8S7445C10D0Ev,_ZThn1936_N8S7445C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7445C8__8S7445C10__8S7445C12[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  ABISELECT(-2944,-1936),
  ABISELECT(-1056,-684),
  ABISELECT(-1472,-952),
  ABISELECT(-2944,-1936),
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7445C10D1Ev,_ZTv0_n20_N8S7445C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7445C10D0Ev,_ZTv0_n20_N8S7445C10D0Ev),
};
extern void _ZN10S7445C7_nt2v5Ev();
extern void _ZN10S7445C7_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV10S7445C7_nt7S7445C8__A1__8S7445C10__8S7445C12[] = {
  ABISELECT(-2984,-1960),
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v6Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S7445C10D1Ev,_ZTv0_n16_N8S7445C10D1Ev)();
extern void ABISELECT(_ZThn3168_N8S7445C10D1Ev,_ZThn2084_N8S7445C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7445C10D0Ev,_ZTv0_n16_N8S7445C10D0Ev)();
extern void ABISELECT(_ZThn3168_N8S7445C10D0Ev,_ZThn2084_N8S7445C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7445C2__A1__8S7445C10__8S7445C12[] = {
  ABISELECT(-3168,-2084),
  ABISELECT(-1696,-1100),
  ABISELECT(-3168,-2084),
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7445C10D1Ev,_ZTv0_n16_N8S7445C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7445C10D0Ev,_ZTv0_n16_N8S7445C10D0Ev),
};
extern void _ZN7S7445C62v7Ev();
extern void _ZN7S7445C62v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7445C6__8S7445C12[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C6[0]),
  (VTBL_ENTRY)&_ZN7S7445C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7445C62v8Ev,
};
extern void _ZN10S7445C7_nt2v5Ev();
extern void _ZN10S7445C7_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV10S7445C7_nt__7S7445C6__8S7445C12[] = {
  0,
  0,
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7445C6[0]),
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v6Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7445C5__8S7445C12[] = {
  ABISELECT(-416,-268),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C5[0]),
};
extern void _ZN7S7445C8D1Ev();
extern void _ZN7S7445C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7445C8__8S7445C12[] = {
  ABISELECT(-1056,-684),
  ABISELECT(-1472,-952),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C8[0]),
  (VTBL_ENTRY)&_ZN7S7445C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7445C8D0Ev,
};
extern void _ZN7S7445C2D1Ev();
extern void _ZN7S7445C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7445C27S7445C8__A1__8S7445C12[] = {
  ABISELECT(-1472,-952),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C2[0]),
  (VTBL_ENTRY)&_ZN7S7445C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7445C2D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7445C5__7S7445C8__8S7445C12[] = {
  ABISELECT(-416,-268),
  ABISELECT(1056,684),
  (VTBL_ENTRY)&(_ZTI7S7445C8[0]),
};
extern void _ZN7S7445C2D1Ev();
extern void _ZN7S7445C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7445C2__A2__8S7445C12[] = {
  ABISELECT(-1696,-1100),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C2[0]),
  (VTBL_ENTRY)&_ZN7S7445C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7445C2D0Ev,
};
static  VTT_ENTRY vtt_S7445C12[] = {
  {&(_ZTV8S7445C12[8]),  8,56},
  {&(_tg__ZTV7S7445C2__A__8S7445C12[3]),  3,5},
  {&(_tg__ZTV8S7445C10__8S7445C12[8]),  8,10},
  {&(_tg__ZTV10S7445C7_nt__8S7445C10__8S7445C12[4]),  4,6},
  {&(_tg__ZTV7S7445C6__8S7445C10__8S7445C12[5]),  5,7},
  {&(_tg__ZTV7S7445C5__8S7445C10__8S7445C12[3]),  3,3},
  {&(_tg__ZTV7S7445C8__8S7445C10__8S7445C12[7]),  7,9},
  {&(_tg__ZTV10S7445C7_nt7S7445C8__A1__8S7445C10__8S7445C12[2]),  2,4},
  {&(_tg__ZTV7S7445C2__A1__8S7445C10__8S7445C12[4]),  4,6},
  {&(_ZTV8S7445C12[19]),  19,56},
  {&(_ZTV8S7445C12[25]),  25,56},
  {&(_ZTV8S7445C12[32]),  32,56},
  {&(_ZTV8S7445C12[37]),  37,56},
  {&(_ZTV8S7445C12[44]),  44,56},
  {&(_ZTV8S7445C12[48]),  48,56},
  {&(_ZTV8S7445C12[54]),  54,56},
  {&(_tg__ZTV7S7445C6__8S7445C12[3]),  3,5},
  {&(_tg__ZTV10S7445C7_nt__7S7445C6__8S7445C12[4]),  4,6},
  {&(_tg__ZTV7S7445C5__8S7445C12[3]),  3,3},
  {&(_tg__ZTV7S7445C8__8S7445C12[4]),  4,6},
  {&(_tg__ZTV7S7445C27S7445C8__A1__8S7445C12[3]),  3,5},
  {&(_tg__ZTV7S7445C5__7S7445C8__8S7445C12[3]),  3,3},
  {&(_tg__ZTV7S7445C2__A2__8S7445C12[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S7445C12[];
extern  VTBL_ENTRY _ZTV8S7445C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7445C12[];
static VTBL_ENTRY alt_thunk_names101[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7445C10D0Ev,_ZTv0_n16_N8S7445C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3168_N8S7445C10D0Ev,_ZThn2084_N8S7445C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7445C10D1Ev,_ZTv0_n16_N8S7445C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3168_N8S7445C10D1Ev,_ZThn2084_N8S7445C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S7445C10D0Ev,_ZTv0_n20_N8S7445C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2944_N8S7445C10D0Ev,_ZThn1936_N8S7445C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S7445C10D1Ev,_ZTv0_n20_N8S7445C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2944_N8S7445C10D1Ev,_ZThn1936_N8S7445C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7445C12D0Ev,_ZTv0_n16_N8S7445C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3376_N8S7445C12D0Ev,_ZThn2220_N8S7445C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7445C12D1Ev,_ZTv0_n16_N8S7445C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3376_N8S7445C12D1Ev,_ZThn2220_N8S7445C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S7445C12D0Ev,_ZTv0_n20_N8S7445C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3152_N8S7445C12D0Ev,_ZThn2072_N8S7445C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S7445C12D1Ev,_ZTv0_n20_N8S7445C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3152_N8S7445C12D1Ev,_ZThn2072_N8S7445C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7445C12 = {  "S7445C12", // class name
  bases_S7445C12, 12,
  &(vtc_S7445C12[0]), // expected_vtbl_contents
  &(vtt_S7445C12[0]), // expected_vtt_contents
  ABISELECT(3424,2244), // object size
  NSPAIRA(_ZTI8S7445C12),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7445C12),56, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7445C12),23, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names101,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7445C9  : virtual S7445C6 , virtual S7445C8 , virtual S7445C10 , virtual S7445C12 {
  ::S20291C14_nt s7445c9f0;
  int s7445c9f1;
  int s7445c9f2[8];
  __tsi64 s7445c9f3;
  virtual  ~S7445C9(); // _ZN7S7445C9D2Ev
  virtual void  v11(); // _ZN7S7445C93v11Ev
  S7445C9(); // tgen
};
//SIG(-1 S7445C9) C1{ VBC2{ VBC3{ v2 v3 FL} v4 v5 FC4{ VBC5{ m Fp Fs Fi FD[8] Fi} vd Fi Fp FL:62 Fc:4} Fp} VBC6{ VBC7{ VBC5 FC4[5]} BC4 BC3 BC5 vd} VBC8{ VBC3 VBC2 VBC7 VBC6 VBC4 vd FL FD FU9{ m FL Fp}[3] Fi Fp Fc Fi FL} VBC10{ BC4 BC5 BC8 vd v6 FC7 Fp FD FL[9] Fp[3] Fp Fi FU9} vd v1 FC11{} Fi Fi[8] FL}


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

static void Test_S7445C9()
{
  extern Class_Descriptor cd_S7445C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(224,593)];
    init_test(&cd_S7445C9, buf);
    S7445C9 *dp, &lv = *(dp=new (buf) S7445C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(3568,2368), "sizeof(S7445C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7445C9)");
    check_base_class_offset(lv, (S7445C7_nt*)(S7445C6*), ABISELECT(296,196), "S7445C9");
    /*is_ambiguous_... S7445C9::S7445C10 */ AMB_check_base_class_offset(lv, (S7445C7_nt*)(S7445C10*), ABISELECT(296,196), "S7445C9");
    /*is_ambiguous_... S7445C10::S7445C7_nt */ AMB_check_base_class_offset(lv, (S7445C7_nt*)(S7445C10*)(S7445C12*), ABISELECT(296,196), "S7445C9");
    check_base_class_offset(lv, (S7445C6*), ABISELECT(64,52), "S7445C9");
    /*is_ambiguous_... S7445C9::S7445C10 */ AMB_check_base_class_offset(lv, (S7445C6*)(S7445C10*), ABISELECT(64,52), "S7445C9");
    check_base_class_offset(lv, (S7445C6*)(S7445C10*)(S7445C12*), ABISELECT(64,52), "S7445C9");
    check_base_class_offset(lv, (S7445C3*)(S7445C5*), ABISELECT(1600,1040), "S7445C9");
    check_base_class_offset(lv, (S7445C3*)(S7445C2*)(S7445C8*), ABISELECT(1600,1040), "S7445C9");
    /*is_ambiguous_... S7445C9::S7445C2 */ AMB_check_base_class_offset(lv, (S7445C3*)(S7445C2*), ABISELECT(1600,1040), "S7445C9");
    /*is_ambiguous_... S7445C12::S7445C2 */ AMB_check_base_class_offset(lv, (S7445C3*)(S7445C2*)(S7445C12*), ABISELECT(1600,1040), "S7445C9");
    check_base_class_offset(lv, (S7445C5*)(S7445C8*), ABISELECT(544,356), "S7445C9");
    /*is_ambiguous_... S7445C9::S7445C10 */ AMB_check_base_class_offset(lv, (S7445C5*)(S7445C10*), ABISELECT(544,356), "S7445C9");
    check_base_class_offset(lv, (S7445C5*)(S7445C10*)(S7445C12*), ABISELECT(544,356), "S7445C9");
    check_base_class_offset(lv, (S7445C2*)(S7445C8*), ABISELECT(320,208), "S7445C9");
    check_base_class_offset(lv, (S7445C7_nt*)(S7445C8*), ABISELECT(360,232), "S7445C9");
    /*is_ambiguous_... S7445C8::S7445C3 */ AMB_check_base_class_offset(lv, (S7445C3*)(S7445C8*), ABISELECT(384,244), "S7445C9");
    check_base_class_offset(lv, (S7445C8*), ABISELECT(320,208), "S7445C9");
    /*is_ambiguous_... S7445C9::S7445C10 */ AMB_check_base_class_offset(lv, (S7445C8*)(S7445C10*), ABISELECT(320,208), "S7445C9");
    check_base_class_offset(lv, (S7445C8*)(S7445C10*)(S7445C12*), ABISELECT(320,208), "S7445C9");
    /*is_ambiguous_... S7445C9::S7445C10 */ AMB_check_base_class_offset(lv, (S7445C2*)(S7445C10*), ABISELECT(1848,1224), "S7445C9");
    /*is_ambiguous_... S7445C10::S7445C2 */ AMB_check_base_class_offset(lv, (S7445C2*)(S7445C10*)(S7445C12*), ABISELECT(1848,1224), "S7445C9");
    /*is_ambiguous_... S7445C9::S7445C10 */ AMB_check_base_class_offset(lv, (S7445C10*), ABISELECT(1760,1152), "S7445C9");
    /*is_ambiguous_... S7445C12::S7445C2 */ AMB_check_base_class_offset(lv, (S7445C2*)(S7445C12*), ABISELECT(1888,1248), "S7445C9");
    /*is_ambiguous_... S7445C12::S7445C3 */ AMB_check_base_class_offset(lv, (S7445C3*)(S7445C12*), ABISELECT(1936,1272), "S7445C9");
    check_base_class_offset(lv, (S7445C10*)(S7445C12*), ABISELECT(2096,1384), "S7445C9");
    check_base_class_offset(lv, (S7445C12*), ABISELECT(1888,1248), "S7445C9");
    check_field_offset(lv, s7445c9f0, ABISELECT(8,4), "S7445C9.s7445c9f0");
    check_field_offset(lv, s7445c9f1, ABISELECT(12,8), "S7445C9.s7445c9f1");
    check_field_offset(lv, s7445c9f2, ABISELECT(16,12), "S7445C9.s7445c9f2");
    check_field_offset(lv, s7445c9f3, ABISELECT(48,44), "S7445C9.s7445c9f3");
    test_class_info(&lv, &cd_S7445C9);
    dp->~S7445C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7445C9(Test_S7445C9, "S7445C9", ABISELECT(3568,2368));

#else // __cplusplus

extern void _ZN7S7445C9C1Ev();
extern void _ZN7S7445C9D2Ev();
Name_Map name_map_S7445C9[] = {
  NSPAIR(_ZN7S7445C9C1Ev),
  NSPAIR(_ZN7S7445C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7445C7_nt;
extern VTBL_ENTRY _ZTI10S7445C7_nt[];
extern  VTBL_ENTRY _ZTV10S7445C7_nt[];
extern Class_Descriptor cd_S7445C6;
extern VTBL_ENTRY _ZTI7S7445C6[];
extern  VTBL_ENTRY _ZTV7S7445C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C6[];
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
extern Class_Descriptor cd_S7445C5;
extern VTBL_ENTRY _ZTI7S7445C5[];
extern  VTBL_ENTRY _ZTV7S7445C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C5[];
extern Class_Descriptor cd_S7445C2;
extern VTBL_ENTRY _ZTI7S7445C2[];
extern  VTBL_ENTRY _ZTV7S7445C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C2[];
extern Class_Descriptor cd_S7445C7_nt;
extern VTBL_ENTRY _ZTI10S7445C7_nt[];
extern  VTBL_ENTRY _ZTV10S7445C7_nt[];
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
extern Class_Descriptor cd_S7445C8;
extern VTBL_ENTRY _ZTI7S7445C8[];
extern  VTBL_ENTRY _ZTV7S7445C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C8[];
extern Class_Descriptor cd_S7445C2;
extern VTBL_ENTRY _ZTI7S7445C2[];
extern  VTBL_ENTRY _ZTV7S7445C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C2[];
extern Class_Descriptor cd_S7445C10;
extern VTBL_ENTRY _ZTI8S7445C10[];
extern  VTBL_ENTRY _ZTV8S7445C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7445C10[];
extern Class_Descriptor cd_S7445C2;
extern VTBL_ENTRY _ZTI7S7445C2[];
extern  VTBL_ENTRY _ZTV7S7445C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C2[];
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
extern Class_Descriptor cd_S7445C10;
extern VTBL_ENTRY _ZTI8S7445C10[];
extern  VTBL_ENTRY _ZTV8S7445C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7445C10[];
extern Class_Descriptor cd_S7445C12;
extern VTBL_ENTRY _ZTI8S7445C12[];
extern  VTBL_ENTRY _ZTV8S7445C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7445C12[];
static Base_Class bases_S7445C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7445C7_nt,    ABISELECT(296,196), //bcp->offset
    20, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7445C6,    ABISELECT(64,52), //bcp->offset
    13, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7445C3,    ABISELECT(1600,1040), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7445C5,    ABISELECT(544,356), //bcp->offset
    39, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S7445C2,    ABISELECT(320,208), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7445C7_nt,    ABISELECT(360,232), //bcp->offset
    35, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7445C3,    ABISELECT(384,244), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7445C8,    ABISELECT(320,208), //bcp->offset
    26, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7445C2,    ABISELECT(1848,1224), //bcp->offset
    53, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7445C10,    ABISELECT(1760,1152), //bcp->offset
    42, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7445C2,    ABISELECT(1888,1248), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7445C3,    ABISELECT(1936,1272), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7445C10,    ABISELECT(2096,1384), //bcp->offset
    72, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7445C12,    ABISELECT(1888,1248), //bcp->offset
    59, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7445C9[];
extern void _ZN7S7445C9D1Ev();
extern void _ZN7S7445C9D0Ev();
extern void _ZN7S7445C93v11Ev();
extern void _ZN7S7445C62v7Ev();
extern void _ZN7S7445C62v8Ev();
extern void _ZN10S7445C7_nt2v5Ev();
extern void _ZN10S7445C7_nt2v6Ev();
extern void ABISELECT(_ZTv0_n40_N7S7445C9D1Ev,_ZTv0_n20_N7S7445C9D1Ev)();
extern void ABISELECT(_ZThn320_N7S7445C9D1Ev,_ZThn208_N7S7445C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7445C9D0Ev,_ZTv0_n20_N7S7445C9D0Ev)();
extern void ABISELECT(_ZThn320_N7S7445C9D0Ev,_ZThn208_N7S7445C9D0Ev)() __attribute__((weak));
extern void _ZN10S7445C7_nt2v5Ev();
extern void _ZN10S7445C7_nt2v6Ev();
extern void ABISELECT(_ZTv0_n72_N7S7445C9D1Ev,_ZTv0_n36_N7S7445C9D1Ev)();
extern void ABISELECT(_ZThn1760_N7S7445C9D1Ev,_ZThn1152_N7S7445C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7445C9D0Ev,_ZTv0_n36_N7S7445C9D0Ev)();
extern void ABISELECT(_ZThn1760_N7S7445C9D0Ev,_ZThn1152_N7S7445C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7445C9D1Ev,_ZTv0_n16_N7S7445C9D1Ev)();
extern void ABISELECT(_ZThn1848_N7S7445C9D1Ev,_ZThn1224_N7S7445C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7445C9D0Ev,_ZTv0_n16_N7S7445C9D0Ev)();
extern void ABISELECT(_ZThn1848_N7S7445C9D0Ev,_ZThn1224_N7S7445C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7445C9D1Ev,_ZTv0_n36_N7S7445C9D1Ev)();
extern void ABISELECT(_ZThn1888_N7S7445C9D1Ev,_ZThn1248_N7S7445C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7445C9D0Ev,_ZTv0_n36_N7S7445C9D0Ev)();
extern void ABISELECT(_ZThn1888_N7S7445C9D0Ev,_ZThn1248_N7S7445C9D0Ev)() __attribute__((weak));
extern void _ZN8S7445C123v10Ev();
extern void ABISELECT(_ZTvn208_n72_N7S7445C9D1Ev,_ZTvn136_n36_N7S7445C9D1Ev)();
extern void ABISELECT(_ZTvn208_n72_N7S7445C9D0Ev,_ZTvn136_n36_N7S7445C9D0Ev)();
static  VTBL_ENTRY vtc_S7445C9[] = {
  ABISELECT(1888,1248),
  ABISELECT(1848,1224),
  ABISELECT(1760,1152),
  ABISELECT(1600,1040),
  ABISELECT(544,356),
  ABISELECT(320,208),
  ABISELECT(296,196),
  ABISELECT(64,52),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C9[0]),
  (VTBL_ENTRY)&_ZN7S7445C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7445C9D0Ev,
  (VTBL_ENTRY)&_ZN7S7445C93v11Ev,
  0,
  0,
  ABISELECT(232,144),
  ABISELECT(-64,-52),
  (VTBL_ENTRY)&(_ZTI7S7445C9[0]),
  (VTBL_ENTRY)&_ZN7S7445C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7445C62v8Ev,
  0,
  0,
  ABISELECT(-296,-196),
  (VTBL_ENTRY)&(_ZTI7S7445C9[0]),
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v6Ev,
  ABISELECT(40,24),
  ABISELECT(40,24),
  ABISELECT(-320,-208),
  ABISELECT(224,148),
  ABISELECT(1280,832),
  ABISELECT(-320,-208),
  (VTBL_ENTRY)&(_ZTI7S7445C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7445C9D1Ev,_ZTv0_n20_N7S7445C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7445C9D0Ev,_ZTv0_n20_N7S7445C9D0Ev),
  ABISELECT(-360,-232),
  (VTBL_ENTRY)&(_ZTI7S7445C9[0]),
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v6Ev,
  ABISELECT(1056,684),
  ABISELECT(-544,-356),
  (VTBL_ENTRY)&(_ZTI7S7445C9[0]),
  ABISELECT(-1760,-1152),
  ABISELECT(88,72),
  ABISELECT(-1440,-944),
  ABISELECT(-160,-112),
  ABISELECT(-1216,-796),
  ABISELECT(-1696,-1100),
  ABISELECT(-1464,-956),
  ABISELECT(-1760,-1152),
  (VTBL_ENTRY)&(_ZTI7S7445C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7445C9D1Ev,_ZTv0_n36_N7S7445C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7445C9D0Ev,_ZTv0_n36_N7S7445C9D0Ev),
  ABISELECT(-1848,-1224),
  ABISELECT(-248,-184),
  ABISELECT(-1848,-1224),
  (VTBL_ENTRY)&(_ZTI7S7445C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7445C9D1Ev,_ZTv0_n16_N7S7445C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7445C9D0Ev,_ZTv0_n16_N7S7445C9D0Ev),
  0,
  ABISELECT(-1888,-1248),
  ABISELECT(-40,-24),
  ABISELECT(-1568,-1040),
  ABISELECT(-1344,-892),
  ABISELECT(-1824,-1196),
  ABISELECT(-1592,-1052),
  ABISELECT(-288,-208),
  ABISELECT(-1888,-1248),
  (VTBL_ENTRY)&(_ZTI7S7445C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7445C9D1Ev,_ZTv0_n36_N7S7445C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7445C9D0Ev,_ZTv0_n36_N7S7445C9D0Ev),
  (VTBL_ENTRY)&_ZN8S7445C123v10Ev,
  ABISELECT(-248,-160),
  ABISELECT(-1776,-1176),
  ABISELECT(-496,-344),
  ABISELECT(-1552,-1028),
  ABISELECT(-2032,-1332),
  ABISELECT(-1800,-1188),
  ABISELECT(-2096,-1384),
  (VTBL_ENTRY)&(_ZTI7S7445C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n72_N7S7445C9D1Ev,_ZTvn136_n36_N7S7445C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n72_N7S7445C9D0Ev,_ZTvn136_n36_N7S7445C9D0Ev),
};
extern VTBL_ENTRY _ZTV7S7445C9[];
extern void _ZN7S7445C62v7Ev();
extern void _ZN7S7445C62v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7445C6__7S7445C9[] = {
  ABISELECT(232,144),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C6[0]),
  (VTBL_ENTRY)&_ZN7S7445C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7445C62v8Ev,
};
extern void _ZN10S7445C7_nt2v5Ev();
extern void _ZN10S7445C7_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV10S7445C7_nt__7S7445C6__7S7445C9[] = {
  0,
  0,
  ABISELECT(-232,-144),
  (VTBL_ENTRY)&(_ZTI7S7445C6[0]),
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v6Ev,
};
extern void _ZN7S7445C8D1Ev();
extern void _ZN7S7445C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7445C8__7S7445C9[] = {
  ABISELECT(224,148),
  ABISELECT(1280,832),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C8[0]),
  (VTBL_ENTRY)&_ZN7S7445C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7445C8D0Ev,
};
extern void _ZN7S7445C2D1Ev();
extern void _ZN7S7445C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7445C27S7445C8__7S7445C9[] = {
  ABISELECT(1280,832),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C2[0]),
  (VTBL_ENTRY)&_ZN7S7445C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7445C2D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7445C5__7S7445C8__7S7445C9[] = {
  ABISELECT(1056,684),
  ABISELECT(-224,-148),
  (VTBL_ENTRY)&(_ZTI7S7445C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7445C5__7S7445C9[] = {
  ABISELECT(1056,684),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C5[0]),
};
extern void _ZN8S7445C10D1Ev();
extern void _ZN8S7445C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7445C10__7S7445C9[] = {
  ABISELECT(88,72),
  ABISELECT(-1440,-944),
  ABISELECT(-160,-112),
  ABISELECT(-1216,-796),
  ABISELECT(-1696,-1100),
  ABISELECT(-1464,-956),
  0,
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
  (VTBL_ENTRY)&_ZN8S7445C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7445C10D0Ev,
};
extern void _ZN10S7445C7_nt2v5Ev();
extern void _ZN10S7445C7_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV10S7445C7_nt__8S7445C10__7S7445C9[] = {
  0,
  0,
  ABISELECT(1464,956),
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v6Ev,
};
extern void _ZN7S7445C62v7Ev();
extern void _ZN7S7445C62v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7445C6__8S7445C10__7S7445C9[] = {
  0,
  0,
  ABISELECT(232,144),
  ABISELECT(1696,1100),
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
  (VTBL_ENTRY)&_ZN7S7445C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7445C62v8Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7445C5__8S7445C10__7S7445C9[] = {
  ABISELECT(1056,684),
  ABISELECT(1216,796),
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
};
extern void ABISELECT(_ZTv0_n40_N8S7445C10D1Ev,_ZTv0_n20_N8S7445C10D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S7445C10D0Ev,_ZTv0_n20_N8S7445C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7445C8__8S7445C10__7S7445C9[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  ABISELECT(1440,944),
  ABISELECT(224,148),
  ABISELECT(1280,832),
  ABISELECT(1440,944),
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7445C10D1Ev,_ZTv0_n20_N8S7445C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7445C10D0Ev,_ZTv0_n20_N8S7445C10D0Ev),
};
extern void _ZN10S7445C7_nt2v5Ev();
extern void _ZN10S7445C7_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV10S7445C7_nt7S7445C8__A1__8S7445C10__7S7445C9[] = {
  ABISELECT(1400,920),
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v6Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S7445C10D1Ev,_ZTv0_n16_N8S7445C10D1Ev)();
extern void ABISELECT(_ZThn88_N8S7445C10D1Ev,_ZThn72_N8S7445C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7445C10D0Ev,_ZTv0_n16_N8S7445C10D0Ev)();
extern void ABISELECT(_ZThn88_N8S7445C10D0Ev,_ZThn72_N8S7445C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7445C2__A1__8S7445C10__7S7445C9[] = {
  ABISELECT(-88,-72),
  ABISELECT(-248,-184),
  ABISELECT(-88,-72),
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7445C10D1Ev,_ZTv0_n16_N8S7445C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7445C10D0Ev,_ZTv0_n16_N8S7445C10D0Ev),
};
extern void _ZN7S7445C2D1Ev();
extern void _ZN7S7445C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7445C2__A1__7S7445C9[] = {
  ABISELECT(-248,-184),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C2[0]),
  (VTBL_ENTRY)&_ZN7S7445C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7445C2D0Ev,
};
extern void _ZN8S7445C12D1Ev();
extern void _ZN8S7445C12D0Ev();
extern void _ZN8S7445C123v10Ev();
static  VTBL_ENTRY _tg__ZTV8S7445C12__7S7445C9[] = {
  ABISELECT(-40,-24),
  ABISELECT(-1568,-1040),
  ABISELECT(-1344,-892),
  ABISELECT(-1824,-1196),
  ABISELECT(-1592,-1052),
  ABISELECT(-288,-208),
  0,
  (VTBL_ENTRY)&(_ZTI8S7445C12[0]),
  (VTBL_ENTRY)&_ZN8S7445C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7445C12D0Ev,
  (VTBL_ENTRY)&_ZN8S7445C123v10Ev,
};
extern void _ZN7S7445C2D1Ev();
extern void _ZN7S7445C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7445C28S7445C12__A2__7S7445C9[] = {
  ABISELECT(-288,-208),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C2[0]),
  (VTBL_ENTRY)&_ZN7S7445C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7445C2D0Ev,
};
extern void _ZN8S7445C10D1Ev();
extern void _ZN8S7445C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7445C108S7445C12__A1__7S7445C9[] = {
  ABISELECT(-248,-160),
  ABISELECT(-1776,-1176),
  ABISELECT(-496,-344),
  ABISELECT(-1552,-1028),
  ABISELECT(-2032,-1332),
  ABISELECT(-1800,-1188),
  0,
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
  (VTBL_ENTRY)&_ZN8S7445C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7445C10D0Ev,
};
extern void _ZN10S7445C7_nt2v5Ev();
extern void _ZN10S7445C7_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV10S7445C7_nt__8S7445C108S7445C12__A1__7S7445C9[] = {
  0,
  0,
  ABISELECT(1800,1188),
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v6Ev,
};
extern void _ZN7S7445C62v7Ev();
extern void _ZN7S7445C62v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7445C6__8S7445C108S7445C12__A1__7S7445C9[] = {
  0,
  0,
  ABISELECT(232,144),
  ABISELECT(2032,1332),
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
  (VTBL_ENTRY)&_ZN7S7445C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7445C62v8Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7445C5__8S7445C108S7445C12__A1__7S7445C9[] = {
  ABISELECT(1056,684),
  ABISELECT(1552,1028),
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
};
extern void ABISELECT(_ZTv0_n40_N8S7445C10D1Ev,_ZTv0_n20_N8S7445C10D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S7445C10D0Ev,_ZTv0_n20_N8S7445C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7445C8__8S7445C108S7445C12__A1__7S7445C9[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  ABISELECT(1776,1176),
  ABISELECT(224,148),
  ABISELECT(1280,832),
  ABISELECT(1776,1176),
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7445C10D1Ev,_ZTv0_n20_N8S7445C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7445C10D0Ev,_ZTv0_n20_N8S7445C10D0Ev),
};
extern void _ZN10S7445C7_nt2v5Ev();
extern void _ZN10S7445C7_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV10S7445C7_nt7S7445C8__A1__8S7445C108S7445C12__A1__7S7445C9[] = {
  ABISELECT(1736,1152),
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v6Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S7445C10D1Ev,_ZTv0_n16_N8S7445C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7445C10D0Ev,_ZTv0_n16_N8S7445C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7445C2__A1__8S7445C108S7445C12__A1__7S7445C9[] = {
  ABISELECT(248,160),
  ABISELECT(-248,-184),
  ABISELECT(248,160),
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7445C10D1Ev,_ZTv0_n16_N8S7445C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7445C10D0Ev,_ZTv0_n16_N8S7445C10D0Ev),
};
extern void ABISELECT(_ZThn208_N8S7445C12D1Ev,_ZThn136_N8S7445C12D1Ev)();
extern void ABISELECT(_ZThn208_N8S7445C12D0Ev,_ZThn136_N8S7445C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7445C10__8S7445C12__7S7445C9[] = {
  ABISELECT(-248,-160),
  ABISELECT(-1776,-1176),
  ABISELECT(-496,-344),
  ABISELECT(-1552,-1028),
  ABISELECT(-2032,-1332),
  ABISELECT(-1800,-1188),
  ABISELECT(-208,-136),
  (VTBL_ENTRY)&(_ZTI8S7445C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N8S7445C12D1Ev,_ZThn136_N8S7445C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N8S7445C12D0Ev,_ZThn136_N8S7445C12D0Ev),
};
extern void _ZN10S7445C7_nt2v5Ev();
extern void _ZN10S7445C7_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV10S7445C7_nt__8S7445C12__7S7445C9[] = {
  0,
  0,
  ABISELECT(1592,1052),
  (VTBL_ENTRY)&(_ZTI8S7445C12[0]),
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v6Ev,
};
extern void _ZN7S7445C62v7Ev();
extern void _ZN7S7445C62v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7445C6__8S7445C12__7S7445C9[] = {
  0,
  0,
  ABISELECT(232,144),
  ABISELECT(1824,1196),
  (VTBL_ENTRY)&(_ZTI8S7445C12[0]),
  (VTBL_ENTRY)&_ZN7S7445C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7445C62v8Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7445C5__8S7445C12__7S7445C9[] = {
  ABISELECT(1056,684),
  ABISELECT(1344,892),
  (VTBL_ENTRY)&(_ZTI8S7445C12[0]),
};
extern void ABISELECT(_ZTv0_n40_N8S7445C12D1Ev,_ZTv0_n20_N8S7445C12D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S7445C12D0Ev,_ZTv0_n20_N8S7445C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7445C8__8S7445C12__7S7445C9[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  ABISELECT(1568,1040),
  ABISELECT(224,148),
  ABISELECT(1280,832),
  ABISELECT(1568,1040),
  (VTBL_ENTRY)&(_ZTI8S7445C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7445C12D1Ev,_ZTv0_n20_N8S7445C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7445C12D0Ev,_ZTv0_n20_N8S7445C12D0Ev),
};
extern void _ZN10S7445C7_nt2v5Ev();
extern void _ZN10S7445C7_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV10S7445C7_nt7S7445C8__A1__8S7445C12__7S7445C9[] = {
  ABISELECT(1528,1016),
  (VTBL_ENTRY)&(_ZTI8S7445C12[0]),
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v6Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S7445C12D1Ev,_ZTv0_n16_N8S7445C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7445C12D0Ev,_ZTv0_n16_N8S7445C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7445C2__A2__8S7445C12__7S7445C9[] = {
  ABISELECT(40,24),
  ABISELECT(-248,-184),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S7445C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7445C12D1Ev,_ZTv0_n16_N8S7445C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7445C12D0Ev,_ZTv0_n16_N8S7445C12D0Ev),
};
static  VTT_ENTRY vtt_S7445C9[] = {
  {&(_ZTV7S7445C9[10]),  10,82},
  {&(_ZTV7S7445C9[18]),  18,82},
  {&(_ZTV7S7445C9[24]),  24,82},
  {&(_ZTV7S7445C9[33]),  33,82},
  {&(_ZTV7S7445C9[42]),  42,82},
  {&(_ZTV7S7445C9[37]),  37,82},
  {&(_ZTV7S7445C9[51]),  51,82},
  {&(_ZTV7S7445C9[57]),  57,82},
  {&(_ZTV7S7445C9[69]),  69,82},
  {&(_ZTV7S7445C9[80]),  80,82},
  {&(_tg__ZTV7S7445C6__7S7445C9[3]),  3,5},
  {&(_tg__ZTV10S7445C7_nt__7S7445C6__7S7445C9[4]),  4,6},
  {&(_tg__ZTV7S7445C8__7S7445C9[4]),  4,6},
  {&(_tg__ZTV7S7445C27S7445C8__7S7445C9[3]),  3,5},
  {&(_tg__ZTV7S7445C5__7S7445C8__7S7445C9[3]),  3,3},
  {&(_tg__ZTV7S7445C5__7S7445C9[3]),  3,3},
  {&(_tg__ZTV8S7445C10__7S7445C9[8]),  8,10},
  {&(_tg__ZTV10S7445C7_nt__8S7445C10__7S7445C9[4]),  4,6},
  {&(_tg__ZTV7S7445C6__8S7445C10__7S7445C9[5]),  5,7},
  {&(_tg__ZTV7S7445C5__8S7445C10__7S7445C9[3]),  3,3},
  {&(_tg__ZTV7S7445C8__8S7445C10__7S7445C9[7]),  7,9},
  {&(_tg__ZTV10S7445C7_nt7S7445C8__A1__8S7445C10__7S7445C9[2]),  2,4},
  {&(_tg__ZTV7S7445C2__A1__8S7445C10__7S7445C9[4]),  4,6},
  {&(_tg__ZTV7S7445C2__A1__7S7445C9[3]),  3,5},
  {&(_tg__ZTV8S7445C12__7S7445C9[8]),  8,11},
  {&(_tg__ZTV7S7445C28S7445C12__A2__7S7445C9[3]),  3,5},
  {&(_tg__ZTV8S7445C108S7445C12__A1__7S7445C9[8]),  8,10},
  {&(_tg__ZTV10S7445C7_nt__8S7445C108S7445C12__A1__7S7445C9[4]),  4,6},
  {&(_tg__ZTV7S7445C6__8S7445C108S7445C12__A1__7S7445C9[5]),  5,7},
  {&(_tg__ZTV7S7445C5__8S7445C108S7445C12__A1__7S7445C9[3]),  3,3},
  {&(_tg__ZTV7S7445C8__8S7445C108S7445C12__A1__7S7445C9[7]),  7,9},
  {&(_tg__ZTV10S7445C7_nt7S7445C8__A1__8S7445C108S7445C12__A1__7S7445C9[2]),  2,4},
  {&(_tg__ZTV7S7445C2__A1__8S7445C108S7445C12__A1__7S7445C9[4]),  4,6},
  {&(_tg__ZTV8S7445C10__8S7445C12__7S7445C9[8]),  8,10},
  {&(_tg__ZTV10S7445C7_nt__8S7445C12__7S7445C9[4]),  4,6},
  {&(_tg__ZTV7S7445C6__8S7445C12__7S7445C9[5]),  5,7},
  {&(_tg__ZTV7S7445C5__8S7445C12__7S7445C9[3]),  3,3},
  {&(_tg__ZTV7S7445C8__8S7445C12__7S7445C9[7]),  7,9},
  {&(_tg__ZTV10S7445C7_nt7S7445C8__A1__8S7445C12__7S7445C9[2]),  2,4},
  {&(_tg__ZTV7S7445C2__A2__8S7445C12__7S7445C9[4]),  4,6},
};
extern VTBL_ENTRY _ZTI7S7445C9[];
extern  VTBL_ENTRY _ZTV7S7445C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C9[];
static VTBL_ENTRY alt_thunk_names102[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7445C10D0Ev,_ZTv0_n16_N8S7445C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7445C10D0Ev,_ZThn72_N8S7445C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7445C10D1Ev,_ZTv0_n16_N8S7445C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7445C10D1Ev,_ZThn72_N8S7445C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7445C9D0Ev,_ZTv0_n16_N7S7445C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1848_N7S7445C9D0Ev,_ZThn1224_N7S7445C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7445C9D1Ev,_ZTv0_n16_N7S7445C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1848_N7S7445C9D1Ev,_ZThn1224_N7S7445C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7445C9D0Ev,_ZTv0_n36_N7S7445C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1888_N7S7445C9D0Ev,_ZThn1248_N7S7445C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1760_N7S7445C9D0Ev,_ZThn1152_N7S7445C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7445C9D1Ev,_ZTv0_n36_N7S7445C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1888_N7S7445C9D1Ev,_ZThn1248_N7S7445C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1760_N7S7445C9D1Ev,_ZThn1152_N7S7445C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7445C9D0Ev,_ZTv0_n20_N7S7445C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N7S7445C9D0Ev,_ZThn208_N7S7445C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7445C9D1Ev,_ZTv0_n20_N7S7445C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N7S7445C9D1Ev,_ZThn208_N7S7445C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7445C9 = {  "S7445C9", // class name
  bases_S7445C9, 14,
  &(vtc_S7445C9[0]), // expected_vtbl_contents
  &(vtt_S7445C9[0]), // expected_vtt_contents
  ABISELECT(3568,2368), // object size
  NSPAIRA(_ZTI7S7445C9),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7445C9),82, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7445C9),40, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names102,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7445C1  : S7445C2 , virtual S7445C4 , virtual S7445C8 , S7445C9 {
  long s7445c1f0;
  long s7445c1f1;
  void *s7445c1f2;
  virtual void  v1(); // _ZN7S7445C12v1Ev
  virtual void  v2(); // _ZN7S7445C12v2Ev
  virtual void  v3(); // _ZN7S7445C12v3Ev
  virtual void  v4(); // _ZN7S7445C12v4Ev
  ~S7445C1(); // tgen
  S7445C1(); // tgen
};
//SIG(1 S7445C1) C1{ BC2{ VBC3{ m Fp Fs Fi FD[8] Fi} vd Fi Fp FL:62 Fc:4} VBC4{ BC3 VBC5{ VBC3 FC2[5]} VBC6{ VBC7{ v5 v6 FL} v7 v8 FC2 Fp} BC8{ VBC5 BC2 BC7 BC3 vd} vd v9 Fi Fl} VBC8 BC9{ VBC6 VBC8 VBC10{ VBC7 VBC6 VBC5 VBC8 VBC2 vd FL FD FU11{ m FL Fp}[3] Fi Fp Fc Fi FL} VBC12{ BC2 BC3 BC10 vd v10 FC5 Fp FD FL[9] Fp[3] Fp Fi FU11} vd v11 FC13{} Fi Fi[8] FL} v1 v2 v3 v4 Fl Fl Fp}


void  S7445C1 ::v1(){vfunc_called(this, "_ZN7S7445C12v1Ev");}
void  S7445C1 ::v2(){vfunc_called(this, "_ZN7S7445C12v2Ev");}
void  S7445C1 ::v3(){vfunc_called(this, "_ZN7S7445C12v3Ev");}
void  S7445C1 ::v4(){vfunc_called(this, "_ZN7S7445C12v4Ev");}
S7445C1 ::~S7445C1(){ note_dtor("S7445C1", this);} // tgen
S7445C1 ::S7445C1(){ note_ctor("S7445C1", this);} // tgen

static void Test_S7445C1()
{
  extern Class_Descriptor cd_S7445C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(253,669)];
    init_test(&cd_S7445C1, buf);
    S7445C1 *dp, &lv = *(dp=new (buf) S7445C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(4032,2672), "sizeof(S7445C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7445C1)");
    /*is_ambiguous_... S7445C1::S7445C2 */ AMB_check_base_class_offset(lv, (S7445C3*)(S7445C2*), ABISELECT(128,88), "S7445C1");
    check_base_class_offset(lv, (S7445C3*)(S7445C5*), ABISELECT(128,88), "S7445C1");
    check_base_class_offset(lv, (S7445C3*)(S7445C2*)(S7445C8*)(S7445C4*), ABISELECT(128,88), "S7445C1");
    /*is_ambiguous_... S7445C1::S7445C8 */ AMB_check_base_class_offset(lv, (S7445C3*)(S7445C2*)(S7445C8*), ABISELECT(128,88), "S7445C1");
    /*is_ambiguous_... S7445C1::S7445C2 */ AMB_check_base_class_offset(lv, (S7445C3*)(S7445C2*), ABISELECT(128,88), "S7445C1");
    /*is_ambiguous_... S7445C12::S7445C2 */ AMB_check_base_class_offset(lv, (S7445C3*)(S7445C2*)(S7445C12*), ABISELECT(128,88), "S7445C1");
    /*is_ambiguous_... S7445C1::S7445C2 */ AMB_check_base_class_offset(lv, (S7445C2*), 0, "S7445C1");
    /*is_ambiguous_... S7445C4::S7445C3 */ AMB_check_base_class_offset(lv, (S7445C3*)(S7445C4*), ABISELECT(512,348), "S7445C1");
    check_base_class_offset(lv, (S7445C5*)(S7445C4*), ABISELECT(688,468), "S7445C1");
    check_base_class_offset(lv, (S7445C5*)(S7445C8*)(S7445C4*), ABISELECT(688,468), "S7445C1");
    /*is_ambiguous_... S7445C1::S7445C8 */ AMB_check_base_class_offset(lv, (S7445C5*)(S7445C8*), ABISELECT(688,468), "S7445C1");
    /*is_ambiguous_... S7445C1::S7445C10 */ AMB_check_base_class_offset(lv, (S7445C5*)(S7445C10*), ABISELECT(688,468), "S7445C1");
    check_base_class_offset(lv, (S7445C5*)(S7445C10*)(S7445C12*), ABISELECT(688,468), "S7445C1");
    check_base_class_offset(lv, (S7445C7_nt*)(S7445C6*), ABISELECT(1976,1296), "S7445C1");
    /*is_ambiguous_... S7445C1::S7445C10 */ AMB_check_base_class_offset(lv, (S7445C7_nt*)(S7445C10*), ABISELECT(1976,1296), "S7445C1");
    /*is_ambiguous_... S7445C10::S7445C7_nt */ AMB_check_base_class_offset(lv, (S7445C7_nt*)(S7445C10*)(S7445C12*), ABISELECT(1976,1296), "S7445C1");
    check_base_class_offset(lv, (S7445C6*)(S7445C4*), ABISELECT(1744,1152), "S7445C1");
    check_base_class_offset(lv, (S7445C6*)(S7445C9*), ABISELECT(1744,1152), "S7445C1");
    /*is_ambiguous_... S7445C1::S7445C10 */ AMB_check_base_class_offset(lv, (S7445C6*)(S7445C10*), ABISELECT(1744,1152), "S7445C1");
    check_base_class_offset(lv, (S7445C6*)(S7445C10*)(S7445C12*), ABISELECT(1744,1152), "S7445C1");
    check_base_class_offset(lv, (S7445C2*)(S7445C8*)(S7445C4*), ABISELECT(288,200), "S7445C1");
    check_base_class_offset(lv, (S7445C7_nt*)(S7445C8*)(S7445C4*), ABISELECT(328,224), "S7445C1");
    /*is_ambiguous_... S7445C8::S7445C3 */ AMB_check_base_class_offset(lv, (S7445C3*)(S7445C8*)(S7445C4*), ABISELECT(352,236), "S7445C1");
    check_base_class_offset(lv, (S7445C8*)(S7445C4*), ABISELECT(288,200), "S7445C1");
    check_base_class_offset(lv, (S7445C4*), ABISELECT(288,200), "S7445C1");
    /*is_ambiguous_... S7445C1::S7445C8 */ AMB_check_base_class_offset(lv, (S7445C2*)(S7445C8*), ABISELECT(2000,1308), "S7445C1");
    /*is_ambiguous_... S7445C1::S7445C8 */ AMB_check_base_class_offset(lv, (S7445C7_nt*)(S7445C8*), ABISELECT(2040,1332), "S7445C1");
    /*is_ambiguous_... S7445C1::S7445C8 */ AMB_check_base_class_offset(lv, (S7445C3*)(S7445C8*), ABISELECT(2064,1344), "S7445C1");
    /*is_ambiguous_... S7445C1::S7445C8 */ AMB_check_base_class_offset(lv, (S7445C8*), ABISELECT(2000,1308), "S7445C1");
    check_base_class_offset(lv, (S7445C8*)(S7445C9*), ABISELECT(2000,1308), "S7445C1");
    /*is_ambiguous_... S7445C1::S7445C10 */ AMB_check_base_class_offset(lv, (S7445C8*)(S7445C10*), ABISELECT(2000,1308), "S7445C1");
    check_base_class_offset(lv, (S7445C8*)(S7445C10*)(S7445C12*), ABISELECT(2000,1308), "S7445C1");
    /*is_ambiguous_... S7445C1::S7445C10 */ AMB_check_base_class_offset(lv, (S7445C2*)(S7445C10*), ABISELECT(2312,1528), "S7445C1");
    /*is_ambiguous_... S7445C10::S7445C2 */ AMB_check_base_class_offset(lv, (S7445C2*)(S7445C10*)(S7445C12*), ABISELECT(2312,1528), "S7445C1");
    /*is_ambiguous_... S7445C9::S7445C10 */ AMB_check_base_class_offset(lv, (S7445C10*)(S7445C9*), ABISELECT(2224,1456), "S7445C1");
    /*is_ambiguous_... S7445C12::S7445C2 */ AMB_check_base_class_offset(lv, (S7445C2*)(S7445C12*), ABISELECT(2352,1552), "S7445C1");
    /*is_ambiguous_... S7445C12::S7445C3 */ AMB_check_base_class_offset(lv, (S7445C3*)(S7445C12*), ABISELECT(2400,1576), "S7445C1");
    check_base_class_offset(lv, (S7445C10*)(S7445C12*), ABISELECT(2560,1688), "S7445C1");
    check_base_class_offset(lv, (S7445C12*)(S7445C9*), ABISELECT(2352,1552), "S7445C1");
    check_base_class_offset(lv, (S7445C9*), ABISELECT(40,24), "S7445C1");
    check_field_offset(lv, s7445c1f0, ABISELECT(96,76), "S7445C1.s7445c1f0");
    check_field_offset(lv, s7445c1f1, ABISELECT(104,80), "S7445C1.s7445c1f1");
    check_field_offset(lv, s7445c1f2, ABISELECT(112,84), "S7445C1.s7445c1f2");
    test_class_info(&lv, &cd_S7445C1);
    dp->~S7445C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7445C1(Test_S7445C1, "S7445C1", ABISELECT(4032,2672));

#else // __cplusplus

extern void _ZN7S7445C1C1Ev();
extern void _ZN7S7445C1D1Ev();
Name_Map name_map_S7445C1[] = {
  NSPAIR(_ZN7S7445C1C1Ev),
  NSPAIR(_ZN7S7445C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
extern Class_Descriptor cd_S7445C2;
extern VTBL_ENTRY _ZTI7S7445C2[];
extern  VTBL_ENTRY _ZTV7S7445C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C2[];
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
extern Class_Descriptor cd_S7445C5;
extern VTBL_ENTRY _ZTI7S7445C5[];
extern  VTBL_ENTRY _ZTV7S7445C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C5[];
extern Class_Descriptor cd_S7445C7_nt;
extern VTBL_ENTRY _ZTI10S7445C7_nt[];
extern  VTBL_ENTRY _ZTV10S7445C7_nt[];
extern Class_Descriptor cd_S7445C6;
extern VTBL_ENTRY _ZTI7S7445C6[];
extern  VTBL_ENTRY _ZTV7S7445C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C6[];
extern Class_Descriptor cd_S7445C2;
extern VTBL_ENTRY _ZTI7S7445C2[];
extern  VTBL_ENTRY _ZTV7S7445C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C2[];
extern Class_Descriptor cd_S7445C7_nt;
extern VTBL_ENTRY _ZTI10S7445C7_nt[];
extern  VTBL_ENTRY _ZTV10S7445C7_nt[];
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
extern Class_Descriptor cd_S7445C8;
extern VTBL_ENTRY _ZTI7S7445C8[];
extern  VTBL_ENTRY _ZTV7S7445C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C8[];
extern Class_Descriptor cd_S7445C4;
extern VTBL_ENTRY _ZTI7S7445C4[];
extern  VTBL_ENTRY _ZTV7S7445C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C4[];
extern Class_Descriptor cd_S7445C2;
extern VTBL_ENTRY _ZTI7S7445C2[];
extern  VTBL_ENTRY _ZTV7S7445C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C2[];
extern Class_Descriptor cd_S7445C7_nt;
extern VTBL_ENTRY _ZTI10S7445C7_nt[];
extern  VTBL_ENTRY _ZTV10S7445C7_nt[];
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
extern Class_Descriptor cd_S7445C8;
extern VTBL_ENTRY _ZTI7S7445C8[];
extern  VTBL_ENTRY _ZTV7S7445C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C8[];
extern Class_Descriptor cd_S7445C2;
extern VTBL_ENTRY _ZTI7S7445C2[];
extern  VTBL_ENTRY _ZTV7S7445C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C2[];
extern Class_Descriptor cd_S7445C10;
extern VTBL_ENTRY _ZTI8S7445C10[];
extern  VTBL_ENTRY _ZTV8S7445C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7445C10[];
extern Class_Descriptor cd_S7445C2;
extern VTBL_ENTRY _ZTI7S7445C2[];
extern  VTBL_ENTRY _ZTV7S7445C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C2[];
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
extern Class_Descriptor cd_S7445C10;
extern VTBL_ENTRY _ZTI8S7445C10[];
extern  VTBL_ENTRY _ZTV8S7445C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7445C10[];
extern Class_Descriptor cd_S7445C12;
extern VTBL_ENTRY _ZTI8S7445C12[];
extern  VTBL_ENTRY _ZTV8S7445C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7445C12[];
extern Class_Descriptor cd_S7445C9;
extern VTBL_ENTRY _ZTI7S7445C9[];
extern  VTBL_ENTRY _ZTV7S7445C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C9[];
static Base_Class bases_S7445C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7445C3,    ABISELECT(128,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7445C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7445C3,    ABISELECT(512,348), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7445C5,    ABISELECT(688,468), //bcp->offset
    47, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7445C7_nt,    ABISELECT(1976,1296), //bcp->offset
    57, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7445C6,    ABISELECT(1744,1152), //bcp->offset
    50, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S7445C2,    ABISELECT(288,200), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7445C7_nt,    ABISELECT(328,224), //bcp->offset
    43, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7445C3,    ABISELECT(352,236), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7445C8,    ABISELECT(288,200), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7445C4,    ABISELECT(288,200), //bcp->offset
    30, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7445C2,    ABISELECT(2000,1308), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7445C7_nt,    ABISELECT(2040,1332), //bcp->offset
    72, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7445C3,    ABISELECT(2064,1344), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7445C8,    ABISELECT(2000,1308), //bcp->offset
    63, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7445C2,    ABISELECT(2312,1528), //bcp->offset
    87, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S7445C10,    ABISELECT(2224,1456), //bcp->offset
    76, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S7445C2,    ABISELECT(2352,1552), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7445C3,    ABISELECT(2400,1576), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7445C10,    ABISELECT(2560,1688), //bcp->offset
    106, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7445C12,    ABISELECT(2352,1552), //bcp->offset
    93, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S7445C9,    ABISELECT(40,24), //bcp->offset
    17, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7445C1[];
extern void _ZN7S7445C1D1Ev();
extern void _ZN7S7445C1D0Ev();
extern void _ZN7S7445C12v1Ev();
extern void _ZN7S7445C12v2Ev();
extern void _ZN7S7445C12v3Ev();
extern void _ZN7S7445C12v4Ev();
extern void ABISELECT(_ZThn40_N7S7445C1D1Ev,_ZThn24_N7S7445C1D1Ev)();
extern void ABISELECT(_ZThn40_N7S7445C1D0Ev,_ZThn24_N7S7445C1D0Ev)();
extern void _ZN7S7445C93v11Ev();
extern void ABISELECT(_ZTv0_n56_N7S7445C1D1Ev,_ZTv0_n28_N7S7445C1D1Ev)();
extern void ABISELECT(_ZThn288_N7S7445C1D1Ev,_ZThn200_N7S7445C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7445C1D0Ev,_ZTv0_n28_N7S7445C1D0Ev)();
extern void ABISELECT(_ZThn288_N7S7445C1D0Ev,_ZThn200_N7S7445C1D0Ev)() __attribute__((weak));
extern void _ZN7S7445C42v9Ev();
extern void _ZN10S7445C7_nt2v5Ev();
extern void _ZN10S7445C7_nt2v6Ev();
extern void _ZN7S7445C62v7Ev();
extern void _ZN7S7445C62v8Ev();
extern void _ZN10S7445C7_nt2v5Ev();
extern void _ZN10S7445C7_nt2v6Ev();
extern void ABISELECT(_ZTv0_n40_N7S7445C1D1Ev,_ZTv0_n20_N7S7445C1D1Ev)();
extern void ABISELECT(_ZThn2000_N7S7445C1D1Ev,_ZThn1308_N7S7445C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7445C1D0Ev,_ZTv0_n20_N7S7445C1D0Ev)();
extern void ABISELECT(_ZThn2000_N7S7445C1D0Ev,_ZThn1308_N7S7445C1D0Ev)() __attribute__((weak));
extern void _ZN10S7445C7_nt2v5Ev();
extern void _ZN10S7445C7_nt2v6Ev();
extern void ABISELECT(_ZTv0_n72_N7S7445C1D1Ev,_ZTv0_n36_N7S7445C1D1Ev)();
extern void ABISELECT(_ZThn2224_N7S7445C1D1Ev,_ZThn1456_N7S7445C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7445C1D0Ev,_ZTv0_n36_N7S7445C1D0Ev)();
extern void ABISELECT(_ZThn2224_N7S7445C1D0Ev,_ZThn1456_N7S7445C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7445C1D1Ev,_ZTv0_n16_N7S7445C1D1Ev)();
extern void ABISELECT(_ZThn2312_N7S7445C1D1Ev,_ZThn1528_N7S7445C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7445C1D0Ev,_ZTv0_n16_N7S7445C1D0Ev)();
extern void ABISELECT(_ZThn2312_N7S7445C1D0Ev,_ZThn1528_N7S7445C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7445C1D1Ev,_ZTv0_n36_N7S7445C1D1Ev)();
extern void ABISELECT(_ZThn2352_N7S7445C1D1Ev,_ZThn1552_N7S7445C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7445C1D0Ev,_ZTv0_n36_N7S7445C1D0Ev)();
extern void ABISELECT(_ZThn2352_N7S7445C1D0Ev,_ZThn1552_N7S7445C1D0Ev)() __attribute__((weak));
extern void _ZN8S7445C123v10Ev();
extern void ABISELECT(_ZTvn208_n72_N7S7445C1D1Ev,_ZTvn136_n36_N7S7445C1D1Ev)();
extern void ABISELECT(_ZTvn208_n72_N7S7445C1D0Ev,_ZTvn136_n36_N7S7445C1D0Ev)();
static  VTBL_ENTRY vtc_S7445C1[] = {
  ABISELECT(2352,1552),
  ABISELECT(2312,1528),
  ABISELECT(2224,1456),
  ABISELECT(2000,1308),
  ABISELECT(1976,1296),
  ABISELECT(1744,1152),
  ABISELECT(688,468),
  ABISELECT(288,200),
  ABISELECT(128,88),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C1[0]),
  (VTBL_ENTRY)&_ZN7S7445C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7445C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7445C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7445C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7445C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7445C12v4Ev,
  ABISELECT(2312,1528),
  ABISELECT(2272,1504),
  ABISELECT(2184,1432),
  ABISELECT(88,64),
  ABISELECT(648,444),
  ABISELECT(1960,1284),
  ABISELECT(1936,1272),
  ABISELECT(1704,1128),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7445C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S7445C1D1Ev,_ZThn24_N7S7445C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S7445C1D0Ev,_ZThn24_N7S7445C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7445C93v11Ev,
  0,
  ABISELECT(40,24),
  ABISELECT(40,24),
  ABISELECT(-288,-200),
  ABISELECT(1688,1096),
  ABISELECT(1456,952),
  ABISELECT(400,268),
  ABISELECT(-160,-112),
  ABISELECT(-288,-200),
  (VTBL_ENTRY)&(_ZTI7S7445C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7445C1D1Ev,_ZTv0_n28_N7S7445C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7445C1D0Ev,_ZTv0_n28_N7S7445C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7445C42v9Ev,
  ABISELECT(-328,-224),
  (VTBL_ENTRY)&(_ZTI7S7445C1[0]),
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v6Ev,
  ABISELECT(-560,-380),
  ABISELECT(-688,-468),
  (VTBL_ENTRY)&(_ZTI7S7445C1[0]),
  0,
  0,
  ABISELECT(232,144),
  ABISELECT(-1744,-1152),
  (VTBL_ENTRY)&(_ZTI7S7445C1[0]),
  (VTBL_ENTRY)&_ZN7S7445C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7445C62v8Ev,
  0,
  0,
  ABISELECT(-1976,-1296),
  (VTBL_ENTRY)&(_ZTI7S7445C1[0]),
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v6Ev,
  ABISELECT(40,24),
  ABISELECT(40,24),
  ABISELECT(-2000,-1308),
  ABISELECT(-1312,-840),
  ABISELECT(-1872,-1220),
  ABISELECT(-2000,-1308),
  (VTBL_ENTRY)&(_ZTI7S7445C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7445C1D1Ev,_ZTv0_n20_N7S7445C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7445C1D0Ev,_ZTv0_n20_N7S7445C1D0Ev),
  ABISELECT(-2040,-1332),
  (VTBL_ENTRY)&(_ZTI7S7445C1[0]),
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v6Ev,
  ABISELECT(-2224,-1456),
  ABISELECT(88,72),
  ABISELECT(-224,-148),
  ABISELECT(-2096,-1368),
  ABISELECT(-1536,-988),
  ABISELECT(-480,-304),
  ABISELECT(-248,-160),
  ABISELECT(-2224,-1456),
  (VTBL_ENTRY)&(_ZTI7S7445C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7445C1D1Ev,_ZTv0_n36_N7S7445C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7445C1D0Ev,_ZTv0_n36_N7S7445C1D0Ev),
  ABISELECT(-2312,-1528),
  ABISELECT(-2184,-1440),
  ABISELECT(-2312,-1528),
  (VTBL_ENTRY)&(_ZTI7S7445C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7445C1D1Ev,_ZTv0_n16_N7S7445C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7445C1D0Ev,_ZTv0_n16_N7S7445C1D0Ev),
  0,
  ABISELECT(-2352,-1552),
  ABISELECT(-40,-24),
  ABISELECT(-352,-244),
  ABISELECT(-1664,-1084),
  ABISELECT(-608,-400),
  ABISELECT(-376,-256),
  ABISELECT(-2224,-1464),
  ABISELECT(-2352,-1552),
  (VTBL_ENTRY)&(_ZTI7S7445C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7445C1D1Ev,_ZTv0_n36_N7S7445C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7445C1D0Ev,_ZTv0_n36_N7S7445C1D0Ev),
  (VTBL_ENTRY)&_ZN8S7445C123v10Ev,
  ABISELECT(-248,-160),
  ABISELECT(-560,-380),
  ABISELECT(-2432,-1600),
  ABISELECT(-1872,-1220),
  ABISELECT(-816,-536),
  ABISELECT(-584,-392),
  ABISELECT(-2560,-1688),
  (VTBL_ENTRY)&(_ZTI7S7445C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n72_N7S7445C1D1Ev,_ZTvn136_n36_N7S7445C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n72_N7S7445C1D0Ev,_ZTvn136_n36_N7S7445C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S7445C1[];
extern void _ZN7S7445C2D1Ev();
extern void _ZN7S7445C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7445C2__A__7S7445C1[] = {
  ABISELECT(128,88),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C2[0]),
  (VTBL_ENTRY)&_ZN7S7445C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7445C2D0Ev,
};
extern void _ZN7S7445C9D1Ev();
extern void _ZN7S7445C9D0Ev();
extern void _ZN7S7445C93v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7445C9__7S7445C1[] = {
  ABISELECT(2312,1528),
  ABISELECT(2272,1504),
  ABISELECT(2184,1432),
  ABISELECT(88,64),
  ABISELECT(648,444),
  ABISELECT(1960,1284),
  ABISELECT(1936,1272),
  ABISELECT(1704,1128),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C9[0]),
  (VTBL_ENTRY)&_ZN7S7445C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7445C9D0Ev,
  (VTBL_ENTRY)&_ZN7S7445C93v11Ev,
};
extern void _ZN7S7445C62v7Ev();
extern void _ZN7S7445C62v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7445C6__7S7445C9__7S7445C1[] = {
  0,
  0,
  ABISELECT(232,144),
  ABISELECT(-1704,-1128),
  (VTBL_ENTRY)&(_ZTI7S7445C9[0]),
  (VTBL_ENTRY)&_ZN7S7445C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7445C62v8Ev,
};
extern void _ZN10S7445C7_nt2v5Ev();
extern void _ZN10S7445C7_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV10S7445C7_nt__7S7445C9__7S7445C1[] = {
  0,
  0,
  ABISELECT(-1936,-1272),
  (VTBL_ENTRY)&(_ZTI7S7445C9[0]),
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v6Ev,
};
extern void ABISELECT(_ZTv0_n40_N7S7445C9D1Ev,_ZTv0_n20_N7S7445C9D1Ev)();
extern void ABISELECT(_ZThn1960_N7S7445C9D1Ev,_ZThn1284_N7S7445C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7445C9D0Ev,_ZTv0_n20_N7S7445C9D0Ev)();
extern void ABISELECT(_ZThn1960_N7S7445C9D0Ev,_ZThn1284_N7S7445C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7445C8__7S7445C9__7S7445C1[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  ABISELECT(-1960,-1284),
  ABISELECT(-1312,-840),
  ABISELECT(-1872,-1220),
  ABISELECT(-1960,-1284),
  (VTBL_ENTRY)&(_ZTI7S7445C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7445C9D1Ev,_ZTv0_n20_N7S7445C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7445C9D0Ev,_ZTv0_n20_N7S7445C9D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7445C5__7S7445C9__7S7445C1[] = {
  ABISELECT(-560,-380),
  ABISELECT(-648,-444),
  (VTBL_ENTRY)&(_ZTI7S7445C9[0]),
};
extern void _ZN10S7445C7_nt2v5Ev();
extern void _ZN10S7445C7_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV10S7445C7_nt7S7445C8__A1__7S7445C9__7S7445C1[] = {
  ABISELECT(-2000,-1308),
  (VTBL_ENTRY)&(_ZTI7S7445C9[0]),
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v6Ev,
};
extern void ABISELECT(_ZTv0_n72_N7S7445C9D1Ev,_ZTv0_n36_N7S7445C9D1Ev)();
extern void ABISELECT(_ZThn2184_N7S7445C9D1Ev,_ZThn1432_N7S7445C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7445C9D0Ev,_ZTv0_n36_N7S7445C9D0Ev)();
extern void ABISELECT(_ZThn2184_N7S7445C9D0Ev,_ZThn1432_N7S7445C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7445C10__7S7445C9__7S7445C1[] = {
  ABISELECT(-2184,-1432),
  ABISELECT(88,72),
  ABISELECT(-224,-148),
  ABISELECT(-2096,-1368),
  ABISELECT(-1536,-988),
  ABISELECT(-480,-304),
  ABISELECT(-248,-160),
  ABISELECT(-2184,-1432),
  (VTBL_ENTRY)&(_ZTI7S7445C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7445C9D1Ev,_ZTv0_n36_N7S7445C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7445C9D0Ev,_ZTv0_n36_N7S7445C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7445C9D1Ev,_ZTv0_n16_N7S7445C9D1Ev)();
extern void ABISELECT(_ZThn2272_N7S7445C9D1Ev,_ZThn1504_N7S7445C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7445C9D0Ev,_ZTv0_n16_N7S7445C9D0Ev)();
extern void ABISELECT(_ZThn2272_N7S7445C9D0Ev,_ZThn1504_N7S7445C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7445C2__A1__7S7445C9__7S7445C1[] = {
  ABISELECT(-2272,-1504),
  ABISELECT(-2184,-1440),
  ABISELECT(-2272,-1504),
  (VTBL_ENTRY)&(_ZTI7S7445C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7445C9D1Ev,_ZTv0_n16_N7S7445C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7445C9D0Ev,_ZTv0_n16_N7S7445C9D0Ev),
};
extern void ABISELECT(_ZTv0_n72_N7S7445C9D1Ev,_ZTv0_n36_N7S7445C9D1Ev)();
extern void ABISELECT(_ZThn2312_N7S7445C9D1Ev,_ZThn1528_N7S7445C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7445C9D0Ev,_ZTv0_n36_N7S7445C9D0Ev)();
extern void ABISELECT(_ZThn2312_N7S7445C9D0Ev,_ZThn1528_N7S7445C9D0Ev)() __attribute__((weak));
extern void _ZN8S7445C123v10Ev();
static  VTBL_ENTRY _tg__ZTV8S7445C12__7S7445C9__7S7445C1[] = {
  0,
  ABISELECT(-2312,-1528),
  ABISELECT(-40,-24),
  ABISELECT(-352,-244),
  ABISELECT(-1664,-1084),
  ABISELECT(-608,-400),
  ABISELECT(-376,-256),
  ABISELECT(-2224,-1464),
  ABISELECT(-2312,-1528),
  (VTBL_ENTRY)&(_ZTI7S7445C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7445C9D1Ev,_ZTv0_n36_N7S7445C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7445C9D0Ev,_ZTv0_n36_N7S7445C9D0Ev),
  (VTBL_ENTRY)&_ZN8S7445C123v10Ev,
};
extern void ABISELECT(_ZTvn208_n72_N7S7445C9D1Ev,_ZTvn136_n36_N7S7445C9D1Ev)();
extern void ABISELECT(_ZTvn208_n72_N7S7445C9D0Ev,_ZTvn136_n36_N7S7445C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7445C108S7445C12__A1__7S7445C9__7S7445C1[] = {
  ABISELECT(-248,-160),
  ABISELECT(-560,-380),
  ABISELECT(-2432,-1600),
  ABISELECT(-1872,-1220),
  ABISELECT(-816,-536),
  ABISELECT(-584,-392),
  ABISELECT(-2520,-1664),
  (VTBL_ENTRY)&(_ZTI7S7445C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n72_N7S7445C9D1Ev,_ZTvn136_n36_N7S7445C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n72_N7S7445C9D0Ev,_ZTvn136_n36_N7S7445C9D0Ev),
};
extern void _ZN7S7445C4D1Ev();
extern void _ZN7S7445C4D0Ev();
extern void _ZN7S7445C42v9Ev();
static  VTBL_ENTRY _tg__ZTV7S7445C4__7S7445C1[] = {
  ABISELECT(1688,1096),
  ABISELECT(1456,952),
  ABISELECT(400,268),
  ABISELECT(-160,-112),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C4[0]),
  (VTBL_ENTRY)&_ZN7S7445C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7445C4D0Ev,
  (VTBL_ENTRY)&_ZN7S7445C42v9Ev,
};
extern void _ZN7S7445C8D1Ev();
extern void _ZN7S7445C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7445C87S7445C4__7S7445C1[] = {
  ABISELECT(400,268),
  ABISELECT(-160,-112),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C8[0]),
  (VTBL_ENTRY)&_ZN7S7445C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7445C8D0Ev,
};
extern void _ZN7S7445C2D1Ev();
extern void _ZN7S7445C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7445C27S7445C87S7445C4__A1__7S7445C1[] = {
  ABISELECT(-160,-112),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C2[0]),
  (VTBL_ENTRY)&_ZN7S7445C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7445C2D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7445C5__7S7445C87S7445C4__7S7445C1[] = {
  ABISELECT(-560,-380),
  ABISELECT(-400,-268),
  (VTBL_ENTRY)&(_ZTI7S7445C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7445C5__7S7445C4__7S7445C1[] = {
  ABISELECT(-560,-380),
  ABISELECT(-400,-268),
  (VTBL_ENTRY)&(_ZTI7S7445C4[0]),
};
extern void _ZN7S7445C62v7Ev();
extern void _ZN7S7445C62v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7445C6__7S7445C4__7S7445C1[] = {
  0,
  0,
  ABISELECT(232,144),
  ABISELECT(-1456,-952),
  (VTBL_ENTRY)&(_ZTI7S7445C4[0]),
  (VTBL_ENTRY)&_ZN7S7445C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7445C62v8Ev,
};
extern void _ZN10S7445C7_nt2v5Ev();
extern void _ZN10S7445C7_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV10S7445C7_nt__7S7445C4__7S7445C1[] = {
  0,
  0,
  ABISELECT(-1688,-1096),
  (VTBL_ENTRY)&(_ZTI7S7445C4[0]),
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v6Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7445C5__7S7445C1[] = {
  ABISELECT(-560,-380),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C5[0]),
};
extern void _ZN7S7445C62v7Ev();
extern void _ZN7S7445C62v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7445C6__7S7445C1[] = {
  ABISELECT(232,144),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C6[0]),
  (VTBL_ENTRY)&_ZN7S7445C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7445C62v8Ev,
};
extern void _ZN10S7445C7_nt2v5Ev();
extern void _ZN10S7445C7_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV10S7445C7_nt__7S7445C6__7S7445C1[] = {
  0,
  0,
  ABISELECT(-232,-144),
  (VTBL_ENTRY)&(_ZTI7S7445C6[0]),
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v6Ev,
};
extern void _ZN7S7445C8D1Ev();
extern void _ZN7S7445C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7445C8__A1__7S7445C1[] = {
  ABISELECT(-1312,-840),
  ABISELECT(-1872,-1220),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C8[0]),
  (VTBL_ENTRY)&_ZN7S7445C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7445C8D0Ev,
};
extern void _ZN7S7445C2D1Ev();
extern void _ZN7S7445C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7445C27S7445C8__A2__7S7445C1[] = {
  ABISELECT(-1872,-1220),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C2[0]),
  (VTBL_ENTRY)&_ZN7S7445C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7445C2D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7445C5__7S7445C8__A1__7S7445C1[] = {
  ABISELECT(-560,-380),
  ABISELECT(1312,840),
  (VTBL_ENTRY)&(_ZTI7S7445C8[0]),
};
extern void _ZN8S7445C10D1Ev();
extern void _ZN8S7445C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7445C10__7S7445C1[] = {
  ABISELECT(88,72),
  ABISELECT(-224,-148),
  ABISELECT(-2096,-1368),
  ABISELECT(-1536,-988),
  ABISELECT(-480,-304),
  ABISELECT(-248,-160),
  0,
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
  (VTBL_ENTRY)&_ZN8S7445C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7445C10D0Ev,
};
extern void _ZN10S7445C7_nt2v5Ev();
extern void _ZN10S7445C7_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV10S7445C7_nt__8S7445C10__7S7445C1[] = {
  0,
  0,
  ABISELECT(248,160),
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v6Ev,
};
extern void _ZN7S7445C62v7Ev();
extern void _ZN7S7445C62v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7445C6__8S7445C10__7S7445C1[] = {
  0,
  0,
  ABISELECT(232,144),
  ABISELECT(480,304),
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
  (VTBL_ENTRY)&_ZN7S7445C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7445C62v8Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7445C5__8S7445C10__7S7445C1[] = {
  ABISELECT(-560,-380),
  ABISELECT(1536,988),
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
};
extern void ABISELECT(_ZTv0_n40_N8S7445C10D1Ev,_ZTv0_n20_N8S7445C10D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S7445C10D0Ev,_ZTv0_n20_N8S7445C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7445C8__8S7445C10__7S7445C1[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  ABISELECT(224,148),
  ABISELECT(-1312,-840),
  ABISELECT(-1872,-1220),
  ABISELECT(224,148),
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7445C10D1Ev,_ZTv0_n20_N8S7445C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7445C10D0Ev,_ZTv0_n20_N8S7445C10D0Ev),
};
extern void _ZN10S7445C7_nt2v5Ev();
extern void _ZN10S7445C7_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV10S7445C7_nt7S7445C8__A1__8S7445C10__7S7445C1[] = {
  ABISELECT(184,124),
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v6Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S7445C10D1Ev,_ZTv0_n16_N8S7445C10D1Ev)();
extern void ABISELECT(_ZThn88_N8S7445C10D1Ev,_ZThn72_N8S7445C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7445C10D0Ev,_ZTv0_n16_N8S7445C10D0Ev)();
extern void ABISELECT(_ZThn88_N8S7445C10D0Ev,_ZThn72_N8S7445C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7445C2__A1__8S7445C10__7S7445C1[] = {
  ABISELECT(-88,-72),
  ABISELECT(-2184,-1440),
  ABISELECT(-88,-72),
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7445C10D1Ev,_ZTv0_n16_N8S7445C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7445C10D0Ev,_ZTv0_n16_N8S7445C10D0Ev),
};
extern void _ZN7S7445C2D1Ev();
extern void _ZN7S7445C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7445C2__A3__7S7445C1[] = {
  ABISELECT(-2184,-1440),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C2[0]),
  (VTBL_ENTRY)&_ZN7S7445C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7445C2D0Ev,
};
extern void _ZN8S7445C12D1Ev();
extern void _ZN8S7445C12D0Ev();
extern void _ZN8S7445C123v10Ev();
static  VTBL_ENTRY _tg__ZTV8S7445C12__7S7445C1[] = {
  ABISELECT(-40,-24),
  ABISELECT(-352,-244),
  ABISELECT(-1664,-1084),
  ABISELECT(-608,-400),
  ABISELECT(-376,-256),
  ABISELECT(-2224,-1464),
  0,
  (VTBL_ENTRY)&(_ZTI8S7445C12[0]),
  (VTBL_ENTRY)&_ZN8S7445C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7445C12D0Ev,
  (VTBL_ENTRY)&_ZN8S7445C123v10Ev,
};
extern void _ZN7S7445C2D1Ev();
extern void _ZN7S7445C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7445C28S7445C12__A4__7S7445C1[] = {
  ABISELECT(-2224,-1464),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C2[0]),
  (VTBL_ENTRY)&_ZN7S7445C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7445C2D0Ev,
};
extern void _ZN8S7445C10D1Ev();
extern void _ZN8S7445C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7445C108S7445C12__A1__7S7445C1[] = {
  ABISELECT(-248,-160),
  ABISELECT(-560,-380),
  ABISELECT(-2432,-1600),
  ABISELECT(-1872,-1220),
  ABISELECT(-816,-536),
  ABISELECT(-584,-392),
  0,
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
  (VTBL_ENTRY)&_ZN8S7445C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7445C10D0Ev,
};
extern void _ZN10S7445C7_nt2v5Ev();
extern void _ZN10S7445C7_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV10S7445C7_nt__8S7445C108S7445C12__A1__7S7445C1[] = {
  0,
  0,
  ABISELECT(584,392),
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v6Ev,
};
extern void _ZN7S7445C62v7Ev();
extern void _ZN7S7445C62v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7445C6__8S7445C108S7445C12__A1__7S7445C1[] = {
  0,
  0,
  ABISELECT(232,144),
  ABISELECT(816,536),
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
  (VTBL_ENTRY)&_ZN7S7445C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7445C62v8Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7445C5__8S7445C108S7445C12__A1__7S7445C1[] = {
  ABISELECT(-560,-380),
  ABISELECT(1872,1220),
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
};
extern void ABISELECT(_ZTv0_n40_N8S7445C10D1Ev,_ZTv0_n20_N8S7445C10D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S7445C10D0Ev,_ZTv0_n20_N8S7445C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7445C8__8S7445C108S7445C12__A1__7S7445C1[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  ABISELECT(560,380),
  ABISELECT(-1312,-840),
  ABISELECT(-1872,-1220),
  ABISELECT(560,380),
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7445C10D1Ev,_ZTv0_n20_N8S7445C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7445C10D0Ev,_ZTv0_n20_N8S7445C10D0Ev),
};
extern void _ZN10S7445C7_nt2v5Ev();
extern void _ZN10S7445C7_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV10S7445C7_nt7S7445C8__A1__8S7445C108S7445C12__A1__7S7445C1[] = {
  ABISELECT(520,356),
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v6Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S7445C10D1Ev,_ZTv0_n16_N8S7445C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7445C10D0Ev,_ZTv0_n16_N8S7445C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7445C2__A1__8S7445C108S7445C12__A1__7S7445C1[] = {
  ABISELECT(248,160),
  ABISELECT(-2184,-1440),
  ABISELECT(248,160),
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7445C10D1Ev,_ZTv0_n16_N8S7445C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7445C10D0Ev,_ZTv0_n16_N8S7445C10D0Ev),
};
extern void ABISELECT(_ZThn208_N8S7445C12D1Ev,_ZThn136_N8S7445C12D1Ev)();
extern void ABISELECT(_ZThn208_N8S7445C12D0Ev,_ZThn136_N8S7445C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7445C10__8S7445C12__7S7445C1[] = {
  ABISELECT(-248,-160),
  ABISELECT(-560,-380),
  ABISELECT(-2432,-1600),
  ABISELECT(-1872,-1220),
  ABISELECT(-816,-536),
  ABISELECT(-584,-392),
  ABISELECT(-208,-136),
  (VTBL_ENTRY)&(_ZTI8S7445C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N8S7445C12D1Ev,_ZThn136_N8S7445C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N8S7445C12D0Ev,_ZThn136_N8S7445C12D0Ev),
};
extern void _ZN10S7445C7_nt2v5Ev();
extern void _ZN10S7445C7_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV10S7445C7_nt__8S7445C12__7S7445C1[] = {
  0,
  0,
  ABISELECT(376,256),
  (VTBL_ENTRY)&(_ZTI8S7445C12[0]),
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v6Ev,
};
extern void _ZN7S7445C62v7Ev();
extern void _ZN7S7445C62v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7445C6__8S7445C12__7S7445C1[] = {
  0,
  0,
  ABISELECT(232,144),
  ABISELECT(608,400),
  (VTBL_ENTRY)&(_ZTI8S7445C12[0]),
  (VTBL_ENTRY)&_ZN7S7445C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7445C62v8Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7445C5__8S7445C12__7S7445C1[] = {
  ABISELECT(-560,-380),
  ABISELECT(1664,1084),
  (VTBL_ENTRY)&(_ZTI8S7445C12[0]),
};
extern void ABISELECT(_ZTv0_n40_N8S7445C12D1Ev,_ZTv0_n20_N8S7445C12D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S7445C12D0Ev,_ZTv0_n20_N8S7445C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7445C8__8S7445C12__7S7445C1[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  ABISELECT(352,244),
  ABISELECT(-1312,-840),
  ABISELECT(-1872,-1220),
  ABISELECT(352,244),
  (VTBL_ENTRY)&(_ZTI8S7445C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7445C12D1Ev,_ZTv0_n20_N8S7445C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7445C12D0Ev,_ZTv0_n20_N8S7445C12D0Ev),
};
extern void _ZN10S7445C7_nt2v5Ev();
extern void _ZN10S7445C7_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV10S7445C7_nt7S7445C8__A1__8S7445C12__7S7445C1[] = {
  ABISELECT(312,220),
  (VTBL_ENTRY)&(_ZTI8S7445C12[0]),
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v6Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S7445C12D1Ev,_ZTv0_n16_N8S7445C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7445C12D0Ev,_ZTv0_n16_N8S7445C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7445C2__A2__8S7445C12__7S7445C1[] = {
  ABISELECT(40,24),
  ABISELECT(-2184,-1440),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S7445C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7445C12D1Ev,_ZTv0_n16_N8S7445C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7445C12D0Ev,_ZTv0_n16_N8S7445C12D0Ev),
};
static  VTT_ENTRY vtt_S7445C1[] = {
  {&(_ZTV7S7445C1[11]),  11,116},
  {&(_tg__ZTV7S7445C2__A__7S7445C1[3]),  3,5},
  {&(_tg__ZTV7S7445C9__7S7445C1[10]),  10,13},
  {&(_tg__ZTV7S7445C6__7S7445C9__7S7445C1[5]),  5,7},
  {&(_tg__ZTV10S7445C7_nt__7S7445C9__7S7445C1[4]),  4,6},
  {&(_tg__ZTV7S7445C8__7S7445C9__7S7445C1[7]),  7,9},
  {&(_tg__ZTV7S7445C5__7S7445C9__7S7445C1[3]),  3,3},
  {&(_tg__ZTV10S7445C7_nt7S7445C8__A1__7S7445C9__7S7445C1[2]),  2,4},
  {&(_tg__ZTV8S7445C10__7S7445C9__7S7445C1[9]),  9,11},
  {&(_tg__ZTV7S7445C2__A1__7S7445C9__7S7445C1[4]),  4,6},
  {&(_tg__ZTV8S7445C12__7S7445C9__7S7445C1[10]),  10,13},
  {&(_tg__ZTV8S7445C108S7445C12__A1__7S7445C9__7S7445C1[8]),  8,10},
  {&(_ZTV7S7445C1[40]),  40,116},
  {&(_ZTV7S7445C1[50]),  50,116},
  {&(_ZTV7S7445C1[55]),  55,116},
  {&(_ZTV7S7445C1[61]),  61,116},
  {&(_ZTV7S7445C1[45]),  45,116},
  {&(_ZTV7S7445C1[70]),  70,116},
  {&(_ZTV7S7445C1[74]),  74,116},
  {&(_ZTV7S7445C1[27]),  27,116},
  {&(_ZTV7S7445C1[85]),  85,116},
  {&(_ZTV7S7445C1[91]),  91,116},
  {&(_ZTV7S7445C1[103]),  103,116},
  {&(_ZTV7S7445C1[114]),  114,116},
  {&(_tg__ZTV7S7445C4__7S7445C1[6]),  6,9},
  {&(_tg__ZTV7S7445C87S7445C4__7S7445C1[4]),  4,6},
  {&(_tg__ZTV7S7445C27S7445C87S7445C4__A1__7S7445C1[3]),  3,5},
  {&(_tg__ZTV7S7445C5__7S7445C87S7445C4__7S7445C1[3]),  3,3},
  {&(_tg__ZTV7S7445C5__7S7445C4__7S7445C1[3]),  3,3},
  {&(_tg__ZTV7S7445C6__7S7445C4__7S7445C1[5]),  5,7},
  {&(_tg__ZTV10S7445C7_nt__7S7445C4__7S7445C1[4]),  4,6},
  {&(_tg__ZTV7S7445C5__7S7445C1[3]),  3,3},
  {&(_tg__ZTV7S7445C6__7S7445C1[3]),  3,5},
  {&(_tg__ZTV10S7445C7_nt__7S7445C6__7S7445C1[4]),  4,6},
  {&(_tg__ZTV7S7445C8__A1__7S7445C1[4]),  4,6},
  {&(_tg__ZTV7S7445C27S7445C8__A2__7S7445C1[3]),  3,5},
  {&(_tg__ZTV7S7445C5__7S7445C8__A1__7S7445C1[3]),  3,3},
  {&(_tg__ZTV8S7445C10__7S7445C1[8]),  8,10},
  {&(_tg__ZTV10S7445C7_nt__8S7445C10__7S7445C1[4]),  4,6},
  {&(_tg__ZTV7S7445C6__8S7445C10__7S7445C1[5]),  5,7},
  {&(_tg__ZTV7S7445C5__8S7445C10__7S7445C1[3]),  3,3},
  {&(_tg__ZTV7S7445C8__8S7445C10__7S7445C1[7]),  7,9},
  {&(_tg__ZTV10S7445C7_nt7S7445C8__A1__8S7445C10__7S7445C1[2]),  2,4},
  {&(_tg__ZTV7S7445C2__A1__8S7445C10__7S7445C1[4]),  4,6},
  {&(_tg__ZTV7S7445C2__A3__7S7445C1[3]),  3,5},
  {&(_tg__ZTV8S7445C12__7S7445C1[8]),  8,11},
  {&(_tg__ZTV7S7445C28S7445C12__A4__7S7445C1[3]),  3,5},
  {&(_tg__ZTV8S7445C108S7445C12__A1__7S7445C1[8]),  8,10},
  {&(_tg__ZTV10S7445C7_nt__8S7445C108S7445C12__A1__7S7445C1[4]),  4,6},
  {&(_tg__ZTV7S7445C6__8S7445C108S7445C12__A1__7S7445C1[5]),  5,7},
  {&(_tg__ZTV7S7445C5__8S7445C108S7445C12__A1__7S7445C1[3]),  3,3},
  {&(_tg__ZTV7S7445C8__8S7445C108S7445C12__A1__7S7445C1[7]),  7,9},
  {&(_tg__ZTV10S7445C7_nt7S7445C8__A1__8S7445C108S7445C12__A1__7S7445C1[2]),  2,4},
  {&(_tg__ZTV7S7445C2__A1__8S7445C108S7445C12__A1__7S7445C1[4]),  4,6},
  {&(_tg__ZTV8S7445C10__8S7445C12__7S7445C1[8]),  8,10},
  {&(_tg__ZTV10S7445C7_nt__8S7445C12__7S7445C1[4]),  4,6},
  {&(_tg__ZTV7S7445C6__8S7445C12__7S7445C1[5]),  5,7},
  {&(_tg__ZTV7S7445C5__8S7445C12__7S7445C1[3]),  3,3},
  {&(_tg__ZTV7S7445C8__8S7445C12__7S7445C1[7]),  7,9},
  {&(_tg__ZTV10S7445C7_nt7S7445C8__A1__8S7445C12__7S7445C1[2]),  2,4},
  {&(_tg__ZTV7S7445C2__A2__8S7445C12__7S7445C1[4]),  4,6},
};
extern VTBL_ENTRY _ZTI7S7445C1[];
extern  VTBL_ENTRY _ZTV7S7445C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C1[];
static VTBL_ENTRY alt_thunk_names103[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7445C10D0Ev,_ZTv0_n16_N8S7445C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7445C10D0Ev,_ZThn72_N8S7445C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7445C10D1Ev,_ZTv0_n16_N8S7445C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7445C10D1Ev,_ZThn72_N8S7445C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7445C9D0Ev,_ZTv0_n16_N7S7445C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2272_N7S7445C9D0Ev,_ZThn1504_N7S7445C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7445C9D1Ev,_ZTv0_n16_N7S7445C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2272_N7S7445C9D1Ev,_ZThn1504_N7S7445C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7445C9D0Ev,_ZTv0_n36_N7S7445C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2312_N7S7445C9D0Ev,_ZThn1528_N7S7445C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2184_N7S7445C9D0Ev,_ZThn1432_N7S7445C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7445C9D1Ev,_ZTv0_n36_N7S7445C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2312_N7S7445C9D1Ev,_ZThn1528_N7S7445C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2184_N7S7445C9D1Ev,_ZThn1432_N7S7445C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7445C9D0Ev,_ZTv0_n20_N7S7445C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1960_N7S7445C9D0Ev,_ZThn1284_N7S7445C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7445C9D1Ev,_ZTv0_n20_N7S7445C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1960_N7S7445C9D1Ev,_ZThn1284_N7S7445C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7445C1D0Ev,_ZTv0_n16_N7S7445C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2312_N7S7445C1D0Ev,_ZThn1528_N7S7445C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7445C1D1Ev,_ZTv0_n16_N7S7445C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2312_N7S7445C1D1Ev,_ZThn1528_N7S7445C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7445C1D0Ev,_ZTv0_n36_N7S7445C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2352_N7S7445C1D0Ev,_ZThn1552_N7S7445C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2224_N7S7445C1D0Ev,_ZThn1456_N7S7445C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7445C1D1Ev,_ZTv0_n36_N7S7445C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2352_N7S7445C1D1Ev,_ZThn1552_N7S7445C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2224_N7S7445C1D1Ev,_ZThn1456_N7S7445C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7445C1D0Ev,_ZTv0_n20_N7S7445C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2000_N7S7445C1D0Ev,_ZThn1308_N7S7445C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7445C1D1Ev,_ZTv0_n20_N7S7445C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2000_N7S7445C1D1Ev,_ZThn1308_N7S7445C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7445C1D0Ev,_ZTv0_n28_N7S7445C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N7S7445C1D0Ev,_ZThn200_N7S7445C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7445C1D1Ev,_ZTv0_n28_N7S7445C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N7S7445C1D1Ev,_ZThn200_N7S7445C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7445C1 = {  "S7445C1", // class name
  bases_S7445C1, 22,
  &(vtc_S7445C1[0]), // expected_vtbl_contents
  &(vtt_S7445C1[0]), // expected_vtt_contents
  ABISELECT(4032,2672), // object size
  NSPAIRA(_ZTI7S7445C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7445C1),116, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7445C1),61, //virtual table table var
  17, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names103,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7446C2  : virtual S7445C3 {
  int s7446c2f0;
  void *s7446c2f1;
  __tsi64 s7446c2f2:62;
  char s7446c2f3:4;
  virtual  ~S7446C2(); // _ZN7S7446C2D2Ev
  S7446C2(); // tgen
};
//SIG(-1 S7446C2) C1{ VBC2{ m Fp Fs Fi FD[8] Fi} vd Fi Fp FL:62 Fc:4}


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

static void Test_S7446C2()
{
  extern Class_Descriptor cd_S7446C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(14,35)];
    init_test(&cd_S7446C2, buf);
    S7446C2 *dp, &lv = *(dp=new (buf) S7446C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,136), "sizeof(S7446C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7446C2)");
    check_base_class_offset(lv, (S7445C3*), ABISELECT(48,24), "S7446C2");
    check_field_offset(lv, s7446c2f0, ABISELECT(8,4), "S7446C2.s7446c2f0");
    check_field_offset(lv, s7446c2f1, ABISELECT(16,8), "S7446C2.s7446c2f1");
    set_bf_and_test(lv, s7446c2f2, ABISELECT(24,12), 0, 62, 1, "S7446C2");
    set_bf_and_test(lv, s7446c2f2, ABISELECT(24,12), 0, 62, hide_sll(1LL<<61), "S7446C2");
    set_bf_and_test(lv, s7446c2f3, ABISELECT(32,20), 0, 4, 1, "S7446C2");
    set_bf_and_test(lv, s7446c2f3, ABISELECT(32,20), 0, 4, hide_sll(1LL<<3), "S7446C2");
    test_class_info(&lv, &cd_S7446C2);
    dp->~S7446C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7446C2(Test_S7446C2, "S7446C2", ABISELECT(208,136));

#else // __cplusplus

extern void _ZN7S7446C2C1Ev();
extern void _ZN7S7446C2D2Ev();
Name_Map name_map_S7446C2[] = {
  NSPAIR(_ZN7S7446C2C1Ev),
  NSPAIR(_ZN7S7446C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
static Base_Class bases_S7446C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7445C3,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7446C2[];
extern void _ZN7S7446C2D1Ev();
extern void _ZN7S7446C2D0Ev();
static  VTBL_ENTRY vtc_S7446C2[] = {
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C2[0]),
  (VTBL_ENTRY)&_ZN7S7446C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7446C2D0Ev,
};
extern VTBL_ENTRY _ZTV7S7446C2[];
static  VTT_ENTRY vtt_S7446C2[] = {
  {&(_ZTV7S7446C2[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S7446C2[];
extern  VTBL_ENTRY _ZTV7S7446C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C2[];
Class_Descriptor cd_S7446C2 = {  "S7446C2", // class name
  bases_S7446C2, 1,
  &(vtc_S7446C2[0]), // expected_vtbl_contents
  &(vtt_S7446C2[0]), // expected_vtt_contents
  ABISELECT(208,136), // object size
  NSPAIRA(_ZTI7S7446C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7446C2),5, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7446C2),1, //virtual table table var
  0, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7446C5  : virtual S7445C3 {
  ::S7446C2 s7446c5f0[5];
  ~S7446C5(); // tgen
  S7446C5(); // tgen
};
//SIG(-1 S7446C5) C1{ VBC2{ m Fp Fs Fi FD[8] Fi} FC3{ VBC2 vd Fi Fp FL:62 Fc:4}[5]}


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

static void Test_S7446C5()
{
  extern Class_Descriptor cd_S7446C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(77,200)];
    init_test(&cd_S7446C5, buf);
    S7446C5 *dp, &lv = *(dp=new (buf) S7446C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1216,796), "sizeof(S7446C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7446C5)");
    check_base_class_offset(lv, (S7445C3*), ABISELECT(1056,684), "S7446C5");
    check_field_offset(lv, s7446c5f0, ABISELECT(16,4), "S7446C5.s7446c5f0");
    test_class_info(&lv, &cd_S7446C5);
    dp->~S7446C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7446C5(Test_S7446C5, "S7446C5", ABISELECT(1216,796));

#else // __cplusplus

extern void _ZN7S7446C5C1Ev();
extern void _ZN7S7446C5D1Ev();
Name_Map name_map_S7446C5[] = {
  NSPAIR(_ZN7S7446C5C1Ev),
  NSPAIR(_ZN7S7446C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
static Base_Class bases_S7446C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7445C3,    ABISELECT(1056,684), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7446C5[];
static  VTBL_ENTRY vtc_S7446C5[] = {
  ABISELECT(1056,684),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C5[0]),
};
extern VTBL_ENTRY _ZTV7S7446C5[];
static  VTT_ENTRY vtt_S7446C5[] = {
  {&(_ZTV7S7446C5[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7446C5[];
extern  VTBL_ENTRY _ZTV7S7446C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C5[];
Class_Descriptor cd_S7446C5 = {  "S7446C5", // class name
  bases_S7446C5, 1,
  &(vtc_S7446C5[0]), // expected_vtbl_contents
  &(vtt_S7446C5[0]), // expected_vtt_contents
  ABISELECT(1216,796), // object size
  NSPAIRA(_ZTI7S7446C5),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7446C5),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7446C5),1, //virtual table table var
  0, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7446C7  {
  __tsi64 s7446c7f0;
  virtual void  v5(); // _ZN7S7446C72v5Ev
  virtual void  v6(); // _ZN7S7446C72v6Ev
  ~S7446C7(); // tgen
  S7446C7(); // tgen
};
//SIG(-1 S7446C7) C1{ v1 v2 FL}


void  S7446C7 ::v5(){vfunc_called(this, "_ZN7S7446C72v5Ev");}
void  S7446C7 ::v6(){vfunc_called(this, "_ZN7S7446C72v6Ev");}
S7446C7 ::~S7446C7(){ note_dtor("S7446C7", this);} // tgen
S7446C7 ::S7446C7(){ note_ctor("S7446C7", this);} // tgen

static void Test_S7446C7()
{
  extern Class_Descriptor cd_S7446C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S7446C7, buf);
    S7446C7 *dp, &lv = *(dp=new (buf) S7446C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S7446C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7446C7)");
    check_field_offset(lv, s7446c7f0, ABISELECT(8,4), "S7446C7.s7446c7f0");
    test_class_info(&lv, &cd_S7446C7);
    dp->~S7446C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7446C7(Test_S7446C7, "S7446C7", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S7446C7C1Ev();
extern void _ZN7S7446C7D1Ev();
Name_Map name_map_S7446C7[] = {
  NSPAIR(_ZN7S7446C7C1Ev),
  NSPAIR(_ZN7S7446C7D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7446C7[];
extern void _ZN7S7446C72v5Ev();
extern void _ZN7S7446C72v6Ev();
static  VTBL_ENTRY vtc_S7446C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C7[0]),
  (VTBL_ENTRY)&_ZN7S7446C72v5Ev,
  (VTBL_ENTRY)&_ZN7S7446C72v6Ev,
};
extern VTBL_ENTRY _ZTI7S7446C7[];
extern  VTBL_ENTRY _ZTV7S7446C7[];
Class_Descriptor cd_S7446C7 = {  "S7446C7", // class name
  0,0,//no base classes
  &(vtc_S7446C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S7446C7),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7446C7),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7446C6  : virtual S7446C7 {
  ::S7446C2 s7446c6f0;
  void *s7446c6f1;
  virtual void  v7(); // _ZN7S7446C62v7Ev
  virtual void  v8(); // _ZN7S7446C62v8Ev
  ~S7446C6(); // tgen
  S7446C6(); // tgen
};
//SIG(-1 S7446C6) C1{ VBC2{ v3 v4 FL} v1 v2 FC3{ VBC4{ m Fp Fs Fi FD[8] Fi} vd Fi Fp FL:62 Fc:4} Fp}


void  S7446C6 ::v7(){vfunc_called(this, "_ZN7S7446C62v7Ev");}
void  S7446C6 ::v8(){vfunc_called(this, "_ZN7S7446C62v8Ev");}
S7446C6 ::~S7446C6(){ note_dtor("S7446C6", this);} // tgen
S7446C6 ::S7446C6(){ note_ctor("S7446C6", this);} // tgen

static void Test_S7446C6()
{
  extern Class_Descriptor cd_S7446C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(17,40)];
    init_test(&cd_S7446C6, buf);
    S7446C6 *dp, &lv = *(dp=new (buf) S7446C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(256,156), "sizeof(S7446C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7446C6)");
    check_base_class_offset(lv, (S7446C7*), ABISELECT(232,144), "S7446C6");
    check_field_offset(lv, s7446c6f0, ABISELECT(16,4), "S7446C6.s7446c6f0");
    check_field_offset(lv, s7446c6f1, ABISELECT(224,140), "S7446C6.s7446c6f1");
    test_class_info(&lv, &cd_S7446C6);
    dp->~S7446C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7446C6(Test_S7446C6, "S7446C6", ABISELECT(256,156));

#else // __cplusplus

extern void _ZN7S7446C6C1Ev();
extern void _ZN7S7446C6D1Ev();
Name_Map name_map_S7446C6[] = {
  NSPAIR(_ZN7S7446C6C1Ev),
  NSPAIR(_ZN7S7446C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7446C7;
extern VTBL_ENTRY _ZTI7S7446C7[];
extern  VTBL_ENTRY _ZTV7S7446C7[];
static Base_Class bases_S7446C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7446C7,    ABISELECT(232,144), //bcp->offset
    5, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7446C6[];
extern void _ZN7S7446C62v7Ev();
extern void _ZN7S7446C62v8Ev();
extern void _ZN7S7446C72v5Ev();
extern void _ZN7S7446C72v6Ev();
static  VTBL_ENTRY vtc_S7446C6[] = {
  ABISELECT(232,144),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C6[0]),
  (VTBL_ENTRY)&_ZN7S7446C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7446C62v8Ev,
  0,
  0,
  ABISELECT(-232,-144),
  (VTBL_ENTRY)&(_ZTI7S7446C6[0]),
  (VTBL_ENTRY)&_ZN7S7446C72v5Ev,
  (VTBL_ENTRY)&_ZN7S7446C72v6Ev,
};
extern VTBL_ENTRY _ZTV7S7446C6[];
static  VTT_ENTRY vtt_S7446C6[] = {
  {&(_ZTV7S7446C6[3]),  3,11},
  {&(_ZTV7S7446C6[9]),  9,11},
};
extern VTBL_ENTRY _ZTI7S7446C6[];
extern  VTBL_ENTRY _ZTV7S7446C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C6[];
Class_Descriptor cd_S7446C6 = {  "S7446C6", // class name
  bases_S7446C6, 1,
  &(vtc_S7446C6[0]), // expected_vtbl_contents
  &(vtt_S7446C6[0]), // expected_vtt_contents
  ABISELECT(256,156), // object size
  NSPAIRA(_ZTI7S7446C6),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7446C6),11, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7446C6),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7446C8  : virtual S7446C5 , S7446C2 , S7446C7 , S7445C3 {
  virtual  ~S7446C8(); // _ZN7S7446C8D2Ev
  S7446C8(); // tgen
};
//SIG(-1 S7446C8) C1{ VBC2{ VBC3{ m Fp Fs Fi FD[8] Fi} FC4{ VBC3 vd Fi Fp FL:62 Fc:4}[5]} BC4 BC5{ v1 v2 FL} BC3 vd}


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

static void Test_S7446C8()
{
  extern Class_Descriptor cd_S7446C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(91,237)];
    init_test(&cd_S7446C8, buf);
    S7446C8 *dp, &lv = *(dp=new (buf) S7446C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1440,944), "sizeof(S7446C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7446C8)");
    check_base_class_offset(lv, (S7445C3*)(S7446C5*), ABISELECT(1280,832), "S7446C8");
    check_base_class_offset(lv, (S7445C3*)(S7446C2*), ABISELECT(1280,832), "S7446C8");
    check_base_class_offset(lv, (S7446C5*), ABISELECT(224,148), "S7446C8");
    check_base_class_offset(lv, (S7446C2*), 0, "S7446C8");
    check_base_class_offset(lv, (S7446C7*), ABISELECT(40,24), "S7446C8");
    /*is_ambiguous_... S7446C8::S7445C3 */ AMB_check_base_class_offset(lv, (S7445C3*), ABISELECT(64,36), "S7446C8");
    test_class_info(&lv, &cd_S7446C8);
    dp->~S7446C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7446C8(Test_S7446C8, "S7446C8", ABISELECT(1440,944));

#else // __cplusplus

extern void _ZN7S7446C8C1Ev();
extern void _ZN7S7446C8D2Ev();
Name_Map name_map_S7446C8[] = {
  NSPAIR(_ZN7S7446C8C1Ev),
  NSPAIR(_ZN7S7446C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
extern Class_Descriptor cd_S7446C5;
extern VTBL_ENTRY _ZTI7S7446C5[];
extern  VTBL_ENTRY _ZTV7S7446C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C5[];
extern Class_Descriptor cd_S7446C2;
extern VTBL_ENTRY _ZTI7S7446C2[];
extern  VTBL_ENTRY _ZTV7S7446C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C2[];
extern Class_Descriptor cd_S7446C7;
extern VTBL_ENTRY _ZTI7S7446C7[];
extern  VTBL_ENTRY _ZTV7S7446C7[];
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
static Base_Class bases_S7446C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7445C3,    ABISELECT(1280,832), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7446C5,    ABISELECT(224,148), //bcp->offset
    10, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7446C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7446C7,    ABISELECT(40,24), //bcp->offset
    6, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7445C3,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7446C8[];
extern void _ZN7S7446C8D1Ev();
extern void _ZN7S7446C8D0Ev();
extern void _ZN7S7446C72v5Ev();
extern void _ZN7S7446C72v6Ev();
static  VTBL_ENTRY vtc_S7446C8[] = {
  ABISELECT(224,148),
  ABISELECT(1280,832),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C8[0]),
  (VTBL_ENTRY)&_ZN7S7446C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7446C8D0Ev,
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7446C8[0]),
  (VTBL_ENTRY)&_ZN7S7446C72v5Ev,
  (VTBL_ENTRY)&_ZN7S7446C72v6Ev,
  ABISELECT(1056,684),
  ABISELECT(-224,-148),
  (VTBL_ENTRY)&(_ZTI7S7446C8[0]),
};
extern VTBL_ENTRY _ZTV7S7446C8[];
extern void _ZN7S7446C2D1Ev();
extern void _ZN7S7446C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C2__7S7446C8[] = {
  ABISELECT(1280,832),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C2[0]),
  (VTBL_ENTRY)&_ZN7S7446C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7446C2D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7446C5__7S7446C8[] = {
  ABISELECT(1056,684),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C5[0]),
};
static  VTT_ENTRY vtt_S7446C8[] = {
  {&(_ZTV7S7446C8[4]),  4,13},
  {&(_tg__ZTV7S7446C2__7S7446C8[3]),  3,5},
  {&(_ZTV7S7446C8[13]),  13,13},
  {&(_tg__ZTV7S7446C5__7S7446C8[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7446C8[];
extern  VTBL_ENTRY _ZTV7S7446C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C8[];
Class_Descriptor cd_S7446C8 = {  "S7446C8", // class name
  bases_S7446C8, 5,
  &(vtc_S7446C8[0]), // expected_vtbl_contents
  &(vtt_S7446C8[0]), // expected_vtt_contents
  ABISELECT(1440,944), // object size
  NSPAIRA(_ZTI7S7446C8),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7446C8),13, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7446C8),4, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7446C4  : S7445C3 , virtual S7446C5 , virtual S7446C6 , S7446C8 {
  int s7446c4f0;
  __tsi64 s7446c4f1;
  virtual  ~S7446C4(); // _ZN7S7446C4D2Ev
  virtual void  v9(); // _ZN7S7446C42v9Ev
  S7446C4(); // tgen
};
//SIG(-1 S7446C4) C1{ BC2{ m Fp Fs Fi FD[8] Fi} VBC3{ VBC2 FC4{ VBC2 vd Fi Fp FL:62 Fc:4}[5]} VBC5{ VBC6{ v2 v3 FL} v4 v5 FC4 Fp} BC7{ VBC3 BC4 BC6 BC2 vd} vd v1 Fi FL}


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

static void Test_S7446C4()
{
  extern Class_Descriptor cd_S7446C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(118,307)];
    init_test(&cd_S7446C4, buf);
    S7446C4 *dp, &lv = *(dp=new (buf) S7446C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1872,1224), "sizeof(S7446C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7446C4)");
    /*is_ambiguous_... S7446C4::S7445C3 */ AMB_check_base_class_offset(lv, (S7445C3*), ABISELECT(224,148), "S7446C4");
    check_base_class_offset(lv, (S7445C3*)(S7446C5*), ABISELECT(1456,956), "S7446C4");
    check_base_class_offset(lv, (S7445C3*)(S7446C2*)(S7446C8*), ABISELECT(1456,956), "S7446C4");
    check_base_class_offset(lv, (S7446C5*), ABISELECT(400,272), "S7446C4");
    check_base_class_offset(lv, (S7446C5*)(S7446C8*), ABISELECT(400,272), "S7446C4");
    check_base_class_offset(lv, (S7446C7*)(S7446C6*), ABISELECT(1848,1212), "S7446C4");
    check_base_class_offset(lv, (S7446C6*), ABISELECT(1616,1068), "S7446C4");
    check_base_class_offset(lv, (S7446C2*)(S7446C8*), 0, "S7446C4");
    check_base_class_offset(lv, (S7446C7*)(S7446C8*), ABISELECT(40,24), "S7446C4");
    /*is_ambiguous_... S7446C8::S7445C3 */ AMB_check_base_class_offset(lv, (S7445C3*)(S7446C8*), ABISELECT(64,36), "S7446C4");
    check_base_class_offset(lv, (S7446C8*), 0, "S7446C4");
    check_field_offset(lv, s7446c4f0, ABISELECT(384,260), "S7446C4.s7446c4f0");
    check_field_offset(lv, s7446c4f1, ABISELECT(392,264), "S7446C4.s7446c4f1");
    test_class_info(&lv, &cd_S7446C4);
    dp->~S7446C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7446C4(Test_S7446C4, "S7446C4", ABISELECT(1872,1224));

#else // __cplusplus

extern void _ZN7S7446C4C1Ev();
extern void _ZN7S7446C4D2Ev();
Name_Map name_map_S7446C4[] = {
  NSPAIR(_ZN7S7446C4C1Ev),
  NSPAIR(_ZN7S7446C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
extern Class_Descriptor cd_S7446C5;
extern VTBL_ENTRY _ZTI7S7446C5[];
extern  VTBL_ENTRY _ZTV7S7446C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C5[];
extern Class_Descriptor cd_S7446C7;
extern VTBL_ENTRY _ZTI7S7446C7[];
extern  VTBL_ENTRY _ZTV7S7446C7[];
extern Class_Descriptor cd_S7446C6;
extern VTBL_ENTRY _ZTI7S7446C6[];
extern  VTBL_ENTRY _ZTV7S7446C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C6[];
extern Class_Descriptor cd_S7446C2;
extern VTBL_ENTRY _ZTI7S7446C2[];
extern  VTBL_ENTRY _ZTV7S7446C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C2[];
extern Class_Descriptor cd_S7446C7;
extern VTBL_ENTRY _ZTI7S7446C7[];
extern  VTBL_ENTRY _ZTV7S7446C7[];
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
extern Class_Descriptor cd_S7446C8;
extern VTBL_ENTRY _ZTI7S7446C8[];
extern  VTBL_ENTRY _ZTV7S7446C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C8[];
static Base_Class bases_S7446C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7445C3,    ABISELECT(224,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7445C3,    ABISELECT(1456,956), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7446C5,    ABISELECT(400,272), //bcp->offset
    13, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7446C7,    ABISELECT(1848,1212), //bcp->offset
    23, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7446C6,    ABISELECT(1616,1068), //bcp->offset
    16, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7446C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7446C7,    ABISELECT(40,24), //bcp->offset
    9, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7445C3,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7446C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7446C4[];
extern void _ZN7S7446C4D1Ev();
extern void _ZN7S7446C4D0Ev();
extern void _ZN7S7446C42v9Ev();
extern void _ZN7S7446C72v5Ev();
extern void _ZN7S7446C72v6Ev();
extern void _ZN7S7446C62v7Ev();
extern void _ZN7S7446C62v8Ev();
extern void _ZN7S7446C72v5Ev();
extern void _ZN7S7446C72v6Ev();
static  VTBL_ENTRY vtc_S7446C4[] = {
  ABISELECT(1848,1212),
  ABISELECT(1616,1068),
  ABISELECT(400,272),
  ABISELECT(1456,956),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C4[0]),
  (VTBL_ENTRY)&_ZN7S7446C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7446C4D0Ev,
  (VTBL_ENTRY)&_ZN7S7446C42v9Ev,
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7446C4[0]),
  (VTBL_ENTRY)&_ZN7S7446C72v5Ev,
  (VTBL_ENTRY)&_ZN7S7446C72v6Ev,
  ABISELECT(1056,684),
  ABISELECT(-400,-272),
  (VTBL_ENTRY)&(_ZTI7S7446C4[0]),
  0,
  0,
  ABISELECT(232,144),
  ABISELECT(-1616,-1068),
  (VTBL_ENTRY)&(_ZTI7S7446C4[0]),
  (VTBL_ENTRY)&_ZN7S7446C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7446C62v8Ev,
  0,
  0,
  ABISELECT(-1848,-1212),
  (VTBL_ENTRY)&(_ZTI7S7446C4[0]),
  (VTBL_ENTRY)&_ZN7S7446C72v5Ev,
  (VTBL_ENTRY)&_ZN7S7446C72v6Ev,
};
extern VTBL_ENTRY _ZTV7S7446C4[];
extern void _ZN7S7446C8D1Ev();
extern void _ZN7S7446C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C8__7S7446C4[] = {
  ABISELECT(400,272),
  ABISELECT(1456,956),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C8[0]),
  (VTBL_ENTRY)&_ZN7S7446C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7446C8D0Ev,
};
extern void _ZN7S7446C2D1Ev();
extern void _ZN7S7446C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C27S7446C8__7S7446C4[] = {
  ABISELECT(1456,956),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C2[0]),
  (VTBL_ENTRY)&_ZN7S7446C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7446C2D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7446C5__7S7446C8__7S7446C4[] = {
  ABISELECT(1056,684),
  ABISELECT(-400,-272),
  (VTBL_ENTRY)&(_ZTI7S7446C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7446C5__7S7446C4[] = {
  ABISELECT(1056,684),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C5[0]),
};
extern void _ZN7S7446C62v7Ev();
extern void _ZN7S7446C62v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C6__7S7446C4[] = {
  ABISELECT(232,144),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C6[0]),
  (VTBL_ENTRY)&_ZN7S7446C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7446C62v8Ev,
};
extern void _ZN7S7446C72v5Ev();
extern void _ZN7S7446C72v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C7__7S7446C6__7S7446C4[] = {
  0,
  0,
  ABISELECT(-232,-144),
  (VTBL_ENTRY)&(_ZTI7S7446C6[0]),
  (VTBL_ENTRY)&_ZN7S7446C72v5Ev,
  (VTBL_ENTRY)&_ZN7S7446C72v6Ev,
};
static  VTT_ENTRY vtt_S7446C4[] = {
  {&(_ZTV7S7446C4[6]),  6,29},
  {&(_tg__ZTV7S7446C8__7S7446C4[4]),  4,6},
  {&(_tg__ZTV7S7446C27S7446C8__7S7446C4[3]),  3,5},
  {&(_tg__ZTV7S7446C5__7S7446C8__7S7446C4[3]),  3,3},
  {&(_ZTV7S7446C4[16]),  16,29},
  {&(_ZTV7S7446C4[21]),  21,29},
  {&(_ZTV7S7446C4[27]),  27,29},
  {&(_tg__ZTV7S7446C5__7S7446C4[3]),  3,3},
  {&(_tg__ZTV7S7446C6__7S7446C4[3]),  3,5},
  {&(_tg__ZTV7S7446C7__7S7446C6__7S7446C4[4]),  4,6},
};
extern VTBL_ENTRY _ZTI7S7446C4[];
extern  VTBL_ENTRY _ZTV7S7446C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C4[];
Class_Descriptor cd_S7446C4 = {  "S7446C4", // class name
  bases_S7446C4, 9,
  &(vtc_S7446C4[0]), // expected_vtbl_contents
  &(vtt_S7446C4[0]), // expected_vtt_contents
  ABISELECT(1872,1224), // object size
  NSPAIRA(_ZTI7S7446C4),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7446C4),29, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7446C4),10, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7446C10  : virtual S7446C7 , virtual S7446C6 , virtual S7446C5 , virtual S7446C8 , virtual S7446C2 {
  __tsi64 s7446c10f0;
  long double s7446c10f1;
  ::S7445C11 s7446c10f2[3];
  int s7446c10f3;
  void *s7446c10f4;
  char s7446c10f5;
  int s7446c10f6;
  __tsi64 s7446c10f7;
  virtual  ~S7446C10(); // _ZN8S7446C10D2Ev
  S7446C10(); // tgen
};
//SIG(-1 S7446C10) C1{ VBC2{ v1 v2 FL} VBC3{ VBC2 v3 v4 FC4{ VBC5{ m Fp Fs Fi FD[8] Fi} vd Fi Fp FL:62 Fc:4} Fp} VBC6{ VBC5 FC4[5]} VBC7{ VBC6 BC4 BC2 BC5 vd} VBC4 vd FL FD FU8{ m FL Fp}[3] Fi Fp Fc Fi FL}


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

static void Test_S7446C10()
{
  extern Class_Descriptor cd_S7446C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(116,300)];
    init_test(&cd_S7446C10, buf);
    S7446C10 *dp, &lv = *(dp=new (buf) S7446C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1840,1196), "sizeof(S7446C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7446C10)");
    /*is_ambiguous_... S7446C10::S7446C7 */ AMB_check_base_class_offset(lv, (S7446C7*), ABISELECT(88,72), "S7446C10");
    check_base_class_offset(lv, (S7446C7*)(S7446C6*), ABISELECT(88,72), "S7446C10");
    check_base_class_offset(lv, (S7446C6*), ABISELECT(112,84), "S7446C10");
    check_base_class_offset(lv, (S7445C3*)(S7446C5*), ABISELECT(1408,912), "S7446C10");
    check_base_class_offset(lv, (S7445C3*)(S7446C2*)(S7446C8*), ABISELECT(1408,912), "S7446C10");
    /*is_ambiguous_... S7446C10::S7446C2 */ AMB_check_base_class_offset(lv, (S7445C3*)(S7446C2*), ABISELECT(1408,912), "S7446C10");
    check_base_class_offset(lv, (S7446C5*), ABISELECT(352,228), "S7446C10");
    check_base_class_offset(lv, (S7446C5*)(S7446C8*), ABISELECT(352,228), "S7446C10");
    check_base_class_offset(lv, (S7446C2*)(S7446C8*), ABISELECT(1568,1024), "S7446C10");
    check_base_class_offset(lv, (S7446C7*)(S7446C8*), ABISELECT(1608,1048), "S7446C10");
    /*is_ambiguous_... S7446C8::S7445C3 */ AMB_check_base_class_offset(lv, (S7445C3*)(S7446C8*), ABISELECT(1632,1060), "S7446C10");
    check_base_class_offset(lv, (S7446C8*), ABISELECT(1568,1024), "S7446C10");
    /*is_ambiguous_... S7446C10::S7446C2 */ AMB_check_base_class_offset(lv, (S7446C2*), ABISELECT(1792,1172), "S7446C10");
    check_field_offset(lv, s7446c10f0, ABISELECT(8,4), "S7446C10.s7446c10f0");
    check_field_offset(lv, s7446c10f1, ABISELECT(16,12), "S7446C10.s7446c10f1");
    check_field_offset(lv, s7446c10f2, ABISELECT(32,24), "S7446C10.s7446c10f2");
    check_field_offset(lv, s7446c10f3, ABISELECT(56,48), "S7446C10.s7446c10f3");
    check_field_offset(lv, s7446c10f4, ABISELECT(64,52), "S7446C10.s7446c10f4");
    check_field_offset(lv, s7446c10f5, ABISELECT(72,56), "S7446C10.s7446c10f5");
    check_field_offset(lv, s7446c10f6, ABISELECT(76,60), "S7446C10.s7446c10f6");
    check_field_offset(lv, s7446c10f7, ABISELECT(80,64), "S7446C10.s7446c10f7");
    test_class_info(&lv, &cd_S7446C10);
    dp->~S7446C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7446C10(Test_S7446C10, "S7446C10", ABISELECT(1840,1196));

#else // __cplusplus

extern void _ZN8S7446C10C1Ev();
extern void _ZN8S7446C10D2Ev();
Name_Map name_map_S7446C10[] = {
  NSPAIR(_ZN8S7446C10C1Ev),
  NSPAIR(_ZN8S7446C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7446C7;
extern VTBL_ENTRY _ZTI7S7446C7[];
extern  VTBL_ENTRY _ZTV7S7446C7[];
extern Class_Descriptor cd_S7446C6;
extern VTBL_ENTRY _ZTI7S7446C6[];
extern  VTBL_ENTRY _ZTV7S7446C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C6[];
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
extern Class_Descriptor cd_S7446C5;
extern VTBL_ENTRY _ZTI7S7446C5[];
extern  VTBL_ENTRY _ZTV7S7446C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C5[];
extern Class_Descriptor cd_S7446C2;
extern VTBL_ENTRY _ZTI7S7446C2[];
extern  VTBL_ENTRY _ZTV7S7446C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C2[];
extern Class_Descriptor cd_S7446C7;
extern VTBL_ENTRY _ZTI7S7446C7[];
extern  VTBL_ENTRY _ZTV7S7446C7[];
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
extern Class_Descriptor cd_S7446C8;
extern VTBL_ENTRY _ZTI7S7446C8[];
extern  VTBL_ENTRY _ZTV7S7446C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C8[];
extern Class_Descriptor cd_S7446C2;
extern VTBL_ENTRY _ZTI7S7446C2[];
extern  VTBL_ENTRY _ZTV7S7446C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C2[];
static Base_Class bases_S7446C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7446C7,    ABISELECT(88,72), //bcp->offset
    10, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7446C6,    ABISELECT(112,84), //bcp->offset
    16, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7445C3,    ABISELECT(1408,912), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7446C5,    ABISELECT(352,228), //bcp->offset
    23, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7446C2,    ABISELECT(1568,1024), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7446C7,    ABISELECT(1608,1048), //bcp->offset
    35, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7445C3,    ABISELECT(1632,1060), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7446C8,    ABISELECT(1568,1024), //bcp->offset
    26, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7446C2,    ABISELECT(1792,1172), //bcp->offset
    39, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7446C10[];
extern void _ZN8S7446C10D1Ev();
extern void _ZN8S7446C10D0Ev();
extern void _ZN7S7446C72v5Ev();
extern void _ZN7S7446C72v6Ev();
extern void _ZN7S7446C62v7Ev();
extern void _ZN7S7446C62v8Ev();
extern void ABISELECT(_ZTv0_n40_N8S7446C10D1Ev,_ZTv0_n20_N8S7446C10D1Ev)();
extern void ABISELECT(_ZThn1568_N8S7446C10D1Ev,_ZThn1024_N8S7446C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S7446C10D0Ev,_ZTv0_n20_N8S7446C10D0Ev)();
extern void ABISELECT(_ZThn1568_N8S7446C10D0Ev,_ZThn1024_N8S7446C10D0Ev)() __attribute__((weak));
extern void _ZN7S7446C72v5Ev();
extern void _ZN7S7446C72v6Ev();
extern void ABISELECT(_ZTv0_n32_N8S7446C10D1Ev,_ZTv0_n16_N8S7446C10D1Ev)();
extern void ABISELECT(_ZThn1792_N8S7446C10D1Ev,_ZThn1172_N8S7446C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7446C10D0Ev,_ZTv0_n16_N8S7446C10D0Ev)();
extern void ABISELECT(_ZThn1792_N8S7446C10D0Ev,_ZThn1172_N8S7446C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7446C10[] = {
  ABISELECT(1792,1172),
  ABISELECT(1568,1024),
  ABISELECT(1408,912),
  ABISELECT(352,228),
  ABISELECT(112,84),
  ABISELECT(88,72),
  0,
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
  (VTBL_ENTRY)&_ZN8S7446C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7446C10D0Ev,
  0,
  0,
  ABISELECT(-88,-72),
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
  (VTBL_ENTRY)&_ZN7S7446C72v5Ev,
  (VTBL_ENTRY)&_ZN7S7446C72v6Ev,
  0,
  0,
  ABISELECT(-24,-12),
  ABISELECT(-112,-84),
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
  (VTBL_ENTRY)&_ZN7S7446C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7446C62v8Ev,
  ABISELECT(1056,684),
  ABISELECT(-352,-228),
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
  ABISELECT(40,24),
  ABISELECT(40,24),
  ABISELECT(-1568,-1024),
  ABISELECT(-1216,-796),
  ABISELECT(-160,-112),
  ABISELECT(-1568,-1024),
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7446C10D1Ev,_ZTv0_n20_N8S7446C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7446C10D0Ev,_ZTv0_n20_N8S7446C10D0Ev),
  ABISELECT(-1608,-1048),
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
  (VTBL_ENTRY)&_ZN7S7446C72v5Ev,
  (VTBL_ENTRY)&_ZN7S7446C72v6Ev,
  ABISELECT(-1792,-1172),
  ABISELECT(-384,-260),
  ABISELECT(-1792,-1172),
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7446C10D1Ev,_ZTv0_n16_N8S7446C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7446C10D0Ev,_ZTv0_n16_N8S7446C10D0Ev),
};
extern VTBL_ENTRY _ZTV8S7446C10[];
extern void _ZN7S7446C62v7Ev();
extern void _ZN7S7446C62v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C6__8S7446C10[] = {
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C6[0]),
  (VTBL_ENTRY)&_ZN7S7446C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7446C62v8Ev,
};
extern void _ZN7S7446C72v5Ev();
extern void _ZN7S7446C72v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C7__7S7446C6__8S7446C10[] = {
  0,
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI7S7446C6[0]),
  (VTBL_ENTRY)&_ZN7S7446C72v5Ev,
  (VTBL_ENTRY)&_ZN7S7446C72v6Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7446C5__8S7446C10[] = {
  ABISELECT(1056,684),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C5[0]),
};
extern void _ZN7S7446C8D1Ev();
extern void _ZN7S7446C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C8__8S7446C10[] = {
  ABISELECT(-1216,-796),
  ABISELECT(-160,-112),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C8[0]),
  (VTBL_ENTRY)&_ZN7S7446C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7446C8D0Ev,
};
extern void _ZN7S7446C2D1Ev();
extern void _ZN7S7446C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C27S7446C8__8S7446C10[] = {
  ABISELECT(-160,-112),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C2[0]),
  (VTBL_ENTRY)&_ZN7S7446C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7446C2D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7446C5__7S7446C8__8S7446C10[] = {
  ABISELECT(1056,684),
  ABISELECT(1216,796),
  (VTBL_ENTRY)&(_ZTI7S7446C8[0]),
};
extern void _ZN7S7446C2D1Ev();
extern void _ZN7S7446C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C2__A1__8S7446C10[] = {
  ABISELECT(-384,-260),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C2[0]),
  (VTBL_ENTRY)&_ZN7S7446C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7446C2D0Ev,
};
static  VTT_ENTRY vtt_S7446C10[] = {
  {&(_ZTV8S7446C10[8]),  8,45},
  {&(_ZTV8S7446C10[14]),  14,45},
  {&(_ZTV8S7446C10[21]),  21,45},
  {&(_ZTV8S7446C10[26]),  26,45},
  {&(_ZTV8S7446C10[33]),  33,45},
  {&(_ZTV8S7446C10[37]),  37,45},
  {&(_ZTV8S7446C10[43]),  43,45},
  {&(_tg__ZTV7S7446C6__8S7446C10[3]),  3,5},
  {&(_tg__ZTV7S7446C7__7S7446C6__8S7446C10[4]),  4,6},
  {&(_tg__ZTV7S7446C5__8S7446C10[3]),  3,3},
  {&(_tg__ZTV7S7446C8__8S7446C10[4]),  4,6},
  {&(_tg__ZTV7S7446C27S7446C8__8S7446C10[3]),  3,5},
  {&(_tg__ZTV7S7446C5__7S7446C8__8S7446C10[3]),  3,3},
  {&(_tg__ZTV7S7446C2__A1__8S7446C10[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S7446C10[];
extern  VTBL_ENTRY _ZTV8S7446C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7446C10[];
static VTBL_ENTRY alt_thunk_names104[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7446C10D0Ev,_ZTv0_n16_N8S7446C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1792_N8S7446C10D0Ev,_ZThn1172_N8S7446C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7446C10D1Ev,_ZTv0_n16_N8S7446C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1792_N8S7446C10D1Ev,_ZThn1172_N8S7446C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S7446C10D0Ev,_ZTv0_n20_N8S7446C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1568_N8S7446C10D0Ev,_ZThn1024_N8S7446C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S7446C10D1Ev,_ZTv0_n20_N8S7446C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1568_N8S7446C10D1Ev,_ZThn1024_N8S7446C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7446C10 = {  "S7446C10", // class name
  bases_S7446C10, 9,
  &(vtc_S7446C10[0]), // expected_vtbl_contents
  &(vtt_S7446C10[0]), // expected_vtt_contents
  ABISELECT(1840,1196), // object size
  NSPAIRA(_ZTI8S7446C10),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S7446C10),45, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7446C10),14, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names104,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7446C12  : S7446C2 , S7445C3 , S7446C10 {
  ::S7446C5 s7446c12f0;
  void *s7446c12f1;
  long double s7446c12f2;
  __tsi64 s7446c12f3[9];
  void *s7446c12f4[3];
  void *s7446c12f5;
  int s7446c12f6;
  ::S7445C11 s7446c12f7;
  virtual  ~S7446C12(); // _ZN8S7446C12D2Ev
  virtual void  v10(); // _ZN8S7446C123v10Ev
  S7446C12(); // tgen
};
//SIG(-1 S7446C12) C1{ BC2{ VBC3{ m Fp Fs Fi FD[8] Fi} vd Fi Fp FL:62 Fc:4} BC3 BC4{ VBC5{ v2 v3 FL} VBC6{ VBC5 v4 v5 FC2 Fp} VBC7{ VBC3 FC2[5]} VBC8{ VBC7 BC2 BC5 BC3 vd} VBC2 vd FL FD FU9{ m FL Fp}[3] Fi Fp Fc Fi FL} vd v1 FC7 Fp FD FL[9] Fp[3] Fp Fi FU9}


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

static void Test_S7446C12()
{
  extern Class_Descriptor cd_S7446C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(215,562)];
    init_test(&cd_S7446C12, buf);
    S7446C12 *dp, &lv = *(dp=new (buf) S7446C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(3424,2244), "sizeof(S7446C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7446C12)");
    /*is_ambiguous_... S7446C12::S7446C2 */ AMB_check_base_class_offset(lv, (S7445C3*)(S7446C2*), ABISELECT(1680,1120), "S7446C12");
    check_base_class_offset(lv, (S7445C3*)(S7446C5*), ABISELECT(1680,1120), "S7446C12");
    check_base_class_offset(lv, (S7445C3*)(S7446C2*)(S7446C8*), ABISELECT(1680,1120), "S7446C12");
    /*is_ambiguous_... S7446C12::S7446C2 */ AMB_check_base_class_offset(lv, (S7445C3*)(S7446C2*), ABISELECT(1680,1120), "S7446C12");
    /*is_ambiguous_... S7446C12::S7446C2 */ AMB_check_base_class_offset(lv, (S7446C2*), 0, "S7446C12");
    /*is_ambiguous_... S7446C12::S7445C3 */ AMB_check_base_class_offset(lv, (S7445C3*), ABISELECT(48,24), "S7446C12");
    /*is_ambiguous_... S7446C10::S7446C7 */ AMB_check_base_class_offset(lv, (S7446C7*)(S7446C10*), ABISELECT(1840,1232), "S7446C12");
    check_base_class_offset(lv, (S7446C7*)(S7446C6*), ABISELECT(1840,1232), "S7446C12");
    check_base_class_offset(lv, (S7446C6*)(S7446C10*), ABISELECT(1856,1244), "S7446C12");
    check_base_class_offset(lv, (S7446C5*)(S7446C10*), ABISELECT(2096,1388), "S7446C12");
    check_base_class_offset(lv, (S7446C5*)(S7446C8*), ABISELECT(2096,1388), "S7446C12");
    check_base_class_offset(lv, (S7446C2*)(S7446C8*), ABISELECT(3152,2072), "S7446C12");
    check_base_class_offset(lv, (S7446C7*)(S7446C8*), ABISELECT(3192,2096), "S7446C12");
    /*is_ambiguous_... S7446C8::S7445C3 */ AMB_check_base_class_offset(lv, (S7445C3*)(S7446C8*), ABISELECT(3216,2108), "S7446C12");
    check_base_class_offset(lv, (S7446C8*)(S7446C10*), ABISELECT(3152,2072), "S7446C12");
    /*is_ambiguous_... S7446C10::S7446C2 */ AMB_check_base_class_offset(lv, (S7446C2*)(S7446C10*), ABISELECT(3376,2220), "S7446C12");
    check_base_class_offset(lv, (S7446C10*), ABISELECT(208,136), "S7446C12");
    check_field_offset(lv, s7446c12f0, ABISELECT(304,208), "S7446C12.s7446c12f0");
    check_field_offset(lv, s7446c12f1, ABISELECT(1520,1004), "S7446C12.s7446c12f1");
    check_field_offset(lv, s7446c12f2, ABISELECT(1536,1008), "S7446C12.s7446c12f2");
    check_field_offset(lv, s7446c12f3, ABISELECT(1552,1020), "S7446C12.s7446c12f3");
    check_field_offset(lv, s7446c12f4, ABISELECT(1624,1092), "S7446C12.s7446c12f4");
    check_field_offset(lv, s7446c12f5, ABISELECT(1648,1104), "S7446C12.s7446c12f5");
    check_field_offset(lv, s7446c12f6, ABISELECT(1656,1108), "S7446C12.s7446c12f6");
    check_field_offset(lv, s7446c12f7, ABISELECT(1664,1112), "S7446C12.s7446c12f7");
    test_class_info(&lv, &cd_S7446C12);
    dp->~S7446C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7446C12(Test_S7446C12, "S7446C12", ABISELECT(3424,2244));

#else // __cplusplus

extern void _ZN8S7446C12C1Ev();
extern void _ZN8S7446C12D2Ev();
Name_Map name_map_S7446C12[] = {
  NSPAIR(_ZN8S7446C12C1Ev),
  NSPAIR(_ZN8S7446C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
extern Class_Descriptor cd_S7446C2;
extern VTBL_ENTRY _ZTI7S7446C2[];
extern  VTBL_ENTRY _ZTV7S7446C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C2[];
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
extern Class_Descriptor cd_S7446C7;
extern VTBL_ENTRY _ZTI7S7446C7[];
extern  VTBL_ENTRY _ZTV7S7446C7[];
extern Class_Descriptor cd_S7446C6;
extern VTBL_ENTRY _ZTI7S7446C6[];
extern  VTBL_ENTRY _ZTV7S7446C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C6[];
extern Class_Descriptor cd_S7446C5;
extern VTBL_ENTRY _ZTI7S7446C5[];
extern  VTBL_ENTRY _ZTV7S7446C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C5[];
extern Class_Descriptor cd_S7446C2;
extern VTBL_ENTRY _ZTI7S7446C2[];
extern  VTBL_ENTRY _ZTV7S7446C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C2[];
extern Class_Descriptor cd_S7446C7;
extern VTBL_ENTRY _ZTI7S7446C7[];
extern  VTBL_ENTRY _ZTV7S7446C7[];
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
extern Class_Descriptor cd_S7446C8;
extern VTBL_ENTRY _ZTI7S7446C8[];
extern  VTBL_ENTRY _ZTV7S7446C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C8[];
extern Class_Descriptor cd_S7446C2;
extern VTBL_ENTRY _ZTI7S7446C2[];
extern  VTBL_ENTRY _ZTV7S7446C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C2[];
extern Class_Descriptor cd_S7446C10;
extern VTBL_ENTRY _ZTI8S7446C10[];
extern  VTBL_ENTRY _ZTV8S7446C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7446C10[];
static Base_Class bases_S7446C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7445C3,    ABISELECT(1680,1120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7446C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7445C3,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7446C7,    ABISELECT(1840,1232), //bcp->offset
    21, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7446C6,    ABISELECT(1856,1244), //bcp->offset
    27, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7446C5,    ABISELECT(2096,1388), //bcp->offset
    34, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7446C2,    ABISELECT(3152,2072), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7446C7,    ABISELECT(3192,2096), //bcp->offset
    46, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7445C3,    ABISELECT(3216,2108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7446C8,    ABISELECT(3152,2072), //bcp->offset
    37, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7446C2,    ABISELECT(3376,2220), //bcp->offset
    50, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7446C10,    ABISELECT(208,136), //bcp->offset
    11, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7446C12[];
extern void _ZN8S7446C12D1Ev();
extern void _ZN8S7446C12D0Ev();
extern void _ZN8S7446C123v10Ev();
extern void ABISELECT(_ZThn208_N8S7446C12D1Ev,_ZThn136_N8S7446C12D1Ev)();
extern void ABISELECT(_ZThn208_N8S7446C12D0Ev,_ZThn136_N8S7446C12D0Ev)();
extern void _ZN7S7446C72v5Ev();
extern void _ZN7S7446C72v6Ev();
extern void _ZN7S7446C62v7Ev();
extern void _ZN7S7446C62v8Ev();
extern void ABISELECT(_ZTv0_n40_N8S7446C12D1Ev,_ZTv0_n20_N8S7446C12D1Ev)();
extern void ABISELECT(_ZThn3152_N8S7446C12D1Ev,_ZThn2072_N8S7446C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S7446C12D0Ev,_ZTv0_n20_N8S7446C12D0Ev)();
extern void ABISELECT(_ZThn3152_N8S7446C12D0Ev,_ZThn2072_N8S7446C12D0Ev)() __attribute__((weak));
extern void _ZN7S7446C72v5Ev();
extern void _ZN7S7446C72v6Ev();
extern void ABISELECT(_ZTv0_n32_N8S7446C12D1Ev,_ZTv0_n16_N8S7446C12D1Ev)();
extern void ABISELECT(_ZThn3376_N8S7446C12D1Ev,_ZThn2220_N8S7446C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7446C12D0Ev,_ZTv0_n16_N8S7446C12D0Ev)();
extern void ABISELECT(_ZThn3376_N8S7446C12D0Ev,_ZThn2220_N8S7446C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7446C12[] = {
  ABISELECT(3376,2220),
  ABISELECT(3152,2072),
  ABISELECT(2096,1388),
  ABISELECT(1856,1244),
  ABISELECT(1840,1232),
  ABISELECT(1680,1120),
  0,
  (VTBL_ENTRY)&(_ZTI8S7446C12[0]),
  (VTBL_ENTRY)&_ZN8S7446C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7446C12D0Ev,
  (VTBL_ENTRY)&_ZN8S7446C123v10Ev,
  ABISELECT(3168,2084),
  ABISELECT(2944,1936),
  ABISELECT(1472,984),
  ABISELECT(1888,1252),
  ABISELECT(1648,1108),
  ABISELECT(1632,1096),
  ABISELECT(-208,-136),
  (VTBL_ENTRY)&(_ZTI8S7446C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N8S7446C12D1Ev,_ZThn136_N8S7446C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N8S7446C12D0Ev,_ZThn136_N8S7446C12D0Ev),
  0,
  0,
  ABISELECT(-1840,-1232),
  (VTBL_ENTRY)&(_ZTI8S7446C12[0]),
  (VTBL_ENTRY)&_ZN7S7446C72v5Ev,
  (VTBL_ENTRY)&_ZN7S7446C72v6Ev,
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(-1856,-1244),
  (VTBL_ENTRY)&(_ZTI8S7446C12[0]),
  (VTBL_ENTRY)&_ZN7S7446C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7446C62v8Ev,
  ABISELECT(-416,-268),
  ABISELECT(-2096,-1388),
  (VTBL_ENTRY)&(_ZTI8S7446C12[0]),
  ABISELECT(40,24),
  ABISELECT(40,24),
  ABISELECT(-3152,-2072),
  ABISELECT(-1056,-684),
  ABISELECT(-1472,-952),
  ABISELECT(-3152,-2072),
  (VTBL_ENTRY)&(_ZTI8S7446C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7446C12D1Ev,_ZTv0_n20_N8S7446C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7446C12D0Ev,_ZTv0_n20_N8S7446C12D0Ev),
  ABISELECT(-3192,-2096),
  (VTBL_ENTRY)&(_ZTI8S7446C12[0]),
  (VTBL_ENTRY)&_ZN7S7446C72v5Ev,
  (VTBL_ENTRY)&_ZN7S7446C72v6Ev,
  ABISELECT(-3376,-2220),
  ABISELECT(-1696,-1100),
  ABISELECT(-3376,-2220),
  (VTBL_ENTRY)&(_ZTI8S7446C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7446C12D1Ev,_ZTv0_n16_N8S7446C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7446C12D0Ev,_ZTv0_n16_N8S7446C12D0Ev),
};
extern VTBL_ENTRY _ZTV8S7446C12[];
extern void _ZN7S7446C2D1Ev();
extern void _ZN7S7446C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C2__A__8S7446C12[] = {
  ABISELECT(1680,1120),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C2[0]),
  (VTBL_ENTRY)&_ZN7S7446C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7446C2D0Ev,
};
extern void _ZN8S7446C10D1Ev();
extern void _ZN8S7446C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7446C10__8S7446C12[] = {
  ABISELECT(3168,2084),
  ABISELECT(2944,1936),
  ABISELECT(1472,984),
  ABISELECT(1888,1252),
  ABISELECT(1648,1108),
  ABISELECT(1632,1096),
  0,
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
  (VTBL_ENTRY)&_ZN8S7446C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7446C10D0Ev,
};
extern void _ZN7S7446C72v5Ev();
extern void _ZN7S7446C72v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C7__8S7446C10__8S7446C12[] = {
  0,
  0,
  ABISELECT(-1632,-1096),
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
  (VTBL_ENTRY)&_ZN7S7446C72v5Ev,
  (VTBL_ENTRY)&_ZN7S7446C72v6Ev,
};
extern void _ZN7S7446C62v7Ev();
extern void _ZN7S7446C62v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C6__8S7446C10__8S7446C12[] = {
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(-1648,-1108),
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
  (VTBL_ENTRY)&_ZN7S7446C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7446C62v8Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7446C5__8S7446C10__8S7446C12[] = {
  ABISELECT(-416,-268),
  ABISELECT(-1888,-1252),
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
};
extern void ABISELECT(_ZTv0_n40_N8S7446C10D1Ev,_ZTv0_n20_N8S7446C10D1Ev)();
extern void ABISELECT(_ZThn2944_N8S7446C10D1Ev,_ZThn1936_N8S7446C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S7446C10D0Ev,_ZTv0_n20_N8S7446C10D0Ev)();
extern void ABISELECT(_ZThn2944_N8S7446C10D0Ev,_ZThn1936_N8S7446C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7446C8__8S7446C10__8S7446C12[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  ABISELECT(-2944,-1936),
  ABISELECT(-1056,-684),
  ABISELECT(-1472,-952),
  ABISELECT(-2944,-1936),
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7446C10D1Ev,_ZTv0_n20_N8S7446C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7446C10D0Ev,_ZTv0_n20_N8S7446C10D0Ev),
};
extern void _ZN7S7446C72v5Ev();
extern void _ZN7S7446C72v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C77S7446C8__A1__8S7446C10__8S7446C12[] = {
  ABISELECT(-2984,-1960),
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
  (VTBL_ENTRY)&_ZN7S7446C72v5Ev,
  (VTBL_ENTRY)&_ZN7S7446C72v6Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S7446C10D1Ev,_ZTv0_n16_N8S7446C10D1Ev)();
extern void ABISELECT(_ZThn3168_N8S7446C10D1Ev,_ZThn2084_N8S7446C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7446C10D0Ev,_ZTv0_n16_N8S7446C10D0Ev)();
extern void ABISELECT(_ZThn3168_N8S7446C10D0Ev,_ZThn2084_N8S7446C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7446C2__A1__8S7446C10__8S7446C12[] = {
  ABISELECT(-3168,-2084),
  ABISELECT(-1696,-1100),
  ABISELECT(-3168,-2084),
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7446C10D1Ev,_ZTv0_n16_N8S7446C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7446C10D0Ev,_ZTv0_n16_N8S7446C10D0Ev),
};
extern void _ZN7S7446C62v7Ev();
extern void _ZN7S7446C62v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C6__8S7446C12[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C6[0]),
  (VTBL_ENTRY)&_ZN7S7446C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7446C62v8Ev,
};
extern void _ZN7S7446C72v5Ev();
extern void _ZN7S7446C72v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C7__7S7446C6__8S7446C12[] = {
  0,
  0,
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7446C6[0]),
  (VTBL_ENTRY)&_ZN7S7446C72v5Ev,
  (VTBL_ENTRY)&_ZN7S7446C72v6Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7446C5__8S7446C12[] = {
  ABISELECT(-416,-268),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C5[0]),
};
extern void _ZN7S7446C8D1Ev();
extern void _ZN7S7446C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C8__8S7446C12[] = {
  ABISELECT(-1056,-684),
  ABISELECT(-1472,-952),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C8[0]),
  (VTBL_ENTRY)&_ZN7S7446C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7446C8D0Ev,
};
extern void _ZN7S7446C2D1Ev();
extern void _ZN7S7446C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C27S7446C8__A1__8S7446C12[] = {
  ABISELECT(-1472,-952),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C2[0]),
  (VTBL_ENTRY)&_ZN7S7446C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7446C2D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7446C5__7S7446C8__8S7446C12[] = {
  ABISELECT(-416,-268),
  ABISELECT(1056,684),
  (VTBL_ENTRY)&(_ZTI7S7446C8[0]),
};
extern void _ZN7S7446C2D1Ev();
extern void _ZN7S7446C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C2__A2__8S7446C12[] = {
  ABISELECT(-1696,-1100),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C2[0]),
  (VTBL_ENTRY)&_ZN7S7446C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7446C2D0Ev,
};
static  VTT_ENTRY vtt_S7446C12[] = {
  {&(_ZTV8S7446C12[8]),  8,56},
  {&(_tg__ZTV7S7446C2__A__8S7446C12[3]),  3,5},
  {&(_tg__ZTV8S7446C10__8S7446C12[8]),  8,10},
  {&(_tg__ZTV7S7446C7__8S7446C10__8S7446C12[4]),  4,6},
  {&(_tg__ZTV7S7446C6__8S7446C10__8S7446C12[5]),  5,7},
  {&(_tg__ZTV7S7446C5__8S7446C10__8S7446C12[3]),  3,3},
  {&(_tg__ZTV7S7446C8__8S7446C10__8S7446C12[7]),  7,9},
  {&(_tg__ZTV7S7446C77S7446C8__A1__8S7446C10__8S7446C12[2]),  2,4},
  {&(_tg__ZTV7S7446C2__A1__8S7446C10__8S7446C12[4]),  4,6},
  {&(_ZTV8S7446C12[19]),  19,56},
  {&(_ZTV8S7446C12[25]),  25,56},
  {&(_ZTV8S7446C12[32]),  32,56},
  {&(_ZTV8S7446C12[37]),  37,56},
  {&(_ZTV8S7446C12[44]),  44,56},
  {&(_ZTV8S7446C12[48]),  48,56},
  {&(_ZTV8S7446C12[54]),  54,56},
  {&(_tg__ZTV7S7446C6__8S7446C12[3]),  3,5},
  {&(_tg__ZTV7S7446C7__7S7446C6__8S7446C12[4]),  4,6},
  {&(_tg__ZTV7S7446C5__8S7446C12[3]),  3,3},
  {&(_tg__ZTV7S7446C8__8S7446C12[4]),  4,6},
  {&(_tg__ZTV7S7446C27S7446C8__A1__8S7446C12[3]),  3,5},
  {&(_tg__ZTV7S7446C5__7S7446C8__8S7446C12[3]),  3,3},
  {&(_tg__ZTV7S7446C2__A2__8S7446C12[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S7446C12[];
extern  VTBL_ENTRY _ZTV8S7446C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7446C12[];
static VTBL_ENTRY alt_thunk_names105[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7446C10D0Ev,_ZTv0_n16_N8S7446C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3168_N8S7446C10D0Ev,_ZThn2084_N8S7446C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7446C10D1Ev,_ZTv0_n16_N8S7446C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3168_N8S7446C10D1Ev,_ZThn2084_N8S7446C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S7446C10D0Ev,_ZTv0_n20_N8S7446C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2944_N8S7446C10D0Ev,_ZThn1936_N8S7446C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S7446C10D1Ev,_ZTv0_n20_N8S7446C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2944_N8S7446C10D1Ev,_ZThn1936_N8S7446C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7446C12D0Ev,_ZTv0_n16_N8S7446C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3376_N8S7446C12D0Ev,_ZThn2220_N8S7446C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7446C12D1Ev,_ZTv0_n16_N8S7446C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3376_N8S7446C12D1Ev,_ZThn2220_N8S7446C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S7446C12D0Ev,_ZTv0_n20_N8S7446C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3152_N8S7446C12D0Ev,_ZThn2072_N8S7446C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S7446C12D1Ev,_ZTv0_n20_N8S7446C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3152_N8S7446C12D1Ev,_ZThn2072_N8S7446C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7446C12 = {  "S7446C12", // class name
  bases_S7446C12, 12,
  &(vtc_S7446C12[0]), // expected_vtbl_contents
  &(vtt_S7446C12[0]), // expected_vtt_contents
  ABISELECT(3424,2244), // object size
  NSPAIRA(_ZTI8S7446C12),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7446C12),56, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7446C12),23, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names105,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7446C9  : virtual S7446C6 , virtual S7446C8 , virtual S7446C10 , virtual S7446C12 {
  ::S20291C14_nt s7446c9f0;
  int s7446c9f1;
  int s7446c9f2[8];
  __tsi64 s7446c9f3;
  virtual  ~S7446C9(); // _ZN7S7446C9D2Ev
  virtual void  v11(); // _ZN7S7446C93v11Ev
  S7446C9(); // tgen
};
//SIG(-1 S7446C9) C1{ VBC2{ VBC3{ v2 v3 FL} v4 v5 FC4{ VBC5{ m Fp Fs Fi FD[8] Fi} vd Fi Fp FL:62 Fc:4} Fp} VBC6{ VBC7{ VBC5 FC4[5]} BC4 BC3 BC5 vd} VBC8{ VBC3 VBC2 VBC7 VBC6 VBC4 vd FL FD FU9{ m FL Fp}[3] Fi Fp Fc Fi FL} VBC10{ BC4 BC5 BC8 vd v6 FC7 Fp FD FL[9] Fp[3] Fp Fi FU9} vd v1 FC11{} Fi Fi[8] FL}


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

static void Test_S7446C9()
{
  extern Class_Descriptor cd_S7446C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(224,593)];
    init_test(&cd_S7446C9, buf);
    S7446C9 *dp, &lv = *(dp=new (buf) S7446C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(3568,2368), "sizeof(S7446C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7446C9)");
    check_base_class_offset(lv, (S7446C7*)(S7446C6*), ABISELECT(296,196), "S7446C9");
    /*is_ambiguous_... S7446C9::S7446C10 */ AMB_check_base_class_offset(lv, (S7446C7*)(S7446C10*), ABISELECT(296,196), "S7446C9");
    /*is_ambiguous_... S7446C10::S7446C7 */ AMB_check_base_class_offset(lv, (S7446C7*)(S7446C10*)(S7446C12*), ABISELECT(296,196), "S7446C9");
    check_base_class_offset(lv, (S7446C6*), ABISELECT(64,52), "S7446C9");
    /*is_ambiguous_... S7446C9::S7446C10 */ AMB_check_base_class_offset(lv, (S7446C6*)(S7446C10*), ABISELECT(64,52), "S7446C9");
    check_base_class_offset(lv, (S7446C6*)(S7446C10*)(S7446C12*), ABISELECT(64,52), "S7446C9");
    check_base_class_offset(lv, (S7445C3*)(S7446C5*), ABISELECT(1600,1040), "S7446C9");
    check_base_class_offset(lv, (S7445C3*)(S7446C2*)(S7446C8*), ABISELECT(1600,1040), "S7446C9");
    /*is_ambiguous_... S7446C9::S7446C2 */ AMB_check_base_class_offset(lv, (S7445C3*)(S7446C2*), ABISELECT(1600,1040), "S7446C9");
    /*is_ambiguous_... S7446C12::S7446C2 */ AMB_check_base_class_offset(lv, (S7445C3*)(S7446C2*)(S7446C12*), ABISELECT(1600,1040), "S7446C9");
    check_base_class_offset(lv, (S7446C5*)(S7446C8*), ABISELECT(544,356), "S7446C9");
    /*is_ambiguous_... S7446C9::S7446C10 */ AMB_check_base_class_offset(lv, (S7446C5*)(S7446C10*), ABISELECT(544,356), "S7446C9");
    check_base_class_offset(lv, (S7446C5*)(S7446C10*)(S7446C12*), ABISELECT(544,356), "S7446C9");
    check_base_class_offset(lv, (S7446C2*)(S7446C8*), ABISELECT(320,208), "S7446C9");
    check_base_class_offset(lv, (S7446C7*)(S7446C8*), ABISELECT(360,232), "S7446C9");
    /*is_ambiguous_... S7446C8::S7445C3 */ AMB_check_base_class_offset(lv, (S7445C3*)(S7446C8*), ABISELECT(384,244), "S7446C9");
    check_base_class_offset(lv, (S7446C8*), ABISELECT(320,208), "S7446C9");
    /*is_ambiguous_... S7446C9::S7446C10 */ AMB_check_base_class_offset(lv, (S7446C8*)(S7446C10*), ABISELECT(320,208), "S7446C9");
    check_base_class_offset(lv, (S7446C8*)(S7446C10*)(S7446C12*), ABISELECT(320,208), "S7446C9");
    /*is_ambiguous_... S7446C9::S7446C10 */ AMB_check_base_class_offset(lv, (S7446C2*)(S7446C10*), ABISELECT(1848,1224), "S7446C9");
    /*is_ambiguous_... S7446C10::S7446C2 */ AMB_check_base_class_offset(lv, (S7446C2*)(S7446C10*)(S7446C12*), ABISELECT(1848,1224), "S7446C9");
    /*is_ambiguous_... S7446C9::S7446C10 */ AMB_check_base_class_offset(lv, (S7446C10*), ABISELECT(1760,1152), "S7446C9");
    /*is_ambiguous_... S7446C12::S7446C2 */ AMB_check_base_class_offset(lv, (S7446C2*)(S7446C12*), ABISELECT(1888,1248), "S7446C9");
    /*is_ambiguous_... S7446C12::S7445C3 */ AMB_check_base_class_offset(lv, (S7445C3*)(S7446C12*), ABISELECT(1936,1272), "S7446C9");
    check_base_class_offset(lv, (S7446C10*)(S7446C12*), ABISELECT(2096,1384), "S7446C9");
    check_base_class_offset(lv, (S7446C12*), ABISELECT(1888,1248), "S7446C9");
    check_field_offset(lv, s7446c9f0, ABISELECT(8,4), "S7446C9.s7446c9f0");
    check_field_offset(lv, s7446c9f1, ABISELECT(12,8), "S7446C9.s7446c9f1");
    check_field_offset(lv, s7446c9f2, ABISELECT(16,12), "S7446C9.s7446c9f2");
    check_field_offset(lv, s7446c9f3, ABISELECT(48,44), "S7446C9.s7446c9f3");
    test_class_info(&lv, &cd_S7446C9);
    dp->~S7446C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7446C9(Test_S7446C9, "S7446C9", ABISELECT(3568,2368));

#else // __cplusplus

extern void _ZN7S7446C9C1Ev();
extern void _ZN7S7446C9D2Ev();
Name_Map name_map_S7446C9[] = {
  NSPAIR(_ZN7S7446C9C1Ev),
  NSPAIR(_ZN7S7446C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7446C7;
extern VTBL_ENTRY _ZTI7S7446C7[];
extern  VTBL_ENTRY _ZTV7S7446C7[];
extern Class_Descriptor cd_S7446C6;
extern VTBL_ENTRY _ZTI7S7446C6[];
extern  VTBL_ENTRY _ZTV7S7446C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C6[];
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
extern Class_Descriptor cd_S7446C5;
extern VTBL_ENTRY _ZTI7S7446C5[];
extern  VTBL_ENTRY _ZTV7S7446C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C5[];
extern Class_Descriptor cd_S7446C2;
extern VTBL_ENTRY _ZTI7S7446C2[];
extern  VTBL_ENTRY _ZTV7S7446C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C2[];
extern Class_Descriptor cd_S7446C7;
extern VTBL_ENTRY _ZTI7S7446C7[];
extern  VTBL_ENTRY _ZTV7S7446C7[];
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
extern Class_Descriptor cd_S7446C8;
extern VTBL_ENTRY _ZTI7S7446C8[];
extern  VTBL_ENTRY _ZTV7S7446C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C8[];
extern Class_Descriptor cd_S7446C2;
extern VTBL_ENTRY _ZTI7S7446C2[];
extern  VTBL_ENTRY _ZTV7S7446C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C2[];
extern Class_Descriptor cd_S7446C10;
extern VTBL_ENTRY _ZTI8S7446C10[];
extern  VTBL_ENTRY _ZTV8S7446C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7446C10[];
extern Class_Descriptor cd_S7446C2;
extern VTBL_ENTRY _ZTI7S7446C2[];
extern  VTBL_ENTRY _ZTV7S7446C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C2[];
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
extern Class_Descriptor cd_S7446C10;
extern VTBL_ENTRY _ZTI8S7446C10[];
extern  VTBL_ENTRY _ZTV8S7446C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7446C10[];
extern Class_Descriptor cd_S7446C12;
extern VTBL_ENTRY _ZTI8S7446C12[];
extern  VTBL_ENTRY _ZTV8S7446C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7446C12[];
static Base_Class bases_S7446C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7446C7,    ABISELECT(296,196), //bcp->offset
    20, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7446C6,    ABISELECT(64,52), //bcp->offset
    13, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7445C3,    ABISELECT(1600,1040), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7446C5,    ABISELECT(544,356), //bcp->offset
    39, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S7446C2,    ABISELECT(320,208), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7446C7,    ABISELECT(360,232), //bcp->offset
    35, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7445C3,    ABISELECT(384,244), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7446C8,    ABISELECT(320,208), //bcp->offset
    26, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7446C2,    ABISELECT(1848,1224), //bcp->offset
    53, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7446C10,    ABISELECT(1760,1152), //bcp->offset
    42, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7446C2,    ABISELECT(1888,1248), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7445C3,    ABISELECT(1936,1272), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7446C10,    ABISELECT(2096,1384), //bcp->offset
    72, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7446C12,    ABISELECT(1888,1248), //bcp->offset
    59, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7446C9[];
extern void _ZN7S7446C9D1Ev();
extern void _ZN7S7446C9D0Ev();
extern void _ZN7S7446C93v11Ev();
extern void _ZN7S7446C62v7Ev();
extern void _ZN7S7446C62v8Ev();
extern void _ZN7S7446C72v5Ev();
extern void _ZN7S7446C72v6Ev();
extern void ABISELECT(_ZTv0_n40_N7S7446C9D1Ev,_ZTv0_n20_N7S7446C9D1Ev)();
extern void ABISELECT(_ZThn320_N7S7446C9D1Ev,_ZThn208_N7S7446C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7446C9D0Ev,_ZTv0_n20_N7S7446C9D0Ev)();
extern void ABISELECT(_ZThn320_N7S7446C9D0Ev,_ZThn208_N7S7446C9D0Ev)() __attribute__((weak));
extern void _ZN7S7446C72v5Ev();
extern void _ZN7S7446C72v6Ev();
extern void ABISELECT(_ZTv0_n72_N7S7446C9D1Ev,_ZTv0_n36_N7S7446C9D1Ev)();
extern void ABISELECT(_ZThn1760_N7S7446C9D1Ev,_ZThn1152_N7S7446C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7446C9D0Ev,_ZTv0_n36_N7S7446C9D0Ev)();
extern void ABISELECT(_ZThn1760_N7S7446C9D0Ev,_ZThn1152_N7S7446C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7446C9D1Ev,_ZTv0_n16_N7S7446C9D1Ev)();
extern void ABISELECT(_ZThn1848_N7S7446C9D1Ev,_ZThn1224_N7S7446C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7446C9D0Ev,_ZTv0_n16_N7S7446C9D0Ev)();
extern void ABISELECT(_ZThn1848_N7S7446C9D0Ev,_ZThn1224_N7S7446C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7446C9D1Ev,_ZTv0_n36_N7S7446C9D1Ev)();
extern void ABISELECT(_ZThn1888_N7S7446C9D1Ev,_ZThn1248_N7S7446C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7446C9D0Ev,_ZTv0_n36_N7S7446C9D0Ev)();
extern void ABISELECT(_ZThn1888_N7S7446C9D0Ev,_ZThn1248_N7S7446C9D0Ev)() __attribute__((weak));
extern void _ZN8S7446C123v10Ev();
extern void ABISELECT(_ZTvn208_n72_N7S7446C9D1Ev,_ZTvn136_n36_N7S7446C9D1Ev)();
extern void ABISELECT(_ZTvn208_n72_N7S7446C9D0Ev,_ZTvn136_n36_N7S7446C9D0Ev)();
static  VTBL_ENTRY vtc_S7446C9[] = {
  ABISELECT(1888,1248),
  ABISELECT(1848,1224),
  ABISELECT(1760,1152),
  ABISELECT(1600,1040),
  ABISELECT(544,356),
  ABISELECT(320,208),
  ABISELECT(296,196),
  ABISELECT(64,52),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C9[0]),
  (VTBL_ENTRY)&_ZN7S7446C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7446C9D0Ev,
  (VTBL_ENTRY)&_ZN7S7446C93v11Ev,
  0,
  0,
  ABISELECT(232,144),
  ABISELECT(-64,-52),
  (VTBL_ENTRY)&(_ZTI7S7446C9[0]),
  (VTBL_ENTRY)&_ZN7S7446C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7446C62v8Ev,
  0,
  0,
  ABISELECT(-296,-196),
  (VTBL_ENTRY)&(_ZTI7S7446C9[0]),
  (VTBL_ENTRY)&_ZN7S7446C72v5Ev,
  (VTBL_ENTRY)&_ZN7S7446C72v6Ev,
  ABISELECT(40,24),
  ABISELECT(40,24),
  ABISELECT(-320,-208),
  ABISELECT(224,148),
  ABISELECT(1280,832),
  ABISELECT(-320,-208),
  (VTBL_ENTRY)&(_ZTI7S7446C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7446C9D1Ev,_ZTv0_n20_N7S7446C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7446C9D0Ev,_ZTv0_n20_N7S7446C9D0Ev),
  ABISELECT(-360,-232),
  (VTBL_ENTRY)&(_ZTI7S7446C9[0]),
  (VTBL_ENTRY)&_ZN7S7446C72v5Ev,
  (VTBL_ENTRY)&_ZN7S7446C72v6Ev,
  ABISELECT(1056,684),
  ABISELECT(-544,-356),
  (VTBL_ENTRY)&(_ZTI7S7446C9[0]),
  ABISELECT(-1760,-1152),
  ABISELECT(88,72),
  ABISELECT(-1440,-944),
  ABISELECT(-160,-112),
  ABISELECT(-1216,-796),
  ABISELECT(-1696,-1100),
  ABISELECT(-1464,-956),
  ABISELECT(-1760,-1152),
  (VTBL_ENTRY)&(_ZTI7S7446C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7446C9D1Ev,_ZTv0_n36_N7S7446C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7446C9D0Ev,_ZTv0_n36_N7S7446C9D0Ev),
  ABISELECT(-1848,-1224),
  ABISELECT(-248,-184),
  ABISELECT(-1848,-1224),
  (VTBL_ENTRY)&(_ZTI7S7446C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7446C9D1Ev,_ZTv0_n16_N7S7446C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7446C9D0Ev,_ZTv0_n16_N7S7446C9D0Ev),
  0,
  ABISELECT(-1888,-1248),
  ABISELECT(-40,-24),
  ABISELECT(-1568,-1040),
  ABISELECT(-1344,-892),
  ABISELECT(-1824,-1196),
  ABISELECT(-1592,-1052),
  ABISELECT(-288,-208),
  ABISELECT(-1888,-1248),
  (VTBL_ENTRY)&(_ZTI7S7446C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7446C9D1Ev,_ZTv0_n36_N7S7446C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7446C9D0Ev,_ZTv0_n36_N7S7446C9D0Ev),
  (VTBL_ENTRY)&_ZN8S7446C123v10Ev,
  ABISELECT(-248,-160),
  ABISELECT(-1776,-1176),
  ABISELECT(-496,-344),
  ABISELECT(-1552,-1028),
  ABISELECT(-2032,-1332),
  ABISELECT(-1800,-1188),
  ABISELECT(-2096,-1384),
  (VTBL_ENTRY)&(_ZTI7S7446C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n72_N7S7446C9D1Ev,_ZTvn136_n36_N7S7446C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n72_N7S7446C9D0Ev,_ZTvn136_n36_N7S7446C9D0Ev),
};
extern VTBL_ENTRY _ZTV7S7446C9[];
extern void _ZN7S7446C62v7Ev();
extern void _ZN7S7446C62v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C6__7S7446C9[] = {
  ABISELECT(232,144),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C6[0]),
  (VTBL_ENTRY)&_ZN7S7446C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7446C62v8Ev,
};
extern void _ZN7S7446C72v5Ev();
extern void _ZN7S7446C72v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C7__7S7446C6__7S7446C9[] = {
  0,
  0,
  ABISELECT(-232,-144),
  (VTBL_ENTRY)&(_ZTI7S7446C6[0]),
  (VTBL_ENTRY)&_ZN7S7446C72v5Ev,
  (VTBL_ENTRY)&_ZN7S7446C72v6Ev,
};
extern void _ZN7S7446C8D1Ev();
extern void _ZN7S7446C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C8__7S7446C9[] = {
  ABISELECT(224,148),
  ABISELECT(1280,832),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C8[0]),
  (VTBL_ENTRY)&_ZN7S7446C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7446C8D0Ev,
};
extern void _ZN7S7446C2D1Ev();
extern void _ZN7S7446C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C27S7446C8__7S7446C9[] = {
  ABISELECT(1280,832),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C2[0]),
  (VTBL_ENTRY)&_ZN7S7446C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7446C2D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7446C5__7S7446C8__7S7446C9[] = {
  ABISELECT(1056,684),
  ABISELECT(-224,-148),
  (VTBL_ENTRY)&(_ZTI7S7446C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7446C5__7S7446C9[] = {
  ABISELECT(1056,684),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C5[0]),
};
extern void _ZN8S7446C10D1Ev();
extern void _ZN8S7446C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7446C10__7S7446C9[] = {
  ABISELECT(88,72),
  ABISELECT(-1440,-944),
  ABISELECT(-160,-112),
  ABISELECT(-1216,-796),
  ABISELECT(-1696,-1100),
  ABISELECT(-1464,-956),
  0,
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
  (VTBL_ENTRY)&_ZN8S7446C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7446C10D0Ev,
};
extern void _ZN7S7446C72v5Ev();
extern void _ZN7S7446C72v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C7__8S7446C10__7S7446C9[] = {
  0,
  0,
  ABISELECT(1464,956),
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
  (VTBL_ENTRY)&_ZN7S7446C72v5Ev,
  (VTBL_ENTRY)&_ZN7S7446C72v6Ev,
};
extern void _ZN7S7446C62v7Ev();
extern void _ZN7S7446C62v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C6__8S7446C10__7S7446C9[] = {
  0,
  0,
  ABISELECT(232,144),
  ABISELECT(1696,1100),
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
  (VTBL_ENTRY)&_ZN7S7446C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7446C62v8Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7446C5__8S7446C10__7S7446C9[] = {
  ABISELECT(1056,684),
  ABISELECT(1216,796),
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
};
extern void ABISELECT(_ZTv0_n40_N8S7446C10D1Ev,_ZTv0_n20_N8S7446C10D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S7446C10D0Ev,_ZTv0_n20_N8S7446C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7446C8__8S7446C10__7S7446C9[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  ABISELECT(1440,944),
  ABISELECT(224,148),
  ABISELECT(1280,832),
  ABISELECT(1440,944),
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7446C10D1Ev,_ZTv0_n20_N8S7446C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7446C10D0Ev,_ZTv0_n20_N8S7446C10D0Ev),
};
extern void _ZN7S7446C72v5Ev();
extern void _ZN7S7446C72v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C77S7446C8__A1__8S7446C10__7S7446C9[] = {
  ABISELECT(1400,920),
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
  (VTBL_ENTRY)&_ZN7S7446C72v5Ev,
  (VTBL_ENTRY)&_ZN7S7446C72v6Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S7446C10D1Ev,_ZTv0_n16_N8S7446C10D1Ev)();
extern void ABISELECT(_ZThn88_N8S7446C10D1Ev,_ZThn72_N8S7446C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7446C10D0Ev,_ZTv0_n16_N8S7446C10D0Ev)();
extern void ABISELECT(_ZThn88_N8S7446C10D0Ev,_ZThn72_N8S7446C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7446C2__A1__8S7446C10__7S7446C9[] = {
  ABISELECT(-88,-72),
  ABISELECT(-248,-184),
  ABISELECT(-88,-72),
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7446C10D1Ev,_ZTv0_n16_N8S7446C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7446C10D0Ev,_ZTv0_n16_N8S7446C10D0Ev),
};
extern void _ZN7S7446C2D1Ev();
extern void _ZN7S7446C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C2__A1__7S7446C9[] = {
  ABISELECT(-248,-184),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C2[0]),
  (VTBL_ENTRY)&_ZN7S7446C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7446C2D0Ev,
};
extern void _ZN8S7446C12D1Ev();
extern void _ZN8S7446C12D0Ev();
extern void _ZN8S7446C123v10Ev();
static  VTBL_ENTRY _tg__ZTV8S7446C12__7S7446C9[] = {
  ABISELECT(-40,-24),
  ABISELECT(-1568,-1040),
  ABISELECT(-1344,-892),
  ABISELECT(-1824,-1196),
  ABISELECT(-1592,-1052),
  ABISELECT(-288,-208),
  0,
  (VTBL_ENTRY)&(_ZTI8S7446C12[0]),
  (VTBL_ENTRY)&_ZN8S7446C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7446C12D0Ev,
  (VTBL_ENTRY)&_ZN8S7446C123v10Ev,
};
extern void _ZN7S7446C2D1Ev();
extern void _ZN7S7446C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C28S7446C12__A2__7S7446C9[] = {
  ABISELECT(-288,-208),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C2[0]),
  (VTBL_ENTRY)&_ZN7S7446C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7446C2D0Ev,
};
extern void _ZN8S7446C10D1Ev();
extern void _ZN8S7446C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7446C108S7446C12__A1__7S7446C9[] = {
  ABISELECT(-248,-160),
  ABISELECT(-1776,-1176),
  ABISELECT(-496,-344),
  ABISELECT(-1552,-1028),
  ABISELECT(-2032,-1332),
  ABISELECT(-1800,-1188),
  0,
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
  (VTBL_ENTRY)&_ZN8S7446C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7446C10D0Ev,
};
extern void _ZN7S7446C72v5Ev();
extern void _ZN7S7446C72v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C7__8S7446C108S7446C12__A1__7S7446C9[] = {
  0,
  0,
  ABISELECT(1800,1188),
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
  (VTBL_ENTRY)&_ZN7S7446C72v5Ev,
  (VTBL_ENTRY)&_ZN7S7446C72v6Ev,
};
extern void _ZN7S7446C62v7Ev();
extern void _ZN7S7446C62v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C6__8S7446C108S7446C12__A1__7S7446C9[] = {
  0,
  0,
  ABISELECT(232,144),
  ABISELECT(2032,1332),
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
  (VTBL_ENTRY)&_ZN7S7446C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7446C62v8Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7446C5__8S7446C108S7446C12__A1__7S7446C9[] = {
  ABISELECT(1056,684),
  ABISELECT(1552,1028),
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
};
extern void ABISELECT(_ZTv0_n40_N8S7446C10D1Ev,_ZTv0_n20_N8S7446C10D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S7446C10D0Ev,_ZTv0_n20_N8S7446C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7446C8__8S7446C108S7446C12__A1__7S7446C9[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  ABISELECT(1776,1176),
  ABISELECT(224,148),
  ABISELECT(1280,832),
  ABISELECT(1776,1176),
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7446C10D1Ev,_ZTv0_n20_N8S7446C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7446C10D0Ev,_ZTv0_n20_N8S7446C10D0Ev),
};
extern void _ZN7S7446C72v5Ev();
extern void _ZN7S7446C72v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C77S7446C8__A1__8S7446C108S7446C12__A1__7S7446C9[] = {
  ABISELECT(1736,1152),
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
  (VTBL_ENTRY)&_ZN7S7446C72v5Ev,
  (VTBL_ENTRY)&_ZN7S7446C72v6Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S7446C10D1Ev,_ZTv0_n16_N8S7446C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7446C10D0Ev,_ZTv0_n16_N8S7446C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7446C2__A1__8S7446C108S7446C12__A1__7S7446C9[] = {
  ABISELECT(248,160),
  ABISELECT(-248,-184),
  ABISELECT(248,160),
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7446C10D1Ev,_ZTv0_n16_N8S7446C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7446C10D0Ev,_ZTv0_n16_N8S7446C10D0Ev),
};
extern void ABISELECT(_ZThn208_N8S7446C12D1Ev,_ZThn136_N8S7446C12D1Ev)();
extern void ABISELECT(_ZThn208_N8S7446C12D0Ev,_ZThn136_N8S7446C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7446C10__8S7446C12__7S7446C9[] = {
  ABISELECT(-248,-160),
  ABISELECT(-1776,-1176),
  ABISELECT(-496,-344),
  ABISELECT(-1552,-1028),
  ABISELECT(-2032,-1332),
  ABISELECT(-1800,-1188),
  ABISELECT(-208,-136),
  (VTBL_ENTRY)&(_ZTI8S7446C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N8S7446C12D1Ev,_ZThn136_N8S7446C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N8S7446C12D0Ev,_ZThn136_N8S7446C12D0Ev),
};
extern void _ZN7S7446C72v5Ev();
extern void _ZN7S7446C72v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C7__8S7446C12__7S7446C9[] = {
  0,
  0,
  ABISELECT(1592,1052),
  (VTBL_ENTRY)&(_ZTI8S7446C12[0]),
  (VTBL_ENTRY)&_ZN7S7446C72v5Ev,
  (VTBL_ENTRY)&_ZN7S7446C72v6Ev,
};
extern void _ZN7S7446C62v7Ev();
extern void _ZN7S7446C62v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C6__8S7446C12__7S7446C9[] = {
  0,
  0,
  ABISELECT(232,144),
  ABISELECT(1824,1196),
  (VTBL_ENTRY)&(_ZTI8S7446C12[0]),
  (VTBL_ENTRY)&_ZN7S7446C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7446C62v8Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7446C5__8S7446C12__7S7446C9[] = {
  ABISELECT(1056,684),
  ABISELECT(1344,892),
  (VTBL_ENTRY)&(_ZTI8S7446C12[0]),
};
extern void ABISELECT(_ZTv0_n40_N8S7446C12D1Ev,_ZTv0_n20_N8S7446C12D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S7446C12D0Ev,_ZTv0_n20_N8S7446C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7446C8__8S7446C12__7S7446C9[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  ABISELECT(1568,1040),
  ABISELECT(224,148),
  ABISELECT(1280,832),
  ABISELECT(1568,1040),
  (VTBL_ENTRY)&(_ZTI8S7446C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7446C12D1Ev,_ZTv0_n20_N8S7446C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7446C12D0Ev,_ZTv0_n20_N8S7446C12D0Ev),
};
extern void _ZN7S7446C72v5Ev();
extern void _ZN7S7446C72v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C77S7446C8__A1__8S7446C12__7S7446C9[] = {
  ABISELECT(1528,1016),
  (VTBL_ENTRY)&(_ZTI8S7446C12[0]),
  (VTBL_ENTRY)&_ZN7S7446C72v5Ev,
  (VTBL_ENTRY)&_ZN7S7446C72v6Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S7446C12D1Ev,_ZTv0_n16_N8S7446C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7446C12D0Ev,_ZTv0_n16_N8S7446C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7446C2__A2__8S7446C12__7S7446C9[] = {
  ABISELECT(40,24),
  ABISELECT(-248,-184),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S7446C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7446C12D1Ev,_ZTv0_n16_N8S7446C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7446C12D0Ev,_ZTv0_n16_N8S7446C12D0Ev),
};
static  VTT_ENTRY vtt_S7446C9[] = {
  {&(_ZTV7S7446C9[10]),  10,82},
  {&(_ZTV7S7446C9[18]),  18,82},
  {&(_ZTV7S7446C9[24]),  24,82},
  {&(_ZTV7S7446C9[33]),  33,82},
  {&(_ZTV7S7446C9[42]),  42,82},
  {&(_ZTV7S7446C9[37]),  37,82},
  {&(_ZTV7S7446C9[51]),  51,82},
  {&(_ZTV7S7446C9[57]),  57,82},
  {&(_ZTV7S7446C9[69]),  69,82},
  {&(_ZTV7S7446C9[80]),  80,82},
  {&(_tg__ZTV7S7446C6__7S7446C9[3]),  3,5},
  {&(_tg__ZTV7S7446C7__7S7446C6__7S7446C9[4]),  4,6},
  {&(_tg__ZTV7S7446C8__7S7446C9[4]),  4,6},
  {&(_tg__ZTV7S7446C27S7446C8__7S7446C9[3]),  3,5},
  {&(_tg__ZTV7S7446C5__7S7446C8__7S7446C9[3]),  3,3},
  {&(_tg__ZTV7S7446C5__7S7446C9[3]),  3,3},
  {&(_tg__ZTV8S7446C10__7S7446C9[8]),  8,10},
  {&(_tg__ZTV7S7446C7__8S7446C10__7S7446C9[4]),  4,6},
  {&(_tg__ZTV7S7446C6__8S7446C10__7S7446C9[5]),  5,7},
  {&(_tg__ZTV7S7446C5__8S7446C10__7S7446C9[3]),  3,3},
  {&(_tg__ZTV7S7446C8__8S7446C10__7S7446C9[7]),  7,9},
  {&(_tg__ZTV7S7446C77S7446C8__A1__8S7446C10__7S7446C9[2]),  2,4},
  {&(_tg__ZTV7S7446C2__A1__8S7446C10__7S7446C9[4]),  4,6},
  {&(_tg__ZTV7S7446C2__A1__7S7446C9[3]),  3,5},
  {&(_tg__ZTV8S7446C12__7S7446C9[8]),  8,11},
  {&(_tg__ZTV7S7446C28S7446C12__A2__7S7446C9[3]),  3,5},
  {&(_tg__ZTV8S7446C108S7446C12__A1__7S7446C9[8]),  8,10},
  {&(_tg__ZTV7S7446C7__8S7446C108S7446C12__A1__7S7446C9[4]),  4,6},
  {&(_tg__ZTV7S7446C6__8S7446C108S7446C12__A1__7S7446C9[5]),  5,7},
  {&(_tg__ZTV7S7446C5__8S7446C108S7446C12__A1__7S7446C9[3]),  3,3},
  {&(_tg__ZTV7S7446C8__8S7446C108S7446C12__A1__7S7446C9[7]),  7,9},
  {&(_tg__ZTV7S7446C77S7446C8__A1__8S7446C108S7446C12__A1__7S7446C9[2]),  2,4},
  {&(_tg__ZTV7S7446C2__A1__8S7446C108S7446C12__A1__7S7446C9[4]),  4,6},
  {&(_tg__ZTV8S7446C10__8S7446C12__7S7446C9[8]),  8,10},
  {&(_tg__ZTV7S7446C7__8S7446C12__7S7446C9[4]),  4,6},
  {&(_tg__ZTV7S7446C6__8S7446C12__7S7446C9[5]),  5,7},
  {&(_tg__ZTV7S7446C5__8S7446C12__7S7446C9[3]),  3,3},
  {&(_tg__ZTV7S7446C8__8S7446C12__7S7446C9[7]),  7,9},
  {&(_tg__ZTV7S7446C77S7446C8__A1__8S7446C12__7S7446C9[2]),  2,4},
  {&(_tg__ZTV7S7446C2__A2__8S7446C12__7S7446C9[4]),  4,6},
};
extern VTBL_ENTRY _ZTI7S7446C9[];
extern  VTBL_ENTRY _ZTV7S7446C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C9[];
static VTBL_ENTRY alt_thunk_names106[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7446C10D0Ev,_ZTv0_n16_N8S7446C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7446C10D0Ev,_ZThn72_N8S7446C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7446C10D1Ev,_ZTv0_n16_N8S7446C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7446C10D1Ev,_ZThn72_N8S7446C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7446C9D0Ev,_ZTv0_n16_N7S7446C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1848_N7S7446C9D0Ev,_ZThn1224_N7S7446C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7446C9D1Ev,_ZTv0_n16_N7S7446C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1848_N7S7446C9D1Ev,_ZThn1224_N7S7446C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7446C9D0Ev,_ZTv0_n36_N7S7446C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1888_N7S7446C9D0Ev,_ZThn1248_N7S7446C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1760_N7S7446C9D0Ev,_ZThn1152_N7S7446C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7446C9D1Ev,_ZTv0_n36_N7S7446C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1888_N7S7446C9D1Ev,_ZThn1248_N7S7446C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1760_N7S7446C9D1Ev,_ZThn1152_N7S7446C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7446C9D0Ev,_ZTv0_n20_N7S7446C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N7S7446C9D0Ev,_ZThn208_N7S7446C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7446C9D1Ev,_ZTv0_n20_N7S7446C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N7S7446C9D1Ev,_ZThn208_N7S7446C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7446C9 = {  "S7446C9", // class name
  bases_S7446C9, 14,
  &(vtc_S7446C9[0]), // expected_vtbl_contents
  &(vtt_S7446C9[0]), // expected_vtt_contents
  ABISELECT(3568,2368), // object size
  NSPAIRA(_ZTI7S7446C9),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7446C9),82, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7446C9),40, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names106,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7446C1  : S7446C2 , virtual S7446C4 , virtual S7446C8 , S7446C9 {
  __tsi64 s7446c1f0;
  __tsi64 s7446c1f1;
  void *s7446c1f2;
  virtual void  v1(); // _ZN7S7446C12v1Ev
  virtual void  v2(); // _ZN7S7446C12v2Ev
  virtual void  v3(); // _ZN7S7446C12v3Ev
  virtual void  v4(); // _ZN7S7446C12v4Ev
  ~S7446C1(); // tgen
  S7446C1(); // tgen
};
//SIG(1 S7446C1) C1{ BC2{ VBC3{ m Fp Fs Fi FD[8] Fi} vd Fi Fp FL:62 Fc:4} VBC4{ BC3 VBC5{ VBC3 FC2[5]} VBC6{ VBC7{ v5 v6 FL} v7 v8 FC2 Fp} BC8{ VBC5 BC2 BC7 BC3 vd} vd v9 Fi FL} VBC8 BC9{ VBC6 VBC8 VBC10{ VBC7 VBC6 VBC5 VBC8 VBC2 vd FL FD FU11{ m FL Fp}[3] Fi Fp Fc Fi FL} VBC12{ BC2 BC3 BC10 vd v10 FC5 Fp FD FL[9] Fp[3] Fp Fi FU11} vd v11 FC13{} Fi Fi[8] FL} v1 v2 v3 v4 FL FL Fp}


void  S7446C1 ::v1(){vfunc_called(this, "_ZN7S7446C12v1Ev");}
void  S7446C1 ::v2(){vfunc_called(this, "_ZN7S7446C12v2Ev");}
void  S7446C1 ::v3(){vfunc_called(this, "_ZN7S7446C12v3Ev");}
void  S7446C1 ::v4(){vfunc_called(this, "_ZN7S7446C12v4Ev");}
S7446C1 ::~S7446C1(){ note_dtor("S7446C1", this);} // tgen
S7446C1 ::S7446C1(){ note_ctor("S7446C1", this);} // tgen

static void Test_S7446C1()
{
  extern Class_Descriptor cd_S7446C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(253,672)];
    init_test(&cd_S7446C1, buf);
    S7446C1 *dp, &lv = *(dp=new (buf) S7446C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(4032,2684), "sizeof(S7446C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7446C1)");
    /*is_ambiguous_... S7446C1::S7446C2 */ AMB_check_base_class_offset(lv, (S7445C3*)(S7446C2*), ABISELECT(128,96), "S7446C1");
    check_base_class_offset(lv, (S7445C3*)(S7446C5*), ABISELECT(128,96), "S7446C1");
    check_base_class_offset(lv, (S7445C3*)(S7446C2*)(S7446C8*)(S7446C4*), ABISELECT(128,96), "S7446C1");
    /*is_ambiguous_... S7446C1::S7446C8 */ AMB_check_base_class_offset(lv, (S7445C3*)(S7446C2*)(S7446C8*), ABISELECT(128,96), "S7446C1");
    /*is_ambiguous_... S7446C1::S7446C2 */ AMB_check_base_class_offset(lv, (S7445C3*)(S7446C2*), ABISELECT(128,96), "S7446C1");
    /*is_ambiguous_... S7446C12::S7446C2 */ AMB_check_base_class_offset(lv, (S7445C3*)(S7446C2*)(S7446C12*), ABISELECT(128,96), "S7446C1");
    /*is_ambiguous_... S7446C1::S7446C2 */ AMB_check_base_class_offset(lv, (S7446C2*), 0, "S7446C1");
    /*is_ambiguous_... S7446C4::S7445C3 */ AMB_check_base_class_offset(lv, (S7445C3*)(S7446C4*), ABISELECT(512,356), "S7446C1");
    check_base_class_offset(lv, (S7446C5*)(S7446C4*), ABISELECT(688,480), "S7446C1");
    check_base_class_offset(lv, (S7446C5*)(S7446C8*)(S7446C4*), ABISELECT(688,480), "S7446C1");
    /*is_ambiguous_... S7446C1::S7446C8 */ AMB_check_base_class_offset(lv, (S7446C5*)(S7446C8*), ABISELECT(688,480), "S7446C1");
    /*is_ambiguous_... S7446C1::S7446C10 */ AMB_check_base_class_offset(lv, (S7446C5*)(S7446C10*), ABISELECT(688,480), "S7446C1");
    check_base_class_offset(lv, (S7446C5*)(S7446C10*)(S7446C12*), ABISELECT(688,480), "S7446C1");
    check_base_class_offset(lv, (S7446C7*)(S7446C6*), ABISELECT(1976,1308), "S7446C1");
    /*is_ambiguous_... S7446C1::S7446C10 */ AMB_check_base_class_offset(lv, (S7446C7*)(S7446C10*), ABISELECT(1976,1308), "S7446C1");
    /*is_ambiguous_... S7446C10::S7446C7 */ AMB_check_base_class_offset(lv, (S7446C7*)(S7446C10*)(S7446C12*), ABISELECT(1976,1308), "S7446C1");
    check_base_class_offset(lv, (S7446C6*)(S7446C4*), ABISELECT(1744,1164), "S7446C1");
    check_base_class_offset(lv, (S7446C6*)(S7446C9*), ABISELECT(1744,1164), "S7446C1");
    /*is_ambiguous_... S7446C1::S7446C10 */ AMB_check_base_class_offset(lv, (S7446C6*)(S7446C10*), ABISELECT(1744,1164), "S7446C1");
    check_base_class_offset(lv, (S7446C6*)(S7446C10*)(S7446C12*), ABISELECT(1744,1164), "S7446C1");
    check_base_class_offset(lv, (S7446C2*)(S7446C8*)(S7446C4*), ABISELECT(288,208), "S7446C1");
    check_base_class_offset(lv, (S7446C7*)(S7446C8*)(S7446C4*), ABISELECT(328,232), "S7446C1");
    /*is_ambiguous_... S7446C8::S7445C3 */ AMB_check_base_class_offset(lv, (S7445C3*)(S7446C8*)(S7446C4*), ABISELECT(352,244), "S7446C1");
    check_base_class_offset(lv, (S7446C8*)(S7446C4*), ABISELECT(288,208), "S7446C1");
    check_base_class_offset(lv, (S7446C4*), ABISELECT(288,208), "S7446C1");
    /*is_ambiguous_... S7446C1::S7446C8 */ AMB_check_base_class_offset(lv, (S7446C2*)(S7446C8*), ABISELECT(2000,1320), "S7446C1");
    /*is_ambiguous_... S7446C1::S7446C8 */ AMB_check_base_class_offset(lv, (S7446C7*)(S7446C8*), ABISELECT(2040,1344), "S7446C1");
    /*is_ambiguous_... S7446C1::S7446C8 */ AMB_check_base_class_offset(lv, (S7445C3*)(S7446C8*), ABISELECT(2064,1356), "S7446C1");
    /*is_ambiguous_... S7446C1::S7446C8 */ AMB_check_base_class_offset(lv, (S7446C8*), ABISELECT(2000,1320), "S7446C1");
    check_base_class_offset(lv, (S7446C8*)(S7446C9*), ABISELECT(2000,1320), "S7446C1");
    /*is_ambiguous_... S7446C1::S7446C10 */ AMB_check_base_class_offset(lv, (S7446C8*)(S7446C10*), ABISELECT(2000,1320), "S7446C1");
    check_base_class_offset(lv, (S7446C8*)(S7446C10*)(S7446C12*), ABISELECT(2000,1320), "S7446C1");
    /*is_ambiguous_... S7446C1::S7446C10 */ AMB_check_base_class_offset(lv, (S7446C2*)(S7446C10*), ABISELECT(2312,1540), "S7446C1");
    /*is_ambiguous_... S7446C10::S7446C2 */ AMB_check_base_class_offset(lv, (S7446C2*)(S7446C10*)(S7446C12*), ABISELECT(2312,1540), "S7446C1");
    /*is_ambiguous_... S7446C9::S7446C10 */ AMB_check_base_class_offset(lv, (S7446C10*)(S7446C9*), ABISELECT(2224,1468), "S7446C1");
    /*is_ambiguous_... S7446C12::S7446C2 */ AMB_check_base_class_offset(lv, (S7446C2*)(S7446C12*), ABISELECT(2352,1564), "S7446C1");
    /*is_ambiguous_... S7446C12::S7445C3 */ AMB_check_base_class_offset(lv, (S7445C3*)(S7446C12*), ABISELECT(2400,1588), "S7446C1");
    check_base_class_offset(lv, (S7446C10*)(S7446C12*), ABISELECT(2560,1700), "S7446C1");
    check_base_class_offset(lv, (S7446C12*)(S7446C9*), ABISELECT(2352,1564), "S7446C1");
    check_base_class_offset(lv, (S7446C9*), ABISELECT(40,24), "S7446C1");
    check_field_offset(lv, s7446c1f0, ABISELECT(96,76), "S7446C1.s7446c1f0");
    check_field_offset(lv, s7446c1f1, ABISELECT(104,84), "S7446C1.s7446c1f1");
    check_field_offset(lv, s7446c1f2, ABISELECT(112,92), "S7446C1.s7446c1f2");
    test_class_info(&lv, &cd_S7446C1);
    dp->~S7446C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7446C1(Test_S7446C1, "S7446C1", ABISELECT(4032,2684));

#else // __cplusplus

extern void _ZN7S7446C1C1Ev();
extern void _ZN7S7446C1D1Ev();
Name_Map name_map_S7446C1[] = {
  NSPAIR(_ZN7S7446C1C1Ev),
  NSPAIR(_ZN7S7446C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
extern Class_Descriptor cd_S7446C2;
extern VTBL_ENTRY _ZTI7S7446C2[];
extern  VTBL_ENTRY _ZTV7S7446C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C2[];
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
extern Class_Descriptor cd_S7446C5;
extern VTBL_ENTRY _ZTI7S7446C5[];
extern  VTBL_ENTRY _ZTV7S7446C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C5[];
extern Class_Descriptor cd_S7446C7;
extern VTBL_ENTRY _ZTI7S7446C7[];
extern  VTBL_ENTRY _ZTV7S7446C7[];
extern Class_Descriptor cd_S7446C6;
extern VTBL_ENTRY _ZTI7S7446C6[];
extern  VTBL_ENTRY _ZTV7S7446C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C6[];
extern Class_Descriptor cd_S7446C2;
extern VTBL_ENTRY _ZTI7S7446C2[];
extern  VTBL_ENTRY _ZTV7S7446C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C2[];
extern Class_Descriptor cd_S7446C7;
extern VTBL_ENTRY _ZTI7S7446C7[];
extern  VTBL_ENTRY _ZTV7S7446C7[];
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
extern Class_Descriptor cd_S7446C8;
extern VTBL_ENTRY _ZTI7S7446C8[];
extern  VTBL_ENTRY _ZTV7S7446C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C8[];
extern Class_Descriptor cd_S7446C4;
extern VTBL_ENTRY _ZTI7S7446C4[];
extern  VTBL_ENTRY _ZTV7S7446C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C4[];
extern Class_Descriptor cd_S7446C2;
extern VTBL_ENTRY _ZTI7S7446C2[];
extern  VTBL_ENTRY _ZTV7S7446C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C2[];
extern Class_Descriptor cd_S7446C7;
extern VTBL_ENTRY _ZTI7S7446C7[];
extern  VTBL_ENTRY _ZTV7S7446C7[];
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
extern Class_Descriptor cd_S7446C8;
extern VTBL_ENTRY _ZTI7S7446C8[];
extern  VTBL_ENTRY _ZTV7S7446C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C8[];
extern Class_Descriptor cd_S7446C2;
extern VTBL_ENTRY _ZTI7S7446C2[];
extern  VTBL_ENTRY _ZTV7S7446C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C2[];
extern Class_Descriptor cd_S7446C10;
extern VTBL_ENTRY _ZTI8S7446C10[];
extern  VTBL_ENTRY _ZTV8S7446C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7446C10[];
extern Class_Descriptor cd_S7446C2;
extern VTBL_ENTRY _ZTI7S7446C2[];
extern  VTBL_ENTRY _ZTV7S7446C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C2[];
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
extern Class_Descriptor cd_S7446C10;
extern VTBL_ENTRY _ZTI8S7446C10[];
extern  VTBL_ENTRY _ZTV8S7446C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7446C10[];
extern Class_Descriptor cd_S7446C12;
extern VTBL_ENTRY _ZTI8S7446C12[];
extern  VTBL_ENTRY _ZTV8S7446C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7446C12[];
extern Class_Descriptor cd_S7446C9;
extern VTBL_ENTRY _ZTI7S7446C9[];
extern  VTBL_ENTRY _ZTV7S7446C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C9[];
static Base_Class bases_S7446C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7445C3,    ABISELECT(128,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7446C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7445C3,    ABISELECT(512,356), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7446C5,    ABISELECT(688,480), //bcp->offset
    47, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7446C7,    ABISELECT(1976,1308), //bcp->offset
    57, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7446C6,    ABISELECT(1744,1164), //bcp->offset
    50, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S7446C2,    ABISELECT(288,208), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7446C7,    ABISELECT(328,232), //bcp->offset
    43, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7445C3,    ABISELECT(352,244), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7446C8,    ABISELECT(288,208), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7446C4,    ABISELECT(288,208), //bcp->offset
    30, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7446C2,    ABISELECT(2000,1320), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7446C7,    ABISELECT(2040,1344), //bcp->offset
    72, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7445C3,    ABISELECT(2064,1356), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7446C8,    ABISELECT(2000,1320), //bcp->offset
    63, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7446C2,    ABISELECT(2312,1540), //bcp->offset
    87, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S7446C10,    ABISELECT(2224,1468), //bcp->offset
    76, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S7446C2,    ABISELECT(2352,1564), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7445C3,    ABISELECT(2400,1588), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7446C10,    ABISELECT(2560,1700), //bcp->offset
    106, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7446C12,    ABISELECT(2352,1564), //bcp->offset
    93, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S7446C9,    ABISELECT(40,24), //bcp->offset
    17, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7446C1[];
extern void _ZN7S7446C1D1Ev();
extern void _ZN7S7446C1D0Ev();
extern void _ZN7S7446C12v1Ev();
extern void _ZN7S7446C12v2Ev();
extern void _ZN7S7446C12v3Ev();
extern void _ZN7S7446C12v4Ev();
extern void ABISELECT(_ZThn40_N7S7446C1D1Ev,_ZThn24_N7S7446C1D1Ev)();
extern void ABISELECT(_ZThn40_N7S7446C1D0Ev,_ZThn24_N7S7446C1D0Ev)();
extern void _ZN7S7446C93v11Ev();
extern void ABISELECT(_ZTv0_n56_N7S7446C1D1Ev,_ZTv0_n28_N7S7446C1D1Ev)();
extern void ABISELECT(_ZThn288_N7S7446C1D1Ev,_ZThn208_N7S7446C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7446C1D0Ev,_ZTv0_n28_N7S7446C1D0Ev)();
extern void ABISELECT(_ZThn288_N7S7446C1D0Ev,_ZThn208_N7S7446C1D0Ev)() __attribute__((weak));
extern void _ZN7S7446C42v9Ev();
extern void _ZN7S7446C72v5Ev();
extern void _ZN7S7446C72v6Ev();
extern void _ZN7S7446C62v7Ev();
extern void _ZN7S7446C62v8Ev();
extern void _ZN7S7446C72v5Ev();
extern void _ZN7S7446C72v6Ev();
extern void ABISELECT(_ZTv0_n40_N7S7446C1D1Ev,_ZTv0_n20_N7S7446C1D1Ev)();
extern void ABISELECT(_ZThn2000_N7S7446C1D1Ev,_ZThn1320_N7S7446C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7446C1D0Ev,_ZTv0_n20_N7S7446C1D0Ev)();
extern void ABISELECT(_ZThn2000_N7S7446C1D0Ev,_ZThn1320_N7S7446C1D0Ev)() __attribute__((weak));
extern void _ZN7S7446C72v5Ev();
extern void _ZN7S7446C72v6Ev();
extern void ABISELECT(_ZTv0_n72_N7S7446C1D1Ev,_ZTv0_n36_N7S7446C1D1Ev)();
extern void ABISELECT(_ZThn2224_N7S7446C1D1Ev,_ZThn1468_N7S7446C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7446C1D0Ev,_ZTv0_n36_N7S7446C1D0Ev)();
extern void ABISELECT(_ZThn2224_N7S7446C1D0Ev,_ZThn1468_N7S7446C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7446C1D1Ev,_ZTv0_n16_N7S7446C1D1Ev)();
extern void ABISELECT(_ZThn2312_N7S7446C1D1Ev,_ZThn1540_N7S7446C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7446C1D0Ev,_ZTv0_n16_N7S7446C1D0Ev)();
extern void ABISELECT(_ZThn2312_N7S7446C1D0Ev,_ZThn1540_N7S7446C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7446C1D1Ev,_ZTv0_n36_N7S7446C1D1Ev)();
extern void ABISELECT(_ZThn2352_N7S7446C1D1Ev,_ZThn1564_N7S7446C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7446C1D0Ev,_ZTv0_n36_N7S7446C1D0Ev)();
extern void ABISELECT(_ZThn2352_N7S7446C1D0Ev,_ZThn1564_N7S7446C1D0Ev)() __attribute__((weak));
extern void _ZN8S7446C123v10Ev();
extern void ABISELECT(_ZTvn208_n72_N7S7446C1D1Ev,_ZTvn136_n36_N7S7446C1D1Ev)();
extern void ABISELECT(_ZTvn208_n72_N7S7446C1D0Ev,_ZTvn136_n36_N7S7446C1D0Ev)();
static  VTBL_ENTRY vtc_S7446C1[] = {
  ABISELECT(2352,1564),
  ABISELECT(2312,1540),
  ABISELECT(2224,1468),
  ABISELECT(2000,1320),
  ABISELECT(1976,1308),
  ABISELECT(1744,1164),
  ABISELECT(688,480),
  ABISELECT(288,208),
  ABISELECT(128,96),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C1[0]),
  (VTBL_ENTRY)&_ZN7S7446C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7446C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7446C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7446C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7446C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7446C12v4Ev,
  ABISELECT(2312,1540),
  ABISELECT(2272,1516),
  ABISELECT(2184,1444),
  ABISELECT(88,72),
  ABISELECT(648,456),
  ABISELECT(1960,1296),
  ABISELECT(1936,1284),
  ABISELECT(1704,1140),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7446C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S7446C1D1Ev,_ZThn24_N7S7446C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S7446C1D0Ev,_ZThn24_N7S7446C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7446C93v11Ev,
  0,
  ABISELECT(40,24),
  ABISELECT(40,24),
  ABISELECT(-288,-208),
  ABISELECT(1688,1100),
  ABISELECT(1456,956),
  ABISELECT(400,272),
  ABISELECT(-160,-112),
  ABISELECT(-288,-208),
  (VTBL_ENTRY)&(_ZTI7S7446C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7446C1D1Ev,_ZTv0_n28_N7S7446C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7446C1D0Ev,_ZTv0_n28_N7S7446C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7446C42v9Ev,
  ABISELECT(-328,-232),
  (VTBL_ENTRY)&(_ZTI7S7446C1[0]),
  (VTBL_ENTRY)&_ZN7S7446C72v5Ev,
  (VTBL_ENTRY)&_ZN7S7446C72v6Ev,
  ABISELECT(-560,-384),
  ABISELECT(-688,-480),
  (VTBL_ENTRY)&(_ZTI7S7446C1[0]),
  0,
  0,
  ABISELECT(232,144),
  ABISELECT(-1744,-1164),
  (VTBL_ENTRY)&(_ZTI7S7446C1[0]),
  (VTBL_ENTRY)&_ZN7S7446C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7446C62v8Ev,
  0,
  0,
  ABISELECT(-1976,-1308),
  (VTBL_ENTRY)&(_ZTI7S7446C1[0]),
  (VTBL_ENTRY)&_ZN7S7446C72v5Ev,
  (VTBL_ENTRY)&_ZN7S7446C72v6Ev,
  ABISELECT(40,24),
  ABISELECT(40,24),
  ABISELECT(-2000,-1320),
  ABISELECT(-1312,-840),
  ABISELECT(-1872,-1224),
  ABISELECT(-2000,-1320),
  (VTBL_ENTRY)&(_ZTI7S7446C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7446C1D1Ev,_ZTv0_n20_N7S7446C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7446C1D0Ev,_ZTv0_n20_N7S7446C1D0Ev),
  ABISELECT(-2040,-1344),
  (VTBL_ENTRY)&(_ZTI7S7446C1[0]),
  (VTBL_ENTRY)&_ZN7S7446C72v5Ev,
  (VTBL_ENTRY)&_ZN7S7446C72v6Ev,
  ABISELECT(-2224,-1468),
  ABISELECT(88,72),
  ABISELECT(-224,-148),
  ABISELECT(-2096,-1372),
  ABISELECT(-1536,-988),
  ABISELECT(-480,-304),
  ABISELECT(-248,-160),
  ABISELECT(-2224,-1468),
  (VTBL_ENTRY)&(_ZTI7S7446C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7446C1D1Ev,_ZTv0_n36_N7S7446C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7446C1D0Ev,_ZTv0_n36_N7S7446C1D0Ev),
  ABISELECT(-2312,-1540),
  ABISELECT(-2184,-1444),
  ABISELECT(-2312,-1540),
  (VTBL_ENTRY)&(_ZTI7S7446C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7446C1D1Ev,_ZTv0_n16_N7S7446C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7446C1D0Ev,_ZTv0_n16_N7S7446C1D0Ev),
  0,
  ABISELECT(-2352,-1564),
  ABISELECT(-40,-24),
  ABISELECT(-352,-244),
  ABISELECT(-1664,-1084),
  ABISELECT(-608,-400),
  ABISELECT(-376,-256),
  ABISELECT(-2224,-1468),
  ABISELECT(-2352,-1564),
  (VTBL_ENTRY)&(_ZTI7S7446C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7446C1D1Ev,_ZTv0_n36_N7S7446C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7446C1D0Ev,_ZTv0_n36_N7S7446C1D0Ev),
  (VTBL_ENTRY)&_ZN8S7446C123v10Ev,
  ABISELECT(-248,-160),
  ABISELECT(-560,-380),
  ABISELECT(-2432,-1604),
  ABISELECT(-1872,-1220),
  ABISELECT(-816,-536),
  ABISELECT(-584,-392),
  ABISELECT(-2560,-1700),
  (VTBL_ENTRY)&(_ZTI7S7446C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n72_N7S7446C1D1Ev,_ZTvn136_n36_N7S7446C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n72_N7S7446C1D0Ev,_ZTvn136_n36_N7S7446C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S7446C1[];
extern void _ZN7S7446C2D1Ev();
extern void _ZN7S7446C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C2__A__7S7446C1[] = {
  ABISELECT(128,96),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C2[0]),
  (VTBL_ENTRY)&_ZN7S7446C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7446C2D0Ev,
};
extern void _ZN7S7446C9D1Ev();
extern void _ZN7S7446C9D0Ev();
extern void _ZN7S7446C93v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C9__7S7446C1[] = {
  ABISELECT(2312,1540),
  ABISELECT(2272,1516),
  ABISELECT(2184,1444),
  ABISELECT(88,72),
  ABISELECT(648,456),
  ABISELECT(1960,1296),
  ABISELECT(1936,1284),
  ABISELECT(1704,1140),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C9[0]),
  (VTBL_ENTRY)&_ZN7S7446C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7446C9D0Ev,
  (VTBL_ENTRY)&_ZN7S7446C93v11Ev,
};
extern void _ZN7S7446C62v7Ev();
extern void _ZN7S7446C62v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C6__7S7446C9__7S7446C1[] = {
  0,
  0,
  ABISELECT(232,144),
  ABISELECT(-1704,-1140),
  (VTBL_ENTRY)&(_ZTI7S7446C9[0]),
  (VTBL_ENTRY)&_ZN7S7446C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7446C62v8Ev,
};
extern void _ZN7S7446C72v5Ev();
extern void _ZN7S7446C72v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C7__7S7446C9__7S7446C1[] = {
  0,
  0,
  ABISELECT(-1936,-1284),
  (VTBL_ENTRY)&(_ZTI7S7446C9[0]),
  (VTBL_ENTRY)&_ZN7S7446C72v5Ev,
  (VTBL_ENTRY)&_ZN7S7446C72v6Ev,
};
extern void ABISELECT(_ZTv0_n40_N7S7446C9D1Ev,_ZTv0_n20_N7S7446C9D1Ev)();
extern void ABISELECT(_ZThn1960_N7S7446C9D1Ev,_ZThn1296_N7S7446C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7446C9D0Ev,_ZTv0_n20_N7S7446C9D0Ev)();
extern void ABISELECT(_ZThn1960_N7S7446C9D0Ev,_ZThn1296_N7S7446C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7446C8__7S7446C9__7S7446C1[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  ABISELECT(-1960,-1296),
  ABISELECT(-1312,-840),
  ABISELECT(-1872,-1224),
  ABISELECT(-1960,-1296),
  (VTBL_ENTRY)&(_ZTI7S7446C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7446C9D1Ev,_ZTv0_n20_N7S7446C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7446C9D0Ev,_ZTv0_n20_N7S7446C9D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7446C5__7S7446C9__7S7446C1[] = {
  ABISELECT(-560,-384),
  ABISELECT(-648,-456),
  (VTBL_ENTRY)&(_ZTI7S7446C9[0]),
};
extern void _ZN7S7446C72v5Ev();
extern void _ZN7S7446C72v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C77S7446C8__A1__7S7446C9__7S7446C1[] = {
  ABISELECT(-2000,-1320),
  (VTBL_ENTRY)&(_ZTI7S7446C9[0]),
  (VTBL_ENTRY)&_ZN7S7446C72v5Ev,
  (VTBL_ENTRY)&_ZN7S7446C72v6Ev,
};
extern void ABISELECT(_ZTv0_n72_N7S7446C9D1Ev,_ZTv0_n36_N7S7446C9D1Ev)();
extern void ABISELECT(_ZThn2184_N7S7446C9D1Ev,_ZThn1444_N7S7446C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7446C9D0Ev,_ZTv0_n36_N7S7446C9D0Ev)();
extern void ABISELECT(_ZThn2184_N7S7446C9D0Ev,_ZThn1444_N7S7446C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7446C10__7S7446C9__7S7446C1[] = {
  ABISELECT(-2184,-1444),
  ABISELECT(88,72),
  ABISELECT(-224,-148),
  ABISELECT(-2096,-1372),
  ABISELECT(-1536,-988),
  ABISELECT(-480,-304),
  ABISELECT(-248,-160),
  ABISELECT(-2184,-1444),
  (VTBL_ENTRY)&(_ZTI7S7446C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7446C9D1Ev,_ZTv0_n36_N7S7446C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7446C9D0Ev,_ZTv0_n36_N7S7446C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7446C9D1Ev,_ZTv0_n16_N7S7446C9D1Ev)();
extern void ABISELECT(_ZThn2272_N7S7446C9D1Ev,_ZThn1516_N7S7446C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7446C9D0Ev,_ZTv0_n16_N7S7446C9D0Ev)();
extern void ABISELECT(_ZThn2272_N7S7446C9D0Ev,_ZThn1516_N7S7446C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7446C2__A1__7S7446C9__7S7446C1[] = {
  ABISELECT(-2272,-1516),
  ABISELECT(-2184,-1444),
  ABISELECT(-2272,-1516),
  (VTBL_ENTRY)&(_ZTI7S7446C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7446C9D1Ev,_ZTv0_n16_N7S7446C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7446C9D0Ev,_ZTv0_n16_N7S7446C9D0Ev),
};
extern void ABISELECT(_ZTv0_n72_N7S7446C9D1Ev,_ZTv0_n36_N7S7446C9D1Ev)();
extern void ABISELECT(_ZThn2312_N7S7446C9D1Ev,_ZThn1540_N7S7446C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7446C9D0Ev,_ZTv0_n36_N7S7446C9D0Ev)();
extern void ABISELECT(_ZThn2312_N7S7446C9D0Ev,_ZThn1540_N7S7446C9D0Ev)() __attribute__((weak));
extern void _ZN8S7446C123v10Ev();
static  VTBL_ENTRY _tg__ZTV8S7446C12__7S7446C9__7S7446C1[] = {
  0,
  ABISELECT(-2312,-1540),
  ABISELECT(-40,-24),
  ABISELECT(-352,-244),
  ABISELECT(-1664,-1084),
  ABISELECT(-608,-400),
  ABISELECT(-376,-256),
  ABISELECT(-2224,-1468),
  ABISELECT(-2312,-1540),
  (VTBL_ENTRY)&(_ZTI7S7446C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7446C9D1Ev,_ZTv0_n36_N7S7446C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7446C9D0Ev,_ZTv0_n36_N7S7446C9D0Ev),
  (VTBL_ENTRY)&_ZN8S7446C123v10Ev,
};
extern void ABISELECT(_ZTvn208_n72_N7S7446C9D1Ev,_ZTvn136_n36_N7S7446C9D1Ev)();
extern void ABISELECT(_ZTvn208_n72_N7S7446C9D0Ev,_ZTvn136_n36_N7S7446C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7446C108S7446C12__A1__7S7446C9__7S7446C1[] = {
  ABISELECT(-248,-160),
  ABISELECT(-560,-380),
  ABISELECT(-2432,-1604),
  ABISELECT(-1872,-1220),
  ABISELECT(-816,-536),
  ABISELECT(-584,-392),
  ABISELECT(-2520,-1676),
  (VTBL_ENTRY)&(_ZTI7S7446C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n72_N7S7446C9D1Ev,_ZTvn136_n36_N7S7446C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n72_N7S7446C9D0Ev,_ZTvn136_n36_N7S7446C9D0Ev),
};
extern void _ZN7S7446C4D1Ev();
extern void _ZN7S7446C4D0Ev();
extern void _ZN7S7446C42v9Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C4__7S7446C1[] = {
  ABISELECT(1688,1100),
  ABISELECT(1456,956),
  ABISELECT(400,272),
  ABISELECT(-160,-112),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C4[0]),
  (VTBL_ENTRY)&_ZN7S7446C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7446C4D0Ev,
  (VTBL_ENTRY)&_ZN7S7446C42v9Ev,
};
extern void _ZN7S7446C8D1Ev();
extern void _ZN7S7446C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C87S7446C4__7S7446C1[] = {
  ABISELECT(400,272),
  ABISELECT(-160,-112),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C8[0]),
  (VTBL_ENTRY)&_ZN7S7446C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7446C8D0Ev,
};
extern void _ZN7S7446C2D1Ev();
extern void _ZN7S7446C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C27S7446C87S7446C4__A1__7S7446C1[] = {
  ABISELECT(-160,-112),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C2[0]),
  (VTBL_ENTRY)&_ZN7S7446C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7446C2D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7446C5__7S7446C87S7446C4__7S7446C1[] = {
  ABISELECT(-560,-384),
  ABISELECT(-400,-272),
  (VTBL_ENTRY)&(_ZTI7S7446C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7446C5__7S7446C4__7S7446C1[] = {
  ABISELECT(-560,-384),
  ABISELECT(-400,-272),
  (VTBL_ENTRY)&(_ZTI7S7446C4[0]),
};
extern void _ZN7S7446C62v7Ev();
extern void _ZN7S7446C62v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C6__7S7446C4__7S7446C1[] = {
  0,
  0,
  ABISELECT(232,144),
  ABISELECT(-1456,-956),
  (VTBL_ENTRY)&(_ZTI7S7446C4[0]),
  (VTBL_ENTRY)&_ZN7S7446C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7446C62v8Ev,
};
extern void _ZN7S7446C72v5Ev();
extern void _ZN7S7446C72v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C7__7S7446C4__7S7446C1[] = {
  0,
  0,
  ABISELECT(-1688,-1100),
  (VTBL_ENTRY)&(_ZTI7S7446C4[0]),
  (VTBL_ENTRY)&_ZN7S7446C72v5Ev,
  (VTBL_ENTRY)&_ZN7S7446C72v6Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7446C5__7S7446C1[] = {
  ABISELECT(-560,-384),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C5[0]),
};
extern void _ZN7S7446C62v7Ev();
extern void _ZN7S7446C62v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C6__7S7446C1[] = {
  ABISELECT(232,144),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C6[0]),
  (VTBL_ENTRY)&_ZN7S7446C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7446C62v8Ev,
};
extern void _ZN7S7446C72v5Ev();
extern void _ZN7S7446C72v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C7__7S7446C6__7S7446C1[] = {
  0,
  0,
  ABISELECT(-232,-144),
  (VTBL_ENTRY)&(_ZTI7S7446C6[0]),
  (VTBL_ENTRY)&_ZN7S7446C72v5Ev,
  (VTBL_ENTRY)&_ZN7S7446C72v6Ev,
};
extern void _ZN7S7446C8D1Ev();
extern void _ZN7S7446C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C8__A1__7S7446C1[] = {
  ABISELECT(-1312,-840),
  ABISELECT(-1872,-1224),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C8[0]),
  (VTBL_ENTRY)&_ZN7S7446C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7446C8D0Ev,
};
extern void _ZN7S7446C2D1Ev();
extern void _ZN7S7446C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C27S7446C8__A2__7S7446C1[] = {
  ABISELECT(-1872,-1224),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C2[0]),
  (VTBL_ENTRY)&_ZN7S7446C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7446C2D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7446C5__7S7446C8__A1__7S7446C1[] = {
  ABISELECT(-560,-384),
  ABISELECT(1312,840),
  (VTBL_ENTRY)&(_ZTI7S7446C8[0]),
};
extern void _ZN8S7446C10D1Ev();
extern void _ZN8S7446C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7446C10__7S7446C1[] = {
  ABISELECT(88,72),
  ABISELECT(-224,-148),
  ABISELECT(-2096,-1372),
  ABISELECT(-1536,-988),
  ABISELECT(-480,-304),
  ABISELECT(-248,-160),
  0,
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
  (VTBL_ENTRY)&_ZN8S7446C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7446C10D0Ev,
};
extern void _ZN7S7446C72v5Ev();
extern void _ZN7S7446C72v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C7__8S7446C10__7S7446C1[] = {
  0,
  0,
  ABISELECT(248,160),
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
  (VTBL_ENTRY)&_ZN7S7446C72v5Ev,
  (VTBL_ENTRY)&_ZN7S7446C72v6Ev,
};
extern void _ZN7S7446C62v7Ev();
extern void _ZN7S7446C62v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C6__8S7446C10__7S7446C1[] = {
  0,
  0,
  ABISELECT(232,144),
  ABISELECT(480,304),
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
  (VTBL_ENTRY)&_ZN7S7446C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7446C62v8Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7446C5__8S7446C10__7S7446C1[] = {
  ABISELECT(-560,-384),
  ABISELECT(1536,988),
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
};
extern void ABISELECT(_ZTv0_n40_N8S7446C10D1Ev,_ZTv0_n20_N8S7446C10D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S7446C10D0Ev,_ZTv0_n20_N8S7446C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7446C8__8S7446C10__7S7446C1[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  ABISELECT(224,148),
  ABISELECT(-1312,-840),
  ABISELECT(-1872,-1224),
  ABISELECT(224,148),
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7446C10D1Ev,_ZTv0_n20_N8S7446C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7446C10D0Ev,_ZTv0_n20_N8S7446C10D0Ev),
};
extern void _ZN7S7446C72v5Ev();
extern void _ZN7S7446C72v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C77S7446C8__A1__8S7446C10__7S7446C1[] = {
  ABISELECT(184,124),
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
  (VTBL_ENTRY)&_ZN7S7446C72v5Ev,
  (VTBL_ENTRY)&_ZN7S7446C72v6Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S7446C10D1Ev,_ZTv0_n16_N8S7446C10D1Ev)();
extern void ABISELECT(_ZThn88_N8S7446C10D1Ev,_ZThn72_N8S7446C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7446C10D0Ev,_ZTv0_n16_N8S7446C10D0Ev)();
extern void ABISELECT(_ZThn88_N8S7446C10D0Ev,_ZThn72_N8S7446C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7446C2__A1__8S7446C10__7S7446C1[] = {
  ABISELECT(-88,-72),
  ABISELECT(-2184,-1444),
  ABISELECT(-88,-72),
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7446C10D1Ev,_ZTv0_n16_N8S7446C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7446C10D0Ev,_ZTv0_n16_N8S7446C10D0Ev),
};
extern void _ZN7S7446C2D1Ev();
extern void _ZN7S7446C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C2__A3__7S7446C1[] = {
  ABISELECT(-2184,-1444),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C2[0]),
  (VTBL_ENTRY)&_ZN7S7446C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7446C2D0Ev,
};
extern void _ZN8S7446C12D1Ev();
extern void _ZN8S7446C12D0Ev();
extern void _ZN8S7446C123v10Ev();
static  VTBL_ENTRY _tg__ZTV8S7446C12__7S7446C1[] = {
  ABISELECT(-40,-24),
  ABISELECT(-352,-244),
  ABISELECT(-1664,-1084),
  ABISELECT(-608,-400),
  ABISELECT(-376,-256),
  ABISELECT(-2224,-1468),
  0,
  (VTBL_ENTRY)&(_ZTI8S7446C12[0]),
  (VTBL_ENTRY)&_ZN8S7446C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7446C12D0Ev,
  (VTBL_ENTRY)&_ZN8S7446C123v10Ev,
};
extern void _ZN7S7446C2D1Ev();
extern void _ZN7S7446C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C28S7446C12__A4__7S7446C1[] = {
  ABISELECT(-2224,-1468),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C2[0]),
  (VTBL_ENTRY)&_ZN7S7446C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7446C2D0Ev,
};
extern void _ZN8S7446C10D1Ev();
extern void _ZN8S7446C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7446C108S7446C12__A1__7S7446C1[] = {
  ABISELECT(-248,-160),
  ABISELECT(-560,-380),
  ABISELECT(-2432,-1604),
  ABISELECT(-1872,-1220),
  ABISELECT(-816,-536),
  ABISELECT(-584,-392),
  0,
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
  (VTBL_ENTRY)&_ZN8S7446C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7446C10D0Ev,
};
extern void _ZN7S7446C72v5Ev();
extern void _ZN7S7446C72v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C7__8S7446C108S7446C12__A1__7S7446C1[] = {
  0,
  0,
  ABISELECT(584,392),
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
  (VTBL_ENTRY)&_ZN7S7446C72v5Ev,
  (VTBL_ENTRY)&_ZN7S7446C72v6Ev,
};
extern void _ZN7S7446C62v7Ev();
extern void _ZN7S7446C62v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C6__8S7446C108S7446C12__A1__7S7446C1[] = {
  0,
  0,
  ABISELECT(232,144),
  ABISELECT(816,536),
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
  (VTBL_ENTRY)&_ZN7S7446C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7446C62v8Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7446C5__8S7446C108S7446C12__A1__7S7446C1[] = {
  ABISELECT(-560,-384),
  ABISELECT(1872,1220),
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
};
extern void ABISELECT(_ZTv0_n40_N8S7446C10D1Ev,_ZTv0_n20_N8S7446C10D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S7446C10D0Ev,_ZTv0_n20_N8S7446C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7446C8__8S7446C108S7446C12__A1__7S7446C1[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  ABISELECT(560,380),
  ABISELECT(-1312,-840),
  ABISELECT(-1872,-1224),
  ABISELECT(560,380),
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7446C10D1Ev,_ZTv0_n20_N8S7446C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7446C10D0Ev,_ZTv0_n20_N8S7446C10D0Ev),
};
extern void _ZN7S7446C72v5Ev();
extern void _ZN7S7446C72v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C77S7446C8__A1__8S7446C108S7446C12__A1__7S7446C1[] = {
  ABISELECT(520,356),
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
  (VTBL_ENTRY)&_ZN7S7446C72v5Ev,
  (VTBL_ENTRY)&_ZN7S7446C72v6Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S7446C10D1Ev,_ZTv0_n16_N8S7446C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7446C10D0Ev,_ZTv0_n16_N8S7446C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7446C2__A1__8S7446C108S7446C12__A1__7S7446C1[] = {
  ABISELECT(248,160),
  ABISELECT(-2184,-1444),
  ABISELECT(248,160),
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7446C10D1Ev,_ZTv0_n16_N8S7446C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7446C10D0Ev,_ZTv0_n16_N8S7446C10D0Ev),
};
extern void ABISELECT(_ZThn208_N8S7446C12D1Ev,_ZThn136_N8S7446C12D1Ev)();
extern void ABISELECT(_ZThn208_N8S7446C12D0Ev,_ZThn136_N8S7446C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7446C10__8S7446C12__7S7446C1[] = {
  ABISELECT(-248,-160),
  ABISELECT(-560,-380),
  ABISELECT(-2432,-1604),
  ABISELECT(-1872,-1220),
  ABISELECT(-816,-536),
  ABISELECT(-584,-392),
  ABISELECT(-208,-136),
  (VTBL_ENTRY)&(_ZTI8S7446C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N8S7446C12D1Ev,_ZThn136_N8S7446C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N8S7446C12D0Ev,_ZThn136_N8S7446C12D0Ev),
};
extern void _ZN7S7446C72v5Ev();
extern void _ZN7S7446C72v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C7__8S7446C12__7S7446C1[] = {
  0,
  0,
  ABISELECT(376,256),
  (VTBL_ENTRY)&(_ZTI8S7446C12[0]),
  (VTBL_ENTRY)&_ZN7S7446C72v5Ev,
  (VTBL_ENTRY)&_ZN7S7446C72v6Ev,
};
extern void _ZN7S7446C62v7Ev();
extern void _ZN7S7446C62v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C6__8S7446C12__7S7446C1[] = {
  0,
  0,
  ABISELECT(232,144),
  ABISELECT(608,400),
  (VTBL_ENTRY)&(_ZTI8S7446C12[0]),
  (VTBL_ENTRY)&_ZN7S7446C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7446C62v8Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7446C5__8S7446C12__7S7446C1[] = {
  ABISELECT(-560,-384),
  ABISELECT(1664,1084),
  (VTBL_ENTRY)&(_ZTI8S7446C12[0]),
};
extern void ABISELECT(_ZTv0_n40_N8S7446C12D1Ev,_ZTv0_n20_N8S7446C12D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S7446C12D0Ev,_ZTv0_n20_N8S7446C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7446C8__8S7446C12__7S7446C1[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  ABISELECT(352,244),
  ABISELECT(-1312,-840),
  ABISELECT(-1872,-1224),
  ABISELECT(352,244),
  (VTBL_ENTRY)&(_ZTI8S7446C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7446C12D1Ev,_ZTv0_n20_N8S7446C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7446C12D0Ev,_ZTv0_n20_N8S7446C12D0Ev),
};
extern void _ZN7S7446C72v5Ev();
extern void _ZN7S7446C72v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C77S7446C8__A1__8S7446C12__7S7446C1[] = {
  ABISELECT(312,220),
  (VTBL_ENTRY)&(_ZTI8S7446C12[0]),
  (VTBL_ENTRY)&_ZN7S7446C72v5Ev,
  (VTBL_ENTRY)&_ZN7S7446C72v6Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S7446C12D1Ev,_ZTv0_n16_N8S7446C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7446C12D0Ev,_ZTv0_n16_N8S7446C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7446C2__A2__8S7446C12__7S7446C1[] = {
  ABISELECT(40,24),
  ABISELECT(-2184,-1444),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S7446C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7446C12D1Ev,_ZTv0_n16_N8S7446C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7446C12D0Ev,_ZTv0_n16_N8S7446C12D0Ev),
};
static  VTT_ENTRY vtt_S7446C1[] = {
  {&(_ZTV7S7446C1[11]),  11,116},
  {&(_tg__ZTV7S7446C2__A__7S7446C1[3]),  3,5},
  {&(_tg__ZTV7S7446C9__7S7446C1[10]),  10,13},
  {&(_tg__ZTV7S7446C6__7S7446C9__7S7446C1[5]),  5,7},
  {&(_tg__ZTV7S7446C7__7S7446C9__7S7446C1[4]),  4,6},
  {&(_tg__ZTV7S7446C8__7S7446C9__7S7446C1[7]),  7,9},
  {&(_tg__ZTV7S7446C5__7S7446C9__7S7446C1[3]),  3,3},
  {&(_tg__ZTV7S7446C77S7446C8__A1__7S7446C9__7S7446C1[2]),  2,4},
  {&(_tg__ZTV8S7446C10__7S7446C9__7S7446C1[9]),  9,11},
  {&(_tg__ZTV7S7446C2__A1__7S7446C9__7S7446C1[4]),  4,6},
  {&(_tg__ZTV8S7446C12__7S7446C9__7S7446C1[10]),  10,13},
  {&(_tg__ZTV8S7446C108S7446C12__A1__7S7446C9__7S7446C1[8]),  8,10},
  {&(_ZTV7S7446C1[40]),  40,116},
  {&(_ZTV7S7446C1[50]),  50,116},
  {&(_ZTV7S7446C1[55]),  55,116},
  {&(_ZTV7S7446C1[61]),  61,116},
  {&(_ZTV7S7446C1[45]),  45,116},
  {&(_ZTV7S7446C1[70]),  70,116},
  {&(_ZTV7S7446C1[74]),  74,116},
  {&(_ZTV7S7446C1[27]),  27,116},
  {&(_ZTV7S7446C1[85]),  85,116},
  {&(_ZTV7S7446C1[91]),  91,116},
  {&(_ZTV7S7446C1[103]),  103,116},
  {&(_ZTV7S7446C1[114]),  114,116},
  {&(_tg__ZTV7S7446C4__7S7446C1[6]),  6,9},
  {&(_tg__ZTV7S7446C87S7446C4__7S7446C1[4]),  4,6},
  {&(_tg__ZTV7S7446C27S7446C87S7446C4__A1__7S7446C1[3]),  3,5},
  {&(_tg__ZTV7S7446C5__7S7446C87S7446C4__7S7446C1[3]),  3,3},
  {&(_tg__ZTV7S7446C5__7S7446C4__7S7446C1[3]),  3,3},
  {&(_tg__ZTV7S7446C6__7S7446C4__7S7446C1[5]),  5,7},
  {&(_tg__ZTV7S7446C7__7S7446C4__7S7446C1[4]),  4,6},
  {&(_tg__ZTV7S7446C5__7S7446C1[3]),  3,3},
  {&(_tg__ZTV7S7446C6__7S7446C1[3]),  3,5},
  {&(_tg__ZTV7S7446C7__7S7446C6__7S7446C1[4]),  4,6},
  {&(_tg__ZTV7S7446C8__A1__7S7446C1[4]),  4,6},
  {&(_tg__ZTV7S7446C27S7446C8__A2__7S7446C1[3]),  3,5},
  {&(_tg__ZTV7S7446C5__7S7446C8__A1__7S7446C1[3]),  3,3},
  {&(_tg__ZTV8S7446C10__7S7446C1[8]),  8,10},
  {&(_tg__ZTV7S7446C7__8S7446C10__7S7446C1[4]),  4,6},
  {&(_tg__ZTV7S7446C6__8S7446C10__7S7446C1[5]),  5,7},
  {&(_tg__ZTV7S7446C5__8S7446C10__7S7446C1[3]),  3,3},
  {&(_tg__ZTV7S7446C8__8S7446C10__7S7446C1[7]),  7,9},
  {&(_tg__ZTV7S7446C77S7446C8__A1__8S7446C10__7S7446C1[2]),  2,4},
  {&(_tg__ZTV7S7446C2__A1__8S7446C10__7S7446C1[4]),  4,6},
  {&(_tg__ZTV7S7446C2__A3__7S7446C1[3]),  3,5},
  {&(_tg__ZTV8S7446C12__7S7446C1[8]),  8,11},
  {&(_tg__ZTV7S7446C28S7446C12__A4__7S7446C1[3]),  3,5},
  {&(_tg__ZTV8S7446C108S7446C12__A1__7S7446C1[8]),  8,10},
  {&(_tg__ZTV7S7446C7__8S7446C108S7446C12__A1__7S7446C1[4]),  4,6},
  {&(_tg__ZTV7S7446C6__8S7446C108S7446C12__A1__7S7446C1[5]),  5,7},
  {&(_tg__ZTV7S7446C5__8S7446C108S7446C12__A1__7S7446C1[3]),  3,3},
  {&(_tg__ZTV7S7446C8__8S7446C108S7446C12__A1__7S7446C1[7]),  7,9},
  {&(_tg__ZTV7S7446C77S7446C8__A1__8S7446C108S7446C12__A1__7S7446C1[2]),  2,4},
  {&(_tg__ZTV7S7446C2__A1__8S7446C108S7446C12__A1__7S7446C1[4]),  4,6},
  {&(_tg__ZTV8S7446C10__8S7446C12__7S7446C1[8]),  8,10},
  {&(_tg__ZTV7S7446C7__8S7446C12__7S7446C1[4]),  4,6},
  {&(_tg__ZTV7S7446C6__8S7446C12__7S7446C1[5]),  5,7},
  {&(_tg__ZTV7S7446C5__8S7446C12__7S7446C1[3]),  3,3},
  {&(_tg__ZTV7S7446C8__8S7446C12__7S7446C1[7]),  7,9},
  {&(_tg__ZTV7S7446C77S7446C8__A1__8S7446C12__7S7446C1[2]),  2,4},
  {&(_tg__ZTV7S7446C2__A2__8S7446C12__7S7446C1[4]),  4,6},
};
extern VTBL_ENTRY _ZTI7S7446C1[];
extern  VTBL_ENTRY _ZTV7S7446C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C1[];
static VTBL_ENTRY alt_thunk_names107[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7446C10D0Ev,_ZTv0_n16_N8S7446C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7446C10D0Ev,_ZThn72_N8S7446C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7446C10D1Ev,_ZTv0_n16_N8S7446C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7446C10D1Ev,_ZThn72_N8S7446C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7446C9D0Ev,_ZTv0_n16_N7S7446C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2272_N7S7446C9D0Ev,_ZThn1516_N7S7446C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7446C9D1Ev,_ZTv0_n16_N7S7446C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2272_N7S7446C9D1Ev,_ZThn1516_N7S7446C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7446C9D0Ev,_ZTv0_n36_N7S7446C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2312_N7S7446C9D0Ev,_ZThn1540_N7S7446C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2184_N7S7446C9D0Ev,_ZThn1444_N7S7446C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7446C9D1Ev,_ZTv0_n36_N7S7446C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2312_N7S7446C9D1Ev,_ZThn1540_N7S7446C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2184_N7S7446C9D1Ev,_ZThn1444_N7S7446C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7446C9D0Ev,_ZTv0_n20_N7S7446C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1960_N7S7446C9D0Ev,_ZThn1296_N7S7446C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7446C9D1Ev,_ZTv0_n20_N7S7446C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1960_N7S7446C9D1Ev,_ZThn1296_N7S7446C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7446C1D0Ev,_ZTv0_n16_N7S7446C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2312_N7S7446C1D0Ev,_ZThn1540_N7S7446C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7446C1D1Ev,_ZTv0_n16_N7S7446C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2312_N7S7446C1D1Ev,_ZThn1540_N7S7446C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7446C1D0Ev,_ZTv0_n36_N7S7446C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2352_N7S7446C1D0Ev,_ZThn1564_N7S7446C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2224_N7S7446C1D0Ev,_ZThn1468_N7S7446C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7446C1D1Ev,_ZTv0_n36_N7S7446C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2352_N7S7446C1D1Ev,_ZThn1564_N7S7446C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2224_N7S7446C1D1Ev,_ZThn1468_N7S7446C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7446C1D0Ev,_ZTv0_n20_N7S7446C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2000_N7S7446C1D0Ev,_ZThn1320_N7S7446C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7446C1D1Ev,_ZTv0_n20_N7S7446C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2000_N7S7446C1D1Ev,_ZThn1320_N7S7446C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7446C1D0Ev,_ZTv0_n28_N7S7446C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N7S7446C1D0Ev,_ZThn208_N7S7446C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7446C1D1Ev,_ZTv0_n28_N7S7446C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N7S7446C1D1Ev,_ZThn208_N7S7446C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7446C1 = {  "S7446C1", // class name
  bases_S7446C1, 22,
  &(vtc_S7446C1[0]), // expected_vtbl_contents
  &(vtt_S7446C1[0]), // expected_vtt_contents
  ABISELECT(4032,2684), // object size
  NSPAIRA(_ZTI7S7446C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7446C1),116, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7446C1),61, //virtual table table var
  17, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names107,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S793C4  : S1868C4_nt {
  void *s793c4f0[2];
  virtual  ~S793C4(); // _ZN6S793C4D1Ev
  virtual void  v4(); // _ZN6S793C42v4Ev
  virtual void  v5(); // _ZN6S793C42v5Ev
  virtual void  v6(); // _ZN6S793C42v6Ev
  virtual void  v7(); // _ZN6S793C42v7Ev
  virtual void  v8(); // _ZN6S793C42v8Ev
  virtual void  v9(); // _ZN6S793C42v9Ev
  virtual void  v10(); // _ZN6S793C43v10Ev
  S793C4(); // tgen
};
//SIG(-1 S793C4) C1{ BC2{ vd m} vd v1 v2 v3 v4 v5 v6 v7 Fp[2]}


 S793C4 ::~S793C4(){ note_dtor("S793C4", this);}
void  S793C4 ::v4(){vfunc_called(this, "_ZN6S793C42v4Ev");}
void  S793C4 ::v5(){vfunc_called(this, "_ZN6S793C42v5Ev");}
void  S793C4 ::v6(){vfunc_called(this, "_ZN6S793C42v6Ev");}
void  S793C4 ::v7(){vfunc_called(this, "_ZN6S793C42v7Ev");}
void  S793C4 ::v8(){vfunc_called(this, "_ZN6S793C42v8Ev");}
void  S793C4 ::v9(){vfunc_called(this, "_ZN6S793C42v9Ev");}
void  S793C4 ::v10(){vfunc_called(this, "_ZN6S793C43v10Ev");}
S793C4 ::S793C4(){ note_ctor("S793C4", this);} // tgen

static void Test_S793C4()
{
  extern Class_Descriptor cd_S793C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S793C4, buf);
    S793C4 *dp, &lv = *(dp=new (buf) S793C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S793C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S793C4)");
    check_base_class_offset(lv, (S1868C4_nt*), 0, "S793C4");
    check_field_offset(lv, s793c4f0, ABISELECT(8,4), "S793C4.s793c4f0");
    test_class_info(&lv, &cd_S793C4);
    dp->~S793C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS793C4(Test_S793C4, "S793C4", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN6S793C4C1Ev();
extern void _ZN6S793C4D1Ev();
Name_Map name_map_S793C4[] = {
  NSPAIR(_ZN6S793C4C1Ev),
  NSPAIR(_ZN6S793C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1868C4_nt;
extern VTBL_ENTRY _ZTI10S1868C4_nt[];
extern  VTBL_ENTRY _ZTV10S1868C4_nt[];
static Base_Class bases_S793C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1868C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S793C4[];
extern void _ZN6S793C4D1Ev();
extern void _ZN6S793C4D0Ev();
extern void _ZN6S793C42v4Ev();
extern void _ZN6S793C42v5Ev();
extern void _ZN6S793C42v6Ev();
extern void _ZN6S793C42v7Ev();
extern void _ZN6S793C42v8Ev();
extern void _ZN6S793C42v9Ev();
extern void _ZN6S793C43v10Ev();
static  VTBL_ENTRY vtc_S793C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S793C4[0]),
  (VTBL_ENTRY)&_ZN6S793C4D1Ev,
  (VTBL_ENTRY)&_ZN6S793C4D0Ev,
  (VTBL_ENTRY)&_ZN6S793C42v4Ev,
  (VTBL_ENTRY)&_ZN6S793C42v5Ev,
  (VTBL_ENTRY)&_ZN6S793C42v6Ev,
  (VTBL_ENTRY)&_ZN6S793C42v7Ev,
  (VTBL_ENTRY)&_ZN6S793C42v8Ev,
  (VTBL_ENTRY)&_ZN6S793C42v9Ev,
  (VTBL_ENTRY)&_ZN6S793C43v10Ev,
};
extern VTBL_ENTRY _ZTI6S793C4[];
extern  VTBL_ENTRY _ZTV6S793C4[];
Class_Descriptor cd_S793C4 = {  "S793C4", // class name
  bases_S793C4, 1,
  &(vtc_S793C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI6S793C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S793C4),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S793C6  {
  virtual  ~S793C6(); // _ZN6S793C6D1Ev
  virtual void  v11(); // _ZN6S793C63v11Ev
  virtual void  v12(); // _ZN6S793C63v12Ev
  virtual void  v13(); // _ZN6S793C63v13Ev
  virtual void  v14(); // _ZN6S793C63v14Ev
  virtual void  v15(); // _ZN6S793C63v15Ev
  virtual void  v16(); // _ZN6S793C63v16Ev
  virtual void  v17(); // _ZN6S793C63v17Ev
  virtual void  v18(); // _ZN6S793C63v18Ev
  virtual void  v19(); // _ZN6S793C63v19Ev
  virtual void  v20(); // _ZN6S793C63v20Ev
  virtual void  v21(); // _ZN6S793C63v21Ev
  virtual void  v22(); // _ZN6S793C63v22Ev
  S793C6(); // tgen
};
//SIG(-1 S793C6) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12}


 S793C6 ::~S793C6(){ note_dtor("S793C6", this);}
void  S793C6 ::v11(){vfunc_called(this, "_ZN6S793C63v11Ev");}
void  S793C6 ::v12(){vfunc_called(this, "_ZN6S793C63v12Ev");}
void  S793C6 ::v13(){vfunc_called(this, "_ZN6S793C63v13Ev");}
void  S793C6 ::v14(){vfunc_called(this, "_ZN6S793C63v14Ev");}
void  S793C6 ::v15(){vfunc_called(this, "_ZN6S793C63v15Ev");}
void  S793C6 ::v16(){vfunc_called(this, "_ZN6S793C63v16Ev");}
void  S793C6 ::v17(){vfunc_called(this, "_ZN6S793C63v17Ev");}
void  S793C6 ::v18(){vfunc_called(this, "_ZN6S793C63v18Ev");}
void  S793C6 ::v19(){vfunc_called(this, "_ZN6S793C63v19Ev");}
void  S793C6 ::v20(){vfunc_called(this, "_ZN6S793C63v20Ev");}
void  S793C6 ::v21(){vfunc_called(this, "_ZN6S793C63v21Ev");}
void  S793C6 ::v22(){vfunc_called(this, "_ZN6S793C63v22Ev");}
S793C6 ::S793C6(){ note_ctor("S793C6", this);} // tgen

static void Test_S793C6()
{
  extern Class_Descriptor cd_S793C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S793C6, buf);
    S793C6 *dp, &lv = *(dp=new (buf) S793C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S793C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S793C6)");
    test_class_info(&lv, &cd_S793C6);
    dp->~S793C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS793C6(Test_S793C6, "S793C6", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN6S793C6C1Ev();
extern void _ZN6S793C6D1Ev();
Name_Map name_map_S793C6[] = {
  NSPAIR(_ZN6S793C6C1Ev),
  NSPAIR(_ZN6S793C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI6S793C6[];
extern void _ZN6S793C6D1Ev();
extern void _ZN6S793C6D0Ev();
extern void _ZN6S793C63v11Ev();
extern void _ZN6S793C63v12Ev();
extern void _ZN6S793C63v13Ev();
extern void _ZN6S793C63v14Ev();
extern void _ZN6S793C63v15Ev();
extern void _ZN6S793C63v16Ev();
extern void _ZN6S793C63v17Ev();
extern void _ZN6S793C63v18Ev();
extern void _ZN6S793C63v19Ev();
extern void _ZN6S793C63v20Ev();
extern void _ZN6S793C63v21Ev();
extern void _ZN6S793C63v22Ev();
static  VTBL_ENTRY vtc_S793C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S793C6[0]),
  (VTBL_ENTRY)&_ZN6S793C6D1Ev,
  (VTBL_ENTRY)&_ZN6S793C6D0Ev,
  (VTBL_ENTRY)&_ZN6S793C63v11Ev,
  (VTBL_ENTRY)&_ZN6S793C63v12Ev,
  (VTBL_ENTRY)&_ZN6S793C63v13Ev,
  (VTBL_ENTRY)&_ZN6S793C63v14Ev,
  (VTBL_ENTRY)&_ZN6S793C63v15Ev,
  (VTBL_ENTRY)&_ZN6S793C63v16Ev,
  (VTBL_ENTRY)&_ZN6S793C63v17Ev,
  (VTBL_ENTRY)&_ZN6S793C63v18Ev,
  (VTBL_ENTRY)&_ZN6S793C63v19Ev,
  (VTBL_ENTRY)&_ZN6S793C63v20Ev,
  (VTBL_ENTRY)&_ZN6S793C63v21Ev,
  (VTBL_ENTRY)&_ZN6S793C63v22Ev,
};
extern VTBL_ENTRY _ZTI6S793C6[];
extern  VTBL_ENTRY _ZTV6S793C6[];
Class_Descriptor cd_S793C6 = {  "S793C6", // class name
  0,0,//no base classes
  &(vtc_S793C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI6S793C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV6S793C6),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S793C7_nt  {
  virtual  ~S793C7_nt(); // _ZN9S793C7_ntD1Ev
  virtual void  v23(); // _ZN9S793C7_nt3v23Ev
  virtual void  v24(); // _ZN9S793C7_nt3v24Ev
  S793C7_nt(); // tgen
};
//SIG(-1 S793C7_nt) C1{ vd v1 v2}


 S793C7_nt ::~S793C7_nt(){ note_dtor("S793C7_nt", this);}
void  S793C7_nt ::v23(){vfunc_called(this, "_ZN9S793C7_nt3v23Ev");}
void  S793C7_nt ::v24(){vfunc_called(this, "_ZN9S793C7_nt3v24Ev");}
S793C7_nt ::S793C7_nt(){ note_ctor("S793C7_nt", this);} // tgen

//skip512 S793C7_nt

#else // __cplusplus

extern void _ZN9S793C7_ntC1Ev();
extern void _ZN9S793C7_ntD1Ev();
Name_Map name_map_S793C7_nt[] = {
  NSPAIR(_ZN9S793C7_ntC1Ev),
  NSPAIR(_ZN9S793C7_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S793C7_nt[];
extern void _ZN9S793C7_ntD1Ev();
extern void _ZN9S793C7_ntD0Ev();
extern void _ZN9S793C7_nt3v23Ev();
extern void _ZN9S793C7_nt3v24Ev();
static  VTBL_ENTRY vtc_S793C7_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S793C7_nt[0]),
  (VTBL_ENTRY)&_ZN9S793C7_ntD1Ev,
  (VTBL_ENTRY)&_ZN9S793C7_ntD0Ev,
  (VTBL_ENTRY)&_ZN9S793C7_nt3v23Ev,
  (VTBL_ENTRY)&_ZN9S793C7_nt3v24Ev,
};
extern VTBL_ENTRY _ZTI9S793C7_nt[];
VTBL_ENTRY *P__ZTI9S793C7_nt = _ZTI9S793C7_nt; 
extern  VTBL_ENTRY _ZTV9S793C7_nt[];
Class_Descriptor cd_S793C7_nt = {  "S793C7_nt", // class name
  0,0,//no base classes
  &(vtc_S793C7_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI9S793C7_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S793C7_nt),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S793C9_nt  {
  __tsi64 s793c9f0[2];
  void  mf793c9(); // _ZN9S793C9_nt7mf793c9Ev
};
//SIG(-1 S793C9_nt) C1{ m FL[2]}


void  S793C9_nt ::mf793c9(){}

//skip512 S793C9_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S793C8_nt  {
  ::S793C9_nt s793c8f0;
  void  mf793c8(); // _ZN9S793C8_nt7mf793c8Ev
};
//SIG(-1 S793C8_nt) C1{ m FC2{ m FL[2]}}


void  S793C8_nt ::mf793c8(){}

//skip512 S793C8_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S793C3  : S793C4 , S793C6 , S793C7_nt {
  void *s793c3f0;
  ::S793C8_nt s793c3f1;
  void *s793c3f2;
  ::S1868C17 s793c3f3;
  int s793c3f4[2];
  virtual  ~S793C3(); // _ZN6S793C3D1Ev
  virtual void  v25(); // _ZN6S793C33v25Ev
  virtual void  v26(); // _ZN6S793C33v26Ev
  virtual void  v27(); // _ZN6S793C33v27Ev
  virtual void  v28(); // _ZN6S793C33v28Ev
  virtual void  v29(); // _ZN6S793C33v29Ev
  virtual void  v30(); // _ZN6S793C33v30Ev
  virtual void  v31(); // _ZN6S793C33v31Ev
  virtual void  v32(); // _ZN6S793C33v32Ev
  virtual void  v33(); // _ZN6S793C33v33Ev
  virtual void  v34(); // _ZN6S793C33v34Ev
  virtual void  v35(); // _ZN6S793C33v35Ev
  virtual void  v36(); // _ZN6S793C33v36Ev
  virtual void  v37(); // _ZN6S793C33v37Ev
  virtual void  v38(); // _ZN6S793C33v38Ev
  virtual void  v39(); // _ZN6S793C33v39Ev
  virtual void  v40(); // _ZN6S793C33v40Ev
  virtual void  v41(); // _ZN6S793C33v41Ev
  virtual void  v42(); // _ZN6S793C33v42Ev
  virtual void  v43(); // _ZN6S793C33v43Ev
  virtual void  v44(); // _ZN6S793C33v44Ev
  virtual void  v45(); // _ZN6S793C33v45Ev
  virtual void  v46(); // _ZN6S793C33v46Ev
  virtual void  v47(); // _ZN6S793C33v47Ev
  virtual void  v48(); // _ZN6S793C33v48Ev
  S793C3(); // tgen
};
//SIG(-1 S793C3) C1{ BC2{ BC3{ vd m} vd v25 v26 v27 v28 v29 v30 v31 Fp[2]} BC4{ vd v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43} BC5{ vd v44 v45} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 Fp FC6{ m FC7{ m FL[2]}} Fp FC8{ m Fp} Fi[2]}


 S793C3 ::~S793C3(){ note_dtor("S793C3", this);}
void  S793C3 ::v25(){vfunc_called(this, "_ZN6S793C33v25Ev");}
void  S793C3 ::v26(){vfunc_called(this, "_ZN6S793C33v26Ev");}
void  S793C3 ::v27(){vfunc_called(this, "_ZN6S793C33v27Ev");}
void  S793C3 ::v28(){vfunc_called(this, "_ZN6S793C33v28Ev");}
void  S793C3 ::v29(){vfunc_called(this, "_ZN6S793C33v29Ev");}
void  S793C3 ::v30(){vfunc_called(this, "_ZN6S793C33v30Ev");}
void  S793C3 ::v31(){vfunc_called(this, "_ZN6S793C33v31Ev");}
void  S793C3 ::v32(){vfunc_called(this, "_ZN6S793C33v32Ev");}
void  S793C3 ::v33(){vfunc_called(this, "_ZN6S793C33v33Ev");}
void  S793C3 ::v34(){vfunc_called(this, "_ZN6S793C33v34Ev");}
void  S793C3 ::v35(){vfunc_called(this, "_ZN6S793C33v35Ev");}
void  S793C3 ::v36(){vfunc_called(this, "_ZN6S793C33v36Ev");}
void  S793C3 ::v37(){vfunc_called(this, "_ZN6S793C33v37Ev");}
void  S793C3 ::v38(){vfunc_called(this, "_ZN6S793C33v38Ev");}
void  S793C3 ::v39(){vfunc_called(this, "_ZN6S793C33v39Ev");}
void  S793C3 ::v40(){vfunc_called(this, "_ZN6S793C33v40Ev");}
void  S793C3 ::v41(){vfunc_called(this, "_ZN6S793C33v41Ev");}
void  S793C3 ::v42(){vfunc_called(this, "_ZN6S793C33v42Ev");}
void  S793C3 ::v43(){vfunc_called(this, "_ZN6S793C33v43Ev");}
void  S793C3 ::v44(){vfunc_called(this, "_ZN6S793C33v44Ev");}
void  S793C3 ::v45(){vfunc_called(this, "_ZN6S793C33v45Ev");}
void  S793C3 ::v46(){vfunc_called(this, "_ZN6S793C33v46Ev");}
void  S793C3 ::v47(){vfunc_called(this, "_ZN6S793C33v47Ev");}
void  S793C3 ::v48(){vfunc_called(this, "_ZN6S793C33v48Ev");}
S793C3 ::S793C3(){ note_ctor("S793C3", this);} // tgen

static void Test_S793C3()
{
  extern Class_Descriptor cd_S793C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,15)];
    init_test(&cd_S793C3, buf);
    S793C3 *dp, &lv = *(dp=new (buf) S793C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,56), "sizeof(S793C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S793C3)");
    check_base_class_offset(lv, (S1868C4_nt*)(S793C4*), 0, "S793C3");
    check_base_class_offset(lv, (S793C4*), 0, "S793C3");
    check_base_class_offset(lv, (S793C6*), ABISELECT(24,12), "S793C3");
    check_base_class_offset(lv, (S793C7_nt*), ABISELECT(32,16), "S793C3");
    check_field_offset(lv, s793c3f0, ABISELECT(40,20), "S793C3.s793c3f0");
    check_field_offset(lv, s793c3f1, ABISELECT(48,24), "S793C3.s793c3f1");
    check_field_offset(lv, s793c3f2, ABISELECT(64,40), "S793C3.s793c3f2");
    check_field_offset(lv, s793c3f3, ABISELECT(72,44), "S793C3.s793c3f3");
    check_field_offset(lv, s793c3f4, ABISELECT(80,48), "S793C3.s793c3f4");
    test_class_info(&lv, &cd_S793C3);
    dp->~S793C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS793C3(Test_S793C3, "S793C3", ABISELECT(88,56));

#else // __cplusplus

extern void _ZN6S793C3C1Ev();
extern void _ZN6S793C3D1Ev();
Name_Map name_map_S793C3[] = {
  NSPAIR(_ZN6S793C3C1Ev),
  NSPAIR(_ZN6S793C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1868C4_nt;
extern VTBL_ENTRY _ZTI10S1868C4_nt[];
extern  VTBL_ENTRY _ZTV10S1868C4_nt[];
extern Class_Descriptor cd_S793C4;
extern VTBL_ENTRY _ZTI6S793C4[];
extern  VTBL_ENTRY _ZTV6S793C4[];
extern Class_Descriptor cd_S793C6;
extern VTBL_ENTRY _ZTI6S793C6[];
extern  VTBL_ENTRY _ZTV6S793C6[];
extern Class_Descriptor cd_S793C7_nt;
extern VTBL_ENTRY _ZTI9S793C7_nt[];
extern  VTBL_ENTRY _ZTV9S793C7_nt[];
static Base_Class bases_S793C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1868C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S793C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S793C6,    ABISELECT(24,12), //bcp->offset
    35, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S793C7_nt,    ABISELECT(32,16), //bcp->offset
    51, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S793C3[];
extern void _ZN6S793C3D1Ev();
extern void _ZN6S793C3D0Ev();
extern void _ZN6S793C42v4Ev();
extern void _ZN6S793C42v5Ev();
extern void _ZN6S793C42v6Ev();
extern void _ZN6S793C42v7Ev();
extern void _ZN6S793C42v8Ev();
extern void _ZN6S793C42v9Ev();
extern void _ZN6S793C43v10Ev();
extern void _ZN6S793C33v25Ev();
extern void _ZN6S793C33v26Ev();
extern void _ZN6S793C33v27Ev();
extern void _ZN6S793C33v28Ev();
extern void _ZN6S793C33v29Ev();
extern void _ZN6S793C33v30Ev();
extern void _ZN6S793C33v31Ev();
extern void _ZN6S793C33v32Ev();
extern void _ZN6S793C33v33Ev();
extern void _ZN6S793C33v34Ev();
extern void _ZN6S793C33v35Ev();
extern void _ZN6S793C33v36Ev();
extern void _ZN6S793C33v37Ev();
extern void _ZN6S793C33v38Ev();
extern void _ZN6S793C33v39Ev();
extern void _ZN6S793C33v40Ev();
extern void _ZN6S793C33v41Ev();
extern void _ZN6S793C33v42Ev();
extern void _ZN6S793C33v43Ev();
extern void _ZN6S793C33v44Ev();
extern void _ZN6S793C33v45Ev();
extern void _ZN6S793C33v46Ev();
extern void _ZN6S793C33v47Ev();
extern void _ZN6S793C33v48Ev();
extern void ABISELECT(_ZThn24_N6S793C3D1Ev,_ZThn12_N6S793C3D1Ev)();
extern void ABISELECT(_ZThn24_N6S793C3D0Ev,_ZThn12_N6S793C3D0Ev)();
extern void _ZN6S793C63v11Ev();
extern void _ZN6S793C63v12Ev();
extern void _ZN6S793C63v13Ev();
extern void _ZN6S793C63v14Ev();
extern void _ZN6S793C63v15Ev();
extern void _ZN6S793C63v16Ev();
extern void _ZN6S793C63v17Ev();
extern void _ZN6S793C63v18Ev();
extern void _ZN6S793C63v19Ev();
extern void _ZN6S793C63v20Ev();
extern void _ZN6S793C63v21Ev();
extern void _ZN6S793C63v22Ev();
extern void ABISELECT(_ZThn32_N6S793C3D1Ev,_ZThn16_N6S793C3D1Ev)();
extern void ABISELECT(_ZThn32_N6S793C3D0Ev,_ZThn16_N6S793C3D0Ev)();
extern void _ZN9S793C7_nt3v23Ev();
extern void _ZN9S793C7_nt3v24Ev();
static  VTBL_ENTRY vtc_S793C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S793C3[0]),
  (VTBL_ENTRY)&_ZN6S793C3D1Ev,
  (VTBL_ENTRY)&_ZN6S793C3D0Ev,
  (VTBL_ENTRY)&_ZN6S793C42v4Ev,
  (VTBL_ENTRY)&_ZN6S793C42v5Ev,
  (VTBL_ENTRY)&_ZN6S793C42v6Ev,
  (VTBL_ENTRY)&_ZN6S793C42v7Ev,
  (VTBL_ENTRY)&_ZN6S793C42v8Ev,
  (VTBL_ENTRY)&_ZN6S793C42v9Ev,
  (VTBL_ENTRY)&_ZN6S793C43v10Ev,
  (VTBL_ENTRY)&_ZN6S793C33v25Ev,
  (VTBL_ENTRY)&_ZN6S793C33v26Ev,
  (VTBL_ENTRY)&_ZN6S793C33v27Ev,
  (VTBL_ENTRY)&_ZN6S793C33v28Ev,
  (VTBL_ENTRY)&_ZN6S793C33v29Ev,
  (VTBL_ENTRY)&_ZN6S793C33v30Ev,
  (VTBL_ENTRY)&_ZN6S793C33v31Ev,
  (VTBL_ENTRY)&_ZN6S793C33v32Ev,
  (VTBL_ENTRY)&_ZN6S793C33v33Ev,
  (VTBL_ENTRY)&_ZN6S793C33v34Ev,
  (VTBL_ENTRY)&_ZN6S793C33v35Ev,
  (VTBL_ENTRY)&_ZN6S793C33v36Ev,
  (VTBL_ENTRY)&_ZN6S793C33v37Ev,
  (VTBL_ENTRY)&_ZN6S793C33v38Ev,
  (VTBL_ENTRY)&_ZN6S793C33v39Ev,
  (VTBL_ENTRY)&_ZN6S793C33v40Ev,
  (VTBL_ENTRY)&_ZN6S793C33v41Ev,
  (VTBL_ENTRY)&_ZN6S793C33v42Ev,
  (VTBL_ENTRY)&_ZN6S793C33v43Ev,
  (VTBL_ENTRY)&_ZN6S793C33v44Ev,
  (VTBL_ENTRY)&_ZN6S793C33v45Ev,
  (VTBL_ENTRY)&_ZN6S793C33v46Ev,
  (VTBL_ENTRY)&_ZN6S793C33v47Ev,
  (VTBL_ENTRY)&_ZN6S793C33v48Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI6S793C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N6S793C3D1Ev,_ZThn12_N6S793C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N6S793C3D0Ev,_ZThn12_N6S793C3D0Ev),
  (VTBL_ENTRY)&_ZN6S793C63v11Ev,
  (VTBL_ENTRY)&_ZN6S793C63v12Ev,
  (VTBL_ENTRY)&_ZN6S793C63v13Ev,
  (VTBL_ENTRY)&_ZN6S793C63v14Ev,
  (VTBL_ENTRY)&_ZN6S793C63v15Ev,
  (VTBL_ENTRY)&_ZN6S793C63v16Ev,
  (VTBL_ENTRY)&_ZN6S793C63v17Ev,
  (VTBL_ENTRY)&_ZN6S793C63v18Ev,
  (VTBL_ENTRY)&_ZN6S793C63v19Ev,
  (VTBL_ENTRY)&_ZN6S793C63v20Ev,
  (VTBL_ENTRY)&_ZN6S793C63v21Ev,
  (VTBL_ENTRY)&_ZN6S793C63v22Ev,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI6S793C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N6S793C3D1Ev,_ZThn16_N6S793C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N6S793C3D0Ev,_ZThn16_N6S793C3D0Ev),
  (VTBL_ENTRY)&_ZN9S793C7_nt3v23Ev,
  (VTBL_ENTRY)&_ZN9S793C7_nt3v24Ev,
};
extern VTBL_ENTRY _ZTI6S793C3[];
extern  VTBL_ENTRY _ZTV6S793C3[];
Class_Descriptor cd_S793C3 = {  "S793C3", // class name
  bases_S793C3, 4,
  &(vtc_S793C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,56), // object size
  NSPAIRA(_ZTI6S793C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV6S793C3),57, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  4, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S793C11  {
  char s793c11f0;
  ::S793C8_nt s793c11f1;
  int s793c11f2;
  void  mf793c11(); // _ZN7S793C118mf793c11Ev
};
//SIG(-1 S793C11) C1{ m Fc FC2{ m FC3{ m FL[2]}} Fi}


void  S793C11 ::mf793c11(){}

static void Test_S793C11()
{
  {
    init_simple_test("S793C11");
    S793C11 lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S793C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S793C11)");
    check_field_offset(lv, s793c11f0, 0, "S793C11.s793c11f0");
    check_field_offset(lv, s793c11f1, ABISELECT(8,4), "S793C11.s793c11f1");
    check_field_offset(lv, s793c11f2, ABISELECT(24,20), "S793C11.s793c11f2");
  }
}
static Arrange_To_Call_Me vS793C11(Test_S793C11, "S793C11", ABISELECT(32,24));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S793C2  : S793C3 {
  ::S793C11 s793c2f0;
  virtual void  v49(); // _ZN6S793C23v49Ev
  virtual void  v50(); // _ZN6S793C23v50Ev
  virtual void  v51(); // _ZN6S793C23v51Ev
  virtual void  v52(); // _ZN6S793C23v52Ev
  virtual void  v53(); // _ZN6S793C23v53Ev
  ~S793C2(); // tgen
  S793C2(); // tgen
};
//SIG(-1 S793C2) C1{ BC2{ BC3{ BC4{ vd m} vd v6 v7 v8 v9 v10 v11 v12 Fp[2]} BC5{ vd v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24} BC6{ vd v25 v26} vd v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 Fp FC7{ m FC8{ m FL[2]}} Fp FC9{ m Fp} Fi[2]} v1 v2 v3 v4 v5 FC10{ m Fc FC7 Fi}}


void  S793C2 ::v49(){vfunc_called(this, "_ZN6S793C23v49Ev");}
void  S793C2 ::v50(){vfunc_called(this, "_ZN6S793C23v50Ev");}
void  S793C2 ::v51(){vfunc_called(this, "_ZN6S793C23v51Ev");}
void  S793C2 ::v52(){vfunc_called(this, "_ZN6S793C23v52Ev");}
void  S793C2 ::v53(){vfunc_called(this, "_ZN6S793C23v53Ev");}
S793C2 ::~S793C2(){ note_dtor("S793C2", this);} // tgen
S793C2 ::S793C2(){ note_ctor("S793C2", this);} // tgen

static void Test_S793C2()
{
  extern Class_Descriptor cd_S793C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,21)];
    init_test(&cd_S793C2, buf);
    S793C2 *dp, &lv = *(dp=new (buf) S793C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,80), "sizeof(S793C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S793C2)");
    check_base_class_offset(lv, (S1868C4_nt*)(S793C4*)(S793C3*), 0, "S793C2");
    check_base_class_offset(lv, (S793C4*)(S793C3*), 0, "S793C2");
    check_base_class_offset(lv, (S793C6*)(S793C3*), ABISELECT(24,12), "S793C2");
    check_base_class_offset(lv, (S793C7_nt*)(S793C3*), ABISELECT(32,16), "S793C2");
    check_base_class_offset(lv, (S793C3*), 0, "S793C2");
    check_field_offset(lv, s793c2f0, ABISELECT(88,56), "S793C2.s793c2f0");
    test_class_info(&lv, &cd_S793C2);
    dp->~S793C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS793C2(Test_S793C2, "S793C2", ABISELECT(120,80));

#else // __cplusplus

extern void _ZN6S793C2C1Ev();
extern void _ZN6S793C2D1Ev();
Name_Map name_map_S793C2[] = {
  NSPAIR(_ZN6S793C2C1Ev),
  NSPAIR(_ZN6S793C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1868C4_nt;
extern VTBL_ENTRY _ZTI10S1868C4_nt[];
extern  VTBL_ENTRY _ZTV10S1868C4_nt[];
extern Class_Descriptor cd_S793C4;
extern VTBL_ENTRY _ZTI6S793C4[];
extern  VTBL_ENTRY _ZTV6S793C4[];
extern Class_Descriptor cd_S793C6;
extern VTBL_ENTRY _ZTI6S793C6[];
extern  VTBL_ENTRY _ZTV6S793C6[];
extern Class_Descriptor cd_S793C7_nt;
extern VTBL_ENTRY _ZTI9S793C7_nt[];
extern  VTBL_ENTRY _ZTV9S793C7_nt[];
extern Class_Descriptor cd_S793C3;
extern VTBL_ENTRY _ZTI6S793C3[];
extern  VTBL_ENTRY _ZTV6S793C3[];
static Base_Class bases_S793C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1868C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S793C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S793C6,    ABISELECT(24,12), //bcp->offset
    40, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S793C7_nt,    ABISELECT(32,16), //bcp->offset
    56, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S793C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S793C2[];
extern void _ZN6S793C2D1Ev();
extern void _ZN6S793C2D0Ev();
extern void _ZN6S793C42v4Ev();
extern void _ZN6S793C42v5Ev();
extern void _ZN6S793C42v6Ev();
extern void _ZN6S793C42v7Ev();
extern void _ZN6S793C42v8Ev();
extern void _ZN6S793C42v9Ev();
extern void _ZN6S793C43v10Ev();
extern void _ZN6S793C33v25Ev();
extern void _ZN6S793C33v26Ev();
extern void _ZN6S793C33v27Ev();
extern void _ZN6S793C33v28Ev();
extern void _ZN6S793C33v29Ev();
extern void _ZN6S793C33v30Ev();
extern void _ZN6S793C33v31Ev();
extern void _ZN6S793C33v32Ev();
extern void _ZN6S793C33v33Ev();
extern void _ZN6S793C33v34Ev();
extern void _ZN6S793C33v35Ev();
extern void _ZN6S793C33v36Ev();
extern void _ZN6S793C33v37Ev();
extern void _ZN6S793C33v38Ev();
extern void _ZN6S793C33v39Ev();
extern void _ZN6S793C33v40Ev();
extern void _ZN6S793C33v41Ev();
extern void _ZN6S793C33v42Ev();
extern void _ZN6S793C33v43Ev();
extern void _ZN6S793C33v44Ev();
extern void _ZN6S793C33v45Ev();
extern void _ZN6S793C33v46Ev();
extern void _ZN6S793C33v47Ev();
extern void _ZN6S793C33v48Ev();
extern void _ZN6S793C23v49Ev();
extern void _ZN6S793C23v50Ev();
extern void _ZN6S793C23v51Ev();
extern void _ZN6S793C23v52Ev();
extern void _ZN6S793C23v53Ev();
extern void ABISELECT(_ZThn24_N6S793C2D1Ev,_ZThn12_N6S793C2D1Ev)();
extern void ABISELECT(_ZThn24_N6S793C2D0Ev,_ZThn12_N6S793C2D0Ev)();
extern void _ZN6S793C63v11Ev();
extern void _ZN6S793C63v12Ev();
extern void _ZN6S793C63v13Ev();
extern void _ZN6S793C63v14Ev();
extern void _ZN6S793C63v15Ev();
extern void _ZN6S793C63v16Ev();
extern void _ZN6S793C63v17Ev();
extern void _ZN6S793C63v18Ev();
extern void _ZN6S793C63v19Ev();
extern void _ZN6S793C63v20Ev();
extern void _ZN6S793C63v21Ev();
extern void _ZN6S793C63v22Ev();
extern void ABISELECT(_ZThn32_N6S793C2D1Ev,_ZThn16_N6S793C2D1Ev)();
extern void ABISELECT(_ZThn32_N6S793C2D0Ev,_ZThn16_N6S793C2D0Ev)();
extern void _ZN9S793C7_nt3v23Ev();
extern void _ZN9S793C7_nt3v24Ev();
static  VTBL_ENTRY vtc_S793C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S793C2[0]),
  (VTBL_ENTRY)&_ZN6S793C2D1Ev,
  (VTBL_ENTRY)&_ZN6S793C2D0Ev,
  (VTBL_ENTRY)&_ZN6S793C42v4Ev,
  (VTBL_ENTRY)&_ZN6S793C42v5Ev,
  (VTBL_ENTRY)&_ZN6S793C42v6Ev,
  (VTBL_ENTRY)&_ZN6S793C42v7Ev,
  (VTBL_ENTRY)&_ZN6S793C42v8Ev,
  (VTBL_ENTRY)&_ZN6S793C42v9Ev,
  (VTBL_ENTRY)&_ZN6S793C43v10Ev,
  (VTBL_ENTRY)&_ZN6S793C33v25Ev,
  (VTBL_ENTRY)&_ZN6S793C33v26Ev,
  (VTBL_ENTRY)&_ZN6S793C33v27Ev,
  (VTBL_ENTRY)&_ZN6S793C33v28Ev,
  (VTBL_ENTRY)&_ZN6S793C33v29Ev,
  (VTBL_ENTRY)&_ZN6S793C33v30Ev,
  (VTBL_ENTRY)&_ZN6S793C33v31Ev,
  (VTBL_ENTRY)&_ZN6S793C33v32Ev,
  (VTBL_ENTRY)&_ZN6S793C33v33Ev,
  (VTBL_ENTRY)&_ZN6S793C33v34Ev,
  (VTBL_ENTRY)&_ZN6S793C33v35Ev,
  (VTBL_ENTRY)&_ZN6S793C33v36Ev,
  (VTBL_ENTRY)&_ZN6S793C33v37Ev,
  (VTBL_ENTRY)&_ZN6S793C33v38Ev,
  (VTBL_ENTRY)&_ZN6S793C33v39Ev,
  (VTBL_ENTRY)&_ZN6S793C33v40Ev,
  (VTBL_ENTRY)&_ZN6S793C33v41Ev,
  (VTBL_ENTRY)&_ZN6S793C33v42Ev,
  (VTBL_ENTRY)&_ZN6S793C33v43Ev,
  (VTBL_ENTRY)&_ZN6S793C33v44Ev,
  (VTBL_ENTRY)&_ZN6S793C33v45Ev,
  (VTBL_ENTRY)&_ZN6S793C33v46Ev,
  (VTBL_ENTRY)&_ZN6S793C33v47Ev,
  (VTBL_ENTRY)&_ZN6S793C33v48Ev,
  (VTBL_ENTRY)&_ZN6S793C23v49Ev,
  (VTBL_ENTRY)&_ZN6S793C23v50Ev,
  (VTBL_ENTRY)&_ZN6S793C23v51Ev,
  (VTBL_ENTRY)&_ZN6S793C23v52Ev,
  (VTBL_ENTRY)&_ZN6S793C23v53Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI6S793C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N6S793C2D1Ev,_ZThn12_N6S793C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N6S793C2D0Ev,_ZThn12_N6S793C2D0Ev),
  (VTBL_ENTRY)&_ZN6S793C63v11Ev,
  (VTBL_ENTRY)&_ZN6S793C63v12Ev,
  (VTBL_ENTRY)&_ZN6S793C63v13Ev,
  (VTBL_ENTRY)&_ZN6S793C63v14Ev,
  (VTBL_ENTRY)&_ZN6S793C63v15Ev,
  (VTBL_ENTRY)&_ZN6S793C63v16Ev,
  (VTBL_ENTRY)&_ZN6S793C63v17Ev,
  (VTBL_ENTRY)&_ZN6S793C63v18Ev,
  (VTBL_ENTRY)&_ZN6S793C63v19Ev,
  (VTBL_ENTRY)&_ZN6S793C63v20Ev,
  (VTBL_ENTRY)&_ZN6S793C63v21Ev,
  (VTBL_ENTRY)&_ZN6S793C63v22Ev,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI6S793C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N6S793C2D1Ev,_ZThn16_N6S793C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N6S793C2D0Ev,_ZThn16_N6S793C2D0Ev),
  (VTBL_ENTRY)&_ZN9S793C7_nt3v23Ev,
  (VTBL_ENTRY)&_ZN9S793C7_nt3v24Ev,
};
extern VTBL_ENTRY _ZTI6S793C2[];
extern  VTBL_ENTRY _ZTV6S793C2[];
Class_Descriptor cd_S793C2 = {  "S793C2", // class name
  bases_S793C2, 5,
  &(vtc_S793C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(120,80), // object size
  NSPAIRA(_ZTI6S793C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S793C2),62, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  5, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S793C1  : S793C2 {
  ::S18423C15_nt s793c1f0;
  virtual void  v1(); // _ZN6S793C12v1Ev
  virtual void  v2(); // _ZN6S793C12v2Ev
  virtual void  v3(); // _ZN6S793C12v3Ev
  ~S793C1(); // tgen
  S793C1(); // tgen
};
//SIG(1 S793C1) C1{ BC2{ BC3{ BC4{ BC5{ vd m} vd v4 v5 v6 v7 v8 v9 v10 Fp[2]} BC6{ vd v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22} BC7{ vd v23 v24} vd v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 Fp FC8{ m FC9{ m FL[2]}} Fp FC10{ m Fp} Fi[2]} v49 v50 v51 v52 v53 FC11{ m Fc FC8 Fi}} v1 v2 v3 FC12{ m Fp Fi FC13{ m}}}


void  S793C1 ::v1(){vfunc_called(this, "_ZN6S793C12v1Ev");}
void  S793C1 ::v2(){vfunc_called(this, "_ZN6S793C12v2Ev");}
void  S793C1 ::v3(){vfunc_called(this, "_ZN6S793C12v3Ev");}
S793C1 ::~S793C1(){ note_dtor("S793C1", this);} // tgen
S793C1 ::S793C1(){ note_ctor("S793C1", this);} // tgen

static void Test_S793C1()
{
  extern Class_Descriptor cd_S793C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,24)];
    init_test(&cd_S793C1, buf);
    S793C1 *dp, &lv = *(dp=new (buf) S793C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,92), "sizeof(S793C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S793C1)");
    check_base_class_offset(lv, (S1868C4_nt*)(S793C4*)(S793C3*)(S793C2*), 0, "S793C1");
    check_base_class_offset(lv, (S793C4*)(S793C3*)(S793C2*), 0, "S793C1");
    check_base_class_offset(lv, (S793C6*)(S793C3*)(S793C2*), ABISELECT(24,12), "S793C1");
    check_base_class_offset(lv, (S793C7_nt*)(S793C3*)(S793C2*), ABISELECT(32,16), "S793C1");
    check_base_class_offset(lv, (S793C3*)(S793C2*), 0, "S793C1");
    check_base_class_offset(lv, (S793C2*), 0, "S793C1");
    check_field_offset(lv, s793c1f0, ABISELECT(120,80), "S793C1.s793c1f0");
    test_class_info(&lv, &cd_S793C1);
    dp->~S793C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS793C1(Test_S793C1, "S793C1", ABISELECT(136,92));

#else // __cplusplus

extern void _ZN6S793C1C1Ev();
extern void _ZN6S793C1D1Ev();
Name_Map name_map_S793C1[] = {
  NSPAIR(_ZN6S793C1C1Ev),
  NSPAIR(_ZN6S793C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1868C4_nt;
extern VTBL_ENTRY _ZTI10S1868C4_nt[];
extern  VTBL_ENTRY _ZTV10S1868C4_nt[];
extern Class_Descriptor cd_S793C4;
extern VTBL_ENTRY _ZTI6S793C4[];
extern  VTBL_ENTRY _ZTV6S793C4[];
extern Class_Descriptor cd_S793C6;
extern VTBL_ENTRY _ZTI6S793C6[];
extern  VTBL_ENTRY _ZTV6S793C6[];
extern Class_Descriptor cd_S793C7_nt;
extern VTBL_ENTRY _ZTI9S793C7_nt[];
extern  VTBL_ENTRY _ZTV9S793C7_nt[];
extern Class_Descriptor cd_S793C3;
extern VTBL_ENTRY _ZTI6S793C3[];
extern  VTBL_ENTRY _ZTV6S793C3[];
extern Class_Descriptor cd_S793C2;
extern VTBL_ENTRY _ZTI6S793C2[];
extern  VTBL_ENTRY _ZTV6S793C2[];
static Base_Class bases_S793C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1868C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S793C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S793C6,    ABISELECT(24,12), //bcp->offset
    43, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S793C7_nt,    ABISELECT(32,16), //bcp->offset
    59, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S793C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S793C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S793C1[];
extern void _ZN6S793C1D1Ev();
extern void _ZN6S793C1D0Ev();
extern void _ZN6S793C42v4Ev();
extern void _ZN6S793C42v5Ev();
extern void _ZN6S793C42v6Ev();
extern void _ZN6S793C42v7Ev();
extern void _ZN6S793C42v8Ev();
extern void _ZN6S793C42v9Ev();
extern void _ZN6S793C43v10Ev();
extern void _ZN6S793C33v25Ev();
extern void _ZN6S793C33v26Ev();
extern void _ZN6S793C33v27Ev();
extern void _ZN6S793C33v28Ev();
extern void _ZN6S793C33v29Ev();
extern void _ZN6S793C33v30Ev();
extern void _ZN6S793C33v31Ev();
extern void _ZN6S793C33v32Ev();
extern void _ZN6S793C33v33Ev();
extern void _ZN6S793C33v34Ev();
extern void _ZN6S793C33v35Ev();
extern void _ZN6S793C33v36Ev();
extern void _ZN6S793C33v37Ev();
extern void _ZN6S793C33v38Ev();
extern void _ZN6S793C33v39Ev();
extern void _ZN6S793C33v40Ev();
extern void _ZN6S793C33v41Ev();
extern void _ZN6S793C33v42Ev();
extern void _ZN6S793C33v43Ev();
extern void _ZN6S793C33v44Ev();
extern void _ZN6S793C33v45Ev();
extern void _ZN6S793C33v46Ev();
extern void _ZN6S793C33v47Ev();
extern void _ZN6S793C33v48Ev();
extern void _ZN6S793C23v49Ev();
extern void _ZN6S793C23v50Ev();
extern void _ZN6S793C23v51Ev();
extern void _ZN6S793C23v52Ev();
extern void _ZN6S793C23v53Ev();
extern void _ZN6S793C12v1Ev();
extern void _ZN6S793C12v2Ev();
extern void _ZN6S793C12v3Ev();
extern void ABISELECT(_ZThn24_N6S793C1D1Ev,_ZThn12_N6S793C1D1Ev)();
extern void ABISELECT(_ZThn24_N6S793C1D0Ev,_ZThn12_N6S793C1D0Ev)();
extern void _ZN6S793C63v11Ev();
extern void _ZN6S793C63v12Ev();
extern void _ZN6S793C63v13Ev();
extern void _ZN6S793C63v14Ev();
extern void _ZN6S793C63v15Ev();
extern void _ZN6S793C63v16Ev();
extern void _ZN6S793C63v17Ev();
extern void _ZN6S793C63v18Ev();
extern void _ZN6S793C63v19Ev();
extern void _ZN6S793C63v20Ev();
extern void _ZN6S793C63v21Ev();
extern void _ZN6S793C63v22Ev();
extern void ABISELECT(_ZThn32_N6S793C1D1Ev,_ZThn16_N6S793C1D1Ev)();
extern void ABISELECT(_ZThn32_N6S793C1D0Ev,_ZThn16_N6S793C1D0Ev)();
extern void _ZN9S793C7_nt3v23Ev();
extern void _ZN9S793C7_nt3v24Ev();
static  VTBL_ENTRY vtc_S793C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S793C1[0]),
  (VTBL_ENTRY)&_ZN6S793C1D1Ev,
  (VTBL_ENTRY)&_ZN6S793C1D0Ev,
  (VTBL_ENTRY)&_ZN6S793C42v4Ev,
  (VTBL_ENTRY)&_ZN6S793C42v5Ev,
  (VTBL_ENTRY)&_ZN6S793C42v6Ev,
  (VTBL_ENTRY)&_ZN6S793C42v7Ev,
  (VTBL_ENTRY)&_ZN6S793C42v8Ev,
  (VTBL_ENTRY)&_ZN6S793C42v9Ev,
  (VTBL_ENTRY)&_ZN6S793C43v10Ev,
  (VTBL_ENTRY)&_ZN6S793C33v25Ev,
  (VTBL_ENTRY)&_ZN6S793C33v26Ev,
  (VTBL_ENTRY)&_ZN6S793C33v27Ev,
  (VTBL_ENTRY)&_ZN6S793C33v28Ev,
  (VTBL_ENTRY)&_ZN6S793C33v29Ev,
  (VTBL_ENTRY)&_ZN6S793C33v30Ev,
  (VTBL_ENTRY)&_ZN6S793C33v31Ev,
  (VTBL_ENTRY)&_ZN6S793C33v32Ev,
  (VTBL_ENTRY)&_ZN6S793C33v33Ev,
  (VTBL_ENTRY)&_ZN6S793C33v34Ev,
  (VTBL_ENTRY)&_ZN6S793C33v35Ev,
  (VTBL_ENTRY)&_ZN6S793C33v36Ev,
  (VTBL_ENTRY)&_ZN6S793C33v37Ev,
  (VTBL_ENTRY)&_ZN6S793C33v38Ev,
  (VTBL_ENTRY)&_ZN6S793C33v39Ev,
  (VTBL_ENTRY)&_ZN6S793C33v40Ev,
  (VTBL_ENTRY)&_ZN6S793C33v41Ev,
  (VTBL_ENTRY)&_ZN6S793C33v42Ev,
  (VTBL_ENTRY)&_ZN6S793C33v43Ev,
  (VTBL_ENTRY)&_ZN6S793C33v44Ev,
  (VTBL_ENTRY)&_ZN6S793C33v45Ev,
  (VTBL_ENTRY)&_ZN6S793C33v46Ev,
  (VTBL_ENTRY)&_ZN6S793C33v47Ev,
  (VTBL_ENTRY)&_ZN6S793C33v48Ev,
  (VTBL_ENTRY)&_ZN6S793C23v49Ev,
  (VTBL_ENTRY)&_ZN6S793C23v50Ev,
  (VTBL_ENTRY)&_ZN6S793C23v51Ev,
  (VTBL_ENTRY)&_ZN6S793C23v52Ev,
  (VTBL_ENTRY)&_ZN6S793C23v53Ev,
  (VTBL_ENTRY)&_ZN6S793C12v1Ev,
  (VTBL_ENTRY)&_ZN6S793C12v2Ev,
  (VTBL_ENTRY)&_ZN6S793C12v3Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI6S793C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N6S793C1D1Ev,_ZThn12_N6S793C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N6S793C1D0Ev,_ZThn12_N6S793C1D0Ev),
  (VTBL_ENTRY)&_ZN6S793C63v11Ev,
  (VTBL_ENTRY)&_ZN6S793C63v12Ev,
  (VTBL_ENTRY)&_ZN6S793C63v13Ev,
  (VTBL_ENTRY)&_ZN6S793C63v14Ev,
  (VTBL_ENTRY)&_ZN6S793C63v15Ev,
  (VTBL_ENTRY)&_ZN6S793C63v16Ev,
  (VTBL_ENTRY)&_ZN6S793C63v17Ev,
  (VTBL_ENTRY)&_ZN6S793C63v18Ev,
  (VTBL_ENTRY)&_ZN6S793C63v19Ev,
  (VTBL_ENTRY)&_ZN6S793C63v20Ev,
  (VTBL_ENTRY)&_ZN6S793C63v21Ev,
  (VTBL_ENTRY)&_ZN6S793C63v22Ev,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI6S793C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N6S793C1D1Ev,_ZThn16_N6S793C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N6S793C1D0Ev,_ZThn16_N6S793C1D0Ev),
  (VTBL_ENTRY)&_ZN9S793C7_nt3v23Ev,
  (VTBL_ENTRY)&_ZN9S793C7_nt3v24Ev,
};
extern VTBL_ENTRY _ZTI6S793C1[];
extern  VTBL_ENTRY _ZTV6S793C1[];
Class_Descriptor cd_S793C1 = {  "S793C1", // class name
  bases_S793C1, 6,
  &(vtc_S793C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(136,92), // object size
  NSPAIRA(_ZTI6S793C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S793C1),65, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  6, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19207C5  : virtual S7856C12 , S7856C15 , virtual S7856C24 {
  ~S19207C5(); // tgen
  S19207C5(); // tgen
};
//SIG(-1 S19207C5) C1{ VBC2{ m} BC3{ m} VBC4{ m}}


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

static void Test_S19207C5()
{
  extern Class_Descriptor cd_S19207C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S19207C5, buf);
    S19207C5 *dp, &lv = *(dp=new (buf) S19207C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S19207C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19207C5)");
    check_base_class_offset(lv, (S7856C12*), 0, "S19207C5");
    check_base_class_offset(lv, (S7856C15*), 0, "S19207C5");
    check_base_class_offset(lv, (S7856C24*), 0, "S19207C5");
    test_class_info(&lv, &cd_S19207C5);
    dp->~S19207C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19207C5(Test_S19207C5, "S19207C5", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S19207C5C1Ev();
extern void _ZN8S19207C5D1Ev();
Name_Map name_map_S19207C5[] = {
  NSPAIR(_ZN8S19207C5C1Ev),
  NSPAIR(_ZN8S19207C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
static Base_Class bases_S19207C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19207C5[];
static  VTBL_ENTRY vtc_S19207C5[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
extern VTBL_ENTRY _ZTV8S19207C5[];
static  VTT_ENTRY vtt_S19207C5[] = {
  {&(_ZTV8S19207C5[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
Class_Descriptor cd_S19207C5 = {  "S19207C5", // class name
  bases_S19207C5, 3,
  &(vtc_S19207C5[0]), // expected_vtbl_contents
  &(vtt_S19207C5[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S19207C5),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19207C5),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19207C5),1, //virtual table table var
  0, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19207C2  : S7856C24 , S7856C15 , S19207C5 {
  int s19207c2f0;
  ~S19207C2(); // tgen
  S19207C2(); // tgen
};
//SIG(-1 S19207C2) C1{ BC2{ m} BC3{ m} BC4{ VBC5{ m} BC3 VBC2} Fi}


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

static void Test_S19207C2()
{
  extern Class_Descriptor cd_S19207C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S19207C2, buf);
    S19207C2 *dp, &lv = *(dp=new (buf) S19207C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S19207C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19207C2)");
    /*is_ambiguous_... S19207C2::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), 0, "S19207C2");
    /*is_ambiguous_... S19207C2::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(8,4), "S19207C2");
    check_base_class_offset(lv, (S7856C12*)(S19207C5*), 0, "S19207C2");
    check_base_class_offset(lv, (S7856C15*)(S19207C5*), 0, "S19207C2");
    check_base_class_offset(lv, (S7856C24*)(S19207C5*), ABISELECT(12,8), "S19207C2");
    check_base_class_offset(lv, (S19207C5*), 0, "S19207C2");
    check_field_offset(lv, s19207c2f0, ABISELECT(8,4), "S19207C2.s19207c2f0");
    test_class_info(&lv, &cd_S19207C2);
    dp->~S19207C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19207C2(Test_S19207C2, "S19207C2", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S19207C2C1Ev();
extern void _ZN8S19207C2D1Ev();
Name_Map name_map_S19207C2[] = {
  NSPAIR(_ZN8S19207C2C1Ev),
  NSPAIR(_ZN8S19207C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
static Base_Class bases_S19207C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19207C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19207C2[];
static  VTBL_ENTRY vtc_S19207C2[] = {
  ABISELECT(12,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C2[0]),
};
extern VTBL_ENTRY _ZTV8S19207C2[];
static  VTBL_ENTRY _tg__ZTV8S19207C5__8S19207C2[] = {
  ABISELECT(12,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTT_ENTRY vtt_S19207C2[] = {
  {&(_ZTV8S19207C2[4]),  4,4},
  {&(_tg__ZTV8S19207C5__8S19207C2[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S19207C2[];
extern  VTBL_ENTRY _ZTV8S19207C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C2[];
Class_Descriptor cd_S19207C2 = {  "S19207C2", // class name
  bases_S19207C2, 6,
  &(vtc_S19207C2[0]), // expected_vtbl_contents
  &(vtt_S19207C2[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S19207C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19207C2),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19207C2),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19207C10  : virtual S7856C15 {
  ~S19207C10(); // tgen
  S19207C10(); // tgen
};
//SIG(-1 S19207C10) C1{ VBC2{ m}}


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

static void Test_S19207C10()
{
  extern Class_Descriptor cd_S19207C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S19207C10, buf);
    S19207C10 *dp, &lv = *(dp=new (buf) S19207C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S19207C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19207C10)");
    check_base_class_offset(lv, (S7856C15*), 0, "S19207C10");
    test_class_info(&lv, &cd_S19207C10);
    dp->~S19207C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19207C10(Test_S19207C10, "S19207C10", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN9S19207C10C1Ev();
extern void _ZN9S19207C10D1Ev();
Name_Map name_map_S19207C10[] = {
  NSPAIR(_ZN9S19207C10C1Ev),
  NSPAIR(_ZN9S19207C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
static Base_Class bases_S19207C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19207C10[];
static  VTBL_ENTRY vtc_S19207C10[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C10[0]),
};
extern VTBL_ENTRY _ZTV9S19207C10[];
static  VTT_ENTRY vtt_S19207C10[] = {
  {&(_ZTV9S19207C10[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19207C10[];
extern  VTBL_ENTRY _ZTV9S19207C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C10[];
Class_Descriptor cd_S19207C10 = {  "S19207C10", // class name
  bases_S19207C10, 1,
  &(vtc_S19207C10[0]), // expected_vtbl_contents
  &(vtt_S19207C10[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI9S19207C10),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19207C10),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19207C10),1, //virtual table table var
  0, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19207C12  : S7856C12 , virtual S19207C5 , virtual S7856C15 {
  ~S19207C12(); // tgen
  S19207C12(); // tgen
};
//SIG(-1 S19207C12) C1{ BC2{ m} VBC3{ VBC2 BC4{ m} VBC5{ m}} VBC4}


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

static void Test_S19207C12()
{
  extern Class_Descriptor cd_S19207C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19207C12, buf);
    S19207C12 *dp, &lv = *(dp=new (buf) S19207C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19207C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19207C12)");
    /*is_ambiguous_... S19207C12::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), 0, "S19207C12");
    check_base_class_offset(lv, (S7856C12*)(S19207C5*), ABISELECT(8,4), "S19207C12");
    check_base_class_offset(lv, (S7856C15*)(S19207C5*), 0, "S19207C12");
    check_base_class_offset(lv, (S7856C24*)(S19207C5*), 0, "S19207C12");
    check_base_class_offset(lv, (S19207C5*), 0, "S19207C12");
    /*is_ambiguous_... S19207C12::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(8,4), "S19207C12");
    test_class_info(&lv, &cd_S19207C12);
    dp->~S19207C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19207C12(Test_S19207C12, "S19207C12", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN9S19207C12C1Ev();
extern void _ZN9S19207C12D1Ev();
Name_Map name_map_S19207C12[] = {
  NSPAIR(_ZN9S19207C12C1Ev),
  NSPAIR(_ZN9S19207C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
static Base_Class bases_S19207C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19207C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19207C12[];
static  VTBL_ENTRY vtc_S19207C12[] = {
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C12[0]),
};
extern VTBL_ENTRY _ZTV9S19207C12[];
static  VTBL_ENTRY _tg__ZTV8S19207C5__9S19207C12[] = {
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTT_ENTRY vtt_S19207C12[] = {
  {&(_ZTV9S19207C12[6]),  6,6},
  {&(_ZTV9S19207C12[6]),  6,6},
  {&(_tg__ZTV8S19207C5__9S19207C12[4]),  4,4},
};
extern VTBL_ENTRY _ZTI9S19207C12[];
extern  VTBL_ENTRY _ZTV9S19207C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C12[];
Class_Descriptor cd_S19207C12 = {  "S19207C12", // class name
  bases_S19207C12, 6,
  &(vtc_S19207C12[0]), // expected_vtbl_contents
  &(vtt_S19207C12[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI9S19207C12),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19207C12),6, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19207C12),3, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19207C13  : S7856C15 , virtual S7856C12 , virtual S7856C24 , S19207C5 , virtual S19207C12 {
  virtual  ~S19207C13(); // _ZN9S19207C13D2Ev
  S19207C13(); // tgen
};
//SIG(-1 S19207C13) C1{ BC2{ m} VBC3{ m} VBC4{ m} BC5{ VBC3 BC2 VBC4} VBC6{ BC3 VBC5 VBC2} vd}


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

static void Test_S19207C13()
{
  extern Class_Descriptor cd_S19207C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S19207C13, buf);
    S19207C13 *dp, &lv = *(dp=new (buf) S19207C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S19207C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19207C13)");
    /*is_ambiguous_... S19207C13::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(8,4), "S19207C13");
    /*is_ambiguous_... S19207C13::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), 0, "S19207C13");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*), 0, "S19207C13");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*), 0, "S19207C13");
    check_base_class_offset(lv, (S7856C24*), 0, "S19207C13");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*), 0, "S19207C13");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*), 0, "S19207C13");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*), 0, "S19207C13");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S19207C5*), 0, "S19207C13");
    /*is_ambiguous_... S19207C12::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C12*), ABISELECT(16,8), "S19207C13");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*), ABISELECT(16,8), "S19207C13");
    check_base_class_offset(lv, (S19207C5*)(S19207C12*), ABISELECT(16,8), "S19207C13");
    /*is_ambiguous_... S19207C12::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C12*), ABISELECT(24,12), "S19207C13");
    check_base_class_offset(lv, (S19207C12*), ABISELECT(16,8), "S19207C13");
    test_class_info(&lv, &cd_S19207C13);
    dp->~S19207C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19207C13(Test_S19207C13, "S19207C13", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN9S19207C13C1Ev();
extern void _ZN9S19207C13D2Ev();
Name_Map name_map_S19207C13[] = {
  NSPAIR(_ZN9S19207C13C1Ev),
  NSPAIR(_ZN9S19207C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C12;
extern VTBL_ENTRY _ZTI9S19207C12[];
extern  VTBL_ENTRY _ZTV9S19207C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C12[];
static Base_Class bases_S19207C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19207C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19207C5,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19207C12,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19207C13[];
extern void _ZN9S19207C13D1Ev();
extern void _ZN9S19207C13D0Ev();
static  VTBL_ENTRY vtc_S19207C13[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
  (VTBL_ENTRY)&_ZN9S19207C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C13D0Ev,
  ABISELECT(8,4),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
};
extern VTBL_ENTRY _ZTV9S19207C13[];
static  VTBL_ENTRY _tg__ZTV8S19207C5__A__9S19207C13[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C13[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C5__A1__9S19207C13[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTT_ENTRY vtt_S19207C13[] = {
  {&(_ZTV9S19207C13[7]),  7,15},
  {&(_tg__ZTV8S19207C5__A__9S19207C13[4]),  4,4},
  {&(_ZTV9S19207C13[15]),  15,15},
  {&(_ZTV9S19207C13[15]),  15,15},
  {&(_tg__ZTV9S19207C12__9S19207C13[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C13[6]),  6,6},
  {&(_tg__ZTV8S19207C5__A1__9S19207C13[4]),  4,4},
};
extern VTBL_ENTRY _ZTI9S19207C13[];
extern  VTBL_ENTRY _ZTV9S19207C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C13[];
Class_Descriptor cd_S19207C13 = {  "S19207C13", // class name
  bases_S19207C13, 10,
  &(vtc_S19207C13[0]), // expected_vtbl_contents
  &(vtt_S19207C13[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI9S19207C13),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19207C13),15, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19207C13),7, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19207C11  : virtual S7856C12 , virtual S7856C15 , virtual S19207C12 , S7856C24 , S19207C13 {
  virtual  ~S19207C11(); // _ZN9S19207C11D2Ev
  S19207C11(); // tgen
};
//SIG(-1 S19207C11) C1{ VBC2{ m} VBC3{ m} VBC4{ BC2 VBC5{ VBC2 BC3 VBC6{ m}} VBC3} BC6 BC7{ BC3 VBC2 VBC6 BC5 VBC4 vd} vd}


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

static void Test_S19207C11()
{
  extern Class_Descriptor cd_S19207C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S19207C11, buf);
    S19207C11 *dp, &lv = *(dp=new (buf) S19207C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S19207C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19207C11)");
    /*is_ambiguous_... S19207C11::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), 0, "S19207C11");
    /*is_ambiguous_... S19207C11::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*), 0, "S19207C11");
    /*is_ambiguous_... S19207C13::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C13*), 0, "S19207C11");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*)(S19207C13*), 0, "S19207C11");
    /*is_ambiguous_... S19207C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(9,5), "S19207C11");
    /*is_ambiguous_... S19207C12::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C12*), ABISELECT(9,5), "S19207C11");
    /*is_ambiguous_... S19207C12::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C12*), ABISELECT(16,8), "S19207C11");
    /*is_ambiguous_... S19207C11::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*), ABISELECT(16,8), "S19207C11");
    /*is_ambiguous_... S19207C11::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*), ABISELECT(24,12), "S19207C11");
    check_base_class_offset(lv, (S7856C24*)(S19207C13*), ABISELECT(24,12), "S19207C11");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*)(S19207C13*), ABISELECT(24,12), "S19207C11");
    check_base_class_offset(lv, (S19207C5*)(S19207C12*), ABISELECT(16,8), "S19207C11");
    check_base_class_offset(lv, (S19207C12*), ABISELECT(16,8), "S19207C11");
    check_base_class_offset(lv, (S19207C12*)(S19207C13*), ABISELECT(16,8), "S19207C11");
    /*is_ambiguous_... S19207C11::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), 0, "S19207C11");
    /*is_ambiguous_... S19207C13::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C13*), ABISELECT(8,4), "S19207C11");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*)(S19207C13*), 0, "S19207C11");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C13*), 0, "S19207C11");
    check_base_class_offset(lv, (S19207C13*), 0, "S19207C11");
    test_class_info(&lv, &cd_S19207C11);
    dp->~S19207C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19207C11(Test_S19207C11, "S19207C11", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN9S19207C11C1Ev();
extern void _ZN9S19207C11D2Ev();
Name_Map name_map_S19207C11[] = {
  NSPAIR(_ZN9S19207C11C1Ev),
  NSPAIR(_ZN9S19207C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C12;
extern VTBL_ENTRY _ZTI9S19207C12[];
extern  VTBL_ENTRY _ZTV9S19207C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C13;
extern VTBL_ENTRY _ZTI9S19207C13[];
extern  VTBL_ENTRY _ZTV9S19207C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C13[];
static Base_Class bases_S19207C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19207C5,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19207C12,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19207C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19207C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19207C11[];
extern void _ZN9S19207C11D1Ev();
extern void _ZN9S19207C11D0Ev();
static  VTBL_ENTRY vtc_S19207C11[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C11[0]),
  (VTBL_ENTRY)&_ZN9S19207C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C11D0Ev,
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19207C11[0]),
};
extern VTBL_ENTRY _ZTV9S19207C11[];
extern void _ZN9S19207C13D1Ev();
extern void _ZN9S19207C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C13__9S19207C11[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
  (VTBL_ENTRY)&_ZN9S19207C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19207C59S19207C13__A1__9S19207C11[] = {
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C13__9S19207C11[] = {
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C11[] = {
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C5__9S19207C11[] = {
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTT_ENTRY vtt_S19207C11[] = {
  {&(_ZTV9S19207C11[7]),  7,15},
  {&(_tg__ZTV9S19207C13__9S19207C11[7]),  7,9},
  {&(_tg__ZTV8S19207C59S19207C13__A1__9S19207C11[4]),  4,4},
  {&(_tg__ZTV9S19207C12__9S19207C13__9S19207C11[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C13__9S19207C11[6]),  6,6},
  {&(_ZTV9S19207C11[15]),  15,15},
  {&(_ZTV9S19207C11[15]),  15,15},
  {&(_tg__ZTV9S19207C12__9S19207C11[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C11[6]),  6,6},
  {&(_tg__ZTV8S19207C5__9S19207C11[4]),  4,4},
};
extern VTBL_ENTRY _ZTI9S19207C11[];
extern  VTBL_ENTRY _ZTV9S19207C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C11[];
Class_Descriptor cd_S19207C11 = {  "S19207C11", // class name
  bases_S19207C11, 12,
  &(vtc_S19207C11[0]), // expected_vtbl_contents
  &(vtt_S19207C11[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI9S19207C11),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19207C11),15, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19207C11),10, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19207C9  : virtual S19207C5 , virtual S19207C10 , virtual S19207C2 , S7856C24 , virtual S19207C11 {
  int s19207c9f0;
  virtual  ~S19207C9(); // _ZN8S19207C9D2Ev
  S19207C9(); // tgen
};
//SIG(-1 S19207C9) C1{ VBC2{ VBC3{ m} BC4{ m} VBC5{ m}} VBC6{ VBC4} VBC7{ BC5 BC4 BC2 Fi} BC5 VBC8{ VBC3 VBC4 VBC9{ BC3 VBC2 VBC4} BC5 BC10{ BC4 VBC3 VBC5 BC2 VBC9 vd} vd} vd Fi}


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

static void Test_S19207C9()
{
  extern Class_Descriptor cd_S19207C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S19207C9, buf);
    S19207C9 *dp, &lv = *(dp=new (buf) S19207C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S19207C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19207C9)");
    /*is_ambiguous_... S19207C9::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*), 0, "S19207C9");
    check_base_class_offset(lv, (S7856C12*)(S19207C5*)(S19207C2*), 0, "S19207C9");
    /*is_ambiguous_... S19207C11::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C11*), 0, "S19207C9");
    /*is_ambiguous_... S19207C13::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C13*)(S19207C11*), 0, "S19207C9");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*)(S19207C13*)(S19207C11*), 0, "S19207C9");
    /*is_ambiguous_... S19207C9::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*), ABISELECT(48,28), "S19207C9");
    /*is_ambiguous_... S19207C9::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*), ABISELECT(12,8), "S19207C9");
    check_base_class_offset(lv, (S7856C24*)(S19207C5*)(S19207C2*), ABISELECT(12,8), "S19207C9");
    check_base_class_offset(lv, (S7856C24*)(S19207C13*)(S19207C11*), ABISELECT(12,8), "S19207C9");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*)(S19207C13*)(S19207C11*), ABISELECT(12,8), "S19207C9");
    /*is_ambiguous_... S19207C9::S19207C5 */ AMB_check_base_class_offset(lv, (S19207C5*), ABISELECT(48,28), "S19207C9");
    check_base_class_offset(lv, (S19207C5*)(S19207C12*), ABISELECT(48,28), "S19207C9");
    check_base_class_offset(lv, (S7856C15*)(S19207C10*), 0, "S19207C9");
    /*is_ambiguous_... S19207C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C11*), 0, "S19207C9");
    /*is_ambiguous_... S19207C12::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C12*), 0, "S19207C9");
    check_base_class_offset(lv, (S19207C10*), 0, "S19207C9");
    /*is_ambiguous_... S19207C2::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C2*), ABISELECT(16,12), "S19207C9");
    /*is_ambiguous_... S19207C2::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C2*), ABISELECT(24,16), "S19207C9");
    check_base_class_offset(lv, (S7856C15*)(S19207C5*)(S19207C2*), ABISELECT(16,12), "S19207C9");
    check_base_class_offset(lv, (S19207C5*)(S19207C2*), ABISELECT(16,12), "S19207C9");
    check_base_class_offset(lv, (S19207C2*), ABISELECT(16,12), "S19207C9");
    /*is_ambiguous_... S19207C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), 0, "S19207C9");
    /*is_ambiguous_... S19207C12::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C12*), ABISELECT(48,28), "S19207C9");
    check_base_class_offset(lv, (S19207C12*)(S19207C11*), ABISELECT(48,28), "S19207C9");
    check_base_class_offset(lv, (S19207C12*)(S19207C13*)(S19207C11*), ABISELECT(48,28), "S19207C9");
    /*is_ambiguous_... S19207C11::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C11*), ABISELECT(32,20), "S19207C9");
    /*is_ambiguous_... S19207C13::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C13*)(S19207C11*), ABISELECT(40,24), "S19207C9");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*)(S19207C13*)(S19207C11*), ABISELECT(32,20), "S19207C9");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C13*)(S19207C11*), ABISELECT(32,20), "S19207C9");
    check_base_class_offset(lv, (S19207C13*)(S19207C11*), ABISELECT(32,20), "S19207C9");
    check_base_class_offset(lv, (S19207C11*), ABISELECT(32,20), "S19207C9");
    check_field_offset(lv, s19207c9f0, ABISELECT(8,4), "S19207C9.s19207c9f0");
    test_class_info(&lv, &cd_S19207C9);
    dp->~S19207C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19207C9(Test_S19207C9, "S19207C9", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN8S19207C9C1Ev();
extern void _ZN8S19207C9D2Ev();
Name_Map name_map_S19207C9[] = {
  NSPAIR(_ZN8S19207C9C1Ev),
  NSPAIR(_ZN8S19207C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C10;
extern VTBL_ENTRY _ZTI9S19207C10[];
extern  VTBL_ENTRY _ZTV9S19207C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C10[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C2;
extern VTBL_ENTRY _ZTI8S19207C2[];
extern  VTBL_ENTRY _ZTV8S19207C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C2[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19207C12;
extern VTBL_ENTRY _ZTI9S19207C12[];
extern  VTBL_ENTRY _ZTV9S19207C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C13;
extern VTBL_ENTRY _ZTI9S19207C13[];
extern  VTBL_ENTRY _ZTV9S19207C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C13[];
extern Class_Descriptor cd_S19207C11;
extern VTBL_ENTRY _ZTI9S19207C11[];
extern  VTBL_ENTRY _ZTV9S19207C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C11[];
static Base_Class bases_S19207C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19207C5,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19207C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19207C5,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19207C2,    ABISELECT(16,12), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19207C12,    ABISELECT(48,28), //bcp->offset
    26, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19207C5,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19207C13,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19207C11,    ABISELECT(32,20), //bcp->offset
    16, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19207C9[];
extern void _ZN8S19207C9D1Ev();
extern void _ZN8S19207C9D0Ev();
extern void ABISELECT(_ZTv0_n64_N8S19207C9D1Ev,_ZTv0_n32_N8S19207C9D1Ev)();
extern void ABISELECT(_ZThn32_N8S19207C9D1Ev,_ZThn20_N8S19207C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19207C9D0Ev,_ZTv0_n32_N8S19207C9D0Ev)();
extern void ABISELECT(_ZThn32_N8S19207C9D0Ev,_ZThn20_N8S19207C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19207C9[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  ABISELECT(12,8),
  0,
  ABISELECT(48,28),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
  (VTBL_ENTRY)&_ZN8S19207C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19207C9D0Ev,
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C9D1Ev,_ZTv0_n32_N8S19207C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C9D0Ev,_ZTv0_n32_N8S19207C9D0Ev),
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
};
extern VTBL_ENTRY _ZTV8S19207C9[];
static  VTBL_ENTRY _tg__ZTV8S19207C5__8S19207C9[] = {
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C10__8S19207C9[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__8S19207C9[] = {
  -4,
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C58S19207C2__A1__8S19207C9[] = {
  -4,
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
extern void _ZN9S19207C11D1Ev();
extern void _ZN9S19207C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C11__8S19207C9[] = {
  ABISELECT(-32,-20),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C11[0]),
  (VTBL_ENTRY)&_ZN9S19207C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C11D0Ev,
};
extern void _ZN9S19207C13D1Ev();
extern void _ZN9S19207C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C139S19207C11__8S19207C9[] = {
  ABISELECT(-32,-20),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
  (VTBL_ENTRY)&_ZN9S19207C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19207C59S19207C139S19207C11__A2__8S19207C9[] = {
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C139S19207C11__8S19207C9[] = {
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C11__8S19207C9[] = {
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19207C11[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__8S19207C9[] = {
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C12[0]),
};
static  VTT_ENTRY vtt_S19207C9[] = {
  {&(_ZTV8S19207C9[10]),  10,32},
  {&(_ZTV8S19207C9[32]),  32,32},
  {&(_ZTV8S19207C9[10]),  10,32},
  {&(_ZTV8S19207C9[16]),  16,32},
  {&(_ZTV8S19207C9[24]),  24,32},
  {&(_ZTV8S19207C9[32]),  32,32},
  {&(_tg__ZTV8S19207C5__8S19207C9[4]),  4,4},
  {&(_tg__ZTV9S19207C10__8S19207C9[3]),  3,3},
  {&(_tg__ZTV8S19207C2__8S19207C9[4]),  4,4},
  {&(_tg__ZTV8S19207C58S19207C2__A1__8S19207C9[4]),  4,4},
  {&(_tg__ZTV9S19207C11__8S19207C9[7]),  7,9},
  {&(_tg__ZTV9S19207C139S19207C11__8S19207C9[7]),  7,9},
  {&(_tg__ZTV8S19207C59S19207C139S19207C11__A2__8S19207C9[4]),  4,4},
  {&(_tg__ZTV9S19207C12__9S19207C139S19207C11__8S19207C9[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C139S19207C11__8S19207C9[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C11__8S19207C9[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C11__8S19207C9[6]),  6,6},
  {&(_tg__ZTV9S19207C12__8S19207C9[6]),  6,6},
  {&(_tg__ZTV9S19207C12__8S19207C9[6]),  6,6},
};
extern VTBL_ENTRY _ZTI8S19207C9[];
extern  VTBL_ENTRY _ZTV8S19207C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C9[];
static VTBL_ENTRY alt_thunk_names108[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19207C9D0Ev,_ZTv0_n32_N8S19207C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19207C9D0Ev,_ZThn20_N8S19207C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19207C9D1Ev,_ZTv0_n32_N8S19207C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19207C9D1Ev,_ZThn20_N8S19207C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19207C9 = {  "S19207C9", // class name
  bases_S19207C9, 20,
  &(vtc_S19207C9[0]), // expected_vtbl_contents
  &(vtt_S19207C9[0]), // expected_vtt_contents
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI8S19207C9),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19207C9),32, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19207C9),19, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names108,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19207C8  : S19207C9 , S7856C15 {
  ~S19207C8(); // tgen
  S19207C8(); // tgen
};
//SIG(-1 S19207C8) C1{ BC2{ VBC3{ VBC4{ m} BC5{ m} VBC6{ m}} VBC7{ VBC5} VBC8{ BC6 BC5 BC3 Fi} BC6 VBC9{ VBC4 VBC5 VBC10{ BC4 VBC3 VBC5} BC6 BC11{ BC5 VBC4 VBC6 BC3 VBC10 vd} vd} vd Fi} BC5}


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

static void Test_S19207C8()
{
  extern Class_Descriptor cd_S19207C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S19207C8, buf);
    S19207C8 *dp, &lv = *(dp=new (buf) S19207C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S19207C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19207C8)");
    /*is_ambiguous_... S19207C8::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*), 0, "S19207C8");
    check_base_class_offset(lv, (S7856C12*)(S19207C5*)(S19207C2*), 0, "S19207C8");
    /*is_ambiguous_... S19207C11::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C11*), 0, "S19207C8");
    /*is_ambiguous_... S19207C13::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C13*)(S19207C11*), 0, "S19207C8");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*)(S19207C13*)(S19207C11*), 0, "S19207C8");
    /*is_ambiguous_... S19207C8::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*), ABISELECT(48,28), "S19207C8");
    /*is_ambiguous_... S19207C8::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*), ABISELECT(12,8), "S19207C8");
    check_base_class_offset(lv, (S7856C24*)(S19207C5*)(S19207C2*), ABISELECT(12,8), "S19207C8");
    check_base_class_offset(lv, (S7856C24*)(S19207C13*)(S19207C11*), ABISELECT(12,8), "S19207C8");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*)(S19207C13*)(S19207C11*), ABISELECT(12,8), "S19207C8");
    /*is_ambiguous_... S19207C9::S19207C5 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C9*), ABISELECT(48,28), "S19207C8");
    check_base_class_offset(lv, (S19207C5*)(S19207C12*), ABISELECT(48,28), "S19207C8");
    check_base_class_offset(lv, (S7856C15*)(S19207C10*), ABISELECT(12,8), "S19207C8");
    /*is_ambiguous_... S19207C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C11*), ABISELECT(12,8), "S19207C8");
    /*is_ambiguous_... S19207C12::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C12*), ABISELECT(12,8), "S19207C8");
    check_base_class_offset(lv, (S19207C10*)(S19207C9*), 0, "S19207C8");
    /*is_ambiguous_... S19207C2::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C2*), ABISELECT(16,12), "S19207C8");
    /*is_ambiguous_... S19207C2::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C2*), ABISELECT(24,16), "S19207C8");
    check_base_class_offset(lv, (S7856C15*)(S19207C5*)(S19207C2*), ABISELECT(16,12), "S19207C8");
    check_base_class_offset(lv, (S19207C5*)(S19207C2*), ABISELECT(16,12), "S19207C8");
    check_base_class_offset(lv, (S19207C2*)(S19207C9*), ABISELECT(16,12), "S19207C8");
    /*is_ambiguous_... S19207C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C9*), 0, "S19207C8");
    /*is_ambiguous_... S19207C12::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C12*), ABISELECT(48,28), "S19207C8");
    check_base_class_offset(lv, (S19207C12*)(S19207C11*), ABISELECT(48,28), "S19207C8");
    check_base_class_offset(lv, (S19207C12*)(S19207C13*)(S19207C11*), ABISELECT(48,28), "S19207C8");
    /*is_ambiguous_... S19207C11::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C11*), ABISELECT(32,20), "S19207C8");
    /*is_ambiguous_... S19207C13::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C13*)(S19207C11*), ABISELECT(40,24), "S19207C8");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*)(S19207C13*)(S19207C11*), ABISELECT(32,20), "S19207C8");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C13*)(S19207C11*), ABISELECT(32,20), "S19207C8");
    check_base_class_offset(lv, (S19207C13*)(S19207C11*), ABISELECT(32,20), "S19207C8");
    check_base_class_offset(lv, (S19207C11*)(S19207C9*), ABISELECT(32,20), "S19207C8");
    check_base_class_offset(lv, (S19207C9*), 0, "S19207C8");
    /*is_ambiguous_... S19207C8::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), 0, "S19207C8");
    test_class_info(&lv, &cd_S19207C8);
    dp->~S19207C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19207C8(Test_S19207C8, "S19207C8", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN8S19207C8C1Ev();
extern void _ZN8S19207C8D1Ev();
Name_Map name_map_S19207C8[] = {
  NSPAIR(_ZN8S19207C8C1Ev),
  NSPAIR(_ZN8S19207C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C10;
extern VTBL_ENTRY _ZTI9S19207C10[];
extern  VTBL_ENTRY _ZTV9S19207C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C10[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C2;
extern VTBL_ENTRY _ZTI8S19207C2[];
extern  VTBL_ENTRY _ZTV8S19207C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C2[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19207C12;
extern VTBL_ENTRY _ZTI9S19207C12[];
extern  VTBL_ENTRY _ZTV9S19207C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C13;
extern VTBL_ENTRY _ZTI9S19207C13[];
extern  VTBL_ENTRY _ZTV9S19207C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C13[];
extern Class_Descriptor cd_S19207C11;
extern VTBL_ENTRY _ZTI9S19207C11[];
extern  VTBL_ENTRY _ZTV9S19207C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C11[];
extern Class_Descriptor cd_S19207C9;
extern VTBL_ENTRY _ZTI8S19207C9[];
extern  VTBL_ENTRY _ZTV8S19207C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C9[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
static Base_Class bases_S19207C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19207C5,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19207C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19207C5,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19207C2,    ABISELECT(16,12), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19207C12,    ABISELECT(48,28), //bcp->offset
    26, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19207C5,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19207C13,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19207C11,    ABISELECT(32,20), //bcp->offset
    16, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S19207C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19207C8[];
extern void _ZN8S19207C8D1Ev();
extern void _ZN8S19207C8D0Ev();
extern void ABISELECT(_ZTv0_n64_N8S19207C8D1Ev,_ZTv0_n32_N8S19207C8D1Ev)();
extern void ABISELECT(_ZThn32_N8S19207C8D1Ev,_ZThn20_N8S19207C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19207C8D0Ev,_ZTv0_n32_N8S19207C8D0Ev)();
extern void ABISELECT(_ZThn32_N8S19207C8D0Ev,_ZThn20_N8S19207C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19207C8[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  ABISELECT(12,8),
  0,
  ABISELECT(48,28),
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C8[0]),
  (VTBL_ENTRY)&_ZN8S19207C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19207C8D0Ev,
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19207C8[0]),
  ABISELECT(-32,-20),
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19207C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C8D1Ev,_ZTv0_n32_N8S19207C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C8D0Ev,_ZTv0_n32_N8S19207C8D0Ev),
  ABISELECT(-36,-20),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19207C8[0]),
};
extern VTBL_ENTRY _ZTV8S19207C8[];
extern void _ZN8S19207C9D1Ev();
extern void _ZN8S19207C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19207C9__8S19207C8[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  ABISELECT(12,8),
  0,
  ABISELECT(48,28),
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
  (VTBL_ENTRY)&_ZN8S19207C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19207C9D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__8S19207C9__8S19207C8[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__8S19207C9__8S19207C8[] = {
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S19207C9D1Ev,_ZTv0_n32_N8S19207C9D1Ev)();
extern void ABISELECT(_ZThn32_N8S19207C9D1Ev,_ZThn20_N8S19207C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19207C9D0Ev,_ZTv0_n32_N8S19207C9D0Ev)();
extern void ABISELECT(_ZThn32_N8S19207C9D0Ev,_ZThn20_N8S19207C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C11__8S19207C9__8S19207C8[] = {
  ABISELECT(-32,-20),
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C9D1Ev,_ZTv0_n32_N8S19207C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C9D0Ev,_ZTv0_n32_N8S19207C9D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19207C5__8S19207C8[] = {
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C10__8S19207C8[] = {
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__8S19207C8[] = {
  -4,
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C58S19207C2__A1__8S19207C8[] = {
  -4,
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
extern void _ZN9S19207C11D1Ev();
extern void _ZN9S19207C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C11__8S19207C8[] = {
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C11[0]),
  (VTBL_ENTRY)&_ZN9S19207C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C11D0Ev,
};
extern void _ZN9S19207C13D1Ev();
extern void _ZN9S19207C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C139S19207C11__8S19207C8[] = {
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
  (VTBL_ENTRY)&_ZN9S19207C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19207C59S19207C139S19207C11__A2__8S19207C8[] = {
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C139S19207C11__8S19207C8[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C11__8S19207C8[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19207C11[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__8S19207C8[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C12[0]),
};
static  VTT_ENTRY vtt_S19207C8[] = {
  {&(_ZTV8S19207C8[10]),  10,32},
  {&(_tg__ZTV8S19207C9__8S19207C8[10]),  10,12},
  {&(_tg__ZTV9S19207C12__8S19207C9__8S19207C8[6]),  6,6},
  {&(_tg__ZTV8S19207C9__8S19207C8[10]),  10,12},
  {&(_tg__ZTV8S19207C2__8S19207C9__8S19207C8[4]),  4,4},
  {&(_tg__ZTV9S19207C11__8S19207C9__8S19207C8[8]),  8,10},
  {&(_tg__ZTV9S19207C12__8S19207C9__8S19207C8[6]),  6,6},
  {&(_ZTV8S19207C8[32]),  32,32},
  {&(_ZTV8S19207C8[10]),  10,32},
  {&(_ZTV8S19207C8[16]),  16,32},
  {&(_ZTV8S19207C8[24]),  24,32},
  {&(_ZTV8S19207C8[32]),  32,32},
  {&(_tg__ZTV8S19207C5__8S19207C8[4]),  4,4},
  {&(_tg__ZTV9S19207C10__8S19207C8[3]),  3,3},
  {&(_tg__ZTV8S19207C2__8S19207C8[4]),  4,4},
  {&(_tg__ZTV8S19207C58S19207C2__A1__8S19207C8[4]),  4,4},
  {&(_tg__ZTV9S19207C11__8S19207C8[7]),  7,9},
  {&(_tg__ZTV9S19207C139S19207C11__8S19207C8[7]),  7,9},
  {&(_tg__ZTV8S19207C59S19207C139S19207C11__A2__8S19207C8[4]),  4,4},
  {&(_tg__ZTV9S19207C12__9S19207C139S19207C11__8S19207C8[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C139S19207C11__8S19207C8[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C11__8S19207C8[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C11__8S19207C8[6]),  6,6},
  {&(_tg__ZTV9S19207C12__8S19207C8[6]),  6,6},
  {&(_tg__ZTV9S19207C12__8S19207C8[6]),  6,6},
};
extern VTBL_ENTRY _ZTI8S19207C8[];
extern  VTBL_ENTRY _ZTV8S19207C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C8[];
static VTBL_ENTRY alt_thunk_names109[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19207C9D0Ev,_ZTv0_n32_N8S19207C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19207C9D0Ev,_ZThn20_N8S19207C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19207C9D1Ev,_ZTv0_n32_N8S19207C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19207C9D1Ev,_ZThn20_N8S19207C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19207C8D0Ev,_ZTv0_n32_N8S19207C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19207C8D0Ev,_ZThn20_N8S19207C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19207C8D1Ev,_ZTv0_n32_N8S19207C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19207C8D1Ev,_ZThn20_N8S19207C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19207C8 = {  "S19207C8", // class name
  bases_S19207C8, 22,
  &(vtc_S19207C8[0]), // expected_vtbl_contents
  &(vtt_S19207C8[0]), // expected_vtt_contents
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI8S19207C8),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19207C8),32, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19207C8),25, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names109,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19207C7  : virtual S7856C15 , S19207C8 {
  ~S19207C7(); // tgen
  S19207C7(); // tgen
};
//SIG(-1 S19207C7) C1{ VBC2{ m} BC3{ BC4{ VBC5{ VBC6{ m} BC2 VBC7{ m}} VBC8{ VBC2} VBC9{ BC7 BC2 BC5 Fi} BC7 VBC10{ VBC6 VBC2 VBC11{ BC6 VBC5 VBC2} BC7 BC12{ BC2 VBC6 VBC7 BC5 VBC11 vd} vd} vd Fi} BC2}}


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

static void Test_S19207C7()
{
  extern Class_Descriptor cd_S19207C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S19207C7, buf);
    S19207C7 *dp, &lv = *(dp=new (buf) S19207C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S19207C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19207C7)");
    /*is_ambiguous_... S19207C7::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(12,8), "S19207C7");
    check_base_class_offset(lv, (S7856C15*)(S19207C10*), ABISELECT(12,8), "S19207C7");
    /*is_ambiguous_... S19207C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C11*), ABISELECT(12,8), "S19207C7");
    /*is_ambiguous_... S19207C12::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C12*), ABISELECT(12,8), "S19207C7");
    /*is_ambiguous_... S19207C7::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*), 0, "S19207C7");
    check_base_class_offset(lv, (S7856C12*)(S19207C5*)(S19207C2*), 0, "S19207C7");
    /*is_ambiguous_... S19207C11::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C11*), 0, "S19207C7");
    /*is_ambiguous_... S19207C13::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C13*)(S19207C11*), 0, "S19207C7");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*)(S19207C13*)(S19207C11*), 0, "S19207C7");
    /*is_ambiguous_... S19207C7::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*), ABISELECT(48,28), "S19207C7");
    /*is_ambiguous_... S19207C7::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*), ABISELECT(12,8), "S19207C7");
    check_base_class_offset(lv, (S7856C24*)(S19207C5*)(S19207C2*), ABISELECT(12,8), "S19207C7");
    check_base_class_offset(lv, (S7856C24*)(S19207C13*)(S19207C11*), ABISELECT(12,8), "S19207C7");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*)(S19207C13*)(S19207C11*), ABISELECT(12,8), "S19207C7");
    /*is_ambiguous_... S19207C9::S19207C5 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C9*)(S19207C8*), ABISELECT(48,28), "S19207C7");
    check_base_class_offset(lv, (S19207C5*)(S19207C12*), ABISELECT(48,28), "S19207C7");
    check_base_class_offset(lv, (S19207C10*)(S19207C9*)(S19207C8*), 0, "S19207C7");
    /*is_ambiguous_... S19207C2::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C2*), ABISELECT(16,12), "S19207C7");
    /*is_ambiguous_... S19207C2::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C2*), ABISELECT(24,16), "S19207C7");
    check_base_class_offset(lv, (S7856C15*)(S19207C5*)(S19207C2*), ABISELECT(16,12), "S19207C7");
    check_base_class_offset(lv, (S19207C5*)(S19207C2*), ABISELECT(16,12), "S19207C7");
    check_base_class_offset(lv, (S19207C2*)(S19207C9*)(S19207C8*), ABISELECT(16,12), "S19207C7");
    /*is_ambiguous_... S19207C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C9*)(S19207C8*), 0, "S19207C7");
    /*is_ambiguous_... S19207C12::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C12*), ABISELECT(48,28), "S19207C7");
    check_base_class_offset(lv, (S19207C12*)(S19207C11*), ABISELECT(48,28), "S19207C7");
    check_base_class_offset(lv, (S19207C12*)(S19207C13*)(S19207C11*), ABISELECT(48,28), "S19207C7");
    /*is_ambiguous_... S19207C11::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C11*), ABISELECT(32,20), "S19207C7");
    /*is_ambiguous_... S19207C13::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C13*)(S19207C11*), ABISELECT(40,24), "S19207C7");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*)(S19207C13*)(S19207C11*), ABISELECT(32,20), "S19207C7");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C13*)(S19207C11*), ABISELECT(32,20), "S19207C7");
    check_base_class_offset(lv, (S19207C13*)(S19207C11*), ABISELECT(32,20), "S19207C7");
    check_base_class_offset(lv, (S19207C11*)(S19207C9*)(S19207C8*), ABISELECT(32,20), "S19207C7");
    check_base_class_offset(lv, (S19207C9*)(S19207C8*), 0, "S19207C7");
    /*is_ambiguous_... S19207C8::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C8*), 0, "S19207C7");
    check_base_class_offset(lv, (S19207C8*), 0, "S19207C7");
    test_class_info(&lv, &cd_S19207C7);
    dp->~S19207C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19207C7(Test_S19207C7, "S19207C7", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN8S19207C7C1Ev();
extern void _ZN8S19207C7D1Ev();
Name_Map name_map_S19207C7[] = {
  NSPAIR(_ZN8S19207C7C1Ev),
  NSPAIR(_ZN8S19207C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C10;
extern VTBL_ENTRY _ZTI9S19207C10[];
extern  VTBL_ENTRY _ZTV9S19207C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C10[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C2;
extern VTBL_ENTRY _ZTI8S19207C2[];
extern  VTBL_ENTRY _ZTV8S19207C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C2[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19207C12;
extern VTBL_ENTRY _ZTI9S19207C12[];
extern  VTBL_ENTRY _ZTV9S19207C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C13;
extern VTBL_ENTRY _ZTI9S19207C13[];
extern  VTBL_ENTRY _ZTV9S19207C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C13[];
extern Class_Descriptor cd_S19207C11;
extern VTBL_ENTRY _ZTI9S19207C11[];
extern  VTBL_ENTRY _ZTV9S19207C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C11[];
extern Class_Descriptor cd_S19207C9;
extern VTBL_ENTRY _ZTI8S19207C9[];
extern  VTBL_ENTRY _ZTV8S19207C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C9[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C8;
extern VTBL_ENTRY _ZTI8S19207C8[];
extern  VTBL_ENTRY _ZTV8S19207C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C8[];
static Base_Class bases_S19207C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19207C5,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19207C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19207C5,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19207C2,    ABISELECT(16,12), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19207C12,    ABISELECT(48,28), //bcp->offset
    26, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19207C5,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19207C13,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19207C11,    ABISELECT(32,20), //bcp->offset
    16, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S19207C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19207C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19207C7[];
extern void _ZN8S19207C7D1Ev();
extern void _ZN8S19207C7D0Ev();
extern void ABISELECT(_ZTv0_n64_N8S19207C7D1Ev,_ZTv0_n32_N8S19207C7D1Ev)();
extern void ABISELECT(_ZThn32_N8S19207C7D1Ev,_ZThn20_N8S19207C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19207C7D0Ev,_ZTv0_n32_N8S19207C7D0Ev)();
extern void ABISELECT(_ZThn32_N8S19207C7D0Ev,_ZThn20_N8S19207C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19207C7[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  ABISELECT(12,8),
  0,
  ABISELECT(48,28),
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C7[0]),
  (VTBL_ENTRY)&_ZN8S19207C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19207C7D0Ev,
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19207C7[0]),
  ABISELECT(-32,-20),
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19207C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C7D1Ev,_ZTv0_n32_N8S19207C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C7D0Ev,_ZTv0_n32_N8S19207C7D0Ev),
  ABISELECT(-36,-20),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19207C7[0]),
};
extern VTBL_ENTRY _ZTV8S19207C7[];
extern void _ZN8S19207C8D1Ev();
extern void _ZN8S19207C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19207C8__8S19207C7[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  ABISELECT(12,8),
  0,
  ABISELECT(48,28),
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C8[0]),
  (VTBL_ENTRY)&_ZN8S19207C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19207C8D0Ev,
};
extern void _ZN8S19207C9D1Ev();
extern void _ZN8S19207C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19207C98S19207C8__8S19207C7[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  ABISELECT(12,8),
  0,
  ABISELECT(48,28),
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
  (VTBL_ENTRY)&_ZN8S19207C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19207C9D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__8S19207C98S19207C8__8S19207C7[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__8S19207C98S19207C8__8S19207C7[] = {
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S19207C9D1Ev,_ZTv0_n32_N8S19207C9D1Ev)();
extern void ABISELECT(_ZThn32_N8S19207C9D1Ev,_ZThn20_N8S19207C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19207C9D0Ev,_ZTv0_n32_N8S19207C9D0Ev)();
extern void ABISELECT(_ZThn32_N8S19207C9D0Ev,_ZThn20_N8S19207C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C11__8S19207C98S19207C8__8S19207C7[] = {
  ABISELECT(-32,-20),
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C9D1Ev,_ZTv0_n32_N8S19207C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C9D0Ev,_ZTv0_n32_N8S19207C9D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__8S19207C8__8S19207C7[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19207C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__8S19207C8__8S19207C7[] = {
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19207C8[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S19207C8D1Ev,_ZTv0_n32_N8S19207C8D1Ev)();
extern void ABISELECT(_ZThn32_N8S19207C8D1Ev,_ZThn20_N8S19207C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19207C8D0Ev,_ZTv0_n32_N8S19207C8D0Ev)();
extern void ABISELECT(_ZThn32_N8S19207C8D0Ev,_ZThn20_N8S19207C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C11__8S19207C8__8S19207C7[] = {
  ABISELECT(-32,-20),
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19207C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C8D1Ev,_ZTv0_n32_N8S19207C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C8D0Ev,_ZTv0_n32_N8S19207C8D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19207C5__8S19207C7[] = {
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C10__8S19207C7[] = {
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__8S19207C7[] = {
  -4,
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C58S19207C2__A1__8S19207C7[] = {
  -4,
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
extern void _ZN9S19207C11D1Ev();
extern void _ZN9S19207C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C11__8S19207C7[] = {
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C11[0]),
  (VTBL_ENTRY)&_ZN9S19207C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C11D0Ev,
};
extern void _ZN9S19207C13D1Ev();
extern void _ZN9S19207C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C139S19207C11__8S19207C7[] = {
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
  (VTBL_ENTRY)&_ZN9S19207C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19207C59S19207C139S19207C11__A2__8S19207C7[] = {
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C139S19207C11__8S19207C7[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C11__8S19207C7[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19207C11[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__8S19207C7[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C12[0]),
};
static  VTT_ENTRY vtt_S19207C7[] = {
  {&(_ZTV8S19207C7[10]),  10,32},
  {&(_tg__ZTV8S19207C8__8S19207C7[10]),  10,12},
  {&(_tg__ZTV8S19207C98S19207C8__8S19207C7[10]),  10,12},
  {&(_tg__ZTV9S19207C12__8S19207C98S19207C8__8S19207C7[6]),  6,6},
  {&(_tg__ZTV8S19207C98S19207C8__8S19207C7[10]),  10,12},
  {&(_tg__ZTV8S19207C2__8S19207C98S19207C8__8S19207C7[4]),  4,4},
  {&(_tg__ZTV9S19207C11__8S19207C98S19207C8__8S19207C7[8]),  8,10},
  {&(_tg__ZTV9S19207C12__8S19207C98S19207C8__8S19207C7[6]),  6,6},
  {&(_tg__ZTV9S19207C12__8S19207C8__8S19207C7[6]),  6,6},
  {&(_tg__ZTV8S19207C8__8S19207C7[10]),  10,12},
  {&(_tg__ZTV8S19207C2__8S19207C8__8S19207C7[4]),  4,4},
  {&(_tg__ZTV9S19207C11__8S19207C8__8S19207C7[8]),  8,10},
  {&(_tg__ZTV9S19207C12__8S19207C8__8S19207C7[6]),  6,6},
  {&(_ZTV8S19207C7[32]),  32,32},
  {&(_ZTV8S19207C7[10]),  10,32},
  {&(_ZTV8S19207C7[16]),  16,32},
  {&(_ZTV8S19207C7[24]),  24,32},
  {&(_ZTV8S19207C7[32]),  32,32},
  {&(_tg__ZTV8S19207C5__8S19207C7[4]),  4,4},
  {&(_tg__ZTV9S19207C10__8S19207C7[3]),  3,3},
  {&(_tg__ZTV8S19207C2__8S19207C7[4]),  4,4},
  {&(_tg__ZTV8S19207C58S19207C2__A1__8S19207C7[4]),  4,4},
  {&(_tg__ZTV9S19207C11__8S19207C7[7]),  7,9},
  {&(_tg__ZTV9S19207C139S19207C11__8S19207C7[7]),  7,9},
  {&(_tg__ZTV8S19207C59S19207C139S19207C11__A2__8S19207C7[4]),  4,4},
  {&(_tg__ZTV9S19207C12__9S19207C139S19207C11__8S19207C7[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C139S19207C11__8S19207C7[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C11__8S19207C7[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C11__8S19207C7[6]),  6,6},
  {&(_tg__ZTV9S19207C12__8S19207C7[6]),  6,6},
  {&(_tg__ZTV9S19207C12__8S19207C7[6]),  6,6},
};
extern VTBL_ENTRY _ZTI8S19207C7[];
extern  VTBL_ENTRY _ZTV8S19207C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C7[];
static VTBL_ENTRY alt_thunk_names110[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19207C8D0Ev,_ZTv0_n32_N8S19207C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19207C8D0Ev,_ZThn20_N8S19207C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19207C8D1Ev,_ZTv0_n32_N8S19207C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19207C8D1Ev,_ZThn20_N8S19207C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19207C9D0Ev,_ZTv0_n32_N8S19207C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19207C9D0Ev,_ZThn20_N8S19207C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19207C9D1Ev,_ZTv0_n32_N8S19207C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19207C9D1Ev,_ZThn20_N8S19207C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19207C7D0Ev,_ZTv0_n32_N8S19207C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19207C7D0Ev,_ZThn20_N8S19207C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19207C7D1Ev,_ZTv0_n32_N8S19207C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19207C7D1Ev,_ZThn20_N8S19207C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19207C7 = {  "S19207C7", // class name
  bases_S19207C7, 23,
  &(vtc_S19207C7[0]), // expected_vtbl_contents
  &(vtt_S19207C7[0]), // expected_vtt_contents
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI8S19207C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19207C7),32, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19207C7),31, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names110,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19207C17  : virtual S19207C11 , virtual S19207C2 , virtual S19207C13 {
  int s19207c17f0[2];
  virtual  ~S19207C17(); // _ZN9S19207C17D2Ev
  S19207C17(); // tgen
};
//SIG(-1 S19207C17) C1{ VBC2{ VBC3{ m} VBC4{ m} VBC5{ BC3 VBC6{ VBC3 BC4 VBC7{ m}} VBC4} BC7 BC8{ BC4 VBC3 VBC7 BC6 VBC5 vd} vd} VBC9{ BC7 BC4 BC6 Fi} VBC8 vd Fi[2]}


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

static void Test_S19207C17()
{
  extern Class_Descriptor cd_S19207C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,10)];
    init_test(&cd_S19207C17, buf);
    S19207C17 *dp, &lv = *(dp=new (buf) S19207C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S19207C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19207C17)");
    /*is_ambiguous_... S19207C11::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C11*), ABISELECT(25,17), "S19207C17");
    /*is_ambiguous_... S19207C17::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*), ABISELECT(25,17), "S19207C17");
    /*is_ambiguous_... S19207C13::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C13*)(S19207C11*), ABISELECT(25,17), "S19207C17");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*)(S19207C13*)(S19207C11*), ABISELECT(25,17), "S19207C17");
    check_base_class_offset(lv, (S7856C12*)(S19207C5*)(S19207C2*), ABISELECT(25,17), "S19207C17");
    /*is_ambiguous_... S19207C17::S19207C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C13*), ABISELECT(25,17), "S19207C17");
    /*is_ambiguous_... S19207C17::S19207C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*)(S19207C13*), ABISELECT(25,17), "S19207C17");
    /*is_ambiguous_... S19207C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C11*), ABISELECT(25,17), "S19207C17");
    /*is_ambiguous_... S19207C12::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C12*), ABISELECT(25,17), "S19207C17");
    /*is_ambiguous_... S19207C12::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C12*), 0, "S19207C17");
    /*is_ambiguous_... S19207C17::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*), 0, "S19207C17");
    /*is_ambiguous_... S19207C17::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*), 0, "S19207C17");
    check_base_class_offset(lv, (S7856C24*)(S19207C13*)(S19207C11*), 0, "S19207C17");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*)(S19207C13*)(S19207C11*), 0, "S19207C17");
    check_base_class_offset(lv, (S7856C24*)(S19207C5*)(S19207C2*), 0, "S19207C17");
    /*is_ambiguous_... S19207C17::S19207C13 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C13*), 0, "S19207C17");
    /*is_ambiguous_... S19207C17::S19207C13 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*)(S19207C13*), 0, "S19207C17");
    check_base_class_offset(lv, (S19207C5*)(S19207C12*), 0, "S19207C17");
    check_base_class_offset(lv, (S19207C12*)(S19207C11*), 0, "S19207C17");
    check_base_class_offset(lv, (S19207C12*)(S19207C13*)(S19207C11*), 0, "S19207C17");
    /*is_ambiguous_... S19207C17::S19207C13 */ AMB_check_base_class_offset(lv, (S19207C12*)(S19207C13*), 0, "S19207C17");
    /*is_ambiguous_... S19207C11::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C11*), ABISELECT(16,12), "S19207C17");
    /*is_ambiguous_... S19207C13::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C13*)(S19207C11*), ABISELECT(24,16), "S19207C17");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*)(S19207C13*)(S19207C11*), ABISELECT(16,12), "S19207C17");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C13*)(S19207C11*), ABISELECT(16,12), "S19207C17");
    check_base_class_offset(lv, (S19207C13*)(S19207C11*), ABISELECT(16,12), "S19207C17");
    check_base_class_offset(lv, (S19207C11*), ABISELECT(16,12), "S19207C17");
    /*is_ambiguous_... S19207C2::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C2*), ABISELECT(32,20), "S19207C17");
    /*is_ambiguous_... S19207C2::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C2*), ABISELECT(40,24), "S19207C17");
    check_base_class_offset(lv, (S7856C15*)(S19207C5*)(S19207C2*), ABISELECT(32,20), "S19207C17");
    check_base_class_offset(lv, (S19207C5*)(S19207C2*), ABISELECT(32,20), "S19207C17");
    check_base_class_offset(lv, (S19207C2*), ABISELECT(32,20), "S19207C17");
    /*is_ambiguous_... S19207C17::S19207C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C13*), ABISELECT(56,32), "S19207C17");
    /*is_ambiguous_... S19207C17::S19207C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*)(S19207C13*), ABISELECT(48,28), "S19207C17");
    /*is_ambiguous_... S19207C17::S19207C13 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C13*), ABISELECT(48,28), "S19207C17");
    /*is_ambiguous_... S19207C17::S19207C13 */ AMB_check_base_class_offset(lv, (S19207C13*), ABISELECT(48,28), "S19207C17");
    check_field_offset(lv, s19207c17f0, ABISELECT(8,4), "S19207C17.s19207c17f0");
    test_class_info(&lv, &cd_S19207C17);
    dp->~S19207C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19207C17(Test_S19207C17, "S19207C17", ABISELECT(64,36));

#else // __cplusplus

extern void _ZN9S19207C17C1Ev();
extern void _ZN9S19207C17D2Ev();
Name_Map name_map_S19207C17[] = {
  NSPAIR(_ZN9S19207C17C1Ev),
  NSPAIR(_ZN9S19207C17D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C12;
extern VTBL_ENTRY _ZTI9S19207C12[];
extern  VTBL_ENTRY _ZTV9S19207C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C13;
extern VTBL_ENTRY _ZTI9S19207C13[];
extern  VTBL_ENTRY _ZTV9S19207C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C13[];
extern Class_Descriptor cd_S19207C11;
extern VTBL_ENTRY _ZTI9S19207C11[];
extern  VTBL_ENTRY _ZTV9S19207C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C11[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C2;
extern VTBL_ENTRY _ZTI8S19207C2[];
extern  VTBL_ENTRY _ZTV8S19207C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C2[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C13;
extern VTBL_ENTRY _ZTI9S19207C13[];
extern  VTBL_ENTRY _ZTV9S19207C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C13[];
static Base_Class bases_S19207C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C12,    ABISELECT(25,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(25,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19207C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19207C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19207C5,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19207C13,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19207C11,    ABISELECT(16,12), //bcp->offset
    12, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19207C5,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19207C2,    ABISELECT(32,20), //bcp->offset
    22, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19207C5,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19207C13,    ABISELECT(48,28), //bcp->offset
    26, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19207C17[];
extern void _ZN9S19207C17D1Ev();
extern void _ZN9S19207C17D0Ev();
extern void ABISELECT(_ZTv0_n64_N9S19207C17D1Ev,_ZTv0_n32_N9S19207C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S19207C17D1Ev,_ZThn12_N9S19207C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C17D0Ev,_ZTv0_n32_N9S19207C17D0Ev)();
extern void ABISELECT(_ZThn16_N9S19207C17D0Ev,_ZThn12_N9S19207C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C17D1Ev,_ZTv0_n32_N9S19207C17D1Ev)();
extern void ABISELECT(_ZThn48_N9S19207C17D1Ev,_ZThn28_N9S19207C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C17D0Ev,_ZTv0_n32_N9S19207C17D0Ev)();
extern void ABISELECT(_ZThn48_N9S19207C17D0Ev,_ZThn28_N9S19207C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19207C17[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C17[0]),
  (VTBL_ENTRY)&_ZN9S19207C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C17D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19207C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C17D1Ev,_ZTv0_n32_N9S19207C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C17D0Ev,_ZTv0_n32_N9S19207C17D0Ev),
  ABISELECT(-32,-20),
  ABISELECT(-7,-3),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S19207C17[0]),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19207C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C17D1Ev,_ZTv0_n32_N9S19207C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C17D0Ev,_ZTv0_n32_N9S19207C17D0Ev),
};
extern VTBL_ENTRY _ZTV9S19207C17[];
extern void _ZN9S19207C11D1Ev();
extern void _ZN9S19207C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C11__9S19207C17[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C11[0]),
  (VTBL_ENTRY)&_ZN9S19207C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C11D0Ev,
};
extern void _ZN9S19207C13D1Ev();
extern void _ZN9S19207C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C139S19207C11__9S19207C17[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
  (VTBL_ENTRY)&_ZN9S19207C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19207C59S19207C139S19207C11__A1__9S19207C17[] = {
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C139S19207C11__9S19207C17[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C11__9S19207C17[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S19207C11[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C17[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C5__9S19207C17[] = {
  0,
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__9S19207C17[] = {
  ABISELECT(-32,-20),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C58S19207C2__A2__9S19207C17[] = {
  ABISELECT(-32,-20),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
extern void _ZN9S19207C13D1Ev();
extern void _ZN9S19207C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C13__A1__9S19207C17[] = {
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
  (VTBL_ENTRY)&_ZN9S19207C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19207C59S19207C13__A3__9S19207C17[] = {
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C13__A1__9S19207C17[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
};
static  VTT_ENTRY vtt_S19207C17[] = {
  {&(_ZTV9S19207C17[10]),  10,36},
  {&(_ZTV9S19207C17[20]),  20,36},
  {&(_ZTV9S19207C17[10]),  10,36},
  {&(_ZTV9S19207C17[10]),  10,36},
  {&(_ZTV9S19207C17[26]),  26,36},
  {&(_ZTV9S19207C17[34]),  34,36},
  {&(_tg__ZTV9S19207C11__9S19207C17[7]),  7,9},
  {&(_tg__ZTV9S19207C139S19207C11__9S19207C17[7]),  7,9},
  {&(_tg__ZTV8S19207C59S19207C139S19207C11__A1__9S19207C17[4]),  4,4},
  {&(_tg__ZTV9S19207C12__9S19207C139S19207C11__9S19207C17[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C139S19207C11__9S19207C17[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C11__9S19207C17[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C11__9S19207C17[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C17[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C17[6]),  6,6},
  {&(_tg__ZTV8S19207C5__9S19207C17[4]),  4,4},
  {&(_tg__ZTV8S19207C2__9S19207C17[4]),  4,4},
  {&(_tg__ZTV8S19207C58S19207C2__A2__9S19207C17[4]),  4,4},
  {&(_tg__ZTV9S19207C13__A1__9S19207C17[7]),  7,9},
  {&(_tg__ZTV8S19207C59S19207C13__A3__9S19207C17[4]),  4,4},
  {&(_tg__ZTV9S19207C12__9S19207C13__A1__9S19207C17[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C13__A1__9S19207C17[6]),  6,6},
};
extern VTBL_ENTRY _ZTI9S19207C17[];
extern  VTBL_ENTRY _ZTV9S19207C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C17[];
static VTBL_ENTRY alt_thunk_names111[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C17D0Ev,_ZTv0_n32_N9S19207C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19207C17D0Ev,_ZThn28_N9S19207C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19207C17D0Ev,_ZThn12_N9S19207C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C17D1Ev,_ZTv0_n32_N9S19207C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19207C17D1Ev,_ZThn28_N9S19207C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19207C17D1Ev,_ZThn12_N9S19207C17D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19207C17 = {  "S19207C17", // class name
  bases_S19207C17, 22,
  &(vtc_S19207C17[0]), // expected_vtbl_contents
  &(vtt_S19207C17[0]), // expected_vtt_contents
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI9S19207C17),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19207C17),36, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19207C17),22, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names111,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19207C19  : virtual S19207C13 , S19207C2 , S19207C12 , S7856C24 {
  virtual  ~S19207C19(); // _ZN9S19207C19D2Ev
  S19207C19(); // tgen
};
//SIG(-1 S19207C19) C1{ VBC2{ BC3{ m} VBC4{ m} VBC5{ m} BC6{ VBC4 BC3 VBC5} VBC7{ BC4 VBC6 VBC3} vd} BC8{ BC5 BC3 BC6 Fi} BC7 BC5 vd}


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

static void Test_S19207C19()
{
  extern Class_Descriptor cd_S19207C19;
  void *lvp;
  {
    ABISELECT(double,int) buf[8];
    init_test(&cd_S19207C19, buf);
    S19207C19 *dp, &lv = *(dp=new (buf) S19207C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,28), "sizeof(S19207C19)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19207C19)");
    /*is_ambiguous_... S19207C13::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C13*), ABISELECT(32,16), "S19207C19");
    /*is_ambiguous_... S19207C13::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C13*), 0, "S19207C19");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*)(S19207C13*), 0, "S19207C19");
    /*is_ambiguous_... S19207C19::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*), 0, "S19207C19");
    check_base_class_offset(lv, (S7856C12*)(S19207C5*)(S19207C2*), 0, "S19207C19");
    check_base_class_offset(lv, (S7856C24*)(S19207C13*), ABISELECT(33,17), "S19207C19");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*)(S19207C13*), ABISELECT(33,17), "S19207C19");
    /*is_ambiguous_... S19207C19::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*), ABISELECT(33,17), "S19207C19");
    check_base_class_offset(lv, (S7856C24*)(S19207C5*)(S19207C2*), ABISELECT(33,17), "S19207C19");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*)(S19207C13*), ABISELECT(24,12), "S19207C19");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C13*), ABISELECT(24,12), "S19207C19");
    /*is_ambiguous_... S19207C19::S19207C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C12*), ABISELECT(40,20), "S19207C19");
    /*is_ambiguous_... S19207C19::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*), ABISELECT(40,20), "S19207C19");
    /*is_ambiguous_... S19207C19::S19207C12 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C12*), ABISELECT(40,20), "S19207C19");
    /*is_ambiguous_... S19207C19::S19207C12 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C12*), ABISELECT(40,20), "S19207C19");
    /*is_ambiguous_... S19207C19::S19207C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C12*), ABISELECT(48,24), "S19207C19");
    /*is_ambiguous_... S19207C19::S19207C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C12*), ABISELECT(48,24), "S19207C19");
    check_base_class_offset(lv, (S19207C12*)(S19207C13*), ABISELECT(40,20), "S19207C19");
    check_base_class_offset(lv, (S19207C13*), ABISELECT(24,12), "S19207C19");
    /*is_ambiguous_... S19207C2::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C2*), 0, "S19207C19");
    /*is_ambiguous_... S19207C2::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C2*), ABISELECT(8,4), "S19207C19");
    check_base_class_offset(lv, (S7856C15*)(S19207C5*)(S19207C2*), 0, "S19207C19");
    check_base_class_offset(lv, (S19207C5*)(S19207C2*), 0, "S19207C19");
    check_base_class_offset(lv, (S19207C2*), 0, "S19207C19");
    /*is_ambiguous_... S19207C19::S19207C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C12*), ABISELECT(16,8), "S19207C19");
    /*is_ambiguous_... S19207C19::S19207C12 */ AMB_check_base_class_offset(lv, (S19207C12*), ABISELECT(16,8), "S19207C19");
    /*is_ambiguous_... S19207C19::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), ABISELECT(24,12), "S19207C19");
    test_class_info(&lv, &cd_S19207C19);
    dp->~S19207C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19207C19(Test_S19207C19, "S19207C19", ABISELECT(56,28));

#else // __cplusplus

extern void _ZN9S19207C19C1Ev();
extern void _ZN9S19207C19D2Ev();
Name_Map name_map_S19207C19[] = {
  NSPAIR(_ZN9S19207C19C1Ev),
  NSPAIR(_ZN9S19207C19D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C12;
extern VTBL_ENTRY _ZTI9S19207C12[];
extern  VTBL_ENTRY _ZTV9S19207C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C12[];
extern Class_Descriptor cd_S19207C13;
extern VTBL_ENTRY _ZTI9S19207C13[];
extern  VTBL_ENTRY _ZTV9S19207C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C13[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C2;
extern VTBL_ENTRY _ZTI8S19207C2[];
extern  VTBL_ENTRY _ZTV8S19207C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C2[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19207C12;
extern VTBL_ENTRY _ZTI9S19207C12[];
extern  VTBL_ENTRY _ZTV9S19207C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
static Base_Class bases_S19207C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(33,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19207C5,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19207C5,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19207C12,    ABISELECT(40,20), //bcp->offset
    26, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19207C13,    ABISELECT(24,12), //bcp->offset
    16, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19207C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19207C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19207C12,    ABISELECT(16,8), //bcp->offset
    10, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19207C19[];
extern void _ZN9S19207C19D1Ev();
extern void _ZN9S19207C19D0Ev();
extern void ABISELECT(_ZTv0_n64_N9S19207C19D1Ev,_ZTv0_n32_N9S19207C19D1Ev)();
extern void ABISELECT(_ZThn24_N9S19207C19D1Ev,_ZThn12_N9S19207C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C19D0Ev,_ZTv0_n32_N9S19207C19D0Ev)();
extern void ABISELECT(_ZThn24_N9S19207C19D0Ev,_ZThn12_N9S19207C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19207C19[] = {
  ABISELECT(48,24),
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(24,12),
  ABISELECT(33,17),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C19[0]),
  (VTBL_ENTRY)&_ZN9S19207C19D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C19D0Ev,
  ABISELECT(32,16),
  ABISELECT(24,12),
  ABISELECT(17,9),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19207C19[0]),
  ABISELECT(-24,-12),
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(9,5),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19207C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C19D1Ev,_ZTv0_n32_N9S19207C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C19D0Ev,_ZTv0_n32_N9S19207C19D0Ev),
  ABISELECT(8,4),
  0,
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19207C19[0]),
};
extern VTBL_ENTRY _ZTV9S19207C19[];
static  VTBL_ENTRY _tg__ZTV8S19207C2__9S19207C19[] = {
  ABISELECT(33,17),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C58S19207C2__A2__9S19207C19[] = {
  ABISELECT(33,17),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__A__9S19207C19[] = {
  ABISELECT(32,16),
  ABISELECT(24,12),
  ABISELECT(17,9),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C5__9S19207C12__A__9S19207C19[] = {
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19207C12[0]),
};
extern void _ZN9S19207C13D1Ev();
extern void _ZN9S19207C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C13__9S19207C19[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(9,5),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
  (VTBL_ENTRY)&_ZN9S19207C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19207C59S19207C13__9S19207C19[] = {
  ABISELECT(9,5),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C13__9S19207C19[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C19[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C5__A1__9S19207C19[] = {
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTT_ENTRY vtt_S19207C19[] = {
  {&(_ZTV9S19207C19[8]),  8,32},
  {&(_tg__ZTV8S19207C2__9S19207C19[4]),  4,4},
  {&(_tg__ZTV8S19207C58S19207C2__A2__9S19207C19[4]),  4,4},
  {&(_tg__ZTV9S19207C12__A__9S19207C19[6]),  6,6},
  {&(_tg__ZTV8S19207C5__9S19207C12__A__9S19207C19[4]),  4,4},
  {&(_ZTV9S19207C19[24]),  24,32},
  {&(_ZTV9S19207C19[32]),  32,32},
  {&(_ZTV9S19207C19[32]),  32,32},
  {&(_ZTV9S19207C19[16]),  16,32},
  {&(_tg__ZTV9S19207C13__9S19207C19[7]),  7,9},
  {&(_tg__ZTV8S19207C59S19207C13__9S19207C19[4]),  4,4},
  {&(_tg__ZTV9S19207C12__9S19207C13__9S19207C19[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C13__9S19207C19[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C19[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C19[6]),  6,6},
  {&(_tg__ZTV8S19207C5__A1__9S19207C19[4]),  4,4},
};
extern VTBL_ENTRY _ZTI9S19207C19[];
extern  VTBL_ENTRY _ZTV9S19207C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C19[];
static VTBL_ENTRY alt_thunk_names112[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C19D0Ev,_ZTv0_n32_N9S19207C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19207C19D0Ev,_ZThn12_N9S19207C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C19D1Ev,_ZTv0_n32_N9S19207C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19207C19D1Ev,_ZThn12_N9S19207C19D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19207C19 = {  "S19207C19", // class name
  bases_S19207C19, 19,
  &(vtc_S19207C19[0]), // expected_vtbl_contents
  &(vtt_S19207C19[0]), // expected_vtt_contents
  ABISELECT(56,28), // object size
  NSPAIRA(_ZTI9S19207C19),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19207C19),32, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19207C19),16, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names112,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19207C16  : virtual S19207C17 , virtual S7856C9_nt , virtual S19207C9 , S19207C19 {
  virtual  ~S19207C16(); // _ZN9S19207C16D2Ev
  S19207C16(); // tgen
};
//SIG(-1 S19207C16) C1{ VBC2{ VBC3{ VBC4{ m} VBC5{ m} VBC6{ BC4 VBC7{ VBC4 BC5 VBC8{ m}} VBC5} BC8 BC9{ BC5 VBC4 VBC8 BC7 VBC6 vd} vd} VBC10{ BC8 BC5 BC7 Fi} VBC9 vd Fi[2]} VBC11{ m} VBC12{ VBC7 VBC13{ VBC5} VBC10 BC8 VBC3 vd Fi} BC14{ VBC9 BC10 BC6 BC8 vd} vd}


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

static void Test_S19207C16()
{
  extern Class_Descriptor cd_S19207C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,16)];
    init_test(&cd_S19207C16, buf);
    S19207C16 *dp, &lv = *(dp=new (buf) S19207C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,60), "sizeof(S19207C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19207C16)");
    /*is_ambiguous_... S19207C11::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C11*), 0, "S19207C16");
    /*is_ambiguous_... S19207C16::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*), 0, "S19207C16");
    /*is_ambiguous_... S19207C13::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C13*)(S19207C11*), 0, "S19207C16");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*)(S19207C13*)(S19207C11*), 0, "S19207C16");
    /*is_ambiguous_... S19207C16::S19207C2 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*)(S19207C2*), 0, "S19207C16");
    /*is_ambiguous_... S19207C16::S19207C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C13*), 0, "S19207C16");
    /*is_ambiguous_... S19207C16::S19207C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*)(S19207C13*), 0, "S19207C16");
    check_base_class_offset(lv, (S7856C12*)(S19207C5*)(S19207C2*)(S19207C19*), 0, "S19207C16");
    /*is_ambiguous_... S19207C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C11*), ABISELECT(57,33), "S19207C16");
    /*is_ambiguous_... S19207C16::S19207C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C12*), ABISELECT(57,33), "S19207C16");
    check_base_class_offset(lv, (S7856C15*)(S19207C10*), ABISELECT(57,33), "S19207C16");
    /*is_ambiguous_... S19207C19::S19207C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C12*)(S19207C19*), ABISELECT(57,33), "S19207C16");
    /*is_ambiguous_... S19207C16::S19207C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C12*), ABISELECT(32,16), "S19207C16");
    /*is_ambiguous_... S19207C16::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*), ABISELECT(32,16), "S19207C16");
    /*is_ambiguous_... S19207C16::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*), ABISELECT(57,33), "S19207C16");
    check_base_class_offset(lv, (S7856C24*)(S19207C13*)(S19207C11*), ABISELECT(57,33), "S19207C16");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*)(S19207C13*)(S19207C11*), ABISELECT(57,33), "S19207C16");
    /*is_ambiguous_... S19207C16::S19207C2 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*)(S19207C2*), ABISELECT(57,33), "S19207C16");
    /*is_ambiguous_... S19207C16::S19207C13 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C13*), ABISELECT(57,33), "S19207C16");
    /*is_ambiguous_... S19207C16::S19207C13 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*)(S19207C13*), ABISELECT(57,33), "S19207C16");
    check_base_class_offset(lv, (S7856C24*)(S19207C5*)(S19207C2*)(S19207C19*), ABISELECT(57,33), "S19207C16");
    /*is_ambiguous_... S19207C16::S19207C12 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C12*), ABISELECT(32,16), "S19207C16");
    /*is_ambiguous_... S19207C9::S19207C5 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C9*), ABISELECT(32,16), "S19207C16");
    /*is_ambiguous_... S19207C19::S19207C12 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C12*)(S19207C19*), ABISELECT(32,16), "S19207C16");
    check_base_class_offset(lv, (S19207C12*)(S19207C11*), ABISELECT(32,16), "S19207C16");
    check_base_class_offset(lv, (S19207C12*)(S19207C13*)(S19207C11*), ABISELECT(32,16), "S19207C16");
    /*is_ambiguous_... S19207C16::S19207C13 */ AMB_check_base_class_offset(lv, (S19207C12*)(S19207C13*), ABISELECT(32,16), "S19207C16");
    /*is_ambiguous_... S19207C11::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C11*), ABISELECT(48,28), "S19207C16");
    /*is_ambiguous_... S19207C13::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C13*)(S19207C11*), ABISELECT(56,32), "S19207C16");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*)(S19207C13*)(S19207C11*), ABISELECT(48,28), "S19207C16");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C13*)(S19207C11*), ABISELECT(48,28), "S19207C16");
    check_base_class_offset(lv, (S19207C13*)(S19207C11*), ABISELECT(48,28), "S19207C16");
    check_base_class_offset(lv, (S19207C11*)(S19207C17*), ABISELECT(48,28), "S19207C16");
    check_base_class_offset(lv, (S19207C11*)(S19207C9*), ABISELECT(48,28), "S19207C16");
    /*is_ambiguous_... S19207C16::S19207C2 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C2*), ABISELECT(64,36), "S19207C16");
    /*is_ambiguous_... S19207C16::S19207C2 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C2*), ABISELECT(72,40), "S19207C16");
    /*is_ambiguous_... S19207C16::S19207C2 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*)(S19207C2*), ABISELECT(64,36), "S19207C16");
    /*is_ambiguous_... S19207C16::S19207C2 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C2*), ABISELECT(64,36), "S19207C16");
    check_base_class_offset(lv, (S19207C2*)(S19207C17*), ABISELECT(64,36), "S19207C16");
    check_base_class_offset(lv, (S19207C2*)(S19207C9*), ABISELECT(64,36), "S19207C16");
    /*is_ambiguous_... S19207C16::S19207C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C13*), ABISELECT(88,48), "S19207C16");
    /*is_ambiguous_... S19207C16::S19207C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*)(S19207C13*), ABISELECT(80,44), "S19207C16");
    /*is_ambiguous_... S19207C16::S19207C13 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C13*), ABISELECT(80,44), "S19207C16");
    /*is_ambiguous_... S19207C17::S19207C13 */ AMB_check_base_class_offset(lv, (S19207C13*)(S19207C17*), ABISELECT(80,44), "S19207C16");
    check_base_class_offset(lv, (S19207C13*)(S19207C19*), ABISELECT(80,44), "S19207C16");
    check_base_class_offset(lv, (S19207C17*), ABISELECT(32,16), "S19207C16");
    check_base_class_offset(lv, (S7856C9_nt*), 0, "S19207C16");
    check_base_class_offset(lv, (S19207C10*)(S19207C9*), ABISELECT(96,52), "S19207C16");
    /*is_ambiguous_... S19207C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C9*), ABISELECT(96,52), "S19207C16");
    check_base_class_offset(lv, (S19207C9*), ABISELECT(96,52), "S19207C16");
    /*is_ambiguous_... S19207C2::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C2*)(S19207C19*), 0, "S19207C16");
    /*is_ambiguous_... S19207C2::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C2*)(S19207C19*), ABISELECT(8,4), "S19207C16");
    check_base_class_offset(lv, (S7856C15*)(S19207C5*)(S19207C2*)(S19207C19*), 0, "S19207C16");
    check_base_class_offset(lv, (S19207C5*)(S19207C2*)(S19207C19*), 0, "S19207C16");
    check_base_class_offset(lv, (S19207C2*)(S19207C19*), 0, "S19207C16");
    /*is_ambiguous_... S19207C19::S19207C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C12*)(S19207C19*), ABISELECT(16,8), "S19207C16");
    /*is_ambiguous_... S19207C19::S19207C12 */ AMB_check_base_class_offset(lv, (S19207C12*)(S19207C19*), ABISELECT(16,8), "S19207C16");
    /*is_ambiguous_... S19207C19::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C19*), ABISELECT(24,12), "S19207C16");
    check_base_class_offset(lv, (S19207C19*), 0, "S19207C16");
    test_class_info(&lv, &cd_S19207C16);
    dp->~S19207C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19207C16(Test_S19207C16, "S19207C16", ABISELECT(112,60));

#else // __cplusplus

extern void _ZN9S19207C16C1Ev();
extern void _ZN9S19207C16D2Ev();
Name_Map name_map_S19207C16[] = {
  NSPAIR(_ZN9S19207C16C1Ev),
  NSPAIR(_ZN9S19207C16D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C12;
extern VTBL_ENTRY _ZTI9S19207C12[];
extern  VTBL_ENTRY _ZTV9S19207C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C13;
extern VTBL_ENTRY _ZTI9S19207C13[];
extern  VTBL_ENTRY _ZTV9S19207C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C13[];
extern Class_Descriptor cd_S19207C11;
extern VTBL_ENTRY _ZTI9S19207C11[];
extern  VTBL_ENTRY _ZTV9S19207C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C11[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C2;
extern VTBL_ENTRY _ZTI8S19207C2[];
extern  VTBL_ENTRY _ZTV8S19207C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C2[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C13;
extern VTBL_ENTRY _ZTI9S19207C13[];
extern  VTBL_ENTRY _ZTV9S19207C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C13[];
extern Class_Descriptor cd_S19207C17;
extern VTBL_ENTRY _ZTI9S19207C17[];
extern  VTBL_ENTRY _ZTV9S19207C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C17[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S19207C10;
extern VTBL_ENTRY _ZTI9S19207C10[];
extern  VTBL_ENTRY _ZTV9S19207C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C10[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19207C9;
extern VTBL_ENTRY _ZTI8S19207C9[];
extern  VTBL_ENTRY _ZTV8S19207C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C9[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C2;
extern VTBL_ENTRY _ZTI8S19207C2[];
extern  VTBL_ENTRY _ZTV8S19207C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C2[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19207C12;
extern VTBL_ENTRY _ZTI9S19207C12[];
extern  VTBL_ENTRY _ZTV9S19207C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19207C19;
extern VTBL_ENTRY _ZTI9S19207C19[];
extern  VTBL_ENTRY _ZTV9S19207C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C19[];
static Base_Class bases_S19207C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(57,33), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(57,33), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19207C5,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19207C12,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19207C5,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19207C13,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19207C11,    ABISELECT(48,28), //bcp->offset
    35, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19207C5,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19207C2,    ABISELECT(64,36), //bcp->offset
    45, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19207C5,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19207C13,    ABISELECT(80,44), //bcp->offset
    49, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S19207C17,    ABISELECT(32,16), //bcp->offset
    22, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19207C10,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19207C9,    ABISELECT(96,52), //bcp->offset
    59, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S19207C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19207C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S19207C12,    ABISELECT(16,8), //bcp->offset
    16, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S19207C19,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19207C16[];
extern void _ZN9S19207C16D1Ev();
extern void _ZN9S19207C16D0Ev();
extern void ABISELECT(_ZTv0_n88_N9S19207C16D1Ev,_ZTv0_n44_N9S19207C16D1Ev)();
extern void ABISELECT(_ZThn32_N9S19207C16D1Ev,_ZThn16_N9S19207C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19207C16D0Ev,_ZTv0_n44_N9S19207C16D0Ev)();
extern void ABISELECT(_ZThn32_N9S19207C16D0Ev,_ZThn16_N9S19207C16D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C16D1Ev,_ZTv0_n32_N9S19207C16D1Ev)();
extern void ABISELECT(_ZThn48_N9S19207C16D1Ev,_ZThn28_N9S19207C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C16D0Ev,_ZTv0_n32_N9S19207C16D0Ev)();
extern void ABISELECT(_ZThn48_N9S19207C16D0Ev,_ZThn28_N9S19207C16D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C16D1Ev,_ZTv0_n32_N9S19207C16D1Ev)();
extern void ABISELECT(_ZThn80_N9S19207C16D1Ev,_ZThn44_N9S19207C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C16D0Ev,_ZTv0_n32_N9S19207C16D0Ev)();
extern void ABISELECT(_ZThn80_N9S19207C16D0Ev,_ZThn44_N9S19207C16D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19207C16D1Ev,_ZTv0_n44_N9S19207C16D1Ev)();
extern void ABISELECT(_ZThn96_N9S19207C16D1Ev,_ZThn52_N9S19207C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19207C16D0Ev,_ZTv0_n44_N9S19207C16D0Ev)();
extern void ABISELECT(_ZThn96_N9S19207C16D0Ev,_ZThn52_N9S19207C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19207C16[] = {
  ABISELECT(96,52),
  ABISELECT(96,52),
  0,
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(57,33),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
  (VTBL_ENTRY)&_ZN9S19207C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C16D0Ev,
  ABISELECT(41,25),
  ABISELECT(16,8),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
  ABISELECT(-32,-16),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C16D1Ev,_ZTv0_n44_N9S19207C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C16D0Ev,_ZTv0_n44_N9S19207C16D0Ev),
  ABISELECT(-48,-28),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C16D1Ev,_ZTv0_n32_N9S19207C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C16D0Ev,_ZTv0_n32_N9S19207C16D0Ev),
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
  ABISELECT(-80,-44),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C16D1Ev,_ZTv0_n32_N9S19207C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C16D0Ev,_ZTv0_n32_N9S19207C16D0Ev),
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-39,-19),
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-39,-19),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C16D1Ev,_ZTv0_n44_N9S19207C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C16D0Ev,_ZTv0_n44_N9S19207C16D0Ev),
};
extern VTBL_ENTRY _ZTV9S19207C16[];
extern void _ZN9S19207C19D1Ev();
extern void _ZN9S19207C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C19__9S19207C16[] = {
  ABISELECT(57,33),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C19[0]),
  (VTBL_ENTRY)&_ZN9S19207C19D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C19D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19207C29S19207C19__A1__9S19207C16[] = {
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C58S19207C29S19207C19__A4__9S19207C16[] = {
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C129S19207C19__A1__9S19207C16[] = {
  ABISELECT(41,25),
  ABISELECT(16,8),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C5__9S19207C129S19207C19__A1__9S19207C16[] = {
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19207C12[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19207C19D1Ev,_ZTv0_n32_N9S19207C19D1Ev)();
extern void ABISELECT(_ZThn80_N9S19207C19D1Ev,_ZThn44_N9S19207C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C19D0Ev,_ZTv0_n32_N9S19207C19D0Ev)();
extern void ABISELECT(_ZThn80_N9S19207C19D0Ev,_ZThn44_N9S19207C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C13__9S19207C19__9S19207C16[] = {
  ABISELECT(-80,-44),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S19207C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C19D1Ev,_ZTv0_n32_N9S19207C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C19D0Ev,_ZTv0_n32_N9S19207C19D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C19__9S19207C16[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19207C19[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__A__9S19207C19__9S19207C16[] = {
  ABISELECT(41,25),
  ABISELECT(16,8),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19207C19[0]),
};
extern void _ZN9S19207C17D1Ev();
extern void _ZN9S19207C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C17__9S19207C16[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C17[0]),
  (VTBL_ENTRY)&_ZN9S19207C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C17D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N9S19207C17D1Ev,_ZTv0_n32_N9S19207C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S19207C17D1Ev,_ZThn12_N9S19207C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C17D0Ev,_ZTv0_n32_N9S19207C17D0Ev)();
extern void ABISELECT(_ZThn16_N9S19207C17D0Ev,_ZThn12_N9S19207C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C11__9S19207C17__9S19207C16[] = {
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19207C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C17D1Ev,_ZTv0_n32_N9S19207C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C17D0Ev,_ZTv0_n32_N9S19207C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__9S19207C17__9S19207C16[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S19207C17[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19207C17D1Ev,_ZTv0_n32_N9S19207C17D1Ev)();
extern void ABISELECT(_ZThn48_N9S19207C17D1Ev,_ZThn28_N9S19207C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C17D0Ev,_ZTv0_n32_N9S19207C17D0Ev)();
extern void ABISELECT(_ZThn48_N9S19207C17D0Ev,_ZThn28_N9S19207C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C13__A1__9S19207C17__9S19207C16[] = {
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19207C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C17D1Ev,_ZTv0_n32_N9S19207C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C17D0Ev,_ZTv0_n32_N9S19207C17D0Ev),
};
extern void _ZN9S19207C11D1Ev();
extern void _ZN9S19207C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C11__9S19207C16[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C11[0]),
  (VTBL_ENTRY)&_ZN9S19207C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C11D0Ev,
};
extern void _ZN9S19207C13D1Ev();
extern void _ZN9S19207C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C139S19207C11__9S19207C16[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
  (VTBL_ENTRY)&_ZN9S19207C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19207C59S19207C139S19207C11__A1__9S19207C16[] = {
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C139S19207C11__9S19207C16[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C11__9S19207C16[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S19207C11[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C16[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C5__9S19207C16[] = {
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__9S19207C16[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C58S19207C2__A2__9S19207C16[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
extern void _ZN9S19207C13D1Ev();
extern void _ZN9S19207C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C13__A1__9S19207C16[] = {
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
  (VTBL_ENTRY)&_ZN9S19207C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19207C59S19207C13__A3__9S19207C16[] = {
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C13__A1__9S19207C16[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
};
extern void _ZN8S19207C9D1Ev();
extern void _ZN8S19207C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19207C9__9S19207C16[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-39,-19),
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-39,-19),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
  (VTBL_ENTRY)&_ZN8S19207C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19207C9D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__8S19207C9__9S19207C16[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__8S19207C9__9S19207C16[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S19207C9D1Ev,_ZTv0_n32_N8S19207C9D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S19207C9D0Ev,_ZTv0_n32_N8S19207C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19207C11__8S19207C9__9S19207C16[] = {
  ABISELECT(48,24),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C9D1Ev,_ZTv0_n32_N8S19207C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C9D0Ev,_ZTv0_n32_N8S19207C9D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19207C10__9S19207C16[] = {
  ABISELECT(-39,-19),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C10[0]),
};
static  VTT_ENTRY vtt_S19207C16[] = {
  {&(_ZTV9S19207C16[14]),  14,72},
  {&(_tg__ZTV9S19207C19__9S19207C16[8]),  8,10},
  {&(_tg__ZTV8S19207C29S19207C19__A1__9S19207C16[4]),  4,4},
  {&(_tg__ZTV8S19207C58S19207C29S19207C19__A4__9S19207C16[4]),  4,4},
  {&(_tg__ZTV9S19207C129S19207C19__A1__9S19207C16[6]),  6,6},
  {&(_tg__ZTV8S19207C5__9S19207C129S19207C19__A1__9S19207C16[4]),  4,4},
  {&(_tg__ZTV9S19207C13__9S19207C19__9S19207C16[8]),  8,10},
  {&(_tg__ZTV9S19207C12__9S19207C19__9S19207C16[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C19__9S19207C16[6]),  6,6},
  {&(_tg__ZTV9S19207C12__A__9S19207C19__9S19207C16[6]),  6,6},
  {&(_ZTV9S19207C16[33]),  33,72},
  {&(_ZTV9S19207C16[43]),  43,72},
  {&(_ZTV9S19207C16[33]),  33,72},
  {&(_ZTV9S19207C16[33]),  33,72},
  {&(_ZTV9S19207C16[49]),  49,72},
  {&(_ZTV9S19207C16[57]),  57,72},
  {&(_ZTV9S19207C16[70]),  70,72},
  {&(_ZTV9S19207C16[70]),  70,72},
  {&(_ZTV9S19207C16[22]),  22,72},
  {&(_tg__ZTV9S19207C17__9S19207C16[10]),  10,12},
  {&(_tg__ZTV9S19207C11__9S19207C17__9S19207C16[8]),  8,10},
  {&(_tg__ZTV9S19207C17__9S19207C16[10]),  10,12},
  {&(_tg__ZTV9S19207C17__9S19207C16[10]),  10,12},
  {&(_tg__ZTV8S19207C2__9S19207C17__9S19207C16[4]),  4,4},
  {&(_tg__ZTV9S19207C13__A1__9S19207C17__9S19207C16[8]),  8,10},
  {&(_tg__ZTV9S19207C11__9S19207C16[7]),  7,9},
  {&(_tg__ZTV9S19207C139S19207C11__9S19207C16[7]),  7,9},
  {&(_tg__ZTV8S19207C59S19207C139S19207C11__A1__9S19207C16[4]),  4,4},
  {&(_tg__ZTV9S19207C12__9S19207C139S19207C11__9S19207C16[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C139S19207C11__9S19207C16[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C11__9S19207C16[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C11__9S19207C16[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C16[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C16[6]),  6,6},
  {&(_tg__ZTV8S19207C5__9S19207C16[4]),  4,4},
  {&(_tg__ZTV8S19207C2__9S19207C16[4]),  4,4},
  {&(_tg__ZTV8S19207C58S19207C2__A2__9S19207C16[4]),  4,4},
  {&(_tg__ZTV9S19207C13__A1__9S19207C16[7]),  7,9},
  {&(_tg__ZTV8S19207C59S19207C13__A3__9S19207C16[4]),  4,4},
  {&(_tg__ZTV9S19207C12__9S19207C13__A1__9S19207C16[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C13__A1__9S19207C16[6]),  6,6},
  {&(_tg__ZTV8S19207C9__9S19207C16[10]),  10,12},
  {&(_tg__ZTV9S19207C12__8S19207C9__9S19207C16[6]),  6,6},
  {&(_tg__ZTV8S19207C9__9S19207C16[10]),  10,12},
  {&(_tg__ZTV8S19207C2__8S19207C9__9S19207C16[4]),  4,4},
  {&(_tg__ZTV9S19207C11__8S19207C9__9S19207C16[8]),  8,10},
  {&(_tg__ZTV9S19207C12__8S19207C9__9S19207C16[6]),  6,6},
  {&(_tg__ZTV9S19207C10__9S19207C16[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19207C16[];
extern  VTBL_ENTRY _ZTV9S19207C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C16[];
static VTBL_ENTRY alt_thunk_names113[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C17D0Ev,_ZTv0_n32_N9S19207C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19207C17D0Ev,_ZThn28_N9S19207C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19207C17D0Ev,_ZThn12_N9S19207C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C17D1Ev,_ZTv0_n32_N9S19207C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19207C17D1Ev,_ZThn28_N9S19207C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19207C17D1Ev,_ZThn12_N9S19207C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C19D0Ev,_ZTv0_n32_N9S19207C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19207C19D0Ev,_ZThn44_N9S19207C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C19D1Ev,_ZTv0_n32_N9S19207C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19207C19D1Ev,_ZThn44_N9S19207C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C16D0Ev,_ZTv0_n32_N9S19207C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19207C16D0Ev,_ZThn44_N9S19207C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19207C16D0Ev,_ZThn28_N9S19207C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C16D1Ev,_ZTv0_n32_N9S19207C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19207C16D1Ev,_ZThn44_N9S19207C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19207C16D1Ev,_ZThn28_N9S19207C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19207C16D0Ev,_ZTv0_n44_N9S19207C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19207C16D0Ev,_ZThn52_N9S19207C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19207C16D0Ev,_ZThn16_N9S19207C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19207C16D1Ev,_ZTv0_n44_N9S19207C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19207C16D1Ev,_ZThn52_N9S19207C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19207C16D1Ev,_ZThn16_N9S19207C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19207C16 = {  "S19207C16", // class name
  bases_S19207C16, 36,
  &(vtc_S19207C16[0]), // expected_vtbl_contents
  &(vtt_S19207C16[0]), // expected_vtt_contents
  ABISELECT(112,60), // object size
  NSPAIRA(_ZTI9S19207C16),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19207C16),72, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19207C16),48, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names113,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19207C15  : virtual S19207C11 , virtual S19207C16 {
  virtual  ~S19207C15(); // _ZN9S19207C15D2Ev
  S19207C15(); // tgen
};
//SIG(-1 S19207C15) C1{ VBC2{ VBC3{ m} VBC4{ m} VBC5{ BC3 VBC6{ VBC3 BC4 VBC7{ m}} VBC4} BC7 BC8{ BC4 VBC3 VBC7 BC6 VBC5 vd} vd} VBC9{ VBC10{ VBC2 VBC11{ BC7 BC4 BC6 Fi} VBC8 vd Fi[2]} VBC12{ m} VBC13{ VBC6 VBC14{ VBC4} VBC11 BC7 VBC2 vd Fi} BC15{ VBC8 BC11 BC5 BC7 vd} vd} vd}


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

static void Test_S19207C15()
{
  extern Class_Descriptor cd_S19207C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,17)];
    init_test(&cd_S19207C15, buf);
    S19207C15 *dp, &lv = *(dp=new (buf) S19207C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,64), "sizeof(S19207C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19207C15)");
    /*is_ambiguous_... S19207C11::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C11*), ABISELECT(17,9), "S19207C15");
    /*is_ambiguous_... S19207C15::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*), ABISELECT(17,9), "S19207C15");
    /*is_ambiguous_... S19207C13::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C13*)(S19207C11*), ABISELECT(17,9), "S19207C15");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*)(S19207C13*)(S19207C11*), ABISELECT(17,9), "S19207C15");
    /*is_ambiguous_... S19207C15::S19207C2 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*)(S19207C2*), ABISELECT(17,9), "S19207C15");
    /*is_ambiguous_... S19207C15::S19207C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C13*), ABISELECT(17,9), "S19207C15");
    /*is_ambiguous_... S19207C15::S19207C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*)(S19207C13*), ABISELECT(17,9), "S19207C15");
    check_base_class_offset(lv, (S7856C12*)(S19207C5*)(S19207C2*)(S19207C19*)(S19207C16*), ABISELECT(17,9), "S19207C15");
    /*is_ambiguous_... S19207C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C11*), ABISELECT(17,9), "S19207C15");
    /*is_ambiguous_... S19207C15::S19207C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C12*), ABISELECT(17,9), "S19207C15");
    check_base_class_offset(lv, (S7856C15*)(S19207C10*), ABISELECT(17,9), "S19207C15");
    /*is_ambiguous_... S19207C19::S19207C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C12*)(S19207C19*)(S19207C16*), ABISELECT(17,9), "S19207C15");
    /*is_ambiguous_... S19207C15::S19207C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C12*), 0, "S19207C15");
    /*is_ambiguous_... S19207C15::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*), 0, "S19207C15");
    /*is_ambiguous_... S19207C15::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*), 0, "S19207C15");
    check_base_class_offset(lv, (S7856C24*)(S19207C13*)(S19207C11*), 0, "S19207C15");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*)(S19207C13*)(S19207C11*), 0, "S19207C15");
    /*is_ambiguous_... S19207C15::S19207C2 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*)(S19207C2*), 0, "S19207C15");
    /*is_ambiguous_... S19207C15::S19207C13 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C13*), 0, "S19207C15");
    /*is_ambiguous_... S19207C15::S19207C13 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*)(S19207C13*), 0, "S19207C15");
    check_base_class_offset(lv, (S7856C24*)(S19207C5*)(S19207C2*)(S19207C19*)(S19207C16*), 0, "S19207C15");
    /*is_ambiguous_... S19207C15::S19207C12 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C12*), 0, "S19207C15");
    /*is_ambiguous_... S19207C9::S19207C5 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C9*), 0, "S19207C15");
    /*is_ambiguous_... S19207C19::S19207C12 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C12*)(S19207C19*)(S19207C16*), 0, "S19207C15");
    check_base_class_offset(lv, (S19207C12*)(S19207C11*), 0, "S19207C15");
    check_base_class_offset(lv, (S19207C12*)(S19207C13*)(S19207C11*), 0, "S19207C15");
    /*is_ambiguous_... S19207C15::S19207C13 */ AMB_check_base_class_offset(lv, (S19207C12*)(S19207C13*), 0, "S19207C15");
    /*is_ambiguous_... S19207C11::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C11*), ABISELECT(8,4), "S19207C15");
    /*is_ambiguous_... S19207C13::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C13*)(S19207C11*), ABISELECT(16,8), "S19207C15");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*)(S19207C13*)(S19207C11*), ABISELECT(8,4), "S19207C15");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C13*)(S19207C11*), ABISELECT(8,4), "S19207C15");
    check_base_class_offset(lv, (S19207C13*)(S19207C11*), ABISELECT(8,4), "S19207C15");
    check_base_class_offset(lv, (S19207C11*), ABISELECT(8,4), "S19207C15");
    check_base_class_offset(lv, (S19207C11*)(S19207C17*), ABISELECT(8,4), "S19207C15");
    check_base_class_offset(lv, (S19207C11*)(S19207C9*), ABISELECT(8,4), "S19207C15");
    /*is_ambiguous_... S19207C15::S19207C2 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C2*), ABISELECT(72,40), "S19207C15");
    /*is_ambiguous_... S19207C15::S19207C2 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C2*), ABISELECT(80,44), "S19207C15");
    /*is_ambiguous_... S19207C15::S19207C2 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*)(S19207C2*), ABISELECT(72,40), "S19207C15");
    /*is_ambiguous_... S19207C15::S19207C2 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C2*), ABISELECT(72,40), "S19207C15");
    check_base_class_offset(lv, (S19207C2*)(S19207C17*), ABISELECT(72,40), "S19207C15");
    check_base_class_offset(lv, (S19207C2*)(S19207C9*), ABISELECT(72,40), "S19207C15");
    /*is_ambiguous_... S19207C15::S19207C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C13*), ABISELECT(96,52), "S19207C15");
    /*is_ambiguous_... S19207C15::S19207C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*)(S19207C13*), ABISELECT(88,48), "S19207C15");
    /*is_ambiguous_... S19207C15::S19207C13 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C13*), ABISELECT(88,48), "S19207C15");
    /*is_ambiguous_... S19207C17::S19207C13 */ AMB_check_base_class_offset(lv, (S19207C13*)(S19207C17*), ABISELECT(88,48), "S19207C15");
    check_base_class_offset(lv, (S19207C13*)(S19207C19*)(S19207C16*), ABISELECT(88,48), "S19207C15");
    check_base_class_offset(lv, (S19207C17*)(S19207C16*), ABISELECT(56,28), "S19207C15");
    check_base_class_offset(lv, (S7856C9_nt*)(S19207C16*), 0, "S19207C15");
    check_base_class_offset(lv, (S19207C10*)(S19207C9*), ABISELECT(104,56), "S19207C15");
    /*is_ambiguous_... S19207C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C9*), ABISELECT(104,56), "S19207C15");
    check_base_class_offset(lv, (S19207C9*)(S19207C16*), ABISELECT(104,56), "S19207C15");
    /*is_ambiguous_... S19207C2::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C2*)(S19207C19*)(S19207C16*), ABISELECT(24,12), "S19207C15");
    /*is_ambiguous_... S19207C2::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C2*)(S19207C19*)(S19207C16*), ABISELECT(32,16), "S19207C15");
    check_base_class_offset(lv, (S7856C15*)(S19207C5*)(S19207C2*)(S19207C19*)(S19207C16*), ABISELECT(24,12), "S19207C15");
    check_base_class_offset(lv, (S19207C5*)(S19207C2*)(S19207C19*)(S19207C16*), ABISELECT(24,12), "S19207C15");
    check_base_class_offset(lv, (S19207C2*)(S19207C19*)(S19207C16*), ABISELECT(24,12), "S19207C15");
    /*is_ambiguous_... S19207C19::S19207C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C12*)(S19207C19*)(S19207C16*), ABISELECT(40,20), "S19207C15");
    /*is_ambiguous_... S19207C19::S19207C12 */ AMB_check_base_class_offset(lv, (S19207C12*)(S19207C19*)(S19207C16*), ABISELECT(40,20), "S19207C15");
    /*is_ambiguous_... S19207C19::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C19*)(S19207C16*), ABISELECT(48,24), "S19207C15");
    check_base_class_offset(lv, (S19207C19*)(S19207C16*), ABISELECT(24,12), "S19207C15");
    check_base_class_offset(lv, (S19207C16*), ABISELECT(24,12), "S19207C15");
    test_class_info(&lv, &cd_S19207C15);
    dp->~S19207C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19207C15(Test_S19207C15, "S19207C15", ABISELECT(120,64));

#else // __cplusplus

extern void _ZN9S19207C15C1Ev();
extern void _ZN9S19207C15D2Ev();
Name_Map name_map_S19207C15[] = {
  NSPAIR(_ZN9S19207C15C1Ev),
  NSPAIR(_ZN9S19207C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C12;
extern VTBL_ENTRY _ZTI9S19207C12[];
extern  VTBL_ENTRY _ZTV9S19207C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C13;
extern VTBL_ENTRY _ZTI9S19207C13[];
extern  VTBL_ENTRY _ZTV9S19207C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C13[];
extern Class_Descriptor cd_S19207C11;
extern VTBL_ENTRY _ZTI9S19207C11[];
extern  VTBL_ENTRY _ZTV9S19207C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C11[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C2;
extern VTBL_ENTRY _ZTI8S19207C2[];
extern  VTBL_ENTRY _ZTV8S19207C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C2[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C13;
extern VTBL_ENTRY _ZTI9S19207C13[];
extern  VTBL_ENTRY _ZTV9S19207C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C13[];
extern Class_Descriptor cd_S19207C17;
extern VTBL_ENTRY _ZTI9S19207C17[];
extern  VTBL_ENTRY _ZTV9S19207C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C17[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S19207C10;
extern VTBL_ENTRY _ZTI9S19207C10[];
extern  VTBL_ENTRY _ZTV9S19207C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C10[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19207C9;
extern VTBL_ENTRY _ZTI8S19207C9[];
extern  VTBL_ENTRY _ZTV8S19207C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C9[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C2;
extern VTBL_ENTRY _ZTI8S19207C2[];
extern  VTBL_ENTRY _ZTV8S19207C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C2[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19207C12;
extern VTBL_ENTRY _ZTI9S19207C12[];
extern  VTBL_ENTRY _ZTV9S19207C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19207C19;
extern VTBL_ENTRY _ZTI9S19207C19[];
extern  VTBL_ENTRY _ZTV9S19207C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C19[];
extern Class_Descriptor cd_S19207C16;
extern VTBL_ENTRY _ZTI9S19207C16[];
extern  VTBL_ENTRY _ZTV9S19207C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C16[];
static Base_Class bases_S19207C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C12,    ABISELECT(17,9), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(17,9), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19207C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19207C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19207C5,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19207C13,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19207C11,    ABISELECT(8,4), //bcp->offset
    17, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19207C5,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19207C2,    ABISELECT(72,40), //bcp->offset
    63, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19207C5,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19207C13,    ABISELECT(88,48), //bcp->offset
    67, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S19207C17,    ABISELECT(56,28), //bcp->offset
    50, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S19207C10,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19207C9,    ABISELECT(104,56), //bcp->offset
    77, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S19207C5,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19207C2,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S19207C12,    ABISELECT(40,20), //bcp->offset
    44, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S19207C19,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S19207C16,    ABISELECT(24,12), //bcp->offset
    27, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19207C15[];
extern void _ZN9S19207C15D1Ev();
extern void _ZN9S19207C15D0Ev();
extern void ABISELECT(_ZTv0_n64_N9S19207C15D1Ev,_ZTv0_n32_N9S19207C15D1Ev)();
extern void ABISELECT(_ZThn8_N9S19207C15D1Ev,_ZThn4_N9S19207C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C15D0Ev,_ZTv0_n32_N9S19207C15D0Ev)();
extern void ABISELECT(_ZThn8_N9S19207C15D0Ev,_ZThn4_N9S19207C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N9S19207C15D1Ev,_ZTv0_n60_N9S19207C15D1Ev)();
extern void ABISELECT(_ZThn24_N9S19207C15D1Ev,_ZThn12_N9S19207C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N9S19207C15D0Ev,_ZTv0_n60_N9S19207C15D0Ev)();
extern void ABISELECT(_ZThn24_N9S19207C15D0Ev,_ZThn12_N9S19207C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19207C15D1Ev,_ZTv0_n44_N9S19207C15D1Ev)();
extern void ABISELECT(_ZThn56_N9S19207C15D1Ev,_ZThn28_N9S19207C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19207C15D0Ev,_ZTv0_n44_N9S19207C15D0Ev)();
extern void ABISELECT(_ZThn56_N9S19207C15D0Ev,_ZThn28_N9S19207C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C15D1Ev,_ZTv0_n32_N9S19207C15D1Ev)();
extern void ABISELECT(_ZThn88_N9S19207C15D1Ev,_ZThn48_N9S19207C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C15D0Ev,_ZTv0_n32_N9S19207C15D0Ev)();
extern void ABISELECT(_ZThn88_N9S19207C15D0Ev,_ZThn48_N9S19207C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19207C15D1Ev,_ZTv0_n44_N9S19207C15D1Ev)();
extern void ABISELECT(_ZThn104_N9S19207C15D1Ev,_ZThn56_N9S19207C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19207C15D0Ev,_ZTv0_n44_N9S19207C15D0Ev)();
extern void ABISELECT(_ZThn104_N9S19207C15D0Ev,_ZThn56_N9S19207C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19207C15[] = {
  ABISELECT(104,56),
  ABISELECT(104,56),
  0,
  ABISELECT(88,48),
  ABISELECT(72,40),
  ABISELECT(56,28),
  ABISELECT(24,12),
  0,
  ABISELECT(8,4),
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C15[0]),
  (VTBL_ENTRY)&_ZN9S19207C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C15D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19207C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C15D1Ev,_ZTv0_n32_N9S19207C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C15D0Ev,_ZTv0_n32_N9S19207C15D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(80,44),
  ABISELECT(80,44),
  ABISELECT(-24,-12),
  ABISELECT(48,28),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(-7,-3),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(64,36),
  ABISELECT(-24,-12),
  ABISELECT(-7,-3),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19207C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19207C15D1Ev,_ZTv0_n60_N9S19207C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19207C15D0Ev,_ZTv0_n60_N9S19207C15D0Ev),
  ABISELECT(-23,-11),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-23,-11),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19207C15[0]),
  ABISELECT(-56,-28),
  ABISELECT(32,20),
  ABISELECT(16,12),
  ABISELECT(-56,-28),
  ABISELECT(-48,-24),
  ABISELECT(-39,-19),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-39,-19),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S19207C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C15D1Ev,_ZTv0_n44_N9S19207C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C15D0Ev,_ZTv0_n44_N9S19207C15D0Ev),
  ABISELECT(-72,-40),
  ABISELECT(-55,-31),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S19207C15[0]),
  ABISELECT(-88,-48),
  ABISELECT(-71,-39),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-71,-39),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI9S19207C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C15D1Ev,_ZTv0_n32_N9S19207C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C15D0Ev,_ZTv0_n32_N9S19207C15D0Ev),
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  ABISELECT(-96,-52),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-104,-56),
  ABISELECT(-87,-47),
  ABISELECT(-104,-56),
  ABISELECT(-87,-47),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI9S19207C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C15D1Ev,_ZTv0_n44_N9S19207C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C15D0Ev,_ZTv0_n44_N9S19207C15D0Ev),
};
extern VTBL_ENTRY _ZTV9S19207C15[];
extern void _ZN9S19207C11D1Ev();
extern void _ZN9S19207C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C11__9S19207C15[] = {
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C11[0]),
  (VTBL_ENTRY)&_ZN9S19207C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C11D0Ev,
};
extern void _ZN9S19207C13D1Ev();
extern void _ZN9S19207C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C139S19207C11__9S19207C15[] = {
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
  (VTBL_ENTRY)&_ZN9S19207C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19207C59S19207C139S19207C11__A1__9S19207C15[] = {
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C139S19207C11__9S19207C15[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C11__9S19207C15[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI9S19207C11[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C15[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C5__9S19207C15[] = {
  0,
  ABISELECT(17,9),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
extern void _ZN9S19207C16D1Ev();
extern void _ZN9S19207C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C16__9S19207C15[] = {
  ABISELECT(80,44),
  ABISELECT(80,44),
  ABISELECT(-24,-12),
  ABISELECT(48,28),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(-7,-3),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(64,36),
  ABISELECT(-24,-12),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
  (VTBL_ENTRY)&_ZN9S19207C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C16D0Ev,
};
extern void _ZN9S19207C19D1Ev();
extern void _ZN9S19207C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C199S19207C16__9S19207C15[] = {
  ABISELECT(-7,-3),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(64,36),
  ABISELECT(-24,-12),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C19[0]),
  (VTBL_ENTRY)&_ZN9S19207C19D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C19D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19207C29S19207C199S19207C16__A1__9S19207C15[] = {
  ABISELECT(-24,-12),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C58S19207C29S19207C199S19207C16__A4__9S19207C15[] = {
  ABISELECT(-24,-12),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C129S19207C199S19207C16__A1__9S19207C15[] = {
  ABISELECT(-23,-11),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C5__9S19207C129S19207C199S19207C16__A1__9S19207C15[] = {
  0,
  ABISELECT(17,9),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI9S19207C12[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19207C19D1Ev,_ZTv0_n32_N9S19207C19D1Ev)();
extern void ABISELECT(_ZThn64_N9S19207C19D1Ev,_ZThn36_N9S19207C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C19D0Ev,_ZTv0_n32_N9S19207C19D0Ev)();
extern void ABISELECT(_ZThn64_N9S19207C19D0Ev,_ZThn36_N9S19207C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C13__9S19207C199S19207C16__9S19207C15[] = {
  ABISELECT(-64,-36),
  ABISELECT(-71,-39),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-71,-39),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S19207C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C19D1Ev,_ZTv0_n32_N9S19207C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C19D0Ev,_ZTv0_n32_N9S19207C19D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C199S19207C16__9S19207C15[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S19207C19[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__A__9S19207C199S19207C16__9S19207C15[] = {
  ABISELECT(-23,-11),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-23,-11),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19207C19[0]),
};
extern void ABISELECT(_ZTv0_n88_N9S19207C16D1Ev,_ZTv0_n44_N9S19207C16D1Ev)();
extern void ABISELECT(_ZThn32_N9S19207C16D1Ev,_ZThn16_N9S19207C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19207C16D0Ev,_ZTv0_n44_N9S19207C16D0Ev)();
extern void ABISELECT(_ZThn32_N9S19207C16D0Ev,_ZThn16_N9S19207C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C17__9S19207C16__9S19207C15[] = {
  ABISELECT(-32,-16),
  ABISELECT(32,20),
  ABISELECT(16,12),
  ABISELECT(-56,-28),
  ABISELECT(-48,-24),
  ABISELECT(-39,-19),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-39,-19),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C16D1Ev,_ZTv0_n44_N9S19207C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C16D0Ev,_ZTv0_n44_N9S19207C16D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N9S19207C16D1Ev,_ZTv0_n32_N9S19207C16D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19207C16D0Ev,_ZTv0_n32_N9S19207C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19207C11__9S19207C16__9S19207C15[] = {
  ABISELECT(16,8),
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C16D1Ev,_ZTv0_n32_N9S19207C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C16D0Ev,_ZTv0_n32_N9S19207C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C16__9S19207C15[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__9S19207C16__9S19207C15[] = {
  ABISELECT(-72,-40),
  ABISELECT(-55,-31),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19207C16D1Ev,_ZTv0_n32_N9S19207C16D1Ev)();
extern void ABISELECT(_ZThn64_N9S19207C16D1Ev,_ZThn36_N9S19207C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C16D0Ev,_ZTv0_n32_N9S19207C16D0Ev)();
extern void ABISELECT(_ZThn64_N9S19207C16D0Ev,_ZThn36_N9S19207C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C13__A1__9S19207C16__9S19207C15[] = {
  ABISELECT(-64,-36),
  ABISELECT(-71,-39),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-71,-39),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C16D1Ev,_ZTv0_n32_N9S19207C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C16D0Ev,_ZTv0_n32_N9S19207C16D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N9S19207C16D1Ev,_ZTv0_n44_N9S19207C16D1Ev)();
extern void ABISELECT(_ZThn80_N9S19207C16D1Ev,_ZThn44_N9S19207C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19207C16D0Ev,_ZTv0_n44_N9S19207C16D0Ev)();
extern void ABISELECT(_ZThn80_N9S19207C16D0Ev,_ZThn44_N9S19207C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19207C9__9S19207C16__9S19207C15[] = {
  ABISELECT(-80,-44),
  ABISELECT(-104,-56),
  ABISELECT(-96,-52),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-104,-56),
  ABISELECT(-87,-47),
  ABISELECT(-104,-56),
  ABISELECT(-87,-47),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C16D1Ev,_ZTv0_n44_N9S19207C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C16D0Ev,_ZTv0_n44_N9S19207C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19207C129S19207C19__A1__9S19207C16__9S19207C15[] = {
  ABISELECT(-23,-11),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-23,-11),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
};
extern void _ZN9S19207C17D1Ev();
extern void _ZN9S19207C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C17__9S19207C15[] = {
  ABISELECT(32,20),
  ABISELECT(16,12),
  ABISELECT(-56,-28),
  ABISELECT(-48,-24),
  ABISELECT(-39,-19),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-39,-19),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C17[0]),
  (VTBL_ENTRY)&_ZN9S19207C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C17D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N9S19207C17D1Ev,_ZTv0_n32_N9S19207C17D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19207C17D0Ev,_ZTv0_n32_N9S19207C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19207C11__9S19207C17__9S19207C15[] = {
  ABISELECT(48,24),
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI9S19207C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C17D1Ev,_ZTv0_n32_N9S19207C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C17D0Ev,_ZTv0_n32_N9S19207C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C17__9S19207C15[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI9S19207C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__9S19207C17__9S19207C15[] = {
  ABISELECT(-72,-40),
  ABISELECT(-55,-31),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19207C17[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19207C17D1Ev,_ZTv0_n32_N9S19207C17D1Ev)();
extern void ABISELECT(_ZThn32_N9S19207C17D1Ev,_ZThn20_N9S19207C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C17D0Ev,_ZTv0_n32_N9S19207C17D0Ev)();
extern void ABISELECT(_ZThn32_N9S19207C17D0Ev,_ZThn20_N9S19207C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C13__A1__9S19207C17__9S19207C15[] = {
  ABISELECT(-32,-20),
  ABISELECT(-71,-39),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-71,-39),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S19207C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C17D1Ev,_ZTv0_n32_N9S19207C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C17D0Ev,_ZTv0_n32_N9S19207C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__9S19207C15[] = {
  ABISELECT(-72,-40),
  ABISELECT(-55,-31),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C58S19207C2__A2__9S19207C15[] = {
  ABISELECT(-72,-40),
  ABISELECT(-55,-31),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
extern void _ZN9S19207C13D1Ev();
extern void _ZN9S19207C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C13__A1__9S19207C15[] = {
  ABISELECT(-71,-39),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-71,-39),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
  (VTBL_ENTRY)&_ZN9S19207C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19207C59S19207C13__A3__9S19207C15[] = {
  ABISELECT(-88,-48),
  ABISELECT(-71,-39),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C13__A1__9S19207C15[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
};
extern void _ZN8S19207C9D1Ev();
extern void _ZN8S19207C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19207C9__9S19207C15[] = {
  ABISELECT(-104,-56),
  ABISELECT(-96,-52),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-104,-56),
  ABISELECT(-87,-47),
  ABISELECT(-104,-56),
  ABISELECT(-87,-47),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
  (VTBL_ENTRY)&_ZN8S19207C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19207C9D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__8S19207C9__9S19207C15[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  ABISELECT(104,56),
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__8S19207C9__9S19207C15[] = {
  ABISELECT(-72,-40),
  ABISELECT(-55,-31),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S19207C9D1Ev,_ZTv0_n32_N8S19207C9D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S19207C9D0Ev,_ZTv0_n32_N8S19207C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19207C11__8S19207C9__9S19207C15[] = {
  ABISELECT(96,52),
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  ABISELECT(96,52),
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C9D1Ev,_ZTv0_n32_N8S19207C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C9D0Ev,_ZTv0_n32_N8S19207C9D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19207C10__9S19207C15[] = {
  ABISELECT(-87,-47),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C10[0]),
};
static  VTT_ENTRY vtt_S19207C15[] = {
  {&(_ZTV9S19207C15[15]),  15,90},
  {&(_ZTV9S19207C15[25]),  25,90},
  {&(_ZTV9S19207C15[15]),  15,90},
  {&(_ZTV9S19207C15[15]),  15,90},
  {&(_ZTV9S19207C15[42]),  42,90},
  {&(_ZTV9S19207C15[61]),  61,90},
  {&(_ZTV9S19207C15[67]),  67,90},
  {&(_ZTV9S19207C15[75]),  75,90},
  {&(_ZTV9S19207C15[88]),  88,90},
  {&(_ZTV9S19207C15[88]),  88,90},
  {&(_ZTV9S19207C15[50]),  50,90},
  {&(_tg__ZTV9S19207C11__9S19207C15[7]),  7,9},
  {&(_tg__ZTV9S19207C139S19207C11__9S19207C15[7]),  7,9},
  {&(_tg__ZTV8S19207C59S19207C139S19207C11__A1__9S19207C15[4]),  4,4},
  {&(_tg__ZTV9S19207C12__9S19207C139S19207C11__9S19207C15[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C139S19207C11__9S19207C15[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C11__9S19207C15[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C11__9S19207C15[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C15[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C15[6]),  6,6},
  {&(_tg__ZTV8S19207C5__9S19207C15[4]),  4,4},
  {&(_tg__ZTV9S19207C16__9S19207C15[14]),  14,16},
  {&(_tg__ZTV9S19207C199S19207C16__9S19207C15[8]),  8,10},
  {&(_tg__ZTV8S19207C29S19207C199S19207C16__A1__9S19207C15[4]),  4,4},
  {&(_tg__ZTV8S19207C58S19207C29S19207C199S19207C16__A4__9S19207C15[4]),  4,4},
  {&(_tg__ZTV9S19207C129S19207C199S19207C16__A1__9S19207C15[6]),  6,6},
  {&(_tg__ZTV8S19207C5__9S19207C129S19207C199S19207C16__A1__9S19207C15[4]),  4,4},
  {&(_tg__ZTV9S19207C13__9S19207C199S19207C16__9S19207C15[8]),  8,10},
  {&(_tg__ZTV9S19207C12__9S19207C199S19207C16__9S19207C15[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C199S19207C16__9S19207C15[6]),  6,6},
  {&(_tg__ZTV9S19207C12__A__9S19207C199S19207C16__9S19207C15[6]),  6,6},
  {&(_tg__ZTV9S19207C17__9S19207C16__9S19207C15[11]),  11,13},
  {&(_tg__ZTV9S19207C11__9S19207C16__9S19207C15[8]),  8,10},
  {&(_tg__ZTV9S19207C12__9S19207C16__9S19207C15[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C16__9S19207C15[6]),  6,6},
  {&(_tg__ZTV8S19207C2__9S19207C16__9S19207C15[4]),  4,4},
  {&(_tg__ZTV9S19207C13__A1__9S19207C16__9S19207C15[8]),  8,10},
  {&(_tg__ZTV8S19207C9__9S19207C16__9S19207C15[11]),  11,13},
  {&(_tg__ZTV8S19207C9__9S19207C16__9S19207C15[11]),  11,13},
  {&(_tg__ZTV9S19207C129S19207C19__A1__9S19207C16__9S19207C15[6]),  6,6},
  {&(_tg__ZTV9S19207C17__9S19207C15[10]),  10,12},
  {&(_tg__ZTV9S19207C11__9S19207C17__9S19207C15[8]),  8,10},
  {&(_tg__ZTV9S19207C12__9S19207C17__9S19207C15[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C17__9S19207C15[6]),  6,6},
  {&(_tg__ZTV8S19207C2__9S19207C17__9S19207C15[4]),  4,4},
  {&(_tg__ZTV9S19207C13__A1__9S19207C17__9S19207C15[8]),  8,10},
  {&(_tg__ZTV8S19207C2__9S19207C15[4]),  4,4},
  {&(_tg__ZTV8S19207C58S19207C2__A2__9S19207C15[4]),  4,4},
  {&(_tg__ZTV9S19207C13__A1__9S19207C15[7]),  7,9},
  {&(_tg__ZTV8S19207C59S19207C13__A3__9S19207C15[4]),  4,4},
  {&(_tg__ZTV9S19207C12__9S19207C13__A1__9S19207C15[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C13__A1__9S19207C15[6]),  6,6},
  {&(_tg__ZTV8S19207C9__9S19207C15[10]),  10,12},
  {&(_tg__ZTV9S19207C12__8S19207C9__9S19207C15[6]),  6,6},
  {&(_tg__ZTV8S19207C9__9S19207C15[10]),  10,12},
  {&(_tg__ZTV8S19207C2__8S19207C9__9S19207C15[4]),  4,4},
  {&(_tg__ZTV9S19207C11__8S19207C9__9S19207C15[8]),  8,10},
  {&(_tg__ZTV9S19207C12__8S19207C9__9S19207C15[6]),  6,6},
  {&(_tg__ZTV9S19207C10__9S19207C15[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19207C15[];
extern  VTBL_ENTRY _ZTV9S19207C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C15[];
static VTBL_ENTRY alt_thunk_names114[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C17D0Ev,_ZTv0_n32_N9S19207C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19207C17D0Ev,_ZThn20_N9S19207C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C17D1Ev,_ZTv0_n32_N9S19207C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19207C17D1Ev,_ZThn20_N9S19207C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C16D0Ev,_ZTv0_n32_N9S19207C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19207C16D0Ev,_ZThn36_N9S19207C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C16D1Ev,_ZTv0_n32_N9S19207C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19207C16D1Ev,_ZThn36_N9S19207C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19207C16D0Ev,_ZTv0_n44_N9S19207C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19207C16D0Ev,_ZThn44_N9S19207C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19207C16D0Ev,_ZThn16_N9S19207C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19207C16D1Ev,_ZTv0_n44_N9S19207C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19207C16D1Ev,_ZThn44_N9S19207C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19207C16D1Ev,_ZThn16_N9S19207C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C19D0Ev,_ZTv0_n32_N9S19207C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19207C19D0Ev,_ZThn36_N9S19207C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C19D1Ev,_ZTv0_n32_N9S19207C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19207C19D1Ev,_ZThn36_N9S19207C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19207C15D0Ev,_ZTv0_n44_N9S19207C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19207C15D0Ev,_ZThn56_N9S19207C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19207C15D0Ev,_ZThn28_N9S19207C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19207C15D1Ev,_ZTv0_n44_N9S19207C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19207C15D1Ev,_ZThn56_N9S19207C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19207C15D1Ev,_ZThn28_N9S19207C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19207C15D0Ev,_ZTv0_n60_N9S19207C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19207C15D0Ev,_ZThn12_N9S19207C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19207C15D1Ev,_ZTv0_n60_N9S19207C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19207C15D1Ev,_ZThn12_N9S19207C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C15D0Ev,_ZTv0_n32_N9S19207C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19207C15D0Ev,_ZThn48_N9S19207C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19207C15D0Ev,_ZThn4_N9S19207C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C15D1Ev,_ZTv0_n32_N9S19207C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19207C15D1Ev,_ZThn48_N9S19207C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19207C15D1Ev,_ZThn4_N9S19207C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19207C15 = {  "S19207C15", // class name
  bases_S19207C15, 37,
  &(vtc_S19207C15[0]), // expected_vtbl_contents
  &(vtt_S19207C15[0]), // expected_vtt_contents
  ABISELECT(120,64), // object size
  NSPAIRA(_ZTI9S19207C15),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19207C15),90, //virtual function table var
  15, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19207C15),59, //virtual table table var
  17, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names114,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19207C21  : S7856C15 , S19207C10 {
  virtual  ~S19207C21(); // _ZN9S19207C21D2Ev
  S19207C21(); // tgen
};
//SIG(-1 S19207C21) C1{ BC2{ m} BC3{ VBC2} vd}


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

static void Test_S19207C21()
{
  extern Class_Descriptor cd_S19207C21;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19207C21, buf);
    S19207C21 *dp, &lv = *(dp=new (buf) S19207C21());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19207C21)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19207C21)");
    /*is_ambiguous_... S19207C21::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), 0, "S19207C21");
    check_base_class_offset(lv, (S7856C15*)(S19207C10*), ABISELECT(8,4), "S19207C21");
    check_base_class_offset(lv, (S19207C10*), 0, "S19207C21");
    test_class_info(&lv, &cd_S19207C21);
    dp->~S19207C21();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19207C21(Test_S19207C21, "S19207C21", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN9S19207C21C1Ev();
extern void _ZN9S19207C21D2Ev();
Name_Map name_map_S19207C21[] = {
  NSPAIR(_ZN9S19207C21C1Ev),
  NSPAIR(_ZN9S19207C21D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C10;
extern VTBL_ENTRY _ZTI9S19207C10[];
extern  VTBL_ENTRY _ZTV9S19207C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C10[];
static Base_Class bases_S19207C21[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19207C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19207C21[];
extern void _ZN9S19207C21D1Ev();
extern void _ZN9S19207C21D0Ev();
static  VTBL_ENTRY vtc_S19207C21[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C21[0]),
  (VTBL_ENTRY)&_ZN9S19207C21D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C21D0Ev,
};
extern VTBL_ENTRY _ZTV9S19207C21[];
static  VTBL_ENTRY _tg__ZTV9S19207C10__9S19207C21[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C10[0]),
};
static  VTT_ENTRY vtt_S19207C21[] = {
  {&(_ZTV9S19207C21[3]),  3,5},
  {&(_tg__ZTV9S19207C10__9S19207C21[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19207C21[];
extern  VTBL_ENTRY _ZTV9S19207C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C21[];
Class_Descriptor cd_S19207C21 = {  "S19207C21", // class name
  bases_S19207C21, 3,
  &(vtc_S19207C21[0]), // expected_vtbl_contents
  &(vtt_S19207C21[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI9S19207C21),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19207C21),5, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19207C21),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19207C20  : S19207C11 , virtual S19207C2 , virtual S19207C15 , S19207C21 , S77C13_nt {
  int s19207c20f0;
  ~S19207C20(); // tgen
  S19207C20(); // tgen
};
//SIG(-1 S19207C20) C1{ BC2{ VBC3{ m} VBC4{ m} VBC5{ BC3 VBC6{ VBC3 BC4 VBC7{ m}} VBC4} BC7 BC8{ BC4 VBC3 VBC7 BC6 VBC5 vd} vd} VBC9{ BC7 BC4 BC6 Fi} VBC10{ VBC2 VBC11{ VBC12{ VBC2 VBC9 VBC8 vd Fi[2]} VBC13{ m} VBC14{ VBC6 VBC15{ VBC4} VBC9 BC7 VBC2 vd Fi} BC16{ VBC8 BC9 BC5 BC7 vd} vd} vd} BC17{ BC4 BC15 vd} BC18{ m} Fi}


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

static void Test_S19207C20()
{
  extern Class_Descriptor cd_S19207C20;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(20,22)];
    init_test(&cd_S19207C20, buf);
    S19207C20 *dp, &lv = *(dp=new (buf) S19207C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(152,84), "sizeof(S19207C20)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19207C20)");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C11*), 0, "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*), 0, "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C13*)(S19207C11*), 0, "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*)(S19207C13*)(S19207C11*), 0, "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C2 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*)(S19207C2*), 0, "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C11*), 0, "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C13*)(S19207C11*), 0, "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*)(S19207C13*)(S19207C11*), 0, "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C13*), 0, "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*)(S19207C13*), 0, "S19207C20");
    check_base_class_offset(lv, (S7856C12*)(S19207C5*)(S19207C2*)(S19207C19*)(S19207C16*), 0, "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C11*), ABISELECT(28,16), "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C12*), ABISELECT(28,16), "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C11*), ABISELECT(28,16), "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C10*), ABISELECT(28,16), "S19207C20");
    /*is_ambiguous_... S19207C19::S19207C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C12*)(S19207C19*)(S19207C16*), ABISELECT(28,16), "S19207C20");
    check_base_class_offset(lv, (S7856C15*)(S19207C10*)(S19207C21*), ABISELECT(28,16), "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C12*), ABISELECT(48,28), "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*), ABISELECT(48,28), "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*), ABISELECT(28,16), "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C13*)(S19207C11*), ABISELECT(28,16), "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*)(S19207C13*)(S19207C11*), ABISELECT(28,16), "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C2 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*)(S19207C2*), ABISELECT(28,16), "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C13*)(S19207C11*), ABISELECT(28,16), "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*)(S19207C13*)(S19207C11*), ABISELECT(28,16), "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C13 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C13*), ABISELECT(28,16), "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C13 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*)(S19207C13*), ABISELECT(28,16), "S19207C20");
    check_base_class_offset(lv, (S7856C24*)(S19207C5*)(S19207C2*)(S19207C19*)(S19207C16*), ABISELECT(28,16), "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C12 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C12*), ABISELECT(48,28), "S19207C20");
    /*is_ambiguous_... S19207C9::S19207C5 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C9*), ABISELECT(48,28), "S19207C20");
    /*is_ambiguous_... S19207C19::S19207C12 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C12*)(S19207C19*)(S19207C16*), ABISELECT(48,28), "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S19207C12*)(S19207C11*), ABISELECT(48,28), "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S19207C12*)(S19207C13*)(S19207C11*), ABISELECT(48,28), "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S19207C12*)(S19207C11*), ABISELECT(48,28), "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S19207C12*)(S19207C13*)(S19207C11*), ABISELECT(48,28), "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C13 */ AMB_check_base_class_offset(lv, (S19207C12*)(S19207C13*), ABISELECT(48,28), "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C11*), 0, "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C13*)(S19207C11*), ABISELECT(8,4), "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*)(S19207C13*)(S19207C11*), 0, "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C13*)(S19207C11*), 0, "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S19207C13*)(S19207C11*), 0, "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S19207C11*), 0, "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C2 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C2*), ABISELECT(32,20), "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C2 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C2*), ABISELECT(40,24), "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C2 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*)(S19207C2*), ABISELECT(32,20), "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C2 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C2*), ABISELECT(32,20), "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C2 */ AMB_check_base_class_offset(lv, (S19207C2*), ABISELECT(32,20), "S19207C20");
    check_base_class_offset(lv, (S19207C2*)(S19207C17*), ABISELECT(32,20), "S19207C20");
    check_base_class_offset(lv, (S19207C2*)(S19207C9*), ABISELECT(32,20), "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C11*), ABISELECT(56,32), "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C13*)(S19207C11*), ABISELECT(64,36), "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*)(S19207C13*)(S19207C11*), ABISELECT(56,32), "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C13*)(S19207C11*), ABISELECT(56,32), "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S19207C13*)(S19207C11*), ABISELECT(56,32), "S19207C20");
    check_base_class_offset(lv, (S19207C11*)(S19207C15*), ABISELECT(56,32), "S19207C20");
    check_base_class_offset(lv, (S19207C11*)(S19207C17*), ABISELECT(56,32), "S19207C20");
    check_base_class_offset(lv, (S19207C11*)(S19207C9*), ABISELECT(56,32), "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C13*), ABISELECT(128,72), "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*)(S19207C13*), ABISELECT(120,68), "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C13 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C13*), ABISELECT(120,68), "S19207C20");
    /*is_ambiguous_... S19207C17::S19207C13 */ AMB_check_base_class_offset(lv, (S19207C13*)(S19207C17*), ABISELECT(120,68), "S19207C20");
    check_base_class_offset(lv, (S19207C13*)(S19207C19*)(S19207C16*), ABISELECT(120,68), "S19207C20");
    check_base_class_offset(lv, (S19207C17*)(S19207C16*), ABISELECT(104,56), "S19207C20");
    check_base_class_offset(lv, (S7856C9_nt*)(S19207C16*), 0, "S19207C20");
    check_base_class_offset(lv, (S19207C10*)(S19207C9*), ABISELECT(136,76), "S19207C20");
    /*is_ambiguous_... S19207C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C9*), ABISELECT(136,76), "S19207C20");
    check_base_class_offset(lv, (S19207C9*)(S19207C16*), ABISELECT(136,76), "S19207C20");
    /*is_ambiguous_... S19207C2::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C2*)(S19207C19*)(S19207C16*), ABISELECT(72,40), "S19207C20");
    /*is_ambiguous_... S19207C2::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C2*)(S19207C19*)(S19207C16*), ABISELECT(80,44), "S19207C20");
    check_base_class_offset(lv, (S7856C15*)(S19207C5*)(S19207C2*)(S19207C19*)(S19207C16*), ABISELECT(72,40), "S19207C20");
    check_base_class_offset(lv, (S19207C5*)(S19207C2*)(S19207C19*)(S19207C16*), ABISELECT(72,40), "S19207C20");
    check_base_class_offset(lv, (S19207C2*)(S19207C19*)(S19207C16*), ABISELECT(72,40), "S19207C20");
    /*is_ambiguous_... S19207C19::S19207C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C12*)(S19207C19*)(S19207C16*), ABISELECT(88,48), "S19207C20");
    /*is_ambiguous_... S19207C19::S19207C12 */ AMB_check_base_class_offset(lv, (S19207C12*)(S19207C19*)(S19207C16*), ABISELECT(88,48), "S19207C20");
    /*is_ambiguous_... S19207C19::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C19*)(S19207C16*), ABISELECT(96,52), "S19207C20");
    check_base_class_offset(lv, (S19207C19*)(S19207C16*), ABISELECT(72,40), "S19207C20");
    check_base_class_offset(lv, (S19207C16*)(S19207C15*), ABISELECT(72,40), "S19207C20");
    check_base_class_offset(lv, (S19207C15*), ABISELECT(48,28), "S19207C20");
    /*is_ambiguous_... S19207C21::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C21*), ABISELECT(16,8), "S19207C20");
    check_base_class_offset(lv, (S19207C10*)(S19207C21*), ABISELECT(16,8), "S19207C20");
    check_base_class_offset(lv, (S19207C21*), ABISELECT(16,8), "S19207C20");
    check_base_class_offset(lv, (S77C13_nt*), 0, "S19207C20");
    check_field_offset(lv, s19207c20f0, ABISELECT(24,12), "S19207C20.s19207c20f0");
    test_class_info(&lv, &cd_S19207C20);
    dp->~S19207C20();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19207C20(Test_S19207C20, "S19207C20", ABISELECT(152,84));

#else // __cplusplus

extern void _ZN9S19207C20C1Ev();
extern void _ZN9S19207C20D1Ev();
Name_Map name_map_S19207C20[] = {
  NSPAIR(_ZN9S19207C20C1Ev),
  NSPAIR(_ZN9S19207C20D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C12;
extern VTBL_ENTRY _ZTI9S19207C12[];
extern  VTBL_ENTRY _ZTV9S19207C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C13;
extern VTBL_ENTRY _ZTI9S19207C13[];
extern  VTBL_ENTRY _ZTV9S19207C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C13[];
extern Class_Descriptor cd_S19207C11;
extern VTBL_ENTRY _ZTI9S19207C11[];
extern  VTBL_ENTRY _ZTV9S19207C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C11[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C2;
extern VTBL_ENTRY _ZTI8S19207C2[];
extern  VTBL_ENTRY _ZTV8S19207C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C2[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C13;
extern VTBL_ENTRY _ZTI9S19207C13[];
extern  VTBL_ENTRY _ZTV9S19207C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C13[];
extern Class_Descriptor cd_S19207C11;
extern VTBL_ENTRY _ZTI9S19207C11[];
extern  VTBL_ENTRY _ZTV9S19207C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C11[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C13;
extern VTBL_ENTRY _ZTI9S19207C13[];
extern  VTBL_ENTRY _ZTV9S19207C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C13[];
extern Class_Descriptor cd_S19207C17;
extern VTBL_ENTRY _ZTI9S19207C17[];
extern  VTBL_ENTRY _ZTV9S19207C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C17[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S19207C10;
extern VTBL_ENTRY _ZTI9S19207C10[];
extern  VTBL_ENTRY _ZTV9S19207C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C10[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19207C9;
extern VTBL_ENTRY _ZTI8S19207C9[];
extern  VTBL_ENTRY _ZTV8S19207C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C9[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C2;
extern VTBL_ENTRY _ZTI8S19207C2[];
extern  VTBL_ENTRY _ZTV8S19207C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C2[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19207C12;
extern VTBL_ENTRY _ZTI9S19207C12[];
extern  VTBL_ENTRY _ZTV9S19207C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19207C19;
extern VTBL_ENTRY _ZTI9S19207C19[];
extern  VTBL_ENTRY _ZTV9S19207C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C19[];
extern Class_Descriptor cd_S19207C16;
extern VTBL_ENTRY _ZTI9S19207C16[];
extern  VTBL_ENTRY _ZTV9S19207C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C16[];
extern Class_Descriptor cd_S19207C15;
extern VTBL_ENTRY _ZTI9S19207C15[];
extern  VTBL_ENTRY _ZTV9S19207C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C10;
extern VTBL_ENTRY _ZTI9S19207C10[];
extern  VTBL_ENTRY _ZTV9S19207C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C10[];
extern Class_Descriptor cd_S19207C21;
extern VTBL_ENTRY _ZTI9S19207C21[];
extern  VTBL_ENTRY _ZTV9S19207C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C21[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
static Base_Class bases_S19207C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(28,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(28,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19207C5,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19207C12,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19207C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19207C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19207C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19207C5,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19207C2,    ABISELECT(32,20), //bcp->offset
    23, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19207C5,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19207C13,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19207C11,    ABISELECT(56,32), //bcp->offset
    45, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(128,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19207C5,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19207C13,    ABISELECT(120,68), //bcp->offset
    91, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S19207C17,    ABISELECT(104,56), //bcp->offset
    78, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S19207C10,    ABISELECT(136,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(136,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S19207C9,    ABISELECT(136,76), //bcp->offset
    101, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S19207C5,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S19207C2,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S19207C12,    ABISELECT(88,48), //bcp->offset
    72, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S19207C19,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S19207C16,    ABISELECT(72,40), //bcp->offset
    55, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    43, //immediately_derived
  0, 1},
  {&cd_S19207C15,    ABISELECT(48,28), //bcp->offset
    27, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S19207C10,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S19207C21,    ABISELECT(16,8), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19207C20[];
extern void _ZN9S19207C20D1Ev();
extern void _ZN9S19207C20D0Ev();
extern void ABISELECT(_ZThn16_N9S19207C20D1Ev,_ZThn8_N9S19207C20D1Ev)();
extern void ABISELECT(_ZThn16_N9S19207C20D0Ev,_ZThn8_N9S19207C20D0Ev)();
extern void ABISELECT(_ZTv0_n128_N9S19207C20D1Ev,_ZTv0_n64_N9S19207C20D1Ev)();
extern void ABISELECT(_ZThn48_N9S19207C20D1Ev,_ZThn28_N9S19207C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N9S19207C20D0Ev,_ZTv0_n64_N9S19207C20D0Ev)();
extern void ABISELECT(_ZThn48_N9S19207C20D0Ev,_ZThn28_N9S19207C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C20D1Ev,_ZTv0_n32_N9S19207C20D1Ev)();
extern void ABISELECT(_ZThn56_N9S19207C20D1Ev,_ZThn32_N9S19207C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C20D0Ev,_ZTv0_n32_N9S19207C20D0Ev)();
extern void ABISELECT(_ZThn56_N9S19207C20D0Ev,_ZThn32_N9S19207C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N9S19207C20D1Ev,_ZTv0_n60_N9S19207C20D1Ev)();
extern void ABISELECT(_ZThn72_N9S19207C20D1Ev,_ZThn40_N9S19207C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N9S19207C20D0Ev,_ZTv0_n60_N9S19207C20D0Ev)();
extern void ABISELECT(_ZThn72_N9S19207C20D0Ev,_ZThn40_N9S19207C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19207C20D1Ev,_ZTv0_n44_N9S19207C20D1Ev)();
extern void ABISELECT(_ZThn104_N9S19207C20D1Ev,_ZThn56_N9S19207C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19207C20D0Ev,_ZTv0_n44_N9S19207C20D0Ev)();
extern void ABISELECT(_ZThn104_N9S19207C20D0Ev,_ZThn56_N9S19207C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C20D1Ev,_ZTv0_n32_N9S19207C20D1Ev)();
extern void ABISELECT(_ZThn120_N9S19207C20D1Ev,_ZThn68_N9S19207C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C20D0Ev,_ZTv0_n32_N9S19207C20D0Ev)();
extern void ABISELECT(_ZThn120_N9S19207C20D0Ev,_ZThn68_N9S19207C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19207C20D1Ev,_ZTv0_n44_N9S19207C20D1Ev)();
extern void ABISELECT(_ZThn136_N9S19207C20D1Ev,_ZThn76_N9S19207C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19207C20D0Ev,_ZTv0_n44_N9S19207C20D0Ev)();
extern void ABISELECT(_ZThn136_N9S19207C20D0Ev,_ZThn76_N9S19207C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19207C20[] = {
  ABISELECT(136,76),
  ABISELECT(136,76),
  0,
  ABISELECT(120,68),
  ABISELECT(104,56),
  ABISELECT(72,40),
  ABISELECT(56,32),
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(28,16),
  ABISELECT(48,28),
  ABISELECT(48,28),
  ABISELECT(28,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C20[0]),
  (VTBL_ENTRY)&_ZN9S19207C20D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C20D0Ev,
  ABISELECT(12,8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19207C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19207C20D1Ev,_ZThn8_N9S19207C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19207C20D0Ev,_ZThn8_N9S19207C20D0Ev),
  -4,
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S19207C20[0]),
  ABISELECT(-48,-28),
  ABISELECT(88,48),
  ABISELECT(88,48),
  ABISELECT(-48,-28),
  ABISELECT(72,40),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  ABISELECT(24,12),
  0,
  ABISELECT(8,4),
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19207C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N9S19207C20D1Ev,_ZTv0_n64_N9S19207C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N9S19207C20D0Ev,_ZTv0_n64_N9S19207C20D0Ev),
  ABISELECT(-56,-32),
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S19207C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C20D1Ev,_ZTv0_n32_N9S19207C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C20D0Ev,_ZTv0_n32_N9S19207C20D0Ev),
  ABISELECT(-72,-40),
  ABISELECT(64,36),
  ABISELECT(64,36),
  ABISELECT(-72,-40),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(-44,-24),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(48,28),
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S19207C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19207C20D1Ev,_ZTv0_n60_N9S19207C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19207C20D0Ev,_ZTv0_n60_N9S19207C20D0Ev),
  ABISELECT(-60,-32),
  ABISELECT(-40,-20),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI9S19207C20[0]),
  ABISELECT(-104,-56),
  ABISELECT(16,12),
  ABISELECT(-72,-36),
  ABISELECT(-56,-28),
  ABISELECT(-48,-24),
  ABISELECT(-76,-40),
  ABISELECT(-56,-28),
  ABISELECT(-76,-40),
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI9S19207C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C20D1Ev,_ZTv0_n44_N9S19207C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C20D0Ev,_ZTv0_n44_N9S19207C20D0Ev),
  ABISELECT(-120,-68),
  ABISELECT(-92,-52),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI9S19207C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C20D1Ev,_ZTv0_n32_N9S19207C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C20D0Ev,_ZTv0_n32_N9S19207C20D0Ev),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-80,-44),
  ABISELECT(-104,-56),
  0,
  ABISELECT(-108,-60),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-108,-60),
  ABISELECT(-136,-76),
  (VTBL_ENTRY)&(_ZTI9S19207C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C20D1Ev,_ZTv0_n44_N9S19207C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C20D0Ev,_ZTv0_n44_N9S19207C20D0Ev),
};
extern VTBL_ENTRY _ZTV9S19207C20[];
extern void _ZN9S19207C11D1Ev();
extern void _ZN9S19207C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C11__A__9S19207C20[] = {
  ABISELECT(28,16),
  ABISELECT(48,28),
  ABISELECT(48,28),
  ABISELECT(28,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C11[0]),
  (VTBL_ENTRY)&_ZN9S19207C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C11D0Ev,
};
extern void _ZN9S19207C13D1Ev();
extern void _ZN9S19207C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C139S19207C11__9S19207C20[] = {
  ABISELECT(28,16),
  ABISELECT(48,28),
  ABISELECT(48,28),
  ABISELECT(28,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
  (VTBL_ENTRY)&_ZN9S19207C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19207C59S19207C139S19207C11__A1__9S19207C20[] = {
  ABISELECT(28,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C139S19207C11__9S19207C20[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C11__A__9S19207C20[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19207C11[0]),
};
extern void _ZN9S19207C21D1Ev();
extern void _ZN9S19207C21D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C21__9S19207C20[] = {
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C21[0]),
  (VTBL_ENTRY)&_ZN9S19207C21D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C21D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19207C109S19207C21__A1__9S19207C20[] = {
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C10[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C20[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C5__9S19207C20[] = {
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__9S19207C20[] = {
  -4,
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C58S19207C2__A2__9S19207C20[] = {
  -4,
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
extern void _ZN9S19207C15D1Ev();
extern void _ZN9S19207C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C15__9S19207C20[] = {
  ABISELECT(88,48),
  ABISELECT(88,48),
  ABISELECT(-48,-28),
  ABISELECT(72,40),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  ABISELECT(24,12),
  0,
  ABISELECT(8,4),
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C15[0]),
  (VTBL_ENTRY)&_ZN9S19207C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C15D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N9S19207C15D1Ev,_ZTv0_n32_N9S19207C15D1Ev)();
extern void ABISELECT(_ZThn8_N9S19207C15D1Ev,_ZThn4_N9S19207C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C15D0Ev,_ZTv0_n32_N9S19207C15D0Ev)();
extern void ABISELECT(_ZThn8_N9S19207C15D0Ev,_ZThn4_N9S19207C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C11__9S19207C15__9S19207C20[] = {
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19207C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C15D1Ev,_ZTv0_n32_N9S19207C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C15D0Ev,_ZTv0_n32_N9S19207C15D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N9S19207C15D1Ev,_ZTv0_n60_N9S19207C15D1Ev)();
extern void ABISELECT(_ZThn24_N9S19207C15D1Ev,_ZThn12_N9S19207C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N9S19207C15D0Ev,_ZTv0_n60_N9S19207C15D0Ev)();
extern void ABISELECT(_ZThn24_N9S19207C15D0Ev,_ZThn12_N9S19207C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C16__9S19207C15__9S19207C20[] = {
  ABISELECT(-24,-12),
  ABISELECT(64,36),
  ABISELECT(64,36),
  ABISELECT(-72,-40),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(-44,-24),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(48,28),
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19207C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19207C15D1Ev,_ZTv0_n60_N9S19207C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19207C15D0Ev,_ZTv0_n60_N9S19207C15D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N9S19207C15D1Ev,_ZTv0_n44_N9S19207C15D1Ev)();
extern void ABISELECT(_ZThn56_N9S19207C15D1Ev,_ZThn28_N9S19207C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19207C15D0Ev,_ZTv0_n44_N9S19207C15D0Ev)();
extern void ABISELECT(_ZThn56_N9S19207C15D0Ev,_ZThn28_N9S19207C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C17__9S19207C15__9S19207C20[] = {
  ABISELECT(-56,-28),
  ABISELECT(16,12),
  ABISELECT(-72,-36),
  ABISELECT(-56,-28),
  ABISELECT(-48,-24),
  ABISELECT(-76,-40),
  ABISELECT(-56,-28),
  ABISELECT(-76,-40),
  ABISELECT(-104,-56),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S19207C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C15D1Ev,_ZTv0_n44_N9S19207C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C15D0Ev,_ZTv0_n44_N9S19207C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__9S19207C15__9S19207C20[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S19207C15[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19207C15D1Ev,_ZTv0_n32_N9S19207C15D1Ev)();
extern void ABISELECT(_ZThn72_N9S19207C15D1Ev,_ZThn40_N9S19207C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C15D0Ev,_ZTv0_n32_N9S19207C15D0Ev)();
extern void ABISELECT(_ZThn72_N9S19207C15D0Ev,_ZThn40_N9S19207C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C13__A1__9S19207C15__9S19207C20[] = {
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S19207C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C15D1Ev,_ZTv0_n32_N9S19207C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C15D0Ev,_ZTv0_n32_N9S19207C15D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N9S19207C15D1Ev,_ZTv0_n44_N9S19207C15D1Ev)();
extern void ABISELECT(_ZThn88_N9S19207C15D1Ev,_ZThn48_N9S19207C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19207C15D0Ev,_ZTv0_n44_N9S19207C15D0Ev)();
extern void ABISELECT(_ZThn88_N9S19207C15D0Ev,_ZThn48_N9S19207C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19207C9__9S19207C15__9S19207C20[] = {
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-80,-44),
  ABISELECT(-104,-56),
  0,
  ABISELECT(-108,-60),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-108,-60),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI9S19207C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C15D1Ev,_ZTv0_n44_N9S19207C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C15D0Ev,_ZTv0_n44_N9S19207C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19207C129S19207C199S19207C16__A1__9S19207C15__9S19207C20[] = {
  ABISELECT(-60,-32),
  ABISELECT(-40,-20),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19207C15[0]),
};
extern void _ZN9S19207C11D1Ev();
extern void _ZN9S19207C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C11__A1__9S19207C20[] = {
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C11[0]),
  (VTBL_ENTRY)&_ZN9S19207C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C11D0Ev,
};
extern void _ZN9S19207C13D1Ev();
extern void _ZN9S19207C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C139S19207C11__A1__9S19207C20[] = {
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
  (VTBL_ENTRY)&_ZN9S19207C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19207C59S19207C139S19207C11__A3__9S19207C20[] = {
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C139S19207C11__A1__9S19207C20[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C11__A1__9S19207C20[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI9S19207C11[0]),
};
extern void _ZN9S19207C16D1Ev();
extern void _ZN9S19207C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C16__9S19207C20[] = {
  ABISELECT(64,36),
  ABISELECT(64,36),
  ABISELECT(-72,-40),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(-44,-24),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(48,28),
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
  (VTBL_ENTRY)&_ZN9S19207C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C16D0Ev,
};
extern void _ZN9S19207C19D1Ev();
extern void _ZN9S19207C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C199S19207C16__9S19207C20[] = {
  ABISELECT(-44,-24),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(48,28),
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C19[0]),
  (VTBL_ENTRY)&_ZN9S19207C19D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C19D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19207C29S19207C199S19207C16__A1__9S19207C20[] = {
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C58S19207C29S19207C199S19207C16__A5__9S19207C20[] = {
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C129S19207C199S19207C16__A1__9S19207C20[] = {
  ABISELECT(-60,-32),
  ABISELECT(-40,-20),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C5__9S19207C129S19207C199S19207C16__A1__9S19207C20[] = {
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI9S19207C12[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19207C19D1Ev,_ZTv0_n32_N9S19207C19D1Ev)();
extern void ABISELECT(_ZThn48_N9S19207C19D1Ev,_ZThn28_N9S19207C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C19D0Ev,_ZTv0_n32_N9S19207C19D0Ev)();
extern void ABISELECT(_ZThn48_N9S19207C19D0Ev,_ZThn28_N9S19207C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C13__9S19207C199S19207C16__9S19207C20[] = {
  ABISELECT(-48,-28),
  ABISELECT(-92,-52),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19207C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C19D1Ev,_ZTv0_n32_N9S19207C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C19D0Ev,_ZTv0_n32_N9S19207C19D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C199S19207C16__9S19207C20[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S19207C19[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__A__9S19207C199S19207C16__9S19207C20[] = {
  ABISELECT(-60,-32),
  ABISELECT(-40,-20),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19207C19[0]),
};
extern void ABISELECT(_ZTv0_n88_N9S19207C16D1Ev,_ZTv0_n44_N9S19207C16D1Ev)();
extern void ABISELECT(_ZThn32_N9S19207C16D1Ev,_ZThn16_N9S19207C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19207C16D0Ev,_ZTv0_n44_N9S19207C16D0Ev)();
extern void ABISELECT(_ZThn32_N9S19207C16D0Ev,_ZThn16_N9S19207C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C17__9S19207C16__9S19207C20[] = {
  ABISELECT(-32,-16),
  ABISELECT(16,12),
  ABISELECT(-72,-36),
  ABISELECT(-56,-28),
  ABISELECT(-48,-24),
  ABISELECT(-76,-40),
  ABISELECT(-56,-28),
  ABISELECT(-76,-40),
  ABISELECT(-104,-56),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C16D1Ev,_ZTv0_n44_N9S19207C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C16D0Ev,_ZTv0_n44_N9S19207C16D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N9S19207C16D1Ev,_ZTv0_n32_N9S19207C16D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19207C16D0Ev,_ZTv0_n32_N9S19207C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19207C11__9S19207C16__9S19207C20[] = {
  ABISELECT(16,8),
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C16D1Ev,_ZTv0_n32_N9S19207C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C16D0Ev,_ZTv0_n32_N9S19207C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C16__9S19207C20[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__9S19207C16__9S19207C20[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19207C16D1Ev,_ZTv0_n32_N9S19207C16D1Ev)();
extern void ABISELECT(_ZThn48_N9S19207C16D1Ev,_ZThn28_N9S19207C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C16D0Ev,_ZTv0_n32_N9S19207C16D0Ev)();
extern void ABISELECT(_ZThn48_N9S19207C16D0Ev,_ZThn28_N9S19207C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C13__A1__9S19207C16__9S19207C20[] = {
  ABISELECT(-48,-28),
  ABISELECT(-92,-52),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C16D1Ev,_ZTv0_n32_N9S19207C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C16D0Ev,_ZTv0_n32_N9S19207C16D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N9S19207C16D1Ev,_ZTv0_n44_N9S19207C16D1Ev)();
extern void ABISELECT(_ZThn64_N9S19207C16D1Ev,_ZThn36_N9S19207C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19207C16D0Ev,_ZTv0_n44_N9S19207C16D0Ev)();
extern void ABISELECT(_ZThn64_N9S19207C16D0Ev,_ZThn36_N9S19207C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19207C9__9S19207C16__9S19207C20[] = {
  ABISELECT(-64,-36),
  ABISELECT(-88,-48),
  ABISELECT(-80,-44),
  ABISELECT(-104,-56),
  0,
  ABISELECT(-108,-60),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-108,-60),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C16D1Ev,_ZTv0_n44_N9S19207C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C16D0Ev,_ZTv0_n44_N9S19207C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19207C129S19207C19__A1__9S19207C16__9S19207C20[] = {
  ABISELECT(-60,-32),
  ABISELECT(-40,-20),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
};
extern void _ZN9S19207C17D1Ev();
extern void _ZN9S19207C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C17__9S19207C20[] = {
  ABISELECT(16,12),
  ABISELECT(-72,-36),
  ABISELECT(-56,-28),
  ABISELECT(-48,-24),
  ABISELECT(-76,-40),
  ABISELECT(-56,-28),
  ABISELECT(-76,-40),
  ABISELECT(-104,-56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C17[0]),
  (VTBL_ENTRY)&_ZN9S19207C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C17D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N9S19207C17D1Ev,_ZTv0_n32_N9S19207C17D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19207C17D0Ev,_ZTv0_n32_N9S19207C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19207C11__9S19207C17__9S19207C20[] = {
  ABISELECT(48,24),
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI9S19207C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C17D1Ev,_ZTv0_n32_N9S19207C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C17D0Ev,_ZTv0_n32_N9S19207C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C17__9S19207C20[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI9S19207C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__9S19207C17__9S19207C20[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI9S19207C17[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19207C17D1Ev,_ZTv0_n32_N9S19207C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S19207C17D1Ev,_ZThn12_N9S19207C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C17D0Ev,_ZTv0_n32_N9S19207C17D0Ev)();
extern void ABISELECT(_ZThn16_N9S19207C17D0Ev,_ZThn12_N9S19207C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C13__A1__9S19207C17__9S19207C20[] = {
  ABISELECT(-16,-12),
  ABISELECT(-92,-52),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19207C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C17D1Ev,_ZTv0_n32_N9S19207C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C17D0Ev,_ZTv0_n32_N9S19207C17D0Ev),
};
extern void _ZN9S19207C13D1Ev();
extern void _ZN9S19207C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C13__A2__9S19207C20[] = {
  ABISELECT(-92,-52),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
  (VTBL_ENTRY)&_ZN9S19207C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19207C59S19207C13__A4__9S19207C20[] = {
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C13__A2__9S19207C20[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(72,40),
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
};
extern void _ZN8S19207C9D1Ev();
extern void _ZN8S19207C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19207C9__9S19207C20[] = {
  ABISELECT(-88,-48),
  ABISELECT(-80,-44),
  ABISELECT(-104,-56),
  0,
  ABISELECT(-108,-60),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-108,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
  (VTBL_ENTRY)&_ZN8S19207C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19207C9D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__8S19207C9__9S19207C20[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__8S19207C9__9S19207C20[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(104,56),
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S19207C9D1Ev,_ZTv0_n32_N8S19207C9D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S19207C9D0Ev,_ZTv0_n32_N8S19207C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19207C11__8S19207C9__9S19207C20[] = {
  ABISELECT(80,44),
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C9D1Ev,_ZTv0_n32_N8S19207C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C9D0Ev,_ZTv0_n32_N8S19207C9D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19207C10__9S19207C20[] = {
  ABISELECT(-108,-60),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C10[0]),
};
static  VTT_ENTRY vtt_S19207C20[] = {
  {&(_ZTV9S19207C20[16]),  16,114},
  {&(_tg__ZTV9S19207C11__A__9S19207C20[7]),  7,9},
  {&(_tg__ZTV9S19207C139S19207C11__9S19207C20[7]),  7,9},
  {&(_tg__ZTV8S19207C59S19207C139S19207C11__A1__9S19207C20[4]),  4,4},
  {&(_tg__ZTV9S19207C12__9S19207C139S19207C11__9S19207C20[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C139S19207C11__9S19207C20[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C11__A__9S19207C20[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C11__A__9S19207C20[6]),  6,6},
  {&(_tg__ZTV9S19207C21__9S19207C20[3]),  3,5},
  {&(_tg__ZTV9S19207C109S19207C21__A1__9S19207C20[3]),  3,3},
  {&(_ZTV9S19207C20[43]),  43,114},
  {&(_ZTV9S19207C20[43]),  43,114},
  {&(_ZTV9S19207C20[27]),  27,114},
  {&(_ZTV9S19207C20[43]),  43,114},
  {&(_ZTV9S19207C20[53]),  53,114},
  {&(_ZTV9S19207C20[70]),  70,114},
  {&(_ZTV9S19207C20[89]),  89,114},
  {&(_ZTV9S19207C20[99]),  99,114},
  {&(_ZTV9S19207C20[112]),  112,114},
  {&(_ZTV9S19207C20[112]),  112,114},
  {&(_ZTV9S19207C20[78]),  78,114},
  {&(_ZTV9S19207C20[21]),  21,114},
  {&(_tg__ZTV9S19207C12__9S19207C20[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C20[6]),  6,6},
  {&(_tg__ZTV8S19207C5__9S19207C20[4]),  4,4},
  {&(_tg__ZTV8S19207C2__9S19207C20[4]),  4,4},
  {&(_tg__ZTV8S19207C58S19207C2__A2__9S19207C20[4]),  4,4},
  {&(_tg__ZTV9S19207C15__9S19207C20[15]),  15,17},
  {&(_tg__ZTV9S19207C11__9S19207C15__9S19207C20[8]),  8,10},
  {&(_tg__ZTV9S19207C15__9S19207C20[15]),  15,17},
  {&(_tg__ZTV9S19207C15__9S19207C20[15]),  15,17},
  {&(_tg__ZTV9S19207C16__9S19207C15__9S19207C20[15]),  15,17},
  {&(_tg__ZTV9S19207C17__9S19207C15__9S19207C20[11]),  11,13},
  {&(_tg__ZTV8S19207C2__9S19207C15__9S19207C20[4]),  4,4},
  {&(_tg__ZTV9S19207C13__A1__9S19207C15__9S19207C20[8]),  8,10},
  {&(_tg__ZTV8S19207C9__9S19207C15__9S19207C20[11]),  11,13},
  {&(_tg__ZTV8S19207C9__9S19207C15__9S19207C20[11]),  11,13},
  {&(_tg__ZTV9S19207C129S19207C199S19207C16__A1__9S19207C15__9S19207C20[6]),  6,6},
  {&(_tg__ZTV9S19207C11__A1__9S19207C20[7]),  7,9},
  {&(_tg__ZTV9S19207C139S19207C11__A1__9S19207C20[7]),  7,9},
  {&(_tg__ZTV8S19207C59S19207C139S19207C11__A3__9S19207C20[4]),  4,4},
  {&(_tg__ZTV9S19207C12__9S19207C139S19207C11__A1__9S19207C20[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C139S19207C11__A1__9S19207C20[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C11__A1__9S19207C20[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C11__A1__9S19207C20[6]),  6,6},
  {&(_tg__ZTV9S19207C16__9S19207C20[14]),  14,16},
  {&(_tg__ZTV9S19207C199S19207C16__9S19207C20[8]),  8,10},
  {&(_tg__ZTV8S19207C29S19207C199S19207C16__A1__9S19207C20[4]),  4,4},
  {&(_tg__ZTV8S19207C58S19207C29S19207C199S19207C16__A5__9S19207C20[4]),  4,4},
  {&(_tg__ZTV9S19207C129S19207C199S19207C16__A1__9S19207C20[6]),  6,6},
  {&(_tg__ZTV8S19207C5__9S19207C129S19207C199S19207C16__A1__9S19207C20[4]),  4,4},
  {&(_tg__ZTV9S19207C13__9S19207C199S19207C16__9S19207C20[8]),  8,10},
  {&(_tg__ZTV9S19207C12__9S19207C199S19207C16__9S19207C20[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C199S19207C16__9S19207C20[6]),  6,6},
  {&(_tg__ZTV9S19207C12__A__9S19207C199S19207C16__9S19207C20[6]),  6,6},
  {&(_tg__ZTV9S19207C17__9S19207C16__9S19207C20[11]),  11,13},
  {&(_tg__ZTV9S19207C11__9S19207C16__9S19207C20[8]),  8,10},
  {&(_tg__ZTV9S19207C12__9S19207C16__9S19207C20[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C16__9S19207C20[6]),  6,6},
  {&(_tg__ZTV8S19207C2__9S19207C16__9S19207C20[4]),  4,4},
  {&(_tg__ZTV9S19207C13__A1__9S19207C16__9S19207C20[8]),  8,10},
  {&(_tg__ZTV8S19207C9__9S19207C16__9S19207C20[11]),  11,13},
  {&(_tg__ZTV8S19207C9__9S19207C16__9S19207C20[11]),  11,13},
  {&(_tg__ZTV9S19207C129S19207C19__A1__9S19207C16__9S19207C20[6]),  6,6},
  {&(_tg__ZTV9S19207C17__9S19207C20[10]),  10,12},
  {&(_tg__ZTV9S19207C11__9S19207C17__9S19207C20[8]),  8,10},
  {&(_tg__ZTV9S19207C12__9S19207C17__9S19207C20[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C17__9S19207C20[6]),  6,6},
  {&(_tg__ZTV8S19207C2__9S19207C17__9S19207C20[4]),  4,4},
  {&(_tg__ZTV9S19207C13__A1__9S19207C17__9S19207C20[8]),  8,10},
  {&(_tg__ZTV9S19207C13__A2__9S19207C20[7]),  7,9},
  {&(_tg__ZTV8S19207C59S19207C13__A4__9S19207C20[4]),  4,4},
  {&(_tg__ZTV9S19207C12__9S19207C13__A2__9S19207C20[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C13__A2__9S19207C20[6]),  6,6},
  {&(_tg__ZTV8S19207C9__9S19207C20[10]),  10,12},
  {&(_tg__ZTV9S19207C12__8S19207C9__9S19207C20[6]),  6,6},
  {&(_tg__ZTV8S19207C9__9S19207C20[10]),  10,12},
  {&(_tg__ZTV8S19207C2__8S19207C9__9S19207C20[4]),  4,4},
  {&(_tg__ZTV9S19207C11__8S19207C9__9S19207C20[8]),  8,10},
  {&(_tg__ZTV9S19207C12__8S19207C9__9S19207C20[6]),  6,6},
  {&(_tg__ZTV9S19207C10__9S19207C20[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19207C20[];
extern  VTBL_ENTRY _ZTV9S19207C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C20[];
static VTBL_ENTRY alt_thunk_names115[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C17D0Ev,_ZTv0_n32_N9S19207C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19207C17D0Ev,_ZThn12_N9S19207C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C17D1Ev,_ZTv0_n32_N9S19207C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19207C17D1Ev,_ZThn12_N9S19207C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C16D0Ev,_ZTv0_n32_N9S19207C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19207C16D0Ev,_ZThn28_N9S19207C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C16D1Ev,_ZTv0_n32_N9S19207C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19207C16D1Ev,_ZThn28_N9S19207C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19207C16D0Ev,_ZTv0_n44_N9S19207C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19207C16D0Ev,_ZThn36_N9S19207C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19207C16D0Ev,_ZThn16_N9S19207C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19207C16D1Ev,_ZTv0_n44_N9S19207C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19207C16D1Ev,_ZThn36_N9S19207C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19207C16D1Ev,_ZThn16_N9S19207C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C19D0Ev,_ZTv0_n32_N9S19207C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19207C19D0Ev,_ZThn28_N9S19207C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C19D1Ev,_ZTv0_n32_N9S19207C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19207C19D1Ev,_ZThn28_N9S19207C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19207C15D0Ev,_ZTv0_n44_N9S19207C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19207C15D0Ev,_ZThn48_N9S19207C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19207C15D0Ev,_ZThn28_N9S19207C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19207C15D1Ev,_ZTv0_n44_N9S19207C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19207C15D1Ev,_ZThn48_N9S19207C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19207C15D1Ev,_ZThn28_N9S19207C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19207C15D0Ev,_ZTv0_n60_N9S19207C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19207C15D0Ev,_ZThn12_N9S19207C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19207C15D1Ev,_ZTv0_n60_N9S19207C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19207C15D1Ev,_ZThn12_N9S19207C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C15D0Ev,_ZTv0_n32_N9S19207C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19207C15D0Ev,_ZThn40_N9S19207C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19207C15D0Ev,_ZThn4_N9S19207C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C15D1Ev,_ZTv0_n32_N9S19207C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19207C15D1Ev,_ZThn40_N9S19207C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19207C15D1Ev,_ZThn4_N9S19207C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19207C20D0Ev,_ZTv0_n44_N9S19207C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19207C20D0Ev,_ZThn76_N9S19207C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19207C20D0Ev,_ZThn56_N9S19207C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19207C20D1Ev,_ZTv0_n44_N9S19207C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19207C20D1Ev,_ZThn76_N9S19207C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19207C20D1Ev,_ZThn56_N9S19207C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19207C20D0Ev,_ZTv0_n60_N9S19207C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19207C20D0Ev,_ZThn40_N9S19207C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19207C20D1Ev,_ZTv0_n60_N9S19207C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19207C20D1Ev,_ZThn40_N9S19207C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C20D0Ev,_ZTv0_n32_N9S19207C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S19207C20D0Ev,_ZThn68_N9S19207C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19207C20D0Ev,_ZThn32_N9S19207C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C20D1Ev,_ZTv0_n32_N9S19207C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S19207C20D1Ev,_ZThn68_N9S19207C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19207C20D1Ev,_ZThn32_N9S19207C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N9S19207C20D0Ev,_ZTv0_n64_N9S19207C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19207C20D0Ev,_ZThn28_N9S19207C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N9S19207C20D1Ev,_ZTv0_n64_N9S19207C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19207C20D1Ev,_ZThn28_N9S19207C20D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19207C20 = {  "S19207C20", // class name
  bases_S19207C20, 48,
  &(vtc_S19207C20[0]), // expected_vtbl_contents
  &(vtt_S19207C20[0]), // expected_vtt_contents
  ABISELECT(152,84), // object size
  NSPAIRA(_ZTI9S19207C20),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19207C20),114, //virtual function table var
  16, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19207C20),81, //virtual table table var
  23, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names115,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19207C14  : S19207C8 , S19207C5 , virtual S19207C15 , virtual S19207C20 {
  int s19207c14f0;
  ~S19207C14(); // tgen
  S19207C14(); // tgen
};
//SIG(-1 S19207C14) C1{ BC2{ BC3{ VBC4{ VBC5{ m} BC6{ m} VBC7{ m}} VBC8{ VBC6} VBC9{ BC7 BC6 BC4 Fi} BC7 VBC10{ VBC5 VBC6 VBC11{ BC5 VBC4 VBC6} BC7 BC12{ BC6 VBC5 VBC7 BC4 VBC11 vd} vd} vd Fi} BC6} BC4 VBC13{ VBC10 VBC14{ VBC15{ VBC10 VBC9 VBC12 vd Fi[2]} VBC16{ m} VBC3 BC17{ VBC12 BC9 BC11 BC7 vd} vd} vd} VBC18{ BC10 VBC9 VBC13 BC19{ BC6 BC8 vd} BC20{ m} Fi} Fi}


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

static void Test_S19207C14()
{
  extern Class_Descriptor cd_S19207C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(24,26)];
    init_test(&cd_S19207C14, buf);
    S19207C14 *dp, &lv = *(dp=new (buf) S19207C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(184,100), "sizeof(S19207C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19207C14)");
    /*is_ambiguous_... S19207C14::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*), 0, "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C2 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*)(S19207C2*), 0, "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C11*), 0, "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C13*)(S19207C11*), 0, "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*)(S19207C13*)(S19207C11*), 0, "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*), 0, "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C13*), 0, "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*)(S19207C13*), 0, "S19207C14");
    check_base_class_offset(lv, (S7856C12*)(S19207C5*)(S19207C2*)(S19207C19*)(S19207C16*), 0, "S19207C14");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C11*)(S19207C20*), 0, "S19207C14");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C13*)(S19207C11*)(S19207C20*), 0, "S19207C14");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*)(S19207C13*)(S19207C11*)(S19207C20*), 0, "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*), ABISELECT(64,36), "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*), ABISELECT(28,16), "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C2 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*)(S19207C2*), ABISELECT(28,16), "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C13*)(S19207C11*), ABISELECT(28,16), "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*)(S19207C13*)(S19207C11*), ABISELECT(28,16), "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*), ABISELECT(28,16), "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C13 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C13*), ABISELECT(28,16), "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C13 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*)(S19207C13*), ABISELECT(28,16), "S19207C14");
    check_base_class_offset(lv, (S7856C24*)(S19207C5*)(S19207C2*)(S19207C19*)(S19207C16*), ABISELECT(28,16), "S19207C14");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C13*)(S19207C11*)(S19207C20*), ABISELECT(28,16), "S19207C14");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*)(S19207C13*)(S19207C11*)(S19207C20*), ABISELECT(28,16), "S19207C14");
    /*is_ambiguous_... S19207C9::S19207C5 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C9*)(S19207C8*), ABISELECT(64,36), "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C12 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C12*), ABISELECT(64,36), "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C9 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C9*), ABISELECT(64,36), "S19207C14");
    /*is_ambiguous_... S19207C19::S19207C12 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C12*)(S19207C19*)(S19207C16*), ABISELECT(64,36), "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C10*), ABISELECT(28,16), "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C11*), ABISELECT(28,16), "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C12*), ABISELECT(28,16), "S19207C14");
    /*is_ambiguous_... S19207C19::S19207C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C12*)(S19207C19*)(S19207C16*), ABISELECT(28,16), "S19207C14");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C11*)(S19207C20*), ABISELECT(28,16), "S19207C14");
    check_base_class_offset(lv, (S7856C15*)(S19207C10*)(S19207C21*)(S19207C20*), ABISELECT(28,16), "S19207C14");
    check_base_class_offset(lv, (S19207C10*)(S19207C9*)(S19207C8*), 0, "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C9 */ AMB_check_base_class_offset(lv, (S19207C10*)(S19207C9*), 0, "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C2 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C2*), ABISELECT(32,20), "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C2 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C2*), ABISELECT(40,24), "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C2 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*)(S19207C2*), ABISELECT(32,20), "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C2 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C2*), ABISELECT(32,20), "S19207C14");
    check_base_class_offset(lv, (S19207C2*)(S19207C9*)(S19207C8*), ABISELECT(32,20), "S19207C14");
    check_base_class_offset(lv, (S19207C2*)(S19207C17*), ABISELECT(32,20), "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C9 */ AMB_check_base_class_offset(lv, (S19207C2*)(S19207C9*), ABISELECT(32,20), "S19207C14");
    /*is_ambiguous_... S19207C20::S19207C2 */ AMB_check_base_class_offset(lv, (S19207C2*)(S19207C20*), ABISELECT(32,20), "S19207C14");
    /*is_ambiguous_... S19207C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C9*)(S19207C8*), 0, "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C12*), ABISELECT(64,36), "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C11 */ AMB_check_base_class_offset(lv, (S19207C12*)(S19207C11*), ABISELECT(64,36), "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C11 */ AMB_check_base_class_offset(lv, (S19207C12*)(S19207C13*)(S19207C11*), ABISELECT(64,36), "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C13 */ AMB_check_base_class_offset(lv, (S19207C12*)(S19207C13*), ABISELECT(64,36), "S19207C14");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S19207C12*)(S19207C11*)(S19207C20*), ABISELECT(64,36), "S19207C14");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S19207C12*)(S19207C13*)(S19207C11*)(S19207C20*), ABISELECT(64,36), "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C11*), ABISELECT(48,28), "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C13*)(S19207C11*), ABISELECT(56,32), "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*)(S19207C13*)(S19207C11*), ABISELECT(48,28), "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C11 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C13*)(S19207C11*), ABISELECT(48,28), "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C11 */ AMB_check_base_class_offset(lv, (S19207C13*)(S19207C11*), ABISELECT(48,28), "S19207C14");
    check_base_class_offset(lv, (S19207C11*)(S19207C9*)(S19207C8*), ABISELECT(48,28), "S19207C14");
    check_base_class_offset(lv, (S19207C11*)(S19207C15*), ABISELECT(48,28), "S19207C14");
    check_base_class_offset(lv, (S19207C11*)(S19207C17*), ABISELECT(48,28), "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C9 */ AMB_check_base_class_offset(lv, (S19207C11*)(S19207C9*), ABISELECT(48,28), "S19207C14");
    check_base_class_offset(lv, (S19207C9*)(S19207C8*), 0, "S19207C14");
    /*is_ambiguous_... S19207C8::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C8*), 0, "S19207C14");
    check_base_class_offset(lv, (S19207C8*), 0, "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*), ABISELECT(16,8), "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C5 */ AMB_check_base_class_offset(lv, (S19207C5*), ABISELECT(16,8), "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C13*), ABISELECT(128,72), "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*)(S19207C13*), ABISELECT(120,68), "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C13 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C13*), ABISELECT(120,68), "S19207C14");
    /*is_ambiguous_... S19207C17::S19207C13 */ AMB_check_base_class_offset(lv, (S19207C13*)(S19207C17*), ABISELECT(120,68), "S19207C14");
    check_base_class_offset(lv, (S19207C13*)(S19207C19*)(S19207C16*), ABISELECT(120,68), "S19207C14");
    check_base_class_offset(lv, (S19207C17*)(S19207C16*), ABISELECT(104,56), "S19207C14");
    check_base_class_offset(lv, (S7856C9_nt*)(S19207C16*), 0, "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C9 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C9*), ABISELECT(136,76), "S19207C14");
    check_base_class_offset(lv, (S19207C9*)(S19207C16*), ABISELECT(136,76), "S19207C14");
    /*is_ambiguous_... S19207C2::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C2*)(S19207C19*)(S19207C16*), ABISELECT(72,40), "S19207C14");
    /*is_ambiguous_... S19207C2::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C2*)(S19207C19*)(S19207C16*), ABISELECT(80,44), "S19207C14");
    check_base_class_offset(lv, (S7856C15*)(S19207C5*)(S19207C2*)(S19207C19*)(S19207C16*), ABISELECT(72,40), "S19207C14");
    check_base_class_offset(lv, (S19207C5*)(S19207C2*)(S19207C19*)(S19207C16*), ABISELECT(72,40), "S19207C14");
    check_base_class_offset(lv, (S19207C2*)(S19207C19*)(S19207C16*), ABISELECT(72,40), "S19207C14");
    /*is_ambiguous_... S19207C19::S19207C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C12*)(S19207C19*)(S19207C16*), ABISELECT(88,48), "S19207C14");
    /*is_ambiguous_... S19207C19::S19207C12 */ AMB_check_base_class_offset(lv, (S19207C12*)(S19207C19*)(S19207C16*), ABISELECT(88,48), "S19207C14");
    /*is_ambiguous_... S19207C19::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C19*)(S19207C16*), ABISELECT(96,52), "S19207C14");
    check_base_class_offset(lv, (S19207C19*)(S19207C16*), ABISELECT(72,40), "S19207C14");
    check_base_class_offset(lv, (S19207C16*)(S19207C15*), ABISELECT(72,40), "S19207C14");
    check_base_class_offset(lv, (S19207C15*), ABISELECT(64,36), "S19207C14");
    check_base_class_offset(lv, (S19207C15*)(S19207C20*), ABISELECT(64,36), "S19207C14");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C11*)(S19207C20*), ABISELECT(152,84), "S19207C14");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C13*)(S19207C11*)(S19207C20*), ABISELECT(160,88), "S19207C14");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*)(S19207C13*)(S19207C11*)(S19207C20*), ABISELECT(152,84), "S19207C14");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C13*)(S19207C11*)(S19207C20*), ABISELECT(152,84), "S19207C14");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S19207C13*)(S19207C11*)(S19207C20*), ABISELECT(152,84), "S19207C14");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S19207C11*)(S19207C20*), ABISELECT(152,84), "S19207C14");
    /*is_ambiguous_... S19207C21::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C21*)(S19207C20*), ABISELECT(168,92), "S19207C14");
    check_base_class_offset(lv, (S19207C10*)(S19207C21*)(S19207C20*), ABISELECT(168,92), "S19207C14");
    check_base_class_offset(lv, (S19207C21*)(S19207C20*), ABISELECT(168,92), "S19207C14");
    check_base_class_offset(lv, (S77C13_nt*)(S19207C20*), ABISELECT(152,84), "S19207C14");
    check_base_class_offset(lv, (S19207C20*), ABISELECT(152,84), "S19207C14");
    check_field_offset(lv, s19207c14f0, ABISELECT(24,12), "S19207C14.s19207c14f0");
    test_class_info(&lv, &cd_S19207C14);
    dp->~S19207C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19207C14(Test_S19207C14, "S19207C14", ABISELECT(184,100));

#else // __cplusplus

extern void _ZN9S19207C14C1Ev();
extern void _ZN9S19207C14D1Ev();
Name_Map name_map_S19207C14[] = {
  NSPAIR(_ZN9S19207C14C1Ev),
  NSPAIR(_ZN9S19207C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C10;
extern VTBL_ENTRY _ZTI9S19207C10[];
extern  VTBL_ENTRY _ZTV9S19207C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C10[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C2;
extern VTBL_ENTRY _ZTI8S19207C2[];
extern  VTBL_ENTRY _ZTV8S19207C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C2[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19207C12;
extern VTBL_ENTRY _ZTI9S19207C12[];
extern  VTBL_ENTRY _ZTV9S19207C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C13;
extern VTBL_ENTRY _ZTI9S19207C13[];
extern  VTBL_ENTRY _ZTV9S19207C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C13[];
extern Class_Descriptor cd_S19207C11;
extern VTBL_ENTRY _ZTI9S19207C11[];
extern  VTBL_ENTRY _ZTV9S19207C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C11[];
extern Class_Descriptor cd_S19207C9;
extern VTBL_ENTRY _ZTI8S19207C9[];
extern  VTBL_ENTRY _ZTV8S19207C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C9[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C8;
extern VTBL_ENTRY _ZTI8S19207C8[];
extern  VTBL_ENTRY _ZTV8S19207C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C8[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C13;
extern VTBL_ENTRY _ZTI9S19207C13[];
extern  VTBL_ENTRY _ZTV9S19207C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C13[];
extern Class_Descriptor cd_S19207C17;
extern VTBL_ENTRY _ZTI9S19207C17[];
extern  VTBL_ENTRY _ZTV9S19207C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C17[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19207C9;
extern VTBL_ENTRY _ZTI8S19207C9[];
extern  VTBL_ENTRY _ZTV8S19207C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C9[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C2;
extern VTBL_ENTRY _ZTI8S19207C2[];
extern  VTBL_ENTRY _ZTV8S19207C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C2[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19207C12;
extern VTBL_ENTRY _ZTI9S19207C12[];
extern  VTBL_ENTRY _ZTV9S19207C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19207C19;
extern VTBL_ENTRY _ZTI9S19207C19[];
extern  VTBL_ENTRY _ZTV9S19207C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C19[];
extern Class_Descriptor cd_S19207C16;
extern VTBL_ENTRY _ZTI9S19207C16[];
extern  VTBL_ENTRY _ZTV9S19207C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C16[];
extern Class_Descriptor cd_S19207C15;
extern VTBL_ENTRY _ZTI9S19207C15[];
extern  VTBL_ENTRY _ZTV9S19207C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C13;
extern VTBL_ENTRY _ZTI9S19207C13[];
extern  VTBL_ENTRY _ZTV9S19207C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C13[];
extern Class_Descriptor cd_S19207C11;
extern VTBL_ENTRY _ZTI9S19207C11[];
extern  VTBL_ENTRY _ZTV9S19207C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C11[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C10;
extern VTBL_ENTRY _ZTI9S19207C10[];
extern  VTBL_ENTRY _ZTV9S19207C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C10[];
extern Class_Descriptor cd_S19207C21;
extern VTBL_ENTRY _ZTI9S19207C21[];
extern  VTBL_ENTRY _ZTV9S19207C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C21[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19207C20;
extern VTBL_ENTRY _ZTI9S19207C20[];
extern  VTBL_ENTRY _ZTV9S19207C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C20[];
static Base_Class bases_S19207C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(28,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19207C5,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(28,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19207C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19207C5,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19207C2,    ABISELECT(32,20), //bcp->offset
    23, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19207C12,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19207C5,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19207C13,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19207C11,    ABISELECT(48,28), //bcp->offset
    27, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S19207C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19207C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C15,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19207C5,    ABISELECT(16,8), //bcp->offset
    19, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C15,    ABISELECT(128,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19207C5,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    79, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S19207C13,    ABISELECT(120,68), //bcp->offset
    91, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    29, //immediately_derived
  0, 1},
  {&cd_S19207C17,    ABISELECT(104,56), //bcp->offset
    78, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(136,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S19207C9,    ABISELECT(136,76), //bcp->offset
    101, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    82, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S19207C5,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S19207C2,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S19207C12,    ABISELECT(88,48), //bcp->offset
    72, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S19207C19,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S19207C16,    ABISELECT(72,40), //bcp->offset
    55, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    43, //immediately_derived
  0, 1},
  {&cd_S19207C15,    ABISELECT(64,36), //bcp->offset
    37, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    ABISELECT(152,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(152,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S19207C5,    ABISELECT(152,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    91, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S19207C13,    ABISELECT(152,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    90, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S19207C11,    ABISELECT(152,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    89, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    54, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(168,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    52, //immediately_derived
  0, 0},
  {&cd_S19207C10,    ABISELECT(168,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    97, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    52, //immediately_derived
  0, 0},
  {&cd_S19207C21,    ABISELECT(168,92), //bcp->offset
    133, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    96, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    54, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(152,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    54, //immediately_derived
  0, 0},
  {&cd_S19207C20,    ABISELECT(152,84), //bcp->offset
    114, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    88, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19207C14[];
extern void _ZN9S19207C14D1Ev();
extern void _ZN9S19207C14D0Ev();
extern void ABISELECT(_ZTv0_n64_N9S19207C14D1Ev,_ZTv0_n32_N9S19207C14D1Ev)();
extern void ABISELECT(_ZThn48_N9S19207C14D1Ev,_ZThn28_N9S19207C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C14D0Ev,_ZTv0_n32_N9S19207C14D0Ev)();
extern void ABISELECT(_ZThn48_N9S19207C14D0Ev,_ZThn28_N9S19207C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N9S19207C14D1Ev,_ZTv0_n64_N9S19207C14D1Ev)();
extern void ABISELECT(_ZThn64_N9S19207C14D1Ev,_ZThn36_N9S19207C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N9S19207C14D0Ev,_ZTv0_n64_N9S19207C14D0Ev)();
extern void ABISELECT(_ZThn64_N9S19207C14D0Ev,_ZThn36_N9S19207C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N9S19207C14D1Ev,_ZTv0_n60_N9S19207C14D1Ev)();
extern void ABISELECT(_ZThn72_N9S19207C14D1Ev,_ZThn40_N9S19207C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N9S19207C14D0Ev,_ZTv0_n60_N9S19207C14D0Ev)();
extern void ABISELECT(_ZThn72_N9S19207C14D0Ev,_ZThn40_N9S19207C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19207C14D1Ev,_ZTv0_n44_N9S19207C14D1Ev)();
extern void ABISELECT(_ZThn104_N9S19207C14D1Ev,_ZThn56_N9S19207C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19207C14D0Ev,_ZTv0_n44_N9S19207C14D0Ev)();
extern void ABISELECT(_ZThn104_N9S19207C14D0Ev,_ZThn56_N9S19207C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C14D1Ev,_ZTv0_n32_N9S19207C14D1Ev)();
extern void ABISELECT(_ZThn120_N9S19207C14D1Ev,_ZThn68_N9S19207C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C14D0Ev,_ZTv0_n32_N9S19207C14D0Ev)();
extern void ABISELECT(_ZThn120_N9S19207C14D0Ev,_ZThn68_N9S19207C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19207C14D1Ev,_ZTv0_n44_N9S19207C14D1Ev)();
extern void ABISELECT(_ZThn136_N9S19207C14D1Ev,_ZThn76_N9S19207C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19207C14D0Ev,_ZTv0_n44_N9S19207C14D0Ev)();
extern void ABISELECT(_ZThn136_N9S19207C14D0Ev,_ZThn76_N9S19207C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N9S19207C14D1Ev,_ZTv0_n68_N9S19207C14D1Ev)();
extern void ABISELECT(_ZThn152_N9S19207C14D1Ev,_ZThn84_N9S19207C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N9S19207C14D0Ev,_ZTv0_n68_N9S19207C14D0Ev)();
extern void ABISELECT(_ZThn152_N9S19207C14D0Ev,_ZThn84_N9S19207C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n136_N9S19207C14D1Ev,_ZTvn8_n68_N9S19207C14D1Ev)();
extern void ABISELECT(_ZTvn16_n136_N9S19207C14D0Ev,_ZTvn8_n68_N9S19207C14D0Ev)();
static  VTBL_ENTRY vtc_S19207C14[] = {
  ABISELECT(152,84),
  ABISELECT(136,76),
  0,
  ABISELECT(120,68),
  ABISELECT(104,56),
  ABISELECT(72,40),
  ABISELECT(64,36),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(28,16),
  0,
  ABISELECT(64,36),
  ABISELECT(28,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C14[0]),
  (VTBL_ENTRY)&_ZN9S19207C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C14D0Ev,
  ABISELECT(12,8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19207C14[0]),
  -4,
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S19207C14[0]),
  ABISELECT(-48,-28),
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19207C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C14D1Ev,_ZTv0_n32_N9S19207C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C14D0Ev,_ZTv0_n32_N9S19207C14D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(72,40),
  ABISELECT(-64,-36),
  ABISELECT(56,32),
  ABISELECT(-32,-16),
  ABISELECT(40,20),
  ABISELECT(8,4),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-36,-20),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S19207C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N9S19207C14D1Ev,_ZTv0_n64_N9S19207C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N9S19207C14D0Ev,_ZTv0_n64_N9S19207C14D0Ev),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(64,36),
  ABISELECT(-72,-40),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  ABISELECT(32,16),
  ABISELECT(-44,-24),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S19207C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19207C14D1Ev,_ZTv0_n60_N9S19207C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19207C14D0Ev,_ZTv0_n60_N9S19207C14D0Ev),
  ABISELECT(-60,-32),
  ABISELECT(-24,-12),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI9S19207C14[0]),
  ABISELECT(-104,-56),
  ABISELECT(16,12),
  ABISELECT(-72,-36),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-76,-40),
  ABISELECT(-40,-20),
  ABISELECT(-76,-40),
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI9S19207C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C14D1Ev,_ZTv0_n44_N9S19207C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C14D0Ev,_ZTv0_n44_N9S19207C14D0Ev),
  ABISELECT(-120,-68),
  ABISELECT(-92,-52),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI9S19207C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C14D1Ev,_ZTv0_n32_N9S19207C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C14D0Ev,_ZTv0_n32_N9S19207C14D0Ev),
  ABISELECT(-136,-76),
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-104,-56),
  ABISELECT(-136,-76),
  ABISELECT(-108,-60),
  ABISELECT(-136,-76),
  ABISELECT(-72,-40),
  ABISELECT(-108,-60),
  ABISELECT(-136,-76),
  (VTBL_ENTRY)&(_ZTI9S19207C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C14D1Ev,_ZTv0_n44_N9S19207C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C14D0Ev,_ZTv0_n44_N9S19207C14D0Ev),
  ABISELECT(-152,-84),
  ABISELECT(-152,-84),
  ABISELECT(-16,-8),
  ABISELECT(-152,-84),
  ABISELECT(-32,-16),
  ABISELECT(-48,-28),
  ABISELECT(-80,-44),
  ABISELECT(-104,-56),
  ABISELECT(-88,-48),
  ABISELECT(-120,-64),
  ABISELECT(-124,-68),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-124,-68),
  ABISELECT(-152,-84),
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI9S19207C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N9S19207C14D1Ev,_ZTv0_n68_N9S19207C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N9S19207C14D0Ev,_ZTv0_n68_N9S19207C14D0Ev),
  ABISELECT(-140,-76),
  ABISELECT(-168,-92),
  (VTBL_ENTRY)&(_ZTI9S19207C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n136_N9S19207C14D1Ev,_ZTvn8_n68_N9S19207C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n136_N9S19207C14D0Ev,_ZTvn8_n68_N9S19207C14D0Ev),
};
extern VTBL_ENTRY _ZTV9S19207C14[];
extern void _ZN8S19207C8D1Ev();
extern void _ZN8S19207C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19207C8__9S19207C14[] = {
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(28,16),
  0,
  ABISELECT(64,36),
  ABISELECT(28,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C8[0]),
  (VTBL_ENTRY)&_ZN8S19207C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19207C8D0Ev,
};
extern void _ZN8S19207C9D1Ev();
extern void _ZN8S19207C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19207C98S19207C8__9S19207C14[] = {
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(28,16),
  0,
  ABISELECT(64,36),
  ABISELECT(28,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
  (VTBL_ENTRY)&_ZN8S19207C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19207C9D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__8S19207C98S19207C8__9S19207C14[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__8S19207C98S19207C8__9S19207C14[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S19207C9D1Ev,_ZTv0_n32_N8S19207C9D1Ev)();
extern void ABISELECT(_ZThn48_N8S19207C9D1Ev,_ZThn28_N8S19207C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19207C9D0Ev,_ZTv0_n32_N8S19207C9D0Ev)();
extern void ABISELECT(_ZThn48_N8S19207C9D0Ev,_ZThn28_N8S19207C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C11__8S19207C98S19207C8__9S19207C14[] = {
  ABISELECT(-48,-28),
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C9D1Ev,_ZTv0_n32_N8S19207C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C9D0Ev,_ZTv0_n32_N8S19207C9D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__8S19207C8__9S19207C14[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S19207C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__8S19207C8__9S19207C14[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19207C8[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S19207C8D1Ev,_ZTv0_n32_N8S19207C8D1Ev)();
extern void ABISELECT(_ZThn48_N8S19207C8D1Ev,_ZThn28_N8S19207C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19207C8D0Ev,_ZTv0_n32_N8S19207C8D0Ev)();
extern void ABISELECT(_ZThn48_N8S19207C8D0Ev,_ZThn28_N8S19207C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C11__8S19207C8__9S19207C14[] = {
  ABISELECT(-48,-28),
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19207C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C8D1Ev,_ZTv0_n32_N8S19207C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C8D0Ev,_ZTv0_n32_N8S19207C8D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19207C5__A__9S19207C14[] = {
  ABISELECT(12,8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C5__9S19207C14[] = {
  ABISELECT(-36,-20),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C10__9S19207C14[] = {
  ABISELECT(28,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__9S19207C14[] = {
  -4,
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C58S19207C2__A1__9S19207C14[] = {
  -4,
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
extern void _ZN9S19207C11D1Ev();
extern void _ZN9S19207C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C11__9S19207C14[] = {
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C11[0]),
  (VTBL_ENTRY)&_ZN9S19207C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C11D0Ev,
};
extern void _ZN9S19207C13D1Ev();
extern void _ZN9S19207C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C139S19207C11__9S19207C14[] = {
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
  (VTBL_ENTRY)&_ZN9S19207C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19207C59S19207C139S19207C11__A2__9S19207C14[] = {
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C139S19207C11__9S19207C14[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-64,-36),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C11__9S19207C14[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-64,-36),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19207C11[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C14[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C12[0]),
};
extern void _ZN9S19207C15D1Ev();
extern void _ZN9S19207C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C15__9S19207C14[] = {
  ABISELECT(-64,-36),
  ABISELECT(72,40),
  ABISELECT(-64,-36),
  ABISELECT(56,32),
  ABISELECT(-32,-16),
  ABISELECT(40,20),
  ABISELECT(8,4),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-36,-20),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C15[0]),
  (VTBL_ENTRY)&_ZN9S19207C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C15D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N9S19207C15D1Ev,_ZTv0_n32_N9S19207C15D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19207C15D0Ev,_ZTv0_n32_N9S19207C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19207C11__9S19207C15__9S19207C14[] = {
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S19207C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C15D1Ev,_ZTv0_n32_N9S19207C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C15D0Ev,_ZTv0_n32_N9S19207C15D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N9S19207C15D1Ev,_ZTv0_n60_N9S19207C15D1Ev)();
extern void ABISELECT(_ZThn8_N9S19207C15D1Ev,_ZThn4_N9S19207C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N9S19207C15D0Ev,_ZTv0_n60_N9S19207C15D0Ev)();
extern void ABISELECT(_ZThn8_N9S19207C15D0Ev,_ZThn4_N9S19207C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C16__9S19207C15__9S19207C14[] = {
  ABISELECT(-8,-4),
  ABISELECT(-72,-40),
  ABISELECT(64,36),
  ABISELECT(-72,-40),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  ABISELECT(32,16),
  ABISELECT(-44,-24),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19207C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19207C15D1Ev,_ZTv0_n60_N9S19207C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19207C15D0Ev,_ZTv0_n60_N9S19207C15D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N9S19207C15D1Ev,_ZTv0_n44_N9S19207C15D1Ev)();
extern void ABISELECT(_ZThn40_N9S19207C15D1Ev,_ZThn20_N9S19207C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19207C15D0Ev,_ZTv0_n44_N9S19207C15D0Ev)();
extern void ABISELECT(_ZThn40_N9S19207C15D0Ev,_ZThn20_N9S19207C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C17__9S19207C15__9S19207C14[] = {
  ABISELECT(-40,-20),
  ABISELECT(16,12),
  ABISELECT(-72,-36),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-76,-40),
  ABISELECT(-40,-20),
  ABISELECT(-76,-40),
  ABISELECT(-104,-56),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19207C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C15D1Ev,_ZTv0_n44_N9S19207C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C15D0Ev,_ZTv0_n44_N9S19207C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__9S19207C15__9S19207C14[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S19207C15[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19207C15D1Ev,_ZTv0_n32_N9S19207C15D1Ev)();
extern void ABISELECT(_ZThn56_N9S19207C15D1Ev,_ZThn32_N9S19207C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C15D0Ev,_ZTv0_n32_N9S19207C15D0Ev)();
extern void ABISELECT(_ZThn56_N9S19207C15D0Ev,_ZThn32_N9S19207C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C13__A1__9S19207C15__9S19207C14[] = {
  ABISELECT(-56,-32),
  ABISELECT(-92,-52),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S19207C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C15D1Ev,_ZTv0_n32_N9S19207C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C15D0Ev,_ZTv0_n32_N9S19207C15D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N9S19207C15D1Ev,_ZTv0_n44_N9S19207C15D1Ev)();
extern void ABISELECT(_ZThn72_N9S19207C15D1Ev,_ZThn40_N9S19207C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19207C15D0Ev,_ZTv0_n44_N9S19207C15D0Ev)();
extern void ABISELECT(_ZThn72_N9S19207C15D0Ev,_ZThn40_N9S19207C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19207C9__9S19207C15__9S19207C14[] = {
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-104,-56),
  ABISELECT(-136,-76),
  ABISELECT(-108,-60),
  ABISELECT(-136,-76),
  ABISELECT(-72,-40),
  ABISELECT(-108,-60),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S19207C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C15D1Ev,_ZTv0_n44_N9S19207C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C15D0Ev,_ZTv0_n44_N9S19207C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19207C10__9S19207C15__9S19207C14[] = {
  ABISELECT(28,16),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI9S19207C15[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C129S19207C199S19207C16__A1__9S19207C15__9S19207C14[] = {
  ABISELECT(-60,-32),
  ABISELECT(-24,-12),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19207C15[0]),
};
extern void _ZN9S19207C16D1Ev();
extern void _ZN9S19207C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C16__9S19207C14[] = {
  ABISELECT(-72,-40),
  ABISELECT(64,36),
  ABISELECT(-72,-40),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  ABISELECT(32,16),
  ABISELECT(-44,-24),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
  (VTBL_ENTRY)&_ZN9S19207C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C16D0Ev,
};
extern void _ZN9S19207C19D1Ev();
extern void _ZN9S19207C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C199S19207C16__9S19207C14[] = {
  ABISELECT(-44,-24),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C19[0]),
  (VTBL_ENTRY)&_ZN9S19207C19D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C19D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19207C29S19207C199S19207C16__A1__9S19207C14[] = {
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C58S19207C29S19207C199S19207C16__A5__9S19207C14[] = {
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C129S19207C199S19207C16__A1__9S19207C14[] = {
  ABISELECT(-60,-32),
  ABISELECT(-24,-12),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C5__9S19207C129S19207C199S19207C16__A1__9S19207C14[] = {
  ABISELECT(-36,-20),
  ABISELECT(-64,-36),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S19207C12[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19207C19D1Ev,_ZTv0_n32_N9S19207C19D1Ev)();
extern void ABISELECT(_ZThn48_N9S19207C19D1Ev,_ZThn28_N9S19207C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C19D0Ev,_ZTv0_n32_N9S19207C19D0Ev)();
extern void ABISELECT(_ZThn48_N9S19207C19D0Ev,_ZThn28_N9S19207C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C13__9S19207C199S19207C16__9S19207C14[] = {
  ABISELECT(-48,-28),
  ABISELECT(-92,-52),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19207C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C19D1Ev,_ZTv0_n32_N9S19207C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C19D0Ev,_ZTv0_n32_N9S19207C19D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C199S19207C16__9S19207C14[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-64,-36),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI9S19207C19[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__A__9S19207C199S19207C16__9S19207C14[] = {
  ABISELECT(-60,-32),
  ABISELECT(-24,-12),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19207C19[0]),
};
extern void ABISELECT(_ZTv0_n88_N9S19207C16D1Ev,_ZTv0_n44_N9S19207C16D1Ev)();
extern void ABISELECT(_ZThn32_N9S19207C16D1Ev,_ZThn16_N9S19207C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19207C16D0Ev,_ZTv0_n44_N9S19207C16D0Ev)();
extern void ABISELECT(_ZThn32_N9S19207C16D0Ev,_ZThn16_N9S19207C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C17__9S19207C16__9S19207C14[] = {
  ABISELECT(-32,-16),
  ABISELECT(16,12),
  ABISELECT(-72,-36),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-76,-40),
  ABISELECT(-40,-20),
  ABISELECT(-76,-40),
  ABISELECT(-104,-56),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C16D1Ev,_ZTv0_n44_N9S19207C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C16D0Ev,_ZTv0_n44_N9S19207C16D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N9S19207C16D1Ev,_ZTv0_n32_N9S19207C16D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19207C16D0Ev,_ZTv0_n32_N9S19207C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19207C11__9S19207C16__9S19207C14[] = {
  ABISELECT(24,12),
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C16D1Ev,_ZTv0_n32_N9S19207C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C16D0Ev,_ZTv0_n32_N9S19207C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C16__9S19207C14[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-64,-36),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__9S19207C16__9S19207C14[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19207C16D1Ev,_ZTv0_n32_N9S19207C16D1Ev)();
extern void ABISELECT(_ZThn48_N9S19207C16D1Ev,_ZThn28_N9S19207C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C16D0Ev,_ZTv0_n32_N9S19207C16D0Ev)();
extern void ABISELECT(_ZThn48_N9S19207C16D0Ev,_ZThn28_N9S19207C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C13__A1__9S19207C16__9S19207C14[] = {
  ABISELECT(-48,-28),
  ABISELECT(-92,-52),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C16D1Ev,_ZTv0_n32_N9S19207C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C16D0Ev,_ZTv0_n32_N9S19207C16D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N9S19207C16D1Ev,_ZTv0_n44_N9S19207C16D1Ev)();
extern void ABISELECT(_ZThn64_N9S19207C16D1Ev,_ZThn36_N9S19207C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19207C16D0Ev,_ZTv0_n44_N9S19207C16D0Ev)();
extern void ABISELECT(_ZThn64_N9S19207C16D0Ev,_ZThn36_N9S19207C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19207C9__9S19207C16__9S19207C14[] = {
  ABISELECT(-64,-36),
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-104,-56),
  ABISELECT(-136,-76),
  ABISELECT(-108,-60),
  ABISELECT(-136,-76),
  ABISELECT(-72,-40),
  ABISELECT(-108,-60),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C16D1Ev,_ZTv0_n44_N9S19207C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C16D0Ev,_ZTv0_n44_N9S19207C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19207C10__9S19207C16__9S19207C14[] = {
  ABISELECT(28,16),
  ABISELECT(72,40),
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C129S19207C19__A1__9S19207C16__9S19207C14[] = {
  ABISELECT(-60,-32),
  ABISELECT(-24,-12),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
};
extern void _ZN9S19207C17D1Ev();
extern void _ZN9S19207C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C17__9S19207C14[] = {
  ABISELECT(16,12),
  ABISELECT(-72,-36),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-76,-40),
  ABISELECT(-40,-20),
  ABISELECT(-76,-40),
  ABISELECT(-104,-56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C17[0]),
  (VTBL_ENTRY)&_ZN9S19207C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C17D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N9S19207C17D1Ev,_ZTv0_n32_N9S19207C17D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19207C17D0Ev,_ZTv0_n32_N9S19207C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19207C11__9S19207C17__9S19207C14[] = {
  ABISELECT(56,28),
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI9S19207C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C17D1Ev,_ZTv0_n32_N9S19207C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C17D0Ev,_ZTv0_n32_N9S19207C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C17__9S19207C14[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-64,-36),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI9S19207C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__9S19207C17__9S19207C14[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI9S19207C17[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19207C17D1Ev,_ZTv0_n32_N9S19207C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S19207C17D1Ev,_ZThn12_N9S19207C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C17D0Ev,_ZTv0_n32_N9S19207C17D0Ev)();
extern void ABISELECT(_ZThn16_N9S19207C17D0Ev,_ZThn12_N9S19207C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C13__A1__9S19207C17__9S19207C14[] = {
  ABISELECT(-16,-12),
  ABISELECT(-92,-52),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19207C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C17D1Ev,_ZTv0_n32_N9S19207C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C17D0Ev,_ZTv0_n32_N9S19207C17D0Ev),
};
extern void _ZN9S19207C13D1Ev();
extern void _ZN9S19207C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C13__A1__9S19207C14[] = {
  ABISELECT(-92,-52),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
  (VTBL_ENTRY)&_ZN9S19207C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19207C59S19207C13__A4__9S19207C14[] = {
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C13__A1__9S19207C14[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-64,-36),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
};
extern void _ZN8S19207C9D1Ev();
extern void _ZN8S19207C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19207C9__A1__9S19207C14[] = {
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-104,-56),
  ABISELECT(-136,-76),
  ABISELECT(-108,-60),
  ABISELECT(-136,-76),
  ABISELECT(-72,-40),
  ABISELECT(-108,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
  (VTBL_ENTRY)&_ZN8S19207C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19207C9D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__8S19207C9__A1__9S19207C14[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-64,-36),
  ABISELECT(72,40),
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C10__8S19207C9__A1__9S19207C14[] = {
  ABISELECT(28,16),
  ABISELECT(136,76),
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__8S19207C9__A1__9S19207C14[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(104,56),
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S19207C9D1Ev,_ZTv0_n32_N8S19207C9D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S19207C9D0Ev,_ZTv0_n32_N8S19207C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19207C11__8S19207C9__A1__9S19207C14[] = {
  ABISELECT(88,48),
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C9D1Ev,_ZTv0_n32_N8S19207C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C9D0Ev,_ZTv0_n32_N8S19207C9D0Ev),
};
extern void _ZN9S19207C20D1Ev();
extern void _ZN9S19207C20D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C20__9S19207C14[] = {
  ABISELECT(-152,-84),
  ABISELECT(-16,-8),
  ABISELECT(-152,-84),
  ABISELECT(-32,-16),
  ABISELECT(-48,-28),
  ABISELECT(-80,-44),
  ABISELECT(-104,-56),
  ABISELECT(-88,-48),
  ABISELECT(-120,-64),
  ABISELECT(-124,-68),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-124,-68),
  ABISELECT(-152,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C20[0]),
  (VTBL_ENTRY)&_ZN9S19207C20D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C20D0Ev,
};
extern void _ZN9S19207C11D1Ev();
extern void _ZN9S19207C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C119S19207C20__A1__9S19207C14[] = {
  ABISELECT(-124,-68),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-124,-68),
  ABISELECT(-152,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C11[0]),
  (VTBL_ENTRY)&_ZN9S19207C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C11D0Ev,
};
extern void _ZN9S19207C13D1Ev();
extern void _ZN9S19207C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C139S19207C119S19207C20__A2__9S19207C14[] = {
  ABISELECT(-124,-68),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-124,-68),
  ABISELECT(-152,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
  (VTBL_ENTRY)&_ZN9S19207C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19207C59S19207C139S19207C119S19207C20__A6__9S19207C14[] = {
  ABISELECT(-124,-68),
  ABISELECT(-152,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C139S19207C119S19207C20__A2__9S19207C14[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-64,-36),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C119S19207C20__A1__9S19207C14[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-64,-36),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI9S19207C11[0]),
};
extern void _ZN9S19207C21D1Ev();
extern void _ZN9S19207C21D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C219S19207C20__9S19207C14[] = {
  ABISELECT(-140,-76),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C21[0]),
  (VTBL_ENTRY)&_ZN9S19207C21D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C21D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19207C109S19207C219S19207C20__A1__9S19207C14[] = {
  ABISELECT(-140,-76),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C10[0]),
};
extern void ABISELECT(_ZTv0_n128_N9S19207C20D1Ev,_ZTv0_n64_N9S19207C20D1Ev)();
extern void ABISELECT(_ZTv0_n128_N9S19207C20D0Ev,_ZTv0_n64_N9S19207C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19207C15__9S19207C20__9S19207C14[] = {
  ABISELECT(88,48),
  ABISELECT(-64,-36),
  ABISELECT(72,40),
  ABISELECT(-64,-36),
  ABISELECT(56,32),
  ABISELECT(-32,-16),
  ABISELECT(40,20),
  ABISELECT(8,4),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-36,-20),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-64,-36),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI9S19207C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N9S19207C20D1Ev,_ZTv0_n64_N9S19207C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N9S19207C20D0Ev,_ZTv0_n64_N9S19207C20D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__9S19207C20__9S19207C14[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(120,64),
  (VTBL_ENTRY)&(_ZTI9S19207C20[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19207C20D1Ev,_ZTv0_n32_N9S19207C20D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19207C20D0Ev,_ZTv0_n32_N9S19207C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19207C11__A1__9S19207C20__9S19207C14[] = {
  ABISELECT(104,56),
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(104,56),
  (VTBL_ENTRY)&(_ZTI9S19207C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C20D1Ev,_ZTv0_n32_N9S19207C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C20D0Ev,_ZTv0_n32_N9S19207C20D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N9S19207C20D1Ev,_ZTv0_n60_N9S19207C20D1Ev)();
extern void ABISELECT(_ZTv0_n120_N9S19207C20D0Ev,_ZTv0_n60_N9S19207C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19207C16__9S19207C20__9S19207C14[] = {
  ABISELECT(80,44),
  ABISELECT(-72,-40),
  ABISELECT(64,36),
  ABISELECT(-72,-40),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  ABISELECT(32,16),
  ABISELECT(-44,-24),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI9S19207C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19207C20D1Ev,_ZTv0_n60_N9S19207C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19207C20D0Ev,_ZTv0_n60_N9S19207C20D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N9S19207C20D1Ev,_ZTv0_n44_N9S19207C20D1Ev)();
extern void ABISELECT(_ZTv0_n88_N9S19207C20D0Ev,_ZTv0_n44_N9S19207C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19207C17__9S19207C20__9S19207C14[] = {
  ABISELECT(48,28),
  ABISELECT(16,12),
  ABISELECT(-72,-36),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-76,-40),
  ABISELECT(-40,-20),
  ABISELECT(-76,-40),
  ABISELECT(-104,-56),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S19207C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C20D1Ev,_ZTv0_n44_N9S19207C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C20D0Ev,_ZTv0_n44_N9S19207C20D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N9S19207C20D1Ev,_ZTv0_n32_N9S19207C20D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19207C20D0Ev,_ZTv0_n32_N9S19207C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19207C13__A2__9S19207C20__9S19207C14[] = {
  ABISELECT(32,16),
  ABISELECT(-92,-52),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S19207C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C20D1Ev,_ZTv0_n32_N9S19207C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C20D0Ev,_ZTv0_n32_N9S19207C20D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N9S19207C20D1Ev,_ZTv0_n44_N9S19207C20D1Ev)();
extern void ABISELECT(_ZTv0_n88_N9S19207C20D0Ev,_ZTv0_n44_N9S19207C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19207C9__9S19207C20__9S19207C14[] = {
  ABISELECT(16,8),
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-104,-56),
  ABISELECT(-136,-76),
  ABISELECT(-108,-60),
  ABISELECT(-136,-76),
  ABISELECT(-72,-40),
  ABISELECT(-108,-60),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S19207C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C20D1Ev,_ZTv0_n44_N9S19207C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C20D0Ev,_ZTv0_n44_N9S19207C20D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19207C10__9S19207C20__9S19207C14[] = {
  ABISELECT(28,16),
  ABISELECT(152,84),
  (VTBL_ENTRY)&(_ZTI9S19207C20[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C129S19207C199S19207C16__A1__9S19207C20__9S19207C14[] = {
  ABISELECT(-60,-32),
  ABISELECT(-24,-12),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI9S19207C20[0]),
};
extern void ABISELECT(_ZThn16_N9S19207C20D1Ev,_ZThn8_N9S19207C20D1Ev)();
extern void ABISELECT(_ZThn16_N9S19207C20D0Ev,_ZThn8_N9S19207C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19207C21__9S19207C20__9S19207C14[] = {
  ABISELECT(-140,-76),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19207C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19207C20D1Ev,_ZThn8_N9S19207C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19207C20D0Ev,_ZThn8_N9S19207C20D0Ev),
};
static  VTT_ENTRY vtt_S19207C14[] = {
  {&(_ZTV9S19207C14[17]),  17,138},
  {&(_tg__ZTV8S19207C8__9S19207C14[10]),  10,12},
  {&(_tg__ZTV8S19207C98S19207C8__9S19207C14[10]),  10,12},
  {&(_tg__ZTV9S19207C12__8S19207C98S19207C8__9S19207C14[6]),  6,6},
  {&(_tg__ZTV8S19207C98S19207C8__9S19207C14[10]),  10,12},
  {&(_tg__ZTV8S19207C2__8S19207C98S19207C8__9S19207C14[4]),  4,4},
  {&(_tg__ZTV9S19207C11__8S19207C98S19207C8__9S19207C14[8]),  8,10},
  {&(_tg__ZTV9S19207C12__8S19207C98S19207C8__9S19207C14[6]),  6,6},
  {&(_tg__ZTV9S19207C12__8S19207C8__9S19207C14[6]),  6,6},
  {&(_tg__ZTV8S19207C8__9S19207C14[10]),  10,12},
  {&(_tg__ZTV8S19207C2__8S19207C8__9S19207C14[4]),  4,4},
  {&(_tg__ZTV9S19207C11__8S19207C8__9S19207C14[8]),  8,10},
  {&(_tg__ZTV9S19207C12__8S19207C8__9S19207C14[6]),  6,6},
  {&(_tg__ZTV8S19207C5__A__9S19207C14[4]),  4,4},
  {&(_ZTV9S19207C14[53]),  53,138},
  {&(_ZTV9S19207C14[17]),  17,138},
  {&(_ZTV9S19207C14[27]),  27,138},
  {&(_ZTV9S19207C14[35]),  35,138},
  {&(_ZTV9S19207C14[53]),  53,138},
  {&(_ZTV9S19207C14[23]),  23,138},
  {&(_ZTV9S19207C14[53]),  53,138},
  {&(_ZTV9S19207C14[70]),  70,138},
  {&(_ZTV9S19207C14[89]),  89,138},
  {&(_ZTV9S19207C14[99]),  99,138},
  {&(_ZTV9S19207C14[112]),  112,138},
  {&(_ZTV9S19207C14[78]),  78,138},
  {&(_ZTV9S19207C14[131]),  131,138},
  {&(_ZTV9S19207C14[136]),  136,138},
  {&(_tg__ZTV8S19207C5__9S19207C14[4]),  4,4},
  {&(_tg__ZTV9S19207C10__9S19207C14[3]),  3,3},
  {&(_tg__ZTV8S19207C2__9S19207C14[4]),  4,4},
  {&(_tg__ZTV8S19207C58S19207C2__A1__9S19207C14[4]),  4,4},
  {&(_tg__ZTV9S19207C11__9S19207C14[7]),  7,9},
  {&(_tg__ZTV9S19207C139S19207C11__9S19207C14[7]),  7,9},
  {&(_tg__ZTV8S19207C59S19207C139S19207C11__A2__9S19207C14[4]),  4,4},
  {&(_tg__ZTV9S19207C12__9S19207C139S19207C11__9S19207C14[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C139S19207C11__9S19207C14[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C11__9S19207C14[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C11__9S19207C14[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C14[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C14[6]),  6,6},
  {&(_tg__ZTV9S19207C15__9S19207C14[15]),  15,17},
  {&(_tg__ZTV9S19207C11__9S19207C15__9S19207C14[8]),  8,10},
  {&(_tg__ZTV9S19207C15__9S19207C14[15]),  15,17},
  {&(_tg__ZTV9S19207C15__9S19207C14[15]),  15,17},
  {&(_tg__ZTV9S19207C16__9S19207C15__9S19207C14[15]),  15,17},
  {&(_tg__ZTV9S19207C17__9S19207C15__9S19207C14[11]),  11,13},
  {&(_tg__ZTV8S19207C2__9S19207C15__9S19207C14[4]),  4,4},
  {&(_tg__ZTV9S19207C13__A1__9S19207C15__9S19207C14[8]),  8,10},
  {&(_tg__ZTV8S19207C9__9S19207C15__9S19207C14[11]),  11,13},
  {&(_tg__ZTV9S19207C10__9S19207C15__9S19207C14[3]),  3,3},
  {&(_tg__ZTV9S19207C129S19207C199S19207C16__A1__9S19207C15__9S19207C14[6]),  6,6},
  {&(_tg__ZTV9S19207C16__9S19207C14[14]),  14,16},
  {&(_tg__ZTV9S19207C199S19207C16__9S19207C14[8]),  8,10},
  {&(_tg__ZTV8S19207C29S19207C199S19207C16__A1__9S19207C14[4]),  4,4},
  {&(_tg__ZTV8S19207C58S19207C29S19207C199S19207C16__A5__9S19207C14[4]),  4,4},
  {&(_tg__ZTV9S19207C129S19207C199S19207C16__A1__9S19207C14[6]),  6,6},
  {&(_tg__ZTV8S19207C5__9S19207C129S19207C199S19207C16__A1__9S19207C14[4]),  4,4},
  {&(_tg__ZTV9S19207C13__9S19207C199S19207C16__9S19207C14[8]),  8,10},
  {&(_tg__ZTV9S19207C12__9S19207C199S19207C16__9S19207C14[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C199S19207C16__9S19207C14[6]),  6,6},
  {&(_tg__ZTV9S19207C12__A__9S19207C199S19207C16__9S19207C14[6]),  6,6},
  {&(_tg__ZTV9S19207C17__9S19207C16__9S19207C14[11]),  11,13},
  {&(_tg__ZTV9S19207C11__9S19207C16__9S19207C14[8]),  8,10},
  {&(_tg__ZTV9S19207C12__9S19207C16__9S19207C14[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C16__9S19207C14[6]),  6,6},
  {&(_tg__ZTV8S19207C2__9S19207C16__9S19207C14[4]),  4,4},
  {&(_tg__ZTV9S19207C13__A1__9S19207C16__9S19207C14[8]),  8,10},
  {&(_tg__ZTV8S19207C9__9S19207C16__9S19207C14[11]),  11,13},
  {&(_tg__ZTV9S19207C10__9S19207C16__9S19207C14[3]),  3,3},
  {&(_tg__ZTV9S19207C129S19207C19__A1__9S19207C16__9S19207C14[6]),  6,6},
  {&(_tg__ZTV9S19207C17__9S19207C14[10]),  10,12},
  {&(_tg__ZTV9S19207C11__9S19207C17__9S19207C14[8]),  8,10},
  {&(_tg__ZTV9S19207C12__9S19207C17__9S19207C14[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C17__9S19207C14[6]),  6,6},
  {&(_tg__ZTV8S19207C2__9S19207C17__9S19207C14[4]),  4,4},
  {&(_tg__ZTV9S19207C13__A1__9S19207C17__9S19207C14[8]),  8,10},
  {&(_tg__ZTV9S19207C13__A1__9S19207C14[7]),  7,9},
  {&(_tg__ZTV8S19207C59S19207C13__A4__9S19207C14[4]),  4,4},
  {&(_tg__ZTV9S19207C12__9S19207C13__A1__9S19207C14[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C13__A1__9S19207C14[6]),  6,6},
  {&(_tg__ZTV8S19207C9__A1__9S19207C14[10]),  10,12},
  {&(_tg__ZTV9S19207C12__8S19207C9__A1__9S19207C14[6]),  6,6},
  {&(_tg__ZTV9S19207C10__8S19207C9__A1__9S19207C14[3]),  3,3},
  {&(_tg__ZTV8S19207C2__8S19207C9__A1__9S19207C14[4]),  4,4},
  {&(_tg__ZTV9S19207C11__8S19207C9__A1__9S19207C14[8]),  8,10},
  {&(_tg__ZTV9S19207C12__8S19207C9__A1__9S19207C14[6]),  6,6},
  {&(_tg__ZTV9S19207C20__9S19207C14[16]),  16,18},
  {&(_tg__ZTV9S19207C119S19207C20__A1__9S19207C14[7]),  7,9},
  {&(_tg__ZTV9S19207C139S19207C119S19207C20__A2__9S19207C14[7]),  7,9},
  {&(_tg__ZTV8S19207C59S19207C139S19207C119S19207C20__A6__9S19207C14[4]),  4,4},
  {&(_tg__ZTV9S19207C12__9S19207C139S19207C119S19207C20__A2__9S19207C14[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C139S19207C119S19207C20__A2__9S19207C14[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C119S19207C20__A1__9S19207C14[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C119S19207C20__A1__9S19207C14[6]),  6,6},
  {&(_tg__ZTV9S19207C219S19207C20__9S19207C14[3]),  3,5},
  {&(_tg__ZTV9S19207C109S19207C219S19207C20__A1__9S19207C14[3]),  3,3},
  {&(_tg__ZTV9S19207C15__9S19207C20__9S19207C14[16]),  16,18},
  {&(_tg__ZTV9S19207C15__9S19207C20__9S19207C14[16]),  16,18},
  {&(_tg__ZTV8S19207C2__9S19207C20__9S19207C14[4]),  4,4},
  {&(_tg__ZTV9S19207C15__9S19207C20__9S19207C14[16]),  16,18},
  {&(_tg__ZTV9S19207C11__A1__9S19207C20__9S19207C14[8]),  8,10},
  {&(_tg__ZTV9S19207C16__9S19207C20__9S19207C14[15]),  15,17},
  {&(_tg__ZTV9S19207C17__9S19207C20__9S19207C14[11]),  11,13},
  {&(_tg__ZTV9S19207C13__A2__9S19207C20__9S19207C14[8]),  8,10},
  {&(_tg__ZTV8S19207C9__9S19207C20__9S19207C14[11]),  11,13},
  {&(_tg__ZTV9S19207C10__9S19207C20__9S19207C14[3]),  3,3},
  {&(_tg__ZTV9S19207C129S19207C199S19207C16__A1__9S19207C20__9S19207C14[6]),  6,6},
  {&(_tg__ZTV9S19207C21__9S19207C20__9S19207C14[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19207C14[];
extern  VTBL_ENTRY _ZTV9S19207C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C14[];
static VTBL_ENTRY alt_thunk_names116[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C17D0Ev,_ZTv0_n32_N9S19207C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19207C17D0Ev,_ZThn12_N9S19207C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C17D1Ev,_ZTv0_n32_N9S19207C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19207C17D1Ev,_ZThn12_N9S19207C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C16D0Ev,_ZTv0_n32_N9S19207C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19207C16D0Ev,_ZThn28_N9S19207C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C16D1Ev,_ZTv0_n32_N9S19207C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19207C16D1Ev,_ZThn28_N9S19207C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19207C16D0Ev,_ZTv0_n44_N9S19207C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19207C16D0Ev,_ZThn36_N9S19207C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19207C16D0Ev,_ZThn16_N9S19207C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19207C16D1Ev,_ZTv0_n44_N9S19207C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19207C16D1Ev,_ZThn36_N9S19207C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19207C16D1Ev,_ZThn16_N9S19207C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C19D0Ev,_ZTv0_n32_N9S19207C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19207C19D0Ev,_ZThn28_N9S19207C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C19D1Ev,_ZTv0_n32_N9S19207C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19207C19D1Ev,_ZThn28_N9S19207C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C15D0Ev,_ZTv0_n32_N9S19207C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19207C15D0Ev,_ZThn32_N9S19207C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C15D1Ev,_ZTv0_n32_N9S19207C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19207C15D1Ev,_ZThn32_N9S19207C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19207C15D0Ev,_ZTv0_n44_N9S19207C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19207C15D0Ev,_ZThn40_N9S19207C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19207C15D0Ev,_ZThn20_N9S19207C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19207C15D1Ev,_ZTv0_n44_N9S19207C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19207C15D1Ev,_ZThn40_N9S19207C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19207C15D1Ev,_ZThn20_N9S19207C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19207C15D0Ev,_ZTv0_n60_N9S19207C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19207C15D0Ev,_ZThn4_N9S19207C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19207C15D1Ev,_ZTv0_n60_N9S19207C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19207C15D1Ev,_ZThn4_N9S19207C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19207C8D0Ev,_ZTv0_n32_N8S19207C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19207C8D0Ev,_ZThn28_N8S19207C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19207C8D1Ev,_ZTv0_n32_N8S19207C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19207C8D1Ev,_ZThn28_N8S19207C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19207C9D0Ev,_ZTv0_n32_N8S19207C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19207C9D0Ev,_ZThn28_N8S19207C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19207C9D1Ev,_ZTv0_n32_N8S19207C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19207C9D1Ev,_ZThn28_N8S19207C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N9S19207C14D0Ev,_ZTv0_n68_N9S19207C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S19207C14D0Ev,_ZThn84_N9S19207C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N9S19207C14D1Ev,_ZTv0_n68_N9S19207C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S19207C14D1Ev,_ZThn84_N9S19207C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19207C14D0Ev,_ZTv0_n44_N9S19207C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19207C14D0Ev,_ZThn76_N9S19207C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19207C14D0Ev,_ZThn56_N9S19207C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19207C14D1Ev,_ZTv0_n44_N9S19207C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19207C14D1Ev,_ZThn76_N9S19207C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19207C14D1Ev,_ZThn56_N9S19207C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19207C14D0Ev,_ZTv0_n60_N9S19207C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19207C14D0Ev,_ZThn40_N9S19207C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19207C14D1Ev,_ZTv0_n60_N9S19207C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19207C14D1Ev,_ZThn40_N9S19207C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N9S19207C14D0Ev,_ZTv0_n64_N9S19207C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19207C14D0Ev,_ZThn36_N9S19207C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N9S19207C14D1Ev,_ZTv0_n64_N9S19207C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19207C14D1Ev,_ZThn36_N9S19207C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C14D0Ev,_ZTv0_n32_N9S19207C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S19207C14D0Ev,_ZThn68_N9S19207C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19207C14D0Ev,_ZThn28_N9S19207C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C14D1Ev,_ZTv0_n32_N9S19207C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S19207C14D1Ev,_ZThn68_N9S19207C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19207C14D1Ev,_ZThn28_N9S19207C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19207C14 = {  "S19207C14", // class name
  bases_S19207C14, 55,
  &(vtc_S19207C14[0]), // expected_vtbl_contents
  &(vtt_S19207C14[0]), // expected_vtt_contents
  ABISELECT(184,100), // object size
  NSPAIRA(_ZTI9S19207C14),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19207C14),138, //virtual function table var
  17, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19207C14),109, //virtual table table var
  27, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names116,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19207C1  : virtual S19207C2 , virtual S19207C7 , S19207C14 {
  ~S19207C1(); // tgen
  S19207C1(); // tgen
};
//SIG(1 S19207C1) C1{ VBC2{ BC3{ m} BC4{ m} BC5{ VBC6{ m} BC4 VBC3} Fi} VBC7{ VBC4 BC8{ BC9{ VBC5 VBC10{ VBC4} VBC2 BC3 VBC11{ VBC6 VBC4 VBC12{ BC6 VBC5 VBC4} BC3 BC13{ BC4 VBC6 VBC3 BC5 VBC12 vd} vd} vd Fi} BC4}} BC14{ BC8 BC5 VBC15{ VBC11 VBC16{ VBC17{ VBC11 VBC2 VBC13 vd Fi[2]} VBC18{ m} VBC9 BC19{ VBC13 BC2 BC12 BC3 vd} vd} vd} VBC20{ BC11 VBC2 VBC15 BC21{ BC4 BC10 vd} BC22{ m} Fi} Fi}}


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

static void Test_S19207C1()
{
  extern Class_Descriptor cd_S19207C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(26,29)];
    init_test(&cd_S19207C1, buf);
    S19207C1 *dp, &lv = *(dp=new (buf) S19207C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(200,112), "sizeof(S19207C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19207C1)");
    /*is_ambiguous_... S19207C1::S19207C2 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C2*), ABISELECT(32,16), "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C2 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C2*), ABISELECT(40,20), "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C2 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*)(S19207C2*), 0, "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*), 0, "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C11*), 0, "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C13*)(S19207C11*), 0, "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*)(S19207C13*)(S19207C11*), 0, "S19207C1");
    /*is_ambiguous_... S19207C14::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*)(S19207C14*), 0, "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C13*), 0, "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*)(S19207C13*), 0, "S19207C1");
    check_base_class_offset(lv, (S7856C12*)(S19207C5*)(S19207C2*)(S19207C19*)(S19207C16*), 0, "S19207C1");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C11*)(S19207C20*), 0, "S19207C1");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C13*)(S19207C11*)(S19207C20*), 0, "S19207C1");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*)(S19207C13*)(S19207C11*)(S19207C20*), 0, "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C2 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*)(S19207C2*), ABISELECT(32,16), "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C2 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*)(S19207C2*), ABISELECT(44,24), "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*), ABISELECT(44,24), "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C13*)(S19207C11*), ABISELECT(44,24), "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*)(S19207C13*)(S19207C11*), ABISELECT(44,24), "S19207C1");
    /*is_ambiguous_... S19207C14::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*)(S19207C14*), ABISELECT(44,24), "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C13 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C13*), ABISELECT(44,24), "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C13 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*)(S19207C13*), ABISELECT(44,24), "S19207C1");
    check_base_class_offset(lv, (S7856C24*)(S19207C5*)(S19207C2*)(S19207C19*)(S19207C16*), ABISELECT(44,24), "S19207C1");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C13*)(S19207C11*)(S19207C20*), ABISELECT(44,24), "S19207C1");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*)(S19207C13*)(S19207C11*)(S19207C20*), ABISELECT(44,24), "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C2 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C2*), ABISELECT(32,16), "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C2 */ AMB_check_base_class_offset(lv, (S19207C2*), ABISELECT(32,16), "S19207C1");
    check_base_class_offset(lv, (S19207C2*)(S19207C9*)(S19207C8*)(S19207C7*), ABISELECT(32,16), "S19207C1");
    check_base_class_offset(lv, (S19207C2*)(S19207C9*)(S19207C8*)(S19207C14*), ABISELECT(32,16), "S19207C1");
    check_base_class_offset(lv, (S19207C2*)(S19207C17*), ABISELECT(32,16), "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C9 */ AMB_check_base_class_offset(lv, (S19207C2*)(S19207C9*), ABISELECT(32,16), "S19207C1");
    /*is_ambiguous_... S19207C20::S19207C2 */ AMB_check_base_class_offset(lv, (S19207C2*)(S19207C20*), ABISELECT(32,16), "S19207C1");
    /*is_ambiguous_... S19207C7::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C7*), ABISELECT(60,36), "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C10*), ABISELECT(60,36), "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C11*), ABISELECT(60,36), "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C12*), ABISELECT(60,36), "S19207C1");
    /*is_ambiguous_... S19207C19::S19207C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C12*)(S19207C19*)(S19207C16*), ABISELECT(60,36), "S19207C1");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C11*)(S19207C20*), ABISELECT(60,36), "S19207C1");
    check_base_class_offset(lv, (S7856C15*)(S19207C10*)(S19207C21*)(S19207C20*), ABISELECT(60,36), "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*), ABISELECT(80,48), "S19207C1");
    /*is_ambiguous_... S19207C9::S19207C5 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C9*)(S19207C8*)(S19207C7*), ABISELECT(80,48), "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C12 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C12*), ABISELECT(80,48), "S19207C1");
    /*is_ambiguous_... S19207C9::S19207C5 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C9*)(S19207C8*)(S19207C14*), ABISELECT(80,48), "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C9 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C9*), ABISELECT(80,48), "S19207C1");
    /*is_ambiguous_... S19207C19::S19207C12 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C12*)(S19207C19*)(S19207C16*), ABISELECT(80,48), "S19207C1");
    check_base_class_offset(lv, (S19207C10*)(S19207C9*)(S19207C8*)(S19207C7*), ABISELECT(48,28), "S19207C1");
    check_base_class_offset(lv, (S19207C10*)(S19207C9*)(S19207C8*)(S19207C14*), ABISELECT(48,28), "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C9 */ AMB_check_base_class_offset(lv, (S19207C10*)(S19207C9*), ABISELECT(48,28), "S19207C1");
    /*is_ambiguous_... S19207C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C9*)(S19207C8*)(S19207C7*), ABISELECT(48,28), "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C12*), ABISELECT(80,48), "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C11 */ AMB_check_base_class_offset(lv, (S19207C12*)(S19207C11*), ABISELECT(80,48), "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C11 */ AMB_check_base_class_offset(lv, (S19207C12*)(S19207C13*)(S19207C11*), ABISELECT(80,48), "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C13 */ AMB_check_base_class_offset(lv, (S19207C12*)(S19207C13*), ABISELECT(80,48), "S19207C1");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S19207C12*)(S19207C11*)(S19207C20*), ABISELECT(80,48), "S19207C1");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S19207C12*)(S19207C13*)(S19207C11*)(S19207C20*), ABISELECT(80,48), "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C11*), ABISELECT(64,40), "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C13*)(S19207C11*), ABISELECT(72,44), "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*)(S19207C13*)(S19207C11*), ABISELECT(64,40), "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C11 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C13*)(S19207C11*), ABISELECT(64,40), "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C11 */ AMB_check_base_class_offset(lv, (S19207C13*)(S19207C11*), ABISELECT(64,40), "S19207C1");
    check_base_class_offset(lv, (S19207C11*)(S19207C9*)(S19207C8*)(S19207C7*), ABISELECT(64,40), "S19207C1");
    check_base_class_offset(lv, (S19207C11*)(S19207C9*)(S19207C8*)(S19207C14*), ABISELECT(64,40), "S19207C1");
    check_base_class_offset(lv, (S19207C11*)(S19207C15*), ABISELECT(64,40), "S19207C1");
    check_base_class_offset(lv, (S19207C11*)(S19207C17*), ABISELECT(64,40), "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C9 */ AMB_check_base_class_offset(lv, (S19207C11*)(S19207C9*), ABISELECT(64,40), "S19207C1");
    check_base_class_offset(lv, (S19207C9*)(S19207C8*)(S19207C7*), ABISELECT(48,28), "S19207C1");
    /*is_ambiguous_... S19207C8::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C8*)(S19207C7*), ABISELECT(48,28), "S19207C1");
    check_base_class_offset(lv, (S19207C8*)(S19207C7*), ABISELECT(48,28), "S19207C1");
    check_base_class_offset(lv, (S19207C7*), ABISELECT(48,28), "S19207C1");
    /*is_ambiguous_... S19207C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C9*)(S19207C8*)(S19207C14*), 0, "S19207C1");
    check_base_class_offset(lv, (S19207C9*)(S19207C8*)(S19207C14*), 0, "S19207C1");
    /*is_ambiguous_... S19207C8::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C8*)(S19207C14*), 0, "S19207C1");
    check_base_class_offset(lv, (S19207C8*)(S19207C14*), 0, "S19207C1");
    /*is_ambiguous_... S19207C14::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*)(S19207C14*), ABISELECT(16,8), "S19207C1");
    /*is_ambiguous_... S19207C14::S19207C5 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C14*), ABISELECT(16,8), "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C13*), ABISELECT(144,84), "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*)(S19207C13*), ABISELECT(136,80), "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C13 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C13*), ABISELECT(136,80), "S19207C1");
    /*is_ambiguous_... S19207C17::S19207C13 */ AMB_check_base_class_offset(lv, (S19207C13*)(S19207C17*), ABISELECT(136,80), "S19207C1");
    check_base_class_offset(lv, (S19207C13*)(S19207C19*)(S19207C16*), ABISELECT(136,80), "S19207C1");
    check_base_class_offset(lv, (S19207C17*)(S19207C16*), ABISELECT(120,68), "S19207C1");
    check_base_class_offset(lv, (S7856C9_nt*)(S19207C16*), 0, "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C9 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C9*), ABISELECT(152,88), "S19207C1");
    check_base_class_offset(lv, (S19207C9*)(S19207C16*), ABISELECT(152,88), "S19207C1");
    /*is_ambiguous_... S19207C2::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C2*)(S19207C19*)(S19207C16*), ABISELECT(88,52), "S19207C1");
    /*is_ambiguous_... S19207C2::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C2*)(S19207C19*)(S19207C16*), ABISELECT(96,56), "S19207C1");
    check_base_class_offset(lv, (S7856C15*)(S19207C5*)(S19207C2*)(S19207C19*)(S19207C16*), ABISELECT(88,52), "S19207C1");
    check_base_class_offset(lv, (S19207C5*)(S19207C2*)(S19207C19*)(S19207C16*), ABISELECT(88,52), "S19207C1");
    check_base_class_offset(lv, (S19207C2*)(S19207C19*)(S19207C16*), ABISELECT(88,52), "S19207C1");
    /*is_ambiguous_... S19207C19::S19207C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C12*)(S19207C19*)(S19207C16*), ABISELECT(104,60), "S19207C1");
    /*is_ambiguous_... S19207C19::S19207C12 */ AMB_check_base_class_offset(lv, (S19207C12*)(S19207C19*)(S19207C16*), ABISELECT(104,60), "S19207C1");
    /*is_ambiguous_... S19207C19::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C19*)(S19207C16*), ABISELECT(112,64), "S19207C1");
    check_base_class_offset(lv, (S19207C19*)(S19207C16*), ABISELECT(88,52), "S19207C1");
    check_base_class_offset(lv, (S19207C16*)(S19207C15*), ABISELECT(88,52), "S19207C1");
    check_base_class_offset(lv, (S19207C15*)(S19207C14*), ABISELECT(80,48), "S19207C1");
    check_base_class_offset(lv, (S19207C15*)(S19207C20*), ABISELECT(80,48), "S19207C1");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C11*)(S19207C20*), ABISELECT(168,96), "S19207C1");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C13*)(S19207C11*)(S19207C20*), ABISELECT(176,100), "S19207C1");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*)(S19207C13*)(S19207C11*)(S19207C20*), ABISELECT(168,96), "S19207C1");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C13*)(S19207C11*)(S19207C20*), ABISELECT(168,96), "S19207C1");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S19207C13*)(S19207C11*)(S19207C20*), ABISELECT(168,96), "S19207C1");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S19207C11*)(S19207C20*), ABISELECT(168,96), "S19207C1");
    /*is_ambiguous_... S19207C21::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C21*)(S19207C20*), ABISELECT(184,104), "S19207C1");
    check_base_class_offset(lv, (S19207C10*)(S19207C21*)(S19207C20*), ABISELECT(184,104), "S19207C1");
    check_base_class_offset(lv, (S19207C21*)(S19207C20*), ABISELECT(184,104), "S19207C1");
    check_base_class_offset(lv, (S77C13_nt*)(S19207C20*), ABISELECT(168,96), "S19207C1");
    check_base_class_offset(lv, (S19207C20*)(S19207C14*), ABISELECT(168,96), "S19207C1");
    check_base_class_offset(lv, (S19207C14*), 0, "S19207C1");
    test_class_info(&lv, &cd_S19207C1);
    dp->~S19207C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19207C1(Test_S19207C1, "S19207C1", ABISELECT(200,112));

#else // __cplusplus

extern void _ZN8S19207C1C1Ev();
extern void _ZN8S19207C1D1Ev();
Name_Map name_map_S19207C1[] = {
  NSPAIR(_ZN8S19207C1C1Ev),
  NSPAIR(_ZN8S19207C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C2;
extern VTBL_ENTRY _ZTI8S19207C2[];
extern  VTBL_ENTRY _ZTV8S19207C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C2[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C10;
extern VTBL_ENTRY _ZTI9S19207C10[];
extern  VTBL_ENTRY _ZTV9S19207C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C10[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19207C12;
extern VTBL_ENTRY _ZTI9S19207C12[];
extern  VTBL_ENTRY _ZTV9S19207C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C13;
extern VTBL_ENTRY _ZTI9S19207C13[];
extern  VTBL_ENTRY _ZTV9S19207C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C13[];
extern Class_Descriptor cd_S19207C11;
extern VTBL_ENTRY _ZTI9S19207C11[];
extern  VTBL_ENTRY _ZTV9S19207C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C11[];
extern Class_Descriptor cd_S19207C9;
extern VTBL_ENTRY _ZTI8S19207C9[];
extern  VTBL_ENTRY _ZTV8S19207C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C9[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C8;
extern VTBL_ENTRY _ZTI8S19207C8[];
extern  VTBL_ENTRY _ZTV8S19207C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C8[];
extern Class_Descriptor cd_S19207C7;
extern VTBL_ENTRY _ZTI8S19207C7[];
extern  VTBL_ENTRY _ZTV8S19207C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C7[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19207C9;
extern VTBL_ENTRY _ZTI8S19207C9[];
extern  VTBL_ENTRY _ZTV8S19207C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C9[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C8;
extern VTBL_ENTRY _ZTI8S19207C8[];
extern  VTBL_ENTRY _ZTV8S19207C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C8[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C13;
extern VTBL_ENTRY _ZTI9S19207C13[];
extern  VTBL_ENTRY _ZTV9S19207C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C13[];
extern Class_Descriptor cd_S19207C17;
extern VTBL_ENTRY _ZTI9S19207C17[];
extern  VTBL_ENTRY _ZTV9S19207C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C17[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19207C9;
extern VTBL_ENTRY _ZTI8S19207C9[];
extern  VTBL_ENTRY _ZTV8S19207C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C9[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C2;
extern VTBL_ENTRY _ZTI8S19207C2[];
extern  VTBL_ENTRY _ZTV8S19207C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C2[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19207C12;
extern VTBL_ENTRY _ZTI9S19207C12[];
extern  VTBL_ENTRY _ZTV9S19207C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19207C19;
extern VTBL_ENTRY _ZTI9S19207C19[];
extern  VTBL_ENTRY _ZTV9S19207C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C19[];
extern Class_Descriptor cd_S19207C16;
extern VTBL_ENTRY _ZTI9S19207C16[];
extern  VTBL_ENTRY _ZTV9S19207C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C16[];
extern Class_Descriptor cd_S19207C15;
extern VTBL_ENTRY _ZTI9S19207C15[];
extern  VTBL_ENTRY _ZTV9S19207C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C13;
extern VTBL_ENTRY _ZTI9S19207C13[];
extern  VTBL_ENTRY _ZTV9S19207C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C13[];
extern Class_Descriptor cd_S19207C11;
extern VTBL_ENTRY _ZTI9S19207C11[];
extern  VTBL_ENTRY _ZTV9S19207C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C11[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C10;
extern VTBL_ENTRY _ZTI9S19207C10[];
extern  VTBL_ENTRY _ZTV9S19207C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C10[];
extern Class_Descriptor cd_S19207C21;
extern VTBL_ENTRY _ZTI9S19207C21[];
extern  VTBL_ENTRY _ZTV9S19207C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C21[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19207C20;
extern VTBL_ENTRY _ZTI9S19207C20[];
extern  VTBL_ENTRY _ZTV9S19207C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C20[];
extern Class_Descriptor cd_S19207C14;
extern VTBL_ENTRY _ZTI9S19207C14[];
extern  VTBL_ENTRY _ZTV9S19207C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C14[];
static Base_Class bases_S19207C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(44,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19207C5,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19207C2,    ABISELECT(32,16), //bcp->offset
    24, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    ABISELECT(60,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19207C5,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19207C10,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    66, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19207C12,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(72,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19207C5,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    69, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19207C13,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19207C11,    ABISELECT(64,40), //bcp->offset
    41, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S19207C9,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19207C8,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19207C7,    ABISELECT(48,28), //bcp->offset
    28, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S19207C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19207C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    60, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S19207C5,    ABISELECT(16,8), //bcp->offset
    20, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    60, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(144,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(136,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S19207C5,    ABISELECT(136,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    113, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S19207C13,    ABISELECT(136,80), //bcp->offset
    105, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    112, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    34, //immediately_derived
  0, 1},
  {&cd_S19207C17,    ABISELECT(120,68), //bcp->offset
    92, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    106, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    47, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    47, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(152,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S19207C9,    ABISELECT(152,88), //bcp->offset
    115, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    116, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    47, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(88,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(96,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(88,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S19207C5,    ABISELECT(88,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    90, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S19207C2,    ABISELECT(88,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    89, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(104,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S19207C12,    ABISELECT(104,60), //bcp->offset
    86, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    91, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(112,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S19207C19,    ABISELECT(88,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    88, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S19207C16,    ABISELECT(88,52), //bcp->offset
    69, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    87, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    48, //immediately_derived
  0, 1},
  {&cd_S19207C15,    ABISELECT(80,48), //bcp->offset
    51, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    76, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    59, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(168,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    54, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(176,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    53, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(168,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    52, //immediately_derived
  0, 0},
  {&cd_S19207C5,    ABISELECT(168,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    125, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    53, //immediately_derived
  0, 0},
  {&cd_S19207C13,    ABISELECT(168,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    124, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    54, //immediately_derived
  0, 0},
  {&cd_S19207C11,    ABISELECT(168,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    123, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    59, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(184,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S19207C10,    ABISELECT(184,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    131, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S19207C21,    ABISELECT(184,104), //bcp->offset
    147, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    130, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    59, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(168,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    59, //immediately_derived
  0, 0},
  {&cd_S19207C20,    ABISELECT(168,96), //bcp->offset
    128, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    122, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    60, //immediately_derived
  0, 1},
  {&cd_S19207C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19207C1[];
extern void _ZN8S19207C1D1Ev();
extern void _ZN8S19207C1D0Ev();
extern void ABISELECT(_ZTv0_n88_N8S19207C1D1Ev,_ZTv0_n44_N8S19207C1D1Ev)();
extern void ABISELECT(_ZThn48_N8S19207C1D1Ev,_ZThn28_N8S19207C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19207C1D0Ev,_ZTv0_n44_N8S19207C1D0Ev)();
extern void ABISELECT(_ZThn48_N8S19207C1D0Ev,_ZThn28_N8S19207C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19207C1D1Ev,_ZTv0_n32_N8S19207C1D1Ev)();
extern void ABISELECT(_ZThn64_N8S19207C1D1Ev,_ZThn40_N8S19207C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19207C1D0Ev,_ZTv0_n32_N8S19207C1D0Ev)();
extern void ABISELECT(_ZThn64_N8S19207C1D0Ev,_ZThn40_N8S19207C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S19207C1D1Ev,_ZTv0_n64_N8S19207C1D1Ev)();
extern void ABISELECT(_ZThn80_N8S19207C1D1Ev,_ZThn48_N8S19207C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S19207C1D0Ev,_ZTv0_n64_N8S19207C1D0Ev)();
extern void ABISELECT(_ZThn80_N8S19207C1D0Ev,_ZThn48_N8S19207C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S19207C1D1Ev,_ZTv0_n60_N8S19207C1D1Ev)();
extern void ABISELECT(_ZThn88_N8S19207C1D1Ev,_ZThn52_N8S19207C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S19207C1D0Ev,_ZTv0_n60_N8S19207C1D0Ev)();
extern void ABISELECT(_ZThn88_N8S19207C1D0Ev,_ZThn52_N8S19207C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19207C1D1Ev,_ZTv0_n44_N8S19207C1D1Ev)();
extern void ABISELECT(_ZThn120_N8S19207C1D1Ev,_ZThn68_N8S19207C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19207C1D0Ev,_ZTv0_n44_N8S19207C1D0Ev)();
extern void ABISELECT(_ZThn120_N8S19207C1D0Ev,_ZThn68_N8S19207C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19207C1D1Ev,_ZTv0_n32_N8S19207C1D1Ev)();
extern void ABISELECT(_ZThn136_N8S19207C1D1Ev,_ZThn80_N8S19207C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19207C1D0Ev,_ZTv0_n32_N8S19207C1D0Ev)();
extern void ABISELECT(_ZThn136_N8S19207C1D0Ev,_ZThn80_N8S19207C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19207C1D1Ev,_ZTv0_n44_N8S19207C1D1Ev)();
extern void ABISELECT(_ZThn152_N8S19207C1D1Ev,_ZThn88_N8S19207C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19207C1D0Ev,_ZTv0_n44_N8S19207C1D0Ev)();
extern void ABISELECT(_ZThn152_N8S19207C1D0Ev,_ZThn88_N8S19207C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N8S19207C1D1Ev,_ZTv0_n68_N8S19207C1D1Ev)();
extern void ABISELECT(_ZThn168_N8S19207C1D1Ev,_ZThn96_N8S19207C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N8S19207C1D0Ev,_ZTv0_n68_N8S19207C1D0Ev)();
extern void ABISELECT(_ZThn168_N8S19207C1D0Ev,_ZThn96_N8S19207C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n136_N8S19207C1D1Ev,_ZTvn8_n68_N8S19207C1D1Ev)();
extern void ABISELECT(_ZTvn16_n136_N8S19207C1D0Ev,_ZTvn8_n68_N8S19207C1D0Ev)();
static  VTBL_ENTRY vtc_S19207C1[] = {
  ABISELECT(48,28),
  ABISELECT(168,96),
  ABISELECT(152,88),
  0,
  ABISELECT(136,80),
  ABISELECT(120,68),
  ABISELECT(88,52),
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(64,40),
  ABISELECT(32,16),
  ABISELECT(48,28),
  ABISELECT(44,24),
  0,
  ABISELECT(80,48),
  ABISELECT(60,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C1[0]),
  (VTBL_ENTRY)&_ZN8S19207C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19207C1D0Ev,
  ABISELECT(28,16),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19207C1[0]),
  ABISELECT(12,8),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19207C1[0]),
  ABISELECT(-48,-28),
  ABISELECT(32,20),
  ABISELECT(16,12),
  ABISELECT(-16,-12),
  0,
  -4,
  ABISELECT(-48,-28),
  ABISELECT(32,20),
  ABISELECT(12,8),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19207C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19207C1D1Ev,_ZTv0_n44_N8S19207C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19207C1D0Ev,_ZTv0_n44_N8S19207C1D0Ev),
  ABISELECT(-64,-40),
  -4,
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-16),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S19207C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C1D1Ev,_ZTv0_n32_N8S19207C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C1D0Ev,_ZTv0_n32_N8S19207C1D0Ev),
  ABISELECT(-80,-48),
  ABISELECT(-32,-20),
  ABISELECT(72,40),
  ABISELECT(-80,-48),
  ABISELECT(56,32),
  ABISELECT(-48,-32),
  ABISELECT(40,20),
  ABISELECT(8,4),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-20,-12),
  0,
  ABISELECT(-36,-24),
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S19207C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S19207C1D1Ev,_ZTv0_n64_N8S19207C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S19207C1D0Ev,_ZTv0_n64_N8S19207C1D0Ev),
  ABISELECT(-88,-52),
  ABISELECT(-40,-24),
  ABISELECT(64,36),
  ABISELECT(-88,-52),
  ABISELECT(-56,-36),
  ABISELECT(-24,-12),
  ABISELECT(32,16),
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  ABISELECT(-44,-28),
  ABISELECT(-88,-52),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S19207C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S19207C1D1Ev,_ZTv0_n60_N8S19207C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S19207C1D0Ev,_ZTv0_n60_N8S19207C1D0Ev),
  ABISELECT(-44,-24),
  ABISELECT(-24,-12),
  ABISELECT(-60,-36),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  (VTBL_ENTRY)&(_ZTI8S19207C1[0]),
  ABISELECT(-120,-68),
  ABISELECT(16,12),
  ABISELECT(-88,-52),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-60,-32),
  ABISELECT(-40,-20),
  ABISELECT(-76,-44),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI8S19207C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19207C1D1Ev,_ZTv0_n44_N8S19207C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19207C1D0Ev,_ZTv0_n44_N8S19207C1D0Ev),
  ABISELECT(-136,-80),
  ABISELECT(-76,-44),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-92,-56),
  ABISELECT(-136,-80),
  ABISELECT(-136,-80),
  (VTBL_ENTRY)&(_ZTI8S19207C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C1D1Ev,_ZTv0_n32_N8S19207C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C1D0Ev,_ZTv0_n32_N8S19207C1D0Ev),
  ABISELECT(-152,-88),
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-120,-72),
  ABISELECT(-104,-60),
  ABISELECT(-108,-64),
  ABISELECT(-152,-88),
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-152,-88),
  (VTBL_ENTRY)&(_ZTI8S19207C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19207C1D1Ev,_ZTv0_n44_N8S19207C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19207C1D0Ev,_ZTv0_n44_N8S19207C1D0Ev),
  ABISELECT(-168,-96),
  ABISELECT(-120,-68),
  ABISELECT(-16,-8),
  ABISELECT(-168,-96),
  ABISELECT(-32,-16),
  ABISELECT(-48,-28),
  ABISELECT(-80,-44),
  ABISELECT(-104,-56),
  ABISELECT(-88,-48),
  ABISELECT(-136,-80),
  ABISELECT(-108,-60),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-124,-72),
  ABISELECT(-168,-96),
  ABISELECT(-168,-96),
  (VTBL_ENTRY)&(_ZTI8S19207C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S19207C1D1Ev,_ZTv0_n68_N8S19207C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S19207C1D0Ev,_ZTv0_n68_N8S19207C1D0Ev),
  ABISELECT(-124,-68),
  ABISELECT(-184,-104),
  (VTBL_ENTRY)&(_ZTI8S19207C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n136_N8S19207C1D1Ev,_ZTvn8_n68_N8S19207C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n136_N8S19207C1D0Ev,_ZTvn8_n68_N8S19207C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S19207C1[];
extern void _ZN9S19207C14D1Ev();
extern void _ZN9S19207C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C14__8S19207C1[] = {
  ABISELECT(168,96),
  ABISELECT(152,88),
  0,
  ABISELECT(136,80),
  ABISELECT(120,68),
  ABISELECT(88,52),
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(64,40),
  ABISELECT(32,16),
  ABISELECT(48,28),
  ABISELECT(44,24),
  0,
  ABISELECT(80,48),
  ABISELECT(60,36),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C14[0]),
  (VTBL_ENTRY)&_ZN9S19207C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C14D0Ev,
};
extern void _ZN8S19207C8D1Ev();
extern void _ZN8S19207C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19207C89S19207C14__A1__8S19207C1[] = {
  ABISELECT(80,48),
  ABISELECT(64,40),
  ABISELECT(32,16),
  ABISELECT(48,28),
  ABISELECT(44,24),
  0,
  ABISELECT(80,48),
  ABISELECT(60,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C8[0]),
  (VTBL_ENTRY)&_ZN8S19207C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19207C8D0Ev,
};
extern void _ZN8S19207C9D1Ev();
extern void _ZN8S19207C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19207C98S19207C89S19207C14__A1__8S19207C1[] = {
  ABISELECT(80,48),
  ABISELECT(64,40),
  ABISELECT(32,16),
  ABISELECT(48,28),
  ABISELECT(44,24),
  0,
  ABISELECT(80,48),
  ABISELECT(60,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
  (VTBL_ENTRY)&_ZN8S19207C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19207C9D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__8S19207C98S19207C89S19207C14__A1__8S19207C1[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-36,-24),
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C10__8S19207C98S19207C89S19207C14__A1__8S19207C1[] = {
  ABISELECT(12,8),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__8S19207C98S19207C89S19207C14__A1__8S19207C1[] = {
  ABISELECT(12,8),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S19207C9D1Ev,_ZTv0_n32_N8S19207C9D1Ev)();
extern void ABISELECT(_ZThn64_N8S19207C9D1Ev,_ZThn40_N8S19207C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19207C9D0Ev,_ZTv0_n32_N8S19207C9D0Ev)();
extern void ABISELECT(_ZThn64_N8S19207C9D0Ev,_ZThn40_N8S19207C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C11__8S19207C98S19207C89S19207C14__A1__8S19207C1[] = {
  ABISELECT(-64,-40),
  -4,
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-16),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C9D1Ev,_ZTv0_n32_N8S19207C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C9D0Ev,_ZTv0_n32_N8S19207C9D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__8S19207C89S19207C14__A1__8S19207C1[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-36,-24),
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S19207C8[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C10__8S19207C89S19207C14__A1__8S19207C1[] = {
  ABISELECT(12,8),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19207C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__8S19207C89S19207C14__A1__8S19207C1[] = {
  ABISELECT(12,8),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19207C8[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S19207C8D1Ev,_ZTv0_n32_N8S19207C8D1Ev)();
extern void ABISELECT(_ZThn64_N8S19207C8D1Ev,_ZThn40_N8S19207C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19207C8D0Ev,_ZTv0_n32_N8S19207C8D0Ev)();
extern void ABISELECT(_ZThn64_N8S19207C8D0Ev,_ZThn40_N8S19207C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C11__8S19207C89S19207C14__A1__8S19207C1[] = {
  ABISELECT(-64,-40),
  -4,
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-16),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S19207C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C8D1Ev,_ZTv0_n32_N8S19207C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C8D0Ev,_ZTv0_n32_N8S19207C8D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19207C59S19207C14__A3__8S19207C1[] = {
  ABISELECT(28,16),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
extern void ABISELECT(_ZTv0_n128_N9S19207C14D1Ev,_ZTv0_n64_N9S19207C14D1Ev)();
extern void ABISELECT(_ZThn80_N9S19207C14D1Ev,_ZThn48_N9S19207C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N9S19207C14D0Ev,_ZTv0_n64_N9S19207C14D0Ev)();
extern void ABISELECT(_ZThn80_N9S19207C14D0Ev,_ZThn48_N9S19207C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C15__9S19207C14__8S19207C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-32,-20),
  ABISELECT(72,40),
  ABISELECT(-80,-48),
  ABISELECT(56,32),
  ABISELECT(-48,-32),
  ABISELECT(40,20),
  ABISELECT(8,4),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-20,-12),
  0,
  ABISELECT(-36,-24),
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S19207C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N9S19207C14D1Ev,_ZTv0_n64_N9S19207C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N9S19207C14D0Ev,_ZTv0_n64_N9S19207C14D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19207C10__9S19207C14__8S19207C1[] = {
  ABISELECT(12,8),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19207C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__9S19207C14__8S19207C1[] = {
  ABISELECT(12,8),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19207C14[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19207C14D1Ev,_ZTv0_n32_N9S19207C14D1Ev)();
extern void ABISELECT(_ZThn64_N9S19207C14D1Ev,_ZThn40_N9S19207C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C14D0Ev,_ZTv0_n32_N9S19207C14D0Ev)();
extern void ABISELECT(_ZThn64_N9S19207C14D0Ev,_ZThn40_N9S19207C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C11__9S19207C14__8S19207C1[] = {
  ABISELECT(-64,-40),
  -4,
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-16),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S19207C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C14D1Ev,_ZTv0_n32_N9S19207C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C14D0Ev,_ZTv0_n32_N9S19207C14D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19207C5__A__9S19207C14__8S19207C1[] = {
  ABISELECT(28,16),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19207C14[0]),
};
extern void ABISELECT(_ZTv0_n120_N9S19207C14D1Ev,_ZTv0_n60_N9S19207C14D1Ev)();
extern void ABISELECT(_ZThn88_N9S19207C14D1Ev,_ZThn52_N9S19207C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N9S19207C14D0Ev,_ZTv0_n60_N9S19207C14D0Ev)();
extern void ABISELECT(_ZThn88_N9S19207C14D0Ev,_ZThn52_N9S19207C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C16__9S19207C14__8S19207C1[] = {
  ABISELECT(-88,-52),
  ABISELECT(-40,-24),
  ABISELECT(64,36),
  ABISELECT(-88,-52),
  ABISELECT(-56,-36),
  ABISELECT(-24,-12),
  ABISELECT(32,16),
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  ABISELECT(-44,-28),
  ABISELECT(-88,-52),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI9S19207C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19207C14D1Ev,_ZTv0_n60_N9S19207C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19207C14D0Ev,_ZTv0_n60_N9S19207C14D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N9S19207C14D1Ev,_ZTv0_n44_N9S19207C14D1Ev)();
extern void ABISELECT(_ZThn120_N9S19207C14D1Ev,_ZThn68_N9S19207C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19207C14D0Ev,_ZTv0_n44_N9S19207C14D0Ev)();
extern void ABISELECT(_ZThn120_N9S19207C14D0Ev,_ZThn68_N9S19207C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C17__9S19207C14__8S19207C1[] = {
  ABISELECT(-120,-68),
  ABISELECT(16,12),
  ABISELECT(-88,-52),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-60,-32),
  ABISELECT(-40,-20),
  ABISELECT(-76,-44),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI9S19207C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C14D1Ev,_ZTv0_n44_N9S19207C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C14D0Ev,_ZTv0_n44_N9S19207C14D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N9S19207C14D1Ev,_ZTv0_n32_N9S19207C14D1Ev)();
extern void ABISELECT(_ZThn136_N9S19207C14D1Ev,_ZThn80_N9S19207C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C14D0Ev,_ZTv0_n32_N9S19207C14D0Ev)();
extern void ABISELECT(_ZThn136_N9S19207C14D0Ev,_ZThn80_N9S19207C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C13__A1__9S19207C14__8S19207C1[] = {
  ABISELECT(-136,-80),
  ABISELECT(-76,-44),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-92,-56),
  ABISELECT(-136,-80),
  ABISELECT(-136,-80),
  (VTBL_ENTRY)&(_ZTI9S19207C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C14D1Ev,_ZTv0_n32_N9S19207C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C14D0Ev,_ZTv0_n32_N9S19207C14D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N9S19207C14D1Ev,_ZTv0_n44_N9S19207C14D1Ev)();
extern void ABISELECT(_ZThn152_N9S19207C14D1Ev,_ZThn88_N9S19207C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19207C14D0Ev,_ZTv0_n44_N9S19207C14D0Ev)();
extern void ABISELECT(_ZThn152_N9S19207C14D0Ev,_ZThn88_N9S19207C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19207C9__A1__9S19207C14__8S19207C1[] = {
  ABISELECT(-152,-88),
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-120,-72),
  ABISELECT(-104,-60),
  ABISELECT(-108,-64),
  ABISELECT(-152,-88),
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-152,-88),
  (VTBL_ENTRY)&(_ZTI9S19207C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C14D1Ev,_ZTv0_n44_N9S19207C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C14D0Ev,_ZTv0_n44_N9S19207C14D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19207C129S19207C199S19207C16__A1__9S19207C14__8S19207C1[] = {
  ABISELECT(-44,-24),
  ABISELECT(-24,-12),
  ABISELECT(-60,-36),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  (VTBL_ENTRY)&(_ZTI9S19207C14[0]),
};
extern void ABISELECT(_ZTv0_n136_N9S19207C14D1Ev,_ZTv0_n68_N9S19207C14D1Ev)();
extern void ABISELECT(_ZThn168_N9S19207C14D1Ev,_ZThn96_N9S19207C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N9S19207C14D0Ev,_ZTv0_n68_N9S19207C14D0Ev)();
extern void ABISELECT(_ZThn168_N9S19207C14D0Ev,_ZThn96_N9S19207C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C20__9S19207C14__8S19207C1[] = {
  ABISELECT(-168,-96),
  ABISELECT(-120,-68),
  ABISELECT(-16,-8),
  ABISELECT(-168,-96),
  ABISELECT(-32,-16),
  ABISELECT(-48,-28),
  ABISELECT(-80,-44),
  ABISELECT(-104,-56),
  ABISELECT(-88,-48),
  ABISELECT(-136,-80),
  ABISELECT(-108,-60),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-124,-72),
  ABISELECT(-168,-96),
  ABISELECT(-168,-96),
  (VTBL_ENTRY)&(_ZTI9S19207C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N9S19207C14D1Ev,_ZTv0_n68_N9S19207C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N9S19207C14D0Ev,_ZTv0_n68_N9S19207C14D0Ev),
};
extern void ABISELECT(_ZTvn16_n136_N9S19207C14D1Ev,_ZTvn8_n68_N9S19207C14D1Ev)();
extern void ABISELECT(_ZTvn16_n136_N9S19207C14D0Ev,_ZTvn8_n68_N9S19207C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19207C219S19207C20__9S19207C14__8S19207C1[] = {
  ABISELECT(-124,-68),
  ABISELECT(-184,-104),
  (VTBL_ENTRY)&(_ZTI9S19207C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n136_N9S19207C14D1Ev,_ZTvn8_n68_N9S19207C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n136_N9S19207C14D0Ev,_ZTvn8_n68_N9S19207C14D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__8S19207C1[] = {
  ABISELECT(12,8),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C58S19207C2__8S19207C1[] = {
  ABISELECT(12,8),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
extern void _ZN8S19207C7D1Ev();
extern void _ZN8S19207C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19207C7__8S19207C1[] = {
  ABISELECT(32,20),
  ABISELECT(16,12),
  ABISELECT(-16,-12),
  0,
  -4,
  ABISELECT(-48,-28),
  ABISELECT(32,20),
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C7[0]),
  (VTBL_ENTRY)&_ZN8S19207C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19207C7D0Ev,
};
extern void _ZN8S19207C8D1Ev();
extern void _ZN8S19207C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19207C88S19207C7__8S19207C1[] = {
  ABISELECT(32,20),
  ABISELECT(16,12),
  ABISELECT(-16,-12),
  0,
  -4,
  ABISELECT(-48,-28),
  ABISELECT(32,20),
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C8[0]),
  (VTBL_ENTRY)&_ZN8S19207C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19207C8D0Ev,
};
extern void _ZN8S19207C9D1Ev();
extern void _ZN8S19207C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19207C98S19207C88S19207C7__8S19207C1[] = {
  ABISELECT(32,20),
  ABISELECT(16,12),
  ABISELECT(-16,-12),
  0,
  -4,
  ABISELECT(-48,-28),
  ABISELECT(32,20),
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
  (VTBL_ENTRY)&_ZN8S19207C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19207C9D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__8S19207C98S19207C88S19207C7__8S19207C1[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-36,-24),
  ABISELECT(-80,-48),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__8S19207C98S19207C88S19207C7__8S19207C1[] = {
  ABISELECT(12,8),
  ABISELECT(-32,-16),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S19207C9D1Ev,_ZTv0_n32_N8S19207C9D1Ev)();
extern void ABISELECT(_ZThn16_N8S19207C9D1Ev,_ZThn12_N8S19207C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19207C9D0Ev,_ZTv0_n32_N8S19207C9D0Ev)();
extern void ABISELECT(_ZThn16_N8S19207C9D0Ev,_ZThn12_N8S19207C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C11__8S19207C98S19207C88S19207C7__8S19207C1[] = {
  ABISELECT(-16,-12),
  -4,
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-16),
  ABISELECT(-64,-40),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C9D1Ev,_ZTv0_n32_N8S19207C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C9D0Ev,_ZTv0_n32_N8S19207C9D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__8S19207C88S19207C7__8S19207C1[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-36,-24),
  ABISELECT(-80,-48),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19207C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__8S19207C88S19207C7__8S19207C1[] = {
  ABISELECT(12,8),
  ABISELECT(-32,-16),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S19207C8[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S19207C8D1Ev,_ZTv0_n32_N8S19207C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S19207C8D1Ev,_ZThn12_N8S19207C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19207C8D0Ev,_ZTv0_n32_N8S19207C8D0Ev)();
extern void ABISELECT(_ZThn16_N8S19207C8D0Ev,_ZThn12_N8S19207C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C11__8S19207C88S19207C7__8S19207C1[] = {
  ABISELECT(-16,-12),
  -4,
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-16),
  ABISELECT(-64,-40),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19207C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C8D1Ev,_ZTv0_n32_N8S19207C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C8D0Ev,_ZTv0_n32_N8S19207C8D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__8S19207C7__8S19207C1[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-36,-24),
  ABISELECT(-80,-48),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19207C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__8S19207C7__8S19207C1[] = {
  ABISELECT(12,8),
  ABISELECT(-32,-16),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S19207C7[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S19207C7D1Ev,_ZTv0_n32_N8S19207C7D1Ev)();
extern void ABISELECT(_ZThn16_N8S19207C7D1Ev,_ZThn12_N8S19207C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19207C7D0Ev,_ZTv0_n32_N8S19207C7D0Ev)();
extern void ABISELECT(_ZThn16_N8S19207C7D0Ev,_ZThn12_N8S19207C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C11__8S19207C7__8S19207C1[] = {
  ABISELECT(-16,-12),
  -4,
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-16),
  ABISELECT(-64,-40),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19207C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C7D1Ev,_ZTv0_n32_N8S19207C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C7D0Ev,_ZTv0_n32_N8S19207C7D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19207C5__A1__8S19207C1[] = {
  ABISELECT(-36,-24),
  ABISELECT(-80,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C10__8S19207C1[] = {
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C10[0]),
};
extern void _ZN9S19207C11D1Ev();
extern void _ZN9S19207C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C11__8S19207C1[] = {
  -4,
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-16),
  ABISELECT(-64,-40),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C11[0]),
  (VTBL_ENTRY)&_ZN9S19207C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C11D0Ev,
};
extern void _ZN9S19207C13D1Ev();
extern void _ZN9S19207C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C139S19207C11__8S19207C1[] = {
  -4,
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-16),
  ABISELECT(-64,-40),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
  (VTBL_ENTRY)&_ZN9S19207C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19207C59S19207C139S19207C11__A2__8S19207C1[] = {
  ABISELECT(-20,-16),
  ABISELECT(-64,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C139S19207C11__8S19207C1[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-36,-24),
  ABISELECT(-80,-48),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C11__8S19207C1[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-36,-24),
  ABISELECT(-80,-48),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19207C11[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__8S19207C1[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-36,-24),
  ABISELECT(-80,-48),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C12[0]),
};
extern void _ZN9S19207C15D1Ev();
extern void _ZN9S19207C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C15__8S19207C1[] = {
  ABISELECT(-32,-20),
  ABISELECT(72,40),
  ABISELECT(-80,-48),
  ABISELECT(56,32),
  ABISELECT(-48,-32),
  ABISELECT(40,20),
  ABISELECT(8,4),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-20,-12),
  0,
  ABISELECT(-36,-24),
  ABISELECT(-80,-48),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C15[0]),
  (VTBL_ENTRY)&_ZN9S19207C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C15D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N9S19207C15D1Ev,_ZTv0_n32_N9S19207C15D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19207C15D0Ev,_ZTv0_n32_N9S19207C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19207C11__9S19207C15__8S19207C1[] = {
  ABISELECT(16,8),
  -4,
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-16),
  ABISELECT(-64,-40),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S19207C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C15D1Ev,_ZTv0_n32_N9S19207C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C15D0Ev,_ZTv0_n32_N9S19207C15D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N9S19207C15D1Ev,_ZTv0_n60_N9S19207C15D1Ev)();
extern void ABISELECT(_ZThn8_N9S19207C15D1Ev,_ZThn4_N9S19207C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N9S19207C15D0Ev,_ZTv0_n60_N9S19207C15D0Ev)();
extern void ABISELECT(_ZThn8_N9S19207C15D0Ev,_ZThn4_N9S19207C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C16__9S19207C15__8S19207C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-40,-24),
  ABISELECT(64,36),
  ABISELECT(-88,-52),
  ABISELECT(-56,-36),
  ABISELECT(-24,-12),
  ABISELECT(32,16),
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  ABISELECT(-44,-28),
  ABISELECT(-88,-52),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19207C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19207C15D1Ev,_ZTv0_n60_N9S19207C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19207C15D0Ev,_ZTv0_n60_N9S19207C15D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N9S19207C15D1Ev,_ZTv0_n44_N9S19207C15D1Ev)();
extern void ABISELECT(_ZThn40_N9S19207C15D1Ev,_ZThn20_N9S19207C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19207C15D0Ev,_ZTv0_n44_N9S19207C15D0Ev)();
extern void ABISELECT(_ZThn40_N9S19207C15D0Ev,_ZThn20_N9S19207C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C17__9S19207C15__8S19207C1[] = {
  ABISELECT(-40,-20),
  ABISELECT(16,12),
  ABISELECT(-88,-52),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-60,-32),
  ABISELECT(-40,-20),
  ABISELECT(-76,-44),
  ABISELECT(-120,-68),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19207C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C15D1Ev,_ZTv0_n44_N9S19207C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C15D0Ev,_ZTv0_n44_N9S19207C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__9S19207C15__8S19207C1[] = {
  ABISELECT(12,8),
  ABISELECT(-32,-16),
  ABISELECT(48,32),
  (VTBL_ENTRY)&(_ZTI9S19207C15[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19207C15D1Ev,_ZTv0_n32_N9S19207C15D1Ev)();
extern void ABISELECT(_ZThn56_N9S19207C15D1Ev,_ZThn32_N9S19207C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C15D0Ev,_ZTv0_n32_N9S19207C15D0Ev)();
extern void ABISELECT(_ZThn56_N9S19207C15D0Ev,_ZThn32_N9S19207C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C13__A1__9S19207C15__8S19207C1[] = {
  ABISELECT(-56,-32),
  ABISELECT(-76,-44),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-92,-56),
  ABISELECT(-136,-80),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S19207C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C15D1Ev,_ZTv0_n32_N9S19207C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C15D0Ev,_ZTv0_n32_N9S19207C15D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N9S19207C15D1Ev,_ZTv0_n44_N9S19207C15D1Ev)();
extern void ABISELECT(_ZThn72_N9S19207C15D1Ev,_ZThn40_N9S19207C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19207C15D0Ev,_ZTv0_n44_N9S19207C15D0Ev)();
extern void ABISELECT(_ZThn72_N9S19207C15D0Ev,_ZThn40_N9S19207C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19207C9__9S19207C15__8S19207C1[] = {
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-120,-72),
  ABISELECT(-104,-60),
  ABISELECT(-108,-64),
  ABISELECT(-152,-88),
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S19207C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C15D1Ev,_ZTv0_n44_N9S19207C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C15D0Ev,_ZTv0_n44_N9S19207C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19207C10__9S19207C15__8S19207C1[] = {
  ABISELECT(12,8),
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI9S19207C15[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C129S19207C199S19207C16__A1__9S19207C15__8S19207C1[] = {
  ABISELECT(-44,-24),
  ABISELECT(-24,-12),
  ABISELECT(-60,-36),
  ABISELECT(-104,-60),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19207C15[0]),
};
extern void _ZN9S19207C16D1Ev();
extern void _ZN9S19207C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C16__8S19207C1[] = {
  ABISELECT(-40,-24),
  ABISELECT(64,36),
  ABISELECT(-88,-52),
  ABISELECT(-56,-36),
  ABISELECT(-24,-12),
  ABISELECT(32,16),
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  ABISELECT(-44,-28),
  ABISELECT(-88,-52),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
  (VTBL_ENTRY)&_ZN9S19207C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C16D0Ev,
};
extern void _ZN9S19207C19D1Ev();
extern void _ZN9S19207C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C199S19207C16__8S19207C1[] = {
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  ABISELECT(-44,-28),
  ABISELECT(-88,-52),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C19[0]),
  (VTBL_ENTRY)&_ZN9S19207C19D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C19D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19207C29S19207C199S19207C16__A1__8S19207C1[] = {
  ABISELECT(-44,-28),
  ABISELECT(-88,-52),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C58S19207C29S19207C199S19207C16__A5__8S19207C1[] = {
  ABISELECT(-44,-28),
  ABISELECT(-88,-52),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C129S19207C199S19207C16__A1__8S19207C1[] = {
  ABISELECT(-44,-24),
  ABISELECT(-24,-12),
  ABISELECT(-60,-36),
  ABISELECT(-104,-60),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C5__9S19207C129S19207C199S19207C16__A1__8S19207C1[] = {
  ABISELECT(-36,-24),
  ABISELECT(-80,-48),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S19207C12[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19207C19D1Ev,_ZTv0_n32_N9S19207C19D1Ev)();
extern void ABISELECT(_ZThn48_N9S19207C19D1Ev,_ZThn28_N9S19207C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C19D0Ev,_ZTv0_n32_N9S19207C19D0Ev)();
extern void ABISELECT(_ZThn48_N9S19207C19D0Ev,_ZThn28_N9S19207C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C13__9S19207C199S19207C16__8S19207C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(-76,-44),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-92,-56),
  ABISELECT(-136,-80),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19207C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C19D1Ev,_ZTv0_n32_N9S19207C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C19D0Ev,_ZTv0_n32_N9S19207C19D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C199S19207C16__8S19207C1[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-36,-24),
  ABISELECT(-80,-48),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI9S19207C19[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__A__9S19207C199S19207C16__8S19207C1[] = {
  ABISELECT(-44,-24),
  ABISELECT(-24,-12),
  ABISELECT(-60,-36),
  ABISELECT(-104,-60),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19207C19[0]),
};
extern void ABISELECT(_ZTv0_n88_N9S19207C16D1Ev,_ZTv0_n44_N9S19207C16D1Ev)();
extern void ABISELECT(_ZThn32_N9S19207C16D1Ev,_ZThn16_N9S19207C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19207C16D0Ev,_ZTv0_n44_N9S19207C16D0Ev)();
extern void ABISELECT(_ZThn32_N9S19207C16D0Ev,_ZThn16_N9S19207C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C17__9S19207C16__8S19207C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(16,12),
  ABISELECT(-88,-52),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-60,-32),
  ABISELECT(-40,-20),
  ABISELECT(-76,-44),
  ABISELECT(-120,-68),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C16D1Ev,_ZTv0_n44_N9S19207C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C16D0Ev,_ZTv0_n44_N9S19207C16D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N9S19207C16D1Ev,_ZTv0_n32_N9S19207C16D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19207C16D0Ev,_ZTv0_n32_N9S19207C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19207C11__9S19207C16__8S19207C1[] = {
  ABISELECT(24,12),
  -4,
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-16),
  ABISELECT(-64,-40),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C16D1Ev,_ZTv0_n32_N9S19207C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C16D0Ev,_ZTv0_n32_N9S19207C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C16__8S19207C1[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-36,-24),
  ABISELECT(-80,-48),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__9S19207C16__8S19207C1[] = {
  ABISELECT(12,8),
  ABISELECT(-32,-16),
  ABISELECT(56,36),
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19207C16D1Ev,_ZTv0_n32_N9S19207C16D1Ev)();
extern void ABISELECT(_ZThn48_N9S19207C16D1Ev,_ZThn28_N9S19207C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C16D0Ev,_ZTv0_n32_N9S19207C16D0Ev)();
extern void ABISELECT(_ZThn48_N9S19207C16D0Ev,_ZThn28_N9S19207C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C13__A1__9S19207C16__8S19207C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(-76,-44),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-92,-56),
  ABISELECT(-136,-80),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C16D1Ev,_ZTv0_n32_N9S19207C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C16D0Ev,_ZTv0_n32_N9S19207C16D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N9S19207C16D1Ev,_ZTv0_n44_N9S19207C16D1Ev)();
extern void ABISELECT(_ZThn64_N9S19207C16D1Ev,_ZThn36_N9S19207C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19207C16D0Ev,_ZTv0_n44_N9S19207C16D0Ev)();
extern void ABISELECT(_ZThn64_N9S19207C16D0Ev,_ZThn36_N9S19207C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19207C9__9S19207C16__8S19207C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-120,-72),
  ABISELECT(-104,-60),
  ABISELECT(-108,-64),
  ABISELECT(-152,-88),
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C16D1Ev,_ZTv0_n44_N9S19207C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C16D0Ev,_ZTv0_n44_N9S19207C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19207C10__9S19207C16__8S19207C1[] = {
  ABISELECT(12,8),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C129S19207C19__A1__9S19207C16__8S19207C1[] = {
  ABISELECT(-44,-24),
  ABISELECT(-24,-12),
  ABISELECT(-60,-36),
  ABISELECT(-104,-60),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
};
extern void _ZN9S19207C17D1Ev();
extern void _ZN9S19207C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C17__8S19207C1[] = {
  ABISELECT(16,12),
  ABISELECT(-88,-52),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-60,-32),
  ABISELECT(-40,-20),
  ABISELECT(-76,-44),
  ABISELECT(-120,-68),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C17[0]),
  (VTBL_ENTRY)&_ZN9S19207C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C17D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N9S19207C17D1Ev,_ZTv0_n32_N9S19207C17D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19207C17D0Ev,_ZTv0_n32_N9S19207C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19207C11__9S19207C17__8S19207C1[] = {
  ABISELECT(56,28),
  -4,
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-16),
  ABISELECT(-64,-40),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI9S19207C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C17D1Ev,_ZTv0_n32_N9S19207C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C17D0Ev,_ZTv0_n32_N9S19207C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C17__8S19207C1[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-36,-24),
  ABISELECT(-80,-48),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI9S19207C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__9S19207C17__8S19207C1[] = {
  ABISELECT(12,8),
  ABISELECT(-32,-16),
  ABISELECT(88,52),
  (VTBL_ENTRY)&(_ZTI9S19207C17[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19207C17D1Ev,_ZTv0_n32_N9S19207C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S19207C17D1Ev,_ZThn12_N9S19207C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C17D0Ev,_ZTv0_n32_N9S19207C17D0Ev)();
extern void ABISELECT(_ZThn16_N9S19207C17D0Ev,_ZThn12_N9S19207C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C13__A1__9S19207C17__8S19207C1[] = {
  ABISELECT(-16,-12),
  ABISELECT(-76,-44),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-92,-56),
  ABISELECT(-136,-80),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19207C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C17D1Ev,_ZTv0_n32_N9S19207C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C17D0Ev,_ZTv0_n32_N9S19207C17D0Ev),
};
extern void _ZN9S19207C13D1Ev();
extern void _ZN9S19207C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C13__A1__8S19207C1[] = {
  ABISELECT(-76,-44),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-92,-56),
  ABISELECT(-136,-80),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
  (VTBL_ENTRY)&_ZN9S19207C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19207C59S19207C13__A4__8S19207C1[] = {
  ABISELECT(-92,-56),
  ABISELECT(-136,-80),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C13__A1__8S19207C1[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-36,-24),
  ABISELECT(-80,-48),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
};
extern void _ZN8S19207C9D1Ev();
extern void _ZN8S19207C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19207C9__A2__8S19207C1[] = {
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-120,-72),
  ABISELECT(-104,-60),
  ABISELECT(-108,-64),
  ABISELECT(-152,-88),
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
  (VTBL_ENTRY)&_ZN8S19207C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19207C9D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__8S19207C9__A2__8S19207C1[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-36,-24),
  ABISELECT(-80,-48),
  ABISELECT(72,40),
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C10__8S19207C9__A2__8S19207C1[] = {
  ABISELECT(12,8),
  ABISELECT(104,60),
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__8S19207C9__A2__8S19207C1[] = {
  ABISELECT(12,8),
  ABISELECT(-32,-16),
  ABISELECT(120,72),
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S19207C9D1Ev,_ZTv0_n32_N8S19207C9D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S19207C9D0Ev,_ZTv0_n32_N8S19207C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19207C11__8S19207C9__A2__8S19207C1[] = {
  ABISELECT(88,48),
  -4,
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-16),
  ABISELECT(-64,-40),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C9D1Ev,_ZTv0_n32_N8S19207C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C9D0Ev,_ZTv0_n32_N8S19207C9D0Ev),
};
extern void _ZN9S19207C20D1Ev();
extern void _ZN9S19207C20D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C20__8S19207C1[] = {
  ABISELECT(-120,-68),
  ABISELECT(-16,-8),
  ABISELECT(-168,-96),
  ABISELECT(-32,-16),
  ABISELECT(-48,-28),
  ABISELECT(-80,-44),
  ABISELECT(-104,-56),
  ABISELECT(-88,-48),
  ABISELECT(-136,-80),
  ABISELECT(-108,-60),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-124,-72),
  ABISELECT(-168,-96),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C20[0]),
  (VTBL_ENTRY)&_ZN9S19207C20D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C20D0Ev,
};
extern void _ZN9S19207C11D1Ev();
extern void _ZN9S19207C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C119S19207C20__A1__8S19207C1[] = {
  ABISELECT(-108,-60),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-124,-72),
  ABISELECT(-168,-96),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C11[0]),
  (VTBL_ENTRY)&_ZN9S19207C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C11D0Ev,
};
extern void _ZN9S19207C13D1Ev();
extern void _ZN9S19207C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C139S19207C119S19207C20__A2__8S19207C1[] = {
  ABISELECT(-108,-60),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-124,-72),
  ABISELECT(-168,-96),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
  (VTBL_ENTRY)&_ZN9S19207C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19207C59S19207C139S19207C119S19207C20__A6__8S19207C1[] = {
  ABISELECT(-124,-72),
  ABISELECT(-168,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C139S19207C119S19207C20__A2__8S19207C1[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-36,-24),
  ABISELECT(-80,-48),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C119S19207C20__A1__8S19207C1[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-36,-24),
  ABISELECT(-80,-48),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI9S19207C11[0]),
};
extern void _ZN9S19207C21D1Ev();
extern void _ZN9S19207C21D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C219S19207C20__8S19207C1[] = {
  ABISELECT(-124,-68),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C21[0]),
  (VTBL_ENTRY)&_ZN9S19207C21D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C21D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19207C109S19207C219S19207C20__A1__8S19207C1[] = {
  ABISELECT(-124,-68),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C10[0]),
};
extern void ABISELECT(_ZTv0_n128_N9S19207C20D1Ev,_ZTv0_n64_N9S19207C20D1Ev)();
extern void ABISELECT(_ZTv0_n128_N9S19207C20D0Ev,_ZTv0_n64_N9S19207C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19207C15__9S19207C20__8S19207C1[] = {
  ABISELECT(88,48),
  ABISELECT(-32,-20),
  ABISELECT(72,40),
  ABISELECT(-80,-48),
  ABISELECT(56,32),
  ABISELECT(-48,-32),
  ABISELECT(40,20),
  ABISELECT(8,4),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-20,-12),
  0,
  ABISELECT(-36,-24),
  ABISELECT(-80,-48),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI9S19207C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N9S19207C20D1Ev,_ZTv0_n64_N9S19207C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N9S19207C20D0Ev,_ZTv0_n64_N9S19207C20D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__9S19207C20__8S19207C1[] = {
  ABISELECT(12,8),
  ABISELECT(-32,-16),
  ABISELECT(136,80),
  (VTBL_ENTRY)&(_ZTI9S19207C20[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19207C20D1Ev,_ZTv0_n32_N9S19207C20D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19207C20D0Ev,_ZTv0_n32_N9S19207C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19207C11__A1__9S19207C20__8S19207C1[] = {
  ABISELECT(104,56),
  -4,
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-16),
  ABISELECT(-64,-40),
  ABISELECT(104,56),
  (VTBL_ENTRY)&(_ZTI9S19207C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C20D1Ev,_ZTv0_n32_N9S19207C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C20D0Ev,_ZTv0_n32_N9S19207C20D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N9S19207C20D1Ev,_ZTv0_n60_N9S19207C20D1Ev)();
extern void ABISELECT(_ZTv0_n120_N9S19207C20D0Ev,_ZTv0_n60_N9S19207C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19207C16__9S19207C20__8S19207C1[] = {
  ABISELECT(80,44),
  ABISELECT(-40,-24),
  ABISELECT(64,36),
  ABISELECT(-88,-52),
  ABISELECT(-56,-36),
  ABISELECT(-24,-12),
  ABISELECT(32,16),
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  ABISELECT(-44,-28),
  ABISELECT(-88,-52),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI9S19207C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19207C20D1Ev,_ZTv0_n60_N9S19207C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19207C20D0Ev,_ZTv0_n60_N9S19207C20D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N9S19207C20D1Ev,_ZTv0_n44_N9S19207C20D1Ev)();
extern void ABISELECT(_ZTv0_n88_N9S19207C20D0Ev,_ZTv0_n44_N9S19207C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19207C17__9S19207C20__8S19207C1[] = {
  ABISELECT(48,28),
  ABISELECT(16,12),
  ABISELECT(-88,-52),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-60,-32),
  ABISELECT(-40,-20),
  ABISELECT(-76,-44),
  ABISELECT(-120,-68),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S19207C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C20D1Ev,_ZTv0_n44_N9S19207C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C20D0Ev,_ZTv0_n44_N9S19207C20D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N9S19207C20D1Ev,_ZTv0_n32_N9S19207C20D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19207C20D0Ev,_ZTv0_n32_N9S19207C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19207C13__A2__9S19207C20__8S19207C1[] = {
  ABISELECT(32,16),
  ABISELECT(-76,-44),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-92,-56),
  ABISELECT(-136,-80),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S19207C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C20D1Ev,_ZTv0_n32_N9S19207C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C20D0Ev,_ZTv0_n32_N9S19207C20D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N9S19207C20D1Ev,_ZTv0_n44_N9S19207C20D1Ev)();
extern void ABISELECT(_ZTv0_n88_N9S19207C20D0Ev,_ZTv0_n44_N9S19207C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19207C9__9S19207C20__8S19207C1[] = {
  ABISELECT(16,8),
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-120,-72),
  ABISELECT(-104,-60),
  ABISELECT(-108,-64),
  ABISELECT(-152,-88),
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S19207C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C20D1Ev,_ZTv0_n44_N9S19207C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C20D0Ev,_ZTv0_n44_N9S19207C20D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19207C10__9S19207C20__8S19207C1[] = {
  ABISELECT(12,8),
  ABISELECT(120,68),
  (VTBL_ENTRY)&(_ZTI9S19207C20[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C129S19207C199S19207C16__A1__9S19207C20__8S19207C1[] = {
  ABISELECT(-44,-24),
  ABISELECT(-24,-12),
  ABISELECT(-60,-36),
  ABISELECT(-104,-60),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI9S19207C20[0]),
};
extern void ABISELECT(_ZThn16_N9S19207C20D1Ev,_ZThn8_N9S19207C20D1Ev)();
extern void ABISELECT(_ZThn16_N9S19207C20D0Ev,_ZThn8_N9S19207C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19207C21__9S19207C20__8S19207C1[] = {
  ABISELECT(-124,-68),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19207C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19207C20D1Ev,_ZThn8_N9S19207C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19207C20D0Ev,_ZThn8_N9S19207C20D0Ev),
};
static  VTT_ENTRY vtt_S19207C1[] = {
  {&(_ZTV8S19207C1[18]),  18,152},
  {&(_tg__ZTV9S19207C14__8S19207C1[17]),  17,19},
  {&(_tg__ZTV8S19207C89S19207C14__A1__8S19207C1[10]),  10,12},
  {&(_tg__ZTV8S19207C98S19207C89S19207C14__A1__8S19207C1[10]),  10,12},
  {&(_tg__ZTV9S19207C12__8S19207C98S19207C89S19207C14__A1__8S19207C1[6]),  6,6},
  {&(_tg__ZTV9S19207C10__8S19207C98S19207C89S19207C14__A1__8S19207C1[3]),  3,3},
  {&(_tg__ZTV8S19207C2__8S19207C98S19207C89S19207C14__A1__8S19207C1[4]),  4,4},
  {&(_tg__ZTV9S19207C11__8S19207C98S19207C89S19207C14__A1__8S19207C1[8]),  8,10},
  {&(_tg__ZTV9S19207C12__8S19207C98S19207C89S19207C14__A1__8S19207C1[6]),  6,6},
  {&(_tg__ZTV9S19207C12__8S19207C89S19207C14__A1__8S19207C1[6]),  6,6},
  {&(_tg__ZTV9S19207C10__8S19207C89S19207C14__A1__8S19207C1[3]),  3,3},
  {&(_tg__ZTV8S19207C2__8S19207C89S19207C14__A1__8S19207C1[4]),  4,4},
  {&(_tg__ZTV9S19207C11__8S19207C89S19207C14__A1__8S19207C1[8]),  8,10},
  {&(_tg__ZTV9S19207C12__8S19207C89S19207C14__A1__8S19207C1[6]),  6,6},
  {&(_tg__ZTV8S19207C59S19207C14__A3__8S19207C1[4]),  4,4},
  {&(_tg__ZTV9S19207C15__9S19207C14__8S19207C1[16]),  16,18},
  {&(_tg__ZTV9S19207C10__9S19207C14__8S19207C1[3]),  3,3},
  {&(_tg__ZTV8S19207C2__9S19207C14__8S19207C1[4]),  4,4},
  {&(_tg__ZTV9S19207C11__9S19207C14__8S19207C1[8]),  8,10},
  {&(_tg__ZTV9S19207C15__9S19207C14__8S19207C1[16]),  16,18},
  {&(_tg__ZTV8S19207C5__A__9S19207C14__8S19207C1[4]),  4,4},
  {&(_tg__ZTV9S19207C15__9S19207C14__8S19207C1[16]),  16,18},
  {&(_tg__ZTV9S19207C16__9S19207C14__8S19207C1[15]),  15,17},
  {&(_tg__ZTV9S19207C17__9S19207C14__8S19207C1[11]),  11,13},
  {&(_tg__ZTV9S19207C13__A1__9S19207C14__8S19207C1[8]),  8,10},
  {&(_tg__ZTV8S19207C9__A1__9S19207C14__8S19207C1[11]),  11,13},
  {&(_tg__ZTV9S19207C129S19207C199S19207C16__A1__9S19207C14__8S19207C1[6]),  6,6},
  {&(_tg__ZTV9S19207C20__9S19207C14__8S19207C1[17]),  17,19},
  {&(_tg__ZTV9S19207C219S19207C20__9S19207C14__8S19207C1[3]),  3,5},
  {&(_ZTV8S19207C1[28]),  28,152},
  {&(_ZTV8S19207C1[39]),  39,152},
  {&(_ZTV8S19207C1[67]),  67,152},
  {&(_ZTV8S19207C1[39]),  39,152},
  {&(_ZTV8S19207C1[49]),  49,152},
  {&(_ZTV8S19207C1[67]),  67,152},
  {&(_ZTV8S19207C1[24]),  24,152},
  {&(_ZTV8S19207C1[67]),  67,152},
  {&(_ZTV8S19207C1[84]),  84,152},
  {&(_ZTV8S19207C1[103]),  103,152},
  {&(_ZTV8S19207C1[113]),  113,152},
  {&(_ZTV8S19207C1[126]),  126,152},
  {&(_ZTV8S19207C1[92]),  92,152},
  {&(_ZTV8S19207C1[145]),  145,152},
  {&(_ZTV8S19207C1[150]),  150,152},
  {&(_tg__ZTV8S19207C2__8S19207C1[4]),  4,4},
  {&(_tg__ZTV8S19207C58S19207C2__8S19207C1[4]),  4,4},
  {&(_tg__ZTV8S19207C7__8S19207C1[10]),  10,12},
  {&(_tg__ZTV8S19207C88S19207C7__8S19207C1[10]),  10,12},
  {&(_tg__ZTV8S19207C98S19207C88S19207C7__8S19207C1[10]),  10,12},
  {&(_tg__ZTV9S19207C12__8S19207C98S19207C88S19207C7__8S19207C1[6]),  6,6},
  {&(_tg__ZTV8S19207C98S19207C88S19207C7__8S19207C1[10]),  10,12},
  {&(_tg__ZTV8S19207C2__8S19207C98S19207C88S19207C7__8S19207C1[4]),  4,4},
  {&(_tg__ZTV9S19207C11__8S19207C98S19207C88S19207C7__8S19207C1[8]),  8,10},
  {&(_tg__ZTV9S19207C12__8S19207C98S19207C88S19207C7__8S19207C1[6]),  6,6},
  {&(_tg__ZTV9S19207C12__8S19207C88S19207C7__8S19207C1[6]),  6,6},
  {&(_tg__ZTV8S19207C88S19207C7__8S19207C1[10]),  10,12},
  {&(_tg__ZTV8S19207C2__8S19207C88S19207C7__8S19207C1[4]),  4,4},
  {&(_tg__ZTV9S19207C11__8S19207C88S19207C7__8S19207C1[8]),  8,10},
  {&(_tg__ZTV9S19207C12__8S19207C88S19207C7__8S19207C1[6]),  6,6},
  {&(_tg__ZTV9S19207C12__8S19207C7__8S19207C1[6]),  6,6},
  {&(_tg__ZTV8S19207C7__8S19207C1[10]),  10,12},
  {&(_tg__ZTV8S19207C2__8S19207C7__8S19207C1[4]),  4,4},
  {&(_tg__ZTV9S19207C11__8S19207C7__8S19207C1[8]),  8,10},
  {&(_tg__ZTV9S19207C12__8S19207C7__8S19207C1[6]),  6,6},
  {&(_tg__ZTV8S19207C5__A1__8S19207C1[4]),  4,4},
  {&(_tg__ZTV9S19207C10__8S19207C1[3]),  3,3},
  {&(_tg__ZTV9S19207C11__8S19207C1[7]),  7,9},
  {&(_tg__ZTV9S19207C139S19207C11__8S19207C1[7]),  7,9},
  {&(_tg__ZTV8S19207C59S19207C139S19207C11__A2__8S19207C1[4]),  4,4},
  {&(_tg__ZTV9S19207C12__9S19207C139S19207C11__8S19207C1[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C139S19207C11__8S19207C1[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C11__8S19207C1[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C11__8S19207C1[6]),  6,6},
  {&(_tg__ZTV9S19207C12__8S19207C1[6]),  6,6},
  {&(_tg__ZTV9S19207C12__8S19207C1[6]),  6,6},
  {&(_tg__ZTV9S19207C15__8S19207C1[15]),  15,17},
  {&(_tg__ZTV9S19207C11__9S19207C15__8S19207C1[8]),  8,10},
  {&(_tg__ZTV9S19207C15__8S19207C1[15]),  15,17},
  {&(_tg__ZTV9S19207C15__8S19207C1[15]),  15,17},
  {&(_tg__ZTV9S19207C16__9S19207C15__8S19207C1[15]),  15,17},
  {&(_tg__ZTV9S19207C17__9S19207C15__8S19207C1[11]),  11,13},
  {&(_tg__ZTV8S19207C2__9S19207C15__8S19207C1[4]),  4,4},
  {&(_tg__ZTV9S19207C13__A1__9S19207C15__8S19207C1[8]),  8,10},
  {&(_tg__ZTV8S19207C9__9S19207C15__8S19207C1[11]),  11,13},
  {&(_tg__ZTV9S19207C10__9S19207C15__8S19207C1[3]),  3,3},
  {&(_tg__ZTV9S19207C129S19207C199S19207C16__A1__9S19207C15__8S19207C1[6]),  6,6},
  {&(_tg__ZTV9S19207C16__8S19207C1[14]),  14,16},
  {&(_tg__ZTV9S19207C199S19207C16__8S19207C1[8]),  8,10},
  {&(_tg__ZTV8S19207C29S19207C199S19207C16__A1__8S19207C1[4]),  4,4},
  {&(_tg__ZTV8S19207C58S19207C29S19207C199S19207C16__A5__8S19207C1[4]),  4,4},
  {&(_tg__ZTV9S19207C129S19207C199S19207C16__A1__8S19207C1[6]),  6,6},
  {&(_tg__ZTV8S19207C5__9S19207C129S19207C199S19207C16__A1__8S19207C1[4]),  4,4},
  {&(_tg__ZTV9S19207C13__9S19207C199S19207C16__8S19207C1[8]),  8,10},
  {&(_tg__ZTV9S19207C12__9S19207C199S19207C16__8S19207C1[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C199S19207C16__8S19207C1[6]),  6,6},
  {&(_tg__ZTV9S19207C12__A__9S19207C199S19207C16__8S19207C1[6]),  6,6},
  {&(_tg__ZTV9S19207C17__9S19207C16__8S19207C1[11]),  11,13},
  {&(_tg__ZTV9S19207C11__9S19207C16__8S19207C1[8]),  8,10},
  {&(_tg__ZTV9S19207C12__9S19207C16__8S19207C1[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C16__8S19207C1[6]),  6,6},
  {&(_tg__ZTV8S19207C2__9S19207C16__8S19207C1[4]),  4,4},
  {&(_tg__ZTV9S19207C13__A1__9S19207C16__8S19207C1[8]),  8,10},
  {&(_tg__ZTV8S19207C9__9S19207C16__8S19207C1[11]),  11,13},
  {&(_tg__ZTV9S19207C10__9S19207C16__8S19207C1[3]),  3,3},
  {&(_tg__ZTV9S19207C129S19207C19__A1__9S19207C16__8S19207C1[6]),  6,6},
  {&(_tg__ZTV9S19207C17__8S19207C1[10]),  10,12},
  {&(_tg__ZTV9S19207C11__9S19207C17__8S19207C1[8]),  8,10},
  {&(_tg__ZTV9S19207C12__9S19207C17__8S19207C1[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C17__8S19207C1[6]),  6,6},
  {&(_tg__ZTV8S19207C2__9S19207C17__8S19207C1[4]),  4,4},
  {&(_tg__ZTV9S19207C13__A1__9S19207C17__8S19207C1[8]),  8,10},
  {&(_tg__ZTV9S19207C13__A1__8S19207C1[7]),  7,9},
  {&(_tg__ZTV8S19207C59S19207C13__A4__8S19207C1[4]),  4,4},
  {&(_tg__ZTV9S19207C12__9S19207C13__A1__8S19207C1[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C13__A1__8S19207C1[6]),  6,6},
  {&(_tg__ZTV8S19207C9__A2__8S19207C1[10]),  10,12},
  {&(_tg__ZTV9S19207C12__8S19207C9__A2__8S19207C1[6]),  6,6},
  {&(_tg__ZTV9S19207C10__8S19207C9__A2__8S19207C1[3]),  3,3},
  {&(_tg__ZTV8S19207C2__8S19207C9__A2__8S19207C1[4]),  4,4},
  {&(_tg__ZTV9S19207C11__8S19207C9__A2__8S19207C1[8]),  8,10},
  {&(_tg__ZTV9S19207C12__8S19207C9__A2__8S19207C1[6]),  6,6},
  {&(_tg__ZTV9S19207C20__8S19207C1[16]),  16,18},
  {&(_tg__ZTV9S19207C119S19207C20__A1__8S19207C1[7]),  7,9},
  {&(_tg__ZTV9S19207C139S19207C119S19207C20__A2__8S19207C1[7]),  7,9},
  {&(_tg__ZTV8S19207C59S19207C139S19207C119S19207C20__A6__8S19207C1[4]),  4,4},
  {&(_tg__ZTV9S19207C12__9S19207C139S19207C119S19207C20__A2__8S19207C1[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C139S19207C119S19207C20__A2__8S19207C1[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C119S19207C20__A1__8S19207C1[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C119S19207C20__A1__8S19207C1[6]),  6,6},
  {&(_tg__ZTV9S19207C219S19207C20__8S19207C1[3]),  3,5},
  {&(_tg__ZTV9S19207C109S19207C219S19207C20__A1__8S19207C1[3]),  3,3},
  {&(_tg__ZTV9S19207C15__9S19207C20__8S19207C1[16]),  16,18},
  {&(_tg__ZTV9S19207C15__9S19207C20__8S19207C1[16]),  16,18},
  {&(_tg__ZTV8S19207C2__9S19207C20__8S19207C1[4]),  4,4},
  {&(_tg__ZTV9S19207C15__9S19207C20__8S19207C1[16]),  16,18},
  {&(_tg__ZTV9S19207C11__A1__9S19207C20__8S19207C1[8]),  8,10},
  {&(_tg__ZTV9S19207C16__9S19207C20__8S19207C1[15]),  15,17},
  {&(_tg__ZTV9S19207C17__9S19207C20__8S19207C1[11]),  11,13},
  {&(_tg__ZTV9S19207C13__A2__9S19207C20__8S19207C1[8]),  8,10},
  {&(_tg__ZTV8S19207C9__9S19207C20__8S19207C1[11]),  11,13},
  {&(_tg__ZTV9S19207C10__9S19207C20__8S19207C1[3]),  3,3},
  {&(_tg__ZTV9S19207C129S19207C199S19207C16__A1__9S19207C20__8S19207C1[6]),  6,6},
  {&(_tg__ZTV9S19207C21__9S19207C20__8S19207C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19207C1[];
extern  VTBL_ENTRY _ZTV8S19207C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C1[];
static VTBL_ENTRY alt_thunk_names117[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C17D0Ev,_ZTv0_n32_N9S19207C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19207C17D0Ev,_ZThn12_N9S19207C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C17D1Ev,_ZTv0_n32_N9S19207C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19207C17D1Ev,_ZThn12_N9S19207C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C16D0Ev,_ZTv0_n32_N9S19207C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19207C16D0Ev,_ZThn28_N9S19207C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C16D1Ev,_ZTv0_n32_N9S19207C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19207C16D1Ev,_ZThn28_N9S19207C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19207C16D0Ev,_ZTv0_n44_N9S19207C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19207C16D0Ev,_ZThn36_N9S19207C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19207C16D0Ev,_ZThn16_N9S19207C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19207C16D1Ev,_ZTv0_n44_N9S19207C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19207C16D1Ev,_ZThn36_N9S19207C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19207C16D1Ev,_ZThn16_N9S19207C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C19D0Ev,_ZTv0_n32_N9S19207C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19207C19D0Ev,_ZThn28_N9S19207C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C19D1Ev,_ZTv0_n32_N9S19207C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19207C19D1Ev,_ZThn28_N9S19207C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C15D0Ev,_ZTv0_n32_N9S19207C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19207C15D0Ev,_ZThn32_N9S19207C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C15D1Ev,_ZTv0_n32_N9S19207C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19207C15D1Ev,_ZThn32_N9S19207C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19207C15D0Ev,_ZTv0_n44_N9S19207C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19207C15D0Ev,_ZThn40_N9S19207C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19207C15D0Ev,_ZThn20_N9S19207C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19207C15D1Ev,_ZTv0_n44_N9S19207C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19207C15D1Ev,_ZThn40_N9S19207C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19207C15D1Ev,_ZThn20_N9S19207C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19207C15D0Ev,_ZTv0_n60_N9S19207C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19207C15D0Ev,_ZThn4_N9S19207C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19207C15D1Ev,_ZTv0_n60_N9S19207C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19207C15D1Ev,_ZThn4_N9S19207C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19207C7D0Ev,_ZTv0_n32_N8S19207C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19207C7D0Ev,_ZThn12_N8S19207C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19207C7D1Ev,_ZTv0_n32_N8S19207C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19207C7D1Ev,_ZThn12_N8S19207C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N9S19207C14D0Ev,_ZTv0_n68_N9S19207C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S19207C14D0Ev,_ZThn96_N9S19207C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N9S19207C14D1Ev,_ZTv0_n68_N9S19207C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S19207C14D1Ev,_ZThn96_N9S19207C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19207C14D0Ev,_ZTv0_n44_N9S19207C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S19207C14D0Ev,_ZThn88_N9S19207C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S19207C14D0Ev,_ZThn68_N9S19207C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19207C14D1Ev,_ZTv0_n44_N9S19207C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S19207C14D1Ev,_ZThn88_N9S19207C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S19207C14D1Ev,_ZThn68_N9S19207C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19207C14D0Ev,_ZTv0_n60_N9S19207C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19207C14D0Ev,_ZThn52_N9S19207C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19207C14D1Ev,_ZTv0_n60_N9S19207C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19207C14D1Ev,_ZThn52_N9S19207C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C14D0Ev,_ZTv0_n32_N9S19207C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19207C14D0Ev,_ZThn80_N9S19207C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19207C14D0Ev,_ZThn40_N9S19207C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C14D1Ev,_ZTv0_n32_N9S19207C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19207C14D1Ev,_ZThn80_N9S19207C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19207C14D1Ev,_ZThn40_N9S19207C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N9S19207C14D0Ev,_ZTv0_n64_N9S19207C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19207C14D0Ev,_ZThn48_N9S19207C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N9S19207C14D1Ev,_ZTv0_n64_N9S19207C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19207C14D1Ev,_ZThn48_N9S19207C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19207C8D0Ev,_ZTv0_n32_N8S19207C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19207C8D0Ev,_ZThn12_N8S19207C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19207C8D0Ev,_ZThn40_N8S19207C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19207C8D1Ev,_ZTv0_n32_N8S19207C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19207C8D1Ev,_ZThn12_N8S19207C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19207C8D1Ev,_ZThn40_N8S19207C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19207C9D0Ev,_ZTv0_n32_N8S19207C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19207C9D0Ev,_ZThn12_N8S19207C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19207C9D0Ev,_ZThn40_N8S19207C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19207C9D1Ev,_ZTv0_n32_N8S19207C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19207C9D1Ev,_ZThn12_N8S19207C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19207C9D1Ev,_ZThn40_N8S19207C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N8S19207C1D0Ev,_ZTv0_n68_N8S19207C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S19207C1D0Ev,_ZThn96_N8S19207C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N8S19207C1D1Ev,_ZTv0_n68_N8S19207C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S19207C1D1Ev,_ZThn96_N8S19207C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S19207C1D0Ev,_ZTv0_n60_N8S19207C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S19207C1D0Ev,_ZThn52_N8S19207C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S19207C1D1Ev,_ZTv0_n60_N8S19207C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S19207C1D1Ev,_ZThn52_N8S19207C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S19207C1D0Ev,_ZTv0_n64_N8S19207C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19207C1D0Ev,_ZThn48_N8S19207C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S19207C1D1Ev,_ZTv0_n64_N8S19207C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19207C1D1Ev,_ZThn48_N8S19207C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19207C1D0Ev,_ZTv0_n32_N8S19207C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19207C1D0Ev,_ZThn80_N8S19207C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19207C1D0Ev,_ZThn40_N8S19207C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19207C1D1Ev,_ZTv0_n32_N8S19207C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19207C1D1Ev,_ZThn80_N8S19207C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19207C1D1Ev,_ZThn40_N8S19207C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19207C1D0Ev,_ZTv0_n44_N8S19207C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S19207C1D0Ev,_ZThn88_N8S19207C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S19207C1D0Ev,_ZThn68_N8S19207C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19207C1D0Ev,_ZThn28_N8S19207C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19207C1D1Ev,_ZTv0_n44_N8S19207C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S19207C1D1Ev,_ZThn88_N8S19207C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S19207C1D1Ev,_ZThn68_N8S19207C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19207C1D1Ev,_ZThn28_N8S19207C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19207C1 = {  "S19207C1", // class name
  bases_S19207C1, 61,
  &(vtc_S19207C1[0]), // expected_vtbl_contents
  &(vtt_S19207C1[0]), // expected_vtt_contents
  ABISELECT(200,112), // object size
  NSPAIRA(_ZTI8S19207C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19207C1),152, //virtual function table var
  18, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19207C1),143, //virtual table table var
  31, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names117,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1627C5  : virtual S7856C24 , S7856C15 , virtual S7856C12 {
  ~S1627C5(); // tgen
  S1627C5(); // tgen
};
//SIG(-1 S1627C5) C1{ VBC2{ m} BC3{ m} VBC4{ m}}


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

static void Test_S1627C5()
{
  extern Class_Descriptor cd_S1627C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S1627C5, buf);
    S1627C5 *dp, &lv = *(dp=new (buf) S1627C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S1627C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1627C5)");
    check_base_class_offset(lv, (S7856C24*), 0, "S1627C5");
    check_base_class_offset(lv, (S7856C15*), 0, "S1627C5");
    check_base_class_offset(lv, (S7856C12*), 0, "S1627C5");
    test_class_info(&lv, &cd_S1627C5);
    dp->~S1627C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1627C5(Test_S1627C5, "S1627C5", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S1627C5C1Ev();
extern void _ZN7S1627C5D1Ev();
Name_Map name_map_S1627C5[] = {
  NSPAIR(_ZN7S1627C5C1Ev),
  NSPAIR(_ZN7S1627C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
static Base_Class bases_S1627C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S1627C5[];
static  VTBL_ENTRY vtc_S1627C5[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
extern VTBL_ENTRY _ZTV7S1627C5[];
static  VTT_ENTRY vtt_S1627C5[] = {
  {&(_ZTV7S1627C5[4]),  4,4},
};
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
Class_Descriptor cd_S1627C5 = {  "S1627C5", // class name
  bases_S1627C5, 3,
  &(vtc_S1627C5[0]), // expected_vtbl_contents
  &(vtt_S1627C5[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S1627C5),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S1627C5),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1627C5),1, //virtual table table var
  0, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1627C9  : virtual S7856C15 {
  ~S1627C9(); // tgen
  S1627C9(); // tgen
};
//SIG(-1 S1627C9) C1{ VBC2{ m}}


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

static void Test_S1627C9()
{
  extern Class_Descriptor cd_S1627C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S1627C9, buf);
    S1627C9 *dp, &lv = *(dp=new (buf) S1627C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S1627C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1627C9)");
    check_base_class_offset(lv, (S7856C15*), 0, "S1627C9");
    test_class_info(&lv, &cd_S1627C9);
    dp->~S1627C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1627C9(Test_S1627C9, "S1627C9", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S1627C9C1Ev();
extern void _ZN7S1627C9D1Ev();
Name_Map name_map_S1627C9[] = {
  NSPAIR(_ZN7S1627C9C1Ev),
  NSPAIR(_ZN7S1627C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
static Base_Class bases_S1627C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S1627C9[];
static  VTBL_ENTRY vtc_S1627C9[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C9[0]),
};
extern VTBL_ENTRY _ZTV7S1627C9[];
static  VTT_ENTRY vtt_S1627C9[] = {
  {&(_ZTV7S1627C9[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S1627C9[];
extern  VTBL_ENTRY _ZTV7S1627C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C9[];
Class_Descriptor cd_S1627C9 = {  "S1627C9", // class name
  bases_S1627C9, 1,
  &(vtc_S1627C9[0]), // expected_vtbl_contents
  &(vtt_S1627C9[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S1627C9),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S1627C9),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1627C9),1, //virtual table table var
  0, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1627C10  : S7856C12 , S7856C15 , S1627C5 {
  int s1627c10f0;
  ~S1627C10(); // tgen
  S1627C10(); // tgen
};
//SIG(-1 S1627C10) C1{ BC2{ m} BC3{ m} BC4{ VBC5{ m} BC3 VBC2} Fi}


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

static void Test_S1627C10()
{
  extern Class_Descriptor cd_S1627C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S1627C10, buf);
    S1627C10 *dp, &lv = *(dp=new (buf) S1627C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S1627C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1627C10)");
    /*is_ambiguous_... S1627C10::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), 0, "S1627C10");
    /*is_ambiguous_... S1627C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(8,4), "S1627C10");
    check_base_class_offset(lv, (S7856C24*)(S1627C5*), 0, "S1627C10");
    check_base_class_offset(lv, (S7856C15*)(S1627C5*), 0, "S1627C10");
    check_base_class_offset(lv, (S7856C12*)(S1627C5*), ABISELECT(12,8), "S1627C10");
    check_base_class_offset(lv, (S1627C5*), 0, "S1627C10");
    check_field_offset(lv, s1627c10f0, ABISELECT(8,4), "S1627C10.s1627c10f0");
    test_class_info(&lv, &cd_S1627C10);
    dp->~S1627C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1627C10(Test_S1627C10, "S1627C10", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S1627C10C1Ev();
extern void _ZN8S1627C10D1Ev();
Name_Map name_map_S1627C10[] = {
  NSPAIR(_ZN8S1627C10C1Ev),
  NSPAIR(_ZN8S1627C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
static Base_Class bases_S1627C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S1627C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S1627C10[];
static  VTBL_ENTRY vtc_S1627C10[] = {
  ABISELECT(12,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C10[0]),
};
extern VTBL_ENTRY _ZTV8S1627C10[];
static  VTBL_ENTRY _tg__ZTV7S1627C5__8S1627C10[] = {
  ABISELECT(12,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
static  VTT_ENTRY vtt_S1627C10[] = {
  {&(_ZTV8S1627C10[4]),  4,4},
  {&(_tg__ZTV7S1627C5__8S1627C10[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S1627C10[];
extern  VTBL_ENTRY _ZTV8S1627C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C10[];
Class_Descriptor cd_S1627C10 = {  "S1627C10", // class name
  bases_S1627C10, 6,
  &(vtc_S1627C10[0]), // expected_vtbl_contents
  &(vtt_S1627C10[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S1627C10),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S1627C10),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1627C10),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1627C12  : S7856C24 , virtual S1627C5 , virtual S7856C15 {
  ~S1627C12(); // tgen
  S1627C12(); // tgen
};
//SIG(-1 S1627C12) C1{ BC2{ m} VBC3{ VBC2 BC4{ m} VBC5{ m}} VBC4}


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

static void Test_S1627C12()
{
  extern Class_Descriptor cd_S1627C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S1627C12, buf);
    S1627C12 *dp, &lv = *(dp=new (buf) S1627C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S1627C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1627C12)");
    /*is_ambiguous_... S1627C12::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), 0, "S1627C12");
    check_base_class_offset(lv, (S7856C24*)(S1627C5*), ABISELECT(8,4), "S1627C12");
    check_base_class_offset(lv, (S7856C15*)(S1627C5*), 0, "S1627C12");
    check_base_class_offset(lv, (S7856C12*)(S1627C5*), 0, "S1627C12");
    check_base_class_offset(lv, (S1627C5*), 0, "S1627C12");
    /*is_ambiguous_... S1627C12::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(8,4), "S1627C12");
    test_class_info(&lv, &cd_S1627C12);
    dp->~S1627C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1627C12(Test_S1627C12, "S1627C12", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S1627C12C1Ev();
extern void _ZN8S1627C12D1Ev();
Name_Map name_map_S1627C12[] = {
  NSPAIR(_ZN8S1627C12C1Ev),
  NSPAIR(_ZN8S1627C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
static Base_Class bases_S1627C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S1627C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S1627C12[];
static  VTBL_ENTRY vtc_S1627C12[] = {
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C12[0]),
};
extern VTBL_ENTRY _ZTV8S1627C12[];
static  VTBL_ENTRY _tg__ZTV7S1627C5__8S1627C12[] = {
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
static  VTT_ENTRY vtt_S1627C12[] = {
  {&(_ZTV8S1627C12[6]),  6,6},
  {&(_ZTV8S1627C12[6]),  6,6},
  {&(_tg__ZTV7S1627C5__8S1627C12[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S1627C12[];
extern  VTBL_ENTRY _ZTV8S1627C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C12[];
Class_Descriptor cd_S1627C12 = {  "S1627C12", // class name
  bases_S1627C12, 6,
  &(vtc_S1627C12[0]), // expected_vtbl_contents
  &(vtt_S1627C12[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S1627C12),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S1627C12),6, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1627C12),3, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1627C13  : S7856C15 , virtual S7856C24 , virtual S7856C12 , S1627C5 , virtual S1627C12 {
  virtual  ~S1627C13(); // _ZN8S1627C13D2Ev
  S1627C13(); // tgen
};
//SIG(-1 S1627C13) C1{ BC2{ m} VBC3{ m} VBC4{ m} BC5{ VBC3 BC2 VBC4} VBC6{ BC3 VBC5 VBC2} vd}


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

static void Test_S1627C13()
{
  extern Class_Descriptor cd_S1627C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S1627C13, buf);
    S1627C13 *dp, &lv = *(dp=new (buf) S1627C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S1627C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1627C13)");
    /*is_ambiguous_... S1627C13::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(8,4), "S1627C13");
    /*is_ambiguous_... S1627C13::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), 0, "S1627C13");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C5*), 0, "S1627C13");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C5*), 0, "S1627C13");
    check_base_class_offset(lv, (S7856C12*), 0, "S1627C13");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C5*), 0, "S1627C13");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C5*), 0, "S1627C13");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C5*), 0, "S1627C13");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S1627C5*), 0, "S1627C13");
    /*is_ambiguous_... S1627C12::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C12*), ABISELECT(16,8), "S1627C13");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C5*), ABISELECT(16,8), "S1627C13");
    check_base_class_offset(lv, (S1627C5*)(S1627C12*), ABISELECT(16,8), "S1627C13");
    /*is_ambiguous_... S1627C12::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C12*), ABISELECT(24,12), "S1627C13");
    check_base_class_offset(lv, (S1627C12*), ABISELECT(16,8), "S1627C13");
    test_class_info(&lv, &cd_S1627C13);
    dp->~S1627C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1627C13(Test_S1627C13, "S1627C13", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S1627C13C1Ev();
extern void _ZN8S1627C13D2Ev();
Name_Map name_map_S1627C13[] = {
  NSPAIR(_ZN8S1627C13C1Ev),
  NSPAIR(_ZN8S1627C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C12;
extern VTBL_ENTRY _ZTI8S1627C12[];
extern  VTBL_ENTRY _ZTV8S1627C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C12[];
static Base_Class bases_S1627C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S1627C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S1627C5,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S1627C12,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S1627C13[];
extern void _ZN8S1627C13D1Ev();
extern void _ZN8S1627C13D0Ev();
static  VTBL_ENTRY vtc_S1627C13[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C13[0]),
  (VTBL_ENTRY)&_ZN8S1627C13D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C13D0Ev,
  ABISELECT(8,4),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1627C13[0]),
};
extern VTBL_ENTRY _ZTV8S1627C13[];
static  VTBL_ENTRY _tg__ZTV7S1627C5__A__8S1627C13[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C13[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C5__A1__8S1627C13[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
static  VTT_ENTRY vtt_S1627C13[] = {
  {&(_ZTV8S1627C13[7]),  7,15},
  {&(_tg__ZTV7S1627C5__A__8S1627C13[4]),  4,4},
  {&(_ZTV8S1627C13[15]),  15,15},
  {&(_ZTV8S1627C13[15]),  15,15},
  {&(_tg__ZTV8S1627C12__8S1627C13[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C13[6]),  6,6},
  {&(_tg__ZTV7S1627C5__A1__8S1627C13[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S1627C13[];
extern  VTBL_ENTRY _ZTV8S1627C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C13[];
Class_Descriptor cd_S1627C13 = {  "S1627C13", // class name
  bases_S1627C13, 10,
  &(vtc_S1627C13[0]), // expected_vtbl_contents
  &(vtt_S1627C13[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S1627C13),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S1627C13),15, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1627C13),7, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1627C11  : virtual S7856C24 , virtual S7856C15 , virtual S1627C12 , S7856C12 , S1627C13 {
  virtual  ~S1627C11(); // _ZN8S1627C11D2Ev
  S1627C11(); // tgen
};
//SIG(-1 S1627C11) C1{ VBC2{ m} VBC3{ m} VBC4{ BC2 VBC5{ VBC2 BC3 VBC6{ m}} VBC3} BC6 BC7{ BC3 VBC2 VBC6 BC5 VBC4 vd} vd}


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

static void Test_S1627C11()
{
  extern Class_Descriptor cd_S1627C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S1627C11, buf);
    S1627C11 *dp, &lv = *(dp=new (buf) S1627C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S1627C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1627C11)");
    /*is_ambiguous_... S1627C11::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), 0, "S1627C11");
    /*is_ambiguous_... S1627C11::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C5*), 0, "S1627C11");
    /*is_ambiguous_... S1627C13::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C13*), 0, "S1627C11");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C5*)(S1627C13*), 0, "S1627C11");
    /*is_ambiguous_... S1627C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(9,5), "S1627C11");
    /*is_ambiguous_... S1627C12::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C12*), ABISELECT(9,5), "S1627C11");
    /*is_ambiguous_... S1627C12::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C12*), ABISELECT(16,8), "S1627C11");
    /*is_ambiguous_... S1627C11::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C5*), ABISELECT(16,8), "S1627C11");
    /*is_ambiguous_... S1627C11::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C5*), ABISELECT(24,12), "S1627C11");
    check_base_class_offset(lv, (S7856C12*)(S1627C13*), ABISELECT(24,12), "S1627C11");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C5*)(S1627C13*), ABISELECT(24,12), "S1627C11");
    check_base_class_offset(lv, (S1627C5*)(S1627C12*), ABISELECT(16,8), "S1627C11");
    check_base_class_offset(lv, (S1627C12*), ABISELECT(16,8), "S1627C11");
    check_base_class_offset(lv, (S1627C12*)(S1627C13*), ABISELECT(16,8), "S1627C11");
    /*is_ambiguous_... S1627C11::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), 0, "S1627C11");
    /*is_ambiguous_... S1627C13::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C13*), ABISELECT(8,4), "S1627C11");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C5*)(S1627C13*), 0, "S1627C11");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C13*), 0, "S1627C11");
    check_base_class_offset(lv, (S1627C13*), 0, "S1627C11");
    test_class_info(&lv, &cd_S1627C11);
    dp->~S1627C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1627C11(Test_S1627C11, "S1627C11", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S1627C11C1Ev();
extern void _ZN8S1627C11D2Ev();
Name_Map name_map_S1627C11[] = {
  NSPAIR(_ZN8S1627C11C1Ev),
  NSPAIR(_ZN8S1627C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S1627C12;
extern VTBL_ENTRY _ZTI8S1627C12[];
extern  VTBL_ENTRY _ZTV8S1627C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S1627C13;
extern VTBL_ENTRY _ZTI8S1627C13[];
extern  VTBL_ENTRY _ZTV8S1627C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C13[];
static Base_Class bases_S1627C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S1627C5,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S1627C12,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S1627C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S1627C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S1627C11[];
extern void _ZN8S1627C11D1Ev();
extern void _ZN8S1627C11D0Ev();
static  VTBL_ENTRY vtc_S1627C11[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C11[0]),
  (VTBL_ENTRY)&_ZN8S1627C11D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C11D0Ev,
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1627C11[0]),
};
extern VTBL_ENTRY _ZTV8S1627C11[];
extern void _ZN8S1627C13D1Ev();
extern void _ZN8S1627C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C13__8S1627C11[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C13[0]),
  (VTBL_ENTRY)&_ZN8S1627C13D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1627C58S1627C13__A1__8S1627C11[] = {
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C13__8S1627C11[] = {
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1627C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C11[] = {
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C5__8S1627C11[] = {
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
static  VTT_ENTRY vtt_S1627C11[] = {
  {&(_ZTV8S1627C11[7]),  7,15},
  {&(_tg__ZTV8S1627C13__8S1627C11[7]),  7,9},
  {&(_tg__ZTV7S1627C58S1627C13__A1__8S1627C11[4]),  4,4},
  {&(_tg__ZTV8S1627C12__8S1627C13__8S1627C11[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C13__8S1627C11[6]),  6,6},
  {&(_ZTV8S1627C11[15]),  15,15},
  {&(_ZTV8S1627C11[15]),  15,15},
  {&(_tg__ZTV8S1627C12__8S1627C11[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C11[6]),  6,6},
  {&(_tg__ZTV7S1627C5__8S1627C11[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S1627C11[];
extern  VTBL_ENTRY _ZTV8S1627C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C11[];
Class_Descriptor cd_S1627C11 = {  "S1627C11", // class name
  bases_S1627C11, 12,
  &(vtc_S1627C11[0]), // expected_vtbl_contents
  &(vtt_S1627C11[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S1627C11),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S1627C11),15, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1627C11),10, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1627C4  : virtual S1627C5 , virtual S1627C9 , virtual S1627C10 , S7856C12 , virtual S1627C11 {
  int s1627c4f0;
  virtual  ~S1627C4(); // _ZN7S1627C4D2Ev
  S1627C4(); // tgen
};
//SIG(-1 S1627C4) C1{ VBC2{ VBC3{ m} BC4{ m} VBC5{ m}} VBC6{ VBC4} VBC7{ BC5 BC4 BC2 Fi} BC5 VBC8{ VBC3 VBC4 VBC9{ BC3 VBC2 VBC4} BC5 BC10{ BC4 VBC3 VBC5 BC2 VBC9 vd} vd} vd Fi}


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

static void Test_S1627C4()
{
  extern Class_Descriptor cd_S1627C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S1627C4, buf);
    S1627C4 *dp, &lv = *(dp=new (buf) S1627C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S1627C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1627C4)");
    /*is_ambiguous_... S1627C4::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C5*), 0, "S1627C4");
    check_base_class_offset(lv, (S7856C24*)(S1627C5*)(S1627C10*), 0, "S1627C4");
    /*is_ambiguous_... S1627C11::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C11*), 0, "S1627C4");
    /*is_ambiguous_... S1627C13::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C13*)(S1627C11*), 0, "S1627C4");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C5*)(S1627C13*)(S1627C11*), 0, "S1627C4");
    /*is_ambiguous_... S1627C4::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C5*), ABISELECT(48,28), "S1627C4");
    /*is_ambiguous_... S1627C4::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C5*), ABISELECT(12,8), "S1627C4");
    check_base_class_offset(lv, (S7856C12*)(S1627C5*)(S1627C10*), ABISELECT(12,8), "S1627C4");
    check_base_class_offset(lv, (S7856C12*)(S1627C13*)(S1627C11*), ABISELECT(12,8), "S1627C4");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C5*)(S1627C13*)(S1627C11*), ABISELECT(12,8), "S1627C4");
    /*is_ambiguous_... S1627C4::S1627C5 */ AMB_check_base_class_offset(lv, (S1627C5*), ABISELECT(48,28), "S1627C4");
    check_base_class_offset(lv, (S1627C5*)(S1627C12*), ABISELECT(48,28), "S1627C4");
    check_base_class_offset(lv, (S7856C15*)(S1627C9*), 0, "S1627C4");
    /*is_ambiguous_... S1627C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C11*), 0, "S1627C4");
    /*is_ambiguous_... S1627C12::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C12*), 0, "S1627C4");
    check_base_class_offset(lv, (S1627C9*), 0, "S1627C4");
    /*is_ambiguous_... S1627C10::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C10*), ABISELECT(16,12), "S1627C4");
    /*is_ambiguous_... S1627C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C10*), ABISELECT(24,16), "S1627C4");
    check_base_class_offset(lv, (S7856C15*)(S1627C5*)(S1627C10*), ABISELECT(16,12), "S1627C4");
    check_base_class_offset(lv, (S1627C5*)(S1627C10*), ABISELECT(16,12), "S1627C4");
    check_base_class_offset(lv, (S1627C10*), ABISELECT(16,12), "S1627C4");
    /*is_ambiguous_... S1627C4::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), 0, "S1627C4");
    /*is_ambiguous_... S1627C12::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C12*), ABISELECT(48,28), "S1627C4");
    check_base_class_offset(lv, (S1627C12*)(S1627C11*), ABISELECT(48,28), "S1627C4");
    check_base_class_offset(lv, (S1627C12*)(S1627C13*)(S1627C11*), ABISELECT(48,28), "S1627C4");
    /*is_ambiguous_... S1627C11::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C11*), ABISELECT(32,20), "S1627C4");
    /*is_ambiguous_... S1627C13::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C13*)(S1627C11*), ABISELECT(40,24), "S1627C4");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C5*)(S1627C13*)(S1627C11*), ABISELECT(32,20), "S1627C4");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C13*)(S1627C11*), ABISELECT(32,20), "S1627C4");
    check_base_class_offset(lv, (S1627C13*)(S1627C11*), ABISELECT(32,20), "S1627C4");
    check_base_class_offset(lv, (S1627C11*), ABISELECT(32,20), "S1627C4");
    check_field_offset(lv, s1627c4f0, ABISELECT(8,4), "S1627C4.s1627c4f0");
    test_class_info(&lv, &cd_S1627C4);
    dp->~S1627C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1627C4(Test_S1627C4, "S1627C4", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN7S1627C4C1Ev();
extern void _ZN7S1627C4D2Ev();
Name_Map name_map_S1627C4[] = {
  NSPAIR(_ZN7S1627C4C1Ev),
  NSPAIR(_ZN7S1627C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C9;
extern VTBL_ENTRY _ZTI7S1627C9[];
extern  VTBL_ENTRY _ZTV7S1627C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S1627C10;
extern VTBL_ENTRY _ZTI8S1627C10[];
extern  VTBL_ENTRY _ZTV8S1627C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S1627C12;
extern VTBL_ENTRY _ZTI8S1627C12[];
extern  VTBL_ENTRY _ZTV8S1627C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S1627C13;
extern VTBL_ENTRY _ZTI8S1627C13[];
extern  VTBL_ENTRY _ZTV8S1627C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C13[];
extern Class_Descriptor cd_S1627C11;
extern VTBL_ENTRY _ZTI8S1627C11[];
extern  VTBL_ENTRY _ZTV8S1627C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C11[];
static Base_Class bases_S1627C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S1627C5,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S1627C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S1627C5,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S1627C10,    ABISELECT(16,12), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S1627C12,    ABISELECT(48,28), //bcp->offset
    26, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S1627C5,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S1627C13,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S1627C11,    ABISELECT(32,20), //bcp->offset
    16, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S1627C4[];
extern void _ZN7S1627C4D1Ev();
extern void _ZN7S1627C4D0Ev();
extern void ABISELECT(_ZTv0_n64_N7S1627C4D1Ev,_ZTv0_n32_N7S1627C4D1Ev)();
extern void ABISELECT(_ZThn32_N7S1627C4D1Ev,_ZThn20_N7S1627C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1627C4D0Ev,_ZTv0_n32_N7S1627C4D0Ev)();
extern void ABISELECT(_ZThn32_N7S1627C4D0Ev,_ZThn20_N7S1627C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S1627C4[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  ABISELECT(12,8),
  0,
  ABISELECT(48,28),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
  (VTBL_ENTRY)&_ZN7S1627C4D1Ev,
  (VTBL_ENTRY)&_ZN7S1627C4D0Ev,
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C4D1Ev,_ZTv0_n32_N7S1627C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C4D0Ev,_ZTv0_n32_N7S1627C4D0Ev),
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
};
extern VTBL_ENTRY _ZTV7S1627C4[];
static  VTBL_ENTRY _tg__ZTV7S1627C5__7S1627C4[] = {
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C9__7S1627C4[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C10__7S1627C4[] = {
  -4,
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C58S1627C10__A1__7S1627C4[] = {
  -4,
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
extern void _ZN8S1627C11D1Ev();
extern void _ZN8S1627C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C11__7S1627C4[] = {
  ABISELECT(-32,-20),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C11[0]),
  (VTBL_ENTRY)&_ZN8S1627C11D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C11D0Ev,
};
extern void _ZN8S1627C13D1Ev();
extern void _ZN8S1627C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C138S1627C11__7S1627C4[] = {
  ABISELECT(-32,-20),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C13[0]),
  (VTBL_ENTRY)&_ZN8S1627C13D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1627C58S1627C138S1627C11__A2__7S1627C4[] = {
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C138S1627C11__7S1627C4[] = {
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1627C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C11__7S1627C4[] = {
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1627C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__7S1627C4[] = {
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C12[0]),
};
static  VTT_ENTRY vtt_S1627C4[] = {
  {&(_ZTV7S1627C4[10]),  10,32},
  {&(_ZTV7S1627C4[32]),  32,32},
  {&(_ZTV7S1627C4[10]),  10,32},
  {&(_ZTV7S1627C4[16]),  16,32},
  {&(_ZTV7S1627C4[24]),  24,32},
  {&(_ZTV7S1627C4[32]),  32,32},
  {&(_tg__ZTV7S1627C5__7S1627C4[4]),  4,4},
  {&(_tg__ZTV7S1627C9__7S1627C4[3]),  3,3},
  {&(_tg__ZTV8S1627C10__7S1627C4[4]),  4,4},
  {&(_tg__ZTV7S1627C58S1627C10__A1__7S1627C4[4]),  4,4},
  {&(_tg__ZTV8S1627C11__7S1627C4[7]),  7,9},
  {&(_tg__ZTV8S1627C138S1627C11__7S1627C4[7]),  7,9},
  {&(_tg__ZTV7S1627C58S1627C138S1627C11__A2__7S1627C4[4]),  4,4},
  {&(_tg__ZTV8S1627C12__8S1627C138S1627C11__7S1627C4[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C138S1627C11__7S1627C4[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C11__7S1627C4[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C11__7S1627C4[6]),  6,6},
  {&(_tg__ZTV8S1627C12__7S1627C4[6]),  6,6},
  {&(_tg__ZTV8S1627C12__7S1627C4[6]),  6,6},
};
extern VTBL_ENTRY _ZTI7S1627C4[];
extern  VTBL_ENTRY _ZTV7S1627C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C4[];
static VTBL_ENTRY alt_thunk_names118[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1627C4D0Ev,_ZTv0_n32_N7S1627C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S1627C4D0Ev,_ZThn20_N7S1627C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1627C4D1Ev,_ZTv0_n32_N7S1627C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S1627C4D1Ev,_ZThn20_N7S1627C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S1627C4 = {  "S1627C4", // class name
  bases_S1627C4, 20,
  &(vtc_S1627C4[0]), // expected_vtbl_contents
  &(vtt_S1627C4[0]), // expected_vtt_contents
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI7S1627C4),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S1627C4),32, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1627C4),19, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names118,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1627C3  : S1627C4 , S7856C15 {
  ~S1627C3(); // tgen
  S1627C3(); // tgen
};
//SIG(-1 S1627C3) C1{ BC2{ VBC3{ VBC4{ m} BC5{ m} VBC6{ m}} VBC7{ VBC5} VBC8{ BC6 BC5 BC3 Fi} BC6 VBC9{ VBC4 VBC5 VBC10{ BC4 VBC3 VBC5} BC6 BC11{ BC5 VBC4 VBC6 BC3 VBC10 vd} vd} vd Fi} BC5}


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

static void Test_S1627C3()
{
  extern Class_Descriptor cd_S1627C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S1627C3, buf);
    S1627C3 *dp, &lv = *(dp=new (buf) S1627C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S1627C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1627C3)");
    /*is_ambiguous_... S1627C3::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C5*), 0, "S1627C3");
    check_base_class_offset(lv, (S7856C24*)(S1627C5*)(S1627C10*), 0, "S1627C3");
    /*is_ambiguous_... S1627C11::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C11*), 0, "S1627C3");
    /*is_ambiguous_... S1627C13::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C13*)(S1627C11*), 0, "S1627C3");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C5*)(S1627C13*)(S1627C11*), 0, "S1627C3");
    /*is_ambiguous_... S1627C3::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C5*), ABISELECT(48,28), "S1627C3");
    /*is_ambiguous_... S1627C3::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C5*), ABISELECT(12,8), "S1627C3");
    check_base_class_offset(lv, (S7856C12*)(S1627C5*)(S1627C10*), ABISELECT(12,8), "S1627C3");
    check_base_class_offset(lv, (S7856C12*)(S1627C13*)(S1627C11*), ABISELECT(12,8), "S1627C3");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C5*)(S1627C13*)(S1627C11*), ABISELECT(12,8), "S1627C3");
    /*is_ambiguous_... S1627C4::S1627C5 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C4*), ABISELECT(48,28), "S1627C3");
    check_base_class_offset(lv, (S1627C5*)(S1627C12*), ABISELECT(48,28), "S1627C3");
    check_base_class_offset(lv, (S7856C15*)(S1627C9*), ABISELECT(12,8), "S1627C3");
    /*is_ambiguous_... S1627C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C11*), ABISELECT(12,8), "S1627C3");
    /*is_ambiguous_... S1627C12::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C12*), ABISELECT(12,8), "S1627C3");
    check_base_class_offset(lv, (S1627C9*)(S1627C4*), 0, "S1627C3");
    /*is_ambiguous_... S1627C10::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C10*), ABISELECT(16,12), "S1627C3");
    /*is_ambiguous_... S1627C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C10*), ABISELECT(24,16), "S1627C3");
    check_base_class_offset(lv, (S7856C15*)(S1627C5*)(S1627C10*), ABISELECT(16,12), "S1627C3");
    check_base_class_offset(lv, (S1627C5*)(S1627C10*), ABISELECT(16,12), "S1627C3");
    check_base_class_offset(lv, (S1627C10*)(S1627C4*), ABISELECT(16,12), "S1627C3");
    /*is_ambiguous_... S1627C4::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C4*), 0, "S1627C3");
    /*is_ambiguous_... S1627C12::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C12*), ABISELECT(48,28), "S1627C3");
    check_base_class_offset(lv, (S1627C12*)(S1627C11*), ABISELECT(48,28), "S1627C3");
    check_base_class_offset(lv, (S1627C12*)(S1627C13*)(S1627C11*), ABISELECT(48,28), "S1627C3");
    /*is_ambiguous_... S1627C11::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C11*), ABISELECT(32,20), "S1627C3");
    /*is_ambiguous_... S1627C13::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C13*)(S1627C11*), ABISELECT(40,24), "S1627C3");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C5*)(S1627C13*)(S1627C11*), ABISELECT(32,20), "S1627C3");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C13*)(S1627C11*), ABISELECT(32,20), "S1627C3");
    check_base_class_offset(lv, (S1627C13*)(S1627C11*), ABISELECT(32,20), "S1627C3");
    check_base_class_offset(lv, (S1627C11*)(S1627C4*), ABISELECT(32,20), "S1627C3");
    check_base_class_offset(lv, (S1627C4*), 0, "S1627C3");
    /*is_ambiguous_... S1627C3::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), 0, "S1627C3");
    test_class_info(&lv, &cd_S1627C3);
    dp->~S1627C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1627C3(Test_S1627C3, "S1627C3", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN7S1627C3C1Ev();
extern void _ZN7S1627C3D1Ev();
Name_Map name_map_S1627C3[] = {
  NSPAIR(_ZN7S1627C3C1Ev),
  NSPAIR(_ZN7S1627C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C9;
extern VTBL_ENTRY _ZTI7S1627C9[];
extern  VTBL_ENTRY _ZTV7S1627C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S1627C10;
extern VTBL_ENTRY _ZTI8S1627C10[];
extern  VTBL_ENTRY _ZTV8S1627C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S1627C12;
extern VTBL_ENTRY _ZTI8S1627C12[];
extern  VTBL_ENTRY _ZTV8S1627C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S1627C13;
extern VTBL_ENTRY _ZTI8S1627C13[];
extern  VTBL_ENTRY _ZTV8S1627C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C13[];
extern Class_Descriptor cd_S1627C11;
extern VTBL_ENTRY _ZTI8S1627C11[];
extern  VTBL_ENTRY _ZTV8S1627C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C11[];
extern Class_Descriptor cd_S1627C4;
extern VTBL_ENTRY _ZTI7S1627C4[];
extern  VTBL_ENTRY _ZTV7S1627C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C4[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
static Base_Class bases_S1627C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S1627C5,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S1627C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S1627C5,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S1627C10,    ABISELECT(16,12), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S1627C12,    ABISELECT(48,28), //bcp->offset
    26, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S1627C5,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S1627C13,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S1627C11,    ABISELECT(32,20), //bcp->offset
    16, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S1627C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1627C3[];
extern void _ZN7S1627C3D1Ev();
extern void _ZN7S1627C3D0Ev();
extern void ABISELECT(_ZTv0_n64_N7S1627C3D1Ev,_ZTv0_n32_N7S1627C3D1Ev)();
extern void ABISELECT(_ZThn32_N7S1627C3D1Ev,_ZThn20_N7S1627C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1627C3D0Ev,_ZTv0_n32_N7S1627C3D0Ev)();
extern void ABISELECT(_ZThn32_N7S1627C3D0Ev,_ZThn20_N7S1627C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S1627C3[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  ABISELECT(12,8),
  0,
  ABISELECT(48,28),
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C3[0]),
  (VTBL_ENTRY)&_ZN7S1627C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1627C3D0Ev,
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S1627C3[0]),
  ABISELECT(-32,-20),
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S1627C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C3D1Ev,_ZTv0_n32_N7S1627C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C3D0Ev,_ZTv0_n32_N7S1627C3D0Ev),
  ABISELECT(-36,-20),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S1627C3[0]),
};
extern VTBL_ENTRY _ZTV7S1627C3[];
extern void _ZN7S1627C4D1Ev();
extern void _ZN7S1627C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1627C4__7S1627C3[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  ABISELECT(12,8),
  0,
  ABISELECT(48,28),
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
  (VTBL_ENTRY)&_ZN7S1627C4D1Ev,
  (VTBL_ENTRY)&_ZN7S1627C4D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__7S1627C4__7S1627C3[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C10__7S1627C4__7S1627C3[] = {
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S1627C4D1Ev,_ZTv0_n32_N7S1627C4D1Ev)();
extern void ABISELECT(_ZThn32_N7S1627C4D1Ev,_ZThn20_N7S1627C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1627C4D0Ev,_ZTv0_n32_N7S1627C4D0Ev)();
extern void ABISELECT(_ZThn32_N7S1627C4D0Ev,_ZThn20_N7S1627C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1627C11__7S1627C4__7S1627C3[] = {
  ABISELECT(-32,-20),
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C4D1Ev,_ZTv0_n32_N7S1627C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C4D0Ev,_ZTv0_n32_N7S1627C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1627C5__7S1627C3[] = {
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C9__7S1627C3[] = {
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C10__7S1627C3[] = {
  -4,
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C58S1627C10__A1__7S1627C3[] = {
  -4,
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
extern void _ZN8S1627C11D1Ev();
extern void _ZN8S1627C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C11__7S1627C3[] = {
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C11[0]),
  (VTBL_ENTRY)&_ZN8S1627C11D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C11D0Ev,
};
extern void _ZN8S1627C13D1Ev();
extern void _ZN8S1627C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C138S1627C11__7S1627C3[] = {
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C13[0]),
  (VTBL_ENTRY)&_ZN8S1627C13D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1627C58S1627C138S1627C11__A2__7S1627C3[] = {
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C138S1627C11__7S1627C3[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1627C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C11__7S1627C3[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1627C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__7S1627C3[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C12[0]),
};
static  VTT_ENTRY vtt_S1627C3[] = {
  {&(_ZTV7S1627C3[10]),  10,32},
  {&(_tg__ZTV7S1627C4__7S1627C3[10]),  10,12},
  {&(_tg__ZTV8S1627C12__7S1627C4__7S1627C3[6]),  6,6},
  {&(_tg__ZTV7S1627C4__7S1627C3[10]),  10,12},
  {&(_tg__ZTV8S1627C10__7S1627C4__7S1627C3[4]),  4,4},
  {&(_tg__ZTV8S1627C11__7S1627C4__7S1627C3[8]),  8,10},
  {&(_tg__ZTV8S1627C12__7S1627C4__7S1627C3[6]),  6,6},
  {&(_ZTV7S1627C3[32]),  32,32},
  {&(_ZTV7S1627C3[10]),  10,32},
  {&(_ZTV7S1627C3[16]),  16,32},
  {&(_ZTV7S1627C3[24]),  24,32},
  {&(_ZTV7S1627C3[32]),  32,32},
  {&(_tg__ZTV7S1627C5__7S1627C3[4]),  4,4},
  {&(_tg__ZTV7S1627C9__7S1627C3[3]),  3,3},
  {&(_tg__ZTV8S1627C10__7S1627C3[4]),  4,4},
  {&(_tg__ZTV7S1627C58S1627C10__A1__7S1627C3[4]),  4,4},
  {&(_tg__ZTV8S1627C11__7S1627C3[7]),  7,9},
  {&(_tg__ZTV8S1627C138S1627C11__7S1627C3[7]),  7,9},
  {&(_tg__ZTV7S1627C58S1627C138S1627C11__A2__7S1627C3[4]),  4,4},
  {&(_tg__ZTV8S1627C12__8S1627C138S1627C11__7S1627C3[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C138S1627C11__7S1627C3[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C11__7S1627C3[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C11__7S1627C3[6]),  6,6},
  {&(_tg__ZTV8S1627C12__7S1627C3[6]),  6,6},
  {&(_tg__ZTV8S1627C12__7S1627C3[6]),  6,6},
};
extern VTBL_ENTRY _ZTI7S1627C3[];
extern  VTBL_ENTRY _ZTV7S1627C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C3[];
static VTBL_ENTRY alt_thunk_names119[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1627C4D0Ev,_ZTv0_n32_N7S1627C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S1627C4D0Ev,_ZThn20_N7S1627C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1627C4D1Ev,_ZTv0_n32_N7S1627C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S1627C4D1Ev,_ZThn20_N7S1627C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1627C3D0Ev,_ZTv0_n32_N7S1627C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S1627C3D0Ev,_ZThn20_N7S1627C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1627C3D1Ev,_ZTv0_n32_N7S1627C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S1627C3D1Ev,_ZThn20_N7S1627C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S1627C3 = {  "S1627C3", // class name
  bases_S1627C3, 22,
  &(vtc_S1627C3[0]), // expected_vtbl_contents
  &(vtt_S1627C3[0]), // expected_vtt_contents
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI7S1627C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S1627C3),32, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1627C3),25, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names119,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1627C16  : virtual S1627C11 , virtual S1627C10 , virtual S1627C13 {
  int s1627c16f0[2];
  virtual  ~S1627C16(); // _ZN8S1627C16D2Ev
  S1627C16(); // tgen
};
//SIG(-1 S1627C16) C1{ VBC2{ VBC3{ m} VBC4{ m} VBC5{ BC3 VBC6{ VBC3 BC4 VBC7{ m}} VBC4} BC7 BC8{ BC4 VBC3 VBC7 BC6 VBC5 vd} vd} VBC9{ BC7 BC4 BC6 Fi} VBC8 vd Fi[2]}


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

static void Test_S1627C16()
{
  extern Class_Descriptor cd_S1627C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,10)];
    init_test(&cd_S1627C16, buf);
    S1627C16 *dp, &lv = *(dp=new (buf) S1627C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S1627C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1627C16)");
    /*is_ambiguous_... S1627C11::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C11*), ABISELECT(25,17), "S1627C16");
    /*is_ambiguous_... S1627C16::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C5*), ABISELECT(25,17), "S1627C16");
    /*is_ambiguous_... S1627C13::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C13*)(S1627C11*), ABISELECT(25,17), "S1627C16");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C5*)(S1627C13*)(S1627C11*), ABISELECT(25,17), "S1627C16");
    check_base_class_offset(lv, (S7856C24*)(S1627C5*)(S1627C10*), ABISELECT(25,17), "S1627C16");
    /*is_ambiguous_... S1627C16::S1627C13 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C13*), ABISELECT(25,17), "S1627C16");
    /*is_ambiguous_... S1627C16::S1627C13 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C5*)(S1627C13*), ABISELECT(25,17), "S1627C16");
    /*is_ambiguous_... S1627C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C11*), ABISELECT(25,17), "S1627C16");
    /*is_ambiguous_... S1627C12::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C12*), ABISELECT(25,17), "S1627C16");
    /*is_ambiguous_... S1627C12::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C12*), 0, "S1627C16");
    /*is_ambiguous_... S1627C16::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C5*), 0, "S1627C16");
    /*is_ambiguous_... S1627C16::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C5*), 0, "S1627C16");
    check_base_class_offset(lv, (S7856C12*)(S1627C13*)(S1627C11*), 0, "S1627C16");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C5*)(S1627C13*)(S1627C11*), 0, "S1627C16");
    check_base_class_offset(lv, (S7856C12*)(S1627C5*)(S1627C10*), 0, "S1627C16");
    /*is_ambiguous_... S1627C16::S1627C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C13*), 0, "S1627C16");
    /*is_ambiguous_... S1627C16::S1627C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C5*)(S1627C13*), 0, "S1627C16");
    check_base_class_offset(lv, (S1627C5*)(S1627C12*), 0, "S1627C16");
    check_base_class_offset(lv, (S1627C12*)(S1627C11*), 0, "S1627C16");
    check_base_class_offset(lv, (S1627C12*)(S1627C13*)(S1627C11*), 0, "S1627C16");
    /*is_ambiguous_... S1627C16::S1627C13 */ AMB_check_base_class_offset(lv, (S1627C12*)(S1627C13*), 0, "S1627C16");
    /*is_ambiguous_... S1627C11::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C11*), ABISELECT(16,12), "S1627C16");
    /*is_ambiguous_... S1627C13::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C13*)(S1627C11*), ABISELECT(24,16), "S1627C16");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C5*)(S1627C13*)(S1627C11*), ABISELECT(16,12), "S1627C16");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C13*)(S1627C11*), ABISELECT(16,12), "S1627C16");
    check_base_class_offset(lv, (S1627C13*)(S1627C11*), ABISELECT(16,12), "S1627C16");
    check_base_class_offset(lv, (S1627C11*), ABISELECT(16,12), "S1627C16");
    /*is_ambiguous_... S1627C10::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C10*), ABISELECT(32,20), "S1627C16");
    /*is_ambiguous_... S1627C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C10*), ABISELECT(40,24), "S1627C16");
    check_base_class_offset(lv, (S7856C15*)(S1627C5*)(S1627C10*), ABISELECT(32,20), "S1627C16");
    check_base_class_offset(lv, (S1627C5*)(S1627C10*), ABISELECT(32,20), "S1627C16");
    check_base_class_offset(lv, (S1627C10*), ABISELECT(32,20), "S1627C16");
    /*is_ambiguous_... S1627C16::S1627C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C13*), ABISELECT(56,32), "S1627C16");
    /*is_ambiguous_... S1627C16::S1627C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C5*)(S1627C13*), ABISELECT(48,28), "S1627C16");
    /*is_ambiguous_... S1627C16::S1627C13 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C13*), ABISELECT(48,28), "S1627C16");
    /*is_ambiguous_... S1627C16::S1627C13 */ AMB_check_base_class_offset(lv, (S1627C13*), ABISELECT(48,28), "S1627C16");
    check_field_offset(lv, s1627c16f0, ABISELECT(8,4), "S1627C16.s1627c16f0");
    test_class_info(&lv, &cd_S1627C16);
    dp->~S1627C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1627C16(Test_S1627C16, "S1627C16", ABISELECT(64,36));

#else // __cplusplus

extern void _ZN8S1627C16C1Ev();
extern void _ZN8S1627C16D2Ev();
Name_Map name_map_S1627C16[] = {
  NSPAIR(_ZN8S1627C16C1Ev),
  NSPAIR(_ZN8S1627C16D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S1627C12;
extern VTBL_ENTRY _ZTI8S1627C12[];
extern  VTBL_ENTRY _ZTV8S1627C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S1627C13;
extern VTBL_ENTRY _ZTI8S1627C13[];
extern  VTBL_ENTRY _ZTV8S1627C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C13[];
extern Class_Descriptor cd_S1627C11;
extern VTBL_ENTRY _ZTI8S1627C11[];
extern  VTBL_ENTRY _ZTV8S1627C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C11[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S1627C10;
extern VTBL_ENTRY _ZTI8S1627C10[];
extern  VTBL_ENTRY _ZTV8S1627C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C10[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S1627C13;
extern VTBL_ENTRY _ZTI8S1627C13[];
extern  VTBL_ENTRY _ZTV8S1627C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C13[];
static Base_Class bases_S1627C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    ABISELECT(25,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(25,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S1627C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S1627C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S1627C5,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S1627C13,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S1627C11,    ABISELECT(16,12), //bcp->offset
    12, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S1627C5,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S1627C10,    ABISELECT(32,20), //bcp->offset
    22, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S1627C5,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S1627C13,    ABISELECT(48,28), //bcp->offset
    26, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S1627C16[];
extern void _ZN8S1627C16D1Ev();
extern void _ZN8S1627C16D0Ev();
extern void ABISELECT(_ZTv0_n64_N8S1627C16D1Ev,_ZTv0_n32_N8S1627C16D1Ev)();
extern void ABISELECT(_ZThn16_N8S1627C16D1Ev,_ZThn12_N8S1627C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1627C16D0Ev,_ZTv0_n32_N8S1627C16D0Ev)();
extern void ABISELECT(_ZThn16_N8S1627C16D0Ev,_ZThn12_N8S1627C16D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1627C16D1Ev,_ZTv0_n32_N8S1627C16D1Ev)();
extern void ABISELECT(_ZThn48_N8S1627C16D1Ev,_ZThn28_N8S1627C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1627C16D0Ev,_ZTv0_n32_N8S1627C16D0Ev)();
extern void ABISELECT(_ZThn48_N8S1627C16D0Ev,_ZThn28_N8S1627C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S1627C16[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C16[0]),
  (VTBL_ENTRY)&_ZN8S1627C16D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C16D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S1627C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C16D1Ev,_ZTv0_n32_N8S1627C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C16D0Ev,_ZTv0_n32_N8S1627C16D0Ev),
  ABISELECT(-32,-20),
  ABISELECT(-7,-3),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S1627C16[0]),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S1627C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C16D1Ev,_ZTv0_n32_N8S1627C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C16D0Ev,_ZTv0_n32_N8S1627C16D0Ev),
};
extern VTBL_ENTRY _ZTV8S1627C16[];
extern void _ZN8S1627C11D1Ev();
extern void _ZN8S1627C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C11__8S1627C16[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C11[0]),
  (VTBL_ENTRY)&_ZN8S1627C11D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C11D0Ev,
};
extern void _ZN8S1627C13D1Ev();
extern void _ZN8S1627C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C138S1627C11__8S1627C16[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C13[0]),
  (VTBL_ENTRY)&_ZN8S1627C13D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1627C58S1627C138S1627C11__A1__8S1627C16[] = {
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C138S1627C11__8S1627C16[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S1627C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C11__8S1627C16[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S1627C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C16[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C5__8S1627C16[] = {
  0,
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C10__8S1627C16[] = {
  ABISELECT(-32,-20),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C58S1627C10__A2__8S1627C16[] = {
  ABISELECT(-32,-20),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
extern void _ZN8S1627C13D1Ev();
extern void _ZN8S1627C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C13__A1__8S1627C16[] = {
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C13[0]),
  (VTBL_ENTRY)&_ZN8S1627C13D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1627C58S1627C13__A3__8S1627C16[] = {
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C13__A1__8S1627C16[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S1627C13[0]),
};
static  VTT_ENTRY vtt_S1627C16[] = {
  {&(_ZTV8S1627C16[10]),  10,36},
  {&(_ZTV8S1627C16[20]),  20,36},
  {&(_ZTV8S1627C16[10]),  10,36},
  {&(_ZTV8S1627C16[10]),  10,36},
  {&(_ZTV8S1627C16[26]),  26,36},
  {&(_ZTV8S1627C16[34]),  34,36},
  {&(_tg__ZTV8S1627C11__8S1627C16[7]),  7,9},
  {&(_tg__ZTV8S1627C138S1627C11__8S1627C16[7]),  7,9},
  {&(_tg__ZTV7S1627C58S1627C138S1627C11__A1__8S1627C16[4]),  4,4},
  {&(_tg__ZTV8S1627C12__8S1627C138S1627C11__8S1627C16[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C138S1627C11__8S1627C16[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C11__8S1627C16[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C11__8S1627C16[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C16[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C16[6]),  6,6},
  {&(_tg__ZTV7S1627C5__8S1627C16[4]),  4,4},
  {&(_tg__ZTV8S1627C10__8S1627C16[4]),  4,4},
  {&(_tg__ZTV7S1627C58S1627C10__A2__8S1627C16[4]),  4,4},
  {&(_tg__ZTV8S1627C13__A1__8S1627C16[7]),  7,9},
  {&(_tg__ZTV7S1627C58S1627C13__A3__8S1627C16[4]),  4,4},
  {&(_tg__ZTV8S1627C12__8S1627C13__A1__8S1627C16[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C13__A1__8S1627C16[6]),  6,6},
};
extern VTBL_ENTRY _ZTI8S1627C16[];
extern  VTBL_ENTRY _ZTV8S1627C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C16[];
static VTBL_ENTRY alt_thunk_names120[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1627C16D0Ev,_ZTv0_n32_N8S1627C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S1627C16D0Ev,_ZThn28_N8S1627C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S1627C16D0Ev,_ZThn12_N8S1627C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1627C16D1Ev,_ZTv0_n32_N8S1627C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S1627C16D1Ev,_ZThn28_N8S1627C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S1627C16D1Ev,_ZThn12_N8S1627C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S1627C16 = {  "S1627C16", // class name
  bases_S1627C16, 22,
  &(vtc_S1627C16[0]), // expected_vtbl_contents
  &(vtt_S1627C16[0]), // expected_vtt_contents
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI8S1627C16),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S1627C16),36, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1627C16),22, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names120,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1627C18  : virtual S1627C13 , S1627C10 , S1627C12 , S7856C12 {
  virtual  ~S1627C18(); // _ZN8S1627C18D2Ev
  S1627C18(); // tgen
};
//SIG(-1 S1627C18) C1{ VBC2{ BC3{ m} VBC4{ m} VBC5{ m} BC6{ VBC4 BC3 VBC5} VBC7{ BC4 VBC6 VBC3} vd} BC8{ BC5 BC3 BC6 Fi} BC7 BC5 vd}


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

static void Test_S1627C18()
{
  extern Class_Descriptor cd_S1627C18;
  void *lvp;
  {
    ABISELECT(double,int) buf[8];
    init_test(&cd_S1627C18, buf);
    S1627C18 *dp, &lv = *(dp=new (buf) S1627C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,28), "sizeof(S1627C18)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1627C18)");
    /*is_ambiguous_... S1627C13::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C13*), ABISELECT(32,16), "S1627C18");
    /*is_ambiguous_... S1627C13::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C13*), 0, "S1627C18");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C5*)(S1627C13*), 0, "S1627C18");
    /*is_ambiguous_... S1627C18::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C5*), 0, "S1627C18");
    check_base_class_offset(lv, (S7856C24*)(S1627C5*)(S1627C10*), 0, "S1627C18");
    check_base_class_offset(lv, (S7856C12*)(S1627C13*), ABISELECT(33,17), "S1627C18");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C5*)(S1627C13*), ABISELECT(33,17), "S1627C18");
    /*is_ambiguous_... S1627C18::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C5*), ABISELECT(33,17), "S1627C18");
    check_base_class_offset(lv, (S7856C12*)(S1627C5*)(S1627C10*), ABISELECT(33,17), "S1627C18");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C5*)(S1627C13*), ABISELECT(24,12), "S1627C18");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C13*), ABISELECT(24,12), "S1627C18");
    /*is_ambiguous_... S1627C18::S1627C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C12*), ABISELECT(40,20), "S1627C18");
    /*is_ambiguous_... S1627C18::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C5*), ABISELECT(40,20), "S1627C18");
    /*is_ambiguous_... S1627C18::S1627C12 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C12*), ABISELECT(40,20), "S1627C18");
    /*is_ambiguous_... S1627C18::S1627C12 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C12*), ABISELECT(40,20), "S1627C18");
    /*is_ambiguous_... S1627C18::S1627C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C12*), ABISELECT(48,24), "S1627C18");
    /*is_ambiguous_... S1627C18::S1627C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C12*), ABISELECT(48,24), "S1627C18");
    check_base_class_offset(lv, (S1627C12*)(S1627C13*), ABISELECT(40,20), "S1627C18");
    check_base_class_offset(lv, (S1627C13*), ABISELECT(24,12), "S1627C18");
    /*is_ambiguous_... S1627C10::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C10*), 0, "S1627C18");
    /*is_ambiguous_... S1627C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C10*), ABISELECT(8,4), "S1627C18");
    check_base_class_offset(lv, (S7856C15*)(S1627C5*)(S1627C10*), 0, "S1627C18");
    check_base_class_offset(lv, (S1627C5*)(S1627C10*), 0, "S1627C18");
    check_base_class_offset(lv, (S1627C10*), 0, "S1627C18");
    /*is_ambiguous_... S1627C18::S1627C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C12*), ABISELECT(16,8), "S1627C18");
    /*is_ambiguous_... S1627C18::S1627C12 */ AMB_check_base_class_offset(lv, (S1627C12*), ABISELECT(16,8), "S1627C18");
    /*is_ambiguous_... S1627C18::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), ABISELECT(24,12), "S1627C18");
    test_class_info(&lv, &cd_S1627C18);
    dp->~S1627C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1627C18(Test_S1627C18, "S1627C18", ABISELECT(56,28));

#else // __cplusplus

extern void _ZN8S1627C18C1Ev();
extern void _ZN8S1627C18D2Ev();
Name_Map name_map_S1627C18[] = {
  NSPAIR(_ZN8S1627C18C1Ev),
  NSPAIR(_ZN8S1627C18D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C12;
extern VTBL_ENTRY _ZTI8S1627C12[];
extern  VTBL_ENTRY _ZTV8S1627C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C12[];
extern Class_Descriptor cd_S1627C13;
extern VTBL_ENTRY _ZTI8S1627C13[];
extern  VTBL_ENTRY _ZTV8S1627C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C13[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S1627C10;
extern VTBL_ENTRY _ZTI8S1627C10[];
extern  VTBL_ENTRY _ZTV8S1627C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C10[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S1627C12;
extern VTBL_ENTRY _ZTI8S1627C12[];
extern  VTBL_ENTRY _ZTV8S1627C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
static Base_Class bases_S1627C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(33,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S1627C5,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S1627C5,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S1627C12,    ABISELECT(40,20), //bcp->offset
    26, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S1627C13,    ABISELECT(24,12), //bcp->offset
    16, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S1627C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S1627C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S1627C12,    ABISELECT(16,8), //bcp->offset
    10, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S1627C18[];
extern void _ZN8S1627C18D1Ev();
extern void _ZN8S1627C18D0Ev();
extern void ABISELECT(_ZTv0_n64_N8S1627C18D1Ev,_ZTv0_n32_N8S1627C18D1Ev)();
extern void ABISELECT(_ZThn24_N8S1627C18D1Ev,_ZThn12_N8S1627C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1627C18D0Ev,_ZTv0_n32_N8S1627C18D0Ev)();
extern void ABISELECT(_ZThn24_N8S1627C18D0Ev,_ZThn12_N8S1627C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S1627C18[] = {
  ABISELECT(48,24),
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(24,12),
  ABISELECT(33,17),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C18[0]),
  (VTBL_ENTRY)&_ZN8S1627C18D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C18D0Ev,
  ABISELECT(32,16),
  ABISELECT(24,12),
  ABISELECT(17,9),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1627C18[0]),
  ABISELECT(-24,-12),
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(9,5),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S1627C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C18D1Ev,_ZTv0_n32_N8S1627C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C18D0Ev,_ZTv0_n32_N8S1627C18D0Ev),
  ABISELECT(8,4),
  0,
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S1627C18[0]),
};
extern VTBL_ENTRY _ZTV8S1627C18[];
static  VTBL_ENTRY _tg__ZTV8S1627C10__8S1627C18[] = {
  ABISELECT(33,17),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C58S1627C10__A2__8S1627C18[] = {
  ABISELECT(33,17),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__A__8S1627C18[] = {
  ABISELECT(32,16),
  ABISELECT(24,12),
  ABISELECT(17,9),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C5__8S1627C12__A__8S1627C18[] = {
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S1627C12[0]),
};
extern void _ZN8S1627C13D1Ev();
extern void _ZN8S1627C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C13__8S1627C18[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(9,5),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C13[0]),
  (VTBL_ENTRY)&_ZN8S1627C13D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1627C58S1627C13__8S1627C18[] = {
  ABISELECT(9,5),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C13__8S1627C18[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1627C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C18[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C5__A1__8S1627C18[] = {
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
static  VTT_ENTRY vtt_S1627C18[] = {
  {&(_ZTV8S1627C18[8]),  8,32},
  {&(_tg__ZTV8S1627C10__8S1627C18[4]),  4,4},
  {&(_tg__ZTV7S1627C58S1627C10__A2__8S1627C18[4]),  4,4},
  {&(_tg__ZTV8S1627C12__A__8S1627C18[6]),  6,6},
  {&(_tg__ZTV7S1627C5__8S1627C12__A__8S1627C18[4]),  4,4},
  {&(_ZTV8S1627C18[24]),  24,32},
  {&(_ZTV8S1627C18[32]),  32,32},
  {&(_ZTV8S1627C18[32]),  32,32},
  {&(_ZTV8S1627C18[16]),  16,32},
  {&(_tg__ZTV8S1627C13__8S1627C18[7]),  7,9},
  {&(_tg__ZTV7S1627C58S1627C13__8S1627C18[4]),  4,4},
  {&(_tg__ZTV8S1627C12__8S1627C13__8S1627C18[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C13__8S1627C18[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C18[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C18[6]),  6,6},
  {&(_tg__ZTV7S1627C5__A1__8S1627C18[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S1627C18[];
extern  VTBL_ENTRY _ZTV8S1627C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C18[];
static VTBL_ENTRY alt_thunk_names121[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1627C18D0Ev,_ZTv0_n32_N8S1627C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S1627C18D0Ev,_ZThn12_N8S1627C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1627C18D1Ev,_ZTv0_n32_N8S1627C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S1627C18D1Ev,_ZThn12_N8S1627C18D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S1627C18 = {  "S1627C18", // class name
  bases_S1627C18, 19,
  &(vtc_S1627C18[0]), // expected_vtbl_contents
  &(vtt_S1627C18[0]), // expected_vtt_contents
  ABISELECT(56,28), // object size
  NSPAIRA(_ZTI8S1627C18),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S1627C18),32, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1627C18),16, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names121,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1627C15  : virtual S1627C16 , virtual S7856C9_nt , virtual S1627C4 , S1627C18 {
  virtual  ~S1627C15(); // _ZN8S1627C15D2Ev
  S1627C15(); // tgen
};
//SIG(-1 S1627C15) C1{ VBC2{ VBC3{ VBC4{ m} VBC5{ m} VBC6{ BC4 VBC7{ VBC4 BC5 VBC8{ m}} VBC5} BC8 BC9{ BC5 VBC4 VBC8 BC7 VBC6 vd} vd} VBC10{ BC8 BC5 BC7 Fi} VBC9 vd Fi[2]} VBC11{ m} VBC12{ VBC7 VBC13{ VBC5} VBC10 BC8 VBC3 vd Fi} BC14{ VBC9 BC10 BC6 BC8 vd} vd}


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

static void Test_S1627C15()
{
  extern Class_Descriptor cd_S1627C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,16)];
    init_test(&cd_S1627C15, buf);
    S1627C15 *dp, &lv = *(dp=new (buf) S1627C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,60), "sizeof(S1627C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1627C15)");
    /*is_ambiguous_... S1627C11::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C11*), 0, "S1627C15");
    /*is_ambiguous_... S1627C15::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C5*), 0, "S1627C15");
    /*is_ambiguous_... S1627C13::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C13*)(S1627C11*), 0, "S1627C15");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C5*)(S1627C13*)(S1627C11*), 0, "S1627C15");
    /*is_ambiguous_... S1627C15::S1627C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C5*)(S1627C10*), 0, "S1627C15");
    /*is_ambiguous_... S1627C15::S1627C13 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C13*), 0, "S1627C15");
    /*is_ambiguous_... S1627C15::S1627C13 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C5*)(S1627C13*), 0, "S1627C15");
    check_base_class_offset(lv, (S7856C24*)(S1627C5*)(S1627C10*)(S1627C18*), 0, "S1627C15");
    /*is_ambiguous_... S1627C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C11*), ABISELECT(57,33), "S1627C15");
    /*is_ambiguous_... S1627C15::S1627C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C12*), ABISELECT(57,33), "S1627C15");
    check_base_class_offset(lv, (S7856C15*)(S1627C9*), ABISELECT(57,33), "S1627C15");
    /*is_ambiguous_... S1627C18::S1627C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C12*)(S1627C18*), ABISELECT(57,33), "S1627C15");
    /*is_ambiguous_... S1627C15::S1627C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C12*), ABISELECT(32,16), "S1627C15");
    /*is_ambiguous_... S1627C15::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C5*), ABISELECT(32,16), "S1627C15");
    /*is_ambiguous_... S1627C15::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C5*), ABISELECT(57,33), "S1627C15");
    check_base_class_offset(lv, (S7856C12*)(S1627C13*)(S1627C11*), ABISELECT(57,33), "S1627C15");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C5*)(S1627C13*)(S1627C11*), ABISELECT(57,33), "S1627C15");
    /*is_ambiguous_... S1627C15::S1627C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C5*)(S1627C10*), ABISELECT(57,33), "S1627C15");
    /*is_ambiguous_... S1627C15::S1627C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C13*), ABISELECT(57,33), "S1627C15");
    /*is_ambiguous_... S1627C15::S1627C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C5*)(S1627C13*), ABISELECT(57,33), "S1627C15");
    check_base_class_offset(lv, (S7856C12*)(S1627C5*)(S1627C10*)(S1627C18*), ABISELECT(57,33), "S1627C15");
    /*is_ambiguous_... S1627C15::S1627C12 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C12*), ABISELECT(32,16), "S1627C15");
    /*is_ambiguous_... S1627C4::S1627C5 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C4*), ABISELECT(32,16), "S1627C15");
    /*is_ambiguous_... S1627C18::S1627C12 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C12*)(S1627C18*), ABISELECT(32,16), "S1627C15");
    check_base_class_offset(lv, (S1627C12*)(S1627C11*), ABISELECT(32,16), "S1627C15");
    check_base_class_offset(lv, (S1627C12*)(S1627C13*)(S1627C11*), ABISELECT(32,16), "S1627C15");
    /*is_ambiguous_... S1627C15::S1627C13 */ AMB_check_base_class_offset(lv, (S1627C12*)(S1627C13*), ABISELECT(32,16), "S1627C15");
    /*is_ambiguous_... S1627C11::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C11*), ABISELECT(48,28), "S1627C15");
    /*is_ambiguous_... S1627C13::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C13*)(S1627C11*), ABISELECT(56,32), "S1627C15");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C5*)(S1627C13*)(S1627C11*), ABISELECT(48,28), "S1627C15");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C13*)(S1627C11*), ABISELECT(48,28), "S1627C15");
    check_base_class_offset(lv, (S1627C13*)(S1627C11*), ABISELECT(48,28), "S1627C15");
    check_base_class_offset(lv, (S1627C11*)(S1627C16*), ABISELECT(48,28), "S1627C15");
    check_base_class_offset(lv, (S1627C11*)(S1627C4*), ABISELECT(48,28), "S1627C15");
    /*is_ambiguous_... S1627C15::S1627C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C10*), ABISELECT(64,36), "S1627C15");
    /*is_ambiguous_... S1627C15::S1627C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C10*), ABISELECT(72,40), "S1627C15");
    /*is_ambiguous_... S1627C15::S1627C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C5*)(S1627C10*), ABISELECT(64,36), "S1627C15");
    /*is_ambiguous_... S1627C15::S1627C10 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C10*), ABISELECT(64,36), "S1627C15");
    check_base_class_offset(lv, (S1627C10*)(S1627C16*), ABISELECT(64,36), "S1627C15");
    check_base_class_offset(lv, (S1627C10*)(S1627C4*), ABISELECT(64,36), "S1627C15");
    /*is_ambiguous_... S1627C15::S1627C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C13*), ABISELECT(88,48), "S1627C15");
    /*is_ambiguous_... S1627C15::S1627C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C5*)(S1627C13*), ABISELECT(80,44), "S1627C15");
    /*is_ambiguous_... S1627C15::S1627C13 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C13*), ABISELECT(80,44), "S1627C15");
    /*is_ambiguous_... S1627C16::S1627C13 */ AMB_check_base_class_offset(lv, (S1627C13*)(S1627C16*), ABISELECT(80,44), "S1627C15");
    check_base_class_offset(lv, (S1627C13*)(S1627C18*), ABISELECT(80,44), "S1627C15");
    check_base_class_offset(lv, (S1627C16*), ABISELECT(32,16), "S1627C15");
    check_base_class_offset(lv, (S7856C9_nt*), 0, "S1627C15");
    check_base_class_offset(lv, (S1627C9*)(S1627C4*), ABISELECT(96,52), "S1627C15");
    /*is_ambiguous_... S1627C4::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C4*), ABISELECT(96,52), "S1627C15");
    check_base_class_offset(lv, (S1627C4*), ABISELECT(96,52), "S1627C15");
    /*is_ambiguous_... S1627C10::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C10*)(S1627C18*), 0, "S1627C15");
    /*is_ambiguous_... S1627C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C10*)(S1627C18*), ABISELECT(8,4), "S1627C15");
    check_base_class_offset(lv, (S7856C15*)(S1627C5*)(S1627C10*)(S1627C18*), 0, "S1627C15");
    check_base_class_offset(lv, (S1627C5*)(S1627C10*)(S1627C18*), 0, "S1627C15");
    check_base_class_offset(lv, (S1627C10*)(S1627C18*), 0, "S1627C15");
    /*is_ambiguous_... S1627C18::S1627C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C12*)(S1627C18*), ABISELECT(16,8), "S1627C15");
    /*is_ambiguous_... S1627C18::S1627C12 */ AMB_check_base_class_offset(lv, (S1627C12*)(S1627C18*), ABISELECT(16,8), "S1627C15");
    /*is_ambiguous_... S1627C18::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C18*), ABISELECT(24,12), "S1627C15");
    check_base_class_offset(lv, (S1627C18*), 0, "S1627C15");
    test_class_info(&lv, &cd_S1627C15);
    dp->~S1627C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1627C15(Test_S1627C15, "S1627C15", ABISELECT(112,60));

#else // __cplusplus

extern void _ZN8S1627C15C1Ev();
extern void _ZN8S1627C15D2Ev();
Name_Map name_map_S1627C15[] = {
  NSPAIR(_ZN8S1627C15C1Ev),
  NSPAIR(_ZN8S1627C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S1627C12;
extern VTBL_ENTRY _ZTI8S1627C12[];
extern  VTBL_ENTRY _ZTV8S1627C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S1627C13;
extern VTBL_ENTRY _ZTI8S1627C13[];
extern  VTBL_ENTRY _ZTV8S1627C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C13[];
extern Class_Descriptor cd_S1627C11;
extern VTBL_ENTRY _ZTI8S1627C11[];
extern  VTBL_ENTRY _ZTV8S1627C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C11[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S1627C10;
extern VTBL_ENTRY _ZTI8S1627C10[];
extern  VTBL_ENTRY _ZTV8S1627C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C10[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S1627C13;
extern VTBL_ENTRY _ZTI8S1627C13[];
extern  VTBL_ENTRY _ZTV8S1627C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C13[];
extern Class_Descriptor cd_S1627C16;
extern VTBL_ENTRY _ZTI8S1627C16[];
extern  VTBL_ENTRY _ZTV8S1627C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C16[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S1627C9;
extern VTBL_ENTRY _ZTI7S1627C9[];
extern  VTBL_ENTRY _ZTV7S1627C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1627C4;
extern VTBL_ENTRY _ZTI7S1627C4[];
extern  VTBL_ENTRY _ZTV7S1627C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C4[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S1627C10;
extern VTBL_ENTRY _ZTI8S1627C10[];
extern  VTBL_ENTRY _ZTV8S1627C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C10[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S1627C12;
extern VTBL_ENTRY _ZTI8S1627C12[];
extern  VTBL_ENTRY _ZTV8S1627C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1627C18;
extern VTBL_ENTRY _ZTI8S1627C18[];
extern  VTBL_ENTRY _ZTV8S1627C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C18[];
static Base_Class bases_S1627C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(57,33), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(57,33), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S1627C5,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S1627C12,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S1627C5,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S1627C13,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S1627C11,    ABISELECT(48,28), //bcp->offset
    35, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S1627C5,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S1627C10,    ABISELECT(64,36), //bcp->offset
    45, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S1627C5,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S1627C13,    ABISELECT(80,44), //bcp->offset
    49, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S1627C16,    ABISELECT(32,16), //bcp->offset
    22, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1627C9,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S1627C4,    ABISELECT(96,52), //bcp->offset
    59, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S1627C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S1627C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S1627C12,    ABISELECT(16,8), //bcp->offset
    16, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S1627C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S1627C15[];
extern void _ZN8S1627C15D1Ev();
extern void _ZN8S1627C15D0Ev();
extern void ABISELECT(_ZTv0_n88_N8S1627C15D1Ev,_ZTv0_n44_N8S1627C15D1Ev)();
extern void ABISELECT(_ZThn32_N8S1627C15D1Ev,_ZThn16_N8S1627C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1627C15D0Ev,_ZTv0_n44_N8S1627C15D0Ev)();
extern void ABISELECT(_ZThn32_N8S1627C15D0Ev,_ZThn16_N8S1627C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1627C15D1Ev,_ZTv0_n32_N8S1627C15D1Ev)();
extern void ABISELECT(_ZThn48_N8S1627C15D1Ev,_ZThn28_N8S1627C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1627C15D0Ev,_ZTv0_n32_N8S1627C15D0Ev)();
extern void ABISELECT(_ZThn48_N8S1627C15D0Ev,_ZThn28_N8S1627C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1627C15D1Ev,_ZTv0_n32_N8S1627C15D1Ev)();
extern void ABISELECT(_ZThn80_N8S1627C15D1Ev,_ZThn44_N8S1627C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1627C15D0Ev,_ZTv0_n32_N8S1627C15D0Ev)();
extern void ABISELECT(_ZThn80_N8S1627C15D0Ev,_ZThn44_N8S1627C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1627C15D1Ev,_ZTv0_n44_N8S1627C15D1Ev)();
extern void ABISELECT(_ZThn96_N8S1627C15D1Ev,_ZThn52_N8S1627C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1627C15D0Ev,_ZTv0_n44_N8S1627C15D0Ev)();
extern void ABISELECT(_ZThn96_N8S1627C15D0Ev,_ZThn52_N8S1627C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S1627C15[] = {
  ABISELECT(96,52),
  ABISELECT(96,52),
  0,
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(57,33),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
  (VTBL_ENTRY)&_ZN8S1627C15D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C15D0Ev,
  ABISELECT(41,25),
  ABISELECT(16,8),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
  ABISELECT(-32,-16),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C15D1Ev,_ZTv0_n44_N8S1627C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C15D0Ev,_ZTv0_n44_N8S1627C15D0Ev),
  ABISELECT(-48,-28),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C15D1Ev,_ZTv0_n32_N8S1627C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C15D0Ev,_ZTv0_n32_N8S1627C15D0Ev),
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
  ABISELECT(-80,-44),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C15D1Ev,_ZTv0_n32_N8S1627C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C15D0Ev,_ZTv0_n32_N8S1627C15D0Ev),
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-39,-19),
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-39,-19),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C15D1Ev,_ZTv0_n44_N8S1627C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C15D0Ev,_ZTv0_n44_N8S1627C15D0Ev),
};
extern VTBL_ENTRY _ZTV8S1627C15[];
extern void _ZN8S1627C18D1Ev();
extern void _ZN8S1627C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C18__8S1627C15[] = {
  ABISELECT(57,33),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C18[0]),
  (VTBL_ENTRY)&_ZN8S1627C18D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1627C108S1627C18__A1__8S1627C15[] = {
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C58S1627C108S1627C18__A4__8S1627C15[] = {
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C128S1627C18__A1__8S1627C15[] = {
  ABISELECT(41,25),
  ABISELECT(16,8),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C5__8S1627C128S1627C18__A1__8S1627C15[] = {
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1627C12[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1627C18D1Ev,_ZTv0_n32_N8S1627C18D1Ev)();
extern void ABISELECT(_ZThn80_N8S1627C18D1Ev,_ZThn44_N8S1627C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1627C18D0Ev,_ZTv0_n32_N8S1627C18D0Ev)();
extern void ABISELECT(_ZThn80_N8S1627C18D0Ev,_ZThn44_N8S1627C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1627C13__8S1627C18__8S1627C15[] = {
  ABISELECT(-80,-44),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S1627C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C18D1Ev,_ZTv0_n32_N8S1627C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C18D0Ev,_ZTv0_n32_N8S1627C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C18__8S1627C15[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S1627C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__A__8S1627C18__8S1627C15[] = {
  ABISELECT(41,25),
  ABISELECT(16,8),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1627C18[0]),
};
extern void _ZN8S1627C16D1Ev();
extern void _ZN8S1627C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C16__8S1627C15[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C16[0]),
  (VTBL_ENTRY)&_ZN8S1627C16D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C16D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N8S1627C16D1Ev,_ZTv0_n32_N8S1627C16D1Ev)();
extern void ABISELECT(_ZThn16_N8S1627C16D1Ev,_ZThn12_N8S1627C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1627C16D0Ev,_ZTv0_n32_N8S1627C16D0Ev)();
extern void ABISELECT(_ZThn16_N8S1627C16D0Ev,_ZThn12_N8S1627C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1627C11__8S1627C16__8S1627C15[] = {
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S1627C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C16D1Ev,_ZTv0_n32_N8S1627C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C16D0Ev,_ZTv0_n32_N8S1627C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1627C10__8S1627C16__8S1627C15[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S1627C16[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1627C16D1Ev,_ZTv0_n32_N8S1627C16D1Ev)();
extern void ABISELECT(_ZThn48_N8S1627C16D1Ev,_ZThn28_N8S1627C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1627C16D0Ev,_ZTv0_n32_N8S1627C16D0Ev)();
extern void ABISELECT(_ZThn48_N8S1627C16D0Ev,_ZThn28_N8S1627C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1627C13__A1__8S1627C16__8S1627C15[] = {
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S1627C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C16D1Ev,_ZTv0_n32_N8S1627C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C16D0Ev,_ZTv0_n32_N8S1627C16D0Ev),
};
extern void _ZN8S1627C11D1Ev();
extern void _ZN8S1627C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C11__8S1627C15[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C11[0]),
  (VTBL_ENTRY)&_ZN8S1627C11D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C11D0Ev,
};
extern void _ZN8S1627C13D1Ev();
extern void _ZN8S1627C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C138S1627C11__8S1627C15[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C13[0]),
  (VTBL_ENTRY)&_ZN8S1627C13D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1627C58S1627C138S1627C11__A1__8S1627C15[] = {
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C138S1627C11__8S1627C15[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S1627C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C11__8S1627C15[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S1627C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C15[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C5__8S1627C15[] = {
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C10__8S1627C15[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C58S1627C10__A2__8S1627C15[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
extern void _ZN8S1627C13D1Ev();
extern void _ZN8S1627C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C13__A1__8S1627C15[] = {
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C13[0]),
  (VTBL_ENTRY)&_ZN8S1627C13D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1627C58S1627C13__A3__8S1627C15[] = {
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C13__A1__8S1627C15[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S1627C13[0]),
};
extern void _ZN7S1627C4D1Ev();
extern void _ZN7S1627C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1627C4__8S1627C15[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-39,-19),
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-39,-19),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
  (VTBL_ENTRY)&_ZN7S1627C4D1Ev,
  (VTBL_ENTRY)&_ZN7S1627C4D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__7S1627C4__8S1627C15[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C10__7S1627C4__8S1627C15[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S1627C4D1Ev,_ZTv0_n32_N7S1627C4D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S1627C4D0Ev,_ZTv0_n32_N7S1627C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1627C11__7S1627C4__8S1627C15[] = {
  ABISELECT(48,24),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C4D1Ev,_ZTv0_n32_N7S1627C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C4D0Ev,_ZTv0_n32_N7S1627C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1627C9__8S1627C15[] = {
  ABISELECT(-39,-19),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C9[0]),
};
static  VTT_ENTRY vtt_S1627C15[] = {
  {&(_ZTV8S1627C15[14]),  14,72},
  {&(_tg__ZTV8S1627C18__8S1627C15[8]),  8,10},
  {&(_tg__ZTV8S1627C108S1627C18__A1__8S1627C15[4]),  4,4},
  {&(_tg__ZTV7S1627C58S1627C108S1627C18__A4__8S1627C15[4]),  4,4},
  {&(_tg__ZTV8S1627C128S1627C18__A1__8S1627C15[6]),  6,6},
  {&(_tg__ZTV7S1627C5__8S1627C128S1627C18__A1__8S1627C15[4]),  4,4},
  {&(_tg__ZTV8S1627C13__8S1627C18__8S1627C15[8]),  8,10},
  {&(_tg__ZTV8S1627C12__8S1627C18__8S1627C15[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C18__8S1627C15[6]),  6,6},
  {&(_tg__ZTV8S1627C12__A__8S1627C18__8S1627C15[6]),  6,6},
  {&(_ZTV8S1627C15[33]),  33,72},
  {&(_ZTV8S1627C15[43]),  43,72},
  {&(_ZTV8S1627C15[33]),  33,72},
  {&(_ZTV8S1627C15[33]),  33,72},
  {&(_ZTV8S1627C15[49]),  49,72},
  {&(_ZTV8S1627C15[57]),  57,72},
  {&(_ZTV8S1627C15[70]),  70,72},
  {&(_ZTV8S1627C15[70]),  70,72},
  {&(_ZTV8S1627C15[22]),  22,72},
  {&(_tg__ZTV8S1627C16__8S1627C15[10]),  10,12},
  {&(_tg__ZTV8S1627C11__8S1627C16__8S1627C15[8]),  8,10},
  {&(_tg__ZTV8S1627C16__8S1627C15[10]),  10,12},
  {&(_tg__ZTV8S1627C16__8S1627C15[10]),  10,12},
  {&(_tg__ZTV8S1627C10__8S1627C16__8S1627C15[4]),  4,4},
  {&(_tg__ZTV8S1627C13__A1__8S1627C16__8S1627C15[8]),  8,10},
  {&(_tg__ZTV8S1627C11__8S1627C15[7]),  7,9},
  {&(_tg__ZTV8S1627C138S1627C11__8S1627C15[7]),  7,9},
  {&(_tg__ZTV7S1627C58S1627C138S1627C11__A1__8S1627C15[4]),  4,4},
  {&(_tg__ZTV8S1627C12__8S1627C138S1627C11__8S1627C15[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C138S1627C11__8S1627C15[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C11__8S1627C15[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C11__8S1627C15[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C15[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C15[6]),  6,6},
  {&(_tg__ZTV7S1627C5__8S1627C15[4]),  4,4},
  {&(_tg__ZTV8S1627C10__8S1627C15[4]),  4,4},
  {&(_tg__ZTV7S1627C58S1627C10__A2__8S1627C15[4]),  4,4},
  {&(_tg__ZTV8S1627C13__A1__8S1627C15[7]),  7,9},
  {&(_tg__ZTV7S1627C58S1627C13__A3__8S1627C15[4]),  4,4},
  {&(_tg__ZTV8S1627C12__8S1627C13__A1__8S1627C15[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C13__A1__8S1627C15[6]),  6,6},
  {&(_tg__ZTV7S1627C4__8S1627C15[10]),  10,12},
  {&(_tg__ZTV8S1627C12__7S1627C4__8S1627C15[6]),  6,6},
  {&(_tg__ZTV7S1627C4__8S1627C15[10]),  10,12},
  {&(_tg__ZTV8S1627C10__7S1627C4__8S1627C15[4]),  4,4},
  {&(_tg__ZTV8S1627C11__7S1627C4__8S1627C15[8]),  8,10},
  {&(_tg__ZTV8S1627C12__7S1627C4__8S1627C15[6]),  6,6},
  {&(_tg__ZTV7S1627C9__8S1627C15[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S1627C15[];
extern  VTBL_ENTRY _ZTV8S1627C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C15[];
static VTBL_ENTRY alt_thunk_names122[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1627C16D0Ev,_ZTv0_n32_N8S1627C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S1627C16D0Ev,_ZThn28_N8S1627C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S1627C16D0Ev,_ZThn12_N8S1627C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1627C16D1Ev,_ZTv0_n32_N8S1627C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S1627C16D1Ev,_ZThn28_N8S1627C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S1627C16D1Ev,_ZThn12_N8S1627C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1627C18D0Ev,_ZTv0_n32_N8S1627C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S1627C18D0Ev,_ZThn44_N8S1627C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1627C18D1Ev,_ZTv0_n32_N8S1627C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S1627C18D1Ev,_ZThn44_N8S1627C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1627C15D0Ev,_ZTv0_n32_N8S1627C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S1627C15D0Ev,_ZThn44_N8S1627C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S1627C15D0Ev,_ZThn28_N8S1627C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1627C15D1Ev,_ZTv0_n32_N8S1627C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S1627C15D1Ev,_ZThn44_N8S1627C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S1627C15D1Ev,_ZThn28_N8S1627C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1627C15D0Ev,_ZTv0_n44_N8S1627C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S1627C15D0Ev,_ZThn52_N8S1627C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S1627C15D0Ev,_ZThn16_N8S1627C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1627C15D1Ev,_ZTv0_n44_N8S1627C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S1627C15D1Ev,_ZThn52_N8S1627C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S1627C15D1Ev,_ZThn16_N8S1627C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S1627C15 = {  "S1627C15", // class name
  bases_S1627C15, 36,
  &(vtc_S1627C15[0]), // expected_vtbl_contents
  &(vtt_S1627C15[0]), // expected_vtt_contents
  ABISELECT(112,60), // object size
  NSPAIRA(_ZTI8S1627C15),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S1627C15),72, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1627C15),48, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names122,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1627C19  : S7856C15 , S1627C9 {
  virtual  ~S1627C19(); // _ZN8S1627C19D2Ev
  S1627C19(); // tgen
};
//SIG(-1 S1627C19) C1{ BC2{ m} BC3{ VBC2} vd}


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

static void Test_S1627C19()
{
  extern Class_Descriptor cd_S1627C19;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S1627C19, buf);
    S1627C19 *dp, &lv = *(dp=new (buf) S1627C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S1627C19)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1627C19)");
    /*is_ambiguous_... S1627C19::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), 0, "S1627C19");
    check_base_class_offset(lv, (S7856C15*)(S1627C9*), ABISELECT(8,4), "S1627C19");
    check_base_class_offset(lv, (S1627C9*), 0, "S1627C19");
    test_class_info(&lv, &cd_S1627C19);
    dp->~S1627C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1627C19(Test_S1627C19, "S1627C19", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S1627C19C1Ev();
extern void _ZN8S1627C19D2Ev();
Name_Map name_map_S1627C19[] = {
  NSPAIR(_ZN8S1627C19C1Ev),
  NSPAIR(_ZN8S1627C19D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C9;
extern VTBL_ENTRY _ZTI7S1627C9[];
extern  VTBL_ENTRY _ZTV7S1627C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C9[];
static Base_Class bases_S1627C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S1627C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S1627C19[];
extern void _ZN8S1627C19D1Ev();
extern void _ZN8S1627C19D0Ev();
static  VTBL_ENTRY vtc_S1627C19[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C19[0]),
  (VTBL_ENTRY)&_ZN8S1627C19D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C19D0Ev,
};
extern VTBL_ENTRY _ZTV8S1627C19[];
static  VTBL_ENTRY _tg__ZTV7S1627C9__8S1627C19[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C9[0]),
};
static  VTT_ENTRY vtt_S1627C19[] = {
  {&(_ZTV8S1627C19[3]),  3,5},
  {&(_tg__ZTV7S1627C9__8S1627C19[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S1627C19[];
extern  VTBL_ENTRY _ZTV8S1627C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C19[];
Class_Descriptor cd_S1627C19 = {  "S1627C19", // class name
  bases_S1627C19, 3,
  &(vtc_S1627C19[0]), // expected_vtbl_contents
  &(vtt_S1627C19[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S1627C19),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S1627C19),5, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1627C19),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1627C14  : S1627C9 , virtual S7856C12 , S1627C15 , S1627C19 {
  virtual  ~S1627C14(); // _ZN8S1627C14D2Ev
  S1627C14(); // tgen
};
//SIG(-1 S1627C14) C1{ BC2{ VBC3{ m}} VBC4{ m} BC5{ VBC6{ VBC7{ VBC8{ m} VBC3 VBC9{ BC8 VBC10{ VBC8 BC3 VBC4} VBC3} BC4 BC11{ BC3 VBC8 VBC4 BC10 VBC9 vd} vd} VBC12{ BC4 BC3 BC10 Fi} VBC11 vd Fi[2]} VBC13{ m} VBC14{ VBC10 VBC2 VBC12 BC4 VBC7 vd Fi} BC15{ VBC11 BC12 BC9 BC4 vd} vd} BC16{ BC3 BC2 vd} vd}


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

static void Test_S1627C14()
{
  extern Class_Descriptor cd_S1627C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,18)];
    init_test(&cd_S1627C14, buf);
    S1627C14 *dp, &lv = *(dp=new (buf) S1627C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,68), "sizeof(S1627C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1627C14)");
    /*is_ambiguous_... S1627C14::S1627C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C9*), 0, "S1627C14");
    /*is_ambiguous_... S1627C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C11*), 0, "S1627C14");
    /*is_ambiguous_... S1627C14::S1627C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C12*), 0, "S1627C14");
    /*is_ambiguous_... S1627C14::S1627C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C9*), 0, "S1627C14");
    /*is_ambiguous_... S1627C18::S1627C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C12*)(S1627C18*)(S1627C15*), 0, "S1627C14");
    check_base_class_offset(lv, (S7856C15*)(S1627C9*)(S1627C19*), 0, "S1627C14");
    /*is_ambiguous_... S1627C14::S1627C9 */ AMB_check_base_class_offset(lv, (S1627C9*), 0, "S1627C14");
    /*is_ambiguous_... S1627C14::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), 0, "S1627C14");
    /*is_ambiguous_... S1627C14::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C5*), 0, "S1627C14");
    check_base_class_offset(lv, (S7856C12*)(S1627C13*)(S1627C11*), 0, "S1627C14");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C5*)(S1627C13*)(S1627C11*), 0, "S1627C14");
    /*is_ambiguous_... S1627C14::S1627C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C5*)(S1627C10*), 0, "S1627C14");
    /*is_ambiguous_... S1627C14::S1627C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C13*), 0, "S1627C14");
    /*is_ambiguous_... S1627C14::S1627C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C5*)(S1627C13*), 0, "S1627C14");
    check_base_class_offset(lv, (S7856C12*)(S1627C5*)(S1627C10*)(S1627C18*)(S1627C15*), 0, "S1627C14");
    /*is_ambiguous_... S1627C11::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C11*), 0, "S1627C14");
    /*is_ambiguous_... S1627C14::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C5*), 0, "S1627C14");
    /*is_ambiguous_... S1627C13::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C13*)(S1627C11*), 0, "S1627C14");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C5*)(S1627C13*)(S1627C11*), 0, "S1627C14");
    /*is_ambiguous_... S1627C14::S1627C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C5*)(S1627C10*), 0, "S1627C14");
    /*is_ambiguous_... S1627C14::S1627C13 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C13*), 0, "S1627C14");
    /*is_ambiguous_... S1627C14::S1627C13 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C5*)(S1627C13*), 0, "S1627C14");
    check_base_class_offset(lv, (S7856C24*)(S1627C5*)(S1627C10*)(S1627C18*)(S1627C15*), 0, "S1627C14");
    /*is_ambiguous_... S1627C14::S1627C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C12*), ABISELECT(48,24), "S1627C14");
    /*is_ambiguous_... S1627C14::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C5*), ABISELECT(48,24), "S1627C14");
    /*is_ambiguous_... S1627C14::S1627C12 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C12*), ABISELECT(48,24), "S1627C14");
    /*is_ambiguous_... S1627C4::S1627C5 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C4*), ABISELECT(48,24), "S1627C14");
    /*is_ambiguous_... S1627C18::S1627C12 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C12*)(S1627C18*)(S1627C15*), ABISELECT(48,24), "S1627C14");
    check_base_class_offset(lv, (S1627C12*)(S1627C11*), ABISELECT(48,24), "S1627C14");
    check_base_class_offset(lv, (S1627C12*)(S1627C13*)(S1627C11*), ABISELECT(48,24), "S1627C14");
    /*is_ambiguous_... S1627C14::S1627C13 */ AMB_check_base_class_offset(lv, (S1627C12*)(S1627C13*), ABISELECT(48,24), "S1627C14");
    /*is_ambiguous_... S1627C11::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C11*), ABISELECT(64,36), "S1627C14");
    /*is_ambiguous_... S1627C13::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C13*)(S1627C11*), ABISELECT(72,40), "S1627C14");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C5*)(S1627C13*)(S1627C11*), ABISELECT(64,36), "S1627C14");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C13*)(S1627C11*), ABISELECT(64,36), "S1627C14");
    check_base_class_offset(lv, (S1627C13*)(S1627C11*), ABISELECT(64,36), "S1627C14");
    check_base_class_offset(lv, (S1627C11*)(S1627C16*), ABISELECT(64,36), "S1627C14");
    check_base_class_offset(lv, (S1627C11*)(S1627C4*), ABISELECT(64,36), "S1627C14");
    /*is_ambiguous_... S1627C14::S1627C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C10*), ABISELECT(80,44), "S1627C14");
    /*is_ambiguous_... S1627C14::S1627C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C10*), ABISELECT(88,48), "S1627C14");
    /*is_ambiguous_... S1627C14::S1627C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C5*)(S1627C10*), ABISELECT(80,44), "S1627C14");
    /*is_ambiguous_... S1627C14::S1627C10 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C10*), ABISELECT(80,44), "S1627C14");
    check_base_class_offset(lv, (S1627C10*)(S1627C16*), ABISELECT(80,44), "S1627C14");
    check_base_class_offset(lv, (S1627C10*)(S1627C4*), ABISELECT(80,44), "S1627C14");
    /*is_ambiguous_... S1627C14::S1627C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C13*), ABISELECT(104,56), "S1627C14");
    /*is_ambiguous_... S1627C14::S1627C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C5*)(S1627C13*), ABISELECT(96,52), "S1627C14");
    /*is_ambiguous_... S1627C14::S1627C13 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C13*), ABISELECT(96,52), "S1627C14");
    /*is_ambiguous_... S1627C16::S1627C13 */ AMB_check_base_class_offset(lv, (S1627C13*)(S1627C16*), ABISELECT(96,52), "S1627C14");
    check_base_class_offset(lv, (S1627C13*)(S1627C18*)(S1627C15*), ABISELECT(96,52), "S1627C14");
    check_base_class_offset(lv, (S1627C16*)(S1627C15*), ABISELECT(48,24), "S1627C14");
    check_base_class_offset(lv, (S7856C9_nt*)(S1627C15*), 0, "S1627C14");
    check_base_class_offset(lv, (S1627C9*)(S1627C4*), ABISELECT(112,60), "S1627C14");
    /*is_ambiguous_... S1627C4::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C4*), ABISELECT(112,60), "S1627C14");
    check_base_class_offset(lv, (S1627C4*)(S1627C15*), ABISELECT(112,60), "S1627C14");
    /*is_ambiguous_... S1627C10::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C10*)(S1627C18*)(S1627C15*), ABISELECT(8,4), "S1627C14");
    /*is_ambiguous_... S1627C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C10*)(S1627C18*)(S1627C15*), ABISELECT(16,8), "S1627C14");
    check_base_class_offset(lv, (S7856C15*)(S1627C5*)(S1627C10*)(S1627C18*)(S1627C15*), ABISELECT(8,4), "S1627C14");
    check_base_class_offset(lv, (S1627C5*)(S1627C10*)(S1627C18*)(S1627C15*), ABISELECT(8,4), "S1627C14");
    check_base_class_offset(lv, (S1627C10*)(S1627C18*)(S1627C15*), ABISELECT(8,4), "S1627C14");
    /*is_ambiguous_... S1627C18::S1627C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C12*)(S1627C18*)(S1627C15*), ABISELECT(24,12), "S1627C14");
    /*is_ambiguous_... S1627C18::S1627C12 */ AMB_check_base_class_offset(lv, (S1627C12*)(S1627C18*)(S1627C15*), ABISELECT(24,12), "S1627C14");
    /*is_ambiguous_... S1627C18::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C18*)(S1627C15*), ABISELECT(32,16), "S1627C14");
    check_base_class_offset(lv, (S1627C18*)(S1627C15*), ABISELECT(8,4), "S1627C14");
    check_base_class_offset(lv, (S1627C15*), ABISELECT(8,4), "S1627C14");
    /*is_ambiguous_... S1627C19::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C19*), ABISELECT(40,20), "S1627C14");
    check_base_class_offset(lv, (S1627C9*)(S1627C19*), ABISELECT(40,20), "S1627C14");
    check_base_class_offset(lv, (S1627C19*), ABISELECT(40,20), "S1627C14");
    test_class_info(&lv, &cd_S1627C14);
    dp->~S1627C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1627C14(Test_S1627C14, "S1627C14", ABISELECT(128,68));

#else // __cplusplus

extern void _ZN8S1627C14C1Ev();
extern void _ZN8S1627C14D2Ev();
Name_Map name_map_S1627C14[] = {
  NSPAIR(_ZN8S1627C14C1Ev),
  NSPAIR(_ZN8S1627C14D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C9;
extern VTBL_ENTRY _ZTI7S1627C9[];
extern  VTBL_ENTRY _ZTV7S1627C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S1627C12;
extern VTBL_ENTRY _ZTI8S1627C12[];
extern  VTBL_ENTRY _ZTV8S1627C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S1627C13;
extern VTBL_ENTRY _ZTI8S1627C13[];
extern  VTBL_ENTRY _ZTV8S1627C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C13[];
extern Class_Descriptor cd_S1627C11;
extern VTBL_ENTRY _ZTI8S1627C11[];
extern  VTBL_ENTRY _ZTV8S1627C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C11[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S1627C10;
extern VTBL_ENTRY _ZTI8S1627C10[];
extern  VTBL_ENTRY _ZTV8S1627C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C10[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S1627C13;
extern VTBL_ENTRY _ZTI8S1627C13[];
extern  VTBL_ENTRY _ZTV8S1627C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C13[];
extern Class_Descriptor cd_S1627C16;
extern VTBL_ENTRY _ZTI8S1627C16[];
extern  VTBL_ENTRY _ZTV8S1627C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C16[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S1627C9;
extern VTBL_ENTRY _ZTI7S1627C9[];
extern  VTBL_ENTRY _ZTV7S1627C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1627C4;
extern VTBL_ENTRY _ZTI7S1627C4[];
extern  VTBL_ENTRY _ZTV7S1627C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C4[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S1627C10;
extern VTBL_ENTRY _ZTI8S1627C10[];
extern  VTBL_ENTRY _ZTV8S1627C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C10[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S1627C12;
extern VTBL_ENTRY _ZTI8S1627C12[];
extern  VTBL_ENTRY _ZTV8S1627C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1627C18;
extern VTBL_ENTRY _ZTI8S1627C18[];
extern  VTBL_ENTRY _ZTV8S1627C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C18[];
extern Class_Descriptor cd_S1627C15;
extern VTBL_ENTRY _ZTI8S1627C15[];
extern  VTBL_ENTRY _ZTV8S1627C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C9;
extern VTBL_ENTRY _ZTI7S1627C9[];
extern  VTBL_ENTRY _ZTV7S1627C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C9[];
extern Class_Descriptor cd_S1627C19;
extern VTBL_ENTRY _ZTI8S1627C19[];
extern  VTBL_ENTRY _ZTV8S1627C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C19[];
static Base_Class bases_S1627C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S1627C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S1627C5,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S1627C12,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S1627C5,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S1627C13,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S1627C11,    ABISELECT(64,36), //bcp->offset
    56, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S1627C5,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S1627C10,    ABISELECT(80,44), //bcp->offset
    66, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S1627C5,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S1627C13,    ABISELECT(96,52), //bcp->offset
    70, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S1627C16,    ABISELECT(48,24), //bcp->offset
    43, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    37, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    37, //immediately_derived
  0, 1},
  {&cd_S1627C9,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S1627C4,    ABISELECT(112,60), //bcp->offset
    80, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    37, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S1627C5,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S1627C10,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S1627C12,    ABISELECT(24,12), //bcp->offset
    32, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S1627C18,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S1627C15,    ABISELECT(8,4), //bcp->offset
    16, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C15,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S1627C9,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S1627C19,    ABISELECT(40,20), //bcp->offset
    38, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S1627C14[];
extern void _ZN8S1627C14D1Ev();
extern void _ZN8S1627C14D0Ev();
extern void ABISELECT(_ZThn8_N8S1627C14D1Ev,_ZThn4_N8S1627C14D1Ev)();
extern void ABISELECT(_ZThn8_N8S1627C14D0Ev,_ZThn4_N8S1627C14D0Ev)();
extern void ABISELECT(_ZThn40_N8S1627C14D1Ev,_ZThn20_N8S1627C14D1Ev)();
extern void ABISELECT(_ZThn40_N8S1627C14D0Ev,_ZThn20_N8S1627C14D0Ev)();
extern void ABISELECT(_ZTv0_n88_N8S1627C14D1Ev,_ZTv0_n44_N8S1627C14D1Ev)();
extern void ABISELECT(_ZThn48_N8S1627C14D1Ev,_ZThn24_N8S1627C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1627C14D0Ev,_ZTv0_n44_N8S1627C14D0Ev)();
extern void ABISELECT(_ZThn48_N8S1627C14D0Ev,_ZThn24_N8S1627C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1627C14D1Ev,_ZTv0_n32_N8S1627C14D1Ev)();
extern void ABISELECT(_ZThn64_N8S1627C14D1Ev,_ZThn36_N8S1627C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1627C14D0Ev,_ZTv0_n32_N8S1627C14D0Ev)();
extern void ABISELECT(_ZThn64_N8S1627C14D0Ev,_ZThn36_N8S1627C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1627C14D1Ev,_ZTv0_n32_N8S1627C14D1Ev)();
extern void ABISELECT(_ZThn96_N8S1627C14D1Ev,_ZThn52_N8S1627C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1627C14D0Ev,_ZTv0_n32_N8S1627C14D0Ev)();
extern void ABISELECT(_ZThn96_N8S1627C14D0Ev,_ZThn52_N8S1627C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1627C14D1Ev,_ZTv0_n44_N8S1627C14D1Ev)();
extern void ABISELECT(_ZThn112_N8S1627C14D1Ev,_ZThn60_N8S1627C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1627C14D0Ev,_ZTv0_n44_N8S1627C14D0Ev)();
extern void ABISELECT(_ZThn112_N8S1627C14D0Ev,_ZThn60_N8S1627C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S1627C14[] = {
  ABISELECT(112,60),
  ABISELECT(112,60),
  0,
  ABISELECT(96,52),
  ABISELECT(80,44),
  ABISELECT(48,24),
  ABISELECT(48,24),
  0,
  ABISELECT(64,36),
  ABISELECT(48,24),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C14[0]),
  (VTBL_ENTRY)&_ZN8S1627C14D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C14D0Ev,
  ABISELECT(104,56),
  ABISELECT(104,56),
  ABISELECT(-8,-4),
  ABISELECT(72,40),
  ABISELECT(56,32),
  ABISELECT(40,20),
  ABISELECT(-8,-4),
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(88,48),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S1627C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S1627C14D1Ev,_ZThn4_N8S1627C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S1627C14D0Ev,_ZThn4_N8S1627C14D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S1627C14[0]),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S1627C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S1627C14D1Ev,_ZThn20_N8S1627C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S1627C14D0Ev,_ZThn20_N8S1627C14D0Ev),
  ABISELECT(-48,-24),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S1627C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C14D1Ev,_ZTv0_n44_N8S1627C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C14D0Ev,_ZTv0_n44_N8S1627C14D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S1627C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C14D1Ev,_ZTv0_n32_N8S1627C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C14D0Ev,_ZTv0_n32_N8S1627C14D0Ev),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S1627C14[0]),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S1627C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C14D1Ev,_ZTv0_n32_N8S1627C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C14D0Ev,_ZTv0_n32_N8S1627C14D0Ev),
  ABISELECT(-112,-60),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-64,-36),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S1627C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C14D1Ev,_ZTv0_n44_N8S1627C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C14D0Ev,_ZTv0_n44_N8S1627C14D0Ev),
};
extern VTBL_ENTRY _ZTV8S1627C14[];
static  VTBL_ENTRY _tg__ZTV7S1627C9__A__8S1627C14[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C9[0]),
};
extern void _ZN8S1627C15D1Ev();
extern void _ZN8S1627C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C15__8S1627C14[] = {
  ABISELECT(104,56),
  ABISELECT(104,56),
  ABISELECT(-8,-4),
  ABISELECT(72,40),
  ABISELECT(56,32),
  ABISELECT(40,20),
  ABISELECT(-8,-4),
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(88,48),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
  (VTBL_ENTRY)&_ZN8S1627C15D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C15D0Ev,
};
extern void _ZN8S1627C18D1Ev();
extern void _ZN8S1627C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C188S1627C15__8S1627C14[] = {
  ABISELECT(-8,-4),
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(88,48),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C18[0]),
  (VTBL_ENTRY)&_ZN8S1627C18D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1627C108S1627C188S1627C15__A1__8S1627C14[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C58S1627C108S1627C188S1627C15__A4__8S1627C14[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C128S1627C188S1627C15__A1__8S1627C14[] = {
  ABISELECT(-24,-12),
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C5__8S1627C128S1627C188S1627C15__A1__8S1627C14[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S1627C12[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1627C18D1Ev,_ZTv0_n32_N8S1627C18D1Ev)();
extern void ABISELECT(_ZThn88_N8S1627C18D1Ev,_ZThn48_N8S1627C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1627C18D0Ev,_ZTv0_n32_N8S1627C18D0Ev)();
extern void ABISELECT(_ZThn88_N8S1627C18D0Ev,_ZThn48_N8S1627C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1627C13__8S1627C188S1627C15__8S1627C14[] = {
  ABISELECT(-88,-48),
  ABISELECT(-96,-52),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S1627C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C18D1Ev,_ZTv0_n32_N8S1627C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C18D0Ev,_ZTv0_n32_N8S1627C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C188S1627C15__8S1627C14[] = {
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S1627C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__A__8S1627C188S1627C15__8S1627C14[] = {
  ABISELECT(-24,-12),
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1627C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S1627C15D1Ev,_ZTv0_n44_N8S1627C15D1Ev)();
extern void ABISELECT(_ZThn40_N8S1627C15D1Ev,_ZThn20_N8S1627C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1627C15D0Ev,_ZTv0_n44_N8S1627C15D0Ev)();
extern void ABISELECT(_ZThn40_N8S1627C15D0Ev,_ZThn20_N8S1627C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1627C16__8S1627C15__8S1627C14[] = {
  ABISELECT(-40,-20),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C15D1Ev,_ZTv0_n44_N8S1627C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C15D0Ev,_ZTv0_n44_N8S1627C15D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S1627C15D1Ev,_ZTv0_n32_N8S1627C15D1Ev)();
extern void ABISELECT(_ZThn56_N8S1627C15D1Ev,_ZThn32_N8S1627C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1627C15D0Ev,_ZTv0_n32_N8S1627C15D0Ev)();
extern void ABISELECT(_ZThn56_N8S1627C15D0Ev,_ZThn32_N8S1627C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1627C11__8S1627C15__8S1627C14[] = {
  ABISELECT(-56,-32),
  ABISELECT(-64,-36),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C15D1Ev,_ZTv0_n32_N8S1627C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C15D0Ev,_ZTv0_n32_N8S1627C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1627C10__8S1627C15__8S1627C14[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1627C15D1Ev,_ZTv0_n32_N8S1627C15D1Ev)();
extern void ABISELECT(_ZThn88_N8S1627C15D1Ev,_ZThn48_N8S1627C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1627C15D0Ev,_ZTv0_n32_N8S1627C15D0Ev)();
extern void ABISELECT(_ZThn88_N8S1627C15D0Ev,_ZThn48_N8S1627C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1627C13__A1__8S1627C15__8S1627C14[] = {
  ABISELECT(-88,-48),
  ABISELECT(-96,-52),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C15D1Ev,_ZTv0_n32_N8S1627C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C15D0Ev,_ZTv0_n32_N8S1627C15D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S1627C15D1Ev,_ZTv0_n44_N8S1627C15D1Ev)();
extern void ABISELECT(_ZThn104_N8S1627C15D1Ev,_ZThn56_N8S1627C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1627C15D0Ev,_ZTv0_n44_N8S1627C15D0Ev)();
extern void ABISELECT(_ZThn104_N8S1627C15D0Ev,_ZThn56_N8S1627C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1627C4__8S1627C15__8S1627C14[] = {
  ABISELECT(-104,-56),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-64,-36),
  ABISELECT(-112,-60),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C15D1Ev,_ZTv0_n44_N8S1627C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C15D0Ev,_ZTv0_n44_N8S1627C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1627C128S1627C18__A1__8S1627C15__8S1627C14[] = {
  ABISELECT(-24,-12),
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
};
extern void _ZN8S1627C19D1Ev();
extern void _ZN8S1627C19D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C19__8S1627C14[] = {
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C19[0]),
  (VTBL_ENTRY)&_ZN8S1627C19D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C19D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1627C98S1627C19__A2__8S1627C14[] = {
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C9[0]),
};
extern void _ZN8S1627C16D1Ev();
extern void _ZN8S1627C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C16__8S1627C14[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C16[0]),
  (VTBL_ENTRY)&_ZN8S1627C16D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C16D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N8S1627C16D1Ev,_ZTv0_n32_N8S1627C16D1Ev)();
extern void ABISELECT(_ZThn16_N8S1627C16D1Ev,_ZThn12_N8S1627C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1627C16D0Ev,_ZTv0_n32_N8S1627C16D0Ev)();
extern void ABISELECT(_ZThn16_N8S1627C16D0Ev,_ZThn12_N8S1627C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1627C11__8S1627C16__8S1627C14[] = {
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S1627C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C16D1Ev,_ZTv0_n32_N8S1627C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C16D0Ev,_ZTv0_n32_N8S1627C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1627C10__8S1627C16__8S1627C14[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S1627C16[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1627C16D1Ev,_ZTv0_n32_N8S1627C16D1Ev)();
extern void ABISELECT(_ZThn48_N8S1627C16D1Ev,_ZThn28_N8S1627C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1627C16D0Ev,_ZTv0_n32_N8S1627C16D0Ev)();
extern void ABISELECT(_ZThn48_N8S1627C16D0Ev,_ZThn28_N8S1627C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1627C13__A1__8S1627C16__8S1627C14[] = {
  ABISELECT(-48,-28),
  ABISELECT(-96,-52),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S1627C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C16D1Ev,_ZTv0_n32_N8S1627C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C16D0Ev,_ZTv0_n32_N8S1627C16D0Ev),
};
extern void _ZN8S1627C11D1Ev();
extern void _ZN8S1627C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C11__8S1627C14[] = {
  ABISELECT(-64,-36),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C11[0]),
  (VTBL_ENTRY)&_ZN8S1627C11D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C11D0Ev,
};
extern void _ZN8S1627C13D1Ev();
extern void _ZN8S1627C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C138S1627C11__8S1627C14[] = {
  ABISELECT(-64,-36),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C13[0]),
  (VTBL_ENTRY)&_ZN8S1627C13D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1627C58S1627C138S1627C11__A1__8S1627C14[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C138S1627C11__8S1627C14[] = {
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S1627C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C11__8S1627C14[] = {
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S1627C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C14[] = {
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C5__8S1627C14[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C10__8S1627C14[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C58S1627C10__A2__8S1627C14[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
extern void _ZN8S1627C13D1Ev();
extern void _ZN8S1627C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C13__A1__8S1627C14[] = {
  ABISELECT(-96,-52),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C13[0]),
  (VTBL_ENTRY)&_ZN8S1627C13D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1627C58S1627C13__A3__8S1627C14[] = {
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C13__A1__8S1627C14[] = {
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S1627C13[0]),
};
extern void _ZN7S1627C4D1Ev();
extern void _ZN7S1627C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1627C4__8S1627C14[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-64,-36),
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
  (VTBL_ENTRY)&_ZN7S1627C4D1Ev,
  (VTBL_ENTRY)&_ZN7S1627C4D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__7S1627C4__8S1627C14[] = {
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C10__7S1627C4__8S1627C14[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S1627C4D1Ev,_ZTv0_n32_N7S1627C4D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S1627C4D0Ev,_ZTv0_n32_N7S1627C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1627C11__7S1627C4__8S1627C14[] = {
  ABISELECT(48,24),
  ABISELECT(-64,-36),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C4D1Ev,_ZTv0_n32_N7S1627C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C4D0Ev,_ZTv0_n32_N7S1627C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1627C9__A1__8S1627C14[] = {
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C9[0]),
};
static  VTT_ENTRY vtt_S1627C14[] = {
  {&(_ZTV8S1627C14[14]),  14,93},
  {&(_tg__ZTV7S1627C9__A__8S1627C14[3]),  3,3},
  {&(_tg__ZTV8S1627C15__8S1627C14[14]),  14,16},
  {&(_tg__ZTV8S1627C188S1627C15__8S1627C14[8]),  8,10},
  {&(_tg__ZTV8S1627C108S1627C188S1627C15__A1__8S1627C14[4]),  4,4},
  {&(_tg__ZTV7S1627C58S1627C108S1627C188S1627C15__A4__8S1627C14[4]),  4,4},
  {&(_tg__ZTV8S1627C128S1627C188S1627C15__A1__8S1627C14[6]),  6,6},
  {&(_tg__ZTV7S1627C5__8S1627C128S1627C188S1627C15__A1__8S1627C14[4]),  4,4},
  {&(_tg__ZTV8S1627C13__8S1627C188S1627C15__8S1627C14[8]),  8,10},
  {&(_tg__ZTV8S1627C12__8S1627C188S1627C15__8S1627C14[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C188S1627C15__8S1627C14[6]),  6,6},
  {&(_tg__ZTV8S1627C12__A__8S1627C188S1627C15__8S1627C14[6]),  6,6},
  {&(_tg__ZTV8S1627C16__8S1627C15__8S1627C14[11]),  11,13},
  {&(_tg__ZTV8S1627C11__8S1627C15__8S1627C14[8]),  8,10},
  {&(_tg__ZTV8S1627C16__8S1627C15__8S1627C14[11]),  11,13},
  {&(_tg__ZTV8S1627C16__8S1627C15__8S1627C14[11]),  11,13},
  {&(_tg__ZTV8S1627C10__8S1627C15__8S1627C14[4]),  4,4},
  {&(_tg__ZTV8S1627C13__A1__8S1627C15__8S1627C14[8]),  8,10},
  {&(_tg__ZTV7S1627C4__8S1627C15__8S1627C14[11]),  11,13},
  {&(_tg__ZTV7S1627C4__8S1627C15__8S1627C14[11]),  11,13},
  {&(_tg__ZTV8S1627C128S1627C18__A1__8S1627C15__8S1627C14[6]),  6,6},
  {&(_tg__ZTV8S1627C19__8S1627C14[3]),  3,5},
  {&(_tg__ZTV7S1627C98S1627C19__A2__8S1627C14[3]),  3,3},
  {&(_ZTV8S1627C14[30]),  30,93},
  {&(_ZTV8S1627C14[54]),  54,93},
  {&(_ZTV8S1627C14[64]),  64,93},
  {&(_ZTV8S1627C14[54]),  54,93},
  {&(_ZTV8S1627C14[54]),  54,93},
  {&(_ZTV8S1627C14[70]),  70,93},
  {&(_ZTV8S1627C14[78]),  78,93},
  {&(_ZTV8S1627C14[91]),  91,93},
  {&(_ZTV8S1627C14[91]),  91,93},
  {&(_ZTV8S1627C14[38]),  38,93},
  {&(_ZTV8S1627C14[41]),  41,93},
  {&(_tg__ZTV8S1627C16__8S1627C14[10]),  10,12},
  {&(_tg__ZTV8S1627C11__8S1627C16__8S1627C14[8]),  8,10},
  {&(_tg__ZTV8S1627C16__8S1627C14[10]),  10,12},
  {&(_tg__ZTV8S1627C16__8S1627C14[10]),  10,12},
  {&(_tg__ZTV8S1627C10__8S1627C16__8S1627C14[4]),  4,4},
  {&(_tg__ZTV8S1627C13__A1__8S1627C16__8S1627C14[8]),  8,10},
  {&(_tg__ZTV8S1627C11__8S1627C14[7]),  7,9},
  {&(_tg__ZTV8S1627C138S1627C11__8S1627C14[7]),  7,9},
  {&(_tg__ZTV7S1627C58S1627C138S1627C11__A1__8S1627C14[4]),  4,4},
  {&(_tg__ZTV8S1627C12__8S1627C138S1627C11__8S1627C14[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C138S1627C11__8S1627C14[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C11__8S1627C14[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C11__8S1627C14[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C14[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C14[6]),  6,6},
  {&(_tg__ZTV7S1627C5__8S1627C14[4]),  4,4},
  {&(_tg__ZTV8S1627C10__8S1627C14[4]),  4,4},
  {&(_tg__ZTV7S1627C58S1627C10__A2__8S1627C14[4]),  4,4},
  {&(_tg__ZTV8S1627C13__A1__8S1627C14[7]),  7,9},
  {&(_tg__ZTV7S1627C58S1627C13__A3__8S1627C14[4]),  4,4},
  {&(_tg__ZTV8S1627C12__8S1627C13__A1__8S1627C14[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C13__A1__8S1627C14[6]),  6,6},
  {&(_tg__ZTV7S1627C4__8S1627C14[10]),  10,12},
  {&(_tg__ZTV8S1627C12__7S1627C4__8S1627C14[6]),  6,6},
  {&(_tg__ZTV7S1627C4__8S1627C14[10]),  10,12},
  {&(_tg__ZTV8S1627C10__7S1627C4__8S1627C14[4]),  4,4},
  {&(_tg__ZTV8S1627C11__7S1627C4__8S1627C14[8]),  8,10},
  {&(_tg__ZTV8S1627C12__7S1627C4__8S1627C14[6]),  6,6},
  {&(_tg__ZTV7S1627C9__A1__8S1627C14[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S1627C14[];
extern  VTBL_ENTRY _ZTV8S1627C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C14[];
static VTBL_ENTRY alt_thunk_names123[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1627C16D0Ev,_ZTv0_n32_N8S1627C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S1627C16D0Ev,_ZThn28_N8S1627C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S1627C16D0Ev,_ZThn12_N8S1627C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1627C16D1Ev,_ZTv0_n32_N8S1627C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S1627C16D1Ev,_ZThn28_N8S1627C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S1627C16D1Ev,_ZThn12_N8S1627C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1627C15D0Ev,_ZTv0_n32_N8S1627C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S1627C15D0Ev,_ZThn48_N8S1627C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S1627C15D0Ev,_ZThn32_N8S1627C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1627C15D1Ev,_ZTv0_n32_N8S1627C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S1627C15D1Ev,_ZThn48_N8S1627C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S1627C15D1Ev,_ZThn32_N8S1627C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1627C15D0Ev,_ZTv0_n44_N8S1627C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S1627C15D0Ev,_ZThn56_N8S1627C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S1627C15D0Ev,_ZThn20_N8S1627C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1627C15D1Ev,_ZTv0_n44_N8S1627C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S1627C15D1Ev,_ZThn56_N8S1627C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S1627C15D1Ev,_ZThn20_N8S1627C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1627C18D0Ev,_ZTv0_n32_N8S1627C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S1627C18D0Ev,_ZThn48_N8S1627C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1627C18D1Ev,_ZTv0_n32_N8S1627C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S1627C18D1Ev,_ZThn48_N8S1627C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1627C14D0Ev,_ZTv0_n32_N8S1627C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S1627C14D0Ev,_ZThn52_N8S1627C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S1627C14D0Ev,_ZThn36_N8S1627C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1627C14D1Ev,_ZTv0_n32_N8S1627C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S1627C14D1Ev,_ZThn52_N8S1627C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S1627C14D1Ev,_ZThn36_N8S1627C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1627C14D0Ev,_ZTv0_n44_N8S1627C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S1627C14D0Ev,_ZThn60_N8S1627C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S1627C14D0Ev,_ZThn24_N8S1627C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1627C14D1Ev,_ZTv0_n44_N8S1627C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S1627C14D1Ev,_ZThn60_N8S1627C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S1627C14D1Ev,_ZThn24_N8S1627C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S1627C14 = {  "S1627C14", // class name
  bases_S1627C14, 41,
  &(vtc_S1627C14[0]), // expected_vtbl_contents
  &(vtt_S1627C14[0]), // expected_vtt_contents
  ABISELECT(128,68), // object size
  NSPAIRA(_ZTI8S1627C14),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S1627C14),93, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1627C14),63, //virtual table table var
  20, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names123,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1627C21  : virtual S7856C12 , virtual S7856C9_nt {
  char s1627c21f0;
  ~S1627C21(); // tgen
  S1627C21(); // tgen
};
//SIG(-1 S1627C21) C1{ VBC2{ m} VBC3{ m} Fc}


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

static void Test_S1627C21()
{
  extern Class_Descriptor cd_S1627C21;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S1627C21, buf);
    S1627C21 *dp, &lv = *(dp=new (buf) S1627C21());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S1627C21)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1627C21)");
    check_base_class_offset(lv, (S7856C12*), 0, "S1627C21");
    check_base_class_offset(lv, (S7856C9_nt*), 0, "S1627C21");
    check_field_offset(lv, s1627c21f0, ABISELECT(8,4), "S1627C21.s1627c21f0");
    test_class_info(&lv, &cd_S1627C21);
    dp->~S1627C21();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1627C21(Test_S1627C21, "S1627C21", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S1627C21C1Ev();
extern void _ZN8S1627C21D1Ev();
Name_Map name_map_S1627C21[] = {
  NSPAIR(_ZN8S1627C21C1Ev),
  NSPAIR(_ZN8S1627C21D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
static Base_Class bases_S1627C21[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S1627C21[];
static  VTBL_ENTRY vtc_S1627C21[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C21[0]),
};
extern VTBL_ENTRY _ZTV8S1627C21[];
static  VTT_ENTRY vtt_S1627C21[] = {
  {&(_ZTV8S1627C21[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S1627C21[];
extern  VTBL_ENTRY _ZTV8S1627C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C21[];
Class_Descriptor cd_S1627C21 = {  "S1627C21", // class name
  bases_S1627C21, 2,
  &(vtc_S1627C21[0]), // expected_vtbl_contents
  &(vtt_S1627C21[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S1627C21),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S1627C21),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1627C21),1, //virtual table table var
  0, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1627C2  : S1627C3 , virtual S1627C14 , S77C13_nt , virtual S1627C15 , S1627C21 {
  short s1627c2f0;
  virtual  ~S1627C2(); // _ZN7S1627C2D2Ev
  S1627C2(); // tgen
};
//SIG(-1 S1627C2) C1{ BC2{ BC3{ VBC4{ VBC5{ m} BC6{ m} VBC7{ m}} VBC8{ VBC6} VBC9{ BC7 BC6 BC4 Fi} BC7 VBC10{ VBC5 VBC6 VBC11{ BC5 VBC4 VBC6} BC7 BC12{ BC6 VBC5 VBC7 BC4 VBC11 vd} vd} vd Fi} BC6} VBC13{ BC8 VBC7 BC14{ VBC15{ VBC10 VBC9 VBC12 vd Fi[2]} VBC16{ m} VBC3 BC17{ VBC12 BC9 BC11 BC7 vd} vd} BC18{ BC6 BC8 vd} vd} BC19{ m} VBC14 BC20{ VBC7 VBC16 Fc} vd Fs}


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

static void Test_S1627C2()
{
  extern Class_Descriptor cd_S1627C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(25,27)];
    init_test(&cd_S1627C2, buf);
    S1627C2 *dp, &lv = *(dp=new (buf) S1627C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,104), "sizeof(S1627C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1627C2)");
    /*is_ambiguous_... S1627C2::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C5*), 0, "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C5*)(S1627C10*), 0, "S1627C2");
    /*is_ambiguous_... S1627C11::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C11*), 0, "S1627C2");
    /*is_ambiguous_... S1627C13::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C13*)(S1627C11*), 0, "S1627C2");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C5*)(S1627C13*)(S1627C11*), 0, "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C13 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C13*), 0, "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C13 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C5*)(S1627C13*), 0, "S1627C2");
    check_base_class_offset(lv, (S7856C24*)(S1627C5*)(S1627C10*)(S1627C18*)(S1627C15*)(S1627C14*), 0, "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C15 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C5*)(S1627C10*)(S1627C18*)(S1627C15*), 0, "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C5*), ABISELECT(112,60), "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C5*), ABISELECT(28,16), "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C5*)(S1627C10*), ABISELECT(28,16), "S1627C2");
    check_base_class_offset(lv, (S7856C12*)(S1627C13*)(S1627C11*), ABISELECT(28,16), "S1627C2");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C5*)(S1627C13*)(S1627C11*), ABISELECT(28,16), "S1627C2");
    /*is_ambiguous_... S1627C14::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C14*), ABISELECT(28,16), "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C13*), ABISELECT(28,16), "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C5*)(S1627C13*), ABISELECT(28,16), "S1627C2");
    check_base_class_offset(lv, (S7856C12*)(S1627C5*)(S1627C10*)(S1627C18*)(S1627C15*)(S1627C14*), ABISELECT(28,16), "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C15 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C5*)(S1627C10*)(S1627C18*)(S1627C15*), ABISELECT(28,16), "S1627C2");
    check_base_class_offset(lv, (S7856C12*)(S1627C21*), ABISELECT(28,16), "S1627C2");
    /*is_ambiguous_... S1627C4::S1627C5 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C4*)(S1627C3*), ABISELECT(112,60), "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C12 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C12*), ABISELECT(112,60), "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C4 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C4*), ABISELECT(112,60), "S1627C2");
    /*is_ambiguous_... S1627C18::S1627C12 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C12*)(S1627C18*)(S1627C15*)(S1627C14*), ABISELECT(112,60), "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C15 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C12*)(S1627C18*)(S1627C15*), ABISELECT(112,60), "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C9*), ABISELECT(28,16), "S1627C2");
    /*is_ambiguous_... S1627C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C11*), ABISELECT(28,16), "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C12*), ABISELECT(28,16), "S1627C2");
    /*is_ambiguous_... S1627C14::S1627C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C9*)(S1627C14*), ABISELECT(28,16), "S1627C2");
    /*is_ambiguous_... S1627C18::S1627C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C12*)(S1627C18*)(S1627C15*)(S1627C14*), ABISELECT(28,16), "S1627C2");
    check_base_class_offset(lv, (S7856C15*)(S1627C9*)(S1627C19*)(S1627C14*), ABISELECT(28,16), "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C12*)(S1627C18*)(S1627C15*), ABISELECT(28,16), "S1627C2");
    check_base_class_offset(lv, (S1627C9*)(S1627C4*)(S1627C3*), 0, "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C4 */ AMB_check_base_class_offset(lv, (S1627C9*)(S1627C4*), 0, "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C10*), ABISELECT(32,20), "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C10*), ABISELECT(40,24), "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C5*)(S1627C10*), ABISELECT(32,20), "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C10 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C10*), ABISELECT(32,20), "S1627C2");
    check_base_class_offset(lv, (S1627C10*)(S1627C4*)(S1627C3*), ABISELECT(32,20), "S1627C2");
    check_base_class_offset(lv, (S1627C10*)(S1627C16*), ABISELECT(32,20), "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C4 */ AMB_check_base_class_offset(lv, (S1627C10*)(S1627C4*), ABISELECT(32,20), "S1627C2");
    /*is_ambiguous_... S1627C4::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C4*)(S1627C3*), 0, "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C12*), ABISELECT(112,60), "S1627C2");
    check_base_class_offset(lv, (S1627C12*)(S1627C11*), ABISELECT(112,60), "S1627C2");
    check_base_class_offset(lv, (S1627C12*)(S1627C13*)(S1627C11*), ABISELECT(112,60), "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C13 */ AMB_check_base_class_offset(lv, (S1627C12*)(S1627C13*), ABISELECT(112,60), "S1627C2");
    /*is_ambiguous_... S1627C11::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C11*), ABISELECT(48,28), "S1627C2");
    /*is_ambiguous_... S1627C13::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C13*)(S1627C11*), ABISELECT(56,32), "S1627C2");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C5*)(S1627C13*)(S1627C11*), ABISELECT(48,28), "S1627C2");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C13*)(S1627C11*), ABISELECT(48,28), "S1627C2");
    check_base_class_offset(lv, (S1627C13*)(S1627C11*), ABISELECT(48,28), "S1627C2");
    check_base_class_offset(lv, (S1627C11*)(S1627C4*)(S1627C3*), ABISELECT(48,28), "S1627C2");
    check_base_class_offset(lv, (S1627C11*)(S1627C16*), ABISELECT(48,28), "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C4 */ AMB_check_base_class_offset(lv, (S1627C11*)(S1627C4*), ABISELECT(48,28), "S1627C2");
    check_base_class_offset(lv, (S1627C4*)(S1627C3*), 0, "S1627C2");
    /*is_ambiguous_... S1627C3::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C3*), 0, "S1627C2");
    check_base_class_offset(lv, (S1627C3*), 0, "S1627C2");
    /*is_ambiguous_... S1627C14::S1627C9 */ AMB_check_base_class_offset(lv, (S1627C9*)(S1627C14*), ABISELECT(64,36), "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C13*), ABISELECT(136,76), "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C5*)(S1627C13*), ABISELECT(128,72), "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C13 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C13*), ABISELECT(128,72), "S1627C2");
    /*is_ambiguous_... S1627C16::S1627C13 */ AMB_check_base_class_offset(lv, (S1627C13*)(S1627C16*), ABISELECT(128,72), "S1627C2");
    check_base_class_offset(lv, (S1627C13*)(S1627C18*)(S1627C15*)(S1627C14*), ABISELECT(128,72), "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C15 */ AMB_check_base_class_offset(lv, (S1627C13*)(S1627C18*)(S1627C15*), ABISELECT(128,72), "S1627C2");
    check_base_class_offset(lv, (S1627C16*)(S1627C15*)(S1627C14*), ABISELECT(112,60), "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C15 */ AMB_check_base_class_offset(lv, (S1627C16*)(S1627C15*), ABISELECT(112,60), "S1627C2");
    check_base_class_offset(lv, (S7856C9_nt*)(S1627C15*)(S1627C14*), 0, "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C15 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S1627C15*), 0, "S1627C2");
    check_base_class_offset(lv, (S7856C9_nt*)(S1627C21*), 0, "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C4 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C4*), ABISELECT(144,80), "S1627C2");
    check_base_class_offset(lv, (S1627C4*)(S1627C15*)(S1627C14*), ABISELECT(144,80), "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C15 */ AMB_check_base_class_offset(lv, (S1627C4*)(S1627C15*), ABISELECT(144,80), "S1627C2");
    /*is_ambiguous_... S1627C10::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C10*)(S1627C18*)(S1627C15*)(S1627C14*), ABISELECT(72,40), "S1627C2");
    /*is_ambiguous_... S1627C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C10*)(S1627C18*)(S1627C15*)(S1627C14*), ABISELECT(80,44), "S1627C2");
    check_base_class_offset(lv, (S7856C15*)(S1627C5*)(S1627C10*)(S1627C18*)(S1627C15*)(S1627C14*), ABISELECT(72,40), "S1627C2");
    check_base_class_offset(lv, (S1627C5*)(S1627C10*)(S1627C18*)(S1627C15*)(S1627C14*), ABISELECT(72,40), "S1627C2");
    check_base_class_offset(lv, (S1627C10*)(S1627C18*)(S1627C15*)(S1627C14*), ABISELECT(72,40), "S1627C2");
    /*is_ambiguous_... S1627C18::S1627C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C12*)(S1627C18*)(S1627C15*)(S1627C14*), ABISELECT(88,48), "S1627C2");
    /*is_ambiguous_... S1627C18::S1627C12 */ AMB_check_base_class_offset(lv, (S1627C12*)(S1627C18*)(S1627C15*)(S1627C14*), ABISELECT(88,48), "S1627C2");
    /*is_ambiguous_... S1627C18::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C18*)(S1627C15*)(S1627C14*), ABISELECT(96,52), "S1627C2");
    check_base_class_offset(lv, (S1627C18*)(S1627C15*)(S1627C14*), ABISELECT(72,40), "S1627C2");
    check_base_class_offset(lv, (S1627C15*)(S1627C14*), ABISELECT(72,40), "S1627C2");
    /*is_ambiguous_... S1627C19::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C19*)(S1627C14*), ABISELECT(104,56), "S1627C2");
    check_base_class_offset(lv, (S1627C9*)(S1627C19*)(S1627C14*), ABISELECT(104,56), "S1627C2");
    check_base_class_offset(lv, (S1627C19*)(S1627C14*), ABISELECT(104,56), "S1627C2");
    check_base_class_offset(lv, (S1627C14*), ABISELECT(64,36), "S1627C2");
    check_base_class_offset(lv, (S77C13_nt*), 0, "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C15 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C10*)(S1627C18*)(S1627C15*), ABISELECT(160,88), "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C10*)(S1627C18*)(S1627C15*), ABISELECT(168,92), "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C5*)(S1627C10*)(S1627C18*)(S1627C15*), ABISELECT(160,88), "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C15 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C10*)(S1627C18*)(S1627C15*), ABISELECT(160,88), "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C15 */ AMB_check_base_class_offset(lv, (S1627C10*)(S1627C18*)(S1627C15*), ABISELECT(160,88), "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C15 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C12*)(S1627C18*)(S1627C15*), ABISELECT(176,96), "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C15 */ AMB_check_base_class_offset(lv, (S1627C12*)(S1627C18*)(S1627C15*), ABISELECT(176,96), "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C15 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C18*)(S1627C15*), ABISELECT(184,100), "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C15 */ AMB_check_base_class_offset(lv, (S1627C18*)(S1627C15*), ABISELECT(160,88), "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C15 */ AMB_check_base_class_offset(lv, (S1627C15*), ABISELECT(160,88), "S1627C2");
    check_base_class_offset(lv, (S1627C21*), ABISELECT(16,8), "S1627C2");
    check_field_offset(lv, s1627c2f0, ABISELECT(26,14), "S1627C2.s1627c2f0");
    test_class_info(&lv, &cd_S1627C2);
    dp->~S1627C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1627C2(Test_S1627C2, "S1627C2", ABISELECT(192,104));

#else // __cplusplus

extern void _ZN7S1627C2C1Ev();
extern void _ZN7S1627C2D2Ev();
Name_Map name_map_S1627C2[] = {
  NSPAIR(_ZN7S1627C2C1Ev),
  NSPAIR(_ZN7S1627C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C9;
extern VTBL_ENTRY _ZTI7S1627C9[];
extern  VTBL_ENTRY _ZTV7S1627C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S1627C10;
extern VTBL_ENTRY _ZTI8S1627C10[];
extern  VTBL_ENTRY _ZTV8S1627C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S1627C12;
extern VTBL_ENTRY _ZTI8S1627C12[];
extern  VTBL_ENTRY _ZTV8S1627C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S1627C13;
extern VTBL_ENTRY _ZTI8S1627C13[];
extern  VTBL_ENTRY _ZTV8S1627C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C13[];
extern Class_Descriptor cd_S1627C11;
extern VTBL_ENTRY _ZTI8S1627C11[];
extern  VTBL_ENTRY _ZTV8S1627C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C11[];
extern Class_Descriptor cd_S1627C4;
extern VTBL_ENTRY _ZTI7S1627C4[];
extern  VTBL_ENTRY _ZTV7S1627C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C4[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C3;
extern VTBL_ENTRY _ZTI7S1627C3[];
extern  VTBL_ENTRY _ZTV7S1627C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C3[];
extern Class_Descriptor cd_S1627C9;
extern VTBL_ENTRY _ZTI7S1627C9[];
extern  VTBL_ENTRY _ZTV7S1627C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C9[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S1627C13;
extern VTBL_ENTRY _ZTI8S1627C13[];
extern  VTBL_ENTRY _ZTV8S1627C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C13[];
extern Class_Descriptor cd_S1627C16;
extern VTBL_ENTRY _ZTI8S1627C16[];
extern  VTBL_ENTRY _ZTV8S1627C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C16[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1627C4;
extern VTBL_ENTRY _ZTI7S1627C4[];
extern  VTBL_ENTRY _ZTV7S1627C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C4[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S1627C10;
extern VTBL_ENTRY _ZTI8S1627C10[];
extern  VTBL_ENTRY _ZTV8S1627C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C10[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S1627C12;
extern VTBL_ENTRY _ZTI8S1627C12[];
extern  VTBL_ENTRY _ZTV8S1627C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1627C18;
extern VTBL_ENTRY _ZTI8S1627C18[];
extern  VTBL_ENTRY _ZTV8S1627C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C18[];
extern Class_Descriptor cd_S1627C15;
extern VTBL_ENTRY _ZTI8S1627C15[];
extern  VTBL_ENTRY _ZTV8S1627C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C9;
extern VTBL_ENTRY _ZTI7S1627C9[];
extern  VTBL_ENTRY _ZTV7S1627C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C9[];
extern Class_Descriptor cd_S1627C19;
extern VTBL_ENTRY _ZTI8S1627C19[];
extern  VTBL_ENTRY _ZTV8S1627C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C19[];
extern Class_Descriptor cd_S1627C14;
extern VTBL_ENTRY _ZTI8S1627C14[];
extern  VTBL_ENTRY _ZTV8S1627C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S1627C10;
extern VTBL_ENTRY _ZTI8S1627C10[];
extern  VTBL_ENTRY _ZTV8S1627C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C10[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S1627C12;
extern VTBL_ENTRY _ZTI8S1627C12[];
extern  VTBL_ENTRY _ZTV8S1627C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1627C18;
extern VTBL_ENTRY _ZTI8S1627C18[];
extern  VTBL_ENTRY _ZTV8S1627C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C18[];
extern Class_Descriptor cd_S1627C15;
extern VTBL_ENTRY _ZTI8S1627C15[];
extern  VTBL_ENTRY _ZTV8S1627C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C15[];
extern Class_Descriptor cd_S1627C21;
extern VTBL_ENTRY _ZTI8S1627C21[];
extern  VTBL_ENTRY _ZTV8S1627C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C21[];
static Base_Class bases_S1627C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(28,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S1627C5,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(28,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S1627C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S1627C5,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S1627C10,    ABISELECT(32,20), //bcp->offset
    22, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S1627C12,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S1627C5,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S1627C13,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S1627C11,    ABISELECT(48,28), //bcp->offset
    26, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S1627C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S1627C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1627C9,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(136,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(128,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S1627C5,    ABISELECT(128,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    84, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S1627C13,    ABISELECT(128,72), //bcp->offset
    93, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    83, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S1627C16,    ABISELECT(112,60), //bcp->offset
    80, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    77, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    41, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    41, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(144,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S1627C4,    ABISELECT(144,80), //bcp->offset
    103, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    87, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    41, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S1627C5,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S1627C10,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S1627C12,    ABISELECT(88,48), //bcp->offset
    69, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S1627C18,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S1627C15,    ABISELECT(72,40), //bcp->offset
    53, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S1627C9,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S1627C19,    ABISELECT(104,56), //bcp->offset
    75, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S1627C14,    ABISELECT(64,36), //bcp->offset
    36, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(168,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S1627C5,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    96, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S1627C10,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    95, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(176,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    53, //immediately_derived
  0, 0},
  {&cd_S1627C12,    ABISELECT(176,96), //bcp->offset
    133, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    97, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(184,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S1627C18,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    94, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    56, //immediately_derived
  0, 0},
  {&cd_S1627C15,    ABISELECT(160,88), //bcp->offset
    116, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    93, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1627C21,    ABISELECT(16,8), //bcp->offset
    18, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1627C2[];
extern void _ZN7S1627C2D1Ev();
extern void _ZN7S1627C2D0Ev();
extern void ABISELECT(_ZTv0_n64_N7S1627C2D1Ev,_ZTv0_n32_N7S1627C2D1Ev)();
extern void ABISELECT(_ZThn48_N7S1627C2D1Ev,_ZThn28_N7S1627C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1627C2D0Ev,_ZTv0_n32_N7S1627C2D0Ev)();
extern void ABISELECT(_ZThn48_N7S1627C2D0Ev,_ZThn28_N7S1627C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S1627C2D1Ev,_ZTv0_n60_N7S1627C2D1Ev)();
extern void ABISELECT(_ZThn64_N7S1627C2D1Ev,_ZThn36_N7S1627C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S1627C2D0Ev,_ZTv0_n60_N7S1627C2D0Ev)();
extern void ABISELECT(_ZThn64_N7S1627C2D0Ev,_ZThn36_N7S1627C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn8_n120_N7S1627C2D1Ev,_ZTvn4_n60_N7S1627C2D1Ev)();
extern void ABISELECT(_ZTvn8_n120_N7S1627C2D0Ev,_ZTvn4_n60_N7S1627C2D0Ev)();
extern void ABISELECT(_ZTvn40_n120_N7S1627C2D1Ev,_ZTvn20_n60_N7S1627C2D1Ev)();
extern void ABISELECT(_ZTvn40_n120_N7S1627C2D0Ev,_ZTvn20_n60_N7S1627C2D0Ev)();
extern void ABISELECT(_ZTv0_n88_N7S1627C2D1Ev,_ZTv0_n44_N7S1627C2D1Ev)();
extern void ABISELECT(_ZThn112_N7S1627C2D1Ev,_ZThn60_N7S1627C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S1627C2D0Ev,_ZTv0_n44_N7S1627C2D0Ev)();
extern void ABISELECT(_ZThn112_N7S1627C2D0Ev,_ZThn60_N7S1627C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1627C2D1Ev,_ZTv0_n32_N7S1627C2D1Ev)();
extern void ABISELECT(_ZThn128_N7S1627C2D1Ev,_ZThn72_N7S1627C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1627C2D0Ev,_ZTv0_n32_N7S1627C2D0Ev)();
extern void ABISELECT(_ZThn128_N7S1627C2D0Ev,_ZThn72_N7S1627C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S1627C2D1Ev,_ZTv0_n44_N7S1627C2D1Ev)();
extern void ABISELECT(_ZThn144_N7S1627C2D1Ev,_ZThn80_N7S1627C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S1627C2D0Ev,_ZTv0_n44_N7S1627C2D0Ev)();
extern void ABISELECT(_ZThn144_N7S1627C2D0Ev,_ZThn80_N7S1627C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S1627C2D1Ev,_ZTv0_n60_N7S1627C2D1Ev)();
extern void ABISELECT(_ZThn160_N7S1627C2D1Ev,_ZThn88_N7S1627C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S1627C2D0Ev,_ZTv0_n60_N7S1627C2D0Ev)();
extern void ABISELECT(_ZThn160_N7S1627C2D0Ev,_ZThn88_N7S1627C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S1627C2[] = {
  ABISELECT(160,88),
  ABISELECT(144,80),
  0,
  ABISELECT(128,72),
  ABISELECT(112,60),
  ABISELECT(64,36),
  ABISELECT(112,60),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(28,16),
  0,
  ABISELECT(112,60),
  ABISELECT(28,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C2[0]),
  (VTBL_ENTRY)&_ZN7S1627C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1627C2D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(12,8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S1627C2[0]),
  -4,
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S1627C2[0]),
  ABISELECT(-48,-28),
  ABISELECT(-20,-12),
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S1627C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C2D1Ev,_ZTv0_n32_N7S1627C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C2D0Ev,_ZTv0_n32_N7S1627C2D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(80,44),
  ABISELECT(-64,-36),
  ABISELECT(64,36),
  ABISELECT(-32,-16),
  ABISELECT(48,24),
  ABISELECT(48,24),
  ABISELECT(-64,-36),
  ABISELECT(-16,-8),
  ABISELECT(48,24),
  ABISELECT(-36,-20),
  ABISELECT(-36,-20),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S1627C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S1627C2D1Ev,_ZTv0_n60_N7S1627C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S1627C2D0Ev,_ZTv0_n60_N7S1627C2D0Ev),
  ABISELECT(-72,-40),
  ABISELECT(72,40),
  ABISELECT(-72,-40),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  ABISELECT(40,20),
  ABISELECT(-44,-24),
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(56,32),
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI7S1627C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n120_N7S1627C2D1Ev,_ZTvn4_n60_N7S1627C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n120_N7S1627C2D0Ev,_ZTvn4_n60_N7S1627C2D0Ev),
  ABISELECT(-60,-32),
  ABISELECT(24,12),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI7S1627C2[0]),
  ABISELECT(-76,-40),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI7S1627C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n120_N7S1627C2D1Ev,_ZTvn20_n60_N7S1627C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n120_N7S1627C2D0Ev,_ZTvn20_n60_N7S1627C2D0Ev),
  ABISELECT(-112,-60),
  ABISELECT(16,12),
  ABISELECT(-80,-40),
  0,
  ABISELECT(-64,-32),
  ABISELECT(-84,-44),
  0,
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S1627C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S1627C2D1Ev,_ZTv0_n44_N7S1627C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S1627C2D0Ev,_ZTv0_n44_N7S1627C2D0Ev),
  ABISELECT(-128,-72),
  ABISELECT(-100,-56),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-100,-56),
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI7S1627C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C2D1Ev,_ZTv0_n32_N7S1627C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C2D0Ev,_ZTv0_n32_N7S1627C2D0Ev),
  ABISELECT(-144,-80),
  ABISELECT(-32,-20),
  ABISELECT(-96,-52),
  ABISELECT(-112,-60),
  ABISELECT(-144,-80),
  ABISELECT(-116,-64),
  ABISELECT(-144,-80),
  ABISELECT(-32,-20),
  ABISELECT(-116,-64),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI7S1627C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S1627C2D1Ev,_ZTv0_n44_N7S1627C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S1627C2D0Ev,_ZTv0_n44_N7S1627C2D0Ev),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  ABISELECT(-16,-8),
  ABISELECT(-160,-88),
  ABISELECT(-128,-68),
  ABISELECT(-112,-60),
  ABISELECT(-48,-28),
  ABISELECT(-132,-72),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(-132,-72),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI7S1627C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S1627C2D1Ev,_ZTv0_n60_N7S1627C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S1627C2D0Ev,_ZTv0_n60_N7S1627C2D0Ev),
  ABISELECT(-148,-80),
  ABISELECT(-64,-36),
  ABISELECT(-148,-80),
  ABISELECT(-176,-96),
  ABISELECT(-176,-96),
  (VTBL_ENTRY)&(_ZTI7S1627C2[0]),
};
extern VTBL_ENTRY _ZTV7S1627C2[];
extern void _ZN7S1627C3D1Ev();
extern void _ZN7S1627C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1627C3__7S1627C2[] = {
  ABISELECT(112,60),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(28,16),
  0,
  ABISELECT(112,60),
  ABISELECT(28,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C3[0]),
  (VTBL_ENTRY)&_ZN7S1627C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1627C3D0Ev,
};
extern void _ZN7S1627C4D1Ev();
extern void _ZN7S1627C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1627C47S1627C3__7S1627C2[] = {
  ABISELECT(112,60),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(28,16),
  0,
  ABISELECT(112,60),
  ABISELECT(28,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
  (VTBL_ENTRY)&_ZN7S1627C4D1Ev,
  (VTBL_ENTRY)&_ZN7S1627C4D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__7S1627C47S1627C3__7S1627C2[] = {
  ABISELECT(-84,-44),
  0,
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C10__7S1627C47S1627C3__7S1627C2[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S1627C4D1Ev,_ZTv0_n32_N7S1627C4D1Ev)();
extern void ABISELECT(_ZThn48_N7S1627C4D1Ev,_ZThn28_N7S1627C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1627C4D0Ev,_ZTv0_n32_N7S1627C4D0Ev)();
extern void ABISELECT(_ZThn48_N7S1627C4D0Ev,_ZThn28_N7S1627C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1627C11__7S1627C47S1627C3__7S1627C2[] = {
  ABISELECT(-48,-28),
  ABISELECT(-20,-12),
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C4D1Ev,_ZTv0_n32_N7S1627C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C4D0Ev,_ZTv0_n32_N7S1627C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__7S1627C3__7S1627C2[] = {
  ABISELECT(-84,-44),
  0,
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S1627C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C10__7S1627C3__7S1627C2[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S1627C3[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S1627C3D1Ev,_ZTv0_n32_N7S1627C3D1Ev)();
extern void ABISELECT(_ZThn48_N7S1627C3D1Ev,_ZThn28_N7S1627C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1627C3D0Ev,_ZTv0_n32_N7S1627C3D0Ev)();
extern void ABISELECT(_ZThn48_N7S1627C3D0Ev,_ZThn28_N7S1627C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1627C11__7S1627C3__7S1627C2[] = {
  ABISELECT(-48,-28),
  ABISELECT(-20,-12),
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S1627C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C3D1Ev,_ZTv0_n32_N7S1627C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C3D0Ev,_ZTv0_n32_N7S1627C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1627C21__7S1627C2[] = {
  ABISELECT(-16,-8),
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C21[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C5__7S1627C2[] = {
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C9__7S1627C2[] = {
  ABISELECT(28,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C10__7S1627C2[] = {
  -4,
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C58S1627C10__A1__7S1627C2[] = {
  -4,
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
extern void _ZN8S1627C11D1Ev();
extern void _ZN8S1627C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C11__7S1627C2[] = {
  ABISELECT(-20,-12),
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C11[0]),
  (VTBL_ENTRY)&_ZN8S1627C11D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C11D0Ev,
};
extern void _ZN8S1627C13D1Ev();
extern void _ZN8S1627C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C138S1627C11__7S1627C2[] = {
  ABISELECT(-20,-12),
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C13[0]),
  (VTBL_ENTRY)&_ZN8S1627C13D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1627C58S1627C138S1627C11__A2__7S1627C2[] = {
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C138S1627C11__7S1627C2[] = {
  ABISELECT(-84,-44),
  0,
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S1627C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C11__7S1627C2[] = {
  ABISELECT(-84,-44),
  0,
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S1627C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__7S1627C2[] = {
  ABISELECT(-84,-44),
  0,
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C12[0]),
};
extern void _ZN8S1627C14D1Ev();
extern void _ZN8S1627C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C14__7S1627C2[] = {
  ABISELECT(-64,-36),
  ABISELECT(80,44),
  ABISELECT(-64,-36),
  ABISELECT(64,36),
  ABISELECT(-32,-16),
  ABISELECT(48,24),
  ABISELECT(48,24),
  ABISELECT(-64,-36),
  ABISELECT(-16,-8),
  ABISELECT(48,24),
  ABISELECT(-36,-20),
  ABISELECT(-36,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C14[0]),
  (VTBL_ENTRY)&_ZN8S1627C14D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C14D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1627C98S1627C14__A1__7S1627C2[] = {
  ABISELECT(-36,-20),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C9[0]),
};
extern void _ZN8S1627C15D1Ev();
extern void _ZN8S1627C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C158S1627C14__7S1627C2[] = {
  ABISELECT(-72,-40),
  ABISELECT(72,40),
  ABISELECT(-72,-40),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  ABISELECT(40,20),
  ABISELECT(-44,-24),
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(56,32),
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
  (VTBL_ENTRY)&_ZN8S1627C15D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C15D0Ev,
};
extern void _ZN8S1627C18D1Ev();
extern void _ZN8S1627C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C188S1627C158S1627C14__7S1627C2[] = {
  ABISELECT(-44,-24),
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(56,32),
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C18[0]),
  (VTBL_ENTRY)&_ZN8S1627C18D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1627C108S1627C188S1627C158S1627C14__A1__7S1627C2[] = {
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C58S1627C108S1627C188S1627C158S1627C14__A4__7S1627C2[] = {
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C128S1627C188S1627C158S1627C14__A1__7S1627C2[] = {
  ABISELECT(-60,-32),
  ABISELECT(24,12),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C5__8S1627C128S1627C188S1627C158S1627C14__A1__7S1627C2[] = {
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S1627C12[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1627C18D1Ev,_ZTv0_n32_N8S1627C18D1Ev)();
extern void ABISELECT(_ZThn56_N8S1627C18D1Ev,_ZThn32_N8S1627C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1627C18D0Ev,_ZTv0_n32_N8S1627C18D0Ev)();
extern void ABISELECT(_ZThn56_N8S1627C18D0Ev,_ZThn32_N8S1627C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1627C13__8S1627C188S1627C158S1627C14__7S1627C2[] = {
  ABISELECT(-56,-32),
  ABISELECT(-100,-56),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-100,-56),
  ABISELECT(-128,-72),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S1627C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C18D1Ev,_ZTv0_n32_N8S1627C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C18D0Ev,_ZTv0_n32_N8S1627C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C188S1627C158S1627C14__7S1627C2[] = {
  ABISELECT(-84,-44),
  0,
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S1627C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__A__8S1627C188S1627C158S1627C14__7S1627C2[] = {
  ABISELECT(-60,-32),
  ABISELECT(24,12),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1627C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S1627C15D1Ev,_ZTv0_n44_N8S1627C15D1Ev)();
extern void ABISELECT(_ZThn40_N8S1627C15D1Ev,_ZThn20_N8S1627C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1627C15D0Ev,_ZTv0_n44_N8S1627C15D0Ev)();
extern void ABISELECT(_ZThn40_N8S1627C15D0Ev,_ZThn20_N8S1627C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1627C16__8S1627C158S1627C14__7S1627C2[] = {
  ABISELECT(-40,-20),
  ABISELECT(16,12),
  ABISELECT(-80,-40),
  0,
  ABISELECT(-64,-32),
  ABISELECT(-84,-44),
  0,
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C15D1Ev,_ZTv0_n44_N8S1627C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C15D0Ev,_ZTv0_n44_N8S1627C15D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S1627C15D1Ev,_ZTv0_n32_N8S1627C15D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1627C15D0Ev,_ZTv0_n32_N8S1627C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1627C11__8S1627C158S1627C14__7S1627C2[] = {
  ABISELECT(24,12),
  ABISELECT(-20,-12),
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C15D1Ev,_ZTv0_n32_N8S1627C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C15D0Ev,_ZTv0_n32_N8S1627C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1627C10__8S1627C158S1627C14__7S1627C2[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1627C15D1Ev,_ZTv0_n32_N8S1627C15D1Ev)();
extern void ABISELECT(_ZThn56_N8S1627C15D1Ev,_ZThn32_N8S1627C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1627C15D0Ev,_ZTv0_n32_N8S1627C15D0Ev)();
extern void ABISELECT(_ZThn56_N8S1627C15D0Ev,_ZThn32_N8S1627C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1627C13__A1__8S1627C158S1627C14__7S1627C2[] = {
  ABISELECT(-56,-32),
  ABISELECT(-100,-56),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-100,-56),
  ABISELECT(-128,-72),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C15D1Ev,_ZTv0_n32_N8S1627C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C15D0Ev,_ZTv0_n32_N8S1627C15D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S1627C15D1Ev,_ZTv0_n44_N8S1627C15D1Ev)();
extern void ABISELECT(_ZThn72_N8S1627C15D1Ev,_ZThn40_N8S1627C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1627C15D0Ev,_ZTv0_n44_N8S1627C15D0Ev)();
extern void ABISELECT(_ZThn72_N8S1627C15D0Ev,_ZThn40_N8S1627C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1627C4__8S1627C158S1627C14__7S1627C2[] = {
  ABISELECT(-72,-40),
  ABISELECT(-32,-20),
  ABISELECT(-96,-52),
  ABISELECT(-112,-60),
  ABISELECT(-144,-80),
  ABISELECT(-116,-64),
  ABISELECT(-144,-80),
  ABISELECT(-32,-20),
  ABISELECT(-116,-64),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C15D1Ev,_ZTv0_n44_N8S1627C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C15D0Ev,_ZTv0_n44_N8S1627C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1627C9__8S1627C158S1627C14__7S1627C2[] = {
  ABISELECT(28,16),
  ABISELECT(72,40),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C128S1627C18__A1__8S1627C158S1627C14__7S1627C2[] = {
  ABISELECT(-60,-32),
  ABISELECT(24,12),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
};
extern void _ZN8S1627C19D1Ev();
extern void _ZN8S1627C19D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C198S1627C14__7S1627C2[] = {
  ABISELECT(-76,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C19[0]),
  (VTBL_ENTRY)&_ZN8S1627C19D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C19D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1627C98S1627C198S1627C14__A2__7S1627C2[] = {
  ABISELECT(-76,-40),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C9[0]),
};
extern void ABISELECT(_ZThn8_N8S1627C14D1Ev,_ZThn4_N8S1627C14D1Ev)();
extern void ABISELECT(_ZThn8_N8S1627C14D0Ev,_ZThn4_N8S1627C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1627C15__8S1627C14__7S1627C2[] = {
  ABISELECT(-72,-40),
  ABISELECT(72,40),
  ABISELECT(-72,-40),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  ABISELECT(40,20),
  ABISELECT(-44,-24),
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(56,32),
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S1627C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S1627C14D1Ev,_ZThn4_N8S1627C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S1627C14D0Ev,_ZThn4_N8S1627C14D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S1627C14D1Ev,_ZTv0_n44_N8S1627C14D1Ev)();
extern void ABISELECT(_ZThn48_N8S1627C14D1Ev,_ZThn24_N8S1627C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1627C14D0Ev,_ZTv0_n44_N8S1627C14D0Ev)();
extern void ABISELECT(_ZThn48_N8S1627C14D0Ev,_ZThn24_N8S1627C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1627C16__8S1627C14__7S1627C2[] = {
  ABISELECT(-48,-24),
  ABISELECT(16,12),
  ABISELECT(-80,-40),
  0,
  ABISELECT(-64,-32),
  ABISELECT(-84,-44),
  0,
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S1627C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C14D1Ev,_ZTv0_n44_N8S1627C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C14D0Ev,_ZTv0_n44_N8S1627C14D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S1627C14D1Ev,_ZTv0_n32_N8S1627C14D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1627C14D0Ev,_ZTv0_n32_N8S1627C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1627C11__8S1627C14__7S1627C2[] = {
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S1627C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C14D1Ev,_ZTv0_n32_N8S1627C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C14D0Ev,_ZTv0_n32_N8S1627C14D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1627C10__8S1627C14__7S1627C2[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S1627C14[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1627C14D1Ev,_ZTv0_n32_N8S1627C14D1Ev)();
extern void ABISELECT(_ZThn64_N8S1627C14D1Ev,_ZThn36_N8S1627C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1627C14D0Ev,_ZTv0_n32_N8S1627C14D0Ev)();
extern void ABISELECT(_ZThn64_N8S1627C14D0Ev,_ZThn36_N8S1627C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1627C13__A1__8S1627C14__7S1627C2[] = {
  ABISELECT(-64,-36),
  ABISELECT(-100,-56),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-100,-56),
  ABISELECT(-128,-72),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S1627C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C14D1Ev,_ZTv0_n32_N8S1627C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C14D0Ev,_ZTv0_n32_N8S1627C14D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S1627C14D1Ev,_ZTv0_n44_N8S1627C14D1Ev)();
extern void ABISELECT(_ZThn80_N8S1627C14D1Ev,_ZThn44_N8S1627C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1627C14D0Ev,_ZTv0_n44_N8S1627C14D0Ev)();
extern void ABISELECT(_ZThn80_N8S1627C14D0Ev,_ZThn44_N8S1627C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1627C4__8S1627C14__7S1627C2[] = {
  ABISELECT(-80,-44),
  ABISELECT(-32,-20),
  ABISELECT(-96,-52),
  ABISELECT(-112,-60),
  ABISELECT(-144,-80),
  ABISELECT(-116,-64),
  ABISELECT(-144,-80),
  ABISELECT(-32,-20),
  ABISELECT(-116,-64),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S1627C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C14D1Ev,_ZTv0_n44_N8S1627C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C14D0Ev,_ZTv0_n44_N8S1627C14D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1627C9__A1__8S1627C14__7S1627C2[] = {
  ABISELECT(28,16),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S1627C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C128S1627C188S1627C15__A1__8S1627C14__7S1627C2[] = {
  ABISELECT(-60,-32),
  ABISELECT(24,12),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S1627C14[0]),
};
extern void ABISELECT(_ZThn40_N8S1627C14D1Ev,_ZThn20_N8S1627C14D1Ev)();
extern void ABISELECT(_ZThn40_N8S1627C14D0Ev,_ZThn20_N8S1627C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1627C19__8S1627C14__7S1627C2[] = {
  ABISELECT(-76,-40),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S1627C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S1627C14D1Ev,_ZThn20_N8S1627C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S1627C14D0Ev,_ZThn20_N8S1627C14D0Ev),
};
extern void _ZN8S1627C16D1Ev();
extern void _ZN8S1627C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C16__7S1627C2[] = {
  ABISELECT(16,12),
  ABISELECT(-80,-40),
  0,
  ABISELECT(-64,-32),
  ABISELECT(-84,-44),
  0,
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C16[0]),
  (VTBL_ENTRY)&_ZN8S1627C16D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C16D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N8S1627C16D1Ev,_ZTv0_n32_N8S1627C16D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1627C16D0Ev,_ZTv0_n32_N8S1627C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1627C11__8S1627C16__7S1627C2[] = {
  ABISELECT(64,32),
  ABISELECT(-20,-12),
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S1627C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C16D1Ev,_ZTv0_n32_N8S1627C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C16D0Ev,_ZTv0_n32_N8S1627C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1627C10__8S1627C16__7S1627C2[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S1627C16[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1627C16D1Ev,_ZTv0_n32_N8S1627C16D1Ev)();
extern void ABISELECT(_ZThn16_N8S1627C16D1Ev,_ZThn12_N8S1627C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1627C16D0Ev,_ZTv0_n32_N8S1627C16D0Ev)();
extern void ABISELECT(_ZThn16_N8S1627C16D0Ev,_ZThn12_N8S1627C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1627C13__A1__8S1627C16__7S1627C2[] = {
  ABISELECT(-16,-12),
  ABISELECT(-100,-56),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-100,-56),
  ABISELECT(-128,-72),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S1627C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C16D1Ev,_ZTv0_n32_N8S1627C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C16D0Ev,_ZTv0_n32_N8S1627C16D0Ev),
};
extern void _ZN8S1627C13D1Ev();
extern void _ZN8S1627C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C13__A1__7S1627C2[] = {
  ABISELECT(-100,-56),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-100,-56),
  ABISELECT(-128,-72),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C13[0]),
  (VTBL_ENTRY)&_ZN8S1627C13D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1627C58S1627C13__A3__7S1627C2[] = {
  ABISELECT(-100,-56),
  ABISELECT(-128,-72),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C13__A1__7S1627C2[] = {
  ABISELECT(-84,-44),
  0,
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S1627C13[0]),
};
extern void _ZN7S1627C4D1Ev();
extern void _ZN7S1627C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1627C4__A1__7S1627C2[] = {
  ABISELECT(-32,-20),
  ABISELECT(-96,-52),
  ABISELECT(-112,-60),
  ABISELECT(-144,-80),
  ABISELECT(-116,-64),
  ABISELECT(-144,-80),
  ABISELECT(-32,-20),
  ABISELECT(-116,-64),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
  (VTBL_ENTRY)&_ZN7S1627C4D1Ev,
  (VTBL_ENTRY)&_ZN7S1627C4D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__7S1627C4__A1__7S1627C2[] = {
  ABISELECT(-84,-44),
  0,
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C9__7S1627C4__A1__7S1627C2[] = {
  ABISELECT(28,16),
  ABISELECT(144,80),
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C10__7S1627C4__A1__7S1627C2[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S1627C4D1Ev,_ZTv0_n32_N7S1627C4D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S1627C4D0Ev,_ZTv0_n32_N7S1627C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1627C11__7S1627C4__A1__7S1627C2[] = {
  ABISELECT(96,52),
  ABISELECT(-20,-12),
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(96,52),
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C4D1Ev,_ZTv0_n32_N7S1627C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C4D0Ev,_ZTv0_n32_N7S1627C4D0Ev),
};
extern void _ZN8S1627C15D1Ev();
extern void _ZN8S1627C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C15__A1__7S1627C2[] = {
  ABISELECT(-160,-88),
  ABISELECT(-16,-8),
  ABISELECT(-160,-88),
  ABISELECT(-128,-68),
  ABISELECT(-112,-60),
  ABISELECT(-48,-28),
  ABISELECT(-132,-72),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(-132,-72),
  ABISELECT(-160,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
  (VTBL_ENTRY)&_ZN8S1627C15D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C15D0Ev,
};
extern void _ZN8S1627C18D1Ev();
extern void _ZN8S1627C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C188S1627C15__A1__7S1627C2[] = {
  ABISELECT(-132,-72),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(-132,-72),
  ABISELECT(-160,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C18[0]),
  (VTBL_ENTRY)&_ZN8S1627C18D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1627C108S1627C188S1627C15__A2__7S1627C2[] = {
  ABISELECT(-132,-72),
  ABISELECT(-160,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C58S1627C108S1627C188S1627C15__A5__7S1627C2[] = {
  ABISELECT(-132,-72),
  ABISELECT(-160,-88),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C128S1627C188S1627C15__A2__7S1627C2[] = {
  ABISELECT(-148,-80),
  ABISELECT(-64,-36),
  ABISELECT(-148,-80),
  ABISELECT(-176,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C5__8S1627C128S1627C188S1627C15__A2__7S1627C2[] = {
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S1627C12[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1627C18D1Ev,_ZTv0_n32_N8S1627C18D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1627C18D0Ev,_ZTv0_n32_N8S1627C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1627C13__8S1627C188S1627C15__A1__7S1627C2[] = {
  ABISELECT(32,16),
  ABISELECT(-100,-56),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-100,-56),
  ABISELECT(-128,-72),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S1627C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C18D1Ev,_ZTv0_n32_N8S1627C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C18D0Ev,_ZTv0_n32_N8S1627C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C188S1627C15__A1__7S1627C2[] = {
  ABISELECT(-84,-44),
  0,
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S1627C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__A__8S1627C188S1627C15__A1__7S1627C2[] = {
  ABISELECT(-148,-80),
  ABISELECT(-64,-36),
  ABISELECT(-148,-80),
  ABISELECT(-176,-96),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1627C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S1627C15D1Ev,_ZTv0_n44_N8S1627C15D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S1627C15D0Ev,_ZTv0_n44_N8S1627C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1627C16__8S1627C15__A1__7S1627C2[] = {
  ABISELECT(48,28),
  ABISELECT(16,12),
  ABISELECT(-80,-40),
  0,
  ABISELECT(-64,-32),
  ABISELECT(-84,-44),
  0,
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C15D1Ev,_ZTv0_n44_N8S1627C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C15D0Ev,_ZTv0_n44_N8S1627C15D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S1627C15D1Ev,_ZTv0_n32_N8S1627C15D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1627C15D0Ev,_ZTv0_n32_N8S1627C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1627C11__8S1627C15__A1__7S1627C2[] = {
  ABISELECT(112,60),
  ABISELECT(-20,-12),
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C15D1Ev,_ZTv0_n32_N8S1627C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C15D0Ev,_ZTv0_n32_N8S1627C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1627C10__8S1627C15__A1__7S1627C2[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1627C15D1Ev,_ZTv0_n32_N8S1627C15D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1627C15D0Ev,_ZTv0_n32_N8S1627C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1627C13__A1__8S1627C15__A1__7S1627C2[] = {
  ABISELECT(32,16),
  ABISELECT(-100,-56),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-100,-56),
  ABISELECT(-128,-72),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C15D1Ev,_ZTv0_n32_N8S1627C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C15D0Ev,_ZTv0_n32_N8S1627C15D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S1627C15D1Ev,_ZTv0_n44_N8S1627C15D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S1627C15D0Ev,_ZTv0_n44_N8S1627C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S1627C4__8S1627C15__A1__7S1627C2[] = {
  ABISELECT(16,8),
  ABISELECT(-32,-20),
  ABISELECT(-96,-52),
  ABISELECT(-112,-60),
  ABISELECT(-144,-80),
  ABISELECT(-116,-64),
  ABISELECT(-144,-80),
  ABISELECT(-32,-20),
  ABISELECT(-116,-64),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C15D1Ev,_ZTv0_n44_N8S1627C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C15D0Ev,_ZTv0_n44_N8S1627C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1627C9__8S1627C15__A1__7S1627C2[] = {
  ABISELECT(28,16),
  ABISELECT(160,88),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C128S1627C18__A1__8S1627C15__A1__7S1627C2[] = {
  ABISELECT(-148,-80),
  ABISELECT(-64,-36),
  ABISELECT(-148,-80),
  ABISELECT(-176,-96),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
};
static  VTT_ENTRY vtt_S1627C2[] = {
  {&(_ZTV7S1627C2[16]),  16,139},
  {&(_tg__ZTV7S1627C3__7S1627C2[10]),  10,12},
  {&(_tg__ZTV7S1627C47S1627C3__7S1627C2[10]),  10,12},
  {&(_tg__ZTV8S1627C12__7S1627C47S1627C3__7S1627C2[6]),  6,6},
  {&(_tg__ZTV7S1627C47S1627C3__7S1627C2[10]),  10,12},
  {&(_tg__ZTV8S1627C10__7S1627C47S1627C3__7S1627C2[4]),  4,4},
  {&(_tg__ZTV8S1627C11__7S1627C47S1627C3__7S1627C2[8]),  8,10},
  {&(_tg__ZTV8S1627C12__7S1627C47S1627C3__7S1627C2[6]),  6,6},
  {&(_tg__ZTV8S1627C12__7S1627C3__7S1627C2[6]),  6,6},
  {&(_tg__ZTV7S1627C3__7S1627C2[10]),  10,12},
  {&(_tg__ZTV8S1627C10__7S1627C3__7S1627C2[4]),  4,4},
  {&(_tg__ZTV8S1627C11__7S1627C3__7S1627C2[8]),  8,10},
  {&(_tg__ZTV8S1627C12__7S1627C3__7S1627C2[6]),  6,6},
  {&(_tg__ZTV8S1627C21__7S1627C2[4]),  4,4},
  {&(_ZTV7S1627C2[91]),  91,139},
  {&(_ZTV7S1627C2[16]),  16,139},
  {&(_ZTV7S1627C2[26]),  26,139},
  {&(_ZTV7S1627C2[34]),  34,139},
  {&(_ZTV7S1627C2[91]),  91,139},
  {&(_ZTV7S1627C2[51]),  51,139},
  {&(_ZTV7S1627C2[67]),  67,139},
  {&(_ZTV7S1627C2[91]),  91,139},
  {&(_ZTV7S1627C2[101]),  101,139},
  {&(_ZTV7S1627C2[114]),  114,139},
  {&(_ZTV7S1627C2[75]),  75,139},
  {&(_ZTV7S1627C2[78]),  78,139},
  {&(_ZTV7S1627C2[131]),  131,139},
  {&(_ZTV7S1627C2[139]),  139,139},
  {&(_ZTV7S1627C2[22]),  22,139},
  {&(_tg__ZTV7S1627C5__7S1627C2[4]),  4,4},
  {&(_tg__ZTV7S1627C9__7S1627C2[3]),  3,3},
  {&(_tg__ZTV8S1627C10__7S1627C2[4]),  4,4},
  {&(_tg__ZTV7S1627C58S1627C10__A1__7S1627C2[4]),  4,4},
  {&(_tg__ZTV8S1627C11__7S1627C2[7]),  7,9},
  {&(_tg__ZTV8S1627C138S1627C11__7S1627C2[7]),  7,9},
  {&(_tg__ZTV7S1627C58S1627C138S1627C11__A2__7S1627C2[4]),  4,4},
  {&(_tg__ZTV8S1627C12__8S1627C138S1627C11__7S1627C2[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C138S1627C11__7S1627C2[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C11__7S1627C2[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C11__7S1627C2[6]),  6,6},
  {&(_tg__ZTV8S1627C12__7S1627C2[6]),  6,6},
  {&(_tg__ZTV8S1627C12__7S1627C2[6]),  6,6},
  {&(_tg__ZTV8S1627C14__7S1627C2[14]),  14,16},
  {&(_tg__ZTV7S1627C98S1627C14__A1__7S1627C2[3]),  3,3},
  {&(_tg__ZTV8S1627C158S1627C14__7S1627C2[14]),  14,16},
  {&(_tg__ZTV8S1627C188S1627C158S1627C14__7S1627C2[8]),  8,10},
  {&(_tg__ZTV8S1627C108S1627C188S1627C158S1627C14__A1__7S1627C2[4]),  4,4},
  {&(_tg__ZTV7S1627C58S1627C108S1627C188S1627C158S1627C14__A4__7S1627C2[4]),  4,4},
  {&(_tg__ZTV8S1627C128S1627C188S1627C158S1627C14__A1__7S1627C2[6]),  6,6},
  {&(_tg__ZTV7S1627C5__8S1627C128S1627C188S1627C158S1627C14__A1__7S1627C2[4]),  4,4},
  {&(_tg__ZTV8S1627C13__8S1627C188S1627C158S1627C14__7S1627C2[8]),  8,10},
  {&(_tg__ZTV8S1627C12__8S1627C188S1627C158S1627C14__7S1627C2[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C188S1627C158S1627C14__7S1627C2[6]),  6,6},
  {&(_tg__ZTV8S1627C12__A__8S1627C188S1627C158S1627C14__7S1627C2[6]),  6,6},
  {&(_tg__ZTV8S1627C16__8S1627C158S1627C14__7S1627C2[11]),  11,13},
  {&(_tg__ZTV8S1627C11__8S1627C158S1627C14__7S1627C2[8]),  8,10},
  {&(_tg__ZTV8S1627C16__8S1627C158S1627C14__7S1627C2[11]),  11,13},
  {&(_tg__ZTV8S1627C16__8S1627C158S1627C14__7S1627C2[11]),  11,13},
  {&(_tg__ZTV8S1627C10__8S1627C158S1627C14__7S1627C2[4]),  4,4},
  {&(_tg__ZTV8S1627C13__A1__8S1627C158S1627C14__7S1627C2[8]),  8,10},
  {&(_tg__ZTV7S1627C4__8S1627C158S1627C14__7S1627C2[11]),  11,13},
  {&(_tg__ZTV7S1627C9__8S1627C158S1627C14__7S1627C2[3]),  3,3},
  {&(_tg__ZTV8S1627C128S1627C18__A1__8S1627C158S1627C14__7S1627C2[6]),  6,6},
  {&(_tg__ZTV8S1627C198S1627C14__7S1627C2[3]),  3,5},
  {&(_tg__ZTV7S1627C98S1627C198S1627C14__A2__7S1627C2[3]),  3,3},
  {&(_tg__ZTV8S1627C15__8S1627C14__7S1627C2[14]),  14,16},
  {&(_tg__ZTV8S1627C16__8S1627C14__7S1627C2[11]),  11,13},
  {&(_tg__ZTV8S1627C11__8S1627C14__7S1627C2[8]),  8,10},
  {&(_tg__ZTV8S1627C16__8S1627C14__7S1627C2[11]),  11,13},
  {&(_tg__ZTV8S1627C16__8S1627C14__7S1627C2[11]),  11,13},
  {&(_tg__ZTV8S1627C10__8S1627C14__7S1627C2[4]),  4,4},
  {&(_tg__ZTV8S1627C13__A1__8S1627C14__7S1627C2[8]),  8,10},
  {&(_tg__ZTV7S1627C4__8S1627C14__7S1627C2[11]),  11,13},
  {&(_tg__ZTV7S1627C9__A1__8S1627C14__7S1627C2[3]),  3,3},
  {&(_tg__ZTV8S1627C128S1627C188S1627C15__A1__8S1627C14__7S1627C2[6]),  6,6},
  {&(_tg__ZTV8S1627C19__8S1627C14__7S1627C2[3]),  3,5},
  {&(_tg__ZTV8S1627C16__7S1627C2[10]),  10,12},
  {&(_tg__ZTV8S1627C11__8S1627C16__7S1627C2[8]),  8,10},
  {&(_tg__ZTV8S1627C16__7S1627C2[10]),  10,12},
  {&(_tg__ZTV8S1627C16__7S1627C2[10]),  10,12},
  {&(_tg__ZTV8S1627C10__8S1627C16__7S1627C2[4]),  4,4},
  {&(_tg__ZTV8S1627C13__A1__8S1627C16__7S1627C2[8]),  8,10},
  {&(_tg__ZTV8S1627C13__A1__7S1627C2[7]),  7,9},
  {&(_tg__ZTV7S1627C58S1627C13__A3__7S1627C2[4]),  4,4},
  {&(_tg__ZTV8S1627C12__8S1627C13__A1__7S1627C2[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C13__A1__7S1627C2[6]),  6,6},
  {&(_tg__ZTV7S1627C4__A1__7S1627C2[10]),  10,12},
  {&(_tg__ZTV8S1627C12__7S1627C4__A1__7S1627C2[6]),  6,6},
  {&(_tg__ZTV7S1627C9__7S1627C4__A1__7S1627C2[3]),  3,3},
  {&(_tg__ZTV8S1627C10__7S1627C4__A1__7S1627C2[4]),  4,4},
  {&(_tg__ZTV8S1627C11__7S1627C4__A1__7S1627C2[8]),  8,10},
  {&(_tg__ZTV8S1627C12__7S1627C4__A1__7S1627C2[6]),  6,6},
  {&(_tg__ZTV8S1627C15__A1__7S1627C2[14]),  14,16},
  {&(_tg__ZTV8S1627C188S1627C15__A1__7S1627C2[8]),  8,10},
  {&(_tg__ZTV8S1627C108S1627C188S1627C15__A2__7S1627C2[4]),  4,4},
  {&(_tg__ZTV7S1627C58S1627C108S1627C188S1627C15__A5__7S1627C2[4]),  4,4},
  {&(_tg__ZTV8S1627C128S1627C188S1627C15__A2__7S1627C2[6]),  6,6},
  {&(_tg__ZTV7S1627C5__8S1627C128S1627C188S1627C15__A2__7S1627C2[4]),  4,4},
  {&(_tg__ZTV8S1627C13__8S1627C188S1627C15__A1__7S1627C2[8]),  8,10},
  {&(_tg__ZTV8S1627C12__8S1627C188S1627C15__A1__7S1627C2[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C188S1627C15__A1__7S1627C2[6]),  6,6},
  {&(_tg__ZTV8S1627C12__A__8S1627C188S1627C15__A1__7S1627C2[6]),  6,6},
  {&(_tg__ZTV8S1627C16__8S1627C15__A1__7S1627C2[11]),  11,13},
  {&(_tg__ZTV8S1627C11__8S1627C15__A1__7S1627C2[8]),  8,10},
  {&(_tg__ZTV8S1627C16__8S1627C15__A1__7S1627C2[11]),  11,13},
  {&(_tg__ZTV8S1627C16__8S1627C15__A1__7S1627C2[11]),  11,13},
  {&(_tg__ZTV8S1627C10__8S1627C15__A1__7S1627C2[4]),  4,4},
  {&(_tg__ZTV8S1627C13__A1__8S1627C15__A1__7S1627C2[8]),  8,10},
  {&(_tg__ZTV7S1627C4__8S1627C15__A1__7S1627C2[11]),  11,13},
  {&(_tg__ZTV7S1627C9__8S1627C15__A1__7S1627C2[3]),  3,3},
  {&(_tg__ZTV8S1627C128S1627C18__A1__8S1627C15__A1__7S1627C2[6]),  6,6},
};
extern VTBL_ENTRY _ZTI7S1627C2[];
extern  VTBL_ENTRY _ZTV7S1627C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C2[];
static VTBL_ENTRY alt_thunk_names124[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1627C16D0Ev,_ZTv0_n32_N8S1627C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S1627C16D0Ev,_ZThn12_N8S1627C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1627C16D1Ev,_ZTv0_n32_N8S1627C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S1627C16D1Ev,_ZThn12_N8S1627C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1627C14D0Ev,_ZTv0_n32_N8S1627C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S1627C14D0Ev,_ZThn36_N8S1627C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1627C14D1Ev,_ZTv0_n32_N8S1627C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S1627C14D1Ev,_ZThn36_N8S1627C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1627C14D0Ev,_ZTv0_n44_N8S1627C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S1627C14D0Ev,_ZThn44_N8S1627C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S1627C14D0Ev,_ZThn24_N8S1627C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1627C14D1Ev,_ZTv0_n44_N8S1627C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S1627C14D1Ev,_ZThn44_N8S1627C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S1627C14D1Ev,_ZThn24_N8S1627C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1627C15D0Ev,_ZTv0_n32_N8S1627C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S1627C15D0Ev,_ZThn32_N8S1627C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1627C15D1Ev,_ZTv0_n32_N8S1627C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S1627C15D1Ev,_ZThn32_N8S1627C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1627C15D0Ev,_ZTv0_n44_N8S1627C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S1627C15D0Ev,_ZThn40_N8S1627C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S1627C15D0Ev,_ZThn20_N8S1627C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1627C15D1Ev,_ZTv0_n44_N8S1627C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S1627C15D1Ev,_ZThn40_N8S1627C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S1627C15D1Ev,_ZThn20_N8S1627C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1627C18D0Ev,_ZTv0_n32_N8S1627C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S1627C18D0Ev,_ZThn32_N8S1627C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1627C18D1Ev,_ZTv0_n32_N8S1627C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S1627C18D1Ev,_ZThn32_N8S1627C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1627C3D0Ev,_ZTv0_n32_N7S1627C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S1627C3D0Ev,_ZThn28_N7S1627C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1627C3D1Ev,_ZTv0_n32_N7S1627C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S1627C3D1Ev,_ZThn28_N7S1627C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1627C4D0Ev,_ZTv0_n32_N7S1627C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S1627C4D0Ev,_ZThn28_N7S1627C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1627C4D1Ev,_ZTv0_n32_N7S1627C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S1627C4D1Ev,_ZThn28_N7S1627C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S1627C2D0Ev,_ZTv0_n44_N7S1627C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S1627C2D0Ev,_ZThn80_N7S1627C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S1627C2D0Ev,_ZThn60_N7S1627C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S1627C2D1Ev,_ZTv0_n44_N7S1627C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S1627C2D1Ev,_ZThn80_N7S1627C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S1627C2D1Ev,_ZThn60_N7S1627C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S1627C2D0Ev,_ZTv0_n60_N7S1627C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S1627C2D0Ev,_ZThn88_N7S1627C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S1627C2D0Ev,_ZThn36_N7S1627C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S1627C2D1Ev,_ZTv0_n60_N7S1627C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S1627C2D1Ev,_ZThn88_N7S1627C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S1627C2D1Ev,_ZThn36_N7S1627C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1627C2D0Ev,_ZTv0_n32_N7S1627C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S1627C2D0Ev,_ZThn72_N7S1627C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S1627C2D0Ev,_ZThn28_N7S1627C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1627C2D1Ev,_ZTv0_n32_N7S1627C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S1627C2D1Ev,_ZThn72_N7S1627C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S1627C2D1Ev,_ZThn28_N7S1627C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S1627C2 = {  "S1627C2", // class name
  bases_S1627C2, 58,
  &(vtc_S1627C2[0]), // expected_vtbl_contents
  &(vtt_S1627C2[0]), // expected_vtt_contents
  ABISELECT(192,104), // object size
  NSPAIRA(_ZTI7S1627C2),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S1627C2),139, //virtual function table var
  16, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1627C2),111, //virtual table table var
  29, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names124,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1627C22  : S1627C18 , virtual S1627C3 {
  ~S1627C22(); // tgen
  S1627C22(); // tgen
};
//SIG(-1 S1627C22) C1{ BC2{ VBC3{ BC4{ m} VBC5{ m} VBC6{ m} BC7{ VBC5 BC4 VBC6} VBC8{ BC5 VBC7 VBC4} vd} BC9{ BC6 BC4 BC7 Fi} BC8 BC6 vd} VBC10{ BC11{ VBC7 VBC12{ VBC4} VBC9 BC6 VBC13{ VBC5 VBC4 VBC8 BC6 BC3 vd} vd Fi} BC4}}


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

static void Test_S1627C22()
{
  extern Class_Descriptor cd_S1627C22;
  void *lvp;
  {
    ABISELECT(double,int) buf[15];
    init_test(&cd_S1627C22, buf);
    S1627C22 *dp, &lv = *(dp=new (buf) S1627C22());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,56), "sizeof(S1627C22)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1627C22)");
    /*is_ambiguous_... S1627C22::S1627C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C13*), ABISELECT(40,20), "S1627C22");
    /*is_ambiguous_... S1627C22::S1627C13 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C13*), 0, "S1627C22");
    /*is_ambiguous_... S1627C22::S1627C13 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C5*)(S1627C13*), 0, "S1627C22");
    /*is_ambiguous_... S1627C22::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C5*), 0, "S1627C22");
    check_base_class_offset(lv, (S7856C24*)(S1627C5*)(S1627C10*)(S1627C18*), 0, "S1627C22");
    /*is_ambiguous_... S1627C22::S1627C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C5*)(S1627C10*), 0, "S1627C22");
    /*is_ambiguous_... S1627C11::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C11*), 0, "S1627C22");
    /*is_ambiguous_... S1627C13::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C13*)(S1627C11*), 0, "S1627C22");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C5*)(S1627C13*)(S1627C11*), 0, "S1627C22");
    /*is_ambiguous_... S1627C22::S1627C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C13*), ABISELECT(41,21), "S1627C22");
    /*is_ambiguous_... S1627C22::S1627C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C5*)(S1627C13*), ABISELECT(41,21), "S1627C22");
    /*is_ambiguous_... S1627C22::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C5*), ABISELECT(41,21), "S1627C22");
    check_base_class_offset(lv, (S7856C12*)(S1627C5*)(S1627C10*)(S1627C18*), ABISELECT(41,21), "S1627C22");
    /*is_ambiguous_... S1627C22::S1627C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C5*)(S1627C10*), ABISELECT(41,21), "S1627C22");
    check_base_class_offset(lv, (S7856C12*)(S1627C13*)(S1627C11*), ABISELECT(41,21), "S1627C22");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C5*)(S1627C13*)(S1627C11*), ABISELECT(41,21), "S1627C22");
    /*is_ambiguous_... S1627C22::S1627C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C5*)(S1627C13*), ABISELECT(32,16), "S1627C22");
    /*is_ambiguous_... S1627C22::S1627C13 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C13*), ABISELECT(32,16), "S1627C22");
    /*is_ambiguous_... S1627C22::S1627C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C12*), ABISELECT(48,24), "S1627C22");
    /*is_ambiguous_... S1627C22::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C5*), ABISELECT(48,24), "S1627C22");
    /*is_ambiguous_... S1627C22::S1627C12 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C12*), ABISELECT(48,24), "S1627C22");
    /*is_ambiguous_... S1627C18::S1627C12 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C12*)(S1627C18*), ABISELECT(48,24), "S1627C22");
    /*is_ambiguous_... S1627C4::S1627C5 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C4*)(S1627C3*), ABISELECT(48,24), "S1627C22");
    /*is_ambiguous_... S1627C22::S1627C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C12*), ABISELECT(56,28), "S1627C22");
    /*is_ambiguous_... S1627C18::S1627C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C12*)(S1627C18*), ABISELECT(56,28), "S1627C22");
    check_base_class_offset(lv, (S7856C15*)(S1627C9*), ABISELECT(56,28), "S1627C22");
    /*is_ambiguous_... S1627C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C11*), ABISELECT(56,28), "S1627C22");
    /*is_ambiguous_... S1627C22::S1627C13 */ AMB_check_base_class_offset(lv, (S1627C12*)(S1627C13*), ABISELECT(48,24), "S1627C22");
    check_base_class_offset(lv, (S1627C12*)(S1627C11*), ABISELECT(48,24), "S1627C22");
    check_base_class_offset(lv, (S1627C12*)(S1627C13*)(S1627C11*), ABISELECT(48,24), "S1627C22");
    check_base_class_offset(lv, (S1627C13*)(S1627C18*), ABISELECT(32,16), "S1627C22");
    /*is_ambiguous_... S1627C10::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C10*)(S1627C18*), 0, "S1627C22");
    /*is_ambiguous_... S1627C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C10*)(S1627C18*), ABISELECT(8,4), "S1627C22");
    check_base_class_offset(lv, (S7856C15*)(S1627C5*)(S1627C10*)(S1627C18*), 0, "S1627C22");
    check_base_class_offset(lv, (S1627C5*)(S1627C10*)(S1627C18*), 0, "S1627C22");
    check_base_class_offset(lv, (S1627C10*)(S1627C18*), 0, "S1627C22");
    /*is_ambiguous_... S1627C18::S1627C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C12*)(S1627C18*), ABISELECT(16,8), "S1627C22");
    /*is_ambiguous_... S1627C18::S1627C12 */ AMB_check_base_class_offset(lv, (S1627C12*)(S1627C18*), ABISELECT(16,8), "S1627C22");
    /*is_ambiguous_... S1627C18::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C18*), ABISELECT(24,12), "S1627C22");
    check_base_class_offset(lv, (S1627C18*), 0, "S1627C22");
    check_base_class_offset(lv, (S1627C9*)(S1627C4*)(S1627C3*), ABISELECT(64,32), "S1627C22");
    /*is_ambiguous_... S1627C22::S1627C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C10*), ABISELECT(80,40), "S1627C22");
    /*is_ambiguous_... S1627C22::S1627C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C10*), ABISELECT(88,44), "S1627C22");
    /*is_ambiguous_... S1627C22::S1627C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C5*)(S1627C10*), ABISELECT(80,40), "S1627C22");
    /*is_ambiguous_... S1627C22::S1627C10 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C10*), ABISELECT(80,40), "S1627C22");
    check_base_class_offset(lv, (S1627C10*)(S1627C4*)(S1627C3*), ABISELECT(80,40), "S1627C22");
    /*is_ambiguous_... S1627C4::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C4*)(S1627C3*), ABISELECT(64,32), "S1627C22");
    /*is_ambiguous_... S1627C11::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C11*), ABISELECT(96,48), "S1627C22");
    /*is_ambiguous_... S1627C13::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C13*)(S1627C11*), ABISELECT(104,52), "S1627C22");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C5*)(S1627C13*)(S1627C11*), ABISELECT(96,48), "S1627C22");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C13*)(S1627C11*), ABISELECT(96,48), "S1627C22");
    check_base_class_offset(lv, (S1627C13*)(S1627C11*), ABISELECT(96,48), "S1627C22");
    check_base_class_offset(lv, (S1627C11*)(S1627C4*)(S1627C3*), ABISELECT(96,48), "S1627C22");
    check_base_class_offset(lv, (S1627C4*)(S1627C3*), ABISELECT(64,32), "S1627C22");
    /*is_ambiguous_... S1627C3::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C3*), ABISELECT(64,32), "S1627C22");
    check_base_class_offset(lv, (S1627C3*), ABISELECT(64,32), "S1627C22");
    test_class_info(&lv, &cd_S1627C22);
    dp->~S1627C22();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1627C22(Test_S1627C22, "S1627C22", ABISELECT(112,56));

#else // __cplusplus

extern void _ZN8S1627C22C1Ev();
extern void _ZN8S1627C22D1Ev();
Name_Map name_map_S1627C22[] = {
  NSPAIR(_ZN8S1627C22C1Ev),
  NSPAIR(_ZN8S1627C22D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C12;
extern VTBL_ENTRY _ZTI8S1627C12[];
extern  VTBL_ENTRY _ZTV8S1627C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C12[];
extern Class_Descriptor cd_S1627C13;
extern VTBL_ENTRY _ZTI8S1627C13[];
extern  VTBL_ENTRY _ZTV8S1627C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C13[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S1627C10;
extern VTBL_ENTRY _ZTI8S1627C10[];
extern  VTBL_ENTRY _ZTV8S1627C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C10[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S1627C12;
extern VTBL_ENTRY _ZTI8S1627C12[];
extern  VTBL_ENTRY _ZTV8S1627C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1627C18;
extern VTBL_ENTRY _ZTI8S1627C18[];
extern  VTBL_ENTRY _ZTV8S1627C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C18[];
extern Class_Descriptor cd_S1627C9;
extern VTBL_ENTRY _ZTI7S1627C9[];
extern  VTBL_ENTRY _ZTV7S1627C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S1627C10;
extern VTBL_ENTRY _ZTI8S1627C10[];
extern  VTBL_ENTRY _ZTV8S1627C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S1627C13;
extern VTBL_ENTRY _ZTI8S1627C13[];
extern  VTBL_ENTRY _ZTV8S1627C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C13[];
extern Class_Descriptor cd_S1627C11;
extern VTBL_ENTRY _ZTI8S1627C11[];
extern  VTBL_ENTRY _ZTV8S1627C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C11[];
extern Class_Descriptor cd_S1627C4;
extern VTBL_ENTRY _ZTI7S1627C4[];
extern  VTBL_ENTRY _ZTV7S1627C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C4[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C3;
extern VTBL_ENTRY _ZTI7S1627C3[];
extern  VTBL_ENTRY _ZTV7S1627C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C3[];
static Base_Class bases_S1627C22[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(41,21), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S1627C5,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S1627C5,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S1627C12,    ABISELECT(48,24), //bcp->offset
    30, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S1627C13,    ABISELECT(32,16), //bcp->offset
    20, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S1627C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S1627C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S1627C12,    ABISELECT(16,8), //bcp->offset
    14, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S1627C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1627C9,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    33, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(88,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S1627C5,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S1627C10,    ABISELECT(80,40), //bcp->offset
    49, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    33, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S1627C5,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S1627C13,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S1627C11,    ABISELECT(96,48), //bcp->offset
    53, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    33, //immediately_derived
  0, 1},
  {&cd_S1627C4,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S1627C3,    ABISELECT(64,32), //bcp->offset
    36, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S1627C22[];
extern void _ZN8S1627C22D1Ev();
extern void _ZN8S1627C22D0Ev();
extern void ABISELECT(_ZTv0_n64_N8S1627C22D1Ev,_ZTv0_n32_N8S1627C22D1Ev)();
extern void ABISELECT(_ZThn32_N8S1627C22D1Ev,_ZThn16_N8S1627C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1627C22D0Ev,_ZTv0_n32_N8S1627C22D0Ev)();
extern void ABISELECT(_ZThn32_N8S1627C22D0Ev,_ZThn16_N8S1627C22D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1627C22D1Ev,_ZTv0_n44_N8S1627C22D1Ev)();
extern void ABISELECT(_ZThn64_N8S1627C22D1Ev,_ZThn32_N8S1627C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1627C22D0Ev,_ZTv0_n44_N8S1627C22D0Ev)();
extern void ABISELECT(_ZThn64_N8S1627C22D0Ev,_ZThn32_N8S1627C22D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1627C22D1Ev,_ZTv0_n32_N8S1627C22D1Ev)();
extern void ABISELECT(_ZThn96_N8S1627C22D1Ev,_ZThn48_N8S1627C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1627C22D0Ev,_ZTv0_n32_N8S1627C22D0Ev)();
extern void ABISELECT(_ZThn96_N8S1627C22D0Ev,_ZThn48_N8S1627C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S1627C22[] = {
  ABISELECT(96,48),
  ABISELECT(80,40),
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(56,28),
  ABISELECT(48,24),
  ABISELECT(48,24),
  ABISELECT(32,16),
  ABISELECT(41,21),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C22[0]),
  (VTBL_ENTRY)&_ZN8S1627C22D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C22D0Ev,
  ABISELECT(40,20),
  ABISELECT(32,16),
  ABISELECT(25,13),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1627C22[0]),
  ABISELECT(-32,-16),
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(9,5),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S1627C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C22D1Ev,_ZTv0_n32_N8S1627C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C22D0Ev,_ZTv0_n32_N8S1627C22D0Ev),
  ABISELECT(8,4),
  0,
  ABISELECT(-7,-3),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S1627C22[0]),
  ABISELECT(-64,-32),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(16,8),
  0,
  ABISELECT(-23,-11),
  ABISELECT(-64,-32),
  ABISELECT(-16,-8),
  ABISELECT(-8,-4),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S1627C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C22D1Ev,_ZTv0_n44_N8S1627C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C22D0Ev,_ZTv0_n44_N8S1627C22D0Ev),
  ABISELECT(-39,-19),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S1627C22[0]),
  ABISELECT(-96,-48),
  ABISELECT(-40,-20),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-55,-27),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S1627C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C22D1Ev,_ZTv0_n32_N8S1627C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C22D0Ev,_ZTv0_n32_N8S1627C22D0Ev),
};
extern VTBL_ENTRY _ZTV8S1627C22[];
extern void _ZN8S1627C18D1Ev();
extern void _ZN8S1627C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C18__8S1627C22[] = {
  ABISELECT(56,28),
  ABISELECT(48,24),
  ABISELECT(48,24),
  ABISELECT(32,16),
  ABISELECT(41,21),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C18[0]),
  (VTBL_ENTRY)&_ZN8S1627C18D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1627C108S1627C18__8S1627C22[] = {
  ABISELECT(41,21),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C58S1627C108S1627C18__A2__8S1627C22[] = {
  ABISELECT(41,21),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C128S1627C18__A1__8S1627C22[] = {
  ABISELECT(40,20),
  ABISELECT(32,16),
  ABISELECT(25,13),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C5__8S1627C128S1627C18__A1__8S1627C22[] = {
  ABISELECT(-7,-3),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S1627C12[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1627C18D1Ev,_ZTv0_n32_N8S1627C18D1Ev)();
extern void ABISELECT(_ZThn32_N8S1627C18D1Ev,_ZThn16_N8S1627C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1627C18D0Ev,_ZTv0_n32_N8S1627C18D0Ev)();
extern void ABISELECT(_ZThn32_N8S1627C18D0Ev,_ZThn16_N8S1627C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1627C13__8S1627C18__8S1627C22[] = {
  ABISELECT(-32,-16),
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(9,5),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S1627C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C18D1Ev,_ZTv0_n32_N8S1627C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C18D0Ev,_ZTv0_n32_N8S1627C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C18__8S1627C22[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-7,-3),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S1627C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__A__8S1627C18__8S1627C22[] = {
  ABISELECT(40,20),
  ABISELECT(32,16),
  ABISELECT(25,13),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1627C18[0]),
};
extern void _ZN8S1627C13D1Ev();
extern void _ZN8S1627C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C13__8S1627C22[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(9,5),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C13[0]),
  (VTBL_ENTRY)&_ZN8S1627C13D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1627C58S1627C13__8S1627C22[] = {
  ABISELECT(9,5),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C13__8S1627C22[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-7,-3),
  ABISELECT(-48,-24),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1627C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C22[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-7,-3),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C5__A1__8S1627C22[] = {
  ABISELECT(-7,-3),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
extern void _ZN7S1627C3D1Ev();
extern void _ZN7S1627C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1627C3__8S1627C22[] = {
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(16,8),
  0,
  ABISELECT(-23,-11),
  ABISELECT(-64,-32),
  ABISELECT(-16,-8),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C3[0]),
  (VTBL_ENTRY)&_ZN7S1627C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1627C3D0Ev,
};
extern void _ZN7S1627C4D1Ev();
extern void _ZN7S1627C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1627C47S1627C3__8S1627C22[] = {
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(16,8),
  0,
  ABISELECT(-23,-11),
  ABISELECT(-64,-32),
  ABISELECT(-16,-8),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
  (VTBL_ENTRY)&_ZN7S1627C4D1Ev,
  (VTBL_ENTRY)&_ZN7S1627C4D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__7S1627C47S1627C3__8S1627C22[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-7,-3),
  ABISELECT(-48,-24),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C10__7S1627C47S1627C3__8S1627C22[] = {
  ABISELECT(-39,-19),
  ABISELECT(-80,-40),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S1627C4D1Ev,_ZTv0_n32_N7S1627C4D1Ev)();
extern void ABISELECT(_ZThn32_N7S1627C4D1Ev,_ZThn16_N7S1627C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1627C4D0Ev,_ZTv0_n32_N7S1627C4D0Ev)();
extern void ABISELECT(_ZThn32_N7S1627C4D0Ev,_ZThn16_N7S1627C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1627C11__7S1627C47S1627C3__8S1627C22[] = {
  ABISELECT(-32,-16),
  ABISELECT(-40,-20),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-55,-27),
  ABISELECT(-96,-48),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C4D1Ev,_ZTv0_n32_N7S1627C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C4D0Ev,_ZTv0_n32_N7S1627C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__7S1627C3__8S1627C22[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-7,-3),
  ABISELECT(-48,-24),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S1627C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C10__7S1627C3__8S1627C22[] = {
  ABISELECT(-39,-19),
  ABISELECT(-80,-40),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S1627C3[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S1627C3D1Ev,_ZTv0_n32_N7S1627C3D1Ev)();
extern void ABISELECT(_ZThn32_N7S1627C3D1Ev,_ZThn16_N7S1627C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1627C3D0Ev,_ZTv0_n32_N7S1627C3D0Ev)();
extern void ABISELECT(_ZThn32_N7S1627C3D0Ev,_ZThn16_N7S1627C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1627C11__7S1627C3__8S1627C22[] = {
  ABISELECT(-32,-16),
  ABISELECT(-40,-20),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-55,-27),
  ABISELECT(-96,-48),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S1627C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C3D1Ev,_ZTv0_n32_N7S1627C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C3D0Ev,_ZTv0_n32_N7S1627C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1627C9__8S1627C22[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C10__A1__8S1627C22[] = {
  ABISELECT(-39,-19),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C58S1627C10__A3__8S1627C22[] = {
  ABISELECT(-39,-19),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
extern void _ZN8S1627C11D1Ev();
extern void _ZN8S1627C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C11__8S1627C22[] = {
  ABISELECT(-40,-20),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-55,-27),
  ABISELECT(-96,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C11[0]),
  (VTBL_ENTRY)&_ZN8S1627C11D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C11D0Ev,
};
extern void _ZN8S1627C13D1Ev();
extern void _ZN8S1627C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C138S1627C11__A1__8S1627C22[] = {
  ABISELECT(-40,-20),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-55,-27),
  ABISELECT(-96,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C13[0]),
  (VTBL_ENTRY)&_ZN8S1627C13D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1627C58S1627C138S1627C11__A4__8S1627C22[] = {
  ABISELECT(-55,-27),
  ABISELECT(-96,-48),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C138S1627C11__A1__8S1627C22[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-7,-3),
  ABISELECT(-48,-24),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S1627C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C11__8S1627C22[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-7,-3),
  ABISELECT(-48,-24),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S1627C11[0]),
};
static  VTT_ENTRY vtt_S1627C22[] = {
  {&(_ZTV8S1627C22[12]),  12,63},
  {&(_tg__ZTV8S1627C18__8S1627C22[8]),  8,10},
  {&(_tg__ZTV8S1627C108S1627C18__8S1627C22[4]),  4,4},
  {&(_tg__ZTV7S1627C58S1627C108S1627C18__A2__8S1627C22[4]),  4,4},
  {&(_tg__ZTV8S1627C128S1627C18__A1__8S1627C22[6]),  6,6},
  {&(_tg__ZTV7S1627C5__8S1627C128S1627C18__A1__8S1627C22[4]),  4,4},
  {&(_tg__ZTV8S1627C13__8S1627C18__8S1627C22[8]),  8,10},
  {&(_tg__ZTV8S1627C12__8S1627C18__8S1627C22[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C18__8S1627C22[6]),  6,6},
  {&(_tg__ZTV8S1627C12__A__8S1627C18__8S1627C22[6]),  6,6},
  {&(_ZTV8S1627C22[28]),  28,63},
  {&(_ZTV8S1627C22[36]),  36,63},
  {&(_ZTV8S1627C22[36]),  36,63},
  {&(_ZTV8S1627C22[20]),  20,63},
  {&(_ZTV8S1627C22[47]),  47,63},
  {&(_ZTV8S1627C22[47]),  47,63},
  {&(_ZTV8S1627C22[53]),  53,63},
  {&(_ZTV8S1627C22[61]),  61,63},
  {&(_tg__ZTV8S1627C13__8S1627C22[7]),  7,9},
  {&(_tg__ZTV7S1627C58S1627C13__8S1627C22[4]),  4,4},
  {&(_tg__ZTV8S1627C12__8S1627C13__8S1627C22[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C13__8S1627C22[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C22[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C22[6]),  6,6},
  {&(_tg__ZTV7S1627C5__A1__8S1627C22[4]),  4,4},
  {&(_tg__ZTV7S1627C3__8S1627C22[10]),  10,12},
  {&(_tg__ZTV7S1627C47S1627C3__8S1627C22[10]),  10,12},
  {&(_tg__ZTV8S1627C12__7S1627C47S1627C3__8S1627C22[6]),  6,6},
  {&(_tg__ZTV7S1627C47S1627C3__8S1627C22[10]),  10,12},
  {&(_tg__ZTV8S1627C10__7S1627C47S1627C3__8S1627C22[4]),  4,4},
  {&(_tg__ZTV8S1627C11__7S1627C47S1627C3__8S1627C22[8]),  8,10},
  {&(_tg__ZTV8S1627C12__7S1627C47S1627C3__8S1627C22[6]),  6,6},
  {&(_tg__ZTV8S1627C12__7S1627C3__8S1627C22[6]),  6,6},
  {&(_tg__ZTV7S1627C3__8S1627C22[10]),  10,12},
  {&(_tg__ZTV8S1627C10__7S1627C3__8S1627C22[4]),  4,4},
  {&(_tg__ZTV8S1627C11__7S1627C3__8S1627C22[8]),  8,10},
  {&(_tg__ZTV8S1627C12__7S1627C3__8S1627C22[6]),  6,6},
  {&(_tg__ZTV7S1627C9__8S1627C22[3]),  3,3},
  {&(_tg__ZTV8S1627C10__A1__8S1627C22[4]),  4,4},
  {&(_tg__ZTV7S1627C58S1627C10__A3__8S1627C22[4]),  4,4},
  {&(_tg__ZTV8S1627C11__8S1627C22[7]),  7,9},
  {&(_tg__ZTV8S1627C138S1627C11__A1__8S1627C22[7]),  7,9},
  {&(_tg__ZTV7S1627C58S1627C138S1627C11__A4__8S1627C22[4]),  4,4},
  {&(_tg__ZTV8S1627C12__8S1627C138S1627C11__A1__8S1627C22[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C138S1627C11__A1__8S1627C22[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C11__8S1627C22[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C11__8S1627C22[6]),  6,6},
};
extern VTBL_ENTRY _ZTI8S1627C22[];
extern  VTBL_ENTRY _ZTV8S1627C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C22[];
static VTBL_ENTRY alt_thunk_names125[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1627C3D0Ev,_ZTv0_n32_N7S1627C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S1627C3D0Ev,_ZThn16_N7S1627C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1627C3D1Ev,_ZTv0_n32_N7S1627C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S1627C3D1Ev,_ZThn16_N7S1627C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1627C4D0Ev,_ZTv0_n32_N7S1627C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S1627C4D0Ev,_ZThn16_N7S1627C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1627C4D1Ev,_ZTv0_n32_N7S1627C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S1627C4D1Ev,_ZThn16_N7S1627C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1627C18D0Ev,_ZTv0_n32_N8S1627C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S1627C18D0Ev,_ZThn16_N8S1627C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1627C18D1Ev,_ZTv0_n32_N8S1627C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S1627C18D1Ev,_ZThn16_N8S1627C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1627C22D0Ev,_ZTv0_n44_N8S1627C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S1627C22D0Ev,_ZThn32_N8S1627C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1627C22D1Ev,_ZTv0_n44_N8S1627C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S1627C22D1Ev,_ZThn32_N8S1627C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1627C22D0Ev,_ZTv0_n32_N8S1627C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S1627C22D0Ev,_ZThn48_N8S1627C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S1627C22D0Ev,_ZThn16_N8S1627C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1627C22D1Ev,_ZTv0_n32_N8S1627C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S1627C22D1Ev,_ZThn48_N8S1627C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S1627C22D1Ev,_ZThn16_N8S1627C22D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S1627C22 = {  "S1627C22", // class name
  bases_S1627C22, 36,
  &(vtc_S1627C22[0]), // expected_vtbl_contents
  &(vtt_S1627C22[0]), // expected_vtt_contents
  ABISELECT(112,56), // object size
  NSPAIRA(_ZTI8S1627C22),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S1627C22),63, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1627C22),47, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names125,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1627C1  : S1627C2 , virtual S1627C22 {
  ~S1627C1(); // tgen
  S1627C1(); // tgen
};
//SIG(1 S1627C1) C1{ BC2{ BC3{ BC4{ VBC5{ VBC6{ m} BC7{ m} VBC8{ m}} VBC9{ VBC7} VBC10{ BC8 BC7 BC5 Fi} BC8 VBC11{ VBC6 VBC7 VBC12{ BC6 VBC5 VBC7} BC8 BC13{ BC7 VBC6 VBC8 BC5 VBC12 vd} vd} vd Fi} BC7} VBC14{ BC9 VBC8 BC15{ VBC16{ VBC11 VBC10 VBC13 vd Fi[2]} VBC17{ m} VBC4 BC18{ VBC13 BC10 BC12 BC8 vd} vd} BC19{ BC7 BC9 vd} vd} BC20{ m} VBC15 BC21{ VBC8 VBC17 Fc} vd Fs} VBC22{ BC18 VBC3}}


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

static void Test_S1627C1()
{
  extern Class_Descriptor cd_S1627C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(31,33)];
    init_test(&cd_S1627C1, buf);
    S1627C1 *dp, &lv = *(dp=new (buf) S1627C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,128), "sizeof(S1627C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1627C1)");
    /*is_ambiguous_... S1627C1::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C5*), 0, "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C5*)(S1627C10*), 0, "S1627C1");
    /*is_ambiguous_... S1627C11::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C11*), 0, "S1627C1");
    /*is_ambiguous_... S1627C13::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C13*)(S1627C11*), 0, "S1627C1");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C5*)(S1627C13*)(S1627C11*), 0, "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C13 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C13*), 0, "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C13 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C5*)(S1627C13*), 0, "S1627C1");
    check_base_class_offset(lv, (S7856C24*)(S1627C5*)(S1627C10*)(S1627C18*)(S1627C15*)(S1627C14*), 0, "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C15 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C5*)(S1627C10*)(S1627C18*)(S1627C15*), 0, "S1627C1");
    check_base_class_offset(lv, (S7856C24*)(S1627C5*)(S1627C10*)(S1627C18*)(S1627C22*), 0, "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C5*), ABISELECT(112,60), "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C5*), ABISELECT(28,16), "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C5*)(S1627C10*), ABISELECT(28,16), "S1627C1");
    check_base_class_offset(lv, (S7856C12*)(S1627C13*)(S1627C11*), ABISELECT(28,16), "S1627C1");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C5*)(S1627C13*)(S1627C11*), ABISELECT(28,16), "S1627C1");
    /*is_ambiguous_... S1627C14::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C14*), ABISELECT(28,16), "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C13*), ABISELECT(28,16), "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C5*)(S1627C13*), ABISELECT(28,16), "S1627C1");
    check_base_class_offset(lv, (S7856C12*)(S1627C5*)(S1627C10*)(S1627C18*)(S1627C15*)(S1627C14*), ABISELECT(28,16), "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C15 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C5*)(S1627C10*)(S1627C18*)(S1627C15*), ABISELECT(28,16), "S1627C1");
    check_base_class_offset(lv, (S7856C12*)(S1627C21*)(S1627C2*), ABISELECT(28,16), "S1627C1");
    check_base_class_offset(lv, (S7856C12*)(S1627C5*)(S1627C10*)(S1627C18*)(S1627C22*), ABISELECT(28,16), "S1627C1");
    /*is_ambiguous_... S1627C4::S1627C5 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C4*)(S1627C3*)(S1627C2*), ABISELECT(112,60), "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C12 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C12*), ABISELECT(112,60), "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C4 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C4*), ABISELECT(112,60), "S1627C1");
    /*is_ambiguous_... S1627C18::S1627C12 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C12*)(S1627C18*)(S1627C15*)(S1627C14*), ABISELECT(112,60), "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C15 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C12*)(S1627C18*)(S1627C15*), ABISELECT(112,60), "S1627C1");
    /*is_ambiguous_... S1627C18::S1627C12 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C12*)(S1627C18*)(S1627C22*), ABISELECT(112,60), "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C3 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C4*)(S1627C3*), ABISELECT(112,60), "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C9*), ABISELECT(28,16), "S1627C1");
    /*is_ambiguous_... S1627C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C11*), ABISELECT(28,16), "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C12*), ABISELECT(28,16), "S1627C1");
    /*is_ambiguous_... S1627C14::S1627C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C9*)(S1627C14*), ABISELECT(28,16), "S1627C1");
    /*is_ambiguous_... S1627C18::S1627C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C12*)(S1627C18*)(S1627C15*)(S1627C14*), ABISELECT(28,16), "S1627C1");
    check_base_class_offset(lv, (S7856C15*)(S1627C9*)(S1627C19*)(S1627C14*), ABISELECT(28,16), "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C12*)(S1627C18*)(S1627C15*), ABISELECT(28,16), "S1627C1");
    /*is_ambiguous_... S1627C18::S1627C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C12*)(S1627C18*)(S1627C22*), ABISELECT(28,16), "S1627C1");
    check_base_class_offset(lv, (S1627C9*)(S1627C4*)(S1627C3*)(S1627C2*), 0, "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C4 */ AMB_check_base_class_offset(lv, (S1627C9*)(S1627C4*), 0, "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C3 */ AMB_check_base_class_offset(lv, (S1627C9*)(S1627C4*)(S1627C3*), 0, "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C10*), ABISELECT(32,20), "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C10*), ABISELECT(40,24), "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C5*)(S1627C10*), ABISELECT(32,20), "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C10 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C10*), ABISELECT(32,20), "S1627C1");
    check_base_class_offset(lv, (S1627C10*)(S1627C4*)(S1627C3*)(S1627C2*), ABISELECT(32,20), "S1627C1");
    check_base_class_offset(lv, (S1627C10*)(S1627C16*), ABISELECT(32,20), "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C4 */ AMB_check_base_class_offset(lv, (S1627C10*)(S1627C4*), ABISELECT(32,20), "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C3 */ AMB_check_base_class_offset(lv, (S1627C10*)(S1627C4*)(S1627C3*), ABISELECT(32,20), "S1627C1");
    /*is_ambiguous_... S1627C4::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C4*)(S1627C3*)(S1627C2*), 0, "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C12*), ABISELECT(112,60), "S1627C1");
    check_base_class_offset(lv, (S1627C12*)(S1627C11*), ABISELECT(112,60), "S1627C1");
    check_base_class_offset(lv, (S1627C12*)(S1627C13*)(S1627C11*), ABISELECT(112,60), "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C13 */ AMB_check_base_class_offset(lv, (S1627C12*)(S1627C13*), ABISELECT(112,60), "S1627C1");
    /*is_ambiguous_... S1627C11::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C11*), ABISELECT(48,28), "S1627C1");
    /*is_ambiguous_... S1627C13::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C13*)(S1627C11*), ABISELECT(56,32), "S1627C1");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C5*)(S1627C13*)(S1627C11*), ABISELECT(48,28), "S1627C1");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C13*)(S1627C11*), ABISELECT(48,28), "S1627C1");
    check_base_class_offset(lv, (S1627C13*)(S1627C11*), ABISELECT(48,28), "S1627C1");
    check_base_class_offset(lv, (S1627C11*)(S1627C4*)(S1627C3*)(S1627C2*), ABISELECT(48,28), "S1627C1");
    check_base_class_offset(lv, (S1627C11*)(S1627C16*), ABISELECT(48,28), "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C4 */ AMB_check_base_class_offset(lv, (S1627C11*)(S1627C4*), ABISELECT(48,28), "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C3 */ AMB_check_base_class_offset(lv, (S1627C11*)(S1627C4*)(S1627C3*), ABISELECT(48,28), "S1627C1");
    check_base_class_offset(lv, (S1627C4*)(S1627C3*)(S1627C2*), 0, "S1627C1");
    /*is_ambiguous_... S1627C3::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C3*)(S1627C2*), 0, "S1627C1");
    check_base_class_offset(lv, (S1627C3*)(S1627C2*), 0, "S1627C1");
    /*is_ambiguous_... S1627C14::S1627C9 */ AMB_check_base_class_offset(lv, (S1627C9*)(S1627C14*), ABISELECT(64,36), "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C13*), ABISELECT(136,76), "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C5*)(S1627C13*), ABISELECT(128,72), "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C13 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C13*), ABISELECT(128,72), "S1627C1");
    /*is_ambiguous_... S1627C16::S1627C13 */ AMB_check_base_class_offset(lv, (S1627C13*)(S1627C16*), ABISELECT(128,72), "S1627C1");
    check_base_class_offset(lv, (S1627C13*)(S1627C18*)(S1627C15*)(S1627C14*), ABISELECT(128,72), "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C15 */ AMB_check_base_class_offset(lv, (S1627C13*)(S1627C18*)(S1627C15*), ABISELECT(128,72), "S1627C1");
    check_base_class_offset(lv, (S1627C13*)(S1627C18*)(S1627C22*), ABISELECT(128,72), "S1627C1");
    check_base_class_offset(lv, (S1627C16*)(S1627C15*)(S1627C14*), ABISELECT(112,60), "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C15 */ AMB_check_base_class_offset(lv, (S1627C16*)(S1627C15*), ABISELECT(112,60), "S1627C1");
    check_base_class_offset(lv, (S7856C9_nt*)(S1627C15*)(S1627C14*), 0, "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C15 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S1627C15*), 0, "S1627C1");
    check_base_class_offset(lv, (S7856C9_nt*)(S1627C21*)(S1627C2*), 0, "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C4 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C4*), ABISELECT(144,80), "S1627C1");
    check_base_class_offset(lv, (S1627C4*)(S1627C15*)(S1627C14*), ABISELECT(144,80), "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C15 */ AMB_check_base_class_offset(lv, (S1627C4*)(S1627C15*), ABISELECT(144,80), "S1627C1");
    /*is_ambiguous_... S1627C10::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C10*)(S1627C18*)(S1627C15*)(S1627C14*), ABISELECT(72,40), "S1627C1");
    /*is_ambiguous_... S1627C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C10*)(S1627C18*)(S1627C15*)(S1627C14*), ABISELECT(80,44), "S1627C1");
    check_base_class_offset(lv, (S7856C15*)(S1627C5*)(S1627C10*)(S1627C18*)(S1627C15*)(S1627C14*), ABISELECT(72,40), "S1627C1");
    check_base_class_offset(lv, (S1627C5*)(S1627C10*)(S1627C18*)(S1627C15*)(S1627C14*), ABISELECT(72,40), "S1627C1");
    check_base_class_offset(lv, (S1627C10*)(S1627C18*)(S1627C15*)(S1627C14*), ABISELECT(72,40), "S1627C1");
    /*is_ambiguous_... S1627C18::S1627C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C12*)(S1627C18*)(S1627C15*)(S1627C14*), ABISELECT(88,48), "S1627C1");
    /*is_ambiguous_... S1627C18::S1627C12 */ AMB_check_base_class_offset(lv, (S1627C12*)(S1627C18*)(S1627C15*)(S1627C14*), ABISELECT(88,48), "S1627C1");
    /*is_ambiguous_... S1627C18::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C18*)(S1627C15*)(S1627C14*), ABISELECT(96,52), "S1627C1");
    check_base_class_offset(lv, (S1627C18*)(S1627C15*)(S1627C14*), ABISELECT(72,40), "S1627C1");
    check_base_class_offset(lv, (S1627C15*)(S1627C14*), ABISELECT(72,40), "S1627C1");
    /*is_ambiguous_... S1627C19::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C19*)(S1627C14*), ABISELECT(104,56), "S1627C1");
    check_base_class_offset(lv, (S1627C9*)(S1627C19*)(S1627C14*), ABISELECT(104,56), "S1627C1");
    check_base_class_offset(lv, (S1627C19*)(S1627C14*), ABISELECT(104,56), "S1627C1");
    check_base_class_offset(lv, (S1627C14*)(S1627C2*), ABISELECT(64,36), "S1627C1");
    check_base_class_offset(lv, (S77C13_nt*)(S1627C2*), 0, "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C15 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C10*)(S1627C18*)(S1627C15*), ABISELECT(160,88), "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C10*)(S1627C18*)(S1627C15*), ABISELECT(168,92), "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C5*)(S1627C10*)(S1627C18*)(S1627C15*), ABISELECT(160,88), "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C15 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C10*)(S1627C18*)(S1627C15*), ABISELECT(160,88), "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C15 */ AMB_check_base_class_offset(lv, (S1627C10*)(S1627C18*)(S1627C15*), ABISELECT(160,88), "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C15 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C12*)(S1627C18*)(S1627C15*), ABISELECT(176,96), "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C15 */ AMB_check_base_class_offset(lv, (S1627C12*)(S1627C18*)(S1627C15*), ABISELECT(176,96), "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C15 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C18*)(S1627C15*), ABISELECT(184,100), "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C15 */ AMB_check_base_class_offset(lv, (S1627C18*)(S1627C15*), ABISELECT(160,88), "S1627C1");
    /*is_ambiguous_... S1627C2::S1627C15 */ AMB_check_base_class_offset(lv, (S1627C15*)(S1627C2*), ABISELECT(160,88), "S1627C1");
    check_base_class_offset(lv, (S1627C21*)(S1627C2*), ABISELECT(16,8), "S1627C1");
    check_base_class_offset(lv, (S1627C2*), 0, "S1627C1");
    /*is_ambiguous_... S1627C10::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C10*)(S1627C18*)(S1627C22*), ABISELECT(192,104), "S1627C1");
    /*is_ambiguous_... S1627C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C10*)(S1627C18*)(S1627C22*), ABISELECT(200,108), "S1627C1");
    check_base_class_offset(lv, (S7856C15*)(S1627C5*)(S1627C10*)(S1627C18*)(S1627C22*), ABISELECT(192,104), "S1627C1");
    check_base_class_offset(lv, (S1627C5*)(S1627C10*)(S1627C18*)(S1627C22*), ABISELECT(192,104), "S1627C1");
    check_base_class_offset(lv, (S1627C10*)(S1627C18*)(S1627C22*), ABISELECT(192,104), "S1627C1");
    /*is_ambiguous_... S1627C18::S1627C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C12*)(S1627C18*)(S1627C22*), ABISELECT(208,112), "S1627C1");
    /*is_ambiguous_... S1627C18::S1627C12 */ AMB_check_base_class_offset(lv, (S1627C12*)(S1627C18*)(S1627C22*), ABISELECT(208,112), "S1627C1");
    /*is_ambiguous_... S1627C18::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C18*)(S1627C22*), ABISELECT(216,116), "S1627C1");
    check_base_class_offset(lv, (S1627C18*)(S1627C22*), ABISELECT(192,104), "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C3 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C4*)(S1627C3*), ABISELECT(224,120), "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C3 */ AMB_check_base_class_offset(lv, (S1627C4*)(S1627C3*), ABISELECT(224,120), "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C3*), ABISELECT(224,120), "S1627C1");
    check_base_class_offset(lv, (S1627C3*)(S1627C22*), ABISELECT(224,120), "S1627C1");
    check_base_class_offset(lv, (S1627C22*), ABISELECT(192,104), "S1627C1");
    test_class_info(&lv, &cd_S1627C1);
    dp->~S1627C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1627C1(Test_S1627C1, "S1627C1", ABISELECT(240,128));

#else // __cplusplus

extern void _ZN7S1627C1C1Ev();
extern void _ZN7S1627C1D1Ev();
Name_Map name_map_S1627C1[] = {
  NSPAIR(_ZN7S1627C1C1Ev),
  NSPAIR(_ZN7S1627C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C9;
extern VTBL_ENTRY _ZTI7S1627C9[];
extern  VTBL_ENTRY _ZTV7S1627C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S1627C10;
extern VTBL_ENTRY _ZTI8S1627C10[];
extern  VTBL_ENTRY _ZTV8S1627C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S1627C12;
extern VTBL_ENTRY _ZTI8S1627C12[];
extern  VTBL_ENTRY _ZTV8S1627C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S1627C13;
extern VTBL_ENTRY _ZTI8S1627C13[];
extern  VTBL_ENTRY _ZTV8S1627C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C13[];
extern Class_Descriptor cd_S1627C11;
extern VTBL_ENTRY _ZTI8S1627C11[];
extern  VTBL_ENTRY _ZTV8S1627C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C11[];
extern Class_Descriptor cd_S1627C4;
extern VTBL_ENTRY _ZTI7S1627C4[];
extern  VTBL_ENTRY _ZTV7S1627C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C4[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C3;
extern VTBL_ENTRY _ZTI7S1627C3[];
extern  VTBL_ENTRY _ZTV7S1627C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C3[];
extern Class_Descriptor cd_S1627C9;
extern VTBL_ENTRY _ZTI7S1627C9[];
extern  VTBL_ENTRY _ZTV7S1627C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C9[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S1627C13;
extern VTBL_ENTRY _ZTI8S1627C13[];
extern  VTBL_ENTRY _ZTV8S1627C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C13[];
extern Class_Descriptor cd_S1627C16;
extern VTBL_ENTRY _ZTI8S1627C16[];
extern  VTBL_ENTRY _ZTV8S1627C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C16[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1627C4;
extern VTBL_ENTRY _ZTI7S1627C4[];
extern  VTBL_ENTRY _ZTV7S1627C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C4[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S1627C10;
extern VTBL_ENTRY _ZTI8S1627C10[];
extern  VTBL_ENTRY _ZTV8S1627C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C10[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S1627C12;
extern VTBL_ENTRY _ZTI8S1627C12[];
extern  VTBL_ENTRY _ZTV8S1627C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1627C18;
extern VTBL_ENTRY _ZTI8S1627C18[];
extern  VTBL_ENTRY _ZTV8S1627C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C18[];
extern Class_Descriptor cd_S1627C15;
extern VTBL_ENTRY _ZTI8S1627C15[];
extern  VTBL_ENTRY _ZTV8S1627C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C9;
extern VTBL_ENTRY _ZTI7S1627C9[];
extern  VTBL_ENTRY _ZTV7S1627C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C9[];
extern Class_Descriptor cd_S1627C19;
extern VTBL_ENTRY _ZTI8S1627C19[];
extern  VTBL_ENTRY _ZTV8S1627C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C19[];
extern Class_Descriptor cd_S1627C14;
extern VTBL_ENTRY _ZTI8S1627C14[];
extern  VTBL_ENTRY _ZTV8S1627C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S1627C10;
extern VTBL_ENTRY _ZTI8S1627C10[];
extern  VTBL_ENTRY _ZTV8S1627C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C10[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S1627C12;
extern VTBL_ENTRY _ZTI8S1627C12[];
extern  VTBL_ENTRY _ZTV8S1627C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1627C18;
extern VTBL_ENTRY _ZTI8S1627C18[];
extern  VTBL_ENTRY _ZTV8S1627C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C18[];
extern Class_Descriptor cd_S1627C15;
extern VTBL_ENTRY _ZTI8S1627C15[];
extern  VTBL_ENTRY _ZTV8S1627C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C15[];
extern Class_Descriptor cd_S1627C21;
extern VTBL_ENTRY _ZTI8S1627C21[];
extern  VTBL_ENTRY _ZTV8S1627C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C21[];
extern Class_Descriptor cd_S1627C2;
extern VTBL_ENTRY _ZTI7S1627C2[];
extern  VTBL_ENTRY _ZTV7S1627C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C2[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S1627C10;
extern VTBL_ENTRY _ZTI8S1627C10[];
extern  VTBL_ENTRY _ZTV8S1627C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C10[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S1627C12;
extern VTBL_ENTRY _ZTI8S1627C12[];
extern  VTBL_ENTRY _ZTV8S1627C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1627C18;
extern VTBL_ENTRY _ZTI8S1627C18[];
extern  VTBL_ENTRY _ZTV8S1627C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C18[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1627C4;
extern VTBL_ENTRY _ZTI7S1627C4[];
extern  VTBL_ENTRY _ZTV7S1627C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C4[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C3;
extern VTBL_ENTRY _ZTI7S1627C3[];
extern  VTBL_ENTRY _ZTV7S1627C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C3[];
extern Class_Descriptor cd_S1627C22;
extern VTBL_ENTRY _ZTI8S1627C22[];
extern  VTBL_ENTRY _ZTV8S1627C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C22[];
static Base_Class bases_S1627C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(28,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S1627C5,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(28,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S1627C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S1627C5,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S1627C10,    ABISELECT(32,20), //bcp->offset
    24, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S1627C12,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S1627C5,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S1627C13,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S1627C11,    ABISELECT(48,28), //bcp->offset
    28, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S1627C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S1627C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S1627C9,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(136,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(128,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S1627C5,    ABISELECT(128,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    103, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S1627C13,    ABISELECT(128,72), //bcp->offset
    95, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    102, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S1627C16,    ABISELECT(112,60), //bcp->offset
    82, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    96, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    41, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    41, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(144,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S1627C4,    ABISELECT(144,80), //bcp->offset
    105, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    106, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    41, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S1627C5,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S1627C10,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    66, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S1627C12,    ABISELECT(88,48), //bcp->offset
    71, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S1627C18,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S1627C15,    ABISELECT(72,40), //bcp->offset
    55, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S1627C9,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    84, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S1627C19,    ABISELECT(104,56), //bcp->offset
    77, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    83, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S1627C14,    ABISELECT(64,36), //bcp->offset
    38, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    62, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    58, //immediately_derived
  0, 1},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(168,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S1627C5,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    115, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S1627C10,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    114, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(176,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    53, //immediately_derived
  0, 0},
  {&cd_S1627C12,    ABISELECT(176,96), //bcp->offset
    135, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    116, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(184,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S1627C18,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    113, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    56, //immediately_derived
  0, 0},
  {&cd_S1627C15,    ABISELECT(160,88), //bcp->offset
    118, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    112, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    58, //immediately_derived
  0, 1},
  {&cd_S1627C21,    ABISELECT(16,8), //bcp->offset
    20, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S1627C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    ABISELECT(192,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    63, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(200,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    63, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(192,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S1627C5,    ABISELECT(192,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    134, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    63, //immediately_derived
  0, 0},
  {&cd_S1627C10,    ABISELECT(192,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    133, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    67, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(208,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    65, //immediately_derived
  0, 0},
  {&cd_S1627C12,    ABISELECT(208,112), //bcp->offset
    156, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    135, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    67, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(216,116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    67, //immediately_derived
  0, 0},
  {&cd_S1627C18,    ABISELECT(192,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    132, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    72, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(224,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    69, //immediately_derived
  0, 0},
  {&cd_S1627C4,    ABISELECT(224,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    150, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    71, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(224,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    71, //immediately_derived
  0, 0},
  {&cd_S1627C3,    ABISELECT(224,120), //bcp->offset
    162, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    149, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    72, //immediately_derived
  0, 1},
  {&cd_S1627C22,    ABISELECT(192,104), //bcp->offset
    141, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    131, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S1627C1[];
extern void _ZN7S1627C1D1Ev();
extern void _ZN7S1627C1D0Ev();
extern void ABISELECT(_ZTv0_n64_N7S1627C1D1Ev,_ZTv0_n32_N7S1627C1D1Ev)();
extern void ABISELECT(_ZThn48_N7S1627C1D1Ev,_ZThn28_N7S1627C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1627C1D0Ev,_ZTv0_n32_N7S1627C1D0Ev)();
extern void ABISELECT(_ZThn48_N7S1627C1D0Ev,_ZThn28_N7S1627C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S1627C1D1Ev,_ZTv0_n60_N7S1627C1D1Ev)();
extern void ABISELECT(_ZThn64_N7S1627C1D1Ev,_ZThn36_N7S1627C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S1627C1D0Ev,_ZTv0_n60_N7S1627C1D0Ev)();
extern void ABISELECT(_ZThn64_N7S1627C1D0Ev,_ZThn36_N7S1627C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn8_n120_N7S1627C1D1Ev,_ZTvn4_n60_N7S1627C1D1Ev)();
extern void ABISELECT(_ZTvn8_n120_N7S1627C1D0Ev,_ZTvn4_n60_N7S1627C1D0Ev)();
extern void ABISELECT(_ZTvn40_n120_N7S1627C1D1Ev,_ZTvn20_n60_N7S1627C1D1Ev)();
extern void ABISELECT(_ZTvn40_n120_N7S1627C1D0Ev,_ZTvn20_n60_N7S1627C1D0Ev)();
extern void ABISELECT(_ZTv0_n88_N7S1627C1D1Ev,_ZTv0_n44_N7S1627C1D1Ev)();
extern void ABISELECT(_ZThn112_N7S1627C1D1Ev,_ZThn60_N7S1627C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S1627C1D0Ev,_ZTv0_n44_N7S1627C1D0Ev)();
extern void ABISELECT(_ZThn112_N7S1627C1D0Ev,_ZThn60_N7S1627C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1627C1D1Ev,_ZTv0_n32_N7S1627C1D1Ev)();
extern void ABISELECT(_ZThn128_N7S1627C1D1Ev,_ZThn72_N7S1627C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1627C1D0Ev,_ZTv0_n32_N7S1627C1D0Ev)();
extern void ABISELECT(_ZThn128_N7S1627C1D0Ev,_ZThn72_N7S1627C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S1627C1D1Ev,_ZTv0_n44_N7S1627C1D1Ev)();
extern void ABISELECT(_ZThn144_N7S1627C1D1Ev,_ZThn80_N7S1627C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S1627C1D0Ev,_ZTv0_n44_N7S1627C1D0Ev)();
extern void ABISELECT(_ZThn144_N7S1627C1D0Ev,_ZThn80_N7S1627C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S1627C1D1Ev,_ZTv0_n60_N7S1627C1D1Ev)();
extern void ABISELECT(_ZThn160_N7S1627C1D1Ev,_ZThn88_N7S1627C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S1627C1D0Ev,_ZTv0_n60_N7S1627C1D0Ev)();
extern void ABISELECT(_ZThn160_N7S1627C1D0Ev,_ZThn88_N7S1627C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n104_N7S1627C1D1Ev,_ZTv0_n52_N7S1627C1D1Ev)();
extern void ABISELECT(_ZThn192_N7S1627C1D1Ev,_ZThn104_N7S1627C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n104_N7S1627C1D0Ev,_ZTv0_n52_N7S1627C1D0Ev)();
extern void ABISELECT(_ZThn192_N7S1627C1D0Ev,_ZThn104_N7S1627C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S1627C1D1Ev,_ZTv0_n44_N7S1627C1D1Ev)();
extern void ABISELECT(_ZThn224_N7S1627C1D1Ev,_ZThn120_N7S1627C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S1627C1D0Ev,_ZTv0_n44_N7S1627C1D0Ev)();
extern void ABISELECT(_ZThn224_N7S1627C1D0Ev,_ZThn120_N7S1627C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S1627C1[] = {
  ABISELECT(224,120),
  ABISELECT(192,104),
  ABISELECT(160,88),
  ABISELECT(144,80),
  0,
  ABISELECT(128,72),
  ABISELECT(112,60),
  ABISELECT(64,36),
  ABISELECT(112,60),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(28,16),
  0,
  ABISELECT(112,60),
  ABISELECT(28,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C1[0]),
  (VTBL_ENTRY)&_ZN7S1627C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1627C1D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(12,8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S1627C1[0]),
  -4,
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S1627C1[0]),
  ABISELECT(-48,-28),
  ABISELECT(-20,-12),
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S1627C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C1D1Ev,_ZTv0_n32_N7S1627C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C1D0Ev,_ZTv0_n32_N7S1627C1D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(80,44),
  ABISELECT(-64,-36),
  ABISELECT(64,36),
  ABISELECT(-32,-16),
  ABISELECT(48,24),
  ABISELECT(48,24),
  ABISELECT(-64,-36),
  ABISELECT(-16,-8),
  ABISELECT(48,24),
  ABISELECT(-36,-20),
  ABISELECT(-36,-20),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S1627C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S1627C1D1Ev,_ZTv0_n60_N7S1627C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S1627C1D0Ev,_ZTv0_n60_N7S1627C1D0Ev),
  ABISELECT(-72,-40),
  ABISELECT(72,40),
  ABISELECT(-72,-40),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  ABISELECT(40,20),
  ABISELECT(-44,-24),
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(56,32),
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI7S1627C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n120_N7S1627C1D1Ev,_ZTvn4_n60_N7S1627C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n120_N7S1627C1D0Ev,_ZTvn4_n60_N7S1627C1D0Ev),
  ABISELECT(-60,-32),
  ABISELECT(24,12),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI7S1627C1[0]),
  ABISELECT(-76,-40),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI7S1627C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n120_N7S1627C1D1Ev,_ZTvn20_n60_N7S1627C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n120_N7S1627C1D0Ev,_ZTvn20_n60_N7S1627C1D0Ev),
  ABISELECT(-112,-60),
  ABISELECT(16,12),
  ABISELECT(-80,-40),
  0,
  ABISELECT(-64,-32),
  ABISELECT(-84,-44),
  0,
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S1627C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S1627C1D1Ev,_ZTv0_n44_N7S1627C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S1627C1D0Ev,_ZTv0_n44_N7S1627C1D0Ev),
  ABISELECT(-128,-72),
  ABISELECT(-100,-56),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-100,-56),
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI7S1627C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C1D1Ev,_ZTv0_n32_N7S1627C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C1D0Ev,_ZTv0_n32_N7S1627C1D0Ev),
  ABISELECT(-144,-80),
  ABISELECT(-32,-20),
  ABISELECT(-96,-52),
  ABISELECT(-112,-60),
  ABISELECT(-144,-80),
  ABISELECT(-116,-64),
  ABISELECT(-144,-80),
  ABISELECT(-32,-20),
  ABISELECT(-116,-64),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI7S1627C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S1627C1D1Ev,_ZTv0_n44_N7S1627C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S1627C1D0Ev,_ZTv0_n44_N7S1627C1D0Ev),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  ABISELECT(-16,-8),
  ABISELECT(-160,-88),
  ABISELECT(-128,-68),
  ABISELECT(-112,-60),
  ABISELECT(-48,-28),
  ABISELECT(-132,-72),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(-132,-72),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI7S1627C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S1627C1D1Ev,_ZTv0_n60_N7S1627C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S1627C1D0Ev,_ZTv0_n60_N7S1627C1D0Ev),
  ABISELECT(-148,-80),
  ABISELECT(-64,-36),
  ABISELECT(-148,-80),
  ABISELECT(-176,-96),
  ABISELECT(-176,-96),
  (VTBL_ENTRY)&(_ZTI7S1627C1[0]),
  ABISELECT(-192,-104),
  ABISELECT(-144,-76),
  ABISELECT(-160,-84),
  ABISELECT(-192,-104),
  ABISELECT(32,16),
  ABISELECT(-164,-88),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-64,-32),
  ABISELECT(-164,-88),
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  (VTBL_ENTRY)&(_ZTI7S1627C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N7S1627C1D1Ev,_ZTv0_n52_N7S1627C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N7S1627C1D0Ev,_ZTv0_n52_N7S1627C1D0Ev),
  ABISELECT(-180,-96),
  ABISELECT(-96,-52),
  ABISELECT(-180,-96),
  ABISELECT(-208,-112),
  ABISELECT(-208,-112),
  (VTBL_ENTRY)&(_ZTI7S1627C1[0]),
  ABISELECT(-224,-120),
  ABISELECT(-112,-60),
  ABISELECT(-176,-92),
  ABISELECT(-192,-100),
  ABISELECT(-224,-120),
  ABISELECT(-196,-104),
  ABISELECT(-224,-120),
  ABISELECT(-112,-60),
  ABISELECT(-196,-104),
  ABISELECT(-224,-120),
  (VTBL_ENTRY)&(_ZTI7S1627C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S1627C1D1Ev,_ZTv0_n44_N7S1627C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S1627C1D0Ev,_ZTv0_n44_N7S1627C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S1627C1[];
extern void _ZN7S1627C2D1Ev();
extern void _ZN7S1627C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1627C2__7S1627C1[] = {
  ABISELECT(160,88),
  ABISELECT(144,80),
  0,
  ABISELECT(128,72),
  ABISELECT(112,60),
  ABISELECT(64,36),
  ABISELECT(112,60),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(28,16),
  0,
  ABISELECT(112,60),
  ABISELECT(28,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C2[0]),
  (VTBL_ENTRY)&_ZN7S1627C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1627C2D0Ev,
};
extern void _ZN7S1627C3D1Ev();
extern void _ZN7S1627C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1627C37S1627C2__7S1627C1[] = {
  ABISELECT(112,60),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(28,16),
  0,
  ABISELECT(112,60),
  ABISELECT(28,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C3[0]),
  (VTBL_ENTRY)&_ZN7S1627C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1627C3D0Ev,
};
extern void _ZN7S1627C4D1Ev();
extern void _ZN7S1627C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1627C47S1627C37S1627C2__7S1627C1[] = {
  ABISELECT(112,60),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(28,16),
  0,
  ABISELECT(112,60),
  ABISELECT(28,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
  (VTBL_ENTRY)&_ZN7S1627C4D1Ev,
  (VTBL_ENTRY)&_ZN7S1627C4D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__7S1627C47S1627C37S1627C2__7S1627C1[] = {
  ABISELECT(-84,-44),
  0,
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C10__7S1627C47S1627C37S1627C2__7S1627C1[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S1627C4D1Ev,_ZTv0_n32_N7S1627C4D1Ev)();
extern void ABISELECT(_ZThn48_N7S1627C4D1Ev,_ZThn28_N7S1627C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1627C4D0Ev,_ZTv0_n32_N7S1627C4D0Ev)();
extern void ABISELECT(_ZThn48_N7S1627C4D0Ev,_ZThn28_N7S1627C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1627C11__7S1627C47S1627C37S1627C2__7S1627C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(-20,-12),
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C4D1Ev,_ZTv0_n32_N7S1627C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C4D0Ev,_ZTv0_n32_N7S1627C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__7S1627C37S1627C2__7S1627C1[] = {
  ABISELECT(-84,-44),
  0,
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S1627C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C10__7S1627C37S1627C2__7S1627C1[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S1627C3[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S1627C3D1Ev,_ZTv0_n32_N7S1627C3D1Ev)();
extern void ABISELECT(_ZThn48_N7S1627C3D1Ev,_ZThn28_N7S1627C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1627C3D0Ev,_ZTv0_n32_N7S1627C3D0Ev)();
extern void ABISELECT(_ZThn48_N7S1627C3D0Ev,_ZThn28_N7S1627C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1627C11__7S1627C37S1627C2__7S1627C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(-20,-12),
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S1627C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C3D1Ev,_ZTv0_n32_N7S1627C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C3D0Ev,_ZTv0_n32_N7S1627C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1627C217S1627C2__7S1627C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C21[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S1627C2D1Ev,_ZTv0_n44_N7S1627C2D1Ev)();
extern void ABISELECT(_ZThn112_N7S1627C2D1Ev,_ZThn60_N7S1627C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S1627C2D0Ev,_ZTv0_n44_N7S1627C2D0Ev)();
extern void ABISELECT(_ZThn112_N7S1627C2D0Ev,_ZThn60_N7S1627C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1627C16__7S1627C2__7S1627C1[] = {
  ABISELECT(-112,-60),
  ABISELECT(16,12),
  ABISELECT(-80,-40),
  0,
  ABISELECT(-64,-32),
  ABISELECT(-84,-44),
  0,
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S1627C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S1627C2D1Ev,_ZTv0_n44_N7S1627C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S1627C2D0Ev,_ZTv0_n44_N7S1627C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1627C10__7S1627C2__7S1627C1[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S1627C2[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S1627C2D1Ev,_ZTv0_n32_N7S1627C2D1Ev)();
extern void ABISELECT(_ZThn48_N7S1627C2D1Ev,_ZThn28_N7S1627C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1627C2D0Ev,_ZTv0_n32_N7S1627C2D0Ev)();
extern void ABISELECT(_ZThn48_N7S1627C2D0Ev,_ZThn28_N7S1627C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1627C11__7S1627C2__7S1627C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(-20,-12),
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S1627C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C2D1Ev,_ZTv0_n32_N7S1627C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C2D0Ev,_ZTv0_n32_N7S1627C2D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N7S1627C2D1Ev,_ZTv0_n60_N7S1627C2D1Ev)();
extern void ABISELECT(_ZThn64_N7S1627C2D1Ev,_ZThn36_N7S1627C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S1627C2D0Ev,_ZTv0_n60_N7S1627C2D0Ev)();
extern void ABISELECT(_ZThn64_N7S1627C2D0Ev,_ZThn36_N7S1627C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1627C14__7S1627C2__7S1627C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(80,44),
  ABISELECT(-64,-36),
  ABISELECT(64,36),
  ABISELECT(-32,-16),
  ABISELECT(48,24),
  ABISELECT(48,24),
  ABISELECT(-64,-36),
  ABISELECT(-16,-8),
  ABISELECT(48,24),
  ABISELECT(-36,-20),
  ABISELECT(-36,-20),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S1627C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S1627C2D1Ev,_ZTv0_n60_N7S1627C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S1627C2D0Ev,_ZTv0_n60_N7S1627C2D0Ev),
};
extern void ABISELECT(_ZTvn8_n120_N7S1627C2D1Ev,_ZTvn4_n60_N7S1627C2D1Ev)();
extern void ABISELECT(_ZTvn8_n120_N7S1627C2D0Ev,_ZTvn4_n60_N7S1627C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1627C158S1627C14__7S1627C2__7S1627C1[] = {
  ABISELECT(-72,-40),
  ABISELECT(72,40),
  ABISELECT(-72,-40),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  ABISELECT(40,20),
  ABISELECT(-44,-24),
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(56,32),
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI7S1627C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n120_N7S1627C2D1Ev,_ZTvn4_n60_N7S1627C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n120_N7S1627C2D0Ev,_ZTvn4_n60_N7S1627C2D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S1627C2D1Ev,_ZTv0_n32_N7S1627C2D1Ev)();
extern void ABISELECT(_ZThn128_N7S1627C2D1Ev,_ZThn72_N7S1627C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1627C2D0Ev,_ZTv0_n32_N7S1627C2D0Ev)();
extern void ABISELECT(_ZThn128_N7S1627C2D0Ev,_ZThn72_N7S1627C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1627C13__A1__7S1627C2__7S1627C1[] = {
  ABISELECT(-128,-72),
  ABISELECT(-100,-56),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-100,-56),
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI7S1627C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C2D1Ev,_ZTv0_n32_N7S1627C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C2D0Ev,_ZTv0_n32_N7S1627C2D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S1627C2D1Ev,_ZTv0_n44_N7S1627C2D1Ev)();
extern void ABISELECT(_ZThn144_N7S1627C2D1Ev,_ZThn80_N7S1627C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S1627C2D0Ev,_ZTv0_n44_N7S1627C2D0Ev)();
extern void ABISELECT(_ZThn144_N7S1627C2D0Ev,_ZThn80_N7S1627C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1627C4__A1__7S1627C2__7S1627C1[] = {
  ABISELECT(-144,-80),
  ABISELECT(-32,-20),
  ABISELECT(-96,-52),
  ABISELECT(-112,-60),
  ABISELECT(-144,-80),
  ABISELECT(-116,-64),
  ABISELECT(-144,-80),
  ABISELECT(-32,-20),
  ABISELECT(-116,-64),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI7S1627C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S1627C2D1Ev,_ZTv0_n44_N7S1627C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S1627C2D0Ev,_ZTv0_n44_N7S1627C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1627C128S1627C188S1627C158S1627C14__A1__7S1627C2__7S1627C1[] = {
  ABISELECT(-60,-32),
  ABISELECT(24,12),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI7S1627C2[0]),
};
extern void ABISELECT(_ZTvn40_n120_N7S1627C2D1Ev,_ZTvn20_n60_N7S1627C2D1Ev)();
extern void ABISELECT(_ZTvn40_n120_N7S1627C2D0Ev,_ZTvn20_n60_N7S1627C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1627C198S1627C14__7S1627C2__7S1627C1[] = {
  ABISELECT(-76,-40),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI7S1627C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n120_N7S1627C2D1Ev,_ZTvn20_n60_N7S1627C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n120_N7S1627C2D0Ev,_ZTvn20_n60_N7S1627C2D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N7S1627C2D1Ev,_ZTv0_n60_N7S1627C2D1Ev)();
extern void ABISELECT(_ZThn160_N7S1627C2D1Ev,_ZThn88_N7S1627C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S1627C2D0Ev,_ZTv0_n60_N7S1627C2D0Ev)();
extern void ABISELECT(_ZThn160_N7S1627C2D0Ev,_ZThn88_N7S1627C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1627C15__A1__7S1627C2__7S1627C1[] = {
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  ABISELECT(-16,-8),
  ABISELECT(-160,-88),
  ABISELECT(-128,-68),
  ABISELECT(-112,-60),
  ABISELECT(-48,-28),
  ABISELECT(-132,-72),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(-132,-72),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI7S1627C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S1627C2D1Ev,_ZTv0_n60_N7S1627C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S1627C2D0Ev,_ZTv0_n60_N7S1627C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1627C128S1627C188S1627C15__A2__7S1627C2__7S1627C1[] = {
  ABISELECT(-148,-80),
  ABISELECT(-64,-36),
  ABISELECT(-148,-80),
  ABISELECT(-176,-96),
  ABISELECT(-176,-96),
  (VTBL_ENTRY)&(_ZTI7S1627C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C21__7S1627C2__7S1627C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(12,8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S1627C2[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C5__7S1627C1[] = {
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C9__7S1627C1[] = {
  ABISELECT(28,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C10__7S1627C1[] = {
  -4,
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C58S1627C10__A1__7S1627C1[] = {
  -4,
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
extern void _ZN8S1627C11D1Ev();
extern void _ZN8S1627C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C11__7S1627C1[] = {
  ABISELECT(-20,-12),
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C11[0]),
  (VTBL_ENTRY)&_ZN8S1627C11D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C11D0Ev,
};
extern void _ZN8S1627C13D1Ev();
extern void _ZN8S1627C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C138S1627C11__7S1627C1[] = {
  ABISELECT(-20,-12),
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C13[0]),
  (VTBL_ENTRY)&_ZN8S1627C13D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1627C58S1627C138S1627C11__A2__7S1627C1[] = {
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C138S1627C11__7S1627C1[] = {
  ABISELECT(-84,-44),
  0,
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S1627C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C11__7S1627C1[] = {
  ABISELECT(-84,-44),
  0,
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S1627C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__7S1627C1[] = {
  ABISELECT(-84,-44),
  0,
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C12[0]),
};
extern void _ZN8S1627C14D1Ev();
extern void _ZN8S1627C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C14__7S1627C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(80,44),
  ABISELECT(-64,-36),
  ABISELECT(64,36),
  ABISELECT(-32,-16),
  ABISELECT(48,24),
  ABISELECT(48,24),
  ABISELECT(-64,-36),
  ABISELECT(-16,-8),
  ABISELECT(48,24),
  ABISELECT(-36,-20),
  ABISELECT(-36,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C14[0]),
  (VTBL_ENTRY)&_ZN8S1627C14D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C14D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1627C98S1627C14__A1__7S1627C1[] = {
  ABISELECT(-36,-20),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C9[0]),
};
extern void _ZN8S1627C15D1Ev();
extern void _ZN8S1627C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C158S1627C14__7S1627C1[] = {
  ABISELECT(-72,-40),
  ABISELECT(72,40),
  ABISELECT(-72,-40),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  ABISELECT(40,20),
  ABISELECT(-44,-24),
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(56,32),
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
  (VTBL_ENTRY)&_ZN8S1627C15D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C15D0Ev,
};
extern void _ZN8S1627C18D1Ev();
extern void _ZN8S1627C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C188S1627C158S1627C14__7S1627C1[] = {
  ABISELECT(-44,-24),
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(56,32),
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C18[0]),
  (VTBL_ENTRY)&_ZN8S1627C18D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1627C108S1627C188S1627C158S1627C14__A1__7S1627C1[] = {
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C58S1627C108S1627C188S1627C158S1627C14__A4__7S1627C1[] = {
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C128S1627C188S1627C158S1627C14__A1__7S1627C1[] = {
  ABISELECT(-60,-32),
  ABISELECT(24,12),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C5__8S1627C128S1627C188S1627C158S1627C14__A1__7S1627C1[] = {
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S1627C12[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1627C18D1Ev,_ZTv0_n32_N8S1627C18D1Ev)();
extern void ABISELECT(_ZThn56_N8S1627C18D1Ev,_ZThn32_N8S1627C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1627C18D0Ev,_ZTv0_n32_N8S1627C18D0Ev)();
extern void ABISELECT(_ZThn56_N8S1627C18D0Ev,_ZThn32_N8S1627C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1627C13__8S1627C188S1627C158S1627C14__7S1627C1[] = {
  ABISELECT(-56,-32),
  ABISELECT(-100,-56),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-100,-56),
  ABISELECT(-128,-72),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S1627C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C18D1Ev,_ZTv0_n32_N8S1627C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C18D0Ev,_ZTv0_n32_N8S1627C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C188S1627C158S1627C14__7S1627C1[] = {
  ABISELECT(-84,-44),
  0,
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S1627C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__A__8S1627C188S1627C158S1627C14__7S1627C1[] = {
  ABISELECT(-60,-32),
  ABISELECT(24,12),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1627C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S1627C15D1Ev,_ZTv0_n44_N8S1627C15D1Ev)();
extern void ABISELECT(_ZThn40_N8S1627C15D1Ev,_ZThn20_N8S1627C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1627C15D0Ev,_ZTv0_n44_N8S1627C15D0Ev)();
extern void ABISELECT(_ZThn40_N8S1627C15D0Ev,_ZThn20_N8S1627C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1627C16__8S1627C158S1627C14__7S1627C1[] = {
  ABISELECT(-40,-20),
  ABISELECT(16,12),
  ABISELECT(-80,-40),
  0,
  ABISELECT(-64,-32),
  ABISELECT(-84,-44),
  0,
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C15D1Ev,_ZTv0_n44_N8S1627C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C15D0Ev,_ZTv0_n44_N8S1627C15D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S1627C15D1Ev,_ZTv0_n32_N8S1627C15D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1627C15D0Ev,_ZTv0_n32_N8S1627C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1627C11__8S1627C158S1627C14__7S1627C1[] = {
  ABISELECT(24,12),
  ABISELECT(-20,-12),
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C15D1Ev,_ZTv0_n32_N8S1627C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C15D0Ev,_ZTv0_n32_N8S1627C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1627C10__8S1627C158S1627C14__7S1627C1[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1627C15D1Ev,_ZTv0_n32_N8S1627C15D1Ev)();
extern void ABISELECT(_ZThn56_N8S1627C15D1Ev,_ZThn32_N8S1627C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1627C15D0Ev,_ZTv0_n32_N8S1627C15D0Ev)();
extern void ABISELECT(_ZThn56_N8S1627C15D0Ev,_ZThn32_N8S1627C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1627C13__A1__8S1627C158S1627C14__7S1627C1[] = {
  ABISELECT(-56,-32),
  ABISELECT(-100,-56),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-100,-56),
  ABISELECT(-128,-72),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C15D1Ev,_ZTv0_n32_N8S1627C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C15D0Ev,_ZTv0_n32_N8S1627C15D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S1627C15D1Ev,_ZTv0_n44_N8S1627C15D1Ev)();
extern void ABISELECT(_ZThn72_N8S1627C15D1Ev,_ZThn40_N8S1627C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1627C15D0Ev,_ZTv0_n44_N8S1627C15D0Ev)();
extern void ABISELECT(_ZThn72_N8S1627C15D0Ev,_ZThn40_N8S1627C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1627C4__8S1627C158S1627C14__7S1627C1[] = {
  ABISELECT(-72,-40),
  ABISELECT(-32,-20),
  ABISELECT(-96,-52),
  ABISELECT(-112,-60),
  ABISELECT(-144,-80),
  ABISELECT(-116,-64),
  ABISELECT(-144,-80),
  ABISELECT(-32,-20),
  ABISELECT(-116,-64),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C15D1Ev,_ZTv0_n44_N8S1627C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C15D0Ev,_ZTv0_n44_N8S1627C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1627C9__8S1627C158S1627C14__7S1627C1[] = {
  ABISELECT(28,16),
  ABISELECT(72,40),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C128S1627C18__A1__8S1627C158S1627C14__7S1627C1[] = {
  ABISELECT(-60,-32),
  ABISELECT(24,12),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
};
extern void _ZN8S1627C19D1Ev();
extern void _ZN8S1627C19D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C198S1627C14__7S1627C1[] = {
  ABISELECT(-76,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C19[0]),
  (VTBL_ENTRY)&_ZN8S1627C19D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C19D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1627C98S1627C198S1627C14__A2__7S1627C1[] = {
  ABISELECT(-76,-40),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C9[0]),
};
extern void ABISELECT(_ZThn8_N8S1627C14D1Ev,_ZThn4_N8S1627C14D1Ev)();
extern void ABISELECT(_ZThn8_N8S1627C14D0Ev,_ZThn4_N8S1627C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1627C15__8S1627C14__7S1627C1[] = {
  ABISELECT(-72,-40),
  ABISELECT(72,40),
  ABISELECT(-72,-40),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  ABISELECT(40,20),
  ABISELECT(-44,-24),
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(56,32),
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S1627C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S1627C14D1Ev,_ZThn4_N8S1627C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S1627C14D0Ev,_ZThn4_N8S1627C14D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S1627C14D1Ev,_ZTv0_n44_N8S1627C14D1Ev)();
extern void ABISELECT(_ZThn48_N8S1627C14D1Ev,_ZThn24_N8S1627C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1627C14D0Ev,_ZTv0_n44_N8S1627C14D0Ev)();
extern void ABISELECT(_ZThn48_N8S1627C14D0Ev,_ZThn24_N8S1627C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1627C16__8S1627C14__7S1627C1[] = {
  ABISELECT(-48,-24),
  ABISELECT(16,12),
  ABISELECT(-80,-40),
  0,
  ABISELECT(-64,-32),
  ABISELECT(-84,-44),
  0,
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S1627C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C14D1Ev,_ZTv0_n44_N8S1627C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C14D0Ev,_ZTv0_n44_N8S1627C14D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S1627C14D1Ev,_ZTv0_n32_N8S1627C14D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1627C14D0Ev,_ZTv0_n32_N8S1627C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1627C11__8S1627C14__7S1627C1[] = {
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S1627C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C14D1Ev,_ZTv0_n32_N8S1627C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C14D0Ev,_ZTv0_n32_N8S1627C14D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1627C10__8S1627C14__7S1627C1[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S1627C14[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1627C14D1Ev,_ZTv0_n32_N8S1627C14D1Ev)();
extern void ABISELECT(_ZThn64_N8S1627C14D1Ev,_ZThn36_N8S1627C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1627C14D0Ev,_ZTv0_n32_N8S1627C14D0Ev)();
extern void ABISELECT(_ZThn64_N8S1627C14D0Ev,_ZThn36_N8S1627C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1627C13__A1__8S1627C14__7S1627C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-100,-56),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-100,-56),
  ABISELECT(-128,-72),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S1627C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C14D1Ev,_ZTv0_n32_N8S1627C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C14D0Ev,_ZTv0_n32_N8S1627C14D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S1627C14D1Ev,_ZTv0_n44_N8S1627C14D1Ev)();
extern void ABISELECT(_ZThn80_N8S1627C14D1Ev,_ZThn44_N8S1627C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1627C14D0Ev,_ZTv0_n44_N8S1627C14D0Ev)();
extern void ABISELECT(_ZThn80_N8S1627C14D0Ev,_ZThn44_N8S1627C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1627C4__8S1627C14__7S1627C1[] = {
  ABISELECT(-80,-44),
  ABISELECT(-32,-20),
  ABISELECT(-96,-52),
  ABISELECT(-112,-60),
  ABISELECT(-144,-80),
  ABISELECT(-116,-64),
  ABISELECT(-144,-80),
  ABISELECT(-32,-20),
  ABISELECT(-116,-64),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S1627C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C14D1Ev,_ZTv0_n44_N8S1627C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C14D0Ev,_ZTv0_n44_N8S1627C14D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1627C9__A1__8S1627C14__7S1627C1[] = {
  ABISELECT(28,16),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S1627C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C128S1627C188S1627C15__A1__8S1627C14__7S1627C1[] = {
  ABISELECT(-60,-32),
  ABISELECT(24,12),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S1627C14[0]),
};
extern void ABISELECT(_ZThn40_N8S1627C14D1Ev,_ZThn20_N8S1627C14D1Ev)();
extern void ABISELECT(_ZThn40_N8S1627C14D0Ev,_ZThn20_N8S1627C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1627C19__8S1627C14__7S1627C1[] = {
  ABISELECT(-76,-40),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S1627C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S1627C14D1Ev,_ZThn20_N8S1627C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S1627C14D0Ev,_ZThn20_N8S1627C14D0Ev),
};
extern void _ZN8S1627C16D1Ev();
extern void _ZN8S1627C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C16__7S1627C1[] = {
  ABISELECT(16,12),
  ABISELECT(-80,-40),
  0,
  ABISELECT(-64,-32),
  ABISELECT(-84,-44),
  0,
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C16[0]),
  (VTBL_ENTRY)&_ZN8S1627C16D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C16D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N8S1627C16D1Ev,_ZTv0_n32_N8S1627C16D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1627C16D0Ev,_ZTv0_n32_N8S1627C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1627C11__8S1627C16__7S1627C1[] = {
  ABISELECT(64,32),
  ABISELECT(-20,-12),
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S1627C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C16D1Ev,_ZTv0_n32_N8S1627C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C16D0Ev,_ZTv0_n32_N8S1627C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1627C10__8S1627C16__7S1627C1[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S1627C16[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1627C16D1Ev,_ZTv0_n32_N8S1627C16D1Ev)();
extern void ABISELECT(_ZThn16_N8S1627C16D1Ev,_ZThn12_N8S1627C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1627C16D0Ev,_ZTv0_n32_N8S1627C16D0Ev)();
extern void ABISELECT(_ZThn16_N8S1627C16D0Ev,_ZThn12_N8S1627C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1627C13__A1__8S1627C16__7S1627C1[] = {
  ABISELECT(-16,-12),
  ABISELECT(-100,-56),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-100,-56),
  ABISELECT(-128,-72),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S1627C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C16D1Ev,_ZTv0_n32_N8S1627C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C16D0Ev,_ZTv0_n32_N8S1627C16D0Ev),
};
extern void _ZN8S1627C13D1Ev();
extern void _ZN8S1627C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C13__A1__7S1627C1[] = {
  ABISELECT(-100,-56),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-100,-56),
  ABISELECT(-128,-72),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C13[0]),
  (VTBL_ENTRY)&_ZN8S1627C13D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1627C58S1627C13__A3__7S1627C1[] = {
  ABISELECT(-100,-56),
  ABISELECT(-128,-72),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C13__A1__7S1627C1[] = {
  ABISELECT(-84,-44),
  0,
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S1627C13[0]),
};
extern void _ZN7S1627C4D1Ev();
extern void _ZN7S1627C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1627C4__A1__7S1627C1[] = {
  ABISELECT(-32,-20),
  ABISELECT(-96,-52),
  ABISELECT(-112,-60),
  ABISELECT(-144,-80),
  ABISELECT(-116,-64),
  ABISELECT(-144,-80),
  ABISELECT(-32,-20),
  ABISELECT(-116,-64),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
  (VTBL_ENTRY)&_ZN7S1627C4D1Ev,
  (VTBL_ENTRY)&_ZN7S1627C4D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__7S1627C4__A1__7S1627C1[] = {
  ABISELECT(-84,-44),
  0,
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C9__7S1627C4__A1__7S1627C1[] = {
  ABISELECT(28,16),
  ABISELECT(144,80),
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C10__7S1627C4__A1__7S1627C1[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S1627C4D1Ev,_ZTv0_n32_N7S1627C4D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S1627C4D0Ev,_ZTv0_n32_N7S1627C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1627C11__7S1627C4__A1__7S1627C1[] = {
  ABISELECT(96,52),
  ABISELECT(-20,-12),
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(96,52),
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C4D1Ev,_ZTv0_n32_N7S1627C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C4D0Ev,_ZTv0_n32_N7S1627C4D0Ev),
};
extern void _ZN8S1627C15D1Ev();
extern void _ZN8S1627C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C15__A1__7S1627C1[] = {
  ABISELECT(-160,-88),
  ABISELECT(-16,-8),
  ABISELECT(-160,-88),
  ABISELECT(-128,-68),
  ABISELECT(-112,-60),
  ABISELECT(-48,-28),
  ABISELECT(-132,-72),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(-132,-72),
  ABISELECT(-160,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
  (VTBL_ENTRY)&_ZN8S1627C15D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C15D0Ev,
};
extern void _ZN8S1627C18D1Ev();
extern void _ZN8S1627C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C188S1627C15__A1__7S1627C1[] = {
  ABISELECT(-132,-72),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(-132,-72),
  ABISELECT(-160,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C18[0]),
  (VTBL_ENTRY)&_ZN8S1627C18D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1627C108S1627C188S1627C15__A2__7S1627C1[] = {
  ABISELECT(-132,-72),
  ABISELECT(-160,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C58S1627C108S1627C188S1627C15__A5__7S1627C1[] = {
  ABISELECT(-132,-72),
  ABISELECT(-160,-88),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C128S1627C188S1627C15__A2__7S1627C1[] = {
  ABISELECT(-148,-80),
  ABISELECT(-64,-36),
  ABISELECT(-148,-80),
  ABISELECT(-176,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C5__8S1627C128S1627C188S1627C15__A2__7S1627C1[] = {
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S1627C12[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1627C18D1Ev,_ZTv0_n32_N8S1627C18D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1627C18D0Ev,_ZTv0_n32_N8S1627C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1627C13__8S1627C188S1627C15__A1__7S1627C1[] = {
  ABISELECT(32,16),
  ABISELECT(-100,-56),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-100,-56),
  ABISELECT(-128,-72),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S1627C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C18D1Ev,_ZTv0_n32_N8S1627C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C18D0Ev,_ZTv0_n32_N8S1627C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C188S1627C15__A1__7S1627C1[] = {
  ABISELECT(-84,-44),
  0,
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S1627C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__A__8S1627C188S1627C15__A1__7S1627C1[] = {
  ABISELECT(-148,-80),
  ABISELECT(-64,-36),
  ABISELECT(-148,-80),
  ABISELECT(-176,-96),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1627C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S1627C15D1Ev,_ZTv0_n44_N8S1627C15D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S1627C15D0Ev,_ZTv0_n44_N8S1627C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1627C16__8S1627C15__A1__7S1627C1[] = {
  ABISELECT(48,28),
  ABISELECT(16,12),
  ABISELECT(-80,-40),
  0,
  ABISELECT(-64,-32),
  ABISELECT(-84,-44),
  0,
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C15D1Ev,_ZTv0_n44_N8S1627C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C15D0Ev,_ZTv0_n44_N8S1627C15D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S1627C15D1Ev,_ZTv0_n32_N8S1627C15D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1627C15D0Ev,_ZTv0_n32_N8S1627C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1627C11__8S1627C15__A1__7S1627C1[] = {
  ABISELECT(112,60),
  ABISELECT(-20,-12),
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C15D1Ev,_ZTv0_n32_N8S1627C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C15D0Ev,_ZTv0_n32_N8S1627C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1627C10__8S1627C15__A1__7S1627C1[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1627C15D1Ev,_ZTv0_n32_N8S1627C15D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1627C15D0Ev,_ZTv0_n32_N8S1627C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1627C13__A1__8S1627C15__A1__7S1627C1[] = {
  ABISELECT(32,16),
  ABISELECT(-100,-56),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-100,-56),
  ABISELECT(-128,-72),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C15D1Ev,_ZTv0_n32_N8S1627C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C15D0Ev,_ZTv0_n32_N8S1627C15D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S1627C15D1Ev,_ZTv0_n44_N8S1627C15D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S1627C15D0Ev,_ZTv0_n44_N8S1627C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S1627C4__8S1627C15__A1__7S1627C1[] = {
  ABISELECT(16,8),
  ABISELECT(-32,-20),
  ABISELECT(-96,-52),
  ABISELECT(-112,-60),
  ABISELECT(-144,-80),
  ABISELECT(-116,-64),
  ABISELECT(-144,-80),
  ABISELECT(-32,-20),
  ABISELECT(-116,-64),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C15D1Ev,_ZTv0_n44_N8S1627C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C15D0Ev,_ZTv0_n44_N8S1627C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1627C9__8S1627C15__A1__7S1627C1[] = {
  ABISELECT(28,16),
  ABISELECT(160,88),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C128S1627C18__A1__8S1627C15__A1__7S1627C1[] = {
  ABISELECT(-148,-80),
  ABISELECT(-64,-36),
  ABISELECT(-148,-80),
  ABISELECT(-176,-96),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
};
extern void _ZN8S1627C22D1Ev();
extern void _ZN8S1627C22D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C22__7S1627C1[] = {
  ABISELECT(-144,-76),
  ABISELECT(-160,-84),
  ABISELECT(-192,-104),
  ABISELECT(32,16),
  ABISELECT(-164,-88),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-64,-32),
  ABISELECT(-164,-88),
  ABISELECT(-192,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C22[0]),
  (VTBL_ENTRY)&_ZN8S1627C22D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C22D0Ev,
};
extern void _ZN8S1627C18D1Ev();
extern void _ZN8S1627C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C188S1627C22__A2__7S1627C1[] = {
  ABISELECT(-164,-88),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-64,-32),
  ABISELECT(-164,-88),
  ABISELECT(-192,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C18[0]),
  (VTBL_ENTRY)&_ZN8S1627C18D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1627C108S1627C188S1627C22__A3__7S1627C1[] = {
  ABISELECT(-164,-88),
  ABISELECT(-192,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C58S1627C108S1627C188S1627C22__A6__7S1627C1[] = {
  ABISELECT(-164,-88),
  ABISELECT(-192,-104),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C128S1627C188S1627C22__A3__7S1627C1[] = {
  ABISELECT(-180,-96),
  ABISELECT(-96,-52),
  ABISELECT(-180,-96),
  ABISELECT(-208,-112),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C5__8S1627C128S1627C188S1627C22__A3__7S1627C1[] = {
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  ABISELECT(96,52),
  (VTBL_ENTRY)&(_ZTI8S1627C12[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1627C18D1Ev,_ZTv0_n32_N8S1627C18D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1627C18D0Ev,_ZTv0_n32_N8S1627C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1627C13__8S1627C188S1627C22__A2__7S1627C1[] = {
  ABISELECT(64,32),
  ABISELECT(-100,-56),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-100,-56),
  ABISELECT(-128,-72),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S1627C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C18D1Ev,_ZTv0_n32_N8S1627C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C18D0Ev,_ZTv0_n32_N8S1627C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C188S1627C22__A2__7S1627C1[] = {
  ABISELECT(-84,-44),
  0,
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI8S1627C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__A__8S1627C188S1627C22__A2__7S1627C1[] = {
  ABISELECT(-180,-96),
  ABISELECT(-96,-52),
  ABISELECT(-180,-96),
  ABISELECT(-208,-112),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1627C18[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1627C22D1Ev,_ZTv0_n32_N8S1627C22D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1627C22D0Ev,_ZTv0_n32_N8S1627C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1627C13__8S1627C22__7S1627C1[] = {
  ABISELECT(64,32),
  ABISELECT(-100,-56),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-100,-56),
  ABISELECT(-128,-72),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S1627C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C22D1Ev,_ZTv0_n32_N8S1627C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C22D0Ev,_ZTv0_n32_N8S1627C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C22__7S1627C1[] = {
  ABISELECT(-84,-44),
  0,
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI8S1627C22[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C128S1627C18__A1__8S1627C22__7S1627C1[] = {
  ABISELECT(-180,-96),
  ABISELECT(-96,-52),
  ABISELECT(-180,-96),
  ABISELECT(-208,-112),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1627C22[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S1627C22D1Ev,_ZTv0_n44_N8S1627C22D1Ev)();
extern void ABISELECT(_ZThn32_N8S1627C22D1Ev,_ZThn16_N8S1627C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1627C22D0Ev,_ZTv0_n44_N8S1627C22D0Ev)();
extern void ABISELECT(_ZThn32_N8S1627C22D0Ev,_ZThn16_N8S1627C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1627C3__8S1627C22__7S1627C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-112,-60),
  ABISELECT(-176,-92),
  ABISELECT(-192,-100),
  ABISELECT(-224,-120),
  ABISELECT(-196,-104),
  ABISELECT(-224,-120),
  ABISELECT(-112,-60),
  ABISELECT(-196,-104),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S1627C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C22D1Ev,_ZTv0_n44_N8S1627C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C22D0Ev,_ZTv0_n44_N8S1627C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1627C9__8S1627C22__7S1627C1[] = {
  ABISELECT(28,16),
  ABISELECT(192,104),
  (VTBL_ENTRY)&(_ZTI8S1627C22[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C10__A1__8S1627C22__7S1627C1[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI8S1627C22[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1627C22D1Ev,_ZTv0_n32_N8S1627C22D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1627C22D0Ev,_ZTv0_n32_N8S1627C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1627C11__8S1627C22__7S1627C1[] = {
  ABISELECT(144,76),
  ABISELECT(-20,-12),
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S1627C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C22D1Ev,_ZTv0_n32_N8S1627C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C22D0Ev,_ZTv0_n32_N8S1627C22D0Ev),
};
extern void _ZN7S1627C3D1Ev();
extern void _ZN7S1627C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1627C3__A1__7S1627C1[] = {
  ABISELECT(-112,-60),
  ABISELECT(-176,-92),
  ABISELECT(-192,-100),
  ABISELECT(-224,-120),
  ABISELECT(-196,-104),
  ABISELECT(-224,-120),
  ABISELECT(-112,-60),
  ABISELECT(-196,-104),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C3[0]),
  (VTBL_ENTRY)&_ZN7S1627C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1627C3D0Ev,
};
extern void _ZN7S1627C4D1Ev();
extern void _ZN7S1627C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1627C47S1627C3__A2__7S1627C1[] = {
  ABISELECT(-112,-60),
  ABISELECT(-176,-92),
  ABISELECT(-192,-100),
  ABISELECT(-224,-120),
  ABISELECT(-196,-104),
  ABISELECT(-224,-120),
  ABISELECT(-112,-60),
  ABISELECT(-196,-104),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
  (VTBL_ENTRY)&_ZN7S1627C4D1Ev,
  (VTBL_ENTRY)&_ZN7S1627C4D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__7S1627C47S1627C3__A2__7S1627C1[] = {
  ABISELECT(-84,-44),
  0,
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C9__7S1627C47S1627C3__A2__7S1627C1[] = {
  ABISELECT(28,16),
  ABISELECT(224,120),
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C10__7S1627C47S1627C3__A2__7S1627C1[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S1627C4D1Ev,_ZTv0_n32_N7S1627C4D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S1627C4D0Ev,_ZTv0_n32_N7S1627C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1627C11__7S1627C47S1627C3__A2__7S1627C1[] = {
  ABISELECT(176,92),
  ABISELECT(-20,-12),
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(176,92),
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C4D1Ev,_ZTv0_n32_N7S1627C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C4D0Ev,_ZTv0_n32_N7S1627C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__7S1627C3__A1__7S1627C1[] = {
  ABISELECT(-84,-44),
  0,
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI7S1627C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C9__7S1627C3__A1__7S1627C1[] = {
  ABISELECT(28,16),
  ABISELECT(224,120),
  (VTBL_ENTRY)&(_ZTI7S1627C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C10__7S1627C3__A1__7S1627C1[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI7S1627C3[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S1627C3D1Ev,_ZTv0_n32_N7S1627C3D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S1627C3D0Ev,_ZTv0_n32_N7S1627C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1627C11__7S1627C3__A1__7S1627C1[] = {
  ABISELECT(176,92),
  ABISELECT(-20,-12),
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(176,92),
  (VTBL_ENTRY)&(_ZTI7S1627C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C3D1Ev,_ZTv0_n32_N7S1627C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C3D0Ev,_ZTv0_n32_N7S1627C3D0Ev),
};
static  VTT_ENTRY vtt_S1627C1[] = {
  {&(_ZTV7S1627C1[18]),  18,175},
  {&(_tg__ZTV7S1627C2__7S1627C1[16]),  16,18},
  {&(_tg__ZTV7S1627C37S1627C2__7S1627C1[10]),  10,12},
  {&(_tg__ZTV7S1627C47S1627C37S1627C2__7S1627C1[10]),  10,12},
  {&(_tg__ZTV8S1627C12__7S1627C47S1627C37S1627C2__7S1627C1[6]),  6,6},
  {&(_tg__ZTV7S1627C47S1627C37S1627C2__7S1627C1[10]),  10,12},
  {&(_tg__ZTV8S1627C10__7S1627C47S1627C37S1627C2__7S1627C1[4]),  4,4},
  {&(_tg__ZTV8S1627C11__7S1627C47S1627C37S1627C2__7S1627C1[8]),  8,10},
  {&(_tg__ZTV8S1627C12__7S1627C47S1627C37S1627C2__7S1627C1[6]),  6,6},
  {&(_tg__ZTV8S1627C12__7S1627C37S1627C2__7S1627C1[6]),  6,6},
  {&(_tg__ZTV7S1627C37S1627C2__7S1627C1[10]),  10,12},
  {&(_tg__ZTV8S1627C10__7S1627C37S1627C2__7S1627C1[4]),  4,4},
  {&(_tg__ZTV8S1627C11__7S1627C37S1627C2__7S1627C1[8]),  8,10},
  {&(_tg__ZTV8S1627C12__7S1627C37S1627C2__7S1627C1[6]),  6,6},
  {&(_tg__ZTV8S1627C217S1627C2__7S1627C1[4]),  4,4},
  {&(_tg__ZTV8S1627C16__7S1627C2__7S1627C1[11]),  11,13},
  {&(_tg__ZTV7S1627C2__7S1627C1[16]),  16,18},
  {&(_tg__ZTV8S1627C10__7S1627C2__7S1627C1[4]),  4,4},
  {&(_tg__ZTV8S1627C11__7S1627C2__7S1627C1[8]),  8,10},
  {&(_tg__ZTV8S1627C16__7S1627C2__7S1627C1[11]),  11,13},
  {&(_tg__ZTV8S1627C14__7S1627C2__7S1627C1[15]),  15,17},
  {&(_tg__ZTV8S1627C158S1627C14__7S1627C2__7S1627C1[14]),  14,16},
  {&(_tg__ZTV8S1627C16__7S1627C2__7S1627C1[11]),  11,13},
  {&(_tg__ZTV8S1627C13__A1__7S1627C2__7S1627C1[8]),  8,10},
  {&(_tg__ZTV7S1627C4__A1__7S1627C2__7S1627C1[11]),  11,13},
  {&(_tg__ZTV8S1627C128S1627C188S1627C158S1627C14__A1__7S1627C2__7S1627C1[6]),  6,6},
  {&(_tg__ZTV8S1627C198S1627C14__7S1627C2__7S1627C1[3]),  3,5},
  {&(_tg__ZTV8S1627C15__A1__7S1627C2__7S1627C1[15]),  15,17},
  {&(_tg__ZTV8S1627C128S1627C188S1627C15__A2__7S1627C2__7S1627C1[6]),  6,6},
  {&(_tg__ZTV8S1627C21__7S1627C2__7S1627C1[4]),  4,4},
  {&(_ZTV7S1627C1[93]),  93,175},
  {&(_ZTV7S1627C1[18]),  18,175},
  {&(_ZTV7S1627C1[28]),  28,175},
  {&(_ZTV7S1627C1[36]),  36,175},
  {&(_ZTV7S1627C1[93]),  93,175},
  {&(_ZTV7S1627C1[53]),  53,175},
  {&(_ZTV7S1627C1[69]),  69,175},
  {&(_ZTV7S1627C1[93]),  93,175},
  {&(_ZTV7S1627C1[103]),  103,175},
  {&(_ZTV7S1627C1[116]),  116,175},
  {&(_ZTV7S1627C1[77]),  77,175},
  {&(_ZTV7S1627C1[80]),  80,175},
  {&(_ZTV7S1627C1[133]),  133,175},
  {&(_ZTV7S1627C1[141]),  141,175},
  {&(_ZTV7S1627C1[24]),  24,175},
  {&(_ZTV7S1627C1[154]),  154,175},
  {&(_ZTV7S1627C1[162]),  162,175},
  {&(_ZTV7S1627C1[173]),  173,175},
  {&(_tg__ZTV7S1627C5__7S1627C1[4]),  4,4},
  {&(_tg__ZTV7S1627C9__7S1627C1[3]),  3,3},
  {&(_tg__ZTV8S1627C10__7S1627C1[4]),  4,4},
  {&(_tg__ZTV7S1627C58S1627C10__A1__7S1627C1[4]),  4,4},
  {&(_tg__ZTV8S1627C11__7S1627C1[7]),  7,9},
  {&(_tg__ZTV8S1627C138S1627C11__7S1627C1[7]),  7,9},
  {&(_tg__ZTV7S1627C58S1627C138S1627C11__A2__7S1627C1[4]),  4,4},
  {&(_tg__ZTV8S1627C12__8S1627C138S1627C11__7S1627C1[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C138S1627C11__7S1627C1[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C11__7S1627C1[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C11__7S1627C1[6]),  6,6},
  {&(_tg__ZTV8S1627C12__7S1627C1[6]),  6,6},
  {&(_tg__ZTV8S1627C12__7S1627C1[6]),  6,6},
  {&(_tg__ZTV8S1627C14__7S1627C1[14]),  14,16},
  {&(_tg__ZTV7S1627C98S1627C14__A1__7S1627C1[3]),  3,3},
  {&(_tg__ZTV8S1627C158S1627C14__7S1627C1[14]),  14,16},
  {&(_tg__ZTV8S1627C188S1627C158S1627C14__7S1627C1[8]),  8,10},
  {&(_tg__ZTV8S1627C108S1627C188S1627C158S1627C14__A1__7S1627C1[4]),  4,4},
  {&(_tg__ZTV7S1627C58S1627C108S1627C188S1627C158S1627C14__A4__7S1627C1[4]),  4,4},
  {&(_tg__ZTV8S1627C128S1627C188S1627C158S1627C14__A1__7S1627C1[6]),  6,6},
  {&(_tg__ZTV7S1627C5__8S1627C128S1627C188S1627C158S1627C14__A1__7S1627C1[4]),  4,4},
  {&(_tg__ZTV8S1627C13__8S1627C188S1627C158S1627C14__7S1627C1[8]),  8,10},
  {&(_tg__ZTV8S1627C12__8S1627C188S1627C158S1627C14__7S1627C1[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C188S1627C158S1627C14__7S1627C1[6]),  6,6},
  {&(_tg__ZTV8S1627C12__A__8S1627C188S1627C158S1627C14__7S1627C1[6]),  6,6},
  {&(_tg__ZTV8S1627C16__8S1627C158S1627C14__7S1627C1[11]),  11,13},
  {&(_tg__ZTV8S1627C11__8S1627C158S1627C14__7S1627C1[8]),  8,10},
  {&(_tg__ZTV8S1627C16__8S1627C158S1627C14__7S1627C1[11]),  11,13},
  {&(_tg__ZTV8S1627C16__8S1627C158S1627C14__7S1627C1[11]),  11,13},
  {&(_tg__ZTV8S1627C10__8S1627C158S1627C14__7S1627C1[4]),  4,4},
  {&(_tg__ZTV8S1627C13__A1__8S1627C158S1627C14__7S1627C1[8]),  8,10},
  {&(_tg__ZTV7S1627C4__8S1627C158S1627C14__7S1627C1[11]),  11,13},
  {&(_tg__ZTV7S1627C9__8S1627C158S1627C14__7S1627C1[3]),  3,3},
  {&(_tg__ZTV8S1627C128S1627C18__A1__8S1627C158S1627C14__7S1627C1[6]),  6,6},
  {&(_tg__ZTV8S1627C198S1627C14__7S1627C1[3]),  3,5},
  {&(_tg__ZTV7S1627C98S1627C198S1627C14__A2__7S1627C1[3]),  3,3},
  {&(_tg__ZTV8S1627C15__8S1627C14__7S1627C1[14]),  14,16},
  {&(_tg__ZTV8S1627C16__8S1627C14__7S1627C1[11]),  11,13},
  {&(_tg__ZTV8S1627C11__8S1627C14__7S1627C1[8]),  8,10},
  {&(_tg__ZTV8S1627C16__8S1627C14__7S1627C1[11]),  11,13},
  {&(_tg__ZTV8S1627C16__8S1627C14__7S1627C1[11]),  11,13},
  {&(_tg__ZTV8S1627C10__8S1627C14__7S1627C1[4]),  4,4},
  {&(_tg__ZTV8S1627C13__A1__8S1627C14__7S1627C1[8]),  8,10},
  {&(_tg__ZTV7S1627C4__8S1627C14__7S1627C1[11]),  11,13},
  {&(_tg__ZTV7S1627C9__A1__8S1627C14__7S1627C1[3]),  3,3},
  {&(_tg__ZTV8S1627C128S1627C188S1627C15__A1__8S1627C14__7S1627C1[6]),  6,6},
  {&(_tg__ZTV8S1627C19__8S1627C14__7S1627C1[3]),  3,5},
  {&(_tg__ZTV8S1627C16__7S1627C1[10]),  10,12},
  {&(_tg__ZTV8S1627C11__8S1627C16__7S1627C1[8]),  8,10},
  {&(_tg__ZTV8S1627C16__7S1627C1[10]),  10,12},
  {&(_tg__ZTV8S1627C16__7S1627C1[10]),  10,12},
  {&(_tg__ZTV8S1627C10__8S1627C16__7S1627C1[4]),  4,4},
  {&(_tg__ZTV8S1627C13__A1__8S1627C16__7S1627C1[8]),  8,10},
  {&(_tg__ZTV8S1627C13__A1__7S1627C1[7]),  7,9},
  {&(_tg__ZTV7S1627C58S1627C13__A3__7S1627C1[4]),  4,4},
  {&(_tg__ZTV8S1627C12__8S1627C13__A1__7S1627C1[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C13__A1__7S1627C1[6]),  6,6},
  {&(_tg__ZTV7S1627C4__A1__7S1627C1[10]),  10,12},
  {&(_tg__ZTV8S1627C12__7S1627C4__A1__7S1627C1[6]),  6,6},
  {&(_tg__ZTV7S1627C9__7S1627C4__A1__7S1627C1[3]),  3,3},
  {&(_tg__ZTV8S1627C10__7S1627C4__A1__7S1627C1[4]),  4,4},
  {&(_tg__ZTV8S1627C11__7S1627C4__A1__7S1627C1[8]),  8,10},
  {&(_tg__ZTV8S1627C12__7S1627C4__A1__7S1627C1[6]),  6,6},
  {&(_tg__ZTV8S1627C15__A1__7S1627C1[14]),  14,16},
  {&(_tg__ZTV8S1627C188S1627C15__A1__7S1627C1[8]),  8,10},
  {&(_tg__ZTV8S1627C108S1627C188S1627C15__A2__7S1627C1[4]),  4,4},
  {&(_tg__ZTV7S1627C58S1627C108S1627C188S1627C15__A5__7S1627C1[4]),  4,4},
  {&(_tg__ZTV8S1627C128S1627C188S1627C15__A2__7S1627C1[6]),  6,6},
  {&(_tg__ZTV7S1627C5__8S1627C128S1627C188S1627C15__A2__7S1627C1[4]),  4,4},
  {&(_tg__ZTV8S1627C13__8S1627C188S1627C15__A1__7S1627C1[8]),  8,10},
  {&(_tg__ZTV8S1627C12__8S1627C188S1627C15__A1__7S1627C1[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C188S1627C15__A1__7S1627C1[6]),  6,6},
  {&(_tg__ZTV8S1627C12__A__8S1627C188S1627C15__A1__7S1627C1[6]),  6,6},
  {&(_tg__ZTV8S1627C16__8S1627C15__A1__7S1627C1[11]),  11,13},
  {&(_tg__ZTV8S1627C11__8S1627C15__A1__7S1627C1[8]),  8,10},
  {&(_tg__ZTV8S1627C16__8S1627C15__A1__7S1627C1[11]),  11,13},
  {&(_tg__ZTV8S1627C16__8S1627C15__A1__7S1627C1[11]),  11,13},
  {&(_tg__ZTV8S1627C10__8S1627C15__A1__7S1627C1[4]),  4,4},
  {&(_tg__ZTV8S1627C13__A1__8S1627C15__A1__7S1627C1[8]),  8,10},
  {&(_tg__ZTV7S1627C4__8S1627C15__A1__7S1627C1[11]),  11,13},
  {&(_tg__ZTV7S1627C9__8S1627C15__A1__7S1627C1[3]),  3,3},
  {&(_tg__ZTV8S1627C128S1627C18__A1__8S1627C15__A1__7S1627C1[6]),  6,6},
  {&(_tg__ZTV8S1627C22__7S1627C1[12]),  12,14},
  {&(_tg__ZTV8S1627C188S1627C22__A2__7S1627C1[8]),  8,10},
  {&(_tg__ZTV8S1627C108S1627C188S1627C22__A3__7S1627C1[4]),  4,4},
  {&(_tg__ZTV7S1627C58S1627C108S1627C188S1627C22__A6__7S1627C1[4]),  4,4},
  {&(_tg__ZTV8S1627C128S1627C188S1627C22__A3__7S1627C1[6]),  6,6},
  {&(_tg__ZTV7S1627C5__8S1627C128S1627C188S1627C22__A3__7S1627C1[4]),  4,4},
  {&(_tg__ZTV8S1627C13__8S1627C188S1627C22__A2__7S1627C1[8]),  8,10},
  {&(_tg__ZTV8S1627C12__8S1627C188S1627C22__A2__7S1627C1[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C188S1627C22__A2__7S1627C1[6]),  6,6},
  {&(_tg__ZTV8S1627C12__A__8S1627C188S1627C22__A2__7S1627C1[6]),  6,6},
  {&(_tg__ZTV8S1627C13__8S1627C22__7S1627C1[8]),  8,10},
  {&(_tg__ZTV8S1627C12__8S1627C22__7S1627C1[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C22__7S1627C1[6]),  6,6},
  {&(_tg__ZTV8S1627C128S1627C18__A1__8S1627C22__7S1627C1[6]),  6,6},
  {&(_tg__ZTV7S1627C3__8S1627C22__7S1627C1[11]),  11,13},
  {&(_tg__ZTV7S1627C9__8S1627C22__7S1627C1[3]),  3,3},
  {&(_tg__ZTV8S1627C10__A1__8S1627C22__7S1627C1[4]),  4,4},
  {&(_tg__ZTV8S1627C11__8S1627C22__7S1627C1[8]),  8,10},
  {&(_tg__ZTV7S1627C3__A1__7S1627C1[10]),  10,12},
  {&(_tg__ZTV7S1627C47S1627C3__A2__7S1627C1[10]),  10,12},
  {&(_tg__ZTV8S1627C12__7S1627C47S1627C3__A2__7S1627C1[6]),  6,6},
  {&(_tg__ZTV7S1627C9__7S1627C47S1627C3__A2__7S1627C1[3]),  3,3},
  {&(_tg__ZTV8S1627C10__7S1627C47S1627C3__A2__7S1627C1[4]),  4,4},
  {&(_tg__ZTV8S1627C11__7S1627C47S1627C3__A2__7S1627C1[8]),  8,10},
  {&(_tg__ZTV8S1627C12__7S1627C47S1627C3__A2__7S1627C1[6]),  6,6},
  {&(_tg__ZTV8S1627C12__7S1627C3__A1__7S1627C1[6]),  6,6},
  {&(_tg__ZTV7S1627C9__7S1627C3__A1__7S1627C1[3]),  3,3},
  {&(_tg__ZTV8S1627C10__7S1627C3__A1__7S1627C1[4]),  4,4},
  {&(_tg__ZTV8S1627C11__7S1627C3__A1__7S1627C1[8]),  8,10},
  {&(_tg__ZTV8S1627C12__7S1627C3__A1__7S1627C1[6]),  6,6},
};
extern VTBL_ENTRY _ZTI7S1627C1[];
extern  VTBL_ENTRY _ZTV7S1627C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C1[];
static VTBL_ENTRY alt_thunk_names126[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1627C22D0Ev,_ZTv0_n44_N8S1627C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S1627C22D0Ev,_ZThn16_N8S1627C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1627C22D1Ev,_ZTv0_n44_N8S1627C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S1627C22D1Ev,_ZThn16_N8S1627C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1627C16D0Ev,_ZTv0_n32_N8S1627C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S1627C16D0Ev,_ZThn12_N8S1627C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1627C16D1Ev,_ZTv0_n32_N8S1627C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S1627C16D1Ev,_ZThn12_N8S1627C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1627C14D0Ev,_ZTv0_n32_N8S1627C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S1627C14D0Ev,_ZThn36_N8S1627C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1627C14D1Ev,_ZTv0_n32_N8S1627C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S1627C14D1Ev,_ZThn36_N8S1627C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1627C14D0Ev,_ZTv0_n44_N8S1627C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S1627C14D0Ev,_ZThn44_N8S1627C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S1627C14D0Ev,_ZThn24_N8S1627C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1627C14D1Ev,_ZTv0_n44_N8S1627C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S1627C14D1Ev,_ZThn44_N8S1627C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S1627C14D1Ev,_ZThn24_N8S1627C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1627C15D0Ev,_ZTv0_n32_N8S1627C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S1627C15D0Ev,_ZThn32_N8S1627C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1627C15D1Ev,_ZTv0_n32_N8S1627C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S1627C15D1Ev,_ZThn32_N8S1627C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1627C15D0Ev,_ZTv0_n44_N8S1627C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S1627C15D0Ev,_ZThn40_N8S1627C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S1627C15D0Ev,_ZThn20_N8S1627C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1627C15D1Ev,_ZTv0_n44_N8S1627C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S1627C15D1Ev,_ZThn40_N8S1627C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S1627C15D1Ev,_ZThn20_N8S1627C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1627C18D0Ev,_ZTv0_n32_N8S1627C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S1627C18D0Ev,_ZThn32_N8S1627C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1627C18D1Ev,_ZTv0_n32_N8S1627C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S1627C18D1Ev,_ZThn32_N8S1627C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S1627C2D0Ev,_ZTv0_n60_N7S1627C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S1627C2D0Ev,_ZThn88_N7S1627C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S1627C2D0Ev,_ZThn36_N7S1627C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S1627C2D1Ev,_ZTv0_n60_N7S1627C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S1627C2D1Ev,_ZThn88_N7S1627C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S1627C2D1Ev,_ZThn36_N7S1627C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1627C2D0Ev,_ZTv0_n32_N7S1627C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S1627C2D0Ev,_ZThn72_N7S1627C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S1627C2D0Ev,_ZThn28_N7S1627C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1627C2D1Ev,_ZTv0_n32_N7S1627C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S1627C2D1Ev,_ZThn72_N7S1627C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S1627C2D1Ev,_ZThn28_N7S1627C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S1627C2D0Ev,_ZTv0_n44_N7S1627C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S1627C2D0Ev,_ZThn80_N7S1627C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S1627C2D0Ev,_ZThn60_N7S1627C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S1627C2D1Ev,_ZTv0_n44_N7S1627C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S1627C2D1Ev,_ZThn80_N7S1627C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S1627C2D1Ev,_ZThn60_N7S1627C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1627C3D0Ev,_ZTv0_n32_N7S1627C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S1627C3D0Ev,_ZThn28_N7S1627C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1627C3D1Ev,_ZTv0_n32_N7S1627C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S1627C3D1Ev,_ZThn28_N7S1627C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1627C4D0Ev,_ZTv0_n32_N7S1627C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S1627C4D0Ev,_ZThn28_N7S1627C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1627C4D1Ev,_ZTv0_n32_N7S1627C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S1627C4D1Ev,_ZThn28_N7S1627C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N7S1627C1D0Ev,_ZTv0_n52_N7S1627C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S1627C1D0Ev,_ZThn104_N7S1627C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N7S1627C1D1Ev,_ZTv0_n52_N7S1627C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S1627C1D1Ev,_ZThn104_N7S1627C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S1627C1D0Ev,_ZTv0_n44_N7S1627C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N7S1627C1D0Ev,_ZThn120_N7S1627C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S1627C1D0Ev,_ZThn80_N7S1627C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S1627C1D0Ev,_ZThn60_N7S1627C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S1627C1D1Ev,_ZTv0_n44_N7S1627C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N7S1627C1D1Ev,_ZThn120_N7S1627C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S1627C1D1Ev,_ZThn80_N7S1627C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S1627C1D1Ev,_ZThn60_N7S1627C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S1627C1D0Ev,_ZTv0_n60_N7S1627C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S1627C1D0Ev,_ZThn88_N7S1627C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S1627C1D0Ev,_ZThn36_N7S1627C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S1627C1D1Ev,_ZTv0_n60_N7S1627C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S1627C1D1Ev,_ZThn88_N7S1627C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S1627C1D1Ev,_ZThn36_N7S1627C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1627C1D0Ev,_ZTv0_n32_N7S1627C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S1627C1D0Ev,_ZThn72_N7S1627C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S1627C1D0Ev,_ZThn28_N7S1627C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1627C1D1Ev,_ZTv0_n32_N7S1627C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S1627C1D1Ev,_ZThn72_N7S1627C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S1627C1D1Ev,_ZThn28_N7S1627C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S1627C1 = {  "S1627C1", // class name
  bases_S1627C1, 73,
  &(vtc_S1627C1[0]), // expected_vtbl_contents
  &(vtt_S1627C1[0]), // expected_vtt_contents
  ABISELECT(240,128), // object size
  NSPAIRA(_ZTI7S1627C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S1627C1),175, //virtual function table var
  18, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1627C1),160, //virtual table table var
  37, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names126,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S794C4  : S1868C4_nt {
  void *s794c4f0[2];
  virtual  ~S794C4(); // _ZN6S794C4D1Ev
  virtual void  v5(); // _ZN6S794C42v5Ev
  virtual void  v6(); // _ZN6S794C42v6Ev
  virtual void  v7(); // _ZN6S794C42v7Ev
  virtual void  v8(); // _ZN6S794C42v8Ev
  virtual void  v9(); // _ZN6S794C42v9Ev
  virtual void  v10(); // _ZN6S794C43v10Ev
  virtual void  v11(); // _ZN6S794C43v11Ev
  S794C4(); // tgen
};
//SIG(-1 S794C4) C1{ BC2{ vd m} vd v1 v2 v3 v4 v5 v6 v7 Fp[2]}


 S794C4 ::~S794C4(){ note_dtor("S794C4", this);}
void  S794C4 ::v5(){vfunc_called(this, "_ZN6S794C42v5Ev");}
void  S794C4 ::v6(){vfunc_called(this, "_ZN6S794C42v6Ev");}
void  S794C4 ::v7(){vfunc_called(this, "_ZN6S794C42v7Ev");}
void  S794C4 ::v8(){vfunc_called(this, "_ZN6S794C42v8Ev");}
void  S794C4 ::v9(){vfunc_called(this, "_ZN6S794C42v9Ev");}
void  S794C4 ::v10(){vfunc_called(this, "_ZN6S794C43v10Ev");}
void  S794C4 ::v11(){vfunc_called(this, "_ZN6S794C43v11Ev");}
S794C4 ::S794C4(){ note_ctor("S794C4", this);} // tgen

static void Test_S794C4()
{
  extern Class_Descriptor cd_S794C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S794C4, buf);
    S794C4 *dp, &lv = *(dp=new (buf) S794C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S794C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S794C4)");
    check_base_class_offset(lv, (S1868C4_nt*), 0, "S794C4");
    check_field_offset(lv, s794c4f0, ABISELECT(8,4), "S794C4.s794c4f0");
    test_class_info(&lv, &cd_S794C4);
    dp->~S794C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS794C4(Test_S794C4, "S794C4", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN6S794C4C1Ev();
extern void _ZN6S794C4D1Ev();
Name_Map name_map_S794C4[] = {
  NSPAIR(_ZN6S794C4C1Ev),
  NSPAIR(_ZN6S794C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1868C4_nt;
extern VTBL_ENTRY _ZTI10S1868C4_nt[];
extern  VTBL_ENTRY _ZTV10S1868C4_nt[];
static Base_Class bases_S794C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1868C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S794C4[];
extern void _ZN6S794C4D1Ev();
extern void _ZN6S794C4D0Ev();
extern void _ZN6S794C42v5Ev();
extern void _ZN6S794C42v6Ev();
extern void _ZN6S794C42v7Ev();
extern void _ZN6S794C42v8Ev();
extern void _ZN6S794C42v9Ev();
extern void _ZN6S794C43v10Ev();
extern void _ZN6S794C43v11Ev();
static  VTBL_ENTRY vtc_S794C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S794C4[0]),
  (VTBL_ENTRY)&_ZN6S794C4D1Ev,
  (VTBL_ENTRY)&_ZN6S794C4D0Ev,
  (VTBL_ENTRY)&_ZN6S794C42v5Ev,
  (VTBL_ENTRY)&_ZN6S794C42v6Ev,
  (VTBL_ENTRY)&_ZN6S794C42v7Ev,
  (VTBL_ENTRY)&_ZN6S794C42v8Ev,
  (VTBL_ENTRY)&_ZN6S794C42v9Ev,
  (VTBL_ENTRY)&_ZN6S794C43v10Ev,
  (VTBL_ENTRY)&_ZN6S794C43v11Ev,
};
extern VTBL_ENTRY _ZTI6S794C4[];
extern  VTBL_ENTRY _ZTV6S794C4[];
Class_Descriptor cd_S794C4 = {  "S794C4", // class name
  bases_S794C4, 1,
  &(vtc_S794C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI6S794C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S794C4),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S794C6  {
  virtual  ~S794C6(); // _ZN6S794C6D1Ev
  virtual void  v12(); // _ZN6S794C63v12Ev
  virtual void  v13(); // _ZN6S794C63v13Ev
  virtual void  v14(); // _ZN6S794C63v14Ev
  virtual void  v15(); // _ZN6S794C63v15Ev
  virtual void  v16(); // _ZN6S794C63v16Ev
  virtual void  v17(); // _ZN6S794C63v17Ev
  virtual void  v18(); // _ZN6S794C63v18Ev
  virtual void  v19(); // _ZN6S794C63v19Ev
  virtual void  v20(); // _ZN6S794C63v20Ev
  virtual void  v21(); // _ZN6S794C63v21Ev
  virtual void  v22(); // _ZN6S794C63v22Ev
  virtual void  v23(); // _ZN6S794C63v23Ev
  S794C6(); // tgen
};
//SIG(-1 S794C6) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12}


 S794C6 ::~S794C6(){ note_dtor("S794C6", this);}
void  S794C6 ::v12(){vfunc_called(this, "_ZN6S794C63v12Ev");}
void  S794C6 ::v13(){vfunc_called(this, "_ZN6S794C63v13Ev");}
void  S794C6 ::v14(){vfunc_called(this, "_ZN6S794C63v14Ev");}
void  S794C6 ::v15(){vfunc_called(this, "_ZN6S794C63v15Ev");}
void  S794C6 ::v16(){vfunc_called(this, "_ZN6S794C63v16Ev");}
void  S794C6 ::v17(){vfunc_called(this, "_ZN6S794C63v17Ev");}
void  S794C6 ::v18(){vfunc_called(this, "_ZN6S794C63v18Ev");}
void  S794C6 ::v19(){vfunc_called(this, "_ZN6S794C63v19Ev");}
void  S794C6 ::v20(){vfunc_called(this, "_ZN6S794C63v20Ev");}
void  S794C6 ::v21(){vfunc_called(this, "_ZN6S794C63v21Ev");}
void  S794C6 ::v22(){vfunc_called(this, "_ZN6S794C63v22Ev");}
void  S794C6 ::v23(){vfunc_called(this, "_ZN6S794C63v23Ev");}
S794C6 ::S794C6(){ note_ctor("S794C6", this);} // tgen

static void Test_S794C6()
{
  extern Class_Descriptor cd_S794C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S794C6, buf);
    S794C6 *dp, &lv = *(dp=new (buf) S794C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S794C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S794C6)");
    test_class_info(&lv, &cd_S794C6);
    dp->~S794C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS794C6(Test_S794C6, "S794C6", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN6S794C6C1Ev();
extern void _ZN6S794C6D1Ev();
Name_Map name_map_S794C6[] = {
  NSPAIR(_ZN6S794C6C1Ev),
  NSPAIR(_ZN6S794C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI6S794C6[];
extern void _ZN6S794C6D1Ev();
extern void _ZN6S794C6D0Ev();
extern void _ZN6S794C63v12Ev();
extern void _ZN6S794C63v13Ev();
extern void _ZN6S794C63v14Ev();
extern void _ZN6S794C63v15Ev();
extern void _ZN6S794C63v16Ev();
extern void _ZN6S794C63v17Ev();
extern void _ZN6S794C63v18Ev();
extern void _ZN6S794C63v19Ev();
extern void _ZN6S794C63v20Ev();
extern void _ZN6S794C63v21Ev();
extern void _ZN6S794C63v22Ev();
extern void _ZN6S794C63v23Ev();
static  VTBL_ENTRY vtc_S794C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S794C6[0]),
  (VTBL_ENTRY)&_ZN6S794C6D1Ev,
  (VTBL_ENTRY)&_ZN6S794C6D0Ev,
  (VTBL_ENTRY)&_ZN6S794C63v12Ev,
  (VTBL_ENTRY)&_ZN6S794C63v13Ev,
  (VTBL_ENTRY)&_ZN6S794C63v14Ev,
  (VTBL_ENTRY)&_ZN6S794C63v15Ev,
  (VTBL_ENTRY)&_ZN6S794C63v16Ev,
  (VTBL_ENTRY)&_ZN6S794C63v17Ev,
  (VTBL_ENTRY)&_ZN6S794C63v18Ev,
  (VTBL_ENTRY)&_ZN6S794C63v19Ev,
  (VTBL_ENTRY)&_ZN6S794C63v20Ev,
  (VTBL_ENTRY)&_ZN6S794C63v21Ev,
  (VTBL_ENTRY)&_ZN6S794C63v22Ev,
  (VTBL_ENTRY)&_ZN6S794C63v23Ev,
};
extern VTBL_ENTRY _ZTI6S794C6[];
extern  VTBL_ENTRY _ZTV6S794C6[];
Class_Descriptor cd_S794C6 = {  "S794C6", // class name
  0,0,//no base classes
  &(vtc_S794C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI6S794C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV6S794C6),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S794C7  {
  virtual  ~S794C7(); // _ZN6S794C7D1Ev
  virtual void  v24(); // _ZN6S794C73v24Ev
  virtual void  v25(); // _ZN6S794C73v25Ev
  S794C7(); // tgen
};
//SIG(-1 S794C7) C1{ vd v1 v2}


 S794C7 ::~S794C7(){ note_dtor("S794C7", this);}
void  S794C7 ::v24(){vfunc_called(this, "_ZN6S794C73v24Ev");}
void  S794C7 ::v25(){vfunc_called(this, "_ZN6S794C73v25Ev");}
S794C7 ::S794C7(){ note_ctor("S794C7", this);} // tgen

static void Test_S794C7()
{
  extern Class_Descriptor cd_S794C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S794C7, buf);
    S794C7 *dp, &lv = *(dp=new (buf) S794C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S794C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S794C7)");
    test_class_info(&lv, &cd_S794C7);
    dp->~S794C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS794C7(Test_S794C7, "S794C7", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN6S794C7C1Ev();
extern void _ZN6S794C7D1Ev();
Name_Map name_map_S794C7[] = {
  NSPAIR(_ZN6S794C7C1Ev),
  NSPAIR(_ZN6S794C7D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI6S794C7[];
extern void _ZN6S794C7D1Ev();
extern void _ZN6S794C7D0Ev();
extern void _ZN6S794C73v24Ev();
extern void _ZN6S794C73v25Ev();
static  VTBL_ENTRY vtc_S794C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S794C7[0]),
  (VTBL_ENTRY)&_ZN6S794C7D1Ev,
  (VTBL_ENTRY)&_ZN6S794C7D0Ev,
  (VTBL_ENTRY)&_ZN6S794C73v24Ev,
  (VTBL_ENTRY)&_ZN6S794C73v25Ev,
};
extern VTBL_ENTRY _ZTI6S794C7[];
extern  VTBL_ENTRY _ZTV6S794C7[];
Class_Descriptor cd_S794C7 = {  "S794C7", // class name
  0,0,//no base classes
  &(vtc_S794C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI6S794C7),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV6S794C7),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S794C3  : S794C4 , S794C6 , S794C7 {
  void *s794c3f0;
  ::S793C8_nt s794c3f1;
  void *s794c3f2;
  ::S1868C17 s794c3f3;
  int s794c3f4[2];
  virtual  ~S794C3(); // _ZN6S794C3D1Ev
  virtual void  v26(); // _ZN6S794C33v26Ev
  virtual void  v27(); // _ZN6S794C33v27Ev
  virtual void  v28(); // _ZN6S794C33v28Ev
  virtual void  v29(); // _ZN6S794C33v29Ev
  virtual void  v30(); // _ZN6S794C33v30Ev
  virtual void  v31(); // _ZN6S794C33v31Ev
  virtual void  v32(); // _ZN6S794C33v32Ev
  virtual void  v33(); // _ZN6S794C33v33Ev
  virtual void  v34(); // _ZN6S794C33v34Ev
  virtual void  v35(); // _ZN6S794C33v35Ev
  virtual void  v36(); // _ZN6S794C33v36Ev
  virtual void  v37(); // _ZN6S794C33v37Ev
  virtual void  v38(); // _ZN6S794C33v38Ev
  virtual void  v39(); // _ZN6S794C33v39Ev
  virtual void  v40(); // _ZN6S794C33v40Ev
  virtual void  v41(); // _ZN6S794C33v41Ev
  virtual void  v42(); // _ZN6S794C33v42Ev
  virtual void  v43(); // _ZN6S794C33v43Ev
  virtual void  v44(); // _ZN6S794C33v44Ev
  virtual void  v45(); // _ZN6S794C33v45Ev
  virtual void  v46(); // _ZN6S794C33v46Ev
  virtual void  v47(); // _ZN6S794C33v47Ev
  virtual void  v48(); // _ZN6S794C33v48Ev
  virtual void  v49(); // _ZN6S794C33v49Ev
  S794C3(); // tgen
};
//SIG(-1 S794C3) C1{ BC2{ BC3{ vd m} vd v25 v26 v27 v28 v29 v30 v31 Fp[2]} BC4{ vd v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43} BC5{ vd v44 v45} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 Fp FC6{ m FC7{ m FL[2]}} Fp FC8{ m Fp} Fi[2]}


 S794C3 ::~S794C3(){ note_dtor("S794C3", this);}
void  S794C3 ::v26(){vfunc_called(this, "_ZN6S794C33v26Ev");}
void  S794C3 ::v27(){vfunc_called(this, "_ZN6S794C33v27Ev");}
void  S794C3 ::v28(){vfunc_called(this, "_ZN6S794C33v28Ev");}
void  S794C3 ::v29(){vfunc_called(this, "_ZN6S794C33v29Ev");}
void  S794C3 ::v30(){vfunc_called(this, "_ZN6S794C33v30Ev");}
void  S794C3 ::v31(){vfunc_called(this, "_ZN6S794C33v31Ev");}
void  S794C3 ::v32(){vfunc_called(this, "_ZN6S794C33v32Ev");}
void  S794C3 ::v33(){vfunc_called(this, "_ZN6S794C33v33Ev");}
void  S794C3 ::v34(){vfunc_called(this, "_ZN6S794C33v34Ev");}
void  S794C3 ::v35(){vfunc_called(this, "_ZN6S794C33v35Ev");}
void  S794C3 ::v36(){vfunc_called(this, "_ZN6S794C33v36Ev");}
void  S794C3 ::v37(){vfunc_called(this, "_ZN6S794C33v37Ev");}
void  S794C3 ::v38(){vfunc_called(this, "_ZN6S794C33v38Ev");}
void  S794C3 ::v39(){vfunc_called(this, "_ZN6S794C33v39Ev");}
void  S794C3 ::v40(){vfunc_called(this, "_ZN6S794C33v40Ev");}
void  S794C3 ::v41(){vfunc_called(this, "_ZN6S794C33v41Ev");}
void  S794C3 ::v42(){vfunc_called(this, "_ZN6S794C33v42Ev");}
void  S794C3 ::v43(){vfunc_called(this, "_ZN6S794C33v43Ev");}
void  S794C3 ::v44(){vfunc_called(this, "_ZN6S794C33v44Ev");}
void  S794C3 ::v45(){vfunc_called(this, "_ZN6S794C33v45Ev");}
void  S794C3 ::v46(){vfunc_called(this, "_ZN6S794C33v46Ev");}
void  S794C3 ::v47(){vfunc_called(this, "_ZN6S794C33v47Ev");}
void  S794C3 ::v48(){vfunc_called(this, "_ZN6S794C33v48Ev");}
void  S794C3 ::v49(){vfunc_called(this, "_ZN6S794C33v49Ev");}
S794C3 ::S794C3(){ note_ctor("S794C3", this);} // tgen

static void Test_S794C3()
{
  extern Class_Descriptor cd_S794C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,15)];
    init_test(&cd_S794C3, buf);
    S794C3 *dp, &lv = *(dp=new (buf) S794C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,56), "sizeof(S794C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S794C3)");
    check_base_class_offset(lv, (S1868C4_nt*)(S794C4*), 0, "S794C3");
    check_base_class_offset(lv, (S794C4*), 0, "S794C3");
    check_base_class_offset(lv, (S794C6*), ABISELECT(24,12), "S794C3");
    check_base_class_offset(lv, (S794C7*), ABISELECT(32,16), "S794C3");
    check_field_offset(lv, s794c3f0, ABISELECT(40,20), "S794C3.s794c3f0");
    check_field_offset(lv, s794c3f1, ABISELECT(48,24), "S794C3.s794c3f1");
    check_field_offset(lv, s794c3f2, ABISELECT(64,40), "S794C3.s794c3f2");
    check_field_offset(lv, s794c3f3, ABISELECT(72,44), "S794C3.s794c3f3");
    check_field_offset(lv, s794c3f4, ABISELECT(80,48), "S794C3.s794c3f4");
    test_class_info(&lv, &cd_S794C3);
    dp->~S794C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS794C3(Test_S794C3, "S794C3", ABISELECT(88,56));

#else // __cplusplus

extern void _ZN6S794C3C1Ev();
extern void _ZN6S794C3D1Ev();
Name_Map name_map_S794C3[] = {
  NSPAIR(_ZN6S794C3C1Ev),
  NSPAIR(_ZN6S794C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1868C4_nt;
extern VTBL_ENTRY _ZTI10S1868C4_nt[];
extern  VTBL_ENTRY _ZTV10S1868C4_nt[];
extern Class_Descriptor cd_S794C4;
extern VTBL_ENTRY _ZTI6S794C4[];
extern  VTBL_ENTRY _ZTV6S794C4[];
extern Class_Descriptor cd_S794C6;
extern VTBL_ENTRY _ZTI6S794C6[];
extern  VTBL_ENTRY _ZTV6S794C6[];
extern Class_Descriptor cd_S794C7;
extern VTBL_ENTRY _ZTI6S794C7[];
extern  VTBL_ENTRY _ZTV6S794C7[];
static Base_Class bases_S794C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1868C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S794C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S794C6,    ABISELECT(24,12), //bcp->offset
    35, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S794C7,    ABISELECT(32,16), //bcp->offset
    51, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S794C3[];
extern void _ZN6S794C3D1Ev();
extern void _ZN6S794C3D0Ev();
extern void _ZN6S794C42v5Ev();
extern void _ZN6S794C42v6Ev();
extern void _ZN6S794C42v7Ev();
extern void _ZN6S794C42v8Ev();
extern void _ZN6S794C42v9Ev();
extern void _ZN6S794C43v10Ev();
extern void _ZN6S794C43v11Ev();
extern void _ZN6S794C33v26Ev();
extern void _ZN6S794C33v27Ev();
extern void _ZN6S794C33v28Ev();
extern void _ZN6S794C33v29Ev();
extern void _ZN6S794C33v30Ev();
extern void _ZN6S794C33v31Ev();
extern void _ZN6S794C33v32Ev();
extern void _ZN6S794C33v33Ev();
extern void _ZN6S794C33v34Ev();
extern void _ZN6S794C33v35Ev();
extern void _ZN6S794C33v36Ev();
extern void _ZN6S794C33v37Ev();
extern void _ZN6S794C33v38Ev();
extern void _ZN6S794C33v39Ev();
extern void _ZN6S794C33v40Ev();
extern void _ZN6S794C33v41Ev();
extern void _ZN6S794C33v42Ev();
extern void _ZN6S794C33v43Ev();
extern void _ZN6S794C33v44Ev();
extern void _ZN6S794C33v45Ev();
extern void _ZN6S794C33v46Ev();
extern void _ZN6S794C33v47Ev();
extern void _ZN6S794C33v48Ev();
extern void _ZN6S794C33v49Ev();
extern void ABISELECT(_ZThn24_N6S794C3D1Ev,_ZThn12_N6S794C3D1Ev)();
extern void ABISELECT(_ZThn24_N6S794C3D0Ev,_ZThn12_N6S794C3D0Ev)();
extern void _ZN6S794C63v12Ev();
extern void _ZN6S794C63v13Ev();
extern void _ZN6S794C63v14Ev();
extern void _ZN6S794C63v15Ev();
extern void _ZN6S794C63v16Ev();
extern void _ZN6S794C63v17Ev();
extern void _ZN6S794C63v18Ev();
extern void _ZN6S794C63v19Ev();
extern void _ZN6S794C63v20Ev();
extern void _ZN6S794C63v21Ev();
extern void _ZN6S794C63v22Ev();
extern void _ZN6S794C63v23Ev();
extern void ABISELECT(_ZThn32_N6S794C3D1Ev,_ZThn16_N6S794C3D1Ev)();
extern void ABISELECT(_ZThn32_N6S794C3D0Ev,_ZThn16_N6S794C3D0Ev)();
extern void _ZN6S794C73v24Ev();
extern void _ZN6S794C73v25Ev();
static  VTBL_ENTRY vtc_S794C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S794C3[0]),
  (VTBL_ENTRY)&_ZN6S794C3D1Ev,
  (VTBL_ENTRY)&_ZN6S794C3D0Ev,
  (VTBL_ENTRY)&_ZN6S794C42v5Ev,
  (VTBL_ENTRY)&_ZN6S794C42v6Ev,
  (VTBL_ENTRY)&_ZN6S794C42v7Ev,
  (VTBL_ENTRY)&_ZN6S794C42v8Ev,
  (VTBL_ENTRY)&_ZN6S794C42v9Ev,
  (VTBL_ENTRY)&_ZN6S794C43v10Ev,
  (VTBL_ENTRY)&_ZN6S794C43v11Ev,
  (VTBL_ENTRY)&_ZN6S794C33v26Ev,
  (VTBL_ENTRY)&_ZN6S794C33v27Ev,
  (VTBL_ENTRY)&_ZN6S794C33v28Ev,
  (VTBL_ENTRY)&_ZN6S794C33v29Ev,
  (VTBL_ENTRY)&_ZN6S794C33v30Ev,
  (VTBL_ENTRY)&_ZN6S794C33v31Ev,
  (VTBL_ENTRY)&_ZN6S794C33v32Ev,
  (VTBL_ENTRY)&_ZN6S794C33v33Ev,
  (VTBL_ENTRY)&_ZN6S794C33v34Ev,
  (VTBL_ENTRY)&_ZN6S794C33v35Ev,
  (VTBL_ENTRY)&_ZN6S794C33v36Ev,
  (VTBL_ENTRY)&_ZN6S794C33v37Ev,
  (VTBL_ENTRY)&_ZN6S794C33v38Ev,
  (VTBL_ENTRY)&_ZN6S794C33v39Ev,
  (VTBL_ENTRY)&_ZN6S794C33v40Ev,
  (VTBL_ENTRY)&_ZN6S794C33v41Ev,
  (VTBL_ENTRY)&_ZN6S794C33v42Ev,
  (VTBL_ENTRY)&_ZN6S794C33v43Ev,
  (VTBL_ENTRY)&_ZN6S794C33v44Ev,
  (VTBL_ENTRY)&_ZN6S794C33v45Ev,
  (VTBL_ENTRY)&_ZN6S794C33v46Ev,
  (VTBL_ENTRY)&_ZN6S794C33v47Ev,
  (VTBL_ENTRY)&_ZN6S794C33v48Ev,
  (VTBL_ENTRY)&_ZN6S794C33v49Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI6S794C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N6S794C3D1Ev,_ZThn12_N6S794C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N6S794C3D0Ev,_ZThn12_N6S794C3D0Ev),
  (VTBL_ENTRY)&_ZN6S794C63v12Ev,
  (VTBL_ENTRY)&_ZN6S794C63v13Ev,
  (VTBL_ENTRY)&_ZN6S794C63v14Ev,
  (VTBL_ENTRY)&_ZN6S794C63v15Ev,
  (VTBL_ENTRY)&_ZN6S794C63v16Ev,
  (VTBL_ENTRY)&_ZN6S794C63v17Ev,
  (VTBL_ENTRY)&_ZN6S794C63v18Ev,
  (VTBL_ENTRY)&_ZN6S794C63v19Ev,
  (VTBL_ENTRY)&_ZN6S794C63v20Ev,
  (VTBL_ENTRY)&_ZN6S794C63v21Ev,
  (VTBL_ENTRY)&_ZN6S794C63v22Ev,
  (VTBL_ENTRY)&_ZN6S794C63v23Ev,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI6S794C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N6S794C3D1Ev,_ZThn16_N6S794C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N6S794C3D0Ev,_ZThn16_N6S794C3D0Ev),
  (VTBL_ENTRY)&_ZN6S794C73v24Ev,
  (VTBL_ENTRY)&_ZN6S794C73v25Ev,
};
extern VTBL_ENTRY _ZTI6S794C3[];
extern  VTBL_ENTRY _ZTV6S794C3[];
Class_Descriptor cd_S794C3 = {  "S794C3", // class name
  bases_S794C3, 4,
  &(vtc_S794C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,56), // object size
  NSPAIRA(_ZTI6S794C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV6S794C3),57, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  4, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S794C2  : S794C3 {
  ::S793C11 s794c2f0;
  virtual void  v50(); // _ZN6S794C23v50Ev
  virtual void  v51(); // _ZN6S794C23v51Ev
  virtual void  v52(); // _ZN6S794C23v52Ev
  virtual void  v53(); // _ZN6S794C23v53Ev
  virtual void  v54(); // _ZN6S794C23v54Ev
  ~S794C2(); // tgen
  S794C2(); // tgen
};
//SIG(-1 S794C2) C1{ BC2{ BC3{ BC4{ vd m} vd v6 v7 v8 v9 v10 v11 v12 Fp[2]} BC5{ vd v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24} BC6{ vd v25 v26} vd v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 Fp FC7{ m FC8{ m FL[2]}} Fp FC9{ m Fp} Fi[2]} v1 v2 v3 v4 v5 FC10{ m Fc FC7 Fi}}


void  S794C2 ::v50(){vfunc_called(this, "_ZN6S794C23v50Ev");}
void  S794C2 ::v51(){vfunc_called(this, "_ZN6S794C23v51Ev");}
void  S794C2 ::v52(){vfunc_called(this, "_ZN6S794C23v52Ev");}
void  S794C2 ::v53(){vfunc_called(this, "_ZN6S794C23v53Ev");}
void  S794C2 ::v54(){vfunc_called(this, "_ZN6S794C23v54Ev");}
S794C2 ::~S794C2(){ note_dtor("S794C2", this);} // tgen
S794C2 ::S794C2(){ note_ctor("S794C2", this);} // tgen

static void Test_S794C2()
{
  extern Class_Descriptor cd_S794C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,21)];
    init_test(&cd_S794C2, buf);
    S794C2 *dp, &lv = *(dp=new (buf) S794C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,80), "sizeof(S794C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S794C2)");
    check_base_class_offset(lv, (S1868C4_nt*)(S794C4*)(S794C3*), 0, "S794C2");
    check_base_class_offset(lv, (S794C4*)(S794C3*), 0, "S794C2");
    check_base_class_offset(lv, (S794C6*)(S794C3*), ABISELECT(24,12), "S794C2");
    check_base_class_offset(lv, (S794C7*)(S794C3*), ABISELECT(32,16), "S794C2");
    check_base_class_offset(lv, (S794C3*), 0, "S794C2");
    check_field_offset(lv, s794c2f0, ABISELECT(88,56), "S794C2.s794c2f0");
    test_class_info(&lv, &cd_S794C2);
    dp->~S794C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS794C2(Test_S794C2, "S794C2", ABISELECT(120,80));

#else // __cplusplus

extern void _ZN6S794C2C1Ev();
extern void _ZN6S794C2D1Ev();
Name_Map name_map_S794C2[] = {
  NSPAIR(_ZN6S794C2C1Ev),
  NSPAIR(_ZN6S794C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1868C4_nt;
extern VTBL_ENTRY _ZTI10S1868C4_nt[];
extern  VTBL_ENTRY _ZTV10S1868C4_nt[];
extern Class_Descriptor cd_S794C4;
extern VTBL_ENTRY _ZTI6S794C4[];
extern  VTBL_ENTRY _ZTV6S794C4[];
extern Class_Descriptor cd_S794C6;
extern VTBL_ENTRY _ZTI6S794C6[];
extern  VTBL_ENTRY _ZTV6S794C6[];
extern Class_Descriptor cd_S794C7;
extern VTBL_ENTRY _ZTI6S794C7[];
extern  VTBL_ENTRY _ZTV6S794C7[];
extern Class_Descriptor cd_S794C3;
extern VTBL_ENTRY _ZTI6S794C3[];
extern  VTBL_ENTRY _ZTV6S794C3[];
static Base_Class bases_S794C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1868C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S794C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S794C6,    ABISELECT(24,12), //bcp->offset
    40, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S794C7,    ABISELECT(32,16), //bcp->offset
    56, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S794C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S794C2[];
extern void _ZN6S794C2D1Ev();
extern void _ZN6S794C2D0Ev();
extern void _ZN6S794C42v5Ev();
extern void _ZN6S794C42v6Ev();
extern void _ZN6S794C42v7Ev();
extern void _ZN6S794C42v8Ev();
extern void _ZN6S794C42v9Ev();
extern void _ZN6S794C43v10Ev();
extern void _ZN6S794C43v11Ev();
extern void _ZN6S794C33v26Ev();
extern void _ZN6S794C33v27Ev();
extern void _ZN6S794C33v28Ev();
extern void _ZN6S794C33v29Ev();
extern void _ZN6S794C33v30Ev();
extern void _ZN6S794C33v31Ev();
extern void _ZN6S794C33v32Ev();
extern void _ZN6S794C33v33Ev();
extern void _ZN6S794C33v34Ev();
extern void _ZN6S794C33v35Ev();
extern void _ZN6S794C33v36Ev();
extern void _ZN6S794C33v37Ev();
extern void _ZN6S794C33v38Ev();
extern void _ZN6S794C33v39Ev();
extern void _ZN6S794C33v40Ev();
extern void _ZN6S794C33v41Ev();
extern void _ZN6S794C33v42Ev();
extern void _ZN6S794C33v43Ev();
extern void _ZN6S794C33v44Ev();
extern void _ZN6S794C33v45Ev();
extern void _ZN6S794C33v46Ev();
extern void _ZN6S794C33v47Ev();
extern void _ZN6S794C33v48Ev();
extern void _ZN6S794C33v49Ev();
extern void _ZN6S794C23v50Ev();
extern void _ZN6S794C23v51Ev();
extern void _ZN6S794C23v52Ev();
extern void _ZN6S794C23v53Ev();
extern void _ZN6S794C23v54Ev();
extern void ABISELECT(_ZThn24_N6S794C2D1Ev,_ZThn12_N6S794C2D1Ev)();
extern void ABISELECT(_ZThn24_N6S794C2D0Ev,_ZThn12_N6S794C2D0Ev)();
extern void _ZN6S794C63v12Ev();
extern void _ZN6S794C63v13Ev();
extern void _ZN6S794C63v14Ev();
extern void _ZN6S794C63v15Ev();
extern void _ZN6S794C63v16Ev();
extern void _ZN6S794C63v17Ev();
extern void _ZN6S794C63v18Ev();
extern void _ZN6S794C63v19Ev();
extern void _ZN6S794C63v20Ev();
extern void _ZN6S794C63v21Ev();
extern void _ZN6S794C63v22Ev();
extern void _ZN6S794C63v23Ev();
extern void ABISELECT(_ZThn32_N6S794C2D1Ev,_ZThn16_N6S794C2D1Ev)();
extern void ABISELECT(_ZThn32_N6S794C2D0Ev,_ZThn16_N6S794C2D0Ev)();
extern void _ZN6S794C73v24Ev();
extern void _ZN6S794C73v25Ev();
static  VTBL_ENTRY vtc_S794C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S794C2[0]),
  (VTBL_ENTRY)&_ZN6S794C2D1Ev,
  (VTBL_ENTRY)&_ZN6S794C2D0Ev,
  (VTBL_ENTRY)&_ZN6S794C42v5Ev,
  (VTBL_ENTRY)&_ZN6S794C42v6Ev,
  (VTBL_ENTRY)&_ZN6S794C42v7Ev,
  (VTBL_ENTRY)&_ZN6S794C42v8Ev,
  (VTBL_ENTRY)&_ZN6S794C42v9Ev,
  (VTBL_ENTRY)&_ZN6S794C43v10Ev,
  (VTBL_ENTRY)&_ZN6S794C43v11Ev,
  (VTBL_ENTRY)&_ZN6S794C33v26Ev,
  (VTBL_ENTRY)&_ZN6S794C33v27Ev,
  (VTBL_ENTRY)&_ZN6S794C33v28Ev,
  (VTBL_ENTRY)&_ZN6S794C33v29Ev,
  (VTBL_ENTRY)&_ZN6S794C33v30Ev,
  (VTBL_ENTRY)&_ZN6S794C33v31Ev,
  (VTBL_ENTRY)&_ZN6S794C33v32Ev,
  (VTBL_ENTRY)&_ZN6S794C33v33Ev,
  (VTBL_ENTRY)&_ZN6S794C33v34Ev,
  (VTBL_ENTRY)&_ZN6S794C33v35Ev,
  (VTBL_ENTRY)&_ZN6S794C33v36Ev,
  (VTBL_ENTRY)&_ZN6S794C33v37Ev,
  (VTBL_ENTRY)&_ZN6S794C33v38Ev,
  (VTBL_ENTRY)&_ZN6S794C33v39Ev,
  (VTBL_ENTRY)&_ZN6S794C33v40Ev,
  (VTBL_ENTRY)&_ZN6S794C33v41Ev,
  (VTBL_ENTRY)&_ZN6S794C33v42Ev,
  (VTBL_ENTRY)&_ZN6S794C33v43Ev,
  (VTBL_ENTRY)&_ZN6S794C33v44Ev,
  (VTBL_ENTRY)&_ZN6S794C33v45Ev,
  (VTBL_ENTRY)&_ZN6S794C33v46Ev,
  (VTBL_ENTRY)&_ZN6S794C33v47Ev,
  (VTBL_ENTRY)&_ZN6S794C33v48Ev,
  (VTBL_ENTRY)&_ZN6S794C33v49Ev,
  (VTBL_ENTRY)&_ZN6S794C23v50Ev,
  (VTBL_ENTRY)&_ZN6S794C23v51Ev,
  (VTBL_ENTRY)&_ZN6S794C23v52Ev,
  (VTBL_ENTRY)&_ZN6S794C23v53Ev,
  (VTBL_ENTRY)&_ZN6S794C23v54Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI6S794C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N6S794C2D1Ev,_ZThn12_N6S794C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N6S794C2D0Ev,_ZThn12_N6S794C2D0Ev),
  (VTBL_ENTRY)&_ZN6S794C63v12Ev,
  (VTBL_ENTRY)&_ZN6S794C63v13Ev,
  (VTBL_ENTRY)&_ZN6S794C63v14Ev,
  (VTBL_ENTRY)&_ZN6S794C63v15Ev,
  (VTBL_ENTRY)&_ZN6S794C63v16Ev,
  (VTBL_ENTRY)&_ZN6S794C63v17Ev,
  (VTBL_ENTRY)&_ZN6S794C63v18Ev,
  (VTBL_ENTRY)&_ZN6S794C63v19Ev,
  (VTBL_ENTRY)&_ZN6S794C63v20Ev,
  (VTBL_ENTRY)&_ZN6S794C63v21Ev,
  (VTBL_ENTRY)&_ZN6S794C63v22Ev,
  (VTBL_ENTRY)&_ZN6S794C63v23Ev,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI6S794C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N6S794C2D1Ev,_ZThn16_N6S794C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N6S794C2D0Ev,_ZThn16_N6S794C2D0Ev),
  (VTBL_ENTRY)&_ZN6S794C73v24Ev,
  (VTBL_ENTRY)&_ZN6S794C73v25Ev,
};
extern VTBL_ENTRY _ZTI6S794C2[];
extern  VTBL_ENTRY _ZTV6S794C2[];
Class_Descriptor cd_S794C2 = {  "S794C2", // class name
  bases_S794C2, 5,
  &(vtc_S794C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(120,80), // object size
  NSPAIRA(_ZTI6S794C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S794C2),62, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  5, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S794C1  : S794C2 {
  virtual void  v1(); // _ZN6S794C12v1Ev
  virtual void  v2(); // _ZN6S794C12v2Ev
  virtual void  v3(); // _ZN6S794C12v3Ev
  virtual void  v4(); // _ZN6S794C12v4Ev
  ~S794C1(); // tgen
  S794C1(); // tgen
};
//SIG(1 S794C1) C1{ BC2{ BC3{ BC4{ BC5{ vd m} vd v5 v6 v7 v8 v9 v10 v11 Fp[2]} BC6{ vd v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23} BC7{ vd v24 v25} vd v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 Fp FC8{ m FC9{ m FL[2]}} Fp FC10{ m Fp} Fi[2]} v50 v51 v52 v53 v54 FC11{ m Fc FC8 Fi}} v1 v2 v3 v4}


void  S794C1 ::v1(){vfunc_called(this, "_ZN6S794C12v1Ev");}
void  S794C1 ::v2(){vfunc_called(this, "_ZN6S794C12v2Ev");}
void  S794C1 ::v3(){vfunc_called(this, "_ZN6S794C12v3Ev");}
void  S794C1 ::v4(){vfunc_called(this, "_ZN6S794C12v4Ev");}
S794C1 ::~S794C1(){ note_dtor("S794C1", this);} // tgen
S794C1 ::S794C1(){ note_ctor("S794C1", this);} // tgen

static void Test_S794C1()
{
  extern Class_Descriptor cd_S794C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,21)];
    init_test(&cd_S794C1, buf);
    S794C1 *dp, &lv = *(dp=new (buf) S794C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,80), "sizeof(S794C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S794C1)");
    check_base_class_offset(lv, (S1868C4_nt*)(S794C4*)(S794C3*)(S794C2*), 0, "S794C1");
    check_base_class_offset(lv, (S794C4*)(S794C3*)(S794C2*), 0, "S794C1");
    check_base_class_offset(lv, (S794C6*)(S794C3*)(S794C2*), ABISELECT(24,12), "S794C1");
    check_base_class_offset(lv, (S794C7*)(S794C3*)(S794C2*), ABISELECT(32,16), "S794C1");
    check_base_class_offset(lv, (S794C3*)(S794C2*), 0, "S794C1");
    check_base_class_offset(lv, (S794C2*), 0, "S794C1");
    test_class_info(&lv, &cd_S794C1);
    dp->~S794C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS794C1(Test_S794C1, "S794C1", ABISELECT(120,80));

#else // __cplusplus

extern void _ZN6S794C1C1Ev();
extern void _ZN6S794C1D1Ev();
Name_Map name_map_S794C1[] = {
  NSPAIR(_ZN6S794C1C1Ev),
  NSPAIR(_ZN6S794C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1868C4_nt;
extern VTBL_ENTRY _ZTI10S1868C4_nt[];
extern  VTBL_ENTRY _ZTV10S1868C4_nt[];
extern Class_Descriptor cd_S794C4;
extern VTBL_ENTRY _ZTI6S794C4[];
extern  VTBL_ENTRY _ZTV6S794C4[];
extern Class_Descriptor cd_S794C6;
extern VTBL_ENTRY _ZTI6S794C6[];
extern  VTBL_ENTRY _ZTV6S794C6[];
extern Class_Descriptor cd_S794C7;
extern VTBL_ENTRY _ZTI6S794C7[];
extern  VTBL_ENTRY _ZTV6S794C7[];
extern Class_Descriptor cd_S794C3;
extern VTBL_ENTRY _ZTI6S794C3[];
extern  VTBL_ENTRY _ZTV6S794C3[];
extern Class_Descriptor cd_S794C2;
extern VTBL_ENTRY _ZTI6S794C2[];
extern  VTBL_ENTRY _ZTV6S794C2[];
static Base_Class bases_S794C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1868C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S794C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S794C6,    ABISELECT(24,12), //bcp->offset
    44, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S794C7,    ABISELECT(32,16), //bcp->offset
    60, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S794C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S794C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S794C1[];
extern void _ZN6S794C1D1Ev();
extern void _ZN6S794C1D0Ev();
extern void _ZN6S794C42v5Ev();
extern void _ZN6S794C42v6Ev();
extern void _ZN6S794C42v7Ev();
extern void _ZN6S794C42v8Ev();
extern void _ZN6S794C42v9Ev();
extern void _ZN6S794C43v10Ev();
extern void _ZN6S794C43v11Ev();
extern void _ZN6S794C33v26Ev();
extern void _ZN6S794C33v27Ev();
extern void _ZN6S794C33v28Ev();
extern void _ZN6S794C33v29Ev();
extern void _ZN6S794C33v30Ev();
extern void _ZN6S794C33v31Ev();
extern void _ZN6S794C33v32Ev();
extern void _ZN6S794C33v33Ev();
extern void _ZN6S794C33v34Ev();
extern void _ZN6S794C33v35Ev();
extern void _ZN6S794C33v36Ev();
extern void _ZN6S794C33v37Ev();
extern void _ZN6S794C33v38Ev();
extern void _ZN6S794C33v39Ev();
extern void _ZN6S794C33v40Ev();
extern void _ZN6S794C33v41Ev();
extern void _ZN6S794C33v42Ev();
extern void _ZN6S794C33v43Ev();
extern void _ZN6S794C33v44Ev();
extern void _ZN6S794C33v45Ev();
extern void _ZN6S794C33v46Ev();
extern void _ZN6S794C33v47Ev();
extern void _ZN6S794C33v48Ev();
extern void _ZN6S794C33v49Ev();
extern void _ZN6S794C23v50Ev();
extern void _ZN6S794C23v51Ev();
extern void _ZN6S794C23v52Ev();
extern void _ZN6S794C23v53Ev();
extern void _ZN6S794C23v54Ev();
extern void _ZN6S794C12v1Ev();
extern void _ZN6S794C12v2Ev();
extern void _ZN6S794C12v3Ev();
extern void _ZN6S794C12v4Ev();
extern void ABISELECT(_ZThn24_N6S794C1D1Ev,_ZThn12_N6S794C1D1Ev)();
extern void ABISELECT(_ZThn24_N6S794C1D0Ev,_ZThn12_N6S794C1D0Ev)();
extern void _ZN6S794C63v12Ev();
extern void _ZN6S794C63v13Ev();
extern void _ZN6S794C63v14Ev();
extern void _ZN6S794C63v15Ev();
extern void _ZN6S794C63v16Ev();
extern void _ZN6S794C63v17Ev();
extern void _ZN6S794C63v18Ev();
extern void _ZN6S794C63v19Ev();
extern void _ZN6S794C63v20Ev();
extern void _ZN6S794C63v21Ev();
extern void _ZN6S794C63v22Ev();
extern void _ZN6S794C63v23Ev();
extern void ABISELECT(_ZThn32_N6S794C1D1Ev,_ZThn16_N6S794C1D1Ev)();
extern void ABISELECT(_ZThn32_N6S794C1D0Ev,_ZThn16_N6S794C1D0Ev)();
extern void _ZN6S794C73v24Ev();
extern void _ZN6S794C73v25Ev();
static  VTBL_ENTRY vtc_S794C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S794C1[0]),
  (VTBL_ENTRY)&_ZN6S794C1D1Ev,
  (VTBL_ENTRY)&_ZN6S794C1D0Ev,
  (VTBL_ENTRY)&_ZN6S794C42v5Ev,
  (VTBL_ENTRY)&_ZN6S794C42v6Ev,
  (VTBL_ENTRY)&_ZN6S794C42v7Ev,
  (VTBL_ENTRY)&_ZN6S794C42v8Ev,
  (VTBL_ENTRY)&_ZN6S794C42v9Ev,
  (VTBL_ENTRY)&_ZN6S794C43v10Ev,
  (VTBL_ENTRY)&_ZN6S794C43v11Ev,
  (VTBL_ENTRY)&_ZN6S794C33v26Ev,
  (VTBL_ENTRY)&_ZN6S794C33v27Ev,
  (VTBL_ENTRY)&_ZN6S794C33v28Ev,
  (VTBL_ENTRY)&_ZN6S794C33v29Ev,
  (VTBL_ENTRY)&_ZN6S794C33v30Ev,
  (VTBL_ENTRY)&_ZN6S794C33v31Ev,
  (VTBL_ENTRY)&_ZN6S794C33v32Ev,
  (VTBL_ENTRY)&_ZN6S794C33v33Ev,
  (VTBL_ENTRY)&_ZN6S794C33v34Ev,
  (VTBL_ENTRY)&_ZN6S794C33v35Ev,
  (VTBL_ENTRY)&_ZN6S794C33v36Ev,
  (VTBL_ENTRY)&_ZN6S794C33v37Ev,
  (VTBL_ENTRY)&_ZN6S794C33v38Ev,
  (VTBL_ENTRY)&_ZN6S794C33v39Ev,
  (VTBL_ENTRY)&_ZN6S794C33v40Ev,
  (VTBL_ENTRY)&_ZN6S794C33v41Ev,
  (VTBL_ENTRY)&_ZN6S794C33v42Ev,
  (VTBL_ENTRY)&_ZN6S794C33v43Ev,
  (VTBL_ENTRY)&_ZN6S794C33v44Ev,
  (VTBL_ENTRY)&_ZN6S794C33v45Ev,
  (VTBL_ENTRY)&_ZN6S794C33v46Ev,
  (VTBL_ENTRY)&_ZN6S794C33v47Ev,
  (VTBL_ENTRY)&_ZN6S794C33v48Ev,
  (VTBL_ENTRY)&_ZN6S794C33v49Ev,
  (VTBL_ENTRY)&_ZN6S794C23v50Ev,
  (VTBL_ENTRY)&_ZN6S794C23v51Ev,
  (VTBL_ENTRY)&_ZN6S794C23v52Ev,
  (VTBL_ENTRY)&_ZN6S794C23v53Ev,
  (VTBL_ENTRY)&_ZN6S794C23v54Ev,
  (VTBL_ENTRY)&_ZN6S794C12v1Ev,
  (VTBL_ENTRY)&_ZN6S794C12v2Ev,
  (VTBL_ENTRY)&_ZN6S794C12v3Ev,
  (VTBL_ENTRY)&_ZN6S794C12v4Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI6S794C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N6S794C1D1Ev,_ZThn12_N6S794C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N6S794C1D0Ev,_ZThn12_N6S794C1D0Ev),
  (VTBL_ENTRY)&_ZN6S794C63v12Ev,
  (VTBL_ENTRY)&_ZN6S794C63v13Ev,
  (VTBL_ENTRY)&_ZN6S794C63v14Ev,
  (VTBL_ENTRY)&_ZN6S794C63v15Ev,
  (VTBL_ENTRY)&_ZN6S794C63v16Ev,
  (VTBL_ENTRY)&_ZN6S794C63v17Ev,
  (VTBL_ENTRY)&_ZN6S794C63v18Ev,
  (VTBL_ENTRY)&_ZN6S794C63v19Ev,
  (VTBL_ENTRY)&_ZN6S794C63v20Ev,
  (VTBL_ENTRY)&_ZN6S794C63v21Ev,
  (VTBL_ENTRY)&_ZN6S794C63v22Ev,
  (VTBL_ENTRY)&_ZN6S794C63v23Ev,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI6S794C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N6S794C1D1Ev,_ZThn16_N6S794C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N6S794C1D0Ev,_ZThn16_N6S794C1D0Ev),
  (VTBL_ENTRY)&_ZN6S794C73v24Ev,
  (VTBL_ENTRY)&_ZN6S794C73v25Ev,
};
extern VTBL_ENTRY _ZTI6S794C1[];
extern  VTBL_ENTRY _ZTV6S794C1[];
Class_Descriptor cd_S794C1 = {  "S794C1", // class name
  bases_S794C1, 6,
  &(vtc_S794C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(120,80), // object size
  NSPAIRA(_ZTI6S794C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S794C1),66, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  6, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19805C5  : virtual S7856C12 , S7856C15 , virtual S7856C24 {
  ~S19805C5(); // tgen
  S19805C5(); // tgen
};
//SIG(-1 S19805C5) C1{ VBC2{ m} BC3{ m} VBC4{ m}}


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

static void Test_S19805C5()
{
  extern Class_Descriptor cd_S19805C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S19805C5, buf);
    S19805C5 *dp, &lv = *(dp=new (buf) S19805C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S19805C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19805C5)");
    check_base_class_offset(lv, (S7856C12*), 0, "S19805C5");
    check_base_class_offset(lv, (S7856C15*), 0, "S19805C5");
    check_base_class_offset(lv, (S7856C24*), 0, "S19805C5");
    test_class_info(&lv, &cd_S19805C5);
    dp->~S19805C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19805C5(Test_S19805C5, "S19805C5", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S19805C5C1Ev();
extern void _ZN8S19805C5D1Ev();
Name_Map name_map_S19805C5[] = {
  NSPAIR(_ZN8S19805C5C1Ev),
  NSPAIR(_ZN8S19805C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
static Base_Class bases_S19805C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19805C5[];
static  VTBL_ENTRY vtc_S19805C5[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
extern VTBL_ENTRY _ZTV8S19805C5[];
static  VTT_ENTRY vtt_S19805C5[] = {
  {&(_ZTV8S19805C5[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
Class_Descriptor cd_S19805C5 = {  "S19805C5", // class name
  bases_S19805C5, 3,
  &(vtc_S19805C5[0]), // expected_vtbl_contents
  &(vtt_S19805C5[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S19805C5),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19805C5),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19805C5),1, //virtual table table var
  0, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19805C3  : S7856C24 , S7856C15 , S19805C5 {
  int s19805c3f0;
  ~S19805C3(); // tgen
  S19805C3(); // tgen
};
//SIG(-1 S19805C3) C1{ BC2{ m} BC3{ m} BC4{ VBC5{ m} BC3 VBC2} Fi}


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

static void Test_S19805C3()
{
  extern Class_Descriptor cd_S19805C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S19805C3, buf);
    S19805C3 *dp, &lv = *(dp=new (buf) S19805C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S19805C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19805C3)");
    /*is_ambiguous_... S19805C3::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), 0, "S19805C3");
    /*is_ambiguous_... S19805C3::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(8,4), "S19805C3");
    check_base_class_offset(lv, (S7856C12*)(S19805C5*), 0, "S19805C3");
    check_base_class_offset(lv, (S7856C15*)(S19805C5*), 0, "S19805C3");
    check_base_class_offset(lv, (S7856C24*)(S19805C5*), ABISELECT(12,8), "S19805C3");
    check_base_class_offset(lv, (S19805C5*), 0, "S19805C3");
    check_field_offset(lv, s19805c3f0, ABISELECT(8,4), "S19805C3.s19805c3f0");
    test_class_info(&lv, &cd_S19805C3);
    dp->~S19805C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19805C3(Test_S19805C3, "S19805C3", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S19805C3C1Ev();
extern void _ZN8S19805C3D1Ev();
Name_Map name_map_S19805C3[] = {
  NSPAIR(_ZN8S19805C3C1Ev),
  NSPAIR(_ZN8S19805C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
static Base_Class bases_S19805C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19805C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19805C3[];
static  VTBL_ENTRY vtc_S19805C3[] = {
  ABISELECT(12,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C3[0]),
};
extern VTBL_ENTRY _ZTV8S19805C3[];
static  VTBL_ENTRY _tg__ZTV8S19805C5__8S19805C3[] = {
  ABISELECT(12,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
static  VTT_ENTRY vtt_S19805C3[] = {
  {&(_ZTV8S19805C3[4]),  4,4},
  {&(_tg__ZTV8S19805C5__8S19805C3[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S19805C3[];
extern  VTBL_ENTRY _ZTV8S19805C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C3[];
Class_Descriptor cd_S19805C3 = {  "S19805C3", // class name
  bases_S19805C3, 6,
  &(vtc_S19805C3[0]), // expected_vtbl_contents
  &(vtt_S19805C3[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S19805C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19805C3),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19805C3),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19805C8  : S7856C12 , virtual S19805C5 , virtual S7856C15 {
  ~S19805C8(); // tgen
  S19805C8(); // tgen
};
//SIG(-1 S19805C8) C1{ BC2{ m} VBC3{ VBC2 BC4{ m} VBC5{ m}} VBC4}


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

static void Test_S19805C8()
{
  extern Class_Descriptor cd_S19805C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19805C8, buf);
    S19805C8 *dp, &lv = *(dp=new (buf) S19805C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19805C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19805C8)");
    /*is_ambiguous_... S19805C8::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), 0, "S19805C8");
    check_base_class_offset(lv, (S7856C12*)(S19805C5*), ABISELECT(8,4), "S19805C8");
    check_base_class_offset(lv, (S7856C15*)(S19805C5*), 0, "S19805C8");
    check_base_class_offset(lv, (S7856C24*)(S19805C5*), 0, "S19805C8");
    check_base_class_offset(lv, (S19805C5*), 0, "S19805C8");
    /*is_ambiguous_... S19805C8::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(8,4), "S19805C8");
    test_class_info(&lv, &cd_S19805C8);
    dp->~S19805C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19805C8(Test_S19805C8, "S19805C8", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S19805C8C1Ev();
extern void _ZN8S19805C8D1Ev();
Name_Map name_map_S19805C8[] = {
  NSPAIR(_ZN8S19805C8C1Ev),
  NSPAIR(_ZN8S19805C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
static Base_Class bases_S19805C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19805C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19805C8[];
static  VTBL_ENTRY vtc_S19805C8[] = {
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C8[0]),
};
extern VTBL_ENTRY _ZTV8S19805C8[];
static  VTBL_ENTRY _tg__ZTV8S19805C5__8S19805C8[] = {
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
static  VTT_ENTRY vtt_S19805C8[] = {
  {&(_ZTV8S19805C8[6]),  6,6},
  {&(_ZTV8S19805C8[6]),  6,6},
  {&(_tg__ZTV8S19805C5__8S19805C8[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S19805C8[];
extern  VTBL_ENTRY _ZTV8S19805C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C8[];
Class_Descriptor cd_S19805C8 = {  "S19805C8", // class name
  bases_S19805C8, 6,
  &(vtc_S19805C8[0]), // expected_vtbl_contents
  &(vtt_S19805C8[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19805C8),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19805C8),6, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19805C8),3, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19805C7  : S7856C15 , virtual S7856C12 , virtual S7856C24 , S19805C5 , virtual S19805C8 {
  virtual  ~S19805C7(); // _ZN8S19805C7D2Ev
  S19805C7(); // tgen
};
//SIG(-1 S19805C7) C1{ BC2{ m} VBC3{ m} VBC4{ m} BC5{ VBC3 BC2 VBC4} VBC6{ BC3 VBC5 VBC2} vd}


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

static void Test_S19805C7()
{
  extern Class_Descriptor cd_S19805C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S19805C7, buf);
    S19805C7 *dp, &lv = *(dp=new (buf) S19805C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S19805C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19805C7)");
    /*is_ambiguous_... S19805C7::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(8,4), "S19805C7");
    /*is_ambiguous_... S19805C7::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), 0, "S19805C7");
    /*is_ambiguous_... S19805C7::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C5*), 0, "S19805C7");
    /*is_ambiguous_... S19805C7::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C5*), 0, "S19805C7");
    check_base_class_offset(lv, (S7856C24*), 0, "S19805C7");
    /*is_ambiguous_... S19805C7::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C5*), 0, "S19805C7");
    /*is_ambiguous_... S19805C7::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C5*), 0, "S19805C7");
    /*is_ambiguous_... S19805C7::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C5*), 0, "S19805C7");
    /*is_ambiguous_... S19805C7::S19805C5 */ AMB_check_base_class_offset(lv, (S19805C5*), 0, "S19805C7");
    /*is_ambiguous_... S19805C8::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C8*), ABISELECT(16,8), "S19805C7");
    /*is_ambiguous_... S19805C7::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C5*), ABISELECT(16,8), "S19805C7");
    check_base_class_offset(lv, (S19805C5*)(S19805C8*), ABISELECT(16,8), "S19805C7");
    /*is_ambiguous_... S19805C8::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C8*), ABISELECT(24,12), "S19805C7");
    check_base_class_offset(lv, (S19805C8*), ABISELECT(16,8), "S19805C7");
    test_class_info(&lv, &cd_S19805C7);
    dp->~S19805C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19805C7(Test_S19805C7, "S19805C7", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S19805C7C1Ev();
extern void _ZN8S19805C7D2Ev();
Name_Map name_map_S19805C7[] = {
  NSPAIR(_ZN8S19805C7C1Ev),
  NSPAIR(_ZN8S19805C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C8;
extern VTBL_ENTRY _ZTI8S19805C8[];
extern  VTBL_ENTRY _ZTV8S19805C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C8[];
static Base_Class bases_S19805C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19805C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19805C5,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19805C8,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19805C7[];
extern void _ZN8S19805C7D1Ev();
extern void _ZN8S19805C7D0Ev();
static  VTBL_ENTRY vtc_S19805C7[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C7[0]),
  (VTBL_ENTRY)&_ZN8S19805C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19805C7D0Ev,
  ABISELECT(8,4),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19805C7[0]),
};
extern VTBL_ENTRY _ZTV8S19805C7[];
static  VTBL_ENTRY _tg__ZTV8S19805C5__A__8S19805C7[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__8S19805C7[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C5__A1__8S19805C7[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
static  VTT_ENTRY vtt_S19805C7[] = {
  {&(_ZTV8S19805C7[7]),  7,15},
  {&(_tg__ZTV8S19805C5__A__8S19805C7[4]),  4,4},
  {&(_ZTV8S19805C7[15]),  15,15},
  {&(_ZTV8S19805C7[15]),  15,15},
  {&(_tg__ZTV8S19805C8__8S19805C7[6]),  6,6},
  {&(_tg__ZTV8S19805C8__8S19805C7[6]),  6,6},
  {&(_tg__ZTV8S19805C5__A1__8S19805C7[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S19805C7[];
extern  VTBL_ENTRY _ZTV8S19805C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C7[];
Class_Descriptor cd_S19805C7 = {  "S19805C7", // class name
  bases_S19805C7, 10,
  &(vtc_S19805C7[0]), // expected_vtbl_contents
  &(vtt_S19805C7[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S19805C7),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19805C7),15, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19805C7),7, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19805C10  : virtual S7856C12 , virtual S7856C15 , virtual S19805C8 , S7856C24 , S19805C7 {
  virtual  ~S19805C10(); // _ZN9S19805C10D2Ev
  S19805C10(); // tgen
};
//SIG(-1 S19805C10) C1{ VBC2{ m} VBC3{ m} VBC4{ BC2 VBC5{ VBC2 BC3 VBC6{ m}} VBC3} BC6 BC7{ BC3 VBC2 VBC6 BC5 VBC4 vd} vd}


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

static void Test_S19805C10()
{
  extern Class_Descriptor cd_S19805C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S19805C10, buf);
    S19805C10 *dp, &lv = *(dp=new (buf) S19805C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S19805C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19805C10)");
    /*is_ambiguous_... S19805C10::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), 0, "S19805C10");
    /*is_ambiguous_... S19805C10::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C5*), 0, "S19805C10");
    /*is_ambiguous_... S19805C7::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C7*), 0, "S19805C10");
    /*is_ambiguous_... S19805C7::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C5*)(S19805C7*), 0, "S19805C10");
    /*is_ambiguous_... S19805C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(9,5), "S19805C10");
    /*is_ambiguous_... S19805C8::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C8*), ABISELECT(9,5), "S19805C10");
    /*is_ambiguous_... S19805C8::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C8*), ABISELECT(16,8), "S19805C10");
    /*is_ambiguous_... S19805C10::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C5*), ABISELECT(16,8), "S19805C10");
    /*is_ambiguous_... S19805C10::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C5*), ABISELECT(24,12), "S19805C10");
    check_base_class_offset(lv, (S7856C24*)(S19805C7*), ABISELECT(24,12), "S19805C10");
    /*is_ambiguous_... S19805C7::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C5*)(S19805C7*), ABISELECT(24,12), "S19805C10");
    check_base_class_offset(lv, (S19805C5*)(S19805C8*), ABISELECT(16,8), "S19805C10");
    check_base_class_offset(lv, (S19805C8*), ABISELECT(16,8), "S19805C10");
    check_base_class_offset(lv, (S19805C8*)(S19805C7*), ABISELECT(16,8), "S19805C10");
    /*is_ambiguous_... S19805C10::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), 0, "S19805C10");
    /*is_ambiguous_... S19805C7::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C7*), ABISELECT(8,4), "S19805C10");
    /*is_ambiguous_... S19805C7::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C5*)(S19805C7*), 0, "S19805C10");
    /*is_ambiguous_... S19805C7::S19805C5 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C7*), 0, "S19805C10");
    check_base_class_offset(lv, (S19805C7*), 0, "S19805C10");
    test_class_info(&lv, &cd_S19805C10);
    dp->~S19805C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19805C10(Test_S19805C10, "S19805C10", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN9S19805C10C1Ev();
extern void _ZN9S19805C10D2Ev();
Name_Map name_map_S19805C10[] = {
  NSPAIR(_ZN9S19805C10C1Ev),
  NSPAIR(_ZN9S19805C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S19805C8;
extern VTBL_ENTRY _ZTI8S19805C8[];
extern  VTBL_ENTRY _ZTV8S19805C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C8[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S19805C7;
extern VTBL_ENTRY _ZTI8S19805C7[];
extern  VTBL_ENTRY _ZTV8S19805C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C7[];
static Base_Class bases_S19805C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19805C5,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19805C8,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19805C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19805C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19805C10[];
extern void _ZN9S19805C10D1Ev();
extern void _ZN9S19805C10D0Ev();
static  VTBL_ENTRY vtc_S19805C10[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C10[0]),
  (VTBL_ENTRY)&_ZN9S19805C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C10D0Ev,
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19805C10[0]),
};
extern VTBL_ENTRY _ZTV9S19805C10[];
extern void _ZN8S19805C7D1Ev();
extern void _ZN8S19805C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19805C7__9S19805C10[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C7[0]),
  (VTBL_ENTRY)&_ZN8S19805C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19805C7D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19805C58S19805C7__A1__9S19805C10[] = {
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__8S19805C7__9S19805C10[] = {
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19805C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__9S19805C10[] = {
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C5__9S19805C10[] = {
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
static  VTT_ENTRY vtt_S19805C10[] = {
  {&(_ZTV9S19805C10[7]),  7,15},
  {&(_tg__ZTV8S19805C7__9S19805C10[7]),  7,9},
  {&(_tg__ZTV8S19805C58S19805C7__A1__9S19805C10[4]),  4,4},
  {&(_tg__ZTV8S19805C8__8S19805C7__9S19805C10[6]),  6,6},
  {&(_tg__ZTV8S19805C8__8S19805C7__9S19805C10[6]),  6,6},
  {&(_ZTV9S19805C10[15]),  15,15},
  {&(_ZTV9S19805C10[15]),  15,15},
  {&(_tg__ZTV8S19805C8__9S19805C10[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C10[6]),  6,6},
  {&(_tg__ZTV8S19805C5__9S19805C10[4]),  4,4},
};
extern VTBL_ENTRY _ZTI9S19805C10[];
extern  VTBL_ENTRY _ZTV9S19805C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C10[];
Class_Descriptor cd_S19805C10 = {  "S19805C10", // class name
  bases_S19805C10, 12,
  &(vtc_S19805C10[0]), // expected_vtbl_contents
  &(vtt_S19805C10[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI9S19805C10),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19805C10),15, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19805C10),10, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19805C9  : virtual S19805C10 , virtual S19805C3 , virtual S19805C7 {
  int s19805c9f0[2];
  virtual  ~S19805C9(); // _ZN8S19805C9D2Ev
  S19805C9(); // tgen
};
//SIG(-1 S19805C9) C1{ VBC2{ VBC3{ m} VBC4{ m} VBC5{ BC3 VBC6{ VBC3 BC4 VBC7{ m}} VBC4} BC7 BC8{ BC4 VBC3 VBC7 BC6 VBC5 vd} vd} VBC9{ BC7 BC4 BC6 Fi} VBC8 vd Fi[2]}


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

static void Test_S19805C9()
{
  extern Class_Descriptor cd_S19805C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,10)];
    init_test(&cd_S19805C9, buf);
    S19805C9 *dp, &lv = *(dp=new (buf) S19805C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S19805C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19805C9)");
    /*is_ambiguous_... S19805C10::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C10*), ABISELECT(25,17), "S19805C9");
    /*is_ambiguous_... S19805C9::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C5*), ABISELECT(25,17), "S19805C9");
    /*is_ambiguous_... S19805C7::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C7*)(S19805C10*), ABISELECT(25,17), "S19805C9");
    /*is_ambiguous_... S19805C7::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C5*)(S19805C7*)(S19805C10*), ABISELECT(25,17), "S19805C9");
    check_base_class_offset(lv, (S7856C12*)(S19805C5*)(S19805C3*), ABISELECT(25,17), "S19805C9");
    /*is_ambiguous_... S19805C9::S19805C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C7*), ABISELECT(25,17), "S19805C9");
    /*is_ambiguous_... S19805C9::S19805C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C5*)(S19805C7*), ABISELECT(25,17), "S19805C9");
    /*is_ambiguous_... S19805C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C10*), ABISELECT(25,17), "S19805C9");
    /*is_ambiguous_... S19805C8::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C8*), ABISELECT(25,17), "S19805C9");
    /*is_ambiguous_... S19805C8::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C8*), 0, "S19805C9");
    /*is_ambiguous_... S19805C9::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C5*), 0, "S19805C9");
    /*is_ambiguous_... S19805C9::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C5*), 0, "S19805C9");
    check_base_class_offset(lv, (S7856C24*)(S19805C7*)(S19805C10*), 0, "S19805C9");
    /*is_ambiguous_... S19805C7::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C5*)(S19805C7*)(S19805C10*), 0, "S19805C9");
    check_base_class_offset(lv, (S7856C24*)(S19805C5*)(S19805C3*), 0, "S19805C9");
    /*is_ambiguous_... S19805C9::S19805C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C7*), 0, "S19805C9");
    /*is_ambiguous_... S19805C9::S19805C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C5*)(S19805C7*), 0, "S19805C9");
    check_base_class_offset(lv, (S19805C5*)(S19805C8*), 0, "S19805C9");
    check_base_class_offset(lv, (S19805C8*)(S19805C10*), 0, "S19805C9");
    check_base_class_offset(lv, (S19805C8*)(S19805C7*)(S19805C10*), 0, "S19805C9");
    /*is_ambiguous_... S19805C9::S19805C7 */ AMB_check_base_class_offset(lv, (S19805C8*)(S19805C7*), 0, "S19805C9");
    /*is_ambiguous_... S19805C10::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C10*), ABISELECT(16,12), "S19805C9");
    /*is_ambiguous_... S19805C7::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C7*)(S19805C10*), ABISELECT(24,16), "S19805C9");
    /*is_ambiguous_... S19805C7::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C5*)(S19805C7*)(S19805C10*), ABISELECT(16,12), "S19805C9");
    /*is_ambiguous_... S19805C7::S19805C5 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C7*)(S19805C10*), ABISELECT(16,12), "S19805C9");
    check_base_class_offset(lv, (S19805C7*)(S19805C10*), ABISELECT(16,12), "S19805C9");
    check_base_class_offset(lv, (S19805C10*), ABISELECT(16,12), "S19805C9");
    /*is_ambiguous_... S19805C3::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C3*), ABISELECT(32,20), "S19805C9");
    /*is_ambiguous_... S19805C3::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C3*), ABISELECT(40,24), "S19805C9");
    check_base_class_offset(lv, (S7856C15*)(S19805C5*)(S19805C3*), ABISELECT(32,20), "S19805C9");
    check_base_class_offset(lv, (S19805C5*)(S19805C3*), ABISELECT(32,20), "S19805C9");
    check_base_class_offset(lv, (S19805C3*), ABISELECT(32,20), "S19805C9");
    /*is_ambiguous_... S19805C9::S19805C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C7*), ABISELECT(56,32), "S19805C9");
    /*is_ambiguous_... S19805C9::S19805C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C5*)(S19805C7*), ABISELECT(48,28), "S19805C9");
    /*is_ambiguous_... S19805C9::S19805C7 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C7*), ABISELECT(48,28), "S19805C9");
    /*is_ambiguous_... S19805C9::S19805C7 */ AMB_check_base_class_offset(lv, (S19805C7*), ABISELECT(48,28), "S19805C9");
    check_field_offset(lv, s19805c9f0, ABISELECT(8,4), "S19805C9.s19805c9f0");
    test_class_info(&lv, &cd_S19805C9);
    dp->~S19805C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19805C9(Test_S19805C9, "S19805C9", ABISELECT(64,36));

#else // __cplusplus

extern void _ZN8S19805C9C1Ev();
extern void _ZN8S19805C9D2Ev();
Name_Map name_map_S19805C9[] = {
  NSPAIR(_ZN8S19805C9C1Ev),
  NSPAIR(_ZN8S19805C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S19805C8;
extern VTBL_ENTRY _ZTI8S19805C8[];
extern  VTBL_ENTRY _ZTV8S19805C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C8[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S19805C7;
extern VTBL_ENTRY _ZTI8S19805C7[];
extern  VTBL_ENTRY _ZTV8S19805C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C7[];
extern Class_Descriptor cd_S19805C10;
extern VTBL_ENTRY _ZTI9S19805C10[];
extern  VTBL_ENTRY _ZTV9S19805C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C10[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S19805C3;
extern VTBL_ENTRY _ZTI8S19805C3[];
extern  VTBL_ENTRY _ZTV8S19805C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C3[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S19805C7;
extern VTBL_ENTRY _ZTI8S19805C7[];
extern  VTBL_ENTRY _ZTV8S19805C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C7[];
static Base_Class bases_S19805C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C12,    ABISELECT(25,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(25,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19805C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19805C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19805C5,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19805C7,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19805C10,    ABISELECT(16,12), //bcp->offset
    12, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19805C5,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19805C3,    ABISELECT(32,20), //bcp->offset
    22, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19805C5,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19805C7,    ABISELECT(48,28), //bcp->offset
    26, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19805C9[];
extern void _ZN8S19805C9D1Ev();
extern void _ZN8S19805C9D0Ev();
extern void ABISELECT(_ZTv0_n64_N8S19805C9D1Ev,_ZTv0_n32_N8S19805C9D1Ev)();
extern void ABISELECT(_ZThn16_N8S19805C9D1Ev,_ZThn12_N8S19805C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19805C9D0Ev,_ZTv0_n32_N8S19805C9D0Ev)();
extern void ABISELECT(_ZThn16_N8S19805C9D0Ev,_ZThn12_N8S19805C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19805C9D1Ev,_ZTv0_n32_N8S19805C9D1Ev)();
extern void ABISELECT(_ZThn48_N8S19805C9D1Ev,_ZThn28_N8S19805C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19805C9D0Ev,_ZTv0_n32_N8S19805C9D0Ev)();
extern void ABISELECT(_ZThn48_N8S19805C9D0Ev,_ZThn28_N8S19805C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19805C9[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C9[0]),
  (VTBL_ENTRY)&_ZN8S19805C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19805C9D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19805C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19805C9D1Ev,_ZTv0_n32_N8S19805C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19805C9D0Ev,_ZTv0_n32_N8S19805C9D0Ev),
  ABISELECT(-32,-20),
  ABISELECT(-7,-3),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19805C9[0]),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19805C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19805C9D1Ev,_ZTv0_n32_N8S19805C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19805C9D0Ev,_ZTv0_n32_N8S19805C9D0Ev),
};
extern VTBL_ENTRY _ZTV8S19805C9[];
extern void _ZN9S19805C10D1Ev();
extern void _ZN9S19805C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19805C10__8S19805C9[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C10[0]),
  (VTBL_ENTRY)&_ZN9S19805C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C10D0Ev,
};
extern void _ZN8S19805C7D1Ev();
extern void _ZN8S19805C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19805C79S19805C10__8S19805C9[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C7[0]),
  (VTBL_ENTRY)&_ZN8S19805C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19805C7D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19805C58S19805C79S19805C10__A1__8S19805C9[] = {
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__8S19805C79S19805C10__8S19805C9[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S19805C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__9S19805C10__8S19805C9[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S19805C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__8S19805C9[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C5__8S19805C9[] = {
  0,
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C3__8S19805C9[] = {
  ABISELECT(-32,-20),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C58S19805C3__A2__8S19805C9[] = {
  ABISELECT(-32,-20),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
extern void _ZN8S19805C7D1Ev();
extern void _ZN8S19805C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19805C7__A1__8S19805C9[] = {
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C7[0]),
  (VTBL_ENTRY)&_ZN8S19805C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19805C7D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19805C58S19805C7__A3__8S19805C9[] = {
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__8S19805C7__A1__8S19805C9[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S19805C7[0]),
};
static  VTT_ENTRY vtt_S19805C9[] = {
  {&(_ZTV8S19805C9[10]),  10,36},
  {&(_ZTV8S19805C9[20]),  20,36},
  {&(_ZTV8S19805C9[10]),  10,36},
  {&(_ZTV8S19805C9[10]),  10,36},
  {&(_ZTV8S19805C9[26]),  26,36},
  {&(_ZTV8S19805C9[34]),  34,36},
  {&(_tg__ZTV9S19805C10__8S19805C9[7]),  7,9},
  {&(_tg__ZTV8S19805C79S19805C10__8S19805C9[7]),  7,9},
  {&(_tg__ZTV8S19805C58S19805C79S19805C10__A1__8S19805C9[4]),  4,4},
  {&(_tg__ZTV8S19805C8__8S19805C79S19805C10__8S19805C9[6]),  6,6},
  {&(_tg__ZTV8S19805C8__8S19805C79S19805C10__8S19805C9[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C10__8S19805C9[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C10__8S19805C9[6]),  6,6},
  {&(_tg__ZTV8S19805C8__8S19805C9[6]),  6,6},
  {&(_tg__ZTV8S19805C8__8S19805C9[6]),  6,6},
  {&(_tg__ZTV8S19805C5__8S19805C9[4]),  4,4},
  {&(_tg__ZTV8S19805C3__8S19805C9[4]),  4,4},
  {&(_tg__ZTV8S19805C58S19805C3__A2__8S19805C9[4]),  4,4},
  {&(_tg__ZTV8S19805C7__A1__8S19805C9[7]),  7,9},
  {&(_tg__ZTV8S19805C58S19805C7__A3__8S19805C9[4]),  4,4},
  {&(_tg__ZTV8S19805C8__8S19805C7__A1__8S19805C9[6]),  6,6},
  {&(_tg__ZTV8S19805C8__8S19805C7__A1__8S19805C9[6]),  6,6},
};
extern VTBL_ENTRY _ZTI8S19805C9[];
extern  VTBL_ENTRY _ZTV8S19805C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C9[];
static VTBL_ENTRY alt_thunk_names127[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19805C9D0Ev,_ZTv0_n32_N8S19805C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19805C9D0Ev,_ZThn28_N8S19805C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19805C9D0Ev,_ZThn12_N8S19805C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19805C9D1Ev,_ZTv0_n32_N8S19805C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19805C9D1Ev,_ZThn28_N8S19805C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19805C9D1Ev,_ZThn12_N8S19805C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19805C9 = {  "S19805C9", // class name
  bases_S19805C9, 22,
  &(vtc_S19805C9[0]), // expected_vtbl_contents
  &(vtt_S19805C9[0]), // expected_vtt_contents
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI8S19805C9),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19805C9),36, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19805C9),22, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names127,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19805C13  : virtual S7856C15 {
  ~S19805C13(); // tgen
  S19805C13(); // tgen
};
//SIG(-1 S19805C13) C1{ VBC2{ m}}


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

static void Test_S19805C13()
{
  extern Class_Descriptor cd_S19805C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S19805C13, buf);
    S19805C13 *dp, &lv = *(dp=new (buf) S19805C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S19805C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19805C13)");
    check_base_class_offset(lv, (S7856C15*), 0, "S19805C13");
    test_class_info(&lv, &cd_S19805C13);
    dp->~S19805C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19805C13(Test_S19805C13, "S19805C13", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN9S19805C13C1Ev();
extern void _ZN9S19805C13D1Ev();
Name_Map name_map_S19805C13[] = {
  NSPAIR(_ZN9S19805C13C1Ev),
  NSPAIR(_ZN9S19805C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
static Base_Class bases_S19805C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19805C13[];
static  VTBL_ENTRY vtc_S19805C13[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C13[0]),
};
extern VTBL_ENTRY _ZTV9S19805C13[];
static  VTT_ENTRY vtt_S19805C13[] = {
  {&(_ZTV9S19805C13[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19805C13[];
extern  VTBL_ENTRY _ZTV9S19805C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C13[];
Class_Descriptor cd_S19805C13 = {  "S19805C13", // class name
  bases_S19805C13, 1,
  &(vtc_S19805C13[0]), // expected_vtbl_contents
  &(vtt_S19805C13[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI9S19805C13),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19805C13),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19805C13),1, //virtual table table var
  0, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19805C12  : virtual S19805C5 , virtual S19805C13 , virtual S19805C3 , S7856C24 , virtual S19805C10 {
  int s19805c12f0;
  virtual  ~S19805C12(); // _ZN9S19805C12D2Ev
  S19805C12(); // tgen
};
//SIG(-1 S19805C12) C1{ VBC2{ VBC3{ m} BC4{ m} VBC5{ m}} VBC6{ VBC4} VBC7{ BC5 BC4 BC2 Fi} BC5 VBC8{ VBC3 VBC4 VBC9{ BC3 VBC2 VBC4} BC5 BC10{ BC4 VBC3 VBC5 BC2 VBC9 vd} vd} vd Fi}


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

static void Test_S19805C12()
{
  extern Class_Descriptor cd_S19805C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S19805C12, buf);
    S19805C12 *dp, &lv = *(dp=new (buf) S19805C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S19805C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19805C12)");
    /*is_ambiguous_... S19805C12::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C5*), 0, "S19805C12");
    check_base_class_offset(lv, (S7856C12*)(S19805C5*)(S19805C3*), 0, "S19805C12");
    /*is_ambiguous_... S19805C10::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C10*), 0, "S19805C12");
    /*is_ambiguous_... S19805C7::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C7*)(S19805C10*), 0, "S19805C12");
    /*is_ambiguous_... S19805C7::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C5*)(S19805C7*)(S19805C10*), 0, "S19805C12");
    /*is_ambiguous_... S19805C12::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C5*), ABISELECT(48,28), "S19805C12");
    /*is_ambiguous_... S19805C12::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C5*), ABISELECT(12,8), "S19805C12");
    check_base_class_offset(lv, (S7856C24*)(S19805C5*)(S19805C3*), ABISELECT(12,8), "S19805C12");
    check_base_class_offset(lv, (S7856C24*)(S19805C7*)(S19805C10*), ABISELECT(12,8), "S19805C12");
    /*is_ambiguous_... S19805C7::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C5*)(S19805C7*)(S19805C10*), ABISELECT(12,8), "S19805C12");
    /*is_ambiguous_... S19805C12::S19805C5 */ AMB_check_base_class_offset(lv, (S19805C5*), ABISELECT(48,28), "S19805C12");
    check_base_class_offset(lv, (S19805C5*)(S19805C8*), ABISELECT(48,28), "S19805C12");
    check_base_class_offset(lv, (S7856C15*)(S19805C13*), 0, "S19805C12");
    /*is_ambiguous_... S19805C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C10*), 0, "S19805C12");
    /*is_ambiguous_... S19805C8::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C8*), 0, "S19805C12");
    check_base_class_offset(lv, (S19805C13*), 0, "S19805C12");
    /*is_ambiguous_... S19805C3::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C3*), ABISELECT(16,12), "S19805C12");
    /*is_ambiguous_... S19805C3::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C3*), ABISELECT(24,16), "S19805C12");
    check_base_class_offset(lv, (S7856C15*)(S19805C5*)(S19805C3*), ABISELECT(16,12), "S19805C12");
    check_base_class_offset(lv, (S19805C5*)(S19805C3*), ABISELECT(16,12), "S19805C12");
    check_base_class_offset(lv, (S19805C3*), ABISELECT(16,12), "S19805C12");
    /*is_ambiguous_... S19805C12::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), 0, "S19805C12");
    /*is_ambiguous_... S19805C8::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C8*), ABISELECT(48,28), "S19805C12");
    check_base_class_offset(lv, (S19805C8*)(S19805C10*), ABISELECT(48,28), "S19805C12");
    check_base_class_offset(lv, (S19805C8*)(S19805C7*)(S19805C10*), ABISELECT(48,28), "S19805C12");
    /*is_ambiguous_... S19805C10::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C10*), ABISELECT(32,20), "S19805C12");
    /*is_ambiguous_... S19805C7::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C7*)(S19805C10*), ABISELECT(40,24), "S19805C12");
    /*is_ambiguous_... S19805C7::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C5*)(S19805C7*)(S19805C10*), ABISELECT(32,20), "S19805C12");
    /*is_ambiguous_... S19805C7::S19805C5 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C7*)(S19805C10*), ABISELECT(32,20), "S19805C12");
    check_base_class_offset(lv, (S19805C7*)(S19805C10*), ABISELECT(32,20), "S19805C12");
    check_base_class_offset(lv, (S19805C10*), ABISELECT(32,20), "S19805C12");
    check_field_offset(lv, s19805c12f0, ABISELECT(8,4), "S19805C12.s19805c12f0");
    test_class_info(&lv, &cd_S19805C12);
    dp->~S19805C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19805C12(Test_S19805C12, "S19805C12", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN9S19805C12C1Ev();
extern void _ZN9S19805C12D2Ev();
Name_Map name_map_S19805C12[] = {
  NSPAIR(_ZN9S19805C12C1Ev),
  NSPAIR(_ZN9S19805C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C13;
extern VTBL_ENTRY _ZTI9S19805C13[];
extern  VTBL_ENTRY _ZTV9S19805C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C13[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S19805C3;
extern VTBL_ENTRY _ZTI8S19805C3[];
extern  VTBL_ENTRY _ZTV8S19805C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C3[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19805C8;
extern VTBL_ENTRY _ZTI8S19805C8[];
extern  VTBL_ENTRY _ZTV8S19805C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C8[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S19805C7;
extern VTBL_ENTRY _ZTI8S19805C7[];
extern  VTBL_ENTRY _ZTV8S19805C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C7[];
extern Class_Descriptor cd_S19805C10;
extern VTBL_ENTRY _ZTI9S19805C10[];
extern  VTBL_ENTRY _ZTV9S19805C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C10[];
static Base_Class bases_S19805C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19805C5,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19805C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19805C5,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19805C3,    ABISELECT(16,12), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19805C8,    ABISELECT(48,28), //bcp->offset
    26, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19805C5,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19805C7,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19805C10,    ABISELECT(32,20), //bcp->offset
    16, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19805C12[];
extern void _ZN9S19805C12D1Ev();
extern void _ZN9S19805C12D0Ev();
extern void ABISELECT(_ZTv0_n64_N9S19805C12D1Ev,_ZTv0_n32_N9S19805C12D1Ev)();
extern void ABISELECT(_ZThn32_N9S19805C12D1Ev,_ZThn20_N9S19805C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19805C12D0Ev,_ZTv0_n32_N9S19805C12D0Ev)();
extern void ABISELECT(_ZThn32_N9S19805C12D0Ev,_ZThn20_N9S19805C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19805C12[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  ABISELECT(12,8),
  0,
  ABISELECT(48,28),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C12[0]),
  (VTBL_ENTRY)&_ZN9S19805C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C12D0Ev,
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19805C12[0]),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S19805C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C12D1Ev,_ZTv0_n32_N9S19805C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C12D0Ev,_ZTv0_n32_N9S19805C12D0Ev),
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19805C12[0]),
};
extern VTBL_ENTRY _ZTV9S19805C12[];
static  VTBL_ENTRY _tg__ZTV8S19805C5__9S19805C12[] = {
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19805C13__9S19805C12[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C3__9S19805C12[] = {
  -4,
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C58S19805C3__A1__9S19805C12[] = {
  -4,
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
extern void _ZN9S19805C10D1Ev();
extern void _ZN9S19805C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19805C10__9S19805C12[] = {
  ABISELECT(-32,-20),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C10[0]),
  (VTBL_ENTRY)&_ZN9S19805C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C10D0Ev,
};
extern void _ZN8S19805C7D1Ev();
extern void _ZN8S19805C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19805C79S19805C10__9S19805C12[] = {
  ABISELECT(-32,-20),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C7[0]),
  (VTBL_ENTRY)&_ZN8S19805C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19805C7D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19805C58S19805C79S19805C10__A2__9S19805C12[] = {
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__8S19805C79S19805C10__9S19805C12[] = {
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19805C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__9S19805C10__9S19805C12[] = {
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19805C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__9S19805C12[] = {
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C8[0]),
};
static  VTT_ENTRY vtt_S19805C12[] = {
  {&(_ZTV9S19805C12[10]),  10,32},
  {&(_ZTV9S19805C12[32]),  32,32},
  {&(_ZTV9S19805C12[10]),  10,32},
  {&(_ZTV9S19805C12[16]),  16,32},
  {&(_ZTV9S19805C12[24]),  24,32},
  {&(_ZTV9S19805C12[32]),  32,32},
  {&(_tg__ZTV8S19805C5__9S19805C12[4]),  4,4},
  {&(_tg__ZTV9S19805C13__9S19805C12[3]),  3,3},
  {&(_tg__ZTV8S19805C3__9S19805C12[4]),  4,4},
  {&(_tg__ZTV8S19805C58S19805C3__A1__9S19805C12[4]),  4,4},
  {&(_tg__ZTV9S19805C10__9S19805C12[7]),  7,9},
  {&(_tg__ZTV8S19805C79S19805C10__9S19805C12[7]),  7,9},
  {&(_tg__ZTV8S19805C58S19805C79S19805C10__A2__9S19805C12[4]),  4,4},
  {&(_tg__ZTV8S19805C8__8S19805C79S19805C10__9S19805C12[6]),  6,6},
  {&(_tg__ZTV8S19805C8__8S19805C79S19805C10__9S19805C12[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C10__9S19805C12[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C10__9S19805C12[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C12[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C12[6]),  6,6},
};
extern VTBL_ENTRY _ZTI9S19805C12[];
extern  VTBL_ENTRY _ZTV9S19805C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C12[];
static VTBL_ENTRY alt_thunk_names128[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C12D0Ev,_ZTv0_n32_N9S19805C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19805C12D0Ev,_ZThn20_N9S19805C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C12D1Ev,_ZTv0_n32_N9S19805C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19805C12D1Ev,_ZThn20_N9S19805C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19805C12 = {  "S19805C12", // class name
  bases_S19805C12, 20,
  &(vtc_S19805C12[0]), // expected_vtbl_contents
  &(vtt_S19805C12[0]), // expected_vtt_contents
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI9S19805C12),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19805C12),32, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19805C12),19, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names128,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19805C18  : virtual S19805C7 , S19805C3 , S19805C8 , S7856C24 {
  virtual  ~S19805C18(); // _ZN9S19805C18D2Ev
  S19805C18(); // tgen
};
//SIG(-1 S19805C18) C1{ VBC2{ BC3{ m} VBC4{ m} VBC5{ m} BC6{ VBC4 BC3 VBC5} VBC7{ BC4 VBC6 VBC3} vd} BC8{ BC5 BC3 BC6 Fi} BC7 BC5 vd}


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

static void Test_S19805C18()
{
  extern Class_Descriptor cd_S19805C18;
  void *lvp;
  {
    ABISELECT(double,int) buf[8];
    init_test(&cd_S19805C18, buf);
    S19805C18 *dp, &lv = *(dp=new (buf) S19805C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,28), "sizeof(S19805C18)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19805C18)");
    /*is_ambiguous_... S19805C7::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C7*), ABISELECT(32,16), "S19805C18");
    /*is_ambiguous_... S19805C7::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C7*), 0, "S19805C18");
    /*is_ambiguous_... S19805C7::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C5*)(S19805C7*), 0, "S19805C18");
    /*is_ambiguous_... S19805C18::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C5*), 0, "S19805C18");
    check_base_class_offset(lv, (S7856C12*)(S19805C5*)(S19805C3*), 0, "S19805C18");
    check_base_class_offset(lv, (S7856C24*)(S19805C7*), ABISELECT(33,17), "S19805C18");
    /*is_ambiguous_... S19805C7::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C5*)(S19805C7*), ABISELECT(33,17), "S19805C18");
    /*is_ambiguous_... S19805C18::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C5*), ABISELECT(33,17), "S19805C18");
    check_base_class_offset(lv, (S7856C24*)(S19805C5*)(S19805C3*), ABISELECT(33,17), "S19805C18");
    /*is_ambiguous_... S19805C7::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C5*)(S19805C7*), ABISELECT(24,12), "S19805C18");
    /*is_ambiguous_... S19805C7::S19805C5 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C7*), ABISELECT(24,12), "S19805C18");
    /*is_ambiguous_... S19805C18::S19805C8 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C8*), ABISELECT(40,20), "S19805C18");
    /*is_ambiguous_... S19805C18::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C5*), ABISELECT(40,20), "S19805C18");
    /*is_ambiguous_... S19805C18::S19805C8 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C8*), ABISELECT(40,20), "S19805C18");
    /*is_ambiguous_... S19805C18::S19805C8 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C8*), ABISELECT(40,20), "S19805C18");
    /*is_ambiguous_... S19805C18::S19805C8 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C8*), ABISELECT(48,24), "S19805C18");
    /*is_ambiguous_... S19805C18::S19805C8 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C8*), ABISELECT(48,24), "S19805C18");
    check_base_class_offset(lv, (S19805C8*)(S19805C7*), ABISELECT(40,20), "S19805C18");
    check_base_class_offset(lv, (S19805C7*), ABISELECT(24,12), "S19805C18");
    /*is_ambiguous_... S19805C3::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C3*), 0, "S19805C18");
    /*is_ambiguous_... S19805C3::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C3*), ABISELECT(8,4), "S19805C18");
    check_base_class_offset(lv, (S7856C15*)(S19805C5*)(S19805C3*), 0, "S19805C18");
    check_base_class_offset(lv, (S19805C5*)(S19805C3*), 0, "S19805C18");
    check_base_class_offset(lv, (S19805C3*), 0, "S19805C18");
    /*is_ambiguous_... S19805C18::S19805C8 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C8*), ABISELECT(16,8), "S19805C18");
    /*is_ambiguous_... S19805C18::S19805C8 */ AMB_check_base_class_offset(lv, (S19805C8*), ABISELECT(16,8), "S19805C18");
    /*is_ambiguous_... S19805C18::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), ABISELECT(24,12), "S19805C18");
    test_class_info(&lv, &cd_S19805C18);
    dp->~S19805C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19805C18(Test_S19805C18, "S19805C18", ABISELECT(56,28));

#else // __cplusplus

extern void _ZN9S19805C18C1Ev();
extern void _ZN9S19805C18D2Ev();
Name_Map name_map_S19805C18[] = {
  NSPAIR(_ZN9S19805C18C1Ev),
  NSPAIR(_ZN9S19805C18D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C8;
extern VTBL_ENTRY _ZTI8S19805C8[];
extern  VTBL_ENTRY _ZTV8S19805C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C8[];
extern Class_Descriptor cd_S19805C7;
extern VTBL_ENTRY _ZTI8S19805C7[];
extern  VTBL_ENTRY _ZTV8S19805C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C7[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S19805C3;
extern VTBL_ENTRY _ZTI8S19805C3[];
extern  VTBL_ENTRY _ZTV8S19805C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C3[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19805C8;
extern VTBL_ENTRY _ZTI8S19805C8[];
extern  VTBL_ENTRY _ZTV8S19805C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C8[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
static Base_Class bases_S19805C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(33,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19805C5,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19805C5,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19805C8,    ABISELECT(40,20), //bcp->offset
    26, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19805C7,    ABISELECT(24,12), //bcp->offset
    16, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19805C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19805C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19805C8,    ABISELECT(16,8), //bcp->offset
    10, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19805C18[];
extern void _ZN9S19805C18D1Ev();
extern void _ZN9S19805C18D0Ev();
extern void ABISELECT(_ZTv0_n64_N9S19805C18D1Ev,_ZTv0_n32_N9S19805C18D1Ev)();
extern void ABISELECT(_ZThn24_N9S19805C18D1Ev,_ZThn12_N9S19805C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19805C18D0Ev,_ZTv0_n32_N9S19805C18D0Ev)();
extern void ABISELECT(_ZThn24_N9S19805C18D0Ev,_ZThn12_N9S19805C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19805C18[] = {
  ABISELECT(48,24),
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(24,12),
  ABISELECT(33,17),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C18[0]),
  (VTBL_ENTRY)&_ZN9S19805C18D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C18D0Ev,
  ABISELECT(32,16),
  ABISELECT(24,12),
  ABISELECT(17,9),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19805C18[0]),
  ABISELECT(-24,-12),
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(9,5),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19805C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C18D1Ev,_ZTv0_n32_N9S19805C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C18D0Ev,_ZTv0_n32_N9S19805C18D0Ev),
  ABISELECT(8,4),
  0,
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19805C18[0]),
};
extern VTBL_ENTRY _ZTV9S19805C18[];
static  VTBL_ENTRY _tg__ZTV8S19805C3__9S19805C18[] = {
  ABISELECT(33,17),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C58S19805C3__A2__9S19805C18[] = {
  ABISELECT(33,17),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__A__9S19805C18[] = {
  ABISELECT(32,16),
  ABISELECT(24,12),
  ABISELECT(17,9),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C5__8S19805C8__A__9S19805C18[] = {
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19805C8[0]),
};
extern void _ZN8S19805C7D1Ev();
extern void _ZN8S19805C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19805C7__9S19805C18[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(9,5),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C7[0]),
  (VTBL_ENTRY)&_ZN8S19805C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19805C7D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19805C58S19805C7__9S19805C18[] = {
  ABISELECT(9,5),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__8S19805C7__9S19805C18[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19805C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__9S19805C18[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C5__A1__9S19805C18[] = {
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
static  VTT_ENTRY vtt_S19805C18[] = {
  {&(_ZTV9S19805C18[8]),  8,32},
  {&(_tg__ZTV8S19805C3__9S19805C18[4]),  4,4},
  {&(_tg__ZTV8S19805C58S19805C3__A2__9S19805C18[4]),  4,4},
  {&(_tg__ZTV8S19805C8__A__9S19805C18[6]),  6,6},
  {&(_tg__ZTV8S19805C5__8S19805C8__A__9S19805C18[4]),  4,4},
  {&(_ZTV9S19805C18[24]),  24,32},
  {&(_ZTV9S19805C18[32]),  32,32},
  {&(_ZTV9S19805C18[32]),  32,32},
  {&(_ZTV9S19805C18[16]),  16,32},
  {&(_tg__ZTV8S19805C7__9S19805C18[7]),  7,9},
  {&(_tg__ZTV8S19805C58S19805C7__9S19805C18[4]),  4,4},
  {&(_tg__ZTV8S19805C8__8S19805C7__9S19805C18[6]),  6,6},
  {&(_tg__ZTV8S19805C8__8S19805C7__9S19805C18[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C18[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C18[6]),  6,6},
  {&(_tg__ZTV8S19805C5__A1__9S19805C18[4]),  4,4},
};
extern VTBL_ENTRY _ZTI9S19805C18[];
extern  VTBL_ENTRY _ZTV9S19805C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C18[];
static VTBL_ENTRY alt_thunk_names129[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C18D0Ev,_ZTv0_n32_N9S19805C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19805C18D0Ev,_ZThn12_N9S19805C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C18D1Ev,_ZTv0_n32_N9S19805C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19805C18D1Ev,_ZThn12_N9S19805C18D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19805C18 = {  "S19805C18", // class name
  bases_S19805C18, 19,
  &(vtc_S19805C18[0]), // expected_vtbl_contents
  &(vtt_S19805C18[0]), // expected_vtt_contents
  ABISELECT(56,28), // object size
  NSPAIRA(_ZTI9S19805C18),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19805C18),32, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19805C18),16, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names129,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19805C16  : virtual S19805C9 , virtual S7856C9_nt , virtual S19805C12 , S19805C18 {
  virtual  ~S19805C16(); // _ZN9S19805C16D2Ev
  S19805C16(); // tgen
};
//SIG(-1 S19805C16) C1{ VBC2{ VBC3{ VBC4{ m} VBC5{ m} VBC6{ BC4 VBC7{ VBC4 BC5 VBC8{ m}} VBC5} BC8 BC9{ BC5 VBC4 VBC8 BC7 VBC6 vd} vd} VBC10{ BC8 BC5 BC7 Fi} VBC9 vd Fi[2]} VBC11{ m} VBC12{ VBC7 VBC13{ VBC5} VBC10 BC8 VBC3 vd Fi} BC14{ VBC9 BC10 BC6 BC8 vd} vd}


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

static void Test_S19805C16()
{
  extern Class_Descriptor cd_S19805C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,16)];
    init_test(&cd_S19805C16, buf);
    S19805C16 *dp, &lv = *(dp=new (buf) S19805C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,60), "sizeof(S19805C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19805C16)");
    /*is_ambiguous_... S19805C10::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C10*), 0, "S19805C16");
    /*is_ambiguous_... S19805C16::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C5*), 0, "S19805C16");
    /*is_ambiguous_... S19805C7::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C7*)(S19805C10*), 0, "S19805C16");
    /*is_ambiguous_... S19805C7::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C5*)(S19805C7*)(S19805C10*), 0, "S19805C16");
    /*is_ambiguous_... S19805C16::S19805C3 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C5*)(S19805C3*), 0, "S19805C16");
    /*is_ambiguous_... S19805C16::S19805C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C7*), 0, "S19805C16");
    /*is_ambiguous_... S19805C16::S19805C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C5*)(S19805C7*), 0, "S19805C16");
    check_base_class_offset(lv, (S7856C12*)(S19805C5*)(S19805C3*)(S19805C18*), 0, "S19805C16");
    /*is_ambiguous_... S19805C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C10*), ABISELECT(57,33), "S19805C16");
    /*is_ambiguous_... S19805C16::S19805C8 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C8*), ABISELECT(57,33), "S19805C16");
    check_base_class_offset(lv, (S7856C15*)(S19805C13*), ABISELECT(57,33), "S19805C16");
    /*is_ambiguous_... S19805C18::S19805C8 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C8*)(S19805C18*), ABISELECT(57,33), "S19805C16");
    /*is_ambiguous_... S19805C16::S19805C8 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C8*), ABISELECT(32,16), "S19805C16");
    /*is_ambiguous_... S19805C16::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C5*), ABISELECT(32,16), "S19805C16");
    /*is_ambiguous_... S19805C16::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C5*), ABISELECT(57,33), "S19805C16");
    check_base_class_offset(lv, (S7856C24*)(S19805C7*)(S19805C10*), ABISELECT(57,33), "S19805C16");
    /*is_ambiguous_... S19805C7::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C5*)(S19805C7*)(S19805C10*), ABISELECT(57,33), "S19805C16");
    /*is_ambiguous_... S19805C16::S19805C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C5*)(S19805C3*), ABISELECT(57,33), "S19805C16");
    /*is_ambiguous_... S19805C16::S19805C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C7*), ABISELECT(57,33), "S19805C16");
    /*is_ambiguous_... S19805C16::S19805C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C5*)(S19805C7*), ABISELECT(57,33), "S19805C16");
    check_base_class_offset(lv, (S7856C24*)(S19805C5*)(S19805C3*)(S19805C18*), ABISELECT(57,33), "S19805C16");
    /*is_ambiguous_... S19805C16::S19805C8 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C8*), ABISELECT(32,16), "S19805C16");
    /*is_ambiguous_... S19805C12::S19805C5 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C12*), ABISELECT(32,16), "S19805C16");
    /*is_ambiguous_... S19805C18::S19805C8 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C8*)(S19805C18*), ABISELECT(32,16), "S19805C16");
    check_base_class_offset(lv, (S19805C8*)(S19805C10*), ABISELECT(32,16), "S19805C16");
    check_base_class_offset(lv, (S19805C8*)(S19805C7*)(S19805C10*), ABISELECT(32,16), "S19805C16");
    /*is_ambiguous_... S19805C16::S19805C7 */ AMB_check_base_class_offset(lv, (S19805C8*)(S19805C7*), ABISELECT(32,16), "S19805C16");
    /*is_ambiguous_... S19805C10::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C10*), ABISELECT(48,28), "S19805C16");
    /*is_ambiguous_... S19805C7::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C7*)(S19805C10*), ABISELECT(56,32), "S19805C16");
    /*is_ambiguous_... S19805C7::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C5*)(S19805C7*)(S19805C10*), ABISELECT(48,28), "S19805C16");
    /*is_ambiguous_... S19805C7::S19805C5 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C7*)(S19805C10*), ABISELECT(48,28), "S19805C16");
    check_base_class_offset(lv, (S19805C7*)(S19805C10*), ABISELECT(48,28), "S19805C16");
    check_base_class_offset(lv, (S19805C10*)(S19805C9*), ABISELECT(48,28), "S19805C16");
    check_base_class_offset(lv, (S19805C10*)(S19805C12*), ABISELECT(48,28), "S19805C16");
    /*is_ambiguous_... S19805C16::S19805C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C3*), ABISELECT(64,36), "S19805C16");
    /*is_ambiguous_... S19805C16::S19805C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C3*), ABISELECT(72,40), "S19805C16");
    /*is_ambiguous_... S19805C16::S19805C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C5*)(S19805C3*), ABISELECT(64,36), "S19805C16");
    /*is_ambiguous_... S19805C16::S19805C3 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C3*), ABISELECT(64,36), "S19805C16");
    check_base_class_offset(lv, (S19805C3*)(S19805C9*), ABISELECT(64,36), "S19805C16");
    check_base_class_offset(lv, (S19805C3*)(S19805C12*), ABISELECT(64,36), "S19805C16");
    /*is_ambiguous_... S19805C16::S19805C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C7*), ABISELECT(88,48), "S19805C16");
    /*is_ambiguous_... S19805C16::S19805C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C5*)(S19805C7*), ABISELECT(80,44), "S19805C16");
    /*is_ambiguous_... S19805C16::S19805C7 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C7*), ABISELECT(80,44), "S19805C16");
    /*is_ambiguous_... S19805C9::S19805C7 */ AMB_check_base_class_offset(lv, (S19805C7*)(S19805C9*), ABISELECT(80,44), "S19805C16");
    check_base_class_offset(lv, (S19805C7*)(S19805C18*), ABISELECT(80,44), "S19805C16");
    check_base_class_offset(lv, (S19805C9*), ABISELECT(32,16), "S19805C16");
    check_base_class_offset(lv, (S7856C9_nt*), 0, "S19805C16");
    check_base_class_offset(lv, (S19805C13*)(S19805C12*), ABISELECT(96,52), "S19805C16");
    /*is_ambiguous_... S19805C12::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C12*), ABISELECT(96,52), "S19805C16");
    check_base_class_offset(lv, (S19805C12*), ABISELECT(96,52), "S19805C16");
    /*is_ambiguous_... S19805C3::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C3*)(S19805C18*), 0, "S19805C16");
    /*is_ambiguous_... S19805C3::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C3*)(S19805C18*), ABISELECT(8,4), "S19805C16");
    check_base_class_offset(lv, (S7856C15*)(S19805C5*)(S19805C3*)(S19805C18*), 0, "S19805C16");
    check_base_class_offset(lv, (S19805C5*)(S19805C3*)(S19805C18*), 0, "S19805C16");
    check_base_class_offset(lv, (S19805C3*)(S19805C18*), 0, "S19805C16");
    /*is_ambiguous_... S19805C18::S19805C8 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C8*)(S19805C18*), ABISELECT(16,8), "S19805C16");
    /*is_ambiguous_... S19805C18::S19805C8 */ AMB_check_base_class_offset(lv, (S19805C8*)(S19805C18*), ABISELECT(16,8), "S19805C16");
    /*is_ambiguous_... S19805C18::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C18*), ABISELECT(24,12), "S19805C16");
    check_base_class_offset(lv, (S19805C18*), 0, "S19805C16");
    test_class_info(&lv, &cd_S19805C16);
    dp->~S19805C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19805C16(Test_S19805C16, "S19805C16", ABISELECT(112,60));

#else // __cplusplus

extern void _ZN9S19805C16C1Ev();
extern void _ZN9S19805C16D2Ev();
Name_Map name_map_S19805C16[] = {
  NSPAIR(_ZN9S19805C16C1Ev),
  NSPAIR(_ZN9S19805C16D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S19805C8;
extern VTBL_ENTRY _ZTI8S19805C8[];
extern  VTBL_ENTRY _ZTV8S19805C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C8[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S19805C7;
extern VTBL_ENTRY _ZTI8S19805C7[];
extern  VTBL_ENTRY _ZTV8S19805C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C7[];
extern Class_Descriptor cd_S19805C10;
extern VTBL_ENTRY _ZTI9S19805C10[];
extern  VTBL_ENTRY _ZTV9S19805C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C10[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S19805C3;
extern VTBL_ENTRY _ZTI8S19805C3[];
extern  VTBL_ENTRY _ZTV8S19805C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C3[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S19805C7;
extern VTBL_ENTRY _ZTI8S19805C7[];
extern  VTBL_ENTRY _ZTV8S19805C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C7[];
extern Class_Descriptor cd_S19805C9;
extern VTBL_ENTRY _ZTI8S19805C9[];
extern  VTBL_ENTRY _ZTV8S19805C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C9[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S19805C13;
extern VTBL_ENTRY _ZTI9S19805C13[];
extern  VTBL_ENTRY _ZTV9S19805C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C13[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19805C12;
extern VTBL_ENTRY _ZTI9S19805C12[];
extern  VTBL_ENTRY _ZTV9S19805C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S19805C3;
extern VTBL_ENTRY _ZTI8S19805C3[];
extern  VTBL_ENTRY _ZTV8S19805C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C3[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19805C8;
extern VTBL_ENTRY _ZTI8S19805C8[];
extern  VTBL_ENTRY _ZTV8S19805C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C8[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19805C18;
extern VTBL_ENTRY _ZTI9S19805C18[];
extern  VTBL_ENTRY _ZTV9S19805C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C18[];
static Base_Class bases_S19805C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(57,33), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(57,33), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19805C5,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19805C8,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19805C5,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19805C7,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19805C10,    ABISELECT(48,28), //bcp->offset
    35, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19805C5,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19805C3,    ABISELECT(64,36), //bcp->offset
    45, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19805C5,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19805C7,    ABISELECT(80,44), //bcp->offset
    49, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S19805C9,    ABISELECT(32,16), //bcp->offset
    22, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19805C13,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19805C12,    ABISELECT(96,52), //bcp->offset
    59, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S19805C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19805C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S19805C8,    ABISELECT(16,8), //bcp->offset
    16, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S19805C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19805C16[];
extern void _ZN9S19805C16D1Ev();
extern void _ZN9S19805C16D0Ev();
extern void ABISELECT(_ZTv0_n88_N9S19805C16D1Ev,_ZTv0_n44_N9S19805C16D1Ev)();
extern void ABISELECT(_ZThn32_N9S19805C16D1Ev,_ZThn16_N9S19805C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19805C16D0Ev,_ZTv0_n44_N9S19805C16D0Ev)();
extern void ABISELECT(_ZThn32_N9S19805C16D0Ev,_ZThn16_N9S19805C16D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19805C16D1Ev,_ZTv0_n32_N9S19805C16D1Ev)();
extern void ABISELECT(_ZThn48_N9S19805C16D1Ev,_ZThn28_N9S19805C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19805C16D0Ev,_ZTv0_n32_N9S19805C16D0Ev)();
extern void ABISELECT(_ZThn48_N9S19805C16D0Ev,_ZThn28_N9S19805C16D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19805C16D1Ev,_ZTv0_n32_N9S19805C16D1Ev)();
extern void ABISELECT(_ZThn80_N9S19805C16D1Ev,_ZThn44_N9S19805C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19805C16D0Ev,_ZTv0_n32_N9S19805C16D0Ev)();
extern void ABISELECT(_ZThn80_N9S19805C16D0Ev,_ZThn44_N9S19805C16D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19805C16D1Ev,_ZTv0_n44_N9S19805C16D1Ev)();
extern void ABISELECT(_ZThn96_N9S19805C16D1Ev,_ZThn52_N9S19805C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19805C16D0Ev,_ZTv0_n44_N9S19805C16D0Ev)();
extern void ABISELECT(_ZThn96_N9S19805C16D0Ev,_ZThn52_N9S19805C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19805C16[] = {
  ABISELECT(96,52),
  ABISELECT(96,52),
  0,
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(57,33),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
  (VTBL_ENTRY)&_ZN9S19805C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C16D0Ev,
  ABISELECT(41,25),
  ABISELECT(16,8),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
  ABISELECT(-32,-16),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C16D1Ev,_ZTv0_n44_N9S19805C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C16D0Ev,_ZTv0_n44_N9S19805C16D0Ev),
  ABISELECT(-48,-28),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C16D1Ev,_ZTv0_n32_N9S19805C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C16D0Ev,_ZTv0_n32_N9S19805C16D0Ev),
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
  ABISELECT(-80,-44),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C16D1Ev,_ZTv0_n32_N9S19805C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C16D0Ev,_ZTv0_n32_N9S19805C16D0Ev),
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-39,-19),
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-39,-19),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C16D1Ev,_ZTv0_n44_N9S19805C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C16D0Ev,_ZTv0_n44_N9S19805C16D0Ev),
};
extern VTBL_ENTRY _ZTV9S19805C16[];
extern void _ZN9S19805C18D1Ev();
extern void _ZN9S19805C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19805C18__9S19805C16[] = {
  ABISELECT(57,33),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C18[0]),
  (VTBL_ENTRY)&_ZN9S19805C18D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19805C39S19805C18__A1__9S19805C16[] = {
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C58S19805C39S19805C18__A4__9S19805C16[] = {
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C89S19805C18__A1__9S19805C16[] = {
  ABISELECT(41,25),
  ABISELECT(16,8),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C5__8S19805C89S19805C18__A1__9S19805C16[] = {
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19805C8[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19805C18D1Ev,_ZTv0_n32_N9S19805C18D1Ev)();
extern void ABISELECT(_ZThn80_N9S19805C18D1Ev,_ZThn44_N9S19805C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19805C18D0Ev,_ZTv0_n32_N9S19805C18D0Ev)();
extern void ABISELECT(_ZThn80_N9S19805C18D0Ev,_ZThn44_N9S19805C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19805C7__9S19805C18__9S19805C16[] = {
  ABISELECT(-80,-44),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S19805C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C18D1Ev,_ZTv0_n32_N9S19805C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C18D0Ev,_ZTv0_n32_N9S19805C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__9S19805C18__9S19805C16[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19805C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__A__9S19805C18__9S19805C16[] = {
  ABISELECT(41,25),
  ABISELECT(16,8),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19805C18[0]),
};
extern void _ZN8S19805C9D1Ev();
extern void _ZN8S19805C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19805C9__9S19805C16[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C9[0]),
  (VTBL_ENTRY)&_ZN8S19805C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19805C9D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N8S19805C9D1Ev,_ZTv0_n32_N8S19805C9D1Ev)();
extern void ABISELECT(_ZThn16_N8S19805C9D1Ev,_ZThn12_N8S19805C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19805C9D0Ev,_ZTv0_n32_N8S19805C9D0Ev)();
extern void ABISELECT(_ZThn16_N8S19805C9D0Ev,_ZThn12_N8S19805C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19805C10__8S19805C9__9S19805C16[] = {
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19805C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19805C9D1Ev,_ZTv0_n32_N8S19805C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19805C9D0Ev,_ZTv0_n32_N8S19805C9D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19805C3__8S19805C9__9S19805C16[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19805C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S19805C9D1Ev,_ZTv0_n32_N8S19805C9D1Ev)();
extern void ABISELECT(_ZThn48_N8S19805C9D1Ev,_ZThn28_N8S19805C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19805C9D0Ev,_ZTv0_n32_N8S19805C9D0Ev)();
extern void ABISELECT(_ZThn48_N8S19805C9D0Ev,_ZThn28_N8S19805C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19805C7__A1__8S19805C9__9S19805C16[] = {
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19805C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19805C9D1Ev,_ZTv0_n32_N8S19805C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19805C9D0Ev,_ZTv0_n32_N8S19805C9D0Ev),
};
extern void _ZN9S19805C10D1Ev();
extern void _ZN9S19805C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19805C10__9S19805C16[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C10[0]),
  (VTBL_ENTRY)&_ZN9S19805C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C10D0Ev,
};
extern void _ZN8S19805C7D1Ev();
extern void _ZN8S19805C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19805C79S19805C10__9S19805C16[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C7[0]),
  (VTBL_ENTRY)&_ZN8S19805C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19805C7D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19805C58S19805C79S19805C10__A1__9S19805C16[] = {
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__8S19805C79S19805C10__9S19805C16[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S19805C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__9S19805C10__9S19805C16[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S19805C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__9S19805C16[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C5__9S19805C16[] = {
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C3__9S19805C16[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C58S19805C3__A2__9S19805C16[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
extern void _ZN8S19805C7D1Ev();
extern void _ZN8S19805C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19805C7__A1__9S19805C16[] = {
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C7[0]),
  (VTBL_ENTRY)&_ZN8S19805C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19805C7D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19805C58S19805C7__A3__9S19805C16[] = {
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__8S19805C7__A1__9S19805C16[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S19805C7[0]),
};
extern void _ZN9S19805C12D1Ev();
extern void _ZN9S19805C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19805C12__9S19805C16[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-39,-19),
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-39,-19),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C12[0]),
  (VTBL_ENTRY)&_ZN9S19805C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__9S19805C12__9S19805C16[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI9S19805C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C3__9S19805C12__9S19805C16[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S19805C12[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19805C12D1Ev,_ZTv0_n32_N9S19805C12D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19805C12D0Ev,_ZTv0_n32_N9S19805C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19805C10__9S19805C12__9S19805C16[] = {
  ABISELECT(48,24),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI9S19805C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C12D1Ev,_ZTv0_n32_N9S19805C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C12D0Ev,_ZTv0_n32_N9S19805C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19805C13__9S19805C16[] = {
  ABISELECT(-39,-19),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C13[0]),
};
static  VTT_ENTRY vtt_S19805C16[] = {
  {&(_ZTV9S19805C16[14]),  14,72},
  {&(_tg__ZTV9S19805C18__9S19805C16[8]),  8,10},
  {&(_tg__ZTV8S19805C39S19805C18__A1__9S19805C16[4]),  4,4},
  {&(_tg__ZTV8S19805C58S19805C39S19805C18__A4__9S19805C16[4]),  4,4},
  {&(_tg__ZTV8S19805C89S19805C18__A1__9S19805C16[6]),  6,6},
  {&(_tg__ZTV8S19805C5__8S19805C89S19805C18__A1__9S19805C16[4]),  4,4},
  {&(_tg__ZTV8S19805C7__9S19805C18__9S19805C16[8]),  8,10},
  {&(_tg__ZTV8S19805C8__9S19805C18__9S19805C16[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C18__9S19805C16[6]),  6,6},
  {&(_tg__ZTV8S19805C8__A__9S19805C18__9S19805C16[6]),  6,6},
  {&(_ZTV9S19805C16[33]),  33,72},
  {&(_ZTV9S19805C16[43]),  43,72},
  {&(_ZTV9S19805C16[33]),  33,72},
  {&(_ZTV9S19805C16[33]),  33,72},
  {&(_ZTV9S19805C16[49]),  49,72},
  {&(_ZTV9S19805C16[57]),  57,72},
  {&(_ZTV9S19805C16[70]),  70,72},
  {&(_ZTV9S19805C16[70]),  70,72},
  {&(_ZTV9S19805C16[22]),  22,72},
  {&(_tg__ZTV8S19805C9__9S19805C16[10]),  10,12},
  {&(_tg__ZTV9S19805C10__8S19805C9__9S19805C16[8]),  8,10},
  {&(_tg__ZTV8S19805C9__9S19805C16[10]),  10,12},
  {&(_tg__ZTV8S19805C9__9S19805C16[10]),  10,12},
  {&(_tg__ZTV8S19805C3__8S19805C9__9S19805C16[4]),  4,4},
  {&(_tg__ZTV8S19805C7__A1__8S19805C9__9S19805C16[8]),  8,10},
  {&(_tg__ZTV9S19805C10__9S19805C16[7]),  7,9},
  {&(_tg__ZTV8S19805C79S19805C10__9S19805C16[7]),  7,9},
  {&(_tg__ZTV8S19805C58S19805C79S19805C10__A1__9S19805C16[4]),  4,4},
  {&(_tg__ZTV8S19805C8__8S19805C79S19805C10__9S19805C16[6]),  6,6},
  {&(_tg__ZTV8S19805C8__8S19805C79S19805C10__9S19805C16[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C10__9S19805C16[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C10__9S19805C16[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C16[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C16[6]),  6,6},
  {&(_tg__ZTV8S19805C5__9S19805C16[4]),  4,4},
  {&(_tg__ZTV8S19805C3__9S19805C16[4]),  4,4},
  {&(_tg__ZTV8S19805C58S19805C3__A2__9S19805C16[4]),  4,4},
  {&(_tg__ZTV8S19805C7__A1__9S19805C16[7]),  7,9},
  {&(_tg__ZTV8S19805C58S19805C7__A3__9S19805C16[4]),  4,4},
  {&(_tg__ZTV8S19805C8__8S19805C7__A1__9S19805C16[6]),  6,6},
  {&(_tg__ZTV8S19805C8__8S19805C7__A1__9S19805C16[6]),  6,6},
  {&(_tg__ZTV9S19805C12__9S19805C16[10]),  10,12},
  {&(_tg__ZTV8S19805C8__9S19805C12__9S19805C16[6]),  6,6},
  {&(_tg__ZTV9S19805C12__9S19805C16[10]),  10,12},
  {&(_tg__ZTV8S19805C3__9S19805C12__9S19805C16[4]),  4,4},
  {&(_tg__ZTV9S19805C10__9S19805C12__9S19805C16[8]),  8,10},
  {&(_tg__ZTV8S19805C8__9S19805C12__9S19805C16[6]),  6,6},
  {&(_tg__ZTV9S19805C13__9S19805C16[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19805C16[];
extern  VTBL_ENTRY _ZTV9S19805C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C16[];
static VTBL_ENTRY alt_thunk_names130[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19805C9D0Ev,_ZTv0_n32_N8S19805C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19805C9D0Ev,_ZThn28_N8S19805C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19805C9D0Ev,_ZThn12_N8S19805C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19805C9D1Ev,_ZTv0_n32_N8S19805C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19805C9D1Ev,_ZThn28_N8S19805C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19805C9D1Ev,_ZThn12_N8S19805C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C18D0Ev,_ZTv0_n32_N9S19805C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19805C18D0Ev,_ZThn44_N9S19805C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C18D1Ev,_ZTv0_n32_N9S19805C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19805C18D1Ev,_ZThn44_N9S19805C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C16D0Ev,_ZTv0_n32_N9S19805C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19805C16D0Ev,_ZThn44_N9S19805C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19805C16D0Ev,_ZThn28_N9S19805C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C16D1Ev,_ZTv0_n32_N9S19805C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19805C16D1Ev,_ZThn44_N9S19805C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19805C16D1Ev,_ZThn28_N9S19805C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19805C16D0Ev,_ZTv0_n44_N9S19805C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19805C16D0Ev,_ZThn52_N9S19805C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19805C16D0Ev,_ZThn16_N9S19805C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19805C16D1Ev,_ZTv0_n44_N9S19805C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19805C16D1Ev,_ZThn52_N9S19805C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19805C16D1Ev,_ZThn16_N9S19805C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19805C16 = {  "S19805C16", // class name
  bases_S19805C16, 36,
  &(vtc_S19805C16[0]), // expected_vtbl_contents
  &(vtt_S19805C16[0]), // expected_vtt_contents
  ABISELECT(112,60), // object size
  NSPAIRA(_ZTI9S19805C16),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19805C16),72, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19805C16),48, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names130,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19805C15  : virtual S19805C10 , virtual S19805C16 {
  virtual  ~S19805C15(); // _ZN9S19805C15D2Ev
  S19805C15(); // tgen
};
//SIG(-1 S19805C15) C1{ VBC2{ VBC3{ m} VBC4{ m} VBC5{ BC3 VBC6{ VBC3 BC4 VBC7{ m}} VBC4} BC7 BC8{ BC4 VBC3 VBC7 BC6 VBC5 vd} vd} VBC9{ VBC10{ VBC2 VBC11{ BC7 BC4 BC6 Fi} VBC8 vd Fi[2]} VBC12{ m} VBC13{ VBC6 VBC14{ VBC4} VBC11 BC7 VBC2 vd Fi} BC15{ VBC8 BC11 BC5 BC7 vd} vd} vd}


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

static void Test_S19805C15()
{
  extern Class_Descriptor cd_S19805C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,17)];
    init_test(&cd_S19805C15, buf);
    S19805C15 *dp, &lv = *(dp=new (buf) S19805C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,64), "sizeof(S19805C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19805C15)");
    /*is_ambiguous_... S19805C10::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C10*), ABISELECT(17,9), "S19805C15");
    /*is_ambiguous_... S19805C15::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C5*), ABISELECT(17,9), "S19805C15");
    /*is_ambiguous_... S19805C7::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C7*)(S19805C10*), ABISELECT(17,9), "S19805C15");
    /*is_ambiguous_... S19805C7::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C5*)(S19805C7*)(S19805C10*), ABISELECT(17,9), "S19805C15");
    /*is_ambiguous_... S19805C15::S19805C3 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C5*)(S19805C3*), ABISELECT(17,9), "S19805C15");
    /*is_ambiguous_... S19805C15::S19805C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C7*), ABISELECT(17,9), "S19805C15");
    /*is_ambiguous_... S19805C15::S19805C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C5*)(S19805C7*), ABISELECT(17,9), "S19805C15");
    check_base_class_offset(lv, (S7856C12*)(S19805C5*)(S19805C3*)(S19805C18*)(S19805C16*), ABISELECT(17,9), "S19805C15");
    /*is_ambiguous_... S19805C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C10*), ABISELECT(17,9), "S19805C15");
    /*is_ambiguous_... S19805C15::S19805C8 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C8*), ABISELECT(17,9), "S19805C15");
    check_base_class_offset(lv, (S7856C15*)(S19805C13*), ABISELECT(17,9), "S19805C15");
    /*is_ambiguous_... S19805C18::S19805C8 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C8*)(S19805C18*)(S19805C16*), ABISELECT(17,9), "S19805C15");
    /*is_ambiguous_... S19805C15::S19805C8 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C8*), 0, "S19805C15");
    /*is_ambiguous_... S19805C15::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C5*), 0, "S19805C15");
    /*is_ambiguous_... S19805C15::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C5*), 0, "S19805C15");
    check_base_class_offset(lv, (S7856C24*)(S19805C7*)(S19805C10*), 0, "S19805C15");
    /*is_ambiguous_... S19805C7::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C5*)(S19805C7*)(S19805C10*), 0, "S19805C15");
    /*is_ambiguous_... S19805C15::S19805C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C5*)(S19805C3*), 0, "S19805C15");
    /*is_ambiguous_... S19805C15::S19805C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C7*), 0, "S19805C15");
    /*is_ambiguous_... S19805C15::S19805C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C5*)(S19805C7*), 0, "S19805C15");
    check_base_class_offset(lv, (S7856C24*)(S19805C5*)(S19805C3*)(S19805C18*)(S19805C16*), 0, "S19805C15");
    /*is_ambiguous_... S19805C15::S19805C8 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C8*), 0, "S19805C15");
    /*is_ambiguous_... S19805C12::S19805C5 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C12*), 0, "S19805C15");
    /*is_ambiguous_... S19805C18::S19805C8 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C8*)(S19805C18*)(S19805C16*), 0, "S19805C15");
    check_base_class_offset(lv, (S19805C8*)(S19805C10*), 0, "S19805C15");
    check_base_class_offset(lv, (S19805C8*)(S19805C7*)(S19805C10*), 0, "S19805C15");
    /*is_ambiguous_... S19805C15::S19805C7 */ AMB_check_base_class_offset(lv, (S19805C8*)(S19805C7*), 0, "S19805C15");
    /*is_ambiguous_... S19805C10::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C10*), ABISELECT(8,4), "S19805C15");
    /*is_ambiguous_... S19805C7::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C7*)(S19805C10*), ABISELECT(16,8), "S19805C15");
    /*is_ambiguous_... S19805C7::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C5*)(S19805C7*)(S19805C10*), ABISELECT(8,4), "S19805C15");
    /*is_ambiguous_... S19805C7::S19805C5 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C7*)(S19805C10*), ABISELECT(8,4), "S19805C15");
    check_base_class_offset(lv, (S19805C7*)(S19805C10*), ABISELECT(8,4), "S19805C15");
    check_base_class_offset(lv, (S19805C10*), ABISELECT(8,4), "S19805C15");
    check_base_class_offset(lv, (S19805C10*)(S19805C9*), ABISELECT(8,4), "S19805C15");
    check_base_class_offset(lv, (S19805C10*)(S19805C12*), ABISELECT(8,4), "S19805C15");
    /*is_ambiguous_... S19805C15::S19805C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C3*), ABISELECT(72,40), "S19805C15");
    /*is_ambiguous_... S19805C15::S19805C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C3*), ABISELECT(80,44), "S19805C15");
    /*is_ambiguous_... S19805C15::S19805C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C5*)(S19805C3*), ABISELECT(72,40), "S19805C15");
    /*is_ambiguous_... S19805C15::S19805C3 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C3*), ABISELECT(72,40), "S19805C15");
    check_base_class_offset(lv, (S19805C3*)(S19805C9*), ABISELECT(72,40), "S19805C15");
    check_base_class_offset(lv, (S19805C3*)(S19805C12*), ABISELECT(72,40), "S19805C15");
    /*is_ambiguous_... S19805C15::S19805C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C7*), ABISELECT(96,52), "S19805C15");
    /*is_ambiguous_... S19805C15::S19805C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C5*)(S19805C7*), ABISELECT(88,48), "S19805C15");
    /*is_ambiguous_... S19805C15::S19805C7 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C7*), ABISELECT(88,48), "S19805C15");
    /*is_ambiguous_... S19805C9::S19805C7 */ AMB_check_base_class_offset(lv, (S19805C7*)(S19805C9*), ABISELECT(88,48), "S19805C15");
    check_base_class_offset(lv, (S19805C7*)(S19805C18*)(S19805C16*), ABISELECT(88,48), "S19805C15");
    check_base_class_offset(lv, (S19805C9*)(S19805C16*), ABISELECT(56,28), "S19805C15");
    check_base_class_offset(lv, (S7856C9_nt*)(S19805C16*), 0, "S19805C15");
    check_base_class_offset(lv, (S19805C13*)(S19805C12*), ABISELECT(104,56), "S19805C15");
    /*is_ambiguous_... S19805C12::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C12*), ABISELECT(104,56), "S19805C15");
    check_base_class_offset(lv, (S19805C12*)(S19805C16*), ABISELECT(104,56), "S19805C15");
    /*is_ambiguous_... S19805C3::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C3*)(S19805C18*)(S19805C16*), ABISELECT(24,12), "S19805C15");
    /*is_ambiguous_... S19805C3::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C3*)(S19805C18*)(S19805C16*), ABISELECT(32,16), "S19805C15");
    check_base_class_offset(lv, (S7856C15*)(S19805C5*)(S19805C3*)(S19805C18*)(S19805C16*), ABISELECT(24,12), "S19805C15");
    check_base_class_offset(lv, (S19805C5*)(S19805C3*)(S19805C18*)(S19805C16*), ABISELECT(24,12), "S19805C15");
    check_base_class_offset(lv, (S19805C3*)(S19805C18*)(S19805C16*), ABISELECT(24,12), "S19805C15");
    /*is_ambiguous_... S19805C18::S19805C8 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C8*)(S19805C18*)(S19805C16*), ABISELECT(40,20), "S19805C15");
    /*is_ambiguous_... S19805C18::S19805C8 */ AMB_check_base_class_offset(lv, (S19805C8*)(S19805C18*)(S19805C16*), ABISELECT(40,20), "S19805C15");
    /*is_ambiguous_... S19805C18::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C18*)(S19805C16*), ABISELECT(48,24), "S19805C15");
    check_base_class_offset(lv, (S19805C18*)(S19805C16*), ABISELECT(24,12), "S19805C15");
    check_base_class_offset(lv, (S19805C16*), ABISELECT(24,12), "S19805C15");
    test_class_info(&lv, &cd_S19805C15);
    dp->~S19805C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19805C15(Test_S19805C15, "S19805C15", ABISELECT(120,64));

#else // __cplusplus

extern void _ZN9S19805C15C1Ev();
extern void _ZN9S19805C15D2Ev();
Name_Map name_map_S19805C15[] = {
  NSPAIR(_ZN9S19805C15C1Ev),
  NSPAIR(_ZN9S19805C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S19805C8;
extern VTBL_ENTRY _ZTI8S19805C8[];
extern  VTBL_ENTRY _ZTV8S19805C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C8[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S19805C7;
extern VTBL_ENTRY _ZTI8S19805C7[];
extern  VTBL_ENTRY _ZTV8S19805C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C7[];
extern Class_Descriptor cd_S19805C10;
extern VTBL_ENTRY _ZTI9S19805C10[];
extern  VTBL_ENTRY _ZTV9S19805C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C10[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S19805C3;
extern VTBL_ENTRY _ZTI8S19805C3[];
extern  VTBL_ENTRY _ZTV8S19805C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C3[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S19805C7;
extern VTBL_ENTRY _ZTI8S19805C7[];
extern  VTBL_ENTRY _ZTV8S19805C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C7[];
extern Class_Descriptor cd_S19805C9;
extern VTBL_ENTRY _ZTI8S19805C9[];
extern  VTBL_ENTRY _ZTV8S19805C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C9[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S19805C13;
extern VTBL_ENTRY _ZTI9S19805C13[];
extern  VTBL_ENTRY _ZTV9S19805C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C13[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19805C12;
extern VTBL_ENTRY _ZTI9S19805C12[];
extern  VTBL_ENTRY _ZTV9S19805C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S19805C3;
extern VTBL_ENTRY _ZTI8S19805C3[];
extern  VTBL_ENTRY _ZTV8S19805C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C3[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19805C8;
extern VTBL_ENTRY _ZTI8S19805C8[];
extern  VTBL_ENTRY _ZTV8S19805C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C8[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19805C18;
extern VTBL_ENTRY _ZTI9S19805C18[];
extern  VTBL_ENTRY _ZTV9S19805C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C18[];
extern Class_Descriptor cd_S19805C16;
extern VTBL_ENTRY _ZTI9S19805C16[];
extern  VTBL_ENTRY _ZTV9S19805C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C16[];
static Base_Class bases_S19805C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C12,    ABISELECT(17,9), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(17,9), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19805C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19805C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19805C5,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19805C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19805C10,    ABISELECT(8,4), //bcp->offset
    17, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19805C5,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19805C3,    ABISELECT(72,40), //bcp->offset
    63, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19805C5,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19805C7,    ABISELECT(88,48), //bcp->offset
    67, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S19805C9,    ABISELECT(56,28), //bcp->offset
    50, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S19805C13,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19805C12,    ABISELECT(104,56), //bcp->offset
    77, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S19805C5,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19805C3,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S19805C8,    ABISELECT(40,20), //bcp->offset
    44, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S19805C18,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S19805C16,    ABISELECT(24,12), //bcp->offset
    27, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19805C15[];
extern void _ZN9S19805C15D1Ev();
extern void _ZN9S19805C15D0Ev();
extern void ABISELECT(_ZTv0_n64_N9S19805C15D1Ev,_ZTv0_n32_N9S19805C15D1Ev)();
extern void ABISELECT(_ZThn8_N9S19805C15D1Ev,_ZThn4_N9S19805C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19805C15D0Ev,_ZTv0_n32_N9S19805C15D0Ev)();
extern void ABISELECT(_ZThn8_N9S19805C15D0Ev,_ZThn4_N9S19805C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N9S19805C15D1Ev,_ZTv0_n60_N9S19805C15D1Ev)();
extern void ABISELECT(_ZThn24_N9S19805C15D1Ev,_ZThn12_N9S19805C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N9S19805C15D0Ev,_ZTv0_n60_N9S19805C15D0Ev)();
extern void ABISELECT(_ZThn24_N9S19805C15D0Ev,_ZThn12_N9S19805C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19805C15D1Ev,_ZTv0_n44_N9S19805C15D1Ev)();
extern void ABISELECT(_ZThn56_N9S19805C15D1Ev,_ZThn28_N9S19805C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19805C15D0Ev,_ZTv0_n44_N9S19805C15D0Ev)();
extern void ABISELECT(_ZThn56_N9S19805C15D0Ev,_ZThn28_N9S19805C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19805C15D1Ev,_ZTv0_n32_N9S19805C15D1Ev)();
extern void ABISELECT(_ZThn88_N9S19805C15D1Ev,_ZThn48_N9S19805C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19805C15D0Ev,_ZTv0_n32_N9S19805C15D0Ev)();
extern void ABISELECT(_ZThn88_N9S19805C15D0Ev,_ZThn48_N9S19805C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19805C15D1Ev,_ZTv0_n44_N9S19805C15D1Ev)();
extern void ABISELECT(_ZThn104_N9S19805C15D1Ev,_ZThn56_N9S19805C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19805C15D0Ev,_ZTv0_n44_N9S19805C15D0Ev)();
extern void ABISELECT(_ZThn104_N9S19805C15D0Ev,_ZThn56_N9S19805C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19805C15[] = {
  ABISELECT(104,56),
  ABISELECT(104,56),
  0,
  ABISELECT(88,48),
  ABISELECT(72,40),
  ABISELECT(56,28),
  ABISELECT(24,12),
  0,
  ABISELECT(8,4),
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C15[0]),
  (VTBL_ENTRY)&_ZN9S19805C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C15D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19805C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C15D1Ev,_ZTv0_n32_N9S19805C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C15D0Ev,_ZTv0_n32_N9S19805C15D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(80,44),
  ABISELECT(80,44),
  ABISELECT(-24,-12),
  ABISELECT(48,28),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(-7,-3),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(64,36),
  ABISELECT(-24,-12),
  ABISELECT(-7,-3),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19805C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19805C15D1Ev,_ZTv0_n60_N9S19805C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19805C15D0Ev,_ZTv0_n60_N9S19805C15D0Ev),
  ABISELECT(-23,-11),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-23,-11),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19805C15[0]),
  ABISELECT(-56,-28),
  ABISELECT(32,20),
  ABISELECT(16,12),
  ABISELECT(-56,-28),
  ABISELECT(-48,-24),
  ABISELECT(-39,-19),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-39,-19),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S19805C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C15D1Ev,_ZTv0_n44_N9S19805C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C15D0Ev,_ZTv0_n44_N9S19805C15D0Ev),
  ABISELECT(-72,-40),
  ABISELECT(-55,-31),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S19805C15[0]),
  ABISELECT(-88,-48),
  ABISELECT(-71,-39),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-71,-39),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI9S19805C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C15D1Ev,_ZTv0_n32_N9S19805C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C15D0Ev,_ZTv0_n32_N9S19805C15D0Ev),
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  ABISELECT(-96,-52),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-104,-56),
  ABISELECT(-87,-47),
  ABISELECT(-104,-56),
  ABISELECT(-87,-47),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI9S19805C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C15D1Ev,_ZTv0_n44_N9S19805C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C15D0Ev,_ZTv0_n44_N9S19805C15D0Ev),
};
extern VTBL_ENTRY _ZTV9S19805C15[];
extern void _ZN9S19805C10D1Ev();
extern void _ZN9S19805C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19805C10__9S19805C15[] = {
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C10[0]),
  (VTBL_ENTRY)&_ZN9S19805C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C10D0Ev,
};
extern void _ZN8S19805C7D1Ev();
extern void _ZN8S19805C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19805C79S19805C10__9S19805C15[] = {
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C7[0]),
  (VTBL_ENTRY)&_ZN8S19805C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19805C7D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19805C58S19805C79S19805C10__A1__9S19805C15[] = {
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__8S19805C79S19805C10__9S19805C15[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S19805C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__9S19805C10__9S19805C15[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI9S19805C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__9S19805C15[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C5__9S19805C15[] = {
  0,
  ABISELECT(17,9),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
extern void _ZN9S19805C16D1Ev();
extern void _ZN9S19805C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19805C16__9S19805C15[] = {
  ABISELECT(80,44),
  ABISELECT(80,44),
  ABISELECT(-24,-12),
  ABISELECT(48,28),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(-7,-3),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(64,36),
  ABISELECT(-24,-12),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
  (VTBL_ENTRY)&_ZN9S19805C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C16D0Ev,
};
extern void _ZN9S19805C18D1Ev();
extern void _ZN9S19805C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19805C189S19805C16__9S19805C15[] = {
  ABISELECT(-7,-3),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(64,36),
  ABISELECT(-24,-12),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C18[0]),
  (VTBL_ENTRY)&_ZN9S19805C18D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19805C39S19805C189S19805C16__A1__9S19805C15[] = {
  ABISELECT(-24,-12),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C58S19805C39S19805C189S19805C16__A4__9S19805C15[] = {
  ABISELECT(-24,-12),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C89S19805C189S19805C16__A1__9S19805C15[] = {
  ABISELECT(-23,-11),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C5__8S19805C89S19805C189S19805C16__A1__9S19805C15[] = {
  0,
  ABISELECT(17,9),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S19805C8[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19805C18D1Ev,_ZTv0_n32_N9S19805C18D1Ev)();
extern void ABISELECT(_ZThn64_N9S19805C18D1Ev,_ZThn36_N9S19805C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19805C18D0Ev,_ZTv0_n32_N9S19805C18D0Ev)();
extern void ABISELECT(_ZThn64_N9S19805C18D0Ev,_ZThn36_N9S19805C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19805C7__9S19805C189S19805C16__9S19805C15[] = {
  ABISELECT(-64,-36),
  ABISELECT(-71,-39),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-71,-39),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S19805C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C18D1Ev,_ZTv0_n32_N9S19805C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C18D0Ev,_ZTv0_n32_N9S19805C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__9S19805C189S19805C16__9S19805C15[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S19805C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__A__9S19805C189S19805C16__9S19805C15[] = {
  ABISELECT(-23,-11),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-23,-11),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19805C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N9S19805C16D1Ev,_ZTv0_n44_N9S19805C16D1Ev)();
extern void ABISELECT(_ZThn32_N9S19805C16D1Ev,_ZThn16_N9S19805C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19805C16D0Ev,_ZTv0_n44_N9S19805C16D0Ev)();
extern void ABISELECT(_ZThn32_N9S19805C16D0Ev,_ZThn16_N9S19805C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19805C9__9S19805C16__9S19805C15[] = {
  ABISELECT(-32,-16),
  ABISELECT(32,20),
  ABISELECT(16,12),
  ABISELECT(-56,-28),
  ABISELECT(-48,-24),
  ABISELECT(-39,-19),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-39,-19),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C16D1Ev,_ZTv0_n44_N9S19805C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C16D0Ev,_ZTv0_n44_N9S19805C16D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N9S19805C16D1Ev,_ZTv0_n32_N9S19805C16D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19805C16D0Ev,_ZTv0_n32_N9S19805C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19805C10__9S19805C16__9S19805C15[] = {
  ABISELECT(16,8),
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C16D1Ev,_ZTv0_n32_N9S19805C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C16D0Ev,_ZTv0_n32_N9S19805C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__9S19805C16__9S19805C15[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C3__9S19805C16__9S19805C15[] = {
  ABISELECT(-72,-40),
  ABISELECT(-55,-31),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19805C16D1Ev,_ZTv0_n32_N9S19805C16D1Ev)();
extern void ABISELECT(_ZThn64_N9S19805C16D1Ev,_ZThn36_N9S19805C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19805C16D0Ev,_ZTv0_n32_N9S19805C16D0Ev)();
extern void ABISELECT(_ZThn64_N9S19805C16D0Ev,_ZThn36_N9S19805C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19805C7__A1__9S19805C16__9S19805C15[] = {
  ABISELECT(-64,-36),
  ABISELECT(-71,-39),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-71,-39),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C16D1Ev,_ZTv0_n32_N9S19805C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C16D0Ev,_ZTv0_n32_N9S19805C16D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N9S19805C16D1Ev,_ZTv0_n44_N9S19805C16D1Ev)();
extern void ABISELECT(_ZThn80_N9S19805C16D1Ev,_ZThn44_N9S19805C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19805C16D0Ev,_ZTv0_n44_N9S19805C16D0Ev)();
extern void ABISELECT(_ZThn80_N9S19805C16D0Ev,_ZThn44_N9S19805C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19805C12__9S19805C16__9S19805C15[] = {
  ABISELECT(-80,-44),
  ABISELECT(-104,-56),
  ABISELECT(-96,-52),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-104,-56),
  ABISELECT(-87,-47),
  ABISELECT(-104,-56),
  ABISELECT(-87,-47),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C16D1Ev,_ZTv0_n44_N9S19805C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C16D0Ev,_ZTv0_n44_N9S19805C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19805C89S19805C18__A1__9S19805C16__9S19805C15[] = {
  ABISELECT(-23,-11),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-23,-11),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
};
extern void _ZN8S19805C9D1Ev();
extern void _ZN8S19805C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19805C9__9S19805C15[] = {
  ABISELECT(32,20),
  ABISELECT(16,12),
  ABISELECT(-56,-28),
  ABISELECT(-48,-24),
  ABISELECT(-39,-19),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-39,-19),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C9[0]),
  (VTBL_ENTRY)&_ZN8S19805C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19805C9D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N8S19805C9D1Ev,_ZTv0_n32_N8S19805C9D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S19805C9D0Ev,_ZTv0_n32_N8S19805C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19805C10__8S19805C9__9S19805C15[] = {
  ABISELECT(48,24),
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S19805C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19805C9D1Ev,_ZTv0_n32_N8S19805C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19805C9D0Ev,_ZTv0_n32_N8S19805C9D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__8S19805C9__9S19805C15[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI8S19805C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C3__8S19805C9__9S19805C15[] = {
  ABISELECT(-72,-40),
  ABISELECT(-55,-31),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19805C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S19805C9D1Ev,_ZTv0_n32_N8S19805C9D1Ev)();
extern void ABISELECT(_ZThn32_N8S19805C9D1Ev,_ZThn20_N8S19805C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19805C9D0Ev,_ZTv0_n32_N8S19805C9D0Ev)();
extern void ABISELECT(_ZThn32_N8S19805C9D0Ev,_ZThn20_N8S19805C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19805C7__A1__8S19805C9__9S19805C15[] = {
  ABISELECT(-32,-20),
  ABISELECT(-71,-39),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-71,-39),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19805C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19805C9D1Ev,_ZTv0_n32_N8S19805C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19805C9D0Ev,_ZTv0_n32_N8S19805C9D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19805C3__9S19805C15[] = {
  ABISELECT(-72,-40),
  ABISELECT(-55,-31),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C58S19805C3__A2__9S19805C15[] = {
  ABISELECT(-72,-40),
  ABISELECT(-55,-31),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
extern void _ZN8S19805C7D1Ev();
extern void _ZN8S19805C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19805C7__A1__9S19805C15[] = {
  ABISELECT(-71,-39),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-71,-39),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C7[0]),
  (VTBL_ENTRY)&_ZN8S19805C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19805C7D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19805C58S19805C7__A3__9S19805C15[] = {
  ABISELECT(-88,-48),
  ABISELECT(-71,-39),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__8S19805C7__A1__9S19805C15[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI8S19805C7[0]),
};
extern void _ZN9S19805C12D1Ev();
extern void _ZN9S19805C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19805C12__9S19805C15[] = {
  ABISELECT(-104,-56),
  ABISELECT(-96,-52),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-104,-56),
  ABISELECT(-87,-47),
  ABISELECT(-104,-56),
  ABISELECT(-87,-47),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C12[0]),
  (VTBL_ENTRY)&_ZN9S19805C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__9S19805C12__9S19805C15[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  ABISELECT(104,56),
  (VTBL_ENTRY)&(_ZTI9S19805C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C3__9S19805C12__9S19805C15[] = {
  ABISELECT(-72,-40),
  ABISELECT(-55,-31),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S19805C12[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19805C12D1Ev,_ZTv0_n32_N9S19805C12D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19805C12D0Ev,_ZTv0_n32_N9S19805C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19805C10__9S19805C12__9S19805C15[] = {
  ABISELECT(96,52),
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  ABISELECT(96,52),
  (VTBL_ENTRY)&(_ZTI9S19805C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C12D1Ev,_ZTv0_n32_N9S19805C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C12D0Ev,_ZTv0_n32_N9S19805C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19805C13__9S19805C15[] = {
  ABISELECT(-87,-47),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C13[0]),
};
static  VTT_ENTRY vtt_S19805C15[] = {
  {&(_ZTV9S19805C15[15]),  15,90},
  {&(_ZTV9S19805C15[25]),  25,90},
  {&(_ZTV9S19805C15[15]),  15,90},
  {&(_ZTV9S19805C15[15]),  15,90},
  {&(_ZTV9S19805C15[42]),  42,90},
  {&(_ZTV9S19805C15[61]),  61,90},
  {&(_ZTV9S19805C15[67]),  67,90},
  {&(_ZTV9S19805C15[75]),  75,90},
  {&(_ZTV9S19805C15[88]),  88,90},
  {&(_ZTV9S19805C15[88]),  88,90},
  {&(_ZTV9S19805C15[50]),  50,90},
  {&(_tg__ZTV9S19805C10__9S19805C15[7]),  7,9},
  {&(_tg__ZTV8S19805C79S19805C10__9S19805C15[7]),  7,9},
  {&(_tg__ZTV8S19805C58S19805C79S19805C10__A1__9S19805C15[4]),  4,4},
  {&(_tg__ZTV8S19805C8__8S19805C79S19805C10__9S19805C15[6]),  6,6},
  {&(_tg__ZTV8S19805C8__8S19805C79S19805C10__9S19805C15[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C10__9S19805C15[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C10__9S19805C15[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C15[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C15[6]),  6,6},
  {&(_tg__ZTV8S19805C5__9S19805C15[4]),  4,4},
  {&(_tg__ZTV9S19805C16__9S19805C15[14]),  14,16},
  {&(_tg__ZTV9S19805C189S19805C16__9S19805C15[8]),  8,10},
  {&(_tg__ZTV8S19805C39S19805C189S19805C16__A1__9S19805C15[4]),  4,4},
  {&(_tg__ZTV8S19805C58S19805C39S19805C189S19805C16__A4__9S19805C15[4]),  4,4},
  {&(_tg__ZTV8S19805C89S19805C189S19805C16__A1__9S19805C15[6]),  6,6},
  {&(_tg__ZTV8S19805C5__8S19805C89S19805C189S19805C16__A1__9S19805C15[4]),  4,4},
  {&(_tg__ZTV8S19805C7__9S19805C189S19805C16__9S19805C15[8]),  8,10},
  {&(_tg__ZTV8S19805C8__9S19805C189S19805C16__9S19805C15[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C189S19805C16__9S19805C15[6]),  6,6},
  {&(_tg__ZTV8S19805C8__A__9S19805C189S19805C16__9S19805C15[6]),  6,6},
  {&(_tg__ZTV8S19805C9__9S19805C16__9S19805C15[11]),  11,13},
  {&(_tg__ZTV9S19805C10__9S19805C16__9S19805C15[8]),  8,10},
  {&(_tg__ZTV8S19805C8__9S19805C16__9S19805C15[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C16__9S19805C15[6]),  6,6},
  {&(_tg__ZTV8S19805C3__9S19805C16__9S19805C15[4]),  4,4},
  {&(_tg__ZTV8S19805C7__A1__9S19805C16__9S19805C15[8]),  8,10},
  {&(_tg__ZTV9S19805C12__9S19805C16__9S19805C15[11]),  11,13},
  {&(_tg__ZTV9S19805C12__9S19805C16__9S19805C15[11]),  11,13},
  {&(_tg__ZTV8S19805C89S19805C18__A1__9S19805C16__9S19805C15[6]),  6,6},
  {&(_tg__ZTV8S19805C9__9S19805C15[10]),  10,12},
  {&(_tg__ZTV9S19805C10__8S19805C9__9S19805C15[8]),  8,10},
  {&(_tg__ZTV8S19805C8__8S19805C9__9S19805C15[6]),  6,6},
  {&(_tg__ZTV8S19805C8__8S19805C9__9S19805C15[6]),  6,6},
  {&(_tg__ZTV8S19805C3__8S19805C9__9S19805C15[4]),  4,4},
  {&(_tg__ZTV8S19805C7__A1__8S19805C9__9S19805C15[8]),  8,10},
  {&(_tg__ZTV8S19805C3__9S19805C15[4]),  4,4},
  {&(_tg__ZTV8S19805C58S19805C3__A2__9S19805C15[4]),  4,4},
  {&(_tg__ZTV8S19805C7__A1__9S19805C15[7]),  7,9},
  {&(_tg__ZTV8S19805C58S19805C7__A3__9S19805C15[4]),  4,4},
  {&(_tg__ZTV8S19805C8__8S19805C7__A1__9S19805C15[6]),  6,6},
  {&(_tg__ZTV8S19805C8__8S19805C7__A1__9S19805C15[6]),  6,6},
  {&(_tg__ZTV9S19805C12__9S19805C15[10]),  10,12},
  {&(_tg__ZTV8S19805C8__9S19805C12__9S19805C15[6]),  6,6},
  {&(_tg__ZTV9S19805C12__9S19805C15[10]),  10,12},
  {&(_tg__ZTV8S19805C3__9S19805C12__9S19805C15[4]),  4,4},
  {&(_tg__ZTV9S19805C10__9S19805C12__9S19805C15[8]),  8,10},
  {&(_tg__ZTV8S19805C8__9S19805C12__9S19805C15[6]),  6,6},
  {&(_tg__ZTV9S19805C13__9S19805C15[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19805C15[];
extern  VTBL_ENTRY _ZTV9S19805C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C15[];
static VTBL_ENTRY alt_thunk_names131[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19805C9D0Ev,_ZTv0_n32_N8S19805C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19805C9D0Ev,_ZThn20_N8S19805C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19805C9D1Ev,_ZTv0_n32_N8S19805C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19805C9D1Ev,_ZThn20_N8S19805C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C16D0Ev,_ZTv0_n32_N9S19805C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19805C16D0Ev,_ZThn36_N9S19805C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C16D1Ev,_ZTv0_n32_N9S19805C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19805C16D1Ev,_ZThn36_N9S19805C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19805C16D0Ev,_ZTv0_n44_N9S19805C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19805C16D0Ev,_ZThn44_N9S19805C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19805C16D0Ev,_ZThn16_N9S19805C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19805C16D1Ev,_ZTv0_n44_N9S19805C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19805C16D1Ev,_ZThn44_N9S19805C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19805C16D1Ev,_ZThn16_N9S19805C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C18D0Ev,_ZTv0_n32_N9S19805C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19805C18D0Ev,_ZThn36_N9S19805C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C18D1Ev,_ZTv0_n32_N9S19805C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19805C18D1Ev,_ZThn36_N9S19805C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19805C15D0Ev,_ZTv0_n44_N9S19805C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19805C15D0Ev,_ZThn56_N9S19805C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19805C15D0Ev,_ZThn28_N9S19805C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19805C15D1Ev,_ZTv0_n44_N9S19805C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19805C15D1Ev,_ZThn56_N9S19805C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19805C15D1Ev,_ZThn28_N9S19805C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19805C15D0Ev,_ZTv0_n60_N9S19805C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19805C15D0Ev,_ZThn12_N9S19805C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19805C15D1Ev,_ZTv0_n60_N9S19805C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19805C15D1Ev,_ZThn12_N9S19805C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C15D0Ev,_ZTv0_n32_N9S19805C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19805C15D0Ev,_ZThn48_N9S19805C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19805C15D0Ev,_ZThn4_N9S19805C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C15D1Ev,_ZTv0_n32_N9S19805C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19805C15D1Ev,_ZThn48_N9S19805C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19805C15D1Ev,_ZThn4_N9S19805C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19805C15 = {  "S19805C15", // class name
  bases_S19805C15, 37,
  &(vtc_S19805C15[0]), // expected_vtbl_contents
  &(vtt_S19805C15[0]), // expected_vtt_contents
  ABISELECT(120,64), // object size
  NSPAIRA(_ZTI9S19805C15),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19805C15),90, //virtual function table var
  15, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19805C15),59, //virtual table table var
  17, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names131,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19805C19  : S7856C15 , S19805C13 {
  virtual  ~S19805C19(); // _ZN9S19805C19D2Ev
  S19805C19(); // tgen
};
//SIG(-1 S19805C19) C1{ BC2{ m} BC3{ VBC2} vd}


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

static void Test_S19805C19()
{
  extern Class_Descriptor cd_S19805C19;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19805C19, buf);
    S19805C19 *dp, &lv = *(dp=new (buf) S19805C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19805C19)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19805C19)");
    /*is_ambiguous_... S19805C19::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), 0, "S19805C19");
    check_base_class_offset(lv, (S7856C15*)(S19805C13*), ABISELECT(8,4), "S19805C19");
    check_base_class_offset(lv, (S19805C13*), 0, "S19805C19");
    test_class_info(&lv, &cd_S19805C19);
    dp->~S19805C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19805C19(Test_S19805C19, "S19805C19", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN9S19805C19C1Ev();
extern void _ZN9S19805C19D2Ev();
Name_Map name_map_S19805C19[] = {
  NSPAIR(_ZN9S19805C19C1Ev),
  NSPAIR(_ZN9S19805C19D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C13;
extern VTBL_ENTRY _ZTI9S19805C13[];
extern  VTBL_ENTRY _ZTV9S19805C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C13[];
static Base_Class bases_S19805C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19805C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19805C19[];
extern void _ZN9S19805C19D1Ev();
extern void _ZN9S19805C19D0Ev();
static  VTBL_ENTRY vtc_S19805C19[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C19[0]),
  (VTBL_ENTRY)&_ZN9S19805C19D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C19D0Ev,
};
extern VTBL_ENTRY _ZTV9S19805C19[];
static  VTBL_ENTRY _tg__ZTV9S19805C13__9S19805C19[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C13[0]),
};
static  VTT_ENTRY vtt_S19805C19[] = {
  {&(_ZTV9S19805C19[3]),  3,5},
  {&(_tg__ZTV9S19805C13__9S19805C19[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19805C19[];
extern  VTBL_ENTRY _ZTV9S19805C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C19[];
Class_Descriptor cd_S19805C19 = {  "S19805C19", // class name
  bases_S19805C19, 3,
  &(vtc_S19805C19[0]), // expected_vtbl_contents
  &(vtt_S19805C19[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI9S19805C19),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19805C19),5, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19805C19),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19805C14  : S19805C10 , virtual S19805C3 , virtual S19805C15 , S19805C19 , S77C13_nt {
  int s19805c14f0;
  ~S19805C14(); // tgen
  S19805C14(); // tgen
};
//SIG(-1 S19805C14) C1{ BC2{ VBC3{ m} VBC4{ m} VBC5{ BC3 VBC6{ VBC3 BC4 VBC7{ m}} VBC4} BC7 BC8{ BC4 VBC3 VBC7 BC6 VBC5 vd} vd} VBC9{ BC7 BC4 BC6 Fi} VBC10{ VBC2 VBC11{ VBC12{ VBC2 VBC9 VBC8 vd Fi[2]} VBC13{ m} VBC14{ VBC6 VBC15{ VBC4} VBC9 BC7 VBC2 vd Fi} BC16{ VBC8 BC9 BC5 BC7 vd} vd} vd} BC17{ BC4 BC15 vd} BC18{ m} Fi}


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

static void Test_S19805C14()
{
  extern Class_Descriptor cd_S19805C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(20,22)];
    init_test(&cd_S19805C14, buf);
    S19805C14 *dp, &lv = *(dp=new (buf) S19805C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(152,84), "sizeof(S19805C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19805C14)");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C10*), 0, "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C5*), 0, "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C7*)(S19805C10*), 0, "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C5*)(S19805C7*)(S19805C10*), 0, "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C3 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C5*)(S19805C3*), 0, "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C10*), 0, "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C7*)(S19805C10*), 0, "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C5*)(S19805C7*)(S19805C10*), 0, "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C7*), 0, "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C5*)(S19805C7*), 0, "S19805C14");
    check_base_class_offset(lv, (S7856C12*)(S19805C5*)(S19805C3*)(S19805C18*)(S19805C16*), 0, "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C10*), ABISELECT(28,16), "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C8 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C8*), ABISELECT(28,16), "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C10*), ABISELECT(28,16), "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C13*), ABISELECT(28,16), "S19805C14");
    /*is_ambiguous_... S19805C18::S19805C8 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C8*)(S19805C18*)(S19805C16*), ABISELECT(28,16), "S19805C14");
    check_base_class_offset(lv, (S7856C15*)(S19805C13*)(S19805C19*), ABISELECT(28,16), "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C8 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C8*), ABISELECT(48,28), "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C5*), ABISELECT(48,28), "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C5*), ABISELECT(28,16), "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C7*)(S19805C10*), ABISELECT(28,16), "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C5*)(S19805C7*)(S19805C10*), ABISELECT(28,16), "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C5*)(S19805C3*), ABISELECT(28,16), "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C7*)(S19805C10*), ABISELECT(28,16), "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C5*)(S19805C7*)(S19805C10*), ABISELECT(28,16), "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C7*), ABISELECT(28,16), "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C5*)(S19805C7*), ABISELECT(28,16), "S19805C14");
    check_base_class_offset(lv, (S7856C24*)(S19805C5*)(S19805C3*)(S19805C18*)(S19805C16*), ABISELECT(28,16), "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C8 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C8*), ABISELECT(48,28), "S19805C14");
    /*is_ambiguous_... S19805C12::S19805C5 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C12*), ABISELECT(48,28), "S19805C14");
    /*is_ambiguous_... S19805C18::S19805C8 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C8*)(S19805C18*)(S19805C16*), ABISELECT(48,28), "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S19805C8*)(S19805C10*), ABISELECT(48,28), "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S19805C8*)(S19805C7*)(S19805C10*), ABISELECT(48,28), "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S19805C8*)(S19805C10*), ABISELECT(48,28), "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S19805C8*)(S19805C7*)(S19805C10*), ABISELECT(48,28), "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C7 */ AMB_check_base_class_offset(lv, (S19805C8*)(S19805C7*), ABISELECT(48,28), "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C10*), 0, "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C7*)(S19805C10*), ABISELECT(8,4), "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C5*)(S19805C7*)(S19805C10*), 0, "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C7*)(S19805C10*), 0, "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S19805C7*)(S19805C10*), 0, "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S19805C10*), 0, "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C3*), ABISELECT(32,20), "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C3*), ABISELECT(40,24), "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C5*)(S19805C3*), ABISELECT(32,20), "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C3 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C3*), ABISELECT(32,20), "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C3 */ AMB_check_base_class_offset(lv, (S19805C3*), ABISELECT(32,20), "S19805C14");
    check_base_class_offset(lv, (S19805C3*)(S19805C9*), ABISELECT(32,20), "S19805C14");
    check_base_class_offset(lv, (S19805C3*)(S19805C12*), ABISELECT(32,20), "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C10*), ABISELECT(56,32), "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C7*)(S19805C10*), ABISELECT(64,36), "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C5*)(S19805C7*)(S19805C10*), ABISELECT(56,32), "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C7*)(S19805C10*), ABISELECT(56,32), "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S19805C7*)(S19805C10*), ABISELECT(56,32), "S19805C14");
    check_base_class_offset(lv, (S19805C10*)(S19805C15*), ABISELECT(56,32), "S19805C14");
    check_base_class_offset(lv, (S19805C10*)(S19805C9*), ABISELECT(56,32), "S19805C14");
    check_base_class_offset(lv, (S19805C10*)(S19805C12*), ABISELECT(56,32), "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C7*), ABISELECT(128,72), "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C5*)(S19805C7*), ABISELECT(120,68), "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C7 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C7*), ABISELECT(120,68), "S19805C14");
    /*is_ambiguous_... S19805C9::S19805C7 */ AMB_check_base_class_offset(lv, (S19805C7*)(S19805C9*), ABISELECT(120,68), "S19805C14");
    check_base_class_offset(lv, (S19805C7*)(S19805C18*)(S19805C16*), ABISELECT(120,68), "S19805C14");
    check_base_class_offset(lv, (S19805C9*)(S19805C16*), ABISELECT(104,56), "S19805C14");
    check_base_class_offset(lv, (S7856C9_nt*)(S19805C16*), 0, "S19805C14");
    check_base_class_offset(lv, (S19805C13*)(S19805C12*), ABISELECT(136,76), "S19805C14");
    /*is_ambiguous_... S19805C12::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C12*), ABISELECT(136,76), "S19805C14");
    check_base_class_offset(lv, (S19805C12*)(S19805C16*), ABISELECT(136,76), "S19805C14");
    /*is_ambiguous_... S19805C3::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C3*)(S19805C18*)(S19805C16*), ABISELECT(72,40), "S19805C14");
    /*is_ambiguous_... S19805C3::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C3*)(S19805C18*)(S19805C16*), ABISELECT(80,44), "S19805C14");
    check_base_class_offset(lv, (S7856C15*)(S19805C5*)(S19805C3*)(S19805C18*)(S19805C16*), ABISELECT(72,40), "S19805C14");
    check_base_class_offset(lv, (S19805C5*)(S19805C3*)(S19805C18*)(S19805C16*), ABISELECT(72,40), "S19805C14");
    check_base_class_offset(lv, (S19805C3*)(S19805C18*)(S19805C16*), ABISELECT(72,40), "S19805C14");
    /*is_ambiguous_... S19805C18::S19805C8 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C8*)(S19805C18*)(S19805C16*), ABISELECT(88,48), "S19805C14");
    /*is_ambiguous_... S19805C18::S19805C8 */ AMB_check_base_class_offset(lv, (S19805C8*)(S19805C18*)(S19805C16*), ABISELECT(88,48), "S19805C14");
    /*is_ambiguous_... S19805C18::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C18*)(S19805C16*), ABISELECT(96,52), "S19805C14");
    check_base_class_offset(lv, (S19805C18*)(S19805C16*), ABISELECT(72,40), "S19805C14");
    check_base_class_offset(lv, (S19805C16*)(S19805C15*), ABISELECT(72,40), "S19805C14");
    check_base_class_offset(lv, (S19805C15*), ABISELECT(48,28), "S19805C14");
    /*is_ambiguous_... S19805C19::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C19*), ABISELECT(16,8), "S19805C14");
    check_base_class_offset(lv, (S19805C13*)(S19805C19*), ABISELECT(16,8), "S19805C14");
    check_base_class_offset(lv, (S19805C19*), ABISELECT(16,8), "S19805C14");
    check_base_class_offset(lv, (S77C13_nt*), 0, "S19805C14");
    check_field_offset(lv, s19805c14f0, ABISELECT(24,12), "S19805C14.s19805c14f0");
    test_class_info(&lv, &cd_S19805C14);
    dp->~S19805C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19805C14(Test_S19805C14, "S19805C14", ABISELECT(152,84));

#else // __cplusplus

extern void _ZN9S19805C14C1Ev();
extern void _ZN9S19805C14D1Ev();
Name_Map name_map_S19805C14[] = {
  NSPAIR(_ZN9S19805C14C1Ev),
  NSPAIR(_ZN9S19805C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S19805C8;
extern VTBL_ENTRY _ZTI8S19805C8[];
extern  VTBL_ENTRY _ZTV8S19805C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C8[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S19805C7;
extern VTBL_ENTRY _ZTI8S19805C7[];
extern  VTBL_ENTRY _ZTV8S19805C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C7[];
extern Class_Descriptor cd_S19805C10;
extern VTBL_ENTRY _ZTI9S19805C10[];
extern  VTBL_ENTRY _ZTV9S19805C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C10[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S19805C3;
extern VTBL_ENTRY _ZTI8S19805C3[];
extern  VTBL_ENTRY _ZTV8S19805C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C3[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S19805C7;
extern VTBL_ENTRY _ZTI8S19805C7[];
extern  VTBL_ENTRY _ZTV8S19805C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C7[];
extern Class_Descriptor cd_S19805C10;
extern VTBL_ENTRY _ZTI9S19805C10[];
extern  VTBL_ENTRY _ZTV9S19805C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C10[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S19805C7;
extern VTBL_ENTRY _ZTI8S19805C7[];
extern  VTBL_ENTRY _ZTV8S19805C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C7[];
extern Class_Descriptor cd_S19805C9;
extern VTBL_ENTRY _ZTI8S19805C9[];
extern  VTBL_ENTRY _ZTV8S19805C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C9[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S19805C13;
extern VTBL_ENTRY _ZTI9S19805C13[];
extern  VTBL_ENTRY _ZTV9S19805C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C13[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19805C12;
extern VTBL_ENTRY _ZTI9S19805C12[];
extern  VTBL_ENTRY _ZTV9S19805C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S19805C3;
extern VTBL_ENTRY _ZTI8S19805C3[];
extern  VTBL_ENTRY _ZTV8S19805C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C3[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19805C8;
extern VTBL_ENTRY _ZTI8S19805C8[];
extern  VTBL_ENTRY _ZTV8S19805C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C8[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19805C18;
extern VTBL_ENTRY _ZTI9S19805C18[];
extern  VTBL_ENTRY _ZTV9S19805C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C18[];
extern Class_Descriptor cd_S19805C16;
extern VTBL_ENTRY _ZTI9S19805C16[];
extern  VTBL_ENTRY _ZTV9S19805C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C16[];
extern Class_Descriptor cd_S19805C15;
extern VTBL_ENTRY _ZTI9S19805C15[];
extern  VTBL_ENTRY _ZTV9S19805C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C13;
extern VTBL_ENTRY _ZTI9S19805C13[];
extern  VTBL_ENTRY _ZTV9S19805C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C13[];
extern Class_Descriptor cd_S19805C19;
extern VTBL_ENTRY _ZTI9S19805C19[];
extern  VTBL_ENTRY _ZTV9S19805C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C19[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
static Base_Class bases_S19805C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(28,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(28,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19805C5,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19805C8,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19805C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19805C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19805C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19805C5,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19805C3,    ABISELECT(32,20), //bcp->offset
    23, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19805C5,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19805C7,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19805C10,    ABISELECT(56,32), //bcp->offset
    45, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(128,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19805C5,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19805C7,    ABISELECT(120,68), //bcp->offset
    91, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S19805C9,    ABISELECT(104,56), //bcp->offset
    78, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S19805C13,    ABISELECT(136,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(136,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S19805C12,    ABISELECT(136,76), //bcp->offset
    101, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S19805C5,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S19805C3,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S19805C8,    ABISELECT(88,48), //bcp->offset
    72, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S19805C18,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S19805C16,    ABISELECT(72,40), //bcp->offset
    55, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    43, //immediately_derived
  0, 1},
  {&cd_S19805C15,    ABISELECT(48,28), //bcp->offset
    27, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S19805C13,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S19805C19,    ABISELECT(16,8), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19805C14[];
extern void _ZN9S19805C14D1Ev();
extern void _ZN9S19805C14D0Ev();
extern void ABISELECT(_ZThn16_N9S19805C14D1Ev,_ZThn8_N9S19805C14D1Ev)();
extern void ABISELECT(_ZThn16_N9S19805C14D0Ev,_ZThn8_N9S19805C14D0Ev)();
extern void ABISELECT(_ZTv0_n128_N9S19805C14D1Ev,_ZTv0_n64_N9S19805C14D1Ev)();
extern void ABISELECT(_ZThn48_N9S19805C14D1Ev,_ZThn28_N9S19805C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N9S19805C14D0Ev,_ZTv0_n64_N9S19805C14D0Ev)();
extern void ABISELECT(_ZThn48_N9S19805C14D0Ev,_ZThn28_N9S19805C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19805C14D1Ev,_ZTv0_n32_N9S19805C14D1Ev)();
extern void ABISELECT(_ZThn56_N9S19805C14D1Ev,_ZThn32_N9S19805C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19805C14D0Ev,_ZTv0_n32_N9S19805C14D0Ev)();
extern void ABISELECT(_ZThn56_N9S19805C14D0Ev,_ZThn32_N9S19805C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N9S19805C14D1Ev,_ZTv0_n60_N9S19805C14D1Ev)();
extern void ABISELECT(_ZThn72_N9S19805C14D1Ev,_ZThn40_N9S19805C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N9S19805C14D0Ev,_ZTv0_n60_N9S19805C14D0Ev)();
extern void ABISELECT(_ZThn72_N9S19805C14D0Ev,_ZThn40_N9S19805C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19805C14D1Ev,_ZTv0_n44_N9S19805C14D1Ev)();
extern void ABISELECT(_ZThn104_N9S19805C14D1Ev,_ZThn56_N9S19805C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19805C14D0Ev,_ZTv0_n44_N9S19805C14D0Ev)();
extern void ABISELECT(_ZThn104_N9S19805C14D0Ev,_ZThn56_N9S19805C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19805C14D1Ev,_ZTv0_n32_N9S19805C14D1Ev)();
extern void ABISELECT(_ZThn120_N9S19805C14D1Ev,_ZThn68_N9S19805C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19805C14D0Ev,_ZTv0_n32_N9S19805C14D0Ev)();
extern void ABISELECT(_ZThn120_N9S19805C14D0Ev,_ZThn68_N9S19805C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19805C14D1Ev,_ZTv0_n44_N9S19805C14D1Ev)();
extern void ABISELECT(_ZThn136_N9S19805C14D1Ev,_ZThn76_N9S19805C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19805C14D0Ev,_ZTv0_n44_N9S19805C14D0Ev)();
extern void ABISELECT(_ZThn136_N9S19805C14D0Ev,_ZThn76_N9S19805C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19805C14[] = {
  ABISELECT(136,76),
  ABISELECT(136,76),
  0,
  ABISELECT(120,68),
  ABISELECT(104,56),
  ABISELECT(72,40),
  ABISELECT(56,32),
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(28,16),
  ABISELECT(48,28),
  ABISELECT(48,28),
  ABISELECT(28,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C14[0]),
  (VTBL_ENTRY)&_ZN9S19805C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C14D0Ev,
  ABISELECT(12,8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19805C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19805C14D1Ev,_ZThn8_N9S19805C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19805C14D0Ev,_ZThn8_N9S19805C14D0Ev),
  -4,
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S19805C14[0]),
  ABISELECT(-48,-28),
  ABISELECT(88,48),
  ABISELECT(88,48),
  ABISELECT(-48,-28),
  ABISELECT(72,40),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  ABISELECT(24,12),
  0,
  ABISELECT(8,4),
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19805C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N9S19805C14D1Ev,_ZTv0_n64_N9S19805C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N9S19805C14D0Ev,_ZTv0_n64_N9S19805C14D0Ev),
  ABISELECT(-56,-32),
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S19805C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C14D1Ev,_ZTv0_n32_N9S19805C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C14D0Ev,_ZTv0_n32_N9S19805C14D0Ev),
  ABISELECT(-72,-40),
  ABISELECT(64,36),
  ABISELECT(64,36),
  ABISELECT(-72,-40),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(-44,-24),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(48,28),
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S19805C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19805C14D1Ev,_ZTv0_n60_N9S19805C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19805C14D0Ev,_ZTv0_n60_N9S19805C14D0Ev),
  ABISELECT(-60,-32),
  ABISELECT(-40,-20),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI9S19805C14[0]),
  ABISELECT(-104,-56),
  ABISELECT(16,12),
  ABISELECT(-72,-36),
  ABISELECT(-56,-28),
  ABISELECT(-48,-24),
  ABISELECT(-76,-40),
  ABISELECT(-56,-28),
  ABISELECT(-76,-40),
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI9S19805C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C14D1Ev,_ZTv0_n44_N9S19805C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C14D0Ev,_ZTv0_n44_N9S19805C14D0Ev),
  ABISELECT(-120,-68),
  ABISELECT(-92,-52),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI9S19805C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C14D1Ev,_ZTv0_n32_N9S19805C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C14D0Ev,_ZTv0_n32_N9S19805C14D0Ev),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-80,-44),
  ABISELECT(-104,-56),
  0,
  ABISELECT(-108,-60),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-108,-60),
  ABISELECT(-136,-76),
  (VTBL_ENTRY)&(_ZTI9S19805C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C14D1Ev,_ZTv0_n44_N9S19805C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C14D0Ev,_ZTv0_n44_N9S19805C14D0Ev),
};
extern VTBL_ENTRY _ZTV9S19805C14[];
extern void _ZN9S19805C10D1Ev();
extern void _ZN9S19805C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19805C10__A__9S19805C14[] = {
  ABISELECT(28,16),
  ABISELECT(48,28),
  ABISELECT(48,28),
  ABISELECT(28,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C10[0]),
  (VTBL_ENTRY)&_ZN9S19805C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C10D0Ev,
};
extern void _ZN8S19805C7D1Ev();
extern void _ZN8S19805C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19805C79S19805C10__9S19805C14[] = {
  ABISELECT(28,16),
  ABISELECT(48,28),
  ABISELECT(48,28),
  ABISELECT(28,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C7[0]),
  (VTBL_ENTRY)&_ZN8S19805C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19805C7D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19805C58S19805C79S19805C10__A1__9S19805C14[] = {
  ABISELECT(28,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__8S19805C79S19805C10__9S19805C14[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19805C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__9S19805C10__A__9S19805C14[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19805C10[0]),
};
extern void _ZN9S19805C19D1Ev();
extern void _ZN9S19805C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19805C19__9S19805C14[] = {
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C19[0]),
  (VTBL_ENTRY)&_ZN9S19805C19D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C19D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19805C139S19805C19__A1__9S19805C14[] = {
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__9S19805C14[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C5__9S19805C14[] = {
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C3__9S19805C14[] = {
  -4,
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C58S19805C3__A2__9S19805C14[] = {
  -4,
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
extern void _ZN9S19805C15D1Ev();
extern void _ZN9S19805C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19805C15__9S19805C14[] = {
  ABISELECT(88,48),
  ABISELECT(88,48),
  ABISELECT(-48,-28),
  ABISELECT(72,40),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  ABISELECT(24,12),
  0,
  ABISELECT(8,4),
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C15[0]),
  (VTBL_ENTRY)&_ZN9S19805C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C15D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N9S19805C15D1Ev,_ZTv0_n32_N9S19805C15D1Ev)();
extern void ABISELECT(_ZThn8_N9S19805C15D1Ev,_ZThn4_N9S19805C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19805C15D0Ev,_ZTv0_n32_N9S19805C15D0Ev)();
extern void ABISELECT(_ZThn8_N9S19805C15D0Ev,_ZThn4_N9S19805C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19805C10__9S19805C15__9S19805C14[] = {
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19805C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C15D1Ev,_ZTv0_n32_N9S19805C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C15D0Ev,_ZTv0_n32_N9S19805C15D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N9S19805C15D1Ev,_ZTv0_n60_N9S19805C15D1Ev)();
extern void ABISELECT(_ZThn24_N9S19805C15D1Ev,_ZThn12_N9S19805C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N9S19805C15D0Ev,_ZTv0_n60_N9S19805C15D0Ev)();
extern void ABISELECT(_ZThn24_N9S19805C15D0Ev,_ZThn12_N9S19805C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19805C16__9S19805C15__9S19805C14[] = {
  ABISELECT(-24,-12),
  ABISELECT(64,36),
  ABISELECT(64,36),
  ABISELECT(-72,-40),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(-44,-24),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(48,28),
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19805C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19805C15D1Ev,_ZTv0_n60_N9S19805C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19805C15D0Ev,_ZTv0_n60_N9S19805C15D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N9S19805C15D1Ev,_ZTv0_n44_N9S19805C15D1Ev)();
extern void ABISELECT(_ZThn56_N9S19805C15D1Ev,_ZThn28_N9S19805C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19805C15D0Ev,_ZTv0_n44_N9S19805C15D0Ev)();
extern void ABISELECT(_ZThn56_N9S19805C15D0Ev,_ZThn28_N9S19805C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19805C9__9S19805C15__9S19805C14[] = {
  ABISELECT(-56,-28),
  ABISELECT(16,12),
  ABISELECT(-72,-36),
  ABISELECT(-56,-28),
  ABISELECT(-48,-24),
  ABISELECT(-76,-40),
  ABISELECT(-56,-28),
  ABISELECT(-76,-40),
  ABISELECT(-104,-56),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S19805C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C15D1Ev,_ZTv0_n44_N9S19805C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C15D0Ev,_ZTv0_n44_N9S19805C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19805C3__9S19805C15__9S19805C14[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S19805C15[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19805C15D1Ev,_ZTv0_n32_N9S19805C15D1Ev)();
extern void ABISELECT(_ZThn72_N9S19805C15D1Ev,_ZThn40_N9S19805C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19805C15D0Ev,_ZTv0_n32_N9S19805C15D0Ev)();
extern void ABISELECT(_ZThn72_N9S19805C15D0Ev,_ZThn40_N9S19805C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19805C7__A1__9S19805C15__9S19805C14[] = {
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S19805C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C15D1Ev,_ZTv0_n32_N9S19805C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C15D0Ev,_ZTv0_n32_N9S19805C15D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N9S19805C15D1Ev,_ZTv0_n44_N9S19805C15D1Ev)();
extern void ABISELECT(_ZThn88_N9S19805C15D1Ev,_ZThn48_N9S19805C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19805C15D0Ev,_ZTv0_n44_N9S19805C15D0Ev)();
extern void ABISELECT(_ZThn88_N9S19805C15D0Ev,_ZThn48_N9S19805C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19805C12__9S19805C15__9S19805C14[] = {
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-80,-44),
  ABISELECT(-104,-56),
  0,
  ABISELECT(-108,-60),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-108,-60),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI9S19805C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C15D1Ev,_ZTv0_n44_N9S19805C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C15D0Ev,_ZTv0_n44_N9S19805C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19805C89S19805C189S19805C16__A1__9S19805C15__9S19805C14[] = {
  ABISELECT(-60,-32),
  ABISELECT(-40,-20),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19805C15[0]),
};
extern void _ZN9S19805C10D1Ev();
extern void _ZN9S19805C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19805C10__A1__9S19805C14[] = {
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C10[0]),
  (VTBL_ENTRY)&_ZN9S19805C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C10D0Ev,
};
extern void _ZN8S19805C7D1Ev();
extern void _ZN8S19805C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19805C79S19805C10__A1__9S19805C14[] = {
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C7[0]),
  (VTBL_ENTRY)&_ZN8S19805C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19805C7D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19805C58S19805C79S19805C10__A3__9S19805C14[] = {
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__8S19805C79S19805C10__A1__9S19805C14[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S19805C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__9S19805C10__A1__9S19805C14[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI9S19805C10[0]),
};
extern void _ZN9S19805C16D1Ev();
extern void _ZN9S19805C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19805C16__9S19805C14[] = {
  ABISELECT(64,36),
  ABISELECT(64,36),
  ABISELECT(-72,-40),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(-44,-24),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(48,28),
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
  (VTBL_ENTRY)&_ZN9S19805C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C16D0Ev,
};
extern void _ZN9S19805C18D1Ev();
extern void _ZN9S19805C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19805C189S19805C16__9S19805C14[] = {
  ABISELECT(-44,-24),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(48,28),
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C18[0]),
  (VTBL_ENTRY)&_ZN9S19805C18D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19805C39S19805C189S19805C16__A1__9S19805C14[] = {
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C58S19805C39S19805C189S19805C16__A5__9S19805C14[] = {
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C89S19805C189S19805C16__A1__9S19805C14[] = {
  ABISELECT(-60,-32),
  ABISELECT(-40,-20),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C5__8S19805C89S19805C189S19805C16__A1__9S19805C14[] = {
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S19805C8[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19805C18D1Ev,_ZTv0_n32_N9S19805C18D1Ev)();
extern void ABISELECT(_ZThn48_N9S19805C18D1Ev,_ZThn28_N9S19805C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19805C18D0Ev,_ZTv0_n32_N9S19805C18D0Ev)();
extern void ABISELECT(_ZThn48_N9S19805C18D0Ev,_ZThn28_N9S19805C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19805C7__9S19805C189S19805C16__9S19805C14[] = {
  ABISELECT(-48,-28),
  ABISELECT(-92,-52),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19805C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C18D1Ev,_ZTv0_n32_N9S19805C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C18D0Ev,_ZTv0_n32_N9S19805C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__9S19805C189S19805C16__9S19805C14[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S19805C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__A__9S19805C189S19805C16__9S19805C14[] = {
  ABISELECT(-60,-32),
  ABISELECT(-40,-20),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19805C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N9S19805C16D1Ev,_ZTv0_n44_N9S19805C16D1Ev)();
extern void ABISELECT(_ZThn32_N9S19805C16D1Ev,_ZThn16_N9S19805C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19805C16D0Ev,_ZTv0_n44_N9S19805C16D0Ev)();
extern void ABISELECT(_ZThn32_N9S19805C16D0Ev,_ZThn16_N9S19805C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19805C9__9S19805C16__9S19805C14[] = {
  ABISELECT(-32,-16),
  ABISELECT(16,12),
  ABISELECT(-72,-36),
  ABISELECT(-56,-28),
  ABISELECT(-48,-24),
  ABISELECT(-76,-40),
  ABISELECT(-56,-28),
  ABISELECT(-76,-40),
  ABISELECT(-104,-56),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C16D1Ev,_ZTv0_n44_N9S19805C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C16D0Ev,_ZTv0_n44_N9S19805C16D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N9S19805C16D1Ev,_ZTv0_n32_N9S19805C16D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19805C16D0Ev,_ZTv0_n32_N9S19805C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19805C10__9S19805C16__9S19805C14[] = {
  ABISELECT(16,8),
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C16D1Ev,_ZTv0_n32_N9S19805C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C16D0Ev,_ZTv0_n32_N9S19805C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__9S19805C16__9S19805C14[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C3__9S19805C16__9S19805C14[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19805C16D1Ev,_ZTv0_n32_N9S19805C16D1Ev)();
extern void ABISELECT(_ZThn48_N9S19805C16D1Ev,_ZThn28_N9S19805C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19805C16D0Ev,_ZTv0_n32_N9S19805C16D0Ev)();
extern void ABISELECT(_ZThn48_N9S19805C16D0Ev,_ZThn28_N9S19805C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19805C7__A1__9S19805C16__9S19805C14[] = {
  ABISELECT(-48,-28),
  ABISELECT(-92,-52),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C16D1Ev,_ZTv0_n32_N9S19805C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C16D0Ev,_ZTv0_n32_N9S19805C16D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N9S19805C16D1Ev,_ZTv0_n44_N9S19805C16D1Ev)();
extern void ABISELECT(_ZThn64_N9S19805C16D1Ev,_ZThn36_N9S19805C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19805C16D0Ev,_ZTv0_n44_N9S19805C16D0Ev)();
extern void ABISELECT(_ZThn64_N9S19805C16D0Ev,_ZThn36_N9S19805C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19805C12__9S19805C16__9S19805C14[] = {
  ABISELECT(-64,-36),
  ABISELECT(-88,-48),
  ABISELECT(-80,-44),
  ABISELECT(-104,-56),
  0,
  ABISELECT(-108,-60),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-108,-60),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C16D1Ev,_ZTv0_n44_N9S19805C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C16D0Ev,_ZTv0_n44_N9S19805C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19805C89S19805C18__A1__9S19805C16__9S19805C14[] = {
  ABISELECT(-60,-32),
  ABISELECT(-40,-20),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
};
extern void _ZN8S19805C9D1Ev();
extern void _ZN8S19805C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19805C9__9S19805C14[] = {
  ABISELECT(16,12),
  ABISELECT(-72,-36),
  ABISELECT(-56,-28),
  ABISELECT(-48,-24),
  ABISELECT(-76,-40),
  ABISELECT(-56,-28),
  ABISELECT(-76,-40),
  ABISELECT(-104,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C9[0]),
  (VTBL_ENTRY)&_ZN8S19805C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19805C9D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N8S19805C9D1Ev,_ZTv0_n32_N8S19805C9D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S19805C9D0Ev,_ZTv0_n32_N8S19805C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19805C10__8S19805C9__9S19805C14[] = {
  ABISELECT(48,24),
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S19805C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19805C9D1Ev,_ZTv0_n32_N8S19805C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19805C9D0Ev,_ZTv0_n32_N8S19805C9D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__8S19805C9__9S19805C14[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI8S19805C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C3__8S19805C9__9S19805C14[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI8S19805C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S19805C9D1Ev,_ZTv0_n32_N8S19805C9D1Ev)();
extern void ABISELECT(_ZThn16_N8S19805C9D1Ev,_ZThn12_N8S19805C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19805C9D0Ev,_ZTv0_n32_N8S19805C9D0Ev)();
extern void ABISELECT(_ZThn16_N8S19805C9D0Ev,_ZThn12_N8S19805C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19805C7__A1__8S19805C9__9S19805C14[] = {
  ABISELECT(-16,-12),
  ABISELECT(-92,-52),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19805C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19805C9D1Ev,_ZTv0_n32_N8S19805C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19805C9D0Ev,_ZTv0_n32_N8S19805C9D0Ev),
};
extern void _ZN8S19805C7D1Ev();
extern void _ZN8S19805C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19805C7__A2__9S19805C14[] = {
  ABISELECT(-92,-52),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C7[0]),
  (VTBL_ENTRY)&_ZN8S19805C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19805C7D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19805C58S19805C7__A4__9S19805C14[] = {
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__8S19805C7__A2__9S19805C14[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(72,40),
  (VTBL_ENTRY)&(_ZTI8S19805C7[0]),
};
extern void _ZN9S19805C12D1Ev();
extern void _ZN9S19805C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19805C12__9S19805C14[] = {
  ABISELECT(-88,-48),
  ABISELECT(-80,-44),
  ABISELECT(-104,-56),
  0,
  ABISELECT(-108,-60),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-108,-60),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C12[0]),
  (VTBL_ENTRY)&_ZN9S19805C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__9S19805C12__9S19805C14[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI9S19805C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C3__9S19805C12__9S19805C14[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(104,56),
  (VTBL_ENTRY)&(_ZTI9S19805C12[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19805C12D1Ev,_ZTv0_n32_N9S19805C12D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19805C12D0Ev,_ZTv0_n32_N9S19805C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19805C10__9S19805C12__9S19805C14[] = {
  ABISELECT(80,44),
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI9S19805C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C12D1Ev,_ZTv0_n32_N9S19805C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C12D0Ev,_ZTv0_n32_N9S19805C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19805C13__9S19805C14[] = {
  ABISELECT(-108,-60),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C13[0]),
};
static  VTT_ENTRY vtt_S19805C14[] = {
  {&(_ZTV9S19805C14[16]),  16,114},
  {&(_tg__ZTV9S19805C10__A__9S19805C14[7]),  7,9},
  {&(_tg__ZTV8S19805C79S19805C10__9S19805C14[7]),  7,9},
  {&(_tg__ZTV8S19805C58S19805C79S19805C10__A1__9S19805C14[4]),  4,4},
  {&(_tg__ZTV8S19805C8__8S19805C79S19805C10__9S19805C14[6]),  6,6},
  {&(_tg__ZTV8S19805C8__8S19805C79S19805C10__9S19805C14[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C10__A__9S19805C14[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C10__A__9S19805C14[6]),  6,6},
  {&(_tg__ZTV9S19805C19__9S19805C14[3]),  3,5},
  {&(_tg__ZTV9S19805C139S19805C19__A1__9S19805C14[3]),  3,3},
  {&(_ZTV9S19805C14[43]),  43,114},
  {&(_ZTV9S19805C14[43]),  43,114},
  {&(_ZTV9S19805C14[27]),  27,114},
  {&(_ZTV9S19805C14[43]),  43,114},
  {&(_ZTV9S19805C14[53]),  53,114},
  {&(_ZTV9S19805C14[70]),  70,114},
  {&(_ZTV9S19805C14[89]),  89,114},
  {&(_ZTV9S19805C14[99]),  99,114},
  {&(_ZTV9S19805C14[112]),  112,114},
  {&(_ZTV9S19805C14[112]),  112,114},
  {&(_ZTV9S19805C14[78]),  78,114},
  {&(_ZTV9S19805C14[21]),  21,114},
  {&(_tg__ZTV8S19805C8__9S19805C14[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C14[6]),  6,6},
  {&(_tg__ZTV8S19805C5__9S19805C14[4]),  4,4},
  {&(_tg__ZTV8S19805C3__9S19805C14[4]),  4,4},
  {&(_tg__ZTV8S19805C58S19805C3__A2__9S19805C14[4]),  4,4},
  {&(_tg__ZTV9S19805C15__9S19805C14[15]),  15,17},
  {&(_tg__ZTV9S19805C10__9S19805C15__9S19805C14[8]),  8,10},
  {&(_tg__ZTV9S19805C15__9S19805C14[15]),  15,17},
  {&(_tg__ZTV9S19805C15__9S19805C14[15]),  15,17},
  {&(_tg__ZTV9S19805C16__9S19805C15__9S19805C14[15]),  15,17},
  {&(_tg__ZTV8S19805C9__9S19805C15__9S19805C14[11]),  11,13},
  {&(_tg__ZTV8S19805C3__9S19805C15__9S19805C14[4]),  4,4},
  {&(_tg__ZTV8S19805C7__A1__9S19805C15__9S19805C14[8]),  8,10},
  {&(_tg__ZTV9S19805C12__9S19805C15__9S19805C14[11]),  11,13},
  {&(_tg__ZTV9S19805C12__9S19805C15__9S19805C14[11]),  11,13},
  {&(_tg__ZTV8S19805C89S19805C189S19805C16__A1__9S19805C15__9S19805C14[6]),  6,6},
  {&(_tg__ZTV9S19805C10__A1__9S19805C14[7]),  7,9},
  {&(_tg__ZTV8S19805C79S19805C10__A1__9S19805C14[7]),  7,9},
  {&(_tg__ZTV8S19805C58S19805C79S19805C10__A3__9S19805C14[4]),  4,4},
  {&(_tg__ZTV8S19805C8__8S19805C79S19805C10__A1__9S19805C14[6]),  6,6},
  {&(_tg__ZTV8S19805C8__8S19805C79S19805C10__A1__9S19805C14[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C10__A1__9S19805C14[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C10__A1__9S19805C14[6]),  6,6},
  {&(_tg__ZTV9S19805C16__9S19805C14[14]),  14,16},
  {&(_tg__ZTV9S19805C189S19805C16__9S19805C14[8]),  8,10},
  {&(_tg__ZTV8S19805C39S19805C189S19805C16__A1__9S19805C14[4]),  4,4},
  {&(_tg__ZTV8S19805C58S19805C39S19805C189S19805C16__A5__9S19805C14[4]),  4,4},
  {&(_tg__ZTV8S19805C89S19805C189S19805C16__A1__9S19805C14[6]),  6,6},
  {&(_tg__ZTV8S19805C5__8S19805C89S19805C189S19805C16__A1__9S19805C14[4]),  4,4},
  {&(_tg__ZTV8S19805C7__9S19805C189S19805C16__9S19805C14[8]),  8,10},
  {&(_tg__ZTV8S19805C8__9S19805C189S19805C16__9S19805C14[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C189S19805C16__9S19805C14[6]),  6,6},
  {&(_tg__ZTV8S19805C8__A__9S19805C189S19805C16__9S19805C14[6]),  6,6},
  {&(_tg__ZTV8S19805C9__9S19805C16__9S19805C14[11]),  11,13},
  {&(_tg__ZTV9S19805C10__9S19805C16__9S19805C14[8]),  8,10},
  {&(_tg__ZTV8S19805C8__9S19805C16__9S19805C14[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C16__9S19805C14[6]),  6,6},
  {&(_tg__ZTV8S19805C3__9S19805C16__9S19805C14[4]),  4,4},
  {&(_tg__ZTV8S19805C7__A1__9S19805C16__9S19805C14[8]),  8,10},
  {&(_tg__ZTV9S19805C12__9S19805C16__9S19805C14[11]),  11,13},
  {&(_tg__ZTV9S19805C12__9S19805C16__9S19805C14[11]),  11,13},
  {&(_tg__ZTV8S19805C89S19805C18__A1__9S19805C16__9S19805C14[6]),  6,6},
  {&(_tg__ZTV8S19805C9__9S19805C14[10]),  10,12},
  {&(_tg__ZTV9S19805C10__8S19805C9__9S19805C14[8]),  8,10},
  {&(_tg__ZTV8S19805C8__8S19805C9__9S19805C14[6]),  6,6},
  {&(_tg__ZTV8S19805C8__8S19805C9__9S19805C14[6]),  6,6},
  {&(_tg__ZTV8S19805C3__8S19805C9__9S19805C14[4]),  4,4},
  {&(_tg__ZTV8S19805C7__A1__8S19805C9__9S19805C14[8]),  8,10},
  {&(_tg__ZTV8S19805C7__A2__9S19805C14[7]),  7,9},
  {&(_tg__ZTV8S19805C58S19805C7__A4__9S19805C14[4]),  4,4},
  {&(_tg__ZTV8S19805C8__8S19805C7__A2__9S19805C14[6]),  6,6},
  {&(_tg__ZTV8S19805C8__8S19805C7__A2__9S19805C14[6]),  6,6},
  {&(_tg__ZTV9S19805C12__9S19805C14[10]),  10,12},
  {&(_tg__ZTV8S19805C8__9S19805C12__9S19805C14[6]),  6,6},
  {&(_tg__ZTV9S19805C12__9S19805C14[10]),  10,12},
  {&(_tg__ZTV8S19805C3__9S19805C12__9S19805C14[4]),  4,4},
  {&(_tg__ZTV9S19805C10__9S19805C12__9S19805C14[8]),  8,10},
  {&(_tg__ZTV8S19805C8__9S19805C12__9S19805C14[6]),  6,6},
  {&(_tg__ZTV9S19805C13__9S19805C14[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19805C14[];
extern  VTBL_ENTRY _ZTV9S19805C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C14[];
static VTBL_ENTRY alt_thunk_names132[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19805C9D0Ev,_ZTv0_n32_N8S19805C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19805C9D0Ev,_ZThn12_N8S19805C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19805C9D1Ev,_ZTv0_n32_N8S19805C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19805C9D1Ev,_ZThn12_N8S19805C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C16D0Ev,_ZTv0_n32_N9S19805C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19805C16D0Ev,_ZThn28_N9S19805C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C16D1Ev,_ZTv0_n32_N9S19805C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19805C16D1Ev,_ZThn28_N9S19805C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19805C16D0Ev,_ZTv0_n44_N9S19805C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19805C16D0Ev,_ZThn36_N9S19805C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19805C16D0Ev,_ZThn16_N9S19805C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19805C16D1Ev,_ZTv0_n44_N9S19805C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19805C16D1Ev,_ZThn36_N9S19805C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19805C16D1Ev,_ZThn16_N9S19805C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C18D0Ev,_ZTv0_n32_N9S19805C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19805C18D0Ev,_ZThn28_N9S19805C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C18D1Ev,_ZTv0_n32_N9S19805C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19805C18D1Ev,_ZThn28_N9S19805C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19805C15D0Ev,_ZTv0_n44_N9S19805C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19805C15D0Ev,_ZThn48_N9S19805C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19805C15D0Ev,_ZThn28_N9S19805C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19805C15D1Ev,_ZTv0_n44_N9S19805C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19805C15D1Ev,_ZThn48_N9S19805C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19805C15D1Ev,_ZThn28_N9S19805C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19805C15D0Ev,_ZTv0_n60_N9S19805C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19805C15D0Ev,_ZThn12_N9S19805C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19805C15D1Ev,_ZTv0_n60_N9S19805C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19805C15D1Ev,_ZThn12_N9S19805C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C15D0Ev,_ZTv0_n32_N9S19805C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19805C15D0Ev,_ZThn40_N9S19805C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19805C15D0Ev,_ZThn4_N9S19805C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C15D1Ev,_ZTv0_n32_N9S19805C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19805C15D1Ev,_ZThn40_N9S19805C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19805C15D1Ev,_ZThn4_N9S19805C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19805C14D0Ev,_ZTv0_n44_N9S19805C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19805C14D0Ev,_ZThn76_N9S19805C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19805C14D0Ev,_ZThn56_N9S19805C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19805C14D1Ev,_ZTv0_n44_N9S19805C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19805C14D1Ev,_ZThn76_N9S19805C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19805C14D1Ev,_ZThn56_N9S19805C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19805C14D0Ev,_ZTv0_n60_N9S19805C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19805C14D0Ev,_ZThn40_N9S19805C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19805C14D1Ev,_ZTv0_n60_N9S19805C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19805C14D1Ev,_ZThn40_N9S19805C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C14D0Ev,_ZTv0_n32_N9S19805C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S19805C14D0Ev,_ZThn68_N9S19805C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19805C14D0Ev,_ZThn32_N9S19805C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C14D1Ev,_ZTv0_n32_N9S19805C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S19805C14D1Ev,_ZThn68_N9S19805C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19805C14D1Ev,_ZThn32_N9S19805C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N9S19805C14D0Ev,_ZTv0_n64_N9S19805C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19805C14D0Ev,_ZThn28_N9S19805C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N9S19805C14D1Ev,_ZTv0_n64_N9S19805C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19805C14D1Ev,_ZThn28_N9S19805C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19805C14 = {  "S19805C14", // class name
  bases_S19805C14, 48,
  &(vtc_S19805C14[0]), // expected_vtbl_contents
  &(vtt_S19805C14[0]), // expected_vtt_contents
  ABISELECT(152,84), // object size
  NSPAIRA(_ZTI9S19805C14),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19805C14),114, //virtual function table var
  16, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19805C14),81, //virtual table table var
  23, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names132,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19805C11  : S19805C12 , S19805C14 , virtual S77C13_nt {
  ~S19805C11(); // tgen
  S19805C11(); // tgen
};
//SIG(-1 S19805C11) C1{ BC2{ VBC3{ VBC4{ m} BC5{ m} VBC6{ m}} VBC7{ VBC5} VBC8{ BC6 BC5 BC3 Fi} BC6 VBC9{ VBC4 VBC5 VBC10{ BC4 VBC3 VBC5} BC6 BC11{ BC5 VBC4 VBC6 BC3 VBC10 vd} vd} vd Fi} BC12{ BC9 VBC8 VBC13{ VBC9 VBC14{ VBC15{ VBC9 VBC8 VBC11 vd Fi[2]} VBC16{ m} VBC2 BC17{ VBC11 BC8 BC10 BC6 vd} vd} vd} BC18{ BC5 BC7 vd} BC19{ m} Fi} VBC19}


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

static void Test_S19805C11()
{
  extern Class_Descriptor cd_S19805C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(22,24)];
    init_test(&cd_S19805C11, buf);
    S19805C11 *dp, &lv = *(dp=new (buf) S19805C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(168,92), "sizeof(S19805C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19805C11)");
    /*is_ambiguous_... S19805C11::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C5*), 0, "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C3 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C5*)(S19805C3*), 0, "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C10*), 0, "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C7*)(S19805C10*), 0, "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C5*)(S19805C7*)(S19805C10*), 0, "S19805C11");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C10*)(S19805C14*), 0, "S19805C11");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C7*)(S19805C10*)(S19805C14*), 0, "S19805C11");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C5*)(S19805C7*)(S19805C10*)(S19805C14*), 0, "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C7*), 0, "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C5*)(S19805C7*), 0, "S19805C11");
    check_base_class_offset(lv, (S7856C12*)(S19805C5*)(S19805C3*)(S19805C18*)(S19805C16*), 0, "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C5*), ABISELECT(80,44), "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C5*), ABISELECT(44,24), "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C5*)(S19805C3*), ABISELECT(44,24), "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C7*)(S19805C10*), ABISELECT(44,24), "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C5*)(S19805C7*)(S19805C10*), ABISELECT(44,24), "S19805C11");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C7*)(S19805C10*)(S19805C14*), ABISELECT(44,24), "S19805C11");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C5*)(S19805C7*)(S19805C10*)(S19805C14*), ABISELECT(44,24), "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C7*), ABISELECT(44,24), "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C5*)(S19805C7*), ABISELECT(44,24), "S19805C11");
    check_base_class_offset(lv, (S7856C24*)(S19805C5*)(S19805C3*)(S19805C18*)(S19805C16*), ABISELECT(44,24), "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C12 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C12*), ABISELECT(80,44), "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C8 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C8*), ABISELECT(80,44), "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C12 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C12*), ABISELECT(80,44), "S19805C11");
    /*is_ambiguous_... S19805C18::S19805C8 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C8*)(S19805C18*)(S19805C16*), ABISELECT(80,44), "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C13*), 0, "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C10*), 0, "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C8 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C8*), 0, "S19805C11");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C10*)(S19805C14*), 0, "S19805C11");
    /*is_ambiguous_... S19805C18::S19805C8 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C8*)(S19805C18*)(S19805C16*), 0, "S19805C11");
    check_base_class_offset(lv, (S7856C15*)(S19805C13*)(S19805C19*)(S19805C14*), 0, "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C12 */ AMB_check_base_class_offset(lv, (S19805C13*)(S19805C12*), 0, "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C12 */ AMB_check_base_class_offset(lv, (S19805C13*)(S19805C12*), 0, "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C3*), ABISELECT(48,28), "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C3*), ABISELECT(56,32), "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C5*)(S19805C3*), ABISELECT(48,28), "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C3 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C3*), ABISELECT(48,28), "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C12 */ AMB_check_base_class_offset(lv, (S19805C3*)(S19805C12*), ABISELECT(48,28), "S19805C11");
    /*is_ambiguous_... S19805C14::S19805C3 */ AMB_check_base_class_offset(lv, (S19805C3*)(S19805C14*), ABISELECT(48,28), "S19805C11");
    check_base_class_offset(lv, (S19805C3*)(S19805C9*), ABISELECT(48,28), "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C12 */ AMB_check_base_class_offset(lv, (S19805C3*)(S19805C12*), ABISELECT(48,28), "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C12*), 0, "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C8 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C8*), ABISELECT(80,44), "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C10 */ AMB_check_base_class_offset(lv, (S19805C8*)(S19805C10*), ABISELECT(80,44), "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C10 */ AMB_check_base_class_offset(lv, (S19805C8*)(S19805C7*)(S19805C10*), ABISELECT(80,44), "S19805C11");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S19805C8*)(S19805C10*)(S19805C14*), ABISELECT(80,44), "S19805C11");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S19805C8*)(S19805C7*)(S19805C10*)(S19805C14*), ABISELECT(80,44), "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C7 */ AMB_check_base_class_offset(lv, (S19805C8*)(S19805C7*), ABISELECT(80,44), "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C10*), ABISELECT(64,36), "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C7*)(S19805C10*), ABISELECT(72,40), "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C5*)(S19805C7*)(S19805C10*), ABISELECT(64,36), "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C10 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C7*)(S19805C10*), ABISELECT(64,36), "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C10 */ AMB_check_base_class_offset(lv, (S19805C7*)(S19805C10*), ABISELECT(64,36), "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C12 */ AMB_check_base_class_offset(lv, (S19805C10*)(S19805C12*), ABISELECT(64,36), "S19805C11");
    check_base_class_offset(lv, (S19805C10*)(S19805C15*), ABISELECT(64,36), "S19805C11");
    check_base_class_offset(lv, (S19805C10*)(S19805C9*), ABISELECT(64,36), "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C12 */ AMB_check_base_class_offset(lv, (S19805C10*)(S19805C12*), ABISELECT(64,36), "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C12 */ AMB_check_base_class_offset(lv, (S19805C12*), 0, "S19805C11");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C10*)(S19805C14*), ABISELECT(16,8), "S19805C11");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C7*)(S19805C10*)(S19805C14*), ABISELECT(24,12), "S19805C11");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C5*)(S19805C7*)(S19805C10*)(S19805C14*), ABISELECT(16,8), "S19805C11");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C7*)(S19805C10*)(S19805C14*), ABISELECT(16,8), "S19805C11");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S19805C7*)(S19805C10*)(S19805C14*), ABISELECT(16,8), "S19805C11");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S19805C10*)(S19805C14*), ABISELECT(16,8), "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C7*), ABISELECT(144,80), "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C5*)(S19805C7*), ABISELECT(136,76), "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C7 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C7*), ABISELECT(136,76), "S19805C11");
    /*is_ambiguous_... S19805C9::S19805C7 */ AMB_check_base_class_offset(lv, (S19805C7*)(S19805C9*), ABISELECT(136,76), "S19805C11");
    check_base_class_offset(lv, (S19805C7*)(S19805C18*)(S19805C16*), ABISELECT(136,76), "S19805C11");
    check_base_class_offset(lv, (S19805C9*)(S19805C16*), ABISELECT(120,64), "S19805C11");
    check_base_class_offset(lv, (S7856C9_nt*)(S19805C16*), 0, "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C12*), ABISELECT(152,84), "S19805C11");
    check_base_class_offset(lv, (S19805C12*)(S19805C16*), ABISELECT(152,84), "S19805C11");
    /*is_ambiguous_... S19805C3::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C3*)(S19805C18*)(S19805C16*), ABISELECT(88,48), "S19805C11");
    /*is_ambiguous_... S19805C3::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C3*)(S19805C18*)(S19805C16*), ABISELECT(96,52), "S19805C11");
    check_base_class_offset(lv, (S7856C15*)(S19805C5*)(S19805C3*)(S19805C18*)(S19805C16*), ABISELECT(88,48), "S19805C11");
    check_base_class_offset(lv, (S19805C5*)(S19805C3*)(S19805C18*)(S19805C16*), ABISELECT(88,48), "S19805C11");
    check_base_class_offset(lv, (S19805C3*)(S19805C18*)(S19805C16*), ABISELECT(88,48), "S19805C11");
    /*is_ambiguous_... S19805C18::S19805C8 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C8*)(S19805C18*)(S19805C16*), ABISELECT(104,56), "S19805C11");
    /*is_ambiguous_... S19805C18::S19805C8 */ AMB_check_base_class_offset(lv, (S19805C8*)(S19805C18*)(S19805C16*), ABISELECT(104,56), "S19805C11");
    /*is_ambiguous_... S19805C18::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C18*)(S19805C16*), ABISELECT(112,60), "S19805C11");
    check_base_class_offset(lv, (S19805C18*)(S19805C16*), ABISELECT(88,48), "S19805C11");
    check_base_class_offset(lv, (S19805C16*)(S19805C15*), ABISELECT(88,48), "S19805C11");
    check_base_class_offset(lv, (S19805C15*)(S19805C14*), ABISELECT(80,44), "S19805C11");
    /*is_ambiguous_... S19805C19::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C19*)(S19805C14*), ABISELECT(32,16), "S19805C11");
    check_base_class_offset(lv, (S19805C13*)(S19805C19*)(S19805C14*), ABISELECT(32,16), "S19805C11");
    check_base_class_offset(lv, (S19805C19*)(S19805C14*), ABISELECT(32,16), "S19805C11");
    check_base_class_offset(lv, (S77C13_nt*)(S19805C14*), ABISELECT(16,8), "S19805C11");
    check_base_class_offset(lv, (S19805C14*), ABISELECT(16,8), "S19805C11");
    /*is_ambiguous_... S19805C11::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*), 0, "S19805C11");
    test_class_info(&lv, &cd_S19805C11);
    dp->~S19805C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19805C11(Test_S19805C11, "S19805C11", ABISELECT(168,92));

#else // __cplusplus

extern void _ZN9S19805C11C1Ev();
extern void _ZN9S19805C11D1Ev();
Name_Map name_map_S19805C11[] = {
  NSPAIR(_ZN9S19805C11C1Ev),
  NSPAIR(_ZN9S19805C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C13;
extern VTBL_ENTRY _ZTI9S19805C13[];
extern  VTBL_ENTRY _ZTV9S19805C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C13[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S19805C3;
extern VTBL_ENTRY _ZTI8S19805C3[];
extern  VTBL_ENTRY _ZTV8S19805C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C3[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19805C8;
extern VTBL_ENTRY _ZTI8S19805C8[];
extern  VTBL_ENTRY _ZTV8S19805C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C8[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S19805C7;
extern VTBL_ENTRY _ZTI8S19805C7[];
extern  VTBL_ENTRY _ZTV8S19805C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C7[];
extern Class_Descriptor cd_S19805C10;
extern VTBL_ENTRY _ZTI9S19805C10[];
extern  VTBL_ENTRY _ZTV9S19805C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C10[];
extern Class_Descriptor cd_S19805C12;
extern VTBL_ENTRY _ZTI9S19805C12[];
extern  VTBL_ENTRY _ZTV9S19805C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S19805C7;
extern VTBL_ENTRY _ZTI8S19805C7[];
extern  VTBL_ENTRY _ZTV8S19805C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C7[];
extern Class_Descriptor cd_S19805C10;
extern VTBL_ENTRY _ZTI9S19805C10[];
extern  VTBL_ENTRY _ZTV9S19805C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C10[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S19805C7;
extern VTBL_ENTRY _ZTI8S19805C7[];
extern  VTBL_ENTRY _ZTV8S19805C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C7[];
extern Class_Descriptor cd_S19805C9;
extern VTBL_ENTRY _ZTI8S19805C9[];
extern  VTBL_ENTRY _ZTV8S19805C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C9[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19805C12;
extern VTBL_ENTRY _ZTI9S19805C12[];
extern  VTBL_ENTRY _ZTV9S19805C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S19805C3;
extern VTBL_ENTRY _ZTI8S19805C3[];
extern  VTBL_ENTRY _ZTV8S19805C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C3[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19805C8;
extern VTBL_ENTRY _ZTI8S19805C8[];
extern  VTBL_ENTRY _ZTV8S19805C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C8[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19805C18;
extern VTBL_ENTRY _ZTI9S19805C18[];
extern  VTBL_ENTRY _ZTV9S19805C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C18[];
extern Class_Descriptor cd_S19805C16;
extern VTBL_ENTRY _ZTI9S19805C16[];
extern  VTBL_ENTRY _ZTV9S19805C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C16[];
extern Class_Descriptor cd_S19805C15;
extern VTBL_ENTRY _ZTI9S19805C15[];
extern  VTBL_ENTRY _ZTV9S19805C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C13;
extern VTBL_ENTRY _ZTI9S19805C13[];
extern  VTBL_ENTRY _ZTV9S19805C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C13[];
extern Class_Descriptor cd_S19805C19;
extern VTBL_ENTRY _ZTI9S19805C19[];
extern  VTBL_ENTRY _ZTV9S19805C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C19[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19805C14;
extern VTBL_ENTRY _ZTI9S19805C14[];
extern  VTBL_ENTRY _ZTV9S19805C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
static Base_Class bases_S19805C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(44,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19805C5,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19805C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19805C5,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19805C3,    ABISELECT(48,28), //bcp->offset
    42, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19805C8,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19805C5,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19805C7,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19805C10,    ABISELECT(64,36), //bcp->offset
    46, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S19805C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19805C5,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S19805C7,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19805C10,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(144,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(136,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S19805C5,    ABISELECT(136,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    93, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S19805C7,    ABISELECT(136,76), //bcp->offset
    110, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    92, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S19805C9,    ABISELECT(120,64), //bcp->offset
    97, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    86, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    44, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    44, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(152,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S19805C12,    ABISELECT(152,84), //bcp->offset
    120, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    96, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    44, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S19805C5,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S19805C3,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    69, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S19805C8,    ABISELECT(104,56), //bcp->offset
    91, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S19805C18,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S19805C16,    ABISELECT(88,48), //bcp->offset
    74, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    45, //immediately_derived
  0, 1},
  {&cd_S19805C15,    ABISELECT(80,44), //bcp->offset
    56, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    50, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S19805C13,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S19805C19,    ABISELECT(32,16), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S19805C14,    ABISELECT(16,8), //bcp->offset
    19, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19805C11[];
extern void _ZN9S19805C11D1Ev();
extern void _ZN9S19805C11D0Ev();
extern void ABISELECT(_ZThn16_N9S19805C11D1Ev,_ZThn8_N9S19805C11D1Ev)();
extern void ABISELECT(_ZThn16_N9S19805C11D0Ev,_ZThn8_N9S19805C11D0Ev)();
extern void ABISELECT(_ZThn32_N9S19805C11D1Ev,_ZThn16_N9S19805C11D1Ev)();
extern void ABISELECT(_ZThn32_N9S19805C11D0Ev,_ZThn16_N9S19805C11D0Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19805C11D1Ev,_ZTv0_n32_N9S19805C11D1Ev)();
extern void ABISELECT(_ZThn64_N9S19805C11D1Ev,_ZThn36_N9S19805C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19805C11D0Ev,_ZTv0_n32_N9S19805C11D0Ev)();
extern void ABISELECT(_ZThn64_N9S19805C11D0Ev,_ZThn36_N9S19805C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N9S19805C11D1Ev,_ZTv0_n64_N9S19805C11D1Ev)();
extern void ABISELECT(_ZThn80_N9S19805C11D1Ev,_ZThn44_N9S19805C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N9S19805C11D0Ev,_ZTv0_n64_N9S19805C11D0Ev)();
extern void ABISELECT(_ZThn80_N9S19805C11D0Ev,_ZThn44_N9S19805C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N9S19805C11D1Ev,_ZTv0_n60_N9S19805C11D1Ev)();
extern void ABISELECT(_ZThn88_N9S19805C11D1Ev,_ZThn48_N9S19805C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N9S19805C11D0Ev,_ZTv0_n60_N9S19805C11D0Ev)();
extern void ABISELECT(_ZThn88_N9S19805C11D0Ev,_ZThn48_N9S19805C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19805C11D1Ev,_ZTv0_n44_N9S19805C11D1Ev)();
extern void ABISELECT(_ZThn120_N9S19805C11D1Ev,_ZThn64_N9S19805C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19805C11D0Ev,_ZTv0_n44_N9S19805C11D0Ev)();
extern void ABISELECT(_ZThn120_N9S19805C11D0Ev,_ZThn64_N9S19805C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19805C11D1Ev,_ZTv0_n32_N9S19805C11D1Ev)();
extern void ABISELECT(_ZThn136_N9S19805C11D1Ev,_ZThn76_N9S19805C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19805C11D0Ev,_ZTv0_n32_N9S19805C11D0Ev)();
extern void ABISELECT(_ZThn136_N9S19805C11D0Ev,_ZThn76_N9S19805C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19805C11D1Ev,_ZTv0_n44_N9S19805C11D1Ev)();
extern void ABISELECT(_ZThn152_N9S19805C11D1Ev,_ZThn84_N9S19805C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19805C11D0Ev,_ZTv0_n44_N9S19805C11D0Ev)();
extern void ABISELECT(_ZThn152_N9S19805C11D0Ev,_ZThn84_N9S19805C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19805C11[] = {
  0,
  ABISELECT(152,84),
  0,
  ABISELECT(136,76),
  ABISELECT(120,64),
  ABISELECT(88,48),
  ABISELECT(80,44),
  ABISELECT(80,44),
  ABISELECT(64,36),
  ABISELECT(48,28),
  0,
  ABISELECT(44,24),
  0,
  ABISELECT(80,44),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C11[0]),
  (VTBL_ENTRY)&_ZN9S19805C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C11D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(136,76),
  ABISELECT(-16,-8),
  ABISELECT(120,68),
  ABISELECT(104,56),
  ABISELECT(72,40),
  ABISELECT(48,28),
  ABISELECT(64,36),
  ABISELECT(32,20),
  ABISELECT(-16,-8),
  ABISELECT(64,36),
  ABISELECT(64,36),
  ABISELECT(28,16),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19805C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19805C11D1Ev,_ZThn8_N9S19805C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19805C11D0Ev,_ZThn8_N9S19805C11D0Ev),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19805C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19805C11D1Ev,_ZThn16_N9S19805C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19805C11D0Ev,_ZThn16_N9S19805C11D0Ev),
  -4,
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19805C11[0]),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S19805C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C11D1Ev,_ZTv0_n32_N9S19805C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C11D0Ev,_ZTv0_n32_N9S19805C11D0Ev),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(72,40),
  ABISELECT(-80,-44),
  ABISELECT(56,32),
  ABISELECT(-32,-16),
  ABISELECT(40,20),
  ABISELECT(8,4),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-80,-44),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S19805C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N9S19805C11D1Ev,_ZTv0_n64_N9S19805C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N9S19805C11D0Ev,_ZTv0_n64_N9S19805C11D0Ev),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(64,36),
  ABISELECT(-88,-48),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  ABISELECT(32,16),
  ABISELECT(-88,-48),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  ABISELECT(-44,-24),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI9S19805C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19805C11D1Ev,_ZTv0_n60_N9S19805C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19805C11D0Ev,_ZTv0_n60_N9S19805C11D0Ev),
  ABISELECT(-104,-56),
  ABISELECT(-24,-12),
  ABISELECT(-60,-32),
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI9S19805C11[0]),
  ABISELECT(-120,-64),
  ABISELECT(16,12),
  ABISELECT(-72,-36),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-120,-64),
  ABISELECT(-40,-20),
  ABISELECT(-76,-40),
  ABISELECT(-120,-64),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI9S19805C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C11D1Ev,_ZTv0_n44_N9S19805C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C11D0Ev,_ZTv0_n44_N9S19805C11D0Ev),
  ABISELECT(-136,-76),
  ABISELECT(-136,-76),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-92,-52),
  ABISELECT(-136,-76),
  ABISELECT(-136,-76),
  (VTBL_ENTRY)&(_ZTI9S19805C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C11D1Ev,_ZTv0_n32_N9S19805C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C11D0Ev,_ZTv0_n32_N9S19805C11D0Ev),
  ABISELECT(-152,-84),
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-104,-56),
  ABISELECT(-152,-84),
  ABISELECT(-108,-60),
  ABISELECT(-152,-84),
  ABISELECT(-72,-40),
  ABISELECT(-152,-84),
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI9S19805C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C11D1Ev,_ZTv0_n44_N9S19805C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C11D0Ev,_ZTv0_n44_N9S19805C11D0Ev),
};
extern VTBL_ENTRY _ZTV9S19805C11[];
extern void _ZN9S19805C12D1Ev();
extern void _ZN9S19805C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19805C12__A__9S19805C11[] = {
  ABISELECT(80,44),
  ABISELECT(64,36),
  ABISELECT(48,28),
  0,
  ABISELECT(44,24),
  0,
  ABISELECT(80,44),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C12[0]),
  (VTBL_ENTRY)&_ZN9S19805C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__9S19805C12__A__9S19805C11[] = {
  ABISELECT(-80,-44),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S19805C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C3__9S19805C12__A__9S19805C11[] = {
  -4,
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19805C12[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19805C12D1Ev,_ZTv0_n32_N9S19805C12D1Ev)();
extern void ABISELECT(_ZThn64_N9S19805C12D1Ev,_ZThn36_N9S19805C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19805C12D0Ev,_ZTv0_n32_N9S19805C12D0Ev)();
extern void ABISELECT(_ZThn64_N9S19805C12D0Ev,_ZThn36_N9S19805C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19805C10__9S19805C12__A__9S19805C11[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S19805C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C12D1Ev,_ZTv0_n32_N9S19805C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C12D0Ev,_ZTv0_n32_N9S19805C12D0Ev),
};
extern void _ZN9S19805C14D1Ev();
extern void _ZN9S19805C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19805C14__9S19805C11[] = {
  ABISELECT(-16,-8),
  ABISELECT(136,76),
  ABISELECT(-16,-8),
  ABISELECT(120,68),
  ABISELECT(104,56),
  ABISELECT(72,40),
  ABISELECT(48,28),
  ABISELECT(64,36),
  ABISELECT(32,20),
  ABISELECT(-16,-8),
  ABISELECT(64,36),
  ABISELECT(64,36),
  ABISELECT(28,16),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C14[0]),
  (VTBL_ENTRY)&_ZN9S19805C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C14D0Ev,
};
extern void _ZN9S19805C10D1Ev();
extern void _ZN9S19805C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19805C109S19805C14__A1__9S19805C11[] = {
  ABISELECT(-16,-8),
  ABISELECT(64,36),
  ABISELECT(64,36),
  ABISELECT(28,16),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C10[0]),
  (VTBL_ENTRY)&_ZN9S19805C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C10D0Ev,
};
extern void _ZN8S19805C7D1Ev();
extern void _ZN8S19805C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19805C79S19805C109S19805C14__A1__9S19805C11[] = {
  ABISELECT(-16,-8),
  ABISELECT(64,36),
  ABISELECT(64,36),
  ABISELECT(28,16),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C7[0]),
  (VTBL_ENTRY)&_ZN8S19805C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19805C7D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19805C58S19805C79S19805C109S19805C14__A3__9S19805C11[] = {
  ABISELECT(28,16),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__8S19805C79S19805C109S19805C14__A1__9S19805C11[] = {
  ABISELECT(-80,-44),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-80,-44),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S19805C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__9S19805C109S19805C14__A1__9S19805C11[] = {
  ABISELECT(-80,-44),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-80,-44),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S19805C10[0]),
};
extern void _ZN9S19805C19D1Ev();
extern void _ZN9S19805C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19805C199S19805C14__9S19805C11[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C19[0]),
  (VTBL_ENTRY)&_ZN9S19805C19D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C19D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19805C139S19805C199S19805C14__A1__9S19805C11[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C13[0]),
};
extern void ABISELECT(_ZTv0_n128_N9S19805C14D1Ev,_ZTv0_n64_N9S19805C14D1Ev)();
extern void ABISELECT(_ZThn64_N9S19805C14D1Ev,_ZThn36_N9S19805C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N9S19805C14D0Ev,_ZTv0_n64_N9S19805C14D0Ev)();
extern void ABISELECT(_ZThn64_N9S19805C14D0Ev,_ZThn36_N9S19805C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19805C15__9S19805C14__9S19805C11[] = {
  ABISELECT(-64,-36),
  ABISELECT(-80,-44),
  ABISELECT(72,40),
  ABISELECT(-80,-44),
  ABISELECT(56,32),
  ABISELECT(-32,-16),
  ABISELECT(40,20),
  ABISELECT(8,4),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-80,-44),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-80,-44),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S19805C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N9S19805C14D1Ev,_ZTv0_n64_N9S19805C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N9S19805C14D0Ev,_ZTv0_n64_N9S19805C14D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19805C3__9S19805C14__9S19805C11[] = {
  -4,
  ABISELECT(-48,-28),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S19805C14[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19805C14D1Ev,_ZTv0_n32_N9S19805C14D1Ev)();
extern void ABISELECT(_ZThn48_N9S19805C14D1Ev,_ZThn28_N9S19805C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19805C14D0Ev,_ZTv0_n32_N9S19805C14D0Ev)();
extern void ABISELECT(_ZThn48_N9S19805C14D0Ev,_ZThn28_N9S19805C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19805C10__A1__9S19805C14__9S19805C11[] = {
  ABISELECT(-48,-28),
  ABISELECT(-64,-36),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-64,-36),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19805C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C14D1Ev,_ZTv0_n32_N9S19805C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C14D0Ev,_ZTv0_n32_N9S19805C14D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N9S19805C14D1Ev,_ZTv0_n60_N9S19805C14D1Ev)();
extern void ABISELECT(_ZThn72_N9S19805C14D1Ev,_ZThn40_N9S19805C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N9S19805C14D0Ev,_ZTv0_n60_N9S19805C14D0Ev)();
extern void ABISELECT(_ZThn72_N9S19805C14D0Ev,_ZThn40_N9S19805C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19805C16__9S19805C14__9S19805C11[] = {
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(64,36),
  ABISELECT(-88,-48),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  ABISELECT(32,16),
  ABISELECT(-88,-48),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  ABISELECT(-44,-24),
  ABISELECT(-88,-48),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S19805C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19805C14D1Ev,_ZTv0_n60_N9S19805C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19805C14D0Ev,_ZTv0_n60_N9S19805C14D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N9S19805C14D1Ev,_ZTv0_n44_N9S19805C14D1Ev)();
extern void ABISELECT(_ZThn104_N9S19805C14D1Ev,_ZThn56_N9S19805C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19805C14D0Ev,_ZTv0_n44_N9S19805C14D0Ev)();
extern void ABISELECT(_ZThn104_N9S19805C14D0Ev,_ZThn56_N9S19805C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19805C9__9S19805C14__9S19805C11[] = {
  ABISELECT(-104,-56),
  ABISELECT(16,12),
  ABISELECT(-72,-36),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-120,-64),
  ABISELECT(-40,-20),
  ABISELECT(-76,-40),
  ABISELECT(-120,-64),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI9S19805C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C14D1Ev,_ZTv0_n44_N9S19805C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C14D0Ev,_ZTv0_n44_N9S19805C14D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N9S19805C14D1Ev,_ZTv0_n32_N9S19805C14D1Ev)();
extern void ABISELECT(_ZThn120_N9S19805C14D1Ev,_ZThn68_N9S19805C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19805C14D0Ev,_ZTv0_n32_N9S19805C14D0Ev)();
extern void ABISELECT(_ZThn120_N9S19805C14D0Ev,_ZThn68_N9S19805C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19805C7__A2__9S19805C14__9S19805C11[] = {
  ABISELECT(-120,-68),
  ABISELECT(-136,-76),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-92,-52),
  ABISELECT(-136,-76),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI9S19805C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C14D1Ev,_ZTv0_n32_N9S19805C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C14D0Ev,_ZTv0_n32_N9S19805C14D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N9S19805C14D1Ev,_ZTv0_n44_N9S19805C14D1Ev)();
extern void ABISELECT(_ZThn136_N9S19805C14D1Ev,_ZThn76_N9S19805C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19805C14D0Ev,_ZTv0_n44_N9S19805C14D0Ev)();
extern void ABISELECT(_ZThn136_N9S19805C14D0Ev,_ZThn76_N9S19805C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19805C12__9S19805C14__9S19805C11[] = {
  ABISELECT(-136,-76),
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-104,-56),
  ABISELECT(-152,-84),
  ABISELECT(-108,-60),
  ABISELECT(-152,-84),
  ABISELECT(-72,-40),
  ABISELECT(-152,-84),
  ABISELECT(-136,-76),
  (VTBL_ENTRY)&(_ZTI9S19805C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C14D1Ev,_ZTv0_n44_N9S19805C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C14D0Ev,_ZTv0_n44_N9S19805C14D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19805C13__9S19805C14__9S19805C11[] = {
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S19805C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C89S19805C189S19805C16__A1__9S19805C14__9S19805C11[] = {
  ABISELECT(-104,-56),
  ABISELECT(-24,-12),
  ABISELECT(-60,-32),
  ABISELECT(-104,-56),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI9S19805C14[0]),
};
extern void ABISELECT(_ZThn16_N9S19805C14D1Ev,_ZThn8_N9S19805C14D1Ev)();
extern void ABISELECT(_ZThn16_N9S19805C14D0Ev,_ZThn8_N9S19805C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19805C19__9S19805C14__9S19805C11[] = {
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19805C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19805C14D1Ev,_ZThn8_N9S19805C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19805C14D0Ev,_ZThn8_N9S19805C14D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19805C5__9S19805C11[] = {
  ABISELECT(-36,-20),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19805C13__9S19805C11[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C3__9S19805C11[] = {
  -4,
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C58S19805C3__A1__9S19805C11[] = {
  -4,
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
extern void _ZN9S19805C10D1Ev();
extern void _ZN9S19805C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19805C10__9S19805C11[] = {
  ABISELECT(-64,-36),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C10[0]),
  (VTBL_ENTRY)&_ZN9S19805C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C10D0Ev,
};
extern void _ZN8S19805C7D1Ev();
extern void _ZN8S19805C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19805C79S19805C10__9S19805C11[] = {
  ABISELECT(-64,-36),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C7[0]),
  (VTBL_ENTRY)&_ZN8S19805C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19805C7D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19805C58S19805C79S19805C10__A2__9S19805C11[] = {
  ABISELECT(-20,-12),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__8S19805C79S19805C10__9S19805C11[] = {
  ABISELECT(-80,-44),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-80,-44),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19805C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__9S19805C10__9S19805C11[] = {
  ABISELECT(-80,-44),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-80,-44),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19805C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__9S19805C11[] = {
  ABISELECT(-80,-44),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C8[0]),
};
extern void _ZN9S19805C15D1Ev();
extern void _ZN9S19805C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19805C15__9S19805C11[] = {
  ABISELECT(-80,-44),
  ABISELECT(72,40),
  ABISELECT(-80,-44),
  ABISELECT(56,32),
  ABISELECT(-32,-16),
  ABISELECT(40,20),
  ABISELECT(8,4),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-80,-44),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C15[0]),
  (VTBL_ENTRY)&_ZN9S19805C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C15D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N9S19805C15D1Ev,_ZTv0_n32_N9S19805C15D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19805C15D0Ev,_ZTv0_n32_N9S19805C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19805C10__9S19805C15__9S19805C11[] = {
  ABISELECT(16,8),
  ABISELECT(-64,-36),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-64,-36),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S19805C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C15D1Ev,_ZTv0_n32_N9S19805C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C15D0Ev,_ZTv0_n32_N9S19805C15D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N9S19805C15D1Ev,_ZTv0_n60_N9S19805C15D1Ev)();
extern void ABISELECT(_ZThn8_N9S19805C15D1Ev,_ZThn4_N9S19805C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N9S19805C15D0Ev,_ZTv0_n60_N9S19805C15D0Ev)();
extern void ABISELECT(_ZThn8_N9S19805C15D0Ev,_ZThn4_N9S19805C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19805C16__9S19805C15__9S19805C11[] = {
  ABISELECT(-8,-4),
  ABISELECT(-88,-48),
  ABISELECT(64,36),
  ABISELECT(-88,-48),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  ABISELECT(32,16),
  ABISELECT(-88,-48),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  ABISELECT(-44,-24),
  ABISELECT(-88,-48),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19805C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19805C15D1Ev,_ZTv0_n60_N9S19805C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19805C15D0Ev,_ZTv0_n60_N9S19805C15D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N9S19805C15D1Ev,_ZTv0_n44_N9S19805C15D1Ev)();
extern void ABISELECT(_ZThn40_N9S19805C15D1Ev,_ZThn20_N9S19805C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19805C15D0Ev,_ZTv0_n44_N9S19805C15D0Ev)();
extern void ABISELECT(_ZThn40_N9S19805C15D0Ev,_ZThn20_N9S19805C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19805C9__9S19805C15__9S19805C11[] = {
  ABISELECT(-40,-20),
  ABISELECT(16,12),
  ABISELECT(-72,-36),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-120,-64),
  ABISELECT(-40,-20),
  ABISELECT(-76,-40),
  ABISELECT(-120,-64),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19805C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C15D1Ev,_ZTv0_n44_N9S19805C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C15D0Ev,_ZTv0_n44_N9S19805C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19805C3__9S19805C15__9S19805C11[] = {
  -4,
  ABISELECT(-48,-28),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S19805C15[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19805C15D1Ev,_ZTv0_n32_N9S19805C15D1Ev)();
extern void ABISELECT(_ZThn56_N9S19805C15D1Ev,_ZThn32_N9S19805C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19805C15D0Ev,_ZTv0_n32_N9S19805C15D0Ev)();
extern void ABISELECT(_ZThn56_N9S19805C15D0Ev,_ZThn32_N9S19805C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19805C7__A1__9S19805C15__9S19805C11[] = {
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-92,-52),
  ABISELECT(-136,-76),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S19805C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C15D1Ev,_ZTv0_n32_N9S19805C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C15D0Ev,_ZTv0_n32_N9S19805C15D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N9S19805C15D1Ev,_ZTv0_n44_N9S19805C15D1Ev)();
extern void ABISELECT(_ZThn72_N9S19805C15D1Ev,_ZThn40_N9S19805C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19805C15D0Ev,_ZTv0_n44_N9S19805C15D0Ev)();
extern void ABISELECT(_ZThn72_N9S19805C15D0Ev,_ZThn40_N9S19805C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19805C12__9S19805C15__9S19805C11[] = {
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-104,-56),
  ABISELECT(-152,-84),
  ABISELECT(-108,-60),
  ABISELECT(-152,-84),
  ABISELECT(-72,-40),
  ABISELECT(-152,-84),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S19805C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C15D1Ev,_ZTv0_n44_N9S19805C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C15D0Ev,_ZTv0_n44_N9S19805C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19805C13__9S19805C15__9S19805C11[] = {
  0,
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI9S19805C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C89S19805C189S19805C16__A1__9S19805C15__9S19805C11[] = {
  ABISELECT(-104,-56),
  ABISELECT(-24,-12),
  ABISELECT(-60,-32),
  ABISELECT(-104,-56),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19805C15[0]),
};
extern void _ZN9S19805C16D1Ev();
extern void _ZN9S19805C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19805C16__9S19805C11[] = {
  ABISELECT(-88,-48),
  ABISELECT(64,36),
  ABISELECT(-88,-48),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  ABISELECT(32,16),
  ABISELECT(-88,-48),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  ABISELECT(-44,-24),
  ABISELECT(-88,-48),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
  (VTBL_ENTRY)&_ZN9S19805C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C16D0Ev,
};
extern void _ZN9S19805C18D1Ev();
extern void _ZN9S19805C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19805C189S19805C16__9S19805C11[] = {
  ABISELECT(-88,-48),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  ABISELECT(-44,-24),
  ABISELECT(-88,-48),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C18[0]),
  (VTBL_ENTRY)&_ZN9S19805C18D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19805C39S19805C189S19805C16__A1__9S19805C11[] = {
  ABISELECT(-44,-24),
  ABISELECT(-88,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C58S19805C39S19805C189S19805C16__A5__9S19805C11[] = {
  ABISELECT(-44,-24),
  ABISELECT(-88,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C89S19805C189S19805C16__A1__9S19805C11[] = {
  ABISELECT(-104,-56),
  ABISELECT(-24,-12),
  ABISELECT(-60,-32),
  ABISELECT(-104,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C5__8S19805C89S19805C189S19805C16__A1__9S19805C11[] = {
  ABISELECT(-36,-20),
  ABISELECT(-80,-44),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S19805C8[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19805C18D1Ev,_ZTv0_n32_N9S19805C18D1Ev)();
extern void ABISELECT(_ZThn48_N9S19805C18D1Ev,_ZThn28_N9S19805C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19805C18D0Ev,_ZTv0_n32_N9S19805C18D0Ev)();
extern void ABISELECT(_ZThn48_N9S19805C18D0Ev,_ZThn28_N9S19805C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19805C7__9S19805C189S19805C16__9S19805C11[] = {
  ABISELECT(-48,-28),
  ABISELECT(-136,-76),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-92,-52),
  ABISELECT(-136,-76),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19805C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C18D1Ev,_ZTv0_n32_N9S19805C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C18D0Ev,_ZTv0_n32_N9S19805C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__9S19805C189S19805C16__9S19805C11[] = {
  ABISELECT(-80,-44),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-80,-44),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI9S19805C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__A__9S19805C189S19805C16__9S19805C11[] = {
  ABISELECT(-104,-56),
  ABISELECT(-24,-12),
  ABISELECT(-60,-32),
  ABISELECT(-104,-56),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19805C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N9S19805C16D1Ev,_ZTv0_n44_N9S19805C16D1Ev)();
extern void ABISELECT(_ZThn32_N9S19805C16D1Ev,_ZThn16_N9S19805C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19805C16D0Ev,_ZTv0_n44_N9S19805C16D0Ev)();
extern void ABISELECT(_ZThn32_N9S19805C16D0Ev,_ZThn16_N9S19805C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19805C9__9S19805C16__9S19805C11[] = {
  ABISELECT(-32,-16),
  ABISELECT(16,12),
  ABISELECT(-72,-36),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-120,-64),
  ABISELECT(-40,-20),
  ABISELECT(-76,-40),
  ABISELECT(-120,-64),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C16D1Ev,_ZTv0_n44_N9S19805C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C16D0Ev,_ZTv0_n44_N9S19805C16D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N9S19805C16D1Ev,_ZTv0_n32_N9S19805C16D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19805C16D0Ev,_ZTv0_n32_N9S19805C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19805C10__9S19805C16__9S19805C11[] = {
  ABISELECT(24,12),
  ABISELECT(-64,-36),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-64,-36),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C16D1Ev,_ZTv0_n32_N9S19805C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C16D0Ev,_ZTv0_n32_N9S19805C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__9S19805C16__9S19805C11[] = {
  ABISELECT(-80,-44),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-80,-44),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C3__9S19805C16__9S19805C11[] = {
  -4,
  ABISELECT(-48,-28),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19805C16D1Ev,_ZTv0_n32_N9S19805C16D1Ev)();
extern void ABISELECT(_ZThn48_N9S19805C16D1Ev,_ZThn28_N9S19805C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19805C16D0Ev,_ZTv0_n32_N9S19805C16D0Ev)();
extern void ABISELECT(_ZThn48_N9S19805C16D0Ev,_ZThn28_N9S19805C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19805C7__A1__9S19805C16__9S19805C11[] = {
  ABISELECT(-48,-28),
  ABISELECT(-136,-76),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-92,-52),
  ABISELECT(-136,-76),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C16D1Ev,_ZTv0_n32_N9S19805C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C16D0Ev,_ZTv0_n32_N9S19805C16D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N9S19805C16D1Ev,_ZTv0_n44_N9S19805C16D1Ev)();
extern void ABISELECT(_ZThn64_N9S19805C16D1Ev,_ZThn36_N9S19805C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19805C16D0Ev,_ZTv0_n44_N9S19805C16D0Ev)();
extern void ABISELECT(_ZThn64_N9S19805C16D0Ev,_ZThn36_N9S19805C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19805C12__9S19805C16__9S19805C11[] = {
  ABISELECT(-64,-36),
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-104,-56),
  ABISELECT(-152,-84),
  ABISELECT(-108,-60),
  ABISELECT(-152,-84),
  ABISELECT(-72,-40),
  ABISELECT(-152,-84),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C16D1Ev,_ZTv0_n44_N9S19805C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C16D0Ev,_ZTv0_n44_N9S19805C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19805C13__9S19805C16__9S19805C11[] = {
  0,
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C89S19805C18__A1__9S19805C16__9S19805C11[] = {
  ABISELECT(-104,-56),
  ABISELECT(-24,-12),
  ABISELECT(-60,-32),
  ABISELECT(-104,-56),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
};
extern void _ZN8S19805C9D1Ev();
extern void _ZN8S19805C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19805C9__9S19805C11[] = {
  ABISELECT(16,12),
  ABISELECT(-72,-36),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-120,-64),
  ABISELECT(-40,-20),
  ABISELECT(-76,-40),
  ABISELECT(-120,-64),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C9[0]),
  (VTBL_ENTRY)&_ZN8S19805C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19805C9D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N8S19805C9D1Ev,_ZTv0_n32_N8S19805C9D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S19805C9D0Ev,_ZTv0_n32_N8S19805C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19805C10__8S19805C9__9S19805C11[] = {
  ABISELECT(56,28),
  ABISELECT(-64,-36),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-64,-36),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI8S19805C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19805C9D1Ev,_ZTv0_n32_N8S19805C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19805C9D0Ev,_ZTv0_n32_N8S19805C9D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__8S19805C9__9S19805C11[] = {
  ABISELECT(-80,-44),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-80,-44),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S19805C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C3__8S19805C9__9S19805C11[] = {
  -4,
  ABISELECT(-48,-28),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI8S19805C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S19805C9D1Ev,_ZTv0_n32_N8S19805C9D1Ev)();
extern void ABISELECT(_ZThn16_N8S19805C9D1Ev,_ZThn12_N8S19805C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19805C9D0Ev,_ZTv0_n32_N8S19805C9D0Ev)();
extern void ABISELECT(_ZThn16_N8S19805C9D0Ev,_ZThn12_N8S19805C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19805C7__A1__8S19805C9__9S19805C11[] = {
  ABISELECT(-16,-12),
  ABISELECT(-136,-76),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-92,-52),
  ABISELECT(-136,-76),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19805C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19805C9D1Ev,_ZTv0_n32_N8S19805C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19805C9D0Ev,_ZTv0_n32_N8S19805C9D0Ev),
};
extern void _ZN8S19805C7D1Ev();
extern void _ZN8S19805C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19805C7__A2__9S19805C11[] = {
  ABISELECT(-136,-76),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-92,-52),
  ABISELECT(-136,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C7[0]),
  (VTBL_ENTRY)&_ZN8S19805C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19805C7D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19805C58S19805C7__A4__9S19805C11[] = {
  ABISELECT(-92,-52),
  ABISELECT(-136,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__8S19805C7__A2__9S19805C11[] = {
  ABISELECT(-80,-44),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-80,-44),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI8S19805C7[0]),
};
extern void _ZN9S19805C12D1Ev();
extern void _ZN9S19805C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19805C12__A1__9S19805C11[] = {
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-104,-56),
  ABISELECT(-152,-84),
  ABISELECT(-108,-60),
  ABISELECT(-152,-84),
  ABISELECT(-72,-40),
  ABISELECT(-152,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C12[0]),
  (VTBL_ENTRY)&_ZN9S19805C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__9S19805C12__A1__9S19805C11[] = {
  ABISELECT(-80,-44),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-80,-44),
  ABISELECT(72,40),
  (VTBL_ENTRY)&(_ZTI9S19805C12[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19805C13__9S19805C12__A1__9S19805C11[] = {
  0,
  ABISELECT(152,84),
  (VTBL_ENTRY)&(_ZTI9S19805C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C3__9S19805C12__A1__9S19805C11[] = {
  -4,
  ABISELECT(-48,-28),
  ABISELECT(104,56),
  (VTBL_ENTRY)&(_ZTI9S19805C12[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19805C12D1Ev,_ZTv0_n32_N9S19805C12D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19805C12D0Ev,_ZTv0_n32_N9S19805C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19805C10__9S19805C12__A1__9S19805C11[] = {
  ABISELECT(88,48),
  ABISELECT(-64,-36),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-64,-36),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI9S19805C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C12D1Ev,_ZTv0_n32_N9S19805C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C12D0Ev,_ZTv0_n32_N9S19805C12D0Ev),
};
static  VTT_ENTRY vtt_S19805C11[] = {
  {&(_ZTV9S19805C11[17]),  17,133},
  {&(_tg__ZTV9S19805C12__A__9S19805C11[10]),  10,12},
  {&(_tg__ZTV8S19805C8__9S19805C12__A__9S19805C11[6]),  6,6},
  {&(_tg__ZTV9S19805C12__A__9S19805C11[10]),  10,12},
  {&(_tg__ZTV8S19805C3__9S19805C12__A__9S19805C11[4]),  4,4},
  {&(_tg__ZTV9S19805C10__9S19805C12__A__9S19805C11[8]),  8,10},
  {&(_tg__ZTV8S19805C8__9S19805C12__A__9S19805C11[6]),  6,6},
  {&(_tg__ZTV9S19805C14__9S19805C11[16]),  16,18},
  {&(_tg__ZTV9S19805C109S19805C14__A1__9S19805C11[7]),  7,9},
  {&(_tg__ZTV8S19805C79S19805C109S19805C14__A1__9S19805C11[7]),  7,9},
  {&(_tg__ZTV8S19805C58S19805C79S19805C109S19805C14__A3__9S19805C11[4]),  4,4},
  {&(_tg__ZTV8S19805C8__8S19805C79S19805C109S19805C14__A1__9S19805C11[6]),  6,6},
  {&(_tg__ZTV8S19805C8__8S19805C79S19805C109S19805C14__A1__9S19805C11[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C109S19805C14__A1__9S19805C11[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C109S19805C14__A1__9S19805C11[6]),  6,6},
  {&(_tg__ZTV9S19805C199S19805C14__9S19805C11[3]),  3,5},
  {&(_tg__ZTV9S19805C139S19805C199S19805C14__A1__9S19805C11[3]),  3,3},
  {&(_tg__ZTV9S19805C15__9S19805C14__9S19805C11[16]),  16,18},
  {&(_tg__ZTV9S19805C15__9S19805C14__9S19805C11[16]),  16,18},
  {&(_tg__ZTV8S19805C3__9S19805C14__9S19805C11[4]),  4,4},
  {&(_tg__ZTV9S19805C15__9S19805C14__9S19805C11[16]),  16,18},
  {&(_tg__ZTV9S19805C10__A1__9S19805C14__9S19805C11[8]),  8,10},
  {&(_tg__ZTV9S19805C16__9S19805C14__9S19805C11[15]),  15,17},
  {&(_tg__ZTV8S19805C9__9S19805C14__9S19805C11[11]),  11,13},
  {&(_tg__ZTV8S19805C7__A2__9S19805C14__9S19805C11[8]),  8,10},
  {&(_tg__ZTV9S19805C12__9S19805C14__9S19805C11[11]),  11,13},
  {&(_tg__ZTV9S19805C13__9S19805C14__9S19805C11[3]),  3,3},
  {&(_tg__ZTV8S19805C89S19805C189S19805C16__A1__9S19805C14__9S19805C11[6]),  6,6},
  {&(_tg__ZTV9S19805C19__9S19805C14__9S19805C11[3]),  3,5},
  {&(_ZTV9S19805C11[72]),  72,133},
  {&(_ZTV9S19805C11[17]),  17,133},
  {&(_ZTV9S19805C11[46]),  46,133},
  {&(_ZTV9S19805C11[54]),  54,133},
  {&(_ZTV9S19805C11[72]),  72,133},
  {&(_ZTV9S19805C11[35]),  35,133},
  {&(_ZTV9S19805C11[72]),  72,133},
  {&(_ZTV9S19805C11[89]),  89,133},
  {&(_ZTV9S19805C11[108]),  108,133},
  {&(_ZTV9S19805C11[118]),  118,133},
  {&(_ZTV9S19805C11[131]),  131,133},
  {&(_ZTV9S19805C11[97]),  97,133},
  {&(_ZTV9S19805C11[40]),  40,133},
  {&(_tg__ZTV8S19805C5__9S19805C11[4]),  4,4},
  {&(_tg__ZTV9S19805C13__9S19805C11[3]),  3,3},
  {&(_tg__ZTV8S19805C3__9S19805C11[4]),  4,4},
  {&(_tg__ZTV8S19805C58S19805C3__A1__9S19805C11[4]),  4,4},
  {&(_tg__ZTV9S19805C10__9S19805C11[7]),  7,9},
  {&(_tg__ZTV8S19805C79S19805C10__9S19805C11[7]),  7,9},
  {&(_tg__ZTV8S19805C58S19805C79S19805C10__A2__9S19805C11[4]),  4,4},
  {&(_tg__ZTV8S19805C8__8S19805C79S19805C10__9S19805C11[6]),  6,6},
  {&(_tg__ZTV8S19805C8__8S19805C79S19805C10__9S19805C11[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C10__9S19805C11[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C10__9S19805C11[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C11[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C11[6]),  6,6},
  {&(_tg__ZTV9S19805C15__9S19805C11[15]),  15,17},
  {&(_tg__ZTV9S19805C10__9S19805C15__9S19805C11[8]),  8,10},
  {&(_tg__ZTV9S19805C15__9S19805C11[15]),  15,17},
  {&(_tg__ZTV9S19805C15__9S19805C11[15]),  15,17},
  {&(_tg__ZTV9S19805C16__9S19805C15__9S19805C11[15]),  15,17},
  {&(_tg__ZTV8S19805C9__9S19805C15__9S19805C11[11]),  11,13},
  {&(_tg__ZTV8S19805C3__9S19805C15__9S19805C11[4]),  4,4},
  {&(_tg__ZTV8S19805C7__A1__9S19805C15__9S19805C11[8]),  8,10},
  {&(_tg__ZTV9S19805C12__9S19805C15__9S19805C11[11]),  11,13},
  {&(_tg__ZTV9S19805C13__9S19805C15__9S19805C11[3]),  3,3},
  {&(_tg__ZTV8S19805C89S19805C189S19805C16__A1__9S19805C15__9S19805C11[6]),  6,6},
  {&(_tg__ZTV9S19805C16__9S19805C11[14]),  14,16},
  {&(_tg__ZTV9S19805C189S19805C16__9S19805C11[8]),  8,10},
  {&(_tg__ZTV8S19805C39S19805C189S19805C16__A1__9S19805C11[4]),  4,4},
  {&(_tg__ZTV8S19805C58S19805C39S19805C189S19805C16__A5__9S19805C11[4]),  4,4},
  {&(_tg__ZTV8S19805C89S19805C189S19805C16__A1__9S19805C11[6]),  6,6},
  {&(_tg__ZTV8S19805C5__8S19805C89S19805C189S19805C16__A1__9S19805C11[4]),  4,4},
  {&(_tg__ZTV8S19805C7__9S19805C189S19805C16__9S19805C11[8]),  8,10},
  {&(_tg__ZTV8S19805C8__9S19805C189S19805C16__9S19805C11[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C189S19805C16__9S19805C11[6]),  6,6},
  {&(_tg__ZTV8S19805C8__A__9S19805C189S19805C16__9S19805C11[6]),  6,6},
  {&(_tg__ZTV8S19805C9__9S19805C16__9S19805C11[11]),  11,13},
  {&(_tg__ZTV9S19805C10__9S19805C16__9S19805C11[8]),  8,10},
  {&(_tg__ZTV8S19805C8__9S19805C16__9S19805C11[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C16__9S19805C11[6]),  6,6},
  {&(_tg__ZTV8S19805C3__9S19805C16__9S19805C11[4]),  4,4},
  {&(_tg__ZTV8S19805C7__A1__9S19805C16__9S19805C11[8]),  8,10},
  {&(_tg__ZTV9S19805C12__9S19805C16__9S19805C11[11]),  11,13},
  {&(_tg__ZTV9S19805C13__9S19805C16__9S19805C11[3]),  3,3},
  {&(_tg__ZTV8S19805C89S19805C18__A1__9S19805C16__9S19805C11[6]),  6,6},
  {&(_tg__ZTV8S19805C9__9S19805C11[10]),  10,12},
  {&(_tg__ZTV9S19805C10__8S19805C9__9S19805C11[8]),  8,10},
  {&(_tg__ZTV8S19805C8__8S19805C9__9S19805C11[6]),  6,6},
  {&(_tg__ZTV8S19805C8__8S19805C9__9S19805C11[6]),  6,6},
  {&(_tg__ZTV8S19805C3__8S19805C9__9S19805C11[4]),  4,4},
  {&(_tg__ZTV8S19805C7__A1__8S19805C9__9S19805C11[8]),  8,10},
  {&(_tg__ZTV8S19805C7__A2__9S19805C11[7]),  7,9},
  {&(_tg__ZTV8S19805C58S19805C7__A4__9S19805C11[4]),  4,4},
  {&(_tg__ZTV8S19805C8__8S19805C7__A2__9S19805C11[6]),  6,6},
  {&(_tg__ZTV8S19805C8__8S19805C7__A2__9S19805C11[6]),  6,6},
  {&(_tg__ZTV9S19805C12__A1__9S19805C11[10]),  10,12},
  {&(_tg__ZTV8S19805C8__9S19805C12__A1__9S19805C11[6]),  6,6},
  {&(_tg__ZTV9S19805C13__9S19805C12__A1__9S19805C11[3]),  3,3},
  {&(_tg__ZTV8S19805C3__9S19805C12__A1__9S19805C11[4]),  4,4},
  {&(_tg__ZTV9S19805C10__9S19805C12__A1__9S19805C11[8]),  8,10},
  {&(_tg__ZTV8S19805C8__9S19805C12__A1__9S19805C11[6]),  6,6},
};
extern VTBL_ENTRY _ZTI9S19805C11[];
extern  VTBL_ENTRY _ZTV9S19805C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C11[];
static VTBL_ENTRY alt_thunk_names133[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19805C9D0Ev,_ZTv0_n32_N8S19805C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19805C9D0Ev,_ZThn12_N8S19805C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19805C9D1Ev,_ZTv0_n32_N8S19805C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19805C9D1Ev,_ZThn12_N8S19805C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C16D0Ev,_ZTv0_n32_N9S19805C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19805C16D0Ev,_ZThn28_N9S19805C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C16D1Ev,_ZTv0_n32_N9S19805C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19805C16D1Ev,_ZThn28_N9S19805C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19805C16D0Ev,_ZTv0_n44_N9S19805C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19805C16D0Ev,_ZThn36_N9S19805C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19805C16D0Ev,_ZThn16_N9S19805C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19805C16D1Ev,_ZTv0_n44_N9S19805C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19805C16D1Ev,_ZThn36_N9S19805C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19805C16D1Ev,_ZThn16_N9S19805C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C18D0Ev,_ZTv0_n32_N9S19805C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19805C18D0Ev,_ZThn28_N9S19805C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C18D1Ev,_ZTv0_n32_N9S19805C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19805C18D1Ev,_ZThn28_N9S19805C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C15D0Ev,_ZTv0_n32_N9S19805C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19805C15D0Ev,_ZThn32_N9S19805C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C15D1Ev,_ZTv0_n32_N9S19805C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19805C15D1Ev,_ZThn32_N9S19805C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19805C15D0Ev,_ZTv0_n44_N9S19805C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19805C15D0Ev,_ZThn40_N9S19805C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19805C15D0Ev,_ZThn20_N9S19805C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19805C15D1Ev,_ZTv0_n44_N9S19805C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19805C15D1Ev,_ZThn40_N9S19805C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19805C15D1Ev,_ZThn20_N9S19805C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19805C15D0Ev,_ZTv0_n60_N9S19805C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19805C15D0Ev,_ZThn4_N9S19805C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19805C15D1Ev,_ZTv0_n60_N9S19805C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19805C15D1Ev,_ZThn4_N9S19805C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19805C14D0Ev,_ZTv0_n44_N9S19805C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19805C14D0Ev,_ZThn76_N9S19805C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19805C14D0Ev,_ZThn56_N9S19805C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19805C14D1Ev,_ZTv0_n44_N9S19805C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19805C14D1Ev,_ZThn76_N9S19805C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19805C14D1Ev,_ZThn56_N9S19805C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19805C14D0Ev,_ZTv0_n60_N9S19805C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19805C14D0Ev,_ZThn40_N9S19805C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19805C14D1Ev,_ZTv0_n60_N9S19805C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19805C14D1Ev,_ZThn40_N9S19805C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C14D0Ev,_ZTv0_n32_N9S19805C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S19805C14D0Ev,_ZThn68_N9S19805C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19805C14D0Ev,_ZThn28_N9S19805C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C14D1Ev,_ZTv0_n32_N9S19805C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S19805C14D1Ev,_ZThn68_N9S19805C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19805C14D1Ev,_ZThn28_N9S19805C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N9S19805C14D0Ev,_ZTv0_n64_N9S19805C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19805C14D0Ev,_ZThn36_N9S19805C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N9S19805C14D1Ev,_ZTv0_n64_N9S19805C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19805C14D1Ev,_ZThn36_N9S19805C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C12D0Ev,_ZTv0_n32_N9S19805C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19805C12D0Ev,_ZThn36_N9S19805C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C12D1Ev,_ZTv0_n32_N9S19805C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19805C12D1Ev,_ZThn36_N9S19805C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19805C11D0Ev,_ZTv0_n44_N9S19805C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S19805C11D0Ev,_ZThn84_N9S19805C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S19805C11D0Ev,_ZThn64_N9S19805C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19805C11D1Ev,_ZTv0_n44_N9S19805C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S19805C11D1Ev,_ZThn84_N9S19805C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S19805C11D1Ev,_ZThn64_N9S19805C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19805C11D0Ev,_ZTv0_n60_N9S19805C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19805C11D0Ev,_ZThn48_N9S19805C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19805C11D1Ev,_ZTv0_n60_N9S19805C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19805C11D1Ev,_ZThn48_N9S19805C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N9S19805C11D0Ev,_ZTv0_n64_N9S19805C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19805C11D0Ev,_ZThn44_N9S19805C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N9S19805C11D1Ev,_ZTv0_n64_N9S19805C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19805C11D1Ev,_ZThn44_N9S19805C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C11D0Ev,_ZTv0_n32_N9S19805C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19805C11D0Ev,_ZThn76_N9S19805C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19805C11D0Ev,_ZThn36_N9S19805C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C11D1Ev,_ZTv0_n32_N9S19805C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19805C11D1Ev,_ZThn76_N9S19805C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19805C11D1Ev,_ZThn36_N9S19805C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19805C11 = {  "S19805C11", // class name
  bases_S19805C11, 52,
  &(vtc_S19805C11[0]), // expected_vtbl_contents
  &(vtt_S19805C11[0]), // expected_vtt_contents
  ABISELECT(168,92), // object size
  NSPAIRA(_ZTI9S19805C11),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19805C11),133, //virtual function table var
  17, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19805C11),101, //virtual table table var
  25, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names133,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19805C1  : virtual S7856C24 , S19805C3 , virtual S19805C7 , virtual S19805C9 , S19805C11 {
  ~S19805C1(); // tgen
  S19805C1(); // tgen
};
//SIG(1 S19805C1) C1{ VBC2{ m} BC3{ BC2 BC4{ m} BC5{ VBC6{ m} BC4 VBC2} Fi} VBC7{ BC4 VBC6 VBC2 BC5 VBC8{ BC6 VBC5 VBC4} vd} VBC9{ VBC10{ VBC6 VBC4 VBC8 BC2 BC7 vd} VBC3 VBC7 vd Fi[2]} BC11{ BC12{ VBC5 VBC13{ VBC4} VBC3 BC2 VBC10 vd Fi} BC14{ BC10 VBC3 VBC15{ VBC10 VBC16{ VBC9 VBC17{ m} VBC12 BC18{ VBC7 BC3 BC8 BC2 vd} vd} vd} BC19{ BC4 BC13 vd} BC20{ m} Fi} VBC20}}


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

static void Test_S19805C1()
{
  extern Class_Descriptor cd_S19805C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(24,25)];
    init_test(&cd_S19805C1, buf);
    S19805C1 *dp, &lv = *(dp=new (buf) S19805C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(184,96), "sizeof(S19805C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19805C1)");
    /*is_ambiguous_... S19805C1::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), ABISELECT(60,32), "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C5*)(S19805C3*), ABISELECT(60,32), "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C7*), ABISELECT(60,32), "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C5*)(S19805C7*), ABISELECT(60,32), "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C5*), ABISELECT(60,32), "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C7*)(S19805C10*), ABISELECT(60,32), "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C5*)(S19805C7*)(S19805C10*), ABISELECT(60,32), "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C5*)(S19805C3*), ABISELECT(60,32), "S19805C1");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C7*)(S19805C10*)(S19805C14*)(S19805C11*), ABISELECT(60,32), "S19805C1");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C5*)(S19805C7*)(S19805C10*)(S19805C14*)(S19805C11*), ABISELECT(60,32), "S19805C1");
    check_base_class_offset(lv, (S7856C24*)(S19805C5*)(S19805C3*)(S19805C18*)(S19805C16*), ABISELECT(60,32), "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C3*), 0, "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C3*), ABISELECT(8,4), "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C3 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C5*)(S19805C3*), 0, "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C7*), 0, "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C5*)(S19805C7*), 0, "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C5*), 0, "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C10*), 0, "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C7*)(S19805C10*), 0, "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C5*)(S19805C7*)(S19805C10*), 0, "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C3 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C5*)(S19805C3*), 0, "S19805C1");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C10*)(S19805C14*)(S19805C11*), 0, "S19805C1");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C7*)(S19805C10*)(S19805C14*)(S19805C11*), 0, "S19805C1");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C5*)(S19805C7*)(S19805C10*)(S19805C14*)(S19805C11*), 0, "S19805C1");
    check_base_class_offset(lv, (S7856C12*)(S19805C5*)(S19805C3*)(S19805C18*)(S19805C16*), 0, "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C5*)(S19805C3*), 0, "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C3 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C3*), 0, "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C3 */ AMB_check_base_class_offset(lv, (S19805C3*), 0, "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C7*), ABISELECT(72,36), "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C5*)(S19805C7*), ABISELECT(64,32), "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C7 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C7*), ABISELECT(64,32), "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C8 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C8*), ABISELECT(80,40), "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C5*), ABISELECT(80,40), "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C8 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C8*), ABISELECT(80,40), "S19805C1");
    /*is_ambiguous_... S19805C11::S19805C12 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C12*)(S19805C11*), ABISELECT(80,40), "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C12 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C12*), ABISELECT(80,40), "S19805C1");
    /*is_ambiguous_... S19805C18::S19805C8 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C8*)(S19805C18*)(S19805C16*), ABISELECT(80,40), "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C8 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C8*), ABISELECT(73,37), "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C10*), ABISELECT(73,37), "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C13*), ABISELECT(73,37), "S19805C1");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C10*)(S19805C14*)(S19805C11*), ABISELECT(73,37), "S19805C1");
    /*is_ambiguous_... S19805C18::S19805C8 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C8*)(S19805C18*)(S19805C16*), ABISELECT(73,37), "S19805C1");
    check_base_class_offset(lv, (S7856C15*)(S19805C13*)(S19805C19*)(S19805C14*)(S19805C11*), ABISELECT(73,37), "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C7 */ AMB_check_base_class_offset(lv, (S19805C8*)(S19805C7*), ABISELECT(80,40), "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C10 */ AMB_check_base_class_offset(lv, (S19805C8*)(S19805C10*), ABISELECT(80,40), "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C10 */ AMB_check_base_class_offset(lv, (S19805C8*)(S19805C7*)(S19805C10*), ABISELECT(80,40), "S19805C1");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S19805C8*)(S19805C10*)(S19805C14*)(S19805C11*), ABISELECT(80,40), "S19805C1");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S19805C8*)(S19805C7*)(S19805C10*)(S19805C14*)(S19805C11*), ABISELECT(80,40), "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C7 */ AMB_check_base_class_offset(lv, (S19805C7*), ABISELECT(64,32), "S19805C1");
    /*is_ambiguous_... S19805C9::S19805C7 */ AMB_check_base_class_offset(lv, (S19805C7*)(S19805C9*), ABISELECT(64,32), "S19805C1");
    check_base_class_offset(lv, (S19805C7*)(S19805C18*)(S19805C16*), ABISELECT(64,32), "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C10*), ABISELECT(96,52), "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C7*)(S19805C10*), ABISELECT(104,56), "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C5*)(S19805C7*)(S19805C10*), ABISELECT(96,52), "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C10 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C7*)(S19805C10*), ABISELECT(96,52), "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C10 */ AMB_check_base_class_offset(lv, (S19805C7*)(S19805C10*), ABISELECT(96,52), "S19805C1");
    check_base_class_offset(lv, (S19805C10*)(S19805C9*), ABISELECT(96,52), "S19805C1");
    /*is_ambiguous_... S19805C11::S19805C12 */ AMB_check_base_class_offset(lv, (S19805C10*)(S19805C12*)(S19805C11*), ABISELECT(96,52), "S19805C1");
    check_base_class_offset(lv, (S19805C10*)(S19805C15*), ABISELECT(96,52), "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C12 */ AMB_check_base_class_offset(lv, (S19805C10*)(S19805C12*), ABISELECT(96,52), "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C3*), ABISELECT(112,60), "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C3*), ABISELECT(120,64), "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C5*)(S19805C3*), ABISELECT(112,60), "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C3 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C3*), ABISELECT(112,60), "S19805C1");
    check_base_class_offset(lv, (S19805C3*)(S19805C9*), ABISELECT(112,60), "S19805C1");
    /*is_ambiguous_... S19805C11::S19805C12 */ AMB_check_base_class_offset(lv, (S19805C3*)(S19805C12*)(S19805C11*), ABISELECT(112,60), "S19805C1");
    /*is_ambiguous_... S19805C14::S19805C3 */ AMB_check_base_class_offset(lv, (S19805C3*)(S19805C14*)(S19805C11*), ABISELECT(112,60), "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C12 */ AMB_check_base_class_offset(lv, (S19805C3*)(S19805C12*), ABISELECT(112,60), "S19805C1");
    check_base_class_offset(lv, (S19805C9*), ABISELECT(80,40), "S19805C1");
    check_base_class_offset(lv, (S19805C9*)(S19805C16*), ABISELECT(80,40), "S19805C1");
    /*is_ambiguous_... S19805C11::S19805C12 */ AMB_check_base_class_offset(lv, (S19805C13*)(S19805C12*)(S19805C11*), ABISELECT(16,8), "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C12 */ AMB_check_base_class_offset(lv, (S19805C13*)(S19805C12*), ABISELECT(16,8), "S19805C1");
    /*is_ambiguous_... S19805C11::S19805C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C12*)(S19805C11*), ABISELECT(16,8), "S19805C1");
    /*is_ambiguous_... S19805C11::S19805C12 */ AMB_check_base_class_offset(lv, (S19805C12*)(S19805C11*), ABISELECT(16,8), "S19805C1");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C10*)(S19805C14*)(S19805C11*), ABISELECT(32,16), "S19805C1");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C7*)(S19805C10*)(S19805C14*)(S19805C11*), ABISELECT(40,20), "S19805C1");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C5*)(S19805C7*)(S19805C10*)(S19805C14*)(S19805C11*), ABISELECT(32,16), "S19805C1");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C7*)(S19805C10*)(S19805C14*)(S19805C11*), ABISELECT(32,16), "S19805C1");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S19805C7*)(S19805C10*)(S19805C14*)(S19805C11*), ABISELECT(32,16), "S19805C1");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S19805C10*)(S19805C14*)(S19805C11*), ABISELECT(32,16), "S19805C1");
    check_base_class_offset(lv, (S7856C9_nt*)(S19805C16*), 0, "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C12*), ABISELECT(168,88), "S19805C1");
    check_base_class_offset(lv, (S19805C12*)(S19805C16*), ABISELECT(168,88), "S19805C1");
    /*is_ambiguous_... S19805C3::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C3*)(S19805C18*)(S19805C16*), ABISELECT(136,72), "S19805C1");
    /*is_ambiguous_... S19805C3::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C3*)(S19805C18*)(S19805C16*), ABISELECT(144,76), "S19805C1");
    check_base_class_offset(lv, (S7856C15*)(S19805C5*)(S19805C3*)(S19805C18*)(S19805C16*), ABISELECT(136,72), "S19805C1");
    check_base_class_offset(lv, (S19805C5*)(S19805C3*)(S19805C18*)(S19805C16*), ABISELECT(136,72), "S19805C1");
    check_base_class_offset(lv, (S19805C3*)(S19805C18*)(S19805C16*), ABISELECT(136,72), "S19805C1");
    /*is_ambiguous_... S19805C18::S19805C8 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C8*)(S19805C18*)(S19805C16*), ABISELECT(152,80), "S19805C1");
    /*is_ambiguous_... S19805C18::S19805C8 */ AMB_check_base_class_offset(lv, (S19805C8*)(S19805C18*)(S19805C16*), ABISELECT(152,80), "S19805C1");
    /*is_ambiguous_... S19805C18::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C18*)(S19805C16*), ABISELECT(160,84), "S19805C1");
    check_base_class_offset(lv, (S19805C18*)(S19805C16*), ABISELECT(136,72), "S19805C1");
    check_base_class_offset(lv, (S19805C16*)(S19805C15*), ABISELECT(136,72), "S19805C1");
    check_base_class_offset(lv, (S19805C15*)(S19805C14*)(S19805C11*), ABISELECT(128,68), "S19805C1");
    /*is_ambiguous_... S19805C19::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C19*)(S19805C14*)(S19805C11*), ABISELECT(48,24), "S19805C1");
    check_base_class_offset(lv, (S19805C13*)(S19805C19*)(S19805C14*)(S19805C11*), ABISELECT(48,24), "S19805C1");
    check_base_class_offset(lv, (S19805C19*)(S19805C14*)(S19805C11*), ABISELECT(48,24), "S19805C1");
    check_base_class_offset(lv, (S77C13_nt*)(S19805C14*)(S19805C11*), ABISELECT(32,16), "S19805C1");
    check_base_class_offset(lv, (S19805C14*)(S19805C11*), ABISELECT(32,16), "S19805C1");
    /*is_ambiguous_... S19805C11::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S19805C11*), 0, "S19805C1");
    check_base_class_offset(lv, (S19805C11*), ABISELECT(16,8), "S19805C1");
    test_class_info(&lv, &cd_S19805C1);
    dp->~S19805C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19805C1(Test_S19805C1, "S19805C1", ABISELECT(184,96));

#else // __cplusplus

extern void _ZN8S19805C1C1Ev();
extern void _ZN8S19805C1D1Ev();
Name_Map name_map_S19805C1[] = {
  NSPAIR(_ZN8S19805C1C1Ev),
  NSPAIR(_ZN8S19805C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S19805C3;
extern VTBL_ENTRY _ZTI8S19805C3[];
extern  VTBL_ENTRY _ZTV8S19805C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C3[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C8;
extern VTBL_ENTRY _ZTI8S19805C8[];
extern  VTBL_ENTRY _ZTV8S19805C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C8[];
extern Class_Descriptor cd_S19805C7;
extern VTBL_ENTRY _ZTI8S19805C7[];
extern  VTBL_ENTRY _ZTV8S19805C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C7[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S19805C7;
extern VTBL_ENTRY _ZTI8S19805C7[];
extern  VTBL_ENTRY _ZTV8S19805C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C7[];
extern Class_Descriptor cd_S19805C10;
extern VTBL_ENTRY _ZTI9S19805C10[];
extern  VTBL_ENTRY _ZTV9S19805C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C10[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S19805C3;
extern VTBL_ENTRY _ZTI8S19805C3[];
extern  VTBL_ENTRY _ZTV8S19805C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C3[];
extern Class_Descriptor cd_S19805C9;
extern VTBL_ENTRY _ZTI8S19805C9[];
extern  VTBL_ENTRY _ZTV8S19805C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C9[];
extern Class_Descriptor cd_S19805C13;
extern VTBL_ENTRY _ZTI9S19805C13[];
extern  VTBL_ENTRY _ZTV9S19805C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C13[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19805C12;
extern VTBL_ENTRY _ZTI9S19805C12[];
extern  VTBL_ENTRY _ZTV9S19805C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S19805C7;
extern VTBL_ENTRY _ZTI8S19805C7[];
extern  VTBL_ENTRY _ZTV8S19805C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C7[];
extern Class_Descriptor cd_S19805C10;
extern VTBL_ENTRY _ZTI9S19805C10[];
extern  VTBL_ENTRY _ZTV9S19805C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C10[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19805C12;
extern VTBL_ENTRY _ZTI9S19805C12[];
extern  VTBL_ENTRY _ZTV9S19805C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S19805C3;
extern VTBL_ENTRY _ZTI8S19805C3[];
extern  VTBL_ENTRY _ZTV8S19805C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C3[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19805C8;
extern VTBL_ENTRY _ZTI8S19805C8[];
extern  VTBL_ENTRY _ZTV8S19805C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C8[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19805C18;
extern VTBL_ENTRY _ZTI9S19805C18[];
extern  VTBL_ENTRY _ZTV9S19805C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C18[];
extern Class_Descriptor cd_S19805C16;
extern VTBL_ENTRY _ZTI9S19805C16[];
extern  VTBL_ENTRY _ZTV9S19805C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C16[];
extern Class_Descriptor cd_S19805C15;
extern VTBL_ENTRY _ZTI9S19805C15[];
extern  VTBL_ENTRY _ZTV9S19805C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C13;
extern VTBL_ENTRY _ZTI9S19805C13[];
extern  VTBL_ENTRY _ZTV9S19805C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C13[];
extern Class_Descriptor cd_S19805C19;
extern VTBL_ENTRY _ZTI9S19805C19[];
extern  VTBL_ENTRY _ZTV9S19805C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C19[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19805C14;
extern VTBL_ENTRY _ZTI9S19805C14[];
extern  VTBL_ENTRY _ZTV9S19805C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19805C11;
extern VTBL_ENTRY _ZTI9S19805C11[];
extern  VTBL_ENTRY _ZTV9S19805C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C11[];
static Base_Class bases_S19805C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    ABISELECT(60,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19805C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19805C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C15,    ABISELECT(72,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19805C5,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19805C5,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    66, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(73,37), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S19805C8,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19805C7,    ABISELECT(64,32), //bcp->offset
    61, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19805C5,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19805C7,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19805C10,    ABISELECT(96,52), //bcp->offset
    84, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(120,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S19805C5,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19805C3,    ABISELECT(112,60), //bcp->offset
    94, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S19805C9,    ABISELECT(80,40), //bcp->offset
    71, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19805C13,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    82, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    30, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S19805C12,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S19805C5,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S19805C7,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S19805C10,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    49, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(168,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S19805C12,    ABISELECT(168,88), //bcp->offset
    139, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    57, //bcp->index_in_construction_vtbl_array
    113, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    49, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(136,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(144,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(136,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S19805C5,    ABISELECT(136,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    97, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S19805C3,    ABISELECT(136,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    96, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(152,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S19805C8,    ABISELECT(152,80), //bcp->offset
    133, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    58, //bcp->index_in_construction_vtbl_array
    98, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(160,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S19805C18,    ABISELECT(136,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    95, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S19805C16,    ABISELECT(136,72), //bcp->offset
    116, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    56, //bcp->index_in_construction_vtbl_array
    94, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    50, //immediately_derived
  0, 1},
  {&cd_S19805C15,    ABISELECT(128,68), //bcp->offset
    98, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    55, //bcp->index_in_construction_vtbl_array
    83, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    55, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    53, //immediately_derived
  0, 0},
  {&cd_S19805C13,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    53, //immediately_derived
  0, 0},
  {&cd_S19805C19,    ABISELECT(48,24), //bcp->offset
    56, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    59, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S19805C14,    ABISELECT(32,16), //bcp->offset
    38, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    54, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    57, //immediately_derived
  0, 1},
  {&cd_S19805C11,    ABISELECT(16,8), //bcp->offset
    19, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19805C1[];
extern void _ZN8S19805C1D1Ev();
extern void _ZN8S19805C1D0Ev();
extern void ABISELECT(_ZThn16_N8S19805C1D1Ev,_ZThn8_N8S19805C1D1Ev)();
extern void ABISELECT(_ZThn16_N8S19805C1D0Ev,_ZThn8_N8S19805C1D0Ev)();
extern void ABISELECT(_ZThn32_N8S19805C1D1Ev,_ZThn16_N8S19805C1D1Ev)();
extern void ABISELECT(_ZThn32_N8S19805C1D0Ev,_ZThn16_N8S19805C1D0Ev)();
extern void ABISELECT(_ZThn48_N8S19805C1D1Ev,_ZThn24_N8S19805C1D1Ev)();
extern void ABISELECT(_ZThn48_N8S19805C1D0Ev,_ZThn24_N8S19805C1D0Ev)();
extern void ABISELECT(_ZTv0_n64_N8S19805C1D1Ev,_ZTv0_n32_N8S19805C1D1Ev)();
extern void ABISELECT(_ZThn64_N8S19805C1D1Ev,_ZThn32_N8S19805C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19805C1D0Ev,_ZTv0_n32_N8S19805C1D0Ev)();
extern void ABISELECT(_ZThn64_N8S19805C1D0Ev,_ZThn32_N8S19805C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19805C1D1Ev,_ZTv0_n44_N8S19805C1D1Ev)();
extern void ABISELECT(_ZThn80_N8S19805C1D1Ev,_ZThn40_N8S19805C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19805C1D0Ev,_ZTv0_n44_N8S19805C1D0Ev)();
extern void ABISELECT(_ZThn80_N8S19805C1D0Ev,_ZThn40_N8S19805C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19805C1D1Ev,_ZTv0_n32_N8S19805C1D1Ev)();
extern void ABISELECT(_ZThn96_N8S19805C1D1Ev,_ZThn52_N8S19805C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19805C1D0Ev,_ZTv0_n32_N8S19805C1D0Ev)();
extern void ABISELECT(_ZThn96_N8S19805C1D0Ev,_ZThn52_N8S19805C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S19805C1D1Ev,_ZTv0_n64_N8S19805C1D1Ev)();
extern void ABISELECT(_ZThn128_N8S19805C1D1Ev,_ZThn68_N8S19805C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S19805C1D0Ev,_ZTv0_n64_N8S19805C1D0Ev)();
extern void ABISELECT(_ZThn128_N8S19805C1D0Ev,_ZThn68_N8S19805C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S19805C1D1Ev,_ZTv0_n60_N8S19805C1D1Ev)();
extern void ABISELECT(_ZThn136_N8S19805C1D1Ev,_ZThn72_N8S19805C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S19805C1D0Ev,_ZTv0_n60_N8S19805C1D0Ev)();
extern void ABISELECT(_ZThn136_N8S19805C1D0Ev,_ZThn72_N8S19805C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19805C1D1Ev,_ZTv0_n44_N8S19805C1D1Ev)();
extern void ABISELECT(_ZThn168_N8S19805C1D1Ev,_ZThn88_N8S19805C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19805C1D0Ev,_ZTv0_n44_N8S19805C1D0Ev)();
extern void ABISELECT(_ZThn168_N8S19805C1D0Ev,_ZThn88_N8S19805C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19805C1[] = {
  0,
  ABISELECT(168,88),
  0,
  ABISELECT(136,72),
  ABISELECT(128,68),
  ABISELECT(16,8),
  ABISELECT(112,60),
  ABISELECT(96,52),
  ABISELECT(80,40),
  ABISELECT(73,37),
  ABISELECT(80,40),
  ABISELECT(80,40),
  ABISELECT(64,32),
  ABISELECT(60,32),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C1[0]),
  (VTBL_ENTRY)&_ZN8S19805C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19805C1D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(152,80),
  ABISELECT(-16,-8),
  ABISELECT(48,24),
  ABISELECT(64,32),
  ABISELECT(120,64),
  ABISELECT(112,60),
  ABISELECT(64,32),
  ABISELECT(80,44),
  ABISELECT(96,52),
  0,
  ABISELECT(44,24),
  ABISELECT(-16,-8),
  ABISELECT(64,32),
  ABISELECT(57,29),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19805C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19805C1D1Ev,_ZThn8_N8S19805C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19805C1D0Ev,_ZThn8_N8S19805C1D0Ev),
  ABISELECT(-16,-8),
  ABISELECT(136,72),
  ABISELECT(-32,-16),
  ABISELECT(32,16),
  ABISELECT(48,24),
  ABISELECT(104,56),
  ABISELECT(64,36),
  ABISELECT(96,52),
  ABISELECT(80,44),
  ABISELECT(41,21),
  ABISELECT(48,24),
  ABISELECT(48,24),
  ABISELECT(28,16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19805C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S19805C1D1Ev,_ZThn16_N8S19805C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S19805C1D0Ev,_ZThn16_N8S19805C1D0Ev),
  ABISELECT(25,13),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S19805C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S19805C1D1Ev,_ZThn24_N8S19805C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S19805C1D0Ev,_ZThn24_N8S19805C1D0Ev),
  ABISELECT(-64,-32),
  ABISELECT(9,5),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-4,0),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S19805C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19805C1D1Ev,_ZTv0_n32_N8S19805C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19805C1D0Ev,_ZTv0_n32_N8S19805C1D0Ev),
  ABISELECT(-80,-40),
  ABISELECT(-16,-8),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-7,-3),
  0,
  ABISELECT(-20,-8),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S19805C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19805C1D1Ev,_ZTv0_n44_N8S19805C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19805C1D0Ev,_ZTv0_n44_N8S19805C1D0Ev),
  ABISELECT(-96,-52),
  ABISELECT(-23,-15),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-36,-20),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S19805C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19805C1D1Ev,_ZTv0_n32_N8S19805C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19805C1D0Ev,_ZTv0_n32_N8S19805C1D0Ev),
  ABISELECT(-52,-28),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S19805C1[0]),
  ABISELECT(-128,-68),
  ABISELECT(-112,-60),
  ABISELECT(40,20),
  ABISELECT(-128,-68),
  ABISELECT(-64,-36),
  ABISELECT(-16,-8),
  ABISELECT(-48,-28),
  ABISELECT(8,4),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(-55,-31),
  ABISELECT(-48,-28),
  ABISELECT(-68,-36),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S19805C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S19805C1D1Ev,_ZTv0_n64_N8S19805C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S19805C1D0Ev,_ZTv0_n64_N8S19805C1D0Ev),
  ABISELECT(-136,-72),
  ABISELECT(-120,-64),
  ABISELECT(32,16),
  ABISELECT(-136,-72),
  ABISELECT(-24,-12),
  ABISELECT(-40,-20),
  ABISELECT(-56,-32),
  ABISELECT(-63,-35),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-72,-40),
  ABISELECT(-76,-40),
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI8S19805C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S19805C1D1Ev,_ZTv0_n60_N8S19805C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S19805C1D0Ev,_ZTv0_n60_N8S19805C1D0Ev),
  ABISELECT(-79,-43),
  ABISELECT(-72,-40),
  ABISELECT(-92,-48),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  (VTBL_ENTRY)&(_ZTI8S19805C1[0]),
  ABISELECT(-168,-88),
  ABISELECT(-88,-48),
  ABISELECT(-72,-36),
  ABISELECT(-56,-28),
  ABISELECT(-152,-80),
  ABISELECT(-108,-56),
  ABISELECT(-168,-88),
  ABISELECT(-88,-48),
  ABISELECT(-95,-51),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S19805C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19805C1D1Ev,_ZTv0_n44_N8S19805C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19805C1D0Ev,_ZTv0_n44_N8S19805C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S19805C1[];
static  VTBL_ENTRY _tg__ZTV8S19805C3__A__8S19805C1[] = {
  ABISELECT(60,32),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C58S19805C3__8S19805C1[] = {
  ABISELECT(60,32),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
extern void _ZN9S19805C11D1Ev();
extern void _ZN9S19805C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19805C11__8S19805C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(152,80),
  ABISELECT(-16,-8),
  ABISELECT(48,24),
  ABISELECT(64,32),
  ABISELECT(120,64),
  ABISELECT(112,60),
  ABISELECT(64,32),
  ABISELECT(80,44),
  ABISELECT(96,52),
  0,
  ABISELECT(44,24),
  ABISELECT(-16,-8),
  ABISELECT(64,32),
  ABISELECT(57,29),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C11[0]),
  (VTBL_ENTRY)&_ZN9S19805C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C11D0Ev,
};
extern void _ZN9S19805C12D1Ev();
extern void _ZN9S19805C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19805C129S19805C11__8S19805C1[] = {
  ABISELECT(64,32),
  ABISELECT(80,44),
  ABISELECT(96,52),
  0,
  ABISELECT(44,24),
  ABISELECT(-16,-8),
  ABISELECT(64,32),
  ABISELECT(57,29),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C12[0]),
  (VTBL_ENTRY)&_ZN9S19805C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__9S19805C129S19805C11__8S19805C1[] = {
  ABISELECT(-7,-3),
  0,
  ABISELECT(-20,-8),
  ABISELECT(-80,-40),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S19805C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C3__9S19805C129S19805C11__8S19805C1[] = {
  ABISELECT(-52,-28),
  ABISELECT(-112,-60),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI9S19805C12[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19805C12D1Ev,_ZTv0_n32_N9S19805C12D1Ev)();
extern void ABISELECT(_ZThn80_N9S19805C12D1Ev,_ZThn44_N9S19805C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19805C12D0Ev,_ZTv0_n32_N9S19805C12D0Ev)();
extern void ABISELECT(_ZThn80_N9S19805C12D0Ev,_ZThn44_N9S19805C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19805C10__9S19805C129S19805C11__8S19805C1[] = {
  ABISELECT(-80,-44),
  ABISELECT(-23,-15),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-36,-20),
  ABISELECT(-96,-52),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S19805C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C12D1Ev,_ZTv0_n32_N9S19805C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C12D0Ev,_ZTv0_n32_N9S19805C12D0Ev),
};
extern void _ZN9S19805C14D1Ev();
extern void _ZN9S19805C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19805C149S19805C11__8S19805C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(136,72),
  ABISELECT(-32,-16),
  ABISELECT(32,16),
  ABISELECT(48,24),
  ABISELECT(104,56),
  ABISELECT(64,36),
  ABISELECT(96,52),
  ABISELECT(80,44),
  ABISELECT(41,21),
  ABISELECT(48,24),
  ABISELECT(48,24),
  ABISELECT(28,16),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C14[0]),
  (VTBL_ENTRY)&_ZN9S19805C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C14D0Ev,
};
extern void _ZN9S19805C10D1Ev();
extern void _ZN9S19805C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19805C109S19805C149S19805C11__A1__8S19805C1[] = {
  ABISELECT(41,21),
  ABISELECT(48,24),
  ABISELECT(48,24),
  ABISELECT(28,16),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C10[0]),
  (VTBL_ENTRY)&_ZN9S19805C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C10D0Ev,
};
extern void _ZN8S19805C7D1Ev();
extern void _ZN8S19805C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19805C79S19805C109S19805C149S19805C11__A2__8S19805C1[] = {
  ABISELECT(41,21),
  ABISELECT(48,24),
  ABISELECT(48,24),
  ABISELECT(28,16),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C7[0]),
  (VTBL_ENTRY)&_ZN8S19805C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19805C7D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19805C58S19805C79S19805C109S19805C149S19805C11__A5__8S19805C1[] = {
  ABISELECT(28,16),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__8S19805C79S19805C109S19805C149S19805C11__A2__8S19805C1[] = {
  ABISELECT(-7,-3),
  0,
  ABISELECT(-20,-8),
  ABISELECT(-80,-40),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S19805C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__9S19805C109S19805C149S19805C11__A1__8S19805C1[] = {
  ABISELECT(-7,-3),
  0,
  ABISELECT(-20,-8),
  ABISELECT(-80,-40),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S19805C10[0]),
};
extern void _ZN9S19805C19D1Ev();
extern void _ZN9S19805C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19805C199S19805C149S19805C11__8S19805C1[] = {
  ABISELECT(25,13),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C19[0]),
  (VTBL_ENTRY)&_ZN9S19805C19D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C19D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19805C139S19805C199S19805C149S19805C11__A1__8S19805C1[] = {
  ABISELECT(25,13),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C13[0]),
};
extern void ABISELECT(_ZTv0_n88_N9S19805C14D1Ev,_ZTv0_n44_N9S19805C14D1Ev)();
extern void ABISELECT(_ZThn48_N9S19805C14D1Ev,_ZThn24_N9S19805C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19805C14D0Ev,_ZTv0_n44_N9S19805C14D0Ev)();
extern void ABISELECT(_ZThn48_N9S19805C14D0Ev,_ZThn24_N9S19805C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19805C9__9S19805C149S19805C11__8S19805C1[] = {
  ABISELECT(-48,-24),
  ABISELECT(-16,-8),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-7,-3),
  0,
  ABISELECT(-20,-8),
  ABISELECT(-80,-40),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S19805C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C14D1Ev,_ZTv0_n44_N9S19805C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C14D0Ev,_ZTv0_n44_N9S19805C14D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19805C3__9S19805C149S19805C11__8S19805C1[] = {
  ABISELECT(-52,-28),
  ABISELECT(-112,-60),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S19805C14[0]),
};
extern void ABISELECT(_ZTv0_n128_N9S19805C14D1Ev,_ZTv0_n64_N9S19805C14D1Ev)();
extern void ABISELECT(_ZThn96_N9S19805C14D1Ev,_ZThn52_N9S19805C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N9S19805C14D0Ev,_ZTv0_n64_N9S19805C14D0Ev)();
extern void ABISELECT(_ZThn96_N9S19805C14D0Ev,_ZThn52_N9S19805C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19805C15__9S19805C149S19805C11__8S19805C1[] = {
  ABISELECT(-96,-52),
  ABISELECT(-112,-60),
  ABISELECT(40,20),
  ABISELECT(-128,-68),
  ABISELECT(-64,-36),
  ABISELECT(-16,-8),
  ABISELECT(-48,-28),
  ABISELECT(8,4),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(-55,-31),
  ABISELECT(-48,-28),
  ABISELECT(-68,-36),
  ABISELECT(-128,-68),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI9S19805C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N9S19805C14D1Ev,_ZTv0_n64_N9S19805C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N9S19805C14D0Ev,_ZTv0_n64_N9S19805C14D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N9S19805C14D1Ev,_ZTv0_n32_N9S19805C14D1Ev)();
extern void ABISELECT(_ZThn64_N9S19805C14D1Ev,_ZThn36_N9S19805C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19805C14D0Ev,_ZTv0_n32_N9S19805C14D0Ev)();
extern void ABISELECT(_ZThn64_N9S19805C14D0Ev,_ZThn36_N9S19805C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19805C10__A1__9S19805C149S19805C11__8S19805C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-23,-15),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-36,-20),
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S19805C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C14D1Ev,_ZTv0_n32_N9S19805C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C14D0Ev,_ZTv0_n32_N9S19805C14D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N9S19805C14D1Ev,_ZTv0_n60_N9S19805C14D1Ev)();
extern void ABISELECT(_ZThn104_N9S19805C14D1Ev,_ZThn56_N9S19805C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N9S19805C14D0Ev,_ZTv0_n60_N9S19805C14D0Ev)();
extern void ABISELECT(_ZThn104_N9S19805C14D0Ev,_ZThn56_N9S19805C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19805C16__9S19805C149S19805C11__8S19805C1[] = {
  ABISELECT(-104,-56),
  ABISELECT(-120,-64),
  ABISELECT(32,16),
  ABISELECT(-136,-72),
  ABISELECT(-24,-12),
  ABISELECT(-40,-20),
  ABISELECT(-56,-32),
  ABISELECT(-63,-35),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-72,-40),
  ABISELECT(-76,-40),
  ABISELECT(-136,-72),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI9S19805C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19805C14D1Ev,_ZTv0_n60_N9S19805C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19805C14D0Ev,_ZTv0_n60_N9S19805C14D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N9S19805C14D1Ev,_ZTv0_n32_N9S19805C14D1Ev)();
extern void ABISELECT(_ZThn32_N9S19805C14D1Ev,_ZThn16_N9S19805C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19805C14D0Ev,_ZTv0_n32_N9S19805C14D0Ev)();
extern void ABISELECT(_ZThn32_N9S19805C14D0Ev,_ZThn16_N9S19805C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19805C7__A2__9S19805C149S19805C11__8S19805C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(9,5),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-4,0),
  ABISELECT(-64,-32),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19805C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C14D1Ev,_ZTv0_n32_N9S19805C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C14D0Ev,_ZTv0_n32_N9S19805C14D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N9S19805C14D1Ev,_ZTv0_n44_N9S19805C14D1Ev)();
extern void ABISELECT(_ZThn136_N9S19805C14D1Ev,_ZThn72_N9S19805C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19805C14D0Ev,_ZTv0_n44_N9S19805C14D0Ev)();
extern void ABISELECT(_ZThn136_N9S19805C14D0Ev,_ZThn72_N9S19805C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19805C12__9S19805C149S19805C11__8S19805C1[] = {
  ABISELECT(-136,-72),
  ABISELECT(-88,-48),
  ABISELECT(-72,-36),
  ABISELECT(-56,-28),
  ABISELECT(-152,-80),
  ABISELECT(-108,-56),
  ABISELECT(-168,-88),
  ABISELECT(-88,-48),
  ABISELECT(-95,-51),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI9S19805C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C14D1Ev,_ZTv0_n44_N9S19805C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C14D0Ev,_ZTv0_n44_N9S19805C14D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19805C13__9S19805C149S19805C11__8S19805C1[] = {
  ABISELECT(57,29),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S19805C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C89S19805C189S19805C16__A1__9S19805C149S19805C11__8S19805C1[] = {
  ABISELECT(-79,-43),
  ABISELECT(-72,-40),
  ABISELECT(-92,-48),
  ABISELECT(-152,-80),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI9S19805C14[0]),
};
extern void ABISELECT(_ZThn16_N9S19805C14D1Ev,_ZThn8_N9S19805C14D1Ev)();
extern void ABISELECT(_ZThn16_N9S19805C14D0Ev,_ZThn8_N9S19805C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19805C19__9S19805C149S19805C11__8S19805C1[] = {
  ABISELECT(25,13),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19805C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19805C14D1Ev,_ZThn8_N9S19805C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19805C14D0Ev,_ZThn8_N9S19805C14D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N9S19805C11D1Ev,_ZTv0_n44_N9S19805C11D1Ev)();
extern void ABISELECT(_ZThn64_N9S19805C11D1Ev,_ZThn32_N9S19805C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19805C11D0Ev,_ZTv0_n44_N9S19805C11D0Ev)();
extern void ABISELECT(_ZThn64_N9S19805C11D0Ev,_ZThn32_N9S19805C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19805C9__9S19805C11__8S19805C1[] = {
  ABISELECT(-64,-32),
  ABISELECT(-16,-8),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-7,-3),
  0,
  ABISELECT(-20,-8),
  ABISELECT(-80,-40),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S19805C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C11D1Ev,_ZTv0_n44_N9S19805C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C11D0Ev,_ZTv0_n44_N9S19805C11D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19805C3__9S19805C11__8S19805C1[] = {
  ABISELECT(-52,-28),
  ABISELECT(-112,-60),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI9S19805C11[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19805C11D1Ev,_ZTv0_n32_N9S19805C11D1Ev)();
extern void ABISELECT(_ZThn80_N9S19805C11D1Ev,_ZThn44_N9S19805C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19805C11D0Ev,_ZTv0_n32_N9S19805C11D0Ev)();
extern void ABISELECT(_ZThn80_N9S19805C11D0Ev,_ZThn44_N9S19805C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19805C10__9S19805C11__8S19805C1[] = {
  ABISELECT(-80,-44),
  ABISELECT(-23,-15),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-36,-20),
  ABISELECT(-96,-52),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S19805C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C11D1Ev,_ZTv0_n32_N9S19805C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C11D0Ev,_ZTv0_n32_N9S19805C11D0Ev),
};
extern void ABISELECT(_ZThn16_N9S19805C11D1Ev,_ZThn8_N9S19805C11D1Ev)();
extern void ABISELECT(_ZThn16_N9S19805C11D0Ev,_ZThn8_N9S19805C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19805C14__9S19805C11__8S19805C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(136,72),
  ABISELECT(-32,-16),
  ABISELECT(32,16),
  ABISELECT(48,24),
  ABISELECT(104,56),
  ABISELECT(64,36),
  ABISELECT(96,52),
  ABISELECT(80,44),
  ABISELECT(41,21),
  ABISELECT(48,24),
  ABISELECT(48,24),
  ABISELECT(28,16),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19805C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19805C11D1Ev,_ZThn8_N9S19805C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19805C11D0Ev,_ZThn8_N9S19805C11D0Ev),
};
extern void ABISELECT(_ZTv0_n128_N9S19805C11D1Ev,_ZTv0_n64_N9S19805C11D1Ev)();
extern void ABISELECT(_ZThn112_N9S19805C11D1Ev,_ZThn60_N9S19805C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N9S19805C11D0Ev,_ZTv0_n64_N9S19805C11D0Ev)();
extern void ABISELECT(_ZThn112_N9S19805C11D0Ev,_ZThn60_N9S19805C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19805C15__9S19805C11__8S19805C1[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(40,20),
  ABISELECT(-128,-68),
  ABISELECT(-64,-36),
  ABISELECT(-16,-8),
  ABISELECT(-48,-28),
  ABISELECT(8,4),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(-55,-31),
  ABISELECT(-48,-28),
  ABISELECT(-68,-36),
  ABISELECT(-128,-68),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI9S19805C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N9S19805C11D1Ev,_ZTv0_n64_N9S19805C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N9S19805C11D0Ev,_ZTv0_n64_N9S19805C11D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N9S19805C11D1Ev,_ZTv0_n60_N9S19805C11D1Ev)();
extern void ABISELECT(_ZThn120_N9S19805C11D1Ev,_ZThn64_N9S19805C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N9S19805C11D0Ev,_ZTv0_n60_N9S19805C11D0Ev)();
extern void ABISELECT(_ZThn120_N9S19805C11D0Ev,_ZThn64_N9S19805C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19805C16__9S19805C11__8S19805C1[] = {
  ABISELECT(-120,-64),
  ABISELECT(-120,-64),
  ABISELECT(32,16),
  ABISELECT(-136,-72),
  ABISELECT(-24,-12),
  ABISELECT(-40,-20),
  ABISELECT(-56,-32),
  ABISELECT(-63,-35),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-72,-40),
  ABISELECT(-76,-40),
  ABISELECT(-136,-72),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI9S19805C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19805C11D1Ev,_ZTv0_n60_N9S19805C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19805C11D0Ev,_ZTv0_n60_N9S19805C11D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N9S19805C11D1Ev,_ZTv0_n32_N9S19805C11D1Ev)();
extern void ABISELECT(_ZThn48_N9S19805C11D1Ev,_ZThn24_N9S19805C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19805C11D0Ev,_ZTv0_n32_N9S19805C11D0Ev)();
extern void ABISELECT(_ZThn48_N9S19805C11D0Ev,_ZThn24_N9S19805C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19805C7__A2__9S19805C11__8S19805C1[] = {
  ABISELECT(-48,-24),
  ABISELECT(9,5),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-4,0),
  ABISELECT(-64,-32),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S19805C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C11D1Ev,_ZTv0_n32_N9S19805C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C11D0Ev,_ZTv0_n32_N9S19805C11D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N9S19805C11D1Ev,_ZTv0_n44_N9S19805C11D1Ev)();
extern void ABISELECT(_ZThn152_N9S19805C11D1Ev,_ZThn80_N9S19805C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19805C11D0Ev,_ZTv0_n44_N9S19805C11D0Ev)();
extern void ABISELECT(_ZThn152_N9S19805C11D0Ev,_ZThn80_N9S19805C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19805C12__A1__9S19805C11__8S19805C1[] = {
  ABISELECT(-152,-80),
  ABISELECT(-88,-48),
  ABISELECT(-72,-36),
  ABISELECT(-56,-28),
  ABISELECT(-152,-80),
  ABISELECT(-108,-56),
  ABISELECT(-168,-88),
  ABISELECT(-88,-48),
  ABISELECT(-95,-51),
  ABISELECT(-152,-80),
  (VTBL_ENTRY)&(_ZTI9S19805C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C11D1Ev,_ZTv0_n44_N9S19805C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C11D0Ev,_ZTv0_n44_N9S19805C11D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19805C89S19805C189S19805C16__A1__9S19805C11__8S19805C1[] = {
  ABISELECT(-79,-43),
  ABISELECT(-72,-40),
  ABISELECT(-92,-48),
  ABISELECT(-152,-80),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI9S19805C11[0]),
};
extern void ABISELECT(_ZThn32_N9S19805C11D1Ev,_ZThn16_N9S19805C11D1Ev)();
extern void ABISELECT(_ZThn32_N9S19805C11D0Ev,_ZThn16_N9S19805C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19805C199S19805C14__9S19805C11__8S19805C1[] = {
  ABISELECT(25,13),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19805C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19805C11D1Ev,_ZThn16_N9S19805C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19805C11D0Ev,_ZThn16_N9S19805C11D0Ev),
};
extern void _ZN8S19805C7D1Ev();
extern void _ZN8S19805C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19805C7__8S19805C1[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-4,0),
  ABISELECT(-64,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C7[0]),
  (VTBL_ENTRY)&_ZN8S19805C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19805C7D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19805C58S19805C7__A1__8S19805C1[] = {
  ABISELECT(-4,0),
  ABISELECT(-64,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__8S19805C7__8S19805C1[] = {
  ABISELECT(-7,-3),
  0,
  ABISELECT(-20,-8),
  ABISELECT(-80,-40),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19805C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__8S19805C1[] = {
  ABISELECT(-7,-3),
  0,
  ABISELECT(-20,-8),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C5__A2__8S19805C1[] = {
  ABISELECT(-20,-8),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
extern void _ZN8S19805C9D1Ev();
extern void _ZN8S19805C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19805C9__8S19805C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-7,-3),
  0,
  ABISELECT(-20,-8),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C9[0]),
  (VTBL_ENTRY)&_ZN8S19805C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19805C9D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N8S19805C9D1Ev,_ZTv0_n32_N8S19805C9D1Ev)();
extern void ABISELECT(_ZThn16_N8S19805C9D1Ev,_ZThn12_N8S19805C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19805C9D0Ev,_ZTv0_n32_N8S19805C9D0Ev)();
extern void ABISELECT(_ZThn16_N8S19805C9D0Ev,_ZThn12_N8S19805C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19805C10__8S19805C9__8S19805C1[] = {
  ABISELECT(-16,-12),
  ABISELECT(-23,-15),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-36,-20),
  ABISELECT(-96,-52),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19805C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19805C9D1Ev,_ZTv0_n32_N8S19805C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19805C9D0Ev,_ZTv0_n32_N8S19805C9D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19805C3__8S19805C9__8S19805C1[] = {
  ABISELECT(-52,-28),
  ABISELECT(-112,-60),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19805C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S19805C9D1Ev,_ZTv0_n32_N8S19805C9D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S19805C9D0Ev,_ZTv0_n32_N8S19805C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19805C7__A1__8S19805C9__8S19805C1[] = {
  ABISELECT(16,8),
  ABISELECT(9,5),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-4,0),
  ABISELECT(-64,-32),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19805C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19805C9D1Ev,_ZTv0_n32_N8S19805C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19805C9D0Ev,_ZTv0_n32_N8S19805C9D0Ev),
};
extern void _ZN9S19805C10D1Ev();
extern void _ZN9S19805C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19805C10__8S19805C1[] = {
  ABISELECT(-23,-15),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-36,-20),
  ABISELECT(-96,-52),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C10[0]),
  (VTBL_ENTRY)&_ZN9S19805C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C10D0Ev,
};
extern void _ZN8S19805C7D1Ev();
extern void _ZN8S19805C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19805C79S19805C10__A1__8S19805C1[] = {
  ABISELECT(-23,-15),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-36,-20),
  ABISELECT(-96,-52),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C7[0]),
  (VTBL_ENTRY)&_ZN8S19805C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19805C7D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19805C58S19805C79S19805C10__A3__8S19805C1[] = {
  ABISELECT(-36,-20),
  ABISELECT(-96,-52),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__8S19805C79S19805C10__A1__8S19805C1[] = {
  ABISELECT(-7,-3),
  0,
  ABISELECT(-20,-8),
  ABISELECT(-80,-40),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S19805C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__9S19805C10__8S19805C1[] = {
  ABISELECT(-7,-3),
  0,
  ABISELECT(-20,-8),
  ABISELECT(-80,-40),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S19805C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C3__A1__8S19805C1[] = {
  ABISELECT(-52,-28),
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C58S19805C3__A4__8S19805C1[] = {
  ABISELECT(-52,-28),
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19805C13__8S19805C1[] = {
  ABISELECT(57,29),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C13[0]),
};
extern void _ZN9S19805C15D1Ev();
extern void _ZN9S19805C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19805C15__8S19805C1[] = {
  ABISELECT(-112,-60),
  ABISELECT(40,20),
  ABISELECT(-128,-68),
  ABISELECT(-64,-36),
  ABISELECT(-16,-8),
  ABISELECT(-48,-28),
  ABISELECT(8,4),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(-55,-31),
  ABISELECT(-48,-28),
  ABISELECT(-68,-36),
  ABISELECT(-128,-68),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C15[0]),
  (VTBL_ENTRY)&_ZN9S19805C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C15D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N9S19805C15D1Ev,_ZTv0_n32_N9S19805C15D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19805C15D0Ev,_ZTv0_n32_N9S19805C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19805C10__9S19805C15__8S19805C1[] = {
  ABISELECT(32,16),
  ABISELECT(-23,-15),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-36,-20),
  ABISELECT(-96,-52),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S19805C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C15D1Ev,_ZTv0_n32_N9S19805C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C15D0Ev,_ZTv0_n32_N9S19805C15D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N9S19805C15D1Ev,_ZTv0_n44_N9S19805C15D1Ev)();
extern void ABISELECT(_ZTv0_n88_N9S19805C15D0Ev,_ZTv0_n44_N9S19805C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19805C9__9S19805C15__8S19805C1[] = {
  ABISELECT(48,28),
  ABISELECT(-16,-8),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-7,-3),
  0,
  ABISELECT(-20,-8),
  ABISELECT(-80,-40),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S19805C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C15D1Ev,_ZTv0_n44_N9S19805C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C15D0Ev,_ZTv0_n44_N9S19805C15D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N9S19805C15D1Ev,_ZTv0_n60_N9S19805C15D1Ev)();
extern void ABISELECT(_ZThn8_N9S19805C15D1Ev,_ZThn4_N9S19805C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N9S19805C15D0Ev,_ZTv0_n60_N9S19805C15D0Ev)();
extern void ABISELECT(_ZThn8_N9S19805C15D0Ev,_ZThn4_N9S19805C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19805C16__9S19805C15__8S19805C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-120,-64),
  ABISELECT(32,16),
  ABISELECT(-136,-72),
  ABISELECT(-24,-12),
  ABISELECT(-40,-20),
  ABISELECT(-56,-32),
  ABISELECT(-63,-35),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-72,-40),
  ABISELECT(-76,-40),
  ABISELECT(-136,-72),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19805C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19805C15D1Ev,_ZTv0_n60_N9S19805C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19805C15D0Ev,_ZTv0_n60_N9S19805C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19805C3__9S19805C15__8S19805C1[] = {
  ABISELECT(-52,-28),
  ABISELECT(-112,-60),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S19805C15[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19805C15D1Ev,_ZTv0_n32_N9S19805C15D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19805C15D0Ev,_ZTv0_n32_N9S19805C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19805C7__A1__9S19805C15__8S19805C1[] = {
  ABISELECT(64,36),
  ABISELECT(9,5),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-4,0),
  ABISELECT(-64,-32),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI9S19805C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C15D1Ev,_ZTv0_n32_N9S19805C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C15D0Ev,_ZTv0_n32_N9S19805C15D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N9S19805C15D1Ev,_ZTv0_n44_N9S19805C15D1Ev)();
extern void ABISELECT(_ZThn40_N9S19805C15D1Ev,_ZThn20_N9S19805C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19805C15D0Ev,_ZTv0_n44_N9S19805C15D0Ev)();
extern void ABISELECT(_ZThn40_N9S19805C15D0Ev,_ZThn20_N9S19805C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19805C12__9S19805C15__8S19805C1[] = {
  ABISELECT(-40,-20),
  ABISELECT(-88,-48),
  ABISELECT(-72,-36),
  ABISELECT(-56,-28),
  ABISELECT(-152,-80),
  ABISELECT(-108,-56),
  ABISELECT(-168,-88),
  ABISELECT(-88,-48),
  ABISELECT(-95,-51),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19805C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C15D1Ev,_ZTv0_n44_N9S19805C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C15D0Ev,_ZTv0_n44_N9S19805C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19805C13__9S19805C15__8S19805C1[] = {
  ABISELECT(57,29),
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI9S19805C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C89S19805C189S19805C16__A1__9S19805C15__8S19805C1[] = {
  ABISELECT(-79,-43),
  ABISELECT(-72,-40),
  ABISELECT(-92,-48),
  ABISELECT(-152,-80),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19805C15[0]),
};
extern void _ZN9S19805C16D1Ev();
extern void _ZN9S19805C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19805C16__8S19805C1[] = {
  ABISELECT(-120,-64),
  ABISELECT(32,16),
  ABISELECT(-136,-72),
  ABISELECT(-24,-12),
  ABISELECT(-40,-20),
  ABISELECT(-56,-32),
  ABISELECT(-63,-35),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-72,-40),
  ABISELECT(-76,-40),
  ABISELECT(-136,-72),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
  (VTBL_ENTRY)&_ZN9S19805C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C16D0Ev,
};
extern void _ZN9S19805C18D1Ev();
extern void _ZN9S19805C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19805C189S19805C16__8S19805C1[] = {
  ABISELECT(-63,-35),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-72,-40),
  ABISELECT(-76,-40),
  ABISELECT(-136,-72),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C18[0]),
  (VTBL_ENTRY)&_ZN9S19805C18D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19805C39S19805C189S19805C16__A2__8S19805C1[] = {
  ABISELECT(-76,-40),
  ABISELECT(-136,-72),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C58S19805C39S19805C189S19805C16__A6__8S19805C1[] = {
  ABISELECT(-76,-40),
  ABISELECT(-136,-72),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C89S19805C189S19805C16__A1__8S19805C1[] = {
  ABISELECT(-79,-43),
  ABISELECT(-72,-40),
  ABISELECT(-92,-48),
  ABISELECT(-152,-80),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C5__8S19805C89S19805C189S19805C16__A1__8S19805C1[] = {
  ABISELECT(-20,-8),
  ABISELECT(-80,-40),
  ABISELECT(72,40),
  (VTBL_ENTRY)&(_ZTI8S19805C8[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19805C18D1Ev,_ZTv0_n32_N9S19805C18D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19805C18D0Ev,_ZTv0_n32_N9S19805C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19805C7__9S19805C189S19805C16__8S19805C1[] = {
  ABISELECT(72,40),
  ABISELECT(9,5),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-4,0),
  ABISELECT(-64,-32),
  ABISELECT(72,40),
  (VTBL_ENTRY)&(_ZTI9S19805C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C18D1Ev,_ZTv0_n32_N9S19805C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C18D0Ev,_ZTv0_n32_N9S19805C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__9S19805C189S19805C16__8S19805C1[] = {
  ABISELECT(-7,-3),
  0,
  ABISELECT(-20,-8),
  ABISELECT(-80,-40),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI9S19805C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__A__9S19805C189S19805C16__8S19805C1[] = {
  ABISELECT(-79,-43),
  ABISELECT(-72,-40),
  ABISELECT(-92,-48),
  ABISELECT(-152,-80),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19805C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N9S19805C16D1Ev,_ZTv0_n44_N9S19805C16D1Ev)();
extern void ABISELECT(_ZTv0_n88_N9S19805C16D0Ev,_ZTv0_n44_N9S19805C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19805C9__9S19805C16__8S19805C1[] = {
  ABISELECT(56,32),
  ABISELECT(-16,-8),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-7,-3),
  0,
  ABISELECT(-20,-8),
  ABISELECT(-80,-40),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C16D1Ev,_ZTv0_n44_N9S19805C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C16D0Ev,_ZTv0_n44_N9S19805C16D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N9S19805C16D1Ev,_ZTv0_n32_N9S19805C16D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19805C16D0Ev,_ZTv0_n32_N9S19805C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19805C10__9S19805C16__8S19805C1[] = {
  ABISELECT(40,20),
  ABISELECT(-23,-15),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-36,-20),
  ABISELECT(-96,-52),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C16D1Ev,_ZTv0_n32_N9S19805C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C16D0Ev,_ZTv0_n32_N9S19805C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19805C3__9S19805C16__8S19805C1[] = {
  ABISELECT(-52,-28),
  ABISELECT(-112,-60),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19805C16D1Ev,_ZTv0_n32_N9S19805C16D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19805C16D0Ev,_ZTv0_n32_N9S19805C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19805C7__A1__9S19805C16__8S19805C1[] = {
  ABISELECT(72,40),
  ABISELECT(9,5),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-4,0),
  ABISELECT(-64,-32),
  ABISELECT(72,40),
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C16D1Ev,_ZTv0_n32_N9S19805C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C16D0Ev,_ZTv0_n32_N9S19805C16D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N9S19805C16D1Ev,_ZTv0_n44_N9S19805C16D1Ev)();
extern void ABISELECT(_ZThn32_N9S19805C16D1Ev,_ZThn16_N9S19805C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19805C16D0Ev,_ZTv0_n44_N9S19805C16D0Ev)();
extern void ABISELECT(_ZThn32_N9S19805C16D0Ev,_ZThn16_N9S19805C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19805C12__9S19805C16__8S19805C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-88,-48),
  ABISELECT(-72,-36),
  ABISELECT(-56,-28),
  ABISELECT(-152,-80),
  ABISELECT(-108,-56),
  ABISELECT(-168,-88),
  ABISELECT(-88,-48),
  ABISELECT(-95,-51),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C16D1Ev,_ZTv0_n44_N9S19805C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C16D0Ev,_ZTv0_n44_N9S19805C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19805C13__9S19805C16__8S19805C1[] = {
  ABISELECT(57,29),
  ABISELECT(120,64),
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C89S19805C18__A1__9S19805C16__8S19805C1[] = {
  ABISELECT(-79,-43),
  ABISELECT(-72,-40),
  ABISELECT(-92,-48),
  ABISELECT(-152,-80),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
};
extern void _ZN9S19805C12D1Ev();
extern void _ZN9S19805C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19805C12__A1__8S19805C1[] = {
  ABISELECT(-88,-48),
  ABISELECT(-72,-36),
  ABISELECT(-56,-28),
  ABISELECT(-152,-80),
  ABISELECT(-108,-56),
  ABISELECT(-168,-88),
  ABISELECT(-88,-48),
  ABISELECT(-95,-51),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C12[0]),
  (VTBL_ENTRY)&_ZN9S19805C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__9S19805C12__A1__8S19805C1[] = {
  ABISELECT(-7,-3),
  0,
  ABISELECT(-20,-8),
  ABISELECT(-80,-40),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI9S19805C12[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19805C13__9S19805C12__A1__8S19805C1[] = {
  ABISELECT(57,29),
  ABISELECT(152,80),
  (VTBL_ENTRY)&(_ZTI9S19805C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C3__9S19805C12__A1__8S19805C1[] = {
  ABISELECT(-52,-28),
  ABISELECT(-112,-60),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI9S19805C12[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19805C12D1Ev,_ZTv0_n32_N9S19805C12D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19805C12D0Ev,_ZTv0_n32_N9S19805C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19805C10__9S19805C12__A1__8S19805C1[] = {
  ABISELECT(72,36),
  ABISELECT(-23,-15),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-36,-20),
  ABISELECT(-96,-52),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI9S19805C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C12D1Ev,_ZTv0_n32_N9S19805C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C12D0Ev,_ZTv0_n32_N9S19805C12D0Ev),
};
static  VTT_ENTRY vtt_S19805C1[] = {
  {&(_ZTV8S19805C1[17]),  17,152},
  {&(_tg__ZTV8S19805C3__A__8S19805C1[4]),  4,4},
  {&(_tg__ZTV8S19805C58S19805C3__8S19805C1[4]),  4,4},
  {&(_tg__ZTV9S19805C11__8S19805C1[17]),  17,19},
  {&(_tg__ZTV9S19805C129S19805C11__8S19805C1[10]),  10,12},
  {&(_tg__ZTV8S19805C8__9S19805C129S19805C11__8S19805C1[6]),  6,6},
  {&(_tg__ZTV9S19805C129S19805C11__8S19805C1[10]),  10,12},
  {&(_tg__ZTV8S19805C3__9S19805C129S19805C11__8S19805C1[4]),  4,4},
  {&(_tg__ZTV9S19805C10__9S19805C129S19805C11__8S19805C1[8]),  8,10},
  {&(_tg__ZTV8S19805C8__9S19805C129S19805C11__8S19805C1[6]),  6,6},
  {&(_tg__ZTV9S19805C149S19805C11__8S19805C1[16]),  16,18},
  {&(_tg__ZTV9S19805C109S19805C149S19805C11__A1__8S19805C1[7]),  7,9},
  {&(_tg__ZTV8S19805C79S19805C109S19805C149S19805C11__A2__8S19805C1[7]),  7,9},
  {&(_tg__ZTV8S19805C58S19805C79S19805C109S19805C149S19805C11__A5__8S19805C1[4]),  4,4},
  {&(_tg__ZTV8S19805C8__8S19805C79S19805C109S19805C149S19805C11__A2__8S19805C1[6]),  6,6},
  {&(_tg__ZTV8S19805C8__8S19805C79S19805C109S19805C149S19805C11__A2__8S19805C1[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C109S19805C149S19805C11__A1__8S19805C1[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C109S19805C149S19805C11__A1__8S19805C1[6]),  6,6},
  {&(_tg__ZTV9S19805C199S19805C149S19805C11__8S19805C1[3]),  3,5},
  {&(_tg__ZTV9S19805C139S19805C199S19805C149S19805C11__A1__8S19805C1[3]),  3,3},
  {&(_tg__ZTV8S19805C9__9S19805C149S19805C11__8S19805C1[11]),  11,13},
  {&(_tg__ZTV8S19805C9__9S19805C149S19805C11__8S19805C1[11]),  11,13},
  {&(_tg__ZTV8S19805C3__9S19805C149S19805C11__8S19805C1[4]),  4,4},
  {&(_tg__ZTV9S19805C15__9S19805C149S19805C11__8S19805C1[16]),  16,18},
  {&(_tg__ZTV9S19805C10__A1__9S19805C149S19805C11__8S19805C1[8]),  8,10},
  {&(_tg__ZTV9S19805C16__9S19805C149S19805C11__8S19805C1[15]),  15,17},
  {&(_tg__ZTV8S19805C9__9S19805C149S19805C11__8S19805C1[11]),  11,13},
  {&(_tg__ZTV8S19805C7__A2__9S19805C149S19805C11__8S19805C1[8]),  8,10},
  {&(_tg__ZTV9S19805C12__9S19805C149S19805C11__8S19805C1[11]),  11,13},
  {&(_tg__ZTV9S19805C13__9S19805C149S19805C11__8S19805C1[3]),  3,3},
  {&(_tg__ZTV8S19805C89S19805C189S19805C16__A1__9S19805C149S19805C11__8S19805C1[6]),  6,6},
  {&(_tg__ZTV9S19805C19__9S19805C149S19805C11__8S19805C1[3]),  3,5},
  {&(_tg__ZTV8S19805C9__9S19805C11__8S19805C1[11]),  11,13},
  {&(_tg__ZTV9S19805C11__8S19805C1[17]),  17,19},
  {&(_tg__ZTV8S19805C3__9S19805C11__8S19805C1[4]),  4,4},
  {&(_tg__ZTV9S19805C10__9S19805C11__8S19805C1[8]),  8,10},
  {&(_tg__ZTV8S19805C9__9S19805C11__8S19805C1[11]),  11,13},
  {&(_tg__ZTV9S19805C14__9S19805C11__8S19805C1[16]),  16,18},
  {&(_tg__ZTV9S19805C15__9S19805C11__8S19805C1[16]),  16,18},
  {&(_tg__ZTV9S19805C16__9S19805C11__8S19805C1[15]),  15,17},
  {&(_tg__ZTV8S19805C9__9S19805C11__8S19805C1[11]),  11,13},
  {&(_tg__ZTV8S19805C7__A2__9S19805C11__8S19805C1[8]),  8,10},
  {&(_tg__ZTV9S19805C12__A1__9S19805C11__8S19805C1[11]),  11,13},
  {&(_tg__ZTV8S19805C89S19805C189S19805C16__A1__9S19805C11__8S19805C1[6]),  6,6},
  {&(_tg__ZTV9S19805C199S19805C14__9S19805C11__8S19805C1[3]),  3,5},
  {&(_ZTV8S19805C1[69]),  69,152},
  {&(_ZTV8S19805C1[82]),  82,152},
  {&(_ZTV8S19805C1[82]),  82,152},
  {&(_ZTV8S19805C1[82]),  82,152},
  {&(_ZTV8S19805C1[92]),  92,152},
  {&(_ZTV8S19805C1[98]),  98,152},
  {&(_ZTV8S19805C1[36]),  36,152},
  {&(_ZTV8S19805C1[36]),  36,152},
  {&(_ZTV8S19805C1[54]),  54,152},
  {&(_ZTV8S19805C1[114]),  114,152},
  {&(_ZTV8S19805C1[131]),  131,152},
  {&(_ZTV8S19805C1[150]),  150,152},
  {&(_ZTV8S19805C1[139]),  139,152},
  {&(_ZTV8S19805C1[59]),  59,152},
  {&(_tg__ZTV8S19805C7__8S19805C1[7]),  7,9},
  {&(_tg__ZTV8S19805C58S19805C7__A1__8S19805C1[4]),  4,4},
  {&(_tg__ZTV8S19805C8__8S19805C7__8S19805C1[6]),  6,6},
  {&(_tg__ZTV8S19805C8__8S19805C7__8S19805C1[6]),  6,6},
  {&(_tg__ZTV8S19805C8__8S19805C1[6]),  6,6},
  {&(_tg__ZTV8S19805C8__8S19805C1[6]),  6,6},
  {&(_tg__ZTV8S19805C5__A2__8S19805C1[4]),  4,4},
  {&(_tg__ZTV8S19805C9__8S19805C1[10]),  10,12},
  {&(_tg__ZTV9S19805C10__8S19805C9__8S19805C1[8]),  8,10},
  {&(_tg__ZTV8S19805C9__8S19805C1[10]),  10,12},
  {&(_tg__ZTV8S19805C9__8S19805C1[10]),  10,12},
  {&(_tg__ZTV8S19805C3__8S19805C9__8S19805C1[4]),  4,4},
  {&(_tg__ZTV8S19805C7__A1__8S19805C9__8S19805C1[8]),  8,10},
  {&(_tg__ZTV9S19805C10__8S19805C1[7]),  7,9},
  {&(_tg__ZTV8S19805C79S19805C10__A1__8S19805C1[7]),  7,9},
  {&(_tg__ZTV8S19805C58S19805C79S19805C10__A3__8S19805C1[4]),  4,4},
  {&(_tg__ZTV8S19805C8__8S19805C79S19805C10__A1__8S19805C1[6]),  6,6},
  {&(_tg__ZTV8S19805C8__8S19805C79S19805C10__A1__8S19805C1[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C10__8S19805C1[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C10__8S19805C1[6]),  6,6},
  {&(_tg__ZTV8S19805C3__A1__8S19805C1[4]),  4,4},
  {&(_tg__ZTV8S19805C58S19805C3__A4__8S19805C1[4]),  4,4},
  {&(_tg__ZTV9S19805C13__8S19805C1[3]),  3,3},
  {&(_tg__ZTV9S19805C15__8S19805C1[15]),  15,17},
  {&(_tg__ZTV9S19805C10__9S19805C15__8S19805C1[8]),  8,10},
  {&(_tg__ZTV8S19805C9__9S19805C15__8S19805C1[11]),  11,13},
  {&(_tg__ZTV8S19805C9__9S19805C15__8S19805C1[11]),  11,13},
  {&(_tg__ZTV9S19805C16__9S19805C15__8S19805C1[15]),  15,17},
  {&(_tg__ZTV8S19805C9__9S19805C15__8S19805C1[11]),  11,13},
  {&(_tg__ZTV8S19805C3__9S19805C15__8S19805C1[4]),  4,4},
  {&(_tg__ZTV8S19805C7__A1__9S19805C15__8S19805C1[8]),  8,10},
  {&(_tg__ZTV9S19805C12__9S19805C15__8S19805C1[11]),  11,13},
  {&(_tg__ZTV9S19805C13__9S19805C15__8S19805C1[3]),  3,3},
  {&(_tg__ZTV8S19805C89S19805C189S19805C16__A1__9S19805C15__8S19805C1[6]),  6,6},
  {&(_tg__ZTV9S19805C16__8S19805C1[14]),  14,16},
  {&(_tg__ZTV9S19805C189S19805C16__8S19805C1[8]),  8,10},
  {&(_tg__ZTV8S19805C39S19805C189S19805C16__A2__8S19805C1[4]),  4,4},
  {&(_tg__ZTV8S19805C58S19805C39S19805C189S19805C16__A6__8S19805C1[4]),  4,4},
  {&(_tg__ZTV8S19805C89S19805C189S19805C16__A1__8S19805C1[6]),  6,6},
  {&(_tg__ZTV8S19805C5__8S19805C89S19805C189S19805C16__A1__8S19805C1[4]),  4,4},
  {&(_tg__ZTV8S19805C7__9S19805C189S19805C16__8S19805C1[8]),  8,10},
  {&(_tg__ZTV8S19805C8__9S19805C189S19805C16__8S19805C1[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C189S19805C16__8S19805C1[6]),  6,6},
  {&(_tg__ZTV8S19805C8__A__9S19805C189S19805C16__8S19805C1[6]),  6,6},
  {&(_tg__ZTV8S19805C9__9S19805C16__8S19805C1[11]),  11,13},
  {&(_tg__ZTV9S19805C10__9S19805C16__8S19805C1[8]),  8,10},
  {&(_tg__ZTV8S19805C9__9S19805C16__8S19805C1[11]),  11,13},
  {&(_tg__ZTV8S19805C9__9S19805C16__8S19805C1[11]),  11,13},
  {&(_tg__ZTV8S19805C3__9S19805C16__8S19805C1[4]),  4,4},
  {&(_tg__ZTV8S19805C7__A1__9S19805C16__8S19805C1[8]),  8,10},
  {&(_tg__ZTV9S19805C12__9S19805C16__8S19805C1[11]),  11,13},
  {&(_tg__ZTV9S19805C13__9S19805C16__8S19805C1[3]),  3,3},
  {&(_tg__ZTV8S19805C89S19805C18__A1__9S19805C16__8S19805C1[6]),  6,6},
  {&(_tg__ZTV9S19805C12__A1__8S19805C1[10]),  10,12},
  {&(_tg__ZTV8S19805C8__9S19805C12__A1__8S19805C1[6]),  6,6},
  {&(_tg__ZTV9S19805C13__9S19805C12__A1__8S19805C1[3]),  3,3},
  {&(_tg__ZTV8S19805C3__9S19805C12__A1__8S19805C1[4]),  4,4},
  {&(_tg__ZTV9S19805C10__9S19805C12__A1__8S19805C1[8]),  8,10},
  {&(_tg__ZTV8S19805C8__9S19805C12__A1__8S19805C1[6]),  6,6},
};
extern VTBL_ENTRY _ZTI8S19805C1[];
extern  VTBL_ENTRY _ZTV8S19805C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C1[];
static VTBL_ENTRY alt_thunk_names134[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19805C16D0Ev,_ZTv0_n44_N9S19805C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19805C16D0Ev,_ZThn16_N9S19805C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19805C16D1Ev,_ZTv0_n44_N9S19805C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19805C16D1Ev,_ZThn16_N9S19805C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19805C15D0Ev,_ZTv0_n44_N9S19805C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19805C15D0Ev,_ZThn20_N9S19805C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19805C15D1Ev,_ZTv0_n44_N9S19805C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19805C15D1Ev,_ZThn20_N9S19805C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19805C15D0Ev,_ZTv0_n60_N9S19805C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19805C15D0Ev,_ZThn4_N9S19805C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19805C15D1Ev,_ZTv0_n60_N9S19805C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19805C15D1Ev,_ZThn4_N9S19805C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19805C9D0Ev,_ZTv0_n32_N8S19805C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19805C9D0Ev,_ZThn12_N8S19805C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19805C9D1Ev,_ZTv0_n32_N8S19805C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19805C9D1Ev,_ZThn12_N8S19805C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19805C11D0Ev,_ZTv0_n60_N9S19805C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S19805C11D0Ev,_ZThn64_N9S19805C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19805C11D1Ev,_ZTv0_n60_N9S19805C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S19805C11D1Ev,_ZThn64_N9S19805C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N9S19805C11D0Ev,_ZTv0_n64_N9S19805C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19805C11D0Ev,_ZThn60_N9S19805C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N9S19805C11D1Ev,_ZTv0_n64_N9S19805C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19805C11D1Ev,_ZThn60_N9S19805C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C11D0Ev,_ZTv0_n32_N9S19805C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19805C11D0Ev,_ZThn24_N9S19805C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19805C11D0Ev,_ZThn44_N9S19805C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C11D1Ev,_ZTv0_n32_N9S19805C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19805C11D1Ev,_ZThn24_N9S19805C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19805C11D1Ev,_ZThn44_N9S19805C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19805C11D0Ev,_ZTv0_n44_N9S19805C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S19805C11D0Ev,_ZThn80_N9S19805C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19805C11D0Ev,_ZThn32_N9S19805C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19805C11D1Ev,_ZTv0_n44_N9S19805C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S19805C11D1Ev,_ZThn80_N9S19805C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19805C11D1Ev,_ZThn32_N9S19805C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19805C14D0Ev,_ZTv0_n60_N9S19805C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19805C14D0Ev,_ZThn56_N9S19805C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19805C14D1Ev,_ZTv0_n60_N9S19805C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19805C14D1Ev,_ZThn56_N9S19805C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C14D0Ev,_ZTv0_n32_N9S19805C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19805C14D0Ev,_ZThn16_N9S19805C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19805C14D0Ev,_ZThn36_N9S19805C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C14D1Ev,_ZTv0_n32_N9S19805C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19805C14D1Ev,_ZThn16_N9S19805C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19805C14D1Ev,_ZThn36_N9S19805C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N9S19805C14D0Ev,_ZTv0_n64_N9S19805C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19805C14D0Ev,_ZThn52_N9S19805C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N9S19805C14D1Ev,_ZTv0_n64_N9S19805C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19805C14D1Ev,_ZThn52_N9S19805C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19805C14D0Ev,_ZTv0_n44_N9S19805C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19805C14D0Ev,_ZThn72_N9S19805C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19805C14D0Ev,_ZThn24_N9S19805C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19805C14D1Ev,_ZTv0_n44_N9S19805C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19805C14D1Ev,_ZThn72_N9S19805C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19805C14D1Ev,_ZThn24_N9S19805C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C12D0Ev,_ZTv0_n32_N9S19805C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19805C12D0Ev,_ZThn44_N9S19805C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C12D1Ev,_ZTv0_n32_N9S19805C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19805C12D1Ev,_ZThn44_N9S19805C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S19805C1D0Ev,_ZTv0_n60_N8S19805C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19805C1D0Ev,_ZThn72_N8S19805C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S19805C1D1Ev,_ZTv0_n60_N8S19805C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19805C1D1Ev,_ZThn72_N8S19805C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S19805C1D0Ev,_ZTv0_n64_N8S19805C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19805C1D0Ev,_ZThn68_N8S19805C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S19805C1D1Ev,_ZTv0_n64_N8S19805C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19805C1D1Ev,_ZThn68_N8S19805C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19805C1D0Ev,_ZTv0_n44_N8S19805C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S19805C1D0Ev,_ZThn88_N8S19805C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19805C1D0Ev,_ZThn40_N8S19805C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19805C1D1Ev,_ZTv0_n44_N8S19805C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S19805C1D1Ev,_ZThn88_N8S19805C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19805C1D1Ev,_ZThn40_N8S19805C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19805C1D0Ev,_ZTv0_n32_N8S19805C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19805C1D0Ev,_ZThn52_N8S19805C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19805C1D0Ev,_ZThn32_N8S19805C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19805C1D1Ev,_ZTv0_n32_N8S19805C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19805C1D1Ev,_ZThn52_N8S19805C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19805C1D1Ev,_ZThn32_N8S19805C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19805C1 = {  "S19805C1", // class name
  bases_S19805C1, 58,
  &(vtc_S19805C1[0]), // expected_vtbl_contents
  &(vtt_S19805C1[0]), // expected_vtt_contents
  ABISELECT(184,96), // object size
  NSPAIRA(_ZTI8S19805C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19805C1),152, //virtual function table var
  17, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19805C1),118, //virtual table table var
  28, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names134,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7488C6  : virtual S7856C24 , S7856C15 , virtual S7856C12 {
  ~S7488C6(); // tgen
  S7488C6(); // tgen
};
//SIG(-1 S7488C6) C1{ VBC2{ m} BC3{ m} VBC4{ m}}


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

static void Test_S7488C6()
{
  extern Class_Descriptor cd_S7488C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7488C6, buf);
    S7488C6 *dp, &lv = *(dp=new (buf) S7488C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7488C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7488C6)");
    check_base_class_offset(lv, (S7856C24*), 0, "S7488C6");
    check_base_class_offset(lv, (S7856C15*), 0, "S7488C6");
    check_base_class_offset(lv, (S7856C12*), 0, "S7488C6");
    test_class_info(&lv, &cd_S7488C6);
    dp->~S7488C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7488C6(Test_S7488C6, "S7488C6", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7488C6C1Ev();
extern void _ZN7S7488C6D1Ev();
Name_Map name_map_S7488C6[] = {
  NSPAIR(_ZN7S7488C6C1Ev),
  NSPAIR(_ZN7S7488C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
static Base_Class bases_S7488C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7488C6[];
static  VTBL_ENTRY vtc_S7488C6[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7488C6[0]),
};
extern VTBL_ENTRY _ZTV7S7488C6[];
static  VTT_ENTRY vtt_S7488C6[] = {
  {&(_ZTV7S7488C6[4]),  4,4},
};
extern VTBL_ENTRY _ZTI7S7488C6[];
extern  VTBL_ENTRY _ZTV7S7488C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7488C6[];
Class_Descriptor cd_S7488C6 = {  "S7488C6", // class name
  bases_S7488C6, 3,
  &(vtc_S7488C6[0]), // expected_vtbl_contents
  &(vtt_S7488C6[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7488C6),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7488C6),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7488C6),1, //virtual table table var
  0, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7488C5  : S7856C24 , virtual S7488C6 , virtual S7856C15 {
  ~S7488C5(); // tgen
  S7488C5(); // tgen
};
//SIG(-1 S7488C5) C1{ BC2{ m} VBC3{ VBC2 BC4{ m} VBC5{ m}} VBC4}


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

static void Test_S7488C5()
{
  extern Class_Descriptor cd_S7488C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S7488C5, buf);
    S7488C5 *dp, &lv = *(dp=new (buf) S7488C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S7488C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7488C5)");
    /*is_ambiguous_... S7488C5::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), 0, "S7488C5");
    check_base_class_offset(lv, (S7856C24*)(S7488C6*), ABISELECT(8,4), "S7488C5");
    check_base_class_offset(lv, (S7856C15*)(S7488C6*), 0, "S7488C5");
    check_base_class_offset(lv, (S7856C12*)(S7488C6*), 0, "S7488C5");
    check_base_class_offset(lv, (S7488C6*), 0, "S7488C5");
    /*is_ambiguous_... S7488C5::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(8,4), "S7488C5");
    test_class_info(&lv, &cd_S7488C5);
    dp->~S7488C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7488C5(Test_S7488C5, "S7488C5", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S7488C5C1Ev();
extern void _ZN7S7488C5D1Ev();
Name_Map name_map_S7488C5[] = {
  NSPAIR(_ZN7S7488C5C1Ev),
  NSPAIR(_ZN7S7488C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7488C6;
extern VTBL_ENTRY _ZTI7S7488C6[];
extern  VTBL_ENTRY _ZTV7S7488C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7488C6[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
static Base_Class bases_S7488C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7488C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7488C5[];
static  VTBL_ENTRY vtc_S7488C5[] = {
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7488C5[0]),
};
extern VTBL_ENTRY _ZTV7S7488C5[];
static  VTBL_ENTRY _tg__ZTV7S7488C6__7S7488C5[] = {
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7488C6[0]),
};
static  VTT_ENTRY vtt_S7488C5[] = {
  {&(_ZTV7S7488C5[6]),  6,6},
  {&(_ZTV7S7488C5[6]),  6,6},
  {&(_tg__ZTV7S7488C6__7S7488C5[4]),  4,4},
};
extern VTBL_ENTRY _ZTI7S7488C5[];
extern  VTBL_ENTRY _ZTV7S7488C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7488C5[];
Class_Descriptor cd_S7488C5 = {  "S7488C5", // class name
  bases_S7488C5, 6,
  &(vtc_S7488C5[0]), // expected_vtbl_contents
  &(vtt_S7488C5[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7488C5),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7488C5),6, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7488C5),3, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7488C8  : S7856C15 , virtual S7856C24 , virtual S7856C12 , S7488C6 , virtual S7488C5 {
  virtual  ~S7488C8(); // _ZN7S7488C8D2Ev
  S7488C8(); // tgen
};
//SIG(-1 S7488C8) C1{ BC2{ m} VBC3{ m} VBC4{ m} BC5{ VBC3 BC2 VBC4} VBC6{ BC3 VBC5 VBC2} vd}


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

static void Test_S7488C8()
{
  extern Class_Descriptor cd_S7488C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S7488C8, buf);
    S7488C8 *dp, &lv = *(dp=new (buf) S7488C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S7488C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7488C8)");
    /*is_ambiguous_... S7488C8::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(8,4), "S7488C8");
    /*is_ambiguous_... S7488C8::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), 0, "S7488C8");
    /*is_ambiguous_... S7488C8::S7488C6 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7488C6*), 0, "S7488C8");
    /*is_ambiguous_... S7488C8::S7488C6 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7488C6*), 0, "S7488C8");
    check_base_class_offset(lv, (S7856C12*), 0, "S7488C8");
    /*is_ambiguous_... S7488C8::S7488C6 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7488C6*), 0, "S7488C8");
    /*is_ambiguous_... S7488C8::S7488C6 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7488C6*), 0, "S7488C8");
    /*is_ambiguous_... S7488C8::S7488C6 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7488C6*), 0, "S7488C8");
    /*is_ambiguous_... S7488C8::S7488C6 */ AMB_check_base_class_offset(lv, (S7488C6*), 0, "S7488C8");
    /*is_ambiguous_... S7488C5::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7488C5*), ABISELECT(16,8), "S7488C8");
    /*is_ambiguous_... S7488C8::S7488C6 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7488C6*), ABISELECT(16,8), "S7488C8");
    check_base_class_offset(lv, (S7488C6*)(S7488C5*), ABISELECT(16,8), "S7488C8");
    /*is_ambiguous_... S7488C5::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7488C5*), ABISELECT(24,12), "S7488C8");
    check_base_class_offset(lv, (S7488C5*), ABISELECT(16,8), "S7488C8");
    test_class_info(&lv, &cd_S7488C8);
    dp->~S7488C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7488C8(Test_S7488C8, "S7488C8", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN7S7488C8C1Ev();
extern void _ZN7S7488C8D2Ev();
Name_Map name_map_S7488C8[] = {
  NSPAIR(_ZN7S7488C8C1Ev),
  NSPAIR(_ZN7S7488C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7488C6;
extern VTBL_ENTRY _ZTI7S7488C6[];
extern  VTBL_ENTRY _ZTV7S7488C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7488C6[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7488C6;
extern VTBL_ENTRY _ZTI7S7488C6[];
extern  VTBL_ENTRY _ZTV7S7488C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7488C6[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7488C5;
extern VTBL_ENTRY _ZTI7S7488C5[];
extern  VTBL_ENTRY _ZTV7S7488C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7488C5[];
static Base_Class bases_S7488C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7488C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7488C6,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7488C5,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7488C8[];
extern void _ZN7S7488C8D1Ev();
extern void _ZN7S7488C8D0Ev();
static  VTBL_ENTRY vtc_S7488C8[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7488C8[0]),
  (VTBL_ENTRY)&_ZN7S7488C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7488C8D0Ev,
  ABISELECT(8,4),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7488C8[0]),
};
extern VTBL_ENTRY _ZTV7S7488C8[];
static  VTBL_ENTRY _tg__ZTV7S7488C6__A__7S7488C8[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7488C6[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7488C5__7S7488C8[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7488C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7488C6__A1__7S7488C8[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7488C6[0]),
};
static  VTT_ENTRY vtt_S7488C8[] = {
  {&(_ZTV7S7488C8[7]),  7,15},
  {&(_tg__ZTV7S7488C6__A__7S7488C8[4]),  4,4},
  {&(_ZTV7S7488C8[15]),  15,15},
  {&(_ZTV7S7488C8[15]),  15,15},
  {&(_tg__ZTV7S7488C5__7S7488C8[6]),  6,6},
  {&(_tg__ZTV7S7488C5__7S7488C8[6]),  6,6},
  {&(_tg__ZTV7S7488C6__A1__7S7488C8[4]),  4,4},
};
extern VTBL_ENTRY _ZTI7S7488C8[];
extern  VTBL_ENTRY _ZTV7S7488C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7488C8[];
Class_Descriptor cd_S7488C8 = {  "S7488C8", // class name
  bases_S7488C8, 10,
  &(vtc_S7488C8[0]), // expected_vtbl_contents
  &(vtt_S7488C8[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI7S7488C8),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S7488C8),15, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7488C8),7, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7488C2  : virtual S7856C24 , virtual S7856C15 , virtual S7488C5 , S7856C12 , S7488C8 {
  virtual  ~S7488C2(); // _ZN7S7488C2D2Ev
  S7488C2(); // tgen
};
//SIG(-1 S7488C2) C1{ VBC2{ m} VBC3{ m} VBC4{ BC2 VBC5{ VBC2 BC3 VBC6{ m}} VBC3} BC6 BC7{ BC3 VBC2 VBC6 BC5 VBC4 vd} vd}


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

static void Test_S7488C2()
{
  extern Class_Descriptor cd_S7488C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S7488C2, buf);
    S7488C2 *dp, &lv = *(dp=new (buf) S7488C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S7488C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7488C2)");
    /*is_ambiguous_... S7488C2::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), 0, "S7488C2");
    /*is_ambiguous_... S7488C2::S7488C6 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7488C6*), 0, "S7488C2");
    /*is_ambiguous_... S7488C8::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7488C8*), 0, "S7488C2");
    /*is_ambiguous_... S7488C8::S7488C6 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7488C6*)(S7488C8*), 0, "S7488C2");
    /*is_ambiguous_... S7488C2::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(9,5), "S7488C2");
    /*is_ambiguous_... S7488C5::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7488C5*), ABISELECT(9,5), "S7488C2");
    /*is_ambiguous_... S7488C5::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7488C5*), ABISELECT(16,8), "S7488C2");
    /*is_ambiguous_... S7488C2::S7488C6 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7488C6*), ABISELECT(16,8), "S7488C2");
    /*is_ambiguous_... S7488C2::S7488C6 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7488C6*), ABISELECT(24,12), "S7488C2");
    check_base_class_offset(lv, (S7856C12*)(S7488C8*), ABISELECT(24,12), "S7488C2");
    /*is_ambiguous_... S7488C8::S7488C6 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7488C6*)(S7488C8*), ABISELECT(24,12), "S7488C2");
    check_base_class_offset(lv, (S7488C6*)(S7488C5*), ABISELECT(16,8), "S7488C2");
    check_base_class_offset(lv, (S7488C5*), ABISELECT(16,8), "S7488C2");
    check_base_class_offset(lv, (S7488C5*)(S7488C8*), ABISELECT(16,8), "S7488C2");
    /*is_ambiguous_... S7488C2::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), 0, "S7488C2");
    /*is_ambiguous_... S7488C8::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7488C8*), ABISELECT(8,4), "S7488C2");
    /*is_ambiguous_... S7488C8::S7488C6 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7488C6*)(S7488C8*), 0, "S7488C2");
    /*is_ambiguous_... S7488C8::S7488C6 */ AMB_check_base_class_offset(lv, (S7488C6*)(S7488C8*), 0, "S7488C2");
    check_base_class_offset(lv, (S7488C8*), 0, "S7488C2");
    test_class_info(&lv, &cd_S7488C2);
    dp->~S7488C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7488C2(Test_S7488C2, "S7488C2", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN7S7488C2C1Ev();
extern void _ZN7S7488C2D2Ev();
Name_Map name_map_S7488C2[] = {
  NSPAIR(_ZN7S7488C2C1Ev),
  NSPAIR(_ZN7S7488C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7488C6;
extern VTBL_ENTRY _ZTI7S7488C6[];
extern  VTBL_ENTRY _ZTV7S7488C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7488C6[];
extern Class_Descriptor cd_S7488C5;
extern VTBL_ENTRY _ZTI7S7488C5[];
extern  VTBL_ENTRY _ZTV7S7488C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7488C5[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7488C6;
extern VTBL_ENTRY _ZTI7S7488C6[];
extern  VTBL_ENTRY _ZTV7S7488C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7488C6[];
extern Class_Descriptor cd_S7488C8;
extern VTBL_ENTRY _ZTI7S7488C8[];
extern  VTBL_ENTRY _ZTV7S7488C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7488C8[];
static Base_Class bases_S7488C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7488C6,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7488C5,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7488C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7488C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7488C2[];
extern void _ZN7S7488C2D1Ev();
extern void _ZN7S7488C2D0Ev();
static  VTBL_ENTRY vtc_S7488C2[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7488C2[0]),
  (VTBL_ENTRY)&_ZN7S7488C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7488C2D0Ev,
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7488C2[0]),
};
extern VTBL_ENTRY _ZTV7S7488C2[];
extern void _ZN7S7488C8D1Ev();
extern void _ZN7S7488C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7488C8__7S7488C2[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7488C8[0]),
  (VTBL_ENTRY)&_ZN7S7488C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7488C8D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7488C67S7488C8__A1__7S7488C2[] = {
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7488C6[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7488C5__7S7488C8__7S7488C2[] = {
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7488C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7488C5__7S7488C2[] = {
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7488C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7488C6__7S7488C2[] = {
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7488C6[0]),
};
static  VTT_ENTRY vtt_S7488C2[] = {
  {&(_ZTV7S7488C2[7]),  7,15},
  {&(_tg__ZTV7S7488C8__7S7488C2[7]),  7,9},
  {&(_tg__ZTV7S7488C67S7488C8__A1__7S7488C2[4]),  4,4},
  {&(_tg__ZTV7S7488C5__7S7488C8__7S7488C2[6]),  6,6},
  {&(_tg__ZTV7S7488C5__7S7488C8__7S7488C2[6]),  6,6},
  {&(_ZTV7S7488C2[15]),  15,15},
  {&(_ZTV7S7488C2[15]),  15,15},
  {&(_tg__ZTV7S7488C5__7S7488C2[6]),  6,6},
  {&(_tg__ZTV7S7488C5__7S7488C2[6]),  6,6},
  {&(_tg__ZTV7S7488C6__7S7488C2[4]),  4,4},
};
extern VTBL_ENTRY _ZTI7S7488C2[];
extern  VTBL_ENTRY _ZTV7S7488C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7488C2[];
Class_Descriptor cd_S7488C2 = {  "S7488C2", // class name
  bases_S7488C2, 12,
  &(vtc_S7488C2[0]), // expected_vtbl_contents
  &(vtt_S7488C2[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI7S7488C2),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S7488C2),15, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7488C2),10, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7488C1  : S7488C2 {
  ::S19805C11 s7488c1f0;
  ~S7488C1(); // tgen
  S7488C1(); // tgen
};
//SIG(1 S7488C1) C1{ BC2{ VBC3{ m} VBC4{ m} VBC5{ BC3 VBC6{ VBC3 BC4 VBC7{ m}} VBC4} BC7 BC8{ BC4 VBC3 VBC7 BC6 VBC5 vd} vd} FC9{ BC10{ VBC11{ VBC7 BC4 VBC3} VBC12{ VBC4} VBC13{ BC3 BC4 BC11 Fi} BC3 VBC14{ VBC7 VBC4 VBC15{ BC7 VBC11 VBC4} BC3 BC16{ BC4 VBC7 VBC3 BC11 VBC15 vd} vd} vd Fi} BC17{ BC14 VBC13 VBC18{ VBC14 VBC19{ VBC20{ VBC14 VBC13 VBC16 vd Fi[2]} VBC21{ m} VBC10 BC22{ VBC16 BC13 BC15 BC3 vd} vd} vd} BC23{ BC4 BC12 vd} BC24{ m} Fi} VBC24}}


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

static void Test_S7488C1()
{
  extern Class_Descriptor cd_S7488C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(27,29)];
    init_test(&cd_S7488C1, buf);
    S7488C1 *dp, &lv = *(dp=new (buf) S7488C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,112), "sizeof(S7488C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7488C1)");
    /*is_ambiguous_... S7488C2::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7488C2*), 0, "S7488C1");
    /*is_ambiguous_... S7488C1::S7488C6 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7488C6*), 0, "S7488C1");
    /*is_ambiguous_... S7488C8::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7488C8*)(S7488C2*), 0, "S7488C1");
    /*is_ambiguous_... S7488C8::S7488C6 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7488C6*)(S7488C8*)(S7488C2*), 0, "S7488C1");
    /*is_ambiguous_... S7488C2::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7488C2*), ABISELECT(184,100), "S7488C1");
    /*is_ambiguous_... S7488C5::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7488C5*), ABISELECT(184,100), "S7488C1");
    /*is_ambiguous_... S7488C5::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7488C5*), ABISELECT(192,104), "S7488C1");
    /*is_ambiguous_... S7488C1::S7488C6 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7488C6*), ABISELECT(192,104), "S7488C1");
    /*is_ambiguous_... S7488C1::S7488C6 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7488C6*), ABISELECT(200,108), "S7488C1");
    check_base_class_offset(lv, (S7856C12*)(S7488C8*)(S7488C2*), ABISELECT(200,108), "S7488C1");
    /*is_ambiguous_... S7488C8::S7488C6 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7488C6*)(S7488C8*)(S7488C2*), ABISELECT(200,108), "S7488C1");
    check_base_class_offset(lv, (S7488C6*)(S7488C5*), ABISELECT(192,104), "S7488C1");
    check_base_class_offset(lv, (S7488C5*)(S7488C2*), ABISELECT(192,104), "S7488C1");
    check_base_class_offset(lv, (S7488C5*)(S7488C8*)(S7488C2*), ABISELECT(192,104), "S7488C1");
    /*is_ambiguous_... S7488C2::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7488C2*), 0, "S7488C1");
    /*is_ambiguous_... S7488C8::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7488C8*)(S7488C2*), ABISELECT(8,4), "S7488C1");
    /*is_ambiguous_... S7488C8::S7488C6 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7488C6*)(S7488C8*)(S7488C2*), 0, "S7488C1");
    /*is_ambiguous_... S7488C8::S7488C6 */ AMB_check_base_class_offset(lv, (S7488C6*)(S7488C8*)(S7488C2*), 0, "S7488C1");
    check_base_class_offset(lv, (S7488C8*)(S7488C2*), 0, "S7488C1");
    check_base_class_offset(lv, (S7488C2*), 0, "S7488C1");
    check_field_offset(lv, s7488c1f0, ABISELECT(16,8), "S7488C1.s7488c1f0");
    test_class_info(&lv, &cd_S7488C1);
    dp->~S7488C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7488C1(Test_S7488C1, "S7488C1", ABISELECT(208,112));

#else // __cplusplus

extern void _ZN7S7488C1C1Ev();
extern void _ZN7S7488C1D1Ev();
Name_Map name_map_S7488C1[] = {
  NSPAIR(_ZN7S7488C1C1Ev),
  NSPAIR(_ZN7S7488C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7488C6;
extern VTBL_ENTRY _ZTI7S7488C6[];
extern  VTBL_ENTRY _ZTV7S7488C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7488C6[];
extern Class_Descriptor cd_S7488C5;
extern VTBL_ENTRY _ZTI7S7488C5[];
extern  VTBL_ENTRY _ZTV7S7488C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7488C5[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7488C6;
extern VTBL_ENTRY _ZTI7S7488C6[];
extern  VTBL_ENTRY _ZTV7S7488C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7488C6[];
extern Class_Descriptor cd_S7488C8;
extern VTBL_ENTRY _ZTI7S7488C8[];
extern  VTBL_ENTRY _ZTV7S7488C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7488C8[];
extern Class_Descriptor cd_S7488C2;
extern VTBL_ENTRY _ZTI7S7488C2[];
extern  VTBL_ENTRY _ZTV7S7488C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7488C2[];
static Base_Class bases_S7488C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(184,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(192,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(192,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(200,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7488C6,    ABISELECT(192,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7488C5,    ABISELECT(192,104), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7488C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7488C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7488C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7488C1[];
extern void _ZN7S7488C1D1Ev();
extern void _ZN7S7488C1D0Ev();
static  VTBL_ENTRY vtc_S7488C1[] = {
  ABISELECT(184,100),
  ABISELECT(192,104),
  ABISELECT(192,104),
  ABISELECT(200,108),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7488C1[0]),
  (VTBL_ENTRY)&_ZN7S7488C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7488C1D0Ev,
  ABISELECT(-8,-4),
  0,
  ABISELECT(8,4),
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  (VTBL_ENTRY)&(_ZTI7S7488C1[0]),
};
extern VTBL_ENTRY _ZTV7S7488C1[];
extern void _ZN7S7488C2D1Ev();
extern void _ZN7S7488C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7488C2__7S7488C1[] = {
  ABISELECT(184,100),
  ABISELECT(192,104),
  ABISELECT(192,104),
  ABISELECT(200,108),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7488C2[0]),
  (VTBL_ENTRY)&_ZN7S7488C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7488C2D0Ev,
};
extern void _ZN7S7488C8D1Ev();
extern void _ZN7S7488C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7488C87S7488C2__7S7488C1[] = {
  ABISELECT(184,100),
  ABISELECT(192,104),
  ABISELECT(192,104),
  ABISELECT(200,108),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7488C8[0]),
  (VTBL_ENTRY)&_ZN7S7488C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7488C8D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7488C67S7488C87S7488C2__A1__7S7488C1[] = {
  ABISELECT(200,108),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7488C6[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7488C5__7S7488C87S7488C2__7S7488C1[] = {
  ABISELECT(-8,-4),
  0,
  ABISELECT(8,4),
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  (VTBL_ENTRY)&(_ZTI7S7488C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7488C5__7S7488C2__7S7488C1[] = {
  ABISELECT(-8,-4),
  0,
  ABISELECT(8,4),
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  (VTBL_ENTRY)&(_ZTI7S7488C2[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7488C5__7S7488C1[] = {
  ABISELECT(-8,-4),
  0,
  ABISELECT(8,4),
  ABISELECT(-192,-104),
  0,
  (VTBL_ENTRY)&(_ZTI7S7488C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7488C6__7S7488C1[] = {
  ABISELECT(8,4),
  ABISELECT(-192,-104),
  0,
  (VTBL_ENTRY)&(_ZTI7S7488C6[0]),
};
static  VTT_ENTRY vtt_S7488C1[] = {
  {&(_ZTV7S7488C1[7]),  7,15},
  {&(_tg__ZTV7S7488C2__7S7488C1[7]),  7,9},
  {&(_tg__ZTV7S7488C87S7488C2__7S7488C1[7]),  7,9},
  {&(_tg__ZTV7S7488C67S7488C87S7488C2__A1__7S7488C1[4]),  4,4},
  {&(_tg__ZTV7S7488C5__7S7488C87S7488C2__7S7488C1[6]),  6,6},
  {&(_tg__ZTV7S7488C5__7S7488C87S7488C2__7S7488C1[6]),  6,6},
  {&(_tg__ZTV7S7488C5__7S7488C2__7S7488C1[6]),  6,6},
  {&(_tg__ZTV7S7488C5__7S7488C2__7S7488C1[6]),  6,6},
  {&(_ZTV7S7488C1[15]),  15,15},
  {&(_ZTV7S7488C1[15]),  15,15},
  {&(_tg__ZTV7S7488C5__7S7488C1[6]),  6,6},
  {&(_tg__ZTV7S7488C5__7S7488C1[6]),  6,6},
  {&(_tg__ZTV7S7488C6__7S7488C1[4]),  4,4},
};
extern VTBL_ENTRY _ZTI7S7488C1[];
extern  VTBL_ENTRY _ZTV7S7488C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7488C1[];
Class_Descriptor cd_S7488C1 = {  "S7488C1", // class name
  bases_S7488C1, 13,
  &(vtc_S7488C1[0]), // expected_vtbl_contents
  &(vtt_S7488C1[0]), // expected_vtt_contents
  ABISELECT(208,112), // object size
  NSPAIRA(_ZTI7S7488C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7488C1),15, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7488C1),13, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1867C3  : S1868C4_nt {
  void *s1867c3f0[2];
  virtual  ~S1867C3(); // _ZN7S1867C3D1Ev
  virtual void  v9(); // _ZN7S1867C32v9Ev
  virtual void  v10(); // _ZN7S1867C33v10Ev
  virtual void  v11(); // _ZN7S1867C33v11Ev
  virtual void  v12(); // _ZN7S1867C33v12Ev
  virtual void  v13(); // _ZN7S1867C33v13Ev
  virtual void  v14(); // _ZN7S1867C33v14Ev
  virtual void  v15(); // _ZN7S1867C33v15Ev
  S1867C3(); // tgen
};
//SIG(-1 S1867C3) C1{ BC2{ vd m} vd v1 v2 v3 v4 v5 v6 v7 Fp[2]}


 S1867C3 ::~S1867C3(){ note_dtor("S1867C3", this);}
void  S1867C3 ::v9(){vfunc_called(this, "_ZN7S1867C32v9Ev");}
void  S1867C3 ::v10(){vfunc_called(this, "_ZN7S1867C33v10Ev");}
void  S1867C3 ::v11(){vfunc_called(this, "_ZN7S1867C33v11Ev");}
void  S1867C3 ::v12(){vfunc_called(this, "_ZN7S1867C33v12Ev");}
void  S1867C3 ::v13(){vfunc_called(this, "_ZN7S1867C33v13Ev");}
void  S1867C3 ::v14(){vfunc_called(this, "_ZN7S1867C33v14Ev");}
void  S1867C3 ::v15(){vfunc_called(this, "_ZN7S1867C33v15Ev");}
S1867C3 ::S1867C3(){ note_ctor("S1867C3", this);} // tgen

static void Test_S1867C3()
{
  extern Class_Descriptor cd_S1867C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S1867C3, buf);
    S1867C3 *dp, &lv = *(dp=new (buf) S1867C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S1867C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1867C3)");
    check_base_class_offset(lv, (S1868C4_nt*), 0, "S1867C3");
    check_field_offset(lv, s1867c3f0, ABISELECT(8,4), "S1867C3.s1867c3f0");
    test_class_info(&lv, &cd_S1867C3);
    dp->~S1867C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1867C3(Test_S1867C3, "S1867C3", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S1867C3C1Ev();
extern void _ZN7S1867C3D1Ev();
Name_Map name_map_S1867C3[] = {
  NSPAIR(_ZN7S1867C3C1Ev),
  NSPAIR(_ZN7S1867C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1868C4_nt;
extern VTBL_ENTRY _ZTI10S1868C4_nt[];
extern  VTBL_ENTRY _ZTV10S1868C4_nt[];
static Base_Class bases_S1867C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1868C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1867C3[];
extern void _ZN7S1867C3D1Ev();
extern void _ZN7S1867C3D0Ev();
extern void _ZN7S1867C32v9Ev();
extern void _ZN7S1867C33v10Ev();
extern void _ZN7S1867C33v11Ev();
extern void _ZN7S1867C33v12Ev();
extern void _ZN7S1867C33v13Ev();
extern void _ZN7S1867C33v14Ev();
extern void _ZN7S1867C33v15Ev();
static  VTBL_ENTRY vtc_S1867C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1867C3[0]),
  (VTBL_ENTRY)&_ZN7S1867C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1867C3D0Ev,
  (VTBL_ENTRY)&_ZN7S1867C32v9Ev,
  (VTBL_ENTRY)&_ZN7S1867C33v10Ev,
  (VTBL_ENTRY)&_ZN7S1867C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1867C33v12Ev,
  (VTBL_ENTRY)&_ZN7S1867C33v13Ev,
  (VTBL_ENTRY)&_ZN7S1867C33v14Ev,
  (VTBL_ENTRY)&_ZN7S1867C33v15Ev,
};
extern VTBL_ENTRY _ZTI7S1867C3[];
extern  VTBL_ENTRY _ZTV7S1867C3[];
Class_Descriptor cd_S1867C3 = {  "S1867C3", // class name
  bases_S1867C3, 1,
  &(vtc_S1867C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S1867C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1867C3),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1867C5  {
  virtual  ~S1867C5(); // _ZN7S1867C5D1Ev
  virtual void  v16(); // _ZN7S1867C53v16Ev
  virtual void  v17(); // _ZN7S1867C53v17Ev
  virtual void  v18(); // _ZN7S1867C53v18Ev
  virtual void  v19(); // _ZN7S1867C53v19Ev
  virtual void  v20(); // _ZN7S1867C53v20Ev
  virtual void  v21(); // _ZN7S1867C53v21Ev
  virtual void  v22(); // _ZN7S1867C53v22Ev
  virtual void  v23(); // _ZN7S1867C53v23Ev
  virtual void  v24(); // _ZN7S1867C53v24Ev
  virtual void  v25(); // _ZN7S1867C53v25Ev
  virtual void  v26(); // _ZN7S1867C53v26Ev
  virtual void  v27(); // _ZN7S1867C53v27Ev
  S1867C5(); // tgen
};
//SIG(-1 S1867C5) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12}


 S1867C5 ::~S1867C5(){ note_dtor("S1867C5", this);}
void  S1867C5 ::v16(){vfunc_called(this, "_ZN7S1867C53v16Ev");}
void  S1867C5 ::v17(){vfunc_called(this, "_ZN7S1867C53v17Ev");}
void  S1867C5 ::v18(){vfunc_called(this, "_ZN7S1867C53v18Ev");}
void  S1867C5 ::v19(){vfunc_called(this, "_ZN7S1867C53v19Ev");}
void  S1867C5 ::v20(){vfunc_called(this, "_ZN7S1867C53v20Ev");}
void  S1867C5 ::v21(){vfunc_called(this, "_ZN7S1867C53v21Ev");}
void  S1867C5 ::v22(){vfunc_called(this, "_ZN7S1867C53v22Ev");}
void  S1867C5 ::v23(){vfunc_called(this, "_ZN7S1867C53v23Ev");}
void  S1867C5 ::v24(){vfunc_called(this, "_ZN7S1867C53v24Ev");}
void  S1867C5 ::v25(){vfunc_called(this, "_ZN7S1867C53v25Ev");}
void  S1867C5 ::v26(){vfunc_called(this, "_ZN7S1867C53v26Ev");}
void  S1867C5 ::v27(){vfunc_called(this, "_ZN7S1867C53v27Ev");}
S1867C5 ::S1867C5(){ note_ctor("S1867C5", this);} // tgen

static void Test_S1867C5()
{
  extern Class_Descriptor cd_S1867C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S1867C5, buf);
    S1867C5 *dp, &lv = *(dp=new (buf) S1867C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S1867C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1867C5)");
    test_class_info(&lv, &cd_S1867C5);
    dp->~S1867C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1867C5(Test_S1867C5, "S1867C5", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S1867C5C1Ev();
extern void _ZN7S1867C5D1Ev();
Name_Map name_map_S1867C5[] = {
  NSPAIR(_ZN7S1867C5C1Ev),
  NSPAIR(_ZN7S1867C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S1867C5[];
extern void _ZN7S1867C5D1Ev();
extern void _ZN7S1867C5D0Ev();
extern void _ZN7S1867C53v16Ev();
extern void _ZN7S1867C53v17Ev();
extern void _ZN7S1867C53v18Ev();
extern void _ZN7S1867C53v19Ev();
extern void _ZN7S1867C53v20Ev();
extern void _ZN7S1867C53v21Ev();
extern void _ZN7S1867C53v22Ev();
extern void _ZN7S1867C53v23Ev();
extern void _ZN7S1867C53v24Ev();
extern void _ZN7S1867C53v25Ev();
extern void _ZN7S1867C53v26Ev();
extern void _ZN7S1867C53v27Ev();
static  VTBL_ENTRY vtc_S1867C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1867C5[0]),
  (VTBL_ENTRY)&_ZN7S1867C5D1Ev,
  (VTBL_ENTRY)&_ZN7S1867C5D0Ev,
  (VTBL_ENTRY)&_ZN7S1867C53v16Ev,
  (VTBL_ENTRY)&_ZN7S1867C53v17Ev,
  (VTBL_ENTRY)&_ZN7S1867C53v18Ev,
  (VTBL_ENTRY)&_ZN7S1867C53v19Ev,
  (VTBL_ENTRY)&_ZN7S1867C53v20Ev,
  (VTBL_ENTRY)&_ZN7S1867C53v21Ev,
  (VTBL_ENTRY)&_ZN7S1867C53v22Ev,
  (VTBL_ENTRY)&_ZN7S1867C53v23Ev,
  (VTBL_ENTRY)&_ZN7S1867C53v24Ev,
  (VTBL_ENTRY)&_ZN7S1867C53v25Ev,
  (VTBL_ENTRY)&_ZN7S1867C53v26Ev,
  (VTBL_ENTRY)&_ZN7S1867C53v27Ev,
};
extern VTBL_ENTRY _ZTI7S1867C5[];
extern  VTBL_ENTRY _ZTV7S1867C5[];
Class_Descriptor cd_S1867C5 = {  "S1867C5", // class name
  0,0,//no base classes
  &(vtc_S1867C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S1867C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S1867C5),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1867C6  {
  virtual  ~S1867C6(); // _ZN7S1867C6D1Ev
  virtual void  v28(); // _ZN7S1867C63v28Ev
  virtual void  v29(); // _ZN7S1867C63v29Ev
  S1867C6(); // tgen
};
//SIG(-1 S1867C6) C1{ vd v1 v2}


 S1867C6 ::~S1867C6(){ note_dtor("S1867C6", this);}
void  S1867C6 ::v28(){vfunc_called(this, "_ZN7S1867C63v28Ev");}
void  S1867C6 ::v29(){vfunc_called(this, "_ZN7S1867C63v29Ev");}
S1867C6 ::S1867C6(){ note_ctor("S1867C6", this);} // tgen

static void Test_S1867C6()
{
  extern Class_Descriptor cd_S1867C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S1867C6, buf);
    S1867C6 *dp, &lv = *(dp=new (buf) S1867C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S1867C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1867C6)");
    test_class_info(&lv, &cd_S1867C6);
    dp->~S1867C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1867C6(Test_S1867C6, "S1867C6", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S1867C6C1Ev();
extern void _ZN7S1867C6D1Ev();
Name_Map name_map_S1867C6[] = {
  NSPAIR(_ZN7S1867C6C1Ev),
  NSPAIR(_ZN7S1867C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S1867C6[];
extern void _ZN7S1867C6D1Ev();
extern void _ZN7S1867C6D0Ev();
extern void _ZN7S1867C63v28Ev();
extern void _ZN7S1867C63v29Ev();
static  VTBL_ENTRY vtc_S1867C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1867C6[0]),
  (VTBL_ENTRY)&_ZN7S1867C6D1Ev,
  (VTBL_ENTRY)&_ZN7S1867C6D0Ev,
  (VTBL_ENTRY)&_ZN7S1867C63v28Ev,
  (VTBL_ENTRY)&_ZN7S1867C63v29Ev,
};
extern VTBL_ENTRY _ZTI7S1867C6[];
extern  VTBL_ENTRY _ZTV7S1867C6[];
Class_Descriptor cd_S1867C6 = {  "S1867C6", // class name
  0,0,//no base classes
  &(vtc_S1867C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S1867C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S1867C6),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1867C2  : S1867C3 , S1867C5 , S1867C6 {
  void *s1867c2f0;
  ::S793C8_nt s1867c2f1;
  void *s1867c2f2;
  ::S1868C17 s1867c2f3;
  int s1867c2f4[2];
  virtual  ~S1867C2(); // _ZN7S1867C2D1Ev
  virtual void  v30(); // _ZN7S1867C23v30Ev
  virtual void  v31(); // _ZN7S1867C23v31Ev
  virtual void  v32(); // _ZN7S1867C23v32Ev
  virtual void  v33(); // _ZN7S1867C23v33Ev
  virtual void  v34(); // _ZN7S1867C23v34Ev
  virtual void  v35(); // _ZN7S1867C23v35Ev
  virtual void  v36(); // _ZN7S1867C23v36Ev
  virtual void  v37(); // _ZN7S1867C23v37Ev
  virtual void  v38(); // _ZN7S1867C23v38Ev
  virtual void  v39(); // _ZN7S1867C23v39Ev
  virtual void  v40(); // _ZN7S1867C23v40Ev
  virtual void  v41(); // _ZN7S1867C23v41Ev
  virtual void  v42(); // _ZN7S1867C23v42Ev
  virtual void  v43(); // _ZN7S1867C23v43Ev
  virtual void  v44(); // _ZN7S1867C23v44Ev
  virtual void  v45(); // _ZN7S1867C23v45Ev
  virtual void  v46(); // _ZN7S1867C23v46Ev
  virtual void  v47(); // _ZN7S1867C23v47Ev
  virtual void  v48(); // _ZN7S1867C23v48Ev
  virtual void  v49(); // _ZN7S1867C23v49Ev
  virtual void  v50(); // _ZN7S1867C23v50Ev
  virtual void  v51(); // _ZN7S1867C23v51Ev
  virtual void  v52(); // _ZN7S1867C23v52Ev
  virtual void  v53(); // _ZN7S1867C23v53Ev
  S1867C2(); // tgen
};
//SIG(-1 S1867C2) C1{ BC2{ BC3{ vd m} vd v25 v26 v27 v28 v29 v30 v31 Fp[2]} BC4{ vd v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43} BC5{ vd v44 v45} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 Fp FC6{ m FC7{ m FL[2]}} Fp FC8{ m Fp} Fi[2]}


 S1867C2 ::~S1867C2(){ note_dtor("S1867C2", this);}
void  S1867C2 ::v30(){vfunc_called(this, "_ZN7S1867C23v30Ev");}
void  S1867C2 ::v31(){vfunc_called(this, "_ZN7S1867C23v31Ev");}
void  S1867C2 ::v32(){vfunc_called(this, "_ZN7S1867C23v32Ev");}
void  S1867C2 ::v33(){vfunc_called(this, "_ZN7S1867C23v33Ev");}
void  S1867C2 ::v34(){vfunc_called(this, "_ZN7S1867C23v34Ev");}
void  S1867C2 ::v35(){vfunc_called(this, "_ZN7S1867C23v35Ev");}
void  S1867C2 ::v36(){vfunc_called(this, "_ZN7S1867C23v36Ev");}
void  S1867C2 ::v37(){vfunc_called(this, "_ZN7S1867C23v37Ev");}
void  S1867C2 ::v38(){vfunc_called(this, "_ZN7S1867C23v38Ev");}
void  S1867C2 ::v39(){vfunc_called(this, "_ZN7S1867C23v39Ev");}
void  S1867C2 ::v40(){vfunc_called(this, "_ZN7S1867C23v40Ev");}
void  S1867C2 ::v41(){vfunc_called(this, "_ZN7S1867C23v41Ev");}
void  S1867C2 ::v42(){vfunc_called(this, "_ZN7S1867C23v42Ev");}
void  S1867C2 ::v43(){vfunc_called(this, "_ZN7S1867C23v43Ev");}
void  S1867C2 ::v44(){vfunc_called(this, "_ZN7S1867C23v44Ev");}
void  S1867C2 ::v45(){vfunc_called(this, "_ZN7S1867C23v45Ev");}
void  S1867C2 ::v46(){vfunc_called(this, "_ZN7S1867C23v46Ev");}
void  S1867C2 ::v47(){vfunc_called(this, "_ZN7S1867C23v47Ev");}
void  S1867C2 ::v48(){vfunc_called(this, "_ZN7S1867C23v48Ev");}
void  S1867C2 ::v49(){vfunc_called(this, "_ZN7S1867C23v49Ev");}
void  S1867C2 ::v50(){vfunc_called(this, "_ZN7S1867C23v50Ev");}
void  S1867C2 ::v51(){vfunc_called(this, "_ZN7S1867C23v51Ev");}
void  S1867C2 ::v52(){vfunc_called(this, "_ZN7S1867C23v52Ev");}
void  S1867C2 ::v53(){vfunc_called(this, "_ZN7S1867C23v53Ev");}
S1867C2 ::S1867C2(){ note_ctor("S1867C2", this);} // tgen

static void Test_S1867C2()
{
  extern Class_Descriptor cd_S1867C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,15)];
    init_test(&cd_S1867C2, buf);
    S1867C2 *dp, &lv = *(dp=new (buf) S1867C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,56), "sizeof(S1867C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1867C2)");
    check_base_class_offset(lv, (S1868C4_nt*)(S1867C3*), 0, "S1867C2");
    check_base_class_offset(lv, (S1867C3*), 0, "S1867C2");
    check_base_class_offset(lv, (S1867C5*), ABISELECT(24,12), "S1867C2");
    check_base_class_offset(lv, (S1867C6*), ABISELECT(32,16), "S1867C2");
    check_field_offset(lv, s1867c2f0, ABISELECT(40,20), "S1867C2.s1867c2f0");
    check_field_offset(lv, s1867c2f1, ABISELECT(48,24), "S1867C2.s1867c2f1");
    check_field_offset(lv, s1867c2f2, ABISELECT(64,40), "S1867C2.s1867c2f2");
    check_field_offset(lv, s1867c2f3, ABISELECT(72,44), "S1867C2.s1867c2f3");
    check_field_offset(lv, s1867c2f4, ABISELECT(80,48), "S1867C2.s1867c2f4");
    test_class_info(&lv, &cd_S1867C2);
    dp->~S1867C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1867C2(Test_S1867C2, "S1867C2", ABISELECT(88,56));

#else // __cplusplus

extern void _ZN7S1867C2C1Ev();
extern void _ZN7S1867C2D1Ev();
Name_Map name_map_S1867C2[] = {
  NSPAIR(_ZN7S1867C2C1Ev),
  NSPAIR(_ZN7S1867C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1868C4_nt;
extern VTBL_ENTRY _ZTI10S1868C4_nt[];
extern  VTBL_ENTRY _ZTV10S1868C4_nt[];
extern Class_Descriptor cd_S1867C3;
extern VTBL_ENTRY _ZTI7S1867C3[];
extern  VTBL_ENTRY _ZTV7S1867C3[];
extern Class_Descriptor cd_S1867C5;
extern VTBL_ENTRY _ZTI7S1867C5[];
extern  VTBL_ENTRY _ZTV7S1867C5[];
extern Class_Descriptor cd_S1867C6;
extern VTBL_ENTRY _ZTI7S1867C6[];
extern  VTBL_ENTRY _ZTV7S1867C6[];
static Base_Class bases_S1867C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1868C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1867C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1867C5,    ABISELECT(24,12), //bcp->offset
    35, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1867C6,    ABISELECT(32,16), //bcp->offset
    51, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1867C2[];
extern void _ZN7S1867C2D1Ev();
extern void _ZN7S1867C2D0Ev();
extern void _ZN7S1867C32v9Ev();
extern void _ZN7S1867C33v10Ev();
extern void _ZN7S1867C33v11Ev();
extern void _ZN7S1867C33v12Ev();
extern void _ZN7S1867C33v13Ev();
extern void _ZN7S1867C33v14Ev();
extern void _ZN7S1867C33v15Ev();
extern void _ZN7S1867C23v30Ev();
extern void _ZN7S1867C23v31Ev();
extern void _ZN7S1867C23v32Ev();
extern void _ZN7S1867C23v33Ev();
extern void _ZN7S1867C23v34Ev();
extern void _ZN7S1867C23v35Ev();
extern void _ZN7S1867C23v36Ev();
extern void _ZN7S1867C23v37Ev();
extern void _ZN7S1867C23v38Ev();
extern void _ZN7S1867C23v39Ev();
extern void _ZN7S1867C23v40Ev();
extern void _ZN7S1867C23v41Ev();
extern void _ZN7S1867C23v42Ev();
extern void _ZN7S1867C23v43Ev();
extern void _ZN7S1867C23v44Ev();
extern void _ZN7S1867C23v45Ev();
extern void _ZN7S1867C23v46Ev();
extern void _ZN7S1867C23v47Ev();
extern void _ZN7S1867C23v48Ev();
extern void _ZN7S1867C23v49Ev();
extern void _ZN7S1867C23v50Ev();
extern void _ZN7S1867C23v51Ev();
extern void _ZN7S1867C23v52Ev();
extern void _ZN7S1867C23v53Ev();
extern void ABISELECT(_ZThn24_N7S1867C2D1Ev,_ZThn12_N7S1867C2D1Ev)();
extern void ABISELECT(_ZThn24_N7S1867C2D0Ev,_ZThn12_N7S1867C2D0Ev)();
extern void _ZN7S1867C53v16Ev();
extern void _ZN7S1867C53v17Ev();
extern void _ZN7S1867C53v18Ev();
extern void _ZN7S1867C53v19Ev();
extern void _ZN7S1867C53v20Ev();
extern void _ZN7S1867C53v21Ev();
extern void _ZN7S1867C53v22Ev();
extern void _ZN7S1867C53v23Ev();
extern void _ZN7S1867C53v24Ev();
extern void _ZN7S1867C53v25Ev();
extern void _ZN7S1867C53v26Ev();
extern void _ZN7S1867C53v27Ev();
extern void ABISELECT(_ZThn32_N7S1867C2D1Ev,_ZThn16_N7S1867C2D1Ev)();
extern void ABISELECT(_ZThn32_N7S1867C2D0Ev,_ZThn16_N7S1867C2D0Ev)();
extern void _ZN7S1867C63v28Ev();
extern void _ZN7S1867C63v29Ev();
static  VTBL_ENTRY vtc_S1867C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1867C2[0]),
  (VTBL_ENTRY)&_ZN7S1867C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1867C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1867C32v9Ev,
  (VTBL_ENTRY)&_ZN7S1867C33v10Ev,
  (VTBL_ENTRY)&_ZN7S1867C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1867C33v12Ev,
  (VTBL_ENTRY)&_ZN7S1867C33v13Ev,
  (VTBL_ENTRY)&_ZN7S1867C33v14Ev,
  (VTBL_ENTRY)&_ZN7S1867C33v15Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v30Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v31Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v32Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v33Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v34Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v35Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v36Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v37Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v38Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v39Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v40Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v41Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v42Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v43Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v44Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v45Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v46Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v47Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v48Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v49Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v50Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v51Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v52Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v53Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S1867C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N7S1867C2D1Ev,_ZThn12_N7S1867C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N7S1867C2D0Ev,_ZThn12_N7S1867C2D0Ev),
  (VTBL_ENTRY)&_ZN7S1867C53v16Ev,
  (VTBL_ENTRY)&_ZN7S1867C53v17Ev,
  (VTBL_ENTRY)&_ZN7S1867C53v18Ev,
  (VTBL_ENTRY)&_ZN7S1867C53v19Ev,
  (VTBL_ENTRY)&_ZN7S1867C53v20Ev,
  (VTBL_ENTRY)&_ZN7S1867C53v21Ev,
  (VTBL_ENTRY)&_ZN7S1867C53v22Ev,
  (VTBL_ENTRY)&_ZN7S1867C53v23Ev,
  (VTBL_ENTRY)&_ZN7S1867C53v24Ev,
  (VTBL_ENTRY)&_ZN7S1867C53v25Ev,
  (VTBL_ENTRY)&_ZN7S1867C53v26Ev,
  (VTBL_ENTRY)&_ZN7S1867C53v27Ev,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S1867C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S1867C2D1Ev,_ZThn16_N7S1867C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S1867C2D0Ev,_ZThn16_N7S1867C2D0Ev),
  (VTBL_ENTRY)&_ZN7S1867C63v28Ev,
  (VTBL_ENTRY)&_ZN7S1867C63v29Ev,
};
extern VTBL_ENTRY _ZTI7S1867C2[];
extern  VTBL_ENTRY _ZTV7S1867C2[];
Class_Descriptor cd_S1867C2 = {  "S1867C2", // class name
  bases_S1867C2, 4,
  &(vtc_S1867C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,56), // object size
  NSPAIRA(_ZTI7S1867C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S1867C2),57, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  4, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1867C1  : S1867C2 {
  void *s1867c1f0;
  int s1867c1f1;
  virtual void  v1(); // _ZN7S1867C12v1Ev
  virtual void  v2(); // _ZN7S1867C12v2Ev
  virtual void  v3(); // _ZN7S1867C12v3Ev
  virtual void  v4(); // _ZN7S1867C12v4Ev
  virtual void  v5(); // _ZN7S1867C12v5Ev
  virtual void  v6(); // _ZN7S1867C12v6Ev
  virtual void  v7(); // _ZN7S1867C12v7Ev
  virtual void  v8(); // _ZN7S1867C12v8Ev
  ~S1867C1(); // tgen
  S1867C1(); // tgen
};
//SIG(1 S1867C1) C1{ BC2{ BC3{ BC4{ vd m} vd v9 v10 v11 v12 v13 v14 v15 Fp[2]} BC5{ vd v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27} BC6{ vd v28 v29} vd v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 Fp FC7{ m FC8{ m FL[2]}} Fp FC9{ m Fp} Fi[2]} v1 v2 v3 v4 v5 v6 v7 v8 Fp Fi}


void  S1867C1 ::v1(){vfunc_called(this, "_ZN7S1867C12v1Ev");}
void  S1867C1 ::v2(){vfunc_called(this, "_ZN7S1867C12v2Ev");}
void  S1867C1 ::v3(){vfunc_called(this, "_ZN7S1867C12v3Ev");}
void  S1867C1 ::v4(){vfunc_called(this, "_ZN7S1867C12v4Ev");}
void  S1867C1 ::v5(){vfunc_called(this, "_ZN7S1867C12v5Ev");}
void  S1867C1 ::v6(){vfunc_called(this, "_ZN7S1867C12v6Ev");}
void  S1867C1 ::v7(){vfunc_called(this, "_ZN7S1867C12v7Ev");}
void  S1867C1 ::v8(){vfunc_called(this, "_ZN7S1867C12v8Ev");}
S1867C1 ::~S1867C1(){ note_dtor("S1867C1", this);} // tgen
S1867C1 ::S1867C1(){ note_ctor("S1867C1", this);} // tgen

static void Test_S1867C1()
{
  extern Class_Descriptor cd_S1867C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(14,17)];
    init_test(&cd_S1867C1, buf);
    S1867C1 *dp, &lv = *(dp=new (buf) S1867C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,64), "sizeof(S1867C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1867C1)");
    check_base_class_offset(lv, (S1868C4_nt*)(S1867C3*)(S1867C2*), 0, "S1867C1");
    check_base_class_offset(lv, (S1867C3*)(S1867C2*), 0, "S1867C1");
    check_base_class_offset(lv, (S1867C5*)(S1867C2*), ABISELECT(24,12), "S1867C1");
    check_base_class_offset(lv, (S1867C6*)(S1867C2*), ABISELECT(32,16), "S1867C1");
    check_base_class_offset(lv, (S1867C2*), 0, "S1867C1");
    check_field_offset(lv, s1867c1f0, ABISELECT(88,56), "S1867C1.s1867c1f0");
    check_field_offset(lv, s1867c1f1, ABISELECT(96,60), "S1867C1.s1867c1f1");
    test_class_info(&lv, &cd_S1867C1);
    dp->~S1867C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1867C1(Test_S1867C1, "S1867C1", ABISELECT(104,64));

#else // __cplusplus

extern void _ZN7S1867C1C1Ev();
extern void _ZN7S1867C1D1Ev();
Name_Map name_map_S1867C1[] = {
  NSPAIR(_ZN7S1867C1C1Ev),
  NSPAIR(_ZN7S1867C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1868C4_nt;
extern VTBL_ENTRY _ZTI10S1868C4_nt[];
extern  VTBL_ENTRY _ZTV10S1868C4_nt[];
extern Class_Descriptor cd_S1867C3;
extern VTBL_ENTRY _ZTI7S1867C3[];
extern  VTBL_ENTRY _ZTV7S1867C3[];
extern Class_Descriptor cd_S1867C5;
extern VTBL_ENTRY _ZTI7S1867C5[];
extern  VTBL_ENTRY _ZTV7S1867C5[];
extern Class_Descriptor cd_S1867C6;
extern VTBL_ENTRY _ZTI7S1867C6[];
extern  VTBL_ENTRY _ZTV7S1867C6[];
extern Class_Descriptor cd_S1867C2;
extern VTBL_ENTRY _ZTI7S1867C2[];
extern  VTBL_ENTRY _ZTV7S1867C2[];
static Base_Class bases_S1867C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1868C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1867C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S1867C5,    ABISELECT(24,12), //bcp->offset
    43, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S1867C6,    ABISELECT(32,16), //bcp->offset
    59, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S1867C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1867C1[];
extern void _ZN7S1867C1D1Ev();
extern void _ZN7S1867C1D0Ev();
extern void _ZN7S1867C32v9Ev();
extern void _ZN7S1867C33v10Ev();
extern void _ZN7S1867C33v11Ev();
extern void _ZN7S1867C33v12Ev();
extern void _ZN7S1867C33v13Ev();
extern void _ZN7S1867C33v14Ev();
extern void _ZN7S1867C33v15Ev();
extern void _ZN7S1867C23v30Ev();
extern void _ZN7S1867C23v31Ev();
extern void _ZN7S1867C23v32Ev();
extern void _ZN7S1867C23v33Ev();
extern void _ZN7S1867C23v34Ev();
extern void _ZN7S1867C23v35Ev();
extern void _ZN7S1867C23v36Ev();
extern void _ZN7S1867C23v37Ev();
extern void _ZN7S1867C23v38Ev();
extern void _ZN7S1867C23v39Ev();
extern void _ZN7S1867C23v40Ev();
extern void _ZN7S1867C23v41Ev();
extern void _ZN7S1867C23v42Ev();
extern void _ZN7S1867C23v43Ev();
extern void _ZN7S1867C23v44Ev();
extern void _ZN7S1867C23v45Ev();
extern void _ZN7S1867C23v46Ev();
extern void _ZN7S1867C23v47Ev();
extern void _ZN7S1867C23v48Ev();
extern void _ZN7S1867C23v49Ev();
extern void _ZN7S1867C23v50Ev();
extern void _ZN7S1867C23v51Ev();
extern void _ZN7S1867C23v52Ev();
extern void _ZN7S1867C23v53Ev();
extern void _ZN7S1867C12v1Ev();
extern void _ZN7S1867C12v2Ev();
extern void _ZN7S1867C12v3Ev();
extern void _ZN7S1867C12v4Ev();
extern void _ZN7S1867C12v5Ev();
extern void _ZN7S1867C12v6Ev();
extern void _ZN7S1867C12v7Ev();
extern void _ZN7S1867C12v8Ev();
extern void ABISELECT(_ZThn24_N7S1867C1D1Ev,_ZThn12_N7S1867C1D1Ev)();
extern void ABISELECT(_ZThn24_N7S1867C1D0Ev,_ZThn12_N7S1867C1D0Ev)();
extern void _ZN7S1867C53v16Ev();
extern void _ZN7S1867C53v17Ev();
extern void _ZN7S1867C53v18Ev();
extern void _ZN7S1867C53v19Ev();
extern void _ZN7S1867C53v20Ev();
extern void _ZN7S1867C53v21Ev();
extern void _ZN7S1867C53v22Ev();
extern void _ZN7S1867C53v23Ev();
extern void _ZN7S1867C53v24Ev();
extern void _ZN7S1867C53v25Ev();
extern void _ZN7S1867C53v26Ev();
extern void _ZN7S1867C53v27Ev();
extern void ABISELECT(_ZThn32_N7S1867C1D1Ev,_ZThn16_N7S1867C1D1Ev)();
extern void ABISELECT(_ZThn32_N7S1867C1D0Ev,_ZThn16_N7S1867C1D0Ev)();
extern void _ZN7S1867C63v28Ev();
extern void _ZN7S1867C63v29Ev();
static  VTBL_ENTRY vtc_S1867C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1867C1[0]),
  (VTBL_ENTRY)&_ZN7S1867C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1867C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1867C32v9Ev,
  (VTBL_ENTRY)&_ZN7S1867C33v10Ev,
  (VTBL_ENTRY)&_ZN7S1867C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1867C33v12Ev,
  (VTBL_ENTRY)&_ZN7S1867C33v13Ev,
  (VTBL_ENTRY)&_ZN7S1867C33v14Ev,
  (VTBL_ENTRY)&_ZN7S1867C33v15Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v30Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v31Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v32Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v33Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v34Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v35Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v36Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v37Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v38Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v39Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v40Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v41Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v42Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v43Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v44Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v45Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v46Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v47Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v48Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v49Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v50Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v51Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v52Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v53Ev,
  (VTBL_ENTRY)&_ZN7S1867C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1867C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1867C12v3Ev,
  (VTBL_ENTRY)&_ZN7S1867C12v4Ev,
  (VTBL_ENTRY)&_ZN7S1867C12v5Ev,
  (VTBL_ENTRY)&_ZN7S1867C12v6Ev,
  (VTBL_ENTRY)&_ZN7S1867C12v7Ev,
  (VTBL_ENTRY)&_ZN7S1867C12v8Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S1867C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N7S1867C1D1Ev,_ZThn12_N7S1867C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N7S1867C1D0Ev,_ZThn12_N7S1867C1D0Ev),
  (VTBL_ENTRY)&_ZN7S1867C53v16Ev,
  (VTBL_ENTRY)&_ZN7S1867C53v17Ev,
  (VTBL_ENTRY)&_ZN7S1867C53v18Ev,
  (VTBL_ENTRY)&_ZN7S1867C53v19Ev,
  (VTBL_ENTRY)&_ZN7S1867C53v20Ev,
  (VTBL_ENTRY)&_ZN7S1867C53v21Ev,
  (VTBL_ENTRY)&_ZN7S1867C53v22Ev,
  (VTBL_ENTRY)&_ZN7S1867C53v23Ev,
  (VTBL_ENTRY)&_ZN7S1867C53v24Ev,
  (VTBL_ENTRY)&_ZN7S1867C53v25Ev,
  (VTBL_ENTRY)&_ZN7S1867C53v26Ev,
  (VTBL_ENTRY)&_ZN7S1867C53v27Ev,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S1867C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S1867C1D1Ev,_ZThn16_N7S1867C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S1867C1D0Ev,_ZThn16_N7S1867C1D0Ev),
  (VTBL_ENTRY)&_ZN7S1867C63v28Ev,
  (VTBL_ENTRY)&_ZN7S1867C63v29Ev,
};
extern VTBL_ENTRY _ZTI7S1867C1[];
extern  VTBL_ENTRY _ZTV7S1867C1[];
Class_Descriptor cd_S1867C1 = {  "S1867C1", // class name
  bases_S1867C1, 5,
  &(vtc_S1867C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(104,64), // object size
  NSPAIRA(_ZTI7S1867C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1867C1),65, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  5, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7471C2  : virtual S7856C24 , S7856C15 , virtual S7856C12 {
  ~S7471C2(); // tgen
  S7471C2(); // tgen
};
//SIG(-1 S7471C2) C1{ VBC2{ m} BC3{ m} VBC4{ m}}


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

static void Test_S7471C2()
{
  extern Class_Descriptor cd_S7471C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7471C2, buf);
    S7471C2 *dp, &lv = *(dp=new (buf) S7471C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7471C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7471C2)");
    check_base_class_offset(lv, (S7856C24*), 0, "S7471C2");
    check_base_class_offset(lv, (S7856C15*), 0, "S7471C2");
    check_base_class_offset(lv, (S7856C12*), 0, "S7471C2");
    test_class_info(&lv, &cd_S7471C2);
    dp->~S7471C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7471C2(Test_S7471C2, "S7471C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7471C2C1Ev();
extern void _ZN7S7471C2D1Ev();
Name_Map name_map_S7471C2[] = {
  NSPAIR(_ZN7S7471C2C1Ev),
  NSPAIR(_ZN7S7471C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
static Base_Class bases_S7471C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7471C2[];
static  VTBL_ENTRY vtc_S7471C2[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
extern VTBL_ENTRY _ZTV7S7471C2[];
static  VTT_ENTRY vtt_S7471C2[] = {
  {&(_ZTV7S7471C2[4]),  4,4},
};
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
Class_Descriptor cd_S7471C2 = {  "S7471C2", // class name
  bases_S7471C2, 3,
  &(vtc_S7471C2[0]), // expected_vtbl_contents
  &(vtt_S7471C2[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7471C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7471C2),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7471C2),1, //virtual table table var
  0, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7471C8  : virtual S7856C15 {
  ~S7471C8(); // tgen
  S7471C8(); // tgen
};
//SIG(-1 S7471C8) C1{ VBC2{ m}}


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

static void Test_S7471C8()
{
  extern Class_Descriptor cd_S7471C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7471C8, buf);
    S7471C8 *dp, &lv = *(dp=new (buf) S7471C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7471C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7471C8)");
    check_base_class_offset(lv, (S7856C15*), 0, "S7471C8");
    test_class_info(&lv, &cd_S7471C8);
    dp->~S7471C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7471C8(Test_S7471C8, "S7471C8", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7471C8C1Ev();
extern void _ZN7S7471C8D1Ev();
Name_Map name_map_S7471C8[] = {
  NSPAIR(_ZN7S7471C8C1Ev),
  NSPAIR(_ZN7S7471C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
static Base_Class bases_S7471C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7471C8[];
static  VTBL_ENTRY vtc_S7471C8[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C8[0]),
};
extern VTBL_ENTRY _ZTV7S7471C8[];
static  VTT_ENTRY vtt_S7471C8[] = {
  {&(_ZTV7S7471C8[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7471C8[];
extern  VTBL_ENTRY _ZTV7S7471C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C8[];
Class_Descriptor cd_S7471C8 = {  "S7471C8", // class name
  bases_S7471C8, 1,
  &(vtc_S7471C8[0]), // expected_vtbl_contents
  &(vtt_S7471C8[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7471C8),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7471C8),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7471C8),1, //virtual table table var
  0, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7471C7  : S7856C15 , S7471C8 {
  virtual  ~S7471C7(); // _ZN7S7471C7D2Ev
  S7471C7(); // tgen
};
//SIG(-1 S7471C7) C1{ BC2{ m} BC3{ VBC2} vd}


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

static void Test_S7471C7()
{
  extern Class_Descriptor cd_S7471C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S7471C7, buf);
    S7471C7 *dp, &lv = *(dp=new (buf) S7471C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S7471C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7471C7)");
    /*is_ambiguous_... S7471C7::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), 0, "S7471C7");
    check_base_class_offset(lv, (S7856C15*)(S7471C8*), ABISELECT(8,4), "S7471C7");
    check_base_class_offset(lv, (S7471C8*), 0, "S7471C7");
    test_class_info(&lv, &cd_S7471C7);
    dp->~S7471C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7471C7(Test_S7471C7, "S7471C7", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S7471C7C1Ev();
extern void _ZN7S7471C7D2Ev();
Name_Map name_map_S7471C7[] = {
  NSPAIR(_ZN7S7471C7C1Ev),
  NSPAIR(_ZN7S7471C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C8;
extern VTBL_ENTRY _ZTI7S7471C8[];
extern  VTBL_ENTRY _ZTV7S7471C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C8[];
static Base_Class bases_S7471C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7471C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7471C7[];
extern void _ZN7S7471C7D1Ev();
extern void _ZN7S7471C7D0Ev();
static  VTBL_ENTRY vtc_S7471C7[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C7[0]),
  (VTBL_ENTRY)&_ZN7S7471C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7471C7D0Ev,
};
extern VTBL_ENTRY _ZTV7S7471C7[];
static  VTBL_ENTRY _tg__ZTV7S7471C8__7S7471C7[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C8[0]),
};
static  VTT_ENTRY vtt_S7471C7[] = {
  {&(_ZTV7S7471C7[3]),  3,5},
  {&(_tg__ZTV7S7471C8__7S7471C7[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7471C7[];
extern  VTBL_ENTRY _ZTV7S7471C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C7[];
Class_Descriptor cd_S7471C7 = {  "S7471C7", // class name
  bases_S7471C7, 3,
  &(vtc_S7471C7[0]), // expected_vtbl_contents
  &(vtt_S7471C7[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7471C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7471C7),5, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7471C7),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7471C10  : S7856C24 , virtual S7471C2 , virtual S7856C15 {
  ~S7471C10(); // tgen
  S7471C10(); // tgen
};
//SIG(-1 S7471C10) C1{ BC2{ m} VBC3{ VBC2 BC4{ m} VBC5{ m}} VBC4}


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

static void Test_S7471C10()
{
  extern Class_Descriptor cd_S7471C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S7471C10, buf);
    S7471C10 *dp, &lv = *(dp=new (buf) S7471C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S7471C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7471C10)");
    /*is_ambiguous_... S7471C10::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), 0, "S7471C10");
    check_base_class_offset(lv, (S7856C24*)(S7471C2*), ABISELECT(8,4), "S7471C10");
    check_base_class_offset(lv, (S7856C15*)(S7471C2*), 0, "S7471C10");
    check_base_class_offset(lv, (S7856C12*)(S7471C2*), 0, "S7471C10");
    check_base_class_offset(lv, (S7471C2*), 0, "S7471C10");
    /*is_ambiguous_... S7471C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(8,4), "S7471C10");
    test_class_info(&lv, &cd_S7471C10);
    dp->~S7471C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7471C10(Test_S7471C10, "S7471C10", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S7471C10C1Ev();
extern void _ZN8S7471C10D1Ev();
Name_Map name_map_S7471C10[] = {
  NSPAIR(_ZN8S7471C10C1Ev),
  NSPAIR(_ZN8S7471C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
static Base_Class bases_S7471C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7471C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7471C10[];
static  VTBL_ENTRY vtc_S7471C10[] = {
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C10[0]),
};
extern VTBL_ENTRY _ZTV8S7471C10[];
static  VTBL_ENTRY _tg__ZTV7S7471C2__8S7471C10[] = {
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
static  VTT_ENTRY vtt_S7471C10[] = {
  {&(_ZTV8S7471C10[6]),  6,6},
  {&(_ZTV8S7471C10[6]),  6,6},
  {&(_tg__ZTV7S7471C2__8S7471C10[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S7471C10[];
extern  VTBL_ENTRY _ZTV8S7471C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C10[];
Class_Descriptor cd_S7471C10 = {  "S7471C10", // class name
  bases_S7471C10, 6,
  &(vtc_S7471C10[0]), // expected_vtbl_contents
  &(vtt_S7471C10[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S7471C10),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7471C10),6, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7471C10),3, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7471C11  : S7856C15 , virtual S7856C24 , virtual S7856C12 , S7471C2 , virtual S7471C10 {
  virtual  ~S7471C11(); // _ZN8S7471C11D2Ev
  S7471C11(); // tgen
};
//SIG(-1 S7471C11) C1{ BC2{ m} VBC3{ m} VBC4{ m} BC5{ VBC3 BC2 VBC4} VBC6{ BC3 VBC5 VBC2} vd}


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

static void Test_S7471C11()
{
  extern Class_Descriptor cd_S7471C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S7471C11, buf);
    S7471C11 *dp, &lv = *(dp=new (buf) S7471C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S7471C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7471C11)");
    /*is_ambiguous_... S7471C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(8,4), "S7471C11");
    /*is_ambiguous_... S7471C11::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), 0, "S7471C11");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C2*), 0, "S7471C11");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C2*), 0, "S7471C11");
    check_base_class_offset(lv, (S7856C12*), 0, "S7471C11");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C2*), 0, "S7471C11");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C2*), 0, "S7471C11");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C2*), 0, "S7471C11");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7471C2*), 0, "S7471C11");
    /*is_ambiguous_... S7471C10::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C10*), ABISELECT(16,8), "S7471C11");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C2*), ABISELECT(16,8), "S7471C11");
    check_base_class_offset(lv, (S7471C2*)(S7471C10*), ABISELECT(16,8), "S7471C11");
    /*is_ambiguous_... S7471C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C10*), ABISELECT(24,12), "S7471C11");
    check_base_class_offset(lv, (S7471C10*), ABISELECT(16,8), "S7471C11");
    test_class_info(&lv, &cd_S7471C11);
    dp->~S7471C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7471C11(Test_S7471C11, "S7471C11", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S7471C11C1Ev();
extern void _ZN8S7471C11D2Ev();
Name_Map name_map_S7471C11[] = {
  NSPAIR(_ZN8S7471C11C1Ev),
  NSPAIR(_ZN8S7471C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C10;
extern VTBL_ENTRY _ZTI8S7471C10[];
extern  VTBL_ENTRY _ZTV8S7471C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C10[];
static Base_Class bases_S7471C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7471C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7471C2,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7471C10,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7471C11[];
extern void _ZN8S7471C11D1Ev();
extern void _ZN8S7471C11D0Ev();
static  VTBL_ENTRY vtc_S7471C11[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C11[0]),
  (VTBL_ENTRY)&_ZN8S7471C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C11D0Ev,
  ABISELECT(8,4),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7471C11[0]),
};
extern VTBL_ENTRY _ZTV8S7471C11[];
static  VTBL_ENTRY _tg__ZTV7S7471C2__A__8S7471C11[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__8S7471C11[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7471C2__A1__8S7471C11[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
static  VTT_ENTRY vtt_S7471C11[] = {
  {&(_ZTV8S7471C11[7]),  7,15},
  {&(_tg__ZTV7S7471C2__A__8S7471C11[4]),  4,4},
  {&(_ZTV8S7471C11[15]),  15,15},
  {&(_ZTV8S7471C11[15]),  15,15},
  {&(_tg__ZTV8S7471C10__8S7471C11[6]),  6,6},
  {&(_tg__ZTV8S7471C10__8S7471C11[6]),  6,6},
  {&(_tg__ZTV7S7471C2__A1__8S7471C11[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S7471C11[];
extern  VTBL_ENTRY _ZTV8S7471C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C11[];
Class_Descriptor cd_S7471C11 = {  "S7471C11", // class name
  bases_S7471C11, 10,
  &(vtc_S7471C11[0]), // expected_vtbl_contents
  &(vtt_S7471C11[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S7471C11),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S7471C11),15, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7471C11),7, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7471C9  : virtual S7856C24 , virtual S7856C15 , virtual S7471C10 , S7856C12 , S7471C11 {
  virtual  ~S7471C9(); // _ZN7S7471C9D2Ev
  S7471C9(); // tgen
};
//SIG(-1 S7471C9) C1{ VBC2{ m} VBC3{ m} VBC4{ BC2 VBC5{ VBC2 BC3 VBC6{ m}} VBC3} BC6 BC7{ BC3 VBC2 VBC6 BC5 VBC4 vd} vd}


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

static void Test_S7471C9()
{
  extern Class_Descriptor cd_S7471C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S7471C9, buf);
    S7471C9 *dp, &lv = *(dp=new (buf) S7471C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S7471C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7471C9)");
    /*is_ambiguous_... S7471C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), 0, "S7471C9");
    /*is_ambiguous_... S7471C9::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C2*), 0, "S7471C9");
    /*is_ambiguous_... S7471C11::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C11*), 0, "S7471C9");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C2*)(S7471C11*), 0, "S7471C9");
    /*is_ambiguous_... S7471C9::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(9,5), "S7471C9");
    /*is_ambiguous_... S7471C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C10*), ABISELECT(9,5), "S7471C9");
    /*is_ambiguous_... S7471C10::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C10*), ABISELECT(16,8), "S7471C9");
    /*is_ambiguous_... S7471C9::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C2*), ABISELECT(16,8), "S7471C9");
    /*is_ambiguous_... S7471C9::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C2*), ABISELECT(24,12), "S7471C9");
    check_base_class_offset(lv, (S7856C12*)(S7471C11*), ABISELECT(24,12), "S7471C9");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C2*)(S7471C11*), ABISELECT(24,12), "S7471C9");
    check_base_class_offset(lv, (S7471C2*)(S7471C10*), ABISELECT(16,8), "S7471C9");
    check_base_class_offset(lv, (S7471C10*), ABISELECT(16,8), "S7471C9");
    check_base_class_offset(lv, (S7471C10*)(S7471C11*), ABISELECT(16,8), "S7471C9");
    /*is_ambiguous_... S7471C9::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), 0, "S7471C9");
    /*is_ambiguous_... S7471C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C11*), ABISELECT(8,4), "S7471C9");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C2*)(S7471C11*), 0, "S7471C9");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7471C2*)(S7471C11*), 0, "S7471C9");
    check_base_class_offset(lv, (S7471C11*), 0, "S7471C9");
    test_class_info(&lv, &cd_S7471C9);
    dp->~S7471C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7471C9(Test_S7471C9, "S7471C9", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN7S7471C9C1Ev();
extern void _ZN7S7471C9D2Ev();
Name_Map name_map_S7471C9[] = {
  NSPAIR(_ZN7S7471C9C1Ev),
  NSPAIR(_ZN7S7471C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
extern Class_Descriptor cd_S7471C10;
extern VTBL_ENTRY _ZTI8S7471C10[];
extern  VTBL_ENTRY _ZTV8S7471C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
extern Class_Descriptor cd_S7471C11;
extern VTBL_ENTRY _ZTI8S7471C11[];
extern  VTBL_ENTRY _ZTV8S7471C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C11[];
static Base_Class bases_S7471C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7471C2,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7471C10,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7471C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7471C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7471C9[];
extern void _ZN7S7471C9D1Ev();
extern void _ZN7S7471C9D0Ev();
static  VTBL_ENTRY vtc_S7471C9[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C9[0]),
  (VTBL_ENTRY)&_ZN7S7471C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7471C9D0Ev,
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7471C9[0]),
};
extern VTBL_ENTRY _ZTV7S7471C9[];
extern void _ZN8S7471C11D1Ev();
extern void _ZN8S7471C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7471C11__7S7471C9[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C11[0]),
  (VTBL_ENTRY)&_ZN8S7471C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C11D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7471C28S7471C11__A1__7S7471C9[] = {
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__8S7471C11__7S7471C9[] = {
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7471C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__7S7471C9[] = {
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7471C2__7S7471C9[] = {
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
static  VTT_ENTRY vtt_S7471C9[] = {
  {&(_ZTV7S7471C9[7]),  7,15},
  {&(_tg__ZTV8S7471C11__7S7471C9[7]),  7,9},
  {&(_tg__ZTV7S7471C28S7471C11__A1__7S7471C9[4]),  4,4},
  {&(_tg__ZTV8S7471C10__8S7471C11__7S7471C9[6]),  6,6},
  {&(_tg__ZTV8S7471C10__8S7471C11__7S7471C9[6]),  6,6},
  {&(_ZTV7S7471C9[15]),  15,15},
  {&(_ZTV7S7471C9[15]),  15,15},
  {&(_tg__ZTV8S7471C10__7S7471C9[6]),  6,6},
  {&(_tg__ZTV8S7471C10__7S7471C9[6]),  6,6},
  {&(_tg__ZTV7S7471C2__7S7471C9[4]),  4,4},
};
extern VTBL_ENTRY _ZTI7S7471C9[];
extern  VTBL_ENTRY _ZTV7S7471C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C9[];
Class_Descriptor cd_S7471C9 = {  "S7471C9", // class name
  bases_S7471C9, 12,
  &(vtc_S7471C9[0]), // expected_vtbl_contents
  &(vtt_S7471C9[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI7S7471C9),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S7471C9),15, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7471C9),10, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7471C15  : S7856C12 , S7856C15 , S7471C2 {
  int s7471c15f0;
  ~S7471C15(); // tgen
  S7471C15(); // tgen
};
//SIG(-1 S7471C15) C1{ BC2{ m} BC3{ m} BC4{ VBC5{ m} BC3 VBC2} Fi}


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

static void Test_S7471C15()
{
  extern Class_Descriptor cd_S7471C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S7471C15, buf);
    S7471C15 *dp, &lv = *(dp=new (buf) S7471C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S7471C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7471C15)");
    /*is_ambiguous_... S7471C15::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), 0, "S7471C15");
    /*is_ambiguous_... S7471C15::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(8,4), "S7471C15");
    check_base_class_offset(lv, (S7856C24*)(S7471C2*), 0, "S7471C15");
    check_base_class_offset(lv, (S7856C15*)(S7471C2*), 0, "S7471C15");
    check_base_class_offset(lv, (S7856C12*)(S7471C2*), ABISELECT(12,8), "S7471C15");
    check_base_class_offset(lv, (S7471C2*), 0, "S7471C15");
    check_field_offset(lv, s7471c15f0, ABISELECT(8,4), "S7471C15.s7471c15f0");
    test_class_info(&lv, &cd_S7471C15);
    dp->~S7471C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7471C15(Test_S7471C15, "S7471C15", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S7471C15C1Ev();
extern void _ZN8S7471C15D1Ev();
Name_Map name_map_S7471C15[] = {
  NSPAIR(_ZN8S7471C15C1Ev),
  NSPAIR(_ZN8S7471C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
static Base_Class bases_S7471C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7471C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7471C15[];
static  VTBL_ENTRY vtc_S7471C15[] = {
  ABISELECT(12,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C15[0]),
};
extern VTBL_ENTRY _ZTV8S7471C15[];
static  VTBL_ENTRY _tg__ZTV7S7471C2__8S7471C15[] = {
  ABISELECT(12,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
static  VTT_ENTRY vtt_S7471C15[] = {
  {&(_ZTV8S7471C15[4]),  4,4},
  {&(_tg__ZTV7S7471C2__8S7471C15[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S7471C15[];
extern  VTBL_ENTRY _ZTV8S7471C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C15[];
Class_Descriptor cd_S7471C15 = {  "S7471C15", // class name
  bases_S7471C15, 6,
  &(vtc_S7471C15[0]), // expected_vtbl_contents
  &(vtt_S7471C15[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S7471C15),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7471C15),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7471C15),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7471C14  : virtual S7471C9 , virtual S7471C15 , virtual S7471C11 {
  int s7471c14f0[2];
  virtual  ~S7471C14(); // _ZN8S7471C14D2Ev
  S7471C14(); // tgen
};
//SIG(-1 S7471C14) C1{ VBC2{ VBC3{ m} VBC4{ m} VBC5{ BC3 VBC6{ VBC3 BC4 VBC7{ m}} VBC4} BC7 BC8{ BC4 VBC3 VBC7 BC6 VBC5 vd} vd} VBC9{ BC7 BC4 BC6 Fi} VBC8 vd Fi[2]}


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

static void Test_S7471C14()
{
  extern Class_Descriptor cd_S7471C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,10)];
    init_test(&cd_S7471C14, buf);
    S7471C14 *dp, &lv = *(dp=new (buf) S7471C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S7471C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7471C14)");
    /*is_ambiguous_... S7471C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C9*), ABISELECT(25,17), "S7471C14");
    /*is_ambiguous_... S7471C14::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C2*), ABISELECT(25,17), "S7471C14");
    /*is_ambiguous_... S7471C11::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C11*)(S7471C9*), ABISELECT(25,17), "S7471C14");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C2*)(S7471C11*)(S7471C9*), ABISELECT(25,17), "S7471C14");
    check_base_class_offset(lv, (S7856C24*)(S7471C2*)(S7471C15*), ABISELECT(25,17), "S7471C14");
    /*is_ambiguous_... S7471C14::S7471C11 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C11*), ABISELECT(25,17), "S7471C14");
    /*is_ambiguous_... S7471C14::S7471C11 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C2*)(S7471C11*), ABISELECT(25,17), "S7471C14");
    /*is_ambiguous_... S7471C9::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C9*), ABISELECT(25,17), "S7471C14");
    /*is_ambiguous_... S7471C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C10*), ABISELECT(25,17), "S7471C14");
    /*is_ambiguous_... S7471C10::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C10*), 0, "S7471C14");
    /*is_ambiguous_... S7471C14::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C2*), 0, "S7471C14");
    /*is_ambiguous_... S7471C14::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C2*), 0, "S7471C14");
    check_base_class_offset(lv, (S7856C12*)(S7471C11*)(S7471C9*), 0, "S7471C14");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C2*)(S7471C11*)(S7471C9*), 0, "S7471C14");
    check_base_class_offset(lv, (S7856C12*)(S7471C2*)(S7471C15*), 0, "S7471C14");
    /*is_ambiguous_... S7471C14::S7471C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C11*), 0, "S7471C14");
    /*is_ambiguous_... S7471C14::S7471C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C2*)(S7471C11*), 0, "S7471C14");
    check_base_class_offset(lv, (S7471C2*)(S7471C10*), 0, "S7471C14");
    check_base_class_offset(lv, (S7471C10*)(S7471C9*), 0, "S7471C14");
    check_base_class_offset(lv, (S7471C10*)(S7471C11*)(S7471C9*), 0, "S7471C14");
    /*is_ambiguous_... S7471C14::S7471C11 */ AMB_check_base_class_offset(lv, (S7471C10*)(S7471C11*), 0, "S7471C14");
    /*is_ambiguous_... S7471C9::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C9*), ABISELECT(16,12), "S7471C14");
    /*is_ambiguous_... S7471C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C11*)(S7471C9*), ABISELECT(24,16), "S7471C14");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C2*)(S7471C11*)(S7471C9*), ABISELECT(16,12), "S7471C14");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7471C2*)(S7471C11*)(S7471C9*), ABISELECT(16,12), "S7471C14");
    check_base_class_offset(lv, (S7471C11*)(S7471C9*), ABISELECT(16,12), "S7471C14");
    check_base_class_offset(lv, (S7471C9*), ABISELECT(16,12), "S7471C14");
    /*is_ambiguous_... S7471C15::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C15*), ABISELECT(32,20), "S7471C14");
    /*is_ambiguous_... S7471C15::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C15*), ABISELECT(40,24), "S7471C14");
    check_base_class_offset(lv, (S7856C15*)(S7471C2*)(S7471C15*), ABISELECT(32,20), "S7471C14");
    check_base_class_offset(lv, (S7471C2*)(S7471C15*), ABISELECT(32,20), "S7471C14");
    check_base_class_offset(lv, (S7471C15*), ABISELECT(32,20), "S7471C14");
    /*is_ambiguous_... S7471C14::S7471C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C11*), ABISELECT(56,32), "S7471C14");
    /*is_ambiguous_... S7471C14::S7471C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C2*)(S7471C11*), ABISELECT(48,28), "S7471C14");
    /*is_ambiguous_... S7471C14::S7471C11 */ AMB_check_base_class_offset(lv, (S7471C2*)(S7471C11*), ABISELECT(48,28), "S7471C14");
    /*is_ambiguous_... S7471C14::S7471C11 */ AMB_check_base_class_offset(lv, (S7471C11*), ABISELECT(48,28), "S7471C14");
    check_field_offset(lv, s7471c14f0, ABISELECT(8,4), "S7471C14.s7471c14f0");
    test_class_info(&lv, &cd_S7471C14);
    dp->~S7471C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7471C14(Test_S7471C14, "S7471C14", ABISELECT(64,36));

#else // __cplusplus

extern void _ZN8S7471C14C1Ev();
extern void _ZN8S7471C14D2Ev();
Name_Map name_map_S7471C14[] = {
  NSPAIR(_ZN8S7471C14C1Ev),
  NSPAIR(_ZN8S7471C14D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
extern Class_Descriptor cd_S7471C10;
extern VTBL_ENTRY _ZTI8S7471C10[];
extern  VTBL_ENTRY _ZTV8S7471C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
extern Class_Descriptor cd_S7471C11;
extern VTBL_ENTRY _ZTI8S7471C11[];
extern  VTBL_ENTRY _ZTV8S7471C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C11[];
extern Class_Descriptor cd_S7471C9;
extern VTBL_ENTRY _ZTI7S7471C9[];
extern  VTBL_ENTRY _ZTV7S7471C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
extern Class_Descriptor cd_S7471C15;
extern VTBL_ENTRY _ZTI8S7471C15[];
extern  VTBL_ENTRY _ZTV8S7471C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
extern Class_Descriptor cd_S7471C11;
extern VTBL_ENTRY _ZTI8S7471C11[];
extern  VTBL_ENTRY _ZTV8S7471C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C11[];
static Base_Class bases_S7471C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    ABISELECT(25,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(25,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7471C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7471C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7471C2,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7471C11,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7471C9,    ABISELECT(16,12), //bcp->offset
    12, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7471C2,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7471C15,    ABISELECT(32,20), //bcp->offset
    22, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7471C2,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7471C11,    ABISELECT(48,28), //bcp->offset
    26, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7471C14[];
extern void _ZN8S7471C14D1Ev();
extern void _ZN8S7471C14D0Ev();
extern void ABISELECT(_ZTv0_n64_N8S7471C14D1Ev,_ZTv0_n32_N8S7471C14D1Ev)();
extern void ABISELECT(_ZThn16_N8S7471C14D1Ev,_ZThn12_N8S7471C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7471C14D0Ev,_ZTv0_n32_N8S7471C14D0Ev)();
extern void ABISELECT(_ZThn16_N8S7471C14D0Ev,_ZThn12_N8S7471C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7471C14D1Ev,_ZTv0_n32_N8S7471C14D1Ev)();
extern void ABISELECT(_ZThn48_N8S7471C14D1Ev,_ZThn28_N8S7471C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7471C14D0Ev,_ZTv0_n32_N8S7471C14D0Ev)();
extern void ABISELECT(_ZThn48_N8S7471C14D0Ev,_ZThn28_N8S7471C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7471C14[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C14[0]),
  (VTBL_ENTRY)&_ZN8S7471C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C14D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S7471C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C14D1Ev,_ZTv0_n32_N8S7471C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C14D0Ev,_ZTv0_n32_N8S7471C14D0Ev),
  ABISELECT(-32,-20),
  ABISELECT(-7,-3),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S7471C14[0]),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7471C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C14D1Ev,_ZTv0_n32_N8S7471C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C14D0Ev,_ZTv0_n32_N8S7471C14D0Ev),
};
extern VTBL_ENTRY _ZTV8S7471C14[];
extern void _ZN7S7471C9D1Ev();
extern void _ZN7S7471C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7471C9__8S7471C14[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C9[0]),
  (VTBL_ENTRY)&_ZN7S7471C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7471C9D0Ev,
};
extern void _ZN8S7471C11D1Ev();
extern void _ZN8S7471C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7471C117S7471C9__8S7471C14[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C11[0]),
  (VTBL_ENTRY)&_ZN8S7471C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C11D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7471C28S7471C117S7471C9__A1__8S7471C14[] = {
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__8S7471C117S7471C9__8S7471C14[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S7471C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__7S7471C9__8S7471C14[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7471C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__8S7471C14[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7471C2__8S7471C14[] = {
  0,
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C15__8S7471C14[] = {
  ABISELECT(-32,-20),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C15[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7471C28S7471C15__A2__8S7471C14[] = {
  ABISELECT(-32,-20),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
extern void _ZN8S7471C11D1Ev();
extern void _ZN8S7471C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7471C11__A1__8S7471C14[] = {
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C11[0]),
  (VTBL_ENTRY)&_ZN8S7471C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C11D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7471C28S7471C11__A3__8S7471C14[] = {
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__8S7471C11__A1__8S7471C14[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S7471C11[0]),
};
static  VTT_ENTRY vtt_S7471C14[] = {
  {&(_ZTV8S7471C14[10]),  10,36},
  {&(_ZTV8S7471C14[20]),  20,36},
  {&(_ZTV8S7471C14[10]),  10,36},
  {&(_ZTV8S7471C14[10]),  10,36},
  {&(_ZTV8S7471C14[26]),  26,36},
  {&(_ZTV8S7471C14[34]),  34,36},
  {&(_tg__ZTV7S7471C9__8S7471C14[7]),  7,9},
  {&(_tg__ZTV8S7471C117S7471C9__8S7471C14[7]),  7,9},
  {&(_tg__ZTV7S7471C28S7471C117S7471C9__A1__8S7471C14[4]),  4,4},
  {&(_tg__ZTV8S7471C10__8S7471C117S7471C9__8S7471C14[6]),  6,6},
  {&(_tg__ZTV8S7471C10__8S7471C117S7471C9__8S7471C14[6]),  6,6},
  {&(_tg__ZTV8S7471C10__7S7471C9__8S7471C14[6]),  6,6},
  {&(_tg__ZTV8S7471C10__7S7471C9__8S7471C14[6]),  6,6},
  {&(_tg__ZTV8S7471C10__8S7471C14[6]),  6,6},
  {&(_tg__ZTV8S7471C10__8S7471C14[6]),  6,6},
  {&(_tg__ZTV7S7471C2__8S7471C14[4]),  4,4},
  {&(_tg__ZTV8S7471C15__8S7471C14[4]),  4,4},
  {&(_tg__ZTV7S7471C28S7471C15__A2__8S7471C14[4]),  4,4},
  {&(_tg__ZTV8S7471C11__A1__8S7471C14[7]),  7,9},
  {&(_tg__ZTV7S7471C28S7471C11__A3__8S7471C14[4]),  4,4},
  {&(_tg__ZTV8S7471C10__8S7471C11__A1__8S7471C14[6]),  6,6},
  {&(_tg__ZTV8S7471C10__8S7471C11__A1__8S7471C14[6]),  6,6},
};
extern VTBL_ENTRY _ZTI8S7471C14[];
extern  VTBL_ENTRY _ZTV8S7471C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C14[];
static VTBL_ENTRY alt_thunk_names135[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C14D0Ev,_ZTv0_n32_N8S7471C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7471C14D0Ev,_ZThn28_N8S7471C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7471C14D0Ev,_ZThn12_N8S7471C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C14D1Ev,_ZTv0_n32_N8S7471C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7471C14D1Ev,_ZThn28_N8S7471C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7471C14D1Ev,_ZThn12_N8S7471C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7471C14 = {  "S7471C14", // class name
  bases_S7471C14, 22,
  &(vtc_S7471C14[0]), // expected_vtbl_contents
  &(vtt_S7471C14[0]), // expected_vtt_contents
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI8S7471C14),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7471C14),36, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7471C14),22, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names135,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7471C17  : virtual S7471C2 , virtual S7471C8 , virtual S7471C15 , S7856C12 , virtual S7471C9 {
  int s7471c17f0;
  virtual  ~S7471C17(); // _ZN8S7471C17D2Ev
  S7471C17(); // tgen
};
//SIG(-1 S7471C17) C1{ VBC2{ VBC3{ m} BC4{ m} VBC5{ m}} VBC6{ VBC4} VBC7{ BC5 BC4 BC2 Fi} BC5 VBC8{ VBC3 VBC4 VBC9{ BC3 VBC2 VBC4} BC5 BC10{ BC4 VBC3 VBC5 BC2 VBC9 vd} vd} vd Fi}


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

static void Test_S7471C17()
{
  extern Class_Descriptor cd_S7471C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S7471C17, buf);
    S7471C17 *dp, &lv = *(dp=new (buf) S7471C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S7471C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7471C17)");
    /*is_ambiguous_... S7471C17::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C2*), 0, "S7471C17");
    check_base_class_offset(lv, (S7856C24*)(S7471C2*)(S7471C15*), 0, "S7471C17");
    /*is_ambiguous_... S7471C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C9*), 0, "S7471C17");
    /*is_ambiguous_... S7471C11::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C11*)(S7471C9*), 0, "S7471C17");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C2*)(S7471C11*)(S7471C9*), 0, "S7471C17");
    /*is_ambiguous_... S7471C17::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C2*), ABISELECT(48,28), "S7471C17");
    /*is_ambiguous_... S7471C17::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C2*), ABISELECT(12,8), "S7471C17");
    check_base_class_offset(lv, (S7856C12*)(S7471C2*)(S7471C15*), ABISELECT(12,8), "S7471C17");
    check_base_class_offset(lv, (S7856C12*)(S7471C11*)(S7471C9*), ABISELECT(12,8), "S7471C17");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C2*)(S7471C11*)(S7471C9*), ABISELECT(12,8), "S7471C17");
    /*is_ambiguous_... S7471C17::S7471C2 */ AMB_check_base_class_offset(lv, (S7471C2*), ABISELECT(48,28), "S7471C17");
    check_base_class_offset(lv, (S7471C2*)(S7471C10*), ABISELECT(48,28), "S7471C17");
    check_base_class_offset(lv, (S7856C15*)(S7471C8*), 0, "S7471C17");
    /*is_ambiguous_... S7471C9::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C9*), 0, "S7471C17");
    /*is_ambiguous_... S7471C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C10*), 0, "S7471C17");
    check_base_class_offset(lv, (S7471C8*), 0, "S7471C17");
    /*is_ambiguous_... S7471C15::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C15*), ABISELECT(16,12), "S7471C17");
    /*is_ambiguous_... S7471C15::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C15*), ABISELECT(24,16), "S7471C17");
    check_base_class_offset(lv, (S7856C15*)(S7471C2*)(S7471C15*), ABISELECT(16,12), "S7471C17");
    check_base_class_offset(lv, (S7471C2*)(S7471C15*), ABISELECT(16,12), "S7471C17");
    check_base_class_offset(lv, (S7471C15*), ABISELECT(16,12), "S7471C17");
    /*is_ambiguous_... S7471C17::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), 0, "S7471C17");
    /*is_ambiguous_... S7471C10::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C10*), ABISELECT(48,28), "S7471C17");
    check_base_class_offset(lv, (S7471C10*)(S7471C9*), ABISELECT(48,28), "S7471C17");
    check_base_class_offset(lv, (S7471C10*)(S7471C11*)(S7471C9*), ABISELECT(48,28), "S7471C17");
    /*is_ambiguous_... S7471C9::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C9*), ABISELECT(32,20), "S7471C17");
    /*is_ambiguous_... S7471C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C11*)(S7471C9*), ABISELECT(40,24), "S7471C17");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C2*)(S7471C11*)(S7471C9*), ABISELECT(32,20), "S7471C17");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7471C2*)(S7471C11*)(S7471C9*), ABISELECT(32,20), "S7471C17");
    check_base_class_offset(lv, (S7471C11*)(S7471C9*), ABISELECT(32,20), "S7471C17");
    check_base_class_offset(lv, (S7471C9*), ABISELECT(32,20), "S7471C17");
    check_field_offset(lv, s7471c17f0, ABISELECT(8,4), "S7471C17.s7471c17f0");
    test_class_info(&lv, &cd_S7471C17);
    dp->~S7471C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7471C17(Test_S7471C17, "S7471C17", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN8S7471C17C1Ev();
extern void _ZN8S7471C17D2Ev();
Name_Map name_map_S7471C17[] = {
  NSPAIR(_ZN8S7471C17C1Ev),
  NSPAIR(_ZN8S7471C17D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C8;
extern VTBL_ENTRY _ZTI7S7471C8[];
extern  VTBL_ENTRY _ZTV7S7471C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C8[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
extern Class_Descriptor cd_S7471C15;
extern VTBL_ENTRY _ZTI8S7471C15[];
extern  VTBL_ENTRY _ZTV8S7471C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7471C10;
extern VTBL_ENTRY _ZTI8S7471C10[];
extern  VTBL_ENTRY _ZTV8S7471C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
extern Class_Descriptor cd_S7471C11;
extern VTBL_ENTRY _ZTI8S7471C11[];
extern  VTBL_ENTRY _ZTV8S7471C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C11[];
extern Class_Descriptor cd_S7471C9;
extern VTBL_ENTRY _ZTI7S7471C9[];
extern  VTBL_ENTRY _ZTV7S7471C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C9[];
static Base_Class bases_S7471C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7471C2,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7471C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7471C2,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7471C15,    ABISELECT(16,12), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7471C10,    ABISELECT(48,28), //bcp->offset
    26, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7471C2,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7471C11,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7471C9,    ABISELECT(32,20), //bcp->offset
    16, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7471C17[];
extern void _ZN8S7471C17D1Ev();
extern void _ZN8S7471C17D0Ev();
extern void ABISELECT(_ZTv0_n64_N8S7471C17D1Ev,_ZTv0_n32_N8S7471C17D1Ev)();
extern void ABISELECT(_ZThn32_N8S7471C17D1Ev,_ZThn20_N8S7471C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7471C17D0Ev,_ZTv0_n32_N8S7471C17D0Ev)();
extern void ABISELECT(_ZThn32_N8S7471C17D0Ev,_ZThn20_N8S7471C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7471C17[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  ABISELECT(12,8),
  0,
  ABISELECT(48,28),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C17[0]),
  (VTBL_ENTRY)&_ZN8S7471C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C17D0Ev,
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S7471C17[0]),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S7471C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C17D1Ev,_ZTv0_n32_N8S7471C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C17D0Ev,_ZTv0_n32_N8S7471C17D0Ev),
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7471C17[0]),
};
extern VTBL_ENTRY _ZTV8S7471C17[];
static  VTBL_ENTRY _tg__ZTV7S7471C2__8S7471C17[] = {
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7471C8__8S7471C17[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C15__8S7471C17[] = {
  -4,
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C15[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7471C28S7471C15__A1__8S7471C17[] = {
  -4,
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
extern void _ZN7S7471C9D1Ev();
extern void _ZN7S7471C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7471C9__8S7471C17[] = {
  ABISELECT(-32,-20),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C9[0]),
  (VTBL_ENTRY)&_ZN7S7471C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7471C9D0Ev,
};
extern void _ZN8S7471C11D1Ev();
extern void _ZN8S7471C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7471C117S7471C9__8S7471C17[] = {
  ABISELECT(-32,-20),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C11[0]),
  (VTBL_ENTRY)&_ZN8S7471C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C11D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7471C28S7471C117S7471C9__A2__8S7471C17[] = {
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__8S7471C117S7471C9__8S7471C17[] = {
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7471C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__7S7471C9__8S7471C17[] = {
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7471C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__8S7471C17[] = {
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C10[0]),
};
static  VTT_ENTRY vtt_S7471C17[] = {
  {&(_ZTV8S7471C17[10]),  10,32},
  {&(_ZTV8S7471C17[32]),  32,32},
  {&(_ZTV8S7471C17[10]),  10,32},
  {&(_ZTV8S7471C17[16]),  16,32},
  {&(_ZTV8S7471C17[24]),  24,32},
  {&(_ZTV8S7471C17[32]),  32,32},
  {&(_tg__ZTV7S7471C2__8S7471C17[4]),  4,4},
  {&(_tg__ZTV7S7471C8__8S7471C17[3]),  3,3},
  {&(_tg__ZTV8S7471C15__8S7471C17[4]),  4,4},
  {&(_tg__ZTV7S7471C28S7471C15__A1__8S7471C17[4]),  4,4},
  {&(_tg__ZTV7S7471C9__8S7471C17[7]),  7,9},
  {&(_tg__ZTV8S7471C117S7471C9__8S7471C17[7]),  7,9},
  {&(_tg__ZTV7S7471C28S7471C117S7471C9__A2__8S7471C17[4]),  4,4},
  {&(_tg__ZTV8S7471C10__8S7471C117S7471C9__8S7471C17[6]),  6,6},
  {&(_tg__ZTV8S7471C10__8S7471C117S7471C9__8S7471C17[6]),  6,6},
  {&(_tg__ZTV8S7471C10__7S7471C9__8S7471C17[6]),  6,6},
  {&(_tg__ZTV8S7471C10__7S7471C9__8S7471C17[6]),  6,6},
  {&(_tg__ZTV8S7471C10__8S7471C17[6]),  6,6},
  {&(_tg__ZTV8S7471C10__8S7471C17[6]),  6,6},
};
extern VTBL_ENTRY _ZTI8S7471C17[];
extern  VTBL_ENTRY _ZTV8S7471C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C17[];
static VTBL_ENTRY alt_thunk_names136[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C17D0Ev,_ZTv0_n32_N8S7471C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7471C17D0Ev,_ZThn20_N8S7471C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C17D1Ev,_ZTv0_n32_N8S7471C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7471C17D1Ev,_ZThn20_N8S7471C17D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7471C17 = {  "S7471C17", // class name
  bases_S7471C17, 20,
  &(vtc_S7471C17[0]), // expected_vtbl_contents
  &(vtt_S7471C17[0]), // expected_vtt_contents
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI8S7471C17),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S7471C17),32, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7471C17),19, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names136,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7471C18  : virtual S7471C11 , S7471C15 , S7471C10 , S7856C12 {
  virtual  ~S7471C18(); // _ZN8S7471C18D2Ev
  S7471C18(); // tgen
};
//SIG(-1 S7471C18) C1{ VBC2{ BC3{ m} VBC4{ m} VBC5{ m} BC6{ VBC4 BC3 VBC5} VBC7{ BC4 VBC6 VBC3} vd} BC8{ BC5 BC3 BC6 Fi} BC7 BC5 vd}


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

static void Test_S7471C18()
{
  extern Class_Descriptor cd_S7471C18;
  void *lvp;
  {
    ABISELECT(double,int) buf[8];
    init_test(&cd_S7471C18, buf);
    S7471C18 *dp, &lv = *(dp=new (buf) S7471C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,28), "sizeof(S7471C18)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7471C18)");
    /*is_ambiguous_... S7471C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C11*), ABISELECT(32,16), "S7471C18");
    /*is_ambiguous_... S7471C11::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C11*), 0, "S7471C18");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C2*)(S7471C11*), 0, "S7471C18");
    /*is_ambiguous_... S7471C18::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C2*), 0, "S7471C18");
    check_base_class_offset(lv, (S7856C24*)(S7471C2*)(S7471C15*), 0, "S7471C18");
    check_base_class_offset(lv, (S7856C12*)(S7471C11*), ABISELECT(33,17), "S7471C18");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C2*)(S7471C11*), ABISELECT(33,17), "S7471C18");
    /*is_ambiguous_... S7471C18::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C2*), ABISELECT(33,17), "S7471C18");
    check_base_class_offset(lv, (S7856C12*)(S7471C2*)(S7471C15*), ABISELECT(33,17), "S7471C18");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C2*)(S7471C11*), ABISELECT(24,12), "S7471C18");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7471C2*)(S7471C11*), ABISELECT(24,12), "S7471C18");
    /*is_ambiguous_... S7471C18::S7471C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C10*), ABISELECT(40,20), "S7471C18");
    /*is_ambiguous_... S7471C18::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C2*), ABISELECT(40,20), "S7471C18");
    /*is_ambiguous_... S7471C18::S7471C10 */ AMB_check_base_class_offset(lv, (S7471C2*)(S7471C10*), ABISELECT(40,20), "S7471C18");
    /*is_ambiguous_... S7471C18::S7471C10 */ AMB_check_base_class_offset(lv, (S7471C2*)(S7471C10*), ABISELECT(40,20), "S7471C18");
    /*is_ambiguous_... S7471C18::S7471C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C10*), ABISELECT(48,24), "S7471C18");
    /*is_ambiguous_... S7471C18::S7471C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C10*), ABISELECT(48,24), "S7471C18");
    check_base_class_offset(lv, (S7471C10*)(S7471C11*), ABISELECT(40,20), "S7471C18");
    check_base_class_offset(lv, (S7471C11*), ABISELECT(24,12), "S7471C18");
    /*is_ambiguous_... S7471C15::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C15*), 0, "S7471C18");
    /*is_ambiguous_... S7471C15::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C15*), ABISELECT(8,4), "S7471C18");
    check_base_class_offset(lv, (S7856C15*)(S7471C2*)(S7471C15*), 0, "S7471C18");
    check_base_class_offset(lv, (S7471C2*)(S7471C15*), 0, "S7471C18");
    check_base_class_offset(lv, (S7471C15*), 0, "S7471C18");
    /*is_ambiguous_... S7471C18::S7471C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C10*), ABISELECT(16,8), "S7471C18");
    /*is_ambiguous_... S7471C18::S7471C10 */ AMB_check_base_class_offset(lv, (S7471C10*), ABISELECT(16,8), "S7471C18");
    /*is_ambiguous_... S7471C18::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), ABISELECT(24,12), "S7471C18");
    test_class_info(&lv, &cd_S7471C18);
    dp->~S7471C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7471C18(Test_S7471C18, "S7471C18", ABISELECT(56,28));

#else // __cplusplus

extern void _ZN8S7471C18C1Ev();
extern void _ZN8S7471C18D2Ev();
Name_Map name_map_S7471C18[] = {
  NSPAIR(_ZN8S7471C18C1Ev),
  NSPAIR(_ZN8S7471C18D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C10;
extern VTBL_ENTRY _ZTI8S7471C10[];
extern  VTBL_ENTRY _ZTV8S7471C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C10[];
extern Class_Descriptor cd_S7471C11;
extern VTBL_ENTRY _ZTI8S7471C11[];
extern  VTBL_ENTRY _ZTV8S7471C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C11[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
extern Class_Descriptor cd_S7471C15;
extern VTBL_ENTRY _ZTI8S7471C15[];
extern  VTBL_ENTRY _ZTV8S7471C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7471C10;
extern VTBL_ENTRY _ZTI8S7471C10[];
extern  VTBL_ENTRY _ZTV8S7471C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
static Base_Class bases_S7471C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(33,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7471C2,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7471C2,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7471C10,    ABISELECT(40,20), //bcp->offset
    26, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S7471C11,    ABISELECT(24,12), //bcp->offset
    16, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7471C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7471C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7471C10,    ABISELECT(16,8), //bcp->offset
    10, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7471C18[];
extern void _ZN8S7471C18D1Ev();
extern void _ZN8S7471C18D0Ev();
extern void ABISELECT(_ZTv0_n64_N8S7471C18D1Ev,_ZTv0_n32_N8S7471C18D1Ev)();
extern void ABISELECT(_ZThn24_N8S7471C18D1Ev,_ZThn12_N8S7471C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7471C18D0Ev,_ZTv0_n32_N8S7471C18D0Ev)();
extern void ABISELECT(_ZThn24_N8S7471C18D0Ev,_ZThn12_N8S7471C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7471C18[] = {
  ABISELECT(48,24),
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(24,12),
  ABISELECT(33,17),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C18[0]),
  (VTBL_ENTRY)&_ZN8S7471C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C18D0Ev,
  ABISELECT(32,16),
  ABISELECT(24,12),
  ABISELECT(17,9),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7471C18[0]),
  ABISELECT(-24,-12),
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(9,5),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7471C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C18D1Ev,_ZTv0_n32_N8S7471C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C18D0Ev,_ZTv0_n32_N8S7471C18D0Ev),
  ABISELECT(8,4),
  0,
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S7471C18[0]),
};
extern VTBL_ENTRY _ZTV8S7471C18[];
static  VTBL_ENTRY _tg__ZTV8S7471C15__8S7471C18[] = {
  ABISELECT(33,17),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C15[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7471C28S7471C15__A2__8S7471C18[] = {
  ABISELECT(33,17),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__A__8S7471C18[] = {
  ABISELECT(32,16),
  ABISELECT(24,12),
  ABISELECT(17,9),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7471C2__8S7471C10__A__8S7471C18[] = {
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7471C10[0]),
};
extern void _ZN8S7471C11D1Ev();
extern void _ZN8S7471C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7471C11__8S7471C18[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(9,5),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C11[0]),
  (VTBL_ENTRY)&_ZN8S7471C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C11D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7471C28S7471C11__8S7471C18[] = {
  ABISELECT(9,5),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__8S7471C11__8S7471C18[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7471C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__8S7471C18[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7471C2__A1__8S7471C18[] = {
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
static  VTT_ENTRY vtt_S7471C18[] = {
  {&(_ZTV8S7471C18[8]),  8,32},
  {&(_tg__ZTV8S7471C15__8S7471C18[4]),  4,4},
  {&(_tg__ZTV7S7471C28S7471C15__A2__8S7471C18[4]),  4,4},
  {&(_tg__ZTV8S7471C10__A__8S7471C18[6]),  6,6},
  {&(_tg__ZTV7S7471C2__8S7471C10__A__8S7471C18[4]),  4,4},
  {&(_ZTV8S7471C18[24]),  24,32},
  {&(_ZTV8S7471C18[32]),  32,32},
  {&(_ZTV8S7471C18[32]),  32,32},
  {&(_ZTV8S7471C18[16]),  16,32},
  {&(_tg__ZTV8S7471C11__8S7471C18[7]),  7,9},
  {&(_tg__ZTV7S7471C28S7471C11__8S7471C18[4]),  4,4},
  {&(_tg__ZTV8S7471C10__8S7471C11__8S7471C18[6]),  6,6},
  {&(_tg__ZTV8S7471C10__8S7471C11__8S7471C18[6]),  6,6},
  {&(_tg__ZTV8S7471C10__8S7471C18[6]),  6,6},
  {&(_tg__ZTV8S7471C10__8S7471C18[6]),  6,6},
  {&(_tg__ZTV7S7471C2__A1__8S7471C18[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S7471C18[];
extern  VTBL_ENTRY _ZTV8S7471C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C18[];
static VTBL_ENTRY alt_thunk_names137[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C18D0Ev,_ZTv0_n32_N8S7471C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7471C18D0Ev,_ZThn12_N8S7471C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C18D1Ev,_ZTv0_n32_N8S7471C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7471C18D1Ev,_ZThn12_N8S7471C18D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7471C18 = {  "S7471C18", // class name
  bases_S7471C18, 19,
  &(vtc_S7471C18[0]), // expected_vtbl_contents
  &(vtt_S7471C18[0]), // expected_vtt_contents
  ABISELECT(56,28), // object size
  NSPAIRA(_ZTI8S7471C18),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S7471C18),32, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7471C18),16, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names137,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7471C13  : virtual S7471C14 , virtual S7856C9_nt , virtual S7471C17 , S7471C18 {
  virtual  ~S7471C13(); // _ZN8S7471C13D2Ev
  S7471C13(); // tgen
};
//SIG(-1 S7471C13) C1{ VBC2{ VBC3{ VBC4{ m} VBC5{ m} VBC6{ BC4 VBC7{ VBC4 BC5 VBC8{ m}} VBC5} BC8 BC9{ BC5 VBC4 VBC8 BC7 VBC6 vd} vd} VBC10{ BC8 BC5 BC7 Fi} VBC9 vd Fi[2]} VBC11{ m} VBC12{ VBC7 VBC13{ VBC5} VBC10 BC8 VBC3 vd Fi} BC14{ VBC9 BC10 BC6 BC8 vd} vd}


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

static void Test_S7471C13()
{
  extern Class_Descriptor cd_S7471C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,16)];
    init_test(&cd_S7471C13, buf);
    S7471C13 *dp, &lv = *(dp=new (buf) S7471C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,60), "sizeof(S7471C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7471C13)");
    /*is_ambiguous_... S7471C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C9*), 0, "S7471C13");
    /*is_ambiguous_... S7471C13::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C2*), 0, "S7471C13");
    /*is_ambiguous_... S7471C11::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C11*)(S7471C9*), 0, "S7471C13");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C2*)(S7471C11*)(S7471C9*), 0, "S7471C13");
    /*is_ambiguous_... S7471C13::S7471C15 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C2*)(S7471C15*), 0, "S7471C13");
    /*is_ambiguous_... S7471C13::S7471C11 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C11*), 0, "S7471C13");
    /*is_ambiguous_... S7471C13::S7471C11 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C2*)(S7471C11*), 0, "S7471C13");
    check_base_class_offset(lv, (S7856C24*)(S7471C2*)(S7471C15*)(S7471C18*), 0, "S7471C13");
    /*is_ambiguous_... S7471C9::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C9*), ABISELECT(57,33), "S7471C13");
    /*is_ambiguous_... S7471C13::S7471C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C10*), ABISELECT(57,33), "S7471C13");
    check_base_class_offset(lv, (S7856C15*)(S7471C8*), ABISELECT(57,33), "S7471C13");
    /*is_ambiguous_... S7471C18::S7471C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C10*)(S7471C18*), ABISELECT(57,33), "S7471C13");
    /*is_ambiguous_... S7471C13::S7471C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C10*), ABISELECT(32,16), "S7471C13");
    /*is_ambiguous_... S7471C13::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C2*), ABISELECT(32,16), "S7471C13");
    /*is_ambiguous_... S7471C13::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C2*), ABISELECT(57,33), "S7471C13");
    check_base_class_offset(lv, (S7856C12*)(S7471C11*)(S7471C9*), ABISELECT(57,33), "S7471C13");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C2*)(S7471C11*)(S7471C9*), ABISELECT(57,33), "S7471C13");
    /*is_ambiguous_... S7471C13::S7471C15 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C2*)(S7471C15*), ABISELECT(57,33), "S7471C13");
    /*is_ambiguous_... S7471C13::S7471C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C11*), ABISELECT(57,33), "S7471C13");
    /*is_ambiguous_... S7471C13::S7471C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C2*)(S7471C11*), ABISELECT(57,33), "S7471C13");
    check_base_class_offset(lv, (S7856C12*)(S7471C2*)(S7471C15*)(S7471C18*), ABISELECT(57,33), "S7471C13");
    /*is_ambiguous_... S7471C13::S7471C10 */ AMB_check_base_class_offset(lv, (S7471C2*)(S7471C10*), ABISELECT(32,16), "S7471C13");
    /*is_ambiguous_... S7471C17::S7471C2 */ AMB_check_base_class_offset(lv, (S7471C2*)(S7471C17*), ABISELECT(32,16), "S7471C13");
    /*is_ambiguous_... S7471C18::S7471C10 */ AMB_check_base_class_offset(lv, (S7471C2*)(S7471C10*)(S7471C18*), ABISELECT(32,16), "S7471C13");
    check_base_class_offset(lv, (S7471C10*)(S7471C9*), ABISELECT(32,16), "S7471C13");
    check_base_class_offset(lv, (S7471C10*)(S7471C11*)(S7471C9*), ABISELECT(32,16), "S7471C13");
    /*is_ambiguous_... S7471C13::S7471C11 */ AMB_check_base_class_offset(lv, (S7471C10*)(S7471C11*), ABISELECT(32,16), "S7471C13");
    /*is_ambiguous_... S7471C9::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C9*), ABISELECT(48,28), "S7471C13");
    /*is_ambiguous_... S7471C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C11*)(S7471C9*), ABISELECT(56,32), "S7471C13");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C2*)(S7471C11*)(S7471C9*), ABISELECT(48,28), "S7471C13");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7471C2*)(S7471C11*)(S7471C9*), ABISELECT(48,28), "S7471C13");
    check_base_class_offset(lv, (S7471C11*)(S7471C9*), ABISELECT(48,28), "S7471C13");
    check_base_class_offset(lv, (S7471C9*)(S7471C14*), ABISELECT(48,28), "S7471C13");
    check_base_class_offset(lv, (S7471C9*)(S7471C17*), ABISELECT(48,28), "S7471C13");
    /*is_ambiguous_... S7471C13::S7471C15 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C15*), ABISELECT(64,36), "S7471C13");
    /*is_ambiguous_... S7471C13::S7471C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C15*), ABISELECT(72,40), "S7471C13");
    /*is_ambiguous_... S7471C13::S7471C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C2*)(S7471C15*), ABISELECT(64,36), "S7471C13");
    /*is_ambiguous_... S7471C13::S7471C15 */ AMB_check_base_class_offset(lv, (S7471C2*)(S7471C15*), ABISELECT(64,36), "S7471C13");
    check_base_class_offset(lv, (S7471C15*)(S7471C14*), ABISELECT(64,36), "S7471C13");
    check_base_class_offset(lv, (S7471C15*)(S7471C17*), ABISELECT(64,36), "S7471C13");
    /*is_ambiguous_... S7471C13::S7471C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C11*), ABISELECT(88,48), "S7471C13");
    /*is_ambiguous_... S7471C13::S7471C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C2*)(S7471C11*), ABISELECT(80,44), "S7471C13");
    /*is_ambiguous_... S7471C13::S7471C11 */ AMB_check_base_class_offset(lv, (S7471C2*)(S7471C11*), ABISELECT(80,44), "S7471C13");
    /*is_ambiguous_... S7471C14::S7471C11 */ AMB_check_base_class_offset(lv, (S7471C11*)(S7471C14*), ABISELECT(80,44), "S7471C13");
    check_base_class_offset(lv, (S7471C11*)(S7471C18*), ABISELECT(80,44), "S7471C13");
    check_base_class_offset(lv, (S7471C14*), ABISELECT(32,16), "S7471C13");
    check_base_class_offset(lv, (S7856C9_nt*), 0, "S7471C13");
    check_base_class_offset(lv, (S7471C8*)(S7471C17*), ABISELECT(96,52), "S7471C13");
    /*is_ambiguous_... S7471C17::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C17*), ABISELECT(96,52), "S7471C13");
    check_base_class_offset(lv, (S7471C17*), ABISELECT(96,52), "S7471C13");
    /*is_ambiguous_... S7471C15::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C15*)(S7471C18*), 0, "S7471C13");
    /*is_ambiguous_... S7471C15::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C15*)(S7471C18*), ABISELECT(8,4), "S7471C13");
    check_base_class_offset(lv, (S7856C15*)(S7471C2*)(S7471C15*)(S7471C18*), 0, "S7471C13");
    check_base_class_offset(lv, (S7471C2*)(S7471C15*)(S7471C18*), 0, "S7471C13");
    check_base_class_offset(lv, (S7471C15*)(S7471C18*), 0, "S7471C13");
    /*is_ambiguous_... S7471C18::S7471C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C10*)(S7471C18*), ABISELECT(16,8), "S7471C13");
    /*is_ambiguous_... S7471C18::S7471C10 */ AMB_check_base_class_offset(lv, (S7471C10*)(S7471C18*), ABISELECT(16,8), "S7471C13");
    /*is_ambiguous_... S7471C18::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C18*), ABISELECT(24,12), "S7471C13");
    check_base_class_offset(lv, (S7471C18*), 0, "S7471C13");
    test_class_info(&lv, &cd_S7471C13);
    dp->~S7471C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7471C13(Test_S7471C13, "S7471C13", ABISELECT(112,60));

#else // __cplusplus

extern void _ZN8S7471C13C1Ev();
extern void _ZN8S7471C13D2Ev();
Name_Map name_map_S7471C13[] = {
  NSPAIR(_ZN8S7471C13C1Ev),
  NSPAIR(_ZN8S7471C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
extern Class_Descriptor cd_S7471C10;
extern VTBL_ENTRY _ZTI8S7471C10[];
extern  VTBL_ENTRY _ZTV8S7471C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
extern Class_Descriptor cd_S7471C11;
extern VTBL_ENTRY _ZTI8S7471C11[];
extern  VTBL_ENTRY _ZTV8S7471C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C11[];
extern Class_Descriptor cd_S7471C9;
extern VTBL_ENTRY _ZTI7S7471C9[];
extern  VTBL_ENTRY _ZTV7S7471C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
extern Class_Descriptor cd_S7471C15;
extern VTBL_ENTRY _ZTI8S7471C15[];
extern  VTBL_ENTRY _ZTV8S7471C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
extern Class_Descriptor cd_S7471C11;
extern VTBL_ENTRY _ZTI8S7471C11[];
extern  VTBL_ENTRY _ZTV8S7471C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C11[];
extern Class_Descriptor cd_S7471C14;
extern VTBL_ENTRY _ZTI8S7471C14[];
extern  VTBL_ENTRY _ZTV8S7471C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C14[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7471C8;
extern VTBL_ENTRY _ZTI7S7471C8[];
extern  VTBL_ENTRY _ZTV7S7471C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C8[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7471C17;
extern VTBL_ENTRY _ZTI8S7471C17[];
extern  VTBL_ENTRY _ZTV8S7471C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C17[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
extern Class_Descriptor cd_S7471C15;
extern VTBL_ENTRY _ZTI8S7471C15[];
extern  VTBL_ENTRY _ZTV8S7471C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7471C10;
extern VTBL_ENTRY _ZTI8S7471C10[];
extern  VTBL_ENTRY _ZTV8S7471C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7471C18;
extern VTBL_ENTRY _ZTI8S7471C18[];
extern  VTBL_ENTRY _ZTV8S7471C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C18[];
static Base_Class bases_S7471C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(57,33), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(57,33), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7471C2,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7471C10,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7471C2,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7471C11,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7471C9,    ABISELECT(48,28), //bcp->offset
    35, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7471C2,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7471C15,    ABISELECT(64,36), //bcp->offset
    45, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7471C2,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7471C11,    ABISELECT(80,44), //bcp->offset
    49, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7471C14,    ABISELECT(32,16), //bcp->offset
    22, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7471C8,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7471C17,    ABISELECT(96,52), //bcp->offset
    59, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S7471C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7471C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S7471C10,    ABISELECT(16,8), //bcp->offset
    16, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7471C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7471C13[];
extern void _ZN8S7471C13D1Ev();
extern void _ZN8S7471C13D0Ev();
extern void ABISELECT(_ZTv0_n88_N8S7471C13D1Ev,_ZTv0_n44_N8S7471C13D1Ev)();
extern void ABISELECT(_ZThn32_N8S7471C13D1Ev,_ZThn16_N8S7471C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7471C13D0Ev,_ZTv0_n44_N8S7471C13D0Ev)();
extern void ABISELECT(_ZThn32_N8S7471C13D0Ev,_ZThn16_N8S7471C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7471C13D1Ev,_ZTv0_n32_N8S7471C13D1Ev)();
extern void ABISELECT(_ZThn48_N8S7471C13D1Ev,_ZThn28_N8S7471C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7471C13D0Ev,_ZTv0_n32_N8S7471C13D0Ev)();
extern void ABISELECT(_ZThn48_N8S7471C13D0Ev,_ZThn28_N8S7471C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7471C13D1Ev,_ZTv0_n32_N8S7471C13D1Ev)();
extern void ABISELECT(_ZThn80_N8S7471C13D1Ev,_ZThn44_N8S7471C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7471C13D0Ev,_ZTv0_n32_N8S7471C13D0Ev)();
extern void ABISELECT(_ZThn80_N8S7471C13D0Ev,_ZThn44_N8S7471C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7471C13D1Ev,_ZTv0_n44_N8S7471C13D1Ev)();
extern void ABISELECT(_ZThn96_N8S7471C13D1Ev,_ZThn52_N8S7471C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7471C13D0Ev,_ZTv0_n44_N8S7471C13D0Ev)();
extern void ABISELECT(_ZThn96_N8S7471C13D0Ev,_ZThn52_N8S7471C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7471C13[] = {
  ABISELECT(96,52),
  ABISELECT(96,52),
  0,
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(57,33),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C13[0]),
  (VTBL_ENTRY)&_ZN8S7471C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C13D0Ev,
  ABISELECT(41,25),
  ABISELECT(16,8),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7471C13[0]),
  ABISELECT(-32,-16),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7471C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7471C13D1Ev,_ZTv0_n44_N8S7471C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7471C13D0Ev,_ZTv0_n44_N8S7471C13D0Ev),
  ABISELECT(-48,-28),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7471C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C13D1Ev,_ZTv0_n32_N8S7471C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C13D0Ev,_ZTv0_n32_N8S7471C13D0Ev),
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S7471C13[0]),
  ABISELECT(-80,-44),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S7471C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C13D1Ev,_ZTv0_n32_N8S7471C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C13D0Ev,_ZTv0_n32_N8S7471C13D0Ev),
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-39,-19),
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-39,-19),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S7471C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7471C13D1Ev,_ZTv0_n44_N8S7471C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7471C13D0Ev,_ZTv0_n44_N8S7471C13D0Ev),
};
extern VTBL_ENTRY _ZTV8S7471C13[];
extern void _ZN8S7471C18D1Ev();
extern void _ZN8S7471C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7471C18__8S7471C13[] = {
  ABISELECT(57,33),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C18[0]),
  (VTBL_ENTRY)&_ZN8S7471C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7471C158S7471C18__A1__8S7471C13[] = {
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C15[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7471C28S7471C158S7471C18__A4__8S7471C13[] = {
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C108S7471C18__A1__8S7471C13[] = {
  ABISELECT(41,25),
  ABISELECT(16,8),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7471C2__8S7471C108S7471C18__A1__8S7471C13[] = {
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7471C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7471C18D1Ev,_ZTv0_n32_N8S7471C18D1Ev)();
extern void ABISELECT(_ZThn80_N8S7471C18D1Ev,_ZThn44_N8S7471C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7471C18D0Ev,_ZTv0_n32_N8S7471C18D0Ev)();
extern void ABISELECT(_ZThn80_N8S7471C18D0Ev,_ZThn44_N8S7471C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7471C11__8S7471C18__8S7471C13[] = {
  ABISELECT(-80,-44),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S7471C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C18D1Ev,_ZTv0_n32_N8S7471C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C18D0Ev,_ZTv0_n32_N8S7471C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__8S7471C18__8S7471C13[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7471C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__A__8S7471C18__8S7471C13[] = {
  ABISELECT(41,25),
  ABISELECT(16,8),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7471C18[0]),
};
extern void _ZN8S7471C14D1Ev();
extern void _ZN8S7471C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7471C14__8S7471C13[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C14[0]),
  (VTBL_ENTRY)&_ZN8S7471C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C14D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N8S7471C14D1Ev,_ZTv0_n32_N8S7471C14D1Ev)();
extern void ABISELECT(_ZThn16_N8S7471C14D1Ev,_ZThn12_N8S7471C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7471C14D0Ev,_ZTv0_n32_N8S7471C14D0Ev)();
extern void ABISELECT(_ZThn16_N8S7471C14D0Ev,_ZThn12_N8S7471C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7471C9__8S7471C14__8S7471C13[] = {
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S7471C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C14D1Ev,_ZTv0_n32_N8S7471C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C14D0Ev,_ZTv0_n32_N8S7471C14D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7471C15__8S7471C14__8S7471C13[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S7471C14[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7471C14D1Ev,_ZTv0_n32_N8S7471C14D1Ev)();
extern void ABISELECT(_ZThn48_N8S7471C14D1Ev,_ZThn28_N8S7471C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7471C14D0Ev,_ZTv0_n32_N8S7471C14D0Ev)();
extern void ABISELECT(_ZThn48_N8S7471C14D0Ev,_ZThn28_N8S7471C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7471C11__A1__8S7471C14__8S7471C13[] = {
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7471C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C14D1Ev,_ZTv0_n32_N8S7471C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C14D0Ev,_ZTv0_n32_N8S7471C14D0Ev),
};
extern void _ZN7S7471C9D1Ev();
extern void _ZN7S7471C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7471C9__8S7471C13[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C9[0]),
  (VTBL_ENTRY)&_ZN7S7471C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7471C9D0Ev,
};
extern void _ZN8S7471C11D1Ev();
extern void _ZN8S7471C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7471C117S7471C9__8S7471C13[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C11[0]),
  (VTBL_ENTRY)&_ZN8S7471C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C11D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7471C28S7471C117S7471C9__A1__8S7471C13[] = {
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__8S7471C117S7471C9__8S7471C13[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S7471C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__7S7471C9__8S7471C13[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7471C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__8S7471C13[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7471C2__8S7471C13[] = {
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C15__8S7471C13[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C15[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7471C28S7471C15__A2__8S7471C13[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
extern void _ZN8S7471C11D1Ev();
extern void _ZN8S7471C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7471C11__A1__8S7471C13[] = {
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C11[0]),
  (VTBL_ENTRY)&_ZN8S7471C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C11D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7471C28S7471C11__A3__8S7471C13[] = {
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__8S7471C11__A1__8S7471C13[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S7471C11[0]),
};
extern void _ZN8S7471C17D1Ev();
extern void _ZN8S7471C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7471C17__8S7471C13[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-39,-19),
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-39,-19),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C17[0]),
  (VTBL_ENTRY)&_ZN8S7471C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__8S7471C17__8S7471C13[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S7471C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C15__8S7471C17__8S7471C13[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7471C17[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7471C17D1Ev,_ZTv0_n32_N8S7471C17D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7471C17D0Ev,_ZTv0_n32_N8S7471C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7471C9__8S7471C17__8S7471C13[] = {
  ABISELECT(48,24),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S7471C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C17D1Ev,_ZTv0_n32_N8S7471C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C17D0Ev,_ZTv0_n32_N8S7471C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7471C8__8S7471C13[] = {
  ABISELECT(-39,-19),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C8[0]),
};
static  VTT_ENTRY vtt_S7471C13[] = {
  {&(_ZTV8S7471C13[14]),  14,72},
  {&(_tg__ZTV8S7471C18__8S7471C13[8]),  8,10},
  {&(_tg__ZTV8S7471C158S7471C18__A1__8S7471C13[4]),  4,4},
  {&(_tg__ZTV7S7471C28S7471C158S7471C18__A4__8S7471C13[4]),  4,4},
  {&(_tg__ZTV8S7471C108S7471C18__A1__8S7471C13[6]),  6,6},
  {&(_tg__ZTV7S7471C2__8S7471C108S7471C18__A1__8S7471C13[4]),  4,4},
  {&(_tg__ZTV8S7471C11__8S7471C18__8S7471C13[8]),  8,10},
  {&(_tg__ZTV8S7471C10__8S7471C18__8S7471C13[6]),  6,6},
  {&(_tg__ZTV8S7471C10__8S7471C18__8S7471C13[6]),  6,6},
  {&(_tg__ZTV8S7471C10__A__8S7471C18__8S7471C13[6]),  6,6},
  {&(_ZTV8S7471C13[33]),  33,72},
  {&(_ZTV8S7471C13[43]),  43,72},
  {&(_ZTV8S7471C13[33]),  33,72},
  {&(_ZTV8S7471C13[33]),  33,72},
  {&(_ZTV8S7471C13[49]),  49,72},
  {&(_ZTV8S7471C13[57]),  57,72},
  {&(_ZTV8S7471C13[70]),  70,72},
  {&(_ZTV8S7471C13[70]),  70,72},
  {&(_ZTV8S7471C13[22]),  22,72},
  {&(_tg__ZTV8S7471C14__8S7471C13[10]),  10,12},
  {&(_tg__ZTV7S7471C9__8S7471C14__8S7471C13[8]),  8,10},
  {&(_tg__ZTV8S7471C14__8S7471C13[10]),  10,12},
  {&(_tg__ZTV8S7471C14__8S7471C13[10]),  10,12},
  {&(_tg__ZTV8S7471C15__8S7471C14__8S7471C13[4]),  4,4},
  {&(_tg__ZTV8S7471C11__A1__8S7471C14__8S7471C13[8]),  8,10},
  {&(_tg__ZTV7S7471C9__8S7471C13[7]),  7,9},
  {&(_tg__ZTV8S7471C117S7471C9__8S7471C13[7]),  7,9},
  {&(_tg__ZTV7S7471C28S7471C117S7471C9__A1__8S7471C13[4]),  4,4},
  {&(_tg__ZTV8S7471C10__8S7471C117S7471C9__8S7471C13[6]),  6,6},
  {&(_tg__ZTV8S7471C10__8S7471C117S7471C9__8S7471C13[6]),  6,6},
  {&(_tg__ZTV8S7471C10__7S7471C9__8S7471C13[6]),  6,6},
  {&(_tg__ZTV8S7471C10__7S7471C9__8S7471C13[6]),  6,6},
  {&(_tg__ZTV8S7471C10__8S7471C13[6]),  6,6},
  {&(_tg__ZTV8S7471C10__8S7471C13[6]),  6,6},
  {&(_tg__ZTV7S7471C2__8S7471C13[4]),  4,4},
  {&(_tg__ZTV8S7471C15__8S7471C13[4]),  4,4},
  {&(_tg__ZTV7S7471C28S7471C15__A2__8S7471C13[4]),  4,4},
  {&(_tg__ZTV8S7471C11__A1__8S7471C13[7]),  7,9},
  {&(_tg__ZTV7S7471C28S7471C11__A3__8S7471C13[4]),  4,4},
  {&(_tg__ZTV8S7471C10__8S7471C11__A1__8S7471C13[6]),  6,6},
  {&(_tg__ZTV8S7471C10__8S7471C11__A1__8S7471C13[6]),  6,6},
  {&(_tg__ZTV8S7471C17__8S7471C13[10]),  10,12},
  {&(_tg__ZTV8S7471C10__8S7471C17__8S7471C13[6]),  6,6},
  {&(_tg__ZTV8S7471C17__8S7471C13[10]),  10,12},
  {&(_tg__ZTV8S7471C15__8S7471C17__8S7471C13[4]),  4,4},
  {&(_tg__ZTV7S7471C9__8S7471C17__8S7471C13[8]),  8,10},
  {&(_tg__ZTV8S7471C10__8S7471C17__8S7471C13[6]),  6,6},
  {&(_tg__ZTV7S7471C8__8S7471C13[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S7471C13[];
extern  VTBL_ENTRY _ZTV8S7471C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C13[];
static VTBL_ENTRY alt_thunk_names138[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C14D0Ev,_ZTv0_n32_N8S7471C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7471C14D0Ev,_ZThn28_N8S7471C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7471C14D0Ev,_ZThn12_N8S7471C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C14D1Ev,_ZTv0_n32_N8S7471C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7471C14D1Ev,_ZThn28_N8S7471C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7471C14D1Ev,_ZThn12_N8S7471C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C18D0Ev,_ZTv0_n32_N8S7471C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7471C18D0Ev,_ZThn44_N8S7471C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C18D1Ev,_ZTv0_n32_N8S7471C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7471C18D1Ev,_ZThn44_N8S7471C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C13D0Ev,_ZTv0_n32_N8S7471C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7471C13D0Ev,_ZThn44_N8S7471C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7471C13D0Ev,_ZThn28_N8S7471C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C13D1Ev,_ZTv0_n32_N8S7471C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7471C13D1Ev,_ZThn44_N8S7471C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7471C13D1Ev,_ZThn28_N8S7471C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7471C13D0Ev,_ZTv0_n44_N8S7471C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7471C13D0Ev,_ZThn52_N8S7471C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7471C13D0Ev,_ZThn16_N8S7471C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7471C13D1Ev,_ZTv0_n44_N8S7471C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7471C13D1Ev,_ZThn52_N8S7471C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7471C13D1Ev,_ZThn16_N8S7471C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7471C13 = {  "S7471C13", // class name
  bases_S7471C13, 36,
  &(vtc_S7471C13[0]), // expected_vtbl_contents
  &(vtt_S7471C13[0]), // expected_vtt_contents
  ABISELECT(112,60), // object size
  NSPAIRA(_ZTI8S7471C13),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S7471C13),72, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7471C13),48, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names138,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7471C12  : S7471C8 , virtual S7856C12 , S7471C13 , S7471C7 {
  virtual  ~S7471C12(); // _ZN8S7471C12D2Ev
  S7471C12(); // tgen
};
//SIG(-1 S7471C12) C1{ BC2{ VBC3{ m}} VBC4{ m} BC5{ VBC6{ VBC7{ VBC8{ m} VBC3 VBC9{ BC8 VBC10{ VBC8 BC3 VBC4} VBC3} BC4 BC11{ BC3 VBC8 VBC4 BC10 VBC9 vd} vd} VBC12{ BC4 BC3 BC10 Fi} VBC11 vd Fi[2]} VBC13{ m} VBC14{ VBC10 VBC2 VBC12 BC4 VBC7 vd Fi} BC15{ VBC11 BC12 BC9 BC4 vd} vd} BC16{ BC3 BC2 vd} vd}


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

static void Test_S7471C12()
{
  extern Class_Descriptor cd_S7471C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,18)];
    init_test(&cd_S7471C12, buf);
    S7471C12 *dp, &lv = *(dp=new (buf) S7471C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,68), "sizeof(S7471C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7471C12)");
    /*is_ambiguous_... S7471C12::S7471C8 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C8*), 0, "S7471C12");
    /*is_ambiguous_... S7471C9::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C9*), 0, "S7471C12");
    /*is_ambiguous_... S7471C12::S7471C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C10*), 0, "S7471C12");
    /*is_ambiguous_... S7471C12::S7471C8 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C8*), 0, "S7471C12");
    /*is_ambiguous_... S7471C18::S7471C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C10*)(S7471C18*)(S7471C13*), 0, "S7471C12");
    check_base_class_offset(lv, (S7856C15*)(S7471C8*)(S7471C7*), 0, "S7471C12");
    /*is_ambiguous_... S7471C12::S7471C8 */ AMB_check_base_class_offset(lv, (S7471C8*), 0, "S7471C12");
    /*is_ambiguous_... S7471C12::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), 0, "S7471C12");
    /*is_ambiguous_... S7471C12::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C2*), 0, "S7471C12");
    check_base_class_offset(lv, (S7856C12*)(S7471C11*)(S7471C9*), 0, "S7471C12");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C2*)(S7471C11*)(S7471C9*), 0, "S7471C12");
    /*is_ambiguous_... S7471C12::S7471C15 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C2*)(S7471C15*), 0, "S7471C12");
    /*is_ambiguous_... S7471C12::S7471C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C11*), 0, "S7471C12");
    /*is_ambiguous_... S7471C12::S7471C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C2*)(S7471C11*), 0, "S7471C12");
    check_base_class_offset(lv, (S7856C12*)(S7471C2*)(S7471C15*)(S7471C18*)(S7471C13*), 0, "S7471C12");
    /*is_ambiguous_... S7471C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C9*), 0, "S7471C12");
    /*is_ambiguous_... S7471C12::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C2*), 0, "S7471C12");
    /*is_ambiguous_... S7471C11::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C11*)(S7471C9*), 0, "S7471C12");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C2*)(S7471C11*)(S7471C9*), 0, "S7471C12");
    /*is_ambiguous_... S7471C12::S7471C15 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C2*)(S7471C15*), 0, "S7471C12");
    /*is_ambiguous_... S7471C12::S7471C11 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C11*), 0, "S7471C12");
    /*is_ambiguous_... S7471C12::S7471C11 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C2*)(S7471C11*), 0, "S7471C12");
    check_base_class_offset(lv, (S7856C24*)(S7471C2*)(S7471C15*)(S7471C18*)(S7471C13*), 0, "S7471C12");
    /*is_ambiguous_... S7471C12::S7471C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C10*), ABISELECT(48,24), "S7471C12");
    /*is_ambiguous_... S7471C12::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C2*), ABISELECT(48,24), "S7471C12");
    /*is_ambiguous_... S7471C12::S7471C10 */ AMB_check_base_class_offset(lv, (S7471C2*)(S7471C10*), ABISELECT(48,24), "S7471C12");
    /*is_ambiguous_... S7471C17::S7471C2 */ AMB_check_base_class_offset(lv, (S7471C2*)(S7471C17*), ABISELECT(48,24), "S7471C12");
    /*is_ambiguous_... S7471C18::S7471C10 */ AMB_check_base_class_offset(lv, (S7471C2*)(S7471C10*)(S7471C18*)(S7471C13*), ABISELECT(48,24), "S7471C12");
    check_base_class_offset(lv, (S7471C10*)(S7471C9*), ABISELECT(48,24), "S7471C12");
    check_base_class_offset(lv, (S7471C10*)(S7471C11*)(S7471C9*), ABISELECT(48,24), "S7471C12");
    /*is_ambiguous_... S7471C12::S7471C11 */ AMB_check_base_class_offset(lv, (S7471C10*)(S7471C11*), ABISELECT(48,24), "S7471C12");
    /*is_ambiguous_... S7471C9::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C9*), ABISELECT(64,36), "S7471C12");
    /*is_ambiguous_... S7471C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C11*)(S7471C9*), ABISELECT(72,40), "S7471C12");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C2*)(S7471C11*)(S7471C9*), ABISELECT(64,36), "S7471C12");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7471C2*)(S7471C11*)(S7471C9*), ABISELECT(64,36), "S7471C12");
    check_base_class_offset(lv, (S7471C11*)(S7471C9*), ABISELECT(64,36), "S7471C12");
    check_base_class_offset(lv, (S7471C9*)(S7471C14*), ABISELECT(64,36), "S7471C12");
    check_base_class_offset(lv, (S7471C9*)(S7471C17*), ABISELECT(64,36), "S7471C12");
    /*is_ambiguous_... S7471C12::S7471C15 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C15*), ABISELECT(80,44), "S7471C12");
    /*is_ambiguous_... S7471C12::S7471C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C15*), ABISELECT(88,48), "S7471C12");
    /*is_ambiguous_... S7471C12::S7471C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C2*)(S7471C15*), ABISELECT(80,44), "S7471C12");
    /*is_ambiguous_... S7471C12::S7471C15 */ AMB_check_base_class_offset(lv, (S7471C2*)(S7471C15*), ABISELECT(80,44), "S7471C12");
    check_base_class_offset(lv, (S7471C15*)(S7471C14*), ABISELECT(80,44), "S7471C12");
    check_base_class_offset(lv, (S7471C15*)(S7471C17*), ABISELECT(80,44), "S7471C12");
    /*is_ambiguous_... S7471C12::S7471C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C11*), ABISELECT(104,56), "S7471C12");
    /*is_ambiguous_... S7471C12::S7471C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C2*)(S7471C11*), ABISELECT(96,52), "S7471C12");
    /*is_ambiguous_... S7471C12::S7471C11 */ AMB_check_base_class_offset(lv, (S7471C2*)(S7471C11*), ABISELECT(96,52), "S7471C12");
    /*is_ambiguous_... S7471C14::S7471C11 */ AMB_check_base_class_offset(lv, (S7471C11*)(S7471C14*), ABISELECT(96,52), "S7471C12");
    check_base_class_offset(lv, (S7471C11*)(S7471C18*)(S7471C13*), ABISELECT(96,52), "S7471C12");
    check_base_class_offset(lv, (S7471C14*)(S7471C13*), ABISELECT(48,24), "S7471C12");
    check_base_class_offset(lv, (S7856C9_nt*)(S7471C13*), 0, "S7471C12");
    check_base_class_offset(lv, (S7471C8*)(S7471C17*), ABISELECT(112,60), "S7471C12");
    /*is_ambiguous_... S7471C17::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C17*), ABISELECT(112,60), "S7471C12");
    check_base_class_offset(lv, (S7471C17*)(S7471C13*), ABISELECT(112,60), "S7471C12");
    /*is_ambiguous_... S7471C15::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C15*)(S7471C18*)(S7471C13*), ABISELECT(8,4), "S7471C12");
    /*is_ambiguous_... S7471C15::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C15*)(S7471C18*)(S7471C13*), ABISELECT(16,8), "S7471C12");
    check_base_class_offset(lv, (S7856C15*)(S7471C2*)(S7471C15*)(S7471C18*)(S7471C13*), ABISELECT(8,4), "S7471C12");
    check_base_class_offset(lv, (S7471C2*)(S7471C15*)(S7471C18*)(S7471C13*), ABISELECT(8,4), "S7471C12");
    check_base_class_offset(lv, (S7471C15*)(S7471C18*)(S7471C13*), ABISELECT(8,4), "S7471C12");
    /*is_ambiguous_... S7471C18::S7471C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C10*)(S7471C18*)(S7471C13*), ABISELECT(24,12), "S7471C12");
    /*is_ambiguous_... S7471C18::S7471C10 */ AMB_check_base_class_offset(lv, (S7471C10*)(S7471C18*)(S7471C13*), ABISELECT(24,12), "S7471C12");
    /*is_ambiguous_... S7471C18::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C18*)(S7471C13*), ABISELECT(32,16), "S7471C12");
    check_base_class_offset(lv, (S7471C18*)(S7471C13*), ABISELECT(8,4), "S7471C12");
    check_base_class_offset(lv, (S7471C13*), ABISELECT(8,4), "S7471C12");
    /*is_ambiguous_... S7471C7::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C7*), ABISELECT(40,20), "S7471C12");
    check_base_class_offset(lv, (S7471C8*)(S7471C7*), ABISELECT(40,20), "S7471C12");
    check_base_class_offset(lv, (S7471C7*), ABISELECT(40,20), "S7471C12");
    test_class_info(&lv, &cd_S7471C12);
    dp->~S7471C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7471C12(Test_S7471C12, "S7471C12", ABISELECT(128,68));

#else // __cplusplus

extern void _ZN8S7471C12C1Ev();
extern void _ZN8S7471C12D2Ev();
Name_Map name_map_S7471C12[] = {
  NSPAIR(_ZN8S7471C12C1Ev),
  NSPAIR(_ZN8S7471C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C8;
extern VTBL_ENTRY _ZTI7S7471C8[];
extern  VTBL_ENTRY _ZTV7S7471C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C8[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
extern Class_Descriptor cd_S7471C10;
extern VTBL_ENTRY _ZTI8S7471C10[];
extern  VTBL_ENTRY _ZTV8S7471C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
extern Class_Descriptor cd_S7471C11;
extern VTBL_ENTRY _ZTI8S7471C11[];
extern  VTBL_ENTRY _ZTV8S7471C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C11[];
extern Class_Descriptor cd_S7471C9;
extern VTBL_ENTRY _ZTI7S7471C9[];
extern  VTBL_ENTRY _ZTV7S7471C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
extern Class_Descriptor cd_S7471C15;
extern VTBL_ENTRY _ZTI8S7471C15[];
extern  VTBL_ENTRY _ZTV8S7471C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
extern Class_Descriptor cd_S7471C11;
extern VTBL_ENTRY _ZTI8S7471C11[];
extern  VTBL_ENTRY _ZTV8S7471C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C11[];
extern Class_Descriptor cd_S7471C14;
extern VTBL_ENTRY _ZTI8S7471C14[];
extern  VTBL_ENTRY _ZTV8S7471C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C14[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7471C8;
extern VTBL_ENTRY _ZTI7S7471C8[];
extern  VTBL_ENTRY _ZTV7S7471C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C8[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7471C17;
extern VTBL_ENTRY _ZTI8S7471C17[];
extern  VTBL_ENTRY _ZTV8S7471C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C17[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
extern Class_Descriptor cd_S7471C15;
extern VTBL_ENTRY _ZTI8S7471C15[];
extern  VTBL_ENTRY _ZTV8S7471C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7471C10;
extern VTBL_ENTRY _ZTI8S7471C10[];
extern  VTBL_ENTRY _ZTV8S7471C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7471C18;
extern VTBL_ENTRY _ZTI8S7471C18[];
extern  VTBL_ENTRY _ZTV8S7471C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C18[];
extern Class_Descriptor cd_S7471C13;
extern VTBL_ENTRY _ZTI8S7471C13[];
extern  VTBL_ENTRY _ZTV8S7471C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C13[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C8;
extern VTBL_ENTRY _ZTI7S7471C8[];
extern  VTBL_ENTRY _ZTV7S7471C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C8[];
extern Class_Descriptor cd_S7471C7;
extern VTBL_ENTRY _ZTI7S7471C7[];
extern  VTBL_ENTRY _ZTV7S7471C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C7[];
static Base_Class bases_S7471C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7471C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7471C2,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S7471C10,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7471C2,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7471C11,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7471C9,    ABISELECT(64,36), //bcp->offset
    56, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7471C2,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7471C15,    ABISELECT(80,44), //bcp->offset
    66, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7471C2,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7471C11,    ABISELECT(96,52), //bcp->offset
    70, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S7471C14,    ABISELECT(48,24), //bcp->offset
    43, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    37, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    37, //immediately_derived
  0, 1},
  {&cd_S7471C8,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S7471C17,    ABISELECT(112,60), //bcp->offset
    80, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    37, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7471C2,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7471C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S7471C10,    ABISELECT(24,12), //bcp->offset
    32, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S7471C18,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S7471C13,    ABISELECT(8,4), //bcp->offset
    16, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C15,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S7471C8,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S7471C7,    ABISELECT(40,20), //bcp->offset
    38, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7471C12[];
extern void _ZN8S7471C12D1Ev();
extern void _ZN8S7471C12D0Ev();
extern void ABISELECT(_ZThn8_N8S7471C12D1Ev,_ZThn4_N8S7471C12D1Ev)();
extern void ABISELECT(_ZThn8_N8S7471C12D0Ev,_ZThn4_N8S7471C12D0Ev)();
extern void ABISELECT(_ZThn40_N8S7471C12D1Ev,_ZThn20_N8S7471C12D1Ev)();
extern void ABISELECT(_ZThn40_N8S7471C12D0Ev,_ZThn20_N8S7471C12D0Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7471C12D1Ev,_ZTv0_n44_N8S7471C12D1Ev)();
extern void ABISELECT(_ZThn48_N8S7471C12D1Ev,_ZThn24_N8S7471C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7471C12D0Ev,_ZTv0_n44_N8S7471C12D0Ev)();
extern void ABISELECT(_ZThn48_N8S7471C12D0Ev,_ZThn24_N8S7471C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7471C12D1Ev,_ZTv0_n32_N8S7471C12D1Ev)();
extern void ABISELECT(_ZThn64_N8S7471C12D1Ev,_ZThn36_N8S7471C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7471C12D0Ev,_ZTv0_n32_N8S7471C12D0Ev)();
extern void ABISELECT(_ZThn64_N8S7471C12D0Ev,_ZThn36_N8S7471C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7471C12D1Ev,_ZTv0_n32_N8S7471C12D1Ev)();
extern void ABISELECT(_ZThn96_N8S7471C12D1Ev,_ZThn52_N8S7471C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7471C12D0Ev,_ZTv0_n32_N8S7471C12D0Ev)();
extern void ABISELECT(_ZThn96_N8S7471C12D0Ev,_ZThn52_N8S7471C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7471C12D1Ev,_ZTv0_n44_N8S7471C12D1Ev)();
extern void ABISELECT(_ZThn112_N8S7471C12D1Ev,_ZThn60_N8S7471C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7471C12D0Ev,_ZTv0_n44_N8S7471C12D0Ev)();
extern void ABISELECT(_ZThn112_N8S7471C12D0Ev,_ZThn60_N8S7471C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7471C12[] = {
  ABISELECT(112,60),
  ABISELECT(112,60),
  0,
  ABISELECT(96,52),
  ABISELECT(80,44),
  ABISELECT(48,24),
  ABISELECT(48,24),
  0,
  ABISELECT(64,36),
  ABISELECT(48,24),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C12[0]),
  (VTBL_ENTRY)&_ZN8S7471C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C12D0Ev,
  ABISELECT(104,56),
  ABISELECT(104,56),
  ABISELECT(-8,-4),
  ABISELECT(72,40),
  ABISELECT(56,32),
  ABISELECT(40,20),
  ABISELECT(-8,-4),
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(88,48),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7471C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7471C12D1Ev,_ZThn4_N8S7471C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7471C12D0Ev,_ZThn4_N8S7471C12D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7471C12[0]),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S7471C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S7471C12D1Ev,_ZThn20_N8S7471C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S7471C12D0Ev,_ZThn20_N8S7471C12D0Ev),
  ABISELECT(-48,-24),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S7471C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7471C12D1Ev,_ZTv0_n44_N8S7471C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7471C12D0Ev,_ZTv0_n44_N8S7471C12D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S7471C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C12D1Ev,_ZTv0_n32_N8S7471C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C12D0Ev,_ZTv0_n32_N8S7471C12D0Ev),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S7471C12[0]),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S7471C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C12D1Ev,_ZTv0_n32_N8S7471C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C12D0Ev,_ZTv0_n32_N8S7471C12D0Ev),
  ABISELECT(-112,-60),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-64,-36),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S7471C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7471C12D1Ev,_ZTv0_n44_N8S7471C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7471C12D0Ev,_ZTv0_n44_N8S7471C12D0Ev),
};
extern VTBL_ENTRY _ZTV8S7471C12[];
static  VTBL_ENTRY _tg__ZTV7S7471C8__A__8S7471C12[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C8[0]),
};
extern void _ZN8S7471C13D1Ev();
extern void _ZN8S7471C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7471C13__8S7471C12[] = {
  ABISELECT(104,56),
  ABISELECT(104,56),
  ABISELECT(-8,-4),
  ABISELECT(72,40),
  ABISELECT(56,32),
  ABISELECT(40,20),
  ABISELECT(-8,-4),
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(88,48),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C13[0]),
  (VTBL_ENTRY)&_ZN8S7471C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C13D0Ev,
};
extern void _ZN8S7471C18D1Ev();
extern void _ZN8S7471C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7471C188S7471C13__8S7471C12[] = {
  ABISELECT(-8,-4),
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(88,48),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C18[0]),
  (VTBL_ENTRY)&_ZN8S7471C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7471C158S7471C188S7471C13__A1__8S7471C12[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C15[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7471C28S7471C158S7471C188S7471C13__A4__8S7471C12[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C108S7471C188S7471C13__A1__8S7471C12[] = {
  ABISELECT(-24,-12),
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7471C2__8S7471C108S7471C188S7471C13__A1__8S7471C12[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7471C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7471C18D1Ev,_ZTv0_n32_N8S7471C18D1Ev)();
extern void ABISELECT(_ZThn88_N8S7471C18D1Ev,_ZThn48_N8S7471C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7471C18D0Ev,_ZTv0_n32_N8S7471C18D0Ev)();
extern void ABISELECT(_ZThn88_N8S7471C18D0Ev,_ZThn48_N8S7471C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7471C11__8S7471C188S7471C13__8S7471C12[] = {
  ABISELECT(-88,-48),
  ABISELECT(-96,-52),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S7471C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C18D1Ev,_ZTv0_n32_N8S7471C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C18D0Ev,_ZTv0_n32_N8S7471C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__8S7471C188S7471C13__8S7471C12[] = {
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S7471C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__A__8S7471C188S7471C13__8S7471C12[] = {
  ABISELECT(-24,-12),
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7471C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S7471C13D1Ev,_ZTv0_n44_N8S7471C13D1Ev)();
extern void ABISELECT(_ZThn40_N8S7471C13D1Ev,_ZThn20_N8S7471C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7471C13D0Ev,_ZTv0_n44_N8S7471C13D0Ev)();
extern void ABISELECT(_ZThn40_N8S7471C13D0Ev,_ZThn20_N8S7471C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7471C14__8S7471C13__8S7471C12[] = {
  ABISELECT(-40,-20),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S7471C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7471C13D1Ev,_ZTv0_n44_N8S7471C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7471C13D0Ev,_ZTv0_n44_N8S7471C13D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7471C13D1Ev,_ZTv0_n32_N8S7471C13D1Ev)();
extern void ABISELECT(_ZThn56_N8S7471C13D1Ev,_ZThn32_N8S7471C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7471C13D0Ev,_ZTv0_n32_N8S7471C13D0Ev)();
extern void ABISELECT(_ZThn56_N8S7471C13D0Ev,_ZThn32_N8S7471C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7471C9__8S7471C13__8S7471C12[] = {
  ABISELECT(-56,-32),
  ABISELECT(-64,-36),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S7471C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C13D1Ev,_ZTv0_n32_N8S7471C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C13D0Ev,_ZTv0_n32_N8S7471C13D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7471C15__8S7471C13__8S7471C12[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S7471C13[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7471C13D1Ev,_ZTv0_n32_N8S7471C13D1Ev)();
extern void ABISELECT(_ZThn88_N8S7471C13D1Ev,_ZThn48_N8S7471C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7471C13D0Ev,_ZTv0_n32_N8S7471C13D0Ev)();
extern void ABISELECT(_ZThn88_N8S7471C13D0Ev,_ZThn48_N8S7471C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7471C11__A1__8S7471C13__8S7471C12[] = {
  ABISELECT(-88,-48),
  ABISELECT(-96,-52),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S7471C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C13D1Ev,_ZTv0_n32_N8S7471C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C13D0Ev,_ZTv0_n32_N8S7471C13D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7471C13D1Ev,_ZTv0_n44_N8S7471C13D1Ev)();
extern void ABISELECT(_ZThn104_N8S7471C13D1Ev,_ZThn56_N8S7471C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7471C13D0Ev,_ZTv0_n44_N8S7471C13D0Ev)();
extern void ABISELECT(_ZThn104_N8S7471C13D0Ev,_ZThn56_N8S7471C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7471C17__8S7471C13__8S7471C12[] = {
  ABISELECT(-104,-56),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-64,-36),
  ABISELECT(-112,-60),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S7471C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7471C13D1Ev,_ZTv0_n44_N8S7471C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7471C13D0Ev,_ZTv0_n44_N8S7471C13D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7471C108S7471C18__A1__8S7471C13__8S7471C12[] = {
  ABISELECT(-24,-12),
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7471C13[0]),
};
extern void _ZN7S7471C7D1Ev();
extern void _ZN7S7471C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7471C7__8S7471C12[] = {
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C7[0]),
  (VTBL_ENTRY)&_ZN7S7471C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7471C7D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7471C87S7471C7__A2__8S7471C12[] = {
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C8[0]),
};
extern void _ZN8S7471C14D1Ev();
extern void _ZN8S7471C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7471C14__8S7471C12[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C14[0]),
  (VTBL_ENTRY)&_ZN8S7471C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C14D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N8S7471C14D1Ev,_ZTv0_n32_N8S7471C14D1Ev)();
extern void ABISELECT(_ZThn16_N8S7471C14D1Ev,_ZThn12_N8S7471C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7471C14D0Ev,_ZTv0_n32_N8S7471C14D0Ev)();
extern void ABISELECT(_ZThn16_N8S7471C14D0Ev,_ZThn12_N8S7471C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7471C9__8S7471C14__8S7471C12[] = {
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S7471C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C14D1Ev,_ZTv0_n32_N8S7471C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C14D0Ev,_ZTv0_n32_N8S7471C14D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7471C15__8S7471C14__8S7471C12[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S7471C14[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7471C14D1Ev,_ZTv0_n32_N8S7471C14D1Ev)();
extern void ABISELECT(_ZThn48_N8S7471C14D1Ev,_ZThn28_N8S7471C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7471C14D0Ev,_ZTv0_n32_N8S7471C14D0Ev)();
extern void ABISELECT(_ZThn48_N8S7471C14D0Ev,_ZThn28_N8S7471C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7471C11__A1__8S7471C14__8S7471C12[] = {
  ABISELECT(-48,-28),
  ABISELECT(-96,-52),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7471C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C14D1Ev,_ZTv0_n32_N8S7471C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C14D0Ev,_ZTv0_n32_N8S7471C14D0Ev),
};
extern void _ZN7S7471C9D1Ev();
extern void _ZN7S7471C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7471C9__8S7471C12[] = {
  ABISELECT(-64,-36),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C9[0]),
  (VTBL_ENTRY)&_ZN7S7471C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7471C9D0Ev,
};
extern void _ZN8S7471C11D1Ev();
extern void _ZN8S7471C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7471C117S7471C9__8S7471C12[] = {
  ABISELECT(-64,-36),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C11[0]),
  (VTBL_ENTRY)&_ZN8S7471C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C11D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7471C28S7471C117S7471C9__A1__8S7471C12[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__8S7471C117S7471C9__8S7471C12[] = {
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S7471C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__7S7471C9__8S7471C12[] = {
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7471C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__8S7471C12[] = {
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7471C2__8S7471C12[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C15__8S7471C12[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C15[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7471C28S7471C15__A2__8S7471C12[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
extern void _ZN8S7471C11D1Ev();
extern void _ZN8S7471C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7471C11__A1__8S7471C12[] = {
  ABISELECT(-96,-52),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C11[0]),
  (VTBL_ENTRY)&_ZN8S7471C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C11D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7471C28S7471C11__A3__8S7471C12[] = {
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__8S7471C11__A1__8S7471C12[] = {
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S7471C11[0]),
};
extern void _ZN8S7471C17D1Ev();
extern void _ZN8S7471C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7471C17__8S7471C12[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-64,-36),
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C17[0]),
  (VTBL_ENTRY)&_ZN8S7471C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__8S7471C17__8S7471C12[] = {
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S7471C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C15__8S7471C17__8S7471C12[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7471C17[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7471C17D1Ev,_ZTv0_n32_N8S7471C17D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7471C17D0Ev,_ZTv0_n32_N8S7471C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7471C9__8S7471C17__8S7471C12[] = {
  ABISELECT(48,24),
  ABISELECT(-64,-36),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S7471C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C17D1Ev,_ZTv0_n32_N8S7471C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C17D0Ev,_ZTv0_n32_N8S7471C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7471C8__A1__8S7471C12[] = {
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C8[0]),
};
static  VTT_ENTRY vtt_S7471C12[] = {
  {&(_ZTV8S7471C12[14]),  14,93},
  {&(_tg__ZTV7S7471C8__A__8S7471C12[3]),  3,3},
  {&(_tg__ZTV8S7471C13__8S7471C12[14]),  14,16},
  {&(_tg__ZTV8S7471C188S7471C13__8S7471C12[8]),  8,10},
  {&(_tg__ZTV8S7471C158S7471C188S7471C13__A1__8S7471C12[4]),  4,4},
  {&(_tg__ZTV7S7471C28S7471C158S7471C188S7471C13__A4__8S7471C12[4]),  4,4},
  {&(_tg__ZTV8S7471C108S7471C188S7471C13__A1__8S7471C12[6]),  6,6},
  {&(_tg__ZTV7S7471C2__8S7471C108S7471C188S7471C13__A1__8S7471C12[4]),  4,4},
  {&(_tg__ZTV8S7471C11__8S7471C188S7471C13__8S7471C12[8]),  8,10},
  {&(_tg__ZTV8S7471C10__8S7471C188S7471C13__8S7471C12[6]),  6,6},
  {&(_tg__ZTV8S7471C10__8S7471C188S7471C13__8S7471C12[6]),  6,6},
  {&(_tg__ZTV8S7471C10__A__8S7471C188S7471C13__8S7471C12[6]),  6,6},
  {&(_tg__ZTV8S7471C14__8S7471C13__8S7471C12[11]),  11,13},
  {&(_tg__ZTV7S7471C9__8S7471C13__8S7471C12[8]),  8,10},
  {&(_tg__ZTV8S7471C14__8S7471C13__8S7471C12[11]),  11,13},
  {&(_tg__ZTV8S7471C14__8S7471C13__8S7471C12[11]),  11,13},
  {&(_tg__ZTV8S7471C15__8S7471C13__8S7471C12[4]),  4,4},
  {&(_tg__ZTV8S7471C11__A1__8S7471C13__8S7471C12[8]),  8,10},
  {&(_tg__ZTV8S7471C17__8S7471C13__8S7471C12[11]),  11,13},
  {&(_tg__ZTV8S7471C17__8S7471C13__8S7471C12[11]),  11,13},
  {&(_tg__ZTV8S7471C108S7471C18__A1__8S7471C13__8S7471C12[6]),  6,6},
  {&(_tg__ZTV7S7471C7__8S7471C12[3]),  3,5},
  {&(_tg__ZTV7S7471C87S7471C7__A2__8S7471C12[3]),  3,3},
  {&(_ZTV8S7471C12[30]),  30,93},
  {&(_ZTV8S7471C12[54]),  54,93},
  {&(_ZTV8S7471C12[64]),  64,93},
  {&(_ZTV8S7471C12[54]),  54,93},
  {&(_ZTV8S7471C12[54]),  54,93},
  {&(_ZTV8S7471C12[70]),  70,93},
  {&(_ZTV8S7471C12[78]),  78,93},
  {&(_ZTV8S7471C12[91]),  91,93},
  {&(_ZTV8S7471C12[91]),  91,93},
  {&(_ZTV8S7471C12[38]),  38,93},
  {&(_ZTV8S7471C12[41]),  41,93},
  {&(_tg__ZTV8S7471C14__8S7471C12[10]),  10,12},
  {&(_tg__ZTV7S7471C9__8S7471C14__8S7471C12[8]),  8,10},
  {&(_tg__ZTV8S7471C14__8S7471C12[10]),  10,12},
  {&(_tg__ZTV8S7471C14__8S7471C12[10]),  10,12},
  {&(_tg__ZTV8S7471C15__8S7471C14__8S7471C12[4]),  4,4},
  {&(_tg__ZTV8S7471C11__A1__8S7471C14__8S7471C12[8]),  8,10},
  {&(_tg__ZTV7S7471C9__8S7471C12[7]),  7,9},
  {&(_tg__ZTV8S7471C117S7471C9__8S7471C12[7]),  7,9},
  {&(_tg__ZTV7S7471C28S7471C117S7471C9__A1__8S7471C12[4]),  4,4},
  {&(_tg__ZTV8S7471C10__8S7471C117S7471C9__8S7471C12[6]),  6,6},
  {&(_tg__ZTV8S7471C10__8S7471C117S7471C9__8S7471C12[6]),  6,6},
  {&(_tg__ZTV8S7471C10__7S7471C9__8S7471C12[6]),  6,6},
  {&(_tg__ZTV8S7471C10__7S7471C9__8S7471C12[6]),  6,6},
  {&(_tg__ZTV8S7471C10__8S7471C12[6]),  6,6},
  {&(_tg__ZTV8S7471C10__8S7471C12[6]),  6,6},
  {&(_tg__ZTV7S7471C2__8S7471C12[4]),  4,4},
  {&(_tg__ZTV8S7471C15__8S7471C12[4]),  4,4},
  {&(_tg__ZTV7S7471C28S7471C15__A2__8S7471C12[4]),  4,4},
  {&(_tg__ZTV8S7471C11__A1__8S7471C12[7]),  7,9},
  {&(_tg__ZTV7S7471C28S7471C11__A3__8S7471C12[4]),  4,4},
  {&(_tg__ZTV8S7471C10__8S7471C11__A1__8S7471C12[6]),  6,6},
  {&(_tg__ZTV8S7471C10__8S7471C11__A1__8S7471C12[6]),  6,6},
  {&(_tg__ZTV8S7471C17__8S7471C12[10]),  10,12},
  {&(_tg__ZTV8S7471C10__8S7471C17__8S7471C12[6]),  6,6},
  {&(_tg__ZTV8S7471C17__8S7471C12[10]),  10,12},
  {&(_tg__ZTV8S7471C15__8S7471C17__8S7471C12[4]),  4,4},
  {&(_tg__ZTV7S7471C9__8S7471C17__8S7471C12[8]),  8,10},
  {&(_tg__ZTV8S7471C10__8S7471C17__8S7471C12[6]),  6,6},
  {&(_tg__ZTV7S7471C8__A1__8S7471C12[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S7471C12[];
extern  VTBL_ENTRY _ZTV8S7471C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C12[];
static VTBL_ENTRY alt_thunk_names139[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C14D0Ev,_ZTv0_n32_N8S7471C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7471C14D0Ev,_ZThn28_N8S7471C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7471C14D0Ev,_ZThn12_N8S7471C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C14D1Ev,_ZTv0_n32_N8S7471C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7471C14D1Ev,_ZThn28_N8S7471C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7471C14D1Ev,_ZThn12_N8S7471C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C13D0Ev,_ZTv0_n32_N8S7471C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7471C13D0Ev,_ZThn48_N8S7471C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7471C13D0Ev,_ZThn32_N8S7471C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C13D1Ev,_ZTv0_n32_N8S7471C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7471C13D1Ev,_ZThn48_N8S7471C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7471C13D1Ev,_ZThn32_N8S7471C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7471C13D0Ev,_ZTv0_n44_N8S7471C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7471C13D0Ev,_ZThn56_N8S7471C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S7471C13D0Ev,_ZThn20_N8S7471C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7471C13D1Ev,_ZTv0_n44_N8S7471C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7471C13D1Ev,_ZThn56_N8S7471C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S7471C13D1Ev,_ZThn20_N8S7471C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C18D0Ev,_ZTv0_n32_N8S7471C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7471C18D0Ev,_ZThn48_N8S7471C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C18D1Ev,_ZTv0_n32_N8S7471C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7471C18D1Ev,_ZThn48_N8S7471C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C12D0Ev,_ZTv0_n32_N8S7471C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7471C12D0Ev,_ZThn52_N8S7471C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7471C12D0Ev,_ZThn36_N8S7471C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C12D1Ev,_ZTv0_n32_N8S7471C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7471C12D1Ev,_ZThn52_N8S7471C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7471C12D1Ev,_ZThn36_N8S7471C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7471C12D0Ev,_ZTv0_n44_N8S7471C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7471C12D0Ev,_ZThn60_N8S7471C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7471C12D0Ev,_ZThn24_N8S7471C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7471C12D1Ev,_ZTv0_n44_N8S7471C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7471C12D1Ev,_ZThn60_N8S7471C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7471C12D1Ev,_ZThn24_N8S7471C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7471C12 = {  "S7471C12", // class name
  bases_S7471C12, 41,
  &(vtc_S7471C12[0]), // expected_vtbl_contents
  &(vtt_S7471C12[0]), // expected_vtt_contents
  ABISELECT(128,68), // object size
  NSPAIRA(_ZTI8S7471C12),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S7471C12),93, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7471C12),63, //virtual table table var
  20, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names139,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7471C6  : virtual S7471C7 , virtual S7471C9 , S7471C12 , S7471C18 , S7471C17 {
  virtual  ~S7471C6(); // _ZN7S7471C6D2Ev
  S7471C6(); // tgen
};
//SIG(-1 S7471C6) C1{ VBC2{ BC3{ m} BC4{ VBC3} vd} VBC5{ VBC6{ m} VBC3 VBC7{ BC6 VBC8{ VBC6 BC3 VBC9{ m}} VBC3} BC9 BC10{ BC3 VBC6 VBC9 BC8 VBC7 vd} vd} BC11{ BC4 VBC9 BC12{ VBC13{ VBC5 VBC14{ BC9 BC3 BC8 Fi} VBC10 vd Fi[2]} VBC15{ m} VBC16{ VBC8 VBC4 VBC14 BC9 VBC5 vd Fi} BC17{ VBC10 BC14 BC7 BC9 vd} vd} BC2 vd} BC17 BC16 vd}


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

static void Test_S7471C6()
{
  extern Class_Descriptor cd_S7471C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(24,25)];
    init_test(&cd_S7471C6, buf);
    S7471C6 *dp, &lv = *(dp=new (buf) S7471C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(184,96), "sizeof(S7471C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7471C6)");
    /*is_ambiguous_... S7471C6::S7471C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C7*), ABISELECT(96,48), "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C8*)(S7471C7*), 0, "S7471C6");
    /*is_ambiguous_... S7471C9::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C9*), 0, "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C10*), 0, "S7471C6");
    /*is_ambiguous_... S7471C12::S7471C8 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C8*)(S7471C12*), 0, "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C8 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C8*), 0, "S7471C6");
    /*is_ambiguous_... S7471C18::S7471C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C10*)(S7471C18*)(S7471C13*)(S7471C12*), 0, "S7471C6");
    check_base_class_offset(lv, (S7856C15*)(S7471C8*)(S7471C7*)(S7471C12*), 0, "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C18 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C10*)(S7471C18*), 0, "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C7 */ AMB_check_base_class_offset(lv, (S7471C8*)(S7471C7*), ABISELECT(96,48), "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C7 */ AMB_check_base_class_offset(lv, (S7471C7*), ABISELECT(96,48), "S7471C6");
    /*is_ambiguous_... S7471C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C9*), 0, "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C2*), 0, "S7471C6");
    /*is_ambiguous_... S7471C11::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C11*)(S7471C9*), 0, "S7471C6");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C2*)(S7471C11*)(S7471C9*), 0, "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C15 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C2*)(S7471C15*), 0, "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C11 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C11*), 0, "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C11 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C2*)(S7471C11*), 0, "S7471C6");
    check_base_class_offset(lv, (S7856C24*)(S7471C2*)(S7471C15*)(S7471C18*)(S7471C13*)(S7471C12*), 0, "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C18 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C2*)(S7471C15*)(S7471C18*), 0, "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C10*), ABISELECT(120,60), "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C2*), ABISELECT(120,60), "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C2*), 0, "S7471C6");
    check_base_class_offset(lv, (S7856C12*)(S7471C11*)(S7471C9*), 0, "S7471C6");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C2*)(S7471C11*)(S7471C9*), 0, "S7471C6");
    /*is_ambiguous_... S7471C12::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C12*), 0, "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C15 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C2*)(S7471C15*), 0, "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C11*), 0, "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C2*)(S7471C11*), 0, "S7471C6");
    check_base_class_offset(lv, (S7856C12*)(S7471C2*)(S7471C15*)(S7471C18*)(S7471C13*)(S7471C12*), 0, "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C18 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C2*)(S7471C15*)(S7471C18*), 0, "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C10 */ AMB_check_base_class_offset(lv, (S7471C2*)(S7471C10*), ABISELECT(120,60), "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C17 */ AMB_check_base_class_offset(lv, (S7471C2*)(S7471C17*), ABISELECT(120,60), "S7471C6");
    /*is_ambiguous_... S7471C18::S7471C10 */ AMB_check_base_class_offset(lv, (S7471C2*)(S7471C10*)(S7471C18*)(S7471C13*)(S7471C12*), ABISELECT(120,60), "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C18 */ AMB_check_base_class_offset(lv, (S7471C2*)(S7471C10*)(S7471C18*), ABISELECT(120,60), "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C17 */ AMB_check_base_class_offset(lv, (S7471C2*)(S7471C17*), ABISELECT(120,60), "S7471C6");
    check_base_class_offset(lv, (S7471C10*)(S7471C9*), ABISELECT(120,60), "S7471C6");
    check_base_class_offset(lv, (S7471C10*)(S7471C11*)(S7471C9*), ABISELECT(120,60), "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C11 */ AMB_check_base_class_offset(lv, (S7471C10*)(S7471C11*), ABISELECT(120,60), "S7471C6");
    /*is_ambiguous_... S7471C9::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C9*), ABISELECT(104,52), "S7471C6");
    /*is_ambiguous_... S7471C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C11*)(S7471C9*), ABISELECT(112,56), "S7471C6");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C2*)(S7471C11*)(S7471C9*), ABISELECT(104,52), "S7471C6");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7471C2*)(S7471C11*)(S7471C9*), ABISELECT(104,52), "S7471C6");
    check_base_class_offset(lv, (S7471C11*)(S7471C9*), ABISELECT(104,52), "S7471C6");
    check_base_class_offset(lv, (S7471C9*), ABISELECT(104,52), "S7471C6");
    check_base_class_offset(lv, (S7471C9*)(S7471C14*), ABISELECT(104,52), "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C17 */ AMB_check_base_class_offset(lv, (S7471C9*)(S7471C17*), ABISELECT(104,52), "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C17 */ AMB_check_base_class_offset(lv, (S7471C9*)(S7471C17*), ABISELECT(104,52), "S7471C6");
    /*is_ambiguous_... S7471C12::S7471C8 */ AMB_check_base_class_offset(lv, (S7471C8*)(S7471C12*), 0, "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C15 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C15*), ABISELECT(136,72), "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C15*), ABISELECT(144,76), "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C2*)(S7471C15*), ABISELECT(136,72), "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C15 */ AMB_check_base_class_offset(lv, (S7471C2*)(S7471C15*), ABISELECT(136,72), "S7471C6");
    check_base_class_offset(lv, (S7471C15*)(S7471C14*), ABISELECT(136,72), "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C17 */ AMB_check_base_class_offset(lv, (S7471C15*)(S7471C17*), ABISELECT(136,72), "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C17 */ AMB_check_base_class_offset(lv, (S7471C15*)(S7471C17*), ABISELECT(136,72), "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C11*), ABISELECT(160,84), "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C2*)(S7471C11*), ABISELECT(152,80), "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C11 */ AMB_check_base_class_offset(lv, (S7471C2*)(S7471C11*), ABISELECT(152,80), "S7471C6");
    /*is_ambiguous_... S7471C14::S7471C11 */ AMB_check_base_class_offset(lv, (S7471C11*)(S7471C14*), ABISELECT(152,80), "S7471C6");
    check_base_class_offset(lv, (S7471C11*)(S7471C18*)(S7471C13*)(S7471C12*), ABISELECT(152,80), "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C18 */ AMB_check_base_class_offset(lv, (S7471C11*)(S7471C18*), ABISELECT(152,80), "S7471C6");
    check_base_class_offset(lv, (S7471C14*)(S7471C13*)(S7471C12*), ABISELECT(120,60), "S7471C6");
    check_base_class_offset(lv, (S7856C9_nt*)(S7471C13*)(S7471C12*), 0, "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C17 */ AMB_check_base_class_offset(lv, (S7471C8*)(S7471C17*), ABISELECT(168,88), "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C17 */ AMB_check_base_class_offset(lv, (S7471C8*)(S7471C17*), ABISELECT(168,88), "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C17 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C17*), ABISELECT(168,88), "S7471C6");
    check_base_class_offset(lv, (S7471C17*)(S7471C13*)(S7471C12*), ABISELECT(168,88), "S7471C6");
    /*is_ambiguous_... S7471C15::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C15*)(S7471C18*)(S7471C13*)(S7471C12*), ABISELECT(8,4), "S7471C6");
    /*is_ambiguous_... S7471C15::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C15*)(S7471C18*)(S7471C13*)(S7471C12*), ABISELECT(16,8), "S7471C6");
    check_base_class_offset(lv, (S7856C15*)(S7471C2*)(S7471C15*)(S7471C18*)(S7471C13*)(S7471C12*), ABISELECT(8,4), "S7471C6");
    check_base_class_offset(lv, (S7471C2*)(S7471C15*)(S7471C18*)(S7471C13*)(S7471C12*), ABISELECT(8,4), "S7471C6");
    check_base_class_offset(lv, (S7471C15*)(S7471C18*)(S7471C13*)(S7471C12*), ABISELECT(8,4), "S7471C6");
    /*is_ambiguous_... S7471C18::S7471C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C10*)(S7471C18*)(S7471C13*)(S7471C12*), ABISELECT(24,12), "S7471C6");
    /*is_ambiguous_... S7471C18::S7471C10 */ AMB_check_base_class_offset(lv, (S7471C10*)(S7471C18*)(S7471C13*)(S7471C12*), ABISELECT(24,12), "S7471C6");
    /*is_ambiguous_... S7471C18::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C18*)(S7471C13*)(S7471C12*), ABISELECT(32,16), "S7471C6");
    check_base_class_offset(lv, (S7471C18*)(S7471C13*)(S7471C12*), ABISELECT(8,4), "S7471C6");
    check_base_class_offset(lv, (S7471C13*)(S7471C12*), ABISELECT(8,4), "S7471C6");
    /*is_ambiguous_... S7471C7::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C7*)(S7471C12*), ABISELECT(40,20), "S7471C6");
    check_base_class_offset(lv, (S7471C8*)(S7471C7*)(S7471C12*), ABISELECT(40,20), "S7471C6");
    check_base_class_offset(lv, (S7471C7*)(S7471C12*), ABISELECT(40,20), "S7471C6");
    check_base_class_offset(lv, (S7471C12*), 0, "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C18 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C15*)(S7471C18*), ABISELECT(48,24), "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C18 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C15*)(S7471C18*), ABISELECT(56,28), "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C18 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C2*)(S7471C15*)(S7471C18*), ABISELECT(48,24), "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C18 */ AMB_check_base_class_offset(lv, (S7471C2*)(S7471C15*)(S7471C18*), ABISELECT(48,24), "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C18 */ AMB_check_base_class_offset(lv, (S7471C15*)(S7471C18*), ABISELECT(48,24), "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C18 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C10*)(S7471C18*), ABISELECT(64,32), "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C18 */ AMB_check_base_class_offset(lv, (S7471C10*)(S7471C18*), ABISELECT(64,32), "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C18 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C18*), ABISELECT(72,36), "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C18 */ AMB_check_base_class_offset(lv, (S7471C18*), ABISELECT(48,24), "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C17 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C17*), ABISELECT(80,40), "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C17 */ AMB_check_base_class_offset(lv, (S7471C17*), ABISELECT(80,40), "S7471C6");
    test_class_info(&lv, &cd_S7471C6);
    dp->~S7471C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7471C6(Test_S7471C6, "S7471C6", ABISELECT(184,96));

#else // __cplusplus

extern void _ZN7S7471C6C1Ev();
extern void _ZN7S7471C6D2Ev();
Name_Map name_map_S7471C6[] = {
  NSPAIR(_ZN7S7471C6C1Ev),
  NSPAIR(_ZN7S7471C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C8;
extern VTBL_ENTRY _ZTI7S7471C8[];
extern  VTBL_ENTRY _ZTV7S7471C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C8[];
extern Class_Descriptor cd_S7471C7;
extern VTBL_ENTRY _ZTI7S7471C7[];
extern  VTBL_ENTRY _ZTV7S7471C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C7[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
extern Class_Descriptor cd_S7471C10;
extern VTBL_ENTRY _ZTI8S7471C10[];
extern  VTBL_ENTRY _ZTV8S7471C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
extern Class_Descriptor cd_S7471C11;
extern VTBL_ENTRY _ZTI8S7471C11[];
extern  VTBL_ENTRY _ZTV8S7471C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C11[];
extern Class_Descriptor cd_S7471C9;
extern VTBL_ENTRY _ZTI7S7471C9[];
extern  VTBL_ENTRY _ZTV7S7471C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C9[];
extern Class_Descriptor cd_S7471C8;
extern VTBL_ENTRY _ZTI7S7471C8[];
extern  VTBL_ENTRY _ZTV7S7471C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C8[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
extern Class_Descriptor cd_S7471C15;
extern VTBL_ENTRY _ZTI8S7471C15[];
extern  VTBL_ENTRY _ZTV8S7471C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
extern Class_Descriptor cd_S7471C11;
extern VTBL_ENTRY _ZTI8S7471C11[];
extern  VTBL_ENTRY _ZTV8S7471C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C11[];
extern Class_Descriptor cd_S7471C14;
extern VTBL_ENTRY _ZTI8S7471C14[];
extern  VTBL_ENTRY _ZTV8S7471C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C14[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7471C8;
extern VTBL_ENTRY _ZTI7S7471C8[];
extern  VTBL_ENTRY _ZTV7S7471C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C8[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7471C17;
extern VTBL_ENTRY _ZTI8S7471C17[];
extern  VTBL_ENTRY _ZTV8S7471C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C17[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
extern Class_Descriptor cd_S7471C15;
extern VTBL_ENTRY _ZTI8S7471C15[];
extern  VTBL_ENTRY _ZTV8S7471C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7471C10;
extern VTBL_ENTRY _ZTI8S7471C10[];
extern  VTBL_ENTRY _ZTV8S7471C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7471C18;
extern VTBL_ENTRY _ZTI8S7471C18[];
extern  VTBL_ENTRY _ZTV8S7471C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C18[];
extern Class_Descriptor cd_S7471C13;
extern VTBL_ENTRY _ZTI8S7471C13[];
extern  VTBL_ENTRY _ZTV8S7471C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C13[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C8;
extern VTBL_ENTRY _ZTI7S7471C8[];
extern  VTBL_ENTRY _ZTV7S7471C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C8[];
extern Class_Descriptor cd_S7471C7;
extern VTBL_ENTRY _ZTI7S7471C7[];
extern  VTBL_ENTRY _ZTV7S7471C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C7[];
extern Class_Descriptor cd_S7471C12;
extern VTBL_ENTRY _ZTI8S7471C12[];
extern  VTBL_ENTRY _ZTV8S7471C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
extern Class_Descriptor cd_S7471C15;
extern VTBL_ENTRY _ZTI8S7471C15[];
extern  VTBL_ENTRY _ZTV8S7471C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7471C10;
extern VTBL_ENTRY _ZTI8S7471C10[];
extern  VTBL_ENTRY _ZTV8S7471C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7471C18;
extern VTBL_ENTRY _ZTI8S7471C18[];
extern  VTBL_ENTRY _ZTV8S7471C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C18[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7471C17;
extern VTBL_ENTRY _ZTI8S7471C17[];
extern  VTBL_ENTRY _ZTV8S7471C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C17[];
static Base_Class bases_S7471C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7471C8,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7471C7,    ABISELECT(96,48), //bcp->offset
    72, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    66, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S7471C2,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    54, //bcp->index_in_construction_vtbl_array
    77, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7471C10,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(112,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7471C2,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7471C11,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    69, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7471C9,    ABISELECT(104,52), //bcp->offset
    78, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7471C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(136,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(144,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(136,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7471C2,    ABISELECT(136,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    85, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7471C15,    ABISELECT(136,72), //bcp->offset
    101, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    57, //bcp->index_in_construction_vtbl_array
    84, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(160,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(152,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S7471C2,    ABISELECT(152,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    87, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S7471C11,    ABISELECT(152,80), //bcp->offset
    105, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    58, //bcp->index_in_construction_vtbl_array
    86, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S7471C14,    ABISELECT(120,60), //bcp->offset
    88, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    56, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    40, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    40, //immediately_derived
  0, 1},
  {&cd_S7471C8,    ABISELECT(168,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    60, //bcp->index_in_construction_vtbl_array
    96, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    30, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(168,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S7471C17,    ABISELECT(168,88), //bcp->offset
    115, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    59, //bcp->index_in_construction_vtbl_array
    90, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    40, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S7471C2,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7471C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S7471C10,    ABISELECT(24,12), //bcp->offset
    33, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    61, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S7471C18,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S7471C13,    ABISELECT(8,4), //bcp->offset
    17, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    55, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S7471C8,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S7471C7,    ABISELECT(40,20), //bcp->offset
    39, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    62, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S7471C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S7471C2,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S7471C15,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    53, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S7471C10,    ABISELECT(64,32), //bcp->offset
    54, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    64, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    53, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(72,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    53, //immediately_derived
  0, 0},
  {&cd_S7471C18,    ABISELECT(48,24), //bcp->offset
    44, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    63, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S7471C17,    ABISELECT(80,40), //bcp->offset
    60, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    65, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7471C6[];
extern void _ZN7S7471C6D1Ev();
extern void _ZN7S7471C6D0Ev();
extern void ABISELECT(_ZThn8_N7S7471C6D1Ev,_ZThn4_N7S7471C6D1Ev)();
extern void ABISELECT(_ZThn8_N7S7471C6D0Ev,_ZThn4_N7S7471C6D0Ev)();
extern void ABISELECT(_ZThn40_N7S7471C6D1Ev,_ZThn20_N7S7471C6D1Ev)();
extern void ABISELECT(_ZThn40_N7S7471C6D0Ev,_ZThn20_N7S7471C6D0Ev)();
extern void ABISELECT(_ZThn48_N7S7471C6D1Ev,_ZThn24_N7S7471C6D1Ev)();
extern void ABISELECT(_ZThn48_N7S7471C6D0Ev,_ZThn24_N7S7471C6D0Ev)();
extern void ABISELECT(_ZThn80_N7S7471C6D1Ev,_ZThn40_N7S7471C6D1Ev)();
extern void ABISELECT(_ZThn80_N7S7471C6D0Ev,_ZThn40_N7S7471C6D0Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7471C6D1Ev,_ZTv0_n16_N7S7471C6D1Ev)();
extern void ABISELECT(_ZThn96_N7S7471C6D1Ev,_ZThn48_N7S7471C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7471C6D0Ev,_ZTv0_n16_N7S7471C6D0Ev)();
extern void ABISELECT(_ZThn96_N7S7471C6D0Ev,_ZThn48_N7S7471C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7471C6D1Ev,_ZTv0_n32_N7S7471C6D1Ev)();
extern void ABISELECT(_ZThn104_N7S7471C6D1Ev,_ZThn52_N7S7471C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7471C6D0Ev,_ZTv0_n32_N7S7471C6D0Ev)();
extern void ABISELECT(_ZThn104_N7S7471C6D0Ev,_ZThn52_N7S7471C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7471C6D1Ev,_ZTv0_n44_N7S7471C6D1Ev)();
extern void ABISELECT(_ZThn120_N7S7471C6D1Ev,_ZThn60_N7S7471C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7471C6D0Ev,_ZTv0_n44_N7S7471C6D0Ev)();
extern void ABISELECT(_ZThn120_N7S7471C6D0Ev,_ZThn60_N7S7471C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7471C6D1Ev,_ZTv0_n32_N7S7471C6D1Ev)();
extern void ABISELECT(_ZThn152_N7S7471C6D1Ev,_ZThn80_N7S7471C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7471C6D0Ev,_ZTv0_n32_N7S7471C6D0Ev)();
extern void ABISELECT(_ZThn152_N7S7471C6D0Ev,_ZThn80_N7S7471C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7471C6D1Ev,_ZTv0_n44_N7S7471C6D1Ev)();
extern void ABISELECT(_ZThn168_N7S7471C6D1Ev,_ZThn88_N7S7471C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7471C6D0Ev,_ZTv0_n44_N7S7471C6D0Ev)();
extern void ABISELECT(_ZThn168_N7S7471C6D0Ev,_ZThn88_N7S7471C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7471C6[] = {
  ABISELECT(96,48),
  ABISELECT(168,88),
  ABISELECT(168,88),
  0,
  ABISELECT(152,80),
  ABISELECT(136,72),
  ABISELECT(120,60),
  ABISELECT(120,60),
  0,
  ABISELECT(104,52),
  ABISELECT(120,60),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C6[0]),
  (VTBL_ENTRY)&_ZN7S7471C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7471C6D0Ev,
  ABISELECT(160,84),
  ABISELECT(160,84),
  ABISELECT(-8,-4),
  ABISELECT(128,68),
  ABISELECT(96,48),
  ABISELECT(112,56),
  ABISELECT(-8,-4),
  ABISELECT(112,56),
  ABISELECT(112,56),
  ABISELECT(144,76),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7471C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7471C6D1Ev,_ZThn4_N7S7471C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7471C6D0Ev,_ZThn4_N7S7471C6D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(96,48),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7471C6[0]),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S7471C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S7471C6D1Ev,_ZThn20_N7S7471C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S7471C6D0Ev,_ZThn20_N7S7471C6D0Ev),
  ABISELECT(-48,-24),
  ABISELECT(72,36),
  ABISELECT(72,36),
  ABISELECT(104,56),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S7471C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7471C6D1Ev,_ZThn24_N7S7471C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7471C6D0Ev,_ZThn24_N7S7471C6D0Ev),
  ABISELECT(-64,-32),
  ABISELECT(56,28),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI7S7471C6[0]),
  ABISELECT(40,20),
  ABISELECT(24,12),
  ABISELECT(56,32),
  ABISELECT(88,48),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(40,20),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI7S7471C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N7S7471C6D1Ev,_ZThn40_N7S7471C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N7S7471C6D0Ev,_ZThn40_N7S7471C6D0Ev),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI7S7471C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7471C6D1Ev,_ZTv0_n16_N7S7471C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7471C6D0Ev,_ZTv0_n16_N7S7471C6D0Ev),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI7S7471C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7471C6D1Ev,_ZTv0_n32_N7S7471C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7471C6D0Ev,_ZTv0_n32_N7S7471C6D0Ev),
  ABISELECT(-120,-60),
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-120,-60),
  0,
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI7S7471C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7471C6D1Ev,_ZTv0_n44_N7S7471C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7471C6D0Ev,_ZTv0_n44_N7S7471C6D0Ev),
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI7S7471C6[0]),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  (VTBL_ENTRY)&(_ZTI7S7471C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7471C6D1Ev,_ZTv0_n32_N7S7471C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7471C6D0Ev,_ZTv0_n32_N7S7471C6D0Ev),
  ABISELECT(-168,-88),
  ABISELECT(-48,-28),
  ABISELECT(-64,-36),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-168,-88),
  ABISELECT(-168,-88),
  ABISELECT(-48,-28),
  ABISELECT(-168,-88),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI7S7471C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7471C6D1Ev,_ZTv0_n44_N7S7471C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7471C6D0Ev,_ZTv0_n44_N7S7471C6D0Ev),
};
extern VTBL_ENTRY _ZTV7S7471C6[];
extern void _ZN8S7471C12D1Ev();
extern void _ZN8S7471C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7471C12__7S7471C6[] = {
  ABISELECT(168,88),
  ABISELECT(168,88),
  0,
  ABISELECT(152,80),
  ABISELECT(136,72),
  ABISELECT(120,60),
  ABISELECT(120,60),
  0,
  ABISELECT(104,52),
  ABISELECT(120,60),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C12[0]),
  (VTBL_ENTRY)&_ZN8S7471C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7471C88S7471C12__A1__7S7471C6[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C8[0]),
};
extern void _ZN8S7471C13D1Ev();
extern void _ZN8S7471C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7471C138S7471C12__7S7471C6[] = {
  ABISELECT(160,84),
  ABISELECT(160,84),
  ABISELECT(-8,-4),
  ABISELECT(128,68),
  ABISELECT(96,48),
  ABISELECT(112,56),
  ABISELECT(-8,-4),
  ABISELECT(112,56),
  ABISELECT(112,56),
  ABISELECT(144,76),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C13[0]),
  (VTBL_ENTRY)&_ZN8S7471C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C13D0Ev,
};
extern void _ZN8S7471C18D1Ev();
extern void _ZN8S7471C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7471C188S7471C138S7471C12__7S7471C6[] = {
  ABISELECT(-8,-4),
  ABISELECT(112,56),
  ABISELECT(112,56),
  ABISELECT(144,76),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C18[0]),
  (VTBL_ENTRY)&_ZN8S7471C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7471C158S7471C188S7471C138S7471C12__A1__7S7471C6[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C15[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7471C28S7471C158S7471C188S7471C138S7471C12__A4__7S7471C6[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C108S7471C188S7471C138S7471C12__A1__7S7471C6[] = {
  ABISELECT(-24,-12),
  ABISELECT(96,48),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7471C2__8S7471C108S7471C188S7471C138S7471C12__A1__7S7471C6[] = {
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S7471C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7471C18D1Ev,_ZTv0_n32_N8S7471C18D1Ev)();
extern void ABISELECT(_ZThn144_N8S7471C18D1Ev,_ZThn76_N8S7471C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7471C18D0Ev,_ZTv0_n32_N8S7471C18D0Ev)();
extern void ABISELECT(_ZThn144_N8S7471C18D0Ev,_ZThn76_N8S7471C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7471C11__8S7471C188S7471C138S7471C12__7S7471C6[] = {
  ABISELECT(-144,-76),
  ABISELECT(-152,-80),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(-144,-76),
  (VTBL_ENTRY)&(_ZTI8S7471C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C18D1Ev,_ZTv0_n32_N8S7471C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C18D0Ev,_ZTv0_n32_N8S7471C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__8S7471C188S7471C138S7471C12__7S7471C6[] = {
  ABISELECT(-120,-60),
  0,
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S7471C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__A__8S7471C188S7471C138S7471C12__7S7471C6[] = {
  ABISELECT(-24,-12),
  ABISELECT(96,48),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7471C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S7471C13D1Ev,_ZTv0_n44_N8S7471C13D1Ev)();
extern void ABISELECT(_ZThn112_N8S7471C13D1Ev,_ZThn56_N8S7471C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7471C13D0Ev,_ZTv0_n44_N8S7471C13D0Ev)();
extern void ABISELECT(_ZThn112_N8S7471C13D0Ev,_ZThn56_N8S7471C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7471C14__8S7471C138S7471C12__7S7471C6[] = {
  ABISELECT(-112,-56),
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-120,-60),
  0,
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S7471C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7471C13D1Ev,_ZTv0_n44_N8S7471C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7471C13D0Ev,_ZTv0_n44_N8S7471C13D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7471C13D1Ev,_ZTv0_n32_N8S7471C13D1Ev)();
extern void ABISELECT(_ZThn96_N8S7471C13D1Ev,_ZThn48_N8S7471C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7471C13D0Ev,_ZTv0_n32_N8S7471C13D0Ev)();
extern void ABISELECT(_ZThn96_N8S7471C13D0Ev,_ZThn48_N8S7471C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7471C9__8S7471C138S7471C12__7S7471C6[] = {
  ABISELECT(-96,-48),
  ABISELECT(-104,-52),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S7471C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C13D1Ev,_ZTv0_n32_N8S7471C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C13D0Ev,_ZTv0_n32_N8S7471C13D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7471C15__8S7471C138S7471C12__7S7471C6[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S7471C13[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7471C13D1Ev,_ZTv0_n32_N8S7471C13D1Ev)();
extern void ABISELECT(_ZThn144_N8S7471C13D1Ev,_ZThn76_N8S7471C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7471C13D0Ev,_ZTv0_n32_N8S7471C13D0Ev)();
extern void ABISELECT(_ZThn144_N8S7471C13D0Ev,_ZThn76_N8S7471C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7471C11__A1__8S7471C138S7471C12__7S7471C6[] = {
  ABISELECT(-144,-76),
  ABISELECT(-152,-80),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(-144,-76),
  (VTBL_ENTRY)&(_ZTI8S7471C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C13D1Ev,_ZTv0_n32_N8S7471C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C13D0Ev,_ZTv0_n32_N8S7471C13D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7471C13D1Ev,_ZTv0_n44_N8S7471C13D1Ev)();
extern void ABISELECT(_ZThn160_N8S7471C13D1Ev,_ZThn84_N8S7471C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7471C13D0Ev,_ZTv0_n44_N8S7471C13D0Ev)();
extern void ABISELECT(_ZThn160_N8S7471C13D0Ev,_ZThn84_N8S7471C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7471C17__8S7471C138S7471C12__7S7471C6[] = {
  ABISELECT(-160,-84),
  ABISELECT(-48,-28),
  ABISELECT(-64,-36),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-168,-88),
  ABISELECT(-168,-88),
  ABISELECT(-48,-28),
  ABISELECT(-168,-88),
  ABISELECT(-160,-84),
  (VTBL_ENTRY)&(_ZTI8S7471C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7471C13D1Ev,_ZTv0_n44_N8S7471C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7471C13D0Ev,_ZTv0_n44_N8S7471C13D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7471C108S7471C18__A1__8S7471C138S7471C12__7S7471C6[] = {
  ABISELECT(-24,-12),
  ABISELECT(96,48),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7471C13[0]),
};
extern void _ZN7S7471C7D1Ev();
extern void _ZN7S7471C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7471C78S7471C12__A1__7S7471C6[] = {
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C7[0]),
  (VTBL_ENTRY)&_ZN7S7471C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7471C7D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7471C87S7471C78S7471C12__A3__7S7471C6[] = {
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C8[0]),
};
extern void ABISELECT(_ZThn8_N8S7471C12D1Ev,_ZThn4_N8S7471C12D1Ev)();
extern void ABISELECT(_ZThn8_N8S7471C12D0Ev,_ZThn4_N8S7471C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7471C13__8S7471C12__7S7471C6[] = {
  ABISELECT(160,84),
  ABISELECT(160,84),
  ABISELECT(-8,-4),
  ABISELECT(128,68),
  ABISELECT(96,48),
  ABISELECT(112,56),
  ABISELECT(-8,-4),
  ABISELECT(112,56),
  ABISELECT(112,56),
  ABISELECT(144,76),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7471C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7471C12D1Ev,_ZThn4_N8S7471C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7471C12D0Ev,_ZThn4_N8S7471C12D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7471C12D1Ev,_ZTv0_n44_N8S7471C12D1Ev)();
extern void ABISELECT(_ZThn120_N8S7471C12D1Ev,_ZThn60_N8S7471C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7471C12D0Ev,_ZTv0_n44_N8S7471C12D0Ev)();
extern void ABISELECT(_ZThn120_N8S7471C12D0Ev,_ZThn60_N8S7471C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7471C14__8S7471C12__7S7471C6[] = {
  ABISELECT(-120,-60),
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-120,-60),
  0,
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI8S7471C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7471C12D1Ev,_ZTv0_n44_N8S7471C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7471C12D0Ev,_ZTv0_n44_N8S7471C12D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7471C12D1Ev,_ZTv0_n32_N8S7471C12D1Ev)();
extern void ABISELECT(_ZThn104_N8S7471C12D1Ev,_ZThn52_N8S7471C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7471C12D0Ev,_ZTv0_n32_N8S7471C12D0Ev)();
extern void ABISELECT(_ZThn104_N8S7471C12D0Ev,_ZThn52_N8S7471C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7471C9__8S7471C12__7S7471C6[] = {
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S7471C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C12D1Ev,_ZTv0_n32_N8S7471C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C12D0Ev,_ZTv0_n32_N8S7471C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7471C15__8S7471C12__7S7471C6[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI8S7471C12[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7471C12D1Ev,_ZTv0_n32_N8S7471C12D1Ev)();
extern void ABISELECT(_ZThn152_N8S7471C12D1Ev,_ZThn80_N8S7471C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7471C12D0Ev,_ZTv0_n32_N8S7471C12D0Ev)();
extern void ABISELECT(_ZThn152_N8S7471C12D0Ev,_ZThn80_N8S7471C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7471C11__A1__8S7471C12__7S7471C6[] = {
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  (VTBL_ENTRY)&(_ZTI8S7471C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C12D1Ev,_ZTv0_n32_N8S7471C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C12D0Ev,_ZTv0_n32_N8S7471C12D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7471C12D1Ev,_ZTv0_n44_N8S7471C12D1Ev)();
extern void ABISELECT(_ZThn168_N8S7471C12D1Ev,_ZThn88_N8S7471C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7471C12D0Ev,_ZTv0_n44_N8S7471C12D0Ev)();
extern void ABISELECT(_ZThn168_N8S7471C12D0Ev,_ZThn88_N8S7471C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7471C17__8S7471C12__7S7471C6[] = {
  ABISELECT(-168,-88),
  ABISELECT(-48,-28),
  ABISELECT(-64,-36),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-168,-88),
  ABISELECT(-168,-88),
  ABISELECT(-48,-28),
  ABISELECT(-168,-88),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S7471C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7471C12D1Ev,_ZTv0_n44_N8S7471C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7471C12D0Ev,_ZTv0_n44_N8S7471C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7471C108S7471C188S7471C13__A1__8S7471C12__7S7471C6[] = {
  ABISELECT(-24,-12),
  ABISELECT(96,48),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7471C12[0]),
};
extern void ABISELECT(_ZThn40_N8S7471C12D1Ev,_ZThn20_N8S7471C12D1Ev)();
extern void ABISELECT(_ZThn40_N8S7471C12D0Ev,_ZThn20_N8S7471C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7471C7__8S7471C12__7S7471C6[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S7471C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S7471C12D1Ev,_ZThn20_N8S7471C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S7471C12D0Ev,_ZThn20_N8S7471C12D0Ev),
};
extern void _ZN8S7471C18D1Ev();
extern void _ZN8S7471C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7471C18__A1__7S7471C6[] = {
  ABISELECT(-48,-24),
  ABISELECT(72,36),
  ABISELECT(72,36),
  ABISELECT(104,56),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C18[0]),
  (VTBL_ENTRY)&_ZN8S7471C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7471C158S7471C18__A2__7S7471C6[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C15[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7471C28S7471C158S7471C18__A5__7S7471C6[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C108S7471C18__A2__7S7471C6[] = {
  ABISELECT(-64,-32),
  ABISELECT(56,28),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7471C2__8S7471C108S7471C18__A2__7S7471C6[] = {
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S7471C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7471C18D1Ev,_ZTv0_n32_N8S7471C18D1Ev)();
extern void ABISELECT(_ZThn104_N8S7471C18D1Ev,_ZThn56_N8S7471C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7471C18D0Ev,_ZTv0_n32_N8S7471C18D0Ev)();
extern void ABISELECT(_ZThn104_N8S7471C18D0Ev,_ZThn56_N8S7471C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7471C11__8S7471C18__A1__7S7471C6[] = {
  ABISELECT(-104,-56),
  ABISELECT(-152,-80),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S7471C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C18D1Ev,_ZTv0_n32_N8S7471C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C18D0Ev,_ZTv0_n32_N8S7471C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__8S7471C18__A1__7S7471C6[] = {
  ABISELECT(-120,-60),
  0,
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI8S7471C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__A__8S7471C18__A1__7S7471C6[] = {
  ABISELECT(-64,-32),
  ABISELECT(56,28),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7471C18[0]),
};
extern void _ZN8S7471C17D1Ev();
extern void _ZN8S7471C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7471C17__A__7S7471C6[] = {
  ABISELECT(40,20),
  ABISELECT(24,12),
  ABISELECT(56,32),
  ABISELECT(88,48),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(40,20),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C17[0]),
  (VTBL_ENTRY)&_ZN8S7471C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__8S7471C17__A__7S7471C6[] = {
  ABISELECT(-120,-60),
  0,
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S7471C17[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7471C8__8S7471C17__A__7S7471C6[] = {
  ABISELECT(-168,-88),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S7471C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C15__8S7471C17__A__7S7471C6[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S7471C17[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7471C17D1Ev,_ZTv0_n32_N8S7471C17D1Ev)();
extern void ABISELECT(_ZThn24_N8S7471C17D1Ev,_ZThn12_N8S7471C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7471C17D0Ev,_ZTv0_n32_N8S7471C17D0Ev)();
extern void ABISELECT(_ZThn24_N8S7471C17D0Ev,_ZThn12_N8S7471C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7471C9__8S7471C17__A__7S7471C6[] = {
  ABISELECT(-24,-12),
  ABISELECT(-104,-52),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7471C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C17D1Ev,_ZTv0_n32_N8S7471C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C17D0Ev,_ZTv0_n32_N8S7471C17D0Ev),
};
extern void _ZN7S7471C7D1Ev();
extern void _ZN7S7471C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7471C7__7S7471C6[] = {
  ABISELECT(-96,-48),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C7[0]),
  (VTBL_ENTRY)&_ZN7S7471C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7471C7D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7471C87S7471C7__7S7471C6[] = {
  ABISELECT(-96,-48),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C8[0]),
};
extern void _ZN7S7471C9D1Ev();
extern void _ZN7S7471C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7471C9__7S7471C6[] = {
  ABISELECT(-104,-52),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C9[0]),
  (VTBL_ENTRY)&_ZN7S7471C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7471C9D0Ev,
};
extern void _ZN8S7471C11D1Ev();
extern void _ZN8S7471C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7471C117S7471C9__7S7471C6[] = {
  ABISELECT(-104,-52),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C11[0]),
  (VTBL_ENTRY)&_ZN8S7471C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C11D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7471C28S7471C117S7471C9__A1__7S7471C6[] = {
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__8S7471C117S7471C9__7S7471C6[] = {
  ABISELECT(-120,-60),
  0,
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7471C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__7S7471C9__7S7471C6[] = {
  ABISELECT(-120,-60),
  0,
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7471C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__7S7471C6[] = {
  ABISELECT(-120,-60),
  0,
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7471C2__7S7471C6[] = {
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
extern void _ZN8S7471C14D1Ev();
extern void _ZN8S7471C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7471C14__7S7471C6[] = {
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-120,-60),
  0,
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C14[0]),
  (VTBL_ENTRY)&_ZN8S7471C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C14D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N8S7471C14D1Ev,_ZTv0_n32_N8S7471C14D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7471C14D0Ev,_ZTv0_n32_N8S7471C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7471C9__8S7471C14__7S7471C6[] = {
  ABISELECT(16,8),
  ABISELECT(-104,-52),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S7471C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C14D1Ev,_ZTv0_n32_N8S7471C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C14D0Ev,_ZTv0_n32_N8S7471C14D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7471C15__8S7471C14__7S7471C6[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S7471C14[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7471C14D1Ev,_ZTv0_n32_N8S7471C14D1Ev)();
extern void ABISELECT(_ZThn32_N8S7471C14D1Ev,_ZThn20_N8S7471C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7471C14D0Ev,_ZTv0_n32_N8S7471C14D0Ev)();
extern void ABISELECT(_ZThn32_N8S7471C14D0Ev,_ZThn20_N8S7471C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7471C11__A1__8S7471C14__7S7471C6[] = {
  ABISELECT(-32,-20),
  ABISELECT(-152,-80),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S7471C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C14D1Ev,_ZTv0_n32_N8S7471C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C14D0Ev,_ZTv0_n32_N8S7471C14D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7471C15__7S7471C6[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C15[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7471C28S7471C15__A2__7S7471C6[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
extern void _ZN8S7471C11D1Ev();
extern void _ZN8S7471C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7471C11__A1__7S7471C6[] = {
  ABISELECT(-152,-80),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C11[0]),
  (VTBL_ENTRY)&_ZN8S7471C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C11D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7471C28S7471C11__A3__7S7471C6[] = {
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__8S7471C11__A1__7S7471C6[] = {
  ABISELECT(-120,-60),
  0,
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI8S7471C11[0]),
};
extern void _ZN8S7471C17D1Ev();
extern void _ZN8S7471C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7471C17__7S7471C6[] = {
  ABISELECT(-48,-28),
  ABISELECT(-64,-36),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-168,-88),
  ABISELECT(-168,-88),
  ABISELECT(-48,-28),
  ABISELECT(-168,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C17[0]),
  (VTBL_ENTRY)&_ZN8S7471C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__8S7471C17__7S7471C6[] = {
  ABISELECT(-120,-60),
  0,
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S7471C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C15__8S7471C17__7S7471C6[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7471C17[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7471C17D1Ev,_ZTv0_n32_N8S7471C17D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7471C17D0Ev,_ZTv0_n32_N8S7471C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7471C9__8S7471C17__7S7471C6[] = {
  ABISELECT(64,36),
  ABISELECT(-104,-52),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S7471C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C17D1Ev,_ZTv0_n32_N8S7471C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C17D0Ev,_ZTv0_n32_N8S7471C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7471C8__A2__7S7471C6[] = {
  ABISELECT(-168,-88),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C8[0]),
};
static  VTT_ENTRY vtt_S7471C6[] = {
  {&(_ZTV7S7471C6[15]),  15,128},
  {&(_tg__ZTV8S7471C12__7S7471C6[14]),  14,16},
  {&(_tg__ZTV7S7471C88S7471C12__A1__7S7471C6[3]),  3,3},
  {&(_tg__ZTV8S7471C138S7471C12__7S7471C6[14]),  14,16},
  {&(_tg__ZTV8S7471C188S7471C138S7471C12__7S7471C6[8]),  8,10},
  {&(_tg__ZTV8S7471C158S7471C188S7471C138S7471C12__A1__7S7471C6[4]),  4,4},
  {&(_tg__ZTV7S7471C28S7471C158S7471C188S7471C138S7471C12__A4__7S7471C6[4]),  4,4},
  {&(_tg__ZTV8S7471C108S7471C188S7471C138S7471C12__A1__7S7471C6[6]),  6,6},
  {&(_tg__ZTV7S7471C2__8S7471C108S7471C188S7471C138S7471C12__A1__7S7471C6[4]),  4,4},
  {&(_tg__ZTV8S7471C11__8S7471C188S7471C138S7471C12__7S7471C6[8]),  8,10},
  {&(_tg__ZTV8S7471C10__8S7471C188S7471C138S7471C12__7S7471C6[6]),  6,6},
  {&(_tg__ZTV8S7471C10__8S7471C188S7471C138S7471C12__7S7471C6[6]),  6,6},
  {&(_tg__ZTV8S7471C10__A__8S7471C188S7471C138S7471C12__7S7471C6[6]),  6,6},
  {&(_tg__ZTV8S7471C14__8S7471C138S7471C12__7S7471C6[11]),  11,13},
  {&(_tg__ZTV7S7471C9__8S7471C138S7471C12__7S7471C6[8]),  8,10},
  {&(_tg__ZTV8S7471C14__8S7471C138S7471C12__7S7471C6[11]),  11,13},
  {&(_tg__ZTV8S7471C14__8S7471C138S7471C12__7S7471C6[11]),  11,13},
  {&(_tg__ZTV8S7471C15__8S7471C138S7471C12__7S7471C6[4]),  4,4},
  {&(_tg__ZTV8S7471C11__A1__8S7471C138S7471C12__7S7471C6[8]),  8,10},
  {&(_tg__ZTV8S7471C17__8S7471C138S7471C12__7S7471C6[11]),  11,13},
  {&(_tg__ZTV8S7471C17__8S7471C138S7471C12__7S7471C6[11]),  11,13},
  {&(_tg__ZTV8S7471C108S7471C18__A1__8S7471C138S7471C12__7S7471C6[6]),  6,6},
  {&(_tg__ZTV7S7471C78S7471C12__A1__7S7471C6[3]),  3,5},
  {&(_tg__ZTV7S7471C87S7471C78S7471C12__A3__7S7471C6[3]),  3,3},
  {&(_tg__ZTV8S7471C13__8S7471C12__7S7471C6[14]),  14,16},
  {&(_tg__ZTV8S7471C14__8S7471C12__7S7471C6[11]),  11,13},
  {&(_tg__ZTV7S7471C9__8S7471C12__7S7471C6[8]),  8,10},
  {&(_tg__ZTV8S7471C14__8S7471C12__7S7471C6[11]),  11,13},
  {&(_tg__ZTV8S7471C14__8S7471C12__7S7471C6[11]),  11,13},
  {&(_tg__ZTV8S7471C15__8S7471C12__7S7471C6[4]),  4,4},
  {&(_tg__ZTV8S7471C11__A1__8S7471C12__7S7471C6[8]),  8,10},
  {&(_tg__ZTV8S7471C17__8S7471C12__7S7471C6[11]),  11,13},
  {&(_tg__ZTV8S7471C17__8S7471C12__7S7471C6[11]),  11,13},
  {&(_tg__ZTV8S7471C108S7471C188S7471C13__A1__8S7471C12__7S7471C6[6]),  6,6},
  {&(_tg__ZTV7S7471C7__8S7471C12__7S7471C6[3]),  3,5},
  {&(_tg__ZTV8S7471C18__A1__7S7471C6[8]),  8,10},
  {&(_tg__ZTV8S7471C158S7471C18__A2__7S7471C6[4]),  4,4},
  {&(_tg__ZTV7S7471C28S7471C158S7471C18__A5__7S7471C6[4]),  4,4},
  {&(_tg__ZTV8S7471C108S7471C18__A2__7S7471C6[6]),  6,6},
  {&(_tg__ZTV7S7471C2__8S7471C108S7471C18__A2__7S7471C6[4]),  4,4},
  {&(_tg__ZTV8S7471C11__8S7471C18__A1__7S7471C6[8]),  8,10},
  {&(_tg__ZTV8S7471C10__8S7471C18__A1__7S7471C6[6]),  6,6},
  {&(_tg__ZTV8S7471C10__8S7471C18__A1__7S7471C6[6]),  6,6},
  {&(_tg__ZTV8S7471C10__A__8S7471C18__A1__7S7471C6[6]),  6,6},
  {&(_tg__ZTV8S7471C17__A__7S7471C6[10]),  10,12},
  {&(_tg__ZTV8S7471C10__8S7471C17__A__7S7471C6[6]),  6,6},
  {&(_tg__ZTV7S7471C8__8S7471C17__A__7S7471C6[3]),  3,3},
  {&(_tg__ZTV8S7471C15__8S7471C17__A__7S7471C6[4]),  4,4},
  {&(_tg__ZTV7S7471C9__8S7471C17__A__7S7471C6[8]),  8,10},
  {&(_tg__ZTV8S7471C10__8S7471C17__A__7S7471C6[6]),  6,6},
  {&(_ZTV7S7471C6[76]),  76,128},
  {&(_ZTV7S7471C6[86]),  86,128},
  {&(_ZTV7S7471C6[99]),  99,128},
  {&(_ZTV7S7471C6[99]),  99,128},
  {&(_ZTV7S7471C6[31]),  31,128},
  {&(_ZTV7S7471C6[99]),  99,128},
  {&(_ZTV7S7471C6[105]),  105,128},
  {&(_ZTV7S7471C6[113]),  113,128},
  {&(_ZTV7S7471C6[126]),  126,128},
  {&(_ZTV7S7471C6[126]),  126,128},
  {&(_ZTV7S7471C6[39]),  39,128},
  {&(_ZTV7S7471C6[42]),  42,128},
  {&(_ZTV7S7471C6[52]),  52,128},
  {&(_ZTV7S7471C6[60]),  60,128},
  {&(_ZTV7S7471C6[70]),  70,128},
  {&(_tg__ZTV7S7471C7__7S7471C6[3]),  3,5},
  {&(_tg__ZTV7S7471C87S7471C7__7S7471C6[3]),  3,3},
  {&(_tg__ZTV7S7471C9__7S7471C6[7]),  7,9},
  {&(_tg__ZTV8S7471C117S7471C9__7S7471C6[7]),  7,9},
  {&(_tg__ZTV7S7471C28S7471C117S7471C9__A1__7S7471C6[4]),  4,4},
  {&(_tg__ZTV8S7471C10__8S7471C117S7471C9__7S7471C6[6]),  6,6},
  {&(_tg__ZTV8S7471C10__8S7471C117S7471C9__7S7471C6[6]),  6,6},
  {&(_tg__ZTV8S7471C10__7S7471C9__7S7471C6[6]),  6,6},
  {&(_tg__ZTV8S7471C10__7S7471C9__7S7471C6[6]),  6,6},
  {&(_tg__ZTV8S7471C10__7S7471C6[6]),  6,6},
  {&(_tg__ZTV8S7471C10__7S7471C6[6]),  6,6},
  {&(_tg__ZTV7S7471C2__7S7471C6[4]),  4,4},
  {&(_tg__ZTV8S7471C14__7S7471C6[10]),  10,12},
  {&(_tg__ZTV7S7471C9__8S7471C14__7S7471C6[8]),  8,10},
  {&(_tg__ZTV8S7471C14__7S7471C6[10]),  10,12},
  {&(_tg__ZTV8S7471C14__7S7471C6[10]),  10,12},
  {&(_tg__ZTV8S7471C15__8S7471C14__7S7471C6[4]),  4,4},
  {&(_tg__ZTV8S7471C11__A1__8S7471C14__7S7471C6[8]),  8,10},
  {&(_tg__ZTV8S7471C15__7S7471C6[4]),  4,4},
  {&(_tg__ZTV7S7471C28S7471C15__A2__7S7471C6[4]),  4,4},
  {&(_tg__ZTV8S7471C11__A1__7S7471C6[7]),  7,9},
  {&(_tg__ZTV7S7471C28S7471C11__A3__7S7471C6[4]),  4,4},
  {&(_tg__ZTV8S7471C10__8S7471C11__A1__7S7471C6[6]),  6,6},
  {&(_tg__ZTV8S7471C10__8S7471C11__A1__7S7471C6[6]),  6,6},
  {&(_tg__ZTV8S7471C17__7S7471C6[10]),  10,12},
  {&(_tg__ZTV8S7471C10__8S7471C17__7S7471C6[6]),  6,6},
  {&(_tg__ZTV8S7471C17__7S7471C6[10]),  10,12},
  {&(_tg__ZTV8S7471C15__8S7471C17__7S7471C6[4]),  4,4},
  {&(_tg__ZTV7S7471C9__8S7471C17__7S7471C6[8]),  8,10},
  {&(_tg__ZTV8S7471C10__8S7471C17__7S7471C6[6]),  6,6},
  {&(_tg__ZTV7S7471C8__A2__7S7471C6[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7471C6[];
extern  VTBL_ENTRY _ZTV7S7471C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C6[];
static VTBL_ENTRY alt_thunk_names140[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C14D0Ev,_ZTv0_n32_N8S7471C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7471C14D0Ev,_ZThn20_N8S7471C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C14D1Ev,_ZTv0_n32_N8S7471C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7471C14D1Ev,_ZThn20_N8S7471C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C17D0Ev,_ZTv0_n32_N8S7471C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7471C17D0Ev,_ZThn12_N8S7471C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C17D1Ev,_ZTv0_n32_N8S7471C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7471C17D1Ev,_ZThn12_N8S7471C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C12D0Ev,_ZTv0_n32_N8S7471C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S7471C12D0Ev,_ZThn80_N8S7471C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7471C12D0Ev,_ZThn52_N8S7471C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C12D1Ev,_ZTv0_n32_N8S7471C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S7471C12D1Ev,_ZThn80_N8S7471C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7471C12D1Ev,_ZThn52_N8S7471C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7471C12D0Ev,_ZTv0_n44_N8S7471C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S7471C12D0Ev,_ZThn88_N8S7471C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7471C12D0Ev,_ZThn60_N8S7471C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7471C12D1Ev,_ZTv0_n44_N8S7471C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S7471C12D1Ev,_ZThn88_N8S7471C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7471C12D1Ev,_ZThn60_N8S7471C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C13D0Ev,_ZTv0_n32_N8S7471C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7471C13D0Ev,_ZThn76_N8S7471C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7471C13D0Ev,_ZThn48_N8S7471C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C13D1Ev,_ZTv0_n32_N8S7471C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7471C13D1Ev,_ZThn76_N8S7471C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7471C13D1Ev,_ZThn48_N8S7471C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7471C13D0Ev,_ZTv0_n44_N8S7471C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7471C13D0Ev,_ZThn84_N8S7471C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7471C13D0Ev,_ZThn56_N8S7471C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7471C13D1Ev,_ZTv0_n44_N8S7471C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7471C13D1Ev,_ZThn84_N8S7471C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7471C13D1Ev,_ZThn56_N8S7471C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C18D0Ev,_ZTv0_n32_N8S7471C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7471C18D0Ev,_ZThn56_N8S7471C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7471C18D0Ev,_ZThn76_N8S7471C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C18D1Ev,_ZTv0_n32_N8S7471C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7471C18D1Ev,_ZThn56_N8S7471C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7471C18D1Ev,_ZThn76_N8S7471C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7471C6D0Ev,_ZTv0_n44_N7S7471C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S7471C6D0Ev,_ZThn88_N7S7471C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7471C6D0Ev,_ZThn60_N7S7471C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7471C6D1Ev,_ZTv0_n44_N7S7471C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S7471C6D1Ev,_ZThn88_N7S7471C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7471C6D1Ev,_ZThn60_N7S7471C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7471C6D0Ev,_ZTv0_n32_N7S7471C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S7471C6D0Ev,_ZThn80_N7S7471C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7471C6D0Ev,_ZThn52_N7S7471C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7471C6D1Ev,_ZTv0_n32_N7S7471C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S7471C6D1Ev,_ZThn80_N7S7471C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7471C6D1Ev,_ZThn52_N7S7471C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7471C6D0Ev,_ZTv0_n16_N7S7471C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7471C6D0Ev,_ZThn48_N7S7471C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7471C6D1Ev,_ZTv0_n16_N7S7471C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7471C6D1Ev,_ZThn48_N7S7471C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7471C6 = {  "S7471C6", // class name
  bases_S7471C6, 56,
  &(vtc_S7471C6[0]), // expected_vtbl_contents
  &(vtt_S7471C6[0]), // expected_vtt_contents
  ABISELECT(184,96), // object size
  NSPAIRA(_ZTI7S7471C6),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S7471C6),128, //virtual function table var
  15, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7471C6),96, //virtual table table var
  28, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names140,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7471C1  : S7471C2 , S7471C6 {
  ~S7471C1(); // tgen
  S7471C1(); // tgen
};
//SIG(1 S7471C1) C1{ BC2{ VBC3{ m} BC4{ m} VBC5{ m}} BC6{ VBC7{ BC4 BC8{ VBC4} vd} VBC9{ VBC3 VBC4 VBC10{ BC3 VBC2 VBC4} BC5 BC11{ BC4 VBC3 VBC5 BC2 VBC10 vd} vd} BC12{ BC8 VBC5 BC13{ VBC14{ VBC9 VBC15{ BC5 BC4 BC2 Fi} VBC11 vd Fi[2]} VBC16{ m} VBC17{ VBC2 VBC8 VBC15 BC5 VBC9 vd Fi} BC18{ VBC11 BC15 BC10 BC5 vd} vd} BC7 vd} BC18 BC17 vd}}


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

static void Test_S7471C1()
{
  extern Class_Descriptor cd_S7471C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(26,27)];
    init_test(&cd_S7471C1, buf);
    S7471C1 *dp, &lv = *(dp=new (buf) S7471C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(200,104), "sizeof(S7471C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7471C1)");
    /*is_ambiguous_... S7471C1::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C2*), 0, "S7471C1");
    /*is_ambiguous_... S7471C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C9*), 0, "S7471C1");
    /*is_ambiguous_... S7471C1::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C2*), 0, "S7471C1");
    /*is_ambiguous_... S7471C11::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C11*)(S7471C9*), 0, "S7471C1");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C2*)(S7471C11*)(S7471C9*), 0, "S7471C1");
    /*is_ambiguous_... S7471C1::S7471C15 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C2*)(S7471C15*), 0, "S7471C1");
    /*is_ambiguous_... S7471C1::S7471C11 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C11*), 0, "S7471C1");
    /*is_ambiguous_... S7471C1::S7471C11 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C2*)(S7471C11*), 0, "S7471C1");
    check_base_class_offset(lv, (S7856C24*)(S7471C2*)(S7471C15*)(S7471C18*)(S7471C13*)(S7471C12*)(S7471C6*), 0, "S7471C1");
    /*is_ambiguous_... S7471C6::S7471C18 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C2*)(S7471C15*)(S7471C18*)(S7471C6*), 0, "S7471C1");
    /*is_ambiguous_... S7471C1::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C2*), 0, "S7471C1");
    /*is_ambiguous_... S7471C1::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C2*), 0, "S7471C1");
    /*is_ambiguous_... S7471C1::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C2*), 0, "S7471C1");
    check_base_class_offset(lv, (S7856C12*)(S7471C11*)(S7471C9*), 0, "S7471C1");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C2*)(S7471C11*)(S7471C9*), 0, "S7471C1");
    /*is_ambiguous_... S7471C12::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C12*)(S7471C6*), 0, "S7471C1");
    /*is_ambiguous_... S7471C1::S7471C15 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C2*)(S7471C15*), 0, "S7471C1");
    /*is_ambiguous_... S7471C1::S7471C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C11*), 0, "S7471C1");
    /*is_ambiguous_... S7471C1::S7471C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C2*)(S7471C11*), 0, "S7471C1");
    check_base_class_offset(lv, (S7856C12*)(S7471C2*)(S7471C15*)(S7471C18*)(S7471C13*)(S7471C12*)(S7471C6*), 0, "S7471C1");
    /*is_ambiguous_... S7471C6::S7471C18 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C2*)(S7471C15*)(S7471C18*)(S7471C6*), 0, "S7471C1");
    /*is_ambiguous_... S7471C1::S7471C2 */ AMB_check_base_class_offset(lv, (S7471C2*), 0, "S7471C1");
    /*is_ambiguous_... S7471C1::S7471C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C7*), ABISELECT(104,52), "S7471C1");
    /*is_ambiguous_... S7471C1::S7471C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C8*)(S7471C7*), ABISELECT(112,56), "S7471C1");
    /*is_ambiguous_... S7471C9::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C9*), ABISELECT(112,56), "S7471C1");
    /*is_ambiguous_... S7471C1::S7471C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C10*), ABISELECT(112,56), "S7471C1");
    /*is_ambiguous_... S7471C12::S7471C8 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C8*)(S7471C12*)(S7471C6*), ABISELECT(112,56), "S7471C1");
    /*is_ambiguous_... S7471C1::S7471C8 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C8*), ABISELECT(112,56), "S7471C1");
    /*is_ambiguous_... S7471C18::S7471C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C10*)(S7471C18*)(S7471C13*)(S7471C12*)(S7471C6*), ABISELECT(112,56), "S7471C1");
    check_base_class_offset(lv, (S7856C15*)(S7471C8*)(S7471C7*)(S7471C12*)(S7471C6*), ABISELECT(112,56), "S7471C1");
    /*is_ambiguous_... S7471C6::S7471C18 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C10*)(S7471C18*)(S7471C6*), ABISELECT(112,56), "S7471C1");
    /*is_ambiguous_... S7471C1::S7471C7 */ AMB_check_base_class_offset(lv, (S7471C8*)(S7471C7*), ABISELECT(104,52), "S7471C1");
    /*is_ambiguous_... S7471C6::S7471C7 */ AMB_check_base_class_offset(lv, (S7471C7*)(S7471C6*), ABISELECT(104,52), "S7471C1");
    /*is_ambiguous_... S7471C1::S7471C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C10*), ABISELECT(136,68), "S7471C1");
    /*is_ambiguous_... S7471C1::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C2*), ABISELECT(136,68), "S7471C1");
    /*is_ambiguous_... S7471C1::S7471C10 */ AMB_check_base_class_offset(lv, (S7471C2*)(S7471C10*), ABISELECT(136,68), "S7471C1");
    /*is_ambiguous_... S7471C1::S7471C17 */ AMB_check_base_class_offset(lv, (S7471C2*)(S7471C17*), ABISELECT(136,68), "S7471C1");
    /*is_ambiguous_... S7471C18::S7471C10 */ AMB_check_base_class_offset(lv, (S7471C2*)(S7471C10*)(S7471C18*)(S7471C13*)(S7471C12*)(S7471C6*), ABISELECT(136,68), "S7471C1");
    /*is_ambiguous_... S7471C6::S7471C18 */ AMB_check_base_class_offset(lv, (S7471C2*)(S7471C10*)(S7471C18*)(S7471C6*), ABISELECT(136,68), "S7471C1");
    /*is_ambiguous_... S7471C6::S7471C17 */ AMB_check_base_class_offset(lv, (S7471C2*)(S7471C17*)(S7471C6*), ABISELECT(136,68), "S7471C1");
    check_base_class_offset(lv, (S7471C10*)(S7471C9*), ABISELECT(136,68), "S7471C1");
    check_base_class_offset(lv, (S7471C10*)(S7471C11*)(S7471C9*), ABISELECT(136,68), "S7471C1");
    /*is_ambiguous_... S7471C1::S7471C11 */ AMB_check_base_class_offset(lv, (S7471C10*)(S7471C11*), ABISELECT(136,68), "S7471C1");
    /*is_ambiguous_... S7471C9::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C9*), ABISELECT(120,60), "S7471C1");
    /*is_ambiguous_... S7471C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C11*)(S7471C9*), ABISELECT(128,64), "S7471C1");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C2*)(S7471C11*)(S7471C9*), ABISELECT(120,60), "S7471C1");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7471C2*)(S7471C11*)(S7471C9*), ABISELECT(120,60), "S7471C1");
    check_base_class_offset(lv, (S7471C11*)(S7471C9*), ABISELECT(120,60), "S7471C1");
    check_base_class_offset(lv, (S7471C9*)(S7471C6*), ABISELECT(120,60), "S7471C1");
    check_base_class_offset(lv, (S7471C9*)(S7471C14*), ABISELECT(120,60), "S7471C1");
    /*is_ambiguous_... S7471C1::S7471C17 */ AMB_check_base_class_offset(lv, (S7471C9*)(S7471C17*), ABISELECT(120,60), "S7471C1");
    /*is_ambiguous_... S7471C6::S7471C17 */ AMB_check_base_class_offset(lv, (S7471C9*)(S7471C17*)(S7471C6*), ABISELECT(120,60), "S7471C1");
    /*is_ambiguous_... S7471C12::S7471C8 */ AMB_check_base_class_offset(lv, (S7471C8*)(S7471C12*)(S7471C6*), ABISELECT(8,4), "S7471C1");
    /*is_ambiguous_... S7471C1::S7471C15 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C15*), ABISELECT(152,80), "S7471C1");
    /*is_ambiguous_... S7471C1::S7471C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C15*), ABISELECT(160,84), "S7471C1");
    /*is_ambiguous_... S7471C1::S7471C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C2*)(S7471C15*), ABISELECT(152,80), "S7471C1");
    /*is_ambiguous_... S7471C1::S7471C15 */ AMB_check_base_class_offset(lv, (S7471C2*)(S7471C15*), ABISELECT(152,80), "S7471C1");
    check_base_class_offset(lv, (S7471C15*)(S7471C14*), ABISELECT(152,80), "S7471C1");
    /*is_ambiguous_... S7471C1::S7471C17 */ AMB_check_base_class_offset(lv, (S7471C15*)(S7471C17*), ABISELECT(152,80), "S7471C1");
    /*is_ambiguous_... S7471C6::S7471C17 */ AMB_check_base_class_offset(lv, (S7471C15*)(S7471C17*)(S7471C6*), ABISELECT(152,80), "S7471C1");
    /*is_ambiguous_... S7471C1::S7471C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C11*), ABISELECT(176,92), "S7471C1");
    /*is_ambiguous_... S7471C1::S7471C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C2*)(S7471C11*), ABISELECT(168,88), "S7471C1");
    /*is_ambiguous_... S7471C1::S7471C11 */ AMB_check_base_class_offset(lv, (S7471C2*)(S7471C11*), ABISELECT(168,88), "S7471C1");
    /*is_ambiguous_... S7471C14::S7471C11 */ AMB_check_base_class_offset(lv, (S7471C11*)(S7471C14*), ABISELECT(168,88), "S7471C1");
    check_base_class_offset(lv, (S7471C11*)(S7471C18*)(S7471C13*)(S7471C12*)(S7471C6*), ABISELECT(168,88), "S7471C1");
    /*is_ambiguous_... S7471C6::S7471C18 */ AMB_check_base_class_offset(lv, (S7471C11*)(S7471C18*)(S7471C6*), ABISELECT(168,88), "S7471C1");
    check_base_class_offset(lv, (S7471C14*)(S7471C13*)(S7471C12*)(S7471C6*), ABISELECT(136,68), "S7471C1");
    check_base_class_offset(lv, (S7856C9_nt*)(S7471C13*)(S7471C12*)(S7471C6*), 0, "S7471C1");
    /*is_ambiguous_... S7471C1::S7471C17 */ AMB_check_base_class_offset(lv, (S7471C8*)(S7471C17*), ABISELECT(184,96), "S7471C1");
    /*is_ambiguous_... S7471C6::S7471C17 */ AMB_check_base_class_offset(lv, (S7471C8*)(S7471C17*)(S7471C6*), ABISELECT(184,96), "S7471C1");
    /*is_ambiguous_... S7471C1::S7471C17 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C17*), ABISELECT(184,96), "S7471C1");
    check_base_class_offset(lv, (S7471C17*)(S7471C13*)(S7471C12*)(S7471C6*), ABISELECT(184,96), "S7471C1");
    /*is_ambiguous_... S7471C15::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C15*)(S7471C18*)(S7471C13*)(S7471C12*)(S7471C6*), ABISELECT(16,8), "S7471C1");
    /*is_ambiguous_... S7471C15::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C15*)(S7471C18*)(S7471C13*)(S7471C12*)(S7471C6*), ABISELECT(24,12), "S7471C1");
    check_base_class_offset(lv, (S7856C15*)(S7471C2*)(S7471C15*)(S7471C18*)(S7471C13*)(S7471C12*)(S7471C6*), ABISELECT(16,8), "S7471C1");
    check_base_class_offset(lv, (S7471C2*)(S7471C15*)(S7471C18*)(S7471C13*)(S7471C12*)(S7471C6*), ABISELECT(16,8), "S7471C1");
    check_base_class_offset(lv, (S7471C15*)(S7471C18*)(S7471C13*)(S7471C12*)(S7471C6*), ABISELECT(16,8), "S7471C1");
    /*is_ambiguous_... S7471C18::S7471C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C10*)(S7471C18*)(S7471C13*)(S7471C12*)(S7471C6*), ABISELECT(32,16), "S7471C1");
    /*is_ambiguous_... S7471C18::S7471C10 */ AMB_check_base_class_offset(lv, (S7471C10*)(S7471C18*)(S7471C13*)(S7471C12*)(S7471C6*), ABISELECT(32,16), "S7471C1");
    /*is_ambiguous_... S7471C18::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C18*)(S7471C13*)(S7471C12*)(S7471C6*), ABISELECT(40,20), "S7471C1");
    check_base_class_offset(lv, (S7471C18*)(S7471C13*)(S7471C12*)(S7471C6*), ABISELECT(16,8), "S7471C1");
    check_base_class_offset(lv, (S7471C13*)(S7471C12*)(S7471C6*), ABISELECT(16,8), "S7471C1");
    /*is_ambiguous_... S7471C7::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C7*)(S7471C12*)(S7471C6*), ABISELECT(48,24), "S7471C1");
    check_base_class_offset(lv, (S7471C8*)(S7471C7*)(S7471C12*)(S7471C6*), ABISELECT(48,24), "S7471C1");
    check_base_class_offset(lv, (S7471C7*)(S7471C12*)(S7471C6*), ABISELECT(48,24), "S7471C1");
    check_base_class_offset(lv, (S7471C12*)(S7471C6*), ABISELECT(8,4), "S7471C1");
    /*is_ambiguous_... S7471C6::S7471C18 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C15*)(S7471C18*)(S7471C6*), ABISELECT(56,28), "S7471C1");
    /*is_ambiguous_... S7471C6::S7471C18 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C15*)(S7471C18*)(S7471C6*), ABISELECT(64,32), "S7471C1");
    /*is_ambiguous_... S7471C6::S7471C18 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C2*)(S7471C15*)(S7471C18*)(S7471C6*), ABISELECT(56,28), "S7471C1");
    /*is_ambiguous_... S7471C6::S7471C18 */ AMB_check_base_class_offset(lv, (S7471C2*)(S7471C15*)(S7471C18*)(S7471C6*), ABISELECT(56,28), "S7471C1");
    /*is_ambiguous_... S7471C6::S7471C18 */ AMB_check_base_class_offset(lv, (S7471C15*)(S7471C18*)(S7471C6*), ABISELECT(56,28), "S7471C1");
    /*is_ambiguous_... S7471C6::S7471C18 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C10*)(S7471C18*)(S7471C6*), ABISELECT(72,36), "S7471C1");
    /*is_ambiguous_... S7471C6::S7471C18 */ AMB_check_base_class_offset(lv, (S7471C10*)(S7471C18*)(S7471C6*), ABISELECT(72,36), "S7471C1");
    /*is_ambiguous_... S7471C6::S7471C18 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C18*)(S7471C6*), ABISELECT(80,40), "S7471C1");
    /*is_ambiguous_... S7471C6::S7471C18 */ AMB_check_base_class_offset(lv, (S7471C18*)(S7471C6*), ABISELECT(56,28), "S7471C1");
    /*is_ambiguous_... S7471C6::S7471C17 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C17*)(S7471C6*), ABISELECT(88,44), "S7471C1");
    /*is_ambiguous_... S7471C6::S7471C17 */ AMB_check_base_class_offset(lv, (S7471C17*)(S7471C6*), ABISELECT(88,44), "S7471C1");
    check_base_class_offset(lv, (S7471C6*), ABISELECT(8,4), "S7471C1");
    test_class_info(&lv, &cd_S7471C1);
    dp->~S7471C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7471C1(Test_S7471C1, "S7471C1", ABISELECT(200,104));

#else // __cplusplus

extern void _ZN7S7471C1C1Ev();
extern void _ZN7S7471C1D1Ev();
Name_Map name_map_S7471C1[] = {
  NSPAIR(_ZN7S7471C1C1Ev),
  NSPAIR(_ZN7S7471C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C8;
extern VTBL_ENTRY _ZTI7S7471C8[];
extern  VTBL_ENTRY _ZTV7S7471C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C8[];
extern Class_Descriptor cd_S7471C7;
extern VTBL_ENTRY _ZTI7S7471C7[];
extern  VTBL_ENTRY _ZTV7S7471C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C7[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
extern Class_Descriptor cd_S7471C10;
extern VTBL_ENTRY _ZTI8S7471C10[];
extern  VTBL_ENTRY _ZTV8S7471C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
extern Class_Descriptor cd_S7471C11;
extern VTBL_ENTRY _ZTI8S7471C11[];
extern  VTBL_ENTRY _ZTV8S7471C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C11[];
extern Class_Descriptor cd_S7471C9;
extern VTBL_ENTRY _ZTI7S7471C9[];
extern  VTBL_ENTRY _ZTV7S7471C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C9[];
extern Class_Descriptor cd_S7471C8;
extern VTBL_ENTRY _ZTI7S7471C8[];
extern  VTBL_ENTRY _ZTV7S7471C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C8[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
extern Class_Descriptor cd_S7471C15;
extern VTBL_ENTRY _ZTI8S7471C15[];
extern  VTBL_ENTRY _ZTV8S7471C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
extern Class_Descriptor cd_S7471C11;
extern VTBL_ENTRY _ZTI8S7471C11[];
extern  VTBL_ENTRY _ZTV8S7471C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C11[];
extern Class_Descriptor cd_S7471C14;
extern VTBL_ENTRY _ZTI8S7471C14[];
extern  VTBL_ENTRY _ZTV8S7471C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C14[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7471C8;
extern VTBL_ENTRY _ZTI7S7471C8[];
extern  VTBL_ENTRY _ZTV7S7471C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C8[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7471C17;
extern VTBL_ENTRY _ZTI8S7471C17[];
extern  VTBL_ENTRY _ZTV8S7471C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C17[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
extern Class_Descriptor cd_S7471C15;
extern VTBL_ENTRY _ZTI8S7471C15[];
extern  VTBL_ENTRY _ZTV8S7471C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7471C10;
extern VTBL_ENTRY _ZTI8S7471C10[];
extern  VTBL_ENTRY _ZTV8S7471C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7471C18;
extern VTBL_ENTRY _ZTI8S7471C18[];
extern  VTBL_ENTRY _ZTV8S7471C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C18[];
extern Class_Descriptor cd_S7471C13;
extern VTBL_ENTRY _ZTI8S7471C13[];
extern  VTBL_ENTRY _ZTV8S7471C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C13[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C8;
extern VTBL_ENTRY _ZTI7S7471C8[];
extern  VTBL_ENTRY _ZTV7S7471C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C8[];
extern Class_Descriptor cd_S7471C7;
extern VTBL_ENTRY _ZTI7S7471C7[];
extern  VTBL_ENTRY _ZTV7S7471C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C7[];
extern Class_Descriptor cd_S7471C12;
extern VTBL_ENTRY _ZTI8S7471C12[];
extern  VTBL_ENTRY _ZTV8S7471C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
extern Class_Descriptor cd_S7471C15;
extern VTBL_ENTRY _ZTI8S7471C15[];
extern  VTBL_ENTRY _ZTV8S7471C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7471C10;
extern VTBL_ENTRY _ZTI8S7471C10[];
extern  VTBL_ENTRY _ZTV8S7471C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7471C18;
extern VTBL_ENTRY _ZTI8S7471C18[];
extern  VTBL_ENTRY _ZTV8S7471C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C18[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7471C17;
extern VTBL_ENTRY _ZTI8S7471C17[];
extern  VTBL_ENTRY _ZTV8S7471C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C17[];
extern Class_Descriptor cd_S7471C6;
extern VTBL_ENTRY _ZTI7S7471C6[];
extern  VTBL_ENTRY _ZTV7S7471C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C6[];
static Base_Class bases_S7471C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7471C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C15,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(112,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7471C8,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    85, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7471C7,    ABISELECT(104,52), //bcp->offset
    89, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    69, //bcp->index_in_construction_vtbl_array
    84, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    58, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(136,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(136,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7471C2,    ABISELECT(136,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    72, //bcp->index_in_construction_vtbl_array
    95, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7471C10,    ABISELECT(136,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    71, //bcp->index_in_construction_vtbl_array
    93, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(128,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7471C2,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    88, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7471C11,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    87, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7471C9,    ABISELECT(120,60), //bcp->offset
    95, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    70, //bcp->index_in_construction_vtbl_array
    86, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S7471C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(152,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(160,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(152,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7471C2,    ABISELECT(152,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    103, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7471C15,    ABISELECT(152,80), //bcp->offset
    118, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    75, //bcp->index_in_construction_vtbl_array
    102, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(176,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(168,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7471C2,    ABISELECT(168,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    105, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S7471C11,    ABISELECT(168,88), //bcp->offset
    122, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    76, //bcp->index_in_construction_vtbl_array
    104, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S7471C14,    ABISELECT(136,68), //bcp->offset
    105, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    74, //bcp->index_in_construction_vtbl_array
    96, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S7471C8,    ABISELECT(184,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    78, //bcp->index_in_construction_vtbl_array
    114, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(184,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7471C17,    ABISELECT(184,96), //bcp->offset
    132, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    77, //bcp->index_in_construction_vtbl_array
    108, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S7471C2,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S7471C15,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S7471C10,    ABISELECT(32,16), //bcp->offset
    50, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    79, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S7471C18,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S7471C13,    ABISELECT(16,8), //bcp->offset
    34, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    73, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S7471C8,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S7471C7,    ABISELECT(48,24), //bcp->offset
    56, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    80, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S7471C12,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S7471C2,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S7471C15,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(72,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    53, //immediately_derived
  0, 0},
  {&cd_S7471C10,    ABISELECT(72,36), //bcp->offset
    71, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    82, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S7471C18,    ABISELECT(56,28), //bcp->offset
    61, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    81, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(88,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S7471C17,    ABISELECT(88,44), //bcp->offset
    77, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    83, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S7471C6,    ABISELECT(8,4), //bcp->offset
    17, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    68, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7471C1[];
extern void _ZN7S7471C1D1Ev();
extern void _ZN7S7471C1D0Ev();
extern void ABISELECT(_ZThn8_N7S7471C1D1Ev,_ZThn4_N7S7471C1D1Ev)();
extern void ABISELECT(_ZThn8_N7S7471C1D0Ev,_ZThn4_N7S7471C1D0Ev)();
extern void ABISELECT(_ZThn16_N7S7471C1D1Ev,_ZThn8_N7S7471C1D1Ev)();
extern void ABISELECT(_ZThn16_N7S7471C1D0Ev,_ZThn8_N7S7471C1D0Ev)();
extern void ABISELECT(_ZThn48_N7S7471C1D1Ev,_ZThn24_N7S7471C1D1Ev)();
extern void ABISELECT(_ZThn48_N7S7471C1D0Ev,_ZThn24_N7S7471C1D0Ev)();
extern void ABISELECT(_ZThn56_N7S7471C1D1Ev,_ZThn28_N7S7471C1D1Ev)();
extern void ABISELECT(_ZThn56_N7S7471C1D0Ev,_ZThn28_N7S7471C1D0Ev)();
extern void ABISELECT(_ZThn88_N7S7471C1D1Ev,_ZThn44_N7S7471C1D1Ev)();
extern void ABISELECT(_ZThn88_N7S7471C1D0Ev,_ZThn44_N7S7471C1D0Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7471C1D1Ev,_ZTv0_n16_N7S7471C1D1Ev)();
extern void ABISELECT(_ZThn104_N7S7471C1D1Ev,_ZThn52_N7S7471C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7471C1D0Ev,_ZTv0_n16_N7S7471C1D0Ev)();
extern void ABISELECT(_ZThn104_N7S7471C1D0Ev,_ZThn52_N7S7471C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7471C1D1Ev,_ZTv0_n32_N7S7471C1D1Ev)();
extern void ABISELECT(_ZThn120_N7S7471C1D1Ev,_ZThn60_N7S7471C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7471C1D0Ev,_ZTv0_n32_N7S7471C1D0Ev)();
extern void ABISELECT(_ZThn120_N7S7471C1D0Ev,_ZThn60_N7S7471C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7471C1D1Ev,_ZTv0_n44_N7S7471C1D1Ev)();
extern void ABISELECT(_ZThn136_N7S7471C1D1Ev,_ZThn68_N7S7471C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7471C1D0Ev,_ZTv0_n44_N7S7471C1D0Ev)();
extern void ABISELECT(_ZThn136_N7S7471C1D0Ev,_ZThn68_N7S7471C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7471C1D1Ev,_ZTv0_n32_N7S7471C1D1Ev)();
extern void ABISELECT(_ZThn168_N7S7471C1D1Ev,_ZThn88_N7S7471C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7471C1D0Ev,_ZTv0_n32_N7S7471C1D0Ev)();
extern void ABISELECT(_ZThn168_N7S7471C1D0Ev,_ZThn88_N7S7471C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7471C1D1Ev,_ZTv0_n44_N7S7471C1D1Ev)();
extern void ABISELECT(_ZThn184_N7S7471C1D1Ev,_ZThn96_N7S7471C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7471C1D0Ev,_ZTv0_n44_N7S7471C1D0Ev)();
extern void ABISELECT(_ZThn184_N7S7471C1D0Ev,_ZThn96_N7S7471C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7471C1[] = {
  ABISELECT(184,96),
  ABISELECT(184,96),
  0,
  ABISELECT(168,88),
  ABISELECT(152,80),
  ABISELECT(136,68),
  ABISELECT(136,68),
  ABISELECT(136,68),
  ABISELECT(120,60),
  ABISELECT(112,56),
  ABISELECT(104,52),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C1[0]),
  (VTBL_ENTRY)&_ZN7S7471C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7471C1D0Ev,
  ABISELECT(96,48),
  ABISELECT(176,92),
  ABISELECT(176,92),
  ABISELECT(-8,-4),
  ABISELECT(160,84),
  ABISELECT(144,76),
  ABISELECT(128,64),
  ABISELECT(128,64),
  ABISELECT(-8,-4),
  ABISELECT(112,56),
  ABISELECT(128,64),
  ABISELECT(-8,-4),
  ABISELECT(104,52),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7471C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7471C1D1Ev,_ZThn4_N7S7471C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7471C1D0Ev,_ZThn4_N7S7471C1D0Ev),
  ABISELECT(168,88),
  ABISELECT(168,88),
  ABISELECT(-16,-8),
  ABISELECT(136,72),
  ABISELECT(104,52),
  ABISELECT(120,60),
  ABISELECT(96,48),
  ABISELECT(120,60),
  ABISELECT(120,60),
  ABISELECT(152,80),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7471C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S7471C1D1Ev,_ZThn8_N7S7471C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S7471C1D0Ev,_ZThn8_N7S7471C1D0Ev),
  ABISELECT(80,40),
  ABISELECT(104,52),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7471C1[0]),
  ABISELECT(64,32),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S7471C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7471C1D1Ev,_ZThn24_N7S7471C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7471C1D0Ev,_ZThn24_N7S7471C1D0Ev),
  ABISELECT(56,28),
  ABISELECT(80,40),
  ABISELECT(80,40),
  ABISELECT(112,60),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S7471C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S7471C1D1Ev,_ZThn28_N7S7471C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S7471C1D0Ev,_ZThn28_N7S7471C1D0Ev),
  ABISELECT(40,20),
  ABISELECT(64,32),
  ABISELECT(-72,-36),
  ABISELECT(-72,-36),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI7S7471C1[0]),
  ABISELECT(48,24),
  ABISELECT(32,16),
  ABISELECT(64,36),
  ABISELECT(96,52),
  ABISELECT(-88,-44),
  ABISELECT(-88,-44),
  ABISELECT(48,24),
  ABISELECT(24,12),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI7S7471C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn88_N7S7471C1D1Ev,_ZThn44_N7S7471C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn88_N7S7471C1D0Ev,_ZThn44_N7S7471C1D0Ev),
  ABISELECT(-104,-52),
  ABISELECT(8,4),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI7S7471C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7471C1D1Ev,_ZTv0_n16_N7S7471C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7471C1D0Ev,_ZTv0_n16_N7S7471C1D0Ev),
  ABISELECT(-120,-60),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI7S7471C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7471C1D1Ev,_ZTv0_n32_N7S7471C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7471C1D0Ev,_ZTv0_n32_N7S7471C1D0Ev),
  ABISELECT(-136,-68),
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  0,
  ABISELECT(-136,-68),
  ABISELECT(-136,-68),
  ABISELECT(-136,-68),
  (VTBL_ENTRY)&(_ZTI7S7471C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7471C1D1Ev,_ZTv0_n44_N7S7471C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7471C1D0Ev,_ZTv0_n44_N7S7471C1D0Ev),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  (VTBL_ENTRY)&(_ZTI7S7471C1[0]),
  ABISELECT(-168,-88),
  ABISELECT(-56,-32),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-168,-88),
  ABISELECT(-168,-88),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI7S7471C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7471C1D1Ev,_ZTv0_n32_N7S7471C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7471C1D0Ev,_ZTv0_n32_N7S7471C1D0Ev),
  ABISELECT(-184,-96),
  ABISELECT(-48,-28),
  ABISELECT(-64,-36),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-184,-96),
  ABISELECT(-184,-96),
  ABISELECT(-48,-28),
  ABISELECT(-72,-40),
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI7S7471C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7471C1D1Ev,_ZTv0_n44_N7S7471C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7471C1D0Ev,_ZTv0_n44_N7S7471C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S7471C1[];
static  VTBL_ENTRY _tg__ZTV7S7471C2__A__7S7471C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
extern void _ZN7S7471C6D1Ev();
extern void _ZN7S7471C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7471C6__7S7471C1[] = {
  ABISELECT(96,48),
  ABISELECT(176,92),
  ABISELECT(176,92),
  ABISELECT(-8,-4),
  ABISELECT(160,84),
  ABISELECT(144,76),
  ABISELECT(128,64),
  ABISELECT(128,64),
  ABISELECT(-8,-4),
  ABISELECT(112,56),
  ABISELECT(128,64),
  ABISELECT(-8,-4),
  ABISELECT(104,52),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C6[0]),
  (VTBL_ENTRY)&_ZN7S7471C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7471C6D0Ev,
};
extern void _ZN8S7471C12D1Ev();
extern void _ZN8S7471C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7471C127S7471C6__7S7471C1[] = {
  ABISELECT(176,92),
  ABISELECT(176,92),
  ABISELECT(-8,-4),
  ABISELECT(160,84),
  ABISELECT(144,76),
  ABISELECT(128,64),
  ABISELECT(128,64),
  ABISELECT(-8,-4),
  ABISELECT(112,56),
  ABISELECT(128,64),
  ABISELECT(-8,-4),
  ABISELECT(104,52),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C12[0]),
  (VTBL_ENTRY)&_ZN8S7471C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7471C88S7471C127S7471C6__A1__7S7471C1[] = {
  ABISELECT(104,52),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C8[0]),
};
extern void _ZN8S7471C13D1Ev();
extern void _ZN8S7471C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7471C138S7471C127S7471C6__7S7471C1[] = {
  ABISELECT(168,88),
  ABISELECT(168,88),
  ABISELECT(-16,-8),
  ABISELECT(136,72),
  ABISELECT(104,52),
  ABISELECT(120,60),
  ABISELECT(96,48),
  ABISELECT(120,60),
  ABISELECT(120,60),
  ABISELECT(152,80),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C13[0]),
  (VTBL_ENTRY)&_ZN8S7471C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C13D0Ev,
};
extern void _ZN8S7471C18D1Ev();
extern void _ZN8S7471C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7471C188S7471C138S7471C127S7471C6__7S7471C1[] = {
  ABISELECT(96,48),
  ABISELECT(120,60),
  ABISELECT(120,60),
  ABISELECT(152,80),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C18[0]),
  (VTBL_ENTRY)&_ZN8S7471C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7471C158S7471C188S7471C138S7471C127S7471C6__A1__7S7471C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C15[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7471C28S7471C158S7471C188S7471C138S7471C127S7471C6__A5__7S7471C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C108S7471C188S7471C138S7471C127S7471C6__A1__7S7471C1[] = {
  ABISELECT(80,40),
  ABISELECT(104,52),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7471C2__8S7471C108S7471C188S7471C138S7471C127S7471C6__A1__7S7471C1[] = {
  ABISELECT(-136,-68),
  ABISELECT(-136,-68),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S7471C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7471C18D1Ev,_ZTv0_n32_N8S7471C18D1Ev)();
extern void ABISELECT(_ZThn152_N8S7471C18D1Ev,_ZThn80_N8S7471C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7471C18D0Ev,_ZTv0_n32_N8S7471C18D0Ev)();
extern void ABISELECT(_ZThn152_N8S7471C18D0Ev,_ZThn80_N8S7471C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7471C11__8S7471C188S7471C138S7471C127S7471C6__7S7471C1[] = {
  ABISELECT(-152,-80),
  ABISELECT(-56,-32),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-168,-88),
  ABISELECT(-168,-88),
  ABISELECT(-152,-80),
  (VTBL_ENTRY)&(_ZTI8S7471C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C18D1Ev,_ZTv0_n32_N8S7471C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C18D0Ev,_ZTv0_n32_N8S7471C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__8S7471C188S7471C138S7471C127S7471C6__7S7471C1[] = {
  ABISELECT(-24,-12),
  0,
  ABISELECT(-136,-68),
  ABISELECT(-136,-68),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI8S7471C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__A__8S7471C188S7471C138S7471C127S7471C6__7S7471C1[] = {
  ABISELECT(80,40),
  ABISELECT(104,52),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7471C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S7471C13D1Ev,_ZTv0_n44_N8S7471C13D1Ev)();
extern void ABISELECT(_ZThn120_N8S7471C13D1Ev,_ZThn60_N8S7471C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7471C13D0Ev,_ZTv0_n44_N8S7471C13D0Ev)();
extern void ABISELECT(_ZThn120_N8S7471C13D0Ev,_ZThn60_N8S7471C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7471C14__8S7471C138S7471C127S7471C6__7S7471C1[] = {
  ABISELECT(-120,-60),
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  0,
  ABISELECT(-136,-68),
  ABISELECT(-136,-68),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI8S7471C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7471C13D1Ev,_ZTv0_n44_N8S7471C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7471C13D0Ev,_ZTv0_n44_N8S7471C13D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7471C13D1Ev,_ZTv0_n32_N8S7471C13D1Ev)();
extern void ABISELECT(_ZThn104_N8S7471C13D1Ev,_ZThn52_N8S7471C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7471C13D0Ev,_ZTv0_n32_N8S7471C13D0Ev)();
extern void ABISELECT(_ZThn104_N8S7471C13D0Ev,_ZThn52_N8S7471C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7471C9__8S7471C138S7471C127S7471C6__7S7471C1[] = {
  ABISELECT(-104,-52),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S7471C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C13D1Ev,_ZTv0_n32_N8S7471C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C13D0Ev,_ZTv0_n32_N8S7471C13D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7471C15__8S7471C138S7471C127S7471C6__7S7471C1[] = {
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI8S7471C13[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7471C13D1Ev,_ZTv0_n32_N8S7471C13D1Ev)();
extern void ABISELECT(_ZThn152_N8S7471C13D1Ev,_ZThn80_N8S7471C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7471C13D0Ev,_ZTv0_n32_N8S7471C13D0Ev)();
extern void ABISELECT(_ZThn152_N8S7471C13D0Ev,_ZThn80_N8S7471C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7471C11__A1__8S7471C138S7471C127S7471C6__7S7471C1[] = {
  ABISELECT(-152,-80),
  ABISELECT(-56,-32),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-168,-88),
  ABISELECT(-168,-88),
  ABISELECT(-152,-80),
  (VTBL_ENTRY)&(_ZTI8S7471C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C13D1Ev,_ZTv0_n32_N8S7471C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C13D0Ev,_ZTv0_n32_N8S7471C13D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7471C13D1Ev,_ZTv0_n44_N8S7471C13D1Ev)();
extern void ABISELECT(_ZThn168_N8S7471C13D1Ev,_ZThn88_N8S7471C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7471C13D0Ev,_ZTv0_n44_N8S7471C13D0Ev)();
extern void ABISELECT(_ZThn168_N8S7471C13D0Ev,_ZThn88_N8S7471C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7471C17__8S7471C138S7471C127S7471C6__7S7471C1[] = {
  ABISELECT(-168,-88),
  ABISELECT(-48,-28),
  ABISELECT(-64,-36),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-184,-96),
  ABISELECT(-184,-96),
  ABISELECT(-48,-28),
  ABISELECT(-72,-40),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S7471C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7471C13D1Ev,_ZTv0_n44_N8S7471C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7471C13D0Ev,_ZTv0_n44_N8S7471C13D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7471C108S7471C18__A1__8S7471C138S7471C127S7471C6__7S7471C1[] = {
  ABISELECT(80,40),
  ABISELECT(104,52),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7471C13[0]),
};
extern void _ZN7S7471C7D1Ev();
extern void _ZN7S7471C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7471C78S7471C127S7471C6__A1__7S7471C1[] = {
  ABISELECT(64,32),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C7[0]),
  (VTBL_ENTRY)&_ZN7S7471C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7471C7D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7471C87S7471C78S7471C127S7471C6__A3__7S7471C1[] = {
  ABISELECT(64,32),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C8[0]),
};
extern void ABISELECT(_ZThn8_N8S7471C12D1Ev,_ZThn4_N8S7471C12D1Ev)();
extern void ABISELECT(_ZThn8_N8S7471C12D0Ev,_ZThn4_N8S7471C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7471C13__8S7471C127S7471C6__7S7471C1[] = {
  ABISELECT(168,88),
  ABISELECT(168,88),
  ABISELECT(-16,-8),
  ABISELECT(136,72),
  ABISELECT(104,52),
  ABISELECT(120,60),
  ABISELECT(96,48),
  ABISELECT(120,60),
  ABISELECT(120,60),
  ABISELECT(152,80),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7471C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7471C12D1Ev,_ZThn4_N8S7471C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7471C12D0Ev,_ZThn4_N8S7471C12D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7471C12D1Ev,_ZTv0_n44_N8S7471C12D1Ev)();
extern void ABISELECT(_ZThn128_N8S7471C12D1Ev,_ZThn64_N8S7471C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7471C12D0Ev,_ZTv0_n44_N8S7471C12D0Ev)();
extern void ABISELECT(_ZThn128_N8S7471C12D0Ev,_ZThn64_N8S7471C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7471C14__8S7471C127S7471C6__7S7471C1[] = {
  ABISELECT(-128,-64),
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  0,
  ABISELECT(-136,-68),
  ABISELECT(-136,-68),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S7471C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7471C12D1Ev,_ZTv0_n44_N8S7471C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7471C12D0Ev,_ZTv0_n44_N8S7471C12D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7471C12D1Ev,_ZTv0_n32_N8S7471C12D1Ev)();
extern void ABISELECT(_ZThn112_N8S7471C12D1Ev,_ZThn56_N8S7471C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7471C12D0Ev,_ZTv0_n32_N8S7471C12D0Ev)();
extern void ABISELECT(_ZThn112_N8S7471C12D0Ev,_ZThn56_N8S7471C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7471C9__8S7471C127S7471C6__7S7471C1[] = {
  ABISELECT(-112,-56),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S7471C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C12D1Ev,_ZTv0_n32_N8S7471C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C12D0Ev,_ZTv0_n32_N8S7471C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7471C15__8S7471C127S7471C6__7S7471C1[] = {
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(-144,-76),
  (VTBL_ENTRY)&(_ZTI8S7471C12[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7471C12D1Ev,_ZTv0_n32_N8S7471C12D1Ev)();
extern void ABISELECT(_ZThn160_N8S7471C12D1Ev,_ZThn84_N8S7471C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7471C12D0Ev,_ZTv0_n32_N8S7471C12D0Ev)();
extern void ABISELECT(_ZThn160_N8S7471C12D0Ev,_ZThn84_N8S7471C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7471C11__A1__8S7471C127S7471C6__7S7471C1[] = {
  ABISELECT(-160,-84),
  ABISELECT(-56,-32),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-168,-88),
  ABISELECT(-168,-88),
  ABISELECT(-160,-84),
  (VTBL_ENTRY)&(_ZTI8S7471C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C12D1Ev,_ZTv0_n32_N8S7471C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C12D0Ev,_ZTv0_n32_N8S7471C12D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7471C12D1Ev,_ZTv0_n44_N8S7471C12D1Ev)();
extern void ABISELECT(_ZThn176_N8S7471C12D1Ev,_ZThn92_N8S7471C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7471C12D0Ev,_ZTv0_n44_N8S7471C12D0Ev)();
extern void ABISELECT(_ZThn176_N8S7471C12D0Ev,_ZThn92_N8S7471C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7471C17__8S7471C127S7471C6__7S7471C1[] = {
  ABISELECT(-176,-92),
  ABISELECT(-48,-28),
  ABISELECT(-64,-36),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-184,-96),
  ABISELECT(-184,-96),
  ABISELECT(-48,-28),
  ABISELECT(-72,-40),
  ABISELECT(-176,-92),
  (VTBL_ENTRY)&(_ZTI8S7471C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7471C12D1Ev,_ZTv0_n44_N8S7471C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7471C12D0Ev,_ZTv0_n44_N8S7471C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7471C108S7471C188S7471C13__A1__8S7471C127S7471C6__7S7471C1[] = {
  ABISELECT(80,40),
  ABISELECT(104,52),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7471C12[0]),
};
extern void ABISELECT(_ZThn40_N8S7471C12D1Ev,_ZThn20_N8S7471C12D1Ev)();
extern void ABISELECT(_ZThn40_N8S7471C12D0Ev,_ZThn20_N8S7471C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7471C7__8S7471C127S7471C6__7S7471C1[] = {
  ABISELECT(64,32),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S7471C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S7471C12D1Ev,_ZThn20_N8S7471C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S7471C12D0Ev,_ZThn20_N8S7471C12D0Ev),
};
extern void _ZN8S7471C18D1Ev();
extern void _ZN8S7471C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7471C187S7471C6__A1__7S7471C1[] = {
  ABISELECT(56,28),
  ABISELECT(80,40),
  ABISELECT(80,40),
  ABISELECT(112,60),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C18[0]),
  (VTBL_ENTRY)&_ZN8S7471C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7471C158S7471C187S7471C6__A2__7S7471C1[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C15[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7471C28S7471C158S7471C187S7471C6__A6__7S7471C1[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C108S7471C187S7471C6__A2__7S7471C1[] = {
  ABISELECT(40,20),
  ABISELECT(64,32),
  ABISELECT(-72,-36),
  ABISELECT(-72,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7471C2__8S7471C108S7471C187S7471C6__A2__7S7471C1[] = {
  ABISELECT(-136,-68),
  ABISELECT(-136,-68),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S7471C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7471C18D1Ev,_ZTv0_n32_N8S7471C18D1Ev)();
extern void ABISELECT(_ZThn112_N8S7471C18D1Ev,_ZThn60_N8S7471C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7471C18D0Ev,_ZTv0_n32_N8S7471C18D0Ev)();
extern void ABISELECT(_ZThn112_N8S7471C18D0Ev,_ZThn60_N8S7471C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7471C11__8S7471C187S7471C6__A1__7S7471C1[] = {
  ABISELECT(-112,-60),
  ABISELECT(-56,-32),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-168,-88),
  ABISELECT(-168,-88),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S7471C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C18D1Ev,_ZTv0_n32_N8S7471C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C18D0Ev,_ZTv0_n32_N8S7471C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__8S7471C187S7471C6__A1__7S7471C1[] = {
  ABISELECT(-24,-12),
  0,
  ABISELECT(-136,-68),
  ABISELECT(-136,-68),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S7471C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__A__8S7471C187S7471C6__A1__7S7471C1[] = {
  ABISELECT(40,20),
  ABISELECT(64,32),
  ABISELECT(-72,-36),
  ABISELECT(-72,-36),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7471C18[0]),
};
extern void _ZN8S7471C17D1Ev();
extern void _ZN8S7471C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7471C177S7471C6__A1__7S7471C1[] = {
  ABISELECT(48,24),
  ABISELECT(32,16),
  ABISELECT(64,36),
  ABISELECT(96,52),
  ABISELECT(-88,-44),
  ABISELECT(-88,-44),
  ABISELECT(48,24),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C17[0]),
  (VTBL_ENTRY)&_ZN8S7471C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__8S7471C177S7471C6__A1__7S7471C1[] = {
  ABISELECT(-24,-12),
  0,
  ABISELECT(-136,-68),
  ABISELECT(-136,-68),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S7471C17[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7471C8__8S7471C177S7471C6__A1__7S7471C1[] = {
  ABISELECT(-72,-40),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S7471C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C15__8S7471C177S7471C6__A1__7S7471C1[] = {
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S7471C17[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7471C17D1Ev,_ZTv0_n32_N8S7471C17D1Ev)();
extern void ABISELECT(_ZThn32_N8S7471C17D1Ev,_ZThn16_N8S7471C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7471C17D0Ev,_ZTv0_n32_N8S7471C17D0Ev)();
extern void ABISELECT(_ZThn32_N8S7471C17D0Ev,_ZThn16_N8S7471C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7471C9__8S7471C177S7471C6__A1__7S7471C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7471C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C17D1Ev,_ZTv0_n32_N8S7471C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C17D0Ev,_ZTv0_n32_N8S7471C17D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7471C6D1Ev,_ZTv0_n16_N7S7471C6D1Ev)();
extern void ABISELECT(_ZThn96_N7S7471C6D1Ev,_ZThn48_N7S7471C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7471C6D0Ev,_ZTv0_n16_N7S7471C6D0Ev)();
extern void ABISELECT(_ZThn96_N7S7471C6D0Ev,_ZThn48_N7S7471C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7471C7__7S7471C6__7S7471C1[] = {
  ABISELECT(-96,-48),
  ABISELECT(8,4),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI7S7471C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7471C6D1Ev,_ZTv0_n16_N7S7471C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7471C6D0Ev,_ZTv0_n16_N7S7471C6D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7471C6D1Ev,_ZTv0_n32_N7S7471C6D1Ev)();
extern void ABISELECT(_ZThn112_N7S7471C6D1Ev,_ZThn56_N7S7471C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7471C6D0Ev,_ZTv0_n32_N7S7471C6D0Ev)();
extern void ABISELECT(_ZThn112_N7S7471C6D0Ev,_ZThn56_N7S7471C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7471C9__7S7471C6__7S7471C1[] = {
  ABISELECT(-112,-56),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI7S7471C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7471C6D1Ev,_ZTv0_n32_N7S7471C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7471C6D0Ev,_ZTv0_n32_N7S7471C6D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7471C6D1Ev,_ZTv0_n44_N7S7471C6D1Ev)();
extern void ABISELECT(_ZThn128_N7S7471C6D1Ev,_ZThn64_N7S7471C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7471C6D0Ev,_ZTv0_n44_N7S7471C6D0Ev)();
extern void ABISELECT(_ZThn128_N7S7471C6D0Ev,_ZThn64_N7S7471C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7471C14__7S7471C6__7S7471C1[] = {
  ABISELECT(-128,-64),
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  0,
  ABISELECT(-136,-68),
  ABISELECT(-136,-68),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI7S7471C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7471C6D1Ev,_ZTv0_n44_N7S7471C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7471C6D0Ev,_ZTv0_n44_N7S7471C6D0Ev),
};
extern void ABISELECT(_ZThn8_N7S7471C6D1Ev,_ZThn4_N7S7471C6D1Ev)();
extern void ABISELECT(_ZThn8_N7S7471C6D0Ev,_ZThn4_N7S7471C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7471C138S7471C12__7S7471C6__7S7471C1[] = {
  ABISELECT(168,88),
  ABISELECT(168,88),
  ABISELECT(-16,-8),
  ABISELECT(136,72),
  ABISELECT(104,52),
  ABISELECT(120,60),
  ABISELECT(96,48),
  ABISELECT(120,60),
  ABISELECT(120,60),
  ABISELECT(152,80),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7471C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7471C6D1Ev,_ZThn4_N7S7471C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7471C6D0Ev,_ZThn4_N7S7471C6D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7471C15__7S7471C6__7S7471C1[] = {
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(-144,-76),
  (VTBL_ENTRY)&(_ZTI7S7471C6[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7471C6D1Ev,_ZTv0_n32_N7S7471C6D1Ev)();
extern void ABISELECT(_ZThn160_N7S7471C6D1Ev,_ZThn84_N7S7471C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7471C6D0Ev,_ZTv0_n32_N7S7471C6D0Ev)();
extern void ABISELECT(_ZThn160_N7S7471C6D0Ev,_ZThn84_N7S7471C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7471C11__A1__7S7471C6__7S7471C1[] = {
  ABISELECT(-160,-84),
  ABISELECT(-56,-32),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-168,-88),
  ABISELECT(-168,-88),
  ABISELECT(-160,-84),
  (VTBL_ENTRY)&(_ZTI7S7471C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7471C6D1Ev,_ZTv0_n32_N7S7471C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7471C6D0Ev,_ZTv0_n32_N7S7471C6D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7471C6D1Ev,_ZTv0_n44_N7S7471C6D1Ev)();
extern void ABISELECT(_ZThn176_N7S7471C6D1Ev,_ZThn92_N7S7471C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7471C6D0Ev,_ZTv0_n44_N7S7471C6D0Ev)();
extern void ABISELECT(_ZThn176_N7S7471C6D0Ev,_ZThn92_N7S7471C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7471C17__7S7471C6__7S7471C1[] = {
  ABISELECT(-176,-92),
  ABISELECT(-48,-28),
  ABISELECT(-64,-36),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-184,-96),
  ABISELECT(-184,-96),
  ABISELECT(-48,-28),
  ABISELECT(-72,-40),
  ABISELECT(-176,-92),
  (VTBL_ENTRY)&(_ZTI7S7471C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7471C6D1Ev,_ZTv0_n44_N7S7471C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7471C6D0Ev,_ZTv0_n44_N7S7471C6D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7471C108S7471C188S7471C138S7471C12__A1__7S7471C6__7S7471C1[] = {
  ABISELECT(80,40),
  ABISELECT(104,52),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7471C6[0]),
};
extern void ABISELECT(_ZThn40_N7S7471C6D1Ev,_ZThn20_N7S7471C6D1Ev)();
extern void ABISELECT(_ZThn40_N7S7471C6D0Ev,_ZThn20_N7S7471C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7471C78S7471C12__A1__7S7471C6__7S7471C1[] = {
  ABISELECT(64,32),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S7471C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S7471C6D1Ev,_ZThn20_N7S7471C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S7471C6D0Ev,_ZThn20_N7S7471C6D0Ev),
};
extern void ABISELECT(_ZThn48_N7S7471C6D1Ev,_ZThn24_N7S7471C6D1Ev)();
extern void ABISELECT(_ZThn48_N7S7471C6D0Ev,_ZThn24_N7S7471C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7471C18__A1__7S7471C6__7S7471C1[] = {
  ABISELECT(56,28),
  ABISELECT(80,40),
  ABISELECT(80,40),
  ABISELECT(112,60),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S7471C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7471C6D1Ev,_ZThn24_N7S7471C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7471C6D0Ev,_ZThn24_N7S7471C6D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7471C108S7471C18__A2__7S7471C6__7S7471C1[] = {
  ABISELECT(40,20),
  ABISELECT(64,32),
  ABISELECT(-72,-36),
  ABISELECT(-72,-36),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI7S7471C6[0]),
};
extern void ABISELECT(_ZThn80_N7S7471C6D1Ev,_ZThn40_N7S7471C6D1Ev)();
extern void ABISELECT(_ZThn80_N7S7471C6D0Ev,_ZThn40_N7S7471C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7471C17__A__7S7471C6__7S7471C1[] = {
  ABISELECT(48,24),
  ABISELECT(32,16),
  ABISELECT(64,36),
  ABISELECT(96,52),
  ABISELECT(-88,-44),
  ABISELECT(-88,-44),
  ABISELECT(48,24),
  ABISELECT(24,12),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI7S7471C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N7S7471C6D1Ev,_ZThn40_N7S7471C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N7S7471C6D0Ev,_ZThn40_N7S7471C6D0Ev),
};
extern void _ZN7S7471C7D1Ev();
extern void _ZN7S7471C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7471C7__7S7471C1[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C7[0]),
  (VTBL_ENTRY)&_ZN7S7471C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7471C7D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7471C87S7471C7__7S7471C1[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C8[0]),
};
extern void _ZN7S7471C9D1Ev();
extern void _ZN7S7471C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7471C9__7S7471C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C9[0]),
  (VTBL_ENTRY)&_ZN7S7471C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7471C9D0Ev,
};
extern void _ZN8S7471C11D1Ev();
extern void _ZN8S7471C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7471C117S7471C9__7S7471C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C11[0]),
  (VTBL_ENTRY)&_ZN8S7471C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C11D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7471C28S7471C117S7471C9__A2__7S7471C1[] = {
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__8S7471C117S7471C9__7S7471C1[] = {
  ABISELECT(-24,-12),
  0,
  ABISELECT(-136,-68),
  ABISELECT(-136,-68),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7471C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__7S7471C9__7S7471C1[] = {
  ABISELECT(-24,-12),
  0,
  ABISELECT(-136,-68),
  ABISELECT(-136,-68),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7471C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__7S7471C1[] = {
  ABISELECT(-24,-12),
  0,
  ABISELECT(-136,-68),
  ABISELECT(-136,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7471C2__A1__7S7471C1[] = {
  ABISELECT(-136,-68),
  ABISELECT(-136,-68),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
extern void _ZN8S7471C14D1Ev();
extern void _ZN8S7471C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7471C14__7S7471C1[] = {
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  0,
  ABISELECT(-136,-68),
  ABISELECT(-136,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C14[0]),
  (VTBL_ENTRY)&_ZN8S7471C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C14D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N8S7471C14D1Ev,_ZTv0_n32_N8S7471C14D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7471C14D0Ev,_ZTv0_n32_N8S7471C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7471C9__8S7471C14__7S7471C1[] = {
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S7471C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C14D1Ev,_ZTv0_n32_N8S7471C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C14D0Ev,_ZTv0_n32_N8S7471C14D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7471C15__8S7471C14__7S7471C1[] = {
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S7471C14[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7471C14D1Ev,_ZTv0_n32_N8S7471C14D1Ev)();
extern void ABISELECT(_ZThn32_N8S7471C14D1Ev,_ZThn20_N8S7471C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7471C14D0Ev,_ZTv0_n32_N8S7471C14D0Ev)();
extern void ABISELECT(_ZThn32_N8S7471C14D0Ev,_ZThn20_N8S7471C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7471C11__A1__8S7471C14__7S7471C1[] = {
  ABISELECT(-32,-20),
  ABISELECT(-56,-32),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-168,-88),
  ABISELECT(-168,-88),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S7471C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C14D1Ev,_ZTv0_n32_N8S7471C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C14D0Ev,_ZTv0_n32_N8S7471C14D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7471C15__7S7471C1[] = {
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C15[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7471C28S7471C15__A3__7S7471C1[] = {
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
extern void _ZN8S7471C11D1Ev();
extern void _ZN8S7471C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7471C11__A1__7S7471C1[] = {
  ABISELECT(-56,-32),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-168,-88),
  ABISELECT(-168,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C11[0]),
  (VTBL_ENTRY)&_ZN8S7471C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C11D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7471C28S7471C11__A4__7S7471C1[] = {
  ABISELECT(-168,-88),
  ABISELECT(-168,-88),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__8S7471C11__A1__7S7471C1[] = {
  ABISELECT(-24,-12),
  0,
  ABISELECT(-136,-68),
  ABISELECT(-136,-68),
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI8S7471C11[0]),
};
extern void _ZN8S7471C17D1Ev();
extern void _ZN8S7471C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7471C17__7S7471C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(-64,-36),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-184,-96),
  ABISELECT(-184,-96),
  ABISELECT(-48,-28),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C17[0]),
  (VTBL_ENTRY)&_ZN8S7471C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__8S7471C17__7S7471C1[] = {
  ABISELECT(-24,-12),
  0,
  ABISELECT(-136,-68),
  ABISELECT(-136,-68),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S7471C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C15__8S7471C17__7S7471C1[] = {
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7471C17[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7471C17D1Ev,_ZTv0_n32_N8S7471C17D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7471C17D0Ev,_ZTv0_n32_N8S7471C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7471C9__8S7471C17__7S7471C1[] = {
  ABISELECT(64,36),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S7471C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C17D1Ev,_ZTv0_n32_N8S7471C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C17D0Ev,_ZTv0_n32_N8S7471C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7471C8__A2__7S7471C1[] = {
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C8[0]),
};
static  VTT_ENTRY vtt_S7471C1[] = {
  {&(_ZTV7S7471C1[15]),  15,145},
  {&(_tg__ZTV7S7471C2__A__7S7471C1[4]),  4,4},
  {&(_tg__ZTV7S7471C6__7S7471C1[15]),  15,17},
  {&(_tg__ZTV8S7471C127S7471C6__7S7471C1[14]),  14,16},
  {&(_tg__ZTV7S7471C88S7471C127S7471C6__A1__7S7471C1[3]),  3,3},
  {&(_tg__ZTV8S7471C138S7471C127S7471C6__7S7471C1[14]),  14,16},
  {&(_tg__ZTV8S7471C188S7471C138S7471C127S7471C6__7S7471C1[8]),  8,10},
  {&(_tg__ZTV8S7471C158S7471C188S7471C138S7471C127S7471C6__A1__7S7471C1[4]),  4,4},
  {&(_tg__ZTV7S7471C28S7471C158S7471C188S7471C138S7471C127S7471C6__A5__7S7471C1[4]),  4,4},
  {&(_tg__ZTV8S7471C108S7471C188S7471C138S7471C127S7471C6__A1__7S7471C1[6]),  6,6},
  {&(_tg__ZTV7S7471C2__8S7471C108S7471C188S7471C138S7471C127S7471C6__A1__7S7471C1[4]),  4,4},
  {&(_tg__ZTV8S7471C11__8S7471C188S7471C138S7471C127S7471C6__7S7471C1[8]),  8,10},
  {&(_tg__ZTV8S7471C10__8S7471C188S7471C138S7471C127S7471C6__7S7471C1[6]),  6,6},
  {&(_tg__ZTV8S7471C10__8S7471C188S7471C138S7471C127S7471C6__7S7471C1[6]),  6,6},
  {&(_tg__ZTV8S7471C10__A__8S7471C188S7471C138S7471C127S7471C6__7S7471C1[6]),  6,6},
  {&(_tg__ZTV8S7471C14__8S7471C138S7471C127S7471C6__7S7471C1[11]),  11,13},
  {&(_tg__ZTV7S7471C9__8S7471C138S7471C127S7471C6__7S7471C1[8]),  8,10},
  {&(_tg__ZTV8S7471C14__8S7471C138S7471C127S7471C6__7S7471C1[11]),  11,13},
  {&(_tg__ZTV8S7471C14__8S7471C138S7471C127S7471C6__7S7471C1[11]),  11,13},
  {&(_tg__ZTV8S7471C15__8S7471C138S7471C127S7471C6__7S7471C1[4]),  4,4},
  {&(_tg__ZTV8S7471C11__A1__8S7471C138S7471C127S7471C6__7S7471C1[8]),  8,10},
  {&(_tg__ZTV8S7471C17__8S7471C138S7471C127S7471C6__7S7471C1[11]),  11,13},
  {&(_tg__ZTV8S7471C17__8S7471C138S7471C127S7471C6__7S7471C1[11]),  11,13},
  {&(_tg__ZTV8S7471C108S7471C18__A1__8S7471C138S7471C127S7471C6__7S7471C1[6]),  6,6},
  {&(_tg__ZTV7S7471C78S7471C127S7471C6__A1__7S7471C1[3]),  3,5},
  {&(_tg__ZTV7S7471C87S7471C78S7471C127S7471C6__A3__7S7471C1[3]),  3,3},
  {&(_tg__ZTV8S7471C13__8S7471C127S7471C6__7S7471C1[14]),  14,16},
  {&(_tg__ZTV8S7471C14__8S7471C127S7471C6__7S7471C1[11]),  11,13},
  {&(_tg__ZTV7S7471C9__8S7471C127S7471C6__7S7471C1[8]),  8,10},
  {&(_tg__ZTV8S7471C14__8S7471C127S7471C6__7S7471C1[11]),  11,13},
  {&(_tg__ZTV8S7471C14__8S7471C127S7471C6__7S7471C1[11]),  11,13},
  {&(_tg__ZTV8S7471C15__8S7471C127S7471C6__7S7471C1[4]),  4,4},
  {&(_tg__ZTV8S7471C11__A1__8S7471C127S7471C6__7S7471C1[8]),  8,10},
  {&(_tg__ZTV8S7471C17__8S7471C127S7471C6__7S7471C1[11]),  11,13},
  {&(_tg__ZTV8S7471C17__8S7471C127S7471C6__7S7471C1[11]),  11,13},
  {&(_tg__ZTV8S7471C108S7471C188S7471C13__A1__8S7471C127S7471C6__7S7471C1[6]),  6,6},
  {&(_tg__ZTV7S7471C7__8S7471C127S7471C6__7S7471C1[3]),  3,5},
  {&(_tg__ZTV8S7471C187S7471C6__A1__7S7471C1[8]),  8,10},
  {&(_tg__ZTV8S7471C158S7471C187S7471C6__A2__7S7471C1[4]),  4,4},
  {&(_tg__ZTV7S7471C28S7471C158S7471C187S7471C6__A6__7S7471C1[4]),  4,4},
  {&(_tg__ZTV8S7471C108S7471C187S7471C6__A2__7S7471C1[6]),  6,6},
  {&(_tg__ZTV7S7471C2__8S7471C108S7471C187S7471C6__A2__7S7471C1[4]),  4,4},
  {&(_tg__ZTV8S7471C11__8S7471C187S7471C6__A1__7S7471C1[8]),  8,10},
  {&(_tg__ZTV8S7471C10__8S7471C187S7471C6__A1__7S7471C1[6]),  6,6},
  {&(_tg__ZTV8S7471C10__8S7471C187S7471C6__A1__7S7471C1[6]),  6,6},
  {&(_tg__ZTV8S7471C10__A__8S7471C187S7471C6__A1__7S7471C1[6]),  6,6},
  {&(_tg__ZTV8S7471C177S7471C6__A1__7S7471C1[10]),  10,12},
  {&(_tg__ZTV8S7471C10__8S7471C177S7471C6__A1__7S7471C1[6]),  6,6},
  {&(_tg__ZTV7S7471C8__8S7471C177S7471C6__A1__7S7471C1[3]),  3,3},
  {&(_tg__ZTV8S7471C15__8S7471C177S7471C6__A1__7S7471C1[4]),  4,4},
  {&(_tg__ZTV7S7471C9__8S7471C177S7471C6__A1__7S7471C1[8]),  8,10},
  {&(_tg__ZTV8S7471C10__8S7471C177S7471C6__A1__7S7471C1[6]),  6,6},
  {&(_tg__ZTV7S7471C7__7S7471C6__7S7471C1[4]),  4,6},
  {&(_tg__ZTV7S7471C9__7S7471C6__7S7471C1[8]),  8,10},
  {&(_tg__ZTV8S7471C14__7S7471C6__7S7471C1[11]),  11,13},
  {&(_tg__ZTV8S7471C14__7S7471C6__7S7471C1[11]),  11,13},
  {&(_tg__ZTV8S7471C138S7471C12__7S7471C6__7S7471C1[14]),  14,16},
  {&(_tg__ZTV8S7471C14__7S7471C6__7S7471C1[11]),  11,13},
  {&(_tg__ZTV8S7471C15__7S7471C6__7S7471C1[4]),  4,4},
  {&(_tg__ZTV8S7471C11__A1__7S7471C6__7S7471C1[8]),  8,10},
  {&(_tg__ZTV8S7471C17__7S7471C6__7S7471C1[11]),  11,13},
  {&(_tg__ZTV8S7471C17__7S7471C6__7S7471C1[11]),  11,13},
  {&(_tg__ZTV8S7471C108S7471C188S7471C138S7471C12__A1__7S7471C6__7S7471C1[6]),  6,6},
  {&(_tg__ZTV7S7471C78S7471C12__A1__7S7471C6__7S7471C1[3]),  3,5},
  {&(_tg__ZTV8S7471C18__A1__7S7471C6__7S7471C1[8]),  8,10},
  {&(_tg__ZTV8S7471C108S7471C18__A2__7S7471C6__7S7471C1[6]),  6,6},
  {&(_tg__ZTV8S7471C17__A__7S7471C6__7S7471C1[10]),  10,12},
  {&(_ZTV7S7471C1[32]),  32,145},
  {&(_ZTV7S7471C1[93]),  93,145},
  {&(_ZTV7S7471C1[103]),  103,145},
  {&(_ZTV7S7471C1[116]),  116,145},
  {&(_ZTV7S7471C1[116]),  116,145},
  {&(_ZTV7S7471C1[48]),  48,145},
  {&(_ZTV7S7471C1[116]),  116,145},
  {&(_ZTV7S7471C1[122]),  122,145},
  {&(_ZTV7S7471C1[130]),  130,145},
  {&(_ZTV7S7471C1[143]),  143,145},
  {&(_ZTV7S7471C1[143]),  143,145},
  {&(_ZTV7S7471C1[56]),  56,145},
  {&(_ZTV7S7471C1[59]),  59,145},
  {&(_ZTV7S7471C1[69]),  69,145},
  {&(_ZTV7S7471C1[77]),  77,145},
  {&(_ZTV7S7471C1[87]),  87,145},
  {&(_tg__ZTV7S7471C7__7S7471C1[3]),  3,5},
  {&(_tg__ZTV7S7471C87S7471C7__7S7471C1[3]),  3,3},
  {&(_tg__ZTV7S7471C9__7S7471C1[7]),  7,9},
  {&(_tg__ZTV8S7471C117S7471C9__7S7471C1[7]),  7,9},
  {&(_tg__ZTV7S7471C28S7471C117S7471C9__A2__7S7471C1[4]),  4,4},
  {&(_tg__ZTV8S7471C10__8S7471C117S7471C9__7S7471C1[6]),  6,6},
  {&(_tg__ZTV8S7471C10__8S7471C117S7471C9__7S7471C1[6]),  6,6},
  {&(_tg__ZTV8S7471C10__7S7471C9__7S7471C1[6]),  6,6},
  {&(_tg__ZTV8S7471C10__7S7471C9__7S7471C1[6]),  6,6},
  {&(_tg__ZTV8S7471C10__7S7471C1[6]),  6,6},
  {&(_tg__ZTV8S7471C10__7S7471C1[6]),  6,6},
  {&(_tg__ZTV7S7471C2__A1__7S7471C1[4]),  4,4},
  {&(_tg__ZTV8S7471C14__7S7471C1[10]),  10,12},
  {&(_tg__ZTV7S7471C9__8S7471C14__7S7471C1[8]),  8,10},
  {&(_tg__ZTV8S7471C14__7S7471C1[10]),  10,12},
  {&(_tg__ZTV8S7471C14__7S7471C1[10]),  10,12},
  {&(_tg__ZTV8S7471C15__8S7471C14__7S7471C1[4]),  4,4},
  {&(_tg__ZTV8S7471C11__A1__8S7471C14__7S7471C1[8]),  8,10},
  {&(_tg__ZTV8S7471C15__7S7471C1[4]),  4,4},
  {&(_tg__ZTV7S7471C28S7471C15__A3__7S7471C1[4]),  4,4},
  {&(_tg__ZTV8S7471C11__A1__7S7471C1[7]),  7,9},
  {&(_tg__ZTV7S7471C28S7471C11__A4__7S7471C1[4]),  4,4},
  {&(_tg__ZTV8S7471C10__8S7471C11__A1__7S7471C1[6]),  6,6},
  {&(_tg__ZTV8S7471C10__8S7471C11__A1__7S7471C1[6]),  6,6},
  {&(_tg__ZTV8S7471C17__7S7471C1[10]),  10,12},
  {&(_tg__ZTV8S7471C10__8S7471C17__7S7471C1[6]),  6,6},
  {&(_tg__ZTV8S7471C17__7S7471C1[10]),  10,12},
  {&(_tg__ZTV8S7471C15__8S7471C17__7S7471C1[4]),  4,4},
  {&(_tg__ZTV7S7471C9__8S7471C17__7S7471C1[8]),  8,10},
  {&(_tg__ZTV8S7471C10__8S7471C17__7S7471C1[6]),  6,6},
  {&(_tg__ZTV7S7471C8__A2__7S7471C1[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7471C1[];
extern  VTBL_ENTRY _ZTV7S7471C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C1[];
static VTBL_ENTRY alt_thunk_names141[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C14D0Ev,_ZTv0_n32_N8S7471C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7471C14D0Ev,_ZThn20_N8S7471C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C14D1Ev,_ZTv0_n32_N8S7471C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7471C14D1Ev,_ZThn20_N8S7471C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7471C6D0Ev,_ZTv0_n44_N7S7471C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S7471C6D0Ev,_ZThn92_N7S7471C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7471C6D0Ev,_ZThn64_N7S7471C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7471C6D1Ev,_ZTv0_n44_N7S7471C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S7471C6D1Ev,_ZThn92_N7S7471C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7471C6D1Ev,_ZThn64_N7S7471C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7471C6D0Ev,_ZTv0_n32_N7S7471C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7471C6D0Ev,_ZThn84_N7S7471C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7471C6D0Ev,_ZThn56_N7S7471C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7471C6D1Ev,_ZTv0_n32_N7S7471C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7471C6D1Ev,_ZThn84_N7S7471C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7471C6D1Ev,_ZThn56_N7S7471C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7471C6D0Ev,_ZTv0_n16_N7S7471C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7471C6D0Ev,_ZThn48_N7S7471C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7471C6D1Ev,_ZTv0_n16_N7S7471C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7471C6D1Ev,_ZThn48_N7S7471C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C17D0Ev,_ZTv0_n32_N8S7471C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7471C17D0Ev,_ZThn16_N8S7471C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C17D1Ev,_ZTv0_n32_N8S7471C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7471C17D1Ev,_ZThn16_N8S7471C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C12D0Ev,_ZTv0_n32_N8S7471C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7471C12D0Ev,_ZThn84_N8S7471C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7471C12D0Ev,_ZThn56_N8S7471C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C12D1Ev,_ZTv0_n32_N8S7471C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7471C12D1Ev,_ZThn84_N8S7471C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7471C12D1Ev,_ZThn56_N8S7471C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7471C12D0Ev,_ZTv0_n44_N8S7471C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S7471C12D0Ev,_ZThn92_N8S7471C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7471C12D0Ev,_ZThn64_N8S7471C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7471C12D1Ev,_ZTv0_n44_N8S7471C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S7471C12D1Ev,_ZThn92_N8S7471C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7471C12D1Ev,_ZThn64_N8S7471C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C13D0Ev,_ZTv0_n32_N8S7471C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S7471C13D0Ev,_ZThn80_N8S7471C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7471C13D0Ev,_ZThn52_N8S7471C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C13D1Ev,_ZTv0_n32_N8S7471C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S7471C13D1Ev,_ZThn80_N8S7471C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7471C13D1Ev,_ZThn52_N8S7471C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7471C13D0Ev,_ZTv0_n44_N8S7471C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S7471C13D0Ev,_ZThn88_N8S7471C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7471C13D0Ev,_ZThn60_N8S7471C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7471C13D1Ev,_ZTv0_n44_N8S7471C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S7471C13D1Ev,_ZThn88_N8S7471C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7471C13D1Ev,_ZThn60_N8S7471C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C18D0Ev,_ZTv0_n32_N8S7471C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7471C18D0Ev,_ZThn60_N8S7471C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S7471C18D0Ev,_ZThn80_N8S7471C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C18D1Ev,_ZTv0_n32_N8S7471C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7471C18D1Ev,_ZThn60_N8S7471C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S7471C18D1Ev,_ZThn80_N8S7471C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7471C1D0Ev,_ZTv0_n44_N7S7471C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S7471C1D0Ev,_ZThn96_N7S7471C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7471C1D0Ev,_ZThn68_N7S7471C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7471C1D1Ev,_ZTv0_n44_N7S7471C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S7471C1D1Ev,_ZThn96_N7S7471C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7471C1D1Ev,_ZThn68_N7S7471C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7471C1D0Ev,_ZTv0_n32_N7S7471C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S7471C1D0Ev,_ZThn88_N7S7471C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7471C1D0Ev,_ZThn60_N7S7471C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7471C1D1Ev,_ZTv0_n32_N7S7471C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S7471C1D1Ev,_ZThn88_N7S7471C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7471C1D1Ev,_ZThn60_N7S7471C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7471C1D0Ev,_ZTv0_n16_N7S7471C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7471C1D0Ev,_ZThn52_N7S7471C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7471C1D1Ev,_ZTv0_n16_N7S7471C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7471C1D1Ev,_ZThn52_N7S7471C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7471C1 = {  "S7471C1", // class name
  bases_S7471C1, 59,
  &(vtc_S7471C1[0]), // expected_vtbl_contents
  &(vtt_S7471C1[0]), // expected_vtt_contents
  ABISELECT(200,104), // object size
  NSPAIRA(_ZTI7S7471C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7471C1),145, //virtual function table var
  15, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7471C1),114, //virtual table table var
  30, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names141,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19603C5  : S8033C7 {
  void *s19603c5f0;
  ::S20291C14_nt s19603c5f1;
  void *s19603c5f2;
  long double s19603c5f3;
  ~S19603C5(); // tgen
  S19603C5(); // tgen
};
//SIG(-1 S19603C5) C1{ BC2{ vd m Fc Fc:0 Fl[8] FD} Fp FC3{} Fp FD}


S19603C5 ::~S19603C5(){ note_dtor("S19603C5", this);} // tgen
S19603C5 ::S19603C5(){ note_ctor("S19603C5", this);} // tgen

static void Test_S19603C5()
{
  extern Class_Descriptor cd_S19603C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(10,20)];
    init_test(&cd_S19603C5, buf);
    S19603C5 *dp, &lv = *(dp=new (buf) S19603C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,76), "sizeof(S19603C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19603C5)");
    check_base_class_offset(lv, (S8033C7*), 0, "S19603C5");
    check_field_offset(lv, s19603c5f0, ABISELECT(96,52), "S19603C5.s19603c5f0");
    check_field_offset(lv, s19603c5f1, ABISELECT(104,56), "S19603C5.s19603c5f1");
    check_field_offset(lv, s19603c5f2, ABISELECT(112,60), "S19603C5.s19603c5f2");
    check_field_offset(lv, s19603c5f3, ABISELECT(128,64), "S19603C5.s19603c5f3");
    test_class_info(&lv, &cd_S19603C5);
    dp->~S19603C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19603C5(Test_S19603C5, "S19603C5", ABISELECT(144,76));

#else // __cplusplus

extern void _ZN8S19603C5C1Ev();
extern void _ZN8S19603C5D1Ev();
Name_Map name_map_S19603C5[] = {
  NSPAIR(_ZN8S19603C5C1Ev),
  NSPAIR(_ZN8S19603C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
static Base_Class bases_S19603C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19603C5[];
extern void _ZN8S19603C5D1Ev();
extern void _ZN8S19603C5D0Ev();
static  VTBL_ENTRY vtc_S19603C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19603C5[0]),
  (VTBL_ENTRY)&_ZN8S19603C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19603C5D0Ev,
};
extern VTBL_ENTRY _ZTI8S19603C5[];
extern  VTBL_ENTRY _ZTV8S19603C5[];
Class_Descriptor cd_S19603C5 = {  "S19603C5", // class name
  bases_S19603C5, 1,
  &(vtc_S19603C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,76), // object size
  NSPAIRA(_ZTI8S19603C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19603C5),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19603C7  : S19603C5 , virtual S8033C7 {
  ::S8033C7 s19603c7f0;
  void *s19603c7f1;
  virtual  ~S19603C7(); // _ZN8S19603C7D2Ev
  S19603C7(); // tgen
};
//SIG(-1 S19603C7) C1{ BC2{ BC3{ vd m Fc Fc:0 Fl[8] FD} Fp FC4{} Fp FD} VBC3 vd FC3 Fp}


 S19603C7 ::~S19603C7(){ note_dtor("S19603C7", this);}
S19603C7 ::S19603C7(){ note_ctor("S19603C7", this);} // tgen

static void Test_S19603C7()
{
  extern Class_Descriptor cd_S19603C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(23,47)];
    init_test(&cd_S19603C7, buf);
    S19603C7 *dp, &lv = *(dp=new (buf) S19603C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(352,184), "sizeof(S19603C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19603C7)");
    check_base_class_offset(lv, (S8033C7*)(S19603C5*), 0, "S19603C7");
    check_base_class_offset(lv, (S19603C5*), 0, "S19603C7");
    /*is_ambiguous_... S19603C7::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*), ABISELECT(256,132), "S19603C7");
    check_field_offset(lv, s19603c7f0, ABISELECT(144,76), "S19603C7.s19603c7f0");
    check_field_offset(lv, s19603c7f1, ABISELECT(240,128), "S19603C7.s19603c7f1");
    test_class_info(&lv, &cd_S19603C7);
    dp->~S19603C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19603C7(Test_S19603C7, "S19603C7", ABISELECT(352,184));

#else // __cplusplus

extern void _ZN8S19603C7C1Ev();
extern void _ZN8S19603C7D2Ev();
Name_Map name_map_S19603C7[] = {
  NSPAIR(_ZN8S19603C7C1Ev),
  NSPAIR(_ZN8S19603C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19603C5;
extern VTBL_ENTRY _ZTI8S19603C5[];
extern  VTBL_ENTRY _ZTV8S19603C5[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
static Base_Class bases_S19603C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19603C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S8033C7,    ABISELECT(256,132), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19603C7[];
extern void _ZN8S19603C7D1Ev();
extern void _ZN8S19603C7D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S19603C7D1Ev,_ZTv0_n12_N8S19603C7D1Ev)();
extern void ABISELECT(_ZThn256_N8S19603C7D1Ev,_ZThn132_N8S19603C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19603C7D0Ev,_ZTv0_n12_N8S19603C7D0Ev)();
extern void ABISELECT(_ZThn256_N8S19603C7D0Ev,_ZThn132_N8S19603C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19603C7[] = {
  ABISELECT(256,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S19603C7[0]),
  (VTBL_ENTRY)&_ZN8S19603C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19603C7D0Ev,
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  (VTBL_ENTRY)&(_ZTI8S19603C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C7D1Ev,_ZTv0_n12_N8S19603C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C7D0Ev,_ZTv0_n12_N8S19603C7D0Ev),
};
extern VTBL_ENTRY _ZTV8S19603C7[];
static  VTT_ENTRY vtt_S19603C7[] = {
  {&(_ZTV8S19603C7[3]),  3,10},
  {&(_ZTV8S19603C7[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S19603C7[];
extern  VTBL_ENTRY _ZTV8S19603C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19603C7[];
static VTBL_ENTRY alt_thunk_names142[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19603C7D0Ev,_ZTv0_n12_N8S19603C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19603C7D0Ev,_ZThn132_N8S19603C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19603C7D1Ev,_ZTv0_n12_N8S19603C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19603C7D1Ev,_ZThn132_N8S19603C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19603C7 = {  "S19603C7", // class name
  bases_S19603C7, 3,
  &(vtc_S19603C7[0]), // expected_vtbl_contents
  &(vtt_S19603C7[0]), // expected_vtt_contents
  ABISELECT(352,184), // object size
  NSPAIRA(_ZTI8S19603C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19603C7),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19603C7),2, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names142,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19603C4  : S8033C7 , virtual S19603C5 {
  int s19603c4f0;
  char s19603c4f1;
  void *s19603c4f2;
  int s19603c4f3;
  void *s19603c4f4[2];
  ::S19603C7 s19603c4f5;
  virtual  ~S19603C4(); // _ZN8S19603C4D2Ev
  virtual void  v2(); // _ZN8S19603C42v2Ev
  S19603C4(); // tgen
};
//SIG(-1 S19603C4) C1{ BC2{ vd m Fc Fc:0 Fl[8] FD} VBC3{ BC2 Fp FC4{} Fp FD} vd v1 Fi Fc Fp Fi Fp[2] FC5{ BC3 VBC2 vd FC2 Fp}}


 S19603C4 ::~S19603C4(){ note_dtor("S19603C4", this);}
void  S19603C4 ::v2(){vfunc_called(this, "_ZN8S19603C42v2Ev");}
S19603C4 ::S19603C4(){ note_ctor("S19603C4", this);} // tgen

static void Test_S19603C4()
{
  extern Class_Descriptor cd_S19603C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(41,85)];
    init_test(&cd_S19603C4, buf);
    S19603C4 *dp, &lv = *(dp=new (buf) S19603C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(640,336), "sizeof(S19603C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19603C4)");
    /*is_ambiguous_... S19603C4::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*), 0, "S19603C4");
    check_base_class_offset(lv, (S8033C7*)(S19603C5*), ABISELECT(496,260), "S19603C4");
    check_base_class_offset(lv, (S19603C5*), ABISELECT(496,260), "S19603C4");
    check_field_offset(lv, s19603c4f0, ABISELECT(96,52), "S19603C4.s19603c4f0");
    check_field_offset(lv, s19603c4f1, ABISELECT(100,56), "S19603C4.s19603c4f1");
    check_field_offset(lv, s19603c4f2, ABISELECT(104,60), "S19603C4.s19603c4f2");
    check_field_offset(lv, s19603c4f3, ABISELECT(112,64), "S19603C4.s19603c4f3");
    check_field_offset(lv, s19603c4f4, ABISELECT(120,68), "S19603C4.s19603c4f4");
    check_field_offset(lv, s19603c4f5, ABISELECT(144,76), "S19603C4.s19603c4f5");
    test_class_info(&lv, &cd_S19603C4);
    dp->~S19603C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19603C4(Test_S19603C4, "S19603C4", ABISELECT(640,336));

#else // __cplusplus

extern void _ZN8S19603C4C1Ev();
extern void _ZN8S19603C4D2Ev();
Name_Map name_map_S19603C4[] = {
  NSPAIR(_ZN8S19603C4C1Ev),
  NSPAIR(_ZN8S19603C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19603C5;
extern VTBL_ENTRY _ZTI8S19603C5[];
extern  VTBL_ENTRY _ZTV8S19603C5[];
static Base_Class bases_S19603C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S8033C7,    ABISELECT(496,260), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19603C5,    ABISELECT(496,260), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19603C4[];
extern void _ZN8S19603C4D1Ev();
extern void _ZN8S19603C4D0Ev();
extern void _ZN8S19603C42v2Ev();
extern void ABISELECT(_ZTv0_n24_N8S19603C4D1Ev,_ZTv0_n12_N8S19603C4D1Ev)();
extern void ABISELECT(_ZThn496_N8S19603C4D1Ev,_ZThn260_N8S19603C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19603C4D0Ev,_ZTv0_n12_N8S19603C4D0Ev)();
extern void ABISELECT(_ZThn496_N8S19603C4D0Ev,_ZThn260_N8S19603C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19603C4[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19603C4[0]),
  (VTBL_ENTRY)&_ZN8S19603C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19603C4D0Ev,
  (VTBL_ENTRY)&_ZN8S19603C42v2Ev,
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI8S19603C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C4D1Ev,_ZTv0_n12_N8S19603C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C4D0Ev,_ZTv0_n12_N8S19603C4D0Ev),
};
extern VTBL_ENTRY _ZTV8S19603C4[];
static  VTT_ENTRY vtt_S19603C4[] = {
  {&(_ZTV8S19603C4[3]),  3,11},
  {&(_ZTV8S19603C4[9]),  9,11},
};
extern VTBL_ENTRY _ZTI8S19603C4[];
extern  VTBL_ENTRY _ZTV8S19603C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19603C4[];
static VTBL_ENTRY alt_thunk_names143[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19603C4D0Ev,_ZTv0_n12_N8S19603C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19603C4D0Ev,_ZThn260_N8S19603C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19603C4D1Ev,_ZTv0_n12_N8S19603C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19603C4D1Ev,_ZThn260_N8S19603C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19603C4 = {  "S19603C4", // class name
  bases_S19603C4, 3,
  &(vtc_S19603C4[0]), // expected_vtbl_contents
  &(vtt_S19603C4[0]), // expected_vtt_contents
  ABISELECT(640,336), // object size
  NSPAIRA(_ZTI8S19603C4),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19603C4),11, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19603C4),2, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names143,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19603C2  : S8033C7 , virtual S19603C4 {
  void *s19603c2f0;
  __tsi64 s19603c2f1;
  long s19603c2f2;
  char s19603c2f3;
  void *s19603c2f4;
  int s19603c2f5;
  virtual  ~S19603C2(); // _ZN8S19603C2D2Ev
  S19603C2(); // tgen
};
//SIG(-1 S19603C2) C1{ BC2{ vd m Fc Fc:0 Fl[8] FD} VBC3{ BC2 VBC4{ BC2 Fp FC5{} Fp FD} vd v1 Fi Fc Fp Fi Fp[2] FC6{ BC4 VBC2 vd FC2 Fp}} vd Fp FL Fl Fc Fp Fi}


 S19603C2 ::~S19603C2(){ note_dtor("S19603C2", this);}
S19603C2 ::S19603C2(){ note_ctor("S19603C2", this);} // tgen

static void Test_S19603C2()
{
  extern Class_Descriptor cd_S19603C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(50,105)];
    init_test(&cd_S19603C2, buf);
    S19603C2 *dp, &lv = *(dp=new (buf) S19603C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(784,416), "sizeof(S19603C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19603C2)");
    /*is_ambiguous_... S19603C2::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*), 0, "S19603C2");
    /*is_ambiguous_... S19603C4::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19603C4*), ABISELECT(144,80), "S19603C2");
    check_base_class_offset(lv, (S8033C7*)(S19603C5*), ABISELECT(640,340), "S19603C2");
    check_base_class_offset(lv, (S19603C5*)(S19603C4*), ABISELECT(640,340), "S19603C2");
    check_base_class_offset(lv, (S19603C4*), ABISELECT(144,80), "S19603C2");
    check_field_offset(lv, s19603c2f0, ABISELECT(96,52), "S19603C2.s19603c2f0");
    check_field_offset(lv, s19603c2f1, ABISELECT(104,56), "S19603C2.s19603c2f1");
    check_field_offset(lv, s19603c2f2, ABISELECT(112,64), "S19603C2.s19603c2f2");
    check_field_offset(lv, s19603c2f3, ABISELECT(120,68), "S19603C2.s19603c2f3");
    check_field_offset(lv, s19603c2f4, ABISELECT(128,72), "S19603C2.s19603c2f4");
    check_field_offset(lv, s19603c2f5, ABISELECT(136,76), "S19603C2.s19603c2f5");
    test_class_info(&lv, &cd_S19603C2);
    dp->~S19603C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19603C2(Test_S19603C2, "S19603C2", ABISELECT(784,416));

#else // __cplusplus

extern void _ZN8S19603C2C1Ev();
extern void _ZN8S19603C2D2Ev();
Name_Map name_map_S19603C2[] = {
  NSPAIR(_ZN8S19603C2C1Ev),
  NSPAIR(_ZN8S19603C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19603C5;
extern VTBL_ENTRY _ZTI8S19603C5[];
extern  VTBL_ENTRY _ZTV8S19603C5[];
extern Class_Descriptor cd_S19603C4;
extern VTBL_ENTRY _ZTI8S19603C4[];
extern  VTBL_ENTRY _ZTV8S19603C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19603C4[];
static Base_Class bases_S19603C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S8033C7,    ABISELECT(144,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(640,340), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19603C5,    ABISELECT(640,340), //bcp->offset
    14, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19603C4,    ABISELECT(144,80), //bcp->offset
    6, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19603C2[];
extern void _ZN8S19603C2D1Ev();
extern void _ZN8S19603C2D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S19603C2D1Ev,_ZTv0_n16_N8S19603C2D1Ev)();
extern void ABISELECT(_ZThn144_N8S19603C2D1Ev,_ZThn80_N8S19603C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19603C2D0Ev,_ZTv0_n16_N8S19603C2D0Ev)();
extern void ABISELECT(_ZThn144_N8S19603C2D0Ev,_ZThn80_N8S19603C2D0Ev)() __attribute__((weak));
extern void _ZN8S19603C42v2Ev();
extern void ABISELECT(_ZTv0_n24_N8S19603C2D1Ev,_ZTv0_n12_N8S19603C2D1Ev)();
extern void ABISELECT(_ZThn640_N8S19603C2D1Ev,_ZThn340_N8S19603C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19603C2D0Ev,_ZTv0_n12_N8S19603C2D0Ev)();
extern void ABISELECT(_ZThn640_N8S19603C2D0Ev,_ZThn340_N8S19603C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19603C2[] = {
  ABISELECT(640,340),
  ABISELECT(144,80),
  0,
  (VTBL_ENTRY)&(_ZTI8S19603C2[0]),
  (VTBL_ENTRY)&_ZN8S19603C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19603C2D0Ev,
  0,
  ABISELECT(-144,-80),
  ABISELECT(496,260),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI8S19603C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19603C2D1Ev,_ZTv0_n16_N8S19603C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19603C2D0Ev,_ZTv0_n16_N8S19603C2D0Ev),
  (VTBL_ENTRY)&_ZN8S19603C42v2Ev,
  ABISELECT(-640,-340),
  ABISELECT(-640,-340),
  (VTBL_ENTRY)&(_ZTI8S19603C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C2D1Ev,_ZTv0_n12_N8S19603C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C2D0Ev,_ZTv0_n12_N8S19603C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S19603C2[];
extern void _ZN8S19603C4D1Ev();
extern void _ZN8S19603C4D0Ev();
extern void _ZN8S19603C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19603C4__8S19603C2[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19603C4[0]),
  (VTBL_ENTRY)&_ZN8S19603C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19603C4D0Ev,
  (VTBL_ENTRY)&_ZN8S19603C42v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19603C4D1Ev,_ZTv0_n12_N8S19603C4D1Ev)();
extern void ABISELECT(_ZThn496_N8S19603C4D1Ev,_ZThn260_N8S19603C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19603C4D0Ev,_ZTv0_n12_N8S19603C4D0Ev)();
extern void ABISELECT(_ZThn496_N8S19603C4D0Ev,_ZThn260_N8S19603C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19603C5__8S19603C4__8S19603C2[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI8S19603C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C4D1Ev,_ZTv0_n12_N8S19603C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C4D0Ev,_ZTv0_n12_N8S19603C4D0Ev),
};
static  VTT_ENTRY vtt_S19603C2[] = {
  {&(_ZTV8S19603C2[4]),  4,19},
  {&(_ZTV8S19603C2[11]),  11,19},
  {&(_ZTV8S19603C2[17]),  17,19},
  {&(_tg__ZTV8S19603C4__8S19603C2[3]),  3,6},
  {&(_tg__ZTV8S19603C5__8S19603C4__8S19603C2[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19603C2[];
extern  VTBL_ENTRY _ZTV8S19603C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19603C2[];
static VTBL_ENTRY alt_thunk_names144[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19603C4D0Ev,_ZTv0_n12_N8S19603C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19603C4D0Ev,_ZThn260_N8S19603C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19603C4D1Ev,_ZTv0_n12_N8S19603C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19603C4D1Ev,_ZThn260_N8S19603C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19603C2D0Ev,_ZTv0_n12_N8S19603C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N8S19603C2D0Ev,_ZThn340_N8S19603C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19603C2D1Ev,_ZTv0_n12_N8S19603C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N8S19603C2D1Ev,_ZThn340_N8S19603C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19603C2D0Ev,_ZTv0_n16_N8S19603C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S19603C2D0Ev,_ZThn80_N8S19603C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19603C2D1Ev,_ZTv0_n16_N8S19603C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S19603C2D1Ev,_ZThn80_N8S19603C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19603C2 = {  "S19603C2", // class name
  bases_S19603C2, 5,
  &(vtc_S19603C2[0]), // expected_vtbl_contents
  &(vtt_S19603C2[0]), // expected_vtt_contents
  ABISELECT(784,416), // object size
  NSPAIRA(_ZTI8S19603C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19603C2),19, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19603C2),5, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names144,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19603C10  : virtual S19603C5 {
  char s19603c10f0;
  short s19603c10f1;
  long double s19603c10f2;
  void *s19603c10f3[2];
  virtual void  v3(); // _ZN9S19603C102v3Ev
  ~S19603C10(); // tgen
  S19603C10(); // tgen
};
//SIG(-1 S19603C10) C1{ VBC2{ BC3{ vd m Fc Fc:0 Fl[8] FD} Fp FC4{} Fp FD} v1 Fc Fs FD Fp[2]}


void  S19603C10 ::v3(){vfunc_called(this, "_ZN9S19603C102v3Ev");}
S19603C10 ::~S19603C10(){ note_dtor("S19603C10", this);} // tgen
S19603C10 ::S19603C10(){ note_ctor("S19603C10", this);} // tgen

static void Test_S19603C10()
{
  extern Class_Descriptor cd_S19603C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,27)];
    init_test(&cd_S19603C10, buf);
    S19603C10 *dp, &lv = *(dp=new (buf) S19603C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,104), "sizeof(S19603C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19603C10)");
    check_base_class_offset(lv, (S8033C7*)(S19603C5*), ABISELECT(48,28), "S19603C10");
    check_base_class_offset(lv, (S19603C5*), ABISELECT(48,28), "S19603C10");
    check_field_offset(lv, s19603c10f0, ABISELECT(8,4), "S19603C10.s19603c10f0");
    check_field_offset(lv, s19603c10f1, ABISELECT(10,6), "S19603C10.s19603c10f1");
    check_field_offset(lv, s19603c10f2, ABISELECT(16,8), "S19603C10.s19603c10f2");
    check_field_offset(lv, s19603c10f3, ABISELECT(32,20), "S19603C10.s19603c10f3");
    test_class_info(&lv, &cd_S19603C10);
    dp->~S19603C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19603C10(Test_S19603C10, "S19603C10", ABISELECT(192,104));

#else // __cplusplus

extern void _ZN9S19603C10C1Ev();
extern void _ZN9S19603C10D1Ev();
Name_Map name_map_S19603C10[] = {
  NSPAIR(_ZN9S19603C10C1Ev),
  NSPAIR(_ZN9S19603C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19603C5;
extern VTBL_ENTRY _ZTI8S19603C5[];
extern  VTBL_ENTRY _ZTV8S19603C5[];
static Base_Class bases_S19603C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19603C5,    ABISELECT(48,28), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19603C10[];
extern void _ZN9S19603C102v3Ev();
extern void _ZN9S19603C10D1Ev();
extern void _ZN9S19603C10D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S19603C10D1Ev,_ZTv0_n12_N9S19603C10D1Ev)();
extern void ABISELECT(_ZThn48_N9S19603C10D1Ev,_ZThn28_N9S19603C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19603C10D0Ev,_ZTv0_n12_N9S19603C10D0Ev)();
extern void ABISELECT(_ZThn48_N9S19603C10D0Ev,_ZThn28_N9S19603C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19603C10[] = {
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19603C10[0]),
  (VTBL_ENTRY)&_ZN9S19603C102v3Ev,
  (VTBL_ENTRY)&_ZN9S19603C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19603C10D0Ev,
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19603C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19603C10D1Ev,_ZTv0_n12_N9S19603C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19603C10D0Ev,_ZTv0_n12_N9S19603C10D0Ev),
};
extern VTBL_ENTRY _ZTV9S19603C10[];
static  VTT_ENTRY vtt_S19603C10[] = {
  {&(_ZTV9S19603C10[3]),  3,11},
  {&(_ZTV9S19603C10[9]),  9,11},
};
extern VTBL_ENTRY _ZTI9S19603C10[];
extern  VTBL_ENTRY _ZTV9S19603C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19603C10[];
static VTBL_ENTRY alt_thunk_names145[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19603C10D0Ev,_ZTv0_n12_N9S19603C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19603C10D0Ev,_ZThn28_N9S19603C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19603C10D1Ev,_ZTv0_n12_N9S19603C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19603C10D1Ev,_ZThn28_N9S19603C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19603C10 = {  "S19603C10", // class name
  bases_S19603C10, 2,
  &(vtc_S19603C10[0]), // expected_vtbl_contents
  &(vtt_S19603C10[0]), // expected_vtt_contents
  ABISELECT(192,104), // object size
  NSPAIRA(_ZTI9S19603C10),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19603C10),11, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19603C10),2, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names145,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19603C9  : S19603C2 , virtual S19603C10 {
  char s19603c9f0;
  __tsi64 s19603c9f1:35;
  virtual  ~S19603C9(); // _ZN8S19603C9D2Ev
  S19603C9(); // tgen
};
//SIG(-1 S19603C9) C1{ BC2{ BC3{ vd m Fc Fc:0 Fl[8] FD} VBC4{ BC3 VBC5{ BC3 Fp FC6{} Fp FD} vd v1 Fi Fc Fp Fi Fp[2] FC7{ BC5 VBC3 vd FC3 Fp}} vd Fp FL Fl Fc Fp Fi} VBC8{ VBC5 v2 Fc Fs FD Fp[2]} vd Fc FL:35}


 S19603C9 ::~S19603C9(){ note_dtor("S19603C9", this);}
S19603C9 ::S19603C9(){ note_ctor("S19603C9", this);} // tgen

static void Test_S19603C9()
{
  extern Class_Descriptor cd_S19603C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(54,114)];
    init_test(&cd_S19603C9, buf);
    S19603C9 *dp, &lv = *(dp=new (buf) S19603C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(848,452), "sizeof(S19603C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19603C9)");
    /*is_ambiguous_... S19603C2::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19603C2*), 0, "S19603C9");
    /*is_ambiguous_... S19603C4::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19603C4*), ABISELECT(160,88), "S19603C9");
    check_base_class_offset(lv, (S8033C7*)(S19603C5*), ABISELECT(656,348), "S19603C9");
    check_base_class_offset(lv, (S19603C5*)(S19603C4*), ABISELECT(656,348), "S19603C9");
    check_base_class_offset(lv, (S19603C5*)(S19603C10*), ABISELECT(656,348), "S19603C9");
    check_base_class_offset(lv, (S19603C4*)(S19603C2*), ABISELECT(160,88), "S19603C9");
    check_base_class_offset(lv, (S19603C2*), 0, "S19603C9");
    check_base_class_offset(lv, (S19603C10*), ABISELECT(800,424), "S19603C9");
    check_field_offset(lv, s19603c9f0, ABISELECT(140,80), "S19603C9.s19603c9f0");
    set_bf_and_test(lv, s19603c9f1, ABISELECT(144,81), 0, 35, 1, "S19603C9");
    set_bf_and_test(lv, s19603c9f1, ABISELECT(144,81), 0, 35, hide_sll(1LL<<34), "S19603C9");
    test_class_info(&lv, &cd_S19603C9);
    dp->~S19603C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19603C9(Test_S19603C9, "S19603C9", ABISELECT(848,452));

#else // __cplusplus

extern void _ZN8S19603C9C1Ev();
extern void _ZN8S19603C9D2Ev();
Name_Map name_map_S19603C9[] = {
  NSPAIR(_ZN8S19603C9C1Ev),
  NSPAIR(_ZN8S19603C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19603C5;
extern VTBL_ENTRY _ZTI8S19603C5[];
extern  VTBL_ENTRY _ZTV8S19603C5[];
extern Class_Descriptor cd_S19603C4;
extern VTBL_ENTRY _ZTI8S19603C4[];
extern  VTBL_ENTRY _ZTV8S19603C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19603C4[];
extern Class_Descriptor cd_S19603C2;
extern VTBL_ENTRY _ZTI8S19603C2[];
extern  VTBL_ENTRY _ZTV8S19603C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19603C2[];
extern Class_Descriptor cd_S19603C10;
extern VTBL_ENTRY _ZTI9S19603C10[];
extern  VTBL_ENTRY _ZTV9S19603C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19603C10[];
static Base_Class bases_S19603C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(656,348), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19603C5,    ABISELECT(656,348), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19603C4,    ABISELECT(160,88), //bcp->offset
    7, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19603C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19603C10,    ABISELECT(800,424), //bcp->offset
    20, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19603C9[];
extern void _ZN8S19603C9D1Ev();
extern void _ZN8S19603C9D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S19603C9D1Ev,_ZTv0_n16_N8S19603C9D1Ev)();
extern void ABISELECT(_ZThn160_N8S19603C9D1Ev,_ZThn88_N8S19603C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19603C9D0Ev,_ZTv0_n16_N8S19603C9D0Ev)();
extern void ABISELECT(_ZThn160_N8S19603C9D0Ev,_ZThn88_N8S19603C9D0Ev)() __attribute__((weak));
extern void _ZN8S19603C42v2Ev();
extern void ABISELECT(_ZTv0_n24_N8S19603C9D1Ev,_ZTv0_n12_N8S19603C9D1Ev)();
extern void ABISELECT(_ZThn656_N8S19603C9D1Ev,_ZThn348_N8S19603C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19603C9D0Ev,_ZTv0_n12_N8S19603C9D0Ev)();
extern void ABISELECT(_ZThn656_N8S19603C9D0Ev,_ZThn348_N8S19603C9D0Ev)() __attribute__((weak));
extern void _ZN9S19603C102v3Ev();
extern void ABISELECT(_ZTv0_n40_N8S19603C9D1Ev,_ZTv0_n20_N8S19603C9D1Ev)();
extern void ABISELECT(_ZThn800_N8S19603C9D1Ev,_ZThn424_N8S19603C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19603C9D0Ev,_ZTv0_n20_N8S19603C9D0Ev)();
extern void ABISELECT(_ZThn800_N8S19603C9D0Ev,_ZThn424_N8S19603C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19603C9[] = {
  ABISELECT(800,424),
  ABISELECT(656,348),
  ABISELECT(160,88),
  0,
  (VTBL_ENTRY)&(_ZTI8S19603C9[0]),
  (VTBL_ENTRY)&_ZN8S19603C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19603C9D0Ev,
  0,
  ABISELECT(-160,-88),
  ABISELECT(496,260),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S19603C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19603C9D1Ev,_ZTv0_n16_N8S19603C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19603C9D0Ev,_ZTv0_n16_N8S19603C9D0Ev),
  (VTBL_ENTRY)&_ZN8S19603C42v2Ev,
  ABISELECT(-656,-348),
  ABISELECT(-656,-348),
  (VTBL_ENTRY)&(_ZTI8S19603C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C9D1Ev,_ZTv0_n12_N8S19603C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C9D0Ev,_ZTv0_n12_N8S19603C9D0Ev),
  ABISELECT(-800,-424),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-800,-424),
  (VTBL_ENTRY)&(_ZTI8S19603C9[0]),
  (VTBL_ENTRY)&_ZN9S19603C102v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19603C9D1Ev,_ZTv0_n20_N8S19603C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19603C9D0Ev,_ZTv0_n20_N8S19603C9D0Ev),
};
extern VTBL_ENTRY _ZTV8S19603C9[];
extern void _ZN8S19603C2D1Ev();
extern void _ZN8S19603C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19603C2__8S19603C9[] = {
  ABISELECT(656,348),
  ABISELECT(160,88),
  0,
  (VTBL_ENTRY)&(_ZTI8S19603C2[0]),
  (VTBL_ENTRY)&_ZN8S19603C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19603C2D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19603C2D1Ev,_ZTv0_n16_N8S19603C2D1Ev)();
extern void ABISELECT(_ZThn160_N8S19603C2D1Ev,_ZThn88_N8S19603C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19603C2D0Ev,_ZTv0_n16_N8S19603C2D0Ev)();
extern void ABISELECT(_ZThn160_N8S19603C2D0Ev,_ZThn88_N8S19603C2D0Ev)() __attribute__((weak));
extern void _ZN8S19603C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19603C4__8S19603C2__8S19603C9[] = {
  0,
  ABISELECT(-160,-88),
  ABISELECT(496,260),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S19603C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19603C2D1Ev,_ZTv0_n16_N8S19603C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19603C2D0Ev,_ZTv0_n16_N8S19603C2D0Ev),
  (VTBL_ENTRY)&_ZN8S19603C42v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19603C2D1Ev,_ZTv0_n12_N8S19603C2D1Ev)();
extern void ABISELECT(_ZThn656_N8S19603C2D1Ev,_ZThn348_N8S19603C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19603C2D0Ev,_ZTv0_n12_N8S19603C2D0Ev)();
extern void ABISELECT(_ZThn656_N8S19603C2D0Ev,_ZThn348_N8S19603C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19603C5__8S19603C2__8S19603C9[] = {
  ABISELECT(-656,-348),
  ABISELECT(-656,-348),
  (VTBL_ENTRY)&(_ZTI8S19603C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C2D1Ev,_ZTv0_n12_N8S19603C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C2D0Ev,_ZTv0_n12_N8S19603C2D0Ev),
};
extern void _ZN8S19603C4D1Ev();
extern void _ZN8S19603C4D0Ev();
extern void _ZN8S19603C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19603C4__8S19603C9[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19603C4[0]),
  (VTBL_ENTRY)&_ZN8S19603C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19603C4D0Ev,
  (VTBL_ENTRY)&_ZN8S19603C42v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19603C4D1Ev,_ZTv0_n12_N8S19603C4D1Ev)();
extern void ABISELECT(_ZThn496_N8S19603C4D1Ev,_ZThn260_N8S19603C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19603C4D0Ev,_ZTv0_n12_N8S19603C4D0Ev)();
extern void ABISELECT(_ZThn496_N8S19603C4D0Ev,_ZThn260_N8S19603C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19603C5__8S19603C4__8S19603C9[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI8S19603C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C4D1Ev,_ZTv0_n12_N8S19603C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C4D0Ev,_ZTv0_n12_N8S19603C4D0Ev),
};
extern void _ZN9S19603C102v3Ev();
extern void _ZN9S19603C10D1Ev();
extern void _ZN9S19603C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19603C10__8S19603C9[] = {
  ABISELECT(-144,-76),
  0,
  (VTBL_ENTRY)&(_ZTI9S19603C10[0]),
  (VTBL_ENTRY)&_ZN9S19603C102v3Ev,
  (VTBL_ENTRY)&_ZN9S19603C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19603C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19603C10D1Ev,_ZTv0_n12_N9S19603C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19603C10D0Ev,_ZTv0_n12_N9S19603C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19603C5__9S19603C10__8S19603C9[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI9S19603C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19603C10D1Ev,_ZTv0_n12_N9S19603C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19603C10D0Ev,_ZTv0_n12_N9S19603C10D0Ev),
};
static  VTT_ENTRY vtt_S19603C9[] = {
  {&(_ZTV8S19603C9[5]),  5,28},
  {&(_tg__ZTV8S19603C2__8S19603C9[4]),  4,6},
  {&(_tg__ZTV8S19603C4__8S19603C2__8S19603C9[5]),  5,8},
  {&(_tg__ZTV8S19603C5__8S19603C2__8S19603C9[3]),  3,5},
  {&(_ZTV8S19603C9[12]),  12,28},
  {&(_ZTV8S19603C9[18]),  18,28},
  {&(_ZTV8S19603C9[25]),  25,28},
  {&(_tg__ZTV8S19603C4__8S19603C9[3]),  3,6},
  {&(_tg__ZTV8S19603C5__8S19603C4__8S19603C9[3]),  3,5},
  {&(_tg__ZTV9S19603C10__8S19603C9[3]),  3,6},
  {&(_tg__ZTV8S19603C5__9S19603C10__8S19603C9[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19603C9[];
extern  VTBL_ENTRY _ZTV8S19603C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19603C9[];
static VTBL_ENTRY alt_thunk_names146[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19603C4D0Ev,_ZTv0_n12_N8S19603C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19603C4D0Ev,_ZThn260_N8S19603C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19603C4D1Ev,_ZTv0_n12_N8S19603C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19603C4D1Ev,_ZThn260_N8S19603C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19603C2D0Ev,_ZTv0_n12_N8S19603C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S19603C2D0Ev,_ZThn348_N8S19603C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19603C2D1Ev,_ZTv0_n12_N8S19603C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S19603C2D1Ev,_ZThn348_N8S19603C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19603C2D0Ev,_ZTv0_n16_N8S19603C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19603C2D0Ev,_ZThn88_N8S19603C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19603C2D1Ev,_ZTv0_n16_N8S19603C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19603C2D1Ev,_ZThn88_N8S19603C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19603C9D0Ev,_ZTv0_n20_N8S19603C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn800_N8S19603C9D0Ev,_ZThn424_N8S19603C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19603C9D1Ev,_ZTv0_n20_N8S19603C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn800_N8S19603C9D1Ev,_ZThn424_N8S19603C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19603C9D0Ev,_ZTv0_n12_N8S19603C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S19603C9D0Ev,_ZThn348_N8S19603C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19603C9D1Ev,_ZTv0_n12_N8S19603C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S19603C9D1Ev,_ZThn348_N8S19603C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19603C9D0Ev,_ZTv0_n16_N8S19603C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19603C9D0Ev,_ZThn88_N8S19603C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19603C9D1Ev,_ZTv0_n16_N8S19603C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19603C9D1Ev,_ZThn88_N8S19603C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19603C9 = {  "S19603C9", // class name
  bases_S19603C9, 7,
  &(vtc_S19603C9[0]), // expected_vtbl_contents
  &(vtt_S19603C9[0]), // expected_vtt_contents
  ABISELECT(848,452), // object size
  NSPAIRA(_ZTI8S19603C9),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19603C9),28, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19603C9),11, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names146,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19603C12  {
  long double s19603c12f0;
  void *s19603c12f1;
  ::S8033C7 s19603c12f2;
  __tsi64 s19603c12f3;
  long double s19603c12f4;
  int s19603c12f5;
  virtual void  v4(); // _ZN9S19603C122v4Ev
  ~S19603C12(); // tgen
  S19603C12(); // tgen
};
//SIG(-1 S19603C12) C1{ v1 FD Fp FC2{ vd m Fc Fc:0 Fl[8] FD} FL FD Fi}


void  S19603C12 ::v4(){vfunc_called(this, "_ZN9S19603C122v4Ev");}
S19603C12 ::~S19603C12(){ note_dtor("S19603C12", this);} // tgen
S19603C12 ::S19603C12(){ note_ctor("S19603C12", this);} // tgen

static void Test_S19603C12()
{
  extern Class_Descriptor cd_S19603C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,25)];
    init_test(&cd_S19603C12, buf);
    S19603C12 *dp, &lv = *(dp=new (buf) S19603C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,96), "sizeof(S19603C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19603C12)");
    check_field_offset(lv, s19603c12f0, ABISELECT(16,4), "S19603C12.s19603c12f0");
    check_field_offset(lv, s19603c12f1, ABISELECT(32,16), "S19603C12.s19603c12f1");
    check_field_offset(lv, s19603c12f2, ABISELECT(48,20), "S19603C12.s19603c12f2");
    check_field_offset(lv, s19603c12f3, ABISELECT(144,72), "S19603C12.s19603c12f3");
    check_field_offset(lv, s19603c12f4, ABISELECT(160,80), "S19603C12.s19603c12f4");
    check_field_offset(lv, s19603c12f5, ABISELECT(176,92), "S19603C12.s19603c12f5");
    test_class_info(&lv, &cd_S19603C12);
    dp->~S19603C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19603C12(Test_S19603C12, "S19603C12", ABISELECT(192,96));

#else // __cplusplus

extern void _ZN9S19603C12C1Ev();
extern void _ZN9S19603C12D1Ev();
Name_Map name_map_S19603C12[] = {
  NSPAIR(_ZN9S19603C12C1Ev),
  NSPAIR(_ZN9S19603C12D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S19603C12[];
extern void _ZN9S19603C122v4Ev();
static  VTBL_ENTRY vtc_S19603C12[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S19603C12[0]),
  (VTBL_ENTRY)&_ZN9S19603C122v4Ev,
};
extern VTBL_ENTRY _ZTI9S19603C12[];
extern  VTBL_ENTRY _ZTV9S19603C12[];
Class_Descriptor cd_S19603C12 = {  "S19603C12", // class name
  0,0,//no base classes
  &(vtc_S19603C12[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(192,96), // object size
  NSPAIRA(_ZTI9S19603C12),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S19603C12),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19603C8  : virtual S19603C7 , virtual S19603C4 , virtual S19603C9 , virtual S8033C4 , virtual S19603C12 {
  void *s19603c8f0;
  ::S19603C12 s19603c8f1[3];
  ::S19603C12 s19603c8f2;
  char s19603c8f3;
  virtual  ~S19603C8(); // _ZN8S19603C8D2Ev
  S19603C8(); // tgen
};
//SIG(-1 S19603C8) C1{ VBC2{ BC3{ BC4{ vd m Fc Fc:0 Fl[8] FD} Fp FC5{} Fp FD} VBC4 vd FC4 Fp} VBC6{ BC4 VBC3 vd v1 Fi Fc Fp Fi Fp[2] FC2} VBC7{ BC8{ BC4 VBC6 vd Fp FL Fl Fc Fp Fi} VBC9{ VBC3 v2 Fc Fs FD Fp[2]} vd Fc FL:35} VBC10{ m Fp[3] FL[8]} VBC11{ v3 FD Fp FC4 FL FD Fi} vd Fp FC11[3] FC11 Fc}


 S19603C8 ::~S19603C8(){ note_dtor("S19603C8", this);}
S19603C8 ::S19603C8(){ note_ctor("S19603C8", this);} // tgen

static void Test_S19603C8()
{
  extern Class_Descriptor cd_S19603C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(144,302)];
    init_test(&cd_S19603C8, buf);
    S19603C8 *dp, &lv = *(dp=new (buf) S19603C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2288,1204), "sizeof(S19603C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19603C8)");
    check_base_class_offset(lv, (S8033C7*)(S19603C5*)(S19603C7*), ABISELECT(800,396), "S19603C8");
    check_base_class_offset(lv, (S19603C5*)(S19603C7*), ABISELECT(800,396), "S19603C8");
    /*is_ambiguous_... S19603C7::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19603C7*), ABISELECT(1056,528), "S19603C8");
    check_base_class_offset(lv, (S19603C7*), ABISELECT(800,396), "S19603C8");
    /*is_ambiguous_... S19603C4::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19603C4*), ABISELECT(1152,580), "S19603C8");
    /*is_ambiguous_... S19603C8::S19603C5 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19603C5*), ABISELECT(1648,840), "S19603C8");
    check_base_class_offset(lv, (S19603C5*)(S19603C4*), ABISELECT(1648,840), "S19603C8");
    check_base_class_offset(lv, (S19603C5*)(S19603C10*), ABISELECT(1648,840), "S19603C8");
    check_base_class_offset(lv, (S19603C4*), ABISELECT(1152,580), "S19603C8");
    check_base_class_offset(lv, (S19603C4*)(S19603C2*)(S19603C9*), ABISELECT(1152,580), "S19603C8");
    /*is_ambiguous_... S19603C2::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19603C2*)(S19603C9*), ABISELECT(1792,916), "S19603C8");
    check_base_class_offset(lv, (S19603C2*)(S19603C9*), ABISELECT(1792,916), "S19603C8");
    check_base_class_offset(lv, (S19603C10*)(S19603C9*), ABISELECT(1952,1004), "S19603C8");
    check_base_class_offset(lv, (S19603C9*), ABISELECT(1792,916), "S19603C8");
    check_base_class_offset(lv, (S8033C4*), ABISELECT(2000,1032), "S19603C8");
    check_base_class_offset(lv, (S19603C12*), ABISELECT(2096,1108), "S19603C8");
    check_field_offset(lv, s19603c8f0, ABISELECT(8,4), "S19603C8.s19603c8f0");
    check_field_offset(lv, s19603c8f1, ABISELECT(16,8), "S19603C8.s19603c8f1");
    check_field_offset(lv, s19603c8f2, ABISELECT(592,296), "S19603C8.s19603c8f2");
    check_field_offset(lv, s19603c8f3, ABISELECT(784,392), "S19603C8.s19603c8f3");
    test_class_info(&lv, &cd_S19603C8);
    dp->~S19603C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19603C8(Test_S19603C8, "S19603C8", ABISELECT(2288,1204));

#else // __cplusplus

extern void _ZN8S19603C8C1Ev();
extern void _ZN8S19603C8D2Ev();
Name_Map name_map_S19603C8[] = {
  NSPAIR(_ZN8S19603C8C1Ev),
  NSPAIR(_ZN8S19603C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19603C5;
extern VTBL_ENTRY _ZTI8S19603C5[];
extern  VTBL_ENTRY _ZTV8S19603C5[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19603C7;
extern VTBL_ENTRY _ZTI8S19603C7[];
extern  VTBL_ENTRY _ZTV8S19603C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19603C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19603C5;
extern VTBL_ENTRY _ZTI8S19603C5[];
extern  VTBL_ENTRY _ZTV8S19603C5[];
extern Class_Descriptor cd_S19603C4;
extern VTBL_ENTRY _ZTI8S19603C4[];
extern  VTBL_ENTRY _ZTV8S19603C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19603C4[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19603C2;
extern VTBL_ENTRY _ZTI8S19603C2[];
extern  VTBL_ENTRY _ZTV8S19603C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19603C2[];
extern Class_Descriptor cd_S19603C10;
extern VTBL_ENTRY _ZTI9S19603C10[];
extern  VTBL_ENTRY _ZTV9S19603C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19603C10[];
extern Class_Descriptor cd_S19603C9;
extern VTBL_ENTRY _ZTI8S19603C9[];
extern  VTBL_ENTRY _ZTV8S19603C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19603C9[];
extern Class_Descriptor cd_S8033C4;
extern VTBL_ENTRY _ZTI7S8033C4[];
extern Class_Descriptor cd_S19603C12;
extern VTBL_ENTRY _ZTI9S19603C12[];
extern  VTBL_ENTRY _ZTV9S19603C12[];
static Base_Class bases_S19603C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    ABISELECT(800,396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19603C5,    ABISELECT(800,396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(1056,528), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19603C7,    ABISELECT(800,396), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C7,    ABISELECT(1152,580), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(1648,840), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19603C5,    ABISELECT(1648,840), //bcp->offset
    31, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19603C4,    ABISELECT(1152,580), //bcp->offset
    23, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C7,    ABISELECT(1792,916), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19603C2,    ABISELECT(1792,916), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19603C10,    ABISELECT(1952,1004), //bcp->offset
    44, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19603C9,    ABISELECT(1792,916), //bcp->offset
    36, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C4,    ABISELECT(2000,1032), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19603C12,    ABISELECT(2096,1108), //bcp->offset
    52, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19603C8[];
extern void _ZN8S19603C8D1Ev();
extern void _ZN8S19603C8D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S19603C8D1Ev,_ZTv0_n16_N8S19603C8D1Ev)();
extern void ABISELECT(_ZThn800_N8S19603C8D1Ev,_ZThn396_N8S19603C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19603C8D0Ev,_ZTv0_n16_N8S19603C8D0Ev)();
extern void ABISELECT(_ZThn800_N8S19603C8D0Ev,_ZThn396_N8S19603C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19603C8D1Ev,_ZTv0_n12_N8S19603C8D1Ev)();
extern void ABISELECT(_ZThn1056_N8S19603C8D1Ev,_ZThn528_N8S19603C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19603C8D0Ev,_ZTv0_n12_N8S19603C8D0Ev)();
extern void ABISELECT(_ZThn1056_N8S19603C8D0Ev,_ZThn528_N8S19603C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19603C8D1Ev,_ZTv0_n16_N8S19603C8D1Ev)();
extern void ABISELECT(_ZThn1152_N8S19603C8D1Ev,_ZThn580_N8S19603C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19603C8D0Ev,_ZTv0_n16_N8S19603C8D0Ev)();
extern void ABISELECT(_ZThn1152_N8S19603C8D0Ev,_ZThn580_N8S19603C8D0Ev)() __attribute__((weak));
extern void _ZN8S19603C42v2Ev();
extern void ABISELECT(_ZTv0_n24_N8S19603C8D1Ev,_ZTv0_n12_N8S19603C8D1Ev)();
extern void ABISELECT(_ZThn1648_N8S19603C8D1Ev,_ZThn840_N8S19603C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19603C8D0Ev,_ZTv0_n12_N8S19603C8D0Ev)();
extern void ABISELECT(_ZThn1648_N8S19603C8D0Ev,_ZThn840_N8S19603C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19603C8D1Ev,_ZTv0_n24_N8S19603C8D1Ev)();
extern void ABISELECT(_ZThn1792_N8S19603C8D1Ev,_ZThn916_N8S19603C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19603C8D0Ev,_ZTv0_n24_N8S19603C8D0Ev)();
extern void ABISELECT(_ZThn1792_N8S19603C8D0Ev,_ZThn916_N8S19603C8D0Ev)() __attribute__((weak));
extern void _ZN9S19603C102v3Ev();
extern void ABISELECT(_ZTv0_n40_N8S19603C8D1Ev,_ZTv0_n20_N8S19603C8D1Ev)();
extern void ABISELECT(_ZThn1952_N8S19603C8D1Ev,_ZThn1004_N8S19603C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19603C8D0Ev,_ZTv0_n20_N8S19603C8D0Ev)();
extern void ABISELECT(_ZThn1952_N8S19603C8D0Ev,_ZThn1004_N8S19603C8D0Ev)() __attribute__((weak));
extern void _ZN9S19603C122v4Ev();
static  VTBL_ENTRY vtc_S19603C8[] = {
  ABISELECT(2096,1108),
  ABISELECT(2000,1032),
  ABISELECT(1952,1004),
  ABISELECT(1792,916),
  ABISELECT(1648,840),
  ABISELECT(1152,580),
  ABISELECT(1056,528),
  ABISELECT(800,396),
  0,
  (VTBL_ENTRY)&(_ZTI8S19603C8[0]),
  (VTBL_ENTRY)&_ZN8S19603C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19603C8D0Ev,
  ABISELECT(-800,-396),
  ABISELECT(256,132),
  ABISELECT(-800,-396),
  (VTBL_ENTRY)&(_ZTI8S19603C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19603C8D1Ev,_ZTv0_n16_N8S19603C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19603C8D0Ev,_ZTv0_n16_N8S19603C8D0Ev),
  ABISELECT(-1056,-528),
  ABISELECT(-1056,-528),
  (VTBL_ENTRY)&(_ZTI8S19603C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C8D1Ev,_ZTv0_n12_N8S19603C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C8D0Ev,_ZTv0_n12_N8S19603C8D0Ev),
  0,
  ABISELECT(-1152,-580),
  ABISELECT(496,260),
  ABISELECT(-1152,-580),
  (VTBL_ENTRY)&(_ZTI8S19603C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19603C8D1Ev,_ZTv0_n16_N8S19603C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19603C8D0Ev,_ZTv0_n16_N8S19603C8D0Ev),
  (VTBL_ENTRY)&_ZN8S19603C42v2Ev,
  ABISELECT(-1648,-840),
  ABISELECT(-1648,-840),
  (VTBL_ENTRY)&(_ZTI8S19603C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C8D1Ev,_ZTv0_n12_N8S19603C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C8D0Ev,_ZTv0_n12_N8S19603C8D0Ev),
  ABISELECT(-1792,-916),
  ABISELECT(160,88),
  ABISELECT(-144,-76),
  ABISELECT(-640,-336),
  ABISELECT(-1792,-916),
  (VTBL_ENTRY)&(_ZTI8S19603C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19603C8D1Ev,_ZTv0_n24_N8S19603C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19603C8D0Ev,_ZTv0_n24_N8S19603C8D0Ev),
  ABISELECT(-1952,-1004),
  0,
  ABISELECT(-304,-164),
  ABISELECT(-1952,-1004),
  (VTBL_ENTRY)&(_ZTI8S19603C8[0]),
  (VTBL_ENTRY)&_ZN9S19603C102v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19603C8D1Ev,_ZTv0_n20_N8S19603C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19603C8D0Ev,_ZTv0_n20_N8S19603C8D0Ev),
  0,
  ABISELECT(-2096,-1108),
  (VTBL_ENTRY)&(_ZTI8S19603C8[0]),
  (VTBL_ENTRY)&_ZN9S19603C122v4Ev,
};
extern VTBL_ENTRY _ZTV8S19603C8[];
extern void _ZN8S19603C7D1Ev();
extern void _ZN8S19603C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19603C7__8S19603C8[] = {
  ABISELECT(256,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S19603C7[0]),
  (VTBL_ENTRY)&_ZN8S19603C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19603C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19603C7D1Ev,_ZTv0_n12_N8S19603C7D1Ev)();
extern void ABISELECT(_ZThn256_N8S19603C7D1Ev,_ZThn132_N8S19603C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19603C7D0Ev,_ZTv0_n12_N8S19603C7D0Ev)();
extern void ABISELECT(_ZThn256_N8S19603C7D0Ev,_ZThn132_N8S19603C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__8S19603C7__8S19603C8[] = {
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  (VTBL_ENTRY)&(_ZTI8S19603C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C7D1Ev,_ZTv0_n12_N8S19603C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C7D0Ev,_ZTv0_n12_N8S19603C7D0Ev),
};
extern void _ZN8S19603C4D1Ev();
extern void _ZN8S19603C4D0Ev();
extern void _ZN8S19603C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19603C4__8S19603C8[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19603C4[0]),
  (VTBL_ENTRY)&_ZN8S19603C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19603C4D0Ev,
  (VTBL_ENTRY)&_ZN8S19603C42v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19603C4D1Ev,_ZTv0_n12_N8S19603C4D1Ev)();
extern void ABISELECT(_ZThn496_N8S19603C4D1Ev,_ZThn260_N8S19603C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19603C4D0Ev,_ZTv0_n12_N8S19603C4D0Ev)();
extern void ABISELECT(_ZThn496_N8S19603C4D0Ev,_ZThn260_N8S19603C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19603C5__8S19603C4__8S19603C8[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI8S19603C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C4D1Ev,_ZTv0_n12_N8S19603C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C4D0Ev,_ZTv0_n12_N8S19603C4D0Ev),
};
extern void _ZN8S19603C9D1Ev();
extern void _ZN8S19603C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19603C9__8S19603C8[] = {
  ABISELECT(160,88),
  ABISELECT(-144,-76),
  ABISELECT(-640,-336),
  0,
  (VTBL_ENTRY)&(_ZTI8S19603C9[0]),
  (VTBL_ENTRY)&_ZN8S19603C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19603C9D0Ev,
};
extern void _ZN8S19603C2D1Ev();
extern void _ZN8S19603C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19603C28S19603C9__8S19603C8[] = {
  ABISELECT(-144,-76),
  ABISELECT(-640,-336),
  0,
  (VTBL_ENTRY)&(_ZTI8S19603C2[0]),
  (VTBL_ENTRY)&_ZN8S19603C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19603C2D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19603C2D1Ev,_ZTv0_n16_N8S19603C2D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19603C2D0Ev,_ZTv0_n16_N8S19603C2D0Ev)();
extern void _ZN8S19603C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19603C4__8S19603C28S19603C9__8S19603C8[] = {
  0,
  ABISELECT(640,336),
  ABISELECT(496,260),
  ABISELECT(640,336),
  (VTBL_ENTRY)&(_ZTI8S19603C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19603C2D1Ev,_ZTv0_n16_N8S19603C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19603C2D0Ev,_ZTv0_n16_N8S19603C2D0Ev),
  (VTBL_ENTRY)&_ZN8S19603C42v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19603C2D1Ev,_ZTv0_n12_N8S19603C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19603C2D0Ev,_ZTv0_n12_N8S19603C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19603C5__8S19603C28S19603C9__8S19603C8[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S19603C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C2D1Ev,_ZTv0_n12_N8S19603C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C2D0Ev,_ZTv0_n12_N8S19603C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19603C9D1Ev,_ZTv0_n16_N8S19603C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19603C9D0Ev,_ZTv0_n16_N8S19603C9D0Ev)();
extern void _ZN8S19603C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19603C4__8S19603C9__8S19603C8[] = {
  0,
  ABISELECT(640,336),
  ABISELECT(496,260),
  ABISELECT(640,336),
  (VTBL_ENTRY)&(_ZTI8S19603C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19603C9D1Ev,_ZTv0_n16_N8S19603C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19603C9D0Ev,_ZTv0_n16_N8S19603C9D0Ev),
  (VTBL_ENTRY)&_ZN8S19603C42v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19603C9D1Ev,_ZTv0_n12_N8S19603C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19603C9D0Ev,_ZTv0_n12_N8S19603C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19603C5__8S19603C9__8S19603C8[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S19603C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C9D1Ev,_ZTv0_n12_N8S19603C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C9D0Ev,_ZTv0_n12_N8S19603C9D0Ev),
};
extern void _ZN9S19603C102v3Ev();
extern void ABISELECT(_ZTv0_n40_N8S19603C9D1Ev,_ZTv0_n20_N8S19603C9D1Ev)();
extern void ABISELECT(_ZThn160_N8S19603C9D1Ev,_ZThn88_N8S19603C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19603C9D0Ev,_ZTv0_n20_N8S19603C9D0Ev)();
extern void ABISELECT(_ZThn160_N8S19603C9D0Ev,_ZThn88_N8S19603C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19603C10__8S19603C9__8S19603C8[] = {
  ABISELECT(-160,-88),
  0,
  ABISELECT(-304,-164),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S19603C9[0]),
  (VTBL_ENTRY)&_ZN9S19603C102v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19603C9D1Ev,_ZTv0_n20_N8S19603C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19603C9D0Ev,_ZTv0_n20_N8S19603C9D0Ev),
};
extern void _ZN9S19603C102v3Ev();
extern void _ZN9S19603C10D1Ev();
extern void _ZN9S19603C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19603C10__8S19603C8[] = {
  ABISELECT(-304,-164),
  0,
  (VTBL_ENTRY)&(_ZTI9S19603C10[0]),
  (VTBL_ENTRY)&_ZN9S19603C102v3Ev,
  (VTBL_ENTRY)&_ZN9S19603C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19603C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19603C10D1Ev,_ZTv0_n12_N9S19603C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19603C10D0Ev,_ZTv0_n12_N9S19603C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19603C5__9S19603C10__8S19603C8[] = {
  ABISELECT(304,164),
  ABISELECT(304,164),
  (VTBL_ENTRY)&(_ZTI9S19603C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19603C10D1Ev,_ZTv0_n12_N9S19603C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19603C10D0Ev,_ZTv0_n12_N9S19603C10D0Ev),
};
static  VTT_ENTRY vtt_S19603C8[] = {
  {&(_ZTV8S19603C8[10]),  10,56},
  {&(_ZTV8S19603C8[16]),  16,56},
  {&(_ZTV8S19603C8[21]),  21,56},
  {&(_ZTV8S19603C8[28]),  28,56},
  {&(_ZTV8S19603C8[34]),  34,56},
  {&(_ZTV8S19603C8[42]),  42,56},
  {&(_ZTV8S19603C8[49]),  49,56},
  {&(_ZTV8S19603C8[55]),  55,56},
  {&(_tg__ZTV8S19603C7__8S19603C8[3]),  3,5},
  {&(_tg__ZTV7S8033C7__A1__8S19603C7__8S19603C8[3]),  3,5},
  {&(_tg__ZTV8S19603C4__8S19603C8[3]),  3,6},
  {&(_tg__ZTV8S19603C5__8S19603C4__8S19603C8[3]),  3,5},
  {&(_tg__ZTV8S19603C9__8S19603C8[5]),  5,7},
  {&(_tg__ZTV8S19603C28S19603C9__8S19603C8[4]),  4,6},
  {&(_tg__ZTV8S19603C4__8S19603C28S19603C9__8S19603C8[5]),  5,8},
  {&(_tg__ZTV8S19603C5__8S19603C28S19603C9__8S19603C8[3]),  3,5},
  {&(_tg__ZTV8S19603C4__8S19603C9__8S19603C8[5]),  5,8},
  {&(_tg__ZTV8S19603C5__8S19603C9__8S19603C8[3]),  3,5},
  {&(_tg__ZTV9S19603C10__8S19603C9__8S19603C8[5]),  5,8},
  {&(_tg__ZTV9S19603C10__8S19603C8[3]),  3,6},
  {&(_tg__ZTV8S19603C5__9S19603C10__8S19603C8[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19603C8[];
extern  VTBL_ENTRY _ZTV8S19603C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19603C8[];
static VTBL_ENTRY alt_thunk_names147[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19603C9D0Ev,_ZTv0_n20_N8S19603C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19603C9D0Ev,_ZThn88_N8S19603C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19603C9D1Ev,_ZTv0_n20_N8S19603C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19603C9D1Ev,_ZThn88_N8S19603C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19603C4D0Ev,_ZTv0_n12_N8S19603C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19603C4D0Ev,_ZThn260_N8S19603C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19603C4D1Ev,_ZTv0_n12_N8S19603C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19603C4D1Ev,_ZThn260_N8S19603C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19603C7D0Ev,_ZTv0_n12_N8S19603C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19603C7D0Ev,_ZThn132_N8S19603C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19603C7D1Ev,_ZTv0_n12_N8S19603C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19603C7D1Ev,_ZThn132_N8S19603C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19603C8D0Ev,_ZTv0_n20_N8S19603C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1952_N8S19603C8D0Ev,_ZThn1004_N8S19603C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19603C8D1Ev,_ZTv0_n20_N8S19603C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1952_N8S19603C8D1Ev,_ZThn1004_N8S19603C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19603C8D0Ev,_ZTv0_n24_N8S19603C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1792_N8S19603C8D0Ev,_ZThn916_N8S19603C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19603C8D1Ev,_ZTv0_n24_N8S19603C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1792_N8S19603C8D1Ev,_ZThn916_N8S19603C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19603C8D0Ev,_ZTv0_n12_N8S19603C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1648_N8S19603C8D0Ev,_ZThn840_N8S19603C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1056_N8S19603C8D0Ev,_ZThn528_N8S19603C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19603C8D1Ev,_ZTv0_n12_N8S19603C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1648_N8S19603C8D1Ev,_ZThn840_N8S19603C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1056_N8S19603C8D1Ev,_ZThn528_N8S19603C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19603C8D0Ev,_ZTv0_n16_N8S19603C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1152_N8S19603C8D0Ev,_ZThn580_N8S19603C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn800_N8S19603C8D0Ev,_ZThn396_N8S19603C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19603C8D1Ev,_ZTv0_n16_N8S19603C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1152_N8S19603C8D1Ev,_ZThn580_N8S19603C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn800_N8S19603C8D1Ev,_ZThn396_N8S19603C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19603C8 = {  "S19603C8", // class name
  bases_S19603C8, 14,
  &(vtc_S19603C8[0]), // expected_vtbl_contents
  &(vtt_S19603C8[0]), // expected_vtt_contents
  ABISELECT(2288,1204), // object size
  NSPAIRA(_ZTI8S19603C8),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19603C8),56, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19603C8),21, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names147,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19603C1  : virtual S19603C2 , virtual S19603C8 , S19603C12 {
  int s19603c1f0;
  long s19603c1f1;
  virtual  ~S19603C1(); // _ZN8S19603C1D2Ev
  virtual void  v1(); // _ZN8S19603C12v1Ev
  S19603C1(); // tgen
};
//SIG(1 S19603C1) C1{ VBC2{ BC3{ vd m Fc Fc:0 Fl[8] FD} VBC4{ BC3 VBC5{ BC3 Fp FC6{} Fp FD} vd v2 Fi Fc Fp Fi Fp[2] FC7{ BC5 VBC3 vd FC3 Fp}} vd Fp FL Fl Fc Fp Fi} VBC8{ VBC7 VBC4 VBC9{ BC2 VBC10{ VBC5 v3 Fc Fs FD Fp[2]} vd Fc FL:35} VBC11{ m Fp[3] FL[8]} VBC12{ v4 FD Fp FC3 FL FD Fi} vd Fp FC12[3] FC12 Fc} BC12 vd v1 Fi Fl}


 S19603C1 ::~S19603C1(){ note_dtor("S19603C1", this);}
void  S19603C1 ::v1(){vfunc_called(this, "_ZN8S19603C12v1Ev");}
S19603C1 ::S19603C1(){ note_ctor("S19603C1", this);} // tgen

static void Test_S19603C1()
{
  extern Class_Descriptor cd_S19603C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(165,348)];
    init_test(&cd_S19603C1, buf);
    S19603C1 *dp, &lv = *(dp=new (buf) S19603C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2624,1388), "sizeof(S19603C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19603C1)");
    /*is_ambiguous_... S19603C1::S19603C2 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19603C2*), ABISELECT(192,104), "S19603C1");
    /*is_ambiguous_... S19603C4::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19603C4*), ABISELECT(336,184), "S19603C1");
    /*is_ambiguous_... S19603C1::S19603C5 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19603C5*), ABISELECT(832,444), "S19603C1");
    check_base_class_offset(lv, (S19603C5*)(S19603C4*), ABISELECT(832,444), "S19603C1");
    check_base_class_offset(lv, (S19603C5*)(S19603C10*), ABISELECT(832,444), "S19603C1");
    /*is_ambiguous_... S19603C1::S19603C2 */ AMB_check_base_class_offset(lv, (S19603C4*)(S19603C2*), ABISELECT(336,184), "S19603C1");
    check_base_class_offset(lv, (S19603C4*)(S19603C8*), ABISELECT(336,184), "S19603C1");
    check_base_class_offset(lv, (S19603C4*)(S19603C2*)(S19603C9*), ABISELECT(336,184), "S19603C1");
    /*is_ambiguous_... S19603C1::S19603C2 */ AMB_check_base_class_offset(lv, (S19603C2*), ABISELECT(192,104), "S19603C1");
    check_base_class_offset(lv, (S8033C7*)(S19603C5*)(S19603C7*), ABISELECT(1776,916), "S19603C1");
    check_base_class_offset(lv, (S19603C5*)(S19603C7*), ABISELECT(1776,916), "S19603C1");
    /*is_ambiguous_... S19603C7::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19603C7*), ABISELECT(2032,1048), "S19603C1");
    check_base_class_offset(lv, (S19603C7*)(S19603C8*), ABISELECT(1776,916), "S19603C1");
    /*is_ambiguous_... S19603C2::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19603C2*)(S19603C9*), ABISELECT(2128,1100), "S19603C1");
    check_base_class_offset(lv, (S19603C2*)(S19603C9*), ABISELECT(2128,1100), "S19603C1");
    check_base_class_offset(lv, (S19603C10*)(S19603C9*), ABISELECT(2288,1188), "S19603C1");
    check_base_class_offset(lv, (S19603C9*)(S19603C8*), ABISELECT(2128,1100), "S19603C1");
    check_base_class_offset(lv, (S8033C4*)(S19603C8*), ABISELECT(2336,1216), "S19603C1");
    check_base_class_offset(lv, (S19603C12*)(S19603C8*), ABISELECT(2432,1292), "S19603C1");
    check_base_class_offset(lv, (S19603C8*), ABISELECT(976,520), "S19603C1");
    /*is_ambiguous_... S19603C1::S19603C12 */ AMB_check_base_class_offset(lv, (S19603C12*), 0, "S19603C1");
    check_field_offset(lv, s19603c1f0, ABISELECT(180,96), "S19603C1.s19603c1f0");
    check_field_offset(lv, s19603c1f1, ABISELECT(184,100), "S19603C1.s19603c1f1");
    test_class_info(&lv, &cd_S19603C1);
    dp->~S19603C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19603C1(Test_S19603C1, "S19603C1", ABISELECT(2624,1388));

#else // __cplusplus

extern void _ZN8S19603C1C1Ev();
extern void _ZN8S19603C1D2Ev();
Name_Map name_map_S19603C1[] = {
  NSPAIR(_ZN8S19603C1C1Ev),
  NSPAIR(_ZN8S19603C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19603C5;
extern VTBL_ENTRY _ZTI8S19603C5[];
extern  VTBL_ENTRY _ZTV8S19603C5[];
extern Class_Descriptor cd_S19603C4;
extern VTBL_ENTRY _ZTI8S19603C4[];
extern  VTBL_ENTRY _ZTV8S19603C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19603C4[];
extern Class_Descriptor cd_S19603C2;
extern VTBL_ENTRY _ZTI8S19603C2[];
extern  VTBL_ENTRY _ZTV8S19603C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19603C2[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19603C5;
extern VTBL_ENTRY _ZTI8S19603C5[];
extern  VTBL_ENTRY _ZTV8S19603C5[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19603C7;
extern VTBL_ENTRY _ZTI8S19603C7[];
extern  VTBL_ENTRY _ZTV8S19603C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19603C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19603C2;
extern VTBL_ENTRY _ZTI8S19603C2[];
extern  VTBL_ENTRY _ZTV8S19603C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19603C2[];
extern Class_Descriptor cd_S19603C10;
extern VTBL_ENTRY _ZTI9S19603C10[];
extern  VTBL_ENTRY _ZTV9S19603C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19603C10[];
extern Class_Descriptor cd_S19603C9;
extern VTBL_ENTRY _ZTI8S19603C9[];
extern  VTBL_ENTRY _ZTV8S19603C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19603C9[];
extern Class_Descriptor cd_S8033C4;
extern VTBL_ENTRY _ZTI7S8033C4[];
extern Class_Descriptor cd_S19603C12;
extern VTBL_ENTRY _ZTI9S19603C12[];
extern  VTBL_ENTRY _ZTV9S19603C12[];
extern Class_Descriptor cd_S19603C8;
extern VTBL_ENTRY _ZTI8S19603C8[];
extern  VTBL_ENTRY _ZTV8S19603C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19603C8[];
extern Class_Descriptor cd_S19603C12;
extern VTBL_ENTRY _ZTI9S19603C12[];
extern  VTBL_ENTRY _ZTV9S19603C12[];
static Base_Class bases_S19603C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    ABISELECT(192,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(336,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(832,444), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19603C5,    ABISELECT(832,444), //bcp->offset
    31, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19603C4,    ABISELECT(336,184), //bcp->offset
    23, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19603C2,    ABISELECT(192,104), //bcp->offset
    16, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C7,    ABISELECT(1776,916), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19603C5,    ABISELECT(1776,916), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(2032,1048), //bcp->offset
    55, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19603C7,    ABISELECT(1776,916), //bcp->offset
    49, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S8033C7,    ABISELECT(2128,1100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19603C2,    ABISELECT(2128,1100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19603C10,    ABISELECT(2288,1188), //bcp->offset
    68, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19603C9,    ABISELECT(2128,1100), //bcp->offset
    60, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S8033C4,    ABISELECT(2336,1216), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S19603C12,    ABISELECT(2432,1292), //bcp->offset
    76, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S19603C8,    ABISELECT(976,520), //bcp->offset
    36, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19603C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19603C1[];
extern void _ZN9S19603C122v4Ev();
extern void _ZN8S19603C1D1Ev();
extern void _ZN8S19603C1D0Ev();
extern void _ZN8S19603C12v1Ev();
extern void ABISELECT(_ZTv0_n40_N8S19603C1D1Ev,_ZTv0_n20_N8S19603C1D1Ev)();
extern void ABISELECT(_ZThn192_N8S19603C1D1Ev,_ZThn104_N8S19603C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19603C1D0Ev,_ZTv0_n20_N8S19603C1D0Ev)();
extern void ABISELECT(_ZThn192_N8S19603C1D0Ev,_ZThn104_N8S19603C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19603C1D1Ev,_ZTv0_n16_N8S19603C1D1Ev)();
extern void ABISELECT(_ZThn336_N8S19603C1D1Ev,_ZThn184_N8S19603C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19603C1D0Ev,_ZTv0_n16_N8S19603C1D0Ev)();
extern void ABISELECT(_ZThn336_N8S19603C1D0Ev,_ZThn184_N8S19603C1D0Ev)() __attribute__((weak));
extern void _ZN8S19603C42v2Ev();
extern void ABISELECT(_ZTv0_n24_N8S19603C1D1Ev,_ZTv0_n12_N8S19603C1D1Ev)();
extern void ABISELECT(_ZThn832_N8S19603C1D1Ev,_ZThn444_N8S19603C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19603C1D0Ev,_ZTv0_n12_N8S19603C1D0Ev)();
extern void ABISELECT(_ZThn832_N8S19603C1D0Ev,_ZThn444_N8S19603C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19603C1D1Ev,_ZTv0_n44_N8S19603C1D1Ev)();
extern void ABISELECT(_ZThn976_N8S19603C1D1Ev,_ZThn520_N8S19603C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19603C1D0Ev,_ZTv0_n44_N8S19603C1D0Ev)();
extern void ABISELECT(_ZThn976_N8S19603C1D0Ev,_ZThn520_N8S19603C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19603C1D1Ev,_ZTv0_n16_N8S19603C1D1Ev)();
extern void ABISELECT(_ZThn1776_N8S19603C1D1Ev,_ZThn916_N8S19603C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19603C1D0Ev,_ZTv0_n16_N8S19603C1D0Ev)();
extern void ABISELECT(_ZThn1776_N8S19603C1D0Ev,_ZThn916_N8S19603C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19603C1D1Ev,_ZTv0_n12_N8S19603C1D1Ev)();
extern void ABISELECT(_ZThn2032_N8S19603C1D1Ev,_ZThn1048_N8S19603C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19603C1D0Ev,_ZTv0_n12_N8S19603C1D0Ev)();
extern void ABISELECT(_ZThn2032_N8S19603C1D0Ev,_ZThn1048_N8S19603C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19603C1D1Ev,_ZTv0_n24_N8S19603C1D1Ev)();
extern void ABISELECT(_ZThn2128_N8S19603C1D1Ev,_ZThn1100_N8S19603C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19603C1D0Ev,_ZTv0_n24_N8S19603C1D0Ev)();
extern void ABISELECT(_ZThn2128_N8S19603C1D0Ev,_ZThn1100_N8S19603C1D0Ev)() __attribute__((weak));
extern void _ZN9S19603C102v3Ev();
extern void ABISELECT(_ZTv0_n40_N8S19603C1D1Ev,_ZTv0_n20_N8S19603C1D1Ev)();
extern void ABISELECT(_ZThn2288_N8S19603C1D1Ev,_ZThn1188_N8S19603C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19603C1D0Ev,_ZTv0_n20_N8S19603C1D0Ev)();
extern void ABISELECT(_ZThn2288_N8S19603C1D0Ev,_ZThn1188_N8S19603C1D0Ev)() __attribute__((weak));
extern void _ZN9S19603C122v4Ev();
static  VTBL_ENTRY vtc_S19603C1[] = {
  ABISELECT(2432,1292),
  ABISELECT(2336,1216),
  ABISELECT(2288,1188),
  ABISELECT(2128,1100),
  ABISELECT(2032,1048),
  ABISELECT(1776,916),
  ABISELECT(976,520),
  ABISELECT(832,444),
  ABISELECT(336,184),
  ABISELECT(192,104),
  0,
  (VTBL_ENTRY)&(_ZTI8S19603C1[0]),
  (VTBL_ENTRY)&_ZN9S19603C122v4Ev,
  (VTBL_ENTRY)&_ZN8S19603C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19603C1D0Ev,
  (VTBL_ENTRY)&_ZN8S19603C12v1Ev,
  ABISELECT(-192,-104),
  ABISELECT(640,340),
  ABISELECT(144,80),
  ABISELECT(-192,-104),
  (VTBL_ENTRY)&(_ZTI8S19603C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19603C1D1Ev,_ZTv0_n20_N8S19603C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19603C1D0Ev,_ZTv0_n20_N8S19603C1D0Ev),
  0,
  ABISELECT(-336,-184),
  ABISELECT(496,260),
  ABISELECT(-336,-184),
  (VTBL_ENTRY)&(_ZTI8S19603C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19603C1D1Ev,_ZTv0_n16_N8S19603C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19603C1D0Ev,_ZTv0_n16_N8S19603C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19603C42v2Ev,
  ABISELECT(-832,-444),
  ABISELECT(-832,-444),
  (VTBL_ENTRY)&(_ZTI8S19603C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C1D1Ev,_ZTv0_n12_N8S19603C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C1D0Ev,_ZTv0_n12_N8S19603C1D0Ev),
  ABISELECT(-976,-520),
  ABISELECT(1456,772),
  ABISELECT(1360,696),
  ABISELECT(1312,668),
  ABISELECT(1152,580),
  ABISELECT(-144,-76),
  ABISELECT(-640,-336),
  ABISELECT(1056,528),
  ABISELECT(800,396),
  ABISELECT(-976,-520),
  (VTBL_ENTRY)&(_ZTI8S19603C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19603C1D1Ev,_ZTv0_n44_N8S19603C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19603C1D0Ev,_ZTv0_n44_N8S19603C1D0Ev),
  ABISELECT(-1776,-916),
  ABISELECT(256,132),
  ABISELECT(-1776,-916),
  (VTBL_ENTRY)&(_ZTI8S19603C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19603C1D1Ev,_ZTv0_n16_N8S19603C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19603C1D0Ev,_ZTv0_n16_N8S19603C1D0Ev),
  ABISELECT(-2032,-1048),
  ABISELECT(-2032,-1048),
  (VTBL_ENTRY)&(_ZTI8S19603C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C1D1Ev,_ZTv0_n12_N8S19603C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C1D0Ev,_ZTv0_n12_N8S19603C1D0Ev),
  ABISELECT(-2128,-1100),
  ABISELECT(160,88),
  ABISELECT(-1296,-656),
  ABISELECT(-1792,-916),
  ABISELECT(-2128,-1100),
  (VTBL_ENTRY)&(_ZTI8S19603C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19603C1D1Ev,_ZTv0_n24_N8S19603C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19603C1D0Ev,_ZTv0_n24_N8S19603C1D0Ev),
  ABISELECT(-2288,-1188),
  0,
  ABISELECT(-1456,-744),
  ABISELECT(-2288,-1188),
  (VTBL_ENTRY)&(_ZTI8S19603C1[0]),
  (VTBL_ENTRY)&_ZN9S19603C102v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19603C1D1Ev,_ZTv0_n20_N8S19603C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19603C1D0Ev,_ZTv0_n20_N8S19603C1D0Ev),
  0,
  ABISELECT(-2432,-1292),
  (VTBL_ENTRY)&(_ZTI8S19603C1[0]),
  (VTBL_ENTRY)&_ZN9S19603C122v4Ev,
};
extern VTBL_ENTRY _ZTV8S19603C1[];
extern void _ZN8S19603C2D1Ev();
extern void _ZN8S19603C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19603C2__8S19603C1[] = {
  ABISELECT(640,340),
  ABISELECT(144,80),
  0,
  (VTBL_ENTRY)&(_ZTI8S19603C2[0]),
  (VTBL_ENTRY)&_ZN8S19603C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19603C2D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19603C2D1Ev,_ZTv0_n16_N8S19603C2D1Ev)();
extern void ABISELECT(_ZThn144_N8S19603C2D1Ev,_ZThn80_N8S19603C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19603C2D0Ev,_ZTv0_n16_N8S19603C2D0Ev)();
extern void ABISELECT(_ZThn144_N8S19603C2D0Ev,_ZThn80_N8S19603C2D0Ev)() __attribute__((weak));
extern void _ZN8S19603C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19603C4__8S19603C2__8S19603C1[] = {
  0,
  ABISELECT(-144,-80),
  ABISELECT(496,260),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI8S19603C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19603C2D1Ev,_ZTv0_n16_N8S19603C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19603C2D0Ev,_ZTv0_n16_N8S19603C2D0Ev),
  (VTBL_ENTRY)&_ZN8S19603C42v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19603C2D1Ev,_ZTv0_n12_N8S19603C2D1Ev)();
extern void ABISELECT(_ZThn640_N8S19603C2D1Ev,_ZThn340_N8S19603C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19603C2D0Ev,_ZTv0_n12_N8S19603C2D0Ev)();
extern void ABISELECT(_ZThn640_N8S19603C2D0Ev,_ZThn340_N8S19603C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19603C5__8S19603C2__8S19603C1[] = {
  ABISELECT(-640,-340),
  ABISELECT(-640,-340),
  (VTBL_ENTRY)&(_ZTI8S19603C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C2D1Ev,_ZTv0_n12_N8S19603C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C2D0Ev,_ZTv0_n12_N8S19603C2D0Ev),
};
extern void _ZN8S19603C4D1Ev();
extern void _ZN8S19603C4D0Ev();
extern void _ZN8S19603C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19603C4__8S19603C1[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19603C4[0]),
  (VTBL_ENTRY)&_ZN8S19603C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19603C4D0Ev,
  (VTBL_ENTRY)&_ZN8S19603C42v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19603C4D1Ev,_ZTv0_n12_N8S19603C4D1Ev)();
extern void ABISELECT(_ZThn496_N8S19603C4D1Ev,_ZThn260_N8S19603C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19603C4D0Ev,_ZTv0_n12_N8S19603C4D0Ev)();
extern void ABISELECT(_ZThn496_N8S19603C4D0Ev,_ZThn260_N8S19603C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19603C5__8S19603C4__8S19603C1[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI8S19603C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C4D1Ev,_ZTv0_n12_N8S19603C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C4D0Ev,_ZTv0_n12_N8S19603C4D0Ev),
};
extern void _ZN8S19603C8D1Ev();
extern void _ZN8S19603C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19603C8__8S19603C1[] = {
  ABISELECT(1456,772),
  ABISELECT(1360,696),
  ABISELECT(1312,668),
  ABISELECT(1152,580),
  ABISELECT(-144,-76),
  ABISELECT(-640,-336),
  ABISELECT(1056,528),
  ABISELECT(800,396),
  0,
  (VTBL_ENTRY)&(_ZTI8S19603C8[0]),
  (VTBL_ENTRY)&_ZN8S19603C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19603C8D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19603C8D1Ev,_ZTv0_n16_N8S19603C8D1Ev)();
extern void ABISELECT(_ZThn800_N8S19603C8D1Ev,_ZThn396_N8S19603C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19603C8D0Ev,_ZTv0_n16_N8S19603C8D0Ev)();
extern void ABISELECT(_ZThn800_N8S19603C8D0Ev,_ZThn396_N8S19603C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19603C7__8S19603C8__8S19603C1[] = {
  ABISELECT(-800,-396),
  ABISELECT(256,132),
  ABISELECT(-800,-396),
  (VTBL_ENTRY)&(_ZTI8S19603C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19603C8D1Ev,_ZTv0_n16_N8S19603C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19603C8D0Ev,_ZTv0_n16_N8S19603C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19603C8D1Ev,_ZTv0_n12_N8S19603C8D1Ev)();
extern void ABISELECT(_ZThn1056_N8S19603C8D1Ev,_ZThn528_N8S19603C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19603C8D0Ev,_ZTv0_n12_N8S19603C8D0Ev)();
extern void ABISELECT(_ZThn1056_N8S19603C8D0Ev,_ZThn528_N8S19603C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__8S19603C8__8S19603C1[] = {
  ABISELECT(-1056,-528),
  ABISELECT(-1056,-528),
  (VTBL_ENTRY)&(_ZTI8S19603C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C8D1Ev,_ZTv0_n12_N8S19603C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C8D0Ev,_ZTv0_n12_N8S19603C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19603C8D1Ev,_ZTv0_n16_N8S19603C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19603C8D0Ev,_ZTv0_n16_N8S19603C8D0Ev)();
extern void _ZN8S19603C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19603C4__8S19603C8__8S19603C1[] = {
  0,
  ABISELECT(640,336),
  ABISELECT(496,260),
  ABISELECT(640,336),
  (VTBL_ENTRY)&(_ZTI8S19603C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19603C8D1Ev,_ZTv0_n16_N8S19603C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19603C8D0Ev,_ZTv0_n16_N8S19603C8D0Ev),
  (VTBL_ENTRY)&_ZN8S19603C42v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19603C8D1Ev,_ZTv0_n12_N8S19603C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19603C8D0Ev,_ZTv0_n12_N8S19603C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19603C5__A1__8S19603C8__8S19603C1[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S19603C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C8D1Ev,_ZTv0_n12_N8S19603C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C8D0Ev,_ZTv0_n12_N8S19603C8D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S19603C8D1Ev,_ZTv0_n24_N8S19603C8D1Ev)();
extern void ABISELECT(_ZThn1152_N8S19603C8D1Ev,_ZThn580_N8S19603C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19603C8D0Ev,_ZTv0_n24_N8S19603C8D0Ev)();
extern void ABISELECT(_ZThn1152_N8S19603C8D0Ev,_ZThn580_N8S19603C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19603C9__8S19603C8__8S19603C1[] = {
  ABISELECT(-1152,-580),
  ABISELECT(160,88),
  ABISELECT(-1296,-656),
  ABISELECT(-1792,-916),
  ABISELECT(-1152,-580),
  (VTBL_ENTRY)&(_ZTI8S19603C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19603C8D1Ev,_ZTv0_n24_N8S19603C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19603C8D0Ev,_ZTv0_n24_N8S19603C8D0Ev),
};
extern void _ZN9S19603C102v3Ev();
extern void ABISELECT(_ZTv0_n40_N8S19603C8D1Ev,_ZTv0_n20_N8S19603C8D1Ev)();
extern void ABISELECT(_ZThn1312_N8S19603C8D1Ev,_ZThn668_N8S19603C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19603C8D0Ev,_ZTv0_n20_N8S19603C8D0Ev)();
extern void ABISELECT(_ZThn1312_N8S19603C8D0Ev,_ZThn668_N8S19603C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19603C10__8S19603C8__8S19603C1[] = {
  ABISELECT(-1312,-668),
  0,
  ABISELECT(-1456,-744),
  ABISELECT(-1312,-668),
  (VTBL_ENTRY)&(_ZTI8S19603C8[0]),
  (VTBL_ENTRY)&_ZN9S19603C102v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19603C8D1Ev,_ZTv0_n20_N8S19603C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19603C8D0Ev,_ZTv0_n20_N8S19603C8D0Ev),
};
extern void _ZN9S19603C122v4Ev();
static  VTBL_ENTRY _tg__ZTV9S19603C12__8S19603C8__8S19603C1[] = {
  0,
  ABISELECT(-1456,-772),
  (VTBL_ENTRY)&(_ZTI8S19603C8[0]),
  (VTBL_ENTRY)&_ZN9S19603C122v4Ev,
};
extern void _ZN8S19603C7D1Ev();
extern void _ZN8S19603C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19603C7__8S19603C1[] = {
  ABISELECT(256,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S19603C7[0]),
  (VTBL_ENTRY)&_ZN8S19603C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19603C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19603C7D1Ev,_ZTv0_n12_N8S19603C7D1Ev)();
extern void ABISELECT(_ZThn256_N8S19603C7D1Ev,_ZThn132_N8S19603C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19603C7D0Ev,_ZTv0_n12_N8S19603C7D0Ev)();
extern void ABISELECT(_ZThn256_N8S19603C7D0Ev,_ZThn132_N8S19603C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__8S19603C7__8S19603C1[] = {
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  (VTBL_ENTRY)&(_ZTI8S19603C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C7D1Ev,_ZTv0_n12_N8S19603C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C7D0Ev,_ZTv0_n12_N8S19603C7D0Ev),
};
extern void _ZN8S19603C9D1Ev();
extern void _ZN8S19603C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19603C9__8S19603C1[] = {
  ABISELECT(160,88),
  ABISELECT(-1296,-656),
  ABISELECT(-1792,-916),
  0,
  (VTBL_ENTRY)&(_ZTI8S19603C9[0]),
  (VTBL_ENTRY)&_ZN8S19603C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19603C9D0Ev,
};
extern void _ZN8S19603C2D1Ev();
extern void _ZN8S19603C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19603C28S19603C9__A1__8S19603C1[] = {
  ABISELECT(-1296,-656),
  ABISELECT(-1792,-916),
  0,
  (VTBL_ENTRY)&(_ZTI8S19603C2[0]),
  (VTBL_ENTRY)&_ZN8S19603C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19603C2D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19603C2D1Ev,_ZTv0_n16_N8S19603C2D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19603C2D0Ev,_ZTv0_n16_N8S19603C2D0Ev)();
extern void _ZN8S19603C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19603C4__8S19603C28S19603C9__A1__8S19603C1[] = {
  0,
  ABISELECT(1792,916),
  ABISELECT(496,260),
  ABISELECT(1792,916),
  (VTBL_ENTRY)&(_ZTI8S19603C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19603C2D1Ev,_ZTv0_n16_N8S19603C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19603C2D0Ev,_ZTv0_n16_N8S19603C2D0Ev),
  (VTBL_ENTRY)&_ZN8S19603C42v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19603C2D1Ev,_ZTv0_n12_N8S19603C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19603C2D0Ev,_ZTv0_n12_N8S19603C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19603C5__8S19603C28S19603C9__A1__8S19603C1[] = {
  ABISELECT(1296,656),
  ABISELECT(1296,656),
  (VTBL_ENTRY)&(_ZTI8S19603C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C2D1Ev,_ZTv0_n12_N8S19603C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C2D0Ev,_ZTv0_n12_N8S19603C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19603C9D1Ev,_ZTv0_n16_N8S19603C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19603C9D0Ev,_ZTv0_n16_N8S19603C9D0Ev)();
extern void _ZN8S19603C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19603C4__8S19603C9__8S19603C1[] = {
  0,
  ABISELECT(1792,916),
  ABISELECT(496,260),
  ABISELECT(1792,916),
  (VTBL_ENTRY)&(_ZTI8S19603C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19603C9D1Ev,_ZTv0_n16_N8S19603C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19603C9D0Ev,_ZTv0_n16_N8S19603C9D0Ev),
  (VTBL_ENTRY)&_ZN8S19603C42v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19603C9D1Ev,_ZTv0_n12_N8S19603C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19603C9D0Ev,_ZTv0_n12_N8S19603C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19603C5__8S19603C9__8S19603C1[] = {
  ABISELECT(1296,656),
  ABISELECT(1296,656),
  (VTBL_ENTRY)&(_ZTI8S19603C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C9D1Ev,_ZTv0_n12_N8S19603C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C9D0Ev,_ZTv0_n12_N8S19603C9D0Ev),
};
extern void _ZN9S19603C102v3Ev();
extern void ABISELECT(_ZTv0_n40_N8S19603C9D1Ev,_ZTv0_n20_N8S19603C9D1Ev)();
extern void ABISELECT(_ZThn160_N8S19603C9D1Ev,_ZThn88_N8S19603C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19603C9D0Ev,_ZTv0_n20_N8S19603C9D0Ev)();
extern void ABISELECT(_ZThn160_N8S19603C9D0Ev,_ZThn88_N8S19603C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19603C10__8S19603C9__8S19603C1[] = {
  ABISELECT(-160,-88),
  0,
  ABISELECT(-1456,-744),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S19603C9[0]),
  (VTBL_ENTRY)&_ZN9S19603C102v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19603C9D1Ev,_ZTv0_n20_N8S19603C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19603C9D0Ev,_ZTv0_n20_N8S19603C9D0Ev),
};
extern void _ZN9S19603C102v3Ev();
extern void _ZN9S19603C10D1Ev();
extern void _ZN9S19603C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19603C10__8S19603C1[] = {
  ABISELECT(-1456,-744),
  0,
  (VTBL_ENTRY)&(_ZTI9S19603C10[0]),
  (VTBL_ENTRY)&_ZN9S19603C102v3Ev,
  (VTBL_ENTRY)&_ZN9S19603C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19603C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19603C10D1Ev,_ZTv0_n12_N9S19603C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19603C10D0Ev,_ZTv0_n12_N9S19603C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19603C5__9S19603C10__8S19603C1[] = {
  ABISELECT(1456,744),
  ABISELECT(1456,744),
  (VTBL_ENTRY)&(_ZTI9S19603C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19603C10D1Ev,_ZTv0_n12_N9S19603C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19603C10D0Ev,_ZTv0_n12_N9S19603C10D0Ev),
};
static  VTT_ENTRY vtt_S19603C1[] = {
  {&(_ZTV8S19603C1[12]),  12,80},
  {&(_ZTV8S19603C1[21]),  21,80},
  {&(_ZTV8S19603C1[28]),  28,80},
  {&(_ZTV8S19603C1[34]),  34,80},
  {&(_ZTV8S19603C1[47]),  47,80},
  {&(_ZTV8S19603C1[53]),  53,80},
  {&(_ZTV8S19603C1[58]),  58,80},
  {&(_ZTV8S19603C1[66]),  66,80},
  {&(_ZTV8S19603C1[73]),  73,80},
  {&(_ZTV8S19603C1[79]),  79,80},
  {&(_tg__ZTV8S19603C2__8S19603C1[4]),  4,6},
  {&(_tg__ZTV8S19603C4__8S19603C2__8S19603C1[5]),  5,8},
  {&(_tg__ZTV8S19603C5__8S19603C2__8S19603C1[3]),  3,5},
  {&(_tg__ZTV8S19603C4__8S19603C1[3]),  3,6},
  {&(_tg__ZTV8S19603C5__8S19603C4__8S19603C1[3]),  3,5},
  {&(_tg__ZTV8S19603C8__8S19603C1[10]),  10,12},
  {&(_tg__ZTV8S19603C7__8S19603C8__8S19603C1[4]),  4,6},
  {&(_tg__ZTV7S8033C7__A1__8S19603C8__8S19603C1[3]),  3,5},
  {&(_tg__ZTV8S19603C4__8S19603C8__8S19603C1[5]),  5,8},
  {&(_tg__ZTV8S19603C5__A1__8S19603C8__8S19603C1[3]),  3,5},
  {&(_tg__ZTV8S19603C9__8S19603C8__8S19603C1[6]),  6,8},
  {&(_tg__ZTV9S19603C10__8S19603C8__8S19603C1[5]),  5,8},
  {&(_tg__ZTV9S19603C12__8S19603C8__8S19603C1[3]),  3,4},
  {&(_tg__ZTV8S19603C7__8S19603C1[3]),  3,5},
  {&(_tg__ZTV7S8033C7__A1__8S19603C7__8S19603C1[3]),  3,5},
  {&(_tg__ZTV8S19603C9__8S19603C1[5]),  5,7},
  {&(_tg__ZTV8S19603C28S19603C9__A1__8S19603C1[4]),  4,6},
  {&(_tg__ZTV8S19603C4__8S19603C28S19603C9__A1__8S19603C1[5]),  5,8},
  {&(_tg__ZTV8S19603C5__8S19603C28S19603C9__A1__8S19603C1[3]),  3,5},
  {&(_tg__ZTV8S19603C4__8S19603C9__8S19603C1[5]),  5,8},
  {&(_tg__ZTV8S19603C5__8S19603C9__8S19603C1[3]),  3,5},
  {&(_tg__ZTV9S19603C10__8S19603C9__8S19603C1[5]),  5,8},
  {&(_tg__ZTV9S19603C10__8S19603C1[3]),  3,6},
  {&(_tg__ZTV8S19603C5__9S19603C10__8S19603C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19603C1[];
extern  VTBL_ENTRY _ZTV8S19603C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19603C1[];
static VTBL_ENTRY alt_thunk_names148[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19603C9D0Ev,_ZTv0_n20_N8S19603C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19603C9D0Ev,_ZThn88_N8S19603C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19603C9D1Ev,_ZTv0_n20_N8S19603C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19603C9D1Ev,_ZThn88_N8S19603C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19603C7D0Ev,_ZTv0_n12_N8S19603C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19603C7D0Ev,_ZThn132_N8S19603C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19603C7D1Ev,_ZTv0_n12_N8S19603C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19603C7D1Ev,_ZThn132_N8S19603C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19603C8D0Ev,_ZTv0_n20_N8S19603C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1312_N8S19603C8D0Ev,_ZThn668_N8S19603C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19603C8D1Ev,_ZTv0_n20_N8S19603C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1312_N8S19603C8D1Ev,_ZThn668_N8S19603C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19603C8D0Ev,_ZTv0_n24_N8S19603C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1152_N8S19603C8D0Ev,_ZThn580_N8S19603C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19603C8D1Ev,_ZTv0_n24_N8S19603C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1152_N8S19603C8D1Ev,_ZThn580_N8S19603C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19603C8D0Ev,_ZTv0_n12_N8S19603C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1056_N8S19603C8D0Ev,_ZThn528_N8S19603C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19603C8D1Ev,_ZTv0_n12_N8S19603C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1056_N8S19603C8D1Ev,_ZThn528_N8S19603C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19603C8D0Ev,_ZTv0_n16_N8S19603C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn800_N8S19603C8D0Ev,_ZThn396_N8S19603C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19603C8D1Ev,_ZTv0_n16_N8S19603C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn800_N8S19603C8D1Ev,_ZThn396_N8S19603C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19603C4D0Ev,_ZTv0_n12_N8S19603C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19603C4D0Ev,_ZThn260_N8S19603C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19603C4D1Ev,_ZTv0_n12_N8S19603C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19603C4D1Ev,_ZThn260_N8S19603C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19603C2D0Ev,_ZTv0_n12_N8S19603C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N8S19603C2D0Ev,_ZThn340_N8S19603C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19603C2D1Ev,_ZTv0_n12_N8S19603C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N8S19603C2D1Ev,_ZThn340_N8S19603C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19603C2D0Ev,_ZTv0_n16_N8S19603C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S19603C2D0Ev,_ZThn80_N8S19603C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19603C2D1Ev,_ZTv0_n16_N8S19603C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S19603C2D1Ev,_ZThn80_N8S19603C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19603C1D0Ev,_ZTv0_n24_N8S19603C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2128_N8S19603C1D0Ev,_ZThn1100_N8S19603C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19603C1D1Ev,_ZTv0_n24_N8S19603C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2128_N8S19603C1D1Ev,_ZThn1100_N8S19603C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19603C1D0Ev,_ZTv0_n44_N8S19603C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn976_N8S19603C1D0Ev,_ZThn520_N8S19603C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19603C1D1Ev,_ZTv0_n44_N8S19603C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn976_N8S19603C1D1Ev,_ZThn520_N8S19603C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19603C1D0Ev,_ZTv0_n12_N8S19603C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2032_N8S19603C1D0Ev,_ZThn1048_N8S19603C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn832_N8S19603C1D0Ev,_ZThn444_N8S19603C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19603C1D1Ev,_ZTv0_n12_N8S19603C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2032_N8S19603C1D1Ev,_ZThn1048_N8S19603C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn832_N8S19603C1D1Ev,_ZThn444_N8S19603C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19603C1D0Ev,_ZTv0_n16_N8S19603C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1776_N8S19603C1D0Ev,_ZThn916_N8S19603C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S19603C1D0Ev,_ZThn184_N8S19603C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19603C1D1Ev,_ZTv0_n16_N8S19603C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1776_N8S19603C1D1Ev,_ZThn916_N8S19603C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S19603C1D1Ev,_ZThn184_N8S19603C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19603C1D0Ev,_ZTv0_n20_N8S19603C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2288_N8S19603C1D0Ev,_ZThn1188_N8S19603C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S19603C1D0Ev,_ZThn104_N8S19603C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19603C1D1Ev,_ZTv0_n20_N8S19603C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2288_N8S19603C1D1Ev,_ZThn1188_N8S19603C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S19603C1D1Ev,_ZThn104_N8S19603C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19603C1 = {  "S19603C1", // class name
  bases_S19603C1, 18,
  &(vtc_S19603C1[0]), // expected_vtbl_contents
  &(vtt_S19603C1[0]), // expected_vtt_contents
  ABISELECT(2624,1388), // object size
  NSPAIRA(_ZTI8S19603C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19603C1),80, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19603C1),34, //virtual table table var
  17, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names148,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19604C5  : S8033C7 {
  void *s19604c5f0;
  ::S20291C14_nt s19604c5f1;
  void *s19604c5f2;
  long double s19604c5f3;
  ~S19604C5(); // tgen
  S19604C5(); // tgen
};
//SIG(-1 S19604C5) C1{ BC2{ vd m Fc Fc:0 Fl[8] FD} Fp FC3{} Fp FD}


S19604C5 ::~S19604C5(){ note_dtor("S19604C5", this);} // tgen
S19604C5 ::S19604C5(){ note_ctor("S19604C5", this);} // tgen

static void Test_S19604C5()
{
  extern Class_Descriptor cd_S19604C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(10,20)];
    init_test(&cd_S19604C5, buf);
    S19604C5 *dp, &lv = *(dp=new (buf) S19604C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,76), "sizeof(S19604C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19604C5)");
    check_base_class_offset(lv, (S8033C7*), 0, "S19604C5");
    check_field_offset(lv, s19604c5f0, ABISELECT(96,52), "S19604C5.s19604c5f0");
    check_field_offset(lv, s19604c5f1, ABISELECT(104,56), "S19604C5.s19604c5f1");
    check_field_offset(lv, s19604c5f2, ABISELECT(112,60), "S19604C5.s19604c5f2");
    check_field_offset(lv, s19604c5f3, ABISELECT(128,64), "S19604C5.s19604c5f3");
    test_class_info(&lv, &cd_S19604C5);
    dp->~S19604C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19604C5(Test_S19604C5, "S19604C5", ABISELECT(144,76));

#else // __cplusplus

extern void _ZN8S19604C5C1Ev();
extern void _ZN8S19604C5D1Ev();
Name_Map name_map_S19604C5[] = {
  NSPAIR(_ZN8S19604C5C1Ev),
  NSPAIR(_ZN8S19604C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
static Base_Class bases_S19604C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19604C5[];
extern void _ZN8S19604C5D1Ev();
extern void _ZN8S19604C5D0Ev();
static  VTBL_ENTRY vtc_S19604C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19604C5[0]),
  (VTBL_ENTRY)&_ZN8S19604C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19604C5D0Ev,
};
extern VTBL_ENTRY _ZTI8S19604C5[];
extern  VTBL_ENTRY _ZTV8S19604C5[];
Class_Descriptor cd_S19604C5 = {  "S19604C5", // class name
  bases_S19604C5, 1,
  &(vtc_S19604C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,76), // object size
  NSPAIRA(_ZTI8S19604C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19604C5),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19604C7  : S19604C5 , virtual S8033C7 {
  ::S8033C7 s19604c7f0;
  void *s19604c7f1;
  virtual  ~S19604C7(); // _ZN8S19604C7D2Ev
  S19604C7(); // tgen
};
//SIG(-1 S19604C7) C1{ BC2{ BC3{ vd m Fc Fc:0 Fl[8] FD} Fp FC4{} Fp FD} VBC3 vd FC3 Fp}


 S19604C7 ::~S19604C7(){ note_dtor("S19604C7", this);}
S19604C7 ::S19604C7(){ note_ctor("S19604C7", this);} // tgen

static void Test_S19604C7()
{
  extern Class_Descriptor cd_S19604C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(23,47)];
    init_test(&cd_S19604C7, buf);
    S19604C7 *dp, &lv = *(dp=new (buf) S19604C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(352,184), "sizeof(S19604C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19604C7)");
    check_base_class_offset(lv, (S8033C7*)(S19604C5*), 0, "S19604C7");
    check_base_class_offset(lv, (S19604C5*), 0, "S19604C7");
    /*is_ambiguous_... S19604C7::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*), ABISELECT(256,132), "S19604C7");
    check_field_offset(lv, s19604c7f0, ABISELECT(144,76), "S19604C7.s19604c7f0");
    check_field_offset(lv, s19604c7f1, ABISELECT(240,128), "S19604C7.s19604c7f1");
    test_class_info(&lv, &cd_S19604C7);
    dp->~S19604C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19604C7(Test_S19604C7, "S19604C7", ABISELECT(352,184));

#else // __cplusplus

extern void _ZN8S19604C7C1Ev();
extern void _ZN8S19604C7D2Ev();
Name_Map name_map_S19604C7[] = {
  NSPAIR(_ZN8S19604C7C1Ev),
  NSPAIR(_ZN8S19604C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19604C5;
extern VTBL_ENTRY _ZTI8S19604C5[];
extern  VTBL_ENTRY _ZTV8S19604C5[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
static Base_Class bases_S19604C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19604C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S8033C7,    ABISELECT(256,132), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19604C7[];
extern void _ZN8S19604C7D1Ev();
extern void _ZN8S19604C7D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S19604C7D1Ev,_ZTv0_n12_N8S19604C7D1Ev)();
extern void ABISELECT(_ZThn256_N8S19604C7D1Ev,_ZThn132_N8S19604C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19604C7D0Ev,_ZTv0_n12_N8S19604C7D0Ev)();
extern void ABISELECT(_ZThn256_N8S19604C7D0Ev,_ZThn132_N8S19604C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19604C7[] = {
  ABISELECT(256,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S19604C7[0]),
  (VTBL_ENTRY)&_ZN8S19604C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19604C7D0Ev,
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  (VTBL_ENTRY)&(_ZTI8S19604C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C7D1Ev,_ZTv0_n12_N8S19604C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C7D0Ev,_ZTv0_n12_N8S19604C7D0Ev),
};
extern VTBL_ENTRY _ZTV8S19604C7[];
static  VTT_ENTRY vtt_S19604C7[] = {
  {&(_ZTV8S19604C7[3]),  3,10},
  {&(_ZTV8S19604C7[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S19604C7[];
extern  VTBL_ENTRY _ZTV8S19604C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19604C7[];
static VTBL_ENTRY alt_thunk_names149[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19604C7D0Ev,_ZTv0_n12_N8S19604C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19604C7D0Ev,_ZThn132_N8S19604C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19604C7D1Ev,_ZTv0_n12_N8S19604C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19604C7D1Ev,_ZThn132_N8S19604C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19604C7 = {  "S19604C7", // class name
  bases_S19604C7, 3,
  &(vtc_S19604C7[0]), // expected_vtbl_contents
  &(vtt_S19604C7[0]), // expected_vtt_contents
  ABISELECT(352,184), // object size
  NSPAIRA(_ZTI8S19604C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19604C7),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19604C7),2, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names149,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19604C4  : S8033C7 , virtual S19604C5 {
  int s19604c4f0;
  char s19604c4f1;
  void *s19604c4f2;
  int s19604c4f3;
  void *s19604c4f4[2];
  ::S19604C7 s19604c4f5;
  virtual  ~S19604C4(); // _ZN8S19604C4D2Ev
  virtual void  v2(); // _ZN8S19604C42v2Ev
  S19604C4(); // tgen
};
//SIG(-1 S19604C4) C1{ BC2{ vd m Fc Fc:0 Fl[8] FD} VBC3{ BC2 Fp FC4{} Fp FD} vd v1 Fi Fc Fp Fi Fp[2] FC5{ BC3 VBC2 vd FC2 Fp}}


 S19604C4 ::~S19604C4(){ note_dtor("S19604C4", this);}
void  S19604C4 ::v2(){vfunc_called(this, "_ZN8S19604C42v2Ev");}
S19604C4 ::S19604C4(){ note_ctor("S19604C4", this);} // tgen

static void Test_S19604C4()
{
  extern Class_Descriptor cd_S19604C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(41,85)];
    init_test(&cd_S19604C4, buf);
    S19604C4 *dp, &lv = *(dp=new (buf) S19604C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(640,336), "sizeof(S19604C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19604C4)");
    /*is_ambiguous_... S19604C4::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*), 0, "S19604C4");
    check_base_class_offset(lv, (S8033C7*)(S19604C5*), ABISELECT(496,260), "S19604C4");
    check_base_class_offset(lv, (S19604C5*), ABISELECT(496,260), "S19604C4");
    check_field_offset(lv, s19604c4f0, ABISELECT(96,52), "S19604C4.s19604c4f0");
    check_field_offset(lv, s19604c4f1, ABISELECT(100,56), "S19604C4.s19604c4f1");
    check_field_offset(lv, s19604c4f2, ABISELECT(104,60), "S19604C4.s19604c4f2");
    check_field_offset(lv, s19604c4f3, ABISELECT(112,64), "S19604C4.s19604c4f3");
    check_field_offset(lv, s19604c4f4, ABISELECT(120,68), "S19604C4.s19604c4f4");
    check_field_offset(lv, s19604c4f5, ABISELECT(144,76), "S19604C4.s19604c4f5");
    test_class_info(&lv, &cd_S19604C4);
    dp->~S19604C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19604C4(Test_S19604C4, "S19604C4", ABISELECT(640,336));

#else // __cplusplus

extern void _ZN8S19604C4C1Ev();
extern void _ZN8S19604C4D2Ev();
Name_Map name_map_S19604C4[] = {
  NSPAIR(_ZN8S19604C4C1Ev),
  NSPAIR(_ZN8S19604C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19604C5;
extern VTBL_ENTRY _ZTI8S19604C5[];
extern  VTBL_ENTRY _ZTV8S19604C5[];
static Base_Class bases_S19604C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S8033C7,    ABISELECT(496,260), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19604C5,    ABISELECT(496,260), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19604C4[];
extern void _ZN8S19604C4D1Ev();
extern void _ZN8S19604C4D0Ev();
extern void _ZN8S19604C42v2Ev();
extern void ABISELECT(_ZTv0_n24_N8S19604C4D1Ev,_ZTv0_n12_N8S19604C4D1Ev)();
extern void ABISELECT(_ZThn496_N8S19604C4D1Ev,_ZThn260_N8S19604C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19604C4D0Ev,_ZTv0_n12_N8S19604C4D0Ev)();
extern void ABISELECT(_ZThn496_N8S19604C4D0Ev,_ZThn260_N8S19604C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19604C4[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19604C4[0]),
  (VTBL_ENTRY)&_ZN8S19604C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19604C4D0Ev,
  (VTBL_ENTRY)&_ZN8S19604C42v2Ev,
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI8S19604C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C4D1Ev,_ZTv0_n12_N8S19604C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C4D0Ev,_ZTv0_n12_N8S19604C4D0Ev),
};
extern VTBL_ENTRY _ZTV8S19604C4[];
static  VTT_ENTRY vtt_S19604C4[] = {
  {&(_ZTV8S19604C4[3]),  3,11},
  {&(_ZTV8S19604C4[9]),  9,11},
};
extern VTBL_ENTRY _ZTI8S19604C4[];
extern  VTBL_ENTRY _ZTV8S19604C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19604C4[];
static VTBL_ENTRY alt_thunk_names150[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19604C4D0Ev,_ZTv0_n12_N8S19604C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19604C4D0Ev,_ZThn260_N8S19604C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19604C4D1Ev,_ZTv0_n12_N8S19604C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19604C4D1Ev,_ZThn260_N8S19604C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19604C4 = {  "S19604C4", // class name
  bases_S19604C4, 3,
  &(vtc_S19604C4[0]), // expected_vtbl_contents
  &(vtt_S19604C4[0]), // expected_vtt_contents
  ABISELECT(640,336), // object size
  NSPAIRA(_ZTI8S19604C4),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19604C4),11, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19604C4),2, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names150,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19604C2  : S8033C7 , virtual S19604C4 {
  void *s19604c2f0;
  __tsi64 s19604c2f1[2];
  char s19604c2f2;
  void *s19604c2f3;
  int s19604c2f4;
  virtual  ~S19604C2(); // _ZN8S19604C2D2Ev
  S19604C2(); // tgen
};
//SIG(-1 S19604C2) C1{ BC2{ vd m Fc Fc:0 Fl[8] FD} VBC3{ BC2 VBC4{ BC2 Fp FC5{} Fp FD} vd v1 Fi Fc Fp Fi Fp[2] FC6{ BC4 VBC2 vd FC2 Fp}} vd Fp FL[2] Fc Fp Fi}


 S19604C2 ::~S19604C2(){ note_dtor("S19604C2", this);}
S19604C2 ::S19604C2(){ note_ctor("S19604C2", this);} // tgen

static void Test_S19604C2()
{
  extern Class_Descriptor cd_S19604C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(50,106)];
    init_test(&cd_S19604C2, buf);
    S19604C2 *dp, &lv = *(dp=new (buf) S19604C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(784,420), "sizeof(S19604C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19604C2)");
    /*is_ambiguous_... S19604C2::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*), 0, "S19604C2");
    /*is_ambiguous_... S19604C4::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19604C4*), ABISELECT(144,84), "S19604C2");
    check_base_class_offset(lv, (S8033C7*)(S19604C5*), ABISELECT(640,344), "S19604C2");
    check_base_class_offset(lv, (S19604C5*)(S19604C4*), ABISELECT(640,344), "S19604C2");
    check_base_class_offset(lv, (S19604C4*), ABISELECT(144,84), "S19604C2");
    check_field_offset(lv, s19604c2f0, ABISELECT(96,52), "S19604C2.s19604c2f0");
    check_field_offset(lv, s19604c2f1, ABISELECT(104,56), "S19604C2.s19604c2f1");
    check_field_offset(lv, s19604c2f2, ABISELECT(120,72), "S19604C2.s19604c2f2");
    check_field_offset(lv, s19604c2f3, ABISELECT(128,76), "S19604C2.s19604c2f3");
    check_field_offset(lv, s19604c2f4, ABISELECT(136,80), "S19604C2.s19604c2f4");
    test_class_info(&lv, &cd_S19604C2);
    dp->~S19604C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19604C2(Test_S19604C2, "S19604C2", ABISELECT(784,420));

#else // __cplusplus

extern void _ZN8S19604C2C1Ev();
extern void _ZN8S19604C2D2Ev();
Name_Map name_map_S19604C2[] = {
  NSPAIR(_ZN8S19604C2C1Ev),
  NSPAIR(_ZN8S19604C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19604C5;
extern VTBL_ENTRY _ZTI8S19604C5[];
extern  VTBL_ENTRY _ZTV8S19604C5[];
extern Class_Descriptor cd_S19604C4;
extern VTBL_ENTRY _ZTI8S19604C4[];
extern  VTBL_ENTRY _ZTV8S19604C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19604C4[];
static Base_Class bases_S19604C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S8033C7,    ABISELECT(144,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(640,344), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19604C5,    ABISELECT(640,344), //bcp->offset
    14, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19604C4,    ABISELECT(144,84), //bcp->offset
    6, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19604C2[];
extern void _ZN8S19604C2D1Ev();
extern void _ZN8S19604C2D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S19604C2D1Ev,_ZTv0_n16_N8S19604C2D1Ev)();
extern void ABISELECT(_ZThn144_N8S19604C2D1Ev,_ZThn84_N8S19604C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19604C2D0Ev,_ZTv0_n16_N8S19604C2D0Ev)();
extern void ABISELECT(_ZThn144_N8S19604C2D0Ev,_ZThn84_N8S19604C2D0Ev)() __attribute__((weak));
extern void _ZN8S19604C42v2Ev();
extern void ABISELECT(_ZTv0_n24_N8S19604C2D1Ev,_ZTv0_n12_N8S19604C2D1Ev)();
extern void ABISELECT(_ZThn640_N8S19604C2D1Ev,_ZThn344_N8S19604C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19604C2D0Ev,_ZTv0_n12_N8S19604C2D0Ev)();
extern void ABISELECT(_ZThn640_N8S19604C2D0Ev,_ZThn344_N8S19604C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19604C2[] = {
  ABISELECT(640,344),
  ABISELECT(144,84),
  0,
  (VTBL_ENTRY)&(_ZTI8S19604C2[0]),
  (VTBL_ENTRY)&_ZN8S19604C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19604C2D0Ev,
  0,
  ABISELECT(-144,-84),
  ABISELECT(496,260),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI8S19604C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19604C2D1Ev,_ZTv0_n16_N8S19604C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19604C2D0Ev,_ZTv0_n16_N8S19604C2D0Ev),
  (VTBL_ENTRY)&_ZN8S19604C42v2Ev,
  ABISELECT(-640,-344),
  ABISELECT(-640,-344),
  (VTBL_ENTRY)&(_ZTI8S19604C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C2D1Ev,_ZTv0_n12_N8S19604C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C2D0Ev,_ZTv0_n12_N8S19604C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S19604C2[];
extern void _ZN8S19604C4D1Ev();
extern void _ZN8S19604C4D0Ev();
extern void _ZN8S19604C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19604C4__8S19604C2[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19604C4[0]),
  (VTBL_ENTRY)&_ZN8S19604C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19604C4D0Ev,
  (VTBL_ENTRY)&_ZN8S19604C42v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19604C4D1Ev,_ZTv0_n12_N8S19604C4D1Ev)();
extern void ABISELECT(_ZThn496_N8S19604C4D1Ev,_ZThn260_N8S19604C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19604C4D0Ev,_ZTv0_n12_N8S19604C4D0Ev)();
extern void ABISELECT(_ZThn496_N8S19604C4D0Ev,_ZThn260_N8S19604C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19604C5__8S19604C4__8S19604C2[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI8S19604C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C4D1Ev,_ZTv0_n12_N8S19604C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C4D0Ev,_ZTv0_n12_N8S19604C4D0Ev),
};
static  VTT_ENTRY vtt_S19604C2[] = {
  {&(_ZTV8S19604C2[4]),  4,19},
  {&(_ZTV8S19604C2[11]),  11,19},
  {&(_ZTV8S19604C2[17]),  17,19},
  {&(_tg__ZTV8S19604C4__8S19604C2[3]),  3,6},
  {&(_tg__ZTV8S19604C5__8S19604C4__8S19604C2[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19604C2[];
extern  VTBL_ENTRY _ZTV8S19604C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19604C2[];
static VTBL_ENTRY alt_thunk_names151[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19604C4D0Ev,_ZTv0_n12_N8S19604C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19604C4D0Ev,_ZThn260_N8S19604C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19604C4D1Ev,_ZTv0_n12_N8S19604C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19604C4D1Ev,_ZThn260_N8S19604C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19604C2D0Ev,_ZTv0_n12_N8S19604C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N8S19604C2D0Ev,_ZThn344_N8S19604C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19604C2D1Ev,_ZTv0_n12_N8S19604C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N8S19604C2D1Ev,_ZThn344_N8S19604C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19604C2D0Ev,_ZTv0_n16_N8S19604C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S19604C2D0Ev,_ZThn84_N8S19604C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19604C2D1Ev,_ZTv0_n16_N8S19604C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S19604C2D1Ev,_ZThn84_N8S19604C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19604C2 = {  "S19604C2", // class name
  bases_S19604C2, 5,
  &(vtc_S19604C2[0]), // expected_vtbl_contents
  &(vtt_S19604C2[0]), // expected_vtt_contents
  ABISELECT(784,420), // object size
  NSPAIRA(_ZTI8S19604C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19604C2),19, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19604C2),5, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names151,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19604C10  : virtual S19604C5 {
  char s19604c10f0;
  short s19604c10f1;
  long double s19604c10f2;
  void *s19604c10f3[2];
  virtual void  v3(); // _ZN9S19604C102v3Ev
  ~S19604C10(); // tgen
  S19604C10(); // tgen
};
//SIG(-1 S19604C10) C1{ VBC2{ BC3{ vd m Fc Fc:0 Fl[8] FD} Fp FC4{} Fp FD} v1 Fc Fs FD Fp[2]}


void  S19604C10 ::v3(){vfunc_called(this, "_ZN9S19604C102v3Ev");}
S19604C10 ::~S19604C10(){ note_dtor("S19604C10", this);} // tgen
S19604C10 ::S19604C10(){ note_ctor("S19604C10", this);} // tgen

static void Test_S19604C10()
{
  extern Class_Descriptor cd_S19604C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,27)];
    init_test(&cd_S19604C10, buf);
    S19604C10 *dp, &lv = *(dp=new (buf) S19604C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,104), "sizeof(S19604C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19604C10)");
    check_base_class_offset(lv, (S8033C7*)(S19604C5*), ABISELECT(48,28), "S19604C10");
    check_base_class_offset(lv, (S19604C5*), ABISELECT(48,28), "S19604C10");
    check_field_offset(lv, s19604c10f0, ABISELECT(8,4), "S19604C10.s19604c10f0");
    check_field_offset(lv, s19604c10f1, ABISELECT(10,6), "S19604C10.s19604c10f1");
    check_field_offset(lv, s19604c10f2, ABISELECT(16,8), "S19604C10.s19604c10f2");
    check_field_offset(lv, s19604c10f3, ABISELECT(32,20), "S19604C10.s19604c10f3");
    test_class_info(&lv, &cd_S19604C10);
    dp->~S19604C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19604C10(Test_S19604C10, "S19604C10", ABISELECT(192,104));

#else // __cplusplus

extern void _ZN9S19604C10C1Ev();
extern void _ZN9S19604C10D1Ev();
Name_Map name_map_S19604C10[] = {
  NSPAIR(_ZN9S19604C10C1Ev),
  NSPAIR(_ZN9S19604C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19604C5;
extern VTBL_ENTRY _ZTI8S19604C5[];
extern  VTBL_ENTRY _ZTV8S19604C5[];
static Base_Class bases_S19604C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19604C5,    ABISELECT(48,28), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19604C10[];
extern void _ZN9S19604C102v3Ev();
extern void _ZN9S19604C10D1Ev();
extern void _ZN9S19604C10D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S19604C10D1Ev,_ZTv0_n12_N9S19604C10D1Ev)();
extern void ABISELECT(_ZThn48_N9S19604C10D1Ev,_ZThn28_N9S19604C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19604C10D0Ev,_ZTv0_n12_N9S19604C10D0Ev)();
extern void ABISELECT(_ZThn48_N9S19604C10D0Ev,_ZThn28_N9S19604C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19604C10[] = {
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19604C10[0]),
  (VTBL_ENTRY)&_ZN9S19604C102v3Ev,
  (VTBL_ENTRY)&_ZN9S19604C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19604C10D0Ev,
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19604C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19604C10D1Ev,_ZTv0_n12_N9S19604C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19604C10D0Ev,_ZTv0_n12_N9S19604C10D0Ev),
};
extern VTBL_ENTRY _ZTV9S19604C10[];
static  VTT_ENTRY vtt_S19604C10[] = {
  {&(_ZTV9S19604C10[3]),  3,11},
  {&(_ZTV9S19604C10[9]),  9,11},
};
extern VTBL_ENTRY _ZTI9S19604C10[];
extern  VTBL_ENTRY _ZTV9S19604C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19604C10[];
static VTBL_ENTRY alt_thunk_names152[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19604C10D0Ev,_ZTv0_n12_N9S19604C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19604C10D0Ev,_ZThn28_N9S19604C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19604C10D1Ev,_ZTv0_n12_N9S19604C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19604C10D1Ev,_ZThn28_N9S19604C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19604C10 = {  "S19604C10", // class name
  bases_S19604C10, 2,
  &(vtc_S19604C10[0]), // expected_vtbl_contents
  &(vtt_S19604C10[0]), // expected_vtt_contents
  ABISELECT(192,104), // object size
  NSPAIRA(_ZTI9S19604C10),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19604C10),11, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19604C10),2, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names152,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19604C9  : S19604C2 , virtual S19604C10 {
  char s19604c9f0;
  int s19604c9f1:32;
  virtual  ~S19604C9(); // _ZN8S19604C9D2Ev
  S19604C9(); // tgen
};
//SIG(-1 S19604C9) C1{ BC2{ BC3{ vd m Fc Fc:0 Fl[8] FD} VBC4{ BC3 VBC5{ BC3 Fp FC6{} Fp FD} vd v1 Fi Fc Fp Fi Fp[2] FC7{ BC5 VBC3 vd FC3 Fp}} vd Fp FL[2] Fc Fp Fi} VBC8{ VBC5 v2 Fc Fs FD Fp[2]} vd Fc Fi:32}


 S19604C9 ::~S19604C9(){ note_dtor("S19604C9", this);}
S19604C9 ::S19604C9(){ note_ctor("S19604C9", this);} // tgen

static void Test_S19604C9()
{
  extern Class_Descriptor cd_S19604C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(54,115)];
    init_test(&cd_S19604C9, buf);
    S19604C9 *dp, &lv = *(dp=new (buf) S19604C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(848,456), "sizeof(S19604C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19604C9)");
    /*is_ambiguous_... S19604C2::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19604C2*), 0, "S19604C9");
    /*is_ambiguous_... S19604C4::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19604C4*), ABISELECT(160,92), "S19604C9");
    check_base_class_offset(lv, (S8033C7*)(S19604C5*), ABISELECT(656,352), "S19604C9");
    check_base_class_offset(lv, (S19604C5*)(S19604C4*), ABISELECT(656,352), "S19604C9");
    check_base_class_offset(lv, (S19604C5*)(S19604C10*), ABISELECT(656,352), "S19604C9");
    check_base_class_offset(lv, (S19604C4*)(S19604C2*), ABISELECT(160,92), "S19604C9");
    check_base_class_offset(lv, (S19604C2*), 0, "S19604C9");
    check_base_class_offset(lv, (S19604C10*), ABISELECT(800,428), "S19604C9");
    check_field_offset(lv, s19604c9f0, ABISELECT(140,84), "S19604C9.s19604c9f0");
    set_bf_and_test(lv, s19604c9f1, ABISELECT(144,88), 0, 32, 1, "S19604C9");
    set_bf_and_test(lv, s19604c9f1, ABISELECT(144,88), 0, 32, hide_sll(1LL<<31), "S19604C9");
    test_class_info(&lv, &cd_S19604C9);
    dp->~S19604C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19604C9(Test_S19604C9, "S19604C9", ABISELECT(848,456));

#else // __cplusplus

extern void _ZN8S19604C9C1Ev();
extern void _ZN8S19604C9D2Ev();
Name_Map name_map_S19604C9[] = {
  NSPAIR(_ZN8S19604C9C1Ev),
  NSPAIR(_ZN8S19604C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19604C5;
extern VTBL_ENTRY _ZTI8S19604C5[];
extern  VTBL_ENTRY _ZTV8S19604C5[];
extern Class_Descriptor cd_S19604C4;
extern VTBL_ENTRY _ZTI8S19604C4[];
extern  VTBL_ENTRY _ZTV8S19604C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19604C4[];
extern Class_Descriptor cd_S19604C2;
extern VTBL_ENTRY _ZTI8S19604C2[];
extern  VTBL_ENTRY _ZTV8S19604C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19604C2[];
extern Class_Descriptor cd_S19604C10;
extern VTBL_ENTRY _ZTI9S19604C10[];
extern  VTBL_ENTRY _ZTV9S19604C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19604C10[];
static Base_Class bases_S19604C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(160,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(656,352), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19604C5,    ABISELECT(656,352), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19604C4,    ABISELECT(160,92), //bcp->offset
    7, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19604C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19604C10,    ABISELECT(800,428), //bcp->offset
    20, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19604C9[];
extern void _ZN8S19604C9D1Ev();
extern void _ZN8S19604C9D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S19604C9D1Ev,_ZTv0_n16_N8S19604C9D1Ev)();
extern void ABISELECT(_ZThn160_N8S19604C9D1Ev,_ZThn92_N8S19604C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19604C9D0Ev,_ZTv0_n16_N8S19604C9D0Ev)();
extern void ABISELECT(_ZThn160_N8S19604C9D0Ev,_ZThn92_N8S19604C9D0Ev)() __attribute__((weak));
extern void _ZN8S19604C42v2Ev();
extern void ABISELECT(_ZTv0_n24_N8S19604C9D1Ev,_ZTv0_n12_N8S19604C9D1Ev)();
extern void ABISELECT(_ZThn656_N8S19604C9D1Ev,_ZThn352_N8S19604C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19604C9D0Ev,_ZTv0_n12_N8S19604C9D0Ev)();
extern void ABISELECT(_ZThn656_N8S19604C9D0Ev,_ZThn352_N8S19604C9D0Ev)() __attribute__((weak));
extern void _ZN9S19604C102v3Ev();
extern void ABISELECT(_ZTv0_n40_N8S19604C9D1Ev,_ZTv0_n20_N8S19604C9D1Ev)();
extern void ABISELECT(_ZThn800_N8S19604C9D1Ev,_ZThn428_N8S19604C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19604C9D0Ev,_ZTv0_n20_N8S19604C9D0Ev)();
extern void ABISELECT(_ZThn800_N8S19604C9D0Ev,_ZThn428_N8S19604C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19604C9[] = {
  ABISELECT(800,428),
  ABISELECT(656,352),
  ABISELECT(160,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S19604C9[0]),
  (VTBL_ENTRY)&_ZN8S19604C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19604C9D0Ev,
  0,
  ABISELECT(-160,-92),
  ABISELECT(496,260),
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI8S19604C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19604C9D1Ev,_ZTv0_n16_N8S19604C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19604C9D0Ev,_ZTv0_n16_N8S19604C9D0Ev),
  (VTBL_ENTRY)&_ZN8S19604C42v2Ev,
  ABISELECT(-656,-352),
  ABISELECT(-656,-352),
  (VTBL_ENTRY)&(_ZTI8S19604C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C9D1Ev,_ZTv0_n12_N8S19604C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C9D0Ev,_ZTv0_n12_N8S19604C9D0Ev),
  ABISELECT(-800,-428),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-800,-428),
  (VTBL_ENTRY)&(_ZTI8S19604C9[0]),
  (VTBL_ENTRY)&_ZN9S19604C102v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19604C9D1Ev,_ZTv0_n20_N8S19604C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19604C9D0Ev,_ZTv0_n20_N8S19604C9D0Ev),
};
extern VTBL_ENTRY _ZTV8S19604C9[];
extern void _ZN8S19604C2D1Ev();
extern void _ZN8S19604C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19604C2__8S19604C9[] = {
  ABISELECT(656,352),
  ABISELECT(160,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S19604C2[0]),
  (VTBL_ENTRY)&_ZN8S19604C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19604C2D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19604C2D1Ev,_ZTv0_n16_N8S19604C2D1Ev)();
extern void ABISELECT(_ZThn160_N8S19604C2D1Ev,_ZThn92_N8S19604C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19604C2D0Ev,_ZTv0_n16_N8S19604C2D0Ev)();
extern void ABISELECT(_ZThn160_N8S19604C2D0Ev,_ZThn92_N8S19604C2D0Ev)() __attribute__((weak));
extern void _ZN8S19604C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19604C4__8S19604C2__8S19604C9[] = {
  0,
  ABISELECT(-160,-92),
  ABISELECT(496,260),
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI8S19604C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19604C2D1Ev,_ZTv0_n16_N8S19604C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19604C2D0Ev,_ZTv0_n16_N8S19604C2D0Ev),
  (VTBL_ENTRY)&_ZN8S19604C42v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19604C2D1Ev,_ZTv0_n12_N8S19604C2D1Ev)();
extern void ABISELECT(_ZThn656_N8S19604C2D1Ev,_ZThn352_N8S19604C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19604C2D0Ev,_ZTv0_n12_N8S19604C2D0Ev)();
extern void ABISELECT(_ZThn656_N8S19604C2D0Ev,_ZThn352_N8S19604C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19604C5__8S19604C2__8S19604C9[] = {
  ABISELECT(-656,-352),
  ABISELECT(-656,-352),
  (VTBL_ENTRY)&(_ZTI8S19604C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C2D1Ev,_ZTv0_n12_N8S19604C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C2D0Ev,_ZTv0_n12_N8S19604C2D0Ev),
};
extern void _ZN8S19604C4D1Ev();
extern void _ZN8S19604C4D0Ev();
extern void _ZN8S19604C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19604C4__8S19604C9[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19604C4[0]),
  (VTBL_ENTRY)&_ZN8S19604C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19604C4D0Ev,
  (VTBL_ENTRY)&_ZN8S19604C42v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19604C4D1Ev,_ZTv0_n12_N8S19604C4D1Ev)();
extern void ABISELECT(_ZThn496_N8S19604C4D1Ev,_ZThn260_N8S19604C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19604C4D0Ev,_ZTv0_n12_N8S19604C4D0Ev)();
extern void ABISELECT(_ZThn496_N8S19604C4D0Ev,_ZThn260_N8S19604C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19604C5__8S19604C4__8S19604C9[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI8S19604C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C4D1Ev,_ZTv0_n12_N8S19604C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C4D0Ev,_ZTv0_n12_N8S19604C4D0Ev),
};
extern void _ZN9S19604C102v3Ev();
extern void _ZN9S19604C10D1Ev();
extern void _ZN9S19604C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19604C10__8S19604C9[] = {
  ABISELECT(-144,-76),
  0,
  (VTBL_ENTRY)&(_ZTI9S19604C10[0]),
  (VTBL_ENTRY)&_ZN9S19604C102v3Ev,
  (VTBL_ENTRY)&_ZN9S19604C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19604C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19604C10D1Ev,_ZTv0_n12_N9S19604C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19604C10D0Ev,_ZTv0_n12_N9S19604C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19604C5__9S19604C10__8S19604C9[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI9S19604C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19604C10D1Ev,_ZTv0_n12_N9S19604C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19604C10D0Ev,_ZTv0_n12_N9S19604C10D0Ev),
};
static  VTT_ENTRY vtt_S19604C9[] = {
  {&(_ZTV8S19604C9[5]),  5,28},
  {&(_tg__ZTV8S19604C2__8S19604C9[4]),  4,6},
  {&(_tg__ZTV8S19604C4__8S19604C2__8S19604C9[5]),  5,8},
  {&(_tg__ZTV8S19604C5__8S19604C2__8S19604C9[3]),  3,5},
  {&(_ZTV8S19604C9[12]),  12,28},
  {&(_ZTV8S19604C9[18]),  18,28},
  {&(_ZTV8S19604C9[25]),  25,28},
  {&(_tg__ZTV8S19604C4__8S19604C9[3]),  3,6},
  {&(_tg__ZTV8S19604C5__8S19604C4__8S19604C9[3]),  3,5},
  {&(_tg__ZTV9S19604C10__8S19604C9[3]),  3,6},
  {&(_tg__ZTV8S19604C5__9S19604C10__8S19604C9[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19604C9[];
extern  VTBL_ENTRY _ZTV8S19604C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19604C9[];
static VTBL_ENTRY alt_thunk_names153[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19604C4D0Ev,_ZTv0_n12_N8S19604C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19604C4D0Ev,_ZThn260_N8S19604C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19604C4D1Ev,_ZTv0_n12_N8S19604C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19604C4D1Ev,_ZThn260_N8S19604C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19604C2D0Ev,_ZTv0_n12_N8S19604C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S19604C2D0Ev,_ZThn352_N8S19604C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19604C2D1Ev,_ZTv0_n12_N8S19604C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S19604C2D1Ev,_ZThn352_N8S19604C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19604C2D0Ev,_ZTv0_n16_N8S19604C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19604C2D0Ev,_ZThn92_N8S19604C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19604C2D1Ev,_ZTv0_n16_N8S19604C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19604C2D1Ev,_ZThn92_N8S19604C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19604C9D0Ev,_ZTv0_n20_N8S19604C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn800_N8S19604C9D0Ev,_ZThn428_N8S19604C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19604C9D1Ev,_ZTv0_n20_N8S19604C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn800_N8S19604C9D1Ev,_ZThn428_N8S19604C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19604C9D0Ev,_ZTv0_n12_N8S19604C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S19604C9D0Ev,_ZThn352_N8S19604C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19604C9D1Ev,_ZTv0_n12_N8S19604C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S19604C9D1Ev,_ZThn352_N8S19604C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19604C9D0Ev,_ZTv0_n16_N8S19604C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19604C9D0Ev,_ZThn92_N8S19604C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19604C9D1Ev,_ZTv0_n16_N8S19604C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19604C9D1Ev,_ZThn92_N8S19604C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19604C9 = {  "S19604C9", // class name
  bases_S19604C9, 7,
  &(vtc_S19604C9[0]), // expected_vtbl_contents
  &(vtt_S19604C9[0]), // expected_vtt_contents
  ABISELECT(848,456), // object size
  NSPAIRA(_ZTI8S19604C9),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19604C9),28, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19604C9),11, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names153,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19604C12  {
  long double s19604c12f0;
  void *s19604c12f1;
  ::S8033C7 s19604c12f2;
  __tsi64 s19604c12f3;
  long double s19604c12f4;
  int s19604c12f5;
  virtual void  v4(); // _ZN9S19604C122v4Ev
  ~S19604C12(); // tgen
  S19604C12(); // tgen
};
//SIG(-1 S19604C12) C1{ v1 FD Fp FC2{ vd m Fc Fc:0 Fl[8] FD} FL FD Fi}


void  S19604C12 ::v4(){vfunc_called(this, "_ZN9S19604C122v4Ev");}
S19604C12 ::~S19604C12(){ note_dtor("S19604C12", this);} // tgen
S19604C12 ::S19604C12(){ note_ctor("S19604C12", this);} // tgen

static void Test_S19604C12()
{
  extern Class_Descriptor cd_S19604C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,25)];
    init_test(&cd_S19604C12, buf);
    S19604C12 *dp, &lv = *(dp=new (buf) S19604C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,96), "sizeof(S19604C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19604C12)");
    check_field_offset(lv, s19604c12f0, ABISELECT(16,4), "S19604C12.s19604c12f0");
    check_field_offset(lv, s19604c12f1, ABISELECT(32,16), "S19604C12.s19604c12f1");
    check_field_offset(lv, s19604c12f2, ABISELECT(48,20), "S19604C12.s19604c12f2");
    check_field_offset(lv, s19604c12f3, ABISELECT(144,72), "S19604C12.s19604c12f3");
    check_field_offset(lv, s19604c12f4, ABISELECT(160,80), "S19604C12.s19604c12f4");
    check_field_offset(lv, s19604c12f5, ABISELECT(176,92), "S19604C12.s19604c12f5");
    test_class_info(&lv, &cd_S19604C12);
    dp->~S19604C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19604C12(Test_S19604C12, "S19604C12", ABISELECT(192,96));

#else // __cplusplus

extern void _ZN9S19604C12C1Ev();
extern void _ZN9S19604C12D1Ev();
Name_Map name_map_S19604C12[] = {
  NSPAIR(_ZN9S19604C12C1Ev),
  NSPAIR(_ZN9S19604C12D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S19604C12[];
extern void _ZN9S19604C122v4Ev();
static  VTBL_ENTRY vtc_S19604C12[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S19604C12[0]),
  (VTBL_ENTRY)&_ZN9S19604C122v4Ev,
};
extern VTBL_ENTRY _ZTI9S19604C12[];
extern  VTBL_ENTRY _ZTV9S19604C12[];
Class_Descriptor cd_S19604C12 = {  "S19604C12", // class name
  0,0,//no base classes
  &(vtc_S19604C12[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(192,96), // object size
  NSPAIRA(_ZTI9S19604C12),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S19604C12),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19604C8  : virtual S19604C7 , virtual S19604C4 , virtual S19604C9 , virtual S8033C4 , virtual S19604C12 {
  void *s19604c8f0;
  ::S19604C12 s19604c8f1[3];
  ::S19604C12 s19604c8f2;
  char s19604c8f3;
  virtual  ~S19604C8(); // _ZN8S19604C8D2Ev
  S19604C8(); // tgen
};
//SIG(-1 S19604C8) C1{ VBC2{ BC3{ BC4{ vd m Fc Fc:0 Fl[8] FD} Fp FC5{} Fp FD} VBC4 vd FC4 Fp} VBC6{ BC4 VBC3 vd v1 Fi Fc Fp Fi Fp[2] FC2} VBC7{ BC8{ BC4 VBC6 vd Fp FL[2] Fc Fp Fi} VBC9{ VBC3 v2 Fc Fs FD Fp[2]} vd Fc Fi:32} VBC10{ m Fp[3] FL[8]} VBC11{ v3 FD Fp FC4 FL FD Fi} vd Fp FC11[3] FC11 Fc}


 S19604C8 ::~S19604C8(){ note_dtor("S19604C8", this);}
S19604C8 ::S19604C8(){ note_ctor("S19604C8", this);} // tgen

static void Test_S19604C8()
{
  extern Class_Descriptor cd_S19604C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(144,303)];
    init_test(&cd_S19604C8, buf);
    S19604C8 *dp, &lv = *(dp=new (buf) S19604C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2288,1208), "sizeof(S19604C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19604C8)");
    check_base_class_offset(lv, (S8033C7*)(S19604C5*)(S19604C7*), ABISELECT(800,396), "S19604C8");
    check_base_class_offset(lv, (S19604C5*)(S19604C7*), ABISELECT(800,396), "S19604C8");
    /*is_ambiguous_... S19604C7::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19604C7*), ABISELECT(1056,528), "S19604C8");
    check_base_class_offset(lv, (S19604C7*), ABISELECT(800,396), "S19604C8");
    /*is_ambiguous_... S19604C4::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19604C4*), ABISELECT(1152,580), "S19604C8");
    /*is_ambiguous_... S19604C8::S19604C5 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19604C5*), ABISELECT(1648,840), "S19604C8");
    check_base_class_offset(lv, (S19604C5*)(S19604C4*), ABISELECT(1648,840), "S19604C8");
    check_base_class_offset(lv, (S19604C5*)(S19604C10*), ABISELECT(1648,840), "S19604C8");
    check_base_class_offset(lv, (S19604C4*), ABISELECT(1152,580), "S19604C8");
    check_base_class_offset(lv, (S19604C4*)(S19604C2*)(S19604C9*), ABISELECT(1152,580), "S19604C8");
    /*is_ambiguous_... S19604C2::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19604C2*)(S19604C9*), ABISELECT(1792,916), "S19604C8");
    check_base_class_offset(lv, (S19604C2*)(S19604C9*), ABISELECT(1792,916), "S19604C8");
    check_base_class_offset(lv, (S19604C10*)(S19604C9*), ABISELECT(1952,1008), "S19604C8");
    check_base_class_offset(lv, (S19604C9*), ABISELECT(1792,916), "S19604C8");
    check_base_class_offset(lv, (S8033C4*), ABISELECT(2000,1036), "S19604C8");
    check_base_class_offset(lv, (S19604C12*), ABISELECT(2096,1112), "S19604C8");
    check_field_offset(lv, s19604c8f0, ABISELECT(8,4), "S19604C8.s19604c8f0");
    check_field_offset(lv, s19604c8f1, ABISELECT(16,8), "S19604C8.s19604c8f1");
    check_field_offset(lv, s19604c8f2, ABISELECT(592,296), "S19604C8.s19604c8f2");
    check_field_offset(lv, s19604c8f3, ABISELECT(784,392), "S19604C8.s19604c8f3");
    test_class_info(&lv, &cd_S19604C8);
    dp->~S19604C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19604C8(Test_S19604C8, "S19604C8", ABISELECT(2288,1208));

#else // __cplusplus

extern void _ZN8S19604C8C1Ev();
extern void _ZN8S19604C8D2Ev();
Name_Map name_map_S19604C8[] = {
  NSPAIR(_ZN8S19604C8C1Ev),
  NSPAIR(_ZN8S19604C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19604C5;
extern VTBL_ENTRY _ZTI8S19604C5[];
extern  VTBL_ENTRY _ZTV8S19604C5[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19604C7;
extern VTBL_ENTRY _ZTI8S19604C7[];
extern  VTBL_ENTRY _ZTV8S19604C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19604C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19604C5;
extern VTBL_ENTRY _ZTI8S19604C5[];
extern  VTBL_ENTRY _ZTV8S19604C5[];
extern Class_Descriptor cd_S19604C4;
extern VTBL_ENTRY _ZTI8S19604C4[];
extern  VTBL_ENTRY _ZTV8S19604C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19604C4[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19604C2;
extern VTBL_ENTRY _ZTI8S19604C2[];
extern  VTBL_ENTRY _ZTV8S19604C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19604C2[];
extern Class_Descriptor cd_S19604C10;
extern VTBL_ENTRY _ZTI9S19604C10[];
extern  VTBL_ENTRY _ZTV9S19604C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19604C10[];
extern Class_Descriptor cd_S19604C9;
extern VTBL_ENTRY _ZTI8S19604C9[];
extern  VTBL_ENTRY _ZTV8S19604C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19604C9[];
extern Class_Descriptor cd_S8033C4;
extern VTBL_ENTRY _ZTI7S8033C4[];
extern Class_Descriptor cd_S19604C12;
extern VTBL_ENTRY _ZTI9S19604C12[];
extern  VTBL_ENTRY _ZTV9S19604C12[];
static Base_Class bases_S19604C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    ABISELECT(800,396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19604C5,    ABISELECT(800,396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(1056,528), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19604C7,    ABISELECT(800,396), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C7,    ABISELECT(1152,580), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(1648,840), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19604C5,    ABISELECT(1648,840), //bcp->offset
    31, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19604C4,    ABISELECT(1152,580), //bcp->offset
    23, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C7,    ABISELECT(1792,916), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19604C2,    ABISELECT(1792,916), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19604C10,    ABISELECT(1952,1008), //bcp->offset
    44, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19604C9,    ABISELECT(1792,916), //bcp->offset
    36, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C4,    ABISELECT(2000,1036), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19604C12,    ABISELECT(2096,1112), //bcp->offset
    52, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19604C8[];
extern void _ZN8S19604C8D1Ev();
extern void _ZN8S19604C8D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S19604C8D1Ev,_ZTv0_n16_N8S19604C8D1Ev)();
extern void ABISELECT(_ZThn800_N8S19604C8D1Ev,_ZThn396_N8S19604C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19604C8D0Ev,_ZTv0_n16_N8S19604C8D0Ev)();
extern void ABISELECT(_ZThn800_N8S19604C8D0Ev,_ZThn396_N8S19604C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19604C8D1Ev,_ZTv0_n12_N8S19604C8D1Ev)();
extern void ABISELECT(_ZThn1056_N8S19604C8D1Ev,_ZThn528_N8S19604C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19604C8D0Ev,_ZTv0_n12_N8S19604C8D0Ev)();
extern void ABISELECT(_ZThn1056_N8S19604C8D0Ev,_ZThn528_N8S19604C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19604C8D1Ev,_ZTv0_n16_N8S19604C8D1Ev)();
extern void ABISELECT(_ZThn1152_N8S19604C8D1Ev,_ZThn580_N8S19604C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19604C8D0Ev,_ZTv0_n16_N8S19604C8D0Ev)();
extern void ABISELECT(_ZThn1152_N8S19604C8D0Ev,_ZThn580_N8S19604C8D0Ev)() __attribute__((weak));
extern void _ZN8S19604C42v2Ev();
extern void ABISELECT(_ZTv0_n24_N8S19604C8D1Ev,_ZTv0_n12_N8S19604C8D1Ev)();
extern void ABISELECT(_ZThn1648_N8S19604C8D1Ev,_ZThn840_N8S19604C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19604C8D0Ev,_ZTv0_n12_N8S19604C8D0Ev)();
extern void ABISELECT(_ZThn1648_N8S19604C8D0Ev,_ZThn840_N8S19604C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19604C8D1Ev,_ZTv0_n24_N8S19604C8D1Ev)();
extern void ABISELECT(_ZThn1792_N8S19604C8D1Ev,_ZThn916_N8S19604C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19604C8D0Ev,_ZTv0_n24_N8S19604C8D0Ev)();
extern void ABISELECT(_ZThn1792_N8S19604C8D0Ev,_ZThn916_N8S19604C8D0Ev)() __attribute__((weak));
extern void _ZN9S19604C102v3Ev();
extern void ABISELECT(_ZTv0_n40_N8S19604C8D1Ev,_ZTv0_n20_N8S19604C8D1Ev)();
extern void ABISELECT(_ZThn1952_N8S19604C8D1Ev,_ZThn1008_N8S19604C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19604C8D0Ev,_ZTv0_n20_N8S19604C8D0Ev)();
extern void ABISELECT(_ZThn1952_N8S19604C8D0Ev,_ZThn1008_N8S19604C8D0Ev)() __attribute__((weak));
extern void _ZN9S19604C122v4Ev();
static  VTBL_ENTRY vtc_S19604C8[] = {
  ABISELECT(2096,1112),
  ABISELECT(2000,1036),
  ABISELECT(1952,1008),
  ABISELECT(1792,916),
  ABISELECT(1648,840),
  ABISELECT(1152,580),
  ABISELECT(1056,528),
  ABISELECT(800,396),
  0,
  (VTBL_ENTRY)&(_ZTI8S19604C8[0]),
  (VTBL_ENTRY)&_ZN8S19604C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19604C8D0Ev,
  ABISELECT(-800,-396),
  ABISELECT(256,132),
  ABISELECT(-800,-396),
  (VTBL_ENTRY)&(_ZTI8S19604C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19604C8D1Ev,_ZTv0_n16_N8S19604C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19604C8D0Ev,_ZTv0_n16_N8S19604C8D0Ev),
  ABISELECT(-1056,-528),
  ABISELECT(-1056,-528),
  (VTBL_ENTRY)&(_ZTI8S19604C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C8D1Ev,_ZTv0_n12_N8S19604C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C8D0Ev,_ZTv0_n12_N8S19604C8D0Ev),
  0,
  ABISELECT(-1152,-580),
  ABISELECT(496,260),
  ABISELECT(-1152,-580),
  (VTBL_ENTRY)&(_ZTI8S19604C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19604C8D1Ev,_ZTv0_n16_N8S19604C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19604C8D0Ev,_ZTv0_n16_N8S19604C8D0Ev),
  (VTBL_ENTRY)&_ZN8S19604C42v2Ev,
  ABISELECT(-1648,-840),
  ABISELECT(-1648,-840),
  (VTBL_ENTRY)&(_ZTI8S19604C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C8D1Ev,_ZTv0_n12_N8S19604C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C8D0Ev,_ZTv0_n12_N8S19604C8D0Ev),
  ABISELECT(-1792,-916),
  ABISELECT(160,92),
  ABISELECT(-144,-76),
  ABISELECT(-640,-336),
  ABISELECT(-1792,-916),
  (VTBL_ENTRY)&(_ZTI8S19604C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19604C8D1Ev,_ZTv0_n24_N8S19604C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19604C8D0Ev,_ZTv0_n24_N8S19604C8D0Ev),
  ABISELECT(-1952,-1008),
  0,
  ABISELECT(-304,-168),
  ABISELECT(-1952,-1008),
  (VTBL_ENTRY)&(_ZTI8S19604C8[0]),
  (VTBL_ENTRY)&_ZN9S19604C102v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19604C8D1Ev,_ZTv0_n20_N8S19604C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19604C8D0Ev,_ZTv0_n20_N8S19604C8D0Ev),
  0,
  ABISELECT(-2096,-1112),
  (VTBL_ENTRY)&(_ZTI8S19604C8[0]),
  (VTBL_ENTRY)&_ZN9S19604C122v4Ev,
};
extern VTBL_ENTRY _ZTV8S19604C8[];
extern void _ZN8S19604C7D1Ev();
extern void _ZN8S19604C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19604C7__8S19604C8[] = {
  ABISELECT(256,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S19604C7[0]),
  (VTBL_ENTRY)&_ZN8S19604C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19604C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19604C7D1Ev,_ZTv0_n12_N8S19604C7D1Ev)();
extern void ABISELECT(_ZThn256_N8S19604C7D1Ev,_ZThn132_N8S19604C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19604C7D0Ev,_ZTv0_n12_N8S19604C7D0Ev)();
extern void ABISELECT(_ZThn256_N8S19604C7D0Ev,_ZThn132_N8S19604C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__8S19604C7__8S19604C8[] = {
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  (VTBL_ENTRY)&(_ZTI8S19604C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C7D1Ev,_ZTv0_n12_N8S19604C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C7D0Ev,_ZTv0_n12_N8S19604C7D0Ev),
};
extern void _ZN8S19604C4D1Ev();
extern void _ZN8S19604C4D0Ev();
extern void _ZN8S19604C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19604C4__8S19604C8[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19604C4[0]),
  (VTBL_ENTRY)&_ZN8S19604C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19604C4D0Ev,
  (VTBL_ENTRY)&_ZN8S19604C42v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19604C4D1Ev,_ZTv0_n12_N8S19604C4D1Ev)();
extern void ABISELECT(_ZThn496_N8S19604C4D1Ev,_ZThn260_N8S19604C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19604C4D0Ev,_ZTv0_n12_N8S19604C4D0Ev)();
extern void ABISELECT(_ZThn496_N8S19604C4D0Ev,_ZThn260_N8S19604C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19604C5__8S19604C4__8S19604C8[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI8S19604C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C4D1Ev,_ZTv0_n12_N8S19604C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C4D0Ev,_ZTv0_n12_N8S19604C4D0Ev),
};
extern void _ZN8S19604C9D1Ev();
extern void _ZN8S19604C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19604C9__8S19604C8[] = {
  ABISELECT(160,92),
  ABISELECT(-144,-76),
  ABISELECT(-640,-336),
  0,
  (VTBL_ENTRY)&(_ZTI8S19604C9[0]),
  (VTBL_ENTRY)&_ZN8S19604C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19604C9D0Ev,
};
extern void _ZN8S19604C2D1Ev();
extern void _ZN8S19604C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19604C28S19604C9__8S19604C8[] = {
  ABISELECT(-144,-76),
  ABISELECT(-640,-336),
  0,
  (VTBL_ENTRY)&(_ZTI8S19604C2[0]),
  (VTBL_ENTRY)&_ZN8S19604C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19604C2D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19604C2D1Ev,_ZTv0_n16_N8S19604C2D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19604C2D0Ev,_ZTv0_n16_N8S19604C2D0Ev)();
extern void _ZN8S19604C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19604C4__8S19604C28S19604C9__8S19604C8[] = {
  0,
  ABISELECT(640,336),
  ABISELECT(496,260),
  ABISELECT(640,336),
  (VTBL_ENTRY)&(_ZTI8S19604C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19604C2D1Ev,_ZTv0_n16_N8S19604C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19604C2D0Ev,_ZTv0_n16_N8S19604C2D0Ev),
  (VTBL_ENTRY)&_ZN8S19604C42v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19604C2D1Ev,_ZTv0_n12_N8S19604C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19604C2D0Ev,_ZTv0_n12_N8S19604C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19604C5__8S19604C28S19604C9__8S19604C8[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S19604C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C2D1Ev,_ZTv0_n12_N8S19604C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C2D0Ev,_ZTv0_n12_N8S19604C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19604C9D1Ev,_ZTv0_n16_N8S19604C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19604C9D0Ev,_ZTv0_n16_N8S19604C9D0Ev)();
extern void _ZN8S19604C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19604C4__8S19604C9__8S19604C8[] = {
  0,
  ABISELECT(640,336),
  ABISELECT(496,260),
  ABISELECT(640,336),
  (VTBL_ENTRY)&(_ZTI8S19604C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19604C9D1Ev,_ZTv0_n16_N8S19604C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19604C9D0Ev,_ZTv0_n16_N8S19604C9D0Ev),
  (VTBL_ENTRY)&_ZN8S19604C42v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19604C9D1Ev,_ZTv0_n12_N8S19604C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19604C9D0Ev,_ZTv0_n12_N8S19604C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19604C5__8S19604C9__8S19604C8[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S19604C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C9D1Ev,_ZTv0_n12_N8S19604C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C9D0Ev,_ZTv0_n12_N8S19604C9D0Ev),
};
extern void _ZN9S19604C102v3Ev();
extern void ABISELECT(_ZTv0_n40_N8S19604C9D1Ev,_ZTv0_n20_N8S19604C9D1Ev)();
extern void ABISELECT(_ZThn160_N8S19604C9D1Ev,_ZThn92_N8S19604C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19604C9D0Ev,_ZTv0_n20_N8S19604C9D0Ev)();
extern void ABISELECT(_ZThn160_N8S19604C9D0Ev,_ZThn92_N8S19604C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19604C10__8S19604C9__8S19604C8[] = {
  ABISELECT(-160,-92),
  0,
  ABISELECT(-304,-168),
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI8S19604C9[0]),
  (VTBL_ENTRY)&_ZN9S19604C102v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19604C9D1Ev,_ZTv0_n20_N8S19604C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19604C9D0Ev,_ZTv0_n20_N8S19604C9D0Ev),
};
extern void _ZN9S19604C102v3Ev();
extern void _ZN9S19604C10D1Ev();
extern void _ZN9S19604C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19604C10__8S19604C8[] = {
  ABISELECT(-304,-168),
  0,
  (VTBL_ENTRY)&(_ZTI9S19604C10[0]),
  (VTBL_ENTRY)&_ZN9S19604C102v3Ev,
  (VTBL_ENTRY)&_ZN9S19604C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19604C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19604C10D1Ev,_ZTv0_n12_N9S19604C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19604C10D0Ev,_ZTv0_n12_N9S19604C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19604C5__9S19604C10__8S19604C8[] = {
  ABISELECT(304,168),
  ABISELECT(304,168),
  (VTBL_ENTRY)&(_ZTI9S19604C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19604C10D1Ev,_ZTv0_n12_N9S19604C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19604C10D0Ev,_ZTv0_n12_N9S19604C10D0Ev),
};
static  VTT_ENTRY vtt_S19604C8[] = {
  {&(_ZTV8S19604C8[10]),  10,56},
  {&(_ZTV8S19604C8[16]),  16,56},
  {&(_ZTV8S19604C8[21]),  21,56},
  {&(_ZTV8S19604C8[28]),  28,56},
  {&(_ZTV8S19604C8[34]),  34,56},
  {&(_ZTV8S19604C8[42]),  42,56},
  {&(_ZTV8S19604C8[49]),  49,56},
  {&(_ZTV8S19604C8[55]),  55,56},
  {&(_tg__ZTV8S19604C7__8S19604C8[3]),  3,5},
  {&(_tg__ZTV7S8033C7__A1__8S19604C7__8S19604C8[3]),  3,5},
  {&(_tg__ZTV8S19604C4__8S19604C8[3]),  3,6},
  {&(_tg__ZTV8S19604C5__8S19604C4__8S19604C8[3]),  3,5},
  {&(_tg__ZTV8S19604C9__8S19604C8[5]),  5,7},
  {&(_tg__ZTV8S19604C28S19604C9__8S19604C8[4]),  4,6},
  {&(_tg__ZTV8S19604C4__8S19604C28S19604C9__8S19604C8[5]),  5,8},
  {&(_tg__ZTV8S19604C5__8S19604C28S19604C9__8S19604C8[3]),  3,5},
  {&(_tg__ZTV8S19604C4__8S19604C9__8S19604C8[5]),  5,8},
  {&(_tg__ZTV8S19604C5__8S19604C9__8S19604C8[3]),  3,5},
  {&(_tg__ZTV9S19604C10__8S19604C9__8S19604C8[5]),  5,8},
  {&(_tg__ZTV9S19604C10__8S19604C8[3]),  3,6},
  {&(_tg__ZTV8S19604C5__9S19604C10__8S19604C8[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19604C8[];
extern  VTBL_ENTRY _ZTV8S19604C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19604C8[];
static VTBL_ENTRY alt_thunk_names154[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19604C9D0Ev,_ZTv0_n20_N8S19604C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19604C9D0Ev,_ZThn92_N8S19604C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19604C9D1Ev,_ZTv0_n20_N8S19604C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19604C9D1Ev,_ZThn92_N8S19604C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19604C4D0Ev,_ZTv0_n12_N8S19604C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19604C4D0Ev,_ZThn260_N8S19604C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19604C4D1Ev,_ZTv0_n12_N8S19604C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19604C4D1Ev,_ZThn260_N8S19604C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19604C7D0Ev,_ZTv0_n12_N8S19604C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19604C7D0Ev,_ZThn132_N8S19604C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19604C7D1Ev,_ZTv0_n12_N8S19604C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19604C7D1Ev,_ZThn132_N8S19604C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19604C8D0Ev,_ZTv0_n20_N8S19604C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1952_N8S19604C8D0Ev,_ZThn1008_N8S19604C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19604C8D1Ev,_ZTv0_n20_N8S19604C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1952_N8S19604C8D1Ev,_ZThn1008_N8S19604C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19604C8D0Ev,_ZTv0_n24_N8S19604C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1792_N8S19604C8D0Ev,_ZThn916_N8S19604C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19604C8D1Ev,_ZTv0_n24_N8S19604C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1792_N8S19604C8D1Ev,_ZThn916_N8S19604C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19604C8D0Ev,_ZTv0_n12_N8S19604C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1648_N8S19604C8D0Ev,_ZThn840_N8S19604C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1056_N8S19604C8D0Ev,_ZThn528_N8S19604C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19604C8D1Ev,_ZTv0_n12_N8S19604C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1648_N8S19604C8D1Ev,_ZThn840_N8S19604C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1056_N8S19604C8D1Ev,_ZThn528_N8S19604C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19604C8D0Ev,_ZTv0_n16_N8S19604C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1152_N8S19604C8D0Ev,_ZThn580_N8S19604C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn800_N8S19604C8D0Ev,_ZThn396_N8S19604C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19604C8D1Ev,_ZTv0_n16_N8S19604C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1152_N8S19604C8D1Ev,_ZThn580_N8S19604C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn800_N8S19604C8D1Ev,_ZThn396_N8S19604C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19604C8 = {  "S19604C8", // class name
  bases_S19604C8, 14,
  &(vtc_S19604C8[0]), // expected_vtbl_contents
  &(vtt_S19604C8[0]), // expected_vtt_contents
  ABISELECT(2288,1208), // object size
  NSPAIRA(_ZTI8S19604C8),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19604C8),56, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19604C8),21, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names154,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19604C1  : virtual S19604C2 , virtual S19604C8 , S19604C12 {
  int s19604c1f0;
  long s19604c1f1;
  virtual  ~S19604C1(); // _ZN8S19604C1D2Ev
  virtual void  v1(); // _ZN8S19604C12v1Ev
  S19604C1(); // tgen
};
//SIG(1 S19604C1) C1{ VBC2{ BC3{ vd m Fc Fc:0 Fl[8] FD} VBC4{ BC3 VBC5{ BC3 Fp FC6{} Fp FD} vd v2 Fi Fc Fp Fi Fp[2] FC7{ BC5 VBC3 vd FC3 Fp}} vd Fp FL[2] Fc Fp Fi} VBC8{ VBC7 VBC4 VBC9{ BC2 VBC10{ VBC5 v3 Fc Fs FD Fp[2]} vd Fc Fi:32} VBC11{ m Fp[3] FL[8]} VBC12{ v4 FD Fp FC3 FL FD Fi} vd Fp FC12[3] FC12 Fc} BC12 vd v1 Fi Fl}


 S19604C1 ::~S19604C1(){ note_dtor("S19604C1", this);}
void  S19604C1 ::v1(){vfunc_called(this, "_ZN8S19604C12v1Ev");}
S19604C1 ::S19604C1(){ note_ctor("S19604C1", this);} // tgen

static void Test_S19604C1()
{
  extern Class_Descriptor cd_S19604C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(165,350)];
    init_test(&cd_S19604C1, buf);
    S19604C1 *dp, &lv = *(dp=new (buf) S19604C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2624,1396), "sizeof(S19604C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19604C1)");
    /*is_ambiguous_... S19604C1::S19604C2 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19604C2*), ABISELECT(192,104), "S19604C1");
    /*is_ambiguous_... S19604C4::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19604C4*), ABISELECT(336,188), "S19604C1");
    /*is_ambiguous_... S19604C1::S19604C5 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19604C5*), ABISELECT(832,448), "S19604C1");
    check_base_class_offset(lv, (S19604C5*)(S19604C4*), ABISELECT(832,448), "S19604C1");
    check_base_class_offset(lv, (S19604C5*)(S19604C10*), ABISELECT(832,448), "S19604C1");
    /*is_ambiguous_... S19604C1::S19604C2 */ AMB_check_base_class_offset(lv, (S19604C4*)(S19604C2*), ABISELECT(336,188), "S19604C1");
    check_base_class_offset(lv, (S19604C4*)(S19604C8*), ABISELECT(336,188), "S19604C1");
    check_base_class_offset(lv, (S19604C4*)(S19604C2*)(S19604C9*), ABISELECT(336,188), "S19604C1");
    /*is_ambiguous_... S19604C1::S19604C2 */ AMB_check_base_class_offset(lv, (S19604C2*), ABISELECT(192,104), "S19604C1");
    check_base_class_offset(lv, (S8033C7*)(S19604C5*)(S19604C7*), ABISELECT(1776,920), "S19604C1");
    check_base_class_offset(lv, (S19604C5*)(S19604C7*), ABISELECT(1776,920), "S19604C1");
    /*is_ambiguous_... S19604C7::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19604C7*), ABISELECT(2032,1052), "S19604C1");
    check_base_class_offset(lv, (S19604C7*)(S19604C8*), ABISELECT(1776,920), "S19604C1");
    /*is_ambiguous_... S19604C2::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19604C2*)(S19604C9*), ABISELECT(2128,1104), "S19604C1");
    check_base_class_offset(lv, (S19604C2*)(S19604C9*), ABISELECT(2128,1104), "S19604C1");
    check_base_class_offset(lv, (S19604C10*)(S19604C9*), ABISELECT(2288,1196), "S19604C1");
    check_base_class_offset(lv, (S19604C9*)(S19604C8*), ABISELECT(2128,1104), "S19604C1");
    check_base_class_offset(lv, (S8033C4*)(S19604C8*), ABISELECT(2336,1224), "S19604C1");
    check_base_class_offset(lv, (S19604C12*)(S19604C8*), ABISELECT(2432,1300), "S19604C1");
    check_base_class_offset(lv, (S19604C8*), ABISELECT(976,524), "S19604C1");
    /*is_ambiguous_... S19604C1::S19604C12 */ AMB_check_base_class_offset(lv, (S19604C12*), 0, "S19604C1");
    check_field_offset(lv, s19604c1f0, ABISELECT(180,96), "S19604C1.s19604c1f0");
    check_field_offset(lv, s19604c1f1, ABISELECT(184,100), "S19604C1.s19604c1f1");
    test_class_info(&lv, &cd_S19604C1);
    dp->~S19604C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19604C1(Test_S19604C1, "S19604C1", ABISELECT(2624,1396));

#else // __cplusplus

extern void _ZN8S19604C1C1Ev();
extern void _ZN8S19604C1D2Ev();
Name_Map name_map_S19604C1[] = {
  NSPAIR(_ZN8S19604C1C1Ev),
  NSPAIR(_ZN8S19604C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19604C5;
extern VTBL_ENTRY _ZTI8S19604C5[];
extern  VTBL_ENTRY _ZTV8S19604C5[];
extern Class_Descriptor cd_S19604C4;
extern VTBL_ENTRY _ZTI8S19604C4[];
extern  VTBL_ENTRY _ZTV8S19604C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19604C4[];
extern Class_Descriptor cd_S19604C2;
extern VTBL_ENTRY _ZTI8S19604C2[];
extern  VTBL_ENTRY _ZTV8S19604C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19604C2[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19604C5;
extern VTBL_ENTRY _ZTI8S19604C5[];
extern  VTBL_ENTRY _ZTV8S19604C5[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19604C7;
extern VTBL_ENTRY _ZTI8S19604C7[];
extern  VTBL_ENTRY _ZTV8S19604C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19604C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19604C2;
extern VTBL_ENTRY _ZTI8S19604C2[];
extern  VTBL_ENTRY _ZTV8S19604C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19604C2[];
extern Class_Descriptor cd_S19604C10;
extern VTBL_ENTRY _ZTI9S19604C10[];
extern  VTBL_ENTRY _ZTV9S19604C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19604C10[];
extern Class_Descriptor cd_S19604C9;
extern VTBL_ENTRY _ZTI8S19604C9[];
extern  VTBL_ENTRY _ZTV8S19604C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19604C9[];
extern Class_Descriptor cd_S8033C4;
extern VTBL_ENTRY _ZTI7S8033C4[];
extern Class_Descriptor cd_S19604C12;
extern VTBL_ENTRY _ZTI9S19604C12[];
extern  VTBL_ENTRY _ZTV9S19604C12[];
extern Class_Descriptor cd_S19604C8;
extern VTBL_ENTRY _ZTI8S19604C8[];
extern  VTBL_ENTRY _ZTV8S19604C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19604C8[];
extern Class_Descriptor cd_S19604C12;
extern VTBL_ENTRY _ZTI9S19604C12[];
extern  VTBL_ENTRY _ZTV9S19604C12[];
static Base_Class bases_S19604C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    ABISELECT(192,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(336,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(832,448), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19604C5,    ABISELECT(832,448), //bcp->offset
    31, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19604C4,    ABISELECT(336,188), //bcp->offset
    23, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19604C2,    ABISELECT(192,104), //bcp->offset
    16, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C7,    ABISELECT(1776,920), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19604C5,    ABISELECT(1776,920), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(2032,1052), //bcp->offset
    55, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19604C7,    ABISELECT(1776,920), //bcp->offset
    49, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S8033C7,    ABISELECT(2128,1104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19604C2,    ABISELECT(2128,1104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19604C10,    ABISELECT(2288,1196), //bcp->offset
    68, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19604C9,    ABISELECT(2128,1104), //bcp->offset
    60, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S8033C4,    ABISELECT(2336,1224), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S19604C12,    ABISELECT(2432,1300), //bcp->offset
    76, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S19604C8,    ABISELECT(976,524), //bcp->offset
    36, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19604C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19604C1[];
extern void _ZN9S19604C122v4Ev();
extern void _ZN8S19604C1D1Ev();
extern void _ZN8S19604C1D0Ev();
extern void _ZN8S19604C12v1Ev();
extern void ABISELECT(_ZTv0_n40_N8S19604C1D1Ev,_ZTv0_n20_N8S19604C1D1Ev)();
extern void ABISELECT(_ZThn192_N8S19604C1D1Ev,_ZThn104_N8S19604C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19604C1D0Ev,_ZTv0_n20_N8S19604C1D0Ev)();
extern void ABISELECT(_ZThn192_N8S19604C1D0Ev,_ZThn104_N8S19604C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19604C1D1Ev,_ZTv0_n16_N8S19604C1D1Ev)();
extern void ABISELECT(_ZThn336_N8S19604C1D1Ev,_ZThn188_N8S19604C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19604C1D0Ev,_ZTv0_n16_N8S19604C1D0Ev)();
extern void ABISELECT(_ZThn336_N8S19604C1D0Ev,_ZThn188_N8S19604C1D0Ev)() __attribute__((weak));
extern void _ZN8S19604C42v2Ev();
extern void ABISELECT(_ZTv0_n24_N8S19604C1D1Ev,_ZTv0_n12_N8S19604C1D1Ev)();
extern void ABISELECT(_ZThn832_N8S19604C1D1Ev,_ZThn448_N8S19604C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19604C1D0Ev,_ZTv0_n12_N8S19604C1D0Ev)();
extern void ABISELECT(_ZThn832_N8S19604C1D0Ev,_ZThn448_N8S19604C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19604C1D1Ev,_ZTv0_n44_N8S19604C1D1Ev)();
extern void ABISELECT(_ZThn976_N8S19604C1D1Ev,_ZThn524_N8S19604C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19604C1D0Ev,_ZTv0_n44_N8S19604C1D0Ev)();
extern void ABISELECT(_ZThn976_N8S19604C1D0Ev,_ZThn524_N8S19604C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19604C1D1Ev,_ZTv0_n16_N8S19604C1D1Ev)();
extern void ABISELECT(_ZThn1776_N8S19604C1D1Ev,_ZThn920_N8S19604C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19604C1D0Ev,_ZTv0_n16_N8S19604C1D0Ev)();
extern void ABISELECT(_ZThn1776_N8S19604C1D0Ev,_ZThn920_N8S19604C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19604C1D1Ev,_ZTv0_n12_N8S19604C1D1Ev)();
extern void ABISELECT(_ZThn2032_N8S19604C1D1Ev,_ZThn1052_N8S19604C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19604C1D0Ev,_ZTv0_n12_N8S19604C1D0Ev)();
extern void ABISELECT(_ZThn2032_N8S19604C1D0Ev,_ZThn1052_N8S19604C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19604C1D1Ev,_ZTv0_n24_N8S19604C1D1Ev)();
extern void ABISELECT(_ZThn2128_N8S19604C1D1Ev,_ZThn1104_N8S19604C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19604C1D0Ev,_ZTv0_n24_N8S19604C1D0Ev)();
extern void ABISELECT(_ZThn2128_N8S19604C1D0Ev,_ZThn1104_N8S19604C1D0Ev)() __attribute__((weak));
extern void _ZN9S19604C102v3Ev();
extern void ABISELECT(_ZTv0_n40_N8S19604C1D1Ev,_ZTv0_n20_N8S19604C1D1Ev)();
extern void ABISELECT(_ZThn2288_N8S19604C1D1Ev,_ZThn1196_N8S19604C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19604C1D0Ev,_ZTv0_n20_N8S19604C1D0Ev)();
extern void ABISELECT(_ZThn2288_N8S19604C1D0Ev,_ZThn1196_N8S19604C1D0Ev)() __attribute__((weak));
extern void _ZN9S19604C122v4Ev();
static  VTBL_ENTRY vtc_S19604C1[] = {
  ABISELECT(2432,1300),
  ABISELECT(2336,1224),
  ABISELECT(2288,1196),
  ABISELECT(2128,1104),
  ABISELECT(2032,1052),
  ABISELECT(1776,920),
  ABISELECT(976,524),
  ABISELECT(832,448),
  ABISELECT(336,188),
  ABISELECT(192,104),
  0,
  (VTBL_ENTRY)&(_ZTI8S19604C1[0]),
  (VTBL_ENTRY)&_ZN9S19604C122v4Ev,
  (VTBL_ENTRY)&_ZN8S19604C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19604C1D0Ev,
  (VTBL_ENTRY)&_ZN8S19604C12v1Ev,
  ABISELECT(-192,-104),
  ABISELECT(640,344),
  ABISELECT(144,84),
  ABISELECT(-192,-104),
  (VTBL_ENTRY)&(_ZTI8S19604C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19604C1D1Ev,_ZTv0_n20_N8S19604C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19604C1D0Ev,_ZTv0_n20_N8S19604C1D0Ev),
  0,
  ABISELECT(-336,-188),
  ABISELECT(496,260),
  ABISELECT(-336,-188),
  (VTBL_ENTRY)&(_ZTI8S19604C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19604C1D1Ev,_ZTv0_n16_N8S19604C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19604C1D0Ev,_ZTv0_n16_N8S19604C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19604C42v2Ev,
  ABISELECT(-832,-448),
  ABISELECT(-832,-448),
  (VTBL_ENTRY)&(_ZTI8S19604C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C1D1Ev,_ZTv0_n12_N8S19604C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C1D0Ev,_ZTv0_n12_N8S19604C1D0Ev),
  ABISELECT(-976,-524),
  ABISELECT(1456,776),
  ABISELECT(1360,700),
  ABISELECT(1312,672),
  ABISELECT(1152,580),
  ABISELECT(-144,-76),
  ABISELECT(-640,-336),
  ABISELECT(1056,528),
  ABISELECT(800,396),
  ABISELECT(-976,-524),
  (VTBL_ENTRY)&(_ZTI8S19604C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19604C1D1Ev,_ZTv0_n44_N8S19604C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19604C1D0Ev,_ZTv0_n44_N8S19604C1D0Ev),
  ABISELECT(-1776,-920),
  ABISELECT(256,132),
  ABISELECT(-1776,-920),
  (VTBL_ENTRY)&(_ZTI8S19604C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19604C1D1Ev,_ZTv0_n16_N8S19604C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19604C1D0Ev,_ZTv0_n16_N8S19604C1D0Ev),
  ABISELECT(-2032,-1052),
  ABISELECT(-2032,-1052),
  (VTBL_ENTRY)&(_ZTI8S19604C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C1D1Ev,_ZTv0_n12_N8S19604C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C1D0Ev,_ZTv0_n12_N8S19604C1D0Ev),
  ABISELECT(-2128,-1104),
  ABISELECT(160,92),
  ABISELECT(-1296,-656),
  ABISELECT(-1792,-916),
  ABISELECT(-2128,-1104),
  (VTBL_ENTRY)&(_ZTI8S19604C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19604C1D1Ev,_ZTv0_n24_N8S19604C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19604C1D0Ev,_ZTv0_n24_N8S19604C1D0Ev),
  ABISELECT(-2288,-1196),
  0,
  ABISELECT(-1456,-748),
  ABISELECT(-2288,-1196),
  (VTBL_ENTRY)&(_ZTI8S19604C1[0]),
  (VTBL_ENTRY)&_ZN9S19604C102v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19604C1D1Ev,_ZTv0_n20_N8S19604C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19604C1D0Ev,_ZTv0_n20_N8S19604C1D0Ev),
  0,
  ABISELECT(-2432,-1300),
  (VTBL_ENTRY)&(_ZTI8S19604C1[0]),
  (VTBL_ENTRY)&_ZN9S19604C122v4Ev,
};
extern VTBL_ENTRY _ZTV8S19604C1[];
extern void _ZN8S19604C2D1Ev();
extern void _ZN8S19604C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19604C2__8S19604C1[] = {
  ABISELECT(640,344),
  ABISELECT(144,84),
  0,
  (VTBL_ENTRY)&(_ZTI8S19604C2[0]),
  (VTBL_ENTRY)&_ZN8S19604C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19604C2D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19604C2D1Ev,_ZTv0_n16_N8S19604C2D1Ev)();
extern void ABISELECT(_ZThn144_N8S19604C2D1Ev,_ZThn84_N8S19604C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19604C2D0Ev,_ZTv0_n16_N8S19604C2D0Ev)();
extern void ABISELECT(_ZThn144_N8S19604C2D0Ev,_ZThn84_N8S19604C2D0Ev)() __attribute__((weak));
extern void _ZN8S19604C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19604C4__8S19604C2__8S19604C1[] = {
  0,
  ABISELECT(-144,-84),
  ABISELECT(496,260),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI8S19604C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19604C2D1Ev,_ZTv0_n16_N8S19604C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19604C2D0Ev,_ZTv0_n16_N8S19604C2D0Ev),
  (VTBL_ENTRY)&_ZN8S19604C42v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19604C2D1Ev,_ZTv0_n12_N8S19604C2D1Ev)();
extern void ABISELECT(_ZThn640_N8S19604C2D1Ev,_ZThn344_N8S19604C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19604C2D0Ev,_ZTv0_n12_N8S19604C2D0Ev)();
extern void ABISELECT(_ZThn640_N8S19604C2D0Ev,_ZThn344_N8S19604C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19604C5__8S19604C2__8S19604C1[] = {
  ABISELECT(-640,-344),
  ABISELECT(-640,-344),
  (VTBL_ENTRY)&(_ZTI8S19604C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C2D1Ev,_ZTv0_n12_N8S19604C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C2D0Ev,_ZTv0_n12_N8S19604C2D0Ev),
};
extern void _ZN8S19604C4D1Ev();
extern void _ZN8S19604C4D0Ev();
extern void _ZN8S19604C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19604C4__8S19604C1[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19604C4[0]),
  (VTBL_ENTRY)&_ZN8S19604C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19604C4D0Ev,
  (VTBL_ENTRY)&_ZN8S19604C42v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19604C4D1Ev,_ZTv0_n12_N8S19604C4D1Ev)();
extern void ABISELECT(_ZThn496_N8S19604C4D1Ev,_ZThn260_N8S19604C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19604C4D0Ev,_ZTv0_n12_N8S19604C4D0Ev)();
extern void ABISELECT(_ZThn496_N8S19604C4D0Ev,_ZThn260_N8S19604C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19604C5__8S19604C4__8S19604C1[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI8S19604C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C4D1Ev,_ZTv0_n12_N8S19604C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C4D0Ev,_ZTv0_n12_N8S19604C4D0Ev),
};
extern void _ZN8S19604C8D1Ev();
extern void _ZN8S19604C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19604C8__8S19604C1[] = {
  ABISELECT(1456,776),
  ABISELECT(1360,700),
  ABISELECT(1312,672),
  ABISELECT(1152,580),
  ABISELECT(-144,-76),
  ABISELECT(-640,-336),
  ABISELECT(1056,528),
  ABISELECT(800,396),
  0,
  (VTBL_ENTRY)&(_ZTI8S19604C8[0]),
  (VTBL_ENTRY)&_ZN8S19604C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19604C8D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19604C8D1Ev,_ZTv0_n16_N8S19604C8D1Ev)();
extern void ABISELECT(_ZThn800_N8S19604C8D1Ev,_ZThn396_N8S19604C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19604C8D0Ev,_ZTv0_n16_N8S19604C8D0Ev)();
extern void ABISELECT(_ZThn800_N8S19604C8D0Ev,_ZThn396_N8S19604C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19604C7__8S19604C8__8S19604C1[] = {
  ABISELECT(-800,-396),
  ABISELECT(256,132),
  ABISELECT(-800,-396),
  (VTBL_ENTRY)&(_ZTI8S19604C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19604C8D1Ev,_ZTv0_n16_N8S19604C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19604C8D0Ev,_ZTv0_n16_N8S19604C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19604C8D1Ev,_ZTv0_n12_N8S19604C8D1Ev)();
extern void ABISELECT(_ZThn1056_N8S19604C8D1Ev,_ZThn528_N8S19604C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19604C8D0Ev,_ZTv0_n12_N8S19604C8D0Ev)();
extern void ABISELECT(_ZThn1056_N8S19604C8D0Ev,_ZThn528_N8S19604C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__8S19604C8__8S19604C1[] = {
  ABISELECT(-1056,-528),
  ABISELECT(-1056,-528),
  (VTBL_ENTRY)&(_ZTI8S19604C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C8D1Ev,_ZTv0_n12_N8S19604C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C8D0Ev,_ZTv0_n12_N8S19604C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19604C8D1Ev,_ZTv0_n16_N8S19604C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19604C8D0Ev,_ZTv0_n16_N8S19604C8D0Ev)();
extern void _ZN8S19604C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19604C4__8S19604C8__8S19604C1[] = {
  0,
  ABISELECT(640,336),
  ABISELECT(496,260),
  ABISELECT(640,336),
  (VTBL_ENTRY)&(_ZTI8S19604C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19604C8D1Ev,_ZTv0_n16_N8S19604C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19604C8D0Ev,_ZTv0_n16_N8S19604C8D0Ev),
  (VTBL_ENTRY)&_ZN8S19604C42v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19604C8D1Ev,_ZTv0_n12_N8S19604C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19604C8D0Ev,_ZTv0_n12_N8S19604C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19604C5__A1__8S19604C8__8S19604C1[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S19604C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C8D1Ev,_ZTv0_n12_N8S19604C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C8D0Ev,_ZTv0_n12_N8S19604C8D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S19604C8D1Ev,_ZTv0_n24_N8S19604C8D1Ev)();
extern void ABISELECT(_ZThn1152_N8S19604C8D1Ev,_ZThn580_N8S19604C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19604C8D0Ev,_ZTv0_n24_N8S19604C8D0Ev)();
extern void ABISELECT(_ZThn1152_N8S19604C8D0Ev,_ZThn580_N8S19604C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19604C9__8S19604C8__8S19604C1[] = {
  ABISELECT(-1152,-580),
  ABISELECT(160,92),
  ABISELECT(-1296,-656),
  ABISELECT(-1792,-916),
  ABISELECT(-1152,-580),
  (VTBL_ENTRY)&(_ZTI8S19604C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19604C8D1Ev,_ZTv0_n24_N8S19604C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19604C8D0Ev,_ZTv0_n24_N8S19604C8D0Ev),
};
extern void _ZN9S19604C102v3Ev();
extern void ABISELECT(_ZTv0_n40_N8S19604C8D1Ev,_ZTv0_n20_N8S19604C8D1Ev)();
extern void ABISELECT(_ZThn1312_N8S19604C8D1Ev,_ZThn672_N8S19604C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19604C8D0Ev,_ZTv0_n20_N8S19604C8D0Ev)();
extern void ABISELECT(_ZThn1312_N8S19604C8D0Ev,_ZThn672_N8S19604C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19604C10__8S19604C8__8S19604C1[] = {
  ABISELECT(-1312,-672),
  0,
  ABISELECT(-1456,-748),
  ABISELECT(-1312,-672),
  (VTBL_ENTRY)&(_ZTI8S19604C8[0]),
  (VTBL_ENTRY)&_ZN9S19604C102v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19604C8D1Ev,_ZTv0_n20_N8S19604C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19604C8D0Ev,_ZTv0_n20_N8S19604C8D0Ev),
};
extern void _ZN9S19604C122v4Ev();
static  VTBL_ENTRY _tg__ZTV9S19604C12__8S19604C8__8S19604C1[] = {
  0,
  ABISELECT(-1456,-776),
  (VTBL_ENTRY)&(_ZTI8S19604C8[0]),
  (VTBL_ENTRY)&_ZN9S19604C122v4Ev,
};
extern void _ZN8S19604C7D1Ev();
extern void _ZN8S19604C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19604C7__8S19604C1[] = {
  ABISELECT(256,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S19604C7[0]),
  (VTBL_ENTRY)&_ZN8S19604C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19604C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19604C7D1Ev,_ZTv0_n12_N8S19604C7D1Ev)();
extern void ABISELECT(_ZThn256_N8S19604C7D1Ev,_ZThn132_N8S19604C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19604C7D0Ev,_ZTv0_n12_N8S19604C7D0Ev)();
extern void ABISELECT(_ZThn256_N8S19604C7D0Ev,_ZThn132_N8S19604C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__8S19604C7__8S19604C1[] = {
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  (VTBL_ENTRY)&(_ZTI8S19604C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C7D1Ev,_ZTv0_n12_N8S19604C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C7D0Ev,_ZTv0_n12_N8S19604C7D0Ev),
};
extern void _ZN8S19604C9D1Ev();
extern void _ZN8S19604C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19604C9__8S19604C1[] = {
  ABISELECT(160,92),
  ABISELECT(-1296,-656),
  ABISELECT(-1792,-916),
  0,
  (VTBL_ENTRY)&(_ZTI8S19604C9[0]),
  (VTBL_ENTRY)&_ZN8S19604C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19604C9D0Ev,
};
extern void _ZN8S19604C2D1Ev();
extern void _ZN8S19604C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19604C28S19604C9__A1__8S19604C1[] = {
  ABISELECT(-1296,-656),
  ABISELECT(-1792,-916),
  0,
  (VTBL_ENTRY)&(_ZTI8S19604C2[0]),
  (VTBL_ENTRY)&_ZN8S19604C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19604C2D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19604C2D1Ev,_ZTv0_n16_N8S19604C2D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19604C2D0Ev,_ZTv0_n16_N8S19604C2D0Ev)();
extern void _ZN8S19604C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19604C4__8S19604C28S19604C9__A1__8S19604C1[] = {
  0,
  ABISELECT(1792,916),
  ABISELECT(496,260),
  ABISELECT(1792,916),
  (VTBL_ENTRY)&(_ZTI8S19604C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19604C2D1Ev,_ZTv0_n16_N8S19604C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19604C2D0Ev,_ZTv0_n16_N8S19604C2D0Ev),
  (VTBL_ENTRY)&_ZN8S19604C42v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19604C2D1Ev,_ZTv0_n12_N8S19604C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19604C2D0Ev,_ZTv0_n12_N8S19604C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19604C5__8S19604C28S19604C9__A1__8S19604C1[] = {
  ABISELECT(1296,656),
  ABISELECT(1296,656),
  (VTBL_ENTRY)&(_ZTI8S19604C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C2D1Ev,_ZTv0_n12_N8S19604C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C2D0Ev,_ZTv0_n12_N8S19604C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19604C9D1Ev,_ZTv0_n16_N8S19604C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19604C9D0Ev,_ZTv0_n16_N8S19604C9D0Ev)();
extern void _ZN8S19604C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19604C4__8S19604C9__8S19604C1[] = {
  0,
  ABISELECT(1792,916),
  ABISELECT(496,260),
  ABISELECT(1792,916),
  (VTBL_ENTRY)&(_ZTI8S19604C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19604C9D1Ev,_ZTv0_n16_N8S19604C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19604C9D0Ev,_ZTv0_n16_N8S19604C9D0Ev),
  (VTBL_ENTRY)&_ZN8S19604C42v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19604C9D1Ev,_ZTv0_n12_N8S19604C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19604C9D0Ev,_ZTv0_n12_N8S19604C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19604C5__8S19604C9__8S19604C1[] = {
  ABISELECT(1296,656),
  ABISELECT(1296,656),
  (VTBL_ENTRY)&(_ZTI8S19604C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C9D1Ev,_ZTv0_n12_N8S19604C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C9D0Ev,_ZTv0_n12_N8S19604C9D0Ev),
};
extern void _ZN9S19604C102v3Ev();
extern void ABISELECT(_ZTv0_n40_N8S19604C9D1Ev,_ZTv0_n20_N8S19604C9D1Ev)();
extern void ABISELECT(_ZThn160_N8S19604C9D1Ev,_ZThn92_N8S19604C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19604C9D0Ev,_ZTv0_n20_N8S19604C9D0Ev)();
extern void ABISELECT(_ZThn160_N8S19604C9D0Ev,_ZThn92_N8S19604C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19604C10__8S19604C9__8S19604C1[] = {
  ABISELECT(-160,-92),
  0,
  ABISELECT(-1456,-748),
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI8S19604C9[0]),
  (VTBL_ENTRY)&_ZN9S19604C102v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19604C9D1Ev,_ZTv0_n20_N8S19604C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19604C9D0Ev,_ZTv0_n20_N8S19604C9D0Ev),
};
extern void _ZN9S19604C102v3Ev();
extern void _ZN9S19604C10D1Ev();
extern void _ZN9S19604C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19604C10__8S19604C1[] = {
  ABISELECT(-1456,-748),
  0,
  (VTBL_ENTRY)&(_ZTI9S19604C10[0]),
  (VTBL_ENTRY)&_ZN9S19604C102v3Ev,
  (VTBL_ENTRY)&_ZN9S19604C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19604C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19604C10D1Ev,_ZTv0_n12_N9S19604C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19604C10D0Ev,_ZTv0_n12_N9S19604C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19604C5__9S19604C10__8S19604C1[] = {
  ABISELECT(1456,748),
  ABISELECT(1456,748),
  (VTBL_ENTRY)&(_ZTI9S19604C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19604C10D1Ev,_ZTv0_n12_N9S19604C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19604C10D0Ev,_ZTv0_n12_N9S19604C10D0Ev),
};
static  VTT_ENTRY vtt_S19604C1[] = {
  {&(_ZTV8S19604C1[12]),  12,80},
  {&(_ZTV8S19604C1[21]),  21,80},
  {&(_ZTV8S19604C1[28]),  28,80},
  {&(_ZTV8S19604C1[34]),  34,80},
  {&(_ZTV8S19604C1[47]),  47,80},
  {&(_ZTV8S19604C1[53]),  53,80},
  {&(_ZTV8S19604C1[58]),  58,80},
  {&(_ZTV8S19604C1[66]),  66,80},
  {&(_ZTV8S19604C1[73]),  73,80},
  {&(_ZTV8S19604C1[79]),  79,80},
  {&(_tg__ZTV8S19604C2__8S19604C1[4]),  4,6},
  {&(_tg__ZTV8S19604C4__8S19604C2__8S19604C1[5]),  5,8},
  {&(_tg__ZTV8S19604C5__8S19604C2__8S19604C1[3]),  3,5},
  {&(_tg__ZTV8S19604C4__8S19604C1[3]),  3,6},
  {&(_tg__ZTV8S19604C5__8S19604C4__8S19604C1[3]),  3,5},
  {&(_tg__ZTV8S19604C8__8S19604C1[10]),  10,12},
  {&(_tg__ZTV8S19604C7__8S19604C8__8S19604C1[4]),  4,6},
  {&(_tg__ZTV7S8033C7__A1__8S19604C8__8S19604C1[3]),  3,5},
  {&(_tg__ZTV8S19604C4__8S19604C8__8S19604C1[5]),  5,8},
  {&(_tg__ZTV8S19604C5__A1__8S19604C8__8S19604C1[3]),  3,5},
  {&(_tg__ZTV8S19604C9__8S19604C8__8S19604C1[6]),  6,8},
  {&(_tg__ZTV9S19604C10__8S19604C8__8S19604C1[5]),  5,8},
  {&(_tg__ZTV9S19604C12__8S19604C8__8S19604C1[3]),  3,4},
  {&(_tg__ZTV8S19604C7__8S19604C1[3]),  3,5},
  {&(_tg__ZTV7S8033C7__A1__8S19604C7__8S19604C1[3]),  3,5},
  {&(_tg__ZTV8S19604C9__8S19604C1[5]),  5,7},
  {&(_tg__ZTV8S19604C28S19604C9__A1__8S19604C1[4]),  4,6},
  {&(_tg__ZTV8S19604C4__8S19604C28S19604C9__A1__8S19604C1[5]),  5,8},
  {&(_tg__ZTV8S19604C5__8S19604C28S19604C9__A1__8S19604C1[3]),  3,5},
  {&(_tg__ZTV8S19604C4__8S19604C9__8S19604C1[5]),  5,8},
  {&(_tg__ZTV8S19604C5__8S19604C9__8S19604C1[3]),  3,5},
  {&(_tg__ZTV9S19604C10__8S19604C9__8S19604C1[5]),  5,8},
  {&(_tg__ZTV9S19604C10__8S19604C1[3]),  3,6},
  {&(_tg__ZTV8S19604C5__9S19604C10__8S19604C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19604C1[];
extern  VTBL_ENTRY _ZTV8S19604C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19604C1[];
static VTBL_ENTRY alt_thunk_names155[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19604C9D0Ev,_ZTv0_n20_N8S19604C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19604C9D0Ev,_ZThn92_N8S19604C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19604C9D1Ev,_ZTv0_n20_N8S19604C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19604C9D1Ev,_ZThn92_N8S19604C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19604C7D0Ev,_ZTv0_n12_N8S19604C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19604C7D0Ev,_ZThn132_N8S19604C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19604C7D1Ev,_ZTv0_n12_N8S19604C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19604C7D1Ev,_ZThn132_N8S19604C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19604C8D0Ev,_ZTv0_n20_N8S19604C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1312_N8S19604C8D0Ev,_ZThn672_N8S19604C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19604C8D1Ev,_ZTv0_n20_N8S19604C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1312_N8S19604C8D1Ev,_ZThn672_N8S19604C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19604C8D0Ev,_ZTv0_n24_N8S19604C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1152_N8S19604C8D0Ev,_ZThn580_N8S19604C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19604C8D1Ev,_ZTv0_n24_N8S19604C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1152_N8S19604C8D1Ev,_ZThn580_N8S19604C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19604C8D0Ev,_ZTv0_n12_N8S19604C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1056_N8S19604C8D0Ev,_ZThn528_N8S19604C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19604C8D1Ev,_ZTv0_n12_N8S19604C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1056_N8S19604C8D1Ev,_ZThn528_N8S19604C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19604C8D0Ev,_ZTv0_n16_N8S19604C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn800_N8S19604C8D0Ev,_ZThn396_N8S19604C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19604C8D1Ev,_ZTv0_n16_N8S19604C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn800_N8S19604C8D1Ev,_ZThn396_N8S19604C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19604C4D0Ev,_ZTv0_n12_N8S19604C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19604C4D0Ev,_ZThn260_N8S19604C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19604C4D1Ev,_ZTv0_n12_N8S19604C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19604C4D1Ev,_ZThn260_N8S19604C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19604C2D0Ev,_ZTv0_n12_N8S19604C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N8S19604C2D0Ev,_ZThn344_N8S19604C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19604C2D1Ev,_ZTv0_n12_N8S19604C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N8S19604C2D1Ev,_ZThn344_N8S19604C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19604C2D0Ev,_ZTv0_n16_N8S19604C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S19604C2D0Ev,_ZThn84_N8S19604C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19604C2D1Ev,_ZTv0_n16_N8S19604C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S19604C2D1Ev,_ZThn84_N8S19604C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19604C1D0Ev,_ZTv0_n24_N8S19604C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2128_N8S19604C1D0Ev,_ZThn1104_N8S19604C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19604C1D1Ev,_ZTv0_n24_N8S19604C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2128_N8S19604C1D1Ev,_ZThn1104_N8S19604C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19604C1D0Ev,_ZTv0_n44_N8S19604C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn976_N8S19604C1D0Ev,_ZThn524_N8S19604C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19604C1D1Ev,_ZTv0_n44_N8S19604C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn976_N8S19604C1D1Ev,_ZThn524_N8S19604C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19604C1D0Ev,_ZTv0_n12_N8S19604C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2032_N8S19604C1D0Ev,_ZThn1052_N8S19604C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn832_N8S19604C1D0Ev,_ZThn448_N8S19604C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19604C1D1Ev,_ZTv0_n12_N8S19604C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2032_N8S19604C1D1Ev,_ZThn1052_N8S19604C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn832_N8S19604C1D1Ev,_ZThn448_N8S19604C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19604C1D0Ev,_ZTv0_n16_N8S19604C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1776_N8S19604C1D0Ev,_ZThn920_N8S19604C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S19604C1D0Ev,_ZThn188_N8S19604C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19604C1D1Ev,_ZTv0_n16_N8S19604C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1776_N8S19604C1D1Ev,_ZThn920_N8S19604C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S19604C1D1Ev,_ZThn188_N8S19604C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19604C1D0Ev,_ZTv0_n20_N8S19604C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2288_N8S19604C1D0Ev,_ZThn1196_N8S19604C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S19604C1D0Ev,_ZThn104_N8S19604C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19604C1D1Ev,_ZTv0_n20_N8S19604C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2288_N8S19604C1D1Ev,_ZThn1196_N8S19604C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S19604C1D1Ev,_ZThn104_N8S19604C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19604C1 = {  "S19604C1", // class name
  bases_S19604C1, 18,
  &(vtc_S19604C1[0]), // expected_vtbl_contents
  &(vtt_S19604C1[0]), // expected_vtt_contents
  ABISELECT(2624,1396), // object size
  NSPAIRA(_ZTI8S19604C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19604C1),80, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19604C1),34, //virtual table table var
  17, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names155,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19495C7  : virtual S7856C24 , S7856C15 , virtual S7856C12 {
  ~S19495C7(); // tgen
  S19495C7(); // tgen
};
//SIG(-1 S19495C7) C1{ VBC2{ m} BC3{ m} VBC4{ m}}


S19495C7 ::~S19495C7(){ note_dtor("S19495C7", this);} // tgen
S19495C7 ::S19495C7(){ note_ctor("S19495C7", this);} // tgen

static void Test_S19495C7()
{
  extern Class_Descriptor cd_S19495C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S19495C7, buf);
    S19495C7 *dp, &lv = *(dp=new (buf) S19495C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S19495C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19495C7)");
    check_base_class_offset(lv, (S7856C24*), 0, "S19495C7");
    check_base_class_offset(lv, (S7856C15*), 0, "S19495C7");
    check_base_class_offset(lv, (S7856C12*), 0, "S19495C7");
    test_class_info(&lv, &cd_S19495C7);
    dp->~S19495C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19495C7(Test_S19495C7, "S19495C7", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S19495C7C1Ev();
extern void _ZN8S19495C7D1Ev();
Name_Map name_map_S19495C7[] = {
  NSPAIR(_ZN8S19495C7C1Ev),
  NSPAIR(_ZN8S19495C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
static Base_Class bases_S19495C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19495C7[];
static  VTBL_ENTRY vtc_S19495C7[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
extern VTBL_ENTRY _ZTV8S19495C7[];
static  VTT_ENTRY vtt_S19495C7[] = {
  {&(_ZTV8S19495C7[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
Class_Descriptor cd_S19495C7 = {  "S19495C7", // class name
  bases_S19495C7, 3,
  &(vtc_S19495C7[0]), // expected_vtbl_contents
  &(vtt_S19495C7[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S19495C7),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19495C7),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19495C7),1, //virtual table table var
  0, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19495C6  : S7856C24 , virtual S19495C7 , virtual S7856C15 {
  ~S19495C6(); // tgen
  S19495C6(); // tgen
};
//SIG(-1 S19495C6) C1{ BC2{ m} VBC3{ VBC2 BC4{ m} VBC5{ m}} VBC4}


S19495C6 ::~S19495C6(){ note_dtor("S19495C6", this);} // tgen
S19495C6 ::S19495C6(){ note_ctor("S19495C6", this);} // tgen

static void Test_S19495C6()
{
  extern Class_Descriptor cd_S19495C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19495C6, buf);
    S19495C6 *dp, &lv = *(dp=new (buf) S19495C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19495C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19495C6)");
    /*is_ambiguous_... S19495C6::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), 0, "S19495C6");
    check_base_class_offset(lv, (S7856C24*)(S19495C7*), ABISELECT(8,4), "S19495C6");
    check_base_class_offset(lv, (S7856C15*)(S19495C7*), 0, "S19495C6");
    check_base_class_offset(lv, (S7856C12*)(S19495C7*), 0, "S19495C6");
    check_base_class_offset(lv, (S19495C7*), 0, "S19495C6");
    /*is_ambiguous_... S19495C6::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(8,4), "S19495C6");
    test_class_info(&lv, &cd_S19495C6);
    dp->~S19495C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19495C6(Test_S19495C6, "S19495C6", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S19495C6C1Ev();
extern void _ZN8S19495C6D1Ev();
Name_Map name_map_S19495C6[] = {
  NSPAIR(_ZN8S19495C6C1Ev),
  NSPAIR(_ZN8S19495C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19495C7;
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
static Base_Class bases_S19495C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19495C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19495C6[];
static  VTBL_ENTRY vtc_S19495C6[] = {
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C6[0]),
};
extern VTBL_ENTRY _ZTV8S19495C6[];
static  VTBL_ENTRY _tg__ZTV8S19495C7__8S19495C6[] = {
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
static  VTT_ENTRY vtt_S19495C6[] = {
  {&(_ZTV8S19495C6[6]),  6,6},
  {&(_ZTV8S19495C6[6]),  6,6},
  {&(_tg__ZTV8S19495C7__8S19495C6[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S19495C6[];
extern  VTBL_ENTRY _ZTV8S19495C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C6[];
Class_Descriptor cd_S19495C6 = {  "S19495C6", // class name
  bases_S19495C6, 6,
  &(vtc_S19495C6[0]), // expected_vtbl_contents
  &(vtt_S19495C6[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19495C6),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19495C6),6, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19495C6),3, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19495C9  : S7856C15 , virtual S7856C24 , virtual S7856C12 , S19495C7 , virtual S19495C6 {
  virtual  ~S19495C9(); // _ZN8S19495C9D2Ev
  S19495C9(); // tgen
};
//SIG(-1 S19495C9) C1{ BC2{ m} VBC3{ m} VBC4{ m} BC5{ VBC3 BC2 VBC4} VBC6{ BC3 VBC5 VBC2} vd}


 S19495C9 ::~S19495C9(){ note_dtor("S19495C9", this);}
S19495C9 ::S19495C9(){ note_ctor("S19495C9", this);} // tgen

static void Test_S19495C9()
{
  extern Class_Descriptor cd_S19495C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S19495C9, buf);
    S19495C9 *dp, &lv = *(dp=new (buf) S19495C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S19495C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19495C9)");
    /*is_ambiguous_... S19495C9::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(8,4), "S19495C9");
    /*is_ambiguous_... S19495C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), 0, "S19495C9");
    /*is_ambiguous_... S19495C9::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C7*), 0, "S19495C9");
    /*is_ambiguous_... S19495C9::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C7*), 0, "S19495C9");
    check_base_class_offset(lv, (S7856C12*), 0, "S19495C9");
    /*is_ambiguous_... S19495C9::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C7*), 0, "S19495C9");
    /*is_ambiguous_... S19495C9::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C7*), 0, "S19495C9");
    /*is_ambiguous_... S19495C9::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C7*), 0, "S19495C9");
    /*is_ambiguous_... S19495C9::S19495C7 */ AMB_check_base_class_offset(lv, (S19495C7*), 0, "S19495C9");
    /*is_ambiguous_... S19495C6::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C6*), ABISELECT(16,8), "S19495C9");
    /*is_ambiguous_... S19495C9::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C7*), ABISELECT(16,8), "S19495C9");
    check_base_class_offset(lv, (S19495C7*)(S19495C6*), ABISELECT(16,8), "S19495C9");
    /*is_ambiguous_... S19495C6::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C6*), ABISELECT(24,12), "S19495C9");
    check_base_class_offset(lv, (S19495C6*), ABISELECT(16,8), "S19495C9");
    test_class_info(&lv, &cd_S19495C9);
    dp->~S19495C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19495C9(Test_S19495C9, "S19495C9", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S19495C9C1Ev();
extern void _ZN8S19495C9D2Ev();
Name_Map name_map_S19495C9[] = {
  NSPAIR(_ZN8S19495C9C1Ev),
  NSPAIR(_ZN8S19495C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19495C7;
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19495C7;
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19495C6;
extern VTBL_ENTRY _ZTI8S19495C6[];
extern  VTBL_ENTRY _ZTV8S19495C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C6[];
static Base_Class bases_S19495C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19495C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19495C7,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19495C6,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19495C9[];
extern void _ZN8S19495C9D1Ev();
extern void _ZN8S19495C9D0Ev();
static  VTBL_ENTRY vtc_S19495C9[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C9[0]),
  (VTBL_ENTRY)&_ZN8S19495C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19495C9D0Ev,
  ABISELECT(8,4),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19495C9[0]),
};
extern VTBL_ENTRY _ZTV8S19495C9[];
static  VTBL_ENTRY _tg__ZTV8S19495C7__A__8S19495C9[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__8S19495C9[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C7__A1__8S19495C9[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
static  VTT_ENTRY vtt_S19495C9[] = {
  {&(_ZTV8S19495C9[7]),  7,15},
  {&(_tg__ZTV8S19495C7__A__8S19495C9[4]),  4,4},
  {&(_ZTV8S19495C9[15]),  15,15},
  {&(_ZTV8S19495C9[15]),  15,15},
  {&(_tg__ZTV8S19495C6__8S19495C9[6]),  6,6},
  {&(_tg__ZTV8S19495C6__8S19495C9[6]),  6,6},
  {&(_tg__ZTV8S19495C7__A1__8S19495C9[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S19495C9[];
extern  VTBL_ENTRY _ZTV8S19495C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C9[];
Class_Descriptor cd_S19495C9 = {  "S19495C9", // class name
  bases_S19495C9, 10,
  &(vtc_S19495C9[0]), // expected_vtbl_contents
  &(vtt_S19495C9[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S19495C9),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19495C9),15, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19495C9),7, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19495C3  : virtual S7856C24 , virtual S7856C15 , virtual S19495C6 , S7856C12 , S19495C9 {
  virtual  ~S19495C3(); // _ZN8S19495C3D2Ev
  S19495C3(); // tgen
};
//SIG(-1 S19495C3) C1{ VBC2{ m} VBC3{ m} VBC4{ BC2 VBC5{ VBC2 BC3 VBC6{ m}} VBC3} BC6 BC7{ BC3 VBC2 VBC6 BC5 VBC4 vd} vd}


 S19495C3 ::~S19495C3(){ note_dtor("S19495C3", this);}
S19495C3 ::S19495C3(){ note_ctor("S19495C3", this);} // tgen

static void Test_S19495C3()
{
  extern Class_Descriptor cd_S19495C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S19495C3, buf);
    S19495C3 *dp, &lv = *(dp=new (buf) S19495C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S19495C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19495C3)");
    /*is_ambiguous_... S19495C3::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), 0, "S19495C3");
    /*is_ambiguous_... S19495C3::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C7*), 0, "S19495C3");
    /*is_ambiguous_... S19495C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C9*), 0, "S19495C3");
    /*is_ambiguous_... S19495C9::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C7*)(S19495C9*), 0, "S19495C3");
    /*is_ambiguous_... S19495C3::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(9,5), "S19495C3");
    /*is_ambiguous_... S19495C6::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C6*), ABISELECT(9,5), "S19495C3");
    /*is_ambiguous_... S19495C6::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C6*), ABISELECT(16,8), "S19495C3");
    /*is_ambiguous_... S19495C3::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C7*), ABISELECT(16,8), "S19495C3");
    /*is_ambiguous_... S19495C3::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C7*), ABISELECT(24,12), "S19495C3");
    check_base_class_offset(lv, (S7856C12*)(S19495C9*), ABISELECT(24,12), "S19495C3");
    /*is_ambiguous_... S19495C9::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C7*)(S19495C9*), ABISELECT(24,12), "S19495C3");
    check_base_class_offset(lv, (S19495C7*)(S19495C6*), ABISELECT(16,8), "S19495C3");
    check_base_class_offset(lv, (S19495C6*), ABISELECT(16,8), "S19495C3");
    check_base_class_offset(lv, (S19495C6*)(S19495C9*), ABISELECT(16,8), "S19495C3");
    /*is_ambiguous_... S19495C3::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), 0, "S19495C3");
    /*is_ambiguous_... S19495C9::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C9*), ABISELECT(8,4), "S19495C3");
    /*is_ambiguous_... S19495C9::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C7*)(S19495C9*), 0, "S19495C3");
    /*is_ambiguous_... S19495C9::S19495C7 */ AMB_check_base_class_offset(lv, (S19495C7*)(S19495C9*), 0, "S19495C3");
    check_base_class_offset(lv, (S19495C9*), 0, "S19495C3");
    test_class_info(&lv, &cd_S19495C3);
    dp->~S19495C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19495C3(Test_S19495C3, "S19495C3", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S19495C3C1Ev();
extern void _ZN8S19495C3D2Ev();
Name_Map name_map_S19495C3[] = {
  NSPAIR(_ZN8S19495C3C1Ev),
  NSPAIR(_ZN8S19495C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19495C7;
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
extern Class_Descriptor cd_S19495C6;
extern VTBL_ENTRY _ZTI8S19495C6[];
extern  VTBL_ENTRY _ZTV8S19495C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C6[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19495C7;
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
extern Class_Descriptor cd_S19495C9;
extern VTBL_ENTRY _ZTI8S19495C9[];
extern  VTBL_ENTRY _ZTV8S19495C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C9[];
static Base_Class bases_S19495C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19495C7,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19495C6,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19495C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19495C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19495C3[];
extern void _ZN8S19495C3D1Ev();
extern void _ZN8S19495C3D0Ev();
static  VTBL_ENTRY vtc_S19495C3[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C3[0]),
  (VTBL_ENTRY)&_ZN8S19495C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19495C3D0Ev,
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19495C3[0]),
};
extern VTBL_ENTRY _ZTV8S19495C3[];
extern void _ZN8S19495C9D1Ev();
extern void _ZN8S19495C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19495C9__8S19495C3[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C9[0]),
  (VTBL_ENTRY)&_ZN8S19495C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19495C9D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19495C78S19495C9__A1__8S19495C3[] = {
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__8S19495C9__8S19495C3[] = {
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19495C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__8S19495C3[] = {
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C7__8S19495C3[] = {
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
static  VTT_ENTRY vtt_S19495C3[] = {
  {&(_ZTV8S19495C3[7]),  7,15},
  {&(_tg__ZTV8S19495C9__8S19495C3[7]),  7,9},
  {&(_tg__ZTV8S19495C78S19495C9__A1__8S19495C3[4]),  4,4},
  {&(_tg__ZTV8S19495C6__8S19495C9__8S19495C3[6]),  6,6},
  {&(_tg__ZTV8S19495C6__8S19495C9__8S19495C3[6]),  6,6},
  {&(_ZTV8S19495C3[15]),  15,15},
  {&(_ZTV8S19495C3[15]),  15,15},
  {&(_tg__ZTV8S19495C6__8S19495C3[6]),  6,6},
  {&(_tg__ZTV8S19495C6__8S19495C3[6]),  6,6},
  {&(_tg__ZTV8S19495C7__8S19495C3[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S19495C3[];
extern  VTBL_ENTRY _ZTV8S19495C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C3[];
Class_Descriptor cd_S19495C3 = {  "S19495C3", // class name
  bases_S19495C3, 12,
  &(vtc_S19495C3[0]), // expected_vtbl_contents
  &(vtt_S19495C3[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S19495C3),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19495C3),15, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19495C3),10, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19495C10  : S7856C12 , S7856C15 , S19495C7 {
  int s19495c10f0;
  ~S19495C10(); // tgen
  S19495C10(); // tgen
};
//SIG(-1 S19495C10) C1{ BC2{ m} BC3{ m} BC4{ VBC5{ m} BC3 VBC2} Fi}


S19495C10 ::~S19495C10(){ note_dtor("S19495C10", this);} // tgen
S19495C10 ::S19495C10(){ note_ctor("S19495C10", this);} // tgen

static void Test_S19495C10()
{
  extern Class_Descriptor cd_S19495C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S19495C10, buf);
    S19495C10 *dp, &lv = *(dp=new (buf) S19495C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S19495C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19495C10)");
    /*is_ambiguous_... S19495C10::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), 0, "S19495C10");
    /*is_ambiguous_... S19495C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(8,4), "S19495C10");
    check_base_class_offset(lv, (S7856C24*)(S19495C7*), 0, "S19495C10");
    check_base_class_offset(lv, (S7856C15*)(S19495C7*), 0, "S19495C10");
    check_base_class_offset(lv, (S7856C12*)(S19495C7*), ABISELECT(12,8), "S19495C10");
    check_base_class_offset(lv, (S19495C7*), 0, "S19495C10");
    check_field_offset(lv, s19495c10f0, ABISELECT(8,4), "S19495C10.s19495c10f0");
    test_class_info(&lv, &cd_S19495C10);
    dp->~S19495C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19495C10(Test_S19495C10, "S19495C10", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN9S19495C10C1Ev();
extern void _ZN9S19495C10D1Ev();
Name_Map name_map_S19495C10[] = {
  NSPAIR(_ZN9S19495C10C1Ev),
  NSPAIR(_ZN9S19495C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19495C7;
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
static Base_Class bases_S19495C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19495C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19495C10[];
static  VTBL_ENTRY vtc_S19495C10[] = {
  ABISELECT(12,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C10[0]),
};
extern VTBL_ENTRY _ZTV9S19495C10[];
static  VTBL_ENTRY _tg__ZTV8S19495C7__9S19495C10[] = {
  ABISELECT(12,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
static  VTT_ENTRY vtt_S19495C10[] = {
  {&(_ZTV9S19495C10[4]),  4,4},
  {&(_tg__ZTV8S19495C7__9S19495C10[4]),  4,4},
};
extern VTBL_ENTRY _ZTI9S19495C10[];
extern  VTBL_ENTRY _ZTV9S19495C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C10[];
Class_Descriptor cd_S19495C10 = {  "S19495C10", // class name
  bases_S19495C10, 6,
  &(vtc_S19495C10[0]), // expected_vtbl_contents
  &(vtt_S19495C10[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI9S19495C10),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19495C10),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19495C10),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19495C13  : virtual S19495C3 , virtual S19495C10 , virtual S19495C9 {
  int s19495c13f0[2];
  virtual  ~S19495C13(); // _ZN9S19495C13D2Ev
  S19495C13(); // tgen
};
//SIG(-1 S19495C13) C1{ VBC2{ VBC3{ m} VBC4{ m} VBC5{ BC3 VBC6{ VBC3 BC4 VBC7{ m}} VBC4} BC7 BC8{ BC4 VBC3 VBC7 BC6 VBC5 vd} vd} VBC9{ BC7 BC4 BC6 Fi} VBC8 vd Fi[2]}


 S19495C13 ::~S19495C13(){ note_dtor("S19495C13", this);}
S19495C13 ::S19495C13(){ note_ctor("S19495C13", this);} // tgen

static void Test_S19495C13()
{
  extern Class_Descriptor cd_S19495C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,10)];
    init_test(&cd_S19495C13, buf);
    S19495C13 *dp, &lv = *(dp=new (buf) S19495C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S19495C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19495C13)");
    /*is_ambiguous_... S19495C3::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C3*), ABISELECT(25,17), "S19495C13");
    /*is_ambiguous_... S19495C13::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C7*), ABISELECT(25,17), "S19495C13");
    /*is_ambiguous_... S19495C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C9*)(S19495C3*), ABISELECT(25,17), "S19495C13");
    /*is_ambiguous_... S19495C9::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C7*)(S19495C9*)(S19495C3*), ABISELECT(25,17), "S19495C13");
    check_base_class_offset(lv, (S7856C24*)(S19495C7*)(S19495C10*), ABISELECT(25,17), "S19495C13");
    /*is_ambiguous_... S19495C13::S19495C9 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C9*), ABISELECT(25,17), "S19495C13");
    /*is_ambiguous_... S19495C13::S19495C9 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C7*)(S19495C9*), ABISELECT(25,17), "S19495C13");
    /*is_ambiguous_... S19495C3::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C3*), ABISELECT(25,17), "S19495C13");
    /*is_ambiguous_... S19495C6::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C6*), ABISELECT(25,17), "S19495C13");
    /*is_ambiguous_... S19495C6::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C6*), 0, "S19495C13");
    /*is_ambiguous_... S19495C13::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C7*), 0, "S19495C13");
    /*is_ambiguous_... S19495C13::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C7*), 0, "S19495C13");
    check_base_class_offset(lv, (S7856C12*)(S19495C9*)(S19495C3*), 0, "S19495C13");
    /*is_ambiguous_... S19495C9::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C7*)(S19495C9*)(S19495C3*), 0, "S19495C13");
    check_base_class_offset(lv, (S7856C12*)(S19495C7*)(S19495C10*), 0, "S19495C13");
    /*is_ambiguous_... S19495C13::S19495C9 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C9*), 0, "S19495C13");
    /*is_ambiguous_... S19495C13::S19495C9 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C7*)(S19495C9*), 0, "S19495C13");
    check_base_class_offset(lv, (S19495C7*)(S19495C6*), 0, "S19495C13");
    check_base_class_offset(lv, (S19495C6*)(S19495C3*), 0, "S19495C13");
    check_base_class_offset(lv, (S19495C6*)(S19495C9*)(S19495C3*), 0, "S19495C13");
    /*is_ambiguous_... S19495C13::S19495C9 */ AMB_check_base_class_offset(lv, (S19495C6*)(S19495C9*), 0, "S19495C13");
    /*is_ambiguous_... S19495C3::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C3*), ABISELECT(16,12), "S19495C13");
    /*is_ambiguous_... S19495C9::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C9*)(S19495C3*), ABISELECT(24,16), "S19495C13");
    /*is_ambiguous_... S19495C9::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C7*)(S19495C9*)(S19495C3*), ABISELECT(16,12), "S19495C13");
    /*is_ambiguous_... S19495C9::S19495C7 */ AMB_check_base_class_offset(lv, (S19495C7*)(S19495C9*)(S19495C3*), ABISELECT(16,12), "S19495C13");
    check_base_class_offset(lv, (S19495C9*)(S19495C3*), ABISELECT(16,12), "S19495C13");
    check_base_class_offset(lv, (S19495C3*), ABISELECT(16,12), "S19495C13");
    /*is_ambiguous_... S19495C10::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C10*), ABISELECT(32,20), "S19495C13");
    /*is_ambiguous_... S19495C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C10*), ABISELECT(40,24), "S19495C13");
    check_base_class_offset(lv, (S7856C15*)(S19495C7*)(S19495C10*), ABISELECT(32,20), "S19495C13");
    check_base_class_offset(lv, (S19495C7*)(S19495C10*), ABISELECT(32,20), "S19495C13");
    check_base_class_offset(lv, (S19495C10*), ABISELECT(32,20), "S19495C13");
    /*is_ambiguous_... S19495C13::S19495C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C9*), ABISELECT(56,32), "S19495C13");
    /*is_ambiguous_... S19495C13::S19495C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C7*)(S19495C9*), ABISELECT(48,28), "S19495C13");
    /*is_ambiguous_... S19495C13::S19495C9 */ AMB_check_base_class_offset(lv, (S19495C7*)(S19495C9*), ABISELECT(48,28), "S19495C13");
    /*is_ambiguous_... S19495C13::S19495C9 */ AMB_check_base_class_offset(lv, (S19495C9*), ABISELECT(48,28), "S19495C13");
    check_field_offset(lv, s19495c13f0, ABISELECT(8,4), "S19495C13.s19495c13f0");
    test_class_info(&lv, &cd_S19495C13);
    dp->~S19495C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19495C13(Test_S19495C13, "S19495C13", ABISELECT(64,36));

#else // __cplusplus

extern void _ZN9S19495C13C1Ev();
extern void _ZN9S19495C13D2Ev();
Name_Map name_map_S19495C13[] = {
  NSPAIR(_ZN9S19495C13C1Ev),
  NSPAIR(_ZN9S19495C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19495C7;
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
extern Class_Descriptor cd_S19495C6;
extern VTBL_ENTRY _ZTI8S19495C6[];
extern  VTBL_ENTRY _ZTV8S19495C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C6[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19495C7;
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
extern Class_Descriptor cd_S19495C9;
extern VTBL_ENTRY _ZTI8S19495C9[];
extern  VTBL_ENTRY _ZTV8S19495C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C9[];
extern Class_Descriptor cd_S19495C3;
extern VTBL_ENTRY _ZTI8S19495C3[];
extern  VTBL_ENTRY _ZTV8S19495C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C3[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19495C7;
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
extern Class_Descriptor cd_S19495C10;
extern VTBL_ENTRY _ZTI9S19495C10[];
extern  VTBL_ENTRY _ZTV9S19495C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C10[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19495C7;
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
extern Class_Descriptor cd_S19495C9;
extern VTBL_ENTRY _ZTI8S19495C9[];
extern  VTBL_ENTRY _ZTV8S19495C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C9[];
static Base_Class bases_S19495C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    ABISELECT(25,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(25,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19495C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19495C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19495C7,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19495C9,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19495C3,    ABISELECT(16,12), //bcp->offset
    12, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19495C7,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19495C10,    ABISELECT(32,20), //bcp->offset
    22, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19495C7,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19495C9,    ABISELECT(48,28), //bcp->offset
    26, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19495C13[];
extern void _ZN9S19495C13D1Ev();
extern void _ZN9S19495C13D0Ev();
extern void ABISELECT(_ZTv0_n64_N9S19495C13D1Ev,_ZTv0_n32_N9S19495C13D1Ev)();
extern void ABISELECT(_ZThn16_N9S19495C13D1Ev,_ZThn12_N9S19495C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19495C13D0Ev,_ZTv0_n32_N9S19495C13D0Ev)();
extern void ABISELECT(_ZThn16_N9S19495C13D0Ev,_ZThn12_N9S19495C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19495C13D1Ev,_ZTv0_n32_N9S19495C13D1Ev)();
extern void ABISELECT(_ZThn48_N9S19495C13D1Ev,_ZThn28_N9S19495C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19495C13D0Ev,_ZTv0_n32_N9S19495C13D0Ev)();
extern void ABISELECT(_ZThn48_N9S19495C13D0Ev,_ZThn28_N9S19495C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19495C13[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C13[0]),
  (VTBL_ENTRY)&_ZN9S19495C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19495C13D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19495C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C13D1Ev,_ZTv0_n32_N9S19495C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C13D0Ev,_ZTv0_n32_N9S19495C13D0Ev),
  ABISELECT(-32,-20),
  ABISELECT(-7,-3),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S19495C13[0]),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19495C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C13D1Ev,_ZTv0_n32_N9S19495C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C13D0Ev,_ZTv0_n32_N9S19495C13D0Ev),
};
extern VTBL_ENTRY _ZTV9S19495C13[];
extern void _ZN8S19495C3D1Ev();
extern void _ZN8S19495C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19495C3__9S19495C13[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C3[0]),
  (VTBL_ENTRY)&_ZN8S19495C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19495C3D0Ev,
};
extern void _ZN8S19495C9D1Ev();
extern void _ZN8S19495C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19495C98S19495C3__9S19495C13[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C9[0]),
  (VTBL_ENTRY)&_ZN8S19495C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19495C9D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19495C78S19495C98S19495C3__A1__9S19495C13[] = {
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__8S19495C98S19495C3__9S19495C13[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S19495C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__8S19495C3__9S19495C13[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S19495C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__9S19495C13[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C7__9S19495C13[] = {
  0,
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19495C10__9S19495C13[] = {
  ABISELECT(-32,-20),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C79S19495C10__A2__9S19495C13[] = {
  ABISELECT(-32,-20),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
extern void _ZN8S19495C9D1Ev();
extern void _ZN8S19495C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19495C9__A1__9S19495C13[] = {
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C9[0]),
  (VTBL_ENTRY)&_ZN8S19495C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19495C9D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19495C78S19495C9__A3__9S19495C13[] = {
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__8S19495C9__A1__9S19495C13[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S19495C9[0]),
};
static  VTT_ENTRY vtt_S19495C13[] = {
  {&(_ZTV9S19495C13[10]),  10,36},
  {&(_ZTV9S19495C13[20]),  20,36},
  {&(_ZTV9S19495C13[10]),  10,36},
  {&(_ZTV9S19495C13[10]),  10,36},
  {&(_ZTV9S19495C13[26]),  26,36},
  {&(_ZTV9S19495C13[34]),  34,36},
  {&(_tg__ZTV8S19495C3__9S19495C13[7]),  7,9},
  {&(_tg__ZTV8S19495C98S19495C3__9S19495C13[7]),  7,9},
  {&(_tg__ZTV8S19495C78S19495C98S19495C3__A1__9S19495C13[4]),  4,4},
  {&(_tg__ZTV8S19495C6__8S19495C98S19495C3__9S19495C13[6]),  6,6},
  {&(_tg__ZTV8S19495C6__8S19495C98S19495C3__9S19495C13[6]),  6,6},
  {&(_tg__ZTV8S19495C6__8S19495C3__9S19495C13[6]),  6,6},
  {&(_tg__ZTV8S19495C6__8S19495C3__9S19495C13[6]),  6,6},
  {&(_tg__ZTV8S19495C6__9S19495C13[6]),  6,6},
  {&(_tg__ZTV8S19495C6__9S19495C13[6]),  6,6},
  {&(_tg__ZTV8S19495C7__9S19495C13[4]),  4,4},
  {&(_tg__ZTV9S19495C10__9S19495C13[4]),  4,4},
  {&(_tg__ZTV8S19495C79S19495C10__A2__9S19495C13[4]),  4,4},
  {&(_tg__ZTV8S19495C9__A1__9S19495C13[7]),  7,9},
  {&(_tg__ZTV8S19495C78S19495C9__A3__9S19495C13[4]),  4,4},
  {&(_tg__ZTV8S19495C6__8S19495C9__A1__9S19495C13[6]),  6,6},
  {&(_tg__ZTV8S19495C6__8S19495C9__A1__9S19495C13[6]),  6,6},
};
extern VTBL_ENTRY _ZTI9S19495C13[];
extern  VTBL_ENTRY _ZTV9S19495C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C13[];
static VTBL_ENTRY alt_thunk_names156[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19495C13D0Ev,_ZTv0_n32_N9S19495C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19495C13D0Ev,_ZThn28_N9S19495C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19495C13D0Ev,_ZThn12_N9S19495C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19495C13D1Ev,_ZTv0_n32_N9S19495C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19495C13D1Ev,_ZThn28_N9S19495C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19495C13D1Ev,_ZThn12_N9S19495C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19495C13 = {  "S19495C13", // class name
  bases_S19495C13, 22,
  &(vtc_S19495C13[0]), // expected_vtbl_contents
  &(vtt_S19495C13[0]), // expected_vtt_contents
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI9S19495C13),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19495C13),36, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19495C13),22, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names156,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19495C16  : virtual S7856C15 {
  ~S19495C16(); // tgen
  S19495C16(); // tgen
};
//SIG(-1 S19495C16) C1{ VBC2{ m}}


S19495C16 ::~S19495C16(){ note_dtor("S19495C16", this);} // tgen
S19495C16 ::S19495C16(){ note_ctor("S19495C16", this);} // tgen

static void Test_S19495C16()
{
  extern Class_Descriptor cd_S19495C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S19495C16, buf);
    S19495C16 *dp, &lv = *(dp=new (buf) S19495C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S19495C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19495C16)");
    check_base_class_offset(lv, (S7856C15*), 0, "S19495C16");
    test_class_info(&lv, &cd_S19495C16);
    dp->~S19495C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19495C16(Test_S19495C16, "S19495C16", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN9S19495C16C1Ev();
extern void _ZN9S19495C16D1Ev();
Name_Map name_map_S19495C16[] = {
  NSPAIR(_ZN9S19495C16C1Ev),
  NSPAIR(_ZN9S19495C16D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
static Base_Class bases_S19495C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19495C16[];
static  VTBL_ENTRY vtc_S19495C16[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C16[0]),
};
extern VTBL_ENTRY _ZTV9S19495C16[];
static  VTT_ENTRY vtt_S19495C16[] = {
  {&(_ZTV9S19495C16[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19495C16[];
extern  VTBL_ENTRY _ZTV9S19495C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C16[];
Class_Descriptor cd_S19495C16 = {  "S19495C16", // class name
  bases_S19495C16, 1,
  &(vtc_S19495C16[0]), // expected_vtbl_contents
  &(vtt_S19495C16[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI9S19495C16),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19495C16),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19495C16),1, //virtual table table var
  0, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19495C15  : virtual S19495C7 , virtual S19495C16 , virtual S19495C10 , S7856C12 , virtual S19495C3 {
  int s19495c15f0;
  virtual  ~S19495C15(); // _ZN9S19495C15D2Ev
  S19495C15(); // tgen
};
//SIG(-1 S19495C15) C1{ VBC2{ VBC3{ m} BC4{ m} VBC5{ m}} VBC6{ VBC4} VBC7{ BC5 BC4 BC2 Fi} BC5 VBC8{ VBC3 VBC4 VBC9{ BC3 VBC2 VBC4} BC5 BC10{ BC4 VBC3 VBC5 BC2 VBC9 vd} vd} vd Fi}


 S19495C15 ::~S19495C15(){ note_dtor("S19495C15", this);}
S19495C15 ::S19495C15(){ note_ctor("S19495C15", this);} // tgen

static void Test_S19495C15()
{
  extern Class_Descriptor cd_S19495C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S19495C15, buf);
    S19495C15 *dp, &lv = *(dp=new (buf) S19495C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S19495C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19495C15)");
    /*is_ambiguous_... S19495C15::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C7*), 0, "S19495C15");
    check_base_class_offset(lv, (S7856C24*)(S19495C7*)(S19495C10*), 0, "S19495C15");
    /*is_ambiguous_... S19495C3::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C3*), 0, "S19495C15");
    /*is_ambiguous_... S19495C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C9*)(S19495C3*), 0, "S19495C15");
    /*is_ambiguous_... S19495C9::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C7*)(S19495C9*)(S19495C3*), 0, "S19495C15");
    /*is_ambiguous_... S19495C15::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C7*), ABISELECT(48,28), "S19495C15");
    /*is_ambiguous_... S19495C15::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C7*), ABISELECT(12,8), "S19495C15");
    check_base_class_offset(lv, (S7856C12*)(S19495C7*)(S19495C10*), ABISELECT(12,8), "S19495C15");
    check_base_class_offset(lv, (S7856C12*)(S19495C9*)(S19495C3*), ABISELECT(12,8), "S19495C15");
    /*is_ambiguous_... S19495C9::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C7*)(S19495C9*)(S19495C3*), ABISELECT(12,8), "S19495C15");
    /*is_ambiguous_... S19495C15::S19495C7 */ AMB_check_base_class_offset(lv, (S19495C7*), ABISELECT(48,28), "S19495C15");
    check_base_class_offset(lv, (S19495C7*)(S19495C6*), ABISELECT(48,28), "S19495C15");
    check_base_class_offset(lv, (S7856C15*)(S19495C16*), 0, "S19495C15");
    /*is_ambiguous_... S19495C3::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C3*), 0, "S19495C15");
    /*is_ambiguous_... S19495C6::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C6*), 0, "S19495C15");
    check_base_class_offset(lv, (S19495C16*), 0, "S19495C15");
    /*is_ambiguous_... S19495C10::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C10*), ABISELECT(16,12), "S19495C15");
    /*is_ambiguous_... S19495C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C10*), ABISELECT(24,16), "S19495C15");
    check_base_class_offset(lv, (S7856C15*)(S19495C7*)(S19495C10*), ABISELECT(16,12), "S19495C15");
    check_base_class_offset(lv, (S19495C7*)(S19495C10*), ABISELECT(16,12), "S19495C15");
    check_base_class_offset(lv, (S19495C10*), ABISELECT(16,12), "S19495C15");
    /*is_ambiguous_... S19495C15::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), 0, "S19495C15");
    /*is_ambiguous_... S19495C6::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C6*), ABISELECT(48,28), "S19495C15");
    check_base_class_offset(lv, (S19495C6*)(S19495C3*), ABISELECT(48,28), "S19495C15");
    check_base_class_offset(lv, (S19495C6*)(S19495C9*)(S19495C3*), ABISELECT(48,28), "S19495C15");
    /*is_ambiguous_... S19495C3::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C3*), ABISELECT(32,20), "S19495C15");
    /*is_ambiguous_... S19495C9::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C9*)(S19495C3*), ABISELECT(40,24), "S19495C15");
    /*is_ambiguous_... S19495C9::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C7*)(S19495C9*)(S19495C3*), ABISELECT(32,20), "S19495C15");
    /*is_ambiguous_... S19495C9::S19495C7 */ AMB_check_base_class_offset(lv, (S19495C7*)(S19495C9*)(S19495C3*), ABISELECT(32,20), "S19495C15");
    check_base_class_offset(lv, (S19495C9*)(S19495C3*), ABISELECT(32,20), "S19495C15");
    check_base_class_offset(lv, (S19495C3*), ABISELECT(32,20), "S19495C15");
    check_field_offset(lv, s19495c15f0, ABISELECT(8,4), "S19495C15.s19495c15f0");
    test_class_info(&lv, &cd_S19495C15);
    dp->~S19495C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19495C15(Test_S19495C15, "S19495C15", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN9S19495C15C1Ev();
extern void _ZN9S19495C15D2Ev();
Name_Map name_map_S19495C15[] = {
  NSPAIR(_ZN9S19495C15C1Ev),
  NSPAIR(_ZN9S19495C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19495C7;
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19495C16;
extern VTBL_ENTRY _ZTI9S19495C16[];
extern  VTBL_ENTRY _ZTV9S19495C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C16[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19495C7;
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
extern Class_Descriptor cd_S19495C10;
extern VTBL_ENTRY _ZTI9S19495C10[];
extern  VTBL_ENTRY _ZTV9S19495C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19495C6;
extern VTBL_ENTRY _ZTI8S19495C6[];
extern  VTBL_ENTRY _ZTV8S19495C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C6[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19495C7;
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
extern Class_Descriptor cd_S19495C9;
extern VTBL_ENTRY _ZTI8S19495C9[];
extern  VTBL_ENTRY _ZTV8S19495C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C9[];
extern Class_Descriptor cd_S19495C3;
extern VTBL_ENTRY _ZTI8S19495C3[];
extern  VTBL_ENTRY _ZTV8S19495C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C3[];
static Base_Class bases_S19495C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19495C7,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19495C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19495C7,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19495C10,    ABISELECT(16,12), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19495C6,    ABISELECT(48,28), //bcp->offset
    26, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19495C7,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19495C9,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19495C3,    ABISELECT(32,20), //bcp->offset
    16, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19495C15[];
extern void _ZN9S19495C15D1Ev();
extern void _ZN9S19495C15D0Ev();
extern void ABISELECT(_ZTv0_n64_N9S19495C15D1Ev,_ZTv0_n32_N9S19495C15D1Ev)();
extern void ABISELECT(_ZThn32_N9S19495C15D1Ev,_ZThn20_N9S19495C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19495C15D0Ev,_ZTv0_n32_N9S19495C15D0Ev)();
extern void ABISELECT(_ZThn32_N9S19495C15D0Ev,_ZThn20_N9S19495C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19495C15[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  ABISELECT(12,8),
  0,
  ABISELECT(48,28),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C15[0]),
  (VTBL_ENTRY)&_ZN9S19495C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19495C15D0Ev,
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19495C15[0]),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S19495C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C15D1Ev,_ZTv0_n32_N9S19495C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C15D0Ev,_ZTv0_n32_N9S19495C15D0Ev),
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19495C15[0]),
};
extern VTBL_ENTRY _ZTV9S19495C15[];
static  VTBL_ENTRY _tg__ZTV8S19495C7__9S19495C15[] = {
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19495C16__9S19495C15[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C16[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19495C10__9S19495C15[] = {
  -4,
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C79S19495C10__A1__9S19495C15[] = {
  -4,
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
extern void _ZN8S19495C3D1Ev();
extern void _ZN8S19495C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19495C3__9S19495C15[] = {
  ABISELECT(-32,-20),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C3[0]),
  (VTBL_ENTRY)&_ZN8S19495C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19495C3D0Ev,
};
extern void _ZN8S19495C9D1Ev();
extern void _ZN8S19495C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19495C98S19495C3__9S19495C15[] = {
  ABISELECT(-32,-20),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C9[0]),
  (VTBL_ENTRY)&_ZN8S19495C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19495C9D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19495C78S19495C98S19495C3__A2__9S19495C15[] = {
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__8S19495C98S19495C3__9S19495C15[] = {
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19495C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__8S19495C3__9S19495C15[] = {
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19495C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__9S19495C15[] = {
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C6[0]),
};
static  VTT_ENTRY vtt_S19495C15[] = {
  {&(_ZTV9S19495C15[10]),  10,32},
  {&(_ZTV9S19495C15[32]),  32,32},
  {&(_ZTV9S19495C15[10]),  10,32},
  {&(_ZTV9S19495C15[16]),  16,32},
  {&(_ZTV9S19495C15[24]),  24,32},
  {&(_ZTV9S19495C15[32]),  32,32},
  {&(_tg__ZTV8S19495C7__9S19495C15[4]),  4,4},
  {&(_tg__ZTV9S19495C16__9S19495C15[3]),  3,3},
  {&(_tg__ZTV9S19495C10__9S19495C15[4]),  4,4},
  {&(_tg__ZTV8S19495C79S19495C10__A1__9S19495C15[4]),  4,4},
  {&(_tg__ZTV8S19495C3__9S19495C15[7]),  7,9},
  {&(_tg__ZTV8S19495C98S19495C3__9S19495C15[7]),  7,9},
  {&(_tg__ZTV8S19495C78S19495C98S19495C3__A2__9S19495C15[4]),  4,4},
  {&(_tg__ZTV8S19495C6__8S19495C98S19495C3__9S19495C15[6]),  6,6},
  {&(_tg__ZTV8S19495C6__8S19495C98S19495C3__9S19495C15[6]),  6,6},
  {&(_tg__ZTV8S19495C6__8S19495C3__9S19495C15[6]),  6,6},
  {&(_tg__ZTV8S19495C6__8S19495C3__9S19495C15[6]),  6,6},
  {&(_tg__ZTV8S19495C6__9S19495C15[6]),  6,6},
  {&(_tg__ZTV8S19495C6__9S19495C15[6]),  6,6},
};
extern VTBL_ENTRY _ZTI9S19495C15[];
extern  VTBL_ENTRY _ZTV9S19495C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C15[];
static VTBL_ENTRY alt_thunk_names157[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19495C15D0Ev,_ZTv0_n32_N9S19495C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19495C15D0Ev,_ZThn20_N9S19495C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19495C15D1Ev,_ZTv0_n32_N9S19495C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19495C15D1Ev,_ZThn20_N9S19495C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19495C15 = {  "S19495C15", // class name
  bases_S19495C15, 20,
  &(vtc_S19495C15[0]), // expected_vtbl_contents
  &(vtt_S19495C15[0]), // expected_vtt_contents
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI9S19495C15),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19495C15),32, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19495C15),19, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names157,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19495C17  : virtual S19495C9 , S19495C10 , S19495C6 , S7856C12 {
  virtual  ~S19495C17(); // _ZN9S19495C17D2Ev
  S19495C17(); // tgen
};
//SIG(-1 S19495C17) C1{ VBC2{ BC3{ m} VBC4{ m} VBC5{ m} BC6{ VBC4 BC3 VBC5} VBC7{ BC4 VBC6 VBC3} vd} BC8{ BC5 BC3 BC6 Fi} BC7 BC5 vd}


 S19495C17 ::~S19495C17(){ note_dtor("S19495C17", this);}
S19495C17 ::S19495C17(){ note_ctor("S19495C17", this);} // tgen

static void Test_S19495C17()
{
  extern Class_Descriptor cd_S19495C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[8];
    init_test(&cd_S19495C17, buf);
    S19495C17 *dp, &lv = *(dp=new (buf) S19495C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,28), "sizeof(S19495C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19495C17)");
    /*is_ambiguous_... S19495C9::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C9*), ABISELECT(32,16), "S19495C17");
    /*is_ambiguous_... S19495C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C9*), 0, "S19495C17");
    /*is_ambiguous_... S19495C9::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C7*)(S19495C9*), 0, "S19495C17");
    /*is_ambiguous_... S19495C17::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C7*), 0, "S19495C17");
    check_base_class_offset(lv, (S7856C24*)(S19495C7*)(S19495C10*), 0, "S19495C17");
    check_base_class_offset(lv, (S7856C12*)(S19495C9*), ABISELECT(33,17), "S19495C17");
    /*is_ambiguous_... S19495C9::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C7*)(S19495C9*), ABISELECT(33,17), "S19495C17");
    /*is_ambiguous_... S19495C17::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C7*), ABISELECT(33,17), "S19495C17");
    check_base_class_offset(lv, (S7856C12*)(S19495C7*)(S19495C10*), ABISELECT(33,17), "S19495C17");
    /*is_ambiguous_... S19495C9::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C7*)(S19495C9*), ABISELECT(24,12), "S19495C17");
    /*is_ambiguous_... S19495C9::S19495C7 */ AMB_check_base_class_offset(lv, (S19495C7*)(S19495C9*), ABISELECT(24,12), "S19495C17");
    /*is_ambiguous_... S19495C17::S19495C6 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C6*), ABISELECT(40,20), "S19495C17");
    /*is_ambiguous_... S19495C17::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C7*), ABISELECT(40,20), "S19495C17");
    /*is_ambiguous_... S19495C17::S19495C6 */ AMB_check_base_class_offset(lv, (S19495C7*)(S19495C6*), ABISELECT(40,20), "S19495C17");
    /*is_ambiguous_... S19495C17::S19495C6 */ AMB_check_base_class_offset(lv, (S19495C7*)(S19495C6*), ABISELECT(40,20), "S19495C17");
    /*is_ambiguous_... S19495C17::S19495C6 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C6*), ABISELECT(48,24), "S19495C17");
    /*is_ambiguous_... S19495C17::S19495C6 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C6*), ABISELECT(48,24), "S19495C17");
    check_base_class_offset(lv, (S19495C6*)(S19495C9*), ABISELECT(40,20), "S19495C17");
    check_base_class_offset(lv, (S19495C9*), ABISELECT(24,12), "S19495C17");
    /*is_ambiguous_... S19495C10::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C10*), 0, "S19495C17");
    /*is_ambiguous_... S19495C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C10*), ABISELECT(8,4), "S19495C17");
    check_base_class_offset(lv, (S7856C15*)(S19495C7*)(S19495C10*), 0, "S19495C17");
    check_base_class_offset(lv, (S19495C7*)(S19495C10*), 0, "S19495C17");
    check_base_class_offset(lv, (S19495C10*), 0, "S19495C17");
    /*is_ambiguous_... S19495C17::S19495C6 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C6*), ABISELECT(16,8), "S19495C17");
    /*is_ambiguous_... S19495C17::S19495C6 */ AMB_check_base_class_offset(lv, (S19495C6*), ABISELECT(16,8), "S19495C17");
    /*is_ambiguous_... S19495C17::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), ABISELECT(24,12), "S19495C17");
    test_class_info(&lv, &cd_S19495C17);
    dp->~S19495C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19495C17(Test_S19495C17, "S19495C17", ABISELECT(56,28));

#else // __cplusplus

extern void _ZN9S19495C17C1Ev();
extern void _ZN9S19495C17D2Ev();
Name_Map name_map_S19495C17[] = {
  NSPAIR(_ZN9S19495C17C1Ev),
  NSPAIR(_ZN9S19495C17D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19495C7;
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19495C7;
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19495C6;
extern VTBL_ENTRY _ZTI8S19495C6[];
extern  VTBL_ENTRY _ZTV8S19495C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C6[];
extern Class_Descriptor cd_S19495C9;
extern VTBL_ENTRY _ZTI8S19495C9[];
extern  VTBL_ENTRY _ZTV8S19495C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19495C7;
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
extern Class_Descriptor cd_S19495C10;
extern VTBL_ENTRY _ZTI9S19495C10[];
extern  VTBL_ENTRY _ZTV9S19495C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C10[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19495C6;
extern VTBL_ENTRY _ZTI8S19495C6[];
extern  VTBL_ENTRY _ZTV8S19495C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C6[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
static Base_Class bases_S19495C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(33,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19495C7,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19495C7,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19495C6,    ABISELECT(40,20), //bcp->offset
    26, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19495C9,    ABISELECT(24,12), //bcp->offset
    16, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19495C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19495C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19495C6,    ABISELECT(16,8), //bcp->offset
    10, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19495C17[];
extern void _ZN9S19495C17D1Ev();
extern void _ZN9S19495C17D0Ev();
extern void ABISELECT(_ZTv0_n64_N9S19495C17D1Ev,_ZTv0_n32_N9S19495C17D1Ev)();
extern void ABISELECT(_ZThn24_N9S19495C17D1Ev,_ZThn12_N9S19495C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19495C17D0Ev,_ZTv0_n32_N9S19495C17D0Ev)();
extern void ABISELECT(_ZThn24_N9S19495C17D0Ev,_ZThn12_N9S19495C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19495C17[] = {
  ABISELECT(48,24),
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(24,12),
  ABISELECT(33,17),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C17[0]),
  (VTBL_ENTRY)&_ZN9S19495C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19495C17D0Ev,
  ABISELECT(32,16),
  ABISELECT(24,12),
  ABISELECT(17,9),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19495C17[0]),
  ABISELECT(-24,-12),
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(9,5),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19495C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C17D1Ev,_ZTv0_n32_N9S19495C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C17D0Ev,_ZTv0_n32_N9S19495C17D0Ev),
  ABISELECT(8,4),
  0,
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19495C17[0]),
};
extern VTBL_ENTRY _ZTV9S19495C17[];
static  VTBL_ENTRY _tg__ZTV9S19495C10__9S19495C17[] = {
  ABISELECT(33,17),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C79S19495C10__A2__9S19495C17[] = {
  ABISELECT(33,17),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__A__9S19495C17[] = {
  ABISELECT(32,16),
  ABISELECT(24,12),
  ABISELECT(17,9),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C7__8S19495C6__A__9S19495C17[] = {
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19495C6[0]),
};
extern void _ZN8S19495C9D1Ev();
extern void _ZN8S19495C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19495C9__9S19495C17[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(9,5),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C9[0]),
  (VTBL_ENTRY)&_ZN8S19495C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19495C9D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19495C78S19495C9__9S19495C17[] = {
  ABISELECT(9,5),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__8S19495C9__9S19495C17[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19495C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__9S19495C17[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C7__A1__9S19495C17[] = {
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
static  VTT_ENTRY vtt_S19495C17[] = {
  {&(_ZTV9S19495C17[8]),  8,32},
  {&(_tg__ZTV9S19495C10__9S19495C17[4]),  4,4},
  {&(_tg__ZTV8S19495C79S19495C10__A2__9S19495C17[4]),  4,4},
  {&(_tg__ZTV8S19495C6__A__9S19495C17[6]),  6,6},
  {&(_tg__ZTV8S19495C7__8S19495C6__A__9S19495C17[4]),  4,4},
  {&(_ZTV9S19495C17[24]),  24,32},
  {&(_ZTV9S19495C17[32]),  32,32},
  {&(_ZTV9S19495C17[32]),  32,32},
  {&(_ZTV9S19495C17[16]),  16,32},
  {&(_tg__ZTV8S19495C9__9S19495C17[7]),  7,9},
  {&(_tg__ZTV8S19495C78S19495C9__9S19495C17[4]),  4,4},
  {&(_tg__ZTV8S19495C6__8S19495C9__9S19495C17[6]),  6,6},
  {&(_tg__ZTV8S19495C6__8S19495C9__9S19495C17[6]),  6,6},
  {&(_tg__ZTV8S19495C6__9S19495C17[6]),  6,6},
  {&(_tg__ZTV8S19495C6__9S19495C17[6]),  6,6},
  {&(_tg__ZTV8S19495C7__A1__9S19495C17[4]),  4,4},
};
extern VTBL_ENTRY _ZTI9S19495C17[];
extern  VTBL_ENTRY _ZTV9S19495C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C17[];
static VTBL_ENTRY alt_thunk_names158[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19495C17D0Ev,_ZTv0_n32_N9S19495C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19495C17D0Ev,_ZThn12_N9S19495C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19495C17D1Ev,_ZTv0_n32_N9S19495C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19495C17D1Ev,_ZThn12_N9S19495C17D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19495C17 = {  "S19495C17", // class name
  bases_S19495C17, 19,
  &(vtc_S19495C17[0]), // expected_vtbl_contents
  &(vtt_S19495C17[0]), // expected_vtt_contents
  ABISELECT(56,28), // object size
  NSPAIRA(_ZTI9S19495C17),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19495C17),32, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19495C17),16, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names158,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19495C12  : virtual S19495C13 , virtual S7856C9_nt , virtual S19495C15 , S19495C17 {
  virtual  ~S19495C12(); // _ZN9S19495C12D2Ev
  S19495C12(); // tgen
};
//SIG(-1 S19495C12) C1{ VBC2{ VBC3{ VBC4{ m} VBC5{ m} VBC6{ BC4 VBC7{ VBC4 BC5 VBC8{ m}} VBC5} BC8 BC9{ BC5 VBC4 VBC8 BC7 VBC6 vd} vd} VBC10{ BC8 BC5 BC7 Fi} VBC9 vd Fi[2]} VBC11{ m} VBC12{ VBC7 VBC13{ VBC5} VBC10 BC8 VBC3 vd Fi} BC14{ VBC9 BC10 BC6 BC8 vd} vd}


 S19495C12 ::~S19495C12(){ note_dtor("S19495C12", this);}
S19495C12 ::S19495C12(){ note_ctor("S19495C12", this);} // tgen

static void Test_S19495C12()
{
  extern Class_Descriptor cd_S19495C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,16)];
    init_test(&cd_S19495C12, buf);
    S19495C12 *dp, &lv = *(dp=new (buf) S19495C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,60), "sizeof(S19495C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19495C12)");
    /*is_ambiguous_... S19495C3::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C3*), 0, "S19495C12");
    /*is_ambiguous_... S19495C12::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C7*), 0, "S19495C12");
    /*is_ambiguous_... S19495C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C9*)(S19495C3*), 0, "S19495C12");
    /*is_ambiguous_... S19495C9::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C7*)(S19495C9*)(S19495C3*), 0, "S19495C12");
    /*is_ambiguous_... S19495C12::S19495C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C7*)(S19495C10*), 0, "S19495C12");
    /*is_ambiguous_... S19495C12::S19495C9 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C9*), 0, "S19495C12");
    /*is_ambiguous_... S19495C12::S19495C9 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C7*)(S19495C9*), 0, "S19495C12");
    check_base_class_offset(lv, (S7856C24*)(S19495C7*)(S19495C10*)(S19495C17*), 0, "S19495C12");
    /*is_ambiguous_... S19495C3::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C3*), ABISELECT(57,33), "S19495C12");
    /*is_ambiguous_... S19495C12::S19495C6 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C6*), ABISELECT(57,33), "S19495C12");
    check_base_class_offset(lv, (S7856C15*)(S19495C16*), ABISELECT(57,33), "S19495C12");
    /*is_ambiguous_... S19495C17::S19495C6 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C6*)(S19495C17*), ABISELECT(57,33), "S19495C12");
    /*is_ambiguous_... S19495C12::S19495C6 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C6*), ABISELECT(32,16), "S19495C12");
    /*is_ambiguous_... S19495C12::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C7*), ABISELECT(32,16), "S19495C12");
    /*is_ambiguous_... S19495C12::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C7*), ABISELECT(57,33), "S19495C12");
    check_base_class_offset(lv, (S7856C12*)(S19495C9*)(S19495C3*), ABISELECT(57,33), "S19495C12");
    /*is_ambiguous_... S19495C9::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C7*)(S19495C9*)(S19495C3*), ABISELECT(57,33), "S19495C12");
    /*is_ambiguous_... S19495C12::S19495C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C7*)(S19495C10*), ABISELECT(57,33), "S19495C12");
    /*is_ambiguous_... S19495C12::S19495C9 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C9*), ABISELECT(57,33), "S19495C12");
    /*is_ambiguous_... S19495C12::S19495C9 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C7*)(S19495C9*), ABISELECT(57,33), "S19495C12");
    check_base_class_offset(lv, (S7856C12*)(S19495C7*)(S19495C10*)(S19495C17*), ABISELECT(57,33), "S19495C12");
    /*is_ambiguous_... S19495C12::S19495C6 */ AMB_check_base_class_offset(lv, (S19495C7*)(S19495C6*), ABISELECT(32,16), "S19495C12");
    /*is_ambiguous_... S19495C15::S19495C7 */ AMB_check_base_class_offset(lv, (S19495C7*)(S19495C15*), ABISELECT(32,16), "S19495C12");
    /*is_ambiguous_... S19495C17::S19495C6 */ AMB_check_base_class_offset(lv, (S19495C7*)(S19495C6*)(S19495C17*), ABISELECT(32,16), "S19495C12");
    check_base_class_offset(lv, (S19495C6*)(S19495C3*), ABISELECT(32,16), "S19495C12");
    check_base_class_offset(lv, (S19495C6*)(S19495C9*)(S19495C3*), ABISELECT(32,16), "S19495C12");
    /*is_ambiguous_... S19495C12::S19495C9 */ AMB_check_base_class_offset(lv, (S19495C6*)(S19495C9*), ABISELECT(32,16), "S19495C12");
    /*is_ambiguous_... S19495C3::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C3*), ABISELECT(48,28), "S19495C12");
    /*is_ambiguous_... S19495C9::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C9*)(S19495C3*), ABISELECT(56,32), "S19495C12");
    /*is_ambiguous_... S19495C9::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C7*)(S19495C9*)(S19495C3*), ABISELECT(48,28), "S19495C12");
    /*is_ambiguous_... S19495C9::S19495C7 */ AMB_check_base_class_offset(lv, (S19495C7*)(S19495C9*)(S19495C3*), ABISELECT(48,28), "S19495C12");
    check_base_class_offset(lv, (S19495C9*)(S19495C3*), ABISELECT(48,28), "S19495C12");
    check_base_class_offset(lv, (S19495C3*)(S19495C13*), ABISELECT(48,28), "S19495C12");
    check_base_class_offset(lv, (S19495C3*)(S19495C15*), ABISELECT(48,28), "S19495C12");
    /*is_ambiguous_... S19495C12::S19495C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C10*), ABISELECT(64,36), "S19495C12");
    /*is_ambiguous_... S19495C12::S19495C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C10*), ABISELECT(72,40), "S19495C12");
    /*is_ambiguous_... S19495C12::S19495C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C7*)(S19495C10*), ABISELECT(64,36), "S19495C12");
    /*is_ambiguous_... S19495C12::S19495C10 */ AMB_check_base_class_offset(lv, (S19495C7*)(S19495C10*), ABISELECT(64,36), "S19495C12");
    check_base_class_offset(lv, (S19495C10*)(S19495C13*), ABISELECT(64,36), "S19495C12");
    check_base_class_offset(lv, (S19495C10*)(S19495C15*), ABISELECT(64,36), "S19495C12");
    /*is_ambiguous_... S19495C12::S19495C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C9*), ABISELECT(88,48), "S19495C12");
    /*is_ambiguous_... S19495C12::S19495C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C7*)(S19495C9*), ABISELECT(80,44), "S19495C12");
    /*is_ambiguous_... S19495C12::S19495C9 */ AMB_check_base_class_offset(lv, (S19495C7*)(S19495C9*), ABISELECT(80,44), "S19495C12");
    /*is_ambiguous_... S19495C13::S19495C9 */ AMB_check_base_class_offset(lv, (S19495C9*)(S19495C13*), ABISELECT(80,44), "S19495C12");
    check_base_class_offset(lv, (S19495C9*)(S19495C17*), ABISELECT(80,44), "S19495C12");
    check_base_class_offset(lv, (S19495C13*), ABISELECT(32,16), "S19495C12");
    check_base_class_offset(lv, (S7856C9_nt*), 0, "S19495C12");
    check_base_class_offset(lv, (S19495C16*)(S19495C15*), ABISELECT(96,52), "S19495C12");
    /*is_ambiguous_... S19495C15::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C15*), ABISELECT(96,52), "S19495C12");
    check_base_class_offset(lv, (S19495C15*), ABISELECT(96,52), "S19495C12");
    /*is_ambiguous_... S19495C10::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C10*)(S19495C17*), 0, "S19495C12");
    /*is_ambiguous_... S19495C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C10*)(S19495C17*), ABISELECT(8,4), "S19495C12");
    check_base_class_offset(lv, (S7856C15*)(S19495C7*)(S19495C10*)(S19495C17*), 0, "S19495C12");
    check_base_class_offset(lv, (S19495C7*)(S19495C10*)(S19495C17*), 0, "S19495C12");
    check_base_class_offset(lv, (S19495C10*)(S19495C17*), 0, "S19495C12");
    /*is_ambiguous_... S19495C17::S19495C6 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C6*)(S19495C17*), ABISELECT(16,8), "S19495C12");
    /*is_ambiguous_... S19495C17::S19495C6 */ AMB_check_base_class_offset(lv, (S19495C6*)(S19495C17*), ABISELECT(16,8), "S19495C12");
    /*is_ambiguous_... S19495C17::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C17*), ABISELECT(24,12), "S19495C12");
    check_base_class_offset(lv, (S19495C17*), 0, "S19495C12");
    test_class_info(&lv, &cd_S19495C12);
    dp->~S19495C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19495C12(Test_S19495C12, "S19495C12", ABISELECT(112,60));

#else // __cplusplus

extern void _ZN9S19495C12C1Ev();
extern void _ZN9S19495C12D2Ev();
Name_Map name_map_S19495C12[] = {
  NSPAIR(_ZN9S19495C12C1Ev),
  NSPAIR(_ZN9S19495C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19495C7;
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
extern Class_Descriptor cd_S19495C6;
extern VTBL_ENTRY _ZTI8S19495C6[];
extern  VTBL_ENTRY _ZTV8S19495C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C6[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19495C7;
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
extern Class_Descriptor cd_S19495C9;
extern VTBL_ENTRY _ZTI8S19495C9[];
extern  VTBL_ENTRY _ZTV8S19495C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C9[];
extern Class_Descriptor cd_S19495C3;
extern VTBL_ENTRY _ZTI8S19495C3[];
extern  VTBL_ENTRY _ZTV8S19495C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C3[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19495C7;
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
extern Class_Descriptor cd_S19495C10;
extern VTBL_ENTRY _ZTI9S19495C10[];
extern  VTBL_ENTRY _ZTV9S19495C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C10[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19495C7;
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
extern Class_Descriptor cd_S19495C9;
extern VTBL_ENTRY _ZTI8S19495C9[];
extern  VTBL_ENTRY _ZTV8S19495C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C9[];
extern Class_Descriptor cd_S19495C13;
extern VTBL_ENTRY _ZTI9S19495C13[];
extern  VTBL_ENTRY _ZTV9S19495C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C13[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S19495C16;
extern VTBL_ENTRY _ZTI9S19495C16[];
extern  VTBL_ENTRY _ZTV9S19495C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C16[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19495C15;
extern VTBL_ENTRY _ZTI9S19495C15[];
extern  VTBL_ENTRY _ZTV9S19495C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19495C7;
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
extern Class_Descriptor cd_S19495C10;
extern VTBL_ENTRY _ZTI9S19495C10[];
extern  VTBL_ENTRY _ZTV9S19495C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C10[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19495C6;
extern VTBL_ENTRY _ZTI8S19495C6[];
extern  VTBL_ENTRY _ZTV8S19495C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C6[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19495C17;
extern VTBL_ENTRY _ZTI9S19495C17[];
extern  VTBL_ENTRY _ZTV9S19495C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C17[];
static Base_Class bases_S19495C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(57,33), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(57,33), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19495C7,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19495C6,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19495C7,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19495C9,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19495C3,    ABISELECT(48,28), //bcp->offset
    35, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19495C7,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19495C10,    ABISELECT(64,36), //bcp->offset
    45, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19495C7,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19495C9,    ABISELECT(80,44), //bcp->offset
    49, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S19495C13,    ABISELECT(32,16), //bcp->offset
    22, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19495C16,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19495C15,    ABISELECT(96,52), //bcp->offset
    59, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S19495C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19495C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S19495C6,    ABISELECT(16,8), //bcp->offset
    16, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S19495C17,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19495C12[];
extern void _ZN9S19495C12D1Ev();
extern void _ZN9S19495C12D0Ev();
extern void ABISELECT(_ZTv0_n88_N9S19495C12D1Ev,_ZTv0_n44_N9S19495C12D1Ev)();
extern void ABISELECT(_ZThn32_N9S19495C12D1Ev,_ZThn16_N9S19495C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19495C12D0Ev,_ZTv0_n44_N9S19495C12D0Ev)();
extern void ABISELECT(_ZThn32_N9S19495C12D0Ev,_ZThn16_N9S19495C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19495C12D1Ev,_ZTv0_n32_N9S19495C12D1Ev)();
extern void ABISELECT(_ZThn48_N9S19495C12D1Ev,_ZThn28_N9S19495C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19495C12D0Ev,_ZTv0_n32_N9S19495C12D0Ev)();
extern void ABISELECT(_ZThn48_N9S19495C12D0Ev,_ZThn28_N9S19495C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19495C12D1Ev,_ZTv0_n32_N9S19495C12D1Ev)();
extern void ABISELECT(_ZThn80_N9S19495C12D1Ev,_ZThn44_N9S19495C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19495C12D0Ev,_ZTv0_n32_N9S19495C12D0Ev)();
extern void ABISELECT(_ZThn80_N9S19495C12D0Ev,_ZThn44_N9S19495C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19495C12D1Ev,_ZTv0_n44_N9S19495C12D1Ev)();
extern void ABISELECT(_ZThn96_N9S19495C12D1Ev,_ZThn52_N9S19495C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19495C12D0Ev,_ZTv0_n44_N9S19495C12D0Ev)();
extern void ABISELECT(_ZThn96_N9S19495C12D0Ev,_ZThn52_N9S19495C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19495C12[] = {
  ABISELECT(96,52),
  ABISELECT(96,52),
  0,
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(57,33),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C12[0]),
  (VTBL_ENTRY)&_ZN9S19495C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19495C12D0Ev,
  ABISELECT(41,25),
  ABISELECT(16,8),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19495C12[0]),
  ABISELECT(-32,-16),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19495C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19495C12D1Ev,_ZTv0_n44_N9S19495C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19495C12D0Ev,_ZTv0_n44_N9S19495C12D0Ev),
  ABISELECT(-48,-28),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19495C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C12D1Ev,_ZTv0_n32_N9S19495C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C12D0Ev,_ZTv0_n32_N9S19495C12D0Ev),
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S19495C12[0]),
  ABISELECT(-80,-44),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S19495C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C12D1Ev,_ZTv0_n32_N9S19495C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C12D0Ev,_ZTv0_n32_N9S19495C12D0Ev),
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-39,-19),
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-39,-19),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI9S19495C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19495C12D1Ev,_ZTv0_n44_N9S19495C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19495C12D0Ev,_ZTv0_n44_N9S19495C12D0Ev),
};
extern VTBL_ENTRY _ZTV9S19495C12[];
extern void _ZN9S19495C17D1Ev();
extern void _ZN9S19495C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19495C17__9S19495C12[] = {
  ABISELECT(57,33),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C17[0]),
  (VTBL_ENTRY)&_ZN9S19495C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19495C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19495C109S19495C17__A1__9S19495C12[] = {
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C79S19495C109S19495C17__A4__9S19495C12[] = {
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C69S19495C17__A1__9S19495C12[] = {
  ABISELECT(41,25),
  ABISELECT(16,8),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C7__8S19495C69S19495C17__A1__9S19495C12[] = {
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19495C6[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19495C17D1Ev,_ZTv0_n32_N9S19495C17D1Ev)();
extern void ABISELECT(_ZThn80_N9S19495C17D1Ev,_ZThn44_N9S19495C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19495C17D0Ev,_ZTv0_n32_N9S19495C17D0Ev)();
extern void ABISELECT(_ZThn80_N9S19495C17D0Ev,_ZThn44_N9S19495C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19495C9__9S19495C17__9S19495C12[] = {
  ABISELECT(-80,-44),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S19495C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C17D1Ev,_ZTv0_n32_N9S19495C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C17D0Ev,_ZTv0_n32_N9S19495C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__9S19495C17__9S19495C12[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19495C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__A__9S19495C17__9S19495C12[] = {
  ABISELECT(41,25),
  ABISELECT(16,8),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19495C17[0]),
};
extern void _ZN9S19495C13D1Ev();
extern void _ZN9S19495C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19495C13__9S19495C12[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C13[0]),
  (VTBL_ENTRY)&_ZN9S19495C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19495C13D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N9S19495C13D1Ev,_ZTv0_n32_N9S19495C13D1Ev)();
extern void ABISELECT(_ZThn16_N9S19495C13D1Ev,_ZThn12_N9S19495C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19495C13D0Ev,_ZTv0_n32_N9S19495C13D0Ev)();
extern void ABISELECT(_ZThn16_N9S19495C13D0Ev,_ZThn12_N9S19495C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19495C3__9S19495C13__9S19495C12[] = {
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19495C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C13D1Ev,_ZTv0_n32_N9S19495C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C13D0Ev,_ZTv0_n32_N9S19495C13D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19495C10__9S19495C13__9S19495C12[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S19495C13[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19495C13D1Ev,_ZTv0_n32_N9S19495C13D1Ev)();
extern void ABISELECT(_ZThn48_N9S19495C13D1Ev,_ZThn28_N9S19495C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19495C13D0Ev,_ZTv0_n32_N9S19495C13D0Ev)();
extern void ABISELECT(_ZThn48_N9S19495C13D0Ev,_ZThn28_N9S19495C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19495C9__A1__9S19495C13__9S19495C12[] = {
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19495C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C13D1Ev,_ZTv0_n32_N9S19495C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C13D0Ev,_ZTv0_n32_N9S19495C13D0Ev),
};
extern void _ZN8S19495C3D1Ev();
extern void _ZN8S19495C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19495C3__9S19495C12[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C3[0]),
  (VTBL_ENTRY)&_ZN8S19495C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19495C3D0Ev,
};
extern void _ZN8S19495C9D1Ev();
extern void _ZN8S19495C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19495C98S19495C3__9S19495C12[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C9[0]),
  (VTBL_ENTRY)&_ZN8S19495C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19495C9D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19495C78S19495C98S19495C3__A1__9S19495C12[] = {
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__8S19495C98S19495C3__9S19495C12[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S19495C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__8S19495C3__9S19495C12[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S19495C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__9S19495C12[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C7__9S19495C12[] = {
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19495C10__9S19495C12[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C79S19495C10__A2__9S19495C12[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
extern void _ZN8S19495C9D1Ev();
extern void _ZN8S19495C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19495C9__A1__9S19495C12[] = {
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C9[0]),
  (VTBL_ENTRY)&_ZN8S19495C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19495C9D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19495C78S19495C9__A3__9S19495C12[] = {
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__8S19495C9__A1__9S19495C12[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S19495C9[0]),
};
extern void _ZN9S19495C15D1Ev();
extern void _ZN9S19495C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19495C15__9S19495C12[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-39,-19),
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-39,-19),
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C15[0]),
  (VTBL_ENTRY)&_ZN9S19495C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19495C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__9S19495C15__9S19495C12[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI9S19495C15[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19495C10__9S19495C15__9S19495C12[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S19495C15[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19495C15D1Ev,_ZTv0_n32_N9S19495C15D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19495C15D0Ev,_ZTv0_n32_N9S19495C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19495C3__9S19495C15__9S19495C12[] = {
  ABISELECT(48,24),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI9S19495C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C15D1Ev,_ZTv0_n32_N9S19495C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C15D0Ev,_ZTv0_n32_N9S19495C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19495C16__9S19495C12[] = {
  ABISELECT(-39,-19),
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C16[0]),
};
static  VTT_ENTRY vtt_S19495C12[] = {
  {&(_ZTV9S19495C12[14]),  14,72},
  {&(_tg__ZTV9S19495C17__9S19495C12[8]),  8,10},
  {&(_tg__ZTV9S19495C109S19495C17__A1__9S19495C12[4]),  4,4},
  {&(_tg__ZTV8S19495C79S19495C109S19495C17__A4__9S19495C12[4]),  4,4},
  {&(_tg__ZTV8S19495C69S19495C17__A1__9S19495C12[6]),  6,6},
  {&(_tg__ZTV8S19495C7__8S19495C69S19495C17__A1__9S19495C12[4]),  4,4},
  {&(_tg__ZTV8S19495C9__9S19495C17__9S19495C12[8]),  8,10},
  {&(_tg__ZTV8S19495C6__9S19495C17__9S19495C12[6]),  6,6},
  {&(_tg__ZTV8S19495C6__9S19495C17__9S19495C12[6]),  6,6},
  {&(_tg__ZTV8S19495C6__A__9S19495C17__9S19495C12[6]),  6,6},
  {&(_ZTV9S19495C12[33]),  33,72},
  {&(_ZTV9S19495C12[43]),  43,72},
  {&(_ZTV9S19495C12[33]),  33,72},
  {&(_ZTV9S19495C12[33]),  33,72},
  {&(_ZTV9S19495C12[49]),  49,72},
  {&(_ZTV9S19495C12[57]),  57,72},
  {&(_ZTV9S19495C12[70]),  70,72},
  {&(_ZTV9S19495C12[70]),  70,72},
  {&(_ZTV9S19495C12[22]),  22,72},
  {&(_tg__ZTV9S19495C13__9S19495C12[10]),  10,12},
  {&(_tg__ZTV8S19495C3__9S19495C13__9S19495C12[8]),  8,10},
  {&(_tg__ZTV9S19495C13__9S19495C12[10]),  10,12},
  {&(_tg__ZTV9S19495C13__9S19495C12[10]),  10,12},
  {&(_tg__ZTV9S19495C10__9S19495C13__9S19495C12[4]),  4,4},
  {&(_tg__ZTV8S19495C9__A1__9S19495C13__9S19495C12[8]),  8,10},
  {&(_tg__ZTV8S19495C3__9S19495C12[7]),  7,9},
  {&(_tg__ZTV8S19495C98S19495C3__9S19495C12[7]),  7,9},
  {&(_tg__ZTV8S19495C78S19495C98S19495C3__A1__9S19495C12[4]),  4,4},
  {&(_tg__ZTV8S19495C6__8S19495C98S19495C3__9S19495C12[6]),  6,6},
  {&(_tg__ZTV8S19495C6__8S19495C98S19495C3__9S19495C12[6]),  6,6},
  {&(_tg__ZTV8S19495C6__8S19495C3__9S19495C12[6]),  6,6},
  {&(_tg__ZTV8S19495C6__8S19495C3__9S19495C12[6]),  6,6},
  {&(_tg__ZTV8S19495C6__9S19495C12[6]),  6,6},
  {&(_tg__ZTV8S19495C6__9S19495C12[6]),  6,6},
  {&(_tg__ZTV8S19495C7__9S19495C12[4]),  4,4},
  {&(_tg__ZTV9S19495C10__9S19495C12[4]),  4,4},
  {&(_tg__ZTV8S19495C79S19495C10__A2__9S19495C12[4]),  4,4},
  {&(_tg__ZTV8S19495C9__A1__9S19495C12[7]),  7,9},
  {&(_tg__ZTV8S19495C78S19495C9__A3__9S19495C12[4]),  4,4},
  {&(_tg__ZTV8S19495C6__8S19495C9__A1__9S19495C12[6]),  6,6},
  {&(_tg__ZTV8S19495C6__8S19495C9__A1__9S19495C12[6]),  6,6},
  {&(_tg__ZTV9S19495C15__9S19495C12[10]),  10,12},
  {&(_tg__ZTV8S19495C6__9S19495C15__9S19495C12[6]),  6,6},
  {&(_tg__ZTV9S19495C15__9S19495C12[10]),  10,12},
  {&(_tg__ZTV9S19495C10__9S19495C15__9S19495C12[4]),  4,4},
  {&(_tg__ZTV8S19495C3__9S19495C15__9S19495C12[8]),  8,10},
  {&(_tg__ZTV8S19495C6__9S19495C15__9S19495C12[6]),  6,6},
  {&(_tg__ZTV9S19495C16__9S19495C12[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19495C12[];
extern  VTBL_ENTRY _ZTV9S19495C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C12[];
static VTBL_ENTRY alt_thunk_names159[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19495C13D0Ev,_ZTv0_n32_N9S19495C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19495C13D0Ev,_ZThn28_N9S19495C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19495C13D0Ev,_ZThn12_N9S19495C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19495C13D1Ev,_ZTv0_n32_N9S19495C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19495C13D1Ev,_ZThn28_N9S19495C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19495C13D1Ev,_ZThn12_N9S19495C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19495C17D0Ev,_ZTv0_n32_N9S19495C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19495C17D0Ev,_ZThn44_N9S19495C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19495C17D1Ev,_ZTv0_n32_N9S19495C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19495C17D1Ev,_ZThn44_N9S19495C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19495C12D0Ev,_ZTv0_n32_N9S19495C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19495C12D0Ev,_ZThn44_N9S19495C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19495C12D0Ev,_ZThn28_N9S19495C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19495C12D1Ev,_ZTv0_n32_N9S19495C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19495C12D1Ev,_ZThn44_N9S19495C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19495C12D1Ev,_ZThn28_N9S19495C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19495C12D0Ev,_ZTv0_n44_N9S19495C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19495C12D0Ev,_ZThn52_N9S19495C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19495C12D0Ev,_ZThn16_N9S19495C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19495C12D1Ev,_ZTv0_n44_N9S19495C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19495C12D1Ev,_ZThn52_N9S19495C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19495C12D1Ev,_ZThn16_N9S19495C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19495C12 = {  "S19495C12", // class name
  bases_S19495C12, 36,
  &(vtc_S19495C12[0]), // expected_vtbl_contents
  &(vtt_S19495C12[0]), // expected_vtt_contents
  ABISELECT(112,60), // object size
  NSPAIRA(_ZTI9S19495C12),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19495C12),72, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19495C12),48, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names159,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19495C11  : virtual S19495C3 , virtual S19495C12 {
  virtual  ~S19495C11(); // _ZN9S19495C11D2Ev
  S19495C11(); // tgen
};
//SIG(-1 S19495C11) C1{ VBC2{ VBC3{ m} VBC4{ m} VBC5{ BC3 VBC6{ VBC3 BC4 VBC7{ m}} VBC4} BC7 BC8{ BC4 VBC3 VBC7 BC6 VBC5 vd} vd} VBC9{ VBC10{ VBC2 VBC11{ BC7 BC4 BC6 Fi} VBC8 vd Fi[2]} VBC12{ m} VBC13{ VBC6 VBC14{ VBC4} VBC11 BC7 VBC2 vd Fi} BC15{ VBC8 BC11 BC5 BC7 vd} vd} vd}


 S19495C11 ::~S19495C11(){ note_dtor("S19495C11", this);}
S19495C11 ::S19495C11(){ note_ctor("S19495C11", this);} // tgen

static void Test_S19495C11()
{
  extern Class_Descriptor cd_S19495C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,17)];
    init_test(&cd_S19495C11, buf);
    S19495C11 *dp, &lv = *(dp=new (buf) S19495C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,64), "sizeof(S19495C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19495C11)");
    /*is_ambiguous_... S19495C3::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C3*), ABISELECT(17,9), "S19495C11");
    /*is_ambiguous_... S19495C11::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C7*), ABISELECT(17,9), "S19495C11");
    /*is_ambiguous_... S19495C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C9*)(S19495C3*), ABISELECT(17,9), "S19495C11");
    /*is_ambiguous_... S19495C9::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C7*)(S19495C9*)(S19495C3*), ABISELECT(17,9), "S19495C11");
    /*is_ambiguous_... S19495C11::S19495C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C7*)(S19495C10*), ABISELECT(17,9), "S19495C11");
    /*is_ambiguous_... S19495C11::S19495C9 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C9*), ABISELECT(17,9), "S19495C11");
    /*is_ambiguous_... S19495C11::S19495C9 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C7*)(S19495C9*), ABISELECT(17,9), "S19495C11");
    check_base_class_offset(lv, (S7856C24*)(S19495C7*)(S19495C10*)(S19495C17*)(S19495C12*), ABISELECT(17,9), "S19495C11");
    /*is_ambiguous_... S19495C3::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C3*), ABISELECT(17,9), "S19495C11");
    /*is_ambiguous_... S19495C11::S19495C6 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C6*), ABISELECT(17,9), "S19495C11");
    check_base_class_offset(lv, (S7856C15*)(S19495C16*), ABISELECT(17,9), "S19495C11");
    /*is_ambiguous_... S19495C17::S19495C6 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C6*)(S19495C17*)(S19495C12*), ABISELECT(17,9), "S19495C11");
    /*is_ambiguous_... S19495C11::S19495C6 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C6*), 0, "S19495C11");
    /*is_ambiguous_... S19495C11::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C7*), 0, "S19495C11");
    /*is_ambiguous_... S19495C11::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C7*), 0, "S19495C11");
    check_base_class_offset(lv, (S7856C12*)(S19495C9*)(S19495C3*), 0, "S19495C11");
    /*is_ambiguous_... S19495C9::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C7*)(S19495C9*)(S19495C3*), 0, "S19495C11");
    /*is_ambiguous_... S19495C11::S19495C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C7*)(S19495C10*), 0, "S19495C11");
    /*is_ambiguous_... S19495C11::S19495C9 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C9*), 0, "S19495C11");
    /*is_ambiguous_... S19495C11::S19495C9 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C7*)(S19495C9*), 0, "S19495C11");
    check_base_class_offset(lv, (S7856C12*)(S19495C7*)(S19495C10*)(S19495C17*)(S19495C12*), 0, "S19495C11");
    /*is_ambiguous_... S19495C11::S19495C6 */ AMB_check_base_class_offset(lv, (S19495C7*)(S19495C6*), 0, "S19495C11");
    /*is_ambiguous_... S19495C15::S19495C7 */ AMB_check_base_class_offset(lv, (S19495C7*)(S19495C15*), 0, "S19495C11");
    /*is_ambiguous_... S19495C17::S19495C6 */ AMB_check_base_class_offset(lv, (S19495C7*)(S19495C6*)(S19495C17*)(S19495C12*), 0, "S19495C11");
    check_base_class_offset(lv, (S19495C6*)(S19495C3*), 0, "S19495C11");
    check_base_class_offset(lv, (S19495C6*)(S19495C9*)(S19495C3*), 0, "S19495C11");
    /*is_ambiguous_... S19495C11::S19495C9 */ AMB_check_base_class_offset(lv, (S19495C6*)(S19495C9*), 0, "S19495C11");
    /*is_ambiguous_... S19495C3::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C3*), ABISELECT(8,4), "S19495C11");
    /*is_ambiguous_... S19495C9::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C9*)(S19495C3*), ABISELECT(16,8), "S19495C11");
    /*is_ambiguous_... S19495C9::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C7*)(S19495C9*)(S19495C3*), ABISELECT(8,4), "S19495C11");
    /*is_ambiguous_... S19495C9::S19495C7 */ AMB_check_base_class_offset(lv, (S19495C7*)(S19495C9*)(S19495C3*), ABISELECT(8,4), "S19495C11");
    check_base_class_offset(lv, (S19495C9*)(S19495C3*), ABISELECT(8,4), "S19495C11");
    check_base_class_offset(lv, (S19495C3*), ABISELECT(8,4), "S19495C11");
    check_base_class_offset(lv, (S19495C3*)(S19495C13*), ABISELECT(8,4), "S19495C11");
    check_base_class_offset(lv, (S19495C3*)(S19495C15*), ABISELECT(8,4), "S19495C11");
    /*is_ambiguous_... S19495C11::S19495C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C10*), ABISELECT(72,40), "S19495C11");
    /*is_ambiguous_... S19495C11::S19495C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C10*), ABISELECT(80,44), "S19495C11");
    /*is_ambiguous_... S19495C11::S19495C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C7*)(S19495C10*), ABISELECT(72,40), "S19495C11");
    /*is_ambiguous_... S19495C11::S19495C10 */ AMB_check_base_class_offset(lv, (S19495C7*)(S19495C10*), ABISELECT(72,40), "S19495C11");
    check_base_class_offset(lv, (S19495C10*)(S19495C13*), ABISELECT(72,40), "S19495C11");
    check_base_class_offset(lv, (S19495C10*)(S19495C15*), ABISELECT(72,40), "S19495C11");
    /*is_ambiguous_... S19495C11::S19495C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C9*), ABISELECT(96,52), "S19495C11");
    /*is_ambiguous_... S19495C11::S19495C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C7*)(S19495C9*), ABISELECT(88,48), "S19495C11");
    /*is_ambiguous_... S19495C11::S19495C9 */ AMB_check_base_class_offset(lv, (S19495C7*)(S19495C9*), ABISELECT(88,48), "S19495C11");
    /*is_ambiguous_... S19495C13::S19495C9 */ AMB_check_base_class_offset(lv, (S19495C9*)(S19495C13*), ABISELECT(88,48), "S19495C11");
    check_base_class_offset(lv, (S19495C9*)(S19495C17*)(S19495C12*), ABISELECT(88,48), "S19495C11");
    check_base_class_offset(lv, (S19495C13*)(S19495C12*), ABISELECT(56,28), "S19495C11");
    check_base_class_offset(lv, (S7856C9_nt*)(S19495C12*), 0, "S19495C11");
    check_base_class_offset(lv, (S19495C16*)(S19495C15*), ABISELECT(104,56), "S19495C11");
    /*is_ambiguous_... S19495C15::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C15*), ABISELECT(104,56), "S19495C11");
    check_base_class_offset(lv, (S19495C15*)(S19495C12*), ABISELECT(104,56), "S19495C11");
    /*is_ambiguous_... S19495C10::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C10*)(S19495C17*)(S19495C12*), ABISELECT(24,12), "S19495C11");
    /*is_ambiguous_... S19495C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C10*)(S19495C17*)(S19495C12*), ABISELECT(32,16), "S19495C11");
    check_base_class_offset(lv, (S7856C15*)(S19495C7*)(S19495C10*)(S19495C17*)(S19495C12*), ABISELECT(24,12), "S19495C11");
    check_base_class_offset(lv, (S19495C7*)(S19495C10*)(S19495C17*)(S19495C12*), ABISELECT(24,12), "S19495C11");
    check_base_class_offset(lv, (S19495C10*)(S19495C17*)(S19495C12*), ABISELECT(24,12), "S19495C11");
    /*is_ambiguous_... S19495C17::S19495C6 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C6*)(S19495C17*)(S19495C12*), ABISELECT(40,20), "S19495C11");
    /*is_ambiguous_... S19495C17::S19495C6 */ AMB_check_base_class_offset(lv, (S19495C6*)(S19495C17*)(S19495C12*), ABISELECT(40,20), "S19495C11");
    /*is_ambiguous_... S19495C17::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C17*)(S19495C12*), ABISELECT(48,24), "S19495C11");
    check_base_class_offset(lv, (S19495C17*)(S19495C12*), ABISELECT(24,12), "S19495C11");
    check_base_class_offset(lv, (S19495C12*), ABISELECT(24,12), "S19495C11");
    test_class_info(&lv, &cd_S19495C11);
    dp->~S19495C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19495C11(Test_S19495C11, "S19495C11", ABISELECT(120,64));

#else // __cplusplus

extern void _ZN9S19495C11C1Ev();
extern void _ZN9S19495C11D2Ev();
Name_Map name_map_S19495C11[] = {
  NSPAIR(_ZN9S19495C11C1Ev),
  NSPAIR(_ZN9S19495C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19495C7;
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
extern Class_Descriptor cd_S19495C6;
extern VTBL_ENTRY _ZTI8S19495C6[];
extern  VTBL_ENTRY _ZTV8S19495C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C6[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19495C7;
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
extern Class_Descriptor cd_S19495C9;
extern VTBL_ENTRY _ZTI8S19495C9[];
extern  VTBL_ENTRY _ZTV8S19495C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C9[];
extern Class_Descriptor cd_S19495C3;
extern VTBL_ENTRY _ZTI8S19495C3[];
extern  VTBL_ENTRY _ZTV8S19495C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C3[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19495C7;
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
extern Class_Descriptor cd_S19495C10;
extern VTBL_ENTRY _ZTI9S19495C10[];
extern  VTBL_ENTRY _ZTV9S19495C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C10[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19495C7;
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
extern Class_Descriptor cd_S19495C9;
extern VTBL_ENTRY _ZTI8S19495C9[];
extern  VTBL_ENTRY _ZTV8S19495C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C9[];
extern Class_Descriptor cd_S19495C13;
extern VTBL_ENTRY _ZTI9S19495C13[];
extern  VTBL_ENTRY _ZTV9S19495C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C13[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S19495C16;
extern VTBL_ENTRY _ZTI9S19495C16[];
extern  VTBL_ENTRY _ZTV9S19495C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C16[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19495C15;
extern VTBL_ENTRY _ZTI9S19495C15[];
extern  VTBL_ENTRY _ZTV9S19495C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19495C7;
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
extern Class_Descriptor cd_S19495C10;
extern VTBL_ENTRY _ZTI9S19495C10[];
extern  VTBL_ENTRY _ZTV9S19495C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C10[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19495C6;
extern VTBL_ENTRY _ZTI8S19495C6[];
extern  VTBL_ENTRY _ZTV8S19495C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C6[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19495C17;
extern VTBL_ENTRY _ZTI9S19495C17[];
extern  VTBL_ENTRY _ZTV9S19495C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C17[];
extern Class_Descriptor cd_S19495C12;
extern VTBL_ENTRY _ZTI9S19495C12[];
extern  VTBL_ENTRY _ZTV9S19495C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C12[];
static Base_Class bases_S19495C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    ABISELECT(17,9), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(17,9), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19495C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19495C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19495C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19495C9,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19495C3,    ABISELECT(8,4), //bcp->offset
    17, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19495C7,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19495C10,    ABISELECT(72,40), //bcp->offset
    63, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19495C7,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19495C9,    ABISELECT(88,48), //bcp->offset
    67, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S19495C13,    ABISELECT(56,28), //bcp->offset
    50, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S19495C16,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19495C15,    ABISELECT(104,56), //bcp->offset
    77, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S19495C7,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19495C10,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S19495C6,    ABISELECT(40,20), //bcp->offset
    44, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S19495C17,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S19495C12,    ABISELECT(24,12), //bcp->offset
    27, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19495C11[];
extern void _ZN9S19495C11D1Ev();
extern void _ZN9S19495C11D0Ev();
extern void ABISELECT(_ZTv0_n64_N9S19495C11D1Ev,_ZTv0_n32_N9S19495C11D1Ev)();
extern void ABISELECT(_ZThn8_N9S19495C11D1Ev,_ZThn4_N9S19495C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19495C11D0Ev,_ZTv0_n32_N9S19495C11D0Ev)();
extern void ABISELECT(_ZThn8_N9S19495C11D0Ev,_ZThn4_N9S19495C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N9S19495C11D1Ev,_ZTv0_n60_N9S19495C11D1Ev)();
extern void ABISELECT(_ZThn24_N9S19495C11D1Ev,_ZThn12_N9S19495C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N9S19495C11D0Ev,_ZTv0_n60_N9S19495C11D0Ev)();
extern void ABISELECT(_ZThn24_N9S19495C11D0Ev,_ZThn12_N9S19495C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19495C11D1Ev,_ZTv0_n44_N9S19495C11D1Ev)();
extern void ABISELECT(_ZThn56_N9S19495C11D1Ev,_ZThn28_N9S19495C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19495C11D0Ev,_ZTv0_n44_N9S19495C11D0Ev)();
extern void ABISELECT(_ZThn56_N9S19495C11D0Ev,_ZThn28_N9S19495C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19495C11D1Ev,_ZTv0_n32_N9S19495C11D1Ev)();
extern void ABISELECT(_ZThn88_N9S19495C11D1Ev,_ZThn48_N9S19495C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19495C11D0Ev,_ZTv0_n32_N9S19495C11D0Ev)();
extern void ABISELECT(_ZThn88_N9S19495C11D0Ev,_ZThn48_N9S19495C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19495C11D1Ev,_ZTv0_n44_N9S19495C11D1Ev)();
extern void ABISELECT(_ZThn104_N9S19495C11D1Ev,_ZThn56_N9S19495C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19495C11D0Ev,_ZTv0_n44_N9S19495C11D0Ev)();
extern void ABISELECT(_ZThn104_N9S19495C11D0Ev,_ZThn56_N9S19495C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19495C11[] = {
  ABISELECT(104,56),
  ABISELECT(104,56),
  0,
  ABISELECT(88,48),
  ABISELECT(72,40),
  ABISELECT(56,28),
  ABISELECT(24,12),
  0,
  ABISELECT(8,4),
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C11[0]),
  (VTBL_ENTRY)&_ZN9S19495C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19495C11D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19495C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C11D1Ev,_ZTv0_n32_N9S19495C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C11D0Ev,_ZTv0_n32_N9S19495C11D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(80,44),
  ABISELECT(80,44),
  ABISELECT(-24,-12),
  ABISELECT(48,28),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(-7,-3),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(64,36),
  ABISELECT(-24,-12),
  ABISELECT(-7,-3),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19495C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19495C11D1Ev,_ZTv0_n60_N9S19495C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19495C11D0Ev,_ZTv0_n60_N9S19495C11D0Ev),
  ABISELECT(-23,-11),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-23,-11),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19495C11[0]),
  ABISELECT(-56,-28),
  ABISELECT(32,20),
  ABISELECT(16,12),
  ABISELECT(-56,-28),
  ABISELECT(-48,-24),
  ABISELECT(-39,-19),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-39,-19),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S19495C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19495C11D1Ev,_ZTv0_n44_N9S19495C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19495C11D0Ev,_ZTv0_n44_N9S19495C11D0Ev),
  ABISELECT(-72,-40),
  ABISELECT(-55,-31),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S19495C11[0]),
  ABISELECT(-88,-48),
  ABISELECT(-71,-39),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-71,-39),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI9S19495C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C11D1Ev,_ZTv0_n32_N9S19495C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C11D0Ev,_ZTv0_n32_N9S19495C11D0Ev),
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  ABISELECT(-96,-52),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-104,-56),
  ABISELECT(-87,-47),
  ABISELECT(-104,-56),
  ABISELECT(-87,-47),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI9S19495C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19495C11D1Ev,_ZTv0_n44_N9S19495C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19495C11D0Ev,_ZTv0_n44_N9S19495C11D0Ev),
};
extern VTBL_ENTRY _ZTV9S19495C11[];
extern void _ZN8S19495C3D1Ev();
extern void _ZN8S19495C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19495C3__9S19495C11[] = {
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C3[0]),
  (VTBL_ENTRY)&_ZN8S19495C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19495C3D0Ev,
};
extern void _ZN8S19495C9D1Ev();
extern void _ZN8S19495C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19495C98S19495C3__9S19495C11[] = {
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C9[0]),
  (VTBL_ENTRY)&_ZN8S19495C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19495C9D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19495C78S19495C98S19495C3__A1__9S19495C11[] = {
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__8S19495C98S19495C3__9S19495C11[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S19495C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__8S19495C3__9S19495C11[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S19495C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__9S19495C11[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C7__9S19495C11[] = {
  0,
  ABISELECT(17,9),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
extern void _ZN9S19495C12D1Ev();
extern void _ZN9S19495C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19495C12__9S19495C11[] = {
  ABISELECT(80,44),
  ABISELECT(80,44),
  ABISELECT(-24,-12),
  ABISELECT(48,28),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(-7,-3),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(64,36),
  ABISELECT(-24,-12),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C12[0]),
  (VTBL_ENTRY)&_ZN9S19495C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19495C12D0Ev,
};
extern void _ZN9S19495C17D1Ev();
extern void _ZN9S19495C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19495C179S19495C12__9S19495C11[] = {
  ABISELECT(-7,-3),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(64,36),
  ABISELECT(-24,-12),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C17[0]),
  (VTBL_ENTRY)&_ZN9S19495C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19495C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19495C109S19495C179S19495C12__A1__9S19495C11[] = {
  ABISELECT(-24,-12),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C79S19495C109S19495C179S19495C12__A4__9S19495C11[] = {
  ABISELECT(-24,-12),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C69S19495C179S19495C12__A1__9S19495C11[] = {
  ABISELECT(-23,-11),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C7__8S19495C69S19495C179S19495C12__A1__9S19495C11[] = {
  0,
  ABISELECT(17,9),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S19495C6[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19495C17D1Ev,_ZTv0_n32_N9S19495C17D1Ev)();
extern void ABISELECT(_ZThn64_N9S19495C17D1Ev,_ZThn36_N9S19495C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19495C17D0Ev,_ZTv0_n32_N9S19495C17D0Ev)();
extern void ABISELECT(_ZThn64_N9S19495C17D0Ev,_ZThn36_N9S19495C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19495C9__9S19495C179S19495C12__9S19495C11[] = {
  ABISELECT(-64,-36),
  ABISELECT(-71,-39),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-71,-39),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S19495C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C17D1Ev,_ZTv0_n32_N9S19495C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C17D0Ev,_ZTv0_n32_N9S19495C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__9S19495C179S19495C12__9S19495C11[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S19495C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__A__9S19495C179S19495C12__9S19495C11[] = {
  ABISELECT(-23,-11),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-23,-11),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19495C17[0]),
};
extern void ABISELECT(_ZTv0_n88_N9S19495C12D1Ev,_ZTv0_n44_N9S19495C12D1Ev)();
extern void ABISELECT(_ZThn32_N9S19495C12D1Ev,_ZThn16_N9S19495C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19495C12D0Ev,_ZTv0_n44_N9S19495C12D0Ev)();
extern void ABISELECT(_ZThn32_N9S19495C12D0Ev,_ZThn16_N9S19495C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19495C13__9S19495C12__9S19495C11[] = {
  ABISELECT(-32,-16),
  ABISELECT(32,20),
  ABISELECT(16,12),
  ABISELECT(-56,-28),
  ABISELECT(-48,-24),
  ABISELECT(-39,-19),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-39,-19),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19495C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19495C12D1Ev,_ZTv0_n44_N9S19495C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19495C12D0Ev,_ZTv0_n44_N9S19495C12D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N9S19495C12D1Ev,_ZTv0_n32_N9S19495C12D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19495C12D0Ev,_ZTv0_n32_N9S19495C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19495C3__9S19495C12__9S19495C11[] = {
  ABISELECT(16,8),
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S19495C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C12D1Ev,_ZTv0_n32_N9S19495C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C12D0Ev,_ZTv0_n32_N9S19495C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__9S19495C12__9S19495C11[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S19495C12[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19495C10__9S19495C12__9S19495C11[] = {
  ABISELECT(-72,-40),
  ABISELECT(-55,-31),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19495C12[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19495C12D1Ev,_ZTv0_n32_N9S19495C12D1Ev)();
extern void ABISELECT(_ZThn64_N9S19495C12D1Ev,_ZThn36_N9S19495C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19495C12D0Ev,_ZTv0_n32_N9S19495C12D0Ev)();
extern void ABISELECT(_ZThn64_N9S19495C12D0Ev,_ZThn36_N9S19495C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19495C9__A1__9S19495C12__9S19495C11[] = {
  ABISELECT(-64,-36),
  ABISELECT(-71,-39),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-71,-39),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S19495C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C12D1Ev,_ZTv0_n32_N9S19495C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C12D0Ev,_ZTv0_n32_N9S19495C12D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N9S19495C12D1Ev,_ZTv0_n44_N9S19495C12D1Ev)();
extern void ABISELECT(_ZThn80_N9S19495C12D1Ev,_ZThn44_N9S19495C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19495C12D0Ev,_ZTv0_n44_N9S19495C12D0Ev)();
extern void ABISELECT(_ZThn80_N9S19495C12D0Ev,_ZThn44_N9S19495C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19495C15__9S19495C12__9S19495C11[] = {
  ABISELECT(-80,-44),
  ABISELECT(-104,-56),
  ABISELECT(-96,-52),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-104,-56),
  ABISELECT(-87,-47),
  ABISELECT(-104,-56),
  ABISELECT(-87,-47),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S19495C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19495C12D1Ev,_ZTv0_n44_N9S19495C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19495C12D0Ev,_ZTv0_n44_N9S19495C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19495C69S19495C17__A1__9S19495C12__9S19495C11[] = {
  ABISELECT(-23,-11),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-23,-11),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19495C12[0]),
};
extern void _ZN9S19495C13D1Ev();
extern void _ZN9S19495C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19495C13__9S19495C11[] = {
  ABISELECT(32,20),
  ABISELECT(16,12),
  ABISELECT(-56,-28),
  ABISELECT(-48,-24),
  ABISELECT(-39,-19),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-39,-19),
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C13[0]),
  (VTBL_ENTRY)&_ZN9S19495C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19495C13D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N9S19495C13D1Ev,_ZTv0_n32_N9S19495C13D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19495C13D0Ev,_ZTv0_n32_N9S19495C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19495C3__9S19495C13__9S19495C11[] = {
  ABISELECT(48,24),
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI9S19495C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C13D1Ev,_ZTv0_n32_N9S19495C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C13D0Ev,_ZTv0_n32_N9S19495C13D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__9S19495C13__9S19495C11[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI9S19495C13[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19495C10__9S19495C13__9S19495C11[] = {
  ABISELECT(-72,-40),
  ABISELECT(-55,-31),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19495C13[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19495C13D1Ev,_ZTv0_n32_N9S19495C13D1Ev)();
extern void ABISELECT(_ZThn32_N9S19495C13D1Ev,_ZThn20_N9S19495C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19495C13D0Ev,_ZTv0_n32_N9S19495C13D0Ev)();
extern void ABISELECT(_ZThn32_N9S19495C13D0Ev,_ZThn20_N9S19495C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19495C9__A1__9S19495C13__9S19495C11[] = {
  ABISELECT(-32,-20),
  ABISELECT(-71,-39),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-71,-39),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S19495C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C13D1Ev,_ZTv0_n32_N9S19495C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C13D0Ev,_ZTv0_n32_N9S19495C13D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19495C10__9S19495C11[] = {
  ABISELECT(-72,-40),
  ABISELECT(-55,-31),
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C79S19495C10__A2__9S19495C11[] = {
  ABISELECT(-72,-40),
  ABISELECT(-55,-31),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
extern void _ZN8S19495C9D1Ev();
extern void _ZN8S19495C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19495C9__A1__9S19495C11[] = {
  ABISELECT(-71,-39),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-71,-39),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C9[0]),
  (VTBL_ENTRY)&_ZN8S19495C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19495C9D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19495C78S19495C9__A3__9S19495C11[] = {
  ABISELECT(-88,-48),
  ABISELECT(-71,-39),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__8S19495C9__A1__9S19495C11[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI8S19495C9[0]),
};
extern void _ZN9S19495C15D1Ev();
extern void _ZN9S19495C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19495C15__9S19495C11[] = {
  ABISELECT(-104,-56),
  ABISELECT(-96,-52),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-104,-56),
  ABISELECT(-87,-47),
  ABISELECT(-104,-56),
  ABISELECT(-87,-47),
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C15[0]),
  (VTBL_ENTRY)&_ZN9S19495C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19495C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__9S19495C15__9S19495C11[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  ABISELECT(104,56),
  (VTBL_ENTRY)&(_ZTI9S19495C15[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19495C10__9S19495C15__9S19495C11[] = {
  ABISELECT(-72,-40),
  ABISELECT(-55,-31),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S19495C15[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19495C15D1Ev,_ZTv0_n32_N9S19495C15D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19495C15D0Ev,_ZTv0_n32_N9S19495C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19495C3__9S19495C15__9S19495C11[] = {
  ABISELECT(96,52),
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  ABISELECT(96,52),
  (VTBL_ENTRY)&(_ZTI9S19495C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C15D1Ev,_ZTv0_n32_N9S19495C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C15D0Ev,_ZTv0_n32_N9S19495C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19495C16__9S19495C11[] = {
  ABISELECT(-87,-47),
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C16[0]),
};
static  VTT_ENTRY vtt_S19495C11[] = {
  {&(_ZTV9S19495C11[15]),  15,90},
  {&(_ZTV9S19495C11[25]),  25,90},
  {&(_ZTV9S19495C11[15]),  15,90},
  {&(_ZTV9S19495C11[15]),  15,90},
  {&(_ZTV9S19495C11[42]),  42,90},
  {&(_ZTV9S19495C11[61]),  61,90},
  {&(_ZTV9S19495C11[67]),  67,90},
  {&(_ZTV9S19495C11[75]),  75,90},
  {&(_ZTV9S19495C11[88]),  88,90},
  {&(_ZTV9S19495C11[88]),  88,90},
  {&(_ZTV9S19495C11[50]),  50,90},
  {&(_tg__ZTV8S19495C3__9S19495C11[7]),  7,9},
  {&(_tg__ZTV8S19495C98S19495C3__9S19495C11[7]),  7,9},
  {&(_tg__ZTV8S19495C78S19495C98S19495C3__A1__9S19495C11[4]),  4,4},
  {&(_tg__ZTV8S19495C6__8S19495C98S19495C3__9S19495C11[6]),  6,6},
  {&(_tg__ZTV8S19495C6__8S19495C98S19495C3__9S19495C11[6]),  6,6},
  {&(_tg__ZTV8S19495C6__8S19495C3__9S19495C11[6]),  6,6},
  {&(_tg__ZTV8S19495C6__8S19495C3__9S19495C11[6]),  6,6},
  {&(_tg__ZTV8S19495C6__9S19495C11[6]),  6,6},
  {&(_tg__ZTV8S19495C6__9S19495C11[6]),  6,6},
  {&(_tg__ZTV8S19495C7__9S19495C11[4]),  4,4},
  {&(_tg__ZTV9S19495C12__9S19495C11[14]),  14,16},
  {&(_tg__ZTV9S19495C179S19495C12__9S19495C11[8]),  8,10},
  {&(_tg__ZTV9S19495C109S19495C179S19495C12__A1__9S19495C11[4]),  4,4},
  {&(_tg__ZTV8S19495C79S19495C109S19495C179S19495C12__A4__9S19495C11[4]),  4,4},
  {&(_tg__ZTV8S19495C69S19495C179S19495C12__A1__9S19495C11[6]),  6,6},
  {&(_tg__ZTV8S19495C7__8S19495C69S19495C179S19495C12__A1__9S19495C11[4]),  4,4},
  {&(_tg__ZTV8S19495C9__9S19495C179S19495C12__9S19495C11[8]),  8,10},
  {&(_tg__ZTV8S19495C6__9S19495C179S19495C12__9S19495C11[6]),  6,6},
  {&(_tg__ZTV8S19495C6__9S19495C179S19495C12__9S19495C11[6]),  6,6},
  {&(_tg__ZTV8S19495C6__A__9S19495C179S19495C12__9S19495C11[6]),  6,6},
  {&(_tg__ZTV9S19495C13__9S19495C12__9S19495C11[11]),  11,13},
  {&(_tg__ZTV8S19495C3__9S19495C12__9S19495C11[8]),  8,10},
  {&(_tg__ZTV8S19495C6__9S19495C12__9S19495C11[6]),  6,6},
  {&(_tg__ZTV8S19495C6__9S19495C12__9S19495C11[6]),  6,6},
  {&(_tg__ZTV9S19495C10__9S19495C12__9S19495C11[4]),  4,4},
  {&(_tg__ZTV8S19495C9__A1__9S19495C12__9S19495C11[8]),  8,10},
  {&(_tg__ZTV9S19495C15__9S19495C12__9S19495C11[11]),  11,13},
  {&(_tg__ZTV9S19495C15__9S19495C12__9S19495C11[11]),  11,13},
  {&(_tg__ZTV8S19495C69S19495C17__A1__9S19495C12__9S19495C11[6]),  6,6},
  {&(_tg__ZTV9S19495C13__9S19495C11[10]),  10,12},
  {&(_tg__ZTV8S19495C3__9S19495C13__9S19495C11[8]),  8,10},
  {&(_tg__ZTV8S19495C6__9S19495C13__9S19495C11[6]),  6,6},
  {&(_tg__ZTV8S19495C6__9S19495C13__9S19495C11[6]),  6,6},
  {&(_tg__ZTV9S19495C10__9S19495C13__9S19495C11[4]),  4,4},
  {&(_tg__ZTV8S19495C9__A1__9S19495C13__9S19495C11[8]),  8,10},
  {&(_tg__ZTV9S19495C10__9S19495C11[4]),  4,4},
  {&(_tg__ZTV8S19495C79S19495C10__A2__9S19495C11[4]),  4,4},
  {&(_tg__ZTV8S19495C9__A1__9S19495C11[7]),  7,9},
  {&(_tg__ZTV8S19495C78S19495C9__A3__9S19495C11[4]),  4,4},
  {&(_tg__ZTV8S19495C6__8S19495C9__A1__9S19495C11[6]),  6,6},
  {&(_tg__ZTV8S19495C6__8S19495C9__A1__9S19495C11[6]),  6,6},
  {&(_tg__ZTV9S19495C15__9S19495C11[10]),  10,12},
  {&(_tg__ZTV8S19495C6__9S19495C15__9S19495C11[6]),  6,6},
  {&(_tg__ZTV9S19495C15__9S19495C11[10]),  10,12},
  {&(_tg__ZTV9S19495C10__9S19495C15__9S19495C11[4]),  4,4},
  {&(_tg__ZTV8S19495C3__9S19495C15__9S19495C11[8]),  8,10},
  {&(_tg__ZTV8S19495C6__9S19495C15__9S19495C11[6]),  6,6},
  {&(_tg__ZTV9S19495C16__9S19495C11[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19495C11[];
extern  VTBL_ENTRY _ZTV9S19495C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C11[];
static VTBL_ENTRY alt_thunk_names160[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19495C13D0Ev,_ZTv0_n32_N9S19495C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19495C13D0Ev,_ZThn20_N9S19495C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19495C13D1Ev,_ZTv0_n32_N9S19495C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19495C13D1Ev,_ZThn20_N9S19495C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19495C12D0Ev,_ZTv0_n32_N9S19495C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19495C12D0Ev,_ZThn36_N9S19495C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19495C12D1Ev,_ZTv0_n32_N9S19495C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19495C12D1Ev,_ZThn36_N9S19495C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19495C12D0Ev,_ZTv0_n44_N9S19495C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19495C12D0Ev,_ZThn44_N9S19495C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19495C12D0Ev,_ZThn16_N9S19495C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19495C12D1Ev,_ZTv0_n44_N9S19495C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19495C12D1Ev,_ZThn44_N9S19495C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19495C12D1Ev,_ZThn16_N9S19495C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19495C17D0Ev,_ZTv0_n32_N9S19495C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19495C17D0Ev,_ZThn36_N9S19495C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19495C17D1Ev,_ZTv0_n32_N9S19495C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19495C17D1Ev,_ZThn36_N9S19495C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19495C11D0Ev,_ZTv0_n44_N9S19495C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19495C11D0Ev,_ZThn56_N9S19495C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19495C11D0Ev,_ZThn28_N9S19495C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19495C11D1Ev,_ZTv0_n44_N9S19495C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19495C11D1Ev,_ZThn56_N9S19495C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19495C11D1Ev,_ZThn28_N9S19495C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19495C11D0Ev,_ZTv0_n60_N9S19495C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19495C11D0Ev,_ZThn12_N9S19495C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19495C11D1Ev,_ZTv0_n60_N9S19495C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19495C11D1Ev,_ZThn12_N9S19495C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19495C11D0Ev,_ZTv0_n32_N9S19495C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19495C11D0Ev,_ZThn48_N9S19495C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19495C11D0Ev,_ZThn4_N9S19495C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19495C11D1Ev,_ZTv0_n32_N9S19495C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19495C11D1Ev,_ZThn48_N9S19495C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19495C11D1Ev,_ZThn4_N9S19495C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19495C11 = {  "S19495C11", // class name
  bases_S19495C11, 37,
  &(vtc_S19495C11[0]), // expected_vtbl_contents
  &(vtt_S19495C11[0]), // expected_vtt_contents
  ABISELECT(120,64), // object size
  NSPAIRA(_ZTI9S19495C11),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19495C11),90, //virtual function table var
  15, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19495C11),59, //virtual table table var
  17, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names160,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19495C18  : S7856C15 , S19495C16 {
  virtual  ~S19495C18(); // _ZN9S19495C18D2Ev
  S19495C18(); // tgen
};
//SIG(-1 S19495C18) C1{ BC2{ m} BC3{ VBC2} vd}


 S19495C18 ::~S19495C18(){ note_dtor("S19495C18", this);}
S19495C18 ::S19495C18(){ note_ctor("S19495C18", this);} // tgen

static void Test_S19495C18()
{
  extern Class_Descriptor cd_S19495C18;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19495C18, buf);
    S19495C18 *dp, &lv = *(dp=new (buf) S19495C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19495C18)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19495C18)");
    /*is_ambiguous_... S19495C18::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), 0, "S19495C18");
    check_base_class_offset(lv, (S7856C15*)(S19495C16*), ABISELECT(8,4), "S19495C18");
    check_base_class_offset(lv, (S19495C16*), 0, "S19495C18");
    test_class_info(&lv, &cd_S19495C18);
    dp->~S19495C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19495C18(Test_S19495C18, "S19495C18", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN9S19495C18C1Ev();
extern void _ZN9S19495C18D2Ev();
Name_Map name_map_S19495C18[] = {
  NSPAIR(_ZN9S19495C18C1Ev),
  NSPAIR(_ZN9S19495C18D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19495C16;
extern VTBL_ENTRY _ZTI9S19495C16[];
extern  VTBL_ENTRY _ZTV9S19495C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C16[];
static Base_Class bases_S19495C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19495C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19495C18[];
extern void _ZN9S19495C18D1Ev();
extern void _ZN9S19495C18D0Ev();
static  VTBL_ENTRY vtc_S19495C18[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C18[0]),
  (VTBL_ENTRY)&_ZN9S19495C18D1Ev,
  (VTBL_ENTRY)&_ZN9S19495C18D0Ev,
};
extern VTBL_ENTRY _ZTV9S19495C18[];
static  VTBL_ENTRY _tg__ZTV9S19495C16__9S19495C18[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C16[0]),
};
static  VTT_ENTRY vtt_S19495C18[] = {
  {&(_ZTV9S19495C18[3]),  3,5},
  {&(_tg__ZTV9S19495C16__9S19495C18[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19495C18[];
extern  VTBL_ENTRY _ZTV9S19495C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C18[];
Class_Descriptor cd_S19495C18 = {  "S19495C18", // class name
  bases_S19495C18, 3,
  &(vtc_S19495C18[0]), // expected_vtbl_contents
  &(vtt_S19495C18[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI9S19495C18),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19495C18),5, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19495C18),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19495C2  : S19495C3 , virtual S19495C10 , virtual S19495C11 , S19495C18 , S77C13_nt {
  int s19495c2f0;
  ~S19495C2(); // tgen
  S19495C2(); // tgen
};
//SIG(-1 S19495C2) C1{ BC2{ VBC3{ m} VBC4{ m} VBC5{ BC3 VBC6{ VBC3 BC4 VBC7{ m}} VBC4} BC7 BC8{ BC4 VBC3 VBC7 BC6 VBC5 vd} vd} VBC9{ BC7 BC4 BC6 Fi} VBC10{ VBC2 VBC11{ VBC12{ VBC2 VBC9 VBC8 vd Fi[2]} VBC13{ m} VBC14{ VBC6 VBC15{ VBC4} VBC9 BC7 VBC2 vd Fi} BC16{ VBC8 BC9 BC5 BC7 vd} vd} vd} BC17{ BC4 BC15 vd} BC18{ m} Fi}


S19495C2 ::~S19495C2(){ note_dtor("S19495C2", this);} // tgen
S19495C2 ::S19495C2(){ note_ctor("S19495C2", this);} // tgen

static void Test_S19495C2()
{
  extern Class_Descriptor cd_S19495C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(20,22)];
    init_test(&cd_S19495C2, buf);
    S19495C2 *dp, &lv = *(dp=new (buf) S19495C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(152,84), "sizeof(S19495C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19495C2)");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C3*), 0, "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C7*), 0, "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C9*)(S19495C3*), 0, "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C7*)(S19495C9*)(S19495C3*), 0, "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C7*)(S19495C10*), 0, "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C3*), 0, "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C9*)(S19495C3*), 0, "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C7*)(S19495C9*)(S19495C3*), 0, "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C9 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C9*), 0, "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C9 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C7*)(S19495C9*), 0, "S19495C2");
    check_base_class_offset(lv, (S7856C24*)(S19495C7*)(S19495C10*)(S19495C17*)(S19495C12*), 0, "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C3*), ABISELECT(28,16), "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C6 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C6*), ABISELECT(28,16), "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C3*), ABISELECT(28,16), "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C16 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C16*), ABISELECT(28,16), "S19495C2");
    /*is_ambiguous_... S19495C17::S19495C6 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C6*)(S19495C17*)(S19495C12*), ABISELECT(28,16), "S19495C2");
    check_base_class_offset(lv, (S7856C15*)(S19495C16*)(S19495C18*), ABISELECT(28,16), "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C6 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C6*), ABISELECT(48,28), "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C7*), ABISELECT(48,28), "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C7*), ABISELECT(28,16), "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C9*)(S19495C3*), ABISELECT(28,16), "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C7*)(S19495C9*)(S19495C3*), ABISELECT(28,16), "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C7*)(S19495C10*), ABISELECT(28,16), "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C9*)(S19495C3*), ABISELECT(28,16), "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C7*)(S19495C9*)(S19495C3*), ABISELECT(28,16), "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C9 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C9*), ABISELECT(28,16), "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C9 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C7*)(S19495C9*), ABISELECT(28,16), "S19495C2");
    check_base_class_offset(lv, (S7856C12*)(S19495C7*)(S19495C10*)(S19495C17*)(S19495C12*), ABISELECT(28,16), "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C6 */ AMB_check_base_class_offset(lv, (S19495C7*)(S19495C6*), ABISELECT(48,28), "S19495C2");
    /*is_ambiguous_... S19495C15::S19495C7 */ AMB_check_base_class_offset(lv, (S19495C7*)(S19495C15*), ABISELECT(48,28), "S19495C2");
    /*is_ambiguous_... S19495C17::S19495C6 */ AMB_check_base_class_offset(lv, (S19495C7*)(S19495C6*)(S19495C17*)(S19495C12*), ABISELECT(48,28), "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S19495C6*)(S19495C3*), ABISELECT(48,28), "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S19495C6*)(S19495C9*)(S19495C3*), ABISELECT(48,28), "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S19495C6*)(S19495C3*), ABISELECT(48,28), "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S19495C6*)(S19495C9*)(S19495C3*), ABISELECT(48,28), "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C9 */ AMB_check_base_class_offset(lv, (S19495C6*)(S19495C9*), ABISELECT(48,28), "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C3*), 0, "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C9*)(S19495C3*), ABISELECT(8,4), "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C7*)(S19495C9*)(S19495C3*), 0, "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S19495C7*)(S19495C9*)(S19495C3*), 0, "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S19495C9*)(S19495C3*), 0, "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S19495C3*), 0, "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C10*), ABISELECT(32,20), "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C10*), ABISELECT(40,24), "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C7*)(S19495C10*), ABISELECT(32,20), "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C10 */ AMB_check_base_class_offset(lv, (S19495C7*)(S19495C10*), ABISELECT(32,20), "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C10 */ AMB_check_base_class_offset(lv, (S19495C10*), ABISELECT(32,20), "S19495C2");
    check_base_class_offset(lv, (S19495C10*)(S19495C13*), ABISELECT(32,20), "S19495C2");
    check_base_class_offset(lv, (S19495C10*)(S19495C15*), ABISELECT(32,20), "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C3*), ABISELECT(56,32), "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C9*)(S19495C3*), ABISELECT(64,36), "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C7*)(S19495C9*)(S19495C3*), ABISELECT(56,32), "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S19495C7*)(S19495C9*)(S19495C3*), ABISELECT(56,32), "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S19495C9*)(S19495C3*), ABISELECT(56,32), "S19495C2");
    check_base_class_offset(lv, (S19495C3*)(S19495C11*), ABISELECT(56,32), "S19495C2");
    check_base_class_offset(lv, (S19495C3*)(S19495C13*), ABISELECT(56,32), "S19495C2");
    check_base_class_offset(lv, (S19495C3*)(S19495C15*), ABISELECT(56,32), "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C9*), ABISELECT(128,72), "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C7*)(S19495C9*), ABISELECT(120,68), "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C9 */ AMB_check_base_class_offset(lv, (S19495C7*)(S19495C9*), ABISELECT(120,68), "S19495C2");
    /*is_ambiguous_... S19495C13::S19495C9 */ AMB_check_base_class_offset(lv, (S19495C9*)(S19495C13*), ABISELECT(120,68), "S19495C2");
    check_base_class_offset(lv, (S19495C9*)(S19495C17*)(S19495C12*), ABISELECT(120,68), "S19495C2");
    check_base_class_offset(lv, (S19495C13*)(S19495C12*), ABISELECT(104,56), "S19495C2");
    check_base_class_offset(lv, (S7856C9_nt*)(S19495C12*), 0, "S19495C2");
    check_base_class_offset(lv, (S19495C16*)(S19495C15*), ABISELECT(136,76), "S19495C2");
    /*is_ambiguous_... S19495C15::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C15*), ABISELECT(136,76), "S19495C2");
    check_base_class_offset(lv, (S19495C15*)(S19495C12*), ABISELECT(136,76), "S19495C2");
    /*is_ambiguous_... S19495C10::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C10*)(S19495C17*)(S19495C12*), ABISELECT(72,40), "S19495C2");
    /*is_ambiguous_... S19495C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C10*)(S19495C17*)(S19495C12*), ABISELECT(80,44), "S19495C2");
    check_base_class_offset(lv, (S7856C15*)(S19495C7*)(S19495C10*)(S19495C17*)(S19495C12*), ABISELECT(72,40), "S19495C2");
    check_base_class_offset(lv, (S19495C7*)(S19495C10*)(S19495C17*)(S19495C12*), ABISELECT(72,40), "S19495C2");
    check_base_class_offset(lv, (S19495C10*)(S19495C17*)(S19495C12*), ABISELECT(72,40), "S19495C2");
    /*is_ambiguous_... S19495C17::S19495C6 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C6*)(S19495C17*)(S19495C12*), ABISELECT(88,48), "S19495C2");
    /*is_ambiguous_... S19495C17::S19495C6 */ AMB_check_base_class_offset(lv, (S19495C6*)(S19495C17*)(S19495C12*), ABISELECT(88,48), "S19495C2");
    /*is_ambiguous_... S19495C17::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C17*)(S19495C12*), ABISELECT(96,52), "S19495C2");
    check_base_class_offset(lv, (S19495C17*)(S19495C12*), ABISELECT(72,40), "S19495C2");
    check_base_class_offset(lv, (S19495C12*)(S19495C11*), ABISELECT(72,40), "S19495C2");
    check_base_class_offset(lv, (S19495C11*), ABISELECT(48,28), "S19495C2");
    /*is_ambiguous_... S19495C18::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C18*), ABISELECT(16,8), "S19495C2");
    check_base_class_offset(lv, (S19495C16*)(S19495C18*), ABISELECT(16,8), "S19495C2");
    check_base_class_offset(lv, (S19495C18*), ABISELECT(16,8), "S19495C2");
    check_base_class_offset(lv, (S77C13_nt*), 0, "S19495C2");
    check_field_offset(lv, s19495c2f0, ABISELECT(24,12), "S19495C2.s19495c2f0");
    test_class_info(&lv, &cd_S19495C2);
    dp->~S19495C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19495C2(Test_S19495C2, "S19495C2", ABISELECT(152,84));

#else // __cplusplus

extern void _ZN8S19495C2C1Ev();
extern void _ZN8S19495C2D1Ev();
Name_Map name_map_S19495C2[] = {
  NSPAIR(_ZN8S19495C2C1Ev),
  NSPAIR(_ZN8S19495C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19495C7;
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
extern Class_Descriptor cd_S19495C6;
extern VTBL_ENTRY _ZTI8S19495C6[];
extern  VTBL_ENTRY _ZTV8S19495C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C6[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19495C7;
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
extern Class_Descriptor cd_S19495C9;
extern VTBL_ENTRY _ZTI8S19495C9[];
extern  VTBL_ENTRY _ZTV8S19495C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C9[];
extern Class_Descriptor cd_S19495C3;
extern VTBL_ENTRY _ZTI8S19495C3[];
extern  VTBL_ENTRY _ZTV8S19495C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C3[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19495C7;
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
extern Class_Descriptor cd_S19495C10;
extern VTBL_ENTRY _ZTI9S19495C10[];
extern  VTBL_ENTRY _ZTV9S19495C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19495C7;
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
extern Class_Descriptor cd_S19495C9;
extern VTBL_ENTRY _ZTI8S19495C9[];
extern  VTBL_ENTRY _ZTV8S19495C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C9[];
extern Class_Descriptor cd_S19495C3;
extern VTBL_ENTRY _ZTI8S19495C3[];
extern  VTBL_ENTRY _ZTV8S19495C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C3[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19495C7;
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
extern Class_Descriptor cd_S19495C9;
extern VTBL_ENTRY _ZTI8S19495C9[];
extern  VTBL_ENTRY _ZTV8S19495C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C9[];
extern Class_Descriptor cd_S19495C13;
extern VTBL_ENTRY _ZTI9S19495C13[];
extern  VTBL_ENTRY _ZTV9S19495C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C13[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S19495C16;
extern VTBL_ENTRY _ZTI9S19495C16[];
extern  VTBL_ENTRY _ZTV9S19495C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C16[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19495C15;
extern VTBL_ENTRY _ZTI9S19495C15[];
extern  VTBL_ENTRY _ZTV9S19495C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19495C7;
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
extern Class_Descriptor cd_S19495C10;
extern VTBL_ENTRY _ZTI9S19495C10[];
extern  VTBL_ENTRY _ZTV9S19495C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C10[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19495C6;
extern VTBL_ENTRY _ZTI8S19495C6[];
extern  VTBL_ENTRY _ZTV8S19495C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C6[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19495C17;
extern VTBL_ENTRY _ZTI9S19495C17[];
extern  VTBL_ENTRY _ZTV9S19495C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C17[];
extern Class_Descriptor cd_S19495C12;
extern VTBL_ENTRY _ZTI9S19495C12[];
extern  VTBL_ENTRY _ZTV9S19495C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C12[];
extern Class_Descriptor cd_S19495C11;
extern VTBL_ENTRY _ZTI9S19495C11[];
extern  VTBL_ENTRY _ZTV9S19495C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C11[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19495C16;
extern VTBL_ENTRY _ZTI9S19495C16[];
extern  VTBL_ENTRY _ZTV9S19495C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C16[];
extern Class_Descriptor cd_S19495C18;
extern VTBL_ENTRY _ZTI9S19495C18[];
extern  VTBL_ENTRY _ZTV9S19495C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C18[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
static Base_Class bases_S19495C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(28,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(28,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19495C7,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19495C6,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19495C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19495C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19495C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19495C7,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19495C10,    ABISELECT(32,20), //bcp->offset
    23, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19495C7,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19495C9,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19495C3,    ABISELECT(56,32), //bcp->offset
    45, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(128,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19495C7,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19495C9,    ABISELECT(120,68), //bcp->offset
    91, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S19495C13,    ABISELECT(104,56), //bcp->offset
    78, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S19495C16,    ABISELECT(136,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(136,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S19495C15,    ABISELECT(136,76), //bcp->offset
    101, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S19495C7,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S19495C10,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S19495C6,    ABISELECT(88,48), //bcp->offset
    72, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S19495C17,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S19495C12,    ABISELECT(72,40), //bcp->offset
    55, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    43, //immediately_derived
  0, 1},
  {&cd_S19495C11,    ABISELECT(48,28), //bcp->offset
    27, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S19495C16,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S19495C18,    ABISELECT(16,8), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19495C2[];
extern void _ZN8S19495C2D1Ev();
extern void _ZN8S19495C2D0Ev();
extern void ABISELECT(_ZThn16_N8S19495C2D1Ev,_ZThn8_N8S19495C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S19495C2D0Ev,_ZThn8_N8S19495C2D0Ev)();
extern void ABISELECT(_ZTv0_n128_N8S19495C2D1Ev,_ZTv0_n64_N8S19495C2D1Ev)();
extern void ABISELECT(_ZThn48_N8S19495C2D1Ev,_ZThn28_N8S19495C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S19495C2D0Ev,_ZTv0_n64_N8S19495C2D0Ev)();
extern void ABISELECT(_ZThn48_N8S19495C2D0Ev,_ZThn28_N8S19495C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19495C2D1Ev,_ZTv0_n32_N8S19495C2D1Ev)();
extern void ABISELECT(_ZThn56_N8S19495C2D1Ev,_ZThn32_N8S19495C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19495C2D0Ev,_ZTv0_n32_N8S19495C2D0Ev)();
extern void ABISELECT(_ZThn56_N8S19495C2D0Ev,_ZThn32_N8S19495C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S19495C2D1Ev,_ZTv0_n60_N8S19495C2D1Ev)();
extern void ABISELECT(_ZThn72_N8S19495C2D1Ev,_ZThn40_N8S19495C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S19495C2D0Ev,_ZTv0_n60_N8S19495C2D0Ev)();
extern void ABISELECT(_ZThn72_N8S19495C2D0Ev,_ZThn40_N8S19495C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19495C2D1Ev,_ZTv0_n44_N8S19495C2D1Ev)();
extern void ABISELECT(_ZThn104_N8S19495C2D1Ev,_ZThn56_N8S19495C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19495C2D0Ev,_ZTv0_n44_N8S19495C2D0Ev)();
extern void ABISELECT(_ZThn104_N8S19495C2D0Ev,_ZThn56_N8S19495C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19495C2D1Ev,_ZTv0_n32_N8S19495C2D1Ev)();
extern void ABISELECT(_ZThn120_N8S19495C2D1Ev,_ZThn68_N8S19495C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19495C2D0Ev,_ZTv0_n32_N8S19495C2D0Ev)();
extern void ABISELECT(_ZThn120_N8S19495C2D0Ev,_ZThn68_N8S19495C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19495C2D1Ev,_ZTv0_n44_N8S19495C2D1Ev)();
extern void ABISELECT(_ZThn136_N8S19495C2D1Ev,_ZThn76_N8S19495C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19495C2D0Ev,_ZTv0_n44_N8S19495C2D0Ev)();
extern void ABISELECT(_ZThn136_N8S19495C2D0Ev,_ZThn76_N8S19495C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19495C2[] = {
  ABISELECT(136,76),
  ABISELECT(136,76),
  0,
  ABISELECT(120,68),
  ABISELECT(104,56),
  ABISELECT(72,40),
  ABISELECT(56,32),
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(28,16),
  ABISELECT(48,28),
  ABISELECT(48,28),
  ABISELECT(28,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C2[0]),
  (VTBL_ENTRY)&_ZN8S19495C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19495C2D0Ev,
  ABISELECT(12,8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19495C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19495C2D1Ev,_ZThn8_N8S19495C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19495C2D0Ev,_ZThn8_N8S19495C2D0Ev),
  -4,
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19495C2[0]),
  ABISELECT(-48,-28),
  ABISELECT(88,48),
  ABISELECT(88,48),
  ABISELECT(-48,-28),
  ABISELECT(72,40),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  ABISELECT(24,12),
  0,
  ABISELECT(8,4),
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19495C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S19495C2D1Ev,_ZTv0_n64_N8S19495C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S19495C2D0Ev,_ZTv0_n64_N8S19495C2D0Ev),
  ABISELECT(-56,-32),
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S19495C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19495C2D1Ev,_ZTv0_n32_N8S19495C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19495C2D0Ev,_ZTv0_n32_N8S19495C2D0Ev),
  ABISELECT(-72,-40),
  ABISELECT(64,36),
  ABISELECT(64,36),
  ABISELECT(-72,-40),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(-44,-24),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(48,28),
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S19495C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S19495C2D1Ev,_ZTv0_n60_N8S19495C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S19495C2D0Ev,_ZTv0_n60_N8S19495C2D0Ev),
  ABISELECT(-60,-32),
  ABISELECT(-40,-20),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S19495C2[0]),
  ABISELECT(-104,-56),
  ABISELECT(16,12),
  ABISELECT(-72,-36),
  ABISELECT(-56,-28),
  ABISELECT(-48,-24),
  ABISELECT(-76,-40),
  ABISELECT(-56,-28),
  ABISELECT(-76,-40),
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S19495C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19495C2D1Ev,_ZTv0_n44_N8S19495C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19495C2D0Ev,_ZTv0_n44_N8S19495C2D0Ev),
  ABISELECT(-120,-68),
  ABISELECT(-92,-52),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI8S19495C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19495C2D1Ev,_ZTv0_n32_N8S19495C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19495C2D0Ev,_ZTv0_n32_N8S19495C2D0Ev),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-80,-44),
  ABISELECT(-104,-56),
  0,
  ABISELECT(-108,-60),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-108,-60),
  ABISELECT(-136,-76),
  (VTBL_ENTRY)&(_ZTI8S19495C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19495C2D1Ev,_ZTv0_n44_N8S19495C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19495C2D0Ev,_ZTv0_n44_N8S19495C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S19495C2[];
extern void _ZN8S19495C3D1Ev();
extern void _ZN8S19495C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19495C3__A__8S19495C2[] = {
  ABISELECT(28,16),
  ABISELECT(48,28),
  ABISELECT(48,28),
  ABISELECT(28,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C3[0]),
  (VTBL_ENTRY)&_ZN8S19495C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19495C3D0Ev,
};
extern void _ZN8S19495C9D1Ev();
extern void _ZN8S19495C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19495C98S19495C3__8S19495C2[] = {
  ABISELECT(28,16),
  ABISELECT(48,28),
  ABISELECT(48,28),
  ABISELECT(28,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C9[0]),
  (VTBL_ENTRY)&_ZN8S19495C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19495C9D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19495C78S19495C98S19495C3__A1__8S19495C2[] = {
  ABISELECT(28,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__8S19495C98S19495C3__8S19495C2[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19495C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__8S19495C3__A__8S19495C2[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19495C3[0]),
};
extern void _ZN9S19495C18D1Ev();
extern void _ZN9S19495C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19495C18__8S19495C2[] = {
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C18[0]),
  (VTBL_ENTRY)&_ZN9S19495C18D1Ev,
  (VTBL_ENTRY)&_ZN9S19495C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19495C169S19495C18__A1__8S19495C2[] = {
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__8S19495C2[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C7__8S19495C2[] = {
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19495C10__8S19495C2[] = {
  -4,
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C79S19495C10__A2__8S19495C2[] = {
  -4,
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
extern void _ZN9S19495C11D1Ev();
extern void _ZN9S19495C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19495C11__8S19495C2[] = {
  ABISELECT(88,48),
  ABISELECT(88,48),
  ABISELECT(-48,-28),
  ABISELECT(72,40),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  ABISELECT(24,12),
  0,
  ABISELECT(8,4),
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C11[0]),
  (VTBL_ENTRY)&_ZN9S19495C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19495C11D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N9S19495C11D1Ev,_ZTv0_n32_N9S19495C11D1Ev)();
extern void ABISELECT(_ZThn8_N9S19495C11D1Ev,_ZThn4_N9S19495C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19495C11D0Ev,_ZTv0_n32_N9S19495C11D0Ev)();
extern void ABISELECT(_ZThn8_N9S19495C11D0Ev,_ZThn4_N9S19495C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19495C3__9S19495C11__8S19495C2[] = {
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19495C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C11D1Ev,_ZTv0_n32_N9S19495C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C11D0Ev,_ZTv0_n32_N9S19495C11D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N9S19495C11D1Ev,_ZTv0_n60_N9S19495C11D1Ev)();
extern void ABISELECT(_ZThn24_N9S19495C11D1Ev,_ZThn12_N9S19495C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N9S19495C11D0Ev,_ZTv0_n60_N9S19495C11D0Ev)();
extern void ABISELECT(_ZThn24_N9S19495C11D0Ev,_ZThn12_N9S19495C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19495C12__9S19495C11__8S19495C2[] = {
  ABISELECT(-24,-12),
  ABISELECT(64,36),
  ABISELECT(64,36),
  ABISELECT(-72,-40),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(-44,-24),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(48,28),
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19495C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19495C11D1Ev,_ZTv0_n60_N9S19495C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19495C11D0Ev,_ZTv0_n60_N9S19495C11D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N9S19495C11D1Ev,_ZTv0_n44_N9S19495C11D1Ev)();
extern void ABISELECT(_ZThn56_N9S19495C11D1Ev,_ZThn28_N9S19495C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19495C11D0Ev,_ZTv0_n44_N9S19495C11D0Ev)();
extern void ABISELECT(_ZThn56_N9S19495C11D0Ev,_ZThn28_N9S19495C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19495C13__9S19495C11__8S19495C2[] = {
  ABISELECT(-56,-28),
  ABISELECT(16,12),
  ABISELECT(-72,-36),
  ABISELECT(-56,-28),
  ABISELECT(-48,-24),
  ABISELECT(-76,-40),
  ABISELECT(-56,-28),
  ABISELECT(-76,-40),
  ABISELECT(-104,-56),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S19495C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19495C11D1Ev,_ZTv0_n44_N9S19495C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19495C11D0Ev,_ZTv0_n44_N9S19495C11D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19495C10__9S19495C11__8S19495C2[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S19495C11[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19495C11D1Ev,_ZTv0_n32_N9S19495C11D1Ev)();
extern void ABISELECT(_ZThn72_N9S19495C11D1Ev,_ZThn40_N9S19495C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19495C11D0Ev,_ZTv0_n32_N9S19495C11D0Ev)();
extern void ABISELECT(_ZThn72_N9S19495C11D0Ev,_ZThn40_N9S19495C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19495C9__A1__9S19495C11__8S19495C2[] = {
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S19495C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C11D1Ev,_ZTv0_n32_N9S19495C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C11D0Ev,_ZTv0_n32_N9S19495C11D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N9S19495C11D1Ev,_ZTv0_n44_N9S19495C11D1Ev)();
extern void ABISELECT(_ZThn88_N9S19495C11D1Ev,_ZThn48_N9S19495C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19495C11D0Ev,_ZTv0_n44_N9S19495C11D0Ev)();
extern void ABISELECT(_ZThn88_N9S19495C11D0Ev,_ZThn48_N9S19495C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19495C15__9S19495C11__8S19495C2[] = {
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-80,-44),
  ABISELECT(-104,-56),
  0,
  ABISELECT(-108,-60),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-108,-60),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI9S19495C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19495C11D1Ev,_ZTv0_n44_N9S19495C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19495C11D0Ev,_ZTv0_n44_N9S19495C11D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19495C69S19495C179S19495C12__A1__9S19495C11__8S19495C2[] = {
  ABISELECT(-60,-32),
  ABISELECT(-40,-20),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19495C11[0]),
};
extern void _ZN8S19495C3D1Ev();
extern void _ZN8S19495C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19495C3__A1__8S19495C2[] = {
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C3[0]),
  (VTBL_ENTRY)&_ZN8S19495C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19495C3D0Ev,
};
extern void _ZN8S19495C9D1Ev();
extern void _ZN8S19495C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19495C98S19495C3__A1__8S19495C2[] = {
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C9[0]),
  (VTBL_ENTRY)&_ZN8S19495C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19495C9D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19495C78S19495C98S19495C3__A3__8S19495C2[] = {
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__8S19495C98S19495C3__A1__8S19495C2[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S19495C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__8S19495C3__A1__8S19495C2[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S19495C3[0]),
};
extern void _ZN9S19495C12D1Ev();
extern void _ZN9S19495C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19495C12__8S19495C2[] = {
  ABISELECT(64,36),
  ABISELECT(64,36),
  ABISELECT(-72,-40),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(-44,-24),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(48,28),
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C12[0]),
  (VTBL_ENTRY)&_ZN9S19495C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19495C12D0Ev,
};
extern void _ZN9S19495C17D1Ev();
extern void _ZN9S19495C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19495C179S19495C12__8S19495C2[] = {
  ABISELECT(-44,-24),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(48,28),
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C17[0]),
  (VTBL_ENTRY)&_ZN9S19495C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19495C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19495C109S19495C179S19495C12__A1__8S19495C2[] = {
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C79S19495C109S19495C179S19495C12__A5__8S19495C2[] = {
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C69S19495C179S19495C12__A1__8S19495C2[] = {
  ABISELECT(-60,-32),
  ABISELECT(-40,-20),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C7__8S19495C69S19495C179S19495C12__A1__8S19495C2[] = {
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S19495C6[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19495C17D1Ev,_ZTv0_n32_N9S19495C17D1Ev)();
extern void ABISELECT(_ZThn48_N9S19495C17D1Ev,_ZThn28_N9S19495C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19495C17D0Ev,_ZTv0_n32_N9S19495C17D0Ev)();
extern void ABISELECT(_ZThn48_N9S19495C17D0Ev,_ZThn28_N9S19495C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19495C9__9S19495C179S19495C12__8S19495C2[] = {
  ABISELECT(-48,-28),
  ABISELECT(-92,-52),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19495C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C17D1Ev,_ZTv0_n32_N9S19495C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C17D0Ev,_ZTv0_n32_N9S19495C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__9S19495C179S19495C12__8S19495C2[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S19495C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__A__9S19495C179S19495C12__8S19495C2[] = {
  ABISELECT(-60,-32),
  ABISELECT(-40,-20),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19495C17[0]),
};
extern void ABISELECT(_ZTv0_n88_N9S19495C12D1Ev,_ZTv0_n44_N9S19495C12D1Ev)();
extern void ABISELECT(_ZThn32_N9S19495C12D1Ev,_ZThn16_N9S19495C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19495C12D0Ev,_ZTv0_n44_N9S19495C12D0Ev)();
extern void ABISELECT(_ZThn32_N9S19495C12D0Ev,_ZThn16_N9S19495C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19495C13__9S19495C12__8S19495C2[] = {
  ABISELECT(-32,-16),
  ABISELECT(16,12),
  ABISELECT(-72,-36),
  ABISELECT(-56,-28),
  ABISELECT(-48,-24),
  ABISELECT(-76,-40),
  ABISELECT(-56,-28),
  ABISELECT(-76,-40),
  ABISELECT(-104,-56),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19495C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19495C12D1Ev,_ZTv0_n44_N9S19495C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19495C12D0Ev,_ZTv0_n44_N9S19495C12D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N9S19495C12D1Ev,_ZTv0_n32_N9S19495C12D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19495C12D0Ev,_ZTv0_n32_N9S19495C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19495C3__9S19495C12__8S19495C2[] = {
  ABISELECT(16,8),
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S19495C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C12D1Ev,_ZTv0_n32_N9S19495C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C12D0Ev,_ZTv0_n32_N9S19495C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__9S19495C12__8S19495C2[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S19495C12[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19495C10__9S19495C12__8S19495C2[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI9S19495C12[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19495C12D1Ev,_ZTv0_n32_N9S19495C12D1Ev)();
extern void ABISELECT(_ZThn48_N9S19495C12D1Ev,_ZThn28_N9S19495C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19495C12D0Ev,_ZTv0_n32_N9S19495C12D0Ev)();
extern void ABISELECT(_ZThn48_N9S19495C12D0Ev,_ZThn28_N9S19495C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19495C9__A1__9S19495C12__8S19495C2[] = {
  ABISELECT(-48,-28),
  ABISELECT(-92,-52),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19495C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C12D1Ev,_ZTv0_n32_N9S19495C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C12D0Ev,_ZTv0_n32_N9S19495C12D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N9S19495C12D1Ev,_ZTv0_n44_N9S19495C12D1Ev)();
extern void ABISELECT(_ZThn64_N9S19495C12D1Ev,_ZThn36_N9S19495C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19495C12D0Ev,_ZTv0_n44_N9S19495C12D0Ev)();
extern void ABISELECT(_ZThn64_N9S19495C12D0Ev,_ZThn36_N9S19495C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19495C15__9S19495C12__8S19495C2[] = {
  ABISELECT(-64,-36),
  ABISELECT(-88,-48),
  ABISELECT(-80,-44),
  ABISELECT(-104,-56),
  0,
  ABISELECT(-108,-60),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-108,-60),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S19495C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19495C12D1Ev,_ZTv0_n44_N9S19495C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19495C12D0Ev,_ZTv0_n44_N9S19495C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19495C69S19495C17__A1__9S19495C12__8S19495C2[] = {
  ABISELECT(-60,-32),
  ABISELECT(-40,-20),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19495C12[0]),
};
extern void _ZN9S19495C13D1Ev();
extern void _ZN9S19495C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19495C13__8S19495C2[] = {
  ABISELECT(16,12),
  ABISELECT(-72,-36),
  ABISELECT(-56,-28),
  ABISELECT(-48,-24),
  ABISELECT(-76,-40),
  ABISELECT(-56,-28),
  ABISELECT(-76,-40),
  ABISELECT(-104,-56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C13[0]),
  (VTBL_ENTRY)&_ZN9S19495C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19495C13D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N9S19495C13D1Ev,_ZTv0_n32_N9S19495C13D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19495C13D0Ev,_ZTv0_n32_N9S19495C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19495C3__9S19495C13__8S19495C2[] = {
  ABISELECT(48,24),
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI9S19495C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C13D1Ev,_ZTv0_n32_N9S19495C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C13D0Ev,_ZTv0_n32_N9S19495C13D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__9S19495C13__8S19495C2[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI9S19495C13[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19495C10__9S19495C13__8S19495C2[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI9S19495C13[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19495C13D1Ev,_ZTv0_n32_N9S19495C13D1Ev)();
extern void ABISELECT(_ZThn16_N9S19495C13D1Ev,_ZThn12_N9S19495C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19495C13D0Ev,_ZTv0_n32_N9S19495C13D0Ev)();
extern void ABISELECT(_ZThn16_N9S19495C13D0Ev,_ZThn12_N9S19495C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19495C9__A1__9S19495C13__8S19495C2[] = {
  ABISELECT(-16,-12),
  ABISELECT(-92,-52),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19495C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C13D1Ev,_ZTv0_n32_N9S19495C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C13D0Ev,_ZTv0_n32_N9S19495C13D0Ev),
};
extern void _ZN8S19495C9D1Ev();
extern void _ZN8S19495C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19495C9__A2__8S19495C2[] = {
  ABISELECT(-92,-52),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C9[0]),
  (VTBL_ENTRY)&_ZN8S19495C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19495C9D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19495C78S19495C9__A4__8S19495C2[] = {
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__8S19495C9__A2__8S19495C2[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(72,40),
  (VTBL_ENTRY)&(_ZTI8S19495C9[0]),
};
extern void _ZN9S19495C15D1Ev();
extern void _ZN9S19495C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19495C15__8S19495C2[] = {
  ABISELECT(-88,-48),
  ABISELECT(-80,-44),
  ABISELECT(-104,-56),
  0,
  ABISELECT(-108,-60),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-108,-60),
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C15[0]),
  (VTBL_ENTRY)&_ZN9S19495C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19495C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__9S19495C15__8S19495C2[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI9S19495C15[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19495C10__9S19495C15__8S19495C2[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(104,56),
  (VTBL_ENTRY)&(_ZTI9S19495C15[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19495C15D1Ev,_ZTv0_n32_N9S19495C15D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19495C15D0Ev,_ZTv0_n32_N9S19495C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19495C3__9S19495C15__8S19495C2[] = {
  ABISELECT(80,44),
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI9S19495C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C15D1Ev,_ZTv0_n32_N9S19495C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C15D0Ev,_ZTv0_n32_N9S19495C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19495C16__8S19495C2[] = {
  ABISELECT(-108,-60),
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C16[0]),
};
static  VTT_ENTRY vtt_S19495C2[] = {
  {&(_ZTV8S19495C2[16]),  16,114},
  {&(_tg__ZTV8S19495C3__A__8S19495C2[7]),  7,9},
  {&(_tg__ZTV8S19495C98S19495C3__8S19495C2[7]),  7,9},
  {&(_tg__ZTV8S19495C78S19495C98S19495C3__A1__8S19495C2[4]),  4,4},
  {&(_tg__ZTV8S19495C6__8S19495C98S19495C3__8S19495C2[6]),  6,6},
  {&(_tg__ZTV8S19495C6__8S19495C98S19495C3__8S19495C2[6]),  6,6},
  {&(_tg__ZTV8S19495C6__8S19495C3__A__8S19495C2[6]),  6,6},
  {&(_tg__ZTV8S19495C6__8S19495C3__A__8S19495C2[6]),  6,6},
  {&(_tg__ZTV9S19495C18__8S19495C2[3]),  3,5},
  {&(_tg__ZTV9S19495C169S19495C18__A1__8S19495C2[3]),  3,3},
  {&(_ZTV8S19495C2[43]),  43,114},
  {&(_ZTV8S19495C2[43]),  43,114},
  {&(_ZTV8S19495C2[27]),  27,114},
  {&(_ZTV8S19495C2[43]),  43,114},
  {&(_ZTV8S19495C2[53]),  53,114},
  {&(_ZTV8S19495C2[70]),  70,114},
  {&(_ZTV8S19495C2[89]),  89,114},
  {&(_ZTV8S19495C2[99]),  99,114},
  {&(_ZTV8S19495C2[112]),  112,114},
  {&(_ZTV8S19495C2[112]),  112,114},
  {&(_ZTV8S19495C2[78]),  78,114},
  {&(_ZTV8S19495C2[21]),  21,114},
  {&(_tg__ZTV8S19495C6__8S19495C2[6]),  6,6},
  {&(_tg__ZTV8S19495C6__8S19495C2[6]),  6,6},
  {&(_tg__ZTV8S19495C7__8S19495C2[4]),  4,4},
  {&(_tg__ZTV9S19495C10__8S19495C2[4]),  4,4},
  {&(_tg__ZTV8S19495C79S19495C10__A2__8S19495C2[4]),  4,4},
  {&(_tg__ZTV9S19495C11__8S19495C2[15]),  15,17},
  {&(_tg__ZTV8S19495C3__9S19495C11__8S19495C2[8]),  8,10},
  {&(_tg__ZTV9S19495C11__8S19495C2[15]),  15,17},
  {&(_tg__ZTV9S19495C11__8S19495C2[15]),  15,17},
  {&(_tg__ZTV9S19495C12__9S19495C11__8S19495C2[15]),  15,17},
  {&(_tg__ZTV9S19495C13__9S19495C11__8S19495C2[11]),  11,13},
  {&(_tg__ZTV9S19495C10__9S19495C11__8S19495C2[4]),  4,4},
  {&(_tg__ZTV8S19495C9__A1__9S19495C11__8S19495C2[8]),  8,10},
  {&(_tg__ZTV9S19495C15__9S19495C11__8S19495C2[11]),  11,13},
  {&(_tg__ZTV9S19495C15__9S19495C11__8S19495C2[11]),  11,13},
  {&(_tg__ZTV8S19495C69S19495C179S19495C12__A1__9S19495C11__8S19495C2[6]),  6,6},
  {&(_tg__ZTV8S19495C3__A1__8S19495C2[7]),  7,9},
  {&(_tg__ZTV8S19495C98S19495C3__A1__8S19495C2[7]),  7,9},
  {&(_tg__ZTV8S19495C78S19495C98S19495C3__A3__8S19495C2[4]),  4,4},
  {&(_tg__ZTV8S19495C6__8S19495C98S19495C3__A1__8S19495C2[6]),  6,6},
  {&(_tg__ZTV8S19495C6__8S19495C98S19495C3__A1__8S19495C2[6]),  6,6},
  {&(_tg__ZTV8S19495C6__8S19495C3__A1__8S19495C2[6]),  6,6},
  {&(_tg__ZTV8S19495C6__8S19495C3__A1__8S19495C2[6]),  6,6},
  {&(_tg__ZTV9S19495C12__8S19495C2[14]),  14,16},
  {&(_tg__ZTV9S19495C179S19495C12__8S19495C2[8]),  8,10},
  {&(_tg__ZTV9S19495C109S19495C179S19495C12__A1__8S19495C2[4]),  4,4},
  {&(_tg__ZTV8S19495C79S19495C109S19495C179S19495C12__A5__8S19495C2[4]),  4,4},
  {&(_tg__ZTV8S19495C69S19495C179S19495C12__A1__8S19495C2[6]),  6,6},
  {&(_tg__ZTV8S19495C7__8S19495C69S19495C179S19495C12__A1__8S19495C2[4]),  4,4},
  {&(_tg__ZTV8S19495C9__9S19495C179S19495C12__8S19495C2[8]),  8,10},
  {&(_tg__ZTV8S19495C6__9S19495C179S19495C12__8S19495C2[6]),  6,6},
  {&(_tg__ZTV8S19495C6__9S19495C179S19495C12__8S19495C2[6]),  6,6},
  {&(_tg__ZTV8S19495C6__A__9S19495C179S19495C12__8S19495C2[6]),  6,6},
  {&(_tg__ZTV9S19495C13__9S19495C12__8S19495C2[11]),  11,13},
  {&(_tg__ZTV8S19495C3__9S19495C12__8S19495C2[8]),  8,10},
  {&(_tg__ZTV8S19495C6__9S19495C12__8S19495C2[6]),  6,6},
  {&(_tg__ZTV8S19495C6__9S19495C12__8S19495C2[6]),  6,6},
  {&(_tg__ZTV9S19495C10__9S19495C12__8S19495C2[4]),  4,4},
  {&(_tg__ZTV8S19495C9__A1__9S19495C12__8S19495C2[8]),  8,10},
  {&(_tg__ZTV9S19495C15__9S19495C12__8S19495C2[11]),  11,13},
  {&(_tg__ZTV9S19495C15__9S19495C12__8S19495C2[11]),  11,13},
  {&(_tg__ZTV8S19495C69S19495C17__A1__9S19495C12__8S19495C2[6]),  6,6},
  {&(_tg__ZTV9S19495C13__8S19495C2[10]),  10,12},
  {&(_tg__ZTV8S19495C3__9S19495C13__8S19495C2[8]),  8,10},
  {&(_tg__ZTV8S19495C6__9S19495C13__8S19495C2[6]),  6,6},
  {&(_tg__ZTV8S19495C6__9S19495C13__8S19495C2[6]),  6,6},
  {&(_tg__ZTV9S19495C10__9S19495C13__8S19495C2[4]),  4,4},
  {&(_tg__ZTV8S19495C9__A1__9S19495C13__8S19495C2[8]),  8,10},
  {&(_tg__ZTV8S19495C9__A2__8S19495C2[7]),  7,9},
  {&(_tg__ZTV8S19495C78S19495C9__A4__8S19495C2[4]),  4,4},
  {&(_tg__ZTV8S19495C6__8S19495C9__A2__8S19495C2[6]),  6,6},
  {&(_tg__ZTV8S19495C6__8S19495C9__A2__8S19495C2[6]),  6,6},
  {&(_tg__ZTV9S19495C15__8S19495C2[10]),  10,12},
  {&(_tg__ZTV8S19495C6__9S19495C15__8S19495C2[6]),  6,6},
  {&(_tg__ZTV9S19495C15__8S19495C2[10]),  10,12},
  {&(_tg__ZTV9S19495C10__9S19495C15__8S19495C2[4]),  4,4},
  {&(_tg__ZTV8S19495C3__9S19495C15__8S19495C2[8]),  8,10},
  {&(_tg__ZTV8S19495C6__9S19495C15__8S19495C2[6]),  6,6},
  {&(_tg__ZTV9S19495C16__8S19495C2[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19495C2[];
extern  VTBL_ENTRY _ZTV8S19495C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C2[];
static VTBL_ENTRY alt_thunk_names161[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19495C13D0Ev,_ZTv0_n32_N9S19495C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19495C13D0Ev,_ZThn12_N9S19495C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19495C13D1Ev,_ZTv0_n32_N9S19495C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19495C13D1Ev,_ZThn12_N9S19495C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19495C12D0Ev,_ZTv0_n32_N9S19495C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19495C12D0Ev,_ZThn28_N9S19495C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19495C12D1Ev,_ZTv0_n32_N9S19495C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19495C12D1Ev,_ZThn28_N9S19495C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19495C12D0Ev,_ZTv0_n44_N9S19495C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19495C12D0Ev,_ZThn36_N9S19495C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19495C12D0Ev,_ZThn16_N9S19495C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19495C12D1Ev,_ZTv0_n44_N9S19495C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19495C12D1Ev,_ZThn36_N9S19495C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19495C12D1Ev,_ZThn16_N9S19495C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19495C17D0Ev,_ZTv0_n32_N9S19495C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19495C17D0Ev,_ZThn28_N9S19495C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19495C17D1Ev,_ZTv0_n32_N9S19495C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19495C17D1Ev,_ZThn28_N9S19495C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19495C11D0Ev,_ZTv0_n44_N9S19495C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19495C11D0Ev,_ZThn48_N9S19495C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19495C11D0Ev,_ZThn28_N9S19495C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19495C11D1Ev,_ZTv0_n44_N9S19495C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19495C11D1Ev,_ZThn48_N9S19495C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19495C11D1Ev,_ZThn28_N9S19495C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19495C11D0Ev,_ZTv0_n60_N9S19495C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19495C11D0Ev,_ZThn12_N9S19495C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19495C11D1Ev,_ZTv0_n60_N9S19495C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19495C11D1Ev,_ZThn12_N9S19495C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19495C11D0Ev,_ZTv0_n32_N9S19495C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19495C11D0Ev,_ZThn40_N9S19495C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19495C11D0Ev,_ZThn4_N9S19495C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19495C11D1Ev,_ZTv0_n32_N9S19495C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19495C11D1Ev,_ZThn40_N9S19495C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19495C11D1Ev,_ZThn4_N9S19495C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19495C2D0Ev,_ZTv0_n44_N8S19495C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19495C2D0Ev,_ZThn76_N8S19495C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S19495C2D0Ev,_ZThn56_N8S19495C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19495C2D1Ev,_ZTv0_n44_N8S19495C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19495C2D1Ev,_ZThn76_N8S19495C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S19495C2D1Ev,_ZThn56_N8S19495C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S19495C2D0Ev,_ZTv0_n60_N8S19495C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S19495C2D0Ev,_ZThn40_N8S19495C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S19495C2D1Ev,_ZTv0_n60_N8S19495C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S19495C2D1Ev,_ZThn40_N8S19495C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19495C2D0Ev,_ZTv0_n32_N8S19495C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S19495C2D0Ev,_ZThn68_N8S19495C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19495C2D0Ev,_ZThn32_N8S19495C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19495C2D1Ev,_ZTv0_n32_N8S19495C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S19495C2D1Ev,_ZThn68_N8S19495C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19495C2D1Ev,_ZThn32_N8S19495C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S19495C2D0Ev,_ZTv0_n64_N8S19495C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19495C2D0Ev,_ZThn28_N8S19495C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S19495C2D1Ev,_ZTv0_n64_N8S19495C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19495C2D1Ev,_ZThn28_N8S19495C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19495C2 = {  "S19495C2", // class name
  bases_S19495C2, 48,
  &(vtc_S19495C2[0]), // expected_vtbl_contents
  &(vtt_S19495C2[0]), // expected_vtt_contents
  ABISELECT(152,84), // object size
  NSPAIRA(_ZTI8S19495C2),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19495C2),114, //virtual function table var
  16, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19495C2),81, //virtual table table var
  23, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names161,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19495C1  : virtual S19495C2 {
  virtual  ~S19495C1(); // _ZN8S19495C1D2Ev
  S19495C1(); // tgen
};
//SIG(1 S19495C1) C1{ VBC2{ BC3{ VBC4{ m} VBC5{ m} VBC6{ BC4 VBC7{ VBC4 BC5 VBC8{ m}} VBC5} BC8 BC9{ BC5 VBC4 VBC8 BC7 VBC6 vd} vd} VBC10{ BC8 BC5 BC7 Fi} VBC11{ VBC3 VBC12{ VBC13{ VBC3 VBC10 VBC9 vd Fi[2]} VBC14{ m} VBC15{ VBC7 VBC16{ VBC5} VBC10 BC8 VBC3 vd Fi} BC17{ VBC9 BC10 BC6 BC8 vd} vd} vd} BC18{ BC5 BC16 vd} BC19{ m} Fi} vd}


 S19495C1 ::~S19495C1(){ note_dtor("S19495C1", this);}
S19495C1 ::S19495C1(){ note_ctor("S19495C1", this);} // tgen

static void Test_S19495C1()
{
  extern Class_Descriptor cd_S19495C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(20,22)];
    init_test(&cd_S19495C1, buf);
    S19495C1 *dp, &lv = *(dp=new (buf) S19495C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(152,84), "sizeof(S19495C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19495C1)");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C3*)(S19495C2*), ABISELECT(36,20), "S19495C1");
    /*is_ambiguous_... S19495C1::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C7*), ABISELECT(36,20), "S19495C1");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C9*)(S19495C3*)(S19495C2*), ABISELECT(36,20), "S19495C1");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C7*)(S19495C9*)(S19495C3*)(S19495C2*), ABISELECT(36,20), "S19495C1");
    /*is_ambiguous_... S19495C1::S19495C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C7*)(S19495C10*), ABISELECT(36,20), "S19495C1");
    /*is_ambiguous_... S19495C1::S19495C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C3*), ABISELECT(36,20), "S19495C1");
    /*is_ambiguous_... S19495C1::S19495C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C9*)(S19495C3*), ABISELECT(36,20), "S19495C1");
    /*is_ambiguous_... S19495C1::S19495C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C7*)(S19495C9*)(S19495C3*), ABISELECT(36,20), "S19495C1");
    /*is_ambiguous_... S19495C1::S19495C9 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C9*), ABISELECT(36,20), "S19495C1");
    /*is_ambiguous_... S19495C1::S19495C9 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C7*)(S19495C9*), ABISELECT(36,20), "S19495C1");
    check_base_class_offset(lv, (S7856C24*)(S19495C7*)(S19495C10*)(S19495C17*)(S19495C12*), ABISELECT(36,20), "S19495C1");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C3*)(S19495C2*), ABISELECT(36,20), "S19495C1");
    /*is_ambiguous_... S19495C1::S19495C6 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C6*), ABISELECT(36,20), "S19495C1");
    /*is_ambiguous_... S19495C1::S19495C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C3*), ABISELECT(36,20), "S19495C1");
    /*is_ambiguous_... S19495C1::S19495C16 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C16*), ABISELECT(36,20), "S19495C1");
    /*is_ambiguous_... S19495C17::S19495C6 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C6*)(S19495C17*)(S19495C12*), ABISELECT(36,20), "S19495C1");
    check_base_class_offset(lv, (S7856C15*)(S19495C16*)(S19495C18*)(S19495C2*), ABISELECT(36,20), "S19495C1");
    /*is_ambiguous_... S19495C1::S19495C6 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C6*), 0, "S19495C1");
    /*is_ambiguous_... S19495C1::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C7*), 0, "S19495C1");
    /*is_ambiguous_... S19495C1::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C7*), 0, "S19495C1");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C9*)(S19495C3*)(S19495C2*), 0, "S19495C1");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C7*)(S19495C9*)(S19495C3*)(S19495C2*), 0, "S19495C1");
    /*is_ambiguous_... S19495C1::S19495C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C7*)(S19495C10*), 0, "S19495C1");
    /*is_ambiguous_... S19495C1::S19495C3 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C9*)(S19495C3*), 0, "S19495C1");
    /*is_ambiguous_... S19495C1::S19495C3 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C7*)(S19495C9*)(S19495C3*), 0, "S19495C1");
    /*is_ambiguous_... S19495C1::S19495C9 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C9*), 0, "S19495C1");
    /*is_ambiguous_... S19495C1::S19495C9 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C7*)(S19495C9*), 0, "S19495C1");
    check_base_class_offset(lv, (S7856C12*)(S19495C7*)(S19495C10*)(S19495C17*)(S19495C12*), 0, "S19495C1");
    /*is_ambiguous_... S19495C1::S19495C6 */ AMB_check_base_class_offset(lv, (S19495C7*)(S19495C6*), 0, "S19495C1");
    /*is_ambiguous_... S19495C15::S19495C7 */ AMB_check_base_class_offset(lv, (S19495C7*)(S19495C15*), 0, "S19495C1");
    /*is_ambiguous_... S19495C17::S19495C6 */ AMB_check_base_class_offset(lv, (S19495C7*)(S19495C6*)(S19495C17*)(S19495C12*), 0, "S19495C1");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S19495C6*)(S19495C3*)(S19495C2*), 0, "S19495C1");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S19495C6*)(S19495C9*)(S19495C3*)(S19495C2*), 0, "S19495C1");
    /*is_ambiguous_... S19495C1::S19495C3 */ AMB_check_base_class_offset(lv, (S19495C6*)(S19495C3*), 0, "S19495C1");
    /*is_ambiguous_... S19495C1::S19495C3 */ AMB_check_base_class_offset(lv, (S19495C6*)(S19495C9*)(S19495C3*), 0, "S19495C1");
    /*is_ambiguous_... S19495C1::S19495C9 */ AMB_check_base_class_offset(lv, (S19495C6*)(S19495C9*), 0, "S19495C1");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C3*)(S19495C2*), ABISELECT(8,4), "S19495C1");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C9*)(S19495C3*)(S19495C2*), ABISELECT(16,8), "S19495C1");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C7*)(S19495C9*)(S19495C3*)(S19495C2*), ABISELECT(8,4), "S19495C1");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S19495C7*)(S19495C9*)(S19495C3*)(S19495C2*), ABISELECT(8,4), "S19495C1");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S19495C9*)(S19495C3*)(S19495C2*), ABISELECT(8,4), "S19495C1");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S19495C3*)(S19495C2*), ABISELECT(8,4), "S19495C1");
    /*is_ambiguous_... S19495C1::S19495C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C10*), ABISELECT(40,24), "S19495C1");
    /*is_ambiguous_... S19495C1::S19495C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C10*), ABISELECT(48,28), "S19495C1");
    /*is_ambiguous_... S19495C1::S19495C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C7*)(S19495C10*), ABISELECT(40,24), "S19495C1");
    /*is_ambiguous_... S19495C1::S19495C10 */ AMB_check_base_class_offset(lv, (S19495C7*)(S19495C10*), ABISELECT(40,24), "S19495C1");
    /*is_ambiguous_... S19495C2::S19495C10 */ AMB_check_base_class_offset(lv, (S19495C10*)(S19495C2*), ABISELECT(40,24), "S19495C1");
    check_base_class_offset(lv, (S19495C10*)(S19495C13*), ABISELECT(40,24), "S19495C1");
    check_base_class_offset(lv, (S19495C10*)(S19495C15*), ABISELECT(40,24), "S19495C1");
    /*is_ambiguous_... S19495C1::S19495C3 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C3*), ABISELECT(56,32), "S19495C1");
    /*is_ambiguous_... S19495C1::S19495C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C9*)(S19495C3*), ABISELECT(64,36), "S19495C1");
    /*is_ambiguous_... S19495C1::S19495C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C7*)(S19495C9*)(S19495C3*), ABISELECT(56,32), "S19495C1");
    /*is_ambiguous_... S19495C1::S19495C3 */ AMB_check_base_class_offset(lv, (S19495C7*)(S19495C9*)(S19495C3*), ABISELECT(56,32), "S19495C1");
    /*is_ambiguous_... S19495C1::S19495C3 */ AMB_check_base_class_offset(lv, (S19495C9*)(S19495C3*), ABISELECT(56,32), "S19495C1");
    check_base_class_offset(lv, (S19495C3*)(S19495C11*), ABISELECT(56,32), "S19495C1");
    check_base_class_offset(lv, (S19495C3*)(S19495C13*), ABISELECT(56,32), "S19495C1");
    check_base_class_offset(lv, (S19495C3*)(S19495C15*), ABISELECT(56,32), "S19495C1");
    /*is_ambiguous_... S19495C1::S19495C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C9*), ABISELECT(128,72), "S19495C1");
    /*is_ambiguous_... S19495C1::S19495C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C7*)(S19495C9*), ABISELECT(120,68), "S19495C1");
    /*is_ambiguous_... S19495C1::S19495C9 */ AMB_check_base_class_offset(lv, (S19495C7*)(S19495C9*), ABISELECT(120,68), "S19495C1");
    /*is_ambiguous_... S19495C13::S19495C9 */ AMB_check_base_class_offset(lv, (S19495C9*)(S19495C13*), ABISELECT(120,68), "S19495C1");
    check_base_class_offset(lv, (S19495C9*)(S19495C17*)(S19495C12*), ABISELECT(120,68), "S19495C1");
    check_base_class_offset(lv, (S19495C13*)(S19495C12*), ABISELECT(104,56), "S19495C1");
    check_base_class_offset(lv, (S7856C9_nt*)(S19495C12*), 0, "S19495C1");
    check_base_class_offset(lv, (S19495C16*)(S19495C15*), ABISELECT(136,76), "S19495C1");
    /*is_ambiguous_... S19495C15::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C15*), ABISELECT(136,76), "S19495C1");
    check_base_class_offset(lv, (S19495C15*)(S19495C12*), ABISELECT(136,76), "S19495C1");
    /*is_ambiguous_... S19495C10::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C10*)(S19495C17*)(S19495C12*), ABISELECT(72,40), "S19495C1");
    /*is_ambiguous_... S19495C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C10*)(S19495C17*)(S19495C12*), ABISELECT(80,44), "S19495C1");
    check_base_class_offset(lv, (S7856C15*)(S19495C7*)(S19495C10*)(S19495C17*)(S19495C12*), ABISELECT(72,40), "S19495C1");
    check_base_class_offset(lv, (S19495C7*)(S19495C10*)(S19495C17*)(S19495C12*), ABISELECT(72,40), "S19495C1");
    check_base_class_offset(lv, (S19495C10*)(S19495C17*)(S19495C12*), ABISELECT(72,40), "S19495C1");
    /*is_ambiguous_... S19495C17::S19495C6 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C6*)(S19495C17*)(S19495C12*), ABISELECT(88,48), "S19495C1");
    /*is_ambiguous_... S19495C17::S19495C6 */ AMB_check_base_class_offset(lv, (S19495C6*)(S19495C17*)(S19495C12*), ABISELECT(88,48), "S19495C1");
    /*is_ambiguous_... S19495C17::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C17*)(S19495C12*), ABISELECT(96,52), "S19495C1");
    check_base_class_offset(lv, (S19495C17*)(S19495C12*), ABISELECT(72,40), "S19495C1");
    check_base_class_offset(lv, (S19495C12*)(S19495C11*), ABISELECT(72,40), "S19495C1");
    check_base_class_offset(lv, (S19495C11*)(S19495C2*), 0, "S19495C1");
    /*is_ambiguous_... S19495C18::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C18*)(S19495C2*), ABISELECT(24,12), "S19495C1");
    check_base_class_offset(lv, (S19495C16*)(S19495C18*)(S19495C2*), ABISELECT(24,12), "S19495C1");
    check_base_class_offset(lv, (S19495C18*)(S19495C2*), ABISELECT(24,12), "S19495C1");
    check_base_class_offset(lv, (S77C13_nt*)(S19495C2*), ABISELECT(8,4), "S19495C1");
    check_base_class_offset(lv, (S19495C2*), ABISELECT(8,4), "S19495C1");
    test_class_info(&lv, &cd_S19495C1);
    dp->~S19495C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19495C1(Test_S19495C1, "S19495C1", ABISELECT(152,84));

#else // __cplusplus

extern void _ZN8S19495C1C1Ev();
extern void _ZN8S19495C1D2Ev();
Name_Map name_map_S19495C1[] = {
  NSPAIR(_ZN8S19495C1C1Ev),
  NSPAIR(_ZN8S19495C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19495C7;
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
extern Class_Descriptor cd_S19495C6;
extern VTBL_ENTRY _ZTI8S19495C6[];
extern  VTBL_ENTRY _ZTV8S19495C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C6[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19495C7;
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
extern Class_Descriptor cd_S19495C9;
extern VTBL_ENTRY _ZTI8S19495C9[];
extern  VTBL_ENTRY _ZTV8S19495C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C9[];
extern Class_Descriptor cd_S19495C3;
extern VTBL_ENTRY _ZTI8S19495C3[];
extern  VTBL_ENTRY _ZTV8S19495C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C3[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19495C7;
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
extern Class_Descriptor cd_S19495C10;
extern VTBL_ENTRY _ZTI9S19495C10[];
extern  VTBL_ENTRY _ZTV9S19495C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19495C7;
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
extern Class_Descriptor cd_S19495C9;
extern VTBL_ENTRY _ZTI8S19495C9[];
extern  VTBL_ENTRY _ZTV8S19495C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C9[];
extern Class_Descriptor cd_S19495C3;
extern VTBL_ENTRY _ZTI8S19495C3[];
extern  VTBL_ENTRY _ZTV8S19495C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C3[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19495C7;
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
extern Class_Descriptor cd_S19495C9;
extern VTBL_ENTRY _ZTI8S19495C9[];
extern  VTBL_ENTRY _ZTV8S19495C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C9[];
extern Class_Descriptor cd_S19495C13;
extern VTBL_ENTRY _ZTI9S19495C13[];
extern  VTBL_ENTRY _ZTV9S19495C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C13[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S19495C16;
extern VTBL_ENTRY _ZTI9S19495C16[];
extern  VTBL_ENTRY _ZTV9S19495C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C16[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19495C15;
extern VTBL_ENTRY _ZTI9S19495C15[];
extern  VTBL_ENTRY _ZTV9S19495C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19495C7;
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
extern Class_Descriptor cd_S19495C10;
extern VTBL_ENTRY _ZTI9S19495C10[];
extern  VTBL_ENTRY _ZTV9S19495C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C10[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19495C6;
extern VTBL_ENTRY _ZTI8S19495C6[];
extern  VTBL_ENTRY _ZTV8S19495C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C6[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19495C17;
extern VTBL_ENTRY _ZTI9S19495C17[];
extern  VTBL_ENTRY _ZTV9S19495C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C17[];
extern Class_Descriptor cd_S19495C12;
extern VTBL_ENTRY _ZTI9S19495C12[];
extern  VTBL_ENTRY _ZTV9S19495C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C12[];
extern Class_Descriptor cd_S19495C11;
extern VTBL_ENTRY _ZTI9S19495C11[];
extern  VTBL_ENTRY _ZTV9S19495C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C11[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19495C16;
extern VTBL_ENTRY _ZTI9S19495C16[];
extern  VTBL_ENTRY _ZTV9S19495C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C16[];
extern Class_Descriptor cd_S19495C18;
extern VTBL_ENTRY _ZTI9S19495C18[];
extern  VTBL_ENTRY _ZTV9S19495C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C18[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19495C2;
extern VTBL_ENTRY _ZTI8S19495C2[];
extern  VTBL_ENTRY _ZTV8S19495C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C2[];
static Base_Class bases_S19495C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    ABISELECT(36,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(36,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19495C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19495C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19495C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19495C9,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19495C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19495C7,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19495C10,    ABISELECT(40,24), //bcp->offset
    44, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19495C7,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19495C9,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19495C3,    ABISELECT(56,32), //bcp->offset
    48, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(128,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19495C7,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    86, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19495C9,    ABISELECT(120,68), //bcp->offset
    94, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    85, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S19495C13,    ABISELECT(104,56), //bcp->offset
    81, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    79, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S19495C16,    ABISELECT(136,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    95, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(136,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S19495C15,    ABISELECT(136,76), //bcp->offset
    104, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    89, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S19495C7,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S19495C10,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    62, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S19495C6,    ABISELECT(88,48), //bcp->offset
    75, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S19495C17,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S19495C12,    ABISELECT(72,40), //bcp->offset
    58, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    43, //immediately_derived
  0, 1},
  {&cd_S19495C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    48, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S19495C16,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S19495C18,    ABISELECT(24,12), //bcp->offset
    39, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S19495C2,    ABISELECT(8,4), //bcp->offset
    20, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19495C1[];
extern void _ZN8S19495C1D1Ev();
extern void _ZN8S19495C1D0Ev();
extern void ABISELECT(_ZTv0_n136_N8S19495C1D1Ev,_ZTv0_n68_N8S19495C1D1Ev)();
extern void ABISELECT(_ZThn8_N8S19495C1D1Ev,_ZThn4_N8S19495C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N8S19495C1D0Ev,_ZTv0_n68_N8S19495C1D0Ev)();
extern void ABISELECT(_ZThn8_N8S19495C1D0Ev,_ZThn4_N8S19495C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n136_N8S19495C1D1Ev,_ZTvn8_n68_N8S19495C1D1Ev)();
extern void ABISELECT(_ZTvn16_n136_N8S19495C1D0Ev,_ZTvn8_n68_N8S19495C1D0Ev)();
extern void ABISELECT(_ZTv0_n64_N8S19495C1D1Ev,_ZTv0_n32_N8S19495C1D1Ev)();
extern void ABISELECT(_ZThn56_N8S19495C1D1Ev,_ZThn32_N8S19495C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19495C1D0Ev,_ZTv0_n32_N8S19495C1D0Ev)();
extern void ABISELECT(_ZThn56_N8S19495C1D0Ev,_ZThn32_N8S19495C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S19495C1D1Ev,_ZTv0_n60_N8S19495C1D1Ev)();
extern void ABISELECT(_ZThn72_N8S19495C1D1Ev,_ZThn40_N8S19495C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S19495C1D0Ev,_ZTv0_n60_N8S19495C1D0Ev)();
extern void ABISELECT(_ZThn72_N8S19495C1D0Ev,_ZThn40_N8S19495C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19495C1D1Ev,_ZTv0_n44_N8S19495C1D1Ev)();
extern void ABISELECT(_ZThn104_N8S19495C1D1Ev,_ZThn56_N8S19495C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19495C1D0Ev,_ZTv0_n44_N8S19495C1D0Ev)();
extern void ABISELECT(_ZThn104_N8S19495C1D0Ev,_ZThn56_N8S19495C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19495C1D1Ev,_ZTv0_n32_N8S19495C1D1Ev)();
extern void ABISELECT(_ZThn120_N8S19495C1D1Ev,_ZThn68_N8S19495C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19495C1D0Ev,_ZTv0_n32_N8S19495C1D0Ev)();
extern void ABISELECT(_ZThn120_N8S19495C1D0Ev,_ZThn68_N8S19495C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19495C1D1Ev,_ZTv0_n44_N8S19495C1D1Ev)();
extern void ABISELECT(_ZThn136_N8S19495C1D1Ev,_ZThn76_N8S19495C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19495C1D0Ev,_ZTv0_n44_N8S19495C1D0Ev)();
extern void ABISELECT(_ZThn136_N8S19495C1D0Ev,_ZThn76_N8S19495C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19495C1[] = {
  0,
  ABISELECT(8,4),
  0,
  ABISELECT(136,76),
  ABISELECT(136,76),
  0,
  ABISELECT(120,68),
  ABISELECT(40,24),
  ABISELECT(104,56),
  ABISELECT(72,40),
  0,
  ABISELECT(56,32),
  ABISELECT(36,20),
  0,
  0,
  ABISELECT(36,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C1[0]),
  (VTBL_ENTRY)&_ZN8S19495C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19495C1D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(128,72),
  ABISELECT(128,72),
  ABISELECT(-8,-4),
  ABISELECT(112,64),
  ABISELECT(96,52),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(-8,-4),
  ABISELECT(32,20),
  ABISELECT(28,16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(28,16),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19495C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S19495C1D1Ev,_ZTv0_n68_N8S19495C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S19495C1D0Ev,_ZTv0_n68_N8S19495C1D0Ev),
  ABISELECT(12,8),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19495C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n136_N8S19495C1D1Ev,_ZTvn8_n68_N8S19495C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n136_N8S19495C1D0Ev,_ZTvn8_n68_N8S19495C1D0Ev),
  ABISELECT(-40,-24),
  -4,
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S19495C1[0]),
  ABISELECT(-56,-32),
  ABISELECT(-20,-12),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-20,-12),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S19495C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19495C1D1Ev,_ZTv0_n32_N8S19495C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19495C1D0Ev,_ZTv0_n32_N8S19495C1D0Ev),
  ABISELECT(-72,-40),
  ABISELECT(64,36),
  ABISELECT(64,36),
  ABISELECT(-72,-40),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(-36,-20),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(48,28),
  ABISELECT(-72,-40),
  ABISELECT(-36,-20),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S19495C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S19495C1D1Ev,_ZTv0_n60_N8S19495C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S19495C1D0Ev,_ZTv0_n60_N8S19495C1D0Ev),
  ABISELECT(-52,-28),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-52,-28),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S19495C1[0]),
  ABISELECT(-104,-56),
  ABISELECT(16,12),
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  ABISELECT(-48,-24),
  ABISELECT(-68,-36),
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  ABISELECT(-68,-36),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S19495C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19495C1D1Ev,_ZTv0_n44_N8S19495C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19495C1D0Ev,_ZTv0_n44_N8S19495C1D0Ev),
  ABISELECT(-120,-68),
  ABISELECT(-84,-48),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-84,-48),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI8S19495C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19495C1D1Ev,_ZTv0_n32_N8S19495C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19495C1D0Ev,_ZTv0_n32_N8S19495C1D0Ev),
  ABISELECT(-136,-76),
  ABISELECT(-136,-76),
  ABISELECT(-80,-44),
  ABISELECT(-96,-52),
  0,
  ABISELECT(-136,-76),
  ABISELECT(-100,-56),
  ABISELECT(-136,-76),
  ABISELECT(-100,-56),
  ABISELECT(-136,-76),
  (VTBL_ENTRY)&(_ZTI8S19495C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19495C1D1Ev,_ZTv0_n44_N8S19495C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19495C1D0Ev,_ZTv0_n44_N8S19495C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S19495C1[];
extern void _ZN8S19495C2D1Ev();
extern void _ZN8S19495C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19495C2__8S19495C1[] = {
  ABISELECT(128,72),
  ABISELECT(128,72),
  ABISELECT(-8,-4),
  ABISELECT(112,64),
  ABISELECT(96,52),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(-8,-4),
  ABISELECT(32,20),
  ABISELECT(28,16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(28,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C2[0]),
  (VTBL_ENTRY)&_ZN8S19495C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19495C2D0Ev,
};
extern void _ZN8S19495C3D1Ev();
extern void _ZN8S19495C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19495C38S19495C2__8S19495C1[] = {
  ABISELECT(28,16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(28,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C3[0]),
  (VTBL_ENTRY)&_ZN8S19495C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19495C3D0Ev,
};
extern void _ZN8S19495C9D1Ev();
extern void _ZN8S19495C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19495C98S19495C38S19495C2__8S19495C1[] = {
  ABISELECT(28,16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(28,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C9[0]),
  (VTBL_ENTRY)&_ZN8S19495C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19495C9D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19495C78S19495C98S19495C38S19495C2__A1__8S19495C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(28,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__8S19495C98S19495C38S19495C2__8S19495C1[] = {
  ABISELECT(36,20),
  0,
  0,
  ABISELECT(36,20),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S19495C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__8S19495C38S19495C2__8S19495C1[] = {
  ABISELECT(36,20),
  0,
  0,
  ABISELECT(36,20),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S19495C3[0]),
};
extern void _ZN9S19495C18D1Ev();
extern void _ZN9S19495C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19495C188S19495C2__8S19495C1[] = {
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C18[0]),
  (VTBL_ENTRY)&_ZN9S19495C18D1Ev,
  (VTBL_ENTRY)&_ZN9S19495C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19495C169S19495C188S19495C2__A1__8S19495C1[] = {
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C16[0]),
};
extern void ABISELECT(_ZTv0_n128_N8S19495C2D1Ev,_ZTv0_n64_N8S19495C2D1Ev)();
extern void ABISELECT(_ZTv0_n128_N8S19495C2D0Ev,_ZTv0_n64_N8S19495C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19495C11__8S19495C2__8S19495C1[] = {
  ABISELECT(8,4),
  ABISELECT(136,76),
  ABISELECT(136,76),
  0,
  ABISELECT(120,68),
  ABISELECT(40,24),
  ABISELECT(104,56),
  ABISELECT(72,40),
  0,
  ABISELECT(56,32),
  ABISELECT(36,20),
  0,
  0,
  ABISELECT(36,20),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S19495C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S19495C2D1Ev,_ZTv0_n64_N8S19495C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S19495C2D0Ev,_ZTv0_n64_N8S19495C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19495C10__8S19495C2__8S19495C1[] = {
  ABISELECT(-40,-24),
  -4,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19495C2[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S19495C2D1Ev,_ZTv0_n32_N8S19495C2D1Ev)();
extern void ABISELECT(_ZThn48_N8S19495C2D1Ev,_ZThn28_N8S19495C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19495C2D0Ev,_ZTv0_n32_N8S19495C2D0Ev)();
extern void ABISELECT(_ZThn48_N8S19495C2D0Ev,_ZThn28_N8S19495C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19495C3__A1__8S19495C2__8S19495C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(-20,-12),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19495C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19495C2D1Ev,_ZTv0_n32_N8S19495C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19495C2D0Ev,_ZTv0_n32_N8S19495C2D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S19495C2D1Ev,_ZTv0_n60_N8S19495C2D1Ev)();
extern void ABISELECT(_ZThn64_N8S19495C2D1Ev,_ZThn36_N8S19495C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S19495C2D0Ev,_ZTv0_n60_N8S19495C2D0Ev)();
extern void ABISELECT(_ZThn64_N8S19495C2D0Ev,_ZThn36_N8S19495C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19495C12__8S19495C2__8S19495C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(64,36),
  ABISELECT(64,36),
  ABISELECT(-72,-40),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(-36,-20),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(48,28),
  ABISELECT(-72,-40),
  ABISELECT(-36,-20),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S19495C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S19495C2D1Ev,_ZTv0_n60_N8S19495C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S19495C2D0Ev,_ZTv0_n60_N8S19495C2D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S19495C2D1Ev,_ZTv0_n44_N8S19495C2D1Ev)();
extern void ABISELECT(_ZThn96_N8S19495C2D1Ev,_ZThn52_N8S19495C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19495C2D0Ev,_ZTv0_n44_N8S19495C2D0Ev)();
extern void ABISELECT(_ZThn96_N8S19495C2D0Ev,_ZThn52_N8S19495C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19495C13__8S19495C2__8S19495C1[] = {
  ABISELECT(-96,-52),
  ABISELECT(16,12),
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  ABISELECT(-48,-24),
  ABISELECT(-68,-36),
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  ABISELECT(-68,-36),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S19495C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19495C2D1Ev,_ZTv0_n44_N8S19495C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19495C2D0Ev,_ZTv0_n44_N8S19495C2D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S19495C2D1Ev,_ZTv0_n32_N8S19495C2D1Ev)();
extern void ABISELECT(_ZThn112_N8S19495C2D1Ev,_ZThn64_N8S19495C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19495C2D0Ev,_ZTv0_n32_N8S19495C2D0Ev)();
extern void ABISELECT(_ZThn112_N8S19495C2D0Ev,_ZThn64_N8S19495C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19495C9__A2__8S19495C2__8S19495C1[] = {
  ABISELECT(-112,-64),
  ABISELECT(-84,-48),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-84,-48),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI8S19495C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19495C2D1Ev,_ZTv0_n32_N8S19495C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19495C2D0Ev,_ZTv0_n32_N8S19495C2D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S19495C2D1Ev,_ZTv0_n44_N8S19495C2D1Ev)();
extern void ABISELECT(_ZThn128_N8S19495C2D1Ev,_ZThn72_N8S19495C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19495C2D0Ev,_ZTv0_n44_N8S19495C2D0Ev)();
extern void ABISELECT(_ZThn128_N8S19495C2D0Ev,_ZThn72_N8S19495C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19495C15__8S19495C2__8S19495C1[] = {
  ABISELECT(-128,-72),
  ABISELECT(-136,-76),
  ABISELECT(-80,-44),
  ABISELECT(-96,-52),
  0,
  ABISELECT(-136,-76),
  ABISELECT(-100,-56),
  ABISELECT(-136,-76),
  ABISELECT(-100,-56),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S19495C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19495C2D1Ev,_ZTv0_n44_N8S19495C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19495C2D0Ev,_ZTv0_n44_N8S19495C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19495C69S19495C179S19495C12__A1__8S19495C2__8S19495C1[] = {
  ABISELECT(-52,-28),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-52,-28),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S19495C2[0]),
};
extern void ABISELECT(_ZThn16_N8S19495C2D1Ev,_ZThn8_N8S19495C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S19495C2D0Ev,_ZThn8_N8S19495C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19495C18__8S19495C2__8S19495C1[] = {
  ABISELECT(12,8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19495C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19495C2D1Ev,_ZThn8_N8S19495C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19495C2D0Ev,_ZThn8_N8S19495C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__8S19495C1[] = {
  ABISELECT(36,20),
  0,
  0,
  ABISELECT(36,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C7__8S19495C1[] = {
  0,
  ABISELECT(36,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19495C10__8S19495C1[] = {
  ABISELECT(-40,-24),
  -4,
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C79S19495C10__A2__8S19495C1[] = {
  ABISELECT(-40,-24),
  -4,
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
extern void _ZN9S19495C11D1Ev();
extern void _ZN9S19495C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19495C11__8S19495C1[] = {
  ABISELECT(136,76),
  ABISELECT(136,76),
  0,
  ABISELECT(120,68),
  ABISELECT(40,24),
  ABISELECT(104,56),
  ABISELECT(72,40),
  0,
  ABISELECT(56,32),
  ABISELECT(36,20),
  0,
  0,
  ABISELECT(36,20),
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C11[0]),
  (VTBL_ENTRY)&_ZN9S19495C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19495C11D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N9S19495C11D1Ev,_ZTv0_n32_N9S19495C11D1Ev)();
extern void ABISELECT(_ZThn56_N9S19495C11D1Ev,_ZThn32_N9S19495C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19495C11D0Ev,_ZTv0_n32_N9S19495C11D0Ev)();
extern void ABISELECT(_ZThn56_N9S19495C11D0Ev,_ZThn32_N9S19495C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19495C3__9S19495C11__8S19495C1[] = {
  ABISELECT(-56,-32),
  ABISELECT(-20,-12),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-20,-12),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S19495C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C11D1Ev,_ZTv0_n32_N9S19495C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C11D0Ev,_ZTv0_n32_N9S19495C11D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N9S19495C11D1Ev,_ZTv0_n60_N9S19495C11D1Ev)();
extern void ABISELECT(_ZThn72_N9S19495C11D1Ev,_ZThn40_N9S19495C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N9S19495C11D0Ev,_ZTv0_n60_N9S19495C11D0Ev)();
extern void ABISELECT(_ZThn72_N9S19495C11D0Ev,_ZThn40_N9S19495C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19495C12__9S19495C11__8S19495C1[] = {
  ABISELECT(-72,-40),
  ABISELECT(64,36),
  ABISELECT(64,36),
  ABISELECT(-72,-40),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(-36,-20),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(48,28),
  ABISELECT(-72,-40),
  ABISELECT(-36,-20),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S19495C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19495C11D1Ev,_ZTv0_n60_N9S19495C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19495C11D0Ev,_ZTv0_n60_N9S19495C11D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N9S19495C11D1Ev,_ZTv0_n44_N9S19495C11D1Ev)();
extern void ABISELECT(_ZThn104_N9S19495C11D1Ev,_ZThn56_N9S19495C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19495C11D0Ev,_ZTv0_n44_N9S19495C11D0Ev)();
extern void ABISELECT(_ZThn104_N9S19495C11D0Ev,_ZThn56_N9S19495C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19495C13__9S19495C11__8S19495C1[] = {
  ABISELECT(-104,-56),
  ABISELECT(16,12),
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  ABISELECT(-48,-24),
  ABISELECT(-68,-36),
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  ABISELECT(-68,-36),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI9S19495C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19495C11D1Ev,_ZTv0_n44_N9S19495C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19495C11D0Ev,_ZTv0_n44_N9S19495C11D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19495C10__9S19495C11__8S19495C1[] = {
  ABISELECT(-40,-24),
  -4,
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI9S19495C11[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19495C11D1Ev,_ZTv0_n32_N9S19495C11D1Ev)();
extern void ABISELECT(_ZThn120_N9S19495C11D1Ev,_ZThn68_N9S19495C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19495C11D0Ev,_ZTv0_n32_N9S19495C11D0Ev)();
extern void ABISELECT(_ZThn120_N9S19495C11D0Ev,_ZThn68_N9S19495C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19495C9__A1__9S19495C11__8S19495C1[] = {
  ABISELECT(-120,-68),
  ABISELECT(-84,-48),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-84,-48),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI9S19495C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C11D1Ev,_ZTv0_n32_N9S19495C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C11D0Ev,_ZTv0_n32_N9S19495C11D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N9S19495C11D1Ev,_ZTv0_n44_N9S19495C11D1Ev)();
extern void ABISELECT(_ZThn136_N9S19495C11D1Ev,_ZThn76_N9S19495C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19495C11D0Ev,_ZTv0_n44_N9S19495C11D0Ev)();
extern void ABISELECT(_ZThn136_N9S19495C11D0Ev,_ZThn76_N9S19495C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19495C15__9S19495C11__8S19495C1[] = {
  ABISELECT(-136,-76),
  ABISELECT(-136,-76),
  ABISELECT(-80,-44),
  ABISELECT(-96,-52),
  0,
  ABISELECT(-136,-76),
  ABISELECT(-100,-56),
  ABISELECT(-136,-76),
  ABISELECT(-100,-56),
  ABISELECT(-136,-76),
  (VTBL_ENTRY)&(_ZTI9S19495C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19495C11D1Ev,_ZTv0_n44_N9S19495C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19495C11D0Ev,_ZTv0_n44_N9S19495C11D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19495C69S19495C179S19495C12__A1__9S19495C11__8S19495C1[] = {
  ABISELECT(-52,-28),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-52,-28),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI9S19495C11[0]),
};
extern void _ZN8S19495C3D1Ev();
extern void _ZN8S19495C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19495C3__A1__8S19495C1[] = {
  ABISELECT(-20,-12),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-20,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C3[0]),
  (VTBL_ENTRY)&_ZN8S19495C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19495C3D0Ev,
};
extern void _ZN8S19495C9D1Ev();
extern void _ZN8S19495C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19495C98S19495C3__A1__8S19495C1[] = {
  ABISELECT(-20,-12),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-20,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C9[0]),
  (VTBL_ENTRY)&_ZN8S19495C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19495C9D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19495C78S19495C98S19495C3__A3__8S19495C1[] = {
  ABISELECT(-56,-32),
  ABISELECT(-20,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__8S19495C98S19495C3__A1__8S19495C1[] = {
  ABISELECT(36,20),
  0,
  0,
  ABISELECT(36,20),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI8S19495C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__8S19495C3__A1__8S19495C1[] = {
  ABISELECT(36,20),
  0,
  0,
  ABISELECT(36,20),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI8S19495C3[0]),
};
extern void _ZN9S19495C12D1Ev();
extern void _ZN9S19495C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19495C12__8S19495C1[] = {
  ABISELECT(64,36),
  ABISELECT(64,36),
  ABISELECT(-72,-40),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(-36,-20),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(48,28),
  ABISELECT(-72,-40),
  ABISELECT(-36,-20),
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C12[0]),
  (VTBL_ENTRY)&_ZN9S19495C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19495C12D0Ev,
};
extern void _ZN9S19495C17D1Ev();
extern void _ZN9S19495C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19495C179S19495C12__8S19495C1[] = {
  ABISELECT(-36,-20),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(48,28),
  ABISELECT(-72,-40),
  ABISELECT(-36,-20),
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C17[0]),
  (VTBL_ENTRY)&_ZN9S19495C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19495C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19495C109S19495C179S19495C12__A1__8S19495C1[] = {
  ABISELECT(-72,-40),
  ABISELECT(-36,-20),
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C79S19495C109S19495C179S19495C12__A5__8S19495C1[] = {
  ABISELECT(-72,-40),
  ABISELECT(-36,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C69S19495C179S19495C12__A1__8S19495C1[] = {
  ABISELECT(-52,-28),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-52,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C7__8S19495C69S19495C179S19495C12__A1__8S19495C1[] = {
  0,
  ABISELECT(36,20),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI8S19495C6[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19495C17D1Ev,_ZTv0_n32_N9S19495C17D1Ev)();
extern void ABISELECT(_ZThn48_N9S19495C17D1Ev,_ZThn28_N9S19495C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19495C17D0Ev,_ZTv0_n32_N9S19495C17D0Ev)();
extern void ABISELECT(_ZThn48_N9S19495C17D0Ev,_ZThn28_N9S19495C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19495C9__9S19495C179S19495C12__8S19495C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(-84,-48),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-84,-48),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19495C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C17D1Ev,_ZTv0_n32_N9S19495C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C17D0Ev,_ZTv0_n32_N9S19495C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__9S19495C179S19495C12__8S19495C1[] = {
  ABISELECT(36,20),
  0,
  0,
  ABISELECT(36,20),
  ABISELECT(72,40),
  (VTBL_ENTRY)&(_ZTI9S19495C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__A__9S19495C179S19495C12__8S19495C1[] = {
  ABISELECT(-52,-28),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-52,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19495C17[0]),
};
extern void ABISELECT(_ZTv0_n88_N9S19495C12D1Ev,_ZTv0_n44_N9S19495C12D1Ev)();
extern void ABISELECT(_ZThn32_N9S19495C12D1Ev,_ZThn16_N9S19495C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19495C12D0Ev,_ZTv0_n44_N9S19495C12D0Ev)();
extern void ABISELECT(_ZThn32_N9S19495C12D0Ev,_ZThn16_N9S19495C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19495C13__9S19495C12__8S19495C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(16,12),
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  ABISELECT(-48,-24),
  ABISELECT(-68,-36),
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  ABISELECT(-68,-36),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19495C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19495C12D1Ev,_ZTv0_n44_N9S19495C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19495C12D0Ev,_ZTv0_n44_N9S19495C12D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N9S19495C12D1Ev,_ZTv0_n32_N9S19495C12D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19495C12D0Ev,_ZTv0_n32_N9S19495C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19495C3__9S19495C12__8S19495C1[] = {
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S19495C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C12D1Ev,_ZTv0_n32_N9S19495C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C12D0Ev,_ZTv0_n32_N9S19495C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__9S19495C12__8S19495C1[] = {
  ABISELECT(36,20),
  0,
  0,
  ABISELECT(36,20),
  ABISELECT(72,40),
  (VTBL_ENTRY)&(_ZTI9S19495C12[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19495C10__9S19495C12__8S19495C1[] = {
  ABISELECT(-40,-24),
  -4,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S19495C12[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19495C12D1Ev,_ZTv0_n32_N9S19495C12D1Ev)();
extern void ABISELECT(_ZThn48_N9S19495C12D1Ev,_ZThn28_N9S19495C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19495C12D0Ev,_ZTv0_n32_N9S19495C12D0Ev)();
extern void ABISELECT(_ZThn48_N9S19495C12D0Ev,_ZThn28_N9S19495C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19495C9__A1__9S19495C12__8S19495C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(-84,-48),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-84,-48),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19495C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C12D1Ev,_ZTv0_n32_N9S19495C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C12D0Ev,_ZTv0_n32_N9S19495C12D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N9S19495C12D1Ev,_ZTv0_n44_N9S19495C12D1Ev)();
extern void ABISELECT(_ZThn64_N9S19495C12D1Ev,_ZThn36_N9S19495C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19495C12D0Ev,_ZTv0_n44_N9S19495C12D0Ev)();
extern void ABISELECT(_ZThn64_N9S19495C12D0Ev,_ZThn36_N9S19495C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19495C15__9S19495C12__8S19495C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-136,-76),
  ABISELECT(-80,-44),
  ABISELECT(-96,-52),
  0,
  ABISELECT(-136,-76),
  ABISELECT(-100,-56),
  ABISELECT(-136,-76),
  ABISELECT(-100,-56),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S19495C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19495C12D1Ev,_ZTv0_n44_N9S19495C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19495C12D0Ev,_ZTv0_n44_N9S19495C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19495C69S19495C17__A1__9S19495C12__8S19495C1[] = {
  ABISELECT(-52,-28),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-52,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19495C12[0]),
};
extern void _ZN9S19495C13D1Ev();
extern void _ZN9S19495C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19495C13__8S19495C1[] = {
  ABISELECT(16,12),
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  ABISELECT(-48,-24),
  ABISELECT(-68,-36),
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  ABISELECT(-68,-36),
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C13[0]),
  (VTBL_ENTRY)&_ZN9S19495C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19495C13D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N9S19495C13D1Ev,_ZTv0_n32_N9S19495C13D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19495C13D0Ev,_ZTv0_n32_N9S19495C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19495C3__9S19495C13__8S19495C1[] = {
  ABISELECT(48,24),
  ABISELECT(-20,-12),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-20,-12),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI9S19495C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C13D1Ev,_ZTv0_n32_N9S19495C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C13D0Ev,_ZTv0_n32_N9S19495C13D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__9S19495C13__8S19495C1[] = {
  ABISELECT(36,20),
  0,
  0,
  ABISELECT(36,20),
  ABISELECT(104,56),
  (VTBL_ENTRY)&(_ZTI9S19495C13[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19495C10__9S19495C13__8S19495C1[] = {
  ABISELECT(-40,-24),
  -4,
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI9S19495C13[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19495C13D1Ev,_ZTv0_n32_N9S19495C13D1Ev)();
extern void ABISELECT(_ZThn16_N9S19495C13D1Ev,_ZThn12_N9S19495C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19495C13D0Ev,_ZTv0_n32_N9S19495C13D0Ev)();
extern void ABISELECT(_ZThn16_N9S19495C13D0Ev,_ZThn12_N9S19495C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19495C9__A1__9S19495C13__8S19495C1[] = {
  ABISELECT(-16,-12),
  ABISELECT(-84,-48),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-84,-48),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19495C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C13D1Ev,_ZTv0_n32_N9S19495C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C13D0Ev,_ZTv0_n32_N9S19495C13D0Ev),
};
extern void _ZN8S19495C9D1Ev();
extern void _ZN8S19495C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19495C9__A2__8S19495C1[] = {
  ABISELECT(-84,-48),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-84,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C9[0]),
  (VTBL_ENTRY)&_ZN8S19495C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19495C9D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19495C78S19495C9__A4__8S19495C1[] = {
  ABISELECT(-120,-68),
  ABISELECT(-84,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__8S19495C9__A2__8S19495C1[] = {
  ABISELECT(36,20),
  0,
  0,
  ABISELECT(36,20),
  ABISELECT(120,68),
  (VTBL_ENTRY)&(_ZTI8S19495C9[0]),
};
extern void _ZN9S19495C15D1Ev();
extern void _ZN9S19495C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19495C15__8S19495C1[] = {
  ABISELECT(-136,-76),
  ABISELECT(-80,-44),
  ABISELECT(-96,-52),
  0,
  ABISELECT(-136,-76),
  ABISELECT(-100,-56),
  ABISELECT(-136,-76),
  ABISELECT(-100,-56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C15[0]),
  (VTBL_ENTRY)&_ZN9S19495C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19495C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__9S19495C15__8S19495C1[] = {
  ABISELECT(36,20),
  0,
  0,
  ABISELECT(36,20),
  ABISELECT(136,76),
  (VTBL_ENTRY)&(_ZTI9S19495C15[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19495C10__9S19495C15__8S19495C1[] = {
  ABISELECT(-40,-24),
  -4,
  ABISELECT(96,52),
  (VTBL_ENTRY)&(_ZTI9S19495C15[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19495C15D1Ev,_ZTv0_n32_N9S19495C15D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19495C15D0Ev,_ZTv0_n32_N9S19495C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19495C3__9S19495C15__8S19495C1[] = {
  ABISELECT(80,44),
  ABISELECT(-20,-12),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-20,-12),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI9S19495C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C15D1Ev,_ZTv0_n32_N9S19495C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C15D0Ev,_ZTv0_n32_N9S19495C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19495C16__8S19495C1[] = {
  ABISELECT(-100,-56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C16[0]),
};
static  VTT_ENTRY vtt_S19495C1[] = {
  {&(_ZTV8S19495C1[18]),  18,117},
  {&(_ZTV8S19495C1[37]),  37,117},
  {&(_ZTV8S19495C1[18]),  18,117},
  {&(_ZTV8S19495C1[18]),  18,117},
  {&(_ZTV8S19495C1[48]),  48,117},
  {&(_ZTV8S19495C1[18]),  18,117},
  {&(_ZTV8S19495C1[56]),  56,117},
  {&(_ZTV8S19495C1[73]),  73,117},
  {&(_ZTV8S19495C1[92]),  92,117},
  {&(_ZTV8S19495C1[102]),  102,117},
  {&(_ZTV8S19495C1[115]),  115,117},
  {&(_ZTV8S19495C1[115]),  115,117},
  {&(_ZTV8S19495C1[81]),  81,117},
  {&(_ZTV8S19495C1[42]),  42,117},
  {&(_tg__ZTV8S19495C2__8S19495C1[16]),  16,18},
  {&(_tg__ZTV8S19495C38S19495C2__8S19495C1[7]),  7,9},
  {&(_tg__ZTV8S19495C98S19495C38S19495C2__8S19495C1[7]),  7,9},
  {&(_tg__ZTV8S19495C78S19495C98S19495C38S19495C2__A1__8S19495C1[4]),  4,4},
  {&(_tg__ZTV8S19495C6__8S19495C98S19495C38S19495C2__8S19495C1[6]),  6,6},
  {&(_tg__ZTV8S19495C6__8S19495C98S19495C38S19495C2__8S19495C1[6]),  6,6},
  {&(_tg__ZTV8S19495C6__8S19495C38S19495C2__8S19495C1[6]),  6,6},
  {&(_tg__ZTV8S19495C6__8S19495C38S19495C2__8S19495C1[6]),  6,6},
  {&(_tg__ZTV9S19495C188S19495C2__8S19495C1[3]),  3,5},
  {&(_tg__ZTV9S19495C169S19495C188S19495C2__A1__8S19495C1[3]),  3,3},
  {&(_tg__ZTV9S19495C11__8S19495C2__8S19495C1[16]),  16,18},
  {&(_tg__ZTV9S19495C11__8S19495C2__8S19495C1[16]),  16,18},
  {&(_tg__ZTV9S19495C10__8S19495C2__8S19495C1[4]),  4,4},
  {&(_tg__ZTV9S19495C11__8S19495C2__8S19495C1[16]),  16,18},
  {&(_tg__ZTV8S19495C3__A1__8S19495C2__8S19495C1[8]),  8,10},
  {&(_tg__ZTV9S19495C12__8S19495C2__8S19495C1[15]),  15,17},
  {&(_tg__ZTV9S19495C13__8S19495C2__8S19495C1[11]),  11,13},
  {&(_tg__ZTV8S19495C9__A2__8S19495C2__8S19495C1[8]),  8,10},
  {&(_tg__ZTV9S19495C15__8S19495C2__8S19495C1[11]),  11,13},
  {&(_tg__ZTV9S19495C15__8S19495C2__8S19495C1[11]),  11,13},
  {&(_tg__ZTV8S19495C69S19495C179S19495C12__A1__8S19495C2__8S19495C1[6]),  6,6},
  {&(_tg__ZTV9S19495C18__8S19495C2__8S19495C1[3]),  3,5},
  {&(_tg__ZTV8S19495C6__8S19495C1[6]),  6,6},
  {&(_tg__ZTV8S19495C6__8S19495C1[6]),  6,6},
  {&(_tg__ZTV8S19495C7__8S19495C1[4]),  4,4},
  {&(_tg__ZTV9S19495C10__8S19495C1[4]),  4,4},
  {&(_tg__ZTV8S19495C79S19495C10__A2__8S19495C1[4]),  4,4},
  {&(_tg__ZTV9S19495C11__8S19495C1[15]),  15,17},
  {&(_tg__ZTV8S19495C3__9S19495C11__8S19495C1[8]),  8,10},
  {&(_tg__ZTV9S19495C11__8S19495C1[15]),  15,17},
  {&(_tg__ZTV9S19495C11__8S19495C1[15]),  15,17},
  {&(_tg__ZTV9S19495C12__9S19495C11__8S19495C1[15]),  15,17},
  {&(_tg__ZTV9S19495C13__9S19495C11__8S19495C1[11]),  11,13},
  {&(_tg__ZTV9S19495C10__9S19495C11__8S19495C1[4]),  4,4},
  {&(_tg__ZTV8S19495C9__A1__9S19495C11__8S19495C1[8]),  8,10},
  {&(_tg__ZTV9S19495C15__9S19495C11__8S19495C1[11]),  11,13},
  {&(_tg__ZTV9S19495C15__9S19495C11__8S19495C1[11]),  11,13},
  {&(_tg__ZTV8S19495C69S19495C179S19495C12__A1__9S19495C11__8S19495C1[6]),  6,6},
  {&(_tg__ZTV8S19495C3__A1__8S19495C1[7]),  7,9},
  {&(_tg__ZTV8S19495C98S19495C3__A1__8S19495C1[7]),  7,9},
  {&(_tg__ZTV8S19495C78S19495C98S19495C3__A3__8S19495C1[4]),  4,4},
  {&(_tg__ZTV8S19495C6__8S19495C98S19495C3__A1__8S19495C1[6]),  6,6},
  {&(_tg__ZTV8S19495C6__8S19495C98S19495C3__A1__8S19495C1[6]),  6,6},
  {&(_tg__ZTV8S19495C6__8S19495C3__A1__8S19495C1[6]),  6,6},
  {&(_tg__ZTV8S19495C6__8S19495C3__A1__8S19495C1[6]),  6,6},
  {&(_tg__ZTV9S19495C12__8S19495C1[14]),  14,16},
  {&(_tg__ZTV9S19495C179S19495C12__8S19495C1[8]),  8,10},
  {&(_tg__ZTV9S19495C109S19495C179S19495C12__A1__8S19495C1[4]),  4,4},
  {&(_tg__ZTV8S19495C79S19495C109S19495C179S19495C12__A5__8S19495C1[4]),  4,4},
  {&(_tg__ZTV8S19495C69S19495C179S19495C12__A1__8S19495C1[6]),  6,6},
  {&(_tg__ZTV8S19495C7__8S19495C69S19495C179S19495C12__A1__8S19495C1[4]),  4,4},
  {&(_tg__ZTV8S19495C9__9S19495C179S19495C12__8S19495C1[8]),  8,10},
  {&(_tg__ZTV8S19495C6__9S19495C179S19495C12__8S19495C1[6]),  6,6},
  {&(_tg__ZTV8S19495C6__9S19495C179S19495C12__8S19495C1[6]),  6,6},
  {&(_tg__ZTV8S19495C6__A__9S19495C179S19495C12__8S19495C1[6]),  6,6},
  {&(_tg__ZTV9S19495C13__9S19495C12__8S19495C1[11]),  11,13},
  {&(_tg__ZTV8S19495C3__9S19495C12__8S19495C1[8]),  8,10},
  {&(_tg__ZTV8S19495C6__9S19495C12__8S19495C1[6]),  6,6},
  {&(_tg__ZTV8S19495C6__9S19495C12__8S19495C1[6]),  6,6},
  {&(_tg__ZTV9S19495C10__9S19495C12__8S19495C1[4]),  4,4},
  {&(_tg__ZTV8S19495C9__A1__9S19495C12__8S19495C1[8]),  8,10},
  {&(_tg__ZTV9S19495C15__9S19495C12__8S19495C1[11]),  11,13},
  {&(_tg__ZTV9S19495C15__9S19495C12__8S19495C1[11]),  11,13},
  {&(_tg__ZTV8S19495C69S19495C17__A1__9S19495C12__8S19495C1[6]),  6,6},
  {&(_tg__ZTV9S19495C13__8S19495C1[10]),  10,12},
  {&(_tg__ZTV8S19495C3__9S19495C13__8S19495C1[8]),  8,10},
  {&(_tg__ZTV8S19495C6__9S19495C13__8S19495C1[6]),  6,6},
  {&(_tg__ZTV8S19495C6__9S19495C13__8S19495C1[6]),  6,6},
  {&(_tg__ZTV9S19495C10__9S19495C13__8S19495C1[4]),  4,4},
  {&(_tg__ZTV8S19495C9__A1__9S19495C13__8S19495C1[8]),  8,10},
  {&(_tg__ZTV8S19495C9__A2__8S19495C1[7]),  7,9},
  {&(_tg__ZTV8S19495C78S19495C9__A4__8S19495C1[4]),  4,4},
  {&(_tg__ZTV8S19495C6__8S19495C9__A2__8S19495C1[6]),  6,6},
  {&(_tg__ZTV8S19495C6__8S19495C9__A2__8S19495C1[6]),  6,6},
  {&(_tg__ZTV9S19495C15__8S19495C1[10]),  10,12},
  {&(_tg__ZTV8S19495C6__9S19495C15__8S19495C1[6]),  6,6},
  {&(_tg__ZTV9S19495C15__8S19495C1[10]),  10,12},
  {&(_tg__ZTV9S19495C10__9S19495C15__8S19495C1[4]),  4,4},
  {&(_tg__ZTV8S19495C3__9S19495C15__8S19495C1[8]),  8,10},
  {&(_tg__ZTV8S19495C6__9S19495C15__8S19495C1[6]),  6,6},
  {&(_tg__ZTV9S19495C16__8S19495C1[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19495C1[];
extern  VTBL_ENTRY _ZTV8S19495C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C1[];
static VTBL_ENTRY alt_thunk_names162[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19495C13D0Ev,_ZTv0_n32_N9S19495C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19495C13D0Ev,_ZThn12_N9S19495C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19495C13D1Ev,_ZTv0_n32_N9S19495C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19495C13D1Ev,_ZThn12_N9S19495C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19495C12D0Ev,_ZTv0_n32_N9S19495C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19495C12D0Ev,_ZThn28_N9S19495C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19495C12D1Ev,_ZTv0_n32_N9S19495C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19495C12D1Ev,_ZThn28_N9S19495C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19495C12D0Ev,_ZTv0_n44_N9S19495C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19495C12D0Ev,_ZThn36_N9S19495C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19495C12D0Ev,_ZThn16_N9S19495C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19495C12D1Ev,_ZTv0_n44_N9S19495C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19495C12D1Ev,_ZThn36_N9S19495C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19495C12D1Ev,_ZThn16_N9S19495C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19495C17D0Ev,_ZTv0_n32_N9S19495C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19495C17D0Ev,_ZThn28_N9S19495C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19495C17D1Ev,_ZTv0_n32_N9S19495C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19495C17D1Ev,_ZThn28_N9S19495C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19495C11D0Ev,_ZTv0_n44_N9S19495C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19495C11D0Ev,_ZThn76_N9S19495C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19495C11D0Ev,_ZThn56_N9S19495C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19495C11D1Ev,_ZTv0_n44_N9S19495C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19495C11D1Ev,_ZThn76_N9S19495C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19495C11D1Ev,_ZThn56_N9S19495C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19495C11D0Ev,_ZTv0_n60_N9S19495C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19495C11D0Ev,_ZThn40_N9S19495C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19495C11D1Ev,_ZTv0_n60_N9S19495C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19495C11D1Ev,_ZThn40_N9S19495C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19495C11D0Ev,_ZTv0_n32_N9S19495C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S19495C11D0Ev,_ZThn68_N9S19495C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19495C11D0Ev,_ZThn32_N9S19495C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19495C11D1Ev,_ZTv0_n32_N9S19495C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S19495C11D1Ev,_ZThn68_N9S19495C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19495C11D1Ev,_ZThn32_N9S19495C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19495C2D0Ev,_ZTv0_n44_N8S19495C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19495C2D0Ev,_ZThn72_N8S19495C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19495C2D0Ev,_ZThn52_N8S19495C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19495C2D1Ev,_ZTv0_n44_N8S19495C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19495C2D1Ev,_ZThn72_N8S19495C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19495C2D1Ev,_ZThn52_N8S19495C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S19495C2D0Ev,_ZTv0_n60_N8S19495C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19495C2D0Ev,_ZThn36_N8S19495C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S19495C2D1Ev,_ZTv0_n60_N8S19495C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19495C2D1Ev,_ZThn36_N8S19495C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19495C2D0Ev,_ZTv0_n32_N8S19495C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19495C2D0Ev,_ZThn64_N8S19495C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19495C2D0Ev,_ZThn28_N8S19495C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19495C2D1Ev,_ZTv0_n32_N8S19495C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19495C2D1Ev,_ZThn64_N8S19495C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19495C2D1Ev,_ZThn28_N8S19495C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19495C1D0Ev,_ZTv0_n44_N8S19495C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19495C1D0Ev,_ZThn76_N8S19495C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S19495C1D0Ev,_ZThn56_N8S19495C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19495C1D1Ev,_ZTv0_n44_N8S19495C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19495C1D1Ev,_ZThn76_N8S19495C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S19495C1D1Ev,_ZThn56_N8S19495C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S19495C1D0Ev,_ZTv0_n60_N8S19495C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S19495C1D0Ev,_ZThn40_N8S19495C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S19495C1D1Ev,_ZTv0_n60_N8S19495C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S19495C1D1Ev,_ZThn40_N8S19495C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19495C1D0Ev,_ZTv0_n32_N8S19495C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S19495C1D0Ev,_ZThn68_N8S19495C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19495C1D0Ev,_ZThn32_N8S19495C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19495C1D1Ev,_ZTv0_n32_N8S19495C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S19495C1D1Ev,_ZThn68_N8S19495C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19495C1D1Ev,_ZThn32_N8S19495C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N8S19495C1D0Ev,_ZTv0_n68_N8S19495C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S19495C1D0Ev,_ZThn4_N8S19495C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N8S19495C1D1Ev,_ZTv0_n68_N8S19495C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S19495C1D1Ev,_ZThn4_N8S19495C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19495C1 = {  "S19495C1", // class name
  bases_S19495C1, 49,
  &(vtc_S19495C1[0]), // expected_vtbl_contents
  &(vtt_S19495C1[0]), // expected_vtt_contents
  ABISELECT(152,84), // object size
  NSPAIRA(_ZTI8S19495C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19495C1),117, //virtual function table var
  18, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19495C1),95, //virtual table table var
  24, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names162,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19773C5  : S8033C7 {
  void *s19773c5f0;
  ::S20291C14_nt s19773c5f1;
  void *s19773c5f2;
  long double s19773c5f3;
  ~S19773C5(); // tgen
  S19773C5(); // tgen
};
//SIG(-1 S19773C5) C1{ BC2{ vd m Fc Fc:0 Fl[8] FD} Fp FC3{} Fp FD}


S19773C5 ::~S19773C5(){ note_dtor("S19773C5", this);} // tgen
S19773C5 ::S19773C5(){ note_ctor("S19773C5", this);} // tgen

static void Test_S19773C5()
{
  extern Class_Descriptor cd_S19773C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(10,20)];
    init_test(&cd_S19773C5, buf);
    S19773C5 *dp, &lv = *(dp=new (buf) S19773C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,76), "sizeof(S19773C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19773C5)");
    check_base_class_offset(lv, (S8033C7*), 0, "S19773C5");
    check_field_offset(lv, s19773c5f0, ABISELECT(96,52), "S19773C5.s19773c5f0");
    check_field_offset(lv, s19773c5f1, ABISELECT(104,56), "S19773C5.s19773c5f1");
    check_field_offset(lv, s19773c5f2, ABISELECT(112,60), "S19773C5.s19773c5f2");
    check_field_offset(lv, s19773c5f3, ABISELECT(128,64), "S19773C5.s19773c5f3");
    test_class_info(&lv, &cd_S19773C5);
    dp->~S19773C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19773C5(Test_S19773C5, "S19773C5", ABISELECT(144,76));

#else // __cplusplus

extern void _ZN8S19773C5C1Ev();
extern void _ZN8S19773C5D1Ev();
Name_Map name_map_S19773C5[] = {
  NSPAIR(_ZN8S19773C5C1Ev),
  NSPAIR(_ZN8S19773C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
static Base_Class bases_S19773C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19773C5[];
extern void _ZN8S19773C5D1Ev();
extern void _ZN8S19773C5D0Ev();
static  VTBL_ENTRY vtc_S19773C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19773C5[0]),
  (VTBL_ENTRY)&_ZN8S19773C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19773C5D0Ev,
};
extern VTBL_ENTRY _ZTI8S19773C5[];
extern  VTBL_ENTRY _ZTV8S19773C5[];
Class_Descriptor cd_S19773C5 = {  "S19773C5", // class name
  bases_S19773C5, 1,
  &(vtc_S19773C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,76), // object size
  NSPAIRA(_ZTI8S19773C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19773C5),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19773C4  : S19773C5 , virtual S8033C7 {
  ::S8033C7 s19773c4f0;
  void *s19773c4f1;
  virtual  ~S19773C4(); // _ZN8S19773C4D2Ev
  S19773C4(); // tgen
};
//SIG(-1 S19773C4) C1{ BC2{ BC3{ vd m Fc Fc:0 Fl[8] FD} Fp FC4{} Fp FD} VBC3 vd FC3 Fp}


 S19773C4 ::~S19773C4(){ note_dtor("S19773C4", this);}
S19773C4 ::S19773C4(){ note_ctor("S19773C4", this);} // tgen

static void Test_S19773C4()
{
  extern Class_Descriptor cd_S19773C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(23,47)];
    init_test(&cd_S19773C4, buf);
    S19773C4 *dp, &lv = *(dp=new (buf) S19773C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(352,184), "sizeof(S19773C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19773C4)");
    check_base_class_offset(lv, (S8033C7*)(S19773C5*), 0, "S19773C4");
    check_base_class_offset(lv, (S19773C5*), 0, "S19773C4");
    /*is_ambiguous_... S19773C4::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*), ABISELECT(256,132), "S19773C4");
    check_field_offset(lv, s19773c4f0, ABISELECT(144,76), "S19773C4.s19773c4f0");
    check_field_offset(lv, s19773c4f1, ABISELECT(240,128), "S19773C4.s19773c4f1");
    test_class_info(&lv, &cd_S19773C4);
    dp->~S19773C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19773C4(Test_S19773C4, "S19773C4", ABISELECT(352,184));

#else // __cplusplus

extern void _ZN8S19773C4C1Ev();
extern void _ZN8S19773C4D2Ev();
Name_Map name_map_S19773C4[] = {
  NSPAIR(_ZN8S19773C4C1Ev),
  NSPAIR(_ZN8S19773C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19773C5;
extern VTBL_ENTRY _ZTI8S19773C5[];
extern  VTBL_ENTRY _ZTV8S19773C5[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
static Base_Class bases_S19773C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19773C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S8033C7,    ABISELECT(256,132), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19773C4[];
extern void _ZN8S19773C4D1Ev();
extern void _ZN8S19773C4D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S19773C4D1Ev,_ZTv0_n12_N8S19773C4D1Ev)();
extern void ABISELECT(_ZThn256_N8S19773C4D1Ev,_ZThn132_N8S19773C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19773C4D0Ev,_ZTv0_n12_N8S19773C4D0Ev)();
extern void ABISELECT(_ZThn256_N8S19773C4D0Ev,_ZThn132_N8S19773C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19773C4[] = {
  ABISELECT(256,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S19773C4[0]),
  (VTBL_ENTRY)&_ZN8S19773C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19773C4D0Ev,
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  (VTBL_ENTRY)&(_ZTI8S19773C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19773C4D1Ev,_ZTv0_n12_N8S19773C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19773C4D0Ev,_ZTv0_n12_N8S19773C4D0Ev),
};
extern VTBL_ENTRY _ZTV8S19773C4[];
static  VTT_ENTRY vtt_S19773C4[] = {
  {&(_ZTV8S19773C4[3]),  3,10},
  {&(_ZTV8S19773C4[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S19773C4[];
extern  VTBL_ENTRY _ZTV8S19773C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19773C4[];
static VTBL_ENTRY alt_thunk_names163[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19773C4D0Ev,_ZTv0_n12_N8S19773C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19773C4D0Ev,_ZThn132_N8S19773C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19773C4D1Ev,_ZTv0_n12_N8S19773C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19773C4D1Ev,_ZThn132_N8S19773C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19773C4 = {  "S19773C4", // class name
  bases_S19773C4, 3,
  &(vtc_S19773C4[0]), // expected_vtbl_contents
  &(vtt_S19773C4[0]), // expected_vtt_contents
  ABISELECT(352,184), // object size
  NSPAIRA(_ZTI8S19773C4),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19773C4),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19773C4),2, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names163,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19773C8  : S8033C7 , virtual S19773C5 {
  int s19773c8f0;
  char s19773c8f1;
  void *s19773c8f2;
  int s19773c8f3;
  void *s19773c8f4[2];
  ::S19773C4 s19773c8f5;
  virtual  ~S19773C8(); // _ZN8S19773C8D2Ev
  virtual void  v1(); // _ZN8S19773C82v1Ev
  S19773C8(); // tgen
};
//SIG(-1 S19773C8) C1{ BC2{ vd m Fc Fc:0 Fl[8] FD} VBC3{ BC2 Fp FC4{} Fp FD} vd v1 Fi Fc Fp Fi Fp[2] FC5{ BC3 VBC2 vd FC2 Fp}}


 S19773C8 ::~S19773C8(){ note_dtor("S19773C8", this);}
void  S19773C8 ::v1(){vfunc_called(this, "_ZN8S19773C82v1Ev");}
S19773C8 ::S19773C8(){ note_ctor("S19773C8", this);} // tgen

static void Test_S19773C8()
{
  extern Class_Descriptor cd_S19773C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(41,85)];
    init_test(&cd_S19773C8, buf);
    S19773C8 *dp, &lv = *(dp=new (buf) S19773C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(640,336), "sizeof(S19773C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19773C8)");
    /*is_ambiguous_... S19773C8::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*), 0, "S19773C8");
    check_base_class_offset(lv, (S8033C7*)(S19773C5*), ABISELECT(496,260), "S19773C8");
    check_base_class_offset(lv, (S19773C5*), ABISELECT(496,260), "S19773C8");
    check_field_offset(lv, s19773c8f0, ABISELECT(96,52), "S19773C8.s19773c8f0");
    check_field_offset(lv, s19773c8f1, ABISELECT(100,56), "S19773C8.s19773c8f1");
    check_field_offset(lv, s19773c8f2, ABISELECT(104,60), "S19773C8.s19773c8f2");
    check_field_offset(lv, s19773c8f3, ABISELECT(112,64), "S19773C8.s19773c8f3");
    check_field_offset(lv, s19773c8f4, ABISELECT(120,68), "S19773C8.s19773c8f4");
    check_field_offset(lv, s19773c8f5, ABISELECT(144,76), "S19773C8.s19773c8f5");
    test_class_info(&lv, &cd_S19773C8);
    dp->~S19773C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19773C8(Test_S19773C8, "S19773C8", ABISELECT(640,336));

#else // __cplusplus

extern void _ZN8S19773C8C1Ev();
extern void _ZN8S19773C8D2Ev();
Name_Map name_map_S19773C8[] = {
  NSPAIR(_ZN8S19773C8C1Ev),
  NSPAIR(_ZN8S19773C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19773C5;
extern VTBL_ENTRY _ZTI8S19773C5[];
extern  VTBL_ENTRY _ZTV8S19773C5[];
static Base_Class bases_S19773C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S8033C7,    ABISELECT(496,260), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19773C5,    ABISELECT(496,260), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19773C8[];
extern void _ZN8S19773C8D1Ev();
extern void _ZN8S19773C8D0Ev();
extern void _ZN8S19773C82v1Ev();
extern void ABISELECT(_ZTv0_n24_N8S19773C8D1Ev,_ZTv0_n12_N8S19773C8D1Ev)();
extern void ABISELECT(_ZThn496_N8S19773C8D1Ev,_ZThn260_N8S19773C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19773C8D0Ev,_ZTv0_n12_N8S19773C8D0Ev)();
extern void ABISELECT(_ZThn496_N8S19773C8D0Ev,_ZThn260_N8S19773C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19773C8[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19773C8[0]),
  (VTBL_ENTRY)&_ZN8S19773C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19773C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19773C82v1Ev,
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI8S19773C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19773C8D1Ev,_ZTv0_n12_N8S19773C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19773C8D0Ev,_ZTv0_n12_N8S19773C8D0Ev),
};
extern VTBL_ENTRY _ZTV8S19773C8[];
static  VTT_ENTRY vtt_S19773C8[] = {
  {&(_ZTV8S19773C8[3]),  3,11},
  {&(_ZTV8S19773C8[9]),  9,11},
};
extern VTBL_ENTRY _ZTI8S19773C8[];
extern  VTBL_ENTRY _ZTV8S19773C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19773C8[];
static VTBL_ENTRY alt_thunk_names164[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19773C8D0Ev,_ZTv0_n12_N8S19773C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19773C8D0Ev,_ZThn260_N8S19773C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19773C8D1Ev,_ZTv0_n12_N8S19773C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19773C8D1Ev,_ZThn260_N8S19773C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19773C8 = {  "S19773C8", // class name
  bases_S19773C8, 3,
  &(vtc_S19773C8[0]), // expected_vtbl_contents
  &(vtt_S19773C8[0]), // expected_vtt_contents
  ABISELECT(640,336), // object size
  NSPAIRA(_ZTI8S19773C8),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19773C8),11, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19773C8),2, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names164,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19773C10  : S8033C7 , virtual S19773C8 {
  void *s19773c10f0;
  __tsi64 s19773c10f1[2];
  char s19773c10f2;
  void *s19773c10f3;
  int s19773c10f4;
  virtual  ~S19773C10(); // _ZN9S19773C10D2Ev
  S19773C10(); // tgen
};
//SIG(-1 S19773C10) C1{ BC2{ vd m Fc Fc:0 Fl[8] FD} VBC3{ BC2 VBC4{ BC2 Fp FC5{} Fp FD} vd v1 Fi Fc Fp Fi Fp[2] FC6{ BC4 VBC2 vd FC2 Fp}} vd Fp FL[2] Fc Fp Fi}


 S19773C10 ::~S19773C10(){ note_dtor("S19773C10", this);}
S19773C10 ::S19773C10(){ note_ctor("S19773C10", this);} // tgen

static void Test_S19773C10()
{
  extern Class_Descriptor cd_S19773C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(50,106)];
    init_test(&cd_S19773C10, buf);
    S19773C10 *dp, &lv = *(dp=new (buf) S19773C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(784,420), "sizeof(S19773C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19773C10)");
    /*is_ambiguous_... S19773C10::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*), 0, "S19773C10");
    /*is_ambiguous_... S19773C8::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19773C8*), ABISELECT(144,84), "S19773C10");
    check_base_class_offset(lv, (S8033C7*)(S19773C5*), ABISELECT(640,344), "S19773C10");
    check_base_class_offset(lv, (S19773C5*)(S19773C8*), ABISELECT(640,344), "S19773C10");
    check_base_class_offset(lv, (S19773C8*), ABISELECT(144,84), "S19773C10");
    check_field_offset(lv, s19773c10f0, ABISELECT(96,52), "S19773C10.s19773c10f0");
    check_field_offset(lv, s19773c10f1, ABISELECT(104,56), "S19773C10.s19773c10f1");
    check_field_offset(lv, s19773c10f2, ABISELECT(120,72), "S19773C10.s19773c10f2");
    check_field_offset(lv, s19773c10f3, ABISELECT(128,76), "S19773C10.s19773c10f3");
    check_field_offset(lv, s19773c10f4, ABISELECT(136,80), "S19773C10.s19773c10f4");
    test_class_info(&lv, &cd_S19773C10);
    dp->~S19773C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19773C10(Test_S19773C10, "S19773C10", ABISELECT(784,420));

#else // __cplusplus

extern void _ZN9S19773C10C1Ev();
extern void _ZN9S19773C10D2Ev();
Name_Map name_map_S19773C10[] = {
  NSPAIR(_ZN9S19773C10C1Ev),
  NSPAIR(_ZN9S19773C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19773C5;
extern VTBL_ENTRY _ZTI8S19773C5[];
extern  VTBL_ENTRY _ZTV8S19773C5[];
extern Class_Descriptor cd_S19773C8;
extern VTBL_ENTRY _ZTI8S19773C8[];
extern  VTBL_ENTRY _ZTV8S19773C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19773C8[];
static Base_Class bases_S19773C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S8033C7,    ABISELECT(144,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(640,344), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19773C5,    ABISELECT(640,344), //bcp->offset
    14, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19773C8,    ABISELECT(144,84), //bcp->offset
    6, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19773C10[];
extern void _ZN9S19773C10D1Ev();
extern void _ZN9S19773C10D0Ev();
extern void ABISELECT(_ZTv0_n32_N9S19773C10D1Ev,_ZTv0_n16_N9S19773C10D1Ev)();
extern void ABISELECT(_ZThn144_N9S19773C10D1Ev,_ZThn84_N9S19773C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19773C10D0Ev,_ZTv0_n16_N9S19773C10D0Ev)();
extern void ABISELECT(_ZThn144_N9S19773C10D0Ev,_ZThn84_N9S19773C10D0Ev)() __attribute__((weak));
extern void _ZN8S19773C82v1Ev();
extern void ABISELECT(_ZTv0_n24_N9S19773C10D1Ev,_ZTv0_n12_N9S19773C10D1Ev)();
extern void ABISELECT(_ZThn640_N9S19773C10D1Ev,_ZThn344_N9S19773C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19773C10D0Ev,_ZTv0_n12_N9S19773C10D0Ev)();
extern void ABISELECT(_ZThn640_N9S19773C10D0Ev,_ZThn344_N9S19773C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19773C10[] = {
  ABISELECT(640,344),
  ABISELECT(144,84),
  0,
  (VTBL_ENTRY)&(_ZTI9S19773C10[0]),
  (VTBL_ENTRY)&_ZN9S19773C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19773C10D0Ev,
  0,
  ABISELECT(-144,-84),
  ABISELECT(496,260),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI9S19773C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19773C10D1Ev,_ZTv0_n16_N9S19773C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19773C10D0Ev,_ZTv0_n16_N9S19773C10D0Ev),
  (VTBL_ENTRY)&_ZN8S19773C82v1Ev,
  ABISELECT(-640,-344),
  ABISELECT(-640,-344),
  (VTBL_ENTRY)&(_ZTI9S19773C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19773C10D1Ev,_ZTv0_n12_N9S19773C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19773C10D0Ev,_ZTv0_n12_N9S19773C10D0Ev),
};
extern VTBL_ENTRY _ZTV9S19773C10[];
extern void _ZN8S19773C8D1Ev();
extern void _ZN8S19773C8D0Ev();
extern void _ZN8S19773C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19773C8__9S19773C10[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19773C8[0]),
  (VTBL_ENTRY)&_ZN8S19773C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19773C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19773C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19773C8D1Ev,_ZTv0_n12_N8S19773C8D1Ev)();
extern void ABISELECT(_ZThn496_N8S19773C8D1Ev,_ZThn260_N8S19773C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19773C8D0Ev,_ZTv0_n12_N8S19773C8D0Ev)();
extern void ABISELECT(_ZThn496_N8S19773C8D0Ev,_ZThn260_N8S19773C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19773C5__8S19773C8__9S19773C10[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI8S19773C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19773C8D1Ev,_ZTv0_n12_N8S19773C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19773C8D0Ev,_ZTv0_n12_N8S19773C8D0Ev),
};
static  VTT_ENTRY vtt_S19773C10[] = {
  {&(_ZTV9S19773C10[4]),  4,19},
  {&(_ZTV9S19773C10[11]),  11,19},
  {&(_ZTV9S19773C10[17]),  17,19},
  {&(_tg__ZTV8S19773C8__9S19773C10[3]),  3,6},
  {&(_tg__ZTV8S19773C5__8S19773C8__9S19773C10[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19773C10[];
extern  VTBL_ENTRY _ZTV9S19773C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19773C10[];
static VTBL_ENTRY alt_thunk_names165[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19773C8D0Ev,_ZTv0_n12_N8S19773C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19773C8D0Ev,_ZThn260_N8S19773C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19773C8D1Ev,_ZTv0_n12_N8S19773C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19773C8D1Ev,_ZThn260_N8S19773C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19773C10D0Ev,_ZTv0_n12_N9S19773C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N9S19773C10D0Ev,_ZThn344_N9S19773C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19773C10D1Ev,_ZTv0_n12_N9S19773C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N9S19773C10D1Ev,_ZThn344_N9S19773C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19773C10D0Ev,_ZTv0_n16_N9S19773C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19773C10D0Ev,_ZThn84_N9S19773C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19773C10D1Ev,_ZTv0_n16_N9S19773C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19773C10D1Ev,_ZThn84_N9S19773C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19773C10 = {  "S19773C10", // class name
  bases_S19773C10, 5,
  &(vtc_S19773C10[0]), // expected_vtbl_contents
  &(vtt_S19773C10[0]), // expected_vtt_contents
  ABISELECT(784,420), // object size
  NSPAIRA(_ZTI9S19773C10),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19773C10),19, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19773C10),5, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names165,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19773C11  : virtual S19773C5 {
  char s19773c11f0;
  short s19773c11f1;
  long double s19773c11f2;
  void *s19773c11f3[2];
  virtual void  v2(); // _ZN9S19773C112v2Ev
  ~S19773C11(); // tgen
  S19773C11(); // tgen
};
//SIG(-1 S19773C11) C1{ VBC2{ BC3{ vd m Fc Fc:0 Fl[8] FD} Fp FC4{} Fp FD} v1 Fc Fs FD Fp[2]}


void  S19773C11 ::v2(){vfunc_called(this, "_ZN9S19773C112v2Ev");}
S19773C11 ::~S19773C11(){ note_dtor("S19773C11", this);} // tgen
S19773C11 ::S19773C11(){ note_ctor("S19773C11", this);} // tgen

static void Test_S19773C11()
{
  extern Class_Descriptor cd_S19773C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,27)];
    init_test(&cd_S19773C11, buf);
    S19773C11 *dp, &lv = *(dp=new (buf) S19773C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,104), "sizeof(S19773C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19773C11)");
    check_base_class_offset(lv, (S8033C7*)(S19773C5*), ABISELECT(48,28), "S19773C11");
    check_base_class_offset(lv, (S19773C5*), ABISELECT(48,28), "S19773C11");
    check_field_offset(lv, s19773c11f0, ABISELECT(8,4), "S19773C11.s19773c11f0");
    check_field_offset(lv, s19773c11f1, ABISELECT(10,6), "S19773C11.s19773c11f1");
    check_field_offset(lv, s19773c11f2, ABISELECT(16,8), "S19773C11.s19773c11f2");
    check_field_offset(lv, s19773c11f3, ABISELECT(32,20), "S19773C11.s19773c11f3");
    test_class_info(&lv, &cd_S19773C11);
    dp->~S19773C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19773C11(Test_S19773C11, "S19773C11", ABISELECT(192,104));

#else // __cplusplus

extern void _ZN9S19773C11C1Ev();
extern void _ZN9S19773C11D1Ev();
Name_Map name_map_S19773C11[] = {
  NSPAIR(_ZN9S19773C11C1Ev),
  NSPAIR(_ZN9S19773C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19773C5;
extern VTBL_ENTRY _ZTI8S19773C5[];
extern  VTBL_ENTRY _ZTV8S19773C5[];
static Base_Class bases_S19773C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19773C5,    ABISELECT(48,28), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19773C11[];
extern void _ZN9S19773C112v2Ev();
extern void _ZN9S19773C11D1Ev();
extern void _ZN9S19773C11D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S19773C11D1Ev,_ZTv0_n12_N9S19773C11D1Ev)();
extern void ABISELECT(_ZThn48_N9S19773C11D1Ev,_ZThn28_N9S19773C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19773C11D0Ev,_ZTv0_n12_N9S19773C11D0Ev)();
extern void ABISELECT(_ZThn48_N9S19773C11D0Ev,_ZThn28_N9S19773C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19773C11[] = {
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19773C11[0]),
  (VTBL_ENTRY)&_ZN9S19773C112v2Ev,
  (VTBL_ENTRY)&_ZN9S19773C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19773C11D0Ev,
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19773C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19773C11D1Ev,_ZTv0_n12_N9S19773C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19773C11D0Ev,_ZTv0_n12_N9S19773C11D0Ev),
};
extern VTBL_ENTRY _ZTV9S19773C11[];
static  VTT_ENTRY vtt_S19773C11[] = {
  {&(_ZTV9S19773C11[3]),  3,11},
  {&(_ZTV9S19773C11[9]),  9,11},
};
extern VTBL_ENTRY _ZTI9S19773C11[];
extern  VTBL_ENTRY _ZTV9S19773C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19773C11[];
static VTBL_ENTRY alt_thunk_names166[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19773C11D0Ev,_ZTv0_n12_N9S19773C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19773C11D0Ev,_ZThn28_N9S19773C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19773C11D1Ev,_ZTv0_n12_N9S19773C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19773C11D1Ev,_ZThn28_N9S19773C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19773C11 = {  "S19773C11", // class name
  bases_S19773C11, 2,
  &(vtc_S19773C11[0]), // expected_vtbl_contents
  &(vtt_S19773C11[0]), // expected_vtt_contents
  ABISELECT(192,104), // object size
  NSPAIRA(_ZTI9S19773C11),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19773C11),11, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19773C11),2, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names166,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19773C9  : S19773C10 , virtual S19773C11 {
  char s19773c9f0;
  int s19773c9f1:32;
  virtual  ~S19773C9(); // _ZN8S19773C9D2Ev
  S19773C9(); // tgen
};
//SIG(-1 S19773C9) C1{ BC2{ BC3{ vd m Fc Fc:0 Fl[8] FD} VBC4{ BC3 VBC5{ BC3 Fp FC6{} Fp FD} vd v1 Fi Fc Fp Fi Fp[2] FC7{ BC5 VBC3 vd FC3 Fp}} vd Fp FL[2] Fc Fp Fi} VBC8{ VBC5 v2 Fc Fs FD Fp[2]} vd Fc Fi:32}


 S19773C9 ::~S19773C9(){ note_dtor("S19773C9", this);}
S19773C9 ::S19773C9(){ note_ctor("S19773C9", this);} // tgen

static void Test_S19773C9()
{
  extern Class_Descriptor cd_S19773C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(54,115)];
    init_test(&cd_S19773C9, buf);
    S19773C9 *dp, &lv = *(dp=new (buf) S19773C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(848,456), "sizeof(S19773C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19773C9)");
    /*is_ambiguous_... S19773C10::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19773C10*), 0, "S19773C9");
    /*is_ambiguous_... S19773C8::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19773C8*), ABISELECT(160,92), "S19773C9");
    check_base_class_offset(lv, (S8033C7*)(S19773C5*), ABISELECT(656,352), "S19773C9");
    check_base_class_offset(lv, (S19773C5*)(S19773C8*), ABISELECT(656,352), "S19773C9");
    check_base_class_offset(lv, (S19773C5*)(S19773C11*), ABISELECT(656,352), "S19773C9");
    check_base_class_offset(lv, (S19773C8*)(S19773C10*), ABISELECT(160,92), "S19773C9");
    check_base_class_offset(lv, (S19773C10*), 0, "S19773C9");
    check_base_class_offset(lv, (S19773C11*), ABISELECT(800,428), "S19773C9");
    check_field_offset(lv, s19773c9f0, ABISELECT(140,84), "S19773C9.s19773c9f0");
    set_bf_and_test(lv, s19773c9f1, ABISELECT(144,88), 0, 32, 1, "S19773C9");
    set_bf_and_test(lv, s19773c9f1, ABISELECT(144,88), 0, 32, hide_sll(1LL<<31), "S19773C9");
    test_class_info(&lv, &cd_S19773C9);
    dp->~S19773C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19773C9(Test_S19773C9, "S19773C9", ABISELECT(848,456));

#else // __cplusplus

extern void _ZN8S19773C9C1Ev();
extern void _ZN8S19773C9D2Ev();
Name_Map name_map_S19773C9[] = {
  NSPAIR(_ZN8S19773C9C1Ev),
  NSPAIR(_ZN8S19773C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19773C5;
extern VTBL_ENTRY _ZTI8S19773C5[];
extern  VTBL_ENTRY _ZTV8S19773C5[];
extern Class_Descriptor cd_S19773C8;
extern VTBL_ENTRY _ZTI8S19773C8[];
extern  VTBL_ENTRY _ZTV8S19773C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19773C8[];
extern Class_Descriptor cd_S19773C10;
extern VTBL_ENTRY _ZTI9S19773C10[];
extern  VTBL_ENTRY _ZTV9S19773C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19773C10[];
extern Class_Descriptor cd_S19773C11;
extern VTBL_ENTRY _ZTI9S19773C11[];
extern  VTBL_ENTRY _ZTV9S19773C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19773C11[];
static Base_Class bases_S19773C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(160,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(656,352), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19773C5,    ABISELECT(656,352), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19773C8,    ABISELECT(160,92), //bcp->offset
    7, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19773C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19773C11,    ABISELECT(800,428), //bcp->offset
    20, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19773C9[];
extern void _ZN8S19773C9D1Ev();
extern void _ZN8S19773C9D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S19773C9D1Ev,_ZTv0_n16_N8S19773C9D1Ev)();
extern void ABISELECT(_ZThn160_N8S19773C9D1Ev,_ZThn92_N8S19773C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19773C9D0Ev,_ZTv0_n16_N8S19773C9D0Ev)();
extern void ABISELECT(_ZThn160_N8S19773C9D0Ev,_ZThn92_N8S19773C9D0Ev)() __attribute__((weak));
extern void _ZN8S19773C82v1Ev();
extern void ABISELECT(_ZTv0_n24_N8S19773C9D1Ev,_ZTv0_n12_N8S19773C9D1Ev)();
extern void ABISELECT(_ZThn656_N8S19773C9D1Ev,_ZThn352_N8S19773C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19773C9D0Ev,_ZTv0_n12_N8S19773C9D0Ev)();
extern void ABISELECT(_ZThn656_N8S19773C9D0Ev,_ZThn352_N8S19773C9D0Ev)() __attribute__((weak));
extern void _ZN9S19773C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N8S19773C9D1Ev,_ZTv0_n20_N8S19773C9D1Ev)();
extern void ABISELECT(_ZThn800_N8S19773C9D1Ev,_ZThn428_N8S19773C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19773C9D0Ev,_ZTv0_n20_N8S19773C9D0Ev)();
extern void ABISELECT(_ZThn800_N8S19773C9D0Ev,_ZThn428_N8S19773C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19773C9[] = {
  ABISELECT(800,428),
  ABISELECT(656,352),
  ABISELECT(160,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S19773C9[0]),
  (VTBL_ENTRY)&_ZN8S19773C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19773C9D0Ev,
  0,
  ABISELECT(-160,-92),
  ABISELECT(496,260),
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI8S19773C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19773C9D1Ev,_ZTv0_n16_N8S19773C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19773C9D0Ev,_ZTv0_n16_N8S19773C9D0Ev),
  (VTBL_ENTRY)&_ZN8S19773C82v1Ev,
  ABISELECT(-656,-352),
  ABISELECT(-656,-352),
  (VTBL_ENTRY)&(_ZTI8S19773C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19773C9D1Ev,_ZTv0_n12_N8S19773C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19773C9D0Ev,_ZTv0_n12_N8S19773C9D0Ev),
  ABISELECT(-800,-428),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-800,-428),
  (VTBL_ENTRY)&(_ZTI8S19773C9[0]),
  (VTBL_ENTRY)&_ZN9S19773C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19773C9D1Ev,_ZTv0_n20_N8S19773C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19773C9D0Ev,_ZTv0_n20_N8S19773C9D0Ev),
};
extern VTBL_ENTRY _ZTV8S19773C9[];
extern void _ZN9S19773C10D1Ev();
extern void _ZN9S19773C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19773C10__8S19773C9[] = {
  ABISELECT(656,352),
  ABISELECT(160,92),
  0,
  (VTBL_ENTRY)&(_ZTI9S19773C10[0]),
  (VTBL_ENTRY)&_ZN9S19773C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19773C10D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19773C10D1Ev,_ZTv0_n16_N9S19773C10D1Ev)();
extern void ABISELECT(_ZThn160_N9S19773C10D1Ev,_ZThn92_N9S19773C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19773C10D0Ev,_ZTv0_n16_N9S19773C10D0Ev)();
extern void ABISELECT(_ZThn160_N9S19773C10D0Ev,_ZThn92_N9S19773C10D0Ev)() __attribute__((weak));
extern void _ZN8S19773C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19773C8__9S19773C10__8S19773C9[] = {
  0,
  ABISELECT(-160,-92),
  ABISELECT(496,260),
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI9S19773C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19773C10D1Ev,_ZTv0_n16_N9S19773C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19773C10D0Ev,_ZTv0_n16_N9S19773C10D0Ev),
  (VTBL_ENTRY)&_ZN8S19773C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19773C10D1Ev,_ZTv0_n12_N9S19773C10D1Ev)();
extern void ABISELECT(_ZThn656_N9S19773C10D1Ev,_ZThn352_N9S19773C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19773C10D0Ev,_ZTv0_n12_N9S19773C10D0Ev)();
extern void ABISELECT(_ZThn656_N9S19773C10D0Ev,_ZThn352_N9S19773C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19773C5__9S19773C10__8S19773C9[] = {
  ABISELECT(-656,-352),
  ABISELECT(-656,-352),
  (VTBL_ENTRY)&(_ZTI9S19773C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19773C10D1Ev,_ZTv0_n12_N9S19773C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19773C10D0Ev,_ZTv0_n12_N9S19773C10D0Ev),
};
extern void _ZN8S19773C8D1Ev();
extern void _ZN8S19773C8D0Ev();
extern void _ZN8S19773C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19773C8__8S19773C9[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19773C8[0]),
  (VTBL_ENTRY)&_ZN8S19773C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19773C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19773C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19773C8D1Ev,_ZTv0_n12_N8S19773C8D1Ev)();
extern void ABISELECT(_ZThn496_N8S19773C8D1Ev,_ZThn260_N8S19773C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19773C8D0Ev,_ZTv0_n12_N8S19773C8D0Ev)();
extern void ABISELECT(_ZThn496_N8S19773C8D0Ev,_ZThn260_N8S19773C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19773C5__8S19773C8__8S19773C9[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI8S19773C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19773C8D1Ev,_ZTv0_n12_N8S19773C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19773C8D0Ev,_ZTv0_n12_N8S19773C8D0Ev),
};
extern void _ZN9S19773C112v2Ev();
extern void _ZN9S19773C11D1Ev();
extern void _ZN9S19773C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19773C11__8S19773C9[] = {
  ABISELECT(-144,-76),
  0,
  (VTBL_ENTRY)&(_ZTI9S19773C11[0]),
  (VTBL_ENTRY)&_ZN9S19773C112v2Ev,
  (VTBL_ENTRY)&_ZN9S19773C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19773C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19773C11D1Ev,_ZTv0_n12_N9S19773C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19773C11D0Ev,_ZTv0_n12_N9S19773C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19773C5__9S19773C11__8S19773C9[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI9S19773C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19773C11D1Ev,_ZTv0_n12_N9S19773C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19773C11D0Ev,_ZTv0_n12_N9S19773C11D0Ev),
};
static  VTT_ENTRY vtt_S19773C9[] = {
  {&(_ZTV8S19773C9[5]),  5,28},
  {&(_tg__ZTV9S19773C10__8S19773C9[4]),  4,6},
  {&(_tg__ZTV8S19773C8__9S19773C10__8S19773C9[5]),  5,8},
  {&(_tg__ZTV8S19773C5__9S19773C10__8S19773C9[3]),  3,5},
  {&(_ZTV8S19773C9[12]),  12,28},
  {&(_ZTV8S19773C9[18]),  18,28},
  {&(_ZTV8S19773C9[25]),  25,28},
  {&(_tg__ZTV8S19773C8__8S19773C9[3]),  3,6},
  {&(_tg__ZTV8S19773C5__8S19773C8__8S19773C9[3]),  3,5},
  {&(_tg__ZTV9S19773C11__8S19773C9[3]),  3,6},
  {&(_tg__ZTV8S19773C5__9S19773C11__8S19773C9[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19773C9[];
extern  VTBL_ENTRY _ZTV8S19773C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19773C9[];
static VTBL_ENTRY alt_thunk_names167[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19773C8D0Ev,_ZTv0_n12_N8S19773C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19773C8D0Ev,_ZThn260_N8S19773C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19773C8D1Ev,_ZTv0_n12_N8S19773C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19773C8D1Ev,_ZThn260_N8S19773C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19773C10D0Ev,_ZTv0_n12_N9S19773C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N9S19773C10D0Ev,_ZThn352_N9S19773C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19773C10D1Ev,_ZTv0_n12_N9S19773C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N9S19773C10D1Ev,_ZThn352_N9S19773C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19773C10D0Ev,_ZTv0_n16_N9S19773C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S19773C10D0Ev,_ZThn92_N9S19773C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19773C10D1Ev,_ZTv0_n16_N9S19773C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S19773C10D1Ev,_ZThn92_N9S19773C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19773C9D0Ev,_ZTv0_n20_N8S19773C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn800_N8S19773C9D0Ev,_ZThn428_N8S19773C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19773C9D1Ev,_ZTv0_n20_N8S19773C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn800_N8S19773C9D1Ev,_ZThn428_N8S19773C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19773C9D0Ev,_ZTv0_n12_N8S19773C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S19773C9D0Ev,_ZThn352_N8S19773C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19773C9D1Ev,_ZTv0_n12_N8S19773C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S19773C9D1Ev,_ZThn352_N8S19773C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19773C9D0Ev,_ZTv0_n16_N8S19773C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19773C9D0Ev,_ZThn92_N8S19773C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19773C9D1Ev,_ZTv0_n16_N8S19773C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19773C9D1Ev,_ZThn92_N8S19773C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19773C9 = {  "S19773C9", // class name
  bases_S19773C9, 7,
  &(vtc_S19773C9[0]), // expected_vtbl_contents
  &(vtt_S19773C9[0]), // expected_vtt_contents
  ABISELECT(848,456), // object size
  NSPAIRA(_ZTI8S19773C9),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19773C9),28, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19773C9),11, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names167,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19773C12  {
  long double s19773c12f0;
  void *s19773c12f1;
  ::S8033C7 s19773c12f2;
  __tsi64 s19773c12f3;
  long double s19773c12f4;
  int s19773c12f5;
  virtual void  v3(); // _ZN9S19773C122v3Ev
  ~S19773C12(); // tgen
  S19773C12(); // tgen
};
//SIG(-1 S19773C12) C1{ v1 FD Fp FC2{ vd m Fc Fc:0 Fl[8] FD} FL FD Fi}


void  S19773C12 ::v3(){vfunc_called(this, "_ZN9S19773C122v3Ev");}
S19773C12 ::~S19773C12(){ note_dtor("S19773C12", this);} // tgen
S19773C12 ::S19773C12(){ note_ctor("S19773C12", this);} // tgen

static void Test_S19773C12()
{
  extern Class_Descriptor cd_S19773C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,25)];
    init_test(&cd_S19773C12, buf);
    S19773C12 *dp, &lv = *(dp=new (buf) S19773C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,96), "sizeof(S19773C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19773C12)");
    check_field_offset(lv, s19773c12f0, ABISELECT(16,4), "S19773C12.s19773c12f0");
    check_field_offset(lv, s19773c12f1, ABISELECT(32,16), "S19773C12.s19773c12f1");
    check_field_offset(lv, s19773c12f2, ABISELECT(48,20), "S19773C12.s19773c12f2");
    check_field_offset(lv, s19773c12f3, ABISELECT(144,72), "S19773C12.s19773c12f3");
    check_field_offset(lv, s19773c12f4, ABISELECT(160,80), "S19773C12.s19773c12f4");
    check_field_offset(lv, s19773c12f5, ABISELECT(176,92), "S19773C12.s19773c12f5");
    test_class_info(&lv, &cd_S19773C12);
    dp->~S19773C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19773C12(Test_S19773C12, "S19773C12", ABISELECT(192,96));

#else // __cplusplus

extern void _ZN9S19773C12C1Ev();
extern void _ZN9S19773C12D1Ev();
Name_Map name_map_S19773C12[] = {
  NSPAIR(_ZN9S19773C12C1Ev),
  NSPAIR(_ZN9S19773C12D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S19773C12[];
extern void _ZN9S19773C122v3Ev();
static  VTBL_ENTRY vtc_S19773C12[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S19773C12[0]),
  (VTBL_ENTRY)&_ZN9S19773C122v3Ev,
};
extern VTBL_ENTRY _ZTI9S19773C12[];
extern  VTBL_ENTRY _ZTV9S19773C12[];
Class_Descriptor cd_S19773C12 = {  "S19773C12", // class name
  0,0,//no base classes
  &(vtc_S19773C12[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(192,96), // object size
  NSPAIRA(_ZTI9S19773C12),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S19773C12),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19773C3  : virtual S19773C4 , virtual S19773C8 , virtual S19773C9 , virtual S8033C4 , virtual S19773C12 {
  void *s19773c3f0;
  ::S19773C12 s19773c3f1[3];
  ::S19773C12 s19773c3f2;
  char s19773c3f3;
  virtual  ~S19773C3(); // _ZN8S19773C3D2Ev
  S19773C3(); // tgen
};
//SIG(-1 S19773C3) C1{ VBC2{ BC3{ BC4{ vd m Fc Fc:0 Fl[8] FD} Fp FC5{} Fp FD} VBC4 vd FC4 Fp} VBC6{ BC4 VBC3 vd v1 Fi Fc Fp Fi Fp[2] FC2} VBC7{ BC8{ BC4 VBC6 vd Fp FL[2] Fc Fp Fi} VBC9{ VBC3 v2 Fc Fs FD Fp[2]} vd Fc Fi:32} VBC10{ m Fp[3] FL[8]} VBC11{ v3 FD Fp FC4 FL FD Fi} vd Fp FC11[3] FC11 Fc}


 S19773C3 ::~S19773C3(){ note_dtor("S19773C3", this);}
S19773C3 ::S19773C3(){ note_ctor("S19773C3", this);} // tgen

static void Test_S19773C3()
{
  extern Class_Descriptor cd_S19773C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(144,303)];
    init_test(&cd_S19773C3, buf);
    S19773C3 *dp, &lv = *(dp=new (buf) S19773C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2288,1208), "sizeof(S19773C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19773C3)");
    check_base_class_offset(lv, (S8033C7*)(S19773C5*)(S19773C4*), ABISELECT(800,396), "S19773C3");
    check_base_class_offset(lv, (S19773C5*)(S19773C4*), ABISELECT(800,396), "S19773C3");
    /*is_ambiguous_... S19773C4::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19773C4*), ABISELECT(1056,528), "S19773C3");
    check_base_class_offset(lv, (S19773C4*), ABISELECT(800,396), "S19773C3");
    /*is_ambiguous_... S19773C8::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19773C8*), ABISELECT(1152,580), "S19773C3");
    /*is_ambiguous_... S19773C3::S19773C5 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19773C5*), ABISELECT(1648,840), "S19773C3");
    check_base_class_offset(lv, (S19773C5*)(S19773C8*), ABISELECT(1648,840), "S19773C3");
    check_base_class_offset(lv, (S19773C5*)(S19773C11*), ABISELECT(1648,840), "S19773C3");
    check_base_class_offset(lv, (S19773C8*), ABISELECT(1152,580), "S19773C3");
    check_base_class_offset(lv, (S19773C8*)(S19773C10*)(S19773C9*), ABISELECT(1152,580), "S19773C3");
    /*is_ambiguous_... S19773C10::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19773C10*)(S19773C9*), ABISELECT(1792,916), "S19773C3");
    check_base_class_offset(lv, (S19773C10*)(S19773C9*), ABISELECT(1792,916), "S19773C3");
    check_base_class_offset(lv, (S19773C11*)(S19773C9*), ABISELECT(1952,1008), "S19773C3");
    check_base_class_offset(lv, (S19773C9*), ABISELECT(1792,916), "S19773C3");
    check_base_class_offset(lv, (S8033C4*), ABISELECT(2000,1036), "S19773C3");
    check_base_class_offset(lv, (S19773C12*), ABISELECT(2096,1112), "S19773C3");
    check_field_offset(lv, s19773c3f0, ABISELECT(8,4), "S19773C3.s19773c3f0");
    check_field_offset(lv, s19773c3f1, ABISELECT(16,8), "S19773C3.s19773c3f1");
    check_field_offset(lv, s19773c3f2, ABISELECT(592,296), "S19773C3.s19773c3f2");
    check_field_offset(lv, s19773c3f3, ABISELECT(784,392), "S19773C3.s19773c3f3");
    test_class_info(&lv, &cd_S19773C3);
    dp->~S19773C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19773C3(Test_S19773C3, "S19773C3", ABISELECT(2288,1208));

#else // __cplusplus

extern void _ZN8S19773C3C1Ev();
extern void _ZN8S19773C3D2Ev();
Name_Map name_map_S19773C3[] = {
  NSPAIR(_ZN8S19773C3C1Ev),
  NSPAIR(_ZN8S19773C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19773C5;
extern VTBL_ENTRY _ZTI8S19773C5[];
extern  VTBL_ENTRY _ZTV8S19773C5[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19773C4;
extern VTBL_ENTRY _ZTI8S19773C4[];
extern  VTBL_ENTRY _ZTV8S19773C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19773C4[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19773C5;
extern VTBL_ENTRY _ZTI8S19773C5[];
extern  VTBL_ENTRY _ZTV8S19773C5[];
extern Class_Descriptor cd_S19773C8;
extern VTBL_ENTRY _ZTI8S19773C8[];
extern  VTBL_ENTRY _ZTV8S19773C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19773C8[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19773C10;
extern VTBL_ENTRY _ZTI9S19773C10[];
extern  VTBL_ENTRY _ZTV9S19773C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19773C10[];
extern Class_Descriptor cd_S19773C11;
extern VTBL_ENTRY _ZTI9S19773C11[];
extern  VTBL_ENTRY _ZTV9S19773C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19773C11[];
extern Class_Descriptor cd_S19773C9;
extern VTBL_ENTRY _ZTI8S19773C9[];
extern  VTBL_ENTRY _ZTV8S19773C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19773C9[];
extern Class_Descriptor cd_S8033C4;
extern VTBL_ENTRY _ZTI7S8033C4[];
extern Class_Descriptor cd_S19773C12;
extern VTBL_ENTRY _ZTI9S19773C12[];
extern  VTBL_ENTRY _ZTV9S19773C12[];
static Base_Class bases_S19773C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    ABISELECT(800,396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19773C5,    ABISELECT(800,396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(1056,528), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19773C4,    ABISELECT(800,396), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C7,    ABISELECT(1152,580), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(1648,840), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19773C5,    ABISELECT(1648,840), //bcp->offset
    31, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19773C8,    ABISELECT(1152,580), //bcp->offset
    23, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C7,    ABISELECT(1792,916), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19773C10,    ABISELECT(1792,916), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19773C11,    ABISELECT(1952,1008), //bcp->offset
    44, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19773C9,    ABISELECT(1792,916), //bcp->offset
    36, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C4,    ABISELECT(2000,1036), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19773C12,    ABISELECT(2096,1112), //bcp->offset
    52, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19773C3[];
extern void _ZN8S19773C3D1Ev();
extern void _ZN8S19773C3D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S19773C3D1Ev,_ZTv0_n16_N8S19773C3D1Ev)();
extern void ABISELECT(_ZThn800_N8S19773C3D1Ev,_ZThn396_N8S19773C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19773C3D0Ev,_ZTv0_n16_N8S19773C3D0Ev)();
extern void ABISELECT(_ZThn800_N8S19773C3D0Ev,_ZThn396_N8S19773C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19773C3D1Ev,_ZTv0_n12_N8S19773C3D1Ev)();
extern void ABISELECT(_ZThn1056_N8S19773C3D1Ev,_ZThn528_N8S19773C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19773C3D0Ev,_ZTv0_n12_N8S19773C3D0Ev)();
extern void ABISELECT(_ZThn1056_N8S19773C3D0Ev,_ZThn528_N8S19773C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19773C3D1Ev,_ZTv0_n16_N8S19773C3D1Ev)();
extern void ABISELECT(_ZThn1152_N8S19773C3D1Ev,_ZThn580_N8S19773C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19773C3D0Ev,_ZTv0_n16_N8S19773C3D0Ev)();
extern void ABISELECT(_ZThn1152_N8S19773C3D0Ev,_ZThn580_N8S19773C3D0Ev)() __attribute__((weak));
extern void _ZN8S19773C82v1Ev();
extern void ABISELECT(_ZTv0_n24_N8S19773C3D1Ev,_ZTv0_n12_N8S19773C3D1Ev)();
extern void ABISELECT(_ZThn1648_N8S19773C3D1Ev,_ZThn840_N8S19773C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19773C3D0Ev,_ZTv0_n12_N8S19773C3D0Ev)();
extern void ABISELECT(_ZThn1648_N8S19773C3D0Ev,_ZThn840_N8S19773C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19773C3D1Ev,_ZTv0_n24_N8S19773C3D1Ev)();
extern void ABISELECT(_ZThn1792_N8S19773C3D1Ev,_ZThn916_N8S19773C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19773C3D0Ev,_ZTv0_n24_N8S19773C3D0Ev)();
extern void ABISELECT(_ZThn1792_N8S19773C3D0Ev,_ZThn916_N8S19773C3D0Ev)() __attribute__((weak));
extern void _ZN9S19773C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N8S19773C3D1Ev,_ZTv0_n20_N8S19773C3D1Ev)();
extern void ABISELECT(_ZThn1952_N8S19773C3D1Ev,_ZThn1008_N8S19773C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19773C3D0Ev,_ZTv0_n20_N8S19773C3D0Ev)();
extern void ABISELECT(_ZThn1952_N8S19773C3D0Ev,_ZThn1008_N8S19773C3D0Ev)() __attribute__((weak));
extern void _ZN9S19773C122v3Ev();
static  VTBL_ENTRY vtc_S19773C3[] = {
  ABISELECT(2096,1112),
  ABISELECT(2000,1036),
  ABISELECT(1952,1008),
  ABISELECT(1792,916),
  ABISELECT(1648,840),
  ABISELECT(1152,580),
  ABISELECT(1056,528),
  ABISELECT(800,396),
  0,
  (VTBL_ENTRY)&(_ZTI8S19773C3[0]),
  (VTBL_ENTRY)&_ZN8S19773C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19773C3D0Ev,
  ABISELECT(-800,-396),
  ABISELECT(256,132),
  ABISELECT(-800,-396),
  (VTBL_ENTRY)&(_ZTI8S19773C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19773C3D1Ev,_ZTv0_n16_N8S19773C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19773C3D0Ev,_ZTv0_n16_N8S19773C3D0Ev),
  ABISELECT(-1056,-528),
  ABISELECT(-1056,-528),
  (VTBL_ENTRY)&(_ZTI8S19773C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19773C3D1Ev,_ZTv0_n12_N8S19773C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19773C3D0Ev,_ZTv0_n12_N8S19773C3D0Ev),
  0,
  ABISELECT(-1152,-580),
  ABISELECT(496,260),
  ABISELECT(-1152,-580),
  (VTBL_ENTRY)&(_ZTI8S19773C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19773C3D1Ev,_ZTv0_n16_N8S19773C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19773C3D0Ev,_ZTv0_n16_N8S19773C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19773C82v1Ev,
  ABISELECT(-1648,-840),
  ABISELECT(-1648,-840),
  (VTBL_ENTRY)&(_ZTI8S19773C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19773C3D1Ev,_ZTv0_n12_N8S19773C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19773C3D0Ev,_ZTv0_n12_N8S19773C3D0Ev),
  ABISELECT(-1792,-916),
  ABISELECT(160,92),
  ABISELECT(-144,-76),
  ABISELECT(-640,-336),
  ABISELECT(-1792,-916),
  (VTBL_ENTRY)&(_ZTI8S19773C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19773C3D1Ev,_ZTv0_n24_N8S19773C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19773C3D0Ev,_ZTv0_n24_N8S19773C3D0Ev),
  ABISELECT(-1952,-1008),
  0,
  ABISELECT(-304,-168),
  ABISELECT(-1952,-1008),
  (VTBL_ENTRY)&(_ZTI8S19773C3[0]),
  (VTBL_ENTRY)&_ZN9S19773C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19773C3D1Ev,_ZTv0_n20_N8S19773C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19773C3D0Ev,_ZTv0_n20_N8S19773C3D0Ev),
  0,
  ABISELECT(-2096,-1112),
  (VTBL_ENTRY)&(_ZTI8S19773C3[0]),
  (VTBL_ENTRY)&_ZN9S19773C122v3Ev,
};
extern VTBL_ENTRY _ZTV8S19773C3[];
extern void _ZN8S19773C4D1Ev();
extern void _ZN8S19773C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19773C4__8S19773C3[] = {
  ABISELECT(256,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S19773C4[0]),
  (VTBL_ENTRY)&_ZN8S19773C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19773C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19773C4D1Ev,_ZTv0_n12_N8S19773C4D1Ev)();
extern void ABISELECT(_ZThn256_N8S19773C4D1Ev,_ZThn132_N8S19773C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19773C4D0Ev,_ZTv0_n12_N8S19773C4D0Ev)();
extern void ABISELECT(_ZThn256_N8S19773C4D0Ev,_ZThn132_N8S19773C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__8S19773C4__8S19773C3[] = {
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  (VTBL_ENTRY)&(_ZTI8S19773C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19773C4D1Ev,_ZTv0_n12_N8S19773C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19773C4D0Ev,_ZTv0_n12_N8S19773C4D0Ev),
};
extern void _ZN8S19773C8D1Ev();
extern void _ZN8S19773C8D0Ev();
extern void _ZN8S19773C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19773C8__8S19773C3[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19773C8[0]),
  (VTBL_ENTRY)&_ZN8S19773C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19773C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19773C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19773C8D1Ev,_ZTv0_n12_N8S19773C8D1Ev)();
extern void ABISELECT(_ZThn496_N8S19773C8D1Ev,_ZThn260_N8S19773C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19773C8D0Ev,_ZTv0_n12_N8S19773C8D0Ev)();
extern void ABISELECT(_ZThn496_N8S19773C8D0Ev,_ZThn260_N8S19773C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19773C5__8S19773C8__8S19773C3[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI8S19773C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19773C8D1Ev,_ZTv0_n12_N8S19773C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19773C8D0Ev,_ZTv0_n12_N8S19773C8D0Ev),
};
extern void _ZN8S19773C9D1Ev();
extern void _ZN8S19773C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19773C9__8S19773C3[] = {
  ABISELECT(160,92),
  ABISELECT(-144,-76),
  ABISELECT(-640,-336),
  0,
  (VTBL_ENTRY)&(_ZTI8S19773C9[0]),
  (VTBL_ENTRY)&_ZN8S19773C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19773C9D0Ev,
};
extern void _ZN9S19773C10D1Ev();
extern void _ZN9S19773C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19773C108S19773C9__8S19773C3[] = {
  ABISELECT(-144,-76),
  ABISELECT(-640,-336),
  0,
  (VTBL_ENTRY)&(_ZTI9S19773C10[0]),
  (VTBL_ENTRY)&_ZN9S19773C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19773C10D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19773C10D1Ev,_ZTv0_n16_N9S19773C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19773C10D0Ev,_ZTv0_n16_N9S19773C10D0Ev)();
extern void _ZN8S19773C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19773C8__9S19773C108S19773C9__8S19773C3[] = {
  0,
  ABISELECT(640,336),
  ABISELECT(496,260),
  ABISELECT(640,336),
  (VTBL_ENTRY)&(_ZTI9S19773C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19773C10D1Ev,_ZTv0_n16_N9S19773C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19773C10D0Ev,_ZTv0_n16_N9S19773C10D0Ev),
  (VTBL_ENTRY)&_ZN8S19773C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19773C10D1Ev,_ZTv0_n12_N9S19773C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19773C10D0Ev,_ZTv0_n12_N9S19773C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19773C5__9S19773C108S19773C9__8S19773C3[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI9S19773C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19773C10D1Ev,_ZTv0_n12_N9S19773C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19773C10D0Ev,_ZTv0_n12_N9S19773C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19773C9D1Ev,_ZTv0_n16_N8S19773C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19773C9D0Ev,_ZTv0_n16_N8S19773C9D0Ev)();
extern void _ZN8S19773C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19773C8__8S19773C9__8S19773C3[] = {
  0,
  ABISELECT(640,336),
  ABISELECT(496,260),
  ABISELECT(640,336),
  (VTBL_ENTRY)&(_ZTI8S19773C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19773C9D1Ev,_ZTv0_n16_N8S19773C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19773C9D0Ev,_ZTv0_n16_N8S19773C9D0Ev),
  (VTBL_ENTRY)&_ZN8S19773C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19773C9D1Ev,_ZTv0_n12_N8S19773C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19773C9D0Ev,_ZTv0_n12_N8S19773C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19773C5__8S19773C9__8S19773C3[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S19773C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19773C9D1Ev,_ZTv0_n12_N8S19773C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19773C9D0Ev,_ZTv0_n12_N8S19773C9D0Ev),
};
extern void _ZN9S19773C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N8S19773C9D1Ev,_ZTv0_n20_N8S19773C9D1Ev)();
extern void ABISELECT(_ZThn160_N8S19773C9D1Ev,_ZThn92_N8S19773C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19773C9D0Ev,_ZTv0_n20_N8S19773C9D0Ev)();
extern void ABISELECT(_ZThn160_N8S19773C9D0Ev,_ZThn92_N8S19773C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19773C11__8S19773C9__8S19773C3[] = {
  ABISELECT(-160,-92),
  0,
  ABISELECT(-304,-168),
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI8S19773C9[0]),
  (VTBL_ENTRY)&_ZN9S19773C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19773C9D1Ev,_ZTv0_n20_N8S19773C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19773C9D0Ev,_ZTv0_n20_N8S19773C9D0Ev),
};
extern void _ZN9S19773C112v2Ev();
extern void _ZN9S19773C11D1Ev();
extern void _ZN9S19773C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19773C11__8S19773C3[] = {
  ABISELECT(-304,-168),
  0,
  (VTBL_ENTRY)&(_ZTI9S19773C11[0]),
  (VTBL_ENTRY)&_ZN9S19773C112v2Ev,
  (VTBL_ENTRY)&_ZN9S19773C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19773C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19773C11D1Ev,_ZTv0_n12_N9S19773C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19773C11D0Ev,_ZTv0_n12_N9S19773C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19773C5__9S19773C11__8S19773C3[] = {
  ABISELECT(304,168),
  ABISELECT(304,168),
  (VTBL_ENTRY)&(_ZTI9S19773C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19773C11D1Ev,_ZTv0_n12_N9S19773C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19773C11D0Ev,_ZTv0_n12_N9S19773C11D0Ev),
};
static  VTT_ENTRY vtt_S19773C3[] = {
  {&(_ZTV8S19773C3[10]),  10,56},
  {&(_ZTV8S19773C3[16]),  16,56},
  {&(_ZTV8S19773C3[21]),  21,56},
  {&(_ZTV8S19773C3[28]),  28,56},
  {&(_ZTV8S19773C3[34]),  34,56},
  {&(_ZTV8S19773C3[42]),  42,56},
  {&(_ZTV8S19773C3[49]),  49,56},
  {&(_ZTV8S19773C3[55]),  55,56},
  {&(_tg__ZTV8S19773C4__8S19773C3[3]),  3,5},
  {&(_tg__ZTV7S8033C7__A1__8S19773C4__8S19773C3[3]),  3,5},
  {&(_tg__ZTV8S19773C8__8S19773C3[3]),  3,6},
  {&(_tg__ZTV8S19773C5__8S19773C8__8S19773C3[3]),  3,5},
  {&(_tg__ZTV8S19773C9__8S19773C3[5]),  5,7},
  {&(_tg__ZTV9S19773C108S19773C9__8S19773C3[4]),  4,6},
  {&(_tg__ZTV8S19773C8__9S19773C108S19773C9__8S19773C3[5]),  5,8},
  {&(_tg__ZTV8S19773C5__9S19773C108S19773C9__8S19773C3[3]),  3,5},
  {&(_tg__ZTV8S19773C8__8S19773C9__8S19773C3[5]),  5,8},
  {&(_tg__ZTV8S19773C5__8S19773C9__8S19773C3[3]),  3,5},
  {&(_tg__ZTV9S19773C11__8S19773C9__8S19773C3[5]),  5,8},
  {&(_tg__ZTV9S19773C11__8S19773C3[3]),  3,6},
  {&(_tg__ZTV8S19773C5__9S19773C11__8S19773C3[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19773C3[];
extern  VTBL_ENTRY _ZTV8S19773C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19773C3[];
static VTBL_ENTRY alt_thunk_names168[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19773C9D0Ev,_ZTv0_n20_N8S19773C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19773C9D0Ev,_ZThn92_N8S19773C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19773C9D1Ev,_ZTv0_n20_N8S19773C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19773C9D1Ev,_ZThn92_N8S19773C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19773C8D0Ev,_ZTv0_n12_N8S19773C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19773C8D0Ev,_ZThn260_N8S19773C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19773C8D1Ev,_ZTv0_n12_N8S19773C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19773C8D1Ev,_ZThn260_N8S19773C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19773C4D0Ev,_ZTv0_n12_N8S19773C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19773C4D0Ev,_ZThn132_N8S19773C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19773C4D1Ev,_ZTv0_n12_N8S19773C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19773C4D1Ev,_ZThn132_N8S19773C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19773C3D0Ev,_ZTv0_n20_N8S19773C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1952_N8S19773C3D0Ev,_ZThn1008_N8S19773C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19773C3D1Ev,_ZTv0_n20_N8S19773C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1952_N8S19773C3D1Ev,_ZThn1008_N8S19773C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19773C3D0Ev,_ZTv0_n24_N8S19773C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1792_N8S19773C3D0Ev,_ZThn916_N8S19773C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19773C3D1Ev,_ZTv0_n24_N8S19773C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1792_N8S19773C3D1Ev,_ZThn916_N8S19773C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19773C3D0Ev,_ZTv0_n12_N8S19773C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1648_N8S19773C3D0Ev,_ZThn840_N8S19773C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1056_N8S19773C3D0Ev,_ZThn528_N8S19773C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19773C3D1Ev,_ZTv0_n12_N8S19773C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1648_N8S19773C3D1Ev,_ZThn840_N8S19773C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1056_N8S19773C3D1Ev,_ZThn528_N8S19773C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19773C3D0Ev,_ZTv0_n16_N8S19773C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1152_N8S19773C3D0Ev,_ZThn580_N8S19773C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn800_N8S19773C3D0Ev,_ZThn396_N8S19773C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19773C3D1Ev,_ZTv0_n16_N8S19773C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1152_N8S19773C3D1Ev,_ZThn580_N8S19773C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn800_N8S19773C3D1Ev,_ZThn396_N8S19773C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19773C3 = {  "S19773C3", // class name
  bases_S19773C3, 14,
  &(vtc_S19773C3[0]), // expected_vtbl_contents
  &(vtt_S19773C3[0]), // expected_vtt_contents
  ABISELECT(2288,1208), // object size
  NSPAIRA(_ZTI8S19773C3),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19773C3),56, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19773C3),21, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names168,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19773C1  : virtual S8033C4 , S19773C3 , S19773C9 , S19773C12 {
  int s19773c1f0;
  ~S19773C1(); // tgen
  S19773C1(); // tgen
};
//SIG(1 S19773C1) C1{ VBC2{ m Fp[3] FL[8]} BC3{ VBC4{ BC5{ BC6{ vd m Fc Fc:0 Fl[8] FD} Fp FC7{} Fp FD} VBC6 vd FC6 Fp} VBC8{ BC6 VBC5 vd v1 Fi Fc Fp Fi Fp[2] FC4} VBC9{ BC10{ BC6 VBC8 vd Fp FL[2] Fc Fp Fi} VBC11{ VBC5 v2 Fc Fs FD Fp[2]} vd Fc Fi:32} VBC2 VBC12{ v3 FD Fp FC6 FL FD Fi} vd Fp FC12[3] FC12 Fc} BC9 BC12 Fi}


S19773C1 ::~S19773C1(){ note_dtor("S19773C1", this);} // tgen
S19773C1 ::S19773C1(){ note_ctor("S19773C1", this);} // tgen

static void Test_S19773C1()
{
  extern Class_Descriptor cd_S19773C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(165,351)];
    init_test(&cd_S19773C1, buf);
    S19773C1 *dp, &lv = *(dp=new (buf) S19773C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2624,1400), "sizeof(S19773C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19773C1)");
    check_base_class_offset(lv, (S8033C4*), ABISELECT(1144,588), "S19773C1");
    check_base_class_offset(lv, (S8033C4*)(S19773C3*), ABISELECT(1144,588), "S19773C1");
    check_base_class_offset(lv, (S8033C7*)(S19773C5*)(S19773C4*), ABISELECT(1232,664), "S19773C1");
    check_base_class_offset(lv, (S19773C5*)(S19773C4*), ABISELECT(1232,664), "S19773C1");
    /*is_ambiguous_... S19773C4::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19773C4*), ABISELECT(1488,796), "S19773C1");
    check_base_class_offset(lv, (S19773C4*)(S19773C3*), ABISELECT(1232,664), "S19773C1");
    /*is_ambiguous_... S19773C8::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19773C8*), ABISELECT(1584,848), "S19773C1");
    /*is_ambiguous_... S19773C1::S19773C5 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19773C5*), ABISELECT(2080,1108), "S19773C1");
    check_base_class_offset(lv, (S19773C5*)(S19773C8*), ABISELECT(2080,1108), "S19773C1");
    check_base_class_offset(lv, (S19773C5*)(S19773C11*), ABISELECT(2080,1108), "S19773C1");
    check_base_class_offset(lv, (S19773C8*)(S19773C3*), ABISELECT(1584,848), "S19773C1");
    /*is_ambiguous_... S19773C1::S19773C9 */ AMB_check_base_class_offset(lv, (S19773C8*)(S19773C10*)(S19773C9*), ABISELECT(1584,848), "S19773C1");
    /*is_ambiguous_... S19773C1::S19773C9 */ AMB_check_base_class_offset(lv, (S19773C8*)(S19773C10*)(S19773C9*), ABISELECT(1584,848), "S19773C1");
    /*is_ambiguous_... S19773C1::S19773C9 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19773C10*)(S19773C9*), ABISELECT(2224,1184), "S19773C1");
    /*is_ambiguous_... S19773C1::S19773C9 */ AMB_check_base_class_offset(lv, (S19773C10*)(S19773C9*), ABISELECT(2224,1184), "S19773C1");
    /*is_ambiguous_... S19773C1::S19773C9 */ AMB_check_base_class_offset(lv, (S19773C11*)(S19773C9*), ABISELECT(2384,1276), "S19773C1");
    /*is_ambiguous_... S19773C1::S19773C9 */ AMB_check_base_class_offset(lv, (S19773C11*)(S19773C9*), ABISELECT(2384,1276), "S19773C1");
    check_base_class_offset(lv, (S19773C9*)(S19773C3*), ABISELECT(2224,1184), "S19773C1");
    check_base_class_offset(lv, (S19773C12*)(S19773C3*), ABISELECT(2432,1304), "S19773C1");
    check_base_class_offset(lv, (S19773C3*), 0, "S19773C1");
    /*is_ambiguous_... S19773C1::S19773C9 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19773C10*)(S19773C9*), ABISELECT(800,396), "S19773C1");
    /*is_ambiguous_... S19773C1::S19773C9 */ AMB_check_base_class_offset(lv, (S19773C10*)(S19773C9*), ABISELECT(800,396), "S19773C1");
    /*is_ambiguous_... S19773C1::S19773C9 */ AMB_check_base_class_offset(lv, (S19773C9*), ABISELECT(800,396), "S19773C1");
    /*is_ambiguous_... S19773C1::S19773C12 */ AMB_check_base_class_offset(lv, (S19773C12*), ABISELECT(960,488), "S19773C1");
    check_field_offset(lv, s19773c1f0, ABISELECT(1140,584), "S19773C1.s19773c1f0");
    test_class_info(&lv, &cd_S19773C1);
    dp->~S19773C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19773C1(Test_S19773C1, "S19773C1", ABISELECT(2624,1400));

#else // __cplusplus

extern void _ZN8S19773C1C1Ev();
extern void _ZN8S19773C1D1Ev();
Name_Map name_map_S19773C1[] = {
  NSPAIR(_ZN8S19773C1C1Ev),
  NSPAIR(_ZN8S19773C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C4;
extern VTBL_ENTRY _ZTI7S8033C4[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19773C5;
extern VTBL_ENTRY _ZTI8S19773C5[];
extern  VTBL_ENTRY _ZTV8S19773C5[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19773C4;
extern VTBL_ENTRY _ZTI8S19773C4[];
extern  VTBL_ENTRY _ZTV8S19773C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19773C4[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19773C5;
extern VTBL_ENTRY _ZTI8S19773C5[];
extern  VTBL_ENTRY _ZTV8S19773C5[];
extern Class_Descriptor cd_S19773C8;
extern VTBL_ENTRY _ZTI8S19773C8[];
extern  VTBL_ENTRY _ZTV8S19773C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19773C8[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19773C10;
extern VTBL_ENTRY _ZTI9S19773C10[];
extern  VTBL_ENTRY _ZTV9S19773C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19773C10[];
extern Class_Descriptor cd_S19773C11;
extern VTBL_ENTRY _ZTI9S19773C11[];
extern  VTBL_ENTRY _ZTV9S19773C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19773C11[];
extern Class_Descriptor cd_S19773C9;
extern VTBL_ENTRY _ZTI8S19773C9[];
extern  VTBL_ENTRY _ZTV8S19773C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19773C9[];
extern Class_Descriptor cd_S19773C12;
extern VTBL_ENTRY _ZTI9S19773C12[];
extern  VTBL_ENTRY _ZTV9S19773C12[];
extern Class_Descriptor cd_S19773C3;
extern VTBL_ENTRY _ZTI8S19773C3[];
extern  VTBL_ENTRY _ZTV8S19773C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19773C3[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19773C10;
extern VTBL_ENTRY _ZTI9S19773C10[];
extern  VTBL_ENTRY _ZTV9S19773C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19773C10[];
extern Class_Descriptor cd_S19773C9;
extern VTBL_ENTRY _ZTI8S19773C9[];
extern  VTBL_ENTRY _ZTV8S19773C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19773C9[];
extern Class_Descriptor cd_S19773C12;
extern VTBL_ENTRY _ZTI9S19773C12[];
extern  VTBL_ENTRY _ZTV9S19773C12[];
static Base_Class bases_S19773C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C4,    ABISELECT(1144,588), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C7,    ABISELECT(1232,664), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19773C5,    ABISELECT(1232,664), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(1488,796), //bcp->offset
    28, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19773C4,    ABISELECT(1232,664), //bcp->offset
    22, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S8033C7,    ABISELECT(1584,848), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(2080,1108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19773C5,    ABISELECT(2080,1108), //bcp->offset
    41, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19773C8,    ABISELECT(1584,848), //bcp->offset
    33, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S8033C7,    ABISELECT(2224,1184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19773C10,    ABISELECT(2224,1184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19773C11,    ABISELECT(2384,1276), //bcp->offset
    54, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19773C9,    ABISELECT(2224,1184), //bcp->offset
    46, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S19773C12,    ABISELECT(2432,1304), //bcp->offset
    62, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S19773C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S8033C7,    ABISELECT(800,396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19773C10,    ABISELECT(800,396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19773C9,    ABISELECT(800,396), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19773C12,    ABISELECT(960,488), //bcp->offset
    19, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19773C1[];
extern void _ZN8S19773C1D1Ev();
extern void _ZN8S19773C1D0Ev();
extern void ABISELECT(_ZThn800_N8S19773C1D1Ev,_ZThn396_N8S19773C1D1Ev)();
extern void ABISELECT(_ZThn800_N8S19773C1D0Ev,_ZThn396_N8S19773C1D0Ev)();
extern void _ZN9S19773C122v3Ev();
extern void ABISELECT(_ZTv0_n32_N8S19773C1D1Ev,_ZTv0_n16_N8S19773C1D1Ev)();
extern void ABISELECT(_ZThn1232_N8S19773C1D1Ev,_ZThn664_N8S19773C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19773C1D0Ev,_ZTv0_n16_N8S19773C1D0Ev)();
extern void ABISELECT(_ZThn1232_N8S19773C1D0Ev,_ZThn664_N8S19773C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19773C1D1Ev,_ZTv0_n12_N8S19773C1D1Ev)();
extern void ABISELECT(_ZThn1488_N8S19773C1D1Ev,_ZThn796_N8S19773C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19773C1D0Ev,_ZTv0_n12_N8S19773C1D0Ev)();
extern void ABISELECT(_ZThn1488_N8S19773C1D0Ev,_ZThn796_N8S19773C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19773C1D1Ev,_ZTv0_n16_N8S19773C1D1Ev)();
extern void ABISELECT(_ZThn1584_N8S19773C1D1Ev,_ZThn848_N8S19773C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19773C1D0Ev,_ZTv0_n16_N8S19773C1D0Ev)();
extern void ABISELECT(_ZThn1584_N8S19773C1D0Ev,_ZThn848_N8S19773C1D0Ev)() __attribute__((weak));
extern void _ZN8S19773C82v1Ev();
extern void ABISELECT(_ZTv0_n24_N8S19773C1D1Ev,_ZTv0_n12_N8S19773C1D1Ev)();
extern void ABISELECT(_ZThn2080_N8S19773C1D1Ev,_ZThn1108_N8S19773C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19773C1D0Ev,_ZTv0_n12_N8S19773C1D0Ev)();
extern void ABISELECT(_ZThn2080_N8S19773C1D0Ev,_ZThn1108_N8S19773C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19773C1D1Ev,_ZTv0_n24_N8S19773C1D1Ev)();
extern void ABISELECT(_ZThn2224_N8S19773C1D1Ev,_ZThn1184_N8S19773C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19773C1D0Ev,_ZTv0_n24_N8S19773C1D0Ev)();
extern void ABISELECT(_ZThn2224_N8S19773C1D0Ev,_ZThn1184_N8S19773C1D0Ev)() __attribute__((weak));
extern void _ZN9S19773C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N8S19773C1D1Ev,_ZTv0_n20_N8S19773C1D1Ev)();
extern void ABISELECT(_ZThn2384_N8S19773C1D1Ev,_ZThn1276_N8S19773C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19773C1D0Ev,_ZTv0_n20_N8S19773C1D0Ev)();
extern void ABISELECT(_ZThn2384_N8S19773C1D0Ev,_ZThn1276_N8S19773C1D0Ev)() __attribute__((weak));
extern void _ZN9S19773C122v3Ev();
static  VTBL_ENTRY vtc_S19773C1[] = {
  ABISELECT(2432,1304),
  ABISELECT(1144,588),
  ABISELECT(2384,1276),
  ABISELECT(2224,1184),
  ABISELECT(2080,1108),
  ABISELECT(1584,848),
  ABISELECT(1488,796),
  ABISELECT(1232,664),
  0,
  (VTBL_ENTRY)&(_ZTI8S19773C1[0]),
  (VTBL_ENTRY)&_ZN8S19773C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19773C1D0Ev,
  ABISELECT(1584,880),
  ABISELECT(1280,712),
  ABISELECT(784,452),
  ABISELECT(-800,-396),
  (VTBL_ENTRY)&(_ZTI8S19773C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn800_N8S19773C1D1Ev,_ZThn396_N8S19773C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn800_N8S19773C1D0Ev,_ZThn396_N8S19773C1D0Ev),
  ABISELECT(-960,-488),
  (VTBL_ENTRY)&(_ZTI8S19773C1[0]),
  (VTBL_ENTRY)&_ZN9S19773C122v3Ev,
  ABISELECT(-1232,-664),
  ABISELECT(256,132),
  ABISELECT(-1232,-664),
  (VTBL_ENTRY)&(_ZTI8S19773C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19773C1D1Ev,_ZTv0_n16_N8S19773C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19773C1D0Ev,_ZTv0_n16_N8S19773C1D0Ev),
  ABISELECT(-1488,-796),
  ABISELECT(-1488,-796),
  (VTBL_ENTRY)&(_ZTI8S19773C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19773C1D1Ev,_ZTv0_n12_N8S19773C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19773C1D0Ev,_ZTv0_n12_N8S19773C1D0Ev),
  0,
  ABISELECT(-1584,-848),
  ABISELECT(496,260),
  ABISELECT(-1584,-848),
  (VTBL_ENTRY)&(_ZTI8S19773C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19773C1D1Ev,_ZTv0_n16_N8S19773C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19773C1D0Ev,_ZTv0_n16_N8S19773C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19773C82v1Ev,
  ABISELECT(-2080,-1108),
  ABISELECT(-2080,-1108),
  (VTBL_ENTRY)&(_ZTI8S19773C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19773C1D1Ev,_ZTv0_n12_N8S19773C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19773C1D0Ev,_ZTv0_n12_N8S19773C1D0Ev),
  ABISELECT(-2224,-1184),
  ABISELECT(160,92),
  ABISELECT(-144,-76),
  ABISELECT(-640,-336),
  ABISELECT(-2224,-1184),
  (VTBL_ENTRY)&(_ZTI8S19773C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19773C1D1Ev,_ZTv0_n24_N8S19773C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19773C1D0Ev,_ZTv0_n24_N8S19773C1D0Ev),
  ABISELECT(-2384,-1276),
  0,
  ABISELECT(-304,-168),
  ABISELECT(-2384,-1276),
  (VTBL_ENTRY)&(_ZTI8S19773C1[0]),
  (VTBL_ENTRY)&_ZN9S19773C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19773C1D1Ev,_ZTv0_n20_N8S19773C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19773C1D0Ev,_ZTv0_n20_N8S19773C1D0Ev),
  0,
  ABISELECT(-2432,-1304),
  (VTBL_ENTRY)&(_ZTI8S19773C1[0]),
  (VTBL_ENTRY)&_ZN9S19773C122v3Ev,
};
extern VTBL_ENTRY _ZTV8S19773C1[];
extern void _ZN8S19773C3D1Ev();
extern void _ZN8S19773C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19773C3__8S19773C1[] = {
  ABISELECT(2432,1304),
  ABISELECT(1144,588),
  ABISELECT(2384,1276),
  ABISELECT(2224,1184),
  ABISELECT(2080,1108),
  ABISELECT(1584,848),
  ABISELECT(1488,796),
  ABISELECT(1232,664),
  0,
  (VTBL_ENTRY)&(_ZTI8S19773C3[0]),
  (VTBL_ENTRY)&_ZN8S19773C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19773C3D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19773C3D1Ev,_ZTv0_n16_N8S19773C3D1Ev)();
extern void ABISELECT(_ZThn1232_N8S19773C3D1Ev,_ZThn664_N8S19773C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19773C3D0Ev,_ZTv0_n16_N8S19773C3D0Ev)();
extern void ABISELECT(_ZThn1232_N8S19773C3D0Ev,_ZThn664_N8S19773C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19773C4__8S19773C3__8S19773C1[] = {
  ABISELECT(-1232,-664),
  ABISELECT(256,132),
  ABISELECT(-1232,-664),
  (VTBL_ENTRY)&(_ZTI8S19773C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19773C3D1Ev,_ZTv0_n16_N8S19773C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19773C3D0Ev,_ZTv0_n16_N8S19773C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19773C3D1Ev,_ZTv0_n12_N8S19773C3D1Ev)();
extern void ABISELECT(_ZThn1488_N8S19773C3D1Ev,_ZThn796_N8S19773C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19773C3D0Ev,_ZTv0_n12_N8S19773C3D0Ev)();
extern void ABISELECT(_ZThn1488_N8S19773C3D0Ev,_ZThn796_N8S19773C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__8S19773C3__8S19773C1[] = {
  ABISELECT(-1488,-796),
  ABISELECT(-1488,-796),
  (VTBL_ENTRY)&(_ZTI8S19773C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19773C3D1Ev,_ZTv0_n12_N8S19773C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19773C3D0Ev,_ZTv0_n12_N8S19773C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19773C3D1Ev,_ZTv0_n16_N8S19773C3D1Ev)();
extern void ABISELECT(_ZThn1584_N8S19773C3D1Ev,_ZThn848_N8S19773C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19773C3D0Ev,_ZTv0_n16_N8S19773C3D0Ev)();
extern void ABISELECT(_ZThn1584_N8S19773C3D0Ev,_ZThn848_N8S19773C3D0Ev)() __attribute__((weak));
extern void _ZN8S19773C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19773C8__8S19773C3__8S19773C1[] = {
  0,
  ABISELECT(-1584,-848),
  ABISELECT(496,260),
  ABISELECT(-1584,-848),
  (VTBL_ENTRY)&(_ZTI8S19773C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19773C3D1Ev,_ZTv0_n16_N8S19773C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19773C3D0Ev,_ZTv0_n16_N8S19773C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19773C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19773C3D1Ev,_ZTv0_n12_N8S19773C3D1Ev)();
extern void ABISELECT(_ZThn2080_N8S19773C3D1Ev,_ZThn1108_N8S19773C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19773C3D0Ev,_ZTv0_n12_N8S19773C3D0Ev)();
extern void ABISELECT(_ZThn2080_N8S19773C3D0Ev,_ZThn1108_N8S19773C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19773C5__A1__8S19773C3__8S19773C1[] = {
  ABISELECT(-2080,-1108),
  ABISELECT(-2080,-1108),
  (VTBL_ENTRY)&(_ZTI8S19773C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19773C3D1Ev,_ZTv0_n12_N8S19773C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19773C3D0Ev,_ZTv0_n12_N8S19773C3D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S19773C3D1Ev,_ZTv0_n24_N8S19773C3D1Ev)();
extern void ABISELECT(_ZThn2224_N8S19773C3D1Ev,_ZThn1184_N8S19773C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19773C3D0Ev,_ZTv0_n24_N8S19773C3D0Ev)();
extern void ABISELECT(_ZThn2224_N8S19773C3D0Ev,_ZThn1184_N8S19773C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19773C9__8S19773C3__8S19773C1[] = {
  ABISELECT(-2224,-1184),
  ABISELECT(160,92),
  ABISELECT(-144,-76),
  ABISELECT(-640,-336),
  ABISELECT(-2224,-1184),
  (VTBL_ENTRY)&(_ZTI8S19773C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19773C3D1Ev,_ZTv0_n24_N8S19773C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19773C3D0Ev,_ZTv0_n24_N8S19773C3D0Ev),
};
extern void _ZN9S19773C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N8S19773C3D1Ev,_ZTv0_n20_N8S19773C3D1Ev)();
extern void ABISELECT(_ZThn2384_N8S19773C3D1Ev,_ZThn1276_N8S19773C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19773C3D0Ev,_ZTv0_n20_N8S19773C3D0Ev)();
extern void ABISELECT(_ZThn2384_N8S19773C3D0Ev,_ZThn1276_N8S19773C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19773C11__8S19773C3__8S19773C1[] = {
  ABISELECT(-2384,-1276),
  0,
  ABISELECT(-304,-168),
  ABISELECT(-2384,-1276),
  (VTBL_ENTRY)&(_ZTI8S19773C3[0]),
  (VTBL_ENTRY)&_ZN9S19773C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19773C3D1Ev,_ZTv0_n20_N8S19773C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19773C3D0Ev,_ZTv0_n20_N8S19773C3D0Ev),
};
extern void _ZN9S19773C122v3Ev();
static  VTBL_ENTRY _tg__ZTV9S19773C12__8S19773C3__8S19773C1[] = {
  0,
  ABISELECT(-2432,-1304),
  (VTBL_ENTRY)&(_ZTI8S19773C3[0]),
  (VTBL_ENTRY)&_ZN9S19773C122v3Ev,
};
extern void _ZN8S19773C9D1Ev();
extern void _ZN8S19773C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19773C9__A__8S19773C1[] = {
  ABISELECT(1584,880),
  ABISELECT(1280,712),
  ABISELECT(784,452),
  0,
  (VTBL_ENTRY)&(_ZTI8S19773C9[0]),
  (VTBL_ENTRY)&_ZN8S19773C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19773C9D0Ev,
};
extern void _ZN9S19773C10D1Ev();
extern void _ZN9S19773C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19773C108S19773C9__A1__8S19773C1[] = {
  ABISELECT(1280,712),
  ABISELECT(784,452),
  0,
  (VTBL_ENTRY)&(_ZTI9S19773C10[0]),
  (VTBL_ENTRY)&_ZN9S19773C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19773C10D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19773C10D1Ev,_ZTv0_n16_N9S19773C10D1Ev)();
extern void ABISELECT(_ZThn784_N9S19773C10D1Ev,_ZThn452_N9S19773C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19773C10D0Ev,_ZTv0_n16_N9S19773C10D0Ev)();
extern void ABISELECT(_ZThn784_N9S19773C10D0Ev,_ZThn452_N9S19773C10D0Ev)() __attribute__((weak));
extern void _ZN8S19773C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19773C8__9S19773C108S19773C9__A1__8S19773C1[] = {
  0,
  ABISELECT(-784,-452),
  ABISELECT(496,260),
  ABISELECT(-784,-452),
  (VTBL_ENTRY)&(_ZTI9S19773C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19773C10D1Ev,_ZTv0_n16_N9S19773C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19773C10D0Ev,_ZTv0_n16_N9S19773C10D0Ev),
  (VTBL_ENTRY)&_ZN8S19773C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19773C10D1Ev,_ZTv0_n12_N9S19773C10D1Ev)();
extern void ABISELECT(_ZThn1280_N9S19773C10D1Ev,_ZThn712_N9S19773C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19773C10D0Ev,_ZTv0_n12_N9S19773C10D0Ev)();
extern void ABISELECT(_ZThn1280_N9S19773C10D0Ev,_ZThn712_N9S19773C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19773C5__9S19773C108S19773C9__A1__8S19773C1[] = {
  ABISELECT(-1280,-712),
  ABISELECT(-1280,-712),
  (VTBL_ENTRY)&(_ZTI9S19773C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19773C10D1Ev,_ZTv0_n12_N9S19773C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19773C10D0Ev,_ZTv0_n12_N9S19773C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19773C9D1Ev,_ZTv0_n16_N8S19773C9D1Ev)();
extern void ABISELECT(_ZThn784_N8S19773C9D1Ev,_ZThn452_N8S19773C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19773C9D0Ev,_ZTv0_n16_N8S19773C9D0Ev)();
extern void ABISELECT(_ZThn784_N8S19773C9D0Ev,_ZThn452_N8S19773C9D0Ev)() __attribute__((weak));
extern void _ZN8S19773C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19773C8__8S19773C9__A__8S19773C1[] = {
  0,
  ABISELECT(-784,-452),
  ABISELECT(496,260),
  ABISELECT(-784,-452),
  (VTBL_ENTRY)&(_ZTI8S19773C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19773C9D1Ev,_ZTv0_n16_N8S19773C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19773C9D0Ev,_ZTv0_n16_N8S19773C9D0Ev),
  (VTBL_ENTRY)&_ZN8S19773C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19773C9D1Ev,_ZTv0_n12_N8S19773C9D1Ev)();
extern void ABISELECT(_ZThn1280_N8S19773C9D1Ev,_ZThn712_N8S19773C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19773C9D0Ev,_ZTv0_n12_N8S19773C9D0Ev)();
extern void ABISELECT(_ZThn1280_N8S19773C9D0Ev,_ZThn712_N8S19773C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19773C5__8S19773C9__A__8S19773C1[] = {
  ABISELECT(-1280,-712),
  ABISELECT(-1280,-712),
  (VTBL_ENTRY)&(_ZTI8S19773C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19773C9D1Ev,_ZTv0_n12_N8S19773C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19773C9D0Ev,_ZTv0_n12_N8S19773C9D0Ev),
};
extern void _ZN9S19773C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N8S19773C9D1Ev,_ZTv0_n20_N8S19773C9D1Ev)();
extern void ABISELECT(_ZThn1584_N8S19773C9D1Ev,_ZThn880_N8S19773C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19773C9D0Ev,_ZTv0_n20_N8S19773C9D0Ev)();
extern void ABISELECT(_ZThn1584_N8S19773C9D0Ev,_ZThn880_N8S19773C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19773C11__8S19773C9__A__8S19773C1[] = {
  ABISELECT(-1584,-880),
  0,
  ABISELECT(-304,-168),
  ABISELECT(-1584,-880),
  (VTBL_ENTRY)&(_ZTI8S19773C9[0]),
  (VTBL_ENTRY)&_ZN9S19773C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19773C9D1Ev,_ZTv0_n20_N8S19773C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19773C9D0Ev,_ZTv0_n20_N8S19773C9D0Ev),
};
extern void _ZN8S19773C4D1Ev();
extern void _ZN8S19773C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19773C4__8S19773C1[] = {
  ABISELECT(256,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S19773C4[0]),
  (VTBL_ENTRY)&_ZN8S19773C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19773C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19773C4D1Ev,_ZTv0_n12_N8S19773C4D1Ev)();
extern void ABISELECT(_ZThn256_N8S19773C4D1Ev,_ZThn132_N8S19773C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19773C4D0Ev,_ZTv0_n12_N8S19773C4D0Ev)();
extern void ABISELECT(_ZThn256_N8S19773C4D0Ev,_ZThn132_N8S19773C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__8S19773C4__8S19773C1[] = {
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  (VTBL_ENTRY)&(_ZTI8S19773C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19773C4D1Ev,_ZTv0_n12_N8S19773C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19773C4D0Ev,_ZTv0_n12_N8S19773C4D0Ev),
};
extern void _ZN8S19773C8D1Ev();
extern void _ZN8S19773C8D0Ev();
extern void _ZN8S19773C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19773C8__8S19773C1[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19773C8[0]),
  (VTBL_ENTRY)&_ZN8S19773C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19773C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19773C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19773C8D1Ev,_ZTv0_n12_N8S19773C8D1Ev)();
extern void ABISELECT(_ZThn496_N8S19773C8D1Ev,_ZThn260_N8S19773C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19773C8D0Ev,_ZTv0_n12_N8S19773C8D0Ev)();
extern void ABISELECT(_ZThn496_N8S19773C8D0Ev,_ZThn260_N8S19773C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19773C5__8S19773C8__8S19773C1[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI8S19773C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19773C8D1Ev,_ZTv0_n12_N8S19773C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19773C8D0Ev,_ZTv0_n12_N8S19773C8D0Ev),
};
extern void _ZN8S19773C9D1Ev();
extern void _ZN8S19773C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19773C9__8S19773C1[] = {
  ABISELECT(160,92),
  ABISELECT(-144,-76),
  ABISELECT(-640,-336),
  0,
  (VTBL_ENTRY)&(_ZTI8S19773C9[0]),
  (VTBL_ENTRY)&_ZN8S19773C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19773C9D0Ev,
};
extern void _ZN9S19773C10D1Ev();
extern void _ZN9S19773C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19773C108S19773C9__8S19773C1[] = {
  ABISELECT(-144,-76),
  ABISELECT(-640,-336),
  0,
  (VTBL_ENTRY)&(_ZTI9S19773C10[0]),
  (VTBL_ENTRY)&_ZN9S19773C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19773C10D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19773C10D1Ev,_ZTv0_n16_N9S19773C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19773C10D0Ev,_ZTv0_n16_N9S19773C10D0Ev)();
extern void _ZN8S19773C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19773C8__9S19773C108S19773C9__8S19773C1[] = {
  0,
  ABISELECT(640,336),
  ABISELECT(496,260),
  ABISELECT(640,336),
  (VTBL_ENTRY)&(_ZTI9S19773C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19773C10D1Ev,_ZTv0_n16_N9S19773C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19773C10D0Ev,_ZTv0_n16_N9S19773C10D0Ev),
  (VTBL_ENTRY)&_ZN8S19773C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19773C10D1Ev,_ZTv0_n12_N9S19773C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19773C10D0Ev,_ZTv0_n12_N9S19773C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19773C5__9S19773C108S19773C9__8S19773C1[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI9S19773C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19773C10D1Ev,_ZTv0_n12_N9S19773C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19773C10D0Ev,_ZTv0_n12_N9S19773C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19773C9D1Ev,_ZTv0_n16_N8S19773C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19773C9D0Ev,_ZTv0_n16_N8S19773C9D0Ev)();
extern void _ZN8S19773C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19773C8__8S19773C9__8S19773C1[] = {
  0,
  ABISELECT(640,336),
  ABISELECT(496,260),
  ABISELECT(640,336),
  (VTBL_ENTRY)&(_ZTI8S19773C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19773C9D1Ev,_ZTv0_n16_N8S19773C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19773C9D0Ev,_ZTv0_n16_N8S19773C9D0Ev),
  (VTBL_ENTRY)&_ZN8S19773C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19773C9D1Ev,_ZTv0_n12_N8S19773C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19773C9D0Ev,_ZTv0_n12_N8S19773C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19773C5__8S19773C9__8S19773C1[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S19773C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19773C9D1Ev,_ZTv0_n12_N8S19773C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19773C9D0Ev,_ZTv0_n12_N8S19773C9D0Ev),
};
extern void _ZN9S19773C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N8S19773C9D1Ev,_ZTv0_n20_N8S19773C9D1Ev)();
extern void ABISELECT(_ZThn160_N8S19773C9D1Ev,_ZThn92_N8S19773C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19773C9D0Ev,_ZTv0_n20_N8S19773C9D0Ev)();
extern void ABISELECT(_ZThn160_N8S19773C9D0Ev,_ZThn92_N8S19773C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19773C11__8S19773C9__8S19773C1[] = {
  ABISELECT(-160,-92),
  0,
  ABISELECT(-304,-168),
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI8S19773C9[0]),
  (VTBL_ENTRY)&_ZN9S19773C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19773C9D1Ev,_ZTv0_n20_N8S19773C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19773C9D0Ev,_ZTv0_n20_N8S19773C9D0Ev),
};
extern void _ZN9S19773C112v2Ev();
extern void _ZN9S19773C11D1Ev();
extern void _ZN9S19773C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19773C11__8S19773C1[] = {
  ABISELECT(-304,-168),
  0,
  (VTBL_ENTRY)&(_ZTI9S19773C11[0]),
  (VTBL_ENTRY)&_ZN9S19773C112v2Ev,
  (VTBL_ENTRY)&_ZN9S19773C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19773C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19773C11D1Ev,_ZTv0_n12_N9S19773C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19773C11D0Ev,_ZTv0_n12_N9S19773C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19773C5__9S19773C11__8S19773C1[] = {
  ABISELECT(304,168),
  ABISELECT(304,168),
  (VTBL_ENTRY)&(_ZTI9S19773C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19773C11D1Ev,_ZTv0_n12_N9S19773C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19773C11D0Ev,_ZTv0_n12_N9S19773C11D0Ev),
};
static  VTT_ENTRY vtt_S19773C1[] = {
  {&(_ZTV8S19773C1[10]),  10,66},
  {&(_tg__ZTV8S19773C3__8S19773C1[10]),  10,12},
  {&(_tg__ZTV8S19773C4__8S19773C3__8S19773C1[4]),  4,6},
  {&(_tg__ZTV7S8033C7__A1__8S19773C3__8S19773C1[3]),  3,5},
  {&(_tg__ZTV8S19773C8__8S19773C3__8S19773C1[5]),  5,8},
  {&(_tg__ZTV8S19773C5__A1__8S19773C3__8S19773C1[3]),  3,5},
  {&(_tg__ZTV8S19773C9__8S19773C3__8S19773C1[6]),  6,8},
  {&(_tg__ZTV9S19773C11__8S19773C3__8S19773C1[5]),  5,8},
  {&(_tg__ZTV9S19773C12__8S19773C3__8S19773C1[3]),  3,4},
  {&(_tg__ZTV8S19773C9__A__8S19773C1[5]),  5,7},
  {&(_tg__ZTV9S19773C108S19773C9__A1__8S19773C1[4]),  4,6},
  {&(_tg__ZTV8S19773C8__9S19773C108S19773C9__A1__8S19773C1[5]),  5,8},
  {&(_tg__ZTV8S19773C5__9S19773C108S19773C9__A1__8S19773C1[3]),  3,5},
  {&(_tg__ZTV8S19773C8__8S19773C9__A__8S19773C1[5]),  5,8},
  {&(_tg__ZTV8S19773C5__8S19773C9__A__8S19773C1[3]),  3,5},
  {&(_tg__ZTV9S19773C11__8S19773C9__A__8S19773C1[5]),  5,8},
  {&(_ZTV8S19773C1[26]),  26,66},
  {&(_ZTV8S19773C1[31]),  31,66},
  {&(_ZTV8S19773C1[38]),  38,66},
  {&(_ZTV8S19773C1[44]),  44,66},
  {&(_ZTV8S19773C1[52]),  52,66},
  {&(_ZTV8S19773C1[59]),  59,66},
  {&(_ZTV8S19773C1[65]),  65,66},
  {&(_ZTV8S19773C1[17]),  17,66},
  {&(_tg__ZTV8S19773C4__8S19773C1[3]),  3,5},
  {&(_tg__ZTV7S8033C7__A1__8S19773C4__8S19773C1[3]),  3,5},
  {&(_tg__ZTV8S19773C8__8S19773C1[3]),  3,6},
  {&(_tg__ZTV8S19773C5__8S19773C8__8S19773C1[3]),  3,5},
  {&(_tg__ZTV8S19773C9__8S19773C1[5]),  5,7},
  {&(_tg__ZTV9S19773C108S19773C9__8S19773C1[4]),  4,6},
  {&(_tg__ZTV8S19773C8__9S19773C108S19773C9__8S19773C1[5]),  5,8},
  {&(_tg__ZTV8S19773C5__9S19773C108S19773C9__8S19773C1[3]),  3,5},
  {&(_tg__ZTV8S19773C8__8S19773C9__8S19773C1[5]),  5,8},
  {&(_tg__ZTV8S19773C5__8S19773C9__8S19773C1[3]),  3,5},
  {&(_tg__ZTV9S19773C11__8S19773C9__8S19773C1[5]),  5,8},
  {&(_tg__ZTV9S19773C11__8S19773C1[3]),  3,6},
  {&(_tg__ZTV8S19773C5__9S19773C11__8S19773C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19773C1[];
extern  VTBL_ENTRY _ZTV8S19773C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19773C1[];
static VTBL_ENTRY alt_thunk_names169[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19773C8D0Ev,_ZTv0_n12_N8S19773C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19773C8D0Ev,_ZThn260_N8S19773C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19773C8D1Ev,_ZTv0_n12_N8S19773C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19773C8D1Ev,_ZThn260_N8S19773C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19773C4D0Ev,_ZTv0_n12_N8S19773C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19773C4D0Ev,_ZThn132_N8S19773C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19773C4D1Ev,_ZTv0_n12_N8S19773C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19773C4D1Ev,_ZThn132_N8S19773C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19773C9D0Ev,_ZTv0_n20_N8S19773C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19773C9D0Ev,_ZThn92_N8S19773C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1584_N8S19773C9D0Ev,_ZThn880_N8S19773C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19773C9D1Ev,_ZTv0_n20_N8S19773C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19773C9D1Ev,_ZThn92_N8S19773C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1584_N8S19773C9D1Ev,_ZThn880_N8S19773C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19773C9D0Ev,_ZTv0_n12_N8S19773C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1280_N8S19773C9D0Ev,_ZThn712_N8S19773C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19773C9D1Ev,_ZTv0_n12_N8S19773C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1280_N8S19773C9D1Ev,_ZThn712_N8S19773C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19773C9D0Ev,_ZTv0_n16_N8S19773C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N8S19773C9D0Ev,_ZThn452_N8S19773C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19773C9D1Ev,_ZTv0_n16_N8S19773C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N8S19773C9D1Ev,_ZThn452_N8S19773C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19773C10D0Ev,_ZTv0_n12_N9S19773C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1280_N9S19773C10D0Ev,_ZThn712_N9S19773C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19773C10D1Ev,_ZTv0_n12_N9S19773C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1280_N9S19773C10D1Ev,_ZThn712_N9S19773C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19773C10D0Ev,_ZTv0_n16_N9S19773C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N9S19773C10D0Ev,_ZThn452_N9S19773C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19773C10D1Ev,_ZTv0_n16_N9S19773C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N9S19773C10D1Ev,_ZThn452_N9S19773C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19773C3D0Ev,_ZTv0_n20_N8S19773C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2384_N8S19773C3D0Ev,_ZThn1276_N8S19773C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19773C3D1Ev,_ZTv0_n20_N8S19773C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2384_N8S19773C3D1Ev,_ZThn1276_N8S19773C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19773C3D0Ev,_ZTv0_n24_N8S19773C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2224_N8S19773C3D0Ev,_ZThn1184_N8S19773C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19773C3D1Ev,_ZTv0_n24_N8S19773C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2224_N8S19773C3D1Ev,_ZThn1184_N8S19773C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19773C3D0Ev,_ZTv0_n12_N8S19773C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2080_N8S19773C3D0Ev,_ZThn1108_N8S19773C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1488_N8S19773C3D0Ev,_ZThn796_N8S19773C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19773C3D1Ev,_ZTv0_n12_N8S19773C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2080_N8S19773C3D1Ev,_ZThn1108_N8S19773C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1488_N8S19773C3D1Ev,_ZThn796_N8S19773C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19773C3D0Ev,_ZTv0_n16_N8S19773C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1584_N8S19773C3D0Ev,_ZThn848_N8S19773C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1232_N8S19773C3D0Ev,_ZThn664_N8S19773C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19773C3D1Ev,_ZTv0_n16_N8S19773C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1584_N8S19773C3D1Ev,_ZThn848_N8S19773C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1232_N8S19773C3D1Ev,_ZThn664_N8S19773C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19773C1D0Ev,_ZTv0_n20_N8S19773C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2384_N8S19773C1D0Ev,_ZThn1276_N8S19773C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19773C1D1Ev,_ZTv0_n20_N8S19773C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2384_N8S19773C1D1Ev,_ZThn1276_N8S19773C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19773C1D0Ev,_ZTv0_n24_N8S19773C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2224_N8S19773C1D0Ev,_ZThn1184_N8S19773C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19773C1D1Ev,_ZTv0_n24_N8S19773C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2224_N8S19773C1D1Ev,_ZThn1184_N8S19773C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19773C1D0Ev,_ZTv0_n12_N8S19773C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2080_N8S19773C1D0Ev,_ZThn1108_N8S19773C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1488_N8S19773C1D0Ev,_ZThn796_N8S19773C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19773C1D1Ev,_ZTv0_n12_N8S19773C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2080_N8S19773C1D1Ev,_ZThn1108_N8S19773C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1488_N8S19773C1D1Ev,_ZThn796_N8S19773C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19773C1D0Ev,_ZTv0_n16_N8S19773C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1584_N8S19773C1D0Ev,_ZThn848_N8S19773C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1232_N8S19773C1D0Ev,_ZThn664_N8S19773C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19773C1D1Ev,_ZTv0_n16_N8S19773C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1584_N8S19773C1D1Ev,_ZThn848_N8S19773C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1232_N8S19773C1D1Ev,_ZThn664_N8S19773C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19773C1 = {  "S19773C1", // class name
  bases_S19773C1, 19,
  &(vtc_S19773C1[0]), // expected_vtbl_contents
  &(vtt_S19773C1[0]), // expected_vtt_contents
  ABISELECT(2624,1400), // object size
  NSPAIRA(_ZTI8S19773C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19773C1),66, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19773C1),37, //virtual table table var
  18, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names169,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19772C5  : S8033C7 {
  void *s19772c5f0;
  ::S20291C14_nt s19772c5f1;
  void *s19772c5f2;
  long double s19772c5f3;
  ~S19772C5(); // tgen
  S19772C5(); // tgen
};
//SIG(-1 S19772C5) C1{ BC2{ vd m Fc Fc:0 Fl[8] FD} Fp FC3{} Fp FD}


S19772C5 ::~S19772C5(){ note_dtor("S19772C5", this);} // tgen
S19772C5 ::S19772C5(){ note_ctor("S19772C5", this);} // tgen

static void Test_S19772C5()
{
  extern Class_Descriptor cd_S19772C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(10,20)];
    init_test(&cd_S19772C5, buf);
    S19772C5 *dp, &lv = *(dp=new (buf) S19772C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,76), "sizeof(S19772C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19772C5)");
    check_base_class_offset(lv, (S8033C7*), 0, "S19772C5");
    check_field_offset(lv, s19772c5f0, ABISELECT(96,52), "S19772C5.s19772c5f0");
    check_field_offset(lv, s19772c5f1, ABISELECT(104,56), "S19772C5.s19772c5f1");
    check_field_offset(lv, s19772c5f2, ABISELECT(112,60), "S19772C5.s19772c5f2");
    check_field_offset(lv, s19772c5f3, ABISELECT(128,64), "S19772C5.s19772c5f3");
    test_class_info(&lv, &cd_S19772C5);
    dp->~S19772C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19772C5(Test_S19772C5, "S19772C5", ABISELECT(144,76));

#else // __cplusplus

extern void _ZN8S19772C5C1Ev();
extern void _ZN8S19772C5D1Ev();
Name_Map name_map_S19772C5[] = {
  NSPAIR(_ZN8S19772C5C1Ev),
  NSPAIR(_ZN8S19772C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
static Base_Class bases_S19772C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19772C5[];
extern void _ZN8S19772C5D1Ev();
extern void _ZN8S19772C5D0Ev();
static  VTBL_ENTRY vtc_S19772C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19772C5[0]),
  (VTBL_ENTRY)&_ZN8S19772C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19772C5D0Ev,
};
extern VTBL_ENTRY _ZTI8S19772C5[];
extern  VTBL_ENTRY _ZTV8S19772C5[];
Class_Descriptor cd_S19772C5 = {  "S19772C5", // class name
  bases_S19772C5, 1,
  &(vtc_S19772C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,76), // object size
  NSPAIRA(_ZTI8S19772C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19772C5),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19772C4  : S19772C5 , virtual S8033C7 {
  ::S8033C7 s19772c4f0;
  void *s19772c4f1;
  virtual  ~S19772C4(); // _ZN8S19772C4D2Ev
  S19772C4(); // tgen
};
//SIG(-1 S19772C4) C1{ BC2{ BC3{ vd m Fc Fc:0 Fl[8] FD} Fp FC4{} Fp FD} VBC3 vd FC3 Fp}


 S19772C4 ::~S19772C4(){ note_dtor("S19772C4", this);}
S19772C4 ::S19772C4(){ note_ctor("S19772C4", this);} // tgen

static void Test_S19772C4()
{
  extern Class_Descriptor cd_S19772C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(23,47)];
    init_test(&cd_S19772C4, buf);
    S19772C4 *dp, &lv = *(dp=new (buf) S19772C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(352,184), "sizeof(S19772C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19772C4)");
    check_base_class_offset(lv, (S8033C7*)(S19772C5*), 0, "S19772C4");
    check_base_class_offset(lv, (S19772C5*), 0, "S19772C4");
    /*is_ambiguous_... S19772C4::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*), ABISELECT(256,132), "S19772C4");
    check_field_offset(lv, s19772c4f0, ABISELECT(144,76), "S19772C4.s19772c4f0");
    check_field_offset(lv, s19772c4f1, ABISELECT(240,128), "S19772C4.s19772c4f1");
    test_class_info(&lv, &cd_S19772C4);
    dp->~S19772C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19772C4(Test_S19772C4, "S19772C4", ABISELECT(352,184));

#else // __cplusplus

extern void _ZN8S19772C4C1Ev();
extern void _ZN8S19772C4D2Ev();
Name_Map name_map_S19772C4[] = {
  NSPAIR(_ZN8S19772C4C1Ev),
  NSPAIR(_ZN8S19772C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19772C5;
extern VTBL_ENTRY _ZTI8S19772C5[];
extern  VTBL_ENTRY _ZTV8S19772C5[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
static Base_Class bases_S19772C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19772C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S8033C7,    ABISELECT(256,132), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19772C4[];
extern void _ZN8S19772C4D1Ev();
extern void _ZN8S19772C4D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S19772C4D1Ev,_ZTv0_n12_N8S19772C4D1Ev)();
extern void ABISELECT(_ZThn256_N8S19772C4D1Ev,_ZThn132_N8S19772C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19772C4D0Ev,_ZTv0_n12_N8S19772C4D0Ev)();
extern void ABISELECT(_ZThn256_N8S19772C4D0Ev,_ZThn132_N8S19772C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19772C4[] = {
  ABISELECT(256,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S19772C4[0]),
  (VTBL_ENTRY)&_ZN8S19772C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19772C4D0Ev,
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  (VTBL_ENTRY)&(_ZTI8S19772C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19772C4D1Ev,_ZTv0_n12_N8S19772C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19772C4D0Ev,_ZTv0_n12_N8S19772C4D0Ev),
};
extern VTBL_ENTRY _ZTV8S19772C4[];
static  VTT_ENTRY vtt_S19772C4[] = {
  {&(_ZTV8S19772C4[3]),  3,10},
  {&(_ZTV8S19772C4[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S19772C4[];
extern  VTBL_ENTRY _ZTV8S19772C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19772C4[];
static VTBL_ENTRY alt_thunk_names170[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19772C4D0Ev,_ZTv0_n12_N8S19772C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19772C4D0Ev,_ZThn132_N8S19772C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19772C4D1Ev,_ZTv0_n12_N8S19772C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19772C4D1Ev,_ZThn132_N8S19772C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19772C4 = {  "S19772C4", // class name
  bases_S19772C4, 3,
  &(vtc_S19772C4[0]), // expected_vtbl_contents
  &(vtt_S19772C4[0]), // expected_vtt_contents
  ABISELECT(352,184), // object size
  NSPAIRA(_ZTI8S19772C4),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19772C4),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19772C4),2, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names170,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19772C8  : S8033C7 , virtual S19772C5 {
  int s19772c8f0;
  char s19772c8f1;
  void *s19772c8f2;
  int s19772c8f3;
  void *s19772c8f4[2];
  ::S19772C4 s19772c8f5;
  virtual  ~S19772C8(); // _ZN8S19772C8D2Ev
  virtual void  v1(); // _ZN8S19772C82v1Ev
  S19772C8(); // tgen
};
//SIG(-1 S19772C8) C1{ BC2{ vd m Fc Fc:0 Fl[8] FD} VBC3{ BC2 Fp FC4{} Fp FD} vd v1 Fi Fc Fp Fi Fp[2] FC5{ BC3 VBC2 vd FC2 Fp}}


 S19772C8 ::~S19772C8(){ note_dtor("S19772C8", this);}
void  S19772C8 ::v1(){vfunc_called(this, "_ZN8S19772C82v1Ev");}
S19772C8 ::S19772C8(){ note_ctor("S19772C8", this);} // tgen

static void Test_S19772C8()
{
  extern Class_Descriptor cd_S19772C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(41,85)];
    init_test(&cd_S19772C8, buf);
    S19772C8 *dp, &lv = *(dp=new (buf) S19772C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(640,336), "sizeof(S19772C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19772C8)");
    /*is_ambiguous_... S19772C8::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*), 0, "S19772C8");
    check_base_class_offset(lv, (S8033C7*)(S19772C5*), ABISELECT(496,260), "S19772C8");
    check_base_class_offset(lv, (S19772C5*), ABISELECT(496,260), "S19772C8");
    check_field_offset(lv, s19772c8f0, ABISELECT(96,52), "S19772C8.s19772c8f0");
    check_field_offset(lv, s19772c8f1, ABISELECT(100,56), "S19772C8.s19772c8f1");
    check_field_offset(lv, s19772c8f2, ABISELECT(104,60), "S19772C8.s19772c8f2");
    check_field_offset(lv, s19772c8f3, ABISELECT(112,64), "S19772C8.s19772c8f3");
    check_field_offset(lv, s19772c8f4, ABISELECT(120,68), "S19772C8.s19772c8f4");
    check_field_offset(lv, s19772c8f5, ABISELECT(144,76), "S19772C8.s19772c8f5");
    test_class_info(&lv, &cd_S19772C8);
    dp->~S19772C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19772C8(Test_S19772C8, "S19772C8", ABISELECT(640,336));

#else // __cplusplus

extern void _ZN8S19772C8C1Ev();
extern void _ZN8S19772C8D2Ev();
Name_Map name_map_S19772C8[] = {
  NSPAIR(_ZN8S19772C8C1Ev),
  NSPAIR(_ZN8S19772C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19772C5;
extern VTBL_ENTRY _ZTI8S19772C5[];
extern  VTBL_ENTRY _ZTV8S19772C5[];
static Base_Class bases_S19772C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S8033C7,    ABISELECT(496,260), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19772C5,    ABISELECT(496,260), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19772C8[];
extern void _ZN8S19772C8D1Ev();
extern void _ZN8S19772C8D0Ev();
extern void _ZN8S19772C82v1Ev();
extern void ABISELECT(_ZTv0_n24_N8S19772C8D1Ev,_ZTv0_n12_N8S19772C8D1Ev)();
extern void ABISELECT(_ZThn496_N8S19772C8D1Ev,_ZThn260_N8S19772C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19772C8D0Ev,_ZTv0_n12_N8S19772C8D0Ev)();
extern void ABISELECT(_ZThn496_N8S19772C8D0Ev,_ZThn260_N8S19772C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19772C8[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19772C8[0]),
  (VTBL_ENTRY)&_ZN8S19772C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19772C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19772C82v1Ev,
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI8S19772C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19772C8D1Ev,_ZTv0_n12_N8S19772C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19772C8D0Ev,_ZTv0_n12_N8S19772C8D0Ev),
};
extern VTBL_ENTRY _ZTV8S19772C8[];
static  VTT_ENTRY vtt_S19772C8[] = {
  {&(_ZTV8S19772C8[3]),  3,11},
  {&(_ZTV8S19772C8[9]),  9,11},
};
extern VTBL_ENTRY _ZTI8S19772C8[];
extern  VTBL_ENTRY _ZTV8S19772C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19772C8[];
static VTBL_ENTRY alt_thunk_names171[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19772C8D0Ev,_ZTv0_n12_N8S19772C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19772C8D0Ev,_ZThn260_N8S19772C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19772C8D1Ev,_ZTv0_n12_N8S19772C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19772C8D1Ev,_ZThn260_N8S19772C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19772C8 = {  "S19772C8", // class name
  bases_S19772C8, 3,
  &(vtc_S19772C8[0]), // expected_vtbl_contents
  &(vtt_S19772C8[0]), // expected_vtt_contents
  ABISELECT(640,336), // object size
  NSPAIRA(_ZTI8S19772C8),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19772C8),11, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19772C8),2, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names171,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19772C10  : S8033C7 , virtual S19772C8 {
  void *s19772c10f0;
  __tsi64 s19772c10f1;
  long s19772c10f2;
  char s19772c10f3;
  void *s19772c10f4;
  int s19772c10f5;
  virtual  ~S19772C10(); // _ZN9S19772C10D2Ev
  S19772C10(); // tgen
};
//SIG(-1 S19772C10) C1{ BC2{ vd m Fc Fc:0 Fl[8] FD} VBC3{ BC2 VBC4{ BC2 Fp FC5{} Fp FD} vd v1 Fi Fc Fp Fi Fp[2] FC6{ BC4 VBC2 vd FC2 Fp}} vd Fp FL Fl Fc Fp Fi}


 S19772C10 ::~S19772C10(){ note_dtor("S19772C10", this);}
S19772C10 ::S19772C10(){ note_ctor("S19772C10", this);} // tgen

static void Test_S19772C10()
{
  extern Class_Descriptor cd_S19772C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(50,105)];
    init_test(&cd_S19772C10, buf);
    S19772C10 *dp, &lv = *(dp=new (buf) S19772C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(784,416), "sizeof(S19772C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19772C10)");
    /*is_ambiguous_... S19772C10::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*), 0, "S19772C10");
    /*is_ambiguous_... S19772C8::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19772C8*), ABISELECT(144,80), "S19772C10");
    check_base_class_offset(lv, (S8033C7*)(S19772C5*), ABISELECT(640,340), "S19772C10");
    check_base_class_offset(lv, (S19772C5*)(S19772C8*), ABISELECT(640,340), "S19772C10");
    check_base_class_offset(lv, (S19772C8*), ABISELECT(144,80), "S19772C10");
    check_field_offset(lv, s19772c10f0, ABISELECT(96,52), "S19772C10.s19772c10f0");
    check_field_offset(lv, s19772c10f1, ABISELECT(104,56), "S19772C10.s19772c10f1");
    check_field_offset(lv, s19772c10f2, ABISELECT(112,64), "S19772C10.s19772c10f2");
    check_field_offset(lv, s19772c10f3, ABISELECT(120,68), "S19772C10.s19772c10f3");
    check_field_offset(lv, s19772c10f4, ABISELECT(128,72), "S19772C10.s19772c10f4");
    check_field_offset(lv, s19772c10f5, ABISELECT(136,76), "S19772C10.s19772c10f5");
    test_class_info(&lv, &cd_S19772C10);
    dp->~S19772C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19772C10(Test_S19772C10, "S19772C10", ABISELECT(784,416));

#else // __cplusplus

extern void _ZN9S19772C10C1Ev();
extern void _ZN9S19772C10D2Ev();
Name_Map name_map_S19772C10[] = {
  NSPAIR(_ZN9S19772C10C1Ev),
  NSPAIR(_ZN9S19772C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19772C5;
extern VTBL_ENTRY _ZTI8S19772C5[];
extern  VTBL_ENTRY _ZTV8S19772C5[];
extern Class_Descriptor cd_S19772C8;
extern VTBL_ENTRY _ZTI8S19772C8[];
extern  VTBL_ENTRY _ZTV8S19772C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19772C8[];
static Base_Class bases_S19772C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S8033C7,    ABISELECT(144,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(640,340), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19772C5,    ABISELECT(640,340), //bcp->offset
    14, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19772C8,    ABISELECT(144,80), //bcp->offset
    6, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19772C10[];
extern void _ZN9S19772C10D1Ev();
extern void _ZN9S19772C10D0Ev();
extern void ABISELECT(_ZTv0_n32_N9S19772C10D1Ev,_ZTv0_n16_N9S19772C10D1Ev)();
extern void ABISELECT(_ZThn144_N9S19772C10D1Ev,_ZThn80_N9S19772C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19772C10D0Ev,_ZTv0_n16_N9S19772C10D0Ev)();
extern void ABISELECT(_ZThn144_N9S19772C10D0Ev,_ZThn80_N9S19772C10D0Ev)() __attribute__((weak));
extern void _ZN8S19772C82v1Ev();
extern void ABISELECT(_ZTv0_n24_N9S19772C10D1Ev,_ZTv0_n12_N9S19772C10D1Ev)();
extern void ABISELECT(_ZThn640_N9S19772C10D1Ev,_ZThn340_N9S19772C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19772C10D0Ev,_ZTv0_n12_N9S19772C10D0Ev)();
extern void ABISELECT(_ZThn640_N9S19772C10D0Ev,_ZThn340_N9S19772C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19772C10[] = {
  ABISELECT(640,340),
  ABISELECT(144,80),
  0,
  (VTBL_ENTRY)&(_ZTI9S19772C10[0]),
  (VTBL_ENTRY)&_ZN9S19772C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19772C10D0Ev,
  0,
  ABISELECT(-144,-80),
  ABISELECT(496,260),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI9S19772C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19772C10D1Ev,_ZTv0_n16_N9S19772C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19772C10D0Ev,_ZTv0_n16_N9S19772C10D0Ev),
  (VTBL_ENTRY)&_ZN8S19772C82v1Ev,
  ABISELECT(-640,-340),
  ABISELECT(-640,-340),
  (VTBL_ENTRY)&(_ZTI9S19772C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19772C10D1Ev,_ZTv0_n12_N9S19772C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19772C10D0Ev,_ZTv0_n12_N9S19772C10D0Ev),
};
extern VTBL_ENTRY _ZTV9S19772C10[];
extern void _ZN8S19772C8D1Ev();
extern void _ZN8S19772C8D0Ev();
extern void _ZN8S19772C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19772C8__9S19772C10[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19772C8[0]),
  (VTBL_ENTRY)&_ZN8S19772C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19772C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19772C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19772C8D1Ev,_ZTv0_n12_N8S19772C8D1Ev)();
extern void ABISELECT(_ZThn496_N8S19772C8D1Ev,_ZThn260_N8S19772C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19772C8D0Ev,_ZTv0_n12_N8S19772C8D0Ev)();
extern void ABISELECT(_ZThn496_N8S19772C8D0Ev,_ZThn260_N8S19772C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19772C5__8S19772C8__9S19772C10[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI8S19772C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19772C8D1Ev,_ZTv0_n12_N8S19772C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19772C8D0Ev,_ZTv0_n12_N8S19772C8D0Ev),
};
static  VTT_ENTRY vtt_S19772C10[] = {
  {&(_ZTV9S19772C10[4]),  4,19},
  {&(_ZTV9S19772C10[11]),  11,19},
  {&(_ZTV9S19772C10[17]),  17,19},
  {&(_tg__ZTV8S19772C8__9S19772C10[3]),  3,6},
  {&(_tg__ZTV8S19772C5__8S19772C8__9S19772C10[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19772C10[];
extern  VTBL_ENTRY _ZTV9S19772C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19772C10[];
static VTBL_ENTRY alt_thunk_names172[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19772C8D0Ev,_ZTv0_n12_N8S19772C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19772C8D0Ev,_ZThn260_N8S19772C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19772C8D1Ev,_ZTv0_n12_N8S19772C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19772C8D1Ev,_ZThn260_N8S19772C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19772C10D0Ev,_ZTv0_n12_N9S19772C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N9S19772C10D0Ev,_ZThn340_N9S19772C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19772C10D1Ev,_ZTv0_n12_N9S19772C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N9S19772C10D1Ev,_ZThn340_N9S19772C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19772C10D0Ev,_ZTv0_n16_N9S19772C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19772C10D0Ev,_ZThn80_N9S19772C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19772C10D1Ev,_ZTv0_n16_N9S19772C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19772C10D1Ev,_ZThn80_N9S19772C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19772C10 = {  "S19772C10", // class name
  bases_S19772C10, 5,
  &(vtc_S19772C10[0]), // expected_vtbl_contents
  &(vtt_S19772C10[0]), // expected_vtt_contents
  ABISELECT(784,416), // object size
  NSPAIRA(_ZTI9S19772C10),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19772C10),19, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19772C10),5, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names172,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19772C11  : virtual S19772C5 {
  char s19772c11f0;
  short s19772c11f1;
  long double s19772c11f2;
  void *s19772c11f3[2];
  virtual void  v2(); // _ZN9S19772C112v2Ev
  ~S19772C11(); // tgen
  S19772C11(); // tgen
};
//SIG(-1 S19772C11) C1{ VBC2{ BC3{ vd m Fc Fc:0 Fl[8] FD} Fp FC4{} Fp FD} v1 Fc Fs FD Fp[2]}


void  S19772C11 ::v2(){vfunc_called(this, "_ZN9S19772C112v2Ev");}
S19772C11 ::~S19772C11(){ note_dtor("S19772C11", this);} // tgen
S19772C11 ::S19772C11(){ note_ctor("S19772C11", this);} // tgen

static void Test_S19772C11()
{
  extern Class_Descriptor cd_S19772C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,27)];
    init_test(&cd_S19772C11, buf);
    S19772C11 *dp, &lv = *(dp=new (buf) S19772C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,104), "sizeof(S19772C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19772C11)");
    check_base_class_offset(lv, (S8033C7*)(S19772C5*), ABISELECT(48,28), "S19772C11");
    check_base_class_offset(lv, (S19772C5*), ABISELECT(48,28), "S19772C11");
    check_field_offset(lv, s19772c11f0, ABISELECT(8,4), "S19772C11.s19772c11f0");
    check_field_offset(lv, s19772c11f1, ABISELECT(10,6), "S19772C11.s19772c11f1");
    check_field_offset(lv, s19772c11f2, ABISELECT(16,8), "S19772C11.s19772c11f2");
    check_field_offset(lv, s19772c11f3, ABISELECT(32,20), "S19772C11.s19772c11f3");
    test_class_info(&lv, &cd_S19772C11);
    dp->~S19772C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19772C11(Test_S19772C11, "S19772C11", ABISELECT(192,104));

#else // __cplusplus

extern void _ZN9S19772C11C1Ev();
extern void _ZN9S19772C11D1Ev();
Name_Map name_map_S19772C11[] = {
  NSPAIR(_ZN9S19772C11C1Ev),
  NSPAIR(_ZN9S19772C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19772C5;
extern VTBL_ENTRY _ZTI8S19772C5[];
extern  VTBL_ENTRY _ZTV8S19772C5[];
static Base_Class bases_S19772C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19772C5,    ABISELECT(48,28), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19772C11[];
extern void _ZN9S19772C112v2Ev();
extern void _ZN9S19772C11D1Ev();
extern void _ZN9S19772C11D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S19772C11D1Ev,_ZTv0_n12_N9S19772C11D1Ev)();
extern void ABISELECT(_ZThn48_N9S19772C11D1Ev,_ZThn28_N9S19772C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19772C11D0Ev,_ZTv0_n12_N9S19772C11D0Ev)();
extern void ABISELECT(_ZThn48_N9S19772C11D0Ev,_ZThn28_N9S19772C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19772C11[] = {
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19772C11[0]),
  (VTBL_ENTRY)&_ZN9S19772C112v2Ev,
  (VTBL_ENTRY)&_ZN9S19772C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19772C11D0Ev,
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19772C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19772C11D1Ev,_ZTv0_n12_N9S19772C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19772C11D0Ev,_ZTv0_n12_N9S19772C11D0Ev),
};
extern VTBL_ENTRY _ZTV9S19772C11[];
static  VTT_ENTRY vtt_S19772C11[] = {
  {&(_ZTV9S19772C11[3]),  3,11},
  {&(_ZTV9S19772C11[9]),  9,11},
};
extern VTBL_ENTRY _ZTI9S19772C11[];
extern  VTBL_ENTRY _ZTV9S19772C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19772C11[];
static VTBL_ENTRY alt_thunk_names173[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19772C11D0Ev,_ZTv0_n12_N9S19772C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19772C11D0Ev,_ZThn28_N9S19772C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19772C11D1Ev,_ZTv0_n12_N9S19772C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19772C11D1Ev,_ZThn28_N9S19772C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19772C11 = {  "S19772C11", // class name
  bases_S19772C11, 2,
  &(vtc_S19772C11[0]), // expected_vtbl_contents
  &(vtt_S19772C11[0]), // expected_vtt_contents
  ABISELECT(192,104), // object size
  NSPAIRA(_ZTI9S19772C11),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19772C11),11, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19772C11),2, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names173,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19772C9  : S19772C10 , virtual S19772C11 {
  char s19772c9f0;
  __tsi64 s19772c9f1:35;
  virtual  ~S19772C9(); // _ZN8S19772C9D2Ev
  S19772C9(); // tgen
};
//SIG(-1 S19772C9) C1{ BC2{ BC3{ vd m Fc Fc:0 Fl[8] FD} VBC4{ BC3 VBC5{ BC3 Fp FC6{} Fp FD} vd v1 Fi Fc Fp Fi Fp[2] FC7{ BC5 VBC3 vd FC3 Fp}} vd Fp FL Fl Fc Fp Fi} VBC8{ VBC5 v2 Fc Fs FD Fp[2]} vd Fc FL:35}


 S19772C9 ::~S19772C9(){ note_dtor("S19772C9", this);}
S19772C9 ::S19772C9(){ note_ctor("S19772C9", this);} // tgen

static void Test_S19772C9()
{
  extern Class_Descriptor cd_S19772C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(54,114)];
    init_test(&cd_S19772C9, buf);
    S19772C9 *dp, &lv = *(dp=new (buf) S19772C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(848,452), "sizeof(S19772C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19772C9)");
    /*is_ambiguous_... S19772C10::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19772C10*), 0, "S19772C9");
    /*is_ambiguous_... S19772C8::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19772C8*), ABISELECT(160,88), "S19772C9");
    check_base_class_offset(lv, (S8033C7*)(S19772C5*), ABISELECT(656,348), "S19772C9");
    check_base_class_offset(lv, (S19772C5*)(S19772C8*), ABISELECT(656,348), "S19772C9");
    check_base_class_offset(lv, (S19772C5*)(S19772C11*), ABISELECT(656,348), "S19772C9");
    check_base_class_offset(lv, (S19772C8*)(S19772C10*), ABISELECT(160,88), "S19772C9");
    check_base_class_offset(lv, (S19772C10*), 0, "S19772C9");
    check_base_class_offset(lv, (S19772C11*), ABISELECT(800,424), "S19772C9");
    check_field_offset(lv, s19772c9f0, ABISELECT(140,80), "S19772C9.s19772c9f0");
    set_bf_and_test(lv, s19772c9f1, ABISELECT(144,81), 0, 35, 1, "S19772C9");
    set_bf_and_test(lv, s19772c9f1, ABISELECT(144,81), 0, 35, hide_sll(1LL<<34), "S19772C9");
    test_class_info(&lv, &cd_S19772C9);
    dp->~S19772C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19772C9(Test_S19772C9, "S19772C9", ABISELECT(848,452));

#else // __cplusplus

extern void _ZN8S19772C9C1Ev();
extern void _ZN8S19772C9D2Ev();
Name_Map name_map_S19772C9[] = {
  NSPAIR(_ZN8S19772C9C1Ev),
  NSPAIR(_ZN8S19772C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19772C5;
extern VTBL_ENTRY _ZTI8S19772C5[];
extern  VTBL_ENTRY _ZTV8S19772C5[];
extern Class_Descriptor cd_S19772C8;
extern VTBL_ENTRY _ZTI8S19772C8[];
extern  VTBL_ENTRY _ZTV8S19772C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19772C8[];
extern Class_Descriptor cd_S19772C10;
extern VTBL_ENTRY _ZTI9S19772C10[];
extern  VTBL_ENTRY _ZTV9S19772C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19772C10[];
extern Class_Descriptor cd_S19772C11;
extern VTBL_ENTRY _ZTI9S19772C11[];
extern  VTBL_ENTRY _ZTV9S19772C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19772C11[];
static Base_Class bases_S19772C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(656,348), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19772C5,    ABISELECT(656,348), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19772C8,    ABISELECT(160,88), //bcp->offset
    7, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19772C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19772C11,    ABISELECT(800,424), //bcp->offset
    20, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19772C9[];
extern void _ZN8S19772C9D1Ev();
extern void _ZN8S19772C9D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S19772C9D1Ev,_ZTv0_n16_N8S19772C9D1Ev)();
extern void ABISELECT(_ZThn160_N8S19772C9D1Ev,_ZThn88_N8S19772C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19772C9D0Ev,_ZTv0_n16_N8S19772C9D0Ev)();
extern void ABISELECT(_ZThn160_N8S19772C9D0Ev,_ZThn88_N8S19772C9D0Ev)() __attribute__((weak));
extern void _ZN8S19772C82v1Ev();
extern void ABISELECT(_ZTv0_n24_N8S19772C9D1Ev,_ZTv0_n12_N8S19772C9D1Ev)();
extern void ABISELECT(_ZThn656_N8S19772C9D1Ev,_ZThn348_N8S19772C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19772C9D0Ev,_ZTv0_n12_N8S19772C9D0Ev)();
extern void ABISELECT(_ZThn656_N8S19772C9D0Ev,_ZThn348_N8S19772C9D0Ev)() __attribute__((weak));
extern void _ZN9S19772C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N8S19772C9D1Ev,_ZTv0_n20_N8S19772C9D1Ev)();
extern void ABISELECT(_ZThn800_N8S19772C9D1Ev,_ZThn424_N8S19772C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19772C9D0Ev,_ZTv0_n20_N8S19772C9D0Ev)();
extern void ABISELECT(_ZThn800_N8S19772C9D0Ev,_ZThn424_N8S19772C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19772C9[] = {
  ABISELECT(800,424),
  ABISELECT(656,348),
  ABISELECT(160,88),
  0,
  (VTBL_ENTRY)&(_ZTI8S19772C9[0]),
  (VTBL_ENTRY)&_ZN8S19772C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19772C9D0Ev,
  0,
  ABISELECT(-160,-88),
  ABISELECT(496,260),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S19772C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19772C9D1Ev,_ZTv0_n16_N8S19772C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19772C9D0Ev,_ZTv0_n16_N8S19772C9D0Ev),
  (VTBL_ENTRY)&_ZN8S19772C82v1Ev,
  ABISELECT(-656,-348),
  ABISELECT(-656,-348),
  (VTBL_ENTRY)&(_ZTI8S19772C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19772C9D1Ev,_ZTv0_n12_N8S19772C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19772C9D0Ev,_ZTv0_n12_N8S19772C9D0Ev),
  ABISELECT(-800,-424),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-800,-424),
  (VTBL_ENTRY)&(_ZTI8S19772C9[0]),
  (VTBL_ENTRY)&_ZN9S19772C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19772C9D1Ev,_ZTv0_n20_N8S19772C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19772C9D0Ev,_ZTv0_n20_N8S19772C9D0Ev),
};
extern VTBL_ENTRY _ZTV8S19772C9[];
extern void _ZN9S19772C10D1Ev();
extern void _ZN9S19772C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19772C10__8S19772C9[] = {
  ABISELECT(656,348),
  ABISELECT(160,88),
  0,
  (VTBL_ENTRY)&(_ZTI9S19772C10[0]),
  (VTBL_ENTRY)&_ZN9S19772C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19772C10D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19772C10D1Ev,_ZTv0_n16_N9S19772C10D1Ev)();
extern void ABISELECT(_ZThn160_N9S19772C10D1Ev,_ZThn88_N9S19772C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19772C10D0Ev,_ZTv0_n16_N9S19772C10D0Ev)();
extern void ABISELECT(_ZThn160_N9S19772C10D0Ev,_ZThn88_N9S19772C10D0Ev)() __attribute__((weak));
extern void _ZN8S19772C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19772C8__9S19772C10__8S19772C9[] = {
  0,
  ABISELECT(-160,-88),
  ABISELECT(496,260),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI9S19772C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19772C10D1Ev,_ZTv0_n16_N9S19772C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19772C10D0Ev,_ZTv0_n16_N9S19772C10D0Ev),
  (VTBL_ENTRY)&_ZN8S19772C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19772C10D1Ev,_ZTv0_n12_N9S19772C10D1Ev)();
extern void ABISELECT(_ZThn656_N9S19772C10D1Ev,_ZThn348_N9S19772C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19772C10D0Ev,_ZTv0_n12_N9S19772C10D0Ev)();
extern void ABISELECT(_ZThn656_N9S19772C10D0Ev,_ZThn348_N9S19772C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19772C5__9S19772C10__8S19772C9[] = {
  ABISELECT(-656,-348),
  ABISELECT(-656,-348),
  (VTBL_ENTRY)&(_ZTI9S19772C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19772C10D1Ev,_ZTv0_n12_N9S19772C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19772C10D0Ev,_ZTv0_n12_N9S19772C10D0Ev),
};
extern void _ZN8S19772C8D1Ev();
extern void _ZN8S19772C8D0Ev();
extern void _ZN8S19772C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19772C8__8S19772C9[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19772C8[0]),
  (VTBL_ENTRY)&_ZN8S19772C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19772C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19772C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19772C8D1Ev,_ZTv0_n12_N8S19772C8D1Ev)();
extern void ABISELECT(_ZThn496_N8S19772C8D1Ev,_ZThn260_N8S19772C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19772C8D0Ev,_ZTv0_n12_N8S19772C8D0Ev)();
extern void ABISELECT(_ZThn496_N8S19772C8D0Ev,_ZThn260_N8S19772C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19772C5__8S19772C8__8S19772C9[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI8S19772C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19772C8D1Ev,_ZTv0_n12_N8S19772C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19772C8D0Ev,_ZTv0_n12_N8S19772C8D0Ev),
};
extern void _ZN9S19772C112v2Ev();
extern void _ZN9S19772C11D1Ev();
extern void _ZN9S19772C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19772C11__8S19772C9[] = {
  ABISELECT(-144,-76),
  0,
  (VTBL_ENTRY)&(_ZTI9S19772C11[0]),
  (VTBL_ENTRY)&_ZN9S19772C112v2Ev,
  (VTBL_ENTRY)&_ZN9S19772C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19772C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19772C11D1Ev,_ZTv0_n12_N9S19772C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19772C11D0Ev,_ZTv0_n12_N9S19772C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19772C5__9S19772C11__8S19772C9[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI9S19772C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19772C11D1Ev,_ZTv0_n12_N9S19772C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19772C11D0Ev,_ZTv0_n12_N9S19772C11D0Ev),
};
static  VTT_ENTRY vtt_S19772C9[] = {
  {&(_ZTV8S19772C9[5]),  5,28},
  {&(_tg__ZTV9S19772C10__8S19772C9[4]),  4,6},
  {&(_tg__ZTV8S19772C8__9S19772C10__8S19772C9[5]),  5,8},
  {&(_tg__ZTV8S19772C5__9S19772C10__8S19772C9[3]),  3,5},
  {&(_ZTV8S19772C9[12]),  12,28},
  {&(_ZTV8S19772C9[18]),  18,28},
  {&(_ZTV8S19772C9[25]),  25,28},
  {&(_tg__ZTV8S19772C8__8S19772C9[3]),  3,6},
  {&(_tg__ZTV8S19772C5__8S19772C8__8S19772C9[3]),  3,5},
  {&(_tg__ZTV9S19772C11__8S19772C9[3]),  3,6},
  {&(_tg__ZTV8S19772C5__9S19772C11__8S19772C9[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19772C9[];
extern  VTBL_ENTRY _ZTV8S19772C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19772C9[];
static VTBL_ENTRY alt_thunk_names174[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19772C8D0Ev,_ZTv0_n12_N8S19772C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19772C8D0Ev,_ZThn260_N8S19772C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19772C8D1Ev,_ZTv0_n12_N8S19772C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19772C8D1Ev,_ZThn260_N8S19772C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19772C10D0Ev,_ZTv0_n12_N9S19772C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N9S19772C10D0Ev,_ZThn348_N9S19772C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19772C10D1Ev,_ZTv0_n12_N9S19772C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N9S19772C10D1Ev,_ZThn348_N9S19772C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19772C10D0Ev,_ZTv0_n16_N9S19772C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S19772C10D0Ev,_ZThn88_N9S19772C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19772C10D1Ev,_ZTv0_n16_N9S19772C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S19772C10D1Ev,_ZThn88_N9S19772C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19772C9D0Ev,_ZTv0_n20_N8S19772C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn800_N8S19772C9D0Ev,_ZThn424_N8S19772C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19772C9D1Ev,_ZTv0_n20_N8S19772C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn800_N8S19772C9D1Ev,_ZThn424_N8S19772C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19772C9D0Ev,_ZTv0_n12_N8S19772C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S19772C9D0Ev,_ZThn348_N8S19772C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19772C9D1Ev,_ZTv0_n12_N8S19772C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S19772C9D1Ev,_ZThn348_N8S19772C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19772C9D0Ev,_ZTv0_n16_N8S19772C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19772C9D0Ev,_ZThn88_N8S19772C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19772C9D1Ev,_ZTv0_n16_N8S19772C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19772C9D1Ev,_ZThn88_N8S19772C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19772C9 = {  "S19772C9", // class name
  bases_S19772C9, 7,
  &(vtc_S19772C9[0]), // expected_vtbl_contents
  &(vtt_S19772C9[0]), // expected_vtt_contents
  ABISELECT(848,452), // object size
  NSPAIRA(_ZTI8S19772C9),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19772C9),28, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19772C9),11, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names174,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19772C12  {
  long double s19772c12f0;
  void *s19772c12f1;
  ::S8033C7 s19772c12f2;
  __tsi64 s19772c12f3;
  long double s19772c12f4;
  int s19772c12f5;
  virtual void  v3(); // _ZN9S19772C122v3Ev
  ~S19772C12(); // tgen
  S19772C12(); // tgen
};
//SIG(-1 S19772C12) C1{ v1 FD Fp FC2{ vd m Fc Fc:0 Fl[8] FD} FL FD Fi}


void  S19772C12 ::v3(){vfunc_called(this, "_ZN9S19772C122v3Ev");}
S19772C12 ::~S19772C12(){ note_dtor("S19772C12", this);} // tgen
S19772C12 ::S19772C12(){ note_ctor("S19772C12", this);} // tgen

static void Test_S19772C12()
{
  extern Class_Descriptor cd_S19772C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,25)];
    init_test(&cd_S19772C12, buf);
    S19772C12 *dp, &lv = *(dp=new (buf) S19772C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,96), "sizeof(S19772C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19772C12)");
    check_field_offset(lv, s19772c12f0, ABISELECT(16,4), "S19772C12.s19772c12f0");
    check_field_offset(lv, s19772c12f1, ABISELECT(32,16), "S19772C12.s19772c12f1");
    check_field_offset(lv, s19772c12f2, ABISELECT(48,20), "S19772C12.s19772c12f2");
    check_field_offset(lv, s19772c12f3, ABISELECT(144,72), "S19772C12.s19772c12f3");
    check_field_offset(lv, s19772c12f4, ABISELECT(160,80), "S19772C12.s19772c12f4");
    check_field_offset(lv, s19772c12f5, ABISELECT(176,92), "S19772C12.s19772c12f5");
    test_class_info(&lv, &cd_S19772C12);
    dp->~S19772C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19772C12(Test_S19772C12, "S19772C12", ABISELECT(192,96));

#else // __cplusplus

extern void _ZN9S19772C12C1Ev();
extern void _ZN9S19772C12D1Ev();
Name_Map name_map_S19772C12[] = {
  NSPAIR(_ZN9S19772C12C1Ev),
  NSPAIR(_ZN9S19772C12D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S19772C12[];
extern void _ZN9S19772C122v3Ev();
static  VTBL_ENTRY vtc_S19772C12[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S19772C12[0]),
  (VTBL_ENTRY)&_ZN9S19772C122v3Ev,
};
extern VTBL_ENTRY _ZTI9S19772C12[];
extern  VTBL_ENTRY _ZTV9S19772C12[];
Class_Descriptor cd_S19772C12 = {  "S19772C12", // class name
  0,0,//no base classes
  &(vtc_S19772C12[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(192,96), // object size
  NSPAIRA(_ZTI9S19772C12),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S19772C12),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19772C3  : virtual S19772C4 , virtual S19772C8 , virtual S19772C9 , virtual S8033C4 , virtual S19772C12 {
  void *s19772c3f0;
  ::S19772C12 s19772c3f1[3];
  ::S19772C12 s19772c3f2;
  char s19772c3f3;
  virtual  ~S19772C3(); // _ZN8S19772C3D2Ev
  S19772C3(); // tgen
};
//SIG(-1 S19772C3) C1{ VBC2{ BC3{ BC4{ vd m Fc Fc:0 Fl[8] FD} Fp FC5{} Fp FD} VBC4 vd FC4 Fp} VBC6{ BC4 VBC3 vd v1 Fi Fc Fp Fi Fp[2] FC2} VBC7{ BC8{ BC4 VBC6 vd Fp FL Fl Fc Fp Fi} VBC9{ VBC3 v2 Fc Fs FD Fp[2]} vd Fc FL:35} VBC10{ m Fp[3] FL[8]} VBC11{ v3 FD Fp FC4 FL FD Fi} vd Fp FC11[3] FC11 Fc}


 S19772C3 ::~S19772C3(){ note_dtor("S19772C3", this);}
S19772C3 ::S19772C3(){ note_ctor("S19772C3", this);} // tgen

static void Test_S19772C3()
{
  extern Class_Descriptor cd_S19772C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(144,302)];
    init_test(&cd_S19772C3, buf);
    S19772C3 *dp, &lv = *(dp=new (buf) S19772C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2288,1204), "sizeof(S19772C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19772C3)");
    check_base_class_offset(lv, (S8033C7*)(S19772C5*)(S19772C4*), ABISELECT(800,396), "S19772C3");
    check_base_class_offset(lv, (S19772C5*)(S19772C4*), ABISELECT(800,396), "S19772C3");
    /*is_ambiguous_... S19772C4::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19772C4*), ABISELECT(1056,528), "S19772C3");
    check_base_class_offset(lv, (S19772C4*), ABISELECT(800,396), "S19772C3");
    /*is_ambiguous_... S19772C8::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19772C8*), ABISELECT(1152,580), "S19772C3");
    /*is_ambiguous_... S19772C3::S19772C5 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19772C5*), ABISELECT(1648,840), "S19772C3");
    check_base_class_offset(lv, (S19772C5*)(S19772C8*), ABISELECT(1648,840), "S19772C3");
    check_base_class_offset(lv, (S19772C5*)(S19772C11*), ABISELECT(1648,840), "S19772C3");
    check_base_class_offset(lv, (S19772C8*), ABISELECT(1152,580), "S19772C3");
    check_base_class_offset(lv, (S19772C8*)(S19772C10*)(S19772C9*), ABISELECT(1152,580), "S19772C3");
    /*is_ambiguous_... S19772C10::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19772C10*)(S19772C9*), ABISELECT(1792,916), "S19772C3");
    check_base_class_offset(lv, (S19772C10*)(S19772C9*), ABISELECT(1792,916), "S19772C3");
    check_base_class_offset(lv, (S19772C11*)(S19772C9*), ABISELECT(1952,1004), "S19772C3");
    check_base_class_offset(lv, (S19772C9*), ABISELECT(1792,916), "S19772C3");
    check_base_class_offset(lv, (S8033C4*), ABISELECT(2000,1032), "S19772C3");
    check_base_class_offset(lv, (S19772C12*), ABISELECT(2096,1108), "S19772C3");
    check_field_offset(lv, s19772c3f0, ABISELECT(8,4), "S19772C3.s19772c3f0");
    check_field_offset(lv, s19772c3f1, ABISELECT(16,8), "S19772C3.s19772c3f1");
    check_field_offset(lv, s19772c3f2, ABISELECT(592,296), "S19772C3.s19772c3f2");
    check_field_offset(lv, s19772c3f3, ABISELECT(784,392), "S19772C3.s19772c3f3");
    test_class_info(&lv, &cd_S19772C3);
    dp->~S19772C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19772C3(Test_S19772C3, "S19772C3", ABISELECT(2288,1204));

#else // __cplusplus

extern void _ZN8S19772C3C1Ev();
extern void _ZN8S19772C3D2Ev();
Name_Map name_map_S19772C3[] = {
  NSPAIR(_ZN8S19772C3C1Ev),
  NSPAIR(_ZN8S19772C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19772C5;
extern VTBL_ENTRY _ZTI8S19772C5[];
extern  VTBL_ENTRY _ZTV8S19772C5[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19772C4;
extern VTBL_ENTRY _ZTI8S19772C4[];
extern  VTBL_ENTRY _ZTV8S19772C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19772C4[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19772C5;
extern VTBL_ENTRY _ZTI8S19772C5[];
extern  VTBL_ENTRY _ZTV8S19772C5[];
extern Class_Descriptor cd_S19772C8;
extern VTBL_ENTRY _ZTI8S19772C8[];
extern  VTBL_ENTRY _ZTV8S19772C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19772C8[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19772C10;
extern VTBL_ENTRY _ZTI9S19772C10[];
extern  VTBL_ENTRY _ZTV9S19772C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19772C10[];
extern Class_Descriptor cd_S19772C11;
extern VTBL_ENTRY _ZTI9S19772C11[];
extern  VTBL_ENTRY _ZTV9S19772C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19772C11[];
extern Class_Descriptor cd_S19772C9;
extern VTBL_ENTRY _ZTI8S19772C9[];
extern  VTBL_ENTRY _ZTV8S19772C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19772C9[];
extern Class_Descriptor cd_S8033C4;
extern VTBL_ENTRY _ZTI7S8033C4[];
extern Class_Descriptor cd_S19772C12;
extern VTBL_ENTRY _ZTI9S19772C12[];
extern  VTBL_ENTRY _ZTV9S19772C12[];
static Base_Class bases_S19772C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    ABISELECT(800,396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19772C5,    ABISELECT(800,396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(1056,528), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19772C4,    ABISELECT(800,396), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C7,    ABISELECT(1152,580), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(1648,840), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19772C5,    ABISELECT(1648,840), //bcp->offset
    31, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19772C8,    ABISELECT(1152,580), //bcp->offset
    23, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C7,    ABISELECT(1792,916), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19772C10,    ABISELECT(1792,916), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19772C11,    ABISELECT(1952,1004), //bcp->offset
    44, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19772C9,    ABISELECT(1792,916), //bcp->offset
    36, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C4,    ABISELECT(2000,1032), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19772C12,    ABISELECT(2096,1108), //bcp->offset
    52, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19772C3[];
extern void _ZN8S19772C3D1Ev();
extern void _ZN8S19772C3D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S19772C3D1Ev,_ZTv0_n16_N8S19772C3D1Ev)();
extern void ABISELECT(_ZThn800_N8S19772C3D1Ev,_ZThn396_N8S19772C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19772C3D0Ev,_ZTv0_n16_N8S19772C3D0Ev)();
extern void ABISELECT(_ZThn800_N8S19772C3D0Ev,_ZThn396_N8S19772C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19772C3D1Ev,_ZTv0_n12_N8S19772C3D1Ev)();
extern void ABISELECT(_ZThn1056_N8S19772C3D1Ev,_ZThn528_N8S19772C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19772C3D0Ev,_ZTv0_n12_N8S19772C3D0Ev)();
extern void ABISELECT(_ZThn1056_N8S19772C3D0Ev,_ZThn528_N8S19772C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19772C3D1Ev,_ZTv0_n16_N8S19772C3D1Ev)();
extern void ABISELECT(_ZThn1152_N8S19772C3D1Ev,_ZThn580_N8S19772C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19772C3D0Ev,_ZTv0_n16_N8S19772C3D0Ev)();
extern void ABISELECT(_ZThn1152_N8S19772C3D0Ev,_ZThn580_N8S19772C3D0Ev)() __attribute__((weak));
extern void _ZN8S19772C82v1Ev();
extern void ABISELECT(_ZTv0_n24_N8S19772C3D1Ev,_ZTv0_n12_N8S19772C3D1Ev)();
extern void ABISELECT(_ZThn1648_N8S19772C3D1Ev,_ZThn840_N8S19772C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19772C3D0Ev,_ZTv0_n12_N8S19772C3D0Ev)();
extern void ABISELECT(_ZThn1648_N8S19772C3D0Ev,_ZThn840_N8S19772C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19772C3D1Ev,_ZTv0_n24_N8S19772C3D1Ev)();
extern void ABISELECT(_ZThn1792_N8S19772C3D1Ev,_ZThn916_N8S19772C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19772C3D0Ev,_ZTv0_n24_N8S19772C3D0Ev)();
extern void ABISELECT(_ZThn1792_N8S19772C3D0Ev,_ZThn916_N8S19772C3D0Ev)() __attribute__((weak));
extern void _ZN9S19772C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N8S19772C3D1Ev,_ZTv0_n20_N8S19772C3D1Ev)();
extern void ABISELECT(_ZThn1952_N8S19772C3D1Ev,_ZThn1004_N8S19772C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19772C3D0Ev,_ZTv0_n20_N8S19772C3D0Ev)();
extern void ABISELECT(_ZThn1952_N8S19772C3D0Ev,_ZThn1004_N8S19772C3D0Ev)() __attribute__((weak));
extern void _ZN9S19772C122v3Ev();
static  VTBL_ENTRY vtc_S19772C3[] = {
  ABISELECT(2096,1108),
  ABISELECT(2000,1032),
  ABISELECT(1952,1004),
  ABISELECT(1792,916),
  ABISELECT(1648,840),
  ABISELECT(1152,580),
  ABISELECT(1056,528),
  ABISELECT(800,396),
  0,
  (VTBL_ENTRY)&(_ZTI8S19772C3[0]),
  (VTBL_ENTRY)&_ZN8S19772C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19772C3D0Ev,
  ABISELECT(-800,-396),
  ABISELECT(256,132),
  ABISELECT(-800,-396),
  (VTBL_ENTRY)&(_ZTI8S19772C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19772C3D1Ev,_ZTv0_n16_N8S19772C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19772C3D0Ev,_ZTv0_n16_N8S19772C3D0Ev),
  ABISELECT(-1056,-528),
  ABISELECT(-1056,-528),
  (VTBL_ENTRY)&(_ZTI8S19772C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19772C3D1Ev,_ZTv0_n12_N8S19772C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19772C3D0Ev,_ZTv0_n12_N8S19772C3D0Ev),
  0,
  ABISELECT(-1152,-580),
  ABISELECT(496,260),
  ABISELECT(-1152,-580),
  (VTBL_ENTRY)&(_ZTI8S19772C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19772C3D1Ev,_ZTv0_n16_N8S19772C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19772C3D0Ev,_ZTv0_n16_N8S19772C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19772C82v1Ev,
  ABISELECT(-1648,-840),
  ABISELECT(-1648,-840),
  (VTBL_ENTRY)&(_ZTI8S19772C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19772C3D1Ev,_ZTv0_n12_N8S19772C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19772C3D0Ev,_ZTv0_n12_N8S19772C3D0Ev),
  ABISELECT(-1792,-916),
  ABISELECT(160,88),
  ABISELECT(-144,-76),
  ABISELECT(-640,-336),
  ABISELECT(-1792,-916),
  (VTBL_ENTRY)&(_ZTI8S19772C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19772C3D1Ev,_ZTv0_n24_N8S19772C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19772C3D0Ev,_ZTv0_n24_N8S19772C3D0Ev),
  ABISELECT(-1952,-1004),
  0,
  ABISELECT(-304,-164),
  ABISELECT(-1952,-1004),
  (VTBL_ENTRY)&(_ZTI8S19772C3[0]),
  (VTBL_ENTRY)&_ZN9S19772C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19772C3D1Ev,_ZTv0_n20_N8S19772C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19772C3D0Ev,_ZTv0_n20_N8S19772C3D0Ev),
  0,
  ABISELECT(-2096,-1108),
  (VTBL_ENTRY)&(_ZTI8S19772C3[0]),
  (VTBL_ENTRY)&_ZN9S19772C122v3Ev,
};
extern VTBL_ENTRY _ZTV8S19772C3[];
extern void _ZN8S19772C4D1Ev();
extern void _ZN8S19772C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19772C4__8S19772C3[] = {
  ABISELECT(256,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S19772C4[0]),
  (VTBL_ENTRY)&_ZN8S19772C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19772C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19772C4D1Ev,_ZTv0_n12_N8S19772C4D1Ev)();
extern void ABISELECT(_ZThn256_N8S19772C4D1Ev,_ZThn132_N8S19772C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19772C4D0Ev,_ZTv0_n12_N8S19772C4D0Ev)();
extern void ABISELECT(_ZThn256_N8S19772C4D0Ev,_ZThn132_N8S19772C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__8S19772C4__8S19772C3[] = {
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  (VTBL_ENTRY)&(_ZTI8S19772C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19772C4D1Ev,_ZTv0_n12_N8S19772C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19772C4D0Ev,_ZTv0_n12_N8S19772C4D0Ev),
};
extern void _ZN8S19772C8D1Ev();
extern void _ZN8S19772C8D0Ev();
extern void _ZN8S19772C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19772C8__8S19772C3[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19772C8[0]),
  (VTBL_ENTRY)&_ZN8S19772C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19772C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19772C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19772C8D1Ev,_ZTv0_n12_N8S19772C8D1Ev)();
extern void ABISELECT(_ZThn496_N8S19772C8D1Ev,_ZThn260_N8S19772C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19772C8D0Ev,_ZTv0_n12_N8S19772C8D0Ev)();
extern void ABISELECT(_ZThn496_N8S19772C8D0Ev,_ZThn260_N8S19772C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19772C5__8S19772C8__8S19772C3[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI8S19772C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19772C8D1Ev,_ZTv0_n12_N8S19772C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19772C8D0Ev,_ZTv0_n12_N8S19772C8D0Ev),
};
extern void _ZN8S19772C9D1Ev();
extern void _ZN8S19772C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19772C9__8S19772C3[] = {
  ABISELECT(160,88),
  ABISELECT(-144,-76),
  ABISELECT(-640,-336),
  0,
  (VTBL_ENTRY)&(_ZTI8S19772C9[0]),
  (VTBL_ENTRY)&_ZN8S19772C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19772C9D0Ev,
};
extern void _ZN9S19772C10D1Ev();
extern void _ZN9S19772C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19772C108S19772C9__8S19772C3[] = {
  ABISELECT(-144,-76),
  ABISELECT(-640,-336),
  0,
  (VTBL_ENTRY)&(_ZTI9S19772C10[0]),
  (VTBL_ENTRY)&_ZN9S19772C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19772C10D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19772C10D1Ev,_ZTv0_n16_N9S19772C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19772C10D0Ev,_ZTv0_n16_N9S19772C10D0Ev)();
extern void _ZN8S19772C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19772C8__9S19772C108S19772C9__8S19772C3[] = {
  0,
  ABISELECT(640,336),
  ABISELECT(496,260),
  ABISELECT(640,336),
  (VTBL_ENTRY)&(_ZTI9S19772C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19772C10D1Ev,_ZTv0_n16_N9S19772C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19772C10D0Ev,_ZTv0_n16_N9S19772C10D0Ev),
  (VTBL_ENTRY)&_ZN8S19772C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19772C10D1Ev,_ZTv0_n12_N9S19772C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19772C10D0Ev,_ZTv0_n12_N9S19772C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19772C5__9S19772C108S19772C9__8S19772C3[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI9S19772C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19772C10D1Ev,_ZTv0_n12_N9S19772C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19772C10D0Ev,_ZTv0_n12_N9S19772C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19772C9D1Ev,_ZTv0_n16_N8S19772C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19772C9D0Ev,_ZTv0_n16_N8S19772C9D0Ev)();
extern void _ZN8S19772C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19772C8__8S19772C9__8S19772C3[] = {
  0,
  ABISELECT(640,336),
  ABISELECT(496,260),
  ABISELECT(640,336),
  (VTBL_ENTRY)&(_ZTI8S19772C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19772C9D1Ev,_ZTv0_n16_N8S19772C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19772C9D0Ev,_ZTv0_n16_N8S19772C9D0Ev),
  (VTBL_ENTRY)&_ZN8S19772C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19772C9D1Ev,_ZTv0_n12_N8S19772C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19772C9D0Ev,_ZTv0_n12_N8S19772C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19772C5__8S19772C9__8S19772C3[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S19772C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19772C9D1Ev,_ZTv0_n12_N8S19772C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19772C9D0Ev,_ZTv0_n12_N8S19772C9D0Ev),
};
extern void _ZN9S19772C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N8S19772C9D1Ev,_ZTv0_n20_N8S19772C9D1Ev)();
extern void ABISELECT(_ZThn160_N8S19772C9D1Ev,_ZThn88_N8S19772C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19772C9D0Ev,_ZTv0_n20_N8S19772C9D0Ev)();
extern void ABISELECT(_ZThn160_N8S19772C9D0Ev,_ZThn88_N8S19772C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19772C11__8S19772C9__8S19772C3[] = {
  ABISELECT(-160,-88),
  0,
  ABISELECT(-304,-164),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S19772C9[0]),
  (VTBL_ENTRY)&_ZN9S19772C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19772C9D1Ev,_ZTv0_n20_N8S19772C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19772C9D0Ev,_ZTv0_n20_N8S19772C9D0Ev),
};
extern void _ZN9S19772C112v2Ev();
extern void _ZN9S19772C11D1Ev();
extern void _ZN9S19772C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19772C11__8S19772C3[] = {
  ABISELECT(-304,-164),
  0,
  (VTBL_ENTRY)&(_ZTI9S19772C11[0]),
  (VTBL_ENTRY)&_ZN9S19772C112v2Ev,
  (VTBL_ENTRY)&_ZN9S19772C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19772C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19772C11D1Ev,_ZTv0_n12_N9S19772C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19772C11D0Ev,_ZTv0_n12_N9S19772C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19772C5__9S19772C11__8S19772C3[] = {
  ABISELECT(304,164),
  ABISELECT(304,164),
  (VTBL_ENTRY)&(_ZTI9S19772C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19772C11D1Ev,_ZTv0_n12_N9S19772C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19772C11D0Ev,_ZTv0_n12_N9S19772C11D0Ev),
};
static  VTT_ENTRY vtt_S19772C3[] = {
  {&(_ZTV8S19772C3[10]),  10,56},
  {&(_ZTV8S19772C3[16]),  16,56},
  {&(_ZTV8S19772C3[21]),  21,56},
  {&(_ZTV8S19772C3[28]),  28,56},
  {&(_ZTV8S19772C3[34]),  34,56},
  {&(_ZTV8S19772C3[42]),  42,56},
  {&(_ZTV8S19772C3[49]),  49,56},
  {&(_ZTV8S19772C3[55]),  55,56},
  {&(_tg__ZTV8S19772C4__8S19772C3[3]),  3,5},
  {&(_tg__ZTV7S8033C7__A1__8S19772C4__8S19772C3[3]),  3,5},
  {&(_tg__ZTV8S19772C8__8S19772C3[3]),  3,6},
  {&(_tg__ZTV8S19772C5__8S19772C8__8S19772C3[3]),  3,5},
  {&(_tg__ZTV8S19772C9__8S19772C3[5]),  5,7},
  {&(_tg__ZTV9S19772C108S19772C9__8S19772C3[4]),  4,6},
  {&(_tg__ZTV8S19772C8__9S19772C108S19772C9__8S19772C3[5]),  5,8},
  {&(_tg__ZTV8S19772C5__9S19772C108S19772C9__8S19772C3[3]),  3,5},
  {&(_tg__ZTV8S19772C8__8S19772C9__8S19772C3[5]),  5,8},
  {&(_tg__ZTV8S19772C5__8S19772C9__8S19772C3[3]),  3,5},
  {&(_tg__ZTV9S19772C11__8S19772C9__8S19772C3[5]),  5,8},
  {&(_tg__ZTV9S19772C11__8S19772C3[3]),  3,6},
  {&(_tg__ZTV8S19772C5__9S19772C11__8S19772C3[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19772C3[];
extern  VTBL_ENTRY _ZTV8S19772C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19772C3[];
static VTBL_ENTRY alt_thunk_names175[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19772C9D0Ev,_ZTv0_n20_N8S19772C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19772C9D0Ev,_ZThn88_N8S19772C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19772C9D1Ev,_ZTv0_n20_N8S19772C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19772C9D1Ev,_ZThn88_N8S19772C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19772C8D0Ev,_ZTv0_n12_N8S19772C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19772C8D0Ev,_ZThn260_N8S19772C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19772C8D1Ev,_ZTv0_n12_N8S19772C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19772C8D1Ev,_ZThn260_N8S19772C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19772C4D0Ev,_ZTv0_n12_N8S19772C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19772C4D0Ev,_ZThn132_N8S19772C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19772C4D1Ev,_ZTv0_n12_N8S19772C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19772C4D1Ev,_ZThn132_N8S19772C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19772C3D0Ev,_ZTv0_n20_N8S19772C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1952_N8S19772C3D0Ev,_ZThn1004_N8S19772C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19772C3D1Ev,_ZTv0_n20_N8S19772C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1952_N8S19772C3D1Ev,_ZThn1004_N8S19772C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19772C3D0Ev,_ZTv0_n24_N8S19772C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1792_N8S19772C3D0Ev,_ZThn916_N8S19772C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19772C3D1Ev,_ZTv0_n24_N8S19772C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1792_N8S19772C3D1Ev,_ZThn916_N8S19772C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19772C3D0Ev,_ZTv0_n12_N8S19772C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1648_N8S19772C3D0Ev,_ZThn840_N8S19772C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1056_N8S19772C3D0Ev,_ZThn528_N8S19772C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19772C3D1Ev,_ZTv0_n12_N8S19772C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1648_N8S19772C3D1Ev,_ZThn840_N8S19772C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1056_N8S19772C3D1Ev,_ZThn528_N8S19772C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19772C3D0Ev,_ZTv0_n16_N8S19772C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1152_N8S19772C3D0Ev,_ZThn580_N8S19772C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn800_N8S19772C3D0Ev,_ZThn396_N8S19772C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19772C3D1Ev,_ZTv0_n16_N8S19772C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1152_N8S19772C3D1Ev,_ZThn580_N8S19772C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn800_N8S19772C3D1Ev,_ZThn396_N8S19772C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19772C3 = {  "S19772C3", // class name
  bases_S19772C3, 14,
  &(vtc_S19772C3[0]), // expected_vtbl_contents
  &(vtt_S19772C3[0]), // expected_vtt_contents
  ABISELECT(2288,1204), // object size
  NSPAIRA(_ZTI8S19772C3),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19772C3),56, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19772C3),21, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names175,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19772C1  : virtual S8033C4 , S19772C3 , S19772C9 , S19772C12 {
  int s19772c1f0;
  ~S19772C1(); // tgen
  S19772C1(); // tgen
};
//SIG(1 S19772C1) C1{ VBC2{ m Fp[3] FL[8]} BC3{ VBC4{ BC5{ BC6{ vd m Fc Fc:0 Fl[8] FD} Fp FC7{} Fp FD} VBC6 vd FC6 Fp} VBC8{ BC6 VBC5 vd v1 Fi Fc Fp Fi Fp[2] FC4} VBC9{ BC10{ BC6 VBC8 vd Fp FL Fl Fc Fp Fi} VBC11{ VBC5 v2 Fc Fs FD Fp[2]} vd Fc FL:35} VBC2 VBC12{ v3 FD Fp FC6 FL FD Fi} vd Fp FC12[3] FC12 Fc} BC9 BC12 Fi}


S19772C1 ::~S19772C1(){ note_dtor("S19772C1", this);} // tgen
S19772C1 ::S19772C1(){ note_ctor("S19772C1", this);} // tgen

static void Test_S19772C1()
{
  extern Class_Descriptor cd_S19772C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(165,349)];
    init_test(&cd_S19772C1, buf);
    S19772C1 *dp, &lv = *(dp=new (buf) S19772C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2624,1392), "sizeof(S19772C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19772C1)");
    check_base_class_offset(lv, (S8033C4*), ABISELECT(1144,584), "S19772C1");
    check_base_class_offset(lv, (S8033C4*)(S19772C3*), ABISELECT(1144,584), "S19772C1");
    check_base_class_offset(lv, (S8033C7*)(S19772C5*)(S19772C4*), ABISELECT(1232,660), "S19772C1");
    check_base_class_offset(lv, (S19772C5*)(S19772C4*), ABISELECT(1232,660), "S19772C1");
    /*is_ambiguous_... S19772C4::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19772C4*), ABISELECT(1488,792), "S19772C1");
    check_base_class_offset(lv, (S19772C4*)(S19772C3*), ABISELECT(1232,660), "S19772C1");
    /*is_ambiguous_... S19772C8::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19772C8*), ABISELECT(1584,844), "S19772C1");
    /*is_ambiguous_... S19772C1::S19772C5 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19772C5*), ABISELECT(2080,1104), "S19772C1");
    check_base_class_offset(lv, (S19772C5*)(S19772C8*), ABISELECT(2080,1104), "S19772C1");
    check_base_class_offset(lv, (S19772C5*)(S19772C11*), ABISELECT(2080,1104), "S19772C1");
    check_base_class_offset(lv, (S19772C8*)(S19772C3*), ABISELECT(1584,844), "S19772C1");
    /*is_ambiguous_... S19772C1::S19772C9 */ AMB_check_base_class_offset(lv, (S19772C8*)(S19772C10*)(S19772C9*), ABISELECT(1584,844), "S19772C1");
    /*is_ambiguous_... S19772C1::S19772C9 */ AMB_check_base_class_offset(lv, (S19772C8*)(S19772C10*)(S19772C9*), ABISELECT(1584,844), "S19772C1");
    /*is_ambiguous_... S19772C1::S19772C9 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19772C10*)(S19772C9*), ABISELECT(2224,1180), "S19772C1");
    /*is_ambiguous_... S19772C1::S19772C9 */ AMB_check_base_class_offset(lv, (S19772C10*)(S19772C9*), ABISELECT(2224,1180), "S19772C1");
    /*is_ambiguous_... S19772C1::S19772C9 */ AMB_check_base_class_offset(lv, (S19772C11*)(S19772C9*), ABISELECT(2384,1268), "S19772C1");
    /*is_ambiguous_... S19772C1::S19772C9 */ AMB_check_base_class_offset(lv, (S19772C11*)(S19772C9*), ABISELECT(2384,1268), "S19772C1");
    check_base_class_offset(lv, (S19772C9*)(S19772C3*), ABISELECT(2224,1180), "S19772C1");
    check_base_class_offset(lv, (S19772C12*)(S19772C3*), ABISELECT(2432,1296), "S19772C1");
    check_base_class_offset(lv, (S19772C3*), 0, "S19772C1");
    /*is_ambiguous_... S19772C1::S19772C9 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19772C10*)(S19772C9*), ABISELECT(800,396), "S19772C1");
    /*is_ambiguous_... S19772C1::S19772C9 */ AMB_check_base_class_offset(lv, (S19772C10*)(S19772C9*), ABISELECT(800,396), "S19772C1");
    /*is_ambiguous_... S19772C1::S19772C9 */ AMB_check_base_class_offset(lv, (S19772C9*), ABISELECT(800,396), "S19772C1");
    /*is_ambiguous_... S19772C1::S19772C12 */ AMB_check_base_class_offset(lv, (S19772C12*), ABISELECT(960,484), "S19772C1");
    check_field_offset(lv, s19772c1f0, ABISELECT(1140,580), "S19772C1.s19772c1f0");
    test_class_info(&lv, &cd_S19772C1);
    dp->~S19772C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19772C1(Test_S19772C1, "S19772C1", ABISELECT(2624,1392));

#else // __cplusplus

extern void _ZN8S19772C1C1Ev();
extern void _ZN8S19772C1D1Ev();
Name_Map name_map_S19772C1[] = {
  NSPAIR(_ZN8S19772C1C1Ev),
  NSPAIR(_ZN8S19772C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C4;
extern VTBL_ENTRY _ZTI7S8033C4[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19772C5;
extern VTBL_ENTRY _ZTI8S19772C5[];
extern  VTBL_ENTRY _ZTV8S19772C5[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19772C4;
extern VTBL_ENTRY _ZTI8S19772C4[];
extern  VTBL_ENTRY _ZTV8S19772C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19772C4[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19772C5;
extern VTBL_ENTRY _ZTI8S19772C5[];
extern  VTBL_ENTRY _ZTV8S19772C5[];
extern Class_Descriptor cd_S19772C8;
extern VTBL_ENTRY _ZTI8S19772C8[];
extern  VTBL_ENTRY _ZTV8S19772C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19772C8[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19772C10;
extern VTBL_ENTRY _ZTI9S19772C10[];
extern  VTBL_ENTRY _ZTV9S19772C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19772C10[];
extern Class_Descriptor cd_S19772C11;
extern VTBL_ENTRY _ZTI9S19772C11[];
extern  VTBL_ENTRY _ZTV9S19772C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19772C11[];
extern Class_Descriptor cd_S19772C9;
extern VTBL_ENTRY _ZTI8S19772C9[];
extern  VTBL_ENTRY _ZTV8S19772C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19772C9[];
extern Class_Descriptor cd_S19772C12;
extern VTBL_ENTRY _ZTI9S19772C12[];
extern  VTBL_ENTRY _ZTV9S19772C12[];
extern Class_Descriptor cd_S19772C3;
extern VTBL_ENTRY _ZTI8S19772C3[];
extern  VTBL_ENTRY _ZTV8S19772C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19772C3[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19772C10;
extern VTBL_ENTRY _ZTI9S19772C10[];
extern  VTBL_ENTRY _ZTV9S19772C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19772C10[];
extern Class_Descriptor cd_S19772C9;
extern VTBL_ENTRY _ZTI8S19772C9[];
extern  VTBL_ENTRY _ZTV8S19772C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19772C9[];
extern Class_Descriptor cd_S19772C12;
extern VTBL_ENTRY _ZTI9S19772C12[];
extern  VTBL_ENTRY _ZTV9S19772C12[];
static Base_Class bases_S19772C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C4,    ABISELECT(1144,584), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C7,    ABISELECT(1232,660), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19772C5,    ABISELECT(1232,660), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(1488,792), //bcp->offset
    28, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19772C4,    ABISELECT(1232,660), //bcp->offset
    22, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S8033C7,    ABISELECT(1584,844), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(2080,1104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19772C5,    ABISELECT(2080,1104), //bcp->offset
    41, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19772C8,    ABISELECT(1584,844), //bcp->offset
    33, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S8033C7,    ABISELECT(2224,1180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19772C10,    ABISELECT(2224,1180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19772C11,    ABISELECT(2384,1268), //bcp->offset
    54, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19772C9,    ABISELECT(2224,1180), //bcp->offset
    46, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S19772C12,    ABISELECT(2432,1296), //bcp->offset
    62, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S19772C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S8033C7,    ABISELECT(800,396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19772C10,    ABISELECT(800,396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19772C9,    ABISELECT(800,396), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19772C12,    ABISELECT(960,484), //bcp->offset
    19, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19772C1[];
extern void _ZN8S19772C1D1Ev();
extern void _ZN8S19772C1D0Ev();
extern void ABISELECT(_ZThn800_N8S19772C1D1Ev,_ZThn396_N8S19772C1D1Ev)();
extern void ABISELECT(_ZThn800_N8S19772C1D0Ev,_ZThn396_N8S19772C1D0Ev)();
extern void _ZN9S19772C122v3Ev();
extern void ABISELECT(_ZTv0_n32_N8S19772C1D1Ev,_ZTv0_n16_N8S19772C1D1Ev)();
extern void ABISELECT(_ZThn1232_N8S19772C1D1Ev,_ZThn660_N8S19772C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19772C1D0Ev,_ZTv0_n16_N8S19772C1D0Ev)();
extern void ABISELECT(_ZThn1232_N8S19772C1D0Ev,_ZThn660_N8S19772C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19772C1D1Ev,_ZTv0_n12_N8S19772C1D1Ev)();
extern void ABISELECT(_ZThn1488_N8S19772C1D1Ev,_ZThn792_N8S19772C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19772C1D0Ev,_ZTv0_n12_N8S19772C1D0Ev)();
extern void ABISELECT(_ZThn1488_N8S19772C1D0Ev,_ZThn792_N8S19772C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19772C1D1Ev,_ZTv0_n16_N8S19772C1D1Ev)();
extern void ABISELECT(_ZThn1584_N8S19772C1D1Ev,_ZThn844_N8S19772C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19772C1D0Ev,_ZTv0_n16_N8S19772C1D0Ev)();
extern void ABISELECT(_ZThn1584_N8S19772C1D0Ev,_ZThn844_N8S19772C1D0Ev)() __attribute__((weak));
extern void _ZN8S19772C82v1Ev();
extern void ABISELECT(_ZTv0_n24_N8S19772C1D1Ev,_ZTv0_n12_N8S19772C1D1Ev)();
extern void ABISELECT(_ZThn2080_N8S19772C1D1Ev,_ZThn1104_N8S19772C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19772C1D0Ev,_ZTv0_n12_N8S19772C1D0Ev)();
extern void ABISELECT(_ZThn2080_N8S19772C1D0Ev,_ZThn1104_N8S19772C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19772C1D1Ev,_ZTv0_n24_N8S19772C1D1Ev)();
extern void ABISELECT(_ZThn2224_N8S19772C1D1Ev,_ZThn1180_N8S19772C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19772C1D0Ev,_ZTv0_n24_N8S19772C1D0Ev)();
extern void ABISELECT(_ZThn2224_N8S19772C1D0Ev,_ZThn1180_N8S19772C1D0Ev)() __attribute__((weak));
extern void _ZN9S19772C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N8S19772C1D1Ev,_ZTv0_n20_N8S19772C1D1Ev)();
extern void ABISELECT(_ZThn2384_N8S19772C1D1Ev,_ZThn1268_N8S19772C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19772C1D0Ev,_ZTv0_n20_N8S19772C1D0Ev)();
extern void ABISELECT(_ZThn2384_N8S19772C1D0Ev,_ZThn1268_N8S19772C1D0Ev)() __attribute__((weak));
extern void _ZN9S19772C122v3Ev();
static  VTBL_ENTRY vtc_S19772C1[] = {
  ABISELECT(2432,1296),
  ABISELECT(1144,584),
  ABISELECT(2384,1268),
  ABISELECT(2224,1180),
  ABISELECT(2080,1104),
  ABISELECT(1584,844),
  ABISELECT(1488,792),
  ABISELECT(1232,660),
  0,
  (VTBL_ENTRY)&(_ZTI8S19772C1[0]),
  (VTBL_ENTRY)&_ZN8S19772C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19772C1D0Ev,
  ABISELECT(1584,872),
  ABISELECT(1280,708),
  ABISELECT(784,448),
  ABISELECT(-800,-396),
  (VTBL_ENTRY)&(_ZTI8S19772C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn800_N8S19772C1D1Ev,_ZThn396_N8S19772C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn800_N8S19772C1D0Ev,_ZThn396_N8S19772C1D0Ev),
  ABISELECT(-960,-484),
  (VTBL_ENTRY)&(_ZTI8S19772C1[0]),
  (VTBL_ENTRY)&_ZN9S19772C122v3Ev,
  ABISELECT(-1232,-660),
  ABISELECT(256,132),
  ABISELECT(-1232,-660),
  (VTBL_ENTRY)&(_ZTI8S19772C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19772C1D1Ev,_ZTv0_n16_N8S19772C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19772C1D0Ev,_ZTv0_n16_N8S19772C1D0Ev),
  ABISELECT(-1488,-792),
  ABISELECT(-1488,-792),
  (VTBL_ENTRY)&(_ZTI8S19772C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19772C1D1Ev,_ZTv0_n12_N8S19772C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19772C1D0Ev,_ZTv0_n12_N8S19772C1D0Ev),
  0,
  ABISELECT(-1584,-844),
  ABISELECT(496,260),
  ABISELECT(-1584,-844),
  (VTBL_ENTRY)&(_ZTI8S19772C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19772C1D1Ev,_ZTv0_n16_N8S19772C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19772C1D0Ev,_ZTv0_n16_N8S19772C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19772C82v1Ev,
  ABISELECT(-2080,-1104),
  ABISELECT(-2080,-1104),
  (VTBL_ENTRY)&(_ZTI8S19772C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19772C1D1Ev,_ZTv0_n12_N8S19772C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19772C1D0Ev,_ZTv0_n12_N8S19772C1D0Ev),
  ABISELECT(-2224,-1180),
  ABISELECT(160,88),
  ABISELECT(-144,-76),
  ABISELECT(-640,-336),
  ABISELECT(-2224,-1180),
  (VTBL_ENTRY)&(_ZTI8S19772C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19772C1D1Ev,_ZTv0_n24_N8S19772C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19772C1D0Ev,_ZTv0_n24_N8S19772C1D0Ev),
  ABISELECT(-2384,-1268),
  0,
  ABISELECT(-304,-164),
  ABISELECT(-2384,-1268),
  (VTBL_ENTRY)&(_ZTI8S19772C1[0]),
  (VTBL_ENTRY)&_ZN9S19772C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19772C1D1Ev,_ZTv0_n20_N8S19772C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19772C1D0Ev,_ZTv0_n20_N8S19772C1D0Ev),
  0,
  ABISELECT(-2432,-1296),
  (VTBL_ENTRY)&(_ZTI8S19772C1[0]),
  (VTBL_ENTRY)&_ZN9S19772C122v3Ev,
};
extern VTBL_ENTRY _ZTV8S19772C1[];
extern void _ZN8S19772C3D1Ev();
extern void _ZN8S19772C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19772C3__8S19772C1[] = {
  ABISELECT(2432,1296),
  ABISELECT(1144,584),
  ABISELECT(2384,1268),
  ABISELECT(2224,1180),
  ABISELECT(2080,1104),
  ABISELECT(1584,844),
  ABISELECT(1488,792),
  ABISELECT(1232,660),
  0,
  (VTBL_ENTRY)&(_ZTI8S19772C3[0]),
  (VTBL_ENTRY)&_ZN8S19772C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19772C3D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19772C3D1Ev,_ZTv0_n16_N8S19772C3D1Ev)();
extern void ABISELECT(_ZThn1232_N8S19772C3D1Ev,_ZThn660_N8S19772C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19772C3D0Ev,_ZTv0_n16_N8S19772C3D0Ev)();
extern void ABISELECT(_ZThn1232_N8S19772C3D0Ev,_ZThn660_N8S19772C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19772C4__8S19772C3__8S19772C1[] = {
  ABISELECT(-1232,-660),
  ABISELECT(256,132),
  ABISELECT(-1232,-660),
  (VTBL_ENTRY)&(_ZTI8S19772C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19772C3D1Ev,_ZTv0_n16_N8S19772C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19772C3D0Ev,_ZTv0_n16_N8S19772C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19772C3D1Ev,_ZTv0_n12_N8S19772C3D1Ev)();
extern void ABISELECT(_ZThn1488_N8S19772C3D1Ev,_ZThn792_N8S19772C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19772C3D0Ev,_ZTv0_n12_N8S19772C3D0Ev)();
extern void ABISELECT(_ZThn1488_N8S19772C3D0Ev,_ZThn792_N8S19772C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__8S19772C3__8S19772C1[] = {
  ABISELECT(-1488,-792),
  ABISELECT(-1488,-792),
  (VTBL_ENTRY)&(_ZTI8S19772C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19772C3D1Ev,_ZTv0_n12_N8S19772C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19772C3D0Ev,_ZTv0_n12_N8S19772C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19772C3D1Ev,_ZTv0_n16_N8S19772C3D1Ev)();
extern void ABISELECT(_ZThn1584_N8S19772C3D1Ev,_ZThn844_N8S19772C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19772C3D0Ev,_ZTv0_n16_N8S19772C3D0Ev)();
extern void ABISELECT(_ZThn1584_N8S19772C3D0Ev,_ZThn844_N8S19772C3D0Ev)() __attribute__((weak));
extern void _ZN8S19772C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19772C8__8S19772C3__8S19772C1[] = {
  0,
  ABISELECT(-1584,-844),
  ABISELECT(496,260),
  ABISELECT(-1584,-844),
  (VTBL_ENTRY)&(_ZTI8S19772C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19772C3D1Ev,_ZTv0_n16_N8S19772C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19772C3D0Ev,_ZTv0_n16_N8S19772C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19772C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19772C3D1Ev,_ZTv0_n12_N8S19772C3D1Ev)();
extern void ABISELECT(_ZThn2080_N8S19772C3D1Ev,_ZThn1104_N8S19772C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19772C3D0Ev,_ZTv0_n12_N8S19772C3D0Ev)();
extern void ABISELECT(_ZThn2080_N8S19772C3D0Ev,_ZThn1104_N8S19772C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19772C5__A1__8S19772C3__8S19772C1[] = {
  ABISELECT(-2080,-1104),
  ABISELECT(-2080,-1104),
  (VTBL_ENTRY)&(_ZTI8S19772C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19772C3D1Ev,_ZTv0_n12_N8S19772C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19772C3D0Ev,_ZTv0_n12_N8S19772C3D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S19772C3D1Ev,_ZTv0_n24_N8S19772C3D1Ev)();
extern void ABISELECT(_ZThn2224_N8S19772C3D1Ev,_ZThn1180_N8S19772C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19772C3D0Ev,_ZTv0_n24_N8S19772C3D0Ev)();
extern void ABISELECT(_ZThn2224_N8S19772C3D0Ev,_ZThn1180_N8S19772C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19772C9__8S19772C3__8S19772C1[] = {
  ABISELECT(-2224,-1180),
  ABISELECT(160,88),
  ABISELECT(-144,-76),
  ABISELECT(-640,-336),
  ABISELECT(-2224,-1180),
  (VTBL_ENTRY)&(_ZTI8S19772C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19772C3D1Ev,_ZTv0_n24_N8S19772C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19772C3D0Ev,_ZTv0_n24_N8S19772C3D0Ev),
};
extern void _ZN9S19772C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N8S19772C3D1Ev,_ZTv0_n20_N8S19772C3D1Ev)();
extern void ABISELECT(_ZThn2384_N8S19772C3D1Ev,_ZThn1268_N8S19772C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19772C3D0Ev,_ZTv0_n20_N8S19772C3D0Ev)();
extern void ABISELECT(_ZThn2384_N8S19772C3D0Ev,_ZThn1268_N8S19772C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19772C11__8S19772C3__8S19772C1[] = {
  ABISELECT(-2384,-1268),
  0,
  ABISELECT(-304,-164),
  ABISELECT(-2384,-1268),
  (VTBL_ENTRY)&(_ZTI8S19772C3[0]),
  (VTBL_ENTRY)&_ZN9S19772C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19772C3D1Ev,_ZTv0_n20_N8S19772C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19772C3D0Ev,_ZTv0_n20_N8S19772C3D0Ev),
};
extern void _ZN9S19772C122v3Ev();
static  VTBL_ENTRY _tg__ZTV9S19772C12__8S19772C3__8S19772C1[] = {
  0,
  ABISELECT(-2432,-1296),
  (VTBL_ENTRY)&(_ZTI8S19772C3[0]),
  (VTBL_ENTRY)&_ZN9S19772C122v3Ev,
};
extern void _ZN8S19772C9D1Ev();
extern void _ZN8S19772C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19772C9__A__8S19772C1[] = {
  ABISELECT(1584,872),
  ABISELECT(1280,708),
  ABISELECT(784,448),
  0,
  (VTBL_ENTRY)&(_ZTI8S19772C9[0]),
  (VTBL_ENTRY)&_ZN8S19772C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19772C9D0Ev,
};
extern void _ZN9S19772C10D1Ev();
extern void _ZN9S19772C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19772C108S19772C9__A1__8S19772C1[] = {
  ABISELECT(1280,708),
  ABISELECT(784,448),
  0,
  (VTBL_ENTRY)&(_ZTI9S19772C10[0]),
  (VTBL_ENTRY)&_ZN9S19772C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19772C10D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19772C10D1Ev,_ZTv0_n16_N9S19772C10D1Ev)();
extern void ABISELECT(_ZThn784_N9S19772C10D1Ev,_ZThn448_N9S19772C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19772C10D0Ev,_ZTv0_n16_N9S19772C10D0Ev)();
extern void ABISELECT(_ZThn784_N9S19772C10D0Ev,_ZThn448_N9S19772C10D0Ev)() __attribute__((weak));
extern void _ZN8S19772C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19772C8__9S19772C108S19772C9__A1__8S19772C1[] = {
  0,
  ABISELECT(-784,-448),
  ABISELECT(496,260),
  ABISELECT(-784,-448),
  (VTBL_ENTRY)&(_ZTI9S19772C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19772C10D1Ev,_ZTv0_n16_N9S19772C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19772C10D0Ev,_ZTv0_n16_N9S19772C10D0Ev),
  (VTBL_ENTRY)&_ZN8S19772C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19772C10D1Ev,_ZTv0_n12_N9S19772C10D1Ev)();
extern void ABISELECT(_ZThn1280_N9S19772C10D1Ev,_ZThn708_N9S19772C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19772C10D0Ev,_ZTv0_n12_N9S19772C10D0Ev)();
extern void ABISELECT(_ZThn1280_N9S19772C10D0Ev,_ZThn708_N9S19772C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19772C5__9S19772C108S19772C9__A1__8S19772C1[] = {
  ABISELECT(-1280,-708),
  ABISELECT(-1280,-708),
  (VTBL_ENTRY)&(_ZTI9S19772C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19772C10D1Ev,_ZTv0_n12_N9S19772C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19772C10D0Ev,_ZTv0_n12_N9S19772C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19772C9D1Ev,_ZTv0_n16_N8S19772C9D1Ev)();
extern void ABISELECT(_ZThn784_N8S19772C9D1Ev,_ZThn448_N8S19772C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19772C9D0Ev,_ZTv0_n16_N8S19772C9D0Ev)();
extern void ABISELECT(_ZThn784_N8S19772C9D0Ev,_ZThn448_N8S19772C9D0Ev)() __attribute__((weak));
extern void _ZN8S19772C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19772C8__8S19772C9__A__8S19772C1[] = {
  0,
  ABISELECT(-784,-448),
  ABISELECT(496,260),
  ABISELECT(-784,-448),
  (VTBL_ENTRY)&(_ZTI8S19772C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19772C9D1Ev,_ZTv0_n16_N8S19772C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19772C9D0Ev,_ZTv0_n16_N8S19772C9D0Ev),
  (VTBL_ENTRY)&_ZN8S19772C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19772C9D1Ev,_ZTv0_n12_N8S19772C9D1Ev)();
extern void ABISELECT(_ZThn1280_N8S19772C9D1Ev,_ZThn708_N8S19772C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19772C9D0Ev,_ZTv0_n12_N8S19772C9D0Ev)();
extern void ABISELECT(_ZThn1280_N8S19772C9D0Ev,_ZThn708_N8S19772C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19772C5__8S19772C9__A__8S19772C1[] = {
  ABISELECT(-1280,-708),
  ABISELECT(-1280,-708),
  (VTBL_ENTRY)&(_ZTI8S19772C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19772C9D1Ev,_ZTv0_n12_N8S19772C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19772C9D0Ev,_ZTv0_n12_N8S19772C9D0Ev),
};
extern void _ZN9S19772C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N8S19772C9D1Ev,_ZTv0_n20_N8S19772C9D1Ev)();
extern void ABISELECT(_ZThn1584_N8S19772C9D1Ev,_ZThn872_N8S19772C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19772C9D0Ev,_ZTv0_n20_N8S19772C9D0Ev)();
extern void ABISELECT(_ZThn1584_N8S19772C9D0Ev,_ZThn872_N8S19772C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19772C11__8S19772C9__A__8S19772C1[] = {
  ABISELECT(-1584,-872),
  0,
  ABISELECT(-304,-164),
  ABISELECT(-1584,-872),
  (VTBL_ENTRY)&(_ZTI8S19772C9[0]),
  (VTBL_ENTRY)&_ZN9S19772C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19772C9D1Ev,_ZTv0_n20_N8S19772C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19772C9D0Ev,_ZTv0_n20_N8S19772C9D0Ev),
};
extern void _ZN8S19772C4D1Ev();
extern void _ZN8S19772C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19772C4__8S19772C1[] = {
  ABISELECT(256,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S19772C4[0]),
  (VTBL_ENTRY)&_ZN8S19772C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19772C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19772C4D1Ev,_ZTv0_n12_N8S19772C4D1Ev)();
extern void ABISELECT(_ZThn256_N8S19772C4D1Ev,_ZThn132_N8S19772C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19772C4D0Ev,_ZTv0_n12_N8S19772C4D0Ev)();
extern void ABISELECT(_ZThn256_N8S19772C4D0Ev,_ZThn132_N8S19772C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__8S19772C4__8S19772C1[] = {
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  (VTBL_ENTRY)&(_ZTI8S19772C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19772C4D1Ev,_ZTv0_n12_N8S19772C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19772C4D0Ev,_ZTv0_n12_N8S19772C4D0Ev),
};
extern void _ZN8S19772C8D1Ev();
extern void _ZN8S19772C8D0Ev();
extern void _ZN8S19772C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19772C8__8S19772C1[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19772C8[0]),
  (VTBL_ENTRY)&_ZN8S19772C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19772C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19772C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19772C8D1Ev,_ZTv0_n12_N8S19772C8D1Ev)();
extern void ABISELECT(_ZThn496_N8S19772C8D1Ev,_ZThn260_N8S19772C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19772C8D0Ev,_ZTv0_n12_N8S19772C8D0Ev)();
extern void ABISELECT(_ZThn496_N8S19772C8D0Ev,_ZThn260_N8S19772C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19772C5__8S19772C8__8S19772C1[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI8S19772C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19772C8D1Ev,_ZTv0_n12_N8S19772C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19772C8D0Ev,_ZTv0_n12_N8S19772C8D0Ev),
};
extern void _ZN8S19772C9D1Ev();
extern void _ZN8S19772C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19772C9__8S19772C1[] = {
  ABISELECT(160,88),
  ABISELECT(-144,-76),
  ABISELECT(-640,-336),
  0,
  (VTBL_ENTRY)&(_ZTI8S19772C9[0]),
  (VTBL_ENTRY)&_ZN8S19772C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19772C9D0Ev,
};
extern void _ZN9S19772C10D1Ev();
extern void _ZN9S19772C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19772C108S19772C9__8S19772C1[] = {
  ABISELECT(-144,-76),
  ABISELECT(-640,-336),
  0,
  (VTBL_ENTRY)&(_ZTI9S19772C10[0]),
  (VTBL_ENTRY)&_ZN9S19772C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19772C10D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19772C10D1Ev,_ZTv0_n16_N9S19772C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19772C10D0Ev,_ZTv0_n16_N9S19772C10D0Ev)();
extern void _ZN8S19772C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19772C8__9S19772C108S19772C9__8S19772C1[] = {
  0,
  ABISELECT(640,336),
  ABISELECT(496,260),
  ABISELECT(640,336),
  (VTBL_ENTRY)&(_ZTI9S19772C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19772C10D1Ev,_ZTv0_n16_N9S19772C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19772C10D0Ev,_ZTv0_n16_N9S19772C10D0Ev),
  (VTBL_ENTRY)&_ZN8S19772C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19772C10D1Ev,_ZTv0_n12_N9S19772C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19772C10D0Ev,_ZTv0_n12_N9S19772C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19772C5__9S19772C108S19772C9__8S19772C1[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI9S19772C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19772C10D1Ev,_ZTv0_n12_N9S19772C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19772C10D0Ev,_ZTv0_n12_N9S19772C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19772C9D1Ev,_ZTv0_n16_N8S19772C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19772C9D0Ev,_ZTv0_n16_N8S19772C9D0Ev)();
extern void _ZN8S19772C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19772C8__8S19772C9__8S19772C1[] = {
  0,
  ABISELECT(640,336),
  ABISELECT(496,260),
  ABISELECT(640,336),
  (VTBL_ENTRY)&(_ZTI8S19772C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19772C9D1Ev,_ZTv0_n16_N8S19772C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19772C9D0Ev,_ZTv0_n16_N8S19772C9D0Ev),
  (VTBL_ENTRY)&_ZN8S19772C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19772C9D1Ev,_ZTv0_n12_N8S19772C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19772C9D0Ev,_ZTv0_n12_N8S19772C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19772C5__8S19772C9__8S19772C1[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S19772C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19772C9D1Ev,_ZTv0_n12_N8S19772C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19772C9D0Ev,_ZTv0_n12_N8S19772C9D0Ev),
};
extern void _ZN9S19772C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N8S19772C9D1Ev,_ZTv0_n20_N8S19772C9D1Ev)();
extern void ABISELECT(_ZThn160_N8S19772C9D1Ev,_ZThn88_N8S19772C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19772C9D0Ev,_ZTv0_n20_N8S19772C9D0Ev)();
extern void ABISELECT(_ZThn160_N8S19772C9D0Ev,_ZThn88_N8S19772C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19772C11__8S19772C9__8S19772C1[] = {
  ABISELECT(-160,-88),
  0,
  ABISELECT(-304,-164),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S19772C9[0]),
  (VTBL_ENTRY)&_ZN9S19772C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19772C9D1Ev,_ZTv0_n20_N8S19772C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19772C9D0Ev,_ZTv0_n20_N8S19772C9D0Ev),
};
extern void _ZN9S19772C112v2Ev();
extern void _ZN9S19772C11D1Ev();
extern void _ZN9S19772C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19772C11__8S19772C1[] = {
  ABISELECT(-304,-164),
  0,
  (VTBL_ENTRY)&(_ZTI9S19772C11[0]),
  (VTBL_ENTRY)&_ZN9S19772C112v2Ev,
  (VTBL_ENTRY)&_ZN9S19772C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19772C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19772C11D1Ev,_ZTv0_n12_N9S19772C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19772C11D0Ev,_ZTv0_n12_N9S19772C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19772C5__9S19772C11__8S19772C1[] = {
  ABISELECT(304,164),
  ABISELECT(304,164),
  (VTBL_ENTRY)&(_ZTI9S19772C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19772C11D1Ev,_ZTv0_n12_N9S19772C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19772C11D0Ev,_ZTv0_n12_N9S19772C11D0Ev),
};
static  VTT_ENTRY vtt_S19772C1[] = {
  {&(_ZTV8S19772C1[10]),  10,66},
  {&(_tg__ZTV8S19772C3__8S19772C1[10]),  10,12},
  {&(_tg__ZTV8S19772C4__8S19772C3__8S19772C1[4]),  4,6},
  {&(_tg__ZTV7S8033C7__A1__8S19772C3__8S19772C1[3]),  3,5},
  {&(_tg__ZTV8S19772C8__8S19772C3__8S19772C1[5]),  5,8},
  {&(_tg__ZTV8S19772C5__A1__8S19772C3__8S19772C1[3]),  3,5},
  {&(_tg__ZTV8S19772C9__8S19772C3__8S19772C1[6]),  6,8},
  {&(_tg__ZTV9S19772C11__8S19772C3__8S19772C1[5]),  5,8},
  {&(_tg__ZTV9S19772C12__8S19772C3__8S19772C1[3]),  3,4},
  {&(_tg__ZTV8S19772C9__A__8S19772C1[5]),  5,7},
  {&(_tg__ZTV9S19772C108S19772C9__A1__8S19772C1[4]),  4,6},
  {&(_tg__ZTV8S19772C8__9S19772C108S19772C9__A1__8S19772C1[5]),  5,8},
  {&(_tg__ZTV8S19772C5__9S19772C108S19772C9__A1__8S19772C1[3]),  3,5},
  {&(_tg__ZTV8S19772C8__8S19772C9__A__8S19772C1[5]),  5,8},
  {&(_tg__ZTV8S19772C5__8S19772C9__A__8S19772C1[3]),  3,5},
  {&(_tg__ZTV9S19772C11__8S19772C9__A__8S19772C1[5]),  5,8},
  {&(_ZTV8S19772C1[26]),  26,66},
  {&(_ZTV8S19772C1[31]),  31,66},
  {&(_ZTV8S19772C1[38]),  38,66},
  {&(_ZTV8S19772C1[44]),  44,66},
  {&(_ZTV8S19772C1[52]),  52,66},
  {&(_ZTV8S19772C1[59]),  59,66},
  {&(_ZTV8S19772C1[65]),  65,66},
  {&(_ZTV8S19772C1[17]),  17,66},
  {&(_tg__ZTV8S19772C4__8S19772C1[3]),  3,5},
  {&(_tg__ZTV7S8033C7__A1__8S19772C4__8S19772C1[3]),  3,5},
  {&(_tg__ZTV8S19772C8__8S19772C1[3]),  3,6},
  {&(_tg__ZTV8S19772C5__8S19772C8__8S19772C1[3]),  3,5},
  {&(_tg__ZTV8S19772C9__8S19772C1[5]),  5,7},
  {&(_tg__ZTV9S19772C108S19772C9__8S19772C1[4]),  4,6},
  {&(_tg__ZTV8S19772C8__9S19772C108S19772C9__8S19772C1[5]),  5,8},
  {&(_tg__ZTV8S19772C5__9S19772C108S19772C9__8S19772C1[3]),  3,5},
  {&(_tg__ZTV8S19772C8__8S19772C9__8S19772C1[5]),  5,8},
  {&(_tg__ZTV8S19772C5__8S19772C9__8S19772C1[3]),  3,5},
  {&(_tg__ZTV9S19772C11__8S19772C9__8S19772C1[5]),  5,8},
  {&(_tg__ZTV9S19772C11__8S19772C1[3]),  3,6},
  {&(_tg__ZTV8S19772C5__9S19772C11__8S19772C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19772C1[];
extern  VTBL_ENTRY _ZTV8S19772C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19772C1[];
static VTBL_ENTRY alt_thunk_names176[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19772C8D0Ev,_ZTv0_n12_N8S19772C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19772C8D0Ev,_ZThn260_N8S19772C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19772C8D1Ev,_ZTv0_n12_N8S19772C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19772C8D1Ev,_ZThn260_N8S19772C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19772C4D0Ev,_ZTv0_n12_N8S19772C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19772C4D0Ev,_ZThn132_N8S19772C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19772C4D1Ev,_ZTv0_n12_N8S19772C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19772C4D1Ev,_ZThn132_N8S19772C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19772C9D0Ev,_ZTv0_n20_N8S19772C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19772C9D0Ev,_ZThn88_N8S19772C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1584_N8S19772C9D0Ev,_ZThn872_N8S19772C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19772C9D1Ev,_ZTv0_n20_N8S19772C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19772C9D1Ev,_ZThn88_N8S19772C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1584_N8S19772C9D1Ev,_ZThn872_N8S19772C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19772C9D0Ev,_ZTv0_n12_N8S19772C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1280_N8S19772C9D0Ev,_ZThn708_N8S19772C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19772C9D1Ev,_ZTv0_n12_N8S19772C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1280_N8S19772C9D1Ev,_ZThn708_N8S19772C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19772C9D0Ev,_ZTv0_n16_N8S19772C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N8S19772C9D0Ev,_ZThn448_N8S19772C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19772C9D1Ev,_ZTv0_n16_N8S19772C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N8S19772C9D1Ev,_ZThn448_N8S19772C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19772C10D0Ev,_ZTv0_n12_N9S19772C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1280_N9S19772C10D0Ev,_ZThn708_N9S19772C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19772C10D1Ev,_ZTv0_n12_N9S19772C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1280_N9S19772C10D1Ev,_ZThn708_N9S19772C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19772C10D0Ev,_ZTv0_n16_N9S19772C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N9S19772C10D0Ev,_ZThn448_N9S19772C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19772C10D1Ev,_ZTv0_n16_N9S19772C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N9S19772C10D1Ev,_ZThn448_N9S19772C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19772C3D0Ev,_ZTv0_n20_N8S19772C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2384_N8S19772C3D0Ev,_ZThn1268_N8S19772C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19772C3D1Ev,_ZTv0_n20_N8S19772C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2384_N8S19772C3D1Ev,_ZThn1268_N8S19772C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19772C3D0Ev,_ZTv0_n24_N8S19772C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2224_N8S19772C3D0Ev,_ZThn1180_N8S19772C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19772C3D1Ev,_ZTv0_n24_N8S19772C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2224_N8S19772C3D1Ev,_ZThn1180_N8S19772C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19772C3D0Ev,_ZTv0_n12_N8S19772C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2080_N8S19772C3D0Ev,_ZThn1104_N8S19772C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1488_N8S19772C3D0Ev,_ZThn792_N8S19772C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19772C3D1Ev,_ZTv0_n12_N8S19772C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2080_N8S19772C3D1Ev,_ZThn1104_N8S19772C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1488_N8S19772C3D1Ev,_ZThn792_N8S19772C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19772C3D0Ev,_ZTv0_n16_N8S19772C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1584_N8S19772C3D0Ev,_ZThn844_N8S19772C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1232_N8S19772C3D0Ev,_ZThn660_N8S19772C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19772C3D1Ev,_ZTv0_n16_N8S19772C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1584_N8S19772C3D1Ev,_ZThn844_N8S19772C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1232_N8S19772C3D1Ev,_ZThn660_N8S19772C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19772C1D0Ev,_ZTv0_n20_N8S19772C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2384_N8S19772C1D0Ev,_ZThn1268_N8S19772C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19772C1D1Ev,_ZTv0_n20_N8S19772C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2384_N8S19772C1D1Ev,_ZThn1268_N8S19772C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19772C1D0Ev,_ZTv0_n24_N8S19772C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2224_N8S19772C1D0Ev,_ZThn1180_N8S19772C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19772C1D1Ev,_ZTv0_n24_N8S19772C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2224_N8S19772C1D1Ev,_ZThn1180_N8S19772C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19772C1D0Ev,_ZTv0_n12_N8S19772C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2080_N8S19772C1D0Ev,_ZThn1104_N8S19772C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1488_N8S19772C1D0Ev,_ZThn792_N8S19772C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19772C1D1Ev,_ZTv0_n12_N8S19772C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2080_N8S19772C1D1Ev,_ZThn1104_N8S19772C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1488_N8S19772C1D1Ev,_ZThn792_N8S19772C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19772C1D0Ev,_ZTv0_n16_N8S19772C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1584_N8S19772C1D0Ev,_ZThn844_N8S19772C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1232_N8S19772C1D0Ev,_ZThn660_N8S19772C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19772C1D1Ev,_ZTv0_n16_N8S19772C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1584_N8S19772C1D1Ev,_ZThn844_N8S19772C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1232_N8S19772C1D1Ev,_ZThn660_N8S19772C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19772C1 = {  "S19772C1", // class name
  bases_S19772C1, 19,
  &(vtc_S19772C1[0]), // expected_vtbl_contents
  &(vtt_S19772C1[0]), // expected_vtt_contents
  ABISELECT(2624,1392), // object size
  NSPAIRA(_ZTI8S19772C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19772C1),66, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19772C1),37, //virtual table table var
  18, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names176,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21120C8  : virtual S7856C24 , S7856C15 , virtual S7856C12 {
  ~S21120C8(); // tgen
  S21120C8(); // tgen
};
//SIG(-1 S21120C8) C1{ VBC2{ m} BC3{ m} VBC4{ m}}


S21120C8 ::~S21120C8(){ note_dtor("S21120C8", this);} // tgen
S21120C8 ::S21120C8(){ note_ctor("S21120C8", this);} // tgen

static void Test_S21120C8()
{
  extern Class_Descriptor cd_S21120C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S21120C8, buf);
    S21120C8 *dp, &lv = *(dp=new (buf) S21120C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S21120C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21120C8)");
    check_base_class_offset(lv, (S7856C24*), 0, "S21120C8");
    check_base_class_offset(lv, (S7856C15*), 0, "S21120C8");
    check_base_class_offset(lv, (S7856C12*), 0, "S21120C8");
    test_class_info(&lv, &cd_S21120C8);
    dp->~S21120C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21120C8(Test_S21120C8, "S21120C8", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S21120C8C1Ev();
extern void _ZN8S21120C8D1Ev();
Name_Map name_map_S21120C8[] = {
  NSPAIR(_ZN8S21120C8C1Ev),
  NSPAIR(_ZN8S21120C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
static Base_Class bases_S21120C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21120C8[];
static  VTBL_ENTRY vtc_S21120C8[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C8[0]),
};
extern VTBL_ENTRY _ZTV8S21120C8[];
static  VTT_ENTRY vtt_S21120C8[] = {
  {&(_ZTV8S21120C8[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S21120C8[];
extern  VTBL_ENTRY _ZTV8S21120C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C8[];
Class_Descriptor cd_S21120C8 = {  "S21120C8", // class name
  bases_S21120C8, 3,
  &(vtc_S21120C8[0]), // expected_vtbl_contents
  &(vtt_S21120C8[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S21120C8),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21120C8),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21120C8),1, //virtual table table var
  0, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21120C7  : S7856C24 , virtual S21120C8 , virtual S7856C15 {
  ~S21120C7(); // tgen
  S21120C7(); // tgen
};
//SIG(-1 S21120C7) C1{ BC2{ m} VBC3{ VBC2 BC4{ m} VBC5{ m}} VBC4}


S21120C7 ::~S21120C7(){ note_dtor("S21120C7", this);} // tgen
S21120C7 ::S21120C7(){ note_ctor("S21120C7", this);} // tgen

static void Test_S21120C7()
{
  extern Class_Descriptor cd_S21120C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S21120C7, buf);
    S21120C7 *dp, &lv = *(dp=new (buf) S21120C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S21120C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21120C7)");
    /*is_ambiguous_... S21120C7::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), 0, "S21120C7");
    check_base_class_offset(lv, (S7856C24*)(S21120C8*), ABISELECT(8,4), "S21120C7");
    check_base_class_offset(lv, (S7856C15*)(S21120C8*), 0, "S21120C7");
    check_base_class_offset(lv, (S7856C12*)(S21120C8*), 0, "S21120C7");
    check_base_class_offset(lv, (S21120C8*), 0, "S21120C7");
    /*is_ambiguous_... S21120C7::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(8,4), "S21120C7");
    test_class_info(&lv, &cd_S21120C7);
    dp->~S21120C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21120C7(Test_S21120C7, "S21120C7", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S21120C7C1Ev();
extern void _ZN8S21120C7D1Ev();
Name_Map name_map_S21120C7[] = {
  NSPAIR(_ZN8S21120C7C1Ev),
  NSPAIR(_ZN8S21120C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S21120C8;
extern VTBL_ENTRY _ZTI8S21120C8[];
extern  VTBL_ENTRY _ZTV8S21120C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C8[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
static Base_Class bases_S21120C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S21120C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21120C7[];
static  VTBL_ENTRY vtc_S21120C7[] = {
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C7[0]),
};
extern VTBL_ENTRY _ZTV8S21120C7[];
static  VTBL_ENTRY _tg__ZTV8S21120C8__8S21120C7[] = {
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C8[0]),
};
static  VTT_ENTRY vtt_S21120C7[] = {
  {&(_ZTV8S21120C7[6]),  6,6},
  {&(_ZTV8S21120C7[6]),  6,6},
  {&(_tg__ZTV8S21120C8__8S21120C7[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S21120C7[];
extern  VTBL_ENTRY _ZTV8S21120C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C7[];
Class_Descriptor cd_S21120C7 = {  "S21120C7", // class name
  bases_S21120C7, 6,
  &(vtc_S21120C7[0]), // expected_vtbl_contents
  &(vtt_S21120C7[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S21120C7),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21120C7),6, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21120C7),3, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21120C10  : S7856C15 , virtual S7856C24 , virtual S7856C12 , S21120C8 , virtual S21120C7 {
  virtual  ~S21120C10(); // _ZN9S21120C10D2Ev
  S21120C10(); // tgen
};
//SIG(-1 S21120C10) C1{ BC2{ m} VBC3{ m} VBC4{ m} BC5{ VBC3 BC2 VBC4} VBC6{ BC3 VBC5 VBC2} vd}


 S21120C10 ::~S21120C10(){ note_dtor("S21120C10", this);}
S21120C10 ::S21120C10(){ note_ctor("S21120C10", this);} // tgen

static void Test_S21120C10()
{
  extern Class_Descriptor cd_S21120C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S21120C10, buf);
    S21120C10 *dp, &lv = *(dp=new (buf) S21120C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S21120C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21120C10)");
    /*is_ambiguous_... S21120C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(8,4), "S21120C10");
    /*is_ambiguous_... S21120C10::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), 0, "S21120C10");
    /*is_ambiguous_... S21120C10::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C8*), 0, "S21120C10");
    /*is_ambiguous_... S21120C10::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C8*), 0, "S21120C10");
    check_base_class_offset(lv, (S7856C12*), 0, "S21120C10");
    /*is_ambiguous_... S21120C10::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C12*)(S21120C8*), 0, "S21120C10");
    /*is_ambiguous_... S21120C10::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C12*)(S21120C8*), 0, "S21120C10");
    /*is_ambiguous_... S21120C10::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C8*), 0, "S21120C10");
    /*is_ambiguous_... S21120C10::S21120C8 */ AMB_check_base_class_offset(lv, (S21120C8*), 0, "S21120C10");
    /*is_ambiguous_... S21120C7::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C7*), ABISELECT(16,8), "S21120C10");
    /*is_ambiguous_... S21120C10::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C8*), ABISELECT(16,8), "S21120C10");
    check_base_class_offset(lv, (S21120C8*)(S21120C7*), ABISELECT(16,8), "S21120C10");
    /*is_ambiguous_... S21120C7::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C7*), ABISELECT(24,12), "S21120C10");
    check_base_class_offset(lv, (S21120C7*), ABISELECT(16,8), "S21120C10");
    test_class_info(&lv, &cd_S21120C10);
    dp->~S21120C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21120C10(Test_S21120C10, "S21120C10", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN9S21120C10C1Ev();
extern void _ZN9S21120C10D2Ev();
Name_Map name_map_S21120C10[] = {
  NSPAIR(_ZN9S21120C10C1Ev),
  NSPAIR(_ZN9S21120C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S21120C8;
extern VTBL_ENTRY _ZTI8S21120C8[];
extern  VTBL_ENTRY _ZTV8S21120C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C8[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S21120C8;
extern VTBL_ENTRY _ZTI8S21120C8[];
extern  VTBL_ENTRY _ZTV8S21120C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C8[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S21120C7;
extern VTBL_ENTRY _ZTI8S21120C7[];
extern  VTBL_ENTRY _ZTV8S21120C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C7[];
static Base_Class bases_S21120C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21120C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S21120C8,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S21120C7,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21120C10[];
extern void _ZN9S21120C10D1Ev();
extern void _ZN9S21120C10D0Ev();
static  VTBL_ENTRY vtc_S21120C10[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21120C10[0]),
  (VTBL_ENTRY)&_ZN9S21120C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21120C10D0Ev,
  ABISELECT(8,4),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21120C10[0]),
};
extern VTBL_ENTRY _ZTV9S21120C10[];
static  VTBL_ENTRY _tg__ZTV8S21120C8__A__9S21120C10[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C7__9S21120C10[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C8__A1__9S21120C10[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C8[0]),
};
static  VTT_ENTRY vtt_S21120C10[] = {
  {&(_ZTV9S21120C10[7]),  7,15},
  {&(_tg__ZTV8S21120C8__A__9S21120C10[4]),  4,4},
  {&(_ZTV9S21120C10[15]),  15,15},
  {&(_ZTV9S21120C10[15]),  15,15},
  {&(_tg__ZTV8S21120C7__9S21120C10[6]),  6,6},
  {&(_tg__ZTV8S21120C7__9S21120C10[6]),  6,6},
  {&(_tg__ZTV8S21120C8__A1__9S21120C10[4]),  4,4},
};
extern VTBL_ENTRY _ZTI9S21120C10[];
extern  VTBL_ENTRY _ZTV9S21120C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21120C10[];
Class_Descriptor cd_S21120C10 = {  "S21120C10", // class name
  bases_S21120C10, 10,
  &(vtc_S21120C10[0]), // expected_vtbl_contents
  &(vtt_S21120C10[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI9S21120C10),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S21120C10),15, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21120C10),7, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21120C4  : virtual S7856C24 , virtual S7856C15 , virtual S21120C7 , S7856C12 , S21120C10 {
  virtual  ~S21120C4(); // _ZN8S21120C4D2Ev
  S21120C4(); // tgen
};
//SIG(-1 S21120C4) C1{ VBC2{ m} VBC3{ m} VBC4{ BC2 VBC5{ VBC2 BC3 VBC6{ m}} VBC3} BC6 BC7{ BC3 VBC2 VBC6 BC5 VBC4 vd} vd}


 S21120C4 ::~S21120C4(){ note_dtor("S21120C4", this);}
S21120C4 ::S21120C4(){ note_ctor("S21120C4", this);} // tgen

static void Test_S21120C4()
{
  extern Class_Descriptor cd_S21120C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S21120C4, buf);
    S21120C4 *dp, &lv = *(dp=new (buf) S21120C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S21120C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21120C4)");
    /*is_ambiguous_... S21120C4::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), 0, "S21120C4");
    /*is_ambiguous_... S21120C4::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C8*), 0, "S21120C4");
    /*is_ambiguous_... S21120C10::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C10*), 0, "S21120C4");
    /*is_ambiguous_... S21120C10::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C8*)(S21120C10*), 0, "S21120C4");
    /*is_ambiguous_... S21120C4::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(9,5), "S21120C4");
    /*is_ambiguous_... S21120C7::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C7*), ABISELECT(9,5), "S21120C4");
    /*is_ambiguous_... S21120C7::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C7*), ABISELECT(16,8), "S21120C4");
    /*is_ambiguous_... S21120C4::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C8*), ABISELECT(16,8), "S21120C4");
    /*is_ambiguous_... S21120C4::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C12*)(S21120C8*), ABISELECT(24,12), "S21120C4");
    check_base_class_offset(lv, (S7856C12*)(S21120C10*), ABISELECT(24,12), "S21120C4");
    /*is_ambiguous_... S21120C10::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C12*)(S21120C8*)(S21120C10*), ABISELECT(24,12), "S21120C4");
    check_base_class_offset(lv, (S21120C8*)(S21120C7*), ABISELECT(16,8), "S21120C4");
    check_base_class_offset(lv, (S21120C7*), ABISELECT(16,8), "S21120C4");
    check_base_class_offset(lv, (S21120C7*)(S21120C10*), ABISELECT(16,8), "S21120C4");
    /*is_ambiguous_... S21120C4::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), 0, "S21120C4");
    /*is_ambiguous_... S21120C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C10*), ABISELECT(8,4), "S21120C4");
    /*is_ambiguous_... S21120C10::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C8*)(S21120C10*), 0, "S21120C4");
    /*is_ambiguous_... S21120C10::S21120C8 */ AMB_check_base_class_offset(lv, (S21120C8*)(S21120C10*), 0, "S21120C4");
    check_base_class_offset(lv, (S21120C10*), 0, "S21120C4");
    test_class_info(&lv, &cd_S21120C4);
    dp->~S21120C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21120C4(Test_S21120C4, "S21120C4", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S21120C4C1Ev();
extern void _ZN8S21120C4D2Ev();
Name_Map name_map_S21120C4[] = {
  NSPAIR(_ZN8S21120C4C1Ev),
  NSPAIR(_ZN8S21120C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S21120C8;
extern VTBL_ENTRY _ZTI8S21120C8[];
extern  VTBL_ENTRY _ZTV8S21120C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C8[];
extern Class_Descriptor cd_S21120C7;
extern VTBL_ENTRY _ZTI8S21120C7[];
extern  VTBL_ENTRY _ZTV8S21120C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C7[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S21120C8;
extern VTBL_ENTRY _ZTI8S21120C8[];
extern  VTBL_ENTRY _ZTV8S21120C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C8[];
extern Class_Descriptor cd_S21120C10;
extern VTBL_ENTRY _ZTI9S21120C10[];
extern  VTBL_ENTRY _ZTV9S21120C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21120C10[];
static Base_Class bases_S21120C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S21120C8,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S21120C7,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S21120C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21120C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21120C4[];
extern void _ZN8S21120C4D1Ev();
extern void _ZN8S21120C4D0Ev();
static  VTBL_ENTRY vtc_S21120C4[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C4[0]),
  (VTBL_ENTRY)&_ZN8S21120C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21120C4D0Ev,
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21120C4[0]),
};
extern VTBL_ENTRY _ZTV8S21120C4[];
extern void _ZN9S21120C10D1Ev();
extern void _ZN9S21120C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21120C10__8S21120C4[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21120C10[0]),
  (VTBL_ENTRY)&_ZN9S21120C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21120C10D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S21120C89S21120C10__A1__8S21120C4[] = {
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C7__9S21120C10__8S21120C4[] = {
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21120C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C7__8S21120C4[] = {
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C8__8S21120C4[] = {
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C8[0]),
};
static  VTT_ENTRY vtt_S21120C4[] = {
  {&(_ZTV8S21120C4[7]),  7,15},
  {&(_tg__ZTV9S21120C10__8S21120C4[7]),  7,9},
  {&(_tg__ZTV8S21120C89S21120C10__A1__8S21120C4[4]),  4,4},
  {&(_tg__ZTV8S21120C7__9S21120C10__8S21120C4[6]),  6,6},
  {&(_tg__ZTV8S21120C7__9S21120C10__8S21120C4[6]),  6,6},
  {&(_ZTV8S21120C4[15]),  15,15},
  {&(_ZTV8S21120C4[15]),  15,15},
  {&(_tg__ZTV8S21120C7__8S21120C4[6]),  6,6},
  {&(_tg__ZTV8S21120C7__8S21120C4[6]),  6,6},
  {&(_tg__ZTV8S21120C8__8S21120C4[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S21120C4[];
extern  VTBL_ENTRY _ZTV8S21120C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C4[];
Class_Descriptor cd_S21120C4 = {  "S21120C4", // class name
  bases_S21120C4, 12,
  &(vtc_S21120C4[0]), // expected_vtbl_contents
  &(vtt_S21120C4[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S21120C4),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S21120C4),15, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21120C4),10, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21120C11  : S7856C12 , S7856C15 , S21120C8 {
  int s21120c11f0;
  ~S21120C11(); // tgen
  S21120C11(); // tgen
};
//SIG(-1 S21120C11) C1{ BC2{ m} BC3{ m} BC4{ VBC5{ m} BC3 VBC2} Fi}


S21120C11 ::~S21120C11(){ note_dtor("S21120C11", this);} // tgen
S21120C11 ::S21120C11(){ note_ctor("S21120C11", this);} // tgen

static void Test_S21120C11()
{
  extern Class_Descriptor cd_S21120C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S21120C11, buf);
    S21120C11 *dp, &lv = *(dp=new (buf) S21120C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S21120C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21120C11)");
    /*is_ambiguous_... S21120C11::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), 0, "S21120C11");
    /*is_ambiguous_... S21120C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(8,4), "S21120C11");
    check_base_class_offset(lv, (S7856C24*)(S21120C8*), 0, "S21120C11");
    check_base_class_offset(lv, (S7856C15*)(S21120C8*), 0, "S21120C11");
    check_base_class_offset(lv, (S7856C12*)(S21120C8*), ABISELECT(12,8), "S21120C11");
    check_base_class_offset(lv, (S21120C8*), 0, "S21120C11");
    check_field_offset(lv, s21120c11f0, ABISELECT(8,4), "S21120C11.s21120c11f0");
    test_class_info(&lv, &cd_S21120C11);
    dp->~S21120C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21120C11(Test_S21120C11, "S21120C11", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN9S21120C11C1Ev();
extern void _ZN9S21120C11D1Ev();
Name_Map name_map_S21120C11[] = {
  NSPAIR(_ZN9S21120C11C1Ev),
  NSPAIR(_ZN9S21120C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S21120C8;
extern VTBL_ENTRY _ZTI8S21120C8[];
extern  VTBL_ENTRY _ZTV8S21120C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C8[];
static Base_Class bases_S21120C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S21120C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21120C11[];
static  VTBL_ENTRY vtc_S21120C11[] = {
  ABISELECT(12,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21120C11[0]),
};
extern VTBL_ENTRY _ZTV9S21120C11[];
static  VTBL_ENTRY _tg__ZTV8S21120C8__9S21120C11[] = {
  ABISELECT(12,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C8[0]),
};
static  VTT_ENTRY vtt_S21120C11[] = {
  {&(_ZTV9S21120C11[4]),  4,4},
  {&(_tg__ZTV8S21120C8__9S21120C11[4]),  4,4},
};
extern VTBL_ENTRY _ZTI9S21120C11[];
extern  VTBL_ENTRY _ZTV9S21120C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21120C11[];
Class_Descriptor cd_S21120C11 = {  "S21120C11", // class name
  bases_S21120C11, 6,
  &(vtc_S21120C11[0]), // expected_vtbl_contents
  &(vtt_S21120C11[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI9S21120C11),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S21120C11),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21120C11),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21120C3  : virtual S21120C4 , virtual S21120C11 , virtual S21120C10 {
  int s21120c3f0[2];
  virtual  ~S21120C3(); // _ZN8S21120C3D2Ev
  S21120C3(); // tgen
};
//SIG(-1 S21120C3) C1{ VBC2{ VBC3{ m} VBC4{ m} VBC5{ BC3 VBC6{ VBC3 BC4 VBC7{ m}} VBC4} BC7 BC8{ BC4 VBC3 VBC7 BC6 VBC5 vd} vd} VBC9{ BC7 BC4 BC6 Fi} VBC8 vd Fi[2]}


 S21120C3 ::~S21120C3(){ note_dtor("S21120C3", this);}
S21120C3 ::S21120C3(){ note_ctor("S21120C3", this);} // tgen

static void Test_S21120C3()
{
  extern Class_Descriptor cd_S21120C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,10)];
    init_test(&cd_S21120C3, buf);
    S21120C3 *dp, &lv = *(dp=new (buf) S21120C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S21120C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21120C3)");
    /*is_ambiguous_... S21120C4::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C4*), ABISELECT(25,17), "S21120C3");
    /*is_ambiguous_... S21120C3::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C8*), ABISELECT(25,17), "S21120C3");
    /*is_ambiguous_... S21120C10::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C10*)(S21120C4*), ABISELECT(25,17), "S21120C3");
    /*is_ambiguous_... S21120C10::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C8*)(S21120C10*)(S21120C4*), ABISELECT(25,17), "S21120C3");
    check_base_class_offset(lv, (S7856C24*)(S21120C8*)(S21120C11*), ABISELECT(25,17), "S21120C3");
    /*is_ambiguous_... S21120C3::S21120C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C10*), ABISELECT(25,17), "S21120C3");
    /*is_ambiguous_... S21120C3::S21120C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C8*)(S21120C10*), ABISELECT(25,17), "S21120C3");
    /*is_ambiguous_... S21120C4::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C4*), ABISELECT(25,17), "S21120C3");
    /*is_ambiguous_... S21120C7::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C7*), ABISELECT(25,17), "S21120C3");
    /*is_ambiguous_... S21120C7::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C7*), 0, "S21120C3");
    /*is_ambiguous_... S21120C3::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C8*), 0, "S21120C3");
    /*is_ambiguous_... S21120C3::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C12*)(S21120C8*), 0, "S21120C3");
    check_base_class_offset(lv, (S7856C12*)(S21120C10*)(S21120C4*), 0, "S21120C3");
    /*is_ambiguous_... S21120C10::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C12*)(S21120C8*)(S21120C10*)(S21120C4*), 0, "S21120C3");
    check_base_class_offset(lv, (S7856C12*)(S21120C8*)(S21120C11*), 0, "S21120C3");
    /*is_ambiguous_... S21120C3::S21120C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S21120C10*), 0, "S21120C3");
    /*is_ambiguous_... S21120C3::S21120C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S21120C8*)(S21120C10*), 0, "S21120C3");
    check_base_class_offset(lv, (S21120C8*)(S21120C7*), 0, "S21120C3");
    check_base_class_offset(lv, (S21120C7*)(S21120C4*), 0, "S21120C3");
    check_base_class_offset(lv, (S21120C7*)(S21120C10*)(S21120C4*), 0, "S21120C3");
    /*is_ambiguous_... S21120C3::S21120C10 */ AMB_check_base_class_offset(lv, (S21120C7*)(S21120C10*), 0, "S21120C3");
    /*is_ambiguous_... S21120C4::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S21120C4*), ABISELECT(16,12), "S21120C3");
    /*is_ambiguous_... S21120C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C10*)(S21120C4*), ABISELECT(24,16), "S21120C3");
    /*is_ambiguous_... S21120C10::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C8*)(S21120C10*)(S21120C4*), ABISELECT(16,12), "S21120C3");
    /*is_ambiguous_... S21120C10::S21120C8 */ AMB_check_base_class_offset(lv, (S21120C8*)(S21120C10*)(S21120C4*), ABISELECT(16,12), "S21120C3");
    check_base_class_offset(lv, (S21120C10*)(S21120C4*), ABISELECT(16,12), "S21120C3");
    check_base_class_offset(lv, (S21120C4*), ABISELECT(16,12), "S21120C3");
    /*is_ambiguous_... S21120C11::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S21120C11*), ABISELECT(32,20), "S21120C3");
    /*is_ambiguous_... S21120C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C11*), ABISELECT(40,24), "S21120C3");
    check_base_class_offset(lv, (S7856C15*)(S21120C8*)(S21120C11*), ABISELECT(32,20), "S21120C3");
    check_base_class_offset(lv, (S21120C8*)(S21120C11*), ABISELECT(32,20), "S21120C3");
    check_base_class_offset(lv, (S21120C11*), ABISELECT(32,20), "S21120C3");
    /*is_ambiguous_... S21120C3::S21120C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C10*), ABISELECT(56,32), "S21120C3");
    /*is_ambiguous_... S21120C3::S21120C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C8*)(S21120C10*), ABISELECT(48,28), "S21120C3");
    /*is_ambiguous_... S21120C3::S21120C10 */ AMB_check_base_class_offset(lv, (S21120C8*)(S21120C10*), ABISELECT(48,28), "S21120C3");
    /*is_ambiguous_... S21120C3::S21120C10 */ AMB_check_base_class_offset(lv, (S21120C10*), ABISELECT(48,28), "S21120C3");
    check_field_offset(lv, s21120c3f0, ABISELECT(8,4), "S21120C3.s21120c3f0");
    test_class_info(&lv, &cd_S21120C3);
    dp->~S21120C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21120C3(Test_S21120C3, "S21120C3", ABISELECT(64,36));

#else // __cplusplus

extern void _ZN8S21120C3C1Ev();
extern void _ZN8S21120C3D2Ev();
Name_Map name_map_S21120C3[] = {
  NSPAIR(_ZN8S21120C3C1Ev),
  NSPAIR(_ZN8S21120C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S21120C8;
extern VTBL_ENTRY _ZTI8S21120C8[];
extern  VTBL_ENTRY _ZTV8S21120C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C8[];
extern Class_Descriptor cd_S21120C7;
extern VTBL_ENTRY _ZTI8S21120C7[];
extern  VTBL_ENTRY _ZTV8S21120C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C7[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S21120C8;
extern VTBL_ENTRY _ZTI8S21120C8[];
extern  VTBL_ENTRY _ZTV8S21120C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C8[];
extern Class_Descriptor cd_S21120C10;
extern VTBL_ENTRY _ZTI9S21120C10[];
extern  VTBL_ENTRY _ZTV9S21120C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21120C10[];
extern Class_Descriptor cd_S21120C4;
extern VTBL_ENTRY _ZTI8S21120C4[];
extern  VTBL_ENTRY _ZTV8S21120C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C4[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S21120C8;
extern VTBL_ENTRY _ZTI8S21120C8[];
extern  VTBL_ENTRY _ZTV8S21120C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C8[];
extern Class_Descriptor cd_S21120C11;
extern VTBL_ENTRY _ZTI9S21120C11[];
extern  VTBL_ENTRY _ZTV9S21120C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21120C11[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S21120C8;
extern VTBL_ENTRY _ZTI8S21120C8[];
extern  VTBL_ENTRY _ZTV8S21120C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C8[];
extern Class_Descriptor cd_S21120C10;
extern VTBL_ENTRY _ZTI9S21120C10[];
extern  VTBL_ENTRY _ZTV9S21120C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21120C10[];
static Base_Class bases_S21120C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    ABISELECT(25,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(25,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S21120C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S21120C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S21120C8,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21120C10,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S21120C4,    ABISELECT(16,12), //bcp->offset
    12, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S21120C8,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S21120C11,    ABISELECT(32,20), //bcp->offset
    22, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S21120C8,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S21120C10,    ABISELECT(48,28), //bcp->offset
    26, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21120C3[];
extern void _ZN8S21120C3D1Ev();
extern void _ZN8S21120C3D0Ev();
extern void ABISELECT(_ZTv0_n64_N8S21120C3D1Ev,_ZTv0_n32_N8S21120C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S21120C3D1Ev,_ZThn12_N8S21120C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21120C3D0Ev,_ZTv0_n32_N8S21120C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S21120C3D0Ev,_ZThn12_N8S21120C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21120C3D1Ev,_ZTv0_n32_N8S21120C3D1Ev)();
extern void ABISELECT(_ZThn48_N8S21120C3D1Ev,_ZThn28_N8S21120C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21120C3D0Ev,_ZTv0_n32_N8S21120C3D0Ev)();
extern void ABISELECT(_ZThn48_N8S21120C3D0Ev,_ZThn28_N8S21120C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21120C3[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C3[0]),
  (VTBL_ENTRY)&_ZN8S21120C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21120C3D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21120C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21120C3D1Ev,_ZTv0_n32_N8S21120C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21120C3D0Ev,_ZTv0_n32_N8S21120C3D0Ev),
  ABISELECT(-32,-20),
  ABISELECT(-7,-3),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S21120C3[0]),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S21120C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21120C3D1Ev,_ZTv0_n32_N8S21120C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21120C3D0Ev,_ZTv0_n32_N8S21120C3D0Ev),
};
extern VTBL_ENTRY _ZTV8S21120C3[];
extern void _ZN8S21120C4D1Ev();
extern void _ZN8S21120C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21120C4__8S21120C3[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C4[0]),
  (VTBL_ENTRY)&_ZN8S21120C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21120C4D0Ev,
};
extern void _ZN9S21120C10D1Ev();
extern void _ZN9S21120C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21120C108S21120C4__8S21120C3[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI9S21120C10[0]),
  (VTBL_ENTRY)&_ZN9S21120C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21120C10D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S21120C89S21120C108S21120C4__A1__8S21120C3[] = {
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C7__9S21120C108S21120C4__8S21120C3[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S21120C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C7__8S21120C4__8S21120C3[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S21120C4[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C7__8S21120C3[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C8__8S21120C3[] = {
  0,
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C8[0]),
};
static  VTBL_ENTRY _tg__ZTV9S21120C11__8S21120C3[] = {
  ABISELECT(-32,-20),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI9S21120C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C89S21120C11__A2__8S21120C3[] = {
  ABISELECT(-32,-20),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C8[0]),
};
extern void _ZN9S21120C10D1Ev();
extern void _ZN9S21120C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21120C10__A1__8S21120C3[] = {
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI9S21120C10[0]),
  (VTBL_ENTRY)&_ZN9S21120C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21120C10D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S21120C89S21120C10__A3__8S21120C3[] = {
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C7__9S21120C10__A1__8S21120C3[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S21120C10[0]),
};
static  VTT_ENTRY vtt_S21120C3[] = {
  {&(_ZTV8S21120C3[10]),  10,36},
  {&(_ZTV8S21120C3[20]),  20,36},
  {&(_ZTV8S21120C3[10]),  10,36},
  {&(_ZTV8S21120C3[10]),  10,36},
  {&(_ZTV8S21120C3[26]),  26,36},
  {&(_ZTV8S21120C3[34]),  34,36},
  {&(_tg__ZTV8S21120C4__8S21120C3[7]),  7,9},
  {&(_tg__ZTV9S21120C108S21120C4__8S21120C3[7]),  7,9},
  {&(_tg__ZTV8S21120C89S21120C108S21120C4__A1__8S21120C3[4]),  4,4},
  {&(_tg__ZTV8S21120C7__9S21120C108S21120C4__8S21120C3[6]),  6,6},
  {&(_tg__ZTV8S21120C7__9S21120C108S21120C4__8S21120C3[6]),  6,6},
  {&(_tg__ZTV8S21120C7__8S21120C4__8S21120C3[6]),  6,6},
  {&(_tg__ZTV8S21120C7__8S21120C4__8S21120C3[6]),  6,6},
  {&(_tg__ZTV8S21120C7__8S21120C3[6]),  6,6},
  {&(_tg__ZTV8S21120C7__8S21120C3[6]),  6,6},
  {&(_tg__ZTV8S21120C8__8S21120C3[4]),  4,4},
  {&(_tg__ZTV9S21120C11__8S21120C3[4]),  4,4},
  {&(_tg__ZTV8S21120C89S21120C11__A2__8S21120C3[4]),  4,4},
  {&(_tg__ZTV9S21120C10__A1__8S21120C3[7]),  7,9},
  {&(_tg__ZTV8S21120C89S21120C10__A3__8S21120C3[4]),  4,4},
  {&(_tg__ZTV8S21120C7__9S21120C10__A1__8S21120C3[6]),  6,6},
  {&(_tg__ZTV8S21120C7__9S21120C10__A1__8S21120C3[6]),  6,6},
};
extern VTBL_ENTRY _ZTI8S21120C3[];
extern  VTBL_ENTRY _ZTV8S21120C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C3[];
static VTBL_ENTRY alt_thunk_names177[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21120C3D0Ev,_ZTv0_n32_N8S21120C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21120C3D0Ev,_ZThn28_N8S21120C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21120C3D0Ev,_ZThn12_N8S21120C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21120C3D1Ev,_ZTv0_n32_N8S21120C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21120C3D1Ev,_ZThn28_N8S21120C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21120C3D1Ev,_ZThn12_N8S21120C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21120C3 = {  "S21120C3", // class name
  bases_S21120C3, 22,
  &(vtc_S21120C3[0]), // expected_vtbl_contents
  &(vtt_S21120C3[0]), // expected_vtt_contents
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI8S21120C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21120C3),36, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21120C3),22, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names177,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21120C14  : virtual S7856C15 {
  ~S21120C14(); // tgen
  S21120C14(); // tgen
};
//SIG(-1 S21120C14) C1{ VBC2{ m}}


S21120C14 ::~S21120C14(){ note_dtor("S21120C14", this);} // tgen
S21120C14 ::S21120C14(){ note_ctor("S21120C14", this);} // tgen

static void Test_S21120C14()
{
  extern Class_Descriptor cd_S21120C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S21120C14, buf);
    S21120C14 *dp, &lv = *(dp=new (buf) S21120C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S21120C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21120C14)");
    check_base_class_offset(lv, (S7856C15*), 0, "S21120C14");
    test_class_info(&lv, &cd_S21120C14);
    dp->~S21120C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21120C14(Test_S21120C14, "S21120C14", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN9S21120C14C1Ev();
extern void _ZN9S21120C14D1Ev();
Name_Map name_map_S21120C14[] = {
  NSPAIR(_ZN9S21120C14C1Ev),
  NSPAIR(_ZN9S21120C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
static Base_Class bases_S21120C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21120C14[];
static  VTBL_ENTRY vtc_S21120C14[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21120C14[0]),
};
extern VTBL_ENTRY _ZTV9S21120C14[];
static  VTT_ENTRY vtt_S21120C14[] = {
  {&(_ZTV9S21120C14[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S21120C14[];
extern  VTBL_ENTRY _ZTV9S21120C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21120C14[];
Class_Descriptor cd_S21120C14 = {  "S21120C14", // class name
  bases_S21120C14, 1,
  &(vtc_S21120C14[0]), // expected_vtbl_contents
  &(vtt_S21120C14[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI9S21120C14),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S21120C14),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21120C14),1, //virtual table table var
  0, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21120C13  : virtual S21120C8 , virtual S21120C14 , virtual S21120C11 , S7856C12 , virtual S21120C4 {
  int s21120c13f0;
  virtual  ~S21120C13(); // _ZN9S21120C13D2Ev
  S21120C13(); // tgen
};
//SIG(-1 S21120C13) C1{ VBC2{ VBC3{ m} BC4{ m} VBC5{ m}} VBC6{ VBC4} VBC7{ BC5 BC4 BC2 Fi} BC5 VBC8{ VBC3 VBC4 VBC9{ BC3 VBC2 VBC4} BC5 BC10{ BC4 VBC3 VBC5 BC2 VBC9 vd} vd} vd Fi}


 S21120C13 ::~S21120C13(){ note_dtor("S21120C13", this);}
S21120C13 ::S21120C13(){ note_ctor("S21120C13", this);} // tgen

static void Test_S21120C13()
{
  extern Class_Descriptor cd_S21120C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S21120C13, buf);
    S21120C13 *dp, &lv = *(dp=new (buf) S21120C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S21120C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21120C13)");
    /*is_ambiguous_... S21120C13::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C8*), 0, "S21120C13");
    check_base_class_offset(lv, (S7856C24*)(S21120C8*)(S21120C11*), 0, "S21120C13");
    /*is_ambiguous_... S21120C4::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C4*), 0, "S21120C13");
    /*is_ambiguous_... S21120C10::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C10*)(S21120C4*), 0, "S21120C13");
    /*is_ambiguous_... S21120C10::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C8*)(S21120C10*)(S21120C4*), 0, "S21120C13");
    /*is_ambiguous_... S21120C13::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C8*), ABISELECT(48,28), "S21120C13");
    /*is_ambiguous_... S21120C13::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C12*)(S21120C8*), ABISELECT(12,8), "S21120C13");
    check_base_class_offset(lv, (S7856C12*)(S21120C8*)(S21120C11*), ABISELECT(12,8), "S21120C13");
    check_base_class_offset(lv, (S7856C12*)(S21120C10*)(S21120C4*), ABISELECT(12,8), "S21120C13");
    /*is_ambiguous_... S21120C10::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C12*)(S21120C8*)(S21120C10*)(S21120C4*), ABISELECT(12,8), "S21120C13");
    /*is_ambiguous_... S21120C13::S21120C8 */ AMB_check_base_class_offset(lv, (S21120C8*), ABISELECT(48,28), "S21120C13");
    check_base_class_offset(lv, (S21120C8*)(S21120C7*), ABISELECT(48,28), "S21120C13");
    check_base_class_offset(lv, (S7856C15*)(S21120C14*), 0, "S21120C13");
    /*is_ambiguous_... S21120C4::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C4*), 0, "S21120C13");
    /*is_ambiguous_... S21120C7::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C7*), 0, "S21120C13");
    check_base_class_offset(lv, (S21120C14*), 0, "S21120C13");
    /*is_ambiguous_... S21120C11::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S21120C11*), ABISELECT(16,12), "S21120C13");
    /*is_ambiguous_... S21120C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C11*), ABISELECT(24,16), "S21120C13");
    check_base_class_offset(lv, (S7856C15*)(S21120C8*)(S21120C11*), ABISELECT(16,12), "S21120C13");
    check_base_class_offset(lv, (S21120C8*)(S21120C11*), ABISELECT(16,12), "S21120C13");
    check_base_class_offset(lv, (S21120C11*), ABISELECT(16,12), "S21120C13");
    /*is_ambiguous_... S21120C13::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), 0, "S21120C13");
    /*is_ambiguous_... S21120C7::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C7*), ABISELECT(48,28), "S21120C13");
    check_base_class_offset(lv, (S21120C7*)(S21120C4*), ABISELECT(48,28), "S21120C13");
    check_base_class_offset(lv, (S21120C7*)(S21120C10*)(S21120C4*), ABISELECT(48,28), "S21120C13");
    /*is_ambiguous_... S21120C4::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S21120C4*), ABISELECT(32,20), "S21120C13");
    /*is_ambiguous_... S21120C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C10*)(S21120C4*), ABISELECT(40,24), "S21120C13");
    /*is_ambiguous_... S21120C10::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C8*)(S21120C10*)(S21120C4*), ABISELECT(32,20), "S21120C13");
    /*is_ambiguous_... S21120C10::S21120C8 */ AMB_check_base_class_offset(lv, (S21120C8*)(S21120C10*)(S21120C4*), ABISELECT(32,20), "S21120C13");
    check_base_class_offset(lv, (S21120C10*)(S21120C4*), ABISELECT(32,20), "S21120C13");
    check_base_class_offset(lv, (S21120C4*), ABISELECT(32,20), "S21120C13");
    check_field_offset(lv, s21120c13f0, ABISELECT(8,4), "S21120C13.s21120c13f0");
    test_class_info(&lv, &cd_S21120C13);
    dp->~S21120C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21120C13(Test_S21120C13, "S21120C13", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN9S21120C13C1Ev();
extern void _ZN9S21120C13D2Ev();
Name_Map name_map_S21120C13[] = {
  NSPAIR(_ZN9S21120C13C1Ev),
  NSPAIR(_ZN9S21120C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S21120C8;
extern VTBL_ENTRY _ZTI8S21120C8[];
extern  VTBL_ENTRY _ZTV8S21120C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C8[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S21120C14;
extern VTBL_ENTRY _ZTI9S21120C14[];
extern  VTBL_ENTRY _ZTV9S21120C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21120C14[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S21120C8;
extern VTBL_ENTRY _ZTI8S21120C8[];
extern  VTBL_ENTRY _ZTV8S21120C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C8[];
extern Class_Descriptor cd_S21120C11;
extern VTBL_ENTRY _ZTI9S21120C11[];
extern  VTBL_ENTRY _ZTV9S21120C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21120C11[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S21120C7;
extern VTBL_ENTRY _ZTI8S21120C7[];
extern  VTBL_ENTRY _ZTV8S21120C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C7[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S21120C8;
extern VTBL_ENTRY _ZTI8S21120C8[];
extern  VTBL_ENTRY _ZTV8S21120C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C8[];
extern Class_Descriptor cd_S21120C10;
extern VTBL_ENTRY _ZTI9S21120C10[];
extern  VTBL_ENTRY _ZTV9S21120C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21120C10[];
extern Class_Descriptor cd_S21120C4;
extern VTBL_ENTRY _ZTI8S21120C4[];
extern  VTBL_ENTRY _ZTV8S21120C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C4[];
static Base_Class bases_S21120C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21120C8,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S21120C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21120C8,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S21120C11,    ABISELECT(16,12), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S21120C7,    ABISELECT(48,28), //bcp->offset
    26, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S21120C8,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S21120C10,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S21120C4,    ABISELECT(32,20), //bcp->offset
    16, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21120C13[];
extern void _ZN9S21120C13D1Ev();
extern void _ZN9S21120C13D0Ev();
extern void ABISELECT(_ZTv0_n64_N9S21120C13D1Ev,_ZTv0_n32_N9S21120C13D1Ev)();
extern void ABISELECT(_ZThn32_N9S21120C13D1Ev,_ZThn20_N9S21120C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S21120C13D0Ev,_ZTv0_n32_N9S21120C13D0Ev)();
extern void ABISELECT(_ZThn32_N9S21120C13D0Ev,_ZThn20_N9S21120C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21120C13[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  ABISELECT(12,8),
  0,
  ABISELECT(48,28),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21120C13[0]),
  (VTBL_ENTRY)&_ZN9S21120C13D1Ev,
  (VTBL_ENTRY)&_ZN9S21120C13D0Ev,
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21120C13[0]),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S21120C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21120C13D1Ev,_ZTv0_n32_N9S21120C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21120C13D0Ev,_ZTv0_n32_N9S21120C13D0Ev),
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S21120C13[0]),
};
extern VTBL_ENTRY _ZTV9S21120C13[];
static  VTBL_ENTRY _tg__ZTV8S21120C8__9S21120C13[] = {
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C8[0]),
};
static  VTBL_ENTRY _tg__ZTV9S21120C14__9S21120C13[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21120C14[0]),
};
static  VTBL_ENTRY _tg__ZTV9S21120C11__9S21120C13[] = {
  -4,
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S21120C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C89S21120C11__A1__9S21120C13[] = {
  -4,
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C8[0]),
};
extern void _ZN8S21120C4D1Ev();
extern void _ZN8S21120C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21120C4__9S21120C13[] = {
  ABISELECT(-32,-20),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C4[0]),
  (VTBL_ENTRY)&_ZN8S21120C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21120C4D0Ev,
};
extern void _ZN9S21120C10D1Ev();
extern void _ZN9S21120C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21120C108S21120C4__9S21120C13[] = {
  ABISELECT(-32,-20),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI9S21120C10[0]),
  (VTBL_ENTRY)&_ZN9S21120C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21120C10D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S21120C89S21120C108S21120C4__A2__9S21120C13[] = {
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C7__9S21120C108S21120C4__9S21120C13[] = {
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21120C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C7__8S21120C4__9S21120C13[] = {
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21120C4[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C7__9S21120C13[] = {
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C7[0]),
};
static  VTT_ENTRY vtt_S21120C13[] = {
  {&(_ZTV9S21120C13[10]),  10,32},
  {&(_ZTV9S21120C13[32]),  32,32},
  {&(_ZTV9S21120C13[10]),  10,32},
  {&(_ZTV9S21120C13[16]),  16,32},
  {&(_ZTV9S21120C13[24]),  24,32},
  {&(_ZTV9S21120C13[32]),  32,32},
  {&(_tg__ZTV8S21120C8__9S21120C13[4]),  4,4},
  {&(_tg__ZTV9S21120C14__9S21120C13[3]),  3,3},
  {&(_tg__ZTV9S21120C11__9S21120C13[4]),  4,4},
  {&(_tg__ZTV8S21120C89S21120C11__A1__9S21120C13[4]),  4,4},
  {&(_tg__ZTV8S21120C4__9S21120C13[7]),  7,9},
  {&(_tg__ZTV9S21120C108S21120C4__9S21120C13[7]),  7,9},
  {&(_tg__ZTV8S21120C89S21120C108S21120C4__A2__9S21120C13[4]),  4,4},
  {&(_tg__ZTV8S21120C7__9S21120C108S21120C4__9S21120C13[6]),  6,6},
  {&(_tg__ZTV8S21120C7__9S21120C108S21120C4__9S21120C13[6]),  6,6},
  {&(_tg__ZTV8S21120C7__8S21120C4__9S21120C13[6]),  6,6},
  {&(_tg__ZTV8S21120C7__8S21120C4__9S21120C13[6]),  6,6},
  {&(_tg__ZTV8S21120C7__9S21120C13[6]),  6,6},
  {&(_tg__ZTV8S21120C7__9S21120C13[6]),  6,6},
};
extern VTBL_ENTRY _ZTI9S21120C13[];
extern  VTBL_ENTRY _ZTV9S21120C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21120C13[];
static VTBL_ENTRY alt_thunk_names178[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21120C13D0Ev,_ZTv0_n32_N9S21120C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S21120C13D0Ev,_ZThn20_N9S21120C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21120C13D1Ev,_ZTv0_n32_N9S21120C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S21120C13D1Ev,_ZThn20_N9S21120C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21120C13 = {  "S21120C13", // class name
  bases_S21120C13, 20,
  &(vtc_S21120C13[0]), // expected_vtbl_contents
  &(vtt_S21120C13[0]), // expected_vtt_contents
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI9S21120C13),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S21120C13),32, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21120C13),19, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names178,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21120C15  : virtual S21120C10 , S21120C11 , S21120C7 , S7856C12 {
  virtual  ~S21120C15(); // _ZN9S21120C15D2Ev
  S21120C15(); // tgen
};
//SIG(-1 S21120C15) C1{ VBC2{ BC3{ m} VBC4{ m} VBC5{ m} BC6{ VBC4 BC3 VBC5} VBC7{ BC4 VBC6 VBC3} vd} BC8{ BC5 BC3 BC6 Fi} BC7 BC5 vd}


 S21120C15 ::~S21120C15(){ note_dtor("S21120C15", this);}
S21120C15 ::S21120C15(){ note_ctor("S21120C15", this);} // tgen

static void Test_S21120C15()
{
  extern Class_Descriptor cd_S21120C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[8];
    init_test(&cd_S21120C15, buf);
    S21120C15 *dp, &lv = *(dp=new (buf) S21120C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,28), "sizeof(S21120C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21120C15)");
    /*is_ambiguous_... S21120C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C10*), ABISELECT(32,16), "S21120C15");
    /*is_ambiguous_... S21120C10::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C10*), 0, "S21120C15");
    /*is_ambiguous_... S21120C10::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C8*)(S21120C10*), 0, "S21120C15");
    /*is_ambiguous_... S21120C15::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C8*), 0, "S21120C15");
    check_base_class_offset(lv, (S7856C24*)(S21120C8*)(S21120C11*), 0, "S21120C15");
    check_base_class_offset(lv, (S7856C12*)(S21120C10*), ABISELECT(33,17), "S21120C15");
    /*is_ambiguous_... S21120C10::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C12*)(S21120C8*)(S21120C10*), ABISELECT(33,17), "S21120C15");
    /*is_ambiguous_... S21120C15::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C12*)(S21120C8*), ABISELECT(33,17), "S21120C15");
    check_base_class_offset(lv, (S7856C12*)(S21120C8*)(S21120C11*), ABISELECT(33,17), "S21120C15");
    /*is_ambiguous_... S21120C10::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C8*)(S21120C10*), ABISELECT(24,12), "S21120C15");
    /*is_ambiguous_... S21120C10::S21120C8 */ AMB_check_base_class_offset(lv, (S21120C8*)(S21120C10*), ABISELECT(24,12), "S21120C15");
    /*is_ambiguous_... S21120C15::S21120C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C7*), ABISELECT(40,20), "S21120C15");
    /*is_ambiguous_... S21120C15::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C8*), ABISELECT(40,20), "S21120C15");
    /*is_ambiguous_... S21120C15::S21120C7 */ AMB_check_base_class_offset(lv, (S21120C8*)(S21120C7*), ABISELECT(40,20), "S21120C15");
    /*is_ambiguous_... S21120C15::S21120C7 */ AMB_check_base_class_offset(lv, (S21120C8*)(S21120C7*), ABISELECT(40,20), "S21120C15");
    /*is_ambiguous_... S21120C15::S21120C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C7*), ABISELECT(48,24), "S21120C15");
    /*is_ambiguous_... S21120C15::S21120C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C7*), ABISELECT(48,24), "S21120C15");
    check_base_class_offset(lv, (S21120C7*)(S21120C10*), ABISELECT(40,20), "S21120C15");
    check_base_class_offset(lv, (S21120C10*), ABISELECT(24,12), "S21120C15");
    /*is_ambiguous_... S21120C11::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S21120C11*), 0, "S21120C15");
    /*is_ambiguous_... S21120C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C11*), ABISELECT(8,4), "S21120C15");
    check_base_class_offset(lv, (S7856C15*)(S21120C8*)(S21120C11*), 0, "S21120C15");
    check_base_class_offset(lv, (S21120C8*)(S21120C11*), 0, "S21120C15");
    check_base_class_offset(lv, (S21120C11*), 0, "S21120C15");
    /*is_ambiguous_... S21120C15::S21120C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C7*), ABISELECT(16,8), "S21120C15");
    /*is_ambiguous_... S21120C15::S21120C7 */ AMB_check_base_class_offset(lv, (S21120C7*), ABISELECT(16,8), "S21120C15");
    /*is_ambiguous_... S21120C15::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), ABISELECT(24,12), "S21120C15");
    test_class_info(&lv, &cd_S21120C15);
    dp->~S21120C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21120C15(Test_S21120C15, "S21120C15", ABISELECT(56,28));

#else // __cplusplus

extern void _ZN9S21120C15C1Ev();
extern void _ZN9S21120C15D2Ev();
Name_Map name_map_S21120C15[] = {
  NSPAIR(_ZN9S21120C15C1Ev),
  NSPAIR(_ZN9S21120C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S21120C8;
extern VTBL_ENTRY _ZTI8S21120C8[];
extern  VTBL_ENTRY _ZTV8S21120C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C8[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S21120C8;
extern VTBL_ENTRY _ZTI8S21120C8[];
extern  VTBL_ENTRY _ZTV8S21120C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C8[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S21120C7;
extern VTBL_ENTRY _ZTI8S21120C7[];
extern  VTBL_ENTRY _ZTV8S21120C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C7[];
extern Class_Descriptor cd_S21120C10;
extern VTBL_ENTRY _ZTI9S21120C10[];
extern  VTBL_ENTRY _ZTV9S21120C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21120C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S21120C8;
extern VTBL_ENTRY _ZTI8S21120C8[];
extern  VTBL_ENTRY _ZTV8S21120C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C8[];
extern Class_Descriptor cd_S21120C11;
extern VTBL_ENTRY _ZTI9S21120C11[];
extern  VTBL_ENTRY _ZTV9S21120C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21120C11[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S21120C7;
extern VTBL_ENTRY _ZTI8S21120C7[];
extern  VTBL_ENTRY _ZTV8S21120C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C7[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
static Base_Class bases_S21120C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(33,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21120C8,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S21120C8,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S21120C7,    ABISELECT(40,20), //bcp->offset
    26, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S21120C10,    ABISELECT(24,12), //bcp->offset
    16, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S21120C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S21120C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S21120C7,    ABISELECT(16,8), //bcp->offset
    10, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21120C15[];
extern void _ZN9S21120C15D1Ev();
extern void _ZN9S21120C15D0Ev();
extern void ABISELECT(_ZTv0_n64_N9S21120C15D1Ev,_ZTv0_n32_N9S21120C15D1Ev)();
extern void ABISELECT(_ZThn24_N9S21120C15D1Ev,_ZThn12_N9S21120C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S21120C15D0Ev,_ZTv0_n32_N9S21120C15D0Ev)();
extern void ABISELECT(_ZThn24_N9S21120C15D0Ev,_ZThn12_N9S21120C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21120C15[] = {
  ABISELECT(48,24),
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(24,12),
  ABISELECT(33,17),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21120C15[0]),
  (VTBL_ENTRY)&_ZN9S21120C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21120C15D0Ev,
  ABISELECT(32,16),
  ABISELECT(24,12),
  ABISELECT(17,9),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21120C15[0]),
  ABISELECT(-24,-12),
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(9,5),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S21120C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21120C15D1Ev,_ZTv0_n32_N9S21120C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21120C15D0Ev,_ZTv0_n32_N9S21120C15D0Ev),
  ABISELECT(8,4),
  0,
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S21120C15[0]),
};
extern VTBL_ENTRY _ZTV9S21120C15[];
static  VTBL_ENTRY _tg__ZTV9S21120C11__9S21120C15[] = {
  ABISELECT(33,17),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21120C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C89S21120C11__A2__9S21120C15[] = {
  ABISELECT(33,17),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C7__A__9S21120C15[] = {
  ABISELECT(32,16),
  ABISELECT(24,12),
  ABISELECT(17,9),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C8__8S21120C7__A__9S21120C15[] = {
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S21120C7[0]),
};
extern void _ZN9S21120C10D1Ev();
extern void _ZN9S21120C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21120C10__9S21120C15[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(9,5),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S21120C10[0]),
  (VTBL_ENTRY)&_ZN9S21120C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21120C10D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S21120C89S21120C10__9S21120C15[] = {
  ABISELECT(9,5),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C7__9S21120C10__9S21120C15[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21120C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C7__9S21120C15[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C8__A1__9S21120C15[] = {
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C8[0]),
};
static  VTT_ENTRY vtt_S21120C15[] = {
  {&(_ZTV9S21120C15[8]),  8,32},
  {&(_tg__ZTV9S21120C11__9S21120C15[4]),  4,4},
  {&(_tg__ZTV8S21120C89S21120C11__A2__9S21120C15[4]),  4,4},
  {&(_tg__ZTV8S21120C7__A__9S21120C15[6]),  6,6},
  {&(_tg__ZTV8S21120C8__8S21120C7__A__9S21120C15[4]),  4,4},
  {&(_ZTV9S21120C15[24]),  24,32},
  {&(_ZTV9S21120C15[32]),  32,32},
  {&(_ZTV9S21120C15[32]),  32,32},
  {&(_ZTV9S21120C15[16]),  16,32},
  {&(_tg__ZTV9S21120C10__9S21120C15[7]),  7,9},
  {&(_tg__ZTV8S21120C89S21120C10__9S21120C15[4]),  4,4},
  {&(_tg__ZTV8S21120C7__9S21120C10__9S21120C15[6]),  6,6},
  {&(_tg__ZTV8S21120C7__9S21120C10__9S21120C15[6]),  6,6},
  {&(_tg__ZTV8S21120C7__9S21120C15[6]),  6,6},
  {&(_tg__ZTV8S21120C7__9S21120C15[6]),  6,6},
  {&(_tg__ZTV8S21120C8__A1__9S21120C15[4]),  4,4},
};
extern VTBL_ENTRY _ZTI9S21120C15[];
extern  VTBL_ENTRY _ZTV9S21120C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21120C15[];
static VTBL_ENTRY alt_thunk_names179[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21120C15D0Ev,_ZTv0_n32_N9S21120C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S21120C15D0Ev,_ZThn12_N9S21120C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21120C15D1Ev,_ZTv0_n32_N9S21120C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S21120C15D1Ev,_ZThn12_N9S21120C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21120C15 = {  "S21120C15", // class name
  bases_S21120C15, 19,
  &(vtc_S21120C15[0]), // expected_vtbl_contents
  &(vtt_S21120C15[0]), // expected_vtt_contents
  ABISELECT(56,28), // object size
  NSPAIRA(_ZTI9S21120C15),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S21120C15),32, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21120C15),16, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names179,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21120C2  : virtual S21120C3 , virtual S7856C9_nt , virtual S21120C13 , S21120C15 {
  virtual  ~S21120C2(); // _ZN8S21120C2D2Ev
  S21120C2(); // tgen
};
//SIG(-1 S21120C2) C1{ VBC2{ VBC3{ VBC4{ m} VBC5{ m} VBC6{ BC4 VBC7{ VBC4 BC5 VBC8{ m}} VBC5} BC8 BC9{ BC5 VBC4 VBC8 BC7 VBC6 vd} vd} VBC10{ BC8 BC5 BC7 Fi} VBC9 vd Fi[2]} VBC11{ m} VBC12{ VBC7 VBC13{ VBC5} VBC10 BC8 VBC3 vd Fi} BC14{ VBC9 BC10 BC6 BC8 vd} vd}


 S21120C2 ::~S21120C2(){ note_dtor("S21120C2", this);}
S21120C2 ::S21120C2(){ note_ctor("S21120C2", this);} // tgen

static void Test_S21120C2()
{
  extern Class_Descriptor cd_S21120C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,16)];
    init_test(&cd_S21120C2, buf);
    S21120C2 *dp, &lv = *(dp=new (buf) S21120C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,60), "sizeof(S21120C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21120C2)");
    /*is_ambiguous_... S21120C4::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C4*), 0, "S21120C2");
    /*is_ambiguous_... S21120C2::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C8*), 0, "S21120C2");
    /*is_ambiguous_... S21120C10::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C10*)(S21120C4*), 0, "S21120C2");
    /*is_ambiguous_... S21120C10::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C8*)(S21120C10*)(S21120C4*), 0, "S21120C2");
    /*is_ambiguous_... S21120C2::S21120C11 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C8*)(S21120C11*), 0, "S21120C2");
    /*is_ambiguous_... S21120C2::S21120C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C10*), 0, "S21120C2");
    /*is_ambiguous_... S21120C2::S21120C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C8*)(S21120C10*), 0, "S21120C2");
    check_base_class_offset(lv, (S7856C24*)(S21120C8*)(S21120C11*)(S21120C15*), 0, "S21120C2");
    /*is_ambiguous_... S21120C4::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C4*), ABISELECT(57,33), "S21120C2");
    /*is_ambiguous_... S21120C2::S21120C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C7*), ABISELECT(57,33), "S21120C2");
    check_base_class_offset(lv, (S7856C15*)(S21120C14*), ABISELECT(57,33), "S21120C2");
    /*is_ambiguous_... S21120C15::S21120C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C7*)(S21120C15*), ABISELECT(57,33), "S21120C2");
    /*is_ambiguous_... S21120C2::S21120C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C7*), ABISELECT(32,16), "S21120C2");
    /*is_ambiguous_... S21120C2::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C8*), ABISELECT(32,16), "S21120C2");
    /*is_ambiguous_... S21120C2::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C12*)(S21120C8*), ABISELECT(57,33), "S21120C2");
    check_base_class_offset(lv, (S7856C12*)(S21120C10*)(S21120C4*), ABISELECT(57,33), "S21120C2");
    /*is_ambiguous_... S21120C10::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C12*)(S21120C8*)(S21120C10*)(S21120C4*), ABISELECT(57,33), "S21120C2");
    /*is_ambiguous_... S21120C2::S21120C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S21120C8*)(S21120C11*), ABISELECT(57,33), "S21120C2");
    /*is_ambiguous_... S21120C2::S21120C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S21120C10*), ABISELECT(57,33), "S21120C2");
    /*is_ambiguous_... S21120C2::S21120C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S21120C8*)(S21120C10*), ABISELECT(57,33), "S21120C2");
    check_base_class_offset(lv, (S7856C12*)(S21120C8*)(S21120C11*)(S21120C15*), ABISELECT(57,33), "S21120C2");
    /*is_ambiguous_... S21120C2::S21120C7 */ AMB_check_base_class_offset(lv, (S21120C8*)(S21120C7*), ABISELECT(32,16), "S21120C2");
    /*is_ambiguous_... S21120C13::S21120C8 */ AMB_check_base_class_offset(lv, (S21120C8*)(S21120C13*), ABISELECT(32,16), "S21120C2");
    /*is_ambiguous_... S21120C15::S21120C7 */ AMB_check_base_class_offset(lv, (S21120C8*)(S21120C7*)(S21120C15*), ABISELECT(32,16), "S21120C2");
    check_base_class_offset(lv, (S21120C7*)(S21120C4*), ABISELECT(32,16), "S21120C2");
    check_base_class_offset(lv, (S21120C7*)(S21120C10*)(S21120C4*), ABISELECT(32,16), "S21120C2");
    /*is_ambiguous_... S21120C2::S21120C10 */ AMB_check_base_class_offset(lv, (S21120C7*)(S21120C10*), ABISELECT(32,16), "S21120C2");
    /*is_ambiguous_... S21120C4::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S21120C4*), ABISELECT(48,28), "S21120C2");
    /*is_ambiguous_... S21120C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C10*)(S21120C4*), ABISELECT(56,32), "S21120C2");
    /*is_ambiguous_... S21120C10::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C8*)(S21120C10*)(S21120C4*), ABISELECT(48,28), "S21120C2");
    /*is_ambiguous_... S21120C10::S21120C8 */ AMB_check_base_class_offset(lv, (S21120C8*)(S21120C10*)(S21120C4*), ABISELECT(48,28), "S21120C2");
    check_base_class_offset(lv, (S21120C10*)(S21120C4*), ABISELECT(48,28), "S21120C2");
    check_base_class_offset(lv, (S21120C4*)(S21120C3*), ABISELECT(48,28), "S21120C2");
    check_base_class_offset(lv, (S21120C4*)(S21120C13*), ABISELECT(48,28), "S21120C2");
    /*is_ambiguous_... S21120C2::S21120C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S21120C11*), ABISELECT(64,36), "S21120C2");
    /*is_ambiguous_... S21120C2::S21120C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C11*), ABISELECT(72,40), "S21120C2");
    /*is_ambiguous_... S21120C2::S21120C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C8*)(S21120C11*), ABISELECT(64,36), "S21120C2");
    /*is_ambiguous_... S21120C2::S21120C11 */ AMB_check_base_class_offset(lv, (S21120C8*)(S21120C11*), ABISELECT(64,36), "S21120C2");
    check_base_class_offset(lv, (S21120C11*)(S21120C3*), ABISELECT(64,36), "S21120C2");
    check_base_class_offset(lv, (S21120C11*)(S21120C13*), ABISELECT(64,36), "S21120C2");
    /*is_ambiguous_... S21120C2::S21120C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C10*), ABISELECT(88,48), "S21120C2");
    /*is_ambiguous_... S21120C2::S21120C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C8*)(S21120C10*), ABISELECT(80,44), "S21120C2");
    /*is_ambiguous_... S21120C2::S21120C10 */ AMB_check_base_class_offset(lv, (S21120C8*)(S21120C10*), ABISELECT(80,44), "S21120C2");
    /*is_ambiguous_... S21120C3::S21120C10 */ AMB_check_base_class_offset(lv, (S21120C10*)(S21120C3*), ABISELECT(80,44), "S21120C2");
    check_base_class_offset(lv, (S21120C10*)(S21120C15*), ABISELECT(80,44), "S21120C2");
    check_base_class_offset(lv, (S21120C3*), ABISELECT(32,16), "S21120C2");
    check_base_class_offset(lv, (S7856C9_nt*), 0, "S21120C2");
    check_base_class_offset(lv, (S21120C14*)(S21120C13*), ABISELECT(96,52), "S21120C2");
    /*is_ambiguous_... S21120C13::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S21120C13*), ABISELECT(96,52), "S21120C2");
    check_base_class_offset(lv, (S21120C13*), ABISELECT(96,52), "S21120C2");
    /*is_ambiguous_... S21120C11::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S21120C11*)(S21120C15*), 0, "S21120C2");
    /*is_ambiguous_... S21120C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C11*)(S21120C15*), ABISELECT(8,4), "S21120C2");
    check_base_class_offset(lv, (S7856C15*)(S21120C8*)(S21120C11*)(S21120C15*), 0, "S21120C2");
    check_base_class_offset(lv, (S21120C8*)(S21120C11*)(S21120C15*), 0, "S21120C2");
    check_base_class_offset(lv, (S21120C11*)(S21120C15*), 0, "S21120C2");
    /*is_ambiguous_... S21120C15::S21120C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C7*)(S21120C15*), ABISELECT(16,8), "S21120C2");
    /*is_ambiguous_... S21120C15::S21120C7 */ AMB_check_base_class_offset(lv, (S21120C7*)(S21120C15*), ABISELECT(16,8), "S21120C2");
    /*is_ambiguous_... S21120C15::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S21120C15*), ABISELECT(24,12), "S21120C2");
    check_base_class_offset(lv, (S21120C15*), 0, "S21120C2");
    test_class_info(&lv, &cd_S21120C2);
    dp->~S21120C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21120C2(Test_S21120C2, "S21120C2", ABISELECT(112,60));

#else // __cplusplus

extern void _ZN8S21120C2C1Ev();
extern void _ZN8S21120C2D2Ev();
Name_Map name_map_S21120C2[] = {
  NSPAIR(_ZN8S21120C2C1Ev),
  NSPAIR(_ZN8S21120C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S21120C8;
extern VTBL_ENTRY _ZTI8S21120C8[];
extern  VTBL_ENTRY _ZTV8S21120C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C8[];
extern Class_Descriptor cd_S21120C7;
extern VTBL_ENTRY _ZTI8S21120C7[];
extern  VTBL_ENTRY _ZTV8S21120C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C7[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S21120C8;
extern VTBL_ENTRY _ZTI8S21120C8[];
extern  VTBL_ENTRY _ZTV8S21120C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C8[];
extern Class_Descriptor cd_S21120C10;
extern VTBL_ENTRY _ZTI9S21120C10[];
extern  VTBL_ENTRY _ZTV9S21120C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21120C10[];
extern Class_Descriptor cd_S21120C4;
extern VTBL_ENTRY _ZTI8S21120C4[];
extern  VTBL_ENTRY _ZTV8S21120C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C4[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S21120C8;
extern VTBL_ENTRY _ZTI8S21120C8[];
extern  VTBL_ENTRY _ZTV8S21120C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C8[];
extern Class_Descriptor cd_S21120C11;
extern VTBL_ENTRY _ZTI9S21120C11[];
extern  VTBL_ENTRY _ZTV9S21120C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21120C11[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S21120C8;
extern VTBL_ENTRY _ZTI8S21120C8[];
extern  VTBL_ENTRY _ZTV8S21120C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C8[];
extern Class_Descriptor cd_S21120C10;
extern VTBL_ENTRY _ZTI9S21120C10[];
extern  VTBL_ENTRY _ZTV9S21120C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21120C10[];
extern Class_Descriptor cd_S21120C3;
extern VTBL_ENTRY _ZTI8S21120C3[];
extern  VTBL_ENTRY _ZTV8S21120C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C3[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S21120C14;
extern VTBL_ENTRY _ZTI9S21120C14[];
extern  VTBL_ENTRY _ZTV9S21120C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21120C14[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S21120C13;
extern VTBL_ENTRY _ZTI9S21120C13[];
extern  VTBL_ENTRY _ZTV9S21120C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21120C13[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S21120C8;
extern VTBL_ENTRY _ZTI8S21120C8[];
extern  VTBL_ENTRY _ZTV8S21120C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C8[];
extern Class_Descriptor cd_S21120C11;
extern VTBL_ENTRY _ZTI9S21120C11[];
extern  VTBL_ENTRY _ZTV9S21120C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21120C11[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S21120C7;
extern VTBL_ENTRY _ZTI8S21120C7[];
extern  VTBL_ENTRY _ZTV8S21120C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C7[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S21120C15;
extern VTBL_ENTRY _ZTI9S21120C15[];
extern  VTBL_ENTRY _ZTV9S21120C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21120C15[];
static Base_Class bases_S21120C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(57,33), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(57,33), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S21120C8,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S21120C7,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S21120C8,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21120C10,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S21120C4,    ABISELECT(48,28), //bcp->offset
    35, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S21120C8,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S21120C11,    ABISELECT(64,36), //bcp->offset
    45, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S21120C8,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S21120C10,    ABISELECT(80,44), //bcp->offset
    49, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S21120C3,    ABISELECT(32,16), //bcp->offset
    22, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21120C14,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S21120C13,    ABISELECT(96,52), //bcp->offset
    59, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S21120C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S21120C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S21120C7,    ABISELECT(16,8), //bcp->offset
    16, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S21120C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21120C2[];
extern void _ZN8S21120C2D1Ev();
extern void _ZN8S21120C2D0Ev();
extern void ABISELECT(_ZTv0_n88_N8S21120C2D1Ev,_ZTv0_n44_N8S21120C2D1Ev)();
extern void ABISELECT(_ZThn32_N8S21120C2D1Ev,_ZThn16_N8S21120C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S21120C2D0Ev,_ZTv0_n44_N8S21120C2D0Ev)();
extern void ABISELECT(_ZThn32_N8S21120C2D0Ev,_ZThn16_N8S21120C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21120C2D1Ev,_ZTv0_n32_N8S21120C2D1Ev)();
extern void ABISELECT(_ZThn48_N8S21120C2D1Ev,_ZThn28_N8S21120C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21120C2D0Ev,_ZTv0_n32_N8S21120C2D0Ev)();
extern void ABISELECT(_ZThn48_N8S21120C2D0Ev,_ZThn28_N8S21120C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21120C2D1Ev,_ZTv0_n32_N8S21120C2D1Ev)();
extern void ABISELECT(_ZThn80_N8S21120C2D1Ev,_ZThn44_N8S21120C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21120C2D0Ev,_ZTv0_n32_N8S21120C2D0Ev)();
extern void ABISELECT(_ZThn80_N8S21120C2D0Ev,_ZThn44_N8S21120C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S21120C2D1Ev,_ZTv0_n44_N8S21120C2D1Ev)();
extern void ABISELECT(_ZThn96_N8S21120C2D1Ev,_ZThn52_N8S21120C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S21120C2D0Ev,_ZTv0_n44_N8S21120C2D0Ev)();
extern void ABISELECT(_ZThn96_N8S21120C2D0Ev,_ZThn52_N8S21120C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21120C2[] = {
  ABISELECT(96,52),
  ABISELECT(96,52),
  0,
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(57,33),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C2[0]),
  (VTBL_ENTRY)&_ZN8S21120C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21120C2D0Ev,
  ABISELECT(41,25),
  ABISELECT(16,8),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21120C2[0]),
  ABISELECT(-32,-16),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S21120C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21120C2D1Ev,_ZTv0_n44_N8S21120C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21120C2D0Ev,_ZTv0_n44_N8S21120C2D0Ev),
  ABISELECT(-48,-28),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S21120C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21120C2D1Ev,_ZTv0_n32_N8S21120C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21120C2D0Ev,_ZTv0_n32_N8S21120C2D0Ev),
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S21120C2[0]),
  ABISELECT(-80,-44),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S21120C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21120C2D1Ev,_ZTv0_n32_N8S21120C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21120C2D0Ev,_ZTv0_n32_N8S21120C2D0Ev),
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-39,-19),
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-39,-19),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S21120C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21120C2D1Ev,_ZTv0_n44_N8S21120C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21120C2D0Ev,_ZTv0_n44_N8S21120C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S21120C2[];
extern void _ZN9S21120C15D1Ev();
extern void _ZN9S21120C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21120C15__8S21120C2[] = {
  ABISELECT(57,33),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21120C15[0]),
  (VTBL_ENTRY)&_ZN9S21120C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21120C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S21120C119S21120C15__A1__8S21120C2[] = {
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21120C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C89S21120C119S21120C15__A4__8S21120C2[] = {
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C79S21120C15__A1__8S21120C2[] = {
  ABISELECT(41,25),
  ABISELECT(16,8),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C8__8S21120C79S21120C15__A1__8S21120C2[] = {
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21120C7[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S21120C15D1Ev,_ZTv0_n32_N9S21120C15D1Ev)();
extern void ABISELECT(_ZThn80_N9S21120C15D1Ev,_ZThn44_N9S21120C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S21120C15D0Ev,_ZTv0_n32_N9S21120C15D0Ev)();
extern void ABISELECT(_ZThn80_N9S21120C15D0Ev,_ZThn44_N9S21120C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21120C10__9S21120C15__8S21120C2[] = {
  ABISELECT(-80,-44),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S21120C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21120C15D1Ev,_ZTv0_n32_N9S21120C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21120C15D0Ev,_ZTv0_n32_N9S21120C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S21120C7__9S21120C15__8S21120C2[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S21120C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C7__A__9S21120C15__8S21120C2[] = {
  ABISELECT(41,25),
  ABISELECT(16,8),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21120C15[0]),
};
extern void _ZN8S21120C3D1Ev();
extern void _ZN8S21120C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21120C3__8S21120C2[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C3[0]),
  (VTBL_ENTRY)&_ZN8S21120C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21120C3D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N8S21120C3D1Ev,_ZTv0_n32_N8S21120C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S21120C3D1Ev,_ZThn12_N8S21120C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21120C3D0Ev,_ZTv0_n32_N8S21120C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S21120C3D0Ev,_ZThn12_N8S21120C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21120C4__8S21120C3__8S21120C2[] = {
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21120C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21120C3D1Ev,_ZTv0_n32_N8S21120C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21120C3D0Ev,_ZTv0_n32_N8S21120C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S21120C11__8S21120C3__8S21120C2[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S21120C3[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S21120C3D1Ev,_ZTv0_n32_N8S21120C3D1Ev)();
extern void ABISELECT(_ZThn48_N8S21120C3D1Ev,_ZThn28_N8S21120C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21120C3D0Ev,_ZTv0_n32_N8S21120C3D0Ev)();
extern void ABISELECT(_ZThn48_N8S21120C3D0Ev,_ZThn28_N8S21120C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21120C10__A1__8S21120C3__8S21120C2[] = {
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S21120C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21120C3D1Ev,_ZTv0_n32_N8S21120C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21120C3D0Ev,_ZTv0_n32_N8S21120C3D0Ev),
};
extern void _ZN8S21120C4D1Ev();
extern void _ZN8S21120C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21120C4__8S21120C2[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C4[0]),
  (VTBL_ENTRY)&_ZN8S21120C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21120C4D0Ev,
};
extern void _ZN9S21120C10D1Ev();
extern void _ZN9S21120C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21120C108S21120C4__8S21120C2[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S21120C10[0]),
  (VTBL_ENTRY)&_ZN9S21120C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21120C10D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S21120C89S21120C108S21120C4__A1__8S21120C2[] = {
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C7__9S21120C108S21120C4__8S21120C2[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S21120C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C7__8S21120C4__8S21120C2[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S21120C4[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C7__8S21120C2[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C8__8S21120C2[] = {
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C8[0]),
};
static  VTBL_ENTRY _tg__ZTV9S21120C11__8S21120C2[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI9S21120C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C89S21120C11__A2__8S21120C2[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C8[0]),
};
extern void _ZN9S21120C10D1Ev();
extern void _ZN9S21120C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21120C10__A1__8S21120C2[] = {
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI9S21120C10[0]),
  (VTBL_ENTRY)&_ZN9S21120C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21120C10D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S21120C89S21120C10__A3__8S21120C2[] = {
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C7__9S21120C10__A1__8S21120C2[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S21120C10[0]),
};
extern void _ZN9S21120C13D1Ev();
extern void _ZN9S21120C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21120C13__8S21120C2[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-39,-19),
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-39,-19),
  0,
  (VTBL_ENTRY)&(_ZTI9S21120C13[0]),
  (VTBL_ENTRY)&_ZN9S21120C13D1Ev,
  (VTBL_ENTRY)&_ZN9S21120C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S21120C7__9S21120C13__8S21120C2[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI9S21120C13[0]),
};
static  VTBL_ENTRY _tg__ZTV9S21120C11__9S21120C13__8S21120C2[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S21120C13[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S21120C13D1Ev,_ZTv0_n32_N9S21120C13D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S21120C13D0Ev,_ZTv0_n32_N9S21120C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21120C4__9S21120C13__8S21120C2[] = {
  ABISELECT(48,24),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI9S21120C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21120C13D1Ev,_ZTv0_n32_N9S21120C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21120C13D0Ev,_ZTv0_n32_N9S21120C13D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S21120C14__8S21120C2[] = {
  ABISELECT(-39,-19),
  0,
  (VTBL_ENTRY)&(_ZTI9S21120C14[0]),
};
static  VTT_ENTRY vtt_S21120C2[] = {
  {&(_ZTV8S21120C2[14]),  14,72},
  {&(_tg__ZTV9S21120C15__8S21120C2[8]),  8,10},
  {&(_tg__ZTV9S21120C119S21120C15__A1__8S21120C2[4]),  4,4},
  {&(_tg__ZTV8S21120C89S21120C119S21120C15__A4__8S21120C2[4]),  4,4},
  {&(_tg__ZTV8S21120C79S21120C15__A1__8S21120C2[6]),  6,6},
  {&(_tg__ZTV8S21120C8__8S21120C79S21120C15__A1__8S21120C2[4]),  4,4},
  {&(_tg__ZTV9S21120C10__9S21120C15__8S21120C2[8]),  8,10},
  {&(_tg__ZTV8S21120C7__9S21120C15__8S21120C2[6]),  6,6},
  {&(_tg__ZTV8S21120C7__9S21120C15__8S21120C2[6]),  6,6},
  {&(_tg__ZTV8S21120C7__A__9S21120C15__8S21120C2[6]),  6,6},
  {&(_ZTV8S21120C2[33]),  33,72},
  {&(_ZTV8S21120C2[43]),  43,72},
  {&(_ZTV8S21120C2[33]),  33,72},
  {&(_ZTV8S21120C2[33]),  33,72},
  {&(_ZTV8S21120C2[49]),  49,72},
  {&(_ZTV8S21120C2[57]),  57,72},
  {&(_ZTV8S21120C2[70]),  70,72},
  {&(_ZTV8S21120C2[70]),  70,72},
  {&(_ZTV8S21120C2[22]),  22,72},
  {&(_tg__ZTV8S21120C3__8S21120C2[10]),  10,12},
  {&(_tg__ZTV8S21120C4__8S21120C3__8S21120C2[8]),  8,10},
  {&(_tg__ZTV8S21120C3__8S21120C2[10]),  10,12},
  {&(_tg__ZTV8S21120C3__8S21120C2[10]),  10,12},
  {&(_tg__ZTV9S21120C11__8S21120C3__8S21120C2[4]),  4,4},
  {&(_tg__ZTV9S21120C10__A1__8S21120C3__8S21120C2[8]),  8,10},
  {&(_tg__ZTV8S21120C4__8S21120C2[7]),  7,9},
  {&(_tg__ZTV9S21120C108S21120C4__8S21120C2[7]),  7,9},
  {&(_tg__ZTV8S21120C89S21120C108S21120C4__A1__8S21120C2[4]),  4,4},
  {&(_tg__ZTV8S21120C7__9S21120C108S21120C4__8S21120C2[6]),  6,6},
  {&(_tg__ZTV8S21120C7__9S21120C108S21120C4__8S21120C2[6]),  6,6},
  {&(_tg__ZTV8S21120C7__8S21120C4__8S21120C2[6]),  6,6},
  {&(_tg__ZTV8S21120C7__8S21120C4__8S21120C2[6]),  6,6},
  {&(_tg__ZTV8S21120C7__8S21120C2[6]),  6,6},
  {&(_tg__ZTV8S21120C7__8S21120C2[6]),  6,6},
  {&(_tg__ZTV8S21120C8__8S21120C2[4]),  4,4},
  {&(_tg__ZTV9S21120C11__8S21120C2[4]),  4,4},
  {&(_tg__ZTV8S21120C89S21120C11__A2__8S21120C2[4]),  4,4},
  {&(_tg__ZTV9S21120C10__A1__8S21120C2[7]),  7,9},
  {&(_tg__ZTV8S21120C89S21120C10__A3__8S21120C2[4]),  4,4},
  {&(_tg__ZTV8S21120C7__9S21120C10__A1__8S21120C2[6]),  6,6},
  {&(_tg__ZTV8S21120C7__9S21120C10__A1__8S21120C2[6]),  6,6},
  {&(_tg__ZTV9S21120C13__8S21120C2[10]),  10,12},
  {&(_tg__ZTV8S21120C7__9S21120C13__8S21120C2[6]),  6,6},
  {&(_tg__ZTV9S21120C13__8S21120C2[10]),  10,12},
  {&(_tg__ZTV9S21120C11__9S21120C13__8S21120C2[4]),  4,4},
  {&(_tg__ZTV8S21120C4__9S21120C13__8S21120C2[8]),  8,10},
  {&(_tg__ZTV8S21120C7__9S21120C13__8S21120C2[6]),  6,6},
  {&(_tg__ZTV9S21120C14__8S21120C2[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S21120C2[];
extern  VTBL_ENTRY _ZTV8S21120C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C2[];
static VTBL_ENTRY alt_thunk_names180[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21120C3D0Ev,_ZTv0_n32_N8S21120C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21120C3D0Ev,_ZThn28_N8S21120C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21120C3D0Ev,_ZThn12_N8S21120C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21120C3D1Ev,_ZTv0_n32_N8S21120C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21120C3D1Ev,_ZThn28_N8S21120C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21120C3D1Ev,_ZThn12_N8S21120C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21120C15D0Ev,_ZTv0_n32_N9S21120C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21120C15D0Ev,_ZThn44_N9S21120C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21120C15D1Ev,_ZTv0_n32_N9S21120C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21120C15D1Ev,_ZThn44_N9S21120C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21120C2D0Ev,_ZTv0_n32_N8S21120C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21120C2D0Ev,_ZThn44_N8S21120C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21120C2D0Ev,_ZThn28_N8S21120C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21120C2D1Ev,_ZTv0_n32_N8S21120C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21120C2D1Ev,_ZThn44_N8S21120C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21120C2D1Ev,_ZThn28_N8S21120C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S21120C2D0Ev,_ZTv0_n44_N8S21120C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21120C2D0Ev,_ZThn52_N8S21120C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S21120C2D0Ev,_ZThn16_N8S21120C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S21120C2D1Ev,_ZTv0_n44_N8S21120C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21120C2D1Ev,_ZThn52_N8S21120C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S21120C2D1Ev,_ZThn16_N8S21120C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21120C2 = {  "S21120C2", // class name
  bases_S21120C2, 36,
  &(vtc_S21120C2[0]), // expected_vtbl_contents
  &(vtt_S21120C2[0]), // expected_vtt_contents
  ABISELECT(112,60), // object size
  NSPAIRA(_ZTI8S21120C2),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S21120C2),72, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21120C2),48, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names180,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21120C16  : S7856C15 , S21120C14 {
  virtual  ~S21120C16(); // _ZN9S21120C16D2Ev
  S21120C16(); // tgen
};
//SIG(-1 S21120C16) C1{ BC2{ m} BC3{ VBC2} vd}


 S21120C16 ::~S21120C16(){ note_dtor("S21120C16", this);}
S21120C16 ::S21120C16(){ note_ctor("S21120C16", this);} // tgen

static void Test_S21120C16()
{
  extern Class_Descriptor cd_S21120C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S21120C16, buf);
    S21120C16 *dp, &lv = *(dp=new (buf) S21120C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S21120C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21120C16)");
    /*is_ambiguous_... S21120C16::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), 0, "S21120C16");
    check_base_class_offset(lv, (S7856C15*)(S21120C14*), ABISELECT(8,4), "S21120C16");
    check_base_class_offset(lv, (S21120C14*), 0, "S21120C16");
    test_class_info(&lv, &cd_S21120C16);
    dp->~S21120C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21120C16(Test_S21120C16, "S21120C16", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN9S21120C16C1Ev();
extern void _ZN9S21120C16D2Ev();
Name_Map name_map_S21120C16[] = {
  NSPAIR(_ZN9S21120C16C1Ev),
  NSPAIR(_ZN9S21120C16D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S21120C14;
extern VTBL_ENTRY _ZTI9S21120C14[];
extern  VTBL_ENTRY _ZTV9S21120C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21120C14[];
static Base_Class bases_S21120C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S21120C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21120C16[];
extern void _ZN9S21120C16D1Ev();
extern void _ZN9S21120C16D0Ev();
static  VTBL_ENTRY vtc_S21120C16[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S21120C16[0]),
  (VTBL_ENTRY)&_ZN9S21120C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21120C16D0Ev,
};
extern VTBL_ENTRY _ZTV9S21120C16[];
static  VTBL_ENTRY _tg__ZTV9S21120C14__9S21120C16[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S21120C14[0]),
};
static  VTT_ENTRY vtt_S21120C16[] = {
  {&(_ZTV9S21120C16[3]),  3,5},
  {&(_tg__ZTV9S21120C14__9S21120C16[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S21120C16[];
extern  VTBL_ENTRY _ZTV9S21120C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21120C16[];
Class_Descriptor cd_S21120C16 = {  "S21120C16", // class name
  bases_S21120C16, 3,
  &(vtc_S21120C16[0]), // expected_vtbl_contents
  &(vtt_S21120C16[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI9S21120C16),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S21120C16),5, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21120C16),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21120C1  : virtual S21120C2 , virtual S21120C16 {
  short s21120c1f0:16;
  virtual  ~S21120C1(); // _ZN8S21120C1D2Ev
  S21120C1(); // tgen
};
//SIG(1 S21120C1) C1{ VBC2{ VBC3{ VBC4{ VBC5{ m} VBC6{ m} VBC7{ BC5 VBC8{ VBC5 BC6 VBC9{ m}} VBC6} BC9 BC10{ BC6 VBC5 VBC9 BC8 VBC7 vd} vd} VBC11{ BC9 BC6 BC8 Fi} VBC10 vd Fi[2]} VBC12{ m} VBC13{ VBC8 VBC14{ VBC6} VBC11 BC9 VBC4 vd Fi} BC15{ VBC10 BC11 BC7 BC9 vd} vd} VBC16{ BC6 BC14 vd} vd Fs:16}


 S21120C1 ::~S21120C1(){ note_dtor("S21120C1", this);}
S21120C1 ::S21120C1(){ note_ctor("S21120C1", this);} // tgen

static void Test_S21120C1()
{
  extern Class_Descriptor cd_S21120C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,18)];
    init_test(&cd_S21120C1, buf);
    S21120C1 *dp, &lv = *(dp=new (buf) S21120C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,68), "sizeof(S21120C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21120C1)");
    /*is_ambiguous_... S21120C4::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C4*), 0, "S21120C1");
    /*is_ambiguous_... S21120C1::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C8*), 0, "S21120C1");
    /*is_ambiguous_... S21120C10::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C10*)(S21120C4*), 0, "S21120C1");
    /*is_ambiguous_... S21120C10::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C8*)(S21120C10*)(S21120C4*), 0, "S21120C1");
    /*is_ambiguous_... S21120C1::S21120C11 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C8*)(S21120C11*), 0, "S21120C1");
    /*is_ambiguous_... S21120C1::S21120C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C10*), 0, "S21120C1");
    /*is_ambiguous_... S21120C1::S21120C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C8*)(S21120C10*), 0, "S21120C1");
    check_base_class_offset(lv, (S7856C24*)(S21120C8*)(S21120C11*)(S21120C15*)(S21120C2*), 0, "S21120C1");
    /*is_ambiguous_... S21120C4::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C4*), ABISELECT(73,41), "S21120C1");
    /*is_ambiguous_... S21120C1::S21120C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C7*), ABISELECT(73,41), "S21120C1");
    /*is_ambiguous_... S21120C1::S21120C14 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C14*), ABISELECT(73,41), "S21120C1");
    /*is_ambiguous_... S21120C15::S21120C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C7*)(S21120C15*)(S21120C2*), ABISELECT(73,41), "S21120C1");
    check_base_class_offset(lv, (S7856C15*)(S21120C14*)(S21120C16*), ABISELECT(73,41), "S21120C1");
    /*is_ambiguous_... S21120C1::S21120C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C7*), ABISELECT(48,24), "S21120C1");
    /*is_ambiguous_... S21120C1::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C8*), ABISELECT(48,24), "S21120C1");
    /*is_ambiguous_... S21120C1::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C12*)(S21120C8*), 0, "S21120C1");
    check_base_class_offset(lv, (S7856C12*)(S21120C10*)(S21120C4*), 0, "S21120C1");
    /*is_ambiguous_... S21120C10::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C12*)(S21120C8*)(S21120C10*)(S21120C4*), 0, "S21120C1");
    /*is_ambiguous_... S21120C1::S21120C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S21120C8*)(S21120C11*), 0, "S21120C1");
    /*is_ambiguous_... S21120C1::S21120C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S21120C10*), 0, "S21120C1");
    /*is_ambiguous_... S21120C1::S21120C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S21120C8*)(S21120C10*), 0, "S21120C1");
    check_base_class_offset(lv, (S7856C12*)(S21120C8*)(S21120C11*)(S21120C15*)(S21120C2*), 0, "S21120C1");
    /*is_ambiguous_... S21120C1::S21120C7 */ AMB_check_base_class_offset(lv, (S21120C8*)(S21120C7*), ABISELECT(48,24), "S21120C1");
    /*is_ambiguous_... S21120C13::S21120C8 */ AMB_check_base_class_offset(lv, (S21120C8*)(S21120C13*), ABISELECT(48,24), "S21120C1");
    /*is_ambiguous_... S21120C15::S21120C7 */ AMB_check_base_class_offset(lv, (S21120C8*)(S21120C7*)(S21120C15*)(S21120C2*), ABISELECT(48,24), "S21120C1");
    check_base_class_offset(lv, (S21120C7*)(S21120C4*), ABISELECT(48,24), "S21120C1");
    check_base_class_offset(lv, (S21120C7*)(S21120C10*)(S21120C4*), ABISELECT(48,24), "S21120C1");
    /*is_ambiguous_... S21120C1::S21120C10 */ AMB_check_base_class_offset(lv, (S21120C7*)(S21120C10*), ABISELECT(48,24), "S21120C1");
    /*is_ambiguous_... S21120C4::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S21120C4*), ABISELECT(64,36), "S21120C1");
    /*is_ambiguous_... S21120C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C10*)(S21120C4*), ABISELECT(72,40), "S21120C1");
    /*is_ambiguous_... S21120C10::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C8*)(S21120C10*)(S21120C4*), ABISELECT(64,36), "S21120C1");
    /*is_ambiguous_... S21120C10::S21120C8 */ AMB_check_base_class_offset(lv, (S21120C8*)(S21120C10*)(S21120C4*), ABISELECT(64,36), "S21120C1");
    check_base_class_offset(lv, (S21120C10*)(S21120C4*), ABISELECT(64,36), "S21120C1");
    check_base_class_offset(lv, (S21120C4*)(S21120C3*), ABISELECT(64,36), "S21120C1");
    check_base_class_offset(lv, (S21120C4*)(S21120C13*), ABISELECT(64,36), "S21120C1");
    /*is_ambiguous_... S21120C1::S21120C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S21120C11*), ABISELECT(80,44), "S21120C1");
    /*is_ambiguous_... S21120C1::S21120C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C11*), ABISELECT(88,48), "S21120C1");
    /*is_ambiguous_... S21120C1::S21120C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C8*)(S21120C11*), ABISELECT(80,44), "S21120C1");
    /*is_ambiguous_... S21120C1::S21120C11 */ AMB_check_base_class_offset(lv, (S21120C8*)(S21120C11*), ABISELECT(80,44), "S21120C1");
    check_base_class_offset(lv, (S21120C11*)(S21120C3*), ABISELECT(80,44), "S21120C1");
    check_base_class_offset(lv, (S21120C11*)(S21120C13*), ABISELECT(80,44), "S21120C1");
    /*is_ambiguous_... S21120C1::S21120C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C10*), ABISELECT(104,56), "S21120C1");
    /*is_ambiguous_... S21120C1::S21120C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C8*)(S21120C10*), ABISELECT(96,52), "S21120C1");
    /*is_ambiguous_... S21120C1::S21120C10 */ AMB_check_base_class_offset(lv, (S21120C8*)(S21120C10*), ABISELECT(96,52), "S21120C1");
    /*is_ambiguous_... S21120C3::S21120C10 */ AMB_check_base_class_offset(lv, (S21120C10*)(S21120C3*), ABISELECT(96,52), "S21120C1");
    check_base_class_offset(lv, (S21120C10*)(S21120C15*)(S21120C2*), ABISELECT(96,52), "S21120C1");
    check_base_class_offset(lv, (S21120C3*)(S21120C2*), ABISELECT(48,24), "S21120C1");
    check_base_class_offset(lv, (S7856C9_nt*)(S21120C2*), 0, "S21120C1");
    check_base_class_offset(lv, (S21120C14*)(S21120C13*), ABISELECT(112,60), "S21120C1");
    /*is_ambiguous_... S21120C13::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S21120C13*), ABISELECT(112,60), "S21120C1");
    check_base_class_offset(lv, (S21120C13*)(S21120C2*), ABISELECT(112,60), "S21120C1");
    /*is_ambiguous_... S21120C11::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S21120C11*)(S21120C15*)(S21120C2*), ABISELECT(16,8), "S21120C1");
    /*is_ambiguous_... S21120C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C11*)(S21120C15*)(S21120C2*), ABISELECT(24,12), "S21120C1");
    check_base_class_offset(lv, (S7856C15*)(S21120C8*)(S21120C11*)(S21120C15*)(S21120C2*), ABISELECT(16,8), "S21120C1");
    check_base_class_offset(lv, (S21120C8*)(S21120C11*)(S21120C15*)(S21120C2*), ABISELECT(16,8), "S21120C1");
    check_base_class_offset(lv, (S21120C11*)(S21120C15*)(S21120C2*), ABISELECT(16,8), "S21120C1");
    /*is_ambiguous_... S21120C15::S21120C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C7*)(S21120C15*)(S21120C2*), ABISELECT(32,16), "S21120C1");
    /*is_ambiguous_... S21120C15::S21120C7 */ AMB_check_base_class_offset(lv, (S21120C7*)(S21120C15*)(S21120C2*), ABISELECT(32,16), "S21120C1");
    /*is_ambiguous_... S21120C15::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S21120C15*)(S21120C2*), ABISELECT(40,20), "S21120C1");
    check_base_class_offset(lv, (S21120C15*)(S21120C2*), ABISELECT(16,8), "S21120C1");
    check_base_class_offset(lv, (S21120C2*), ABISELECT(16,8), "S21120C1");
    /*is_ambiguous_... S21120C16::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C16*), 0, "S21120C1");
    check_base_class_offset(lv, (S21120C14*)(S21120C16*), 0, "S21120C1");
    check_base_class_offset(lv, (S21120C16*), 0, "S21120C1");
    set_bf_and_test(lv, s21120c1f0, ABISELECT(8,4), 0, 16, 1, "S21120C1");
    set_bf_and_test(lv, s21120c1f0, ABISELECT(8,4), 0, 16, hide_sll(1LL<<15), "S21120C1");
    test_class_info(&lv, &cd_S21120C1);
    dp->~S21120C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21120C1(Test_S21120C1, "S21120C1", ABISELECT(128,68));

#else // __cplusplus

extern void _ZN8S21120C1C1Ev();
extern void _ZN8S21120C1D2Ev();
Name_Map name_map_S21120C1[] = {
  NSPAIR(_ZN8S21120C1C1Ev),
  NSPAIR(_ZN8S21120C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S21120C8;
extern VTBL_ENTRY _ZTI8S21120C8[];
extern  VTBL_ENTRY _ZTV8S21120C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C8[];
extern Class_Descriptor cd_S21120C7;
extern VTBL_ENTRY _ZTI8S21120C7[];
extern  VTBL_ENTRY _ZTV8S21120C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C7[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S21120C8;
extern VTBL_ENTRY _ZTI8S21120C8[];
extern  VTBL_ENTRY _ZTV8S21120C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C8[];
extern Class_Descriptor cd_S21120C10;
extern VTBL_ENTRY _ZTI9S21120C10[];
extern  VTBL_ENTRY _ZTV9S21120C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21120C10[];
extern Class_Descriptor cd_S21120C4;
extern VTBL_ENTRY _ZTI8S21120C4[];
extern  VTBL_ENTRY _ZTV8S21120C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C4[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S21120C8;
extern VTBL_ENTRY _ZTI8S21120C8[];
extern  VTBL_ENTRY _ZTV8S21120C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C8[];
extern Class_Descriptor cd_S21120C11;
extern VTBL_ENTRY _ZTI9S21120C11[];
extern  VTBL_ENTRY _ZTV9S21120C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21120C11[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S21120C8;
extern VTBL_ENTRY _ZTI8S21120C8[];
extern  VTBL_ENTRY _ZTV8S21120C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C8[];
extern Class_Descriptor cd_S21120C10;
extern VTBL_ENTRY _ZTI9S21120C10[];
extern  VTBL_ENTRY _ZTV9S21120C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21120C10[];
extern Class_Descriptor cd_S21120C3;
extern VTBL_ENTRY _ZTI8S21120C3[];
extern  VTBL_ENTRY _ZTV8S21120C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C3[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S21120C14;
extern VTBL_ENTRY _ZTI9S21120C14[];
extern  VTBL_ENTRY _ZTV9S21120C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21120C14[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S21120C13;
extern VTBL_ENTRY _ZTI9S21120C13[];
extern  VTBL_ENTRY _ZTV9S21120C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21120C13[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S21120C8;
extern VTBL_ENTRY _ZTI8S21120C8[];
extern  VTBL_ENTRY _ZTV8S21120C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C8[];
extern Class_Descriptor cd_S21120C11;
extern VTBL_ENTRY _ZTI9S21120C11[];
extern  VTBL_ENTRY _ZTV9S21120C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21120C11[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S21120C7;
extern VTBL_ENTRY _ZTI8S21120C7[];
extern  VTBL_ENTRY _ZTV8S21120C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C7[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S21120C15;
extern VTBL_ENTRY _ZTI9S21120C15[];
extern  VTBL_ENTRY _ZTV9S21120C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21120C15[];
extern Class_Descriptor cd_S21120C2;
extern VTBL_ENTRY _ZTI8S21120C2[];
extern  VTBL_ENTRY _ZTV8S21120C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C2[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S21120C14;
extern VTBL_ENTRY _ZTI9S21120C14[];
extern  VTBL_ENTRY _ZTV9S21120C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21120C14[];
extern Class_Descriptor cd_S21120C16;
extern VTBL_ENTRY _ZTI9S21120C16[];
extern  VTBL_ENTRY _ZTV9S21120C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21120C16[];
static Base_Class bases_S21120C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(73,41), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S21120C8,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S21120C7,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S21120C8,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21120C10,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S21120C4,    ABISELECT(64,36), //bcp->offset
    55, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S21120C8,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S21120C11,    ABISELECT(80,44), //bcp->offset
    65, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S21120C8,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S21120C10,    ABISELECT(96,52), //bcp->offset
    69, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S21120C3,    ABISELECT(48,24), //bcp->offset
    42, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S21120C14,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S21120C13,    ABISELECT(112,60), //bcp->offset
    79, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S21120C8,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S21120C11,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S21120C7,    ABISELECT(32,16), //bcp->offset
    36, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S21120C15,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S21120C2,    ABISELECT(16,8), //bcp->offset
    19, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S21120C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    62, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S21120C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21120C1[];
extern void _ZN8S21120C1D1Ev();
extern void _ZN8S21120C1D0Ev();
extern void ABISELECT(_ZTv0_n120_N8S21120C1D1Ev,_ZTv0_n60_N8S21120C1D1Ev)();
extern void ABISELECT(_ZThn16_N8S21120C1D1Ev,_ZThn8_N8S21120C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S21120C1D0Ev,_ZTv0_n60_N8S21120C1D0Ev)();
extern void ABISELECT(_ZThn16_N8S21120C1D0Ev,_ZThn8_N8S21120C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S21120C1D1Ev,_ZTv0_n44_N8S21120C1D1Ev)();
extern void ABISELECT(_ZThn48_N8S21120C1D1Ev,_ZThn24_N8S21120C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S21120C1D0Ev,_ZTv0_n44_N8S21120C1D0Ev)();
extern void ABISELECT(_ZThn48_N8S21120C1D0Ev,_ZThn24_N8S21120C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21120C1D1Ev,_ZTv0_n32_N8S21120C1D1Ev)();
extern void ABISELECT(_ZThn64_N8S21120C1D1Ev,_ZThn36_N8S21120C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21120C1D0Ev,_ZTv0_n32_N8S21120C1D0Ev)();
extern void ABISELECT(_ZThn64_N8S21120C1D0Ev,_ZThn36_N8S21120C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21120C1D1Ev,_ZTv0_n32_N8S21120C1D1Ev)();
extern void ABISELECT(_ZThn96_N8S21120C1D1Ev,_ZThn52_N8S21120C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21120C1D0Ev,_ZTv0_n32_N8S21120C1D0Ev)();
extern void ABISELECT(_ZThn96_N8S21120C1D0Ev,_ZThn52_N8S21120C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S21120C1D1Ev,_ZTv0_n44_N8S21120C1D1Ev)();
extern void ABISELECT(_ZThn112_N8S21120C1D1Ev,_ZThn60_N8S21120C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S21120C1D0Ev,_ZTv0_n44_N8S21120C1D0Ev)();
extern void ABISELECT(_ZThn112_N8S21120C1D0Ev,_ZThn60_N8S21120C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21120C1[] = {
  0,
  ABISELECT(112,60),
  ABISELECT(112,60),
  0,
  ABISELECT(96,52),
  ABISELECT(80,44),
  0,
  ABISELECT(48,24),
  ABISELECT(48,24),
  0,
  ABISELECT(64,36),
  ABISELECT(48,24),
  ABISELECT(16,8),
  0,
  ABISELECT(73,41),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C1[0]),
  (VTBL_ENTRY)&_ZN8S21120C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21120C1D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-16,-8),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(57,33),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21120C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S21120C1D1Ev,_ZTv0_n60_N8S21120C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S21120C1D0Ev,_ZTv0_n60_N8S21120C1D0Ev),
  ABISELECT(41,25),
  ABISELECT(16,8),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S21120C1[0]),
  ABISELECT(-48,-24),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S21120C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21120C1D1Ev,_ZTv0_n44_N8S21120C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21120C1D0Ev,_ZTv0_n44_N8S21120C1D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S21120C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21120C1D1Ev,_ZTv0_n32_N8S21120C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21120C1D0Ev,_ZTv0_n32_N8S21120C1D0Ev),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S21120C1[0]),
  ABISELECT(-96,-52),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S21120C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21120C1D1Ev,_ZTv0_n32_N8S21120C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21120C1D0Ev,_ZTv0_n32_N8S21120C1D0Ev),
  ABISELECT(-112,-60),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-64,-36),
  ABISELECT(-39,-19),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S21120C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21120C1D1Ev,_ZTv0_n44_N8S21120C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21120C1D0Ev,_ZTv0_n44_N8S21120C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S21120C1[];
extern void _ZN8S21120C2D1Ev();
extern void _ZN8S21120C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21120C2__8S21120C1[] = {
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-16,-8),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(57,33),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C2[0]),
  (VTBL_ENTRY)&_ZN8S21120C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21120C2D0Ev,
};
extern void _ZN9S21120C15D1Ev();
extern void _ZN9S21120C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21120C158S21120C2__8S21120C1[] = {
  ABISELECT(57,33),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI9S21120C15[0]),
  (VTBL_ENTRY)&_ZN9S21120C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21120C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S21120C119S21120C158S21120C2__A1__8S21120C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI9S21120C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C89S21120C119S21120C158S21120C2__A4__8S21120C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C79S21120C158S21120C2__A1__8S21120C1[] = {
  ABISELECT(41,25),
  ABISELECT(16,8),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C8__8S21120C79S21120C158S21120C2__A1__8S21120C1[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21120C7[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S21120C15D1Ev,_ZTv0_n32_N9S21120C15D1Ev)();
extern void ABISELECT(_ZThn80_N9S21120C15D1Ev,_ZThn44_N9S21120C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S21120C15D0Ev,_ZTv0_n32_N9S21120C15D0Ev)();
extern void ABISELECT(_ZThn80_N9S21120C15D0Ev,_ZThn44_N9S21120C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21120C10__9S21120C158S21120C2__8S21120C1[] = {
  ABISELECT(-80,-44),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S21120C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21120C15D1Ev,_ZTv0_n32_N9S21120C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21120C15D0Ev,_ZTv0_n32_N9S21120C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S21120C7__9S21120C158S21120C2__8S21120C1[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S21120C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C7__A__9S21120C158S21120C2__8S21120C1[] = {
  ABISELECT(41,25),
  ABISELECT(16,8),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21120C15[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S21120C2D1Ev,_ZTv0_n44_N8S21120C2D1Ev)();
extern void ABISELECT(_ZThn32_N8S21120C2D1Ev,_ZThn16_N8S21120C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S21120C2D0Ev,_ZTv0_n44_N8S21120C2D0Ev)();
extern void ABISELECT(_ZThn32_N8S21120C2D0Ev,_ZThn16_N8S21120C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21120C3__8S21120C2__8S21120C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S21120C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21120C2D1Ev,_ZTv0_n44_N8S21120C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21120C2D0Ev,_ZTv0_n44_N8S21120C2D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S21120C2D1Ev,_ZTv0_n32_N8S21120C2D1Ev)();
extern void ABISELECT(_ZThn48_N8S21120C2D1Ev,_ZThn28_N8S21120C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21120C2D0Ev,_ZTv0_n32_N8S21120C2D0Ev)();
extern void ABISELECT(_ZThn48_N8S21120C2D0Ev,_ZThn28_N8S21120C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21120C4__8S21120C2__8S21120C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S21120C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21120C2D1Ev,_ZTv0_n32_N8S21120C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21120C2D0Ev,_ZTv0_n32_N8S21120C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S21120C11__8S21120C2__8S21120C1[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S21120C2[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S21120C2D1Ev,_ZTv0_n32_N8S21120C2D1Ev)();
extern void ABISELECT(_ZThn80_N8S21120C2D1Ev,_ZThn44_N8S21120C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21120C2D0Ev,_ZTv0_n32_N8S21120C2D0Ev)();
extern void ABISELECT(_ZThn80_N8S21120C2D0Ev,_ZThn44_N8S21120C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21120C10__A1__8S21120C2__8S21120C1[] = {
  ABISELECT(-80,-44),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S21120C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21120C2D1Ev,_ZTv0_n32_N8S21120C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21120C2D0Ev,_ZTv0_n32_N8S21120C2D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S21120C2D1Ev,_ZTv0_n44_N8S21120C2D1Ev)();
extern void ABISELECT(_ZThn96_N8S21120C2D1Ev,_ZThn52_N8S21120C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S21120C2D0Ev,_ZTv0_n44_N8S21120C2D0Ev)();
extern void ABISELECT(_ZThn96_N8S21120C2D0Ev,_ZThn52_N8S21120C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21120C13__8S21120C2__8S21120C1[] = {
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-64,-36),
  ABISELECT(-39,-19),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S21120C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21120C2D1Ev,_ZTv0_n44_N8S21120C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21120C2D0Ev,_ZTv0_n44_N8S21120C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S21120C79S21120C15__A1__8S21120C2__8S21120C1[] = {
  ABISELECT(41,25),
  ABISELECT(16,8),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21120C2[0]),
};
extern void _ZN8S21120C3D1Ev();
extern void _ZN8S21120C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21120C3__8S21120C1[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C3[0]),
  (VTBL_ENTRY)&_ZN8S21120C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21120C3D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N8S21120C3D1Ev,_ZTv0_n32_N8S21120C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S21120C3D1Ev,_ZThn12_N8S21120C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21120C3D0Ev,_ZTv0_n32_N8S21120C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S21120C3D0Ev,_ZThn12_N8S21120C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21120C4__8S21120C3__8S21120C1[] = {
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21120C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21120C3D1Ev,_ZTv0_n32_N8S21120C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21120C3D0Ev,_ZTv0_n32_N8S21120C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S21120C11__8S21120C3__8S21120C1[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S21120C3[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S21120C3D1Ev,_ZTv0_n32_N8S21120C3D1Ev)();
extern void ABISELECT(_ZThn48_N8S21120C3D1Ev,_ZThn28_N8S21120C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21120C3D0Ev,_ZTv0_n32_N8S21120C3D0Ev)();
extern void ABISELECT(_ZThn48_N8S21120C3D0Ev,_ZThn28_N8S21120C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21120C10__A1__8S21120C3__8S21120C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S21120C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21120C3D1Ev,_ZTv0_n32_N8S21120C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21120C3D0Ev,_ZTv0_n32_N8S21120C3D0Ev),
};
extern void _ZN8S21120C4D1Ev();
extern void _ZN8S21120C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21120C4__8S21120C1[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C4[0]),
  (VTBL_ENTRY)&_ZN8S21120C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21120C4D0Ev,
};
extern void _ZN9S21120C10D1Ev();
extern void _ZN9S21120C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21120C108S21120C4__8S21120C1[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI9S21120C10[0]),
  (VTBL_ENTRY)&_ZN9S21120C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21120C10D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S21120C89S21120C108S21120C4__A1__8S21120C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C7__9S21120C108S21120C4__8S21120C1[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S21120C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C7__8S21120C4__8S21120C1[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S21120C4[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C7__8S21120C1[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C8__8S21120C1[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C8[0]),
};
static  VTBL_ENTRY _tg__ZTV9S21120C11__8S21120C1[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI9S21120C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C89S21120C11__A2__8S21120C1[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C8[0]),
};
extern void _ZN9S21120C10D1Ev();
extern void _ZN9S21120C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21120C10__A1__8S21120C1[] = {
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  0,
  (VTBL_ENTRY)&(_ZTI9S21120C10[0]),
  (VTBL_ENTRY)&_ZN9S21120C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21120C10D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S21120C89S21120C10__A3__8S21120C1[] = {
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C7__9S21120C10__A1__8S21120C1[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S21120C10[0]),
};
extern void _ZN9S21120C13D1Ev();
extern void _ZN9S21120C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21120C13__8S21120C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-64,-36),
  ABISELECT(-39,-19),
  0,
  (VTBL_ENTRY)&(_ZTI9S21120C13[0]),
  (VTBL_ENTRY)&_ZN9S21120C13D1Ev,
  (VTBL_ENTRY)&_ZN9S21120C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S21120C7__9S21120C13__8S21120C1[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI9S21120C13[0]),
};
static  VTBL_ENTRY _tg__ZTV9S21120C11__9S21120C13__8S21120C1[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S21120C13[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S21120C13D1Ev,_ZTv0_n32_N9S21120C13D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S21120C13D0Ev,_ZTv0_n32_N9S21120C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21120C4__9S21120C13__8S21120C1[] = {
  ABISELECT(48,24),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI9S21120C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21120C13D1Ev,_ZTv0_n32_N9S21120C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21120C13D0Ev,_ZTv0_n32_N9S21120C13D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S21120C14__8S21120C1[] = {
  ABISELECT(-39,-19),
  0,
  (VTBL_ENTRY)&(_ZTI9S21120C14[0]),
};
extern void _ZN9S21120C16D1Ev();
extern void _ZN9S21120C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21120C16__8S21120C1[] = {
  ABISELECT(73,41),
  0,
  (VTBL_ENTRY)&(_ZTI9S21120C16[0]),
  (VTBL_ENTRY)&_ZN9S21120C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21120C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S21120C149S21120C16__A1__8S21120C1[] = {
  ABISELECT(73,41),
  0,
  (VTBL_ENTRY)&(_ZTI9S21120C14[0]),
};
static  VTT_ENTRY vtt_S21120C1[] = {
  {&(_ZTV8S21120C1[17]),  17,92},
  {&(_ZTV8S21120C1[34]),  34,92},
  {&(_ZTV8S21120C1[53]),  53,92},
  {&(_ZTV8S21120C1[63]),  63,92},
  {&(_ZTV8S21120C1[53]),  53,92},
  {&(_ZTV8S21120C1[53]),  53,92},
  {&(_ZTV8S21120C1[69]),  69,92},
  {&(_ZTV8S21120C1[77]),  77,92},
  {&(_ZTV8S21120C1[90]),  90,92},
  {&(_ZTV8S21120C1[90]),  90,92},
  {&(_ZTV8S21120C1[42]),  42,92},
  {&(_ZTV8S21120C1[17]),  17,92},
  {&(_tg__ZTV8S21120C2__8S21120C1[14]),  14,16},
  {&(_tg__ZTV9S21120C158S21120C2__8S21120C1[8]),  8,10},
  {&(_tg__ZTV9S21120C119S21120C158S21120C2__A1__8S21120C1[4]),  4,4},
  {&(_tg__ZTV8S21120C89S21120C119S21120C158S21120C2__A4__8S21120C1[4]),  4,4},
  {&(_tg__ZTV8S21120C79S21120C158S21120C2__A1__8S21120C1[6]),  6,6},
  {&(_tg__ZTV8S21120C8__8S21120C79S21120C158S21120C2__A1__8S21120C1[4]),  4,4},
  {&(_tg__ZTV9S21120C10__9S21120C158S21120C2__8S21120C1[8]),  8,10},
  {&(_tg__ZTV8S21120C7__9S21120C158S21120C2__8S21120C1[6]),  6,6},
  {&(_tg__ZTV8S21120C7__9S21120C158S21120C2__8S21120C1[6]),  6,6},
  {&(_tg__ZTV8S21120C7__A__9S21120C158S21120C2__8S21120C1[6]),  6,6},
  {&(_tg__ZTV8S21120C3__8S21120C2__8S21120C1[11]),  11,13},
  {&(_tg__ZTV8S21120C4__8S21120C2__8S21120C1[8]),  8,10},
  {&(_tg__ZTV8S21120C3__8S21120C2__8S21120C1[11]),  11,13},
  {&(_tg__ZTV8S21120C3__8S21120C2__8S21120C1[11]),  11,13},
  {&(_tg__ZTV9S21120C11__8S21120C2__8S21120C1[4]),  4,4},
  {&(_tg__ZTV9S21120C10__A1__8S21120C2__8S21120C1[8]),  8,10},
  {&(_tg__ZTV9S21120C13__8S21120C2__8S21120C1[11]),  11,13},
  {&(_tg__ZTV9S21120C13__8S21120C2__8S21120C1[11]),  11,13},
  {&(_tg__ZTV8S21120C79S21120C15__A1__8S21120C2__8S21120C1[6]),  6,6},
  {&(_tg__ZTV8S21120C3__8S21120C1[10]),  10,12},
  {&(_tg__ZTV8S21120C4__8S21120C3__8S21120C1[8]),  8,10},
  {&(_tg__ZTV8S21120C3__8S21120C1[10]),  10,12},
  {&(_tg__ZTV8S21120C3__8S21120C1[10]),  10,12},
  {&(_tg__ZTV9S21120C11__8S21120C3__8S21120C1[4]),  4,4},
  {&(_tg__ZTV9S21120C10__A1__8S21120C3__8S21120C1[8]),  8,10},
  {&(_tg__ZTV8S21120C4__8S21120C1[7]),  7,9},
  {&(_tg__ZTV9S21120C108S21120C4__8S21120C1[7]),  7,9},
  {&(_tg__ZTV8S21120C89S21120C108S21120C4__A1__8S21120C1[4]),  4,4},
  {&(_tg__ZTV8S21120C7__9S21120C108S21120C4__8S21120C1[6]),  6,6},
  {&(_tg__ZTV8S21120C7__9S21120C108S21120C4__8S21120C1[6]),  6,6},
  {&(_tg__ZTV8S21120C7__8S21120C4__8S21120C1[6]),  6,6},
  {&(_tg__ZTV8S21120C7__8S21120C4__8S21120C1[6]),  6,6},
  {&(_tg__ZTV8S21120C7__8S21120C1[6]),  6,6},
  {&(_tg__ZTV8S21120C7__8S21120C1[6]),  6,6},
  {&(_tg__ZTV8S21120C8__8S21120C1[4]),  4,4},
  {&(_tg__ZTV9S21120C11__8S21120C1[4]),  4,4},
  {&(_tg__ZTV8S21120C89S21120C11__A2__8S21120C1[4]),  4,4},
  {&(_tg__ZTV9S21120C10__A1__8S21120C1[7]),  7,9},
  {&(_tg__ZTV8S21120C89S21120C10__A3__8S21120C1[4]),  4,4},
  {&(_tg__ZTV8S21120C7__9S21120C10__A1__8S21120C1[6]),  6,6},
  {&(_tg__ZTV8S21120C7__9S21120C10__A1__8S21120C1[6]),  6,6},
  {&(_tg__ZTV9S21120C13__8S21120C1[10]),  10,12},
  {&(_tg__ZTV8S21120C7__9S21120C13__8S21120C1[6]),  6,6},
  {&(_tg__ZTV9S21120C13__8S21120C1[10]),  10,12},
  {&(_tg__ZTV9S21120C11__9S21120C13__8S21120C1[4]),  4,4},
  {&(_tg__ZTV8S21120C4__9S21120C13__8S21120C1[8]),  8,10},
  {&(_tg__ZTV8S21120C7__9S21120C13__8S21120C1[6]),  6,6},
  {&(_tg__ZTV9S21120C14__8S21120C1[3]),  3,3},
  {&(_tg__ZTV9S21120C16__8S21120C1[3]),  3,5},
  {&(_tg__ZTV9S21120C149S21120C16__A1__8S21120C1[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S21120C1[];
extern  VTBL_ENTRY _ZTV8S21120C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C1[];
static VTBL_ENTRY alt_thunk_names181[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21120C3D0Ev,_ZTv0_n32_N8S21120C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21120C3D0Ev,_ZThn28_N8S21120C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21120C3D0Ev,_ZThn12_N8S21120C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21120C3D1Ev,_ZTv0_n32_N8S21120C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21120C3D1Ev,_ZThn28_N8S21120C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21120C3D1Ev,_ZThn12_N8S21120C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21120C2D0Ev,_ZTv0_n32_N8S21120C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21120C2D0Ev,_ZThn44_N8S21120C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21120C2D0Ev,_ZThn28_N8S21120C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21120C2D1Ev,_ZTv0_n32_N8S21120C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21120C2D1Ev,_ZThn44_N8S21120C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21120C2D1Ev,_ZThn28_N8S21120C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S21120C2D0Ev,_ZTv0_n44_N8S21120C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21120C2D0Ev,_ZThn52_N8S21120C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S21120C2D0Ev,_ZThn16_N8S21120C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S21120C2D1Ev,_ZTv0_n44_N8S21120C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21120C2D1Ev,_ZThn52_N8S21120C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S21120C2D1Ev,_ZThn16_N8S21120C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21120C15D0Ev,_ZTv0_n32_N9S21120C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21120C15D0Ev,_ZThn44_N9S21120C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21120C15D1Ev,_ZTv0_n32_N9S21120C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21120C15D1Ev,_ZThn44_N9S21120C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21120C1D0Ev,_ZTv0_n32_N8S21120C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21120C1D0Ev,_ZThn52_N8S21120C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21120C1D0Ev,_ZThn36_N8S21120C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21120C1D1Ev,_ZTv0_n32_N8S21120C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21120C1D1Ev,_ZThn52_N8S21120C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21120C1D1Ev,_ZThn36_N8S21120C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S21120C1D0Ev,_ZTv0_n44_N8S21120C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21120C1D0Ev,_ZThn60_N8S21120C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21120C1D0Ev,_ZThn24_N8S21120C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S21120C1D1Ev,_ZTv0_n44_N8S21120C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21120C1D1Ev,_ZThn60_N8S21120C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21120C1D1Ev,_ZThn24_N8S21120C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S21120C1D0Ev,_ZTv0_n60_N8S21120C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21120C1D0Ev,_ZThn8_N8S21120C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S21120C1D1Ev,_ZTv0_n60_N8S21120C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21120C1D1Ev,_ZThn8_N8S21120C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21120C1 = {  "S21120C1", // class name
  bases_S21120C1, 40,
  &(vtc_S21120C1[0]), // expected_vtbl_contents
  &(vtt_S21120C1[0]), // expected_vtt_contents
  ABISELECT(128,68), // object size
  NSPAIRA(_ZTI8S21120C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S21120C1),92, //virtual function table var
  17, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21120C1),62, //virtual table table var
  19, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names181,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8611C2_nt  {
  virtual  ~S8611C2_nt(); // _ZN10S8611C2_ntD1Ev
  virtual void  v14(); // _ZN10S8611C2_nt3v14Ev
  virtual void  v15(); // _ZN10S8611C2_nt3v15Ev
  virtual void  v16(); // _ZN10S8611C2_nt3v16Ev
  virtual void  v17(); // _ZN10S8611C2_nt3v17Ev
  virtual void  v18(); // _ZN10S8611C2_nt3v18Ev
  virtual void  v19(); // _ZN10S8611C2_nt3v19Ev
  virtual void  v20(); // _ZN10S8611C2_nt3v20Ev
  virtual void  v21(); // _ZN10S8611C2_nt3v21Ev
  virtual void  v22(); // _ZN10S8611C2_nt3v22Ev
  virtual void  v23(); // _ZN10S8611C2_nt3v23Ev
  virtual void  v24(); // _ZN10S8611C2_nt3v24Ev
  virtual void  v25(); // _ZN10S8611C2_nt3v25Ev
  virtual void  v26(); // _ZN10S8611C2_nt3v26Ev
  S8611C2_nt(); // tgen
};
//SIG(-1 S8611C2_nt) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13}


 S8611C2_nt ::~S8611C2_nt(){ note_dtor("S8611C2_nt", this);}
void  S8611C2_nt ::v14(){vfunc_called(this, "_ZN10S8611C2_nt3v14Ev");}
void  S8611C2_nt ::v15(){vfunc_called(this, "_ZN10S8611C2_nt3v15Ev");}
void  S8611C2_nt ::v16(){vfunc_called(this, "_ZN10S8611C2_nt3v16Ev");}
void  S8611C2_nt ::v17(){vfunc_called(this, "_ZN10S8611C2_nt3v17Ev");}
void  S8611C2_nt ::v18(){vfunc_called(this, "_ZN10S8611C2_nt3v18Ev");}
void  S8611C2_nt ::v19(){vfunc_called(this, "_ZN10S8611C2_nt3v19Ev");}
void  S8611C2_nt ::v20(){vfunc_called(this, "_ZN10S8611C2_nt3v20Ev");}
void  S8611C2_nt ::v21(){vfunc_called(this, "_ZN10S8611C2_nt3v21Ev");}
void  S8611C2_nt ::v22(){vfunc_called(this, "_ZN10S8611C2_nt3v22Ev");}
void  S8611C2_nt ::v23(){vfunc_called(this, "_ZN10S8611C2_nt3v23Ev");}
void  S8611C2_nt ::v24(){vfunc_called(this, "_ZN10S8611C2_nt3v24Ev");}
void  S8611C2_nt ::v25(){vfunc_called(this, "_ZN10S8611C2_nt3v25Ev");}
void  S8611C2_nt ::v26(){vfunc_called(this, "_ZN10S8611C2_nt3v26Ev");}
S8611C2_nt ::S8611C2_nt(){ note_ctor("S8611C2_nt", this);} // tgen

//skip512 S8611C2_nt

#else // __cplusplus

extern void _ZN10S8611C2_ntC1Ev();
extern void _ZN10S8611C2_ntD1Ev();
Name_Map name_map_S8611C2_nt[] = {
  NSPAIR(_ZN10S8611C2_ntC1Ev),
  NSPAIR(_ZN10S8611C2_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S8611C2_nt[];
extern void _ZN10S8611C2_ntD1Ev();
extern void _ZN10S8611C2_ntD0Ev();
extern void _ZN10S8611C2_nt3v14Ev();
extern void _ZN10S8611C2_nt3v15Ev();
extern void _ZN10S8611C2_nt3v16Ev();
extern void _ZN10S8611C2_nt3v17Ev();
extern void _ZN10S8611C2_nt3v18Ev();
extern void _ZN10S8611C2_nt3v19Ev();
extern void _ZN10S8611C2_nt3v20Ev();
extern void _ZN10S8611C2_nt3v21Ev();
extern void _ZN10S8611C2_nt3v22Ev();
extern void _ZN10S8611C2_nt3v23Ev();
extern void _ZN10S8611C2_nt3v24Ev();
extern void _ZN10S8611C2_nt3v25Ev();
extern void _ZN10S8611C2_nt3v26Ev();
static  VTBL_ENTRY vtc_S8611C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S8611C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S8611C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S8611C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S8611C2_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S8611C2_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S8611C2_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S8611C2_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S8611C2_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S8611C2_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S8611C2_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S8611C2_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S8611C2_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S8611C2_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S8611C2_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S8611C2_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S8611C2_nt3v26Ev,
};
extern VTBL_ENTRY _ZTI10S8611C2_nt[];
VTBL_ENTRY *P__ZTI10S8611C2_nt = _ZTI10S8611C2_nt; 
extern  VTBL_ENTRY _ZTV10S8611C2_nt[];
Class_Descriptor cd_S8611C2_nt = {  "S8611C2_nt", // class name
  0,0,//no base classes
  &(vtc_S8611C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S8611C2_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S8611C2_nt),17, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8611C4_nt  {
  int s8611c4f0[3];
  void  mf8611c4(); // _ZN10S8611C4_nt8mf8611c4Ev
};
//SIG(-1 S8611C4_nt) C1{ m Fi[3]}


void  S8611C4_nt ::mf8611c4(){}

//skip512 S8611C4_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8611C1  : S8611C2_nt {
  void *s8611c1f0;
  int s8611c1f1;
  void *s8611c1f2[2];
  ::S40C18_nt s8611c1f3;
  ::S40C18_nt s8611c1f4;
  ::S8611C4_nt s8611c1f5;
  ::S40C18_nt s8611c1f6;
  ::S40C18_nt s8611c1f7;
  ::S40C18_nt s8611c1f8;
  int s8611c1f9;
  void *s8611c1f10[2];
  int s8611c1f11;
  ::S40C82 s8611c1f12;
  int s8611c1f13[2];
  ::S40C81 s8611c1f14;
  void *s8611c1f15;
  ::S40C18_nt s8611c1f16;
  int s8611c1f17[3];
  virtual  ~S8611C1(); // _ZN7S8611C1D1Ev
  virtual void  v1(); // _ZN7S8611C12v1Ev
  virtual void  v2(); // _ZN7S8611C12v2Ev
  virtual void  v3(); // _ZN7S8611C12v3Ev
  virtual void  v4(); // _ZN7S8611C12v4Ev
  virtual void  v5(); // _ZN7S8611C12v5Ev
  virtual void  v6(); // _ZN7S8611C12v6Ev
  virtual void  v7(); // _ZN7S8611C12v7Ev
  virtual void  v8(); // _ZN7S8611C12v8Ev
  virtual void  v9(); // _ZN7S8611C12v9Ev
  virtual void  v10(); // _ZN7S8611C13v10Ev
  virtual void  v11(); // _ZN7S8611C13v11Ev
  virtual void  v12(); // _ZN7S8611C13v12Ev
  virtual void  v13(); // _ZN7S8611C13v13Ev
  S8611C1(); // tgen
};
//SIG(1 S8611C1) C1{ BC2{ vd v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 Fp Fi Fp[2] FC3{ m Fi[3]} FC3 FC4{ m Fi[3]} FC3 FC3 FC3 Fi Fp[2] Fi FC5{ m FC3 FC3 Fc} Fi[2] FC6{ BC7{ m Fp Fi[2]}} Fp FC3 Fi[3]}


 S8611C1 ::~S8611C1(){ note_dtor("S8611C1", this);}
void  S8611C1 ::v1(){vfunc_called(this, "_ZN7S8611C12v1Ev");}
void  S8611C1 ::v2(){vfunc_called(this, "_ZN7S8611C12v2Ev");}
void  S8611C1 ::v3(){vfunc_called(this, "_ZN7S8611C12v3Ev");}
void  S8611C1 ::v4(){vfunc_called(this, "_ZN7S8611C12v4Ev");}
void  S8611C1 ::v5(){vfunc_called(this, "_ZN7S8611C12v5Ev");}
void  S8611C1 ::v6(){vfunc_called(this, "_ZN7S8611C12v6Ev");}
void  S8611C1 ::v7(){vfunc_called(this, "_ZN7S8611C12v7Ev");}
void  S8611C1 ::v8(){vfunc_called(this, "_ZN7S8611C12v8Ev");}
void  S8611C1 ::v9(){vfunc_called(this, "_ZN7S8611C12v9Ev");}
void  S8611C1 ::v10(){vfunc_called(this, "_ZN7S8611C13v10Ev");}
void  S8611C1 ::v11(){vfunc_called(this, "_ZN7S8611C13v11Ev");}
void  S8611C1 ::v12(){vfunc_called(this, "_ZN7S8611C13v12Ev");}
void  S8611C1 ::v13(){vfunc_called(this, "_ZN7S8611C13v13Ev");}
S8611C1 ::S8611C1(){ note_ctor("S8611C1", this);} // tgen

static void Test_S8611C1()
{
  extern Class_Descriptor cd_S8611C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(29,47)];
    init_test(&cd_S8611C1, buf);
    S8611C1 *dp, &lv = *(dp=new (buf) S8611C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(224,184), "sizeof(S8611C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8611C1)");
    check_base_class_offset(lv, (S8611C2_nt*), 0, "S8611C1");
    check_field_offset(lv, s8611c1f0, ABISELECT(8,4), "S8611C1.s8611c1f0");
    check_field_offset(lv, s8611c1f1, ABISELECT(16,8), "S8611C1.s8611c1f1");
    check_field_offset(lv, s8611c1f2, ABISELECT(24,12), "S8611C1.s8611c1f2");
    check_field_offset(lv, s8611c1f3, ABISELECT(40,20), "S8611C1.s8611c1f3");
    check_field_offset(lv, s8611c1f4, ABISELECT(52,32), "S8611C1.s8611c1f4");
    check_field_offset(lv, s8611c1f5, ABISELECT(64,44), "S8611C1.s8611c1f5");
    check_field_offset(lv, s8611c1f6, ABISELECT(76,56), "S8611C1.s8611c1f6");
    check_field_offset(lv, s8611c1f7, ABISELECT(88,68), "S8611C1.s8611c1f7");
    check_field_offset(lv, s8611c1f8, ABISELECT(100,80), "S8611C1.s8611c1f8");
    check_field_offset(lv, s8611c1f9, ABISELECT(112,92), "S8611C1.s8611c1f9");
    check_field_offset(lv, s8611c1f10, ABISELECT(120,96), "S8611C1.s8611c1f10");
    check_field_offset(lv, s8611c1f11, ABISELECT(136,104), "S8611C1.s8611c1f11");
    check_field_offset(lv, s8611c1f12, ABISELECT(140,108), "S8611C1.s8611c1f12");
    check_field_offset(lv, s8611c1f13, ABISELECT(168,136), "S8611C1.s8611c1f13");
    check_field_offset(lv, s8611c1f14, ABISELECT(176,144), "S8611C1.s8611c1f14");
    check_field_offset(lv, s8611c1f15, ABISELECT(192,156), "S8611C1.s8611c1f15");
    check_field_offset(lv, s8611c1f16, ABISELECT(200,160), "S8611C1.s8611c1f16");
    check_field_offset(lv, s8611c1f17, ABISELECT(212,172), "S8611C1.s8611c1f17");
    test_class_info(&lv, &cd_S8611C1);
    dp->~S8611C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8611C1(Test_S8611C1, "S8611C1", ABISELECT(224,184));

#else // __cplusplus

extern void _ZN7S8611C1C1Ev();
extern void _ZN7S8611C1D1Ev();
Name_Map name_map_S8611C1[] = {
  NSPAIR(_ZN7S8611C1C1Ev),
  NSPAIR(_ZN7S8611C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8611C2_nt;
extern VTBL_ENTRY _ZTI10S8611C2_nt[];
extern  VTBL_ENTRY _ZTV10S8611C2_nt[];
static Base_Class bases_S8611C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8611C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8611C1[];
extern void _ZN7S8611C1D1Ev();
extern void _ZN7S8611C1D0Ev();
extern void _ZN10S8611C2_nt3v14Ev();
extern void _ZN10S8611C2_nt3v15Ev();
extern void _ZN10S8611C2_nt3v16Ev();
extern void _ZN10S8611C2_nt3v17Ev();
extern void _ZN10S8611C2_nt3v18Ev();
extern void _ZN10S8611C2_nt3v19Ev();
extern void _ZN10S8611C2_nt3v20Ev();
extern void _ZN10S8611C2_nt3v21Ev();
extern void _ZN10S8611C2_nt3v22Ev();
extern void _ZN10S8611C2_nt3v23Ev();
extern void _ZN10S8611C2_nt3v24Ev();
extern void _ZN10S8611C2_nt3v25Ev();
extern void _ZN10S8611C2_nt3v26Ev();
extern void _ZN7S8611C12v1Ev();
extern void _ZN7S8611C12v2Ev();
extern void _ZN7S8611C12v3Ev();
extern void _ZN7S8611C12v4Ev();
extern void _ZN7S8611C12v5Ev();
extern void _ZN7S8611C12v6Ev();
extern void _ZN7S8611C12v7Ev();
extern void _ZN7S8611C12v8Ev();
extern void _ZN7S8611C12v9Ev();
extern void _ZN7S8611C13v10Ev();
extern void _ZN7S8611C13v11Ev();
extern void _ZN7S8611C13v12Ev();
extern void _ZN7S8611C13v13Ev();
static  VTBL_ENTRY vtc_S8611C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8611C1[0]),
  (VTBL_ENTRY)&_ZN7S8611C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8611C1D0Ev,
  (VTBL_ENTRY)&_ZN10S8611C2_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S8611C2_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S8611C2_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S8611C2_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S8611C2_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S8611C2_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S8611C2_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S8611C2_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S8611C2_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S8611C2_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S8611C2_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S8611C2_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S8611C2_nt3v26Ev,
  (VTBL_ENTRY)&_ZN7S8611C12v1Ev,
  (VTBL_ENTRY)&_ZN7S8611C12v2Ev,
  (VTBL_ENTRY)&_ZN7S8611C12v3Ev,
  (VTBL_ENTRY)&_ZN7S8611C12v4Ev,
  (VTBL_ENTRY)&_ZN7S8611C12v5Ev,
  (VTBL_ENTRY)&_ZN7S8611C12v6Ev,
  (VTBL_ENTRY)&_ZN7S8611C12v7Ev,
  (VTBL_ENTRY)&_ZN7S8611C12v8Ev,
  (VTBL_ENTRY)&_ZN7S8611C12v9Ev,
  (VTBL_ENTRY)&_ZN7S8611C13v10Ev,
  (VTBL_ENTRY)&_ZN7S8611C13v11Ev,
  (VTBL_ENTRY)&_ZN7S8611C13v12Ev,
  (VTBL_ENTRY)&_ZN7S8611C13v13Ev,
};
extern VTBL_ENTRY _ZTI7S8611C1[];
extern  VTBL_ENTRY _ZTV7S8611C1[];
Class_Descriptor cd_S8611C1 = {  "S8611C1", // class name
  bases_S8611C1, 1,
  &(vtc_S8611C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(224,184), // object size
  NSPAIRA(_ZTI7S8611C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8611C1),30, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S465C4_nt  : S7856C24 {
  virtual  ~S465C4_nt(); // _ZN9S465C4_ntD1Ev
  virtual void  v8(); // _ZN9S465C4_nt2v8Ev
  S465C4_nt(); // tgen
};
//SIG(-1 S465C4_nt) C1{ BC2{ m} vd v1}


 S465C4_nt ::~S465C4_nt(){ note_dtor("S465C4_nt", this);}
void  S465C4_nt ::v8(){vfunc_called(this, "_ZN9S465C4_nt2v8Ev");}
S465C4_nt ::S465C4_nt(){ note_ctor("S465C4_nt", this);} // tgen

//skip512 S465C4_nt

#else // __cplusplus

extern void _ZN9S465C4_ntC1Ev();
extern void _ZN9S465C4_ntD1Ev();
Name_Map name_map_S465C4_nt[] = {
  NSPAIR(_ZN9S465C4_ntC1Ev),
  NSPAIR(_ZN9S465C4_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
static Base_Class bases_S465C4_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S465C4_nt[];
extern void _ZN9S465C4_ntD1Ev();
extern void _ZN9S465C4_ntD0Ev();
extern void _ZN9S465C4_nt2v8Ev();
static  VTBL_ENTRY vtc_S465C4_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S465C4_nt[0]),
  (VTBL_ENTRY)&_ZN9S465C4_ntD1Ev,
  (VTBL_ENTRY)&_ZN9S465C4_ntD0Ev,
  (VTBL_ENTRY)&_ZN9S465C4_nt2v8Ev,
};
extern VTBL_ENTRY _ZTI9S465C4_nt[];
VTBL_ENTRY *P__ZTI9S465C4_nt = _ZTI9S465C4_nt; 
extern  VTBL_ENTRY _ZTV9S465C4_nt[];
Class_Descriptor cd_S465C4_nt = {  "S465C4_nt", // class name
  bases_S465C4_nt, 1,
  &(vtc_S465C4_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI9S465C4_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S465C4_nt),5, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S465C3_nt  : S465C4_nt {
  char s465c3f0[112];
  virtual  ~S465C3_nt(); // _ZN9S465C3_ntD1Ev
  virtual void  v9(); // _ZN9S465C3_nt2v9Ev
  virtual void  v10(); // _ZN9S465C3_nt3v10Ev
  virtual void  v11(); // _ZN9S465C3_nt3v11Ev
  virtual void  v12(); // _ZN9S465C3_nt3v12Ev
  virtual void  v13(); // _ZN9S465C3_nt3v13Ev
  S465C3_nt(); // tgen
};
//SIG(-1 S465C3_nt) C1{ BC2{ BC3{ m} vd v6} vd v1 v2 v3 v4 v5 Fc[112]}


 S465C3_nt ::~S465C3_nt(){ note_dtor("S465C3_nt", this);}
void  S465C3_nt ::v9(){vfunc_called(this, "_ZN9S465C3_nt2v9Ev");}
void  S465C3_nt ::v10(){vfunc_called(this, "_ZN9S465C3_nt3v10Ev");}
void  S465C3_nt ::v11(){vfunc_called(this, "_ZN9S465C3_nt3v11Ev");}
void  S465C3_nt ::v12(){vfunc_called(this, "_ZN9S465C3_nt3v12Ev");}
void  S465C3_nt ::v13(){vfunc_called(this, "_ZN9S465C3_nt3v13Ev");}
S465C3_nt ::S465C3_nt(){ note_ctor("S465C3_nt", this);} // tgen

//skip512 S465C3_nt

#else // __cplusplus

extern void _ZN9S465C3_ntC1Ev();
extern void _ZN9S465C3_ntD1Ev();
Name_Map name_map_S465C3_nt[] = {
  NSPAIR(_ZN9S465C3_ntC1Ev),
  NSPAIR(_ZN9S465C3_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S465C4_nt;
extern VTBL_ENTRY _ZTI9S465C4_nt[];
extern  VTBL_ENTRY _ZTV9S465C4_nt[];
static Base_Class bases_S465C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S465C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S465C3_nt[];
extern void _ZN9S465C3_ntD1Ev();
extern void _ZN9S465C3_ntD0Ev();
extern void _ZN9S465C4_nt2v8Ev();
extern void _ZN9S465C3_nt2v9Ev();
extern void _ZN9S465C3_nt3v10Ev();
extern void _ZN9S465C3_nt3v11Ev();
extern void _ZN9S465C3_nt3v12Ev();
extern void _ZN9S465C3_nt3v13Ev();
static  VTBL_ENTRY vtc_S465C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S465C3_nt[0]),
  (VTBL_ENTRY)&_ZN9S465C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN9S465C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN9S465C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN9S465C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN9S465C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN9S465C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN9S465C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S465C3_nt3v13Ev,
};
extern VTBL_ENTRY _ZTI9S465C3_nt[];
VTBL_ENTRY *P__ZTI9S465C3_nt = _ZTI9S465C3_nt; 
extern  VTBL_ENTRY _ZTV9S465C3_nt[];
Class_Descriptor cd_S465C3_nt = {  "S465C3_nt", // class name
  bases_S465C3_nt, 2,
  &(vtc_S465C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(120,116), // object size
  NSPAIRA(_ZTI9S465C3_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S465C3_nt),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S465C2_nt  : S465C3_nt {
  void *s465c2f0[2];
  virtual  ~S465C2_nt(); // _ZN9S465C2_ntD1Ev
  virtual void  v14(); // _ZN9S465C2_nt3v14Ev
  virtual void  v15(); // _ZN9S465C2_nt3v15Ev
  virtual void  v16(); // _ZN9S465C2_nt3v16Ev
  virtual void  v17(); // _ZN9S465C2_nt3v17Ev
  virtual void  v18(); // _ZN9S465C2_nt3v18Ev
  virtual void  v19(); // _ZN9S465C2_nt3v19Ev
  virtual void  v20(); // _ZN9S465C2_nt3v20Ev
  virtual void  v21(); // _ZN9S465C2_nt3v21Ev
  virtual void  v22(); // _ZN9S465C2_nt3v22Ev
  virtual void  v23(); // _ZN9S465C2_nt3v23Ev
  virtual void  v24(); // _ZN9S465C2_nt3v24Ev
  virtual void  v25(); // _ZN9S465C2_nt3v25Ev
  virtual void  v26(); // _ZN9S465C2_nt3v26Ev
  virtual void  v27(); // _ZN9S465C2_nt3v27Ev
  virtual void  v28(); // _ZN9S465C2_nt3v28Ev
  virtual void  v29(); // _ZN9S465C2_nt3v29Ev
  virtual void  v30(); // _ZN9S465C2_nt3v30Ev
  S465C2_nt(); // tgen
};
//SIG(-1 S465C2_nt) C1{ BC2{ BC3{ BC4{ m} vd v18} vd v19 v20 v21 v22 v23 Fc[112]} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 Fp[2]}


 S465C2_nt ::~S465C2_nt(){ note_dtor("S465C2_nt", this);}
void  S465C2_nt ::v14(){vfunc_called(this, "_ZN9S465C2_nt3v14Ev");}
void  S465C2_nt ::v15(){vfunc_called(this, "_ZN9S465C2_nt3v15Ev");}
void  S465C2_nt ::v16(){vfunc_called(this, "_ZN9S465C2_nt3v16Ev");}
void  S465C2_nt ::v17(){vfunc_called(this, "_ZN9S465C2_nt3v17Ev");}
void  S465C2_nt ::v18(){vfunc_called(this, "_ZN9S465C2_nt3v18Ev");}
void  S465C2_nt ::v19(){vfunc_called(this, "_ZN9S465C2_nt3v19Ev");}
void  S465C2_nt ::v20(){vfunc_called(this, "_ZN9S465C2_nt3v20Ev");}
void  S465C2_nt ::v21(){vfunc_called(this, "_ZN9S465C2_nt3v21Ev");}
void  S465C2_nt ::v22(){vfunc_called(this, "_ZN9S465C2_nt3v22Ev");}
void  S465C2_nt ::v23(){vfunc_called(this, "_ZN9S465C2_nt3v23Ev");}
void  S465C2_nt ::v24(){vfunc_called(this, "_ZN9S465C2_nt3v24Ev");}
void  S465C2_nt ::v25(){vfunc_called(this, "_ZN9S465C2_nt3v25Ev");}
void  S465C2_nt ::v26(){vfunc_called(this, "_ZN9S465C2_nt3v26Ev");}
void  S465C2_nt ::v27(){vfunc_called(this, "_ZN9S465C2_nt3v27Ev");}
void  S465C2_nt ::v28(){vfunc_called(this, "_ZN9S465C2_nt3v28Ev");}
void  S465C2_nt ::v29(){vfunc_called(this, "_ZN9S465C2_nt3v29Ev");}
void  S465C2_nt ::v30(){vfunc_called(this, "_ZN9S465C2_nt3v30Ev");}
S465C2_nt ::S465C2_nt(){ note_ctor("S465C2_nt", this);} // tgen

//skip512 S465C2_nt

#else // __cplusplus

extern void _ZN9S465C2_ntC1Ev();
extern void _ZN9S465C2_ntD1Ev();
Name_Map name_map_S465C2_nt[] = {
  NSPAIR(_ZN9S465C2_ntC1Ev),
  NSPAIR(_ZN9S465C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S465C4_nt;
extern VTBL_ENTRY _ZTI9S465C4_nt[];
extern  VTBL_ENTRY _ZTV9S465C4_nt[];
extern Class_Descriptor cd_S465C3_nt;
extern VTBL_ENTRY _ZTI9S465C3_nt[];
extern  VTBL_ENTRY _ZTV9S465C3_nt[];
static Base_Class bases_S465C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S465C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S465C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S465C2_nt[];
extern void _ZN9S465C2_ntD1Ev();
extern void _ZN9S465C2_ntD0Ev();
extern void _ZN9S465C4_nt2v8Ev();
extern void _ZN9S465C3_nt2v9Ev();
extern void _ZN9S465C3_nt3v10Ev();
extern void _ZN9S465C3_nt3v11Ev();
extern void _ZN9S465C3_nt3v12Ev();
extern void _ZN9S465C3_nt3v13Ev();
extern void _ZN9S465C2_nt3v14Ev();
extern void _ZN9S465C2_nt3v15Ev();
extern void _ZN9S465C2_nt3v16Ev();
extern void _ZN9S465C2_nt3v17Ev();
extern void _ZN9S465C2_nt3v18Ev();
extern void _ZN9S465C2_nt3v19Ev();
extern void _ZN9S465C2_nt3v20Ev();
extern void _ZN9S465C2_nt3v21Ev();
extern void _ZN9S465C2_nt3v22Ev();
extern void _ZN9S465C2_nt3v23Ev();
extern void _ZN9S465C2_nt3v24Ev();
extern void _ZN9S465C2_nt3v25Ev();
extern void _ZN9S465C2_nt3v26Ev();
extern void _ZN9S465C2_nt3v27Ev();
extern void _ZN9S465C2_nt3v28Ev();
extern void _ZN9S465C2_nt3v29Ev();
extern void _ZN9S465C2_nt3v30Ev();
static  VTBL_ENTRY vtc_S465C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S465C2_nt[0]),
  (VTBL_ENTRY)&_ZN9S465C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN9S465C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN9S465C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN9S465C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN9S465C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN9S465C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN9S465C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S465C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN9S465C2_nt3v14Ev,
  (VTBL_ENTRY)&_ZN9S465C2_nt3v15Ev,
  (VTBL_ENTRY)&_ZN9S465C2_nt3v16Ev,
  (VTBL_ENTRY)&_ZN9S465C2_nt3v17Ev,
  (VTBL_ENTRY)&_ZN9S465C2_nt3v18Ev,
  (VTBL_ENTRY)&_ZN9S465C2_nt3v19Ev,
  (VTBL_ENTRY)&_ZN9S465C2_nt3v20Ev,
  (VTBL_ENTRY)&_ZN9S465C2_nt3v21Ev,
  (VTBL_ENTRY)&_ZN9S465C2_nt3v22Ev,
  (VTBL_ENTRY)&_ZN9S465C2_nt3v23Ev,
  (VTBL_ENTRY)&_ZN9S465C2_nt3v24Ev,
  (VTBL_ENTRY)&_ZN9S465C2_nt3v25Ev,
  (VTBL_ENTRY)&_ZN9S465C2_nt3v26Ev,
  (VTBL_ENTRY)&_ZN9S465C2_nt3v27Ev,
  (VTBL_ENTRY)&_ZN9S465C2_nt3v28Ev,
  (VTBL_ENTRY)&_ZN9S465C2_nt3v29Ev,
  (VTBL_ENTRY)&_ZN9S465C2_nt3v30Ev,
};
extern VTBL_ENTRY _ZTI9S465C2_nt[];
VTBL_ENTRY *P__ZTI9S465C2_nt = _ZTI9S465C2_nt; 
extern  VTBL_ENTRY _ZTV9S465C2_nt[];
Class_Descriptor cd_S465C2_nt = {  "S465C2_nt", // class name
  bases_S465C2_nt, 3,
  &(vtc_S465C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(136,124), // object size
  NSPAIRA(_ZTI9S465C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S465C2_nt),27, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S465C6_nt  : S465C4_nt {
  char s465c6f0[22];
  int s465c6f1;
  void *s465c6f2;
  char s465c6f3[56];
  void *s465c6f4;
  char s465c6f5[57];
  virtual  ~S465C6_nt(); // _ZN9S465C6_ntD1Ev
  virtual void  v31(); // _ZN9S465C6_nt3v31Ev
  S465C6_nt(); // tgen
};
//SIG(-1 S465C6_nt) C1{ BC2{ BC3{ m} vd v2} vd v1 Fc[22] Fi Fp Fc[56] Fp Fc[57]}


 S465C6_nt ::~S465C6_nt(){ note_dtor("S465C6_nt", this);}
void  S465C6_nt ::v31(){vfunc_called(this, "_ZN9S465C6_nt3v31Ev");}
S465C6_nt ::S465C6_nt(){ note_ctor("S465C6_nt", this);} // tgen

//skip512 S465C6_nt

#else // __cplusplus

extern void _ZN9S465C6_ntC1Ev();
extern void _ZN9S465C6_ntD1Ev();
Name_Map name_map_S465C6_nt[] = {
  NSPAIR(_ZN9S465C6_ntC1Ev),
  NSPAIR(_ZN9S465C6_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S465C4_nt;
extern VTBL_ENTRY _ZTI9S465C4_nt[];
extern  VTBL_ENTRY _ZTV9S465C4_nt[];
static Base_Class bases_S465C6_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S465C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S465C6_nt[];
extern void _ZN9S465C6_ntD1Ev();
extern void _ZN9S465C6_ntD0Ev();
extern void _ZN9S465C4_nt2v8Ev();
extern void _ZN9S465C6_nt3v31Ev();
static  VTBL_ENTRY vtc_S465C6_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S465C6_nt[0]),
  (VTBL_ENTRY)&_ZN9S465C6_ntD1Ev,
  (VTBL_ENTRY)&_ZN9S465C6_ntD0Ev,
  (VTBL_ENTRY)&_ZN9S465C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN9S465C6_nt3v31Ev,
};
extern VTBL_ENTRY _ZTI9S465C6_nt[];
VTBL_ENTRY *P__ZTI9S465C6_nt = _ZTI9S465C6_nt; 
extern  VTBL_ENTRY _ZTV9S465C6_nt[];
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S465C1  : S465C2_nt {
  void *s465c1f0[3];
  int s465c1f1[2];
  ::S465C6_nt s465c1f2;
  int s465c1f3[3];
  void *s465c1f4;
  virtual  ~S465C1(); // _ZN6S465C1D1Ev
  virtual void  v1(); // _ZN6S465C12v1Ev
  virtual void  v2(); // _ZN6S465C12v2Ev
  virtual void  v3(); // _ZN6S465C12v3Ev
  virtual void  v4(); // _ZN6S465C12v4Ev
  virtual void  v5(); // _ZN6S465C12v5Ev
  virtual void  v6(); // _ZN6S465C12v6Ev
  virtual void  v7(); // _ZN6S465C12v7Ev
  S465C1(); // tgen
};
//SIG(1 S465C1) C1{ BC2{ BC3{ BC4{ BC5{ m} vd v8} vd v9 v10 v11 v12 v13 Fc[112]} vd v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 Fp[2]} vd v1 v2 v3 v4 v5 v6 v7 Fp[3] Fi[2] FC6{ BC4 vd v31 Fc[22] Fi Fp Fc[56] Fp Fc[57]} Fi[3] Fp}


 S465C1 ::~S465C1(){ note_dtor("S465C1", this);}
void  S465C1 ::v1(){vfunc_called(this, "_ZN6S465C12v1Ev");}
void  S465C1 ::v2(){vfunc_called(this, "_ZN6S465C12v2Ev");}
void  S465C1 ::v3(){vfunc_called(this, "_ZN6S465C12v3Ev");}
void  S465C1 ::v4(){vfunc_called(this, "_ZN6S465C12v4Ev");}
void  S465C1 ::v5(){vfunc_called(this, "_ZN6S465C12v5Ev");}
void  S465C1 ::v6(){vfunc_called(this, "_ZN6S465C12v6Ev");}
void  S465C1 ::v7(){vfunc_called(this, "_ZN6S465C12v7Ev");}
S465C1 ::S465C1(){ note_ctor("S465C1", this);} // tgen

static void Test_S465C1()
{
  extern Class_Descriptor cd_S465C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(47,80)];
    init_test(&cd_S465C1, buf);
    S465C1 *dp, &lv = *(dp=new (buf) S465C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(368,316), "sizeof(S465C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S465C1)");
    check_base_class_offset(lv, (S7856C24*)(S465C4_nt*)(S465C3_nt*)(S465C2_nt*), 0, "S465C1");
    check_base_class_offset(lv, (S465C4_nt*)(S465C3_nt*)(S465C2_nt*), 0, "S465C1");
    check_base_class_offset(lv, (S465C3_nt*)(S465C2_nt*), 0, "S465C1");
    check_base_class_offset(lv, (S465C2_nt*), 0, "S465C1");
    check_field_offset(lv, s465c1f0, ABISELECT(136,124), "S465C1.s465c1f0");
    check_field_offset(lv, s465c1f1, ABISELECT(160,136), "S465C1.s465c1f1");
    check_field_offset(lv, s465c1f2, ABISELECT(168,144), "S465C1.s465c1f2");
    check_field_offset(lv, s465c1f3, ABISELECT(344,300), "S465C1.s465c1f3");
    check_field_offset(lv, s465c1f4, ABISELECT(360,312), "S465C1.s465c1f4");
    test_class_info(&lv, &cd_S465C1);
    dp->~S465C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS465C1(Test_S465C1, "S465C1", ABISELECT(368,316));

#else // __cplusplus

extern void _ZN6S465C1C1Ev();
extern void _ZN6S465C1D1Ev();
Name_Map name_map_S465C1[] = {
  NSPAIR(_ZN6S465C1C1Ev),
  NSPAIR(_ZN6S465C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S465C4_nt;
extern VTBL_ENTRY _ZTI9S465C4_nt[];
extern  VTBL_ENTRY _ZTV9S465C4_nt[];
extern Class_Descriptor cd_S465C3_nt;
extern VTBL_ENTRY _ZTI9S465C3_nt[];
extern  VTBL_ENTRY _ZTV9S465C3_nt[];
extern Class_Descriptor cd_S465C2_nt;
extern VTBL_ENTRY _ZTI9S465C2_nt[];
extern  VTBL_ENTRY _ZTV9S465C2_nt[];
static Base_Class bases_S465C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S465C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S465C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S465C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S465C1[];
extern void _ZN6S465C1D1Ev();
extern void _ZN6S465C1D0Ev();
extern void _ZN9S465C4_nt2v8Ev();
extern void _ZN9S465C3_nt2v9Ev();
extern void _ZN9S465C3_nt3v10Ev();
extern void _ZN9S465C3_nt3v11Ev();
extern void _ZN9S465C3_nt3v12Ev();
extern void _ZN9S465C3_nt3v13Ev();
extern void _ZN9S465C2_nt3v14Ev();
extern void _ZN9S465C2_nt3v15Ev();
extern void _ZN9S465C2_nt3v16Ev();
extern void _ZN9S465C2_nt3v17Ev();
extern void _ZN9S465C2_nt3v18Ev();
extern void _ZN9S465C2_nt3v19Ev();
extern void _ZN9S465C2_nt3v20Ev();
extern void _ZN9S465C2_nt3v21Ev();
extern void _ZN9S465C2_nt3v22Ev();
extern void _ZN9S465C2_nt3v23Ev();
extern void _ZN9S465C2_nt3v24Ev();
extern void _ZN9S465C2_nt3v25Ev();
extern void _ZN9S465C2_nt3v26Ev();
extern void _ZN9S465C2_nt3v27Ev();
extern void _ZN9S465C2_nt3v28Ev();
extern void _ZN9S465C2_nt3v29Ev();
extern void _ZN9S465C2_nt3v30Ev();
extern void _ZN6S465C12v1Ev();
extern void _ZN6S465C12v2Ev();
extern void _ZN6S465C12v3Ev();
extern void _ZN6S465C12v4Ev();
extern void _ZN6S465C12v5Ev();
extern void _ZN6S465C12v6Ev();
extern void _ZN6S465C12v7Ev();
static  VTBL_ENTRY vtc_S465C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S465C1[0]),
  (VTBL_ENTRY)&_ZN6S465C1D1Ev,
  (VTBL_ENTRY)&_ZN6S465C1D0Ev,
  (VTBL_ENTRY)&_ZN9S465C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN9S465C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN9S465C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN9S465C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN9S465C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S465C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN9S465C2_nt3v14Ev,
  (VTBL_ENTRY)&_ZN9S465C2_nt3v15Ev,
  (VTBL_ENTRY)&_ZN9S465C2_nt3v16Ev,
  (VTBL_ENTRY)&_ZN9S465C2_nt3v17Ev,
  (VTBL_ENTRY)&_ZN9S465C2_nt3v18Ev,
  (VTBL_ENTRY)&_ZN9S465C2_nt3v19Ev,
  (VTBL_ENTRY)&_ZN9S465C2_nt3v20Ev,
  (VTBL_ENTRY)&_ZN9S465C2_nt3v21Ev,
  (VTBL_ENTRY)&_ZN9S465C2_nt3v22Ev,
  (VTBL_ENTRY)&_ZN9S465C2_nt3v23Ev,
  (VTBL_ENTRY)&_ZN9S465C2_nt3v24Ev,
  (VTBL_ENTRY)&_ZN9S465C2_nt3v25Ev,
  (VTBL_ENTRY)&_ZN9S465C2_nt3v26Ev,
  (VTBL_ENTRY)&_ZN9S465C2_nt3v27Ev,
  (VTBL_ENTRY)&_ZN9S465C2_nt3v28Ev,
  (VTBL_ENTRY)&_ZN9S465C2_nt3v29Ev,
  (VTBL_ENTRY)&_ZN9S465C2_nt3v30Ev,
  (VTBL_ENTRY)&_ZN6S465C12v1Ev,
  (VTBL_ENTRY)&_ZN6S465C12v2Ev,
  (VTBL_ENTRY)&_ZN6S465C12v3Ev,
  (VTBL_ENTRY)&_ZN6S465C12v4Ev,
  (VTBL_ENTRY)&_ZN6S465C12v5Ev,
  (VTBL_ENTRY)&_ZN6S465C12v6Ev,
  (VTBL_ENTRY)&_ZN6S465C12v7Ev,
};
extern VTBL_ENTRY _ZTI6S465C1[];
extern  VTBL_ENTRY _ZTV6S465C1[];
Class_Descriptor cd_S465C1 = {  "S465C1", // class name
  bases_S465C1, 4,
  &(vtc_S465C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(368,316), // object size
  NSPAIRA(_ZTI6S465C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S465C1),34, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1954C3_nt  : S1868C4_nt {
  short s1954c3f0[2];
  virtual  ~S1954C3_nt(); // _ZN10S1954C3_ntD1Ev
  virtual void  v5(); // _ZN10S1954C3_nt2v5Ev
  S1954C3_nt(); // tgen
};
//SIG(-1 S1954C3_nt) C1{ BC2{ vd m} vd v1 Fs[2]}


 S1954C3_nt ::~S1954C3_nt(){ note_dtor("S1954C3_nt", this);}
void  S1954C3_nt ::v5(){vfunc_called(this, "_ZN10S1954C3_nt2v5Ev");}
S1954C3_nt ::S1954C3_nt(){ note_ctor("S1954C3_nt", this);} // tgen

//skip512 S1954C3_nt

#else // __cplusplus

extern void _ZN10S1954C3_ntC1Ev();
extern void _ZN10S1954C3_ntD1Ev();
Name_Map name_map_S1954C3_nt[] = {
  NSPAIR(_ZN10S1954C3_ntC1Ev),
  NSPAIR(_ZN10S1954C3_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1868C4_nt;
extern VTBL_ENTRY _ZTI10S1868C4_nt[];
extern  VTBL_ENTRY _ZTV10S1868C4_nt[];
static Base_Class bases_S1954C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1868C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S1954C3_nt[];
extern void _ZN10S1954C3_ntD1Ev();
extern void _ZN10S1954C3_ntD0Ev();
extern void _ZN10S1954C3_nt2v5Ev();
static  VTBL_ENTRY vtc_S1954C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S1954C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S1954C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S1954C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S1954C3_nt2v5Ev,
};
extern VTBL_ENTRY _ZTI10S1954C3_nt[];
VTBL_ENTRY *P__ZTI10S1954C3_nt = _ZTI10S1954C3_nt; 
extern  VTBL_ENTRY _ZTV10S1954C3_nt[];
Class_Descriptor cd_S1954C3_nt = {  "S1954C3_nt", // class name
  bases_S1954C3_nt, 1,
  &(vtc_S1954C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI10S1954C3_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S1954C3_nt),5, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1954C2  : S1954C3_nt {
  ::S40C35_nt s1954c2f0;
  virtual void  v6(); // _ZN7S1954C22v6Ev
  virtual void  v7(); // _ZN7S1954C22v7Ev
  virtual void  v8(); // _ZN7S1954C22v8Ev
  virtual void  v9(); // _ZN7S1954C22v9Ev
  ~S1954C2(); // tgen
  S1954C2(); // tgen
};
//SIG(-1 S1954C2) C1{ BC2{ BC3{ vd m} vd v5 Fs[2]} v1 v2 v3 v4 FC4{ m Fi[4]}}


void  S1954C2 ::v6(){vfunc_called(this, "_ZN7S1954C22v6Ev");}
void  S1954C2 ::v7(){vfunc_called(this, "_ZN7S1954C22v7Ev");}
void  S1954C2 ::v8(){vfunc_called(this, "_ZN7S1954C22v8Ev");}
void  S1954C2 ::v9(){vfunc_called(this, "_ZN7S1954C22v9Ev");}
S1954C2 ::~S1954C2(){ note_dtor("S1954C2", this);} // tgen
S1954C2 ::S1954C2(){ note_ctor("S1954C2", this);} // tgen

static void Test_S1954C2()
{
  extern Class_Descriptor cd_S1954C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,7)];
    init_test(&cd_S1954C2, buf);
    S1954C2 *dp, &lv = *(dp=new (buf) S1954C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S1954C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1954C2)");
    check_base_class_offset(lv, (S1868C4_nt*)(S1954C3_nt*), 0, "S1954C2");
    check_base_class_offset(lv, (S1954C3_nt*), 0, "S1954C2");
    check_field_offset(lv, s1954c2f0, ABISELECT(12,8), "S1954C2.s1954c2f0");
    test_class_info(&lv, &cd_S1954C2);
    dp->~S1954C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1954C2(Test_S1954C2, "S1954C2", ABISELECT(32,24));

#else // __cplusplus

extern void _ZN7S1954C2C1Ev();
extern void _ZN7S1954C2D1Ev();
Name_Map name_map_S1954C2[] = {
  NSPAIR(_ZN7S1954C2C1Ev),
  NSPAIR(_ZN7S1954C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1868C4_nt;
extern VTBL_ENTRY _ZTI10S1868C4_nt[];
extern  VTBL_ENTRY _ZTV10S1868C4_nt[];
extern Class_Descriptor cd_S1954C3_nt;
extern VTBL_ENTRY _ZTI10S1954C3_nt[];
extern  VTBL_ENTRY _ZTV10S1954C3_nt[];
static Base_Class bases_S1954C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1868C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1954C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1954C2[];
extern void _ZN7S1954C2D1Ev();
extern void _ZN7S1954C2D0Ev();
extern void _ZN10S1954C3_nt2v5Ev();
extern void _ZN7S1954C22v6Ev();
extern void _ZN7S1954C22v7Ev();
extern void _ZN7S1954C22v8Ev();
extern void _ZN7S1954C22v9Ev();
static  VTBL_ENTRY vtc_S1954C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1954C2[0]),
  (VTBL_ENTRY)&_ZN7S1954C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1954C2D0Ev,
  (VTBL_ENTRY)&_ZN10S1954C3_nt2v5Ev,
  (VTBL_ENTRY)&_ZN7S1954C22v6Ev,
  (VTBL_ENTRY)&_ZN7S1954C22v7Ev,
  (VTBL_ENTRY)&_ZN7S1954C22v8Ev,
  (VTBL_ENTRY)&_ZN7S1954C22v9Ev,
};
extern VTBL_ENTRY _ZTI7S1954C2[];
extern  VTBL_ENTRY _ZTV7S1954C2[];
Class_Descriptor cd_S1954C2 = {  "S1954C2", // class name
  bases_S1954C2, 2,
  &(vtc_S1954C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,24), // object size
  NSPAIRA(_ZTI7S1954C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1954C2),9, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1954C6_nt  {
  int s1954c6f0;
  short s1954c6f1[2];
  void  mf1954c6(); // _ZN10S1954C6_nt8mf1954c6Ev
};
//SIG(-1 S1954C6_nt) C1{ m Fi Fs[2]}


void  S1954C6_nt ::mf1954c6(){}

//skip512 S1954C6_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1954C10_nt  {
  void *s1954c10f0;
  int s1954c10f1[2];
  void  mf1954c10(); // _ZN11S1954C10_nt9mf1954c10Ev
};
//SIG(-1 S1954C10_nt) C1{ m Fp Fi[2]}


void  S1954C10_nt ::mf1954c10(){}

//skip512 S1954C10_nt

#else // __cplusplus

Class_Descriptor cd_S1954C10_nt = {  "S1954C10_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(16,12), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1954C9  : S1954C10_nt {
  __tsi64 s1954c9f0;
};
//SIG(-1 S1954C9) C1{ BC2{ m Fp Fi[2]} FL}



static void Test_S1954C9()
{
  extern Class_Descriptor cd_S1954C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,6)];
    init_test(&cd_S1954C9, buf);
    S1954C9 &lv = *(new (buf) S1954C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S1954C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1954C9)");
    check_base_class_offset(lv, (S1954C10_nt*), 0, "S1954C9");
    check_field_offset(lv, s1954c9f0, ABISELECT(16,12), "S1954C9.s1954c9f0");
    test_class_info(&lv, &cd_S1954C9);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1954C9(Test_S1954C9, "S1954C9", ABISELECT(24,20));

#else // __cplusplus

extern Class_Descriptor cd_S1954C10_nt;
static Base_Class bases_S1954C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1954C10_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S1954C9 = {  "S1954C9", // class name
  bases_S1954C9, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(24,20), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1954C8  {
  ::S1954C9 s1954c8f0;
  int s1954c8f1;
  short s1954c8f2[2];
  void  mf1954c8(); // _ZN7S1954C88mf1954c8Ev
};
//SIG(-1 S1954C8) C1{ m FC2{ BC3{ m Fp Fi[2]} FL} Fi Fs[2]}


void  S1954C8 ::mf1954c8(){}

static void Test_S1954C8()
{
  {
    init_simple_test("S1954C8");
    S1954C8 lv;
    check2(sizeof(lv), ABISELECT(32,28), "sizeof(S1954C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1954C8)");
    check_field_offset(lv, s1954c8f0, 0, "S1954C8.s1954c8f0");
    check_field_offset(lv, s1954c8f1, ABISELECT(24,20), "S1954C8.s1954c8f1");
    check_field_offset(lv, s1954c8f2, ABISELECT(28,24), "S1954C8.s1954c8f2");
  }
}
static Arrange_To_Call_Me vS1954C8(Test_S1954C8, "S1954C8", ABISELECT(32,28));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1954C11  {
  void *s1954c11f0;
  int s1954c11f1[2];
  void  mf1954c11(); // _ZN8S1954C119mf1954c11Ev
};
//SIG(-1 S1954C11) C1{ m Fp Fi[2]}


void  S1954C11 ::mf1954c11(){}

static void Test_S1954C11()
{
  {
    init_simple_test("S1954C11");
    S1954C11 lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S1954C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1954C11)");
    check_field_offset(lv, s1954c11f0, 0, "S1954C11.s1954c11f0");
    check_field_offset(lv, s1954c11f1, ABISELECT(8,4), "S1954C11.s1954c11f1");
  }
}
static Arrange_To_Call_Me vS1954C11(Test_S1954C11, "S1954C11", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1954C1  : S1954C2 {
  void *s1954c1f0;
  int s1954c1f1;
  short s1954c1f2[2];
  char s1954c1f3[3];
  char s1954c1f4:2;
  char s1954c1f5:2;
  char s1954c1f6:2;
  char s1954c1f7:2;
  char s1954c1f8:2;
  char s1954c1f9:2;
  char s1954c1f10:2;
  ::S1954C6_nt s1954c1f11;
  int s1954c1f12[2];
  ::S40C12_nt s1954c1f13;
  ::S1954C8 s1954c1f14;
  ::S1954C11 s1954c1f15;
  int s1954c1f16;
  virtual  ~S1954C1(); // _ZN7S1954C1D1Ev
  virtual void  v1(); // _ZN7S1954C12v1Ev
  virtual void  v2(); // _ZN7S1954C12v2Ev
  virtual void  v3(); // _ZN7S1954C12v3Ev
  virtual void  v4(); // _ZN7S1954C12v4Ev
  S1954C1(); // tgen
};
//SIG(1 S1954C1) C1{ BC2{ BC3{ BC4{ vd m} vd v5 Fs[2]} v6 v7 v8 v9 FC5{ m Fi[4]}} vd v1 v2 v3 v4 Fp Fi Fs[2] Fc[3] Fc:2 Fc:2 Fc:2 Fc:2 Fc:2 Fc:2 Fc:2 FC6{ m Fi Fs[2]} Fi[2] FC7{ m Fp Fi[2]} FC8{ m FC9{ BC10{ m Fp Fi[2]} FL} Fi Fs[2]} FC11{ m Fp Fi[2]} Fi}


 S1954C1 ::~S1954C1(){ note_dtor("S1954C1", this);}
void  S1954C1 ::v1(){vfunc_called(this, "_ZN7S1954C12v1Ev");}
void  S1954C1 ::v2(){vfunc_called(this, "_ZN7S1954C12v2Ev");}
void  S1954C1 ::v3(){vfunc_called(this, "_ZN7S1954C12v3Ev");}
void  S1954C1 ::v4(){vfunc_called(this, "_ZN7S1954C12v4Ev");}
S1954C1 ::S1954C1(){ note_ctor("S1954C1", this);} // tgen

static void Test_S1954C1()
{
  extern Class_Descriptor cd_S1954C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,30)];
    init_test(&cd_S1954C1, buf);
    S1954C1 *dp, &lv = *(dp=new (buf) S1954C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,116), "sizeof(S1954C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1954C1)");
    check_base_class_offset(lv, (S1868C4_nt*)(S1954C3_nt*)(S1954C2*), 0, "S1954C1");
    check_base_class_offset(lv, (S1954C3_nt*)(S1954C2*), 0, "S1954C1");
    check_base_class_offset(lv, (S1954C2*), 0, "S1954C1");
    check_field_offset(lv, s1954c1f0, ABISELECT(32,24), "S1954C1.s1954c1f0");
    check_field_offset(lv, s1954c1f1, ABISELECT(40,28), "S1954C1.s1954c1f1");
    check_field_offset(lv, s1954c1f2, ABISELECT(44,32), "S1954C1.s1954c1f2");
    check_field_offset(lv, s1954c1f3, ABISELECT(48,36), "S1954C1.s1954c1f3");
    set_bf_and_test(lv, s1954c1f4, ABISELECT(51,39), 0, 2, 1, "S1954C1");
    set_bf_and_test(lv, s1954c1f4, ABISELECT(51,39), 0, 2, hide_sll(1LL<<1), "S1954C1");
    set_bf_and_test(lv, s1954c1f5, ABISELECT(51,39), 2, 2, 1, "S1954C1");
    set_bf_and_test(lv, s1954c1f5, ABISELECT(51,39), 2, 2, hide_sll(1LL<<1), "S1954C1");
    set_bf_and_test(lv, s1954c1f6, ABISELECT(51,39), 4, 2, 1, "S1954C1");
    set_bf_and_test(lv, s1954c1f6, ABISELECT(51,39), 4, 2, hide_sll(1LL<<1), "S1954C1");
    set_bf_and_test(lv, s1954c1f7, ABISELECT(51,39), 6, 2, 1, "S1954C1");
    set_bf_and_test(lv, s1954c1f7, ABISELECT(51,39), 6, 2, hide_sll(1LL<<1), "S1954C1");
    set_bf_and_test(lv, s1954c1f8, ABISELECT(52,40), 0, 2, 1, "S1954C1");
    set_bf_and_test(lv, s1954c1f8, ABISELECT(52,40), 0, 2, hide_sll(1LL<<1), "S1954C1");
    set_bf_and_test(lv, s1954c1f9, ABISELECT(52,40), 2, 2, 1, "S1954C1");
    set_bf_and_test(lv, s1954c1f9, ABISELECT(52,40), 2, 2, hide_sll(1LL<<1), "S1954C1");
    set_bf_and_test(lv, s1954c1f10, ABISELECT(52,40), 4, 2, 1, "S1954C1");
    set_bf_and_test(lv, s1954c1f10, ABISELECT(52,40), 4, 2, hide_sll(1LL<<1), "S1954C1");
    check_field_offset(lv, s1954c1f11, ABISELECT(56,44), "S1954C1.s1954c1f11");
    check_field_offset(lv, s1954c1f12, ABISELECT(64,52), "S1954C1.s1954c1f12");
    check_field_offset(lv, s1954c1f13, ABISELECT(72,60), "S1954C1.s1954c1f13");
    check_field_offset(lv, s1954c1f14, ABISELECT(88,72), "S1954C1.s1954c1f14");
    check_field_offset(lv, s1954c1f15, ABISELECT(120,100), "S1954C1.s1954c1f15");
    check_field_offset(lv, s1954c1f16, ABISELECT(136,112), "S1954C1.s1954c1f16");
    test_class_info(&lv, &cd_S1954C1);
    dp->~S1954C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1954C1(Test_S1954C1, "S1954C1", ABISELECT(144,116));

#else // __cplusplus

extern void _ZN7S1954C1C1Ev();
extern void _ZN7S1954C1D1Ev();
Name_Map name_map_S1954C1[] = {
  NSPAIR(_ZN7S1954C1C1Ev),
  NSPAIR(_ZN7S1954C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1868C4_nt;
extern VTBL_ENTRY _ZTI10S1868C4_nt[];
extern  VTBL_ENTRY _ZTV10S1868C4_nt[];
extern Class_Descriptor cd_S1954C3_nt;
extern VTBL_ENTRY _ZTI10S1954C3_nt[];
extern  VTBL_ENTRY _ZTV10S1954C3_nt[];
extern Class_Descriptor cd_S1954C2;
extern VTBL_ENTRY _ZTI7S1954C2[];
extern  VTBL_ENTRY _ZTV7S1954C2[];
static Base_Class bases_S1954C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1868C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1954C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S1954C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1954C1[];
extern void _ZN7S1954C1D1Ev();
extern void _ZN7S1954C1D0Ev();
extern void _ZN10S1954C3_nt2v5Ev();
extern void _ZN7S1954C22v6Ev();
extern void _ZN7S1954C22v7Ev();
extern void _ZN7S1954C22v8Ev();
extern void _ZN7S1954C22v9Ev();
extern void _ZN7S1954C12v1Ev();
extern void _ZN7S1954C12v2Ev();
extern void _ZN7S1954C12v3Ev();
extern void _ZN7S1954C12v4Ev();
static  VTBL_ENTRY vtc_S1954C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1954C1[0]),
  (VTBL_ENTRY)&_ZN7S1954C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1954C1D0Ev,
  (VTBL_ENTRY)&_ZN10S1954C3_nt2v5Ev,
  (VTBL_ENTRY)&_ZN7S1954C22v6Ev,
  (VTBL_ENTRY)&_ZN7S1954C22v7Ev,
  (VTBL_ENTRY)&_ZN7S1954C22v8Ev,
  (VTBL_ENTRY)&_ZN7S1954C22v9Ev,
  (VTBL_ENTRY)&_ZN7S1954C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1954C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1954C12v3Ev,
  (VTBL_ENTRY)&_ZN7S1954C12v4Ev,
};
extern VTBL_ENTRY _ZTI7S1954C1[];
extern  VTBL_ENTRY _ZTV7S1954C1[];
Class_Descriptor cd_S1954C1 = {  "S1954C1", // class name
  bases_S1954C1, 3,
  &(vtc_S1954C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,116), // object size
  NSPAIRA(_ZTI7S1954C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1954C1),13, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1953C3  : S1868C4_nt {
  short s1953c3f0[2];
  virtual  ~S1953C3(); // _ZN7S1953C3D1Ev
  virtual void  v5(); // _ZN7S1953C32v5Ev
  S1953C3(); // tgen
};
//SIG(-1 S1953C3) C1{ BC2{ vd m} vd v1 Fs[2]}


 S1953C3 ::~S1953C3(){ note_dtor("S1953C3", this);}
void  S1953C3 ::v5(){vfunc_called(this, "_ZN7S1953C32v5Ev");}
S1953C3 ::S1953C3(){ note_ctor("S1953C3", this);} // tgen

static void Test_S1953C3()
{
  extern Class_Descriptor cd_S1953C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S1953C3, buf);
    S1953C3 *dp, &lv = *(dp=new (buf) S1953C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S1953C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1953C3)");
    check_base_class_offset(lv, (S1868C4_nt*), 0, "S1953C3");
    check_field_offset(lv, s1953c3f0, ABISELECT(8,4), "S1953C3.s1953c3f0");
    test_class_info(&lv, &cd_S1953C3);
    dp->~S1953C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1953C3(Test_S1953C3, "S1953C3", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S1953C3C1Ev();
extern void _ZN7S1953C3D1Ev();
Name_Map name_map_S1953C3[] = {
  NSPAIR(_ZN7S1953C3C1Ev),
  NSPAIR(_ZN7S1953C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1868C4_nt;
extern VTBL_ENTRY _ZTI10S1868C4_nt[];
extern  VTBL_ENTRY _ZTV10S1868C4_nt[];
static Base_Class bases_S1953C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1868C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1953C3[];
extern void _ZN7S1953C3D1Ev();
extern void _ZN7S1953C3D0Ev();
extern void _ZN7S1953C32v5Ev();
static  VTBL_ENTRY vtc_S1953C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1953C3[0]),
  (VTBL_ENTRY)&_ZN7S1953C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1953C3D0Ev,
  (VTBL_ENTRY)&_ZN7S1953C32v5Ev,
};
extern VTBL_ENTRY _ZTI7S1953C3[];
extern  VTBL_ENTRY _ZTV7S1953C3[];
Class_Descriptor cd_S1953C3 = {  "S1953C3", // class name
  bases_S1953C3, 1,
  &(vtc_S1953C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S1953C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1953C3),5, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1953C2  : S1953C3 {
  ::S40C35_nt s1953c2f0;
  virtual void  v6(); // _ZN7S1953C22v6Ev
  virtual void  v7(); // _ZN7S1953C22v7Ev
  virtual void  v8(); // _ZN7S1953C22v8Ev
  virtual void  v9(); // _ZN7S1953C22v9Ev
  ~S1953C2(); // tgen
  S1953C2(); // tgen
};
//SIG(-1 S1953C2) C1{ BC2{ BC3{ vd m} vd v5 Fs[2]} v1 v2 v3 v4 FC4{ m Fi[4]}}


void  S1953C2 ::v6(){vfunc_called(this, "_ZN7S1953C22v6Ev");}
void  S1953C2 ::v7(){vfunc_called(this, "_ZN7S1953C22v7Ev");}
void  S1953C2 ::v8(){vfunc_called(this, "_ZN7S1953C22v8Ev");}
void  S1953C2 ::v9(){vfunc_called(this, "_ZN7S1953C22v9Ev");}
S1953C2 ::~S1953C2(){ note_dtor("S1953C2", this);} // tgen
S1953C2 ::S1953C2(){ note_ctor("S1953C2", this);} // tgen

static void Test_S1953C2()
{
  extern Class_Descriptor cd_S1953C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,7)];
    init_test(&cd_S1953C2, buf);
    S1953C2 *dp, &lv = *(dp=new (buf) S1953C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S1953C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1953C2)");
    check_base_class_offset(lv, (S1868C4_nt*)(S1953C3*), 0, "S1953C2");
    check_base_class_offset(lv, (S1953C3*), 0, "S1953C2");
    check_field_offset(lv, s1953c2f0, ABISELECT(12,8), "S1953C2.s1953c2f0");
    test_class_info(&lv, &cd_S1953C2);
    dp->~S1953C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1953C2(Test_S1953C2, "S1953C2", ABISELECT(32,24));

#else // __cplusplus

extern void _ZN7S1953C2C1Ev();
extern void _ZN7S1953C2D1Ev();
Name_Map name_map_S1953C2[] = {
  NSPAIR(_ZN7S1953C2C1Ev),
  NSPAIR(_ZN7S1953C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1868C4_nt;
extern VTBL_ENTRY _ZTI10S1868C4_nt[];
extern  VTBL_ENTRY _ZTV10S1868C4_nt[];
extern Class_Descriptor cd_S1953C3;
extern VTBL_ENTRY _ZTI7S1953C3[];
extern  VTBL_ENTRY _ZTV7S1953C3[];
static Base_Class bases_S1953C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1868C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1953C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1953C2[];
extern void _ZN7S1953C2D1Ev();
extern void _ZN7S1953C2D0Ev();
extern void _ZN7S1953C32v5Ev();
extern void _ZN7S1953C22v6Ev();
extern void _ZN7S1953C22v7Ev();
extern void _ZN7S1953C22v8Ev();
extern void _ZN7S1953C22v9Ev();
static  VTBL_ENTRY vtc_S1953C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1953C2[0]),
  (VTBL_ENTRY)&_ZN7S1953C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1953C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1953C32v5Ev,
  (VTBL_ENTRY)&_ZN7S1953C22v6Ev,
  (VTBL_ENTRY)&_ZN7S1953C22v7Ev,
  (VTBL_ENTRY)&_ZN7S1953C22v8Ev,
  (VTBL_ENTRY)&_ZN7S1953C22v9Ev,
};
extern VTBL_ENTRY _ZTI7S1953C2[];
extern  VTBL_ENTRY _ZTV7S1953C2[];
Class_Descriptor cd_S1953C2 = {  "S1953C2", // class name
  bases_S1953C2, 2,
  &(vtc_S1953C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,24), // object size
  NSPAIRA(_ZTI7S1953C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1953C2),9, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1953C9  : S1954C10_nt {
  int s1953c9f0;
};
//SIG(-1 S1953C9) C1{ BC2{ m Fp Fi[2]} Fi}



static void Test_S1953C9()
{
  extern Class_Descriptor cd_S1953C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S1953C9, buf);
    S1953C9 &lv = *(new (buf) S1953C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S1953C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1953C9)");
    check_base_class_offset(lv, (S1954C10_nt*), 0, "S1953C9");
    check_field_offset(lv, s1953c9f0, ABISELECT(16,12), "S1953C9.s1953c9f0");
    test_class_info(&lv, &cd_S1953C9);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1953C9(Test_S1953C9, "S1953C9", ABISELECT(24,16));

#else // __cplusplus

extern Class_Descriptor cd_S1954C10_nt;
static Base_Class bases_S1953C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1954C10_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S1953C9 = {  "S1953C9", // class name
  bases_S1953C9, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(24,16), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1953C8  {
  ::S1953C9 s1953c8f0;
  int s1953c8f1;
  short s1953c8f2[2];
  void  mf1953c8(); // _ZN7S1953C88mf1953c8Ev
};
//SIG(-1 S1953C8) C1{ m FC2{ BC3{ m Fp Fi[2]} Fi} Fi Fs[2]}


void  S1953C8 ::mf1953c8(){}

static void Test_S1953C8()
{
  {
    init_simple_test("S1953C8");
    S1953C8 lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S1953C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1953C8)");
    check_field_offset(lv, s1953c8f0, 0, "S1953C8.s1953c8f0");
    check_field_offset(lv, s1953c8f1, ABISELECT(24,16), "S1953C8.s1953c8f1");
    check_field_offset(lv, s1953c8f2, ABISELECT(28,20), "S1953C8.s1953c8f2");
  }
}
static Arrange_To_Call_Me vS1953C8(Test_S1953C8, "S1953C8", ABISELECT(32,24));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1953C1  : S1953C2 {
  void *s1953c1f0;
  int s1953c1f1;
  short s1953c1f2[2];
  char s1953c1f3[3];
  char s1953c1f4:2;
  char s1953c1f5:2;
  char s1953c1f6:2;
  char s1953c1f7:2;
  char s1953c1f8:2;
  char s1953c1f9:2;
  char s1953c1f10:2;
  ::S1954C6_nt s1953c1f11;
  int s1953c1f12[2];
  ::S1954C11 s1953c1f13;
  ::S1953C8 s1953c1f14;
  ::S40C12_nt s1953c1f15;
  int s1953c1f16;
  virtual  ~S1953C1(); // _ZN7S1953C1D1Ev
  virtual void  v1(); // _ZN7S1953C12v1Ev
  virtual void  v2(); // _ZN7S1953C12v2Ev
  virtual void  v3(); // _ZN7S1953C12v3Ev
  virtual void  v4(); // _ZN7S1953C12v4Ev
  S1953C1(); // tgen
};
//SIG(1 S1953C1) C1{ BC2{ BC3{ BC4{ vd m} vd v5 Fs[2]} v6 v7 v8 v9 FC5{ m Fi[4]}} vd v1 v2 v3 v4 Fp Fi Fs[2] Fc[3] Fc:2 Fc:2 Fc:2 Fc:2 Fc:2 Fc:2 Fc:2 FC6{ m Fi Fs[2]} Fi[2] FC7{ m Fp Fi[2]} FC8{ m FC9{ BC10{ m Fp Fi[2]} Fi} Fi Fs[2]} FC11{ m Fp Fi[2]} Fi}


 S1953C1 ::~S1953C1(){ note_dtor("S1953C1", this);}
void  S1953C1 ::v1(){vfunc_called(this, "_ZN7S1953C12v1Ev");}
void  S1953C1 ::v2(){vfunc_called(this, "_ZN7S1953C12v2Ev");}
void  S1953C1 ::v3(){vfunc_called(this, "_ZN7S1953C12v3Ev");}
void  S1953C1 ::v4(){vfunc_called(this, "_ZN7S1953C12v4Ev");}
S1953C1 ::S1953C1(){ note_ctor("S1953C1", this);} // tgen

static void Test_S1953C1()
{
  extern Class_Descriptor cd_S1953C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,29)];
    init_test(&cd_S1953C1, buf);
    S1953C1 *dp, &lv = *(dp=new (buf) S1953C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,112), "sizeof(S1953C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1953C1)");
    check_base_class_offset(lv, (S1868C4_nt*)(S1953C3*)(S1953C2*), 0, "S1953C1");
    check_base_class_offset(lv, (S1953C3*)(S1953C2*), 0, "S1953C1");
    check_base_class_offset(lv, (S1953C2*), 0, "S1953C1");
    check_field_offset(lv, s1953c1f0, ABISELECT(32,24), "S1953C1.s1953c1f0");
    check_field_offset(lv, s1953c1f1, ABISELECT(40,28), "S1953C1.s1953c1f1");
    check_field_offset(lv, s1953c1f2, ABISELECT(44,32), "S1953C1.s1953c1f2");
    check_field_offset(lv, s1953c1f3, ABISELECT(48,36), "S1953C1.s1953c1f3");
    set_bf_and_test(lv, s1953c1f4, ABISELECT(51,39), 0, 2, 1, "S1953C1");
    set_bf_and_test(lv, s1953c1f4, ABISELECT(51,39), 0, 2, hide_sll(1LL<<1), "S1953C1");
    set_bf_and_test(lv, s1953c1f5, ABISELECT(51,39), 2, 2, 1, "S1953C1");
    set_bf_and_test(lv, s1953c1f5, ABISELECT(51,39), 2, 2, hide_sll(1LL<<1), "S1953C1");
    set_bf_and_test(lv, s1953c1f6, ABISELECT(51,39), 4, 2, 1, "S1953C1");
    set_bf_and_test(lv, s1953c1f6, ABISELECT(51,39), 4, 2, hide_sll(1LL<<1), "S1953C1");
    set_bf_and_test(lv, s1953c1f7, ABISELECT(51,39), 6, 2, 1, "S1953C1");
    set_bf_and_test(lv, s1953c1f7, ABISELECT(51,39), 6, 2, hide_sll(1LL<<1), "S1953C1");
    set_bf_and_test(lv, s1953c1f8, ABISELECT(52,40), 0, 2, 1, "S1953C1");
    set_bf_and_test(lv, s1953c1f8, ABISELECT(52,40), 0, 2, hide_sll(1LL<<1), "S1953C1");
    set_bf_and_test(lv, s1953c1f9, ABISELECT(52,40), 2, 2, 1, "S1953C1");
    set_bf_and_test(lv, s1953c1f9, ABISELECT(52,40), 2, 2, hide_sll(1LL<<1), "S1953C1");
    set_bf_and_test(lv, s1953c1f10, ABISELECT(52,40), 4, 2, 1, "S1953C1");
    set_bf_and_test(lv, s1953c1f10, ABISELECT(52,40), 4, 2, hide_sll(1LL<<1), "S1953C1");
    check_field_offset(lv, s1953c1f11, ABISELECT(56,44), "S1953C1.s1953c1f11");
    check_field_offset(lv, s1953c1f12, ABISELECT(64,52), "S1953C1.s1953c1f12");
    check_field_offset(lv, s1953c1f13, ABISELECT(72,60), "S1953C1.s1953c1f13");
    check_field_offset(lv, s1953c1f14, ABISELECT(88,72), "S1953C1.s1953c1f14");
    check_field_offset(lv, s1953c1f15, ABISELECT(120,96), "S1953C1.s1953c1f15");
    check_field_offset(lv, s1953c1f16, ABISELECT(136,108), "S1953C1.s1953c1f16");
    test_class_info(&lv, &cd_S1953C1);
    dp->~S1953C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1953C1(Test_S1953C1, "S1953C1", ABISELECT(144,112));

#else // __cplusplus

extern void _ZN7S1953C1C1Ev();
extern void _ZN7S1953C1D1Ev();
Name_Map name_map_S1953C1[] = {
  NSPAIR(_ZN7S1953C1C1Ev),
  NSPAIR(_ZN7S1953C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1868C4_nt;
extern VTBL_ENTRY _ZTI10S1868C4_nt[];
extern  VTBL_ENTRY _ZTV10S1868C4_nt[];
extern Class_Descriptor cd_S1953C3;
extern VTBL_ENTRY _ZTI7S1953C3[];
extern  VTBL_ENTRY _ZTV7S1953C3[];
extern Class_Descriptor cd_S1953C2;
extern VTBL_ENTRY _ZTI7S1953C2[];
extern  VTBL_ENTRY _ZTV7S1953C2[];
static Base_Class bases_S1953C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1868C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1953C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S1953C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1953C1[];
extern void _ZN7S1953C1D1Ev();
extern void _ZN7S1953C1D0Ev();
extern void _ZN7S1953C32v5Ev();
extern void _ZN7S1953C22v6Ev();
extern void _ZN7S1953C22v7Ev();
extern void _ZN7S1953C22v8Ev();
extern void _ZN7S1953C22v9Ev();
extern void _ZN7S1953C12v1Ev();
extern void _ZN7S1953C12v2Ev();
extern void _ZN7S1953C12v3Ev();
extern void _ZN7S1953C12v4Ev();
static  VTBL_ENTRY vtc_S1953C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1953C1[0]),
  (VTBL_ENTRY)&_ZN7S1953C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1953C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1953C32v5Ev,
  (VTBL_ENTRY)&_ZN7S1953C22v6Ev,
  (VTBL_ENTRY)&_ZN7S1953C22v7Ev,
  (VTBL_ENTRY)&_ZN7S1953C22v8Ev,
  (VTBL_ENTRY)&_ZN7S1953C22v9Ev,
  (VTBL_ENTRY)&_ZN7S1953C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1953C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1953C12v3Ev,
  (VTBL_ENTRY)&_ZN7S1953C12v4Ev,
};
extern VTBL_ENTRY _ZTI7S1953C1[];
extern  VTBL_ENTRY _ZTV7S1953C1[];
Class_Descriptor cd_S1953C1 = {  "S1953C1", // class name
  bases_S1953C1, 3,
  &(vtc_S1953C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,112), // object size
  NSPAIRA(_ZTI7S1953C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1953C1),13, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1113C3_nt  : S40C13_nt {
};
//SIG(-1 S1113C3_nt) C1{ BC2{ m Fi}}



//skip512 S1113C3_nt

#else // __cplusplus

extern Class_Descriptor cd_S40C13_nt;
extern VTBL_ENTRY _ZTI9S40C13_nt[];
static Base_Class bases_S1113C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S1113C3_nt[];
VTBL_ENTRY *P__ZTI10S1113C3_nt = _ZTI10S1113C3_nt; 
Class_Descriptor cd_S1113C3_nt = {  "S1113C3_nt", // class name
  bases_S1113C3_nt, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  NSPAIRA(_ZTI10S1113C3_nt),ABISELECT(24,12), //typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1113C2  : S1113C3_nt {
  virtual  ~S1113C2(); // _ZN7S1113C2D1Ev
  virtual void  v6(); // _ZN7S1113C22v6Ev
  virtual void  v7(); // _ZN7S1113C22v7Ev
  virtual void  v8(); // _ZN7S1113C22v8Ev
  virtual void  v9(); // _ZN7S1113C22v9Ev
  virtual void  v10(); // _ZN7S1113C23v10Ev
  S1113C2(); // tgen
};
//SIG(-1 S1113C2) C1{ BC2{ BC3{ m Fi}} vd v1 v2 v3 v4 v5}


 S1113C2 ::~S1113C2(){ note_dtor("S1113C2", this);}
void  S1113C2 ::v6(){vfunc_called(this, "_ZN7S1113C22v6Ev");}
void  S1113C2 ::v7(){vfunc_called(this, "_ZN7S1113C22v7Ev");}
void  S1113C2 ::v8(){vfunc_called(this, "_ZN7S1113C22v8Ev");}
void  S1113C2 ::v9(){vfunc_called(this, "_ZN7S1113C22v9Ev");}
void  S1113C2 ::v10(){vfunc_called(this, "_ZN7S1113C23v10Ev");}
S1113C2 ::S1113C2(){ note_ctor("S1113C2", this);} // tgen

static void Test_S1113C2()
{
  extern Class_Descriptor cd_S1113C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S1113C2, buf);
    S1113C2 *dp, &lv = *(dp=new (buf) S1113C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S1113C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1113C2)");
    check_base_class_offset(lv, (S40C13_nt*)(S1113C3_nt*), ABISELECT(8,4), "S1113C2");
    check_base_class_offset(lv, (S1113C3_nt*), ABISELECT(8,4), "S1113C2");
    test_class_info(&lv, &cd_S1113C2);
    dp->~S1113C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1113C2(Test_S1113C2, "S1113C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S1113C2C1Ev();
extern void _ZN7S1113C2D1Ev();
Name_Map name_map_S1113C2[] = {
  NSPAIR(_ZN7S1113C2C1Ev),
  NSPAIR(_ZN7S1113C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S40C13_nt;
extern VTBL_ENTRY _ZTI9S40C13_nt[];
extern Class_Descriptor cd_S1113C3_nt;
extern VTBL_ENTRY _ZTI10S1113C3_nt[];
static Base_Class bases_S1113C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C13_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1113C3_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1113C2[];
extern void _ZN7S1113C2D1Ev();
extern void _ZN7S1113C2D0Ev();
extern void _ZN7S1113C22v6Ev();
extern void _ZN7S1113C22v7Ev();
extern void _ZN7S1113C22v8Ev();
extern void _ZN7S1113C22v9Ev();
extern void _ZN7S1113C23v10Ev();
static  VTBL_ENTRY vtc_S1113C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1113C2[0]),
  (VTBL_ENTRY)&_ZN7S1113C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1113C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1113C22v6Ev,
  (VTBL_ENTRY)&_ZN7S1113C22v7Ev,
  (VTBL_ENTRY)&_ZN7S1113C22v8Ev,
  (VTBL_ENTRY)&_ZN7S1113C22v9Ev,
  (VTBL_ENTRY)&_ZN7S1113C23v10Ev,
};
extern VTBL_ENTRY _ZTI7S1113C2[];
extern  VTBL_ENTRY _ZTV7S1113C2[];
Class_Descriptor cd_S1113C2 = {  "S1113C2", // class name
  bases_S1113C2, 2,
  &(vtc_S1113C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S1113C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S1113C2),9, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1113C6_nt  {
  void *s1113c6f0;
  int s1113c6f1[4];
  void  mf1113c6(); // _ZN10S1113C6_nt8mf1113c6Ev
};
//SIG(-1 S1113C6_nt) C1{ m Fp Fi[4]}


void  S1113C6_nt ::mf1113c6(){}

//skip512 S1113C6_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1113C5_nt  {
  ::S1113C6_nt s1113c5f0;
  void  mf1113c5(); // _ZN10S1113C5_nt8mf1113c5Ev
};
//SIG(-1 S1113C5_nt) C1{ m FC2{ m Fp Fi[4]}}


void  S1113C5_nt ::mf1113c5(){}

//skip512 S1113C5_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1113C9  {
  ::S1113C6_nt s1113c9f0;
  void  mf1113c9(); // _ZN7S1113C98mf1113c9Ev
};
//SIG(-1 S1113C9) C1{ m FC2{ m Fp Fi[4]}}


void  S1113C9 ::mf1113c9(){}

static void Test_S1113C9()
{
  {
    init_simple_test("S1113C9");
    S1113C9 lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S1113C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1113C9)");
    check_field_offset(lv, s1113c9f0, 0, "S1113C9.s1113c9f0");
  }
}
static Arrange_To_Call_Me vS1113C9(Test_S1113C9, "S1113C9", ABISELECT(24,20));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1113C13_nt  {
  void *s1113c13f0;
  int s1113c13f1;
  void  mf1113c13(); // _ZN11S1113C13_nt9mf1113c13Ev
};
//SIG(-1 S1113C13_nt) C1{ m Fp Fi}


void  S1113C13_nt ::mf1113c13(){}

//skip512 S1113C13_nt

#else // __cplusplus

Class_Descriptor cd_S1113C13_nt = {  "S1113C13_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(16,8), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1113C12_nt  : S1113C13_nt {
};
//SIG(-1 S1113C12_nt) C1{ BC2{ m Fp Fi}}



//skip512 S1113C12_nt

#else // __cplusplus

extern Class_Descriptor cd_S1113C13_nt;
static Base_Class bases_S1113C12_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1113C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1113C11_nt  {
  int s1113c11f0;
  ::S1113C12_nt s1113c11f1;
  void  mf1113c11(); // _ZN11S1113C11_nt9mf1113c11Ev
};
//SIG(-1 S1113C11_nt) C1{ m Fi FC2{ BC3{ m Fp Fi}}}


void  S1113C11_nt ::mf1113c11(){}

//skip512 S1113C11_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1113C15_nt  {
  __tsi64 s1113c15f0[2];
  int s1113c15f1[2];
  virtual  ~S1113C15_nt(); // _ZN11S1113C15_ntD1Ev
  virtual void  v12(); // _ZN11S1113C15_nt3v12Ev
  S1113C15_nt(); // tgen
};
//SIG(-1 S1113C15_nt) C1{ vd v1 FL[2] Fi[2]}


 S1113C15_nt ::~S1113C15_nt(){ note_dtor("S1113C15_nt", this);}
void  S1113C15_nt ::v12(){vfunc_called(this, "_ZN11S1113C15_nt3v12Ev");}
S1113C15_nt ::S1113C15_nt(){ note_ctor("S1113C15_nt", this);} // tgen

//skip512 S1113C15_nt

#else // __cplusplus

extern void _ZN11S1113C15_ntC1Ev();
extern void _ZN11S1113C15_ntD1Ev();
Name_Map name_map_S1113C15_nt[] = {
  NSPAIR(_ZN11S1113C15_ntC1Ev),
  NSPAIR(_ZN11S1113C15_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S1113C15_nt[];
extern void _ZN11S1113C15_ntD1Ev();
extern void _ZN11S1113C15_ntD0Ev();
extern void _ZN11S1113C15_nt3v12Ev();
static  VTBL_ENTRY vtc_S1113C15_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S1113C15_nt[0]),
  (VTBL_ENTRY)&_ZN11S1113C15_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S1113C15_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S1113C15_nt3v12Ev,
};
extern VTBL_ENTRY _ZTI11S1113C15_nt[];
VTBL_ENTRY *P__ZTI11S1113C15_nt = _ZTI11S1113C15_nt; 
extern  VTBL_ENTRY _ZTV11S1113C15_nt[];
Class_Descriptor cd_S1113C15_nt = {  "S1113C15_nt", // class name
  0,0,//no base classes
  &(vtc_S1113C15_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,28), // object size
  NSPAIRA(_ZTI11S1113C15_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S1113C15_nt),5, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1113C14_nt  : S1113C15_nt {
  void *s1113c14f0;
  ::S20291C14_nt s1113c14f1;
  virtual void  v11(); // _ZN11S1113C14_nt3v11Ev
  ~S1113C14_nt(); // tgen
  S1113C14_nt(); // tgen
};
//SIG(-1 S1113C14_nt) C1{ BC2{ vd v2 FL[2] Fi[2]} v1 Fp FC3{}}


void  S1113C14_nt ::v11(){vfunc_called(this, "_ZN11S1113C14_nt3v11Ev");}
S1113C14_nt ::~S1113C14_nt(){ note_dtor("S1113C14_nt", this);} // tgen
S1113C14_nt ::S1113C14_nt(){ note_ctor("S1113C14_nt", this);} // tgen

//skip512 S1113C14_nt

#else // __cplusplus

extern void _ZN11S1113C14_ntC1Ev();
extern void _ZN11S1113C14_ntD1Ev();
Name_Map name_map_S1113C14_nt[] = {
  NSPAIR(_ZN11S1113C14_ntC1Ev),
  NSPAIR(_ZN11S1113C14_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1113C15_nt;
extern VTBL_ENTRY _ZTI11S1113C15_nt[];
extern  VTBL_ENTRY _ZTV11S1113C15_nt[];
static Base_Class bases_S1113C14_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1113C15_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI11S1113C14_nt[];
extern void _ZN11S1113C14_ntD1Ev();
extern void _ZN11S1113C14_ntD0Ev();
extern void _ZN11S1113C15_nt3v12Ev();
extern void _ZN11S1113C14_nt3v11Ev();
static  VTBL_ENTRY vtc_S1113C14_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S1113C14_nt[0]),
  (VTBL_ENTRY)&_ZN11S1113C14_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S1113C14_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S1113C15_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S1113C14_nt3v11Ev,
};
extern VTBL_ENTRY _ZTI11S1113C14_nt[];
VTBL_ENTRY *P__ZTI11S1113C14_nt = _ZTI11S1113C14_nt; 
extern  VTBL_ENTRY _ZTV11S1113C14_nt[];
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1113C1  : S1113C2 {
  void *s1113c1f0;
  ::S1113C5_nt s1113c1f1;
  ::S1113C5_nt s1113c1f2;
  ::S1113C5_nt s1113c1f3;
  ::S1113C9 s1113c1f4;
  ::S1113C11_nt s1113c1f5;
  ::S1113C14_nt s1113c1f6;
  int s1113c1f7;
  virtual  ~S1113C1(); // _ZN7S1113C1D1Ev
  virtual void  v1(); // _ZN7S1113C12v1Ev
  virtual void  v2(); // _ZN7S1113C12v2Ev
  virtual void  v3(); // _ZN7S1113C12v3Ev
  virtual void  v4(); // _ZN7S1113C12v4Ev
  virtual void  v5(); // _ZN7S1113C12v5Ev
  S1113C1(); // tgen
};
//SIG(1 S1113C1) C1{ BC2{ BC3{ BC4{ m Fi}} vd v6 v7 v8 v9 v10} vd v1 v2 v3 v4 v5 Fp FC5{ m FC6{ m Fp Fi[4]}} FC5 FC5 FC7{ m FC6} FC8{ m Fi FC9{ BC10{ m Fp Fi}}} FC11{ BC12{ vd v12 FL[2] Fi[2]} v11 Fp FC13{}} Fi}


 S1113C1 ::~S1113C1(){ note_dtor("S1113C1", this);}
void  S1113C1 ::v1(){vfunc_called(this, "_ZN7S1113C12v1Ev");}
void  S1113C1 ::v2(){vfunc_called(this, "_ZN7S1113C12v2Ev");}
void  S1113C1 ::v3(){vfunc_called(this, "_ZN7S1113C12v3Ev");}
void  S1113C1 ::v4(){vfunc_called(this, "_ZN7S1113C12v4Ev");}
void  S1113C1 ::v5(){vfunc_called(this, "_ZN7S1113C12v5Ev");}
S1113C1 ::S1113C1(){ note_ctor("S1113C1", this);} // tgen

static void Test_S1113C1()
{
  extern Class_Descriptor cd_S1113C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(26,37)];
    init_test(&cd_S1113C1, buf);
    S1113C1 *dp, &lv = *(dp=new (buf) S1113C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(200,144), "sizeof(S1113C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1113C1)");
    check_base_class_offset(lv, (S40C13_nt*)(S1113C3_nt*)(S1113C2*), ABISELECT(8,4), "S1113C1");
    check_base_class_offset(lv, (S1113C3_nt*)(S1113C2*), ABISELECT(8,4), "S1113C1");
    check_base_class_offset(lv, (S1113C2*), 0, "S1113C1");
    check_field_offset(lv, s1113c1f0, ABISELECT(16,8), "S1113C1.s1113c1f0");
    check_field_offset(lv, s1113c1f1, ABISELECT(24,12), "S1113C1.s1113c1f1");
    check_field_offset(lv, s1113c1f2, ABISELECT(48,32), "S1113C1.s1113c1f2");
    check_field_offset(lv, s1113c1f3, ABISELECT(72,52), "S1113C1.s1113c1f3");
    check_field_offset(lv, s1113c1f4, ABISELECT(96,72), "S1113C1.s1113c1f4");
    check_field_offset(lv, s1113c1f5, ABISELECT(120,92), "S1113C1.s1113c1f5");
    check_field_offset(lv, s1113c1f6, ABISELECT(144,104), "S1113C1.s1113c1f6");
    check_field_offset(lv, s1113c1f7, ABISELECT(192,140), "S1113C1.s1113c1f7");
    test_class_info(&lv, &cd_S1113C1);
    dp->~S1113C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1113C1(Test_S1113C1, "S1113C1", ABISELECT(200,144));

#else // __cplusplus

extern void _ZN7S1113C1C1Ev();
extern void _ZN7S1113C1D1Ev();
Name_Map name_map_S1113C1[] = {
  NSPAIR(_ZN7S1113C1C1Ev),
  NSPAIR(_ZN7S1113C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S40C13_nt;
extern VTBL_ENTRY _ZTI9S40C13_nt[];
extern Class_Descriptor cd_S1113C3_nt;
extern VTBL_ENTRY _ZTI10S1113C3_nt[];
extern Class_Descriptor cd_S1113C2;
extern VTBL_ENTRY _ZTI7S1113C2[];
extern  VTBL_ENTRY _ZTV7S1113C2[];
static Base_Class bases_S1113C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C13_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1113C3_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S1113C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1113C1[];
extern void _ZN7S1113C1D1Ev();
extern void _ZN7S1113C1D0Ev();
extern void _ZN7S1113C22v6Ev();
extern void _ZN7S1113C22v7Ev();
extern void _ZN7S1113C22v8Ev();
extern void _ZN7S1113C22v9Ev();
extern void _ZN7S1113C23v10Ev();
extern void _ZN7S1113C12v1Ev();
extern void _ZN7S1113C12v2Ev();
extern void _ZN7S1113C12v3Ev();
extern void _ZN7S1113C12v4Ev();
extern void _ZN7S1113C12v5Ev();
static  VTBL_ENTRY vtc_S1113C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1113C1[0]),
  (VTBL_ENTRY)&_ZN7S1113C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1113C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1113C22v6Ev,
  (VTBL_ENTRY)&_ZN7S1113C22v7Ev,
  (VTBL_ENTRY)&_ZN7S1113C22v8Ev,
  (VTBL_ENTRY)&_ZN7S1113C22v9Ev,
  (VTBL_ENTRY)&_ZN7S1113C23v10Ev,
  (VTBL_ENTRY)&_ZN7S1113C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1113C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1113C12v3Ev,
  (VTBL_ENTRY)&_ZN7S1113C12v4Ev,
  (VTBL_ENTRY)&_ZN7S1113C12v5Ev,
};
extern VTBL_ENTRY _ZTI7S1113C1[];
extern  VTBL_ENTRY _ZTV7S1113C1[];
Class_Descriptor cd_S1113C1 = {  "S1113C1", // class name
  bases_S1113C1, 3,
  &(vtc_S1113C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(200,144), // object size
  NSPAIRA(_ZTI7S1113C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1113C1),14, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2442C4  {
  virtual  ~S2442C4(); // _ZN7S2442C4D1Ev
  virtual void  v9(); // _ZN7S2442C42v9Ev
  virtual void  v10(); // _ZN7S2442C43v10Ev
  virtual void  v11(); // _ZN7S2442C43v11Ev
  S2442C4(); // tgen
};
//SIG(-1 S2442C4) C1{ vd v1 v2 v3}


 S2442C4 ::~S2442C4(){ note_dtor("S2442C4", this);}
void  S2442C4 ::v9(){vfunc_called(this, "_ZN7S2442C42v9Ev");}
void  S2442C4 ::v10(){vfunc_called(this, "_ZN7S2442C43v10Ev");}
void  S2442C4 ::v11(){vfunc_called(this, "_ZN7S2442C43v11Ev");}
S2442C4 ::S2442C4(){ note_ctor("S2442C4", this);} // tgen

static void Test_S2442C4()
{
  extern Class_Descriptor cd_S2442C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S2442C4, buf);
    S2442C4 *dp, &lv = *(dp=new (buf) S2442C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S2442C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2442C4)");
    test_class_info(&lv, &cd_S2442C4);
    dp->~S2442C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2442C4(Test_S2442C4, "S2442C4", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S2442C4C1Ev();
extern void _ZN7S2442C4D1Ev();
Name_Map name_map_S2442C4[] = {
  NSPAIR(_ZN7S2442C4C1Ev),
  NSPAIR(_ZN7S2442C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S2442C4[];
extern void _ZN7S2442C4D1Ev();
extern void _ZN7S2442C4D0Ev();
extern void _ZN7S2442C42v9Ev();
extern void _ZN7S2442C43v10Ev();
extern void _ZN7S2442C43v11Ev();
static  VTBL_ENTRY vtc_S2442C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2442C4[0]),
  (VTBL_ENTRY)&_ZN7S2442C4D1Ev,
  (VTBL_ENTRY)&_ZN7S2442C4D0Ev,
  (VTBL_ENTRY)&_ZN7S2442C42v9Ev,
  (VTBL_ENTRY)&_ZN7S2442C43v10Ev,
  (VTBL_ENTRY)&_ZN7S2442C43v11Ev,
};
extern VTBL_ENTRY _ZTI7S2442C4[];
extern  VTBL_ENTRY _ZTV7S2442C4[];
Class_Descriptor cd_S2442C4 = {  "S2442C4", // class name
  0,0,//no base classes
  &(vtc_S2442C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S2442C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S2442C4),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2442C3  : S2442C4 {
  virtual  ~S2442C3(); // _ZN7S2442C3D1Ev
  virtual void  v12(); // _ZN7S2442C33v12Ev
  virtual void  v13(); // _ZN7S2442C33v13Ev
  virtual void  v14(); // _ZN7S2442C33v14Ev
  virtual void  v15(); // _ZN7S2442C33v15Ev
  virtual void  v16(); // _ZN7S2442C33v16Ev
  virtual void  v17(); // _ZN7S2442C33v17Ev
  virtual void  v18(); // _ZN7S2442C33v18Ev
  virtual void  v19(); // _ZN7S2442C33v19Ev
  S2442C3(); // tgen
};
//SIG(-1 S2442C3) C1{ BC2{ vd v9 v10 v11} vd v1 v2 v3 v4 v5 v6 v7 v8}


 S2442C3 ::~S2442C3(){ note_dtor("S2442C3", this);}
void  S2442C3 ::v12(){vfunc_called(this, "_ZN7S2442C33v12Ev");}
void  S2442C3 ::v13(){vfunc_called(this, "_ZN7S2442C33v13Ev");}
void  S2442C3 ::v14(){vfunc_called(this, "_ZN7S2442C33v14Ev");}
void  S2442C3 ::v15(){vfunc_called(this, "_ZN7S2442C33v15Ev");}
void  S2442C3 ::v16(){vfunc_called(this, "_ZN7S2442C33v16Ev");}
void  S2442C3 ::v17(){vfunc_called(this, "_ZN7S2442C33v17Ev");}
void  S2442C3 ::v18(){vfunc_called(this, "_ZN7S2442C33v18Ev");}
void  S2442C3 ::v19(){vfunc_called(this, "_ZN7S2442C33v19Ev");}
S2442C3 ::S2442C3(){ note_ctor("S2442C3", this);} // tgen

static void Test_S2442C3()
{
  extern Class_Descriptor cd_S2442C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S2442C3, buf);
    S2442C3 *dp, &lv = *(dp=new (buf) S2442C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S2442C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2442C3)");
    check_base_class_offset(lv, (S2442C4*), 0, "S2442C3");
    test_class_info(&lv, &cd_S2442C3);
    dp->~S2442C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2442C3(Test_S2442C3, "S2442C3", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S2442C3C1Ev();
extern void _ZN7S2442C3D1Ev();
Name_Map name_map_S2442C3[] = {
  NSPAIR(_ZN7S2442C3C1Ev),
  NSPAIR(_ZN7S2442C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2442C4;
extern VTBL_ENTRY _ZTI7S2442C4[];
extern  VTBL_ENTRY _ZTV7S2442C4[];
static Base_Class bases_S2442C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2442C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2442C3[];
extern void _ZN7S2442C3D1Ev();
extern void _ZN7S2442C3D0Ev();
extern void _ZN7S2442C42v9Ev();
extern void _ZN7S2442C43v10Ev();
extern void _ZN7S2442C43v11Ev();
extern void _ZN7S2442C33v12Ev();
extern void _ZN7S2442C33v13Ev();
extern void _ZN7S2442C33v14Ev();
extern void _ZN7S2442C33v15Ev();
extern void _ZN7S2442C33v16Ev();
extern void _ZN7S2442C33v17Ev();
extern void _ZN7S2442C33v18Ev();
extern void _ZN7S2442C33v19Ev();
static  VTBL_ENTRY vtc_S2442C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2442C3[0]),
  (VTBL_ENTRY)&_ZN7S2442C3D1Ev,
  (VTBL_ENTRY)&_ZN7S2442C3D0Ev,
  (VTBL_ENTRY)&_ZN7S2442C42v9Ev,
  (VTBL_ENTRY)&_ZN7S2442C43v10Ev,
  (VTBL_ENTRY)&_ZN7S2442C43v11Ev,
  (VTBL_ENTRY)&_ZN7S2442C33v12Ev,
  (VTBL_ENTRY)&_ZN7S2442C33v13Ev,
  (VTBL_ENTRY)&_ZN7S2442C33v14Ev,
  (VTBL_ENTRY)&_ZN7S2442C33v15Ev,
  (VTBL_ENTRY)&_ZN7S2442C33v16Ev,
  (VTBL_ENTRY)&_ZN7S2442C33v17Ev,
  (VTBL_ENTRY)&_ZN7S2442C33v18Ev,
  (VTBL_ENTRY)&_ZN7S2442C33v19Ev,
};
extern VTBL_ENTRY _ZTI7S2442C3[];
extern  VTBL_ENTRY _ZTV7S2442C3[];
Class_Descriptor cd_S2442C3 = {  "S2442C3", // class name
  bases_S2442C3, 1,
  &(vtc_S2442C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S2442C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2442C3),15, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2442C2  : S2442C3 {
  ::S17556C15_nt s2442c2f0;
  ::S17556C3_nt s2442c2f1;
  char s2442c2f2;
  virtual  ~S2442C2(); // _ZN7S2442C2D1Ev
  virtual void  v20(); // _ZN7S2442C23v20Ev
  virtual void  v21(); // _ZN7S2442C23v21Ev
  virtual void  v22(); // _ZN7S2442C23v22Ev
  S2442C2(); // tgen
};
//SIG(-1 S2442C2) C1{ BC2{ BC3{ vd v4 v5 v6} vd v7 v8 v9 v10 v11 v12 v13 v14} vd v1 v2 v3 FC4{ m Fp Fi[2] FC5{ m}} FC6{ m FC7{ FL[4]}} Fc}


 S2442C2 ::~S2442C2(){ note_dtor("S2442C2", this);}
void  S2442C2 ::v20(){vfunc_called(this, "_ZN7S2442C23v20Ev");}
void  S2442C2 ::v21(){vfunc_called(this, "_ZN7S2442C23v21Ev");}
void  S2442C2 ::v22(){vfunc_called(this, "_ZN7S2442C23v22Ev");}
S2442C2 ::S2442C2(){ note_ctor("S2442C2", this);} // tgen

static void Test_S2442C2()
{
  extern Class_Descriptor cd_S2442C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,15)];
    init_test(&cd_S2442C2, buf);
    S2442C2 *dp, &lv = *(dp=new (buf) S2442C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,56), "sizeof(S2442C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2442C2)");
    check_base_class_offset(lv, (S2442C4*)(S2442C3*), 0, "S2442C2");
    check_base_class_offset(lv, (S2442C3*), 0, "S2442C2");
    check_field_offset(lv, s2442c2f0, ABISELECT(8,4), "S2442C2.s2442c2f0");
    check_field_offset(lv, s2442c2f1, ABISELECT(32,20), "S2442C2.s2442c2f1");
    check_field_offset(lv, s2442c2f2, ABISELECT(64,52), "S2442C2.s2442c2f2");
    test_class_info(&lv, &cd_S2442C2);
    dp->~S2442C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2442C2(Test_S2442C2, "S2442C2", ABISELECT(72,56));

#else // __cplusplus

extern void _ZN7S2442C2C1Ev();
extern void _ZN7S2442C2D1Ev();
Name_Map name_map_S2442C2[] = {
  NSPAIR(_ZN7S2442C2C1Ev),
  NSPAIR(_ZN7S2442C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2442C4;
extern VTBL_ENTRY _ZTI7S2442C4[];
extern  VTBL_ENTRY _ZTV7S2442C4[];
extern Class_Descriptor cd_S2442C3;
extern VTBL_ENTRY _ZTI7S2442C3[];
extern  VTBL_ENTRY _ZTV7S2442C3[];
static Base_Class bases_S2442C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2442C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2442C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2442C2[];
extern void _ZN7S2442C2D1Ev();
extern void _ZN7S2442C2D0Ev();
extern void _ZN7S2442C42v9Ev();
extern void _ZN7S2442C43v10Ev();
extern void _ZN7S2442C43v11Ev();
extern void _ZN7S2442C33v12Ev();
extern void _ZN7S2442C33v13Ev();
extern void _ZN7S2442C33v14Ev();
extern void _ZN7S2442C33v15Ev();
extern void _ZN7S2442C33v16Ev();
extern void _ZN7S2442C33v17Ev();
extern void _ZN7S2442C33v18Ev();
extern void _ZN7S2442C33v19Ev();
extern void _ZN7S2442C23v20Ev();
extern void _ZN7S2442C23v21Ev();
extern void _ZN7S2442C23v22Ev();
static  VTBL_ENTRY vtc_S2442C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2442C2[0]),
  (VTBL_ENTRY)&_ZN7S2442C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2442C2D0Ev,
  (VTBL_ENTRY)&_ZN7S2442C42v9Ev,
  (VTBL_ENTRY)&_ZN7S2442C43v10Ev,
  (VTBL_ENTRY)&_ZN7S2442C43v11Ev,
  (VTBL_ENTRY)&_ZN7S2442C33v12Ev,
  (VTBL_ENTRY)&_ZN7S2442C33v13Ev,
  (VTBL_ENTRY)&_ZN7S2442C33v14Ev,
  (VTBL_ENTRY)&_ZN7S2442C33v15Ev,
  (VTBL_ENTRY)&_ZN7S2442C33v16Ev,
  (VTBL_ENTRY)&_ZN7S2442C33v17Ev,
  (VTBL_ENTRY)&_ZN7S2442C33v18Ev,
  (VTBL_ENTRY)&_ZN7S2442C33v19Ev,
  (VTBL_ENTRY)&_ZN7S2442C23v20Ev,
  (VTBL_ENTRY)&_ZN7S2442C23v21Ev,
  (VTBL_ENTRY)&_ZN7S2442C23v22Ev,
};
extern VTBL_ENTRY _ZTI7S2442C2[];
extern  VTBL_ENTRY _ZTV7S2442C2[];
Class_Descriptor cd_S2442C2 = {  "S2442C2", // class name
  bases_S2442C2, 2,
  &(vtc_S2442C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,56), // object size
  NSPAIRA(_ZTI7S2442C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2442C2),18, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2442C9_nt  {
  ::S17556C4_nt s2442c9f0;
  void  mf2442c9(); // _ZN10S2442C9_nt8mf2442c9Ev
};
//SIG(-1 S2442C9_nt) C1{ m FC2{ FL[4]}}


void  S2442C9_nt ::mf2442c9(){}

//skip512 S2442C9_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2442C12_nt  {
  int s2442c12f0[4];
};
//SIG(-1 S2442C12_nt) C1{ Fi[4]}



//skip512 S2442C12_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2442C11_nt  {
  void *s2442c11f0;
  ::S2442C12_nt s2442c11f1;
  void  mf2442c11(); // _ZN11S2442C11_nt9mf2442c11Ev
};
//SIG(-1 S2442C11_nt) C1{ m Fp FC2{ Fi[4]}}


void  S2442C11_nt ::mf2442c11(){}

//skip512 S2442C11_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2442C10_nt  {
  void *s2442c10f0;
  ::S2442C9_nt s2442c10f1;
  ::S2442C11_nt s2442c10f2;
  int s2442c10f3;
  char s2442c10f4;
  void  mf2442c10(); // _ZN11S2442C10_nt9mf2442c10Ev
};
//SIG(-1 S2442C10_nt) C1{ m Fp FC2{ m FC3{ FL[4]}} FC4{ m Fp FC5{ Fi[4]}} Fi Fc}


void  S2442C10_nt ::mf2442c10(){}

//skip512 S2442C10_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2442C1  : S2442C2 {
  int s2442c1f0;
  ::S2442C9_nt s2442c1f1;
  ::S2442C10_nt s2442c1f2;
  virtual  ~S2442C1(); // _ZN7S2442C1D1Ev
  virtual void  v1(); // _ZN7S2442C12v1Ev
  virtual void  v2(); // _ZN7S2442C12v2Ev
  virtual void  v3(); // _ZN7S2442C12v3Ev
  virtual void  v4(); // _ZN7S2442C12v4Ev
  virtual void  v5(); // _ZN7S2442C12v5Ev
  virtual void  v6(); // _ZN7S2442C12v6Ev
  virtual void  v7(); // _ZN7S2442C12v7Ev
  virtual void  v8(); // _ZN7S2442C12v8Ev
  S2442C1(); // tgen
};
//SIG(1 S2442C1) C1{ BC2{ BC3{ BC4{ vd v9 v10 v11} vd v12 v13 v14 v15 v16 v17 v18 v19} vd v20 v21 v22 FC5{ m Fp Fi[2] FC6{ m}} FC7{ m FC8{ FL[4]}} Fc} vd v1 v2 v3 v4 v5 v6 v7 v8 Fi FC9{ m FC8} FC10{ m Fp FC9 FC11{ m Fp FC12{ Fi[4]}} Fi Fc}}


 S2442C1 ::~S2442C1(){ note_dtor("S2442C1", this);}
void  S2442C1 ::v1(){vfunc_called(this, "_ZN7S2442C12v1Ev");}
void  S2442C1 ::v2(){vfunc_called(this, "_ZN7S2442C12v2Ev");}
void  S2442C1 ::v3(){vfunc_called(this, "_ZN7S2442C12v3Ev");}
void  S2442C1 ::v4(){vfunc_called(this, "_ZN7S2442C12v4Ev");}
void  S2442C1 ::v5(){vfunc_called(this, "_ZN7S2442C12v5Ev");}
void  S2442C1 ::v6(){vfunc_called(this, "_ZN7S2442C12v6Ev");}
void  S2442C1 ::v7(){vfunc_called(this, "_ZN7S2442C12v7Ev");}
void  S2442C1 ::v8(){vfunc_called(this, "_ZN7S2442C12v8Ev");}
S2442C1 ::S2442C1(){ note_ctor("S2442C1", this);} // tgen

static void Test_S2442C1()
{
  extern Class_Descriptor cd_S2442C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,40)];
    init_test(&cd_S2442C1, buf);
    S2442C1 *dp, &lv = *(dp=new (buf) S2442C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,156), "sizeof(S2442C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2442C1)");
    check_base_class_offset(lv, (S2442C4*)(S2442C3*)(S2442C2*), 0, "S2442C1");
    check_base_class_offset(lv, (S2442C3*)(S2442C2*), 0, "S2442C1");
    check_base_class_offset(lv, (S2442C2*), 0, "S2442C1");
    check_field_offset(lv, s2442c1f0, ABISELECT(68,56), "S2442C1.s2442c1f0");
    check_field_offset(lv, s2442c1f1, ABISELECT(72,60), "S2442C1.s2442c1f1");
    check_field_offset(lv, s2442c1f2, ABISELECT(104,92), "S2442C1.s2442c1f2");
    test_class_info(&lv, &cd_S2442C1);
    dp->~S2442C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2442C1(Test_S2442C1, "S2442C1", ABISELECT(176,156));

#else // __cplusplus

extern void _ZN7S2442C1C1Ev();
extern void _ZN7S2442C1D1Ev();
Name_Map name_map_S2442C1[] = {
  NSPAIR(_ZN7S2442C1C1Ev),
  NSPAIR(_ZN7S2442C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2442C4;
extern VTBL_ENTRY _ZTI7S2442C4[];
extern  VTBL_ENTRY _ZTV7S2442C4[];
extern Class_Descriptor cd_S2442C3;
extern VTBL_ENTRY _ZTI7S2442C3[];
extern  VTBL_ENTRY _ZTV7S2442C3[];
extern Class_Descriptor cd_S2442C2;
extern VTBL_ENTRY _ZTI7S2442C2[];
extern  VTBL_ENTRY _ZTV7S2442C2[];
static Base_Class bases_S2442C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2442C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2442C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S2442C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2442C1[];
extern void _ZN7S2442C1D1Ev();
extern void _ZN7S2442C1D0Ev();
extern void _ZN7S2442C42v9Ev();
extern void _ZN7S2442C43v10Ev();
extern void _ZN7S2442C43v11Ev();
extern void _ZN7S2442C33v12Ev();
extern void _ZN7S2442C33v13Ev();
extern void _ZN7S2442C33v14Ev();
extern void _ZN7S2442C33v15Ev();
extern void _ZN7S2442C33v16Ev();
extern void _ZN7S2442C33v17Ev();
extern void _ZN7S2442C33v18Ev();
extern void _ZN7S2442C33v19Ev();
extern void _ZN7S2442C23v20Ev();
extern void _ZN7S2442C23v21Ev();
extern void _ZN7S2442C23v22Ev();
extern void _ZN7S2442C12v1Ev();
extern void _ZN7S2442C12v2Ev();
extern void _ZN7S2442C12v3Ev();
extern void _ZN7S2442C12v4Ev();
extern void _ZN7S2442C12v5Ev();
extern void _ZN7S2442C12v6Ev();
extern void _ZN7S2442C12v7Ev();
extern void _ZN7S2442C12v8Ev();
static  VTBL_ENTRY vtc_S2442C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2442C1[0]),
  (VTBL_ENTRY)&_ZN7S2442C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2442C1D0Ev,
  (VTBL_ENTRY)&_ZN7S2442C42v9Ev,
  (VTBL_ENTRY)&_ZN7S2442C43v10Ev,
  (VTBL_ENTRY)&_ZN7S2442C43v11Ev,
  (VTBL_ENTRY)&_ZN7S2442C33v12Ev,
  (VTBL_ENTRY)&_ZN7S2442C33v13Ev,
  (VTBL_ENTRY)&_ZN7S2442C33v14Ev,
  (VTBL_ENTRY)&_ZN7S2442C33v15Ev,
  (VTBL_ENTRY)&_ZN7S2442C33v16Ev,
  (VTBL_ENTRY)&_ZN7S2442C33v17Ev,
  (VTBL_ENTRY)&_ZN7S2442C33v18Ev,
  (VTBL_ENTRY)&_ZN7S2442C33v19Ev,
  (VTBL_ENTRY)&_ZN7S2442C23v20Ev,
  (VTBL_ENTRY)&_ZN7S2442C23v21Ev,
  (VTBL_ENTRY)&_ZN7S2442C23v22Ev,
  (VTBL_ENTRY)&_ZN7S2442C12v1Ev,
  (VTBL_ENTRY)&_ZN7S2442C12v2Ev,
  (VTBL_ENTRY)&_ZN7S2442C12v3Ev,
  (VTBL_ENTRY)&_ZN7S2442C12v4Ev,
  (VTBL_ENTRY)&_ZN7S2442C12v5Ev,
  (VTBL_ENTRY)&_ZN7S2442C12v6Ev,
  (VTBL_ENTRY)&_ZN7S2442C12v7Ev,
  (VTBL_ENTRY)&_ZN7S2442C12v8Ev,
};
extern VTBL_ENTRY _ZTI7S2442C1[];
extern  VTBL_ENTRY _ZTV7S2442C1[];
Class_Descriptor cd_S2442C1 = {  "S2442C1", // class name
  bases_S2442C1, 3,
  &(vtc_S2442C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(176,156), // object size
  NSPAIRA(_ZTI7S2442C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2442C1),26, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3750C3_nt  {
  int s3750c3f0;
  void  mf3750c3(); // _ZN10S3750C3_nt8mf3750c3Ev
  virtual  ~S3750C3_nt(); // _ZN10S3750C3_ntD1Ev
  S3750C3_nt(); // tgen
};
//SIG(-1 S3750C3_nt) C1{ vd m Fi}


void  S3750C3_nt ::mf3750c3(){}
 S3750C3_nt ::~S3750C3_nt(){ note_dtor("S3750C3_nt", this);}
S3750C3_nt ::S3750C3_nt(){ note_ctor("S3750C3_nt", this);} // tgen

//skip512 S3750C3_nt

#else // __cplusplus

extern void _ZN10S3750C3_ntC1Ev();
extern void _ZN10S3750C3_ntD1Ev();
Name_Map name_map_S3750C3_nt[] = {
  NSPAIR(_ZN10S3750C3_ntC1Ev),
  NSPAIR(_ZN10S3750C3_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S3750C3_nt[];
extern void _ZN10S3750C3_ntD1Ev();
extern void _ZN10S3750C3_ntD0Ev();
static  VTBL_ENTRY vtc_S3750C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S3750C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S3750C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S3750C3_ntD0Ev,
};
extern VTBL_ENTRY _ZTI10S3750C3_nt[];
VTBL_ENTRY *P__ZTI10S3750C3_nt = _ZTI10S3750C3_nt; 
extern  VTBL_ENTRY _ZTV10S3750C3_nt[];
Class_Descriptor cd_S3750C3_nt = {  "S3750C3_nt", // class name
  0,0,//no base classes
  &(vtc_S3750C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI10S3750C3_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S3750C3_nt),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3750C2_nt  : S3750C3_nt {
  virtual void  v8(); // _ZN10S3750C2_nt2v8Ev
  virtual void  v9(); // _ZN10S3750C2_nt2v9Ev
  virtual void  v10(); // _ZN10S3750C2_nt3v10Ev
  virtual void  v11(); // _ZN10S3750C2_nt3v11Ev
  virtual void  v12(); // _ZN10S3750C2_nt3v12Ev
  virtual void  v13(); // _ZN10S3750C2_nt3v13Ev
  virtual void  v14(); // _ZN10S3750C2_nt3v14Ev
  virtual void  v15(); // _ZN10S3750C2_nt3v15Ev
  virtual void  v16(); // _ZN10S3750C2_nt3v16Ev
  virtual void  v17(); // _ZN10S3750C2_nt3v17Ev
  virtual void  v18(); // _ZN10S3750C2_nt3v18Ev
  virtual void  v19(); // _ZN10S3750C2_nt3v19Ev
  ~S3750C2_nt(); // tgen
  S3750C2_nt(); // tgen
};
//SIG(-1 S3750C2_nt) C1{ BC2{ vd m Fi} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12}


void  S3750C2_nt ::v8(){vfunc_called(this, "_ZN10S3750C2_nt2v8Ev");}
void  S3750C2_nt ::v9(){vfunc_called(this, "_ZN10S3750C2_nt2v9Ev");}
void  S3750C2_nt ::v10(){vfunc_called(this, "_ZN10S3750C2_nt3v10Ev");}
void  S3750C2_nt ::v11(){vfunc_called(this, "_ZN10S3750C2_nt3v11Ev");}
void  S3750C2_nt ::v12(){vfunc_called(this, "_ZN10S3750C2_nt3v12Ev");}
void  S3750C2_nt ::v13(){vfunc_called(this, "_ZN10S3750C2_nt3v13Ev");}
void  S3750C2_nt ::v14(){vfunc_called(this, "_ZN10S3750C2_nt3v14Ev");}
void  S3750C2_nt ::v15(){vfunc_called(this, "_ZN10S3750C2_nt3v15Ev");}
void  S3750C2_nt ::v16(){vfunc_called(this, "_ZN10S3750C2_nt3v16Ev");}
void  S3750C2_nt ::v17(){vfunc_called(this, "_ZN10S3750C2_nt3v17Ev");}
void  S3750C2_nt ::v18(){vfunc_called(this, "_ZN10S3750C2_nt3v18Ev");}
void  S3750C2_nt ::v19(){vfunc_called(this, "_ZN10S3750C2_nt3v19Ev");}
S3750C2_nt ::~S3750C2_nt(){ note_dtor("S3750C2_nt", this);} // tgen
S3750C2_nt ::S3750C2_nt(){ note_ctor("S3750C2_nt", this);} // tgen

//skip512 S3750C2_nt

#else // __cplusplus

extern void _ZN10S3750C2_ntC1Ev();
extern void _ZN10S3750C2_ntD1Ev();
Name_Map name_map_S3750C2_nt[] = {
  NSPAIR(_ZN10S3750C2_ntC1Ev),
  NSPAIR(_ZN10S3750C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3750C3_nt;
extern VTBL_ENTRY _ZTI10S3750C3_nt[];
extern  VTBL_ENTRY _ZTV10S3750C3_nt[];
static Base_Class bases_S3750C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3750C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S3750C2_nt[];
extern void _ZN10S3750C2_ntD1Ev();
extern void _ZN10S3750C2_ntD0Ev();
extern void _ZN10S3750C2_nt2v8Ev();
extern void _ZN10S3750C2_nt2v9Ev();
extern void _ZN10S3750C2_nt3v10Ev();
extern void _ZN10S3750C2_nt3v11Ev();
extern void _ZN10S3750C2_nt3v12Ev();
extern void _ZN10S3750C2_nt3v13Ev();
extern void _ZN10S3750C2_nt3v14Ev();
extern void _ZN10S3750C2_nt3v15Ev();
extern void _ZN10S3750C2_nt3v16Ev();
extern void _ZN10S3750C2_nt3v17Ev();
extern void _ZN10S3750C2_nt3v18Ev();
extern void _ZN10S3750C2_nt3v19Ev();
static  VTBL_ENTRY vtc_S3750C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S3750C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S3750C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S3750C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S3750C2_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S3750C2_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S3750C2_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3750C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3750C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S3750C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S3750C2_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S3750C2_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S3750C2_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S3750C2_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S3750C2_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S3750C2_nt3v19Ev,
};
extern VTBL_ENTRY _ZTI10S3750C2_nt[];
VTBL_ENTRY *P__ZTI10S3750C2_nt = _ZTI10S3750C2_nt; 
extern  VTBL_ENTRY _ZTV10S3750C2_nt[];
Class_Descriptor cd_S3750C2_nt = {  "S3750C2_nt", // class name
  bases_S3750C2_nt, 1,
  &(vtc_S3750C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI10S3750C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S3750C2_nt),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3750C9_nt  {
  ::S1868C13_nt s3750c9f0;
  void *s3750c9f1[2];
  void  mf3750c9(); // _ZN10S3750C9_nt8mf3750c9Ev
};
//SIG(-1 S3750C9_nt) C1{ m FC2{ m Fp Fi[2] FC3{ m}} Fp[2]}


void  S3750C9_nt ::mf3750c9(){}

//skip512 S3750C9_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3750C1  : S3750C2_nt {
  ::S17556C28_nt s3750c1f0;
  ::S18423C15_nt s3750c1f1;
  int s3750c1f2;
  ::S17556C15_nt s3750c1f3;
  ::S17556C15_nt s3750c1f4;
  ::S3750C9_nt s3750c1f5;
  int s3750c1f6;
  char s3750c1f7;
  int s3750c1f8;
  void *s3750c1f9[2];
  virtual  ~S3750C1(); // _ZN7S3750C1D1Ev
  virtual void  v1(); // _ZN7S3750C12v1Ev
  virtual void  v2(); // _ZN7S3750C12v2Ev
  virtual void  v3(); // _ZN7S3750C12v3Ev
  virtual void  v4(); // _ZN7S3750C12v4Ev
  virtual void  v5(); // _ZN7S3750C12v5Ev
  virtual void  v6(); // _ZN7S3750C12v6Ev
  virtual void  v7(); // _ZN7S3750C12v7Ev
  S3750C1(); // tgen
};
//SIG(1 S3750C1) C1{ BC2{ BC3{ vd m Fi} v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19} vd v1 v2 v3 v4 v5 v6 v7 FC4{ m Fp[2]} FC5{ m Fp Fi FC6{ m}} Fi FC7{ m Fp Fi[2] FC8{ m}} FC7 FC9{ m FC10{ m Fp Fi[2] FC6} Fp[2]} Fi Fc Fi Fp[2]}


 S3750C1 ::~S3750C1(){ note_dtor("S3750C1", this);}
void  S3750C1 ::v1(){vfunc_called(this, "_ZN7S3750C12v1Ev");}
void  S3750C1 ::v2(){vfunc_called(this, "_ZN7S3750C12v2Ev");}
void  S3750C1 ::v3(){vfunc_called(this, "_ZN7S3750C12v3Ev");}
void  S3750C1 ::v4(){vfunc_called(this, "_ZN7S3750C12v4Ev");}
void  S3750C1 ::v5(){vfunc_called(this, "_ZN7S3750C12v5Ev");}
void  S3750C1 ::v6(){vfunc_called(this, "_ZN7S3750C12v6Ev");}
void  S3750C1 ::v7(){vfunc_called(this, "_ZN7S3750C12v7Ev");}
S3750C1 ::S3750C1(){ note_ctor("S3750C1", this);} // tgen

static void Test_S3750C1()
{
  extern Class_Descriptor cd_S3750C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,28)];
    init_test(&cd_S3750C1, buf);
    S3750C1 *dp, &lv = *(dp=new (buf) S3750C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,108), "sizeof(S3750C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3750C1)");
    check_base_class_offset(lv, (S3750C3_nt*)(S3750C2_nt*), 0, "S3750C1");
    check_base_class_offset(lv, (S3750C2_nt*), 0, "S3750C1");
    check_field_offset(lv, s3750c1f0, ABISELECT(16,8), "S3750C1.s3750c1f0");
    check_field_offset(lv, s3750c1f1, ABISELECT(32,16), "S3750C1.s3750c1f1");
    check_field_offset(lv, s3750c1f2, ABISELECT(48,28), "S3750C1.s3750c1f2");
    check_field_offset(lv, s3750c1f3, ABISELECT(56,32), "S3750C1.s3750c1f3");
    check_field_offset(lv, s3750c1f4, ABISELECT(80,48), "S3750C1.s3750c1f4");
    check_field_offset(lv, s3750c1f5, ABISELECT(104,64), "S3750C1.s3750c1f5");
    check_field_offset(lv, s3750c1f6, ABISELECT(144,88), "S3750C1.s3750c1f6");
    check_field_offset(lv, s3750c1f7, ABISELECT(148,92), "S3750C1.s3750c1f7");
    check_field_offset(lv, s3750c1f8, ABISELECT(152,96), "S3750C1.s3750c1f8");
    check_field_offset(lv, s3750c1f9, ABISELECT(160,100), "S3750C1.s3750c1f9");
    test_class_info(&lv, &cd_S3750C1);
    dp->~S3750C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3750C1(Test_S3750C1, "S3750C1", ABISELECT(176,108));

#else // __cplusplus

extern void _ZN7S3750C1C1Ev();
extern void _ZN7S3750C1D1Ev();
Name_Map name_map_S3750C1[] = {
  NSPAIR(_ZN7S3750C1C1Ev),
  NSPAIR(_ZN7S3750C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3750C3_nt;
extern VTBL_ENTRY _ZTI10S3750C3_nt[];
extern  VTBL_ENTRY _ZTV10S3750C3_nt[];
extern Class_Descriptor cd_S3750C2_nt;
extern VTBL_ENTRY _ZTI10S3750C2_nt[];
extern  VTBL_ENTRY _ZTV10S3750C2_nt[];
static Base_Class bases_S3750C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3750C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3750C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3750C1[];
extern void _ZN7S3750C1D1Ev();
extern void _ZN7S3750C1D0Ev();
extern void _ZN10S3750C2_nt2v8Ev();
extern void _ZN10S3750C2_nt2v9Ev();
extern void _ZN10S3750C2_nt3v10Ev();
extern void _ZN10S3750C2_nt3v11Ev();
extern void _ZN10S3750C2_nt3v12Ev();
extern void _ZN10S3750C2_nt3v13Ev();
extern void _ZN10S3750C2_nt3v14Ev();
extern void _ZN10S3750C2_nt3v15Ev();
extern void _ZN10S3750C2_nt3v16Ev();
extern void _ZN10S3750C2_nt3v17Ev();
extern void _ZN10S3750C2_nt3v18Ev();
extern void _ZN10S3750C2_nt3v19Ev();
extern void _ZN7S3750C12v1Ev();
extern void _ZN7S3750C12v2Ev();
extern void _ZN7S3750C12v3Ev();
extern void _ZN7S3750C12v4Ev();
extern void _ZN7S3750C12v5Ev();
extern void _ZN7S3750C12v6Ev();
extern void _ZN7S3750C12v7Ev();
static  VTBL_ENTRY vtc_S3750C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3750C1[0]),
  (VTBL_ENTRY)&_ZN7S3750C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3750C1D0Ev,
  (VTBL_ENTRY)&_ZN10S3750C2_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S3750C2_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S3750C2_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3750C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3750C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S3750C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S3750C2_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S3750C2_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S3750C2_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S3750C2_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S3750C2_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S3750C2_nt3v19Ev,
  (VTBL_ENTRY)&_ZN7S3750C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3750C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3750C12v3Ev,
  (VTBL_ENTRY)&_ZN7S3750C12v4Ev,
  (VTBL_ENTRY)&_ZN7S3750C12v5Ev,
  (VTBL_ENTRY)&_ZN7S3750C12v6Ev,
  (VTBL_ENTRY)&_ZN7S3750C12v7Ev,
};
extern VTBL_ENTRY _ZTI7S3750C1[];
extern  VTBL_ENTRY _ZTV7S3750C1[];
Class_Descriptor cd_S3750C1 = {  "S3750C1", // class name
  bases_S3750C1, 2,
  &(vtc_S3750C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(176,108), // object size
  NSPAIRA(_ZTI7S3750C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3750C1),23, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5925C6_nt  {
  void *s5925c6f0[2];
  void  mf5925c6(); // _ZN10S5925C6_nt8mf5925c6Ev
};
//SIG(-1 S5925C6_nt) C1{ m Fp[2]}


void  S5925C6_nt ::mf5925c6(){}

//skip512 S5925C6_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5925C2_nt  {
  __tsi64 s5925c2f0[2];
  void *s5925c2f1;
  ::S18423C15_nt s5925c2f2;
  void *s5925c2f3;
  ::S17556C28_nt s5925c2f4;
  ::S5925C6_nt s5925c2f5;
  void  mf5925c2(); // _ZN10S5925C2_nt8mf5925c2Ev
};
//SIG(-1 S5925C2_nt) C1{ m FL[2] Fp FC2{ m Fp Fi FC3{ m}} Fp FC4{ m Fp[2]} FC5{ m Fp[2]}}


void  S5925C2_nt ::mf5925c2(){}

//skip512 S5925C2_nt

#else // __cplusplus

extern VTBL_ENTRY _ZTI10S5925C2_nt[];
VTBL_ENTRY *P__ZTI10S5925C2_nt = _ZTI10S5925C2_nt; 
Class_Descriptor cd_S5925C2_nt = {  "S5925C2_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(80,52), // object size
  NSPAIRA(_ZTI10S5925C2_nt),ABISELECT(16,8), //typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5925C7_nt  {
  __tsi64 s5925c7f0[2];
  char s5925c7f1;
  int s5925c7f2;
  ::S18423C15_nt s5925c7f3;
  ::S18423C15_nt s5925c7f4;
  ::S18423C15_nt s5925c7f5;
  ::S18423C15_nt s5925c7f6;
  ::S18423C15_nt s5925c7f7;
  ::S18423C15_nt s5925c7f8;
  ::S18423C15_nt s5925c7f9;
  ::S18423C15_nt s5925c7f10;
  ::S18423C15_nt s5925c7f11;
  ::S18423C15_nt s5925c7f12;
  ::S18423C15_nt s5925c7f13;
  ::S18423C15_nt s5925c7f14;
  int s5925c7f15[3];
  ::S18423C15_nt s5925c7f16;
  ::S18423C15_nt s5925c7f17;
  ::S18423C15_nt s5925c7f18;
  __tsi64 s5925c7f19[2];
  int s5925c7f20[4];
  ::S18423C15_nt s5925c7f21;
  ::S18423C15_nt s5925c7f22;
  int s5925c7f23[2];
  __tsi64 s5925c7f24;
  int s5925c7f25[5];
  __tsi64 s5925c7f26;
  char s5925c7f27;
  void  mf5925c7(); // _ZN10S5925C7_nt8mf5925c7Ev
};
//SIG(-1 S5925C7_nt) C1{ m FL[2] Fc Fi FC2{ m Fp Fi FC3{ m}} FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 Fi[3] FC2 FC2 FC2 FL[2] Fi[4] FC2 FC2 Fi[2] FL Fi[5] FL Fc}


void  S5925C7_nt ::mf5925c7(){}

//skip512 S5925C7_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5925C1  : S5925C2_nt {
  int s5925c1f0;
  ::S5925C7_nt s5925c1f1;
  virtual  ~S5925C1(); // _ZN7S5925C1D1Ev
  S5925C1(); // tgen
};
//SIG(1 S5925C1) C1{ BC2{ m FL[2] Fp FC3{ m Fp Fi FC4{ m}} Fp FC5{ m Fp[2]} FC6{ m Fp[2]}} vd Fi FC7{ m FL[2] Fc Fi FC3 FC3 FC3 FC3 FC3 FC3 FC3 FC3 FC3 FC3 FC3 FC3 Fi[3] FC3 FC3 FC3 FL[2] Fi[4] FC3 FC3 Fi[2] FL Fi[5] FL Fc}}


 S5925C1 ::~S5925C1(){ note_dtor("S5925C1", this);}
S5925C1 ::S5925C1(){ note_ctor("S5925C1", this);} // tgen

static void Test_S5925C1()
{
  extern Class_Descriptor cd_S5925C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(63,96)];
    init_test(&cd_S5925C1, buf);
    S5925C1 *dp, &lv = *(dp=new (buf) S5925C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(496,380), "sizeof(S5925C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5925C1)");
    check_base_class_offset(lv, (S5925C2_nt*), ABISELECT(8,4), "S5925C1");
    check_field_offset(lv, s5925c1f0, ABISELECT(88,56), "S5925C1.s5925c1f0");
    check_field_offset(lv, s5925c1f1, ABISELECT(96,60), "S5925C1.s5925c1f1");
    test_class_info(&lv, &cd_S5925C1);
    dp->~S5925C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5925C1(Test_S5925C1, "S5925C1", ABISELECT(496,380));

#else // __cplusplus

extern void _ZN7S5925C1C1Ev();
extern void _ZN7S5925C1D1Ev();
Name_Map name_map_S5925C1[] = {
  NSPAIR(_ZN7S5925C1C1Ev),
  NSPAIR(_ZN7S5925C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5925C2_nt;
extern VTBL_ENTRY _ZTI10S5925C2_nt[];
static Base_Class bases_S5925C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5925C2_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S5925C1[];
extern void _ZN7S5925C1D1Ev();
extern void _ZN7S5925C1D0Ev();
static  VTBL_ENTRY vtc_S5925C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5925C1[0]),
  (VTBL_ENTRY)&_ZN7S5925C1D1Ev,
  (VTBL_ENTRY)&_ZN7S5925C1D0Ev,
};
extern VTBL_ENTRY _ZTI7S5925C1[];
extern  VTBL_ENTRY _ZTV7S5925C1[];
Class_Descriptor cd_S5925C1 = {  "S5925C1", // class name
  bases_S5925C1, 1,
  &(vtc_S5925C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(496,380), // object size
  NSPAIRA(_ZTI7S5925C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S5925C1),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2436C4_nt  {
  char s2436c4f0;
  int s2436c4f1;
  virtual  ~S2436C4_nt(); // _ZN10S2436C4_ntD1Ev
  virtual void  v9(); // _ZN10S2436C4_nt2v9Ev
  S2436C4_nt(); // tgen
};
//SIG(-1 S2436C4_nt) C1{ vd v1 Fc Fi}


 S2436C4_nt ::~S2436C4_nt(){ note_dtor("S2436C4_nt", this);}
void  S2436C4_nt ::v9(){vfunc_called(this, "_ZN10S2436C4_nt2v9Ev");}
S2436C4_nt ::S2436C4_nt(){ note_ctor("S2436C4_nt", this);} // tgen

//skip512 S2436C4_nt

#else // __cplusplus

extern void _ZN10S2436C4_ntC1Ev();
extern void _ZN10S2436C4_ntD1Ev();
Name_Map name_map_S2436C4_nt[] = {
  NSPAIR(_ZN10S2436C4_ntC1Ev),
  NSPAIR(_ZN10S2436C4_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S2436C4_nt[];
extern void _ZN10S2436C4_ntD1Ev();
extern void _ZN10S2436C4_ntD0Ev();
extern void _ZN10S2436C4_nt2v9Ev();
static  VTBL_ENTRY vtc_S2436C4_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S2436C4_nt[0]),
  (VTBL_ENTRY)&_ZN10S2436C4_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S2436C4_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S2436C4_nt2v9Ev,
};
extern VTBL_ENTRY _ZTI10S2436C4_nt[];
VTBL_ENTRY *P__ZTI10S2436C4_nt = _ZTI10S2436C4_nt; 
extern  VTBL_ENTRY _ZTV10S2436C4_nt[];
Class_Descriptor cd_S2436C4_nt = {  "S2436C4_nt", // class name
  0,0,//no base classes
  &(vtc_S2436C4_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI10S2436C4_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S2436C4_nt),5, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2436C5_nt  {
  void *s2436c5f0;
};
//SIG(-1 S2436C5_nt) C1{ Fp}



//skip512 S2436C5_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2436C6  : S2436C4_nt {
  __tsi64 s2436c6f0[4];
  virtual  ~S2436C6(); // _ZN7S2436C6D1Ev
  virtual void  v20(); // _ZN7S2436C63v20Ev
  virtual void  v21(); // _ZN7S2436C63v21Ev
  S2436C6(); // tgen
};
//SIG(-1 S2436C6) C1{ BC2{ vd v3 Fc Fi} vd v1 v2 FL[4]}


 S2436C6 ::~S2436C6(){ note_dtor("S2436C6", this);}
void  S2436C6 ::v20(){vfunc_called(this, "_ZN7S2436C63v20Ev");}
void  S2436C6 ::v21(){vfunc_called(this, "_ZN7S2436C63v21Ev");}
S2436C6 ::S2436C6(){ note_ctor("S2436C6", this);} // tgen

static void Test_S2436C6()
{
  extern Class_Descriptor cd_S2436C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S2436C6, buf);
    S2436C6 *dp, &lv = *(dp=new (buf) S2436C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S2436C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2436C6)");
    check_base_class_offset(lv, (S2436C4_nt*), 0, "S2436C6");
    check_field_offset(lv, s2436c6f0, ABISELECT(16,12), "S2436C6.s2436c6f0");
    test_class_info(&lv, &cd_S2436C6);
    dp->~S2436C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2436C6(Test_S2436C6, "S2436C6", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN7S2436C6C1Ev();
extern void _ZN7S2436C6D1Ev();
Name_Map name_map_S2436C6[] = {
  NSPAIR(_ZN7S2436C6C1Ev),
  NSPAIR(_ZN7S2436C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2436C4_nt;
extern VTBL_ENTRY _ZTI10S2436C4_nt[];
extern  VTBL_ENTRY _ZTV10S2436C4_nt[];
static Base_Class bases_S2436C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2436C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2436C6[];
extern void _ZN7S2436C6D1Ev();
extern void _ZN7S2436C6D0Ev();
extern void _ZN10S2436C4_nt2v9Ev();
extern void _ZN7S2436C63v20Ev();
extern void _ZN7S2436C63v21Ev();
static  VTBL_ENTRY vtc_S2436C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2436C6[0]),
  (VTBL_ENTRY)&_ZN7S2436C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2436C6D0Ev,
  (VTBL_ENTRY)&_ZN10S2436C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN7S2436C63v20Ev,
  (VTBL_ENTRY)&_ZN7S2436C63v21Ev,
};
extern VTBL_ENTRY _ZTI7S2436C6[];
extern  VTBL_ENTRY _ZTV7S2436C6[];
Class_Descriptor cd_S2436C6 = {  "S2436C6", // class name
  bases_S2436C6, 1,
  &(vtc_S2436C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI7S2436C6),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2436C6),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2436C3  : S2436C4_nt {
  int s2436c3f0[2];
  char s2436c3f1;
  ::S2436C5_nt s2436c3f2;
  ::S2436C6 s2436c3f3;
  virtual  ~S2436C3(); // _ZN7S2436C3D1Ev
  virtual void  v10(); // _ZN7S2436C33v10Ev
  S2436C3(); // tgen
};
//SIG(-1 S2436C3) C1{ BC2{ vd v2 Fc Fi} vd v1 Fi[2] Fc FC3{ Fp} FC4{ BC2 vd v3 v4 FL[4]}}


 S2436C3 ::~S2436C3(){ note_dtor("S2436C3", this);}
void  S2436C3 ::v10(){vfunc_called(this, "_ZN7S2436C33v10Ev");}
S2436C3 ::S2436C3(){ note_ctor("S2436C3", this);} // tgen

static void Test_S2436C3()
{
  extern Class_Descriptor cd_S2436C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,19)];
    init_test(&cd_S2436C3, buf);
    S2436C3 *dp, &lv = *(dp=new (buf) S2436C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,72), "sizeof(S2436C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2436C3)");
    check_base_class_offset(lv, (S2436C4_nt*), 0, "S2436C3");
    check_field_offset(lv, s2436c3f0, ABISELECT(16,12), "S2436C3.s2436c3f0");
    check_field_offset(lv, s2436c3f1, ABISELECT(24,20), "S2436C3.s2436c3f1");
    check_field_offset(lv, s2436c3f2, ABISELECT(32,24), "S2436C3.s2436c3f2");
    check_field_offset(lv, s2436c3f3, ABISELECT(40,28), "S2436C3.s2436c3f3");
    test_class_info(&lv, &cd_S2436C3);
    dp->~S2436C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2436C3(Test_S2436C3, "S2436C3", ABISELECT(88,72));

#else // __cplusplus

extern void _ZN7S2436C3C1Ev();
extern void _ZN7S2436C3D1Ev();
Name_Map name_map_S2436C3[] = {
  NSPAIR(_ZN7S2436C3C1Ev),
  NSPAIR(_ZN7S2436C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2436C4_nt;
extern VTBL_ENTRY _ZTI10S2436C4_nt[];
extern  VTBL_ENTRY _ZTV10S2436C4_nt[];
static Base_Class bases_S2436C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2436C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2436C3[];
extern void _ZN7S2436C3D1Ev();
extern void _ZN7S2436C3D0Ev();
extern void _ZN10S2436C4_nt2v9Ev();
extern void _ZN7S2436C33v10Ev();
static  VTBL_ENTRY vtc_S2436C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2436C3[0]),
  (VTBL_ENTRY)&_ZN7S2436C3D1Ev,
  (VTBL_ENTRY)&_ZN7S2436C3D0Ev,
  (VTBL_ENTRY)&_ZN10S2436C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN7S2436C33v10Ev,
};
extern VTBL_ENTRY _ZTI7S2436C3[];
extern  VTBL_ENTRY _ZTV7S2436C3[];
Class_Descriptor cd_S2436C3 = {  "S2436C3", // class name
  bases_S2436C3, 1,
  &(vtc_S2436C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,72), // object size
  NSPAIRA(_ZTI7S2436C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2436C3),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2436C2  : S2436C3 {
  void *s2436c2f0[3];
  int s2436c2f1;
  void *s2436c2f2[2];
  int s2436c2f3[3];
  char s2436c2f4[2];
  void *s2436c2f5;
  char s2436c2f6;
  void *s2436c2f7;
  __tsi64 s2436c2f8[2];
  virtual  ~S2436C2(); // _ZN7S2436C2D1Ev
  virtual void  v11(); // _ZN7S2436C23v11Ev
  virtual void  v12(); // _ZN7S2436C23v12Ev
  virtual void  v13(); // _ZN7S2436C23v13Ev
  virtual void  v14(); // _ZN7S2436C23v14Ev
  virtual void  v15(); // _ZN7S2436C23v15Ev
  virtual void  v16(); // _ZN7S2436C23v16Ev
  virtual void  v17(); // _ZN7S2436C23v17Ev
  virtual void  v18(); // _ZN7S2436C23v18Ev
  virtual void  v19(); // _ZN7S2436C23v19Ev
  S2436C2(); // tgen
};
//SIG(-1 S2436C2) C1{ BC2{ BC3{ vd v10 Fc Fi} vd v11 Fi[2] Fc FC4{ Fp} FC5{ BC3 vd v12 v13 FL[4]}} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 Fp[3] Fi Fp[2] Fi[3] Fc[2] Fp Fc Fp FL[2]}


 S2436C2 ::~S2436C2(){ note_dtor("S2436C2", this);}
void  S2436C2 ::v11(){vfunc_called(this, "_ZN7S2436C23v11Ev");}
void  S2436C2 ::v12(){vfunc_called(this, "_ZN7S2436C23v12Ev");}
void  S2436C2 ::v13(){vfunc_called(this, "_ZN7S2436C23v13Ev");}
void  S2436C2 ::v14(){vfunc_called(this, "_ZN7S2436C23v14Ev");}
void  S2436C2 ::v15(){vfunc_called(this, "_ZN7S2436C23v15Ev");}
void  S2436C2 ::v16(){vfunc_called(this, "_ZN7S2436C23v16Ev");}
void  S2436C2 ::v17(){vfunc_called(this, "_ZN7S2436C23v17Ev");}
void  S2436C2 ::v18(){vfunc_called(this, "_ZN7S2436C23v18Ev");}
void  S2436C2 ::v19(){vfunc_called(this, "_ZN7S2436C23v19Ev");}
S2436C2 ::S2436C2(){ note_ctor("S2436C2", this);} // tgen

static void Test_S2436C2()
{
  extern Class_Descriptor cd_S2436C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(25,36)];
    init_test(&cd_S2436C2, buf);
    S2436C2 *dp, &lv = *(dp=new (buf) S2436C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,140), "sizeof(S2436C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2436C2)");
    check_base_class_offset(lv, (S2436C4_nt*)(S2436C3*), 0, "S2436C2");
    check_base_class_offset(lv, (S2436C3*), 0, "S2436C2");
    check_field_offset(lv, s2436c2f0, ABISELECT(88,72), "S2436C2.s2436c2f0");
    check_field_offset(lv, s2436c2f1, ABISELECT(112,84), "S2436C2.s2436c2f1");
    check_field_offset(lv, s2436c2f2, ABISELECT(120,88), "S2436C2.s2436c2f2");
    check_field_offset(lv, s2436c2f3, ABISELECT(136,96), "S2436C2.s2436c2f3");
    check_field_offset(lv, s2436c2f4, ABISELECT(148,108), "S2436C2.s2436c2f4");
    check_field_offset(lv, s2436c2f5, ABISELECT(152,112), "S2436C2.s2436c2f5");
    check_field_offset(lv, s2436c2f6, ABISELECT(160,116), "S2436C2.s2436c2f6");
    check_field_offset(lv, s2436c2f7, ABISELECT(168,120), "S2436C2.s2436c2f7");
    check_field_offset(lv, s2436c2f8, ABISELECT(176,124), "S2436C2.s2436c2f8");
    test_class_info(&lv, &cd_S2436C2);
    dp->~S2436C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2436C2(Test_S2436C2, "S2436C2", ABISELECT(192,140));

#else // __cplusplus

extern void _ZN7S2436C2C1Ev();
extern void _ZN7S2436C2D1Ev();
Name_Map name_map_S2436C2[] = {
  NSPAIR(_ZN7S2436C2C1Ev),
  NSPAIR(_ZN7S2436C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2436C4_nt;
extern VTBL_ENTRY _ZTI10S2436C4_nt[];
extern  VTBL_ENTRY _ZTV10S2436C4_nt[];
extern Class_Descriptor cd_S2436C3;
extern VTBL_ENTRY _ZTI7S2436C3[];
extern  VTBL_ENTRY _ZTV7S2436C3[];
static Base_Class bases_S2436C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2436C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2436C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2436C2[];
extern void _ZN7S2436C2D1Ev();
extern void _ZN7S2436C2D0Ev();
extern void _ZN10S2436C4_nt2v9Ev();
extern void _ZN7S2436C33v10Ev();
extern void _ZN7S2436C23v11Ev();
extern void _ZN7S2436C23v12Ev();
extern void _ZN7S2436C23v13Ev();
extern void _ZN7S2436C23v14Ev();
extern void _ZN7S2436C23v15Ev();
extern void _ZN7S2436C23v16Ev();
extern void _ZN7S2436C23v17Ev();
extern void _ZN7S2436C23v18Ev();
extern void _ZN7S2436C23v19Ev();
static  VTBL_ENTRY vtc_S2436C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2436C2[0]),
  (VTBL_ENTRY)&_ZN7S2436C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2436C2D0Ev,
  (VTBL_ENTRY)&_ZN10S2436C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN7S2436C33v10Ev,
  (VTBL_ENTRY)&_ZN7S2436C23v11Ev,
  (VTBL_ENTRY)&_ZN7S2436C23v12Ev,
  (VTBL_ENTRY)&_ZN7S2436C23v13Ev,
  (VTBL_ENTRY)&_ZN7S2436C23v14Ev,
  (VTBL_ENTRY)&_ZN7S2436C23v15Ev,
  (VTBL_ENTRY)&_ZN7S2436C23v16Ev,
  (VTBL_ENTRY)&_ZN7S2436C23v17Ev,
  (VTBL_ENTRY)&_ZN7S2436C23v18Ev,
  (VTBL_ENTRY)&_ZN7S2436C23v19Ev,
};
extern VTBL_ENTRY _ZTI7S2436C2[];
extern  VTBL_ENTRY _ZTV7S2436C2[];
Class_Descriptor cd_S2436C2 = {  "S2436C2", // class name
  bases_S2436C2, 2,
  &(vtc_S2436C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(192,140), // object size
  NSPAIRA(_ZTI7S2436C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2436C2),15, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2436C1  : S2436C2 {
  int s2436c1f0;
  void *s2436c1f1[2];
  virtual  ~S2436C1(); // _ZN7S2436C1D1Ev
  virtual void  v1(); // _ZN7S2436C12v1Ev
  virtual void  v2(); // _ZN7S2436C12v2Ev
  virtual void  v3(); // _ZN7S2436C12v3Ev
  virtual void  v4(); // _ZN7S2436C12v4Ev
  virtual void  v5(); // _ZN7S2436C12v5Ev
  virtual void  v6(); // _ZN7S2436C12v6Ev
  virtual void  v7(); // _ZN7S2436C12v7Ev
  virtual void  v8(); // _ZN7S2436C12v8Ev
  S2436C1(); // tgen
};
//SIG(1 S2436C1) C1{ BC2{ BC3{ BC4{ vd v9 Fc Fi} vd v10 Fi[2] Fc FC5{ Fp} FC6{ BC4 vd v20 v21 FL[4]}} vd v11 v12 v13 v14 v15 v16 v17 v18 v19 Fp[3] Fi Fp[2] Fi[3] Fc[2] Fp Fc Fp FL[2]} vd v1 v2 v3 v4 v5 v6 v7 v8 Fi Fp[2]}


 S2436C1 ::~S2436C1(){ note_dtor("S2436C1", this);}
void  S2436C1 ::v1(){vfunc_called(this, "_ZN7S2436C12v1Ev");}
void  S2436C1 ::v2(){vfunc_called(this, "_ZN7S2436C12v2Ev");}
void  S2436C1 ::v3(){vfunc_called(this, "_ZN7S2436C12v3Ev");}
void  S2436C1 ::v4(){vfunc_called(this, "_ZN7S2436C12v4Ev");}
void  S2436C1 ::v5(){vfunc_called(this, "_ZN7S2436C12v5Ev");}
void  S2436C1 ::v6(){vfunc_called(this, "_ZN7S2436C12v6Ev");}
void  S2436C1 ::v7(){vfunc_called(this, "_ZN7S2436C12v7Ev");}
void  S2436C1 ::v8(){vfunc_called(this, "_ZN7S2436C12v8Ev");}
S2436C1 ::S2436C1(){ note_ctor("S2436C1", this);} // tgen

static void Test_S2436C1()
{
  extern Class_Descriptor cd_S2436C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(28,39)];
    init_test(&cd_S2436C1, buf);
    S2436C1 *dp, &lv = *(dp=new (buf) S2436C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(216,152), "sizeof(S2436C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2436C1)");
    check_base_class_offset(lv, (S2436C4_nt*)(S2436C3*)(S2436C2*), 0, "S2436C1");
    check_base_class_offset(lv, (S2436C3*)(S2436C2*), 0, "S2436C1");
    check_base_class_offset(lv, (S2436C2*), 0, "S2436C1");
    check_field_offset(lv, s2436c1f0, ABISELECT(192,140), "S2436C1.s2436c1f0");
    check_field_offset(lv, s2436c1f1, ABISELECT(200,144), "S2436C1.s2436c1f1");
    test_class_info(&lv, &cd_S2436C1);
    dp->~S2436C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2436C1(Test_S2436C1, "S2436C1", ABISELECT(216,152));

#else // __cplusplus

extern void _ZN7S2436C1C1Ev();
extern void _ZN7S2436C1D1Ev();
Name_Map name_map_S2436C1[] = {
  NSPAIR(_ZN7S2436C1C1Ev),
  NSPAIR(_ZN7S2436C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2436C4_nt;
extern VTBL_ENTRY _ZTI10S2436C4_nt[];
extern  VTBL_ENTRY _ZTV10S2436C4_nt[];
extern Class_Descriptor cd_S2436C3;
extern VTBL_ENTRY _ZTI7S2436C3[];
extern  VTBL_ENTRY _ZTV7S2436C3[];
extern Class_Descriptor cd_S2436C2;
extern VTBL_ENTRY _ZTI7S2436C2[];
extern  VTBL_ENTRY _ZTV7S2436C2[];
static Base_Class bases_S2436C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2436C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2436C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S2436C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2436C1[];
extern void _ZN7S2436C1D1Ev();
extern void _ZN7S2436C1D0Ev();
extern void _ZN10S2436C4_nt2v9Ev();
extern void _ZN7S2436C33v10Ev();
extern void _ZN7S2436C23v11Ev();
extern void _ZN7S2436C23v12Ev();
extern void _ZN7S2436C23v13Ev();
extern void _ZN7S2436C23v14Ev();
extern void _ZN7S2436C23v15Ev();
extern void _ZN7S2436C23v16Ev();
extern void _ZN7S2436C23v17Ev();
extern void _ZN7S2436C23v18Ev();
extern void _ZN7S2436C23v19Ev();
extern void _ZN7S2436C12v1Ev();
extern void _ZN7S2436C12v2Ev();
extern void _ZN7S2436C12v3Ev();
extern void _ZN7S2436C12v4Ev();
extern void _ZN7S2436C12v5Ev();
extern void _ZN7S2436C12v6Ev();
extern void _ZN7S2436C12v7Ev();
extern void _ZN7S2436C12v8Ev();
static  VTBL_ENTRY vtc_S2436C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2436C1[0]),
  (VTBL_ENTRY)&_ZN7S2436C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2436C1D0Ev,
  (VTBL_ENTRY)&_ZN10S2436C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN7S2436C33v10Ev,
  (VTBL_ENTRY)&_ZN7S2436C23v11Ev,
  (VTBL_ENTRY)&_ZN7S2436C23v12Ev,
  (VTBL_ENTRY)&_ZN7S2436C23v13Ev,
  (VTBL_ENTRY)&_ZN7S2436C23v14Ev,
  (VTBL_ENTRY)&_ZN7S2436C23v15Ev,
  (VTBL_ENTRY)&_ZN7S2436C23v16Ev,
  (VTBL_ENTRY)&_ZN7S2436C23v17Ev,
  (VTBL_ENTRY)&_ZN7S2436C23v18Ev,
  (VTBL_ENTRY)&_ZN7S2436C23v19Ev,
  (VTBL_ENTRY)&_ZN7S2436C12v1Ev,
  (VTBL_ENTRY)&_ZN7S2436C12v2Ev,
  (VTBL_ENTRY)&_ZN7S2436C12v3Ev,
  (VTBL_ENTRY)&_ZN7S2436C12v4Ev,
  (VTBL_ENTRY)&_ZN7S2436C12v5Ev,
  (VTBL_ENTRY)&_ZN7S2436C12v6Ev,
  (VTBL_ENTRY)&_ZN7S2436C12v7Ev,
  (VTBL_ENTRY)&_ZN7S2436C12v8Ev,
};
extern VTBL_ENTRY _ZTI7S2436C1[];
extern  VTBL_ENTRY _ZTV7S2436C1[];
Class_Descriptor cd_S2436C1 = {  "S2436C1", // class name
  bases_S2436C1, 3,
  &(vtc_S2436C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(216,152), // object size
  NSPAIRA(_ZTI7S2436C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2436C1),23, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2435C4  {
  char s2435c4f0;
  int s2435c4f1;
  virtual  ~S2435C4(); // _ZN7S2435C4D1Ev
  virtual void  v9(); // _ZN7S2435C42v9Ev
  S2435C4(); // tgen
};
//SIG(-1 S2435C4) C1{ vd v1 Fc Fi}


 S2435C4 ::~S2435C4(){ note_dtor("S2435C4", this);}
void  S2435C4 ::v9(){vfunc_called(this, "_ZN7S2435C42v9Ev");}
S2435C4 ::S2435C4(){ note_ctor("S2435C4", this);} // tgen

static void Test_S2435C4()
{
  extern Class_Descriptor cd_S2435C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S2435C4, buf);
    S2435C4 *dp, &lv = *(dp=new (buf) S2435C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S2435C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2435C4)");
    check_field_offset(lv, s2435c4f0, ABISELECT(8,4), "S2435C4.s2435c4f0");
    check_field_offset(lv, s2435c4f1, ABISELECT(12,8), "S2435C4.s2435c4f1");
    test_class_info(&lv, &cd_S2435C4);
    dp->~S2435C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2435C4(Test_S2435C4, "S2435C4", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S2435C4C1Ev();
extern void _ZN7S2435C4D1Ev();
Name_Map name_map_S2435C4[] = {
  NSPAIR(_ZN7S2435C4C1Ev),
  NSPAIR(_ZN7S2435C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S2435C4[];
extern void _ZN7S2435C4D1Ev();
extern void _ZN7S2435C4D0Ev();
extern void _ZN7S2435C42v9Ev();
static  VTBL_ENTRY vtc_S2435C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2435C4[0]),
  (VTBL_ENTRY)&_ZN7S2435C4D1Ev,
  (VTBL_ENTRY)&_ZN7S2435C4D0Ev,
  (VTBL_ENTRY)&_ZN7S2435C42v9Ev,
};
extern VTBL_ENTRY _ZTI7S2435C4[];
extern  VTBL_ENTRY _ZTV7S2435C4[];
Class_Descriptor cd_S2435C4 = {  "S2435C4", // class name
  0,0,//no base classes
  &(vtc_S2435C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S2435C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S2435C4),5, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2435C3  : S2435C4 {
  int s2435c3f0[2];
  char s2435c3f1;
  ::S2436C5_nt s2435c3f2;
  ::S2436C6 s2435c3f3;
  virtual  ~S2435C3(); // _ZN7S2435C3D1Ev
  virtual void  v10(); // _ZN7S2435C33v10Ev
  S2435C3(); // tgen
};
//SIG(-1 S2435C3) C1{ BC2{ vd v2 Fc Fi} vd v1 Fi[2] Fc FC3{ Fp} FC4{ BC5{ vd v5 Fc Fi} vd v3 v4 FL[4]}}


 S2435C3 ::~S2435C3(){ note_dtor("S2435C3", this);}
void  S2435C3 ::v10(){vfunc_called(this, "_ZN7S2435C33v10Ev");}
S2435C3 ::S2435C3(){ note_ctor("S2435C3", this);} // tgen

static void Test_S2435C3()
{
  extern Class_Descriptor cd_S2435C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,19)];
    init_test(&cd_S2435C3, buf);
    S2435C3 *dp, &lv = *(dp=new (buf) S2435C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,72), "sizeof(S2435C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2435C3)");
    check_base_class_offset(lv, (S2435C4*), 0, "S2435C3");
    check_field_offset(lv, s2435c3f0, ABISELECT(16,12), "S2435C3.s2435c3f0");
    check_field_offset(lv, s2435c3f1, ABISELECT(24,20), "S2435C3.s2435c3f1");
    check_field_offset(lv, s2435c3f2, ABISELECT(32,24), "S2435C3.s2435c3f2");
    check_field_offset(lv, s2435c3f3, ABISELECT(40,28), "S2435C3.s2435c3f3");
    test_class_info(&lv, &cd_S2435C3);
    dp->~S2435C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2435C3(Test_S2435C3, "S2435C3", ABISELECT(88,72));

#else // __cplusplus

extern void _ZN7S2435C3C1Ev();
extern void _ZN7S2435C3D1Ev();
Name_Map name_map_S2435C3[] = {
  NSPAIR(_ZN7S2435C3C1Ev),
  NSPAIR(_ZN7S2435C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2435C4;
extern VTBL_ENTRY _ZTI7S2435C4[];
extern  VTBL_ENTRY _ZTV7S2435C4[];
static Base_Class bases_S2435C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2435C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2435C3[];
extern void _ZN7S2435C3D1Ev();
extern void _ZN7S2435C3D0Ev();
extern void _ZN7S2435C42v9Ev();
extern void _ZN7S2435C33v10Ev();
static  VTBL_ENTRY vtc_S2435C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2435C3[0]),
  (VTBL_ENTRY)&_ZN7S2435C3D1Ev,
  (VTBL_ENTRY)&_ZN7S2435C3D0Ev,
  (VTBL_ENTRY)&_ZN7S2435C42v9Ev,
  (VTBL_ENTRY)&_ZN7S2435C33v10Ev,
};
extern VTBL_ENTRY _ZTI7S2435C3[];
extern  VTBL_ENTRY _ZTV7S2435C3[];
Class_Descriptor cd_S2435C3 = {  "S2435C3", // class name
  bases_S2435C3, 1,
  &(vtc_S2435C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,72), // object size
  NSPAIRA(_ZTI7S2435C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2435C3),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2435C2  : S2435C3 {
  void *s2435c2f0[3];
  int s2435c2f1;
  void *s2435c2f2[2];
  int s2435c2f3[3];
  char s2435c2f4[2];
  void *s2435c2f5;
  char s2435c2f6;
  void *s2435c2f7;
  __tsi64 s2435c2f8[2];
  virtual  ~S2435C2(); // _ZN7S2435C2D1Ev
  virtual void  v11(); // _ZN7S2435C23v11Ev
  virtual void  v12(); // _ZN7S2435C23v12Ev
  virtual void  v13(); // _ZN7S2435C23v13Ev
  virtual void  v14(); // _ZN7S2435C23v14Ev
  virtual void  v15(); // _ZN7S2435C23v15Ev
  virtual void  v16(); // _ZN7S2435C23v16Ev
  virtual void  v17(); // _ZN7S2435C23v17Ev
  virtual void  v18(); // _ZN7S2435C23v18Ev
  virtual void  v19(); // _ZN7S2435C23v19Ev
  S2435C2(); // tgen
};
//SIG(-1 S2435C2) C1{ BC2{ BC3{ vd v10 Fc Fi} vd v11 Fi[2] Fc FC4{ Fp} FC5{ BC6{ vd v14 Fc Fi} vd v12 v13 FL[4]}} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 Fp[3] Fi Fp[2] Fi[3] Fc[2] Fp Fc Fp FL[2]}


 S2435C2 ::~S2435C2(){ note_dtor("S2435C2", this);}
void  S2435C2 ::v11(){vfunc_called(this, "_ZN7S2435C23v11Ev");}
void  S2435C2 ::v12(){vfunc_called(this, "_ZN7S2435C23v12Ev");}
void  S2435C2 ::v13(){vfunc_called(this, "_ZN7S2435C23v13Ev");}
void  S2435C2 ::v14(){vfunc_called(this, "_ZN7S2435C23v14Ev");}
void  S2435C2 ::v15(){vfunc_called(this, "_ZN7S2435C23v15Ev");}
void  S2435C2 ::v16(){vfunc_called(this, "_ZN7S2435C23v16Ev");}
void  S2435C2 ::v17(){vfunc_called(this, "_ZN7S2435C23v17Ev");}
void  S2435C2 ::v18(){vfunc_called(this, "_ZN7S2435C23v18Ev");}
void  S2435C2 ::v19(){vfunc_called(this, "_ZN7S2435C23v19Ev");}
S2435C2 ::S2435C2(){ note_ctor("S2435C2", this);} // tgen

static void Test_S2435C2()
{
  extern Class_Descriptor cd_S2435C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(25,36)];
    init_test(&cd_S2435C2, buf);
    S2435C2 *dp, &lv = *(dp=new (buf) S2435C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,140), "sizeof(S2435C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2435C2)");
    check_base_class_offset(lv, (S2435C4*)(S2435C3*), 0, "S2435C2");
    check_base_class_offset(lv, (S2435C3*), 0, "S2435C2");
    check_field_offset(lv, s2435c2f0, ABISELECT(88,72), "S2435C2.s2435c2f0");
    check_field_offset(lv, s2435c2f1, ABISELECT(112,84), "S2435C2.s2435c2f1");
    check_field_offset(lv, s2435c2f2, ABISELECT(120,88), "S2435C2.s2435c2f2");
    check_field_offset(lv, s2435c2f3, ABISELECT(136,96), "S2435C2.s2435c2f3");
    check_field_offset(lv, s2435c2f4, ABISELECT(148,108), "S2435C2.s2435c2f4");
    check_field_offset(lv, s2435c2f5, ABISELECT(152,112), "S2435C2.s2435c2f5");
    check_field_offset(lv, s2435c2f6, ABISELECT(160,116), "S2435C2.s2435c2f6");
    check_field_offset(lv, s2435c2f7, ABISELECT(168,120), "S2435C2.s2435c2f7");
    check_field_offset(lv, s2435c2f8, ABISELECT(176,124), "S2435C2.s2435c2f8");
    test_class_info(&lv, &cd_S2435C2);
    dp->~S2435C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2435C2(Test_S2435C2, "S2435C2", ABISELECT(192,140));

#else // __cplusplus

extern void _ZN7S2435C2C1Ev();
extern void _ZN7S2435C2D1Ev();
Name_Map name_map_S2435C2[] = {
  NSPAIR(_ZN7S2435C2C1Ev),
  NSPAIR(_ZN7S2435C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2435C4;
extern VTBL_ENTRY _ZTI7S2435C4[];
extern  VTBL_ENTRY _ZTV7S2435C4[];
extern Class_Descriptor cd_S2435C3;
extern VTBL_ENTRY _ZTI7S2435C3[];
extern  VTBL_ENTRY _ZTV7S2435C3[];
static Base_Class bases_S2435C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2435C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2435C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2435C2[];
extern void _ZN7S2435C2D1Ev();
extern void _ZN7S2435C2D0Ev();
extern void _ZN7S2435C42v9Ev();
extern void _ZN7S2435C33v10Ev();
extern void _ZN7S2435C23v11Ev();
extern void _ZN7S2435C23v12Ev();
extern void _ZN7S2435C23v13Ev();
extern void _ZN7S2435C23v14Ev();
extern void _ZN7S2435C23v15Ev();
extern void _ZN7S2435C23v16Ev();
extern void _ZN7S2435C23v17Ev();
extern void _ZN7S2435C23v18Ev();
extern void _ZN7S2435C23v19Ev();
static  VTBL_ENTRY vtc_S2435C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2435C2[0]),
  (VTBL_ENTRY)&_ZN7S2435C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2435C2D0Ev,
  (VTBL_ENTRY)&_ZN7S2435C42v9Ev,
  (VTBL_ENTRY)&_ZN7S2435C33v10Ev,
  (VTBL_ENTRY)&_ZN7S2435C23v11Ev,
  (VTBL_ENTRY)&_ZN7S2435C23v12Ev,
  (VTBL_ENTRY)&_ZN7S2435C23v13Ev,
  (VTBL_ENTRY)&_ZN7S2435C23v14Ev,
  (VTBL_ENTRY)&_ZN7S2435C23v15Ev,
  (VTBL_ENTRY)&_ZN7S2435C23v16Ev,
  (VTBL_ENTRY)&_ZN7S2435C23v17Ev,
  (VTBL_ENTRY)&_ZN7S2435C23v18Ev,
  (VTBL_ENTRY)&_ZN7S2435C23v19Ev,
};
extern VTBL_ENTRY _ZTI7S2435C2[];
extern  VTBL_ENTRY _ZTV7S2435C2[];
Class_Descriptor cd_S2435C2 = {  "S2435C2", // class name
  bases_S2435C2, 2,
  &(vtc_S2435C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(192,140), // object size
  NSPAIRA(_ZTI7S2435C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2435C2),15, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2435C1  : S2435C2 {
  char s2435c1f0[4];
  virtual  ~S2435C1(); // _ZN7S2435C1D1Ev
  virtual void  v1(); // _ZN7S2435C12v1Ev
  virtual void  v2(); // _ZN7S2435C12v2Ev
  virtual void  v3(); // _ZN7S2435C12v3Ev
  virtual void  v4(); // _ZN7S2435C12v4Ev
  virtual void  v5(); // _ZN7S2435C12v5Ev
  virtual void  v6(); // _ZN7S2435C12v6Ev
  virtual void  v7(); // _ZN7S2435C12v7Ev
  virtual void  v8(); // _ZN7S2435C12v8Ev
  S2435C1(); // tgen
};
//SIG(1 S2435C1) C1{ BC2{ BC3{ BC4{ vd v9 Fc Fi} vd v10 Fi[2] Fc FC5{ Fp} FC6{ BC7{ vd v22 Fc Fi} vd v20 v21 FL[4]}} vd v11 v12 v13 v14 v15 v16 v17 v18 v19 Fp[3] Fi Fp[2] Fi[3] Fc[2] Fp Fc Fp FL[2]} vd v1 v2 v3 v4 v5 v6 v7 v8 Fc[4]}


 S2435C1 ::~S2435C1(){ note_dtor("S2435C1", this);}
void  S2435C1 ::v1(){vfunc_called(this, "_ZN7S2435C12v1Ev");}
void  S2435C1 ::v2(){vfunc_called(this, "_ZN7S2435C12v2Ev");}
void  S2435C1 ::v3(){vfunc_called(this, "_ZN7S2435C12v3Ev");}
void  S2435C1 ::v4(){vfunc_called(this, "_ZN7S2435C12v4Ev");}
void  S2435C1 ::v5(){vfunc_called(this, "_ZN7S2435C12v5Ev");}
void  S2435C1 ::v6(){vfunc_called(this, "_ZN7S2435C12v6Ev");}
void  S2435C1 ::v7(){vfunc_called(this, "_ZN7S2435C12v7Ev");}
void  S2435C1 ::v8(){vfunc_called(this, "_ZN7S2435C12v8Ev");}
S2435C1 ::S2435C1(){ note_ctor("S2435C1", this);} // tgen

static void Test_S2435C1()
{
  extern Class_Descriptor cd_S2435C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(26,37)];
    init_test(&cd_S2435C1, buf);
    S2435C1 *dp, &lv = *(dp=new (buf) S2435C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(200,144), "sizeof(S2435C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2435C1)");
    check_base_class_offset(lv, (S2435C4*)(S2435C3*)(S2435C2*), 0, "S2435C1");
    check_base_class_offset(lv, (S2435C3*)(S2435C2*), 0, "S2435C1");
    check_base_class_offset(lv, (S2435C2*), 0, "S2435C1");
    check_field_offset(lv, s2435c1f0, ABISELECT(192,140), "S2435C1.s2435c1f0");
    test_class_info(&lv, &cd_S2435C1);
    dp->~S2435C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2435C1(Test_S2435C1, "S2435C1", ABISELECT(200,144));

#else // __cplusplus

extern void _ZN7S2435C1C1Ev();
extern void _ZN7S2435C1D1Ev();
Name_Map name_map_S2435C1[] = {
  NSPAIR(_ZN7S2435C1C1Ev),
  NSPAIR(_ZN7S2435C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2435C4;
extern VTBL_ENTRY _ZTI7S2435C4[];
extern  VTBL_ENTRY _ZTV7S2435C4[];
extern Class_Descriptor cd_S2435C3;
extern VTBL_ENTRY _ZTI7S2435C3[];
extern  VTBL_ENTRY _ZTV7S2435C3[];
extern Class_Descriptor cd_S2435C2;
extern VTBL_ENTRY _ZTI7S2435C2[];
extern  VTBL_ENTRY _ZTV7S2435C2[];
static Base_Class bases_S2435C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2435C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2435C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S2435C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2435C1[];
extern void _ZN7S2435C1D1Ev();
extern void _ZN7S2435C1D0Ev();
extern void _ZN7S2435C42v9Ev();
extern void _ZN7S2435C33v10Ev();
extern void _ZN7S2435C23v11Ev();
extern void _ZN7S2435C23v12Ev();
extern void _ZN7S2435C23v13Ev();
extern void _ZN7S2435C23v14Ev();
extern void _ZN7S2435C23v15Ev();
extern void _ZN7S2435C23v16Ev();
extern void _ZN7S2435C23v17Ev();
extern void _ZN7S2435C23v18Ev();
extern void _ZN7S2435C23v19Ev();
extern void _ZN7S2435C12v1Ev();
extern void _ZN7S2435C12v2Ev();
extern void _ZN7S2435C12v3Ev();
extern void _ZN7S2435C12v4Ev();
extern void _ZN7S2435C12v5Ev();
extern void _ZN7S2435C12v6Ev();
extern void _ZN7S2435C12v7Ev();
extern void _ZN7S2435C12v8Ev();
static  VTBL_ENTRY vtc_S2435C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2435C1[0]),
  (VTBL_ENTRY)&_ZN7S2435C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2435C1D0Ev,
  (VTBL_ENTRY)&_ZN7S2435C42v9Ev,
  (VTBL_ENTRY)&_ZN7S2435C33v10Ev,
  (VTBL_ENTRY)&_ZN7S2435C23v11Ev,
  (VTBL_ENTRY)&_ZN7S2435C23v12Ev,
  (VTBL_ENTRY)&_ZN7S2435C23v13Ev,
  (VTBL_ENTRY)&_ZN7S2435C23v14Ev,
  (VTBL_ENTRY)&_ZN7S2435C23v15Ev,
  (VTBL_ENTRY)&_ZN7S2435C23v16Ev,
  (VTBL_ENTRY)&_ZN7S2435C23v17Ev,
  (VTBL_ENTRY)&_ZN7S2435C23v18Ev,
  (VTBL_ENTRY)&_ZN7S2435C23v19Ev,
  (VTBL_ENTRY)&_ZN7S2435C12v1Ev,
  (VTBL_ENTRY)&_ZN7S2435C12v2Ev,
  (VTBL_ENTRY)&_ZN7S2435C12v3Ev,
  (VTBL_ENTRY)&_ZN7S2435C12v4Ev,
  (VTBL_ENTRY)&_ZN7S2435C12v5Ev,
  (VTBL_ENTRY)&_ZN7S2435C12v6Ev,
  (VTBL_ENTRY)&_ZN7S2435C12v7Ev,
  (VTBL_ENTRY)&_ZN7S2435C12v8Ev,
};
extern VTBL_ENTRY _ZTI7S2435C1[];
extern  VTBL_ENTRY _ZTV7S2435C1[];
Class_Descriptor cd_S2435C1 = {  "S2435C1", // class name
  bases_S2435C1, 3,
  &(vtc_S2435C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(200,144), // object size
  NSPAIRA(_ZTI7S2435C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2435C1),23, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2437C4  {
  char s2437c4f0;
  int s2437c4f1;
  virtual  ~S2437C4(); // _ZN7S2437C4D1Ev
  virtual void  v9(); // _ZN7S2437C42v9Ev
  S2437C4(); // tgen
};
//SIG(-1 S2437C4) C1{ vd v1 Fc Fi}


 S2437C4 ::~S2437C4(){ note_dtor("S2437C4", this);}
void  S2437C4 ::v9(){vfunc_called(this, "_ZN7S2437C42v9Ev");}
S2437C4 ::S2437C4(){ note_ctor("S2437C4", this);} // tgen

static void Test_S2437C4()
{
  extern Class_Descriptor cd_S2437C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S2437C4, buf);
    S2437C4 *dp, &lv = *(dp=new (buf) S2437C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S2437C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2437C4)");
    check_field_offset(lv, s2437c4f0, ABISELECT(8,4), "S2437C4.s2437c4f0");
    check_field_offset(lv, s2437c4f1, ABISELECT(12,8), "S2437C4.s2437c4f1");
    test_class_info(&lv, &cd_S2437C4);
    dp->~S2437C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2437C4(Test_S2437C4, "S2437C4", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S2437C4C1Ev();
extern void _ZN7S2437C4D1Ev();
Name_Map name_map_S2437C4[] = {
  NSPAIR(_ZN7S2437C4C1Ev),
  NSPAIR(_ZN7S2437C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S2437C4[];
extern void _ZN7S2437C4D1Ev();
extern void _ZN7S2437C4D0Ev();
extern void _ZN7S2437C42v9Ev();
static  VTBL_ENTRY vtc_S2437C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2437C4[0]),
  (VTBL_ENTRY)&_ZN7S2437C4D1Ev,
  (VTBL_ENTRY)&_ZN7S2437C4D0Ev,
  (VTBL_ENTRY)&_ZN7S2437C42v9Ev,
};
extern VTBL_ENTRY _ZTI7S2437C4[];
extern  VTBL_ENTRY _ZTV7S2437C4[];
Class_Descriptor cd_S2437C4 = {  "S2437C4", // class name
  0,0,//no base classes
  &(vtc_S2437C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S2437C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S2437C4),5, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2437C3  : S2437C4 {
  int s2437c3f0[2];
  char s2437c3f1;
  ::S2436C5_nt s2437c3f2;
  ::S2436C6 s2437c3f3;
  virtual  ~S2437C3(); // _ZN7S2437C3D1Ev
  virtual void  v10(); // _ZN7S2437C33v10Ev
  S2437C3(); // tgen
};
//SIG(-1 S2437C3) C1{ BC2{ vd v2 Fc Fi} vd v1 Fi[2] Fc FC3{ Fp} FC4{ BC5{ vd v5 Fc Fi} vd v3 v4 FL[4]}}


 S2437C3 ::~S2437C3(){ note_dtor("S2437C3", this);}
void  S2437C3 ::v10(){vfunc_called(this, "_ZN7S2437C33v10Ev");}
S2437C3 ::S2437C3(){ note_ctor("S2437C3", this);} // tgen

static void Test_S2437C3()
{
  extern Class_Descriptor cd_S2437C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,19)];
    init_test(&cd_S2437C3, buf);
    S2437C3 *dp, &lv = *(dp=new (buf) S2437C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,72), "sizeof(S2437C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2437C3)");
    check_base_class_offset(lv, (S2437C4*), 0, "S2437C3");
    check_field_offset(lv, s2437c3f0, ABISELECT(16,12), "S2437C3.s2437c3f0");
    check_field_offset(lv, s2437c3f1, ABISELECT(24,20), "S2437C3.s2437c3f1");
    check_field_offset(lv, s2437c3f2, ABISELECT(32,24), "S2437C3.s2437c3f2");
    check_field_offset(lv, s2437c3f3, ABISELECT(40,28), "S2437C3.s2437c3f3");
    test_class_info(&lv, &cd_S2437C3);
    dp->~S2437C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2437C3(Test_S2437C3, "S2437C3", ABISELECT(88,72));

#else // __cplusplus

extern void _ZN7S2437C3C1Ev();
extern void _ZN7S2437C3D1Ev();
Name_Map name_map_S2437C3[] = {
  NSPAIR(_ZN7S2437C3C1Ev),
  NSPAIR(_ZN7S2437C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2437C4;
extern VTBL_ENTRY _ZTI7S2437C4[];
extern  VTBL_ENTRY _ZTV7S2437C4[];
static Base_Class bases_S2437C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2437C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2437C3[];
extern void _ZN7S2437C3D1Ev();
extern void _ZN7S2437C3D0Ev();
extern void _ZN7S2437C42v9Ev();
extern void _ZN7S2437C33v10Ev();
static  VTBL_ENTRY vtc_S2437C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2437C3[0]),
  (VTBL_ENTRY)&_ZN7S2437C3D1Ev,
  (VTBL_ENTRY)&_ZN7S2437C3D0Ev,
  (VTBL_ENTRY)&_ZN7S2437C42v9Ev,
  (VTBL_ENTRY)&_ZN7S2437C33v10Ev,
};
extern VTBL_ENTRY _ZTI7S2437C3[];
extern  VTBL_ENTRY _ZTV7S2437C3[];
Class_Descriptor cd_S2437C3 = {  "S2437C3", // class name
  bases_S2437C3, 1,
  &(vtc_S2437C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,72), // object size
  NSPAIRA(_ZTI7S2437C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2437C3),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2437C2  : S2437C3 {
  void *s2437c2f0[3];
  int s2437c2f1;
  void *s2437c2f2[2];
  int s2437c2f3[3];
  char s2437c2f4[2];
  void *s2437c2f5;
  char s2437c2f6;
  void *s2437c2f7;
  __tsi64 s2437c2f8[2];
  virtual  ~S2437C2(); // _ZN7S2437C2D1Ev
  virtual void  v11(); // _ZN7S2437C23v11Ev
  virtual void  v12(); // _ZN7S2437C23v12Ev
  virtual void  v13(); // _ZN7S2437C23v13Ev
  virtual void  v14(); // _ZN7S2437C23v14Ev
  virtual void  v15(); // _ZN7S2437C23v15Ev
  virtual void  v16(); // _ZN7S2437C23v16Ev
  virtual void  v17(); // _ZN7S2437C23v17Ev
  virtual void  v18(); // _ZN7S2437C23v18Ev
  virtual void  v19(); // _ZN7S2437C23v19Ev
  S2437C2(); // tgen
};
//SIG(-1 S2437C2) C1{ BC2{ BC3{ vd v10 Fc Fi} vd v11 Fi[2] Fc FC4{ Fp} FC5{ BC6{ vd v14 Fc Fi} vd v12 v13 FL[4]}} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 Fp[3] Fi Fp[2] Fi[3] Fc[2] Fp Fc Fp FL[2]}


 S2437C2 ::~S2437C2(){ note_dtor("S2437C2", this);}
void  S2437C2 ::v11(){vfunc_called(this, "_ZN7S2437C23v11Ev");}
void  S2437C2 ::v12(){vfunc_called(this, "_ZN7S2437C23v12Ev");}
void  S2437C2 ::v13(){vfunc_called(this, "_ZN7S2437C23v13Ev");}
void  S2437C2 ::v14(){vfunc_called(this, "_ZN7S2437C23v14Ev");}
void  S2437C2 ::v15(){vfunc_called(this, "_ZN7S2437C23v15Ev");}
void  S2437C2 ::v16(){vfunc_called(this, "_ZN7S2437C23v16Ev");}
void  S2437C2 ::v17(){vfunc_called(this, "_ZN7S2437C23v17Ev");}
void  S2437C2 ::v18(){vfunc_called(this, "_ZN7S2437C23v18Ev");}
void  S2437C2 ::v19(){vfunc_called(this, "_ZN7S2437C23v19Ev");}
S2437C2 ::S2437C2(){ note_ctor("S2437C2", this);} // tgen

static void Test_S2437C2()
{
  extern Class_Descriptor cd_S2437C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(25,36)];
    init_test(&cd_S2437C2, buf);
    S2437C2 *dp, &lv = *(dp=new (buf) S2437C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,140), "sizeof(S2437C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2437C2)");
    check_base_class_offset(lv, (S2437C4*)(S2437C3*), 0, "S2437C2");
    check_base_class_offset(lv, (S2437C3*), 0, "S2437C2");
    check_field_offset(lv, s2437c2f0, ABISELECT(88,72), "S2437C2.s2437c2f0");
    check_field_offset(lv, s2437c2f1, ABISELECT(112,84), "S2437C2.s2437c2f1");
    check_field_offset(lv, s2437c2f2, ABISELECT(120,88), "S2437C2.s2437c2f2");
    check_field_offset(lv, s2437c2f3, ABISELECT(136,96), "S2437C2.s2437c2f3");
    check_field_offset(lv, s2437c2f4, ABISELECT(148,108), "S2437C2.s2437c2f4");
    check_field_offset(lv, s2437c2f5, ABISELECT(152,112), "S2437C2.s2437c2f5");
    check_field_offset(lv, s2437c2f6, ABISELECT(160,116), "S2437C2.s2437c2f6");
    check_field_offset(lv, s2437c2f7, ABISELECT(168,120), "S2437C2.s2437c2f7");
    check_field_offset(lv, s2437c2f8, ABISELECT(176,124), "S2437C2.s2437c2f8");
    test_class_info(&lv, &cd_S2437C2);
    dp->~S2437C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2437C2(Test_S2437C2, "S2437C2", ABISELECT(192,140));

#else // __cplusplus

extern void _ZN7S2437C2C1Ev();
extern void _ZN7S2437C2D1Ev();
Name_Map name_map_S2437C2[] = {
  NSPAIR(_ZN7S2437C2C1Ev),
  NSPAIR(_ZN7S2437C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2437C4;
extern VTBL_ENTRY _ZTI7S2437C4[];
extern  VTBL_ENTRY _ZTV7S2437C4[];
extern Class_Descriptor cd_S2437C3;
extern VTBL_ENTRY _ZTI7S2437C3[];
extern  VTBL_ENTRY _ZTV7S2437C3[];
static Base_Class bases_S2437C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2437C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2437C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2437C2[];
extern void _ZN7S2437C2D1Ev();
extern void _ZN7S2437C2D0Ev();
extern void _ZN7S2437C42v9Ev();
extern void _ZN7S2437C33v10Ev();
extern void _ZN7S2437C23v11Ev();
extern void _ZN7S2437C23v12Ev();
extern void _ZN7S2437C23v13Ev();
extern void _ZN7S2437C23v14Ev();
extern void _ZN7S2437C23v15Ev();
extern void _ZN7S2437C23v16Ev();
extern void _ZN7S2437C23v17Ev();
extern void _ZN7S2437C23v18Ev();
extern void _ZN7S2437C23v19Ev();
static  VTBL_ENTRY vtc_S2437C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2437C2[0]),
  (VTBL_ENTRY)&_ZN7S2437C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2437C2D0Ev,
  (VTBL_ENTRY)&_ZN7S2437C42v9Ev,
  (VTBL_ENTRY)&_ZN7S2437C33v10Ev,
  (VTBL_ENTRY)&_ZN7S2437C23v11Ev,
  (VTBL_ENTRY)&_ZN7S2437C23v12Ev,
  (VTBL_ENTRY)&_ZN7S2437C23v13Ev,
  (VTBL_ENTRY)&_ZN7S2437C23v14Ev,
  (VTBL_ENTRY)&_ZN7S2437C23v15Ev,
  (VTBL_ENTRY)&_ZN7S2437C23v16Ev,
  (VTBL_ENTRY)&_ZN7S2437C23v17Ev,
  (VTBL_ENTRY)&_ZN7S2437C23v18Ev,
  (VTBL_ENTRY)&_ZN7S2437C23v19Ev,
};
extern VTBL_ENTRY _ZTI7S2437C2[];
extern  VTBL_ENTRY _ZTV7S2437C2[];
Class_Descriptor cd_S2437C2 = {  "S2437C2", // class name
  bases_S2437C2, 2,
  &(vtc_S2437C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(192,140), // object size
  NSPAIRA(_ZTI7S2437C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2437C2),15, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2437C1  : S2437C2 {
  void *s2437c1f0;
  virtual  ~S2437C1(); // _ZN7S2437C1D1Ev
  virtual void  v1(); // _ZN7S2437C12v1Ev
  virtual void  v2(); // _ZN7S2437C12v2Ev
  virtual void  v3(); // _ZN7S2437C12v3Ev
  virtual void  v4(); // _ZN7S2437C12v4Ev
  virtual void  v5(); // _ZN7S2437C12v5Ev
  virtual void  v6(); // _ZN7S2437C12v6Ev
  virtual void  v7(); // _ZN7S2437C12v7Ev
  virtual void  v8(); // _ZN7S2437C12v8Ev
  S2437C1(); // tgen
};
//SIG(1 S2437C1) C1{ BC2{ BC3{ BC4{ vd v9 Fc Fi} vd v10 Fi[2] Fc FC5{ Fp} FC6{ BC7{ vd v22 Fc Fi} vd v20 v21 FL[4]}} vd v11 v12 v13 v14 v15 v16 v17 v18 v19 Fp[3] Fi Fp[2] Fi[3] Fc[2] Fp Fc Fp FL[2]} vd v1 v2 v3 v4 v5 v6 v7 v8 Fp}


 S2437C1 ::~S2437C1(){ note_dtor("S2437C1", this);}
void  S2437C1 ::v1(){vfunc_called(this, "_ZN7S2437C12v1Ev");}
void  S2437C1 ::v2(){vfunc_called(this, "_ZN7S2437C12v2Ev");}
void  S2437C1 ::v3(){vfunc_called(this, "_ZN7S2437C12v3Ev");}
void  S2437C1 ::v4(){vfunc_called(this, "_ZN7S2437C12v4Ev");}
void  S2437C1 ::v5(){vfunc_called(this, "_ZN7S2437C12v5Ev");}
void  S2437C1 ::v6(){vfunc_called(this, "_ZN7S2437C12v6Ev");}
void  S2437C1 ::v7(){vfunc_called(this, "_ZN7S2437C12v7Ev");}
void  S2437C1 ::v8(){vfunc_called(this, "_ZN7S2437C12v8Ev");}
S2437C1 ::S2437C1(){ note_ctor("S2437C1", this);} // tgen

static void Test_S2437C1()
{
  extern Class_Descriptor cd_S2437C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(26,37)];
    init_test(&cd_S2437C1, buf);
    S2437C1 *dp, &lv = *(dp=new (buf) S2437C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(200,144), "sizeof(S2437C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2437C1)");
    check_base_class_offset(lv, (S2437C4*)(S2437C3*)(S2437C2*), 0, "S2437C1");
    check_base_class_offset(lv, (S2437C3*)(S2437C2*), 0, "S2437C1");
    check_base_class_offset(lv, (S2437C2*), 0, "S2437C1");
    check_field_offset(lv, s2437c1f0, ABISELECT(192,140), "S2437C1.s2437c1f0");
    test_class_info(&lv, &cd_S2437C1);
    dp->~S2437C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2437C1(Test_S2437C1, "S2437C1", ABISELECT(200,144));

#else // __cplusplus

extern void _ZN7S2437C1C1Ev();
extern void _ZN7S2437C1D1Ev();
Name_Map name_map_S2437C1[] = {
  NSPAIR(_ZN7S2437C1C1Ev),
  NSPAIR(_ZN7S2437C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2437C4;
extern VTBL_ENTRY _ZTI7S2437C4[];
extern  VTBL_ENTRY _ZTV7S2437C4[];
extern Class_Descriptor cd_S2437C3;
extern VTBL_ENTRY _ZTI7S2437C3[];
extern  VTBL_ENTRY _ZTV7S2437C3[];
extern Class_Descriptor cd_S2437C2;
extern VTBL_ENTRY _ZTI7S2437C2[];
extern  VTBL_ENTRY _ZTV7S2437C2[];
static Base_Class bases_S2437C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2437C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2437C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S2437C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2437C1[];
extern void _ZN7S2437C1D1Ev();
extern void _ZN7S2437C1D0Ev();
extern void _ZN7S2437C42v9Ev();
extern void _ZN7S2437C33v10Ev();
extern void _ZN7S2437C23v11Ev();
extern void _ZN7S2437C23v12Ev();
extern void _ZN7S2437C23v13Ev();
extern void _ZN7S2437C23v14Ev();
extern void _ZN7S2437C23v15Ev();
extern void _ZN7S2437C23v16Ev();
extern void _ZN7S2437C23v17Ev();
extern void _ZN7S2437C23v18Ev();
extern void _ZN7S2437C23v19Ev();
extern void _ZN7S2437C12v1Ev();
extern void _ZN7S2437C12v2Ev();
extern void _ZN7S2437C12v3Ev();
extern void _ZN7S2437C12v4Ev();
extern void _ZN7S2437C12v5Ev();
extern void _ZN7S2437C12v6Ev();
extern void _ZN7S2437C12v7Ev();
extern void _ZN7S2437C12v8Ev();
static  VTBL_ENTRY vtc_S2437C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2437C1[0]),
  (VTBL_ENTRY)&_ZN7S2437C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2437C1D0Ev,
  (VTBL_ENTRY)&_ZN7S2437C42v9Ev,
  (VTBL_ENTRY)&_ZN7S2437C33v10Ev,
  (VTBL_ENTRY)&_ZN7S2437C23v11Ev,
  (VTBL_ENTRY)&_ZN7S2437C23v12Ev,
  (VTBL_ENTRY)&_ZN7S2437C23v13Ev,
  (VTBL_ENTRY)&_ZN7S2437C23v14Ev,
  (VTBL_ENTRY)&_ZN7S2437C23v15Ev,
  (VTBL_ENTRY)&_ZN7S2437C23v16Ev,
  (VTBL_ENTRY)&_ZN7S2437C23v17Ev,
  (VTBL_ENTRY)&_ZN7S2437C23v18Ev,
  (VTBL_ENTRY)&_ZN7S2437C23v19Ev,
  (VTBL_ENTRY)&_ZN7S2437C12v1Ev,
  (VTBL_ENTRY)&_ZN7S2437C12v2Ev,
  (VTBL_ENTRY)&_ZN7S2437C12v3Ev,
  (VTBL_ENTRY)&_ZN7S2437C12v4Ev,
  (VTBL_ENTRY)&_ZN7S2437C12v5Ev,
  (VTBL_ENTRY)&_ZN7S2437C12v6Ev,
  (VTBL_ENTRY)&_ZN7S2437C12v7Ev,
  (VTBL_ENTRY)&_ZN7S2437C12v8Ev,
};
extern VTBL_ENTRY _ZTI7S2437C1[];
extern  VTBL_ENTRY _ZTV7S2437C1[];
Class_Descriptor cd_S2437C1 = {  "S2437C1", // class name
  bases_S2437C1, 3,
  &(vtc_S2437C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(200,144), // object size
  NSPAIRA(_ZTI7S2437C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2437C1),23, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7630C3_nt  {
  virtual void  v5(); // _ZN10S7630C3_nt2v5Ev
  ~S7630C3_nt(); // tgen
  S7630C3_nt(); // tgen
};
//SIG(-1 S7630C3_nt) C1{ v1}


void  S7630C3_nt ::v5(){vfunc_called(this, "_ZN10S7630C3_nt2v5Ev");}
S7630C3_nt ::~S7630C3_nt(){ note_dtor("S7630C3_nt", this);} // tgen
S7630C3_nt ::S7630C3_nt(){ note_ctor("S7630C3_nt", this);} // tgen

//skip512 S7630C3_nt

#else // __cplusplus

extern void _ZN10S7630C3_ntC1Ev();
extern void _ZN10S7630C3_ntD1Ev();
Name_Map name_map_S7630C3_nt[] = {
  NSPAIR(_ZN10S7630C3_ntC1Ev),
  NSPAIR(_ZN10S7630C3_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S7630C3_nt[];
extern void _ZN10S7630C3_nt2v5Ev();
static  VTBL_ENTRY vtc_S7630C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S7630C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S7630C3_nt2v5Ev,
};
extern VTBL_ENTRY _ZTI10S7630C3_nt[];
VTBL_ENTRY *P__ZTI10S7630C3_nt = _ZTI10S7630C3_nt; 
extern  VTBL_ENTRY _ZTV10S7630C3_nt[];
Class_Descriptor cd_S7630C3_nt = {  "S7630C3_nt", // class name
  0,0,//no base classes
  &(vtc_S7630C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S7630C3_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S7630C3_nt),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7630C2  : virtual S7630C3_nt {
  int s7630c2f0;
  __tsi64 s7630c2f1;
  int s7630c2f2;
  char s7630c2f3;
  virtual void  v6(); // _ZN7S7630C22v6Ev
  virtual void  v7(); // _ZN7S7630C22v7Ev
  virtual void  v8(); // _ZN7S7630C22v8Ev
  virtual void  v9(); // _ZN7S7630C22v9Ev
  ~S7630C2(); // tgen
  S7630C2(); // tgen
};
//SIG(-1 S7630C2) C1{ VBC2{ v5} v1 v2 v3 v4 Fi FL Fi Fc}


void  S7630C2 ::v6(){vfunc_called(this, "_ZN7S7630C22v6Ev");}
void  S7630C2 ::v7(){vfunc_called(this, "_ZN7S7630C22v7Ev");}
void  S7630C2 ::v8(){vfunc_called(this, "_ZN7S7630C22v8Ev");}
void  S7630C2 ::v9(){vfunc_called(this, "_ZN7S7630C22v9Ev");}
S7630C2 ::~S7630C2(){ note_dtor("S7630C2", this);} // tgen
S7630C2 ::S7630C2(){ note_ctor("S7630C2", this);} // tgen

static void Test_S7630C2()
{
  extern Class_Descriptor cd_S7630C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,7)];
    init_test(&cd_S7630C2, buf);
    S7630C2 *dp, &lv = *(dp=new (buf) S7630C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S7630C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7630C2)");
    check_base_class_offset(lv, (S7630C3_nt*), 0, "S7630C2");
    check_field_offset(lv, s7630c2f0, ABISELECT(8,4), "S7630C2.s7630c2f0");
    check_field_offset(lv, s7630c2f1, ABISELECT(16,8), "S7630C2.s7630c2f1");
    check_field_offset(lv, s7630c2f2, ABISELECT(24,16), "S7630C2.s7630c2f2");
    check_field_offset(lv, s7630c2f3, ABISELECT(28,20), "S7630C2.s7630c2f3");
    test_class_info(&lv, &cd_S7630C2);
    dp->~S7630C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7630C2(Test_S7630C2, "S7630C2", ABISELECT(32,24));

#else // __cplusplus

extern void _ZN7S7630C2C1Ev();
extern void _ZN7S7630C2D1Ev();
Name_Map name_map_S7630C2[] = {
  NSPAIR(_ZN7S7630C2C1Ev),
  NSPAIR(_ZN7S7630C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7630C3_nt;
extern VTBL_ENTRY _ZTI10S7630C3_nt[];
extern  VTBL_ENTRY _ZTV10S7630C3_nt[];
static Base_Class bases_S7630C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7630C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7630C2[];
extern void _ZN10S7630C3_nt2v5Ev();
extern void _ZN7S7630C22v6Ev();
extern void _ZN7S7630C22v7Ev();
extern void _ZN7S7630C22v8Ev();
extern void _ZN7S7630C22v9Ev();
static  VTBL_ENTRY vtc_S7630C2[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7630C2[0]),
  (VTBL_ENTRY)&_ZN10S7630C3_nt2v5Ev,
  (VTBL_ENTRY)&_ZN7S7630C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7630C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7630C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7630C22v9Ev,
};
extern VTBL_ENTRY _ZTV7S7630C2[];
static  VTT_ENTRY vtt_S7630C2[] = {
  {&(_ZTV7S7630C2[4]),  4,9},
  {&(_ZTV7S7630C2[4]),  4,9},
};
extern VTBL_ENTRY _ZTI7S7630C2[];
extern  VTBL_ENTRY _ZTV7S7630C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7630C2[];
Class_Descriptor cd_S7630C2 = {  "S7630C2", // class name
  bases_S7630C2, 1,
  &(vtc_S7630C2[0]), // expected_vtbl_contents
  &(vtt_S7630C2[0]), // expected_vtt_contents
  ABISELECT(32,24), // object size
  NSPAIRA(_ZTI7S7630C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7630C2),9, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7630C2),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7630C6  {
  int s7630c6f0;
  char s7630c6f1[2];
  virtual void  v10(); // _ZN7S7630C63v10Ev
  virtual void  v11(); // _ZN7S7630C63v11Ev
  virtual void  v12(); // _ZN7S7630C63v12Ev
  virtual void  v13(); // _ZN7S7630C63v13Ev
  virtual void  v14(); // _ZN7S7630C63v14Ev
  ~S7630C6(); // tgen
  S7630C6(); // tgen
};
//SIG(-1 S7630C6) C1{ v1 v2 v3 v4 v5 Fi Fc[2]}


void  S7630C6 ::v10(){vfunc_called(this, "_ZN7S7630C63v10Ev");}
void  S7630C6 ::v11(){vfunc_called(this, "_ZN7S7630C63v11Ev");}
void  S7630C6 ::v12(){vfunc_called(this, "_ZN7S7630C63v12Ev");}
void  S7630C6 ::v13(){vfunc_called(this, "_ZN7S7630C63v13Ev");}
void  S7630C6 ::v14(){vfunc_called(this, "_ZN7S7630C63v14Ev");}
S7630C6 ::~S7630C6(){ note_dtor("S7630C6", this);} // tgen
S7630C6 ::S7630C6(){ note_ctor("S7630C6", this);} // tgen

static void Test_S7630C6()
{
  extern Class_Descriptor cd_S7630C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S7630C6, buf);
    S7630C6 *dp, &lv = *(dp=new (buf) S7630C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S7630C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7630C6)");
    check_field_offset(lv, s7630c6f0, ABISELECT(8,4), "S7630C6.s7630c6f0");
    check_field_offset(lv, s7630c6f1, ABISELECT(12,8), "S7630C6.s7630c6f1");
    test_class_info(&lv, &cd_S7630C6);
    dp->~S7630C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7630C6(Test_S7630C6, "S7630C6", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S7630C6C1Ev();
extern void _ZN7S7630C6D1Ev();
Name_Map name_map_S7630C6[] = {
  NSPAIR(_ZN7S7630C6C1Ev),
  NSPAIR(_ZN7S7630C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7630C6[];
extern void _ZN7S7630C63v10Ev();
extern void _ZN7S7630C63v11Ev();
extern void _ZN7S7630C63v12Ev();
extern void _ZN7S7630C63v13Ev();
extern void _ZN7S7630C63v14Ev();
static  VTBL_ENTRY vtc_S7630C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7630C6[0]),
  (VTBL_ENTRY)&_ZN7S7630C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7630C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7630C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7630C63v13Ev,
  (VTBL_ENTRY)&_ZN7S7630C63v14Ev,
};
extern VTBL_ENTRY _ZTI7S7630C6[];
extern  VTBL_ENTRY _ZTV7S7630C6[];
Class_Descriptor cd_S7630C6 = {  "S7630C6", // class name
  0,0,//no base classes
  &(vtc_S7630C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S7630C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7630C6),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7630C5  : S7630C6 {
  virtual  ~S7630C5(); // _ZN7S7630C5D1Ev
  virtual void  v15(); // _ZN7S7630C53v15Ev
  virtual void  v16(); // _ZN7S7630C53v16Ev
  virtual void  v17(); // _ZN7S7630C53v17Ev
  virtual void  v18(); // _ZN7S7630C53v18Ev
  virtual void  v19(); // _ZN7S7630C53v19Ev
  virtual void  v20(); // _ZN7S7630C53v20Ev
  virtual void  v21(); // _ZN7S7630C53v21Ev
  virtual void  v22(); // _ZN7S7630C53v22Ev
  S7630C5(); // tgen
};
//SIG(-1 S7630C5) C1{ BC2{ v9 v10 v11 v12 v13 Fi Fc[2]} vd v1 v2 v3 v4 v5 v6 v7 v8}


 S7630C5 ::~S7630C5(){ note_dtor("S7630C5", this);}
void  S7630C5 ::v15(){vfunc_called(this, "_ZN7S7630C53v15Ev");}
void  S7630C5 ::v16(){vfunc_called(this, "_ZN7S7630C53v16Ev");}
void  S7630C5 ::v17(){vfunc_called(this, "_ZN7S7630C53v17Ev");}
void  S7630C5 ::v18(){vfunc_called(this, "_ZN7S7630C53v18Ev");}
void  S7630C5 ::v19(){vfunc_called(this, "_ZN7S7630C53v19Ev");}
void  S7630C5 ::v20(){vfunc_called(this, "_ZN7S7630C53v20Ev");}
void  S7630C5 ::v21(){vfunc_called(this, "_ZN7S7630C53v21Ev");}
void  S7630C5 ::v22(){vfunc_called(this, "_ZN7S7630C53v22Ev");}
S7630C5 ::S7630C5(){ note_ctor("S7630C5", this);} // tgen

static void Test_S7630C5()
{
  extern Class_Descriptor cd_S7630C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S7630C5, buf);
    S7630C5 *dp, &lv = *(dp=new (buf) S7630C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S7630C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7630C5)");
    check_base_class_offset(lv, (S7630C6*), 0, "S7630C5");
    test_class_info(&lv, &cd_S7630C5);
    dp->~S7630C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7630C5(Test_S7630C5, "S7630C5", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S7630C5C1Ev();
extern void _ZN7S7630C5D1Ev();
Name_Map name_map_S7630C5[] = {
  NSPAIR(_ZN7S7630C5C1Ev),
  NSPAIR(_ZN7S7630C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7630C6;
extern VTBL_ENTRY _ZTI7S7630C6[];
extern  VTBL_ENTRY _ZTV7S7630C6[];
static Base_Class bases_S7630C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7630C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7630C5[];
extern void _ZN7S7630C63v10Ev();
extern void _ZN7S7630C63v11Ev();
extern void _ZN7S7630C63v12Ev();
extern void _ZN7S7630C63v13Ev();
extern void _ZN7S7630C63v14Ev();
extern void _ZN7S7630C5D1Ev();
extern void _ZN7S7630C5D0Ev();
extern void _ZN7S7630C53v15Ev();
extern void _ZN7S7630C53v16Ev();
extern void _ZN7S7630C53v17Ev();
extern void _ZN7S7630C53v18Ev();
extern void _ZN7S7630C53v19Ev();
extern void _ZN7S7630C53v20Ev();
extern void _ZN7S7630C53v21Ev();
extern void _ZN7S7630C53v22Ev();
static  VTBL_ENTRY vtc_S7630C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7630C5[0]),
  (VTBL_ENTRY)&_ZN7S7630C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7630C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7630C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7630C63v13Ev,
  (VTBL_ENTRY)&_ZN7S7630C63v14Ev,
  (VTBL_ENTRY)&_ZN7S7630C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7630C5D0Ev,
  (VTBL_ENTRY)&_ZN7S7630C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7630C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7630C53v17Ev,
  (VTBL_ENTRY)&_ZN7S7630C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7630C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7630C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7630C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7630C53v22Ev,
};
extern VTBL_ENTRY _ZTI7S7630C5[];
extern  VTBL_ENTRY _ZTV7S7630C5[];
Class_Descriptor cd_S7630C5 = {  "S7630C5", // class name
  bases_S7630C5, 1,
  &(vtc_S7630C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S7630C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7630C5),17, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7630C4  : S7630C5 , virtual S7630C6 {
  short s7630c4f0:13;
  int s7630c4f1;
  void *s7630c4f2;
  virtual  ~S7630C4(); // _ZN7S7630C4D2Ev
  virtual void  v23(); // _ZN7S7630C43v23Ev
  virtual void  v24(); // _ZN7S7630C43v24Ev
  virtual void  v25(); // _ZN7S7630C43v25Ev
  virtual void  v26(); // _ZN7S7630C43v26Ev
  virtual void  v27(); // _ZN7S7630C43v27Ev
  virtual void  v28(); // _ZN7S7630C43v28Ev
  virtual void  v29(); // _ZN7S7630C43v29Ev
  S7630C4(); // tgen
};
//SIG(-1 S7630C4) C1{ BC2{ BC3{ v8 v9 v10 v11 v12 Fi Fc[2]} vd v13 v14 v15 v16 v17 v18 v19 v20} VBC3 vd v1 v2 v3 v4 v5 v6 v7 Fs:13 Fi Fp}


 S7630C4 ::~S7630C4(){ note_dtor("S7630C4", this);}
void  S7630C4 ::v23(){vfunc_called(this, "_ZN7S7630C43v23Ev");}
void  S7630C4 ::v24(){vfunc_called(this, "_ZN7S7630C43v24Ev");}
void  S7630C4 ::v25(){vfunc_called(this, "_ZN7S7630C43v25Ev");}
void  S7630C4 ::v26(){vfunc_called(this, "_ZN7S7630C43v26Ev");}
void  S7630C4 ::v27(){vfunc_called(this, "_ZN7S7630C43v27Ev");}
void  S7630C4 ::v28(){vfunc_called(this, "_ZN7S7630C43v28Ev");}
void  S7630C4 ::v29(){vfunc_called(this, "_ZN7S7630C43v29Ev");}
S7630C4 ::S7630C4(){ note_ctor("S7630C4", this);} // tgen

static void Test_S7630C4()
{
  extern Class_Descriptor cd_S7630C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S7630C4, buf);
    S7630C4 *dp, &lv = *(dp=new (buf) S7630C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S7630C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7630C4)");
    check_base_class_offset(lv, (S7630C6*)(S7630C5*), 0, "S7630C4");
    check_base_class_offset(lv, (S7630C5*), 0, "S7630C4");
    /*is_ambiguous_... S7630C4::S7630C6 */ AMB_check_base_class_offset(lv, (S7630C6*), ABISELECT(32,20), "S7630C4");
    set_bf_and_test(lv, s7630c4f0, ABISELECT(14,10), 0, 13, 1, "S7630C4");
    set_bf_and_test(lv, s7630c4f0, ABISELECT(14,10), 0, 13, hide_sll(1LL<<12), "S7630C4");
    check_field_offset(lv, s7630c4f1, ABISELECT(16,12), "S7630C4.s7630c4f1");
    check_field_offset(lv, s7630c4f2, ABISELECT(24,16), "S7630C4.s7630c4f2");
    test_class_info(&lv, &cd_S7630C4);
    dp->~S7630C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7630C4(Test_S7630C4, "S7630C4", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN7S7630C4C1Ev();
extern void _ZN7S7630C4D2Ev();
Name_Map name_map_S7630C4[] = {
  NSPAIR(_ZN7S7630C4C1Ev),
  NSPAIR(_ZN7S7630C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7630C6;
extern VTBL_ENTRY _ZTI7S7630C6[];
extern  VTBL_ENTRY _ZTV7S7630C6[];
extern Class_Descriptor cd_S7630C5;
extern VTBL_ENTRY _ZTI7S7630C5[];
extern  VTBL_ENTRY _ZTV7S7630C5[];
extern Class_Descriptor cd_S7630C6;
extern VTBL_ENTRY _ZTI7S7630C6[];
extern  VTBL_ENTRY _ZTV7S7630C6[];
static Base_Class bases_S7630C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7630C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7630C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7630C6,    ABISELECT(32,20), //bcp->offset
    25, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7630C4[];
extern void _ZN7S7630C63v10Ev();
extern void _ZN7S7630C63v11Ev();
extern void _ZN7S7630C63v12Ev();
extern void _ZN7S7630C63v13Ev();
extern void _ZN7S7630C63v14Ev();
extern void _ZN7S7630C4D1Ev();
extern void _ZN7S7630C4D0Ev();
extern void _ZN7S7630C53v15Ev();
extern void _ZN7S7630C53v16Ev();
extern void _ZN7S7630C53v17Ev();
extern void _ZN7S7630C53v18Ev();
extern void _ZN7S7630C53v19Ev();
extern void _ZN7S7630C53v20Ev();
extern void _ZN7S7630C53v21Ev();
extern void _ZN7S7630C53v22Ev();
extern void _ZN7S7630C43v23Ev();
extern void _ZN7S7630C43v24Ev();
extern void _ZN7S7630C43v25Ev();
extern void _ZN7S7630C43v26Ev();
extern void _ZN7S7630C43v27Ev();
extern void _ZN7S7630C43v28Ev();
extern void _ZN7S7630C43v29Ev();
extern void _ZN7S7630C63v10Ev();
extern void _ZN7S7630C63v11Ev();
extern void _ZN7S7630C63v12Ev();
extern void _ZN7S7630C63v13Ev();
extern void _ZN7S7630C63v14Ev();
static  VTBL_ENTRY vtc_S7630C4[] = {
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7630C4[0]),
  (VTBL_ENTRY)&_ZN7S7630C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7630C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7630C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7630C63v13Ev,
  (VTBL_ENTRY)&_ZN7S7630C63v14Ev,
  (VTBL_ENTRY)&_ZN7S7630C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7630C4D0Ev,
  (VTBL_ENTRY)&_ZN7S7630C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7630C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7630C53v17Ev,
  (VTBL_ENTRY)&_ZN7S7630C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7630C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7630C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7630C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7630C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7630C43v23Ev,
  (VTBL_ENTRY)&_ZN7S7630C43v24Ev,
  (VTBL_ENTRY)&_ZN7S7630C43v25Ev,
  (VTBL_ENTRY)&_ZN7S7630C43v26Ev,
  (VTBL_ENTRY)&_ZN7S7630C43v27Ev,
  (VTBL_ENTRY)&_ZN7S7630C43v28Ev,
  (VTBL_ENTRY)&_ZN7S7630C43v29Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S7630C4[0]),
  (VTBL_ENTRY)&_ZN7S7630C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7630C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7630C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7630C63v13Ev,
  (VTBL_ENTRY)&_ZN7S7630C63v14Ev,
};
extern VTBL_ENTRY _ZTV7S7630C4[];
static  VTT_ENTRY vtt_S7630C4[] = {
  {&(_ZTV7S7630C4[3]),  3,37},
  {&(_ZTV7S7630C4[32]),  32,37},
};
extern VTBL_ENTRY _ZTI7S7630C4[];
extern  VTBL_ENTRY _ZTV7S7630C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7630C4[];
Class_Descriptor cd_S7630C4 = {  "S7630C4", // class name
  bases_S7630C4, 3,
  &(vtc_S7630C4[0]), // expected_vtbl_contents
  &(vtt_S7630C4[0]), // expected_vtt_contents
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI7S7630C4),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7630C4),37, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7630C4),2, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7630C1  : S7630C2 , S7630C4 {
  long double s7630c1f0;
  virtual  ~S7630C1(); // _ZN7S7630C1D2Ev
  virtual void  v1(); // _ZN7S7630C12v1Ev
  virtual void  v2(); // _ZN7S7630C12v2Ev
  virtual void  v3(); // _ZN7S7630C12v3Ev
  virtual void  v4(); // _ZN7S7630C12v4Ev
  S7630C1(); // tgen
};
//SIG(1 S7630C1) C1{ BC2{ VBC3{ v5} v6 v7 v8 v9 Fi FL Fi Fc} BC4{ BC5{ BC6{ v10 v11 v12 v13 v14 Fi Fc[2]} vd v15 v16 v17 v18 v19 v20 v21 v22} VBC6 vd v23 v24 v25 v26 v27 v28 v29 Fs:13 Fi Fp} vd v1 v2 v3 v4 FD}


 S7630C1 ::~S7630C1(){ note_dtor("S7630C1", this);}
void  S7630C1 ::v1(){vfunc_called(this, "_ZN7S7630C12v1Ev");}
void  S7630C1 ::v2(){vfunc_called(this, "_ZN7S7630C12v2Ev");}
void  S7630C1 ::v3(){vfunc_called(this, "_ZN7S7630C12v3Ev");}
void  S7630C1 ::v4(){vfunc_called(this, "_ZN7S7630C12v4Ev");}
S7630C1 ::S7630C1(){ note_ctor("S7630C1", this);} // tgen

static void Test_S7630C1()
{
  extern Class_Descriptor cd_S7630C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(7,18)];
    init_test(&cd_S7630C1, buf);
    S7630C1 *dp, &lv = *(dp=new (buf) S7630C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,68), "sizeof(S7630C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7630C1)");
    check_base_class_offset(lv, (S7630C3_nt*)(S7630C2*), 0, "S7630C1");
    check_base_class_offset(lv, (S7630C2*), 0, "S7630C1");
    check_base_class_offset(lv, (S7630C6*)(S7630C5*)(S7630C4*), ABISELECT(32,24), "S7630C1");
    check_base_class_offset(lv, (S7630C5*)(S7630C4*), ABISELECT(32,24), "S7630C1");
    /*is_ambiguous_... S7630C4::S7630C6 */ AMB_check_base_class_offset(lv, (S7630C6*)(S7630C4*), ABISELECT(80,56), "S7630C1");
    check_base_class_offset(lv, (S7630C4*), ABISELECT(32,24), "S7630C1");
    check_field_offset(lv, s7630c1f0, ABISELECT(64,44), "S7630C1.s7630c1f0");
    test_class_info(&lv, &cd_S7630C1);
    dp->~S7630C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7630C1(Test_S7630C1, "S7630C1", ABISELECT(96,68));

#else // __cplusplus

extern void _ZN7S7630C1C1Ev();
extern void _ZN7S7630C1D2Ev();
Name_Map name_map_S7630C1[] = {
  NSPAIR(_ZN7S7630C1C1Ev),
  NSPAIR(_ZN7S7630C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7630C3_nt;
extern VTBL_ENTRY _ZTI10S7630C3_nt[];
extern  VTBL_ENTRY _ZTV10S7630C3_nt[];
extern Class_Descriptor cd_S7630C2;
extern VTBL_ENTRY _ZTI7S7630C2[];
extern  VTBL_ENTRY _ZTV7S7630C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7630C2[];
extern Class_Descriptor cd_S7630C6;
extern VTBL_ENTRY _ZTI7S7630C6[];
extern  VTBL_ENTRY _ZTV7S7630C6[];
extern Class_Descriptor cd_S7630C5;
extern VTBL_ENTRY _ZTI7S7630C5[];
extern  VTBL_ENTRY _ZTV7S7630C5[];
extern Class_Descriptor cd_S7630C6;
extern VTBL_ENTRY _ZTI7S7630C6[];
extern  VTBL_ENTRY _ZTV7S7630C6[];
extern Class_Descriptor cd_S7630C4;
extern VTBL_ENTRY _ZTI7S7630C4[];
extern  VTBL_ENTRY _ZTV7S7630C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7630C4[];
static Base_Class bases_S7630C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7630C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7630C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7630C6,    ABISELECT(32,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7630C5,    ABISELECT(32,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7630C6,    ABISELECT(80,56), //bcp->offset
    41, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7630C4,    ABISELECT(32,24), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7630C1[];
extern void _ZN10S7630C3_nt2v5Ev();
extern void _ZN7S7630C22v6Ev();
extern void _ZN7S7630C22v7Ev();
extern void _ZN7S7630C22v8Ev();
extern void _ZN7S7630C22v9Ev();
extern void _ZN7S7630C1D1Ev();
extern void _ZN7S7630C1D0Ev();
extern void _ZN7S7630C12v1Ev();
extern void _ZN7S7630C12v2Ev();
extern void _ZN7S7630C12v3Ev();
extern void _ZN7S7630C12v4Ev();
extern void _ZN7S7630C63v10Ev();
extern void _ZN7S7630C63v11Ev();
extern void _ZN7S7630C63v12Ev();
extern void _ZN7S7630C63v13Ev();
extern void _ZN7S7630C63v14Ev();
extern void ABISELECT(_ZThn32_N7S7630C1D1Ev,_ZThn24_N7S7630C1D1Ev)();
extern void ABISELECT(_ZThn32_N7S7630C1D0Ev,_ZThn24_N7S7630C1D0Ev)();
extern void _ZN7S7630C53v15Ev();
extern void _ZN7S7630C53v16Ev();
extern void _ZN7S7630C53v17Ev();
extern void _ZN7S7630C53v18Ev();
extern void _ZN7S7630C53v19Ev();
extern void _ZN7S7630C53v20Ev();
extern void _ZN7S7630C53v21Ev();
extern void _ZN7S7630C53v22Ev();
extern void _ZN7S7630C43v23Ev();
extern void _ZN7S7630C43v24Ev();
extern void _ZN7S7630C43v25Ev();
extern void _ZN7S7630C43v26Ev();
extern void _ZN7S7630C43v27Ev();
extern void _ZN7S7630C43v28Ev();
extern void _ZN7S7630C43v29Ev();
extern void _ZN7S7630C63v10Ev();
extern void _ZN7S7630C63v11Ev();
extern void _ZN7S7630C63v12Ev();
extern void _ZN7S7630C63v13Ev();
extern void _ZN7S7630C63v14Ev();
static  VTBL_ENTRY vtc_S7630C1[] = {
  ABISELECT(80,56),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7630C1[0]),
  (VTBL_ENTRY)&_ZN10S7630C3_nt2v5Ev,
  (VTBL_ENTRY)&_ZN7S7630C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7630C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7630C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7630C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7630C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7630C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7630C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7630C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7630C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7630C12v4Ev,
  ABISELECT(48,32),
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI7S7630C1[0]),
  (VTBL_ENTRY)&_ZN7S7630C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7630C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7630C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7630C63v13Ev,
  (VTBL_ENTRY)&_ZN7S7630C63v14Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S7630C1D1Ev,_ZThn24_N7S7630C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S7630C1D0Ev,_ZThn24_N7S7630C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7630C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7630C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7630C53v17Ev,
  (VTBL_ENTRY)&_ZN7S7630C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7630C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7630C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7630C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7630C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7630C43v23Ev,
  (VTBL_ENTRY)&_ZN7S7630C43v24Ev,
  (VTBL_ENTRY)&_ZN7S7630C43v25Ev,
  (VTBL_ENTRY)&_ZN7S7630C43v26Ev,
  (VTBL_ENTRY)&_ZN7S7630C43v27Ev,
  (VTBL_ENTRY)&_ZN7S7630C43v28Ev,
  (VTBL_ENTRY)&_ZN7S7630C43v29Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI7S7630C1[0]),
  (VTBL_ENTRY)&_ZN7S7630C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7630C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7630C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7630C63v13Ev,
  (VTBL_ENTRY)&_ZN7S7630C63v14Ev,
};
extern VTBL_ENTRY _ZTV7S7630C1[];
extern void _ZN10S7630C3_nt2v5Ev();
extern void _ZN7S7630C22v6Ev();
extern void _ZN7S7630C22v7Ev();
extern void _ZN7S7630C22v8Ev();
extern void _ZN7S7630C22v9Ev();
static  VTBL_ENTRY _tg__ZTV7S7630C2__7S7630C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7630C2[0]),
  (VTBL_ENTRY)&_ZN10S7630C3_nt2v5Ev,
  (VTBL_ENTRY)&_ZN7S7630C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7630C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7630C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7630C22v9Ev,
};
extern void _ZN7S7630C63v10Ev();
extern void _ZN7S7630C63v11Ev();
extern void _ZN7S7630C63v12Ev();
extern void _ZN7S7630C63v13Ev();
extern void _ZN7S7630C63v14Ev();
extern void _ZN7S7630C4D1Ev();
extern void _ZN7S7630C4D0Ev();
extern void _ZN7S7630C53v15Ev();
extern void _ZN7S7630C53v16Ev();
extern void _ZN7S7630C53v17Ev();
extern void _ZN7S7630C53v18Ev();
extern void _ZN7S7630C53v19Ev();
extern void _ZN7S7630C53v20Ev();
extern void _ZN7S7630C53v21Ev();
extern void _ZN7S7630C53v22Ev();
extern void _ZN7S7630C43v23Ev();
extern void _ZN7S7630C43v24Ev();
extern void _ZN7S7630C43v25Ev();
extern void _ZN7S7630C43v26Ev();
extern void _ZN7S7630C43v27Ev();
extern void _ZN7S7630C43v28Ev();
extern void _ZN7S7630C43v29Ev();
static  VTBL_ENTRY _tg__ZTV7S7630C4__7S7630C1[] = {
  ABISELECT(48,32),
  0,
  (VTBL_ENTRY)&(_ZTI7S7630C4[0]),
  (VTBL_ENTRY)&_ZN7S7630C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7630C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7630C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7630C63v13Ev,
  (VTBL_ENTRY)&_ZN7S7630C63v14Ev,
  (VTBL_ENTRY)&_ZN7S7630C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7630C4D0Ev,
  (VTBL_ENTRY)&_ZN7S7630C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7630C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7630C53v17Ev,
  (VTBL_ENTRY)&_ZN7S7630C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7630C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7630C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7630C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7630C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7630C43v23Ev,
  (VTBL_ENTRY)&_ZN7S7630C43v24Ev,
  (VTBL_ENTRY)&_ZN7S7630C43v25Ev,
  (VTBL_ENTRY)&_ZN7S7630C43v26Ev,
  (VTBL_ENTRY)&_ZN7S7630C43v27Ev,
  (VTBL_ENTRY)&_ZN7S7630C43v28Ev,
  (VTBL_ENTRY)&_ZN7S7630C43v29Ev,
};
extern void _ZN7S7630C63v10Ev();
extern void _ZN7S7630C63v11Ev();
extern void _ZN7S7630C63v12Ev();
extern void _ZN7S7630C63v13Ev();
extern void _ZN7S7630C63v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7630C6__A1__7S7630C4__7S7630C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI7S7630C4[0]),
  (VTBL_ENTRY)&_ZN7S7630C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7630C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7630C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7630C63v13Ev,
  (VTBL_ENTRY)&_ZN7S7630C63v14Ev,
};
static  VTT_ENTRY vtt_S7630C1[] = {
  {&(_ZTV7S7630C1[5]),  5,53},
  {&(_tg__ZTV7S7630C2__7S7630C1[4]),  4,9},
  {&(_tg__ZTV7S7630C2__7S7630C1[4]),  4,9},
  {&(_tg__ZTV7S7630C4__7S7630C1[3]),  3,25},
  {&(_tg__ZTV7S7630C6__A1__7S7630C4__7S7630C1[7]),  7,12},
  {&(_ZTV7S7630C1[5]),  5,53},
  {&(_ZTV7S7630C1[19]),  19,53},
  {&(_ZTV7S7630C1[48]),  48,53},
};
extern VTBL_ENTRY _ZTI7S7630C1[];
extern  VTBL_ENTRY _ZTV7S7630C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7630C1[];
Class_Descriptor cd_S7630C1 = {  "S7630C1", // class name
  bases_S7630C1, 6,
  &(vtc_S7630C1[0]), // expected_vtbl_contents
  &(vtt_S7630C1[0]), // expected_vtt_contents
  ABISELECT(96,68), // object size
  NSPAIRA(_ZTI7S7630C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7630C1),53, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7630C1),8, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15733C7_nt  {
  void *s15733c7f0;
  int s15733c7f1;
  ::S7856C24 s15733c7f2;
  ::S7856C15 s15733c7f3;
  void  mf15733c7(); // _ZN11S15733C7_nt9mf15733c7Ev
};
//SIG(-1 S15733C7_nt) C1{ m Fp Fi FC2{ m} FC3{ m}}


void  S15733C7_nt ::mf15733c7(){}

//skip512 S15733C7_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15733C10  : S40C9_nt {
};
//SIG(-1 S15733C10) C1{ BC2{ m Fi[2]}}



static void Test_S15733C10()
{
  extern Class_Descriptor cd_S15733C10;
  void *lvp;
  {
    int buf[3];
    init_test(&cd_S15733C10, buf);
    S15733C10 &lv = *(new (buf) S15733C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), 8, "sizeof(S15733C10)");
    check2(__alignof__(lv), 4, "__alignof__(S15733C10)");
    check_base_class_offset(lv, (S40C9_nt*), 0, "S15733C10");
    test_class_info(&lv, &cd_S15733C10);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS15733C10(Test_S15733C10, "S15733C10", 8);

#else // __cplusplus

extern Class_Descriptor cd_S40C9_nt;
static Base_Class bases_S15733C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S15733C10 = {  "S15733C10", // class name
  bases_S15733C10, 1,
  0, // no vftv
  0, //no vtt
  8, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15733C15  {
  __tsi64 s15733c15f0;
  ::S15733C7_nt s15733c15f1;
  ::S17556C3_nt s15733c15f2;
  void  mf15733c15(); // _ZN9S15733C1510mf15733c15Ev
};
//SIG(-1 S15733C15) C1{ m FL FC2{ m Fp Fi FC3{ m} FC4{ m}} FC5{ m FC6{ FL[4]}}}


void  S15733C15 ::mf15733c15(){}

static void Test_S15733C15()
{
  {
    init_simple_test("S15733C15");
    S15733C15 lv;
    check2(sizeof(lv), ABISELECT(56,52), "sizeof(S15733C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15733C15)");
    check_field_offset(lv, s15733c15f0, 0, "S15733C15.s15733c15f0");
    check_field_offset(lv, s15733c15f1, 8, "S15733C15.s15733c15f1");
    check_field_offset(lv, s15733c15f2, ABISELECT(24,20), "S15733C15.s15733c15f2");
  }
}
static Arrange_To_Call_Me vS15733C15(Test_S15733C15, "S15733C15", ABISELECT(56,52));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15733C1  {
  ::S17556C3_nt s15733c1f0;
  int s15733c1f1[3];
  __tsi64 s15733c1f2;
  ::S1868C24_nt s15733c1f3;
  ::S15733C7_nt s15733c1f4;
  ::S15733C10 s15733c1f5;
  ::S3750C9_nt s15733c1f6;
  ::S15733C15 s15733c1f7;
  void  mf15733c1(); // _ZN8S15733C19mf15733c1Ev
};
//SIG(1 S15733C1) C1{ m FC2{ m FC3{ FL[4]}} Fi[3] FL FC4{ m Fp Fi FC5{ m} FC6{ m}} FC7{ m Fp Fi FC8{ m} FC5} FC9{ BC10{ m Fi[2]}} FC11{ m FC12{ m Fp Fi[2] FC8} Fp[2]} FC13{ m FL FC7 FC2}}


void  S15733C1 ::mf15733c1(){}

static void Test_S15733C1()
{
  {
    init_simple_test("S15733C1");
    S15733C1 lv;
    check2(sizeof(lv), ABISELECT(192,160), "sizeof(S15733C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15733C1)");
    check_field_offset(lv, s15733c1f0, 0, "S15733C1.s15733c1f0");
    check_field_offset(lv, s15733c1f1, 32, "S15733C1.s15733c1f1");
    check_field_offset(lv, s15733c1f2, ABISELECT(48,44), "S15733C1.s15733c1f2");
    check_field_offset(lv, s15733c1f3, ABISELECT(56,52), "S15733C1.s15733c1f3");
    check_field_offset(lv, s15733c1f4, ABISELECT(72,64), "S15733C1.s15733c1f4");
    check_field_offset(lv, s15733c1f5, ABISELECT(88,76), "S15733C1.s15733c1f5");
    check_field_offset(lv, s15733c1f6, ABISELECT(96,84), "S15733C1.s15733c1f6");
    check_field_offset(lv, s15733c1f7, ABISELECT(136,108), "S15733C1.s15733c1f7");
  }
}
static Arrange_To_Call_Me vS15733C1(Test_S15733C1, "S15733C1", ABISELECT(192,160));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4016C2  : S1868C4_nt {
  void *s4016c2f0[2];
  virtual  ~S4016C2(); // _ZN7S4016C2D1Ev
  virtual void  v15(); // _ZN7S4016C23v15Ev
  virtual void  v16(); // _ZN7S4016C23v16Ev
  virtual void  v17(); // _ZN7S4016C23v17Ev
  virtual void  v18(); // _ZN7S4016C23v18Ev
  virtual void  v19(); // _ZN7S4016C23v19Ev
  virtual void  v20(); // _ZN7S4016C23v20Ev
  virtual void  v21(); // _ZN7S4016C23v21Ev
  S4016C2(); // tgen
};
//SIG(-1 S4016C2) C1{ BC2{ vd m} vd v1 v2 v3 v4 v5 v6 v7 Fp[2]}


 S4016C2 ::~S4016C2(){ note_dtor("S4016C2", this);}
void  S4016C2 ::v15(){vfunc_called(this, "_ZN7S4016C23v15Ev");}
void  S4016C2 ::v16(){vfunc_called(this, "_ZN7S4016C23v16Ev");}
void  S4016C2 ::v17(){vfunc_called(this, "_ZN7S4016C23v17Ev");}
void  S4016C2 ::v18(){vfunc_called(this, "_ZN7S4016C23v18Ev");}
void  S4016C2 ::v19(){vfunc_called(this, "_ZN7S4016C23v19Ev");}
void  S4016C2 ::v20(){vfunc_called(this, "_ZN7S4016C23v20Ev");}
void  S4016C2 ::v21(){vfunc_called(this, "_ZN7S4016C23v21Ev");}
S4016C2 ::S4016C2(){ note_ctor("S4016C2", this);} // tgen

static void Test_S4016C2()
{
  extern Class_Descriptor cd_S4016C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S4016C2, buf);
    S4016C2 *dp, &lv = *(dp=new (buf) S4016C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S4016C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4016C2)");
    check_base_class_offset(lv, (S1868C4_nt*), 0, "S4016C2");
    check_field_offset(lv, s4016c2f0, ABISELECT(8,4), "S4016C2.s4016c2f0");
    test_class_info(&lv, &cd_S4016C2);
    dp->~S4016C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4016C2(Test_S4016C2, "S4016C2", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S4016C2C1Ev();
extern void _ZN7S4016C2D1Ev();
Name_Map name_map_S4016C2[] = {
  NSPAIR(_ZN7S4016C2C1Ev),
  NSPAIR(_ZN7S4016C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1868C4_nt;
extern VTBL_ENTRY _ZTI10S1868C4_nt[];
extern  VTBL_ENTRY _ZTV10S1868C4_nt[];
static Base_Class bases_S4016C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1868C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4016C2[];
extern void _ZN7S4016C2D1Ev();
extern void _ZN7S4016C2D0Ev();
extern void _ZN7S4016C23v15Ev();
extern void _ZN7S4016C23v16Ev();
extern void _ZN7S4016C23v17Ev();
extern void _ZN7S4016C23v18Ev();
extern void _ZN7S4016C23v19Ev();
extern void _ZN7S4016C23v20Ev();
extern void _ZN7S4016C23v21Ev();
static  VTBL_ENTRY vtc_S4016C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4016C2[0]),
  (VTBL_ENTRY)&_ZN7S4016C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4016C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4016C23v15Ev,
  (VTBL_ENTRY)&_ZN7S4016C23v16Ev,
  (VTBL_ENTRY)&_ZN7S4016C23v17Ev,
  (VTBL_ENTRY)&_ZN7S4016C23v18Ev,
  (VTBL_ENTRY)&_ZN7S4016C23v19Ev,
  (VTBL_ENTRY)&_ZN7S4016C23v20Ev,
  (VTBL_ENTRY)&_ZN7S4016C23v21Ev,
};
extern VTBL_ENTRY _ZTI7S4016C2[];
extern  VTBL_ENTRY _ZTV7S4016C2[];
Class_Descriptor cd_S4016C2 = {  "S4016C2", // class name
  bases_S4016C2, 1,
  &(vtc_S4016C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S4016C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4016C2),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4016C4  {
  virtual  ~S4016C4(); // _ZN7S4016C4D1Ev
  virtual void  v22(); // _ZN7S4016C43v22Ev
  virtual void  v23(); // _ZN7S4016C43v23Ev
  virtual void  v24(); // _ZN7S4016C43v24Ev
  virtual void  v25(); // _ZN7S4016C43v25Ev
  virtual void  v26(); // _ZN7S4016C43v26Ev
  virtual void  v27(); // _ZN7S4016C43v27Ev
  virtual void  v28(); // _ZN7S4016C43v28Ev
  virtual void  v29(); // _ZN7S4016C43v29Ev
  virtual void  v30(); // _ZN7S4016C43v30Ev
  virtual void  v31(); // _ZN7S4016C43v31Ev
  virtual void  v32(); // _ZN7S4016C43v32Ev
  virtual void  v33(); // _ZN7S4016C43v33Ev
  S4016C4(); // tgen
};
//SIG(-1 S4016C4) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12}


 S4016C4 ::~S4016C4(){ note_dtor("S4016C4", this);}
void  S4016C4 ::v22(){vfunc_called(this, "_ZN7S4016C43v22Ev");}
void  S4016C4 ::v23(){vfunc_called(this, "_ZN7S4016C43v23Ev");}
void  S4016C4 ::v24(){vfunc_called(this, "_ZN7S4016C43v24Ev");}
void  S4016C4 ::v25(){vfunc_called(this, "_ZN7S4016C43v25Ev");}
void  S4016C4 ::v26(){vfunc_called(this, "_ZN7S4016C43v26Ev");}
void  S4016C4 ::v27(){vfunc_called(this, "_ZN7S4016C43v27Ev");}
void  S4016C4 ::v28(){vfunc_called(this, "_ZN7S4016C43v28Ev");}
void  S4016C4 ::v29(){vfunc_called(this, "_ZN7S4016C43v29Ev");}
void  S4016C4 ::v30(){vfunc_called(this, "_ZN7S4016C43v30Ev");}
void  S4016C4 ::v31(){vfunc_called(this, "_ZN7S4016C43v31Ev");}
void  S4016C4 ::v32(){vfunc_called(this, "_ZN7S4016C43v32Ev");}
void  S4016C4 ::v33(){vfunc_called(this, "_ZN7S4016C43v33Ev");}
S4016C4 ::S4016C4(){ note_ctor("S4016C4", this);} // tgen

static void Test_S4016C4()
{
  extern Class_Descriptor cd_S4016C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S4016C4, buf);
    S4016C4 *dp, &lv = *(dp=new (buf) S4016C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S4016C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4016C4)");
    test_class_info(&lv, &cd_S4016C4);
    dp->~S4016C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4016C4(Test_S4016C4, "S4016C4", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S4016C4C1Ev();
extern void _ZN7S4016C4D1Ev();
Name_Map name_map_S4016C4[] = {
  NSPAIR(_ZN7S4016C4C1Ev),
  NSPAIR(_ZN7S4016C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4016C4[];
extern void _ZN7S4016C4D1Ev();
extern void _ZN7S4016C4D0Ev();
extern void _ZN7S4016C43v22Ev();
extern void _ZN7S4016C43v23Ev();
extern void _ZN7S4016C43v24Ev();
extern void _ZN7S4016C43v25Ev();
extern void _ZN7S4016C43v26Ev();
extern void _ZN7S4016C43v27Ev();
extern void _ZN7S4016C43v28Ev();
extern void _ZN7S4016C43v29Ev();
extern void _ZN7S4016C43v30Ev();
extern void _ZN7S4016C43v31Ev();
extern void _ZN7S4016C43v32Ev();
extern void _ZN7S4016C43v33Ev();
static  VTBL_ENTRY vtc_S4016C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4016C4[0]),
  (VTBL_ENTRY)&_ZN7S4016C4D1Ev,
  (VTBL_ENTRY)&_ZN7S4016C4D0Ev,
  (VTBL_ENTRY)&_ZN7S4016C43v22Ev,
  (VTBL_ENTRY)&_ZN7S4016C43v23Ev,
  (VTBL_ENTRY)&_ZN7S4016C43v24Ev,
  (VTBL_ENTRY)&_ZN7S4016C43v25Ev,
  (VTBL_ENTRY)&_ZN7S4016C43v26Ev,
  (VTBL_ENTRY)&_ZN7S4016C43v27Ev,
  (VTBL_ENTRY)&_ZN7S4016C43v28Ev,
  (VTBL_ENTRY)&_ZN7S4016C43v29Ev,
  (VTBL_ENTRY)&_ZN7S4016C43v30Ev,
  (VTBL_ENTRY)&_ZN7S4016C43v31Ev,
  (VTBL_ENTRY)&_ZN7S4016C43v32Ev,
  (VTBL_ENTRY)&_ZN7S4016C43v33Ev,
};
extern VTBL_ENTRY _ZTI7S4016C4[];
extern  VTBL_ENTRY _ZTV7S4016C4[];
Class_Descriptor cd_S4016C4 = {  "S4016C4", // class name
  0,0,//no base classes
  &(vtc_S4016C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S4016C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4016C4),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4016C1  : S4016C2 , S4016C4 {
  void *s4016c1f0;
  ::S1868C17 s4016c1f1;
  void *s4016c1f2;
  int s4016c1f3[4];
  virtual  ~S4016C1(); // _ZN7S4016C1D1Ev
  virtual void  v1(); // _ZN7S4016C12v1Ev
  virtual void  v2(); // _ZN7S4016C12v2Ev
  virtual void  v3(); // _ZN7S4016C12v3Ev
  virtual void  v4(); // _ZN7S4016C12v4Ev
  virtual void  v5(); // _ZN7S4016C12v5Ev
  virtual void  v6(); // _ZN7S4016C12v6Ev
  virtual void  v7(); // _ZN7S4016C12v7Ev
  virtual void  v8(); // _ZN7S4016C12v8Ev
  virtual void  v9(); // _ZN7S4016C12v9Ev
  virtual void  v10(); // _ZN7S4016C13v10Ev
  virtual void  v11(); // _ZN7S4016C13v11Ev
  virtual void  v12(); // _ZN7S4016C13v12Ev
  virtual void  v13(); // _ZN7S4016C13v13Ev
  virtual void  v14(); // _ZN7S4016C13v14Ev
  S4016C1(); // tgen
};
//SIG(1 S4016C1) C1{ BC2{ BC3{ vd m} vd v15 v16 v17 v18 v19 v20 v21 Fp[2]} BC4{ vd v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 Fp FC5{ m Fp} Fp Fi[4]}


 S4016C1 ::~S4016C1(){ note_dtor("S4016C1", this);}
void  S4016C1 ::v1(){vfunc_called(this, "_ZN7S4016C12v1Ev");}
void  S4016C1 ::v2(){vfunc_called(this, "_ZN7S4016C12v2Ev");}
void  S4016C1 ::v3(){vfunc_called(this, "_ZN7S4016C12v3Ev");}
void  S4016C1 ::v4(){vfunc_called(this, "_ZN7S4016C12v4Ev");}
void  S4016C1 ::v5(){vfunc_called(this, "_ZN7S4016C12v5Ev");}
void  S4016C1 ::v6(){vfunc_called(this, "_ZN7S4016C12v6Ev");}
void  S4016C1 ::v7(){vfunc_called(this, "_ZN7S4016C12v7Ev");}
void  S4016C1 ::v8(){vfunc_called(this, "_ZN7S4016C12v8Ev");}
void  S4016C1 ::v9(){vfunc_called(this, "_ZN7S4016C12v9Ev");}
void  S4016C1 ::v10(){vfunc_called(this, "_ZN7S4016C13v10Ev");}
void  S4016C1 ::v11(){vfunc_called(this, "_ZN7S4016C13v11Ev");}
void  S4016C1 ::v12(){vfunc_called(this, "_ZN7S4016C13v12Ev");}
void  S4016C1 ::v13(){vfunc_called(this, "_ZN7S4016C13v13Ev");}
void  S4016C1 ::v14(){vfunc_called(this, "_ZN7S4016C13v14Ev");}
S4016C1 ::S4016C1(){ note_ctor("S4016C1", this);} // tgen

static void Test_S4016C1()
{
  extern Class_Descriptor cd_S4016C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,12)];
    init_test(&cd_S4016C1, buf);
    S4016C1 *dp, &lv = *(dp=new (buf) S4016C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,44), "sizeof(S4016C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4016C1)");
    check_base_class_offset(lv, (S1868C4_nt*)(S4016C2*), 0, "S4016C1");
    check_base_class_offset(lv, (S4016C2*), 0, "S4016C1");
    check_base_class_offset(lv, (S4016C4*), ABISELECT(24,12), "S4016C1");
    check_field_offset(lv, s4016c1f0, ABISELECT(32,16), "S4016C1.s4016c1f0");
    check_field_offset(lv, s4016c1f1, ABISELECT(40,20), "S4016C1.s4016c1f1");
    check_field_offset(lv, s4016c1f2, ABISELECT(48,24), "S4016C1.s4016c1f2");
    check_field_offset(lv, s4016c1f3, ABISELECT(56,28), "S4016C1.s4016c1f3");
    test_class_info(&lv, &cd_S4016C1);
    dp->~S4016C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4016C1(Test_S4016C1, "S4016C1", ABISELECT(72,44));

#else // __cplusplus

extern void _ZN7S4016C1C1Ev();
extern void _ZN7S4016C1D1Ev();
Name_Map name_map_S4016C1[] = {
  NSPAIR(_ZN7S4016C1C1Ev),
  NSPAIR(_ZN7S4016C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1868C4_nt;
extern VTBL_ENTRY _ZTI10S1868C4_nt[];
extern  VTBL_ENTRY _ZTV10S1868C4_nt[];
extern Class_Descriptor cd_S4016C2;
extern VTBL_ENTRY _ZTI7S4016C2[];
extern  VTBL_ENTRY _ZTV7S4016C2[];
extern Class_Descriptor cd_S4016C4;
extern VTBL_ENTRY _ZTI7S4016C4[];
extern  VTBL_ENTRY _ZTV7S4016C4[];
static Base_Class bases_S4016C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1868C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4016C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4016C4,    ABISELECT(24,12), //bcp->offset
    25, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4016C1[];
extern void _ZN7S4016C1D1Ev();
extern void _ZN7S4016C1D0Ev();
extern void _ZN7S4016C23v15Ev();
extern void _ZN7S4016C23v16Ev();
extern void _ZN7S4016C23v17Ev();
extern void _ZN7S4016C23v18Ev();
extern void _ZN7S4016C23v19Ev();
extern void _ZN7S4016C23v20Ev();
extern void _ZN7S4016C23v21Ev();
extern void _ZN7S4016C12v1Ev();
extern void _ZN7S4016C12v2Ev();
extern void _ZN7S4016C12v3Ev();
extern void _ZN7S4016C12v4Ev();
extern void _ZN7S4016C12v5Ev();
extern void _ZN7S4016C12v6Ev();
extern void _ZN7S4016C12v7Ev();
extern void _ZN7S4016C12v8Ev();
extern void _ZN7S4016C12v9Ev();
extern void _ZN7S4016C13v10Ev();
extern void _ZN7S4016C13v11Ev();
extern void _ZN7S4016C13v12Ev();
extern void _ZN7S4016C13v13Ev();
extern void _ZN7S4016C13v14Ev();
extern void ABISELECT(_ZThn24_N7S4016C1D1Ev,_ZThn12_N7S4016C1D1Ev)();
extern void ABISELECT(_ZThn24_N7S4016C1D0Ev,_ZThn12_N7S4016C1D0Ev)();
extern void _ZN7S4016C43v22Ev();
extern void _ZN7S4016C43v23Ev();
extern void _ZN7S4016C43v24Ev();
extern void _ZN7S4016C43v25Ev();
extern void _ZN7S4016C43v26Ev();
extern void _ZN7S4016C43v27Ev();
extern void _ZN7S4016C43v28Ev();
extern void _ZN7S4016C43v29Ev();
extern void _ZN7S4016C43v30Ev();
extern void _ZN7S4016C43v31Ev();
extern void _ZN7S4016C43v32Ev();
extern void _ZN7S4016C43v33Ev();
static  VTBL_ENTRY vtc_S4016C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4016C1[0]),
  (VTBL_ENTRY)&_ZN7S4016C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4016C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4016C23v15Ev,
  (VTBL_ENTRY)&_ZN7S4016C23v16Ev,
  (VTBL_ENTRY)&_ZN7S4016C23v17Ev,
  (VTBL_ENTRY)&_ZN7S4016C23v18Ev,
  (VTBL_ENTRY)&_ZN7S4016C23v19Ev,
  (VTBL_ENTRY)&_ZN7S4016C23v20Ev,
  (VTBL_ENTRY)&_ZN7S4016C23v21Ev,
  (VTBL_ENTRY)&_ZN7S4016C12v1Ev,
  (VTBL_ENTRY)&_ZN7S4016C12v2Ev,
  (VTBL_ENTRY)&_ZN7S4016C12v3Ev,
  (VTBL_ENTRY)&_ZN7S4016C12v4Ev,
  (VTBL_ENTRY)&_ZN7S4016C12v5Ev,
  (VTBL_ENTRY)&_ZN7S4016C12v6Ev,
  (VTBL_ENTRY)&_ZN7S4016C12v7Ev,
  (VTBL_ENTRY)&_ZN7S4016C12v8Ev,
  (VTBL_ENTRY)&_ZN7S4016C12v9Ev,
  (VTBL_ENTRY)&_ZN7S4016C13v10Ev,
  (VTBL_ENTRY)&_ZN7S4016C13v11Ev,
  (VTBL_ENTRY)&_ZN7S4016C13v12Ev,
  (VTBL_ENTRY)&_ZN7S4016C13v13Ev,
  (VTBL_ENTRY)&_ZN7S4016C13v14Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S4016C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N7S4016C1D1Ev,_ZThn12_N7S4016C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N7S4016C1D0Ev,_ZThn12_N7S4016C1D0Ev),
  (VTBL_ENTRY)&_ZN7S4016C43v22Ev,
  (VTBL_ENTRY)&_ZN7S4016C43v23Ev,
  (VTBL_ENTRY)&_ZN7S4016C43v24Ev,
  (VTBL_ENTRY)&_ZN7S4016C43v25Ev,
  (VTBL_ENTRY)&_ZN7S4016C43v26Ev,
  (VTBL_ENTRY)&_ZN7S4016C43v27Ev,
  (VTBL_ENTRY)&_ZN7S4016C43v28Ev,
  (VTBL_ENTRY)&_ZN7S4016C43v29Ev,
  (VTBL_ENTRY)&_ZN7S4016C43v30Ev,
  (VTBL_ENTRY)&_ZN7S4016C43v31Ev,
  (VTBL_ENTRY)&_ZN7S4016C43v32Ev,
  (VTBL_ENTRY)&_ZN7S4016C43v33Ev,
};
extern VTBL_ENTRY _ZTI7S4016C1[];
extern  VTBL_ENTRY _ZTV7S4016C1[];
Class_Descriptor cd_S4016C1 = {  "S4016C1", // class name
  bases_S4016C1, 3,
  &(vtc_S4016C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,44), // object size
  NSPAIRA(_ZTI7S4016C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S4016C1),41, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6193C3  {
  void *s6193c3f0;
  int s6193c3f1[3];
  void *s6193c3f2;
};
//SIG(-1 S6193C3) C1{ Fp Fi[3] Fp}



static void Test_S6193C3()
{
  {
    init_simple_test("S6193C3");
    S6193C3 lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S6193C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6193C3)");
    check_field_offset(lv, s6193c3f0, 0, "S6193C3.s6193c3f0");
    check_field_offset(lv, s6193c3f1, ABISELECT(8,4), "S6193C3.s6193c3f1");
    check_field_offset(lv, s6193c3f2, ABISELECT(24,16), "S6193C3.s6193c3f2");
  }
}
static Arrange_To_Call_Me vS6193C3(Test_S6193C3, "S6193C3", ABISELECT(32,20));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6193C4  {
  int s6193c4f0[2];
  char s6193c4f1[4];
  ::S18423C15_nt s6193c4f2;
  ::S18423C15_nt s6193c4f3;
  ::S18423C15_nt s6193c4f4;
  ::S18423C15_nt s6193c4f5;
  int s6193c4f6[3];
  void  mf6193c4(); // _ZN7S6193C48mf6193c4Ev
};
//SIG(-1 S6193C4) C1{ m Fi[2] Fc[4] FC2{ m Fp Fi FC3{ m}} FC2 FC2 FC2 Fi[3]}


void  S6193C4 ::mf6193c4(){}

static void Test_S6193C4()
{
  {
    init_simple_test("S6193C4");
    S6193C4 lv;
    check2(sizeof(lv), ABISELECT(96,72), "sizeof(S6193C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6193C4)");
    check_field_offset(lv, s6193c4f0, 0, "S6193C4.s6193c4f0");
    check_field_offset(lv, s6193c4f1, 8, "S6193C4.s6193c4f1");
    check_field_offset(lv, s6193c4f2, ABISELECT(16,12), "S6193C4.s6193c4f2");
    check_field_offset(lv, s6193c4f3, ABISELECT(32,24), "S6193C4.s6193c4f3");
    check_field_offset(lv, s6193c4f4, ABISELECT(48,36), "S6193C4.s6193c4f4");
    check_field_offset(lv, s6193c4f5, ABISELECT(64,48), "S6193C4.s6193c4f5");
    check_field_offset(lv, s6193c4f6, ABISELECT(80,60), "S6193C4.s6193c4f6");
  }
}
static Arrange_To_Call_Me vS6193C4(Test_S6193C4, "S6193C4", ABISELECT(96,72));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6193C9  {
  int s6193c9f0[2];
  void *s6193c9f1;
  int s6193c9f2;
  char s6193c9f3[2];
  void  mf6193c9(); // _ZN7S6193C98mf6193c9Ev
};
//SIG(-1 S6193C9) C1{ m Fi[2] Fp Fi Fc[2]}


void  S6193C9 ::mf6193c9(){}

static void Test_S6193C9()
{
  {
    init_simple_test("S6193C9");
    S6193C9 lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S6193C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6193C9)");
    check_field_offset(lv, s6193c9f0, 0, "S6193C9.s6193c9f0");
    check_field_offset(lv, s6193c9f1, 8, "S6193C9.s6193c9f1");
    check_field_offset(lv, s6193c9f2, ABISELECT(16,12), "S6193C9.s6193c9f2");
    check_field_offset(lv, s6193c9f3, ABISELECT(20,16), "S6193C9.s6193c9f3");
  }
}
static Arrange_To_Call_Me vS6193C9(Test_S6193C9, "S6193C9", ABISELECT(24,20));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6193C1  : S7856C24 {
  int s6193c1f0;
  ::S6193C3 s6193c1f1;
  ::S6193C4 s6193c1f2;
  ::S6193C4 s6193c1f3[50];
  void *s6193c1f4;
  int s6193c1f5;
  void *s6193c1f6;
  ::S17556C28_nt s6193c1f7;
  ::S1868C17 s6193c1f8;
  void *s6193c1f9[2];
  char s6193c1f10[2];
  void *s6193c1f11[2];
  ::S6193C9 s6193c1f12;
  char s6193c1f13[1024];
};
//SIG(1 S6193C1) C1{ BC2{ m} Fi FC3{ Fp Fi[3] Fp} FC4{ m Fi[2] Fc[4] FC5{ m Fp Fi FC2} FC5 FC5 FC5 Fi[3]} FC4[50] Fp Fi Fp FC6{ m Fp[2]} FC7{ m Fp} Fp[2] Fc[2] Fp[2] FC8{ m Fi[2] Fp Fi Fc[2]} Fc[1024]}



static void Test_S6193C1()
{
  extern Class_Descriptor cd_S6193C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(760,1197)];
    init_test(&cd_S6193C1, buf);
    S6193C1 &lv = *(new (buf) S6193C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(6072,4784), "sizeof(S6193C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6193C1)");
    check_base_class_offset(lv, (S7856C24*), 0, "S6193C1");
    check_field_offset(lv, s6193c1f0, 0, "S6193C1.s6193c1f0");
    check_field_offset(lv, s6193c1f1, ABISELECT(8,4), "S6193C1.s6193c1f1");
    check_field_offset(lv, s6193c1f2, ABISELECT(40,24), "S6193C1.s6193c1f2");
    check_field_offset(lv, s6193c1f3, ABISELECT(136,96), "S6193C1.s6193c1f3");
    check_field_offset(lv, s6193c1f4, ABISELECT(4936,3696), "S6193C1.s6193c1f4");
    check_field_offset(lv, s6193c1f5, ABISELECT(4944,3700), "S6193C1.s6193c1f5");
    check_field_offset(lv, s6193c1f6, ABISELECT(4952,3704), "S6193C1.s6193c1f6");
    check_field_offset(lv, s6193c1f7, ABISELECT(4960,3708), "S6193C1.s6193c1f7");
    check_field_offset(lv, s6193c1f8, ABISELECT(4976,3716), "S6193C1.s6193c1f8");
    check_field_offset(lv, s6193c1f9, ABISELECT(4984,3720), "S6193C1.s6193c1f9");
    check_field_offset(lv, s6193c1f10, ABISELECT(5000,3728), "S6193C1.s6193c1f10");
    check_field_offset(lv, s6193c1f11, ABISELECT(5008,3732), "S6193C1.s6193c1f11");
    check_field_offset(lv, s6193c1f12, ABISELECT(5024,3740), "S6193C1.s6193c1f12");
    check_field_offset(lv, s6193c1f13, ABISELECT(5048,3760), "S6193C1.s6193c1f13");
    test_class_info(&lv, &cd_S6193C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6193C1(Test_S6193C1, "S6193C1", ABISELECT(6072,4784));

#else // __cplusplus

extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
static Base_Class bases_S6193C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S6193C1 = {  "S6193C1", // class name
  bases_S6193C1, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(6072,4784), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2619C2  : S40C13_nt {
};
//SIG(-1 S2619C2) C1{ BC2{ m Fi}}



static void Test_S2619C2()
{
  extern Class_Descriptor cd_S2619C2;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S2619C2, buf);
    S2619C2 &lv = *(new (buf) S2619C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S2619C2)");
    check2(__alignof__(lv), 4, "__alignof__(S2619C2)");
    check_base_class_offset(lv, (S40C13_nt*), 0, "S2619C2");
    test_class_info(&lv, &cd_S2619C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2619C2(Test_S2619C2, "S2619C2", 4);

#else // __cplusplus

extern Class_Descriptor cd_S40C13_nt;
extern VTBL_ENTRY _ZTI9S40C13_nt[];
static Base_Class bases_S2619C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S2619C2 = {  "S2619C2", // class name
  bases_S2619C2, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2619C5_nt  {
  ::S17555C4_nt s2619c5f0;
};
//SIG(-1 S2619C5_nt) C1{ FC2{ Fl[4]}}



//skip512 S2619C5_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2619C4_nt  {
  ::S2619C5_nt s2619c4f0;
  void  mf2619c4(); // _ZN10S2619C4_nt8mf2619c4Ev
};
//SIG(-1 S2619C4_nt) C1{ m FC2{ FC3{ Fl[4]}}}


void  S2619C4_nt ::mf2619c4(){}

//skip512 S2619C4_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2619C10_nt  {
  ::S2442C12_nt s2619c10f0;
};
//SIG(-1 S2619C10_nt) C1{ FC2{ Fi[4]}}



//skip512 S2619C10_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2619C9_nt  {
  ::S2619C10_nt s2619c9f0;
  void  mf2619c9(); // _ZN10S2619C9_nt8mf2619c9Ev
};
//SIG(-1 S2619C9_nt) C1{ m FC2{ FC3{ Fi[4]}}}


void  S2619C9_nt ::mf2619c9(){}

//skip512 S2619C9_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2619C12_nt  {
  int s2619c12f0[2];
  ::S1113C12_nt s2619c12f1;
  void  mf2619c12(); // _ZN11S2619C12_nt9mf2619c12Ev
};
//SIG(-1 S2619C12_nt) C1{ m Fi[2] FC2{ BC3{ m Fp Fi}}}


void  S2619C12_nt ::mf2619c12(){}

//skip512 S2619C12_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2619C8  {
  ::S2619C4_nt s2619c8f0;
  ::S2619C9_nt s2619c8f1;
  ::S2619C12_nt s2619c8f2;
  char s2619c8f3;
  void  mf2619c8(); // _ZN7S2619C88mf2619c8Ev
};
//SIG(-1 S2619C8) C1{ m FC2{ m FC3{ FC4{ Fl[4]}}} FC5{ m FC6{ FC7{ Fi[4]}}} FC8{ m Fi[2] FC9{ BC10{ m Fp Fi}}} Fc}


void  S2619C8 ::mf2619c8(){}

static void Test_S2619C8()
{
  {
    init_simple_test("S2619C8");
    S2619C8 lv;
    check2(sizeof(lv), ABISELECT(80,52), "sizeof(S2619C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2619C8)");
    check_field_offset(lv, s2619c8f0, 0, "S2619C8.s2619c8f0");
    check_field_offset(lv, s2619c8f1, ABISELECT(32,16), "S2619C8.s2619c8f1");
    check_field_offset(lv, s2619c8f2, ABISELECT(48,32), "S2619C8.s2619c8f2");
    check_field_offset(lv, s2619c8f3, ABISELECT(72,48), "S2619C8.s2619c8f3");
  }
}
static Arrange_To_Call_Me vS2619C8(Test_S2619C8, "S2619C8", ABISELECT(80,52));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2619C1  : S2619C2 {
  ::S2619C4_nt s2619c1f0;
  int s2619c1f1;
  ::S1868C17 s2619c1f2;
  ::S2619C8 s2619c1f3;
  ::S1113C9 s2619c1f4;
  ::S1868C12 s2619c1f5;
  ::S1868C9_nt s2619c1f6;
  void *s2619c1f7;
};
//SIG(1 S2619C1) C1{ BC2{ BC3{ m Fi}} FC4{ m FC5{ FC6{ Fl[4]}}} Fi FC7{ m Fp} FC8{ m FC4 FC9{ m FC10{ FC11{ Fi[4]}}} FC12{ m Fi[2] FC13{ BC14{ m Fp Fi}}} Fc} FC15{ m FC16{ m Fp Fi[4]}} FC17{ m Fp} FC18{ m Fp} Fp}



static void Test_S2619C1()
{
  extern Class_Descriptor cd_S2619C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(24,29)];
    init_test(&cd_S2619C1, buf);
    S2619C1 &lv = *(new (buf) S2619C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(184,112), "sizeof(S2619C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2619C1)");
    check_base_class_offset(lv, (S40C13_nt*)(S2619C2*), 0, "S2619C1");
    check_base_class_offset(lv, (S2619C2*), 0, "S2619C1");
    check_field_offset(lv, s2619c1f0, ABISELECT(8,4), "S2619C1.s2619c1f0");
    check_field_offset(lv, s2619c1f1, ABISELECT(40,20), "S2619C1.s2619c1f1");
    check_field_offset(lv, s2619c1f2, ABISELECT(48,24), "S2619C1.s2619c1f2");
    check_field_offset(lv, s2619c1f3, ABISELECT(56,28), "S2619C1.s2619c1f3");
    check_field_offset(lv, s2619c1f4, ABISELECT(136,80), "S2619C1.s2619c1f4");
    check_field_offset(lv, s2619c1f5, ABISELECT(160,100), "S2619C1.s2619c1f5");
    check_field_offset(lv, s2619c1f6, ABISELECT(168,104), "S2619C1.s2619c1f6");
    check_field_offset(lv, s2619c1f7, ABISELECT(176,108), "S2619C1.s2619c1f7");
    test_class_info(&lv, &cd_S2619C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2619C1(Test_S2619C1, "S2619C1", ABISELECT(184,112));

#else // __cplusplus

extern Class_Descriptor cd_S40C13_nt;
extern VTBL_ENTRY _ZTI9S40C13_nt[];
extern Class_Descriptor cd_S2619C2;
static Base_Class bases_S2619C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2619C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S2619C1 = {  "S2619C1", // class name
  bases_S2619C1, 2,
  0, // no vftv
  0, //no vtt
  ABISELECT(184,112), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19514C4  {
  char s19514c4f0:5;
  char s19514c4f1[3];
  virtual void  v2(); // _ZN8S19514C42v2Ev
  virtual void  v3(); // _ZN8S19514C42v3Ev
  virtual void  v4(); // _ZN8S19514C42v4Ev
  virtual void  v5(); // _ZN8S19514C42v5Ev
  virtual void  v6(); // _ZN8S19514C42v6Ev
  ~S19514C4(); // tgen
  S19514C4(); // tgen
};
//SIG(-1 S19514C4) C1{ v1 v2 v3 v4 v5 Fc:5 Fc[3]}


void  S19514C4 ::v2(){vfunc_called(this, "_ZN8S19514C42v2Ev");}
void  S19514C4 ::v3(){vfunc_called(this, "_ZN8S19514C42v3Ev");}
void  S19514C4 ::v4(){vfunc_called(this, "_ZN8S19514C42v4Ev");}
void  S19514C4 ::v5(){vfunc_called(this, "_ZN8S19514C42v5Ev");}
void  S19514C4 ::v6(){vfunc_called(this, "_ZN8S19514C42v6Ev");}
S19514C4 ::~S19514C4(){ note_dtor("S19514C4", this);} // tgen
S19514C4 ::S19514C4(){ note_ctor("S19514C4", this);} // tgen

static void Test_S19514C4()
{
  extern Class_Descriptor cd_S19514C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19514C4, buf);
    S19514C4 *dp, &lv = *(dp=new (buf) S19514C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19514C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19514C4)");
    set_bf_and_test(lv, s19514c4f0, ABISELECT(8,4), 0, 5, 1, "S19514C4");
    set_bf_and_test(lv, s19514c4f0, ABISELECT(8,4), 0, 5, hide_sll(1LL<<4), "S19514C4");
    check_field_offset(lv, s19514c4f1, ABISELECT(9,5), "S19514C4.s19514c4f1");
    test_class_info(&lv, &cd_S19514C4);
    dp->~S19514C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19514C4(Test_S19514C4, "S19514C4", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S19514C4C1Ev();
extern void _ZN8S19514C4D1Ev();
Name_Map name_map_S19514C4[] = {
  NSPAIR(_ZN8S19514C4C1Ev),
  NSPAIR(_ZN8S19514C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19514C4[];
extern void _ZN8S19514C42v2Ev();
extern void _ZN8S19514C42v3Ev();
extern void _ZN8S19514C42v4Ev();
extern void _ZN8S19514C42v5Ev();
extern void _ZN8S19514C42v6Ev();
static  VTBL_ENTRY vtc_S19514C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19514C4[0]),
  (VTBL_ENTRY)&_ZN8S19514C42v2Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v3Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v6Ev,
};
extern VTBL_ENTRY _ZTI8S19514C4[];
extern  VTBL_ENTRY _ZTV8S19514C4[];
Class_Descriptor cd_S19514C4 = {  "S19514C4", // class name
  0,0,//no base classes
  &(vtc_S19514C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19514C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19514C4),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

union  S19514C6_nt  {
  void  mf19514c6(); // _ZN11S19514C6_nt9mf19514c6Ev
};
//SIG(1 S19514C6_nt) U1{ m}

#endif // __cplusplus
#ifdef __cplusplus

struct  S19514C5  : S19514C4 {
  ::S19514C6_nt s19514c5f0;
  ::S20291C14_nt s19514c5f1;
  ::S19514C4 s19514c5f2;
  virtual  ~S19514C5(); // _ZN8S19514C5D1Ev
  virtual void  v7(); // _ZN8S19514C52v7Ev
  virtual void  v8(); // _ZN8S19514C52v8Ev
  virtual void  v9(); // _ZN8S19514C52v9Ev
  virtual void  v10(); // _ZN8S19514C53v10Ev
  virtual void  v11(); // _ZN8S19514C53v11Ev
  S19514C5(); // tgen
};
//SIG(-1 S19514C5) C1{ BC2{ v6 v7 v8 v9 v10 Fc:5 Fc[3]} vd v1 v2 v3 v4 v5 FU3{ m} FC4{} FC2}


 S19514C5 ::~S19514C5(){ note_dtor("S19514C5", this);}
void  S19514C5 ::v7(){vfunc_called(this, "_ZN8S19514C52v7Ev");}
void  S19514C5 ::v8(){vfunc_called(this, "_ZN8S19514C52v8Ev");}
void  S19514C5 ::v9(){vfunc_called(this, "_ZN8S19514C52v9Ev");}
void  S19514C5 ::v10(){vfunc_called(this, "_ZN8S19514C53v10Ev");}
void  S19514C5 ::v11(){vfunc_called(this, "_ZN8S19514C53v11Ev");}
S19514C5 ::S19514C5(){ note_ctor("S19514C5", this);} // tgen

static void Test_S19514C5()
{
  extern Class_Descriptor cd_S19514C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S19514C5, buf);
    S19514C5 *dp, &lv = *(dp=new (buf) S19514C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S19514C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19514C5)");
    check_base_class_offset(lv, (S19514C4*), 0, "S19514C5");
    check_field_offset(lv, s19514c5f0, ABISELECT(12,8), "S19514C5.s19514c5f0");
    check_field_offset(lv, s19514c5f1, ABISELECT(13,9), "S19514C5.s19514c5f1");
    check_field_offset(lv, s19514c5f2, ABISELECT(16,12), "S19514C5.s19514c5f2");
    test_class_info(&lv, &cd_S19514C5);
    dp->~S19514C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19514C5(Test_S19514C5, "S19514C5", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S19514C5C1Ev();
extern void _ZN8S19514C5D1Ev();
Name_Map name_map_S19514C5[] = {
  NSPAIR(_ZN8S19514C5C1Ev),
  NSPAIR(_ZN8S19514C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19514C4;
extern VTBL_ENTRY _ZTI8S19514C4[];
extern  VTBL_ENTRY _ZTV8S19514C4[];
static Base_Class bases_S19514C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19514C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19514C5[];
extern void _ZN8S19514C42v2Ev();
extern void _ZN8S19514C42v3Ev();
extern void _ZN8S19514C42v4Ev();
extern void _ZN8S19514C42v5Ev();
extern void _ZN8S19514C42v6Ev();
extern void _ZN8S19514C5D1Ev();
extern void _ZN8S19514C5D0Ev();
extern void _ZN8S19514C52v7Ev();
extern void _ZN8S19514C52v8Ev();
extern void _ZN8S19514C52v9Ev();
extern void _ZN8S19514C53v10Ev();
extern void _ZN8S19514C53v11Ev();
static  VTBL_ENTRY vtc_S19514C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19514C5[0]),
  (VTBL_ENTRY)&_ZN8S19514C42v2Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v3Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19514C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19514C5D0Ev,
  (VTBL_ENTRY)&_ZN8S19514C52v7Ev,
  (VTBL_ENTRY)&_ZN8S19514C52v8Ev,
  (VTBL_ENTRY)&_ZN8S19514C52v9Ev,
  (VTBL_ENTRY)&_ZN8S19514C53v10Ev,
  (VTBL_ENTRY)&_ZN8S19514C53v11Ev,
};
extern VTBL_ENTRY _ZTI8S19514C5[];
extern  VTBL_ENTRY _ZTV8S19514C5[];
Class_Descriptor cd_S19514C5 = {  "S19514C5", // class name
  bases_S19514C5, 1,
  &(vtc_S19514C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S19514C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19514C5),14, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19514C3  : virtual S19514C4 , virtual S19514C5 {
  virtual  ~S19514C3(); // _ZN8S19514C3D2Ev
  virtual void  v12(); // _ZN8S19514C33v12Ev
  virtual void  v13(); // _ZN8S19514C33v13Ev
  virtual void  v14(); // _ZN8S19514C33v14Ev
  S19514C3(); // tgen
};
//SIG(-1 S19514C3) C1{ VBC2{ v4 v5 v6 v7 v8 Fc:5 Fc[3]} VBC3{ BC2 vd v9 v10 v11 v12 v13 FU4{ m} FC5{} FC2} vd v1 v2 v3}


 S19514C3 ::~S19514C3(){ note_dtor("S19514C3", this);}
void  S19514C3 ::v12(){vfunc_called(this, "_ZN8S19514C33v12Ev");}
void  S19514C3 ::v13(){vfunc_called(this, "_ZN8S19514C33v13Ev");}
void  S19514C3 ::v14(){vfunc_called(this, "_ZN8S19514C33v14Ev");}
S19514C3 ::S19514C3(){ note_ctor("S19514C3", this);} // tgen

static void Test_S19514C3()
{
  extern Class_Descriptor cd_S19514C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S19514C3, buf);
    S19514C3 *dp, &lv = *(dp=new (buf) S19514C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S19514C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19514C3)");
    /*is_ambiguous_... S19514C3::S19514C4 */ AMB_check_base_class_offset(lv, (S19514C4*), ABISELECT(8,4), "S19514C3");
    check_base_class_offset(lv, (S19514C4*)(S19514C5*), ABISELECT(24,12), "S19514C3");
    check_base_class_offset(lv, (S19514C5*), ABISELECT(24,12), "S19514C3");
    test_class_info(&lv, &cd_S19514C3);
    dp->~S19514C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19514C3(Test_S19514C3, "S19514C3", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN8S19514C3C1Ev();
extern void _ZN8S19514C3D2Ev();
Name_Map name_map_S19514C3[] = {
  NSPAIR(_ZN8S19514C3C1Ev),
  NSPAIR(_ZN8S19514C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19514C4;
extern VTBL_ENTRY _ZTI8S19514C4[];
extern  VTBL_ENTRY _ZTV8S19514C4[];
extern Class_Descriptor cd_S19514C4;
extern VTBL_ENTRY _ZTI8S19514C4[];
extern  VTBL_ENTRY _ZTV8S19514C4[];
extern Class_Descriptor cd_S19514C5;
extern VTBL_ENTRY _ZTI8S19514C5[];
extern  VTBL_ENTRY _ZTV8S19514C5[];
static Base_Class bases_S19514C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19514C4,    ABISELECT(8,4), //bcp->offset
    9, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19514C4,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19514C5,    ABISELECT(24,12), //bcp->offset
    21, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19514C3[];
extern void _ZN8S19514C3D1Ev();
extern void _ZN8S19514C3D0Ev();
extern void _ZN8S19514C33v12Ev();
extern void _ZN8S19514C33v13Ev();
extern void _ZN8S19514C33v14Ev();
extern void _ZN8S19514C42v2Ev();
extern void _ZN8S19514C42v3Ev();
extern void _ZN8S19514C42v4Ev();
extern void _ZN8S19514C42v5Ev();
extern void _ZN8S19514C42v6Ev();
extern void _ZN8S19514C42v2Ev();
extern void _ZN8S19514C42v3Ev();
extern void _ZN8S19514C42v4Ev();
extern void _ZN8S19514C42v5Ev();
extern void _ZN8S19514C42v6Ev();
extern void ABISELECT(_ZTv0_n64_N8S19514C3D1Ev,_ZTv0_n32_N8S19514C3D1Ev)();
extern void ABISELECT(_ZThn24_N8S19514C3D1Ev,_ZThn12_N8S19514C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19514C3D0Ev,_ZTv0_n32_N8S19514C3D0Ev)();
extern void ABISELECT(_ZThn24_N8S19514C3D0Ev,_ZThn12_N8S19514C3D0Ev)() __attribute__((weak));
extern void _ZN8S19514C52v7Ev();
extern void _ZN8S19514C52v8Ev();
extern void _ZN8S19514C52v9Ev();
extern void _ZN8S19514C53v10Ev();
extern void _ZN8S19514C53v11Ev();
static  VTBL_ENTRY vtc_S19514C3[] = {
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19514C3[0]),
  (VTBL_ENTRY)&_ZN8S19514C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19514C3D0Ev,
  (VTBL_ENTRY)&_ZN8S19514C33v12Ev,
  (VTBL_ENTRY)&_ZN8S19514C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19514C33v14Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19514C3[0]),
  (VTBL_ENTRY)&_ZN8S19514C42v2Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v3Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v6Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19514C3[0]),
  (VTBL_ENTRY)&_ZN8S19514C42v2Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v3Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19514C3D1Ev,_ZTv0_n32_N8S19514C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19514C3D0Ev,_ZTv0_n32_N8S19514C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19514C52v7Ev,
  (VTBL_ENTRY)&_ZN8S19514C52v8Ev,
  (VTBL_ENTRY)&_ZN8S19514C52v9Ev,
  (VTBL_ENTRY)&_ZN8S19514C53v10Ev,
  (VTBL_ENTRY)&_ZN8S19514C53v11Ev,
};
extern VTBL_ENTRY _ZTV8S19514C3[];
static  VTT_ENTRY vtt_S19514C3[] = {
  {&(_ZTV8S19514C3[4]),  4,46},
  {&(_ZTV8S19514C3[16]),  16,46},
  {&(_ZTV8S19514C3[34]),  34,46},
};
extern VTBL_ENTRY _ZTI8S19514C3[];
extern  VTBL_ENTRY _ZTV8S19514C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19514C3[];
static VTBL_ENTRY alt_thunk_names182[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19514C3D0Ev,_ZTv0_n32_N8S19514C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S19514C3D0Ev,_ZThn12_N8S19514C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19514C3D1Ev,_ZTv0_n32_N8S19514C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S19514C3D1Ev,_ZThn12_N8S19514C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19514C3 = {  "S19514C3", // class name
  bases_S19514C3, 3,
  &(vtc_S19514C3[0]), // expected_vtbl_contents
  &(vtt_S19514C3[0]), // expected_vtt_contents
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI8S19514C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19514C3),46, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19514C3),3, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names182,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19514C2  : S19514C3 {
  int s19514c2f0;
  virtual  ~S19514C2(); // _ZN8S19514C2D2Ev
  virtual void  v15(); // _ZN8S19514C23v15Ev
  virtual void  v16(); // _ZN8S19514C23v16Ev
  virtual void  v17(); // _ZN8S19514C23v17Ev
  virtual void  v18(); // _ZN8S19514C23v18Ev
  virtual void  v19(); // _ZN8S19514C23v19Ev
  virtual void  v20(); // _ZN8S19514C23v20Ev
  S19514C2(); // tgen
};
//SIG(-1 S19514C2) C1{ BC2{ VBC3{ v7 v8 v9 v10 v11 Fc:5 Fc[3]} VBC4{ BC3 vd v12 v13 v14 v15 v16 FU5{ m} FC6{} FC3} vd v17 v18 v19} vd v1 v2 v3 v4 v5 v6 Fi}


 S19514C2 ::~S19514C2(){ note_dtor("S19514C2", this);}
void  S19514C2 ::v15(){vfunc_called(this, "_ZN8S19514C23v15Ev");}
void  S19514C2 ::v16(){vfunc_called(this, "_ZN8S19514C23v16Ev");}
void  S19514C2 ::v17(){vfunc_called(this, "_ZN8S19514C23v17Ev");}
void  S19514C2 ::v18(){vfunc_called(this, "_ZN8S19514C23v18Ev");}
void  S19514C2 ::v19(){vfunc_called(this, "_ZN8S19514C23v19Ev");}
void  S19514C2 ::v20(){vfunc_called(this, "_ZN8S19514C23v20Ev");}
S19514C2 ::S19514C2(){ note_ctor("S19514C2", this);} // tgen

static void Test_S19514C2()
{
  extern Class_Descriptor cd_S19514C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,10)];
    init_test(&cd_S19514C2, buf);
    S19514C2 *dp, &lv = *(dp=new (buf) S19514C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S19514C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19514C2)");
    /*is_ambiguous_... S19514C3::S19514C4 */ AMB_check_base_class_offset(lv, (S19514C4*)(S19514C3*), ABISELECT(16,8), "S19514C2");
    check_base_class_offset(lv, (S19514C4*)(S19514C5*), ABISELECT(32,16), "S19514C2");
    check_base_class_offset(lv, (S19514C5*)(S19514C3*), ABISELECT(32,16), "S19514C2");
    check_base_class_offset(lv, (S19514C3*), 0, "S19514C2");
    check_field_offset(lv, s19514c2f0, ABISELECT(8,4), "S19514C2.s19514c2f0");
    test_class_info(&lv, &cd_S19514C2);
    dp->~S19514C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19514C2(Test_S19514C2, "S19514C2", ABISELECT(64,36));

#else // __cplusplus

extern void _ZN8S19514C2C1Ev();
extern void _ZN8S19514C2D2Ev();
Name_Map name_map_S19514C2[] = {
  NSPAIR(_ZN8S19514C2C1Ev),
  NSPAIR(_ZN8S19514C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19514C4;
extern VTBL_ENTRY _ZTI8S19514C4[];
extern  VTBL_ENTRY _ZTV8S19514C4[];
extern Class_Descriptor cd_S19514C4;
extern VTBL_ENTRY _ZTI8S19514C4[];
extern  VTBL_ENTRY _ZTV8S19514C4[];
extern Class_Descriptor cd_S19514C5;
extern VTBL_ENTRY _ZTI8S19514C5[];
extern  VTBL_ENTRY _ZTV8S19514C5[];
extern Class_Descriptor cd_S19514C3;
extern VTBL_ENTRY _ZTI8S19514C3[];
extern  VTBL_ENTRY _ZTV8S19514C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19514C3[];
static Base_Class bases_S19514C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19514C4,    ABISELECT(16,8), //bcp->offset
    15, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19514C4,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19514C5,    ABISELECT(32,16), //bcp->offset
    27, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19514C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19514C2[];
extern void _ZN8S19514C2D1Ev();
extern void _ZN8S19514C2D0Ev();
extern void _ZN8S19514C33v12Ev();
extern void _ZN8S19514C33v13Ev();
extern void _ZN8S19514C33v14Ev();
extern void _ZN8S19514C23v15Ev();
extern void _ZN8S19514C23v16Ev();
extern void _ZN8S19514C23v17Ev();
extern void _ZN8S19514C23v18Ev();
extern void _ZN8S19514C23v19Ev();
extern void _ZN8S19514C23v20Ev();
extern void _ZN8S19514C42v2Ev();
extern void _ZN8S19514C42v3Ev();
extern void _ZN8S19514C42v4Ev();
extern void _ZN8S19514C42v5Ev();
extern void _ZN8S19514C42v6Ev();
extern void _ZN8S19514C42v2Ev();
extern void _ZN8S19514C42v3Ev();
extern void _ZN8S19514C42v4Ev();
extern void _ZN8S19514C42v5Ev();
extern void _ZN8S19514C42v6Ev();
extern void ABISELECT(_ZTv0_n64_N8S19514C2D1Ev,_ZTv0_n32_N8S19514C2D1Ev)();
extern void ABISELECT(_ZThn32_N8S19514C2D1Ev,_ZThn16_N8S19514C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19514C2D0Ev,_ZTv0_n32_N8S19514C2D0Ev)();
extern void ABISELECT(_ZThn32_N8S19514C2D0Ev,_ZThn16_N8S19514C2D0Ev)() __attribute__((weak));
extern void _ZN8S19514C52v7Ev();
extern void _ZN8S19514C52v8Ev();
extern void _ZN8S19514C52v9Ev();
extern void _ZN8S19514C53v10Ev();
extern void _ZN8S19514C53v11Ev();
static  VTBL_ENTRY vtc_S19514C2[] = {
  ABISELECT(32,16),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19514C2[0]),
  (VTBL_ENTRY)&_ZN8S19514C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19514C2D0Ev,
  (VTBL_ENTRY)&_ZN8S19514C33v12Ev,
  (VTBL_ENTRY)&_ZN8S19514C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19514C33v14Ev,
  (VTBL_ENTRY)&_ZN8S19514C23v15Ev,
  (VTBL_ENTRY)&_ZN8S19514C23v16Ev,
  (VTBL_ENTRY)&_ZN8S19514C23v17Ev,
  (VTBL_ENTRY)&_ZN8S19514C23v18Ev,
  (VTBL_ENTRY)&_ZN8S19514C23v19Ev,
  (VTBL_ENTRY)&_ZN8S19514C23v20Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19514C2[0]),
  (VTBL_ENTRY)&_ZN8S19514C42v2Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v3Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v6Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-16),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19514C2[0]),
  (VTBL_ENTRY)&_ZN8S19514C42v2Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v3Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19514C2D1Ev,_ZTv0_n32_N8S19514C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19514C2D0Ev,_ZTv0_n32_N8S19514C2D0Ev),
  (VTBL_ENTRY)&_ZN8S19514C52v7Ev,
  (VTBL_ENTRY)&_ZN8S19514C52v8Ev,
  (VTBL_ENTRY)&_ZN8S19514C52v9Ev,
  (VTBL_ENTRY)&_ZN8S19514C53v10Ev,
  (VTBL_ENTRY)&_ZN8S19514C53v11Ev,
};
extern VTBL_ENTRY _ZTV8S19514C2[];
extern void _ZN8S19514C3D1Ev();
extern void _ZN8S19514C3D0Ev();
extern void _ZN8S19514C33v12Ev();
extern void _ZN8S19514C33v13Ev();
extern void _ZN8S19514C33v14Ev();
static  VTBL_ENTRY _tg__ZTV8S19514C3__8S19514C2[] = {
  ABISELECT(32,16),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19514C3[0]),
  (VTBL_ENTRY)&_ZN8S19514C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19514C3D0Ev,
  (VTBL_ENTRY)&_ZN8S19514C33v12Ev,
  (VTBL_ENTRY)&_ZN8S19514C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19514C33v14Ev,
};
extern void _ZN8S19514C42v2Ev();
extern void _ZN8S19514C42v3Ev();
extern void _ZN8S19514C42v4Ev();
extern void _ZN8S19514C42v5Ev();
extern void _ZN8S19514C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19514C4__8S19514C3__8S19514C2[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19514C3[0]),
  (VTBL_ENTRY)&_ZN8S19514C42v2Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v3Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v6Ev,
};
extern void _ZN8S19514C42v2Ev();
extern void _ZN8S19514C42v3Ev();
extern void _ZN8S19514C42v4Ev();
extern void _ZN8S19514C42v5Ev();
extern void _ZN8S19514C42v6Ev();
extern void ABISELECT(_ZTv0_n64_N8S19514C3D1Ev,_ZTv0_n32_N8S19514C3D1Ev)();
extern void ABISELECT(_ZThn32_N8S19514C3D1Ev,_ZThn16_N8S19514C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19514C3D0Ev,_ZTv0_n32_N8S19514C3D0Ev)();
extern void ABISELECT(_ZThn32_N8S19514C3D0Ev,_ZThn16_N8S19514C3D0Ev)() __attribute__((weak));
extern void _ZN8S19514C52v7Ev();
extern void _ZN8S19514C52v8Ev();
extern void _ZN8S19514C52v9Ev();
extern void _ZN8S19514C53v10Ev();
extern void _ZN8S19514C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19514C5__8S19514C3__8S19514C2[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-16),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19514C3[0]),
  (VTBL_ENTRY)&_ZN8S19514C42v2Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v3Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19514C3D1Ev,_ZTv0_n32_N8S19514C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19514C3D0Ev,_ZTv0_n32_N8S19514C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19514C52v7Ev,
  (VTBL_ENTRY)&_ZN8S19514C52v8Ev,
  (VTBL_ENTRY)&_ZN8S19514C52v9Ev,
  (VTBL_ENTRY)&_ZN8S19514C53v10Ev,
  (VTBL_ENTRY)&_ZN8S19514C53v11Ev,
};
static  VTT_ENTRY vtt_S19514C2[] = {
  {&(_ZTV8S19514C2[4]),  4,52},
  {&(_tg__ZTV8S19514C3__8S19514C2[4]),  4,9},
  {&(_tg__ZTV8S19514C4__8S19514C3__8S19514C2[7]),  7,12},
  {&(_tg__ZTV8S19514C5__8S19514C3__8S19514C2[13]),  13,25},
  {&(_ZTV8S19514C2[22]),  22,52},
  {&(_ZTV8S19514C2[40]),  40,52},
};
extern VTBL_ENTRY _ZTI8S19514C2[];
extern  VTBL_ENTRY _ZTV8S19514C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19514C2[];
static VTBL_ENTRY alt_thunk_names183[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19514C3D0Ev,_ZTv0_n32_N8S19514C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19514C3D0Ev,_ZThn16_N8S19514C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19514C3D1Ev,_ZTv0_n32_N8S19514C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19514C3D1Ev,_ZThn16_N8S19514C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19514C2D0Ev,_ZTv0_n32_N8S19514C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19514C2D0Ev,_ZThn16_N8S19514C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19514C2D1Ev,_ZTv0_n32_N8S19514C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19514C2D1Ev,_ZThn16_N8S19514C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19514C2 = {  "S19514C2", // class name
  bases_S19514C2, 4,
  &(vtc_S19514C2[0]), // expected_vtbl_contents
  &(vtt_S19514C2[0]), // expected_vtt_contents
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI8S19514C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19514C2),52, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19514C2),6, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names183,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19514C8  : S19514C4 {
  virtual void  v21(); // _ZN8S19514C83v21Ev
  virtual void  v22(); // _ZN8S19514C83v22Ev
  virtual void  v23(); // _ZN8S19514C83v23Ev
  virtual void  v24(); // _ZN8S19514C83v24Ev
  virtual void  v25(); // _ZN8S19514C83v25Ev
  ~S19514C8(); // tgen
  S19514C8(); // tgen
};
//SIG(-1 S19514C8) C1{ BC2{ v6 v7 v8 v9 v10 Fc:5 Fc[3]} v1 v2 v3 v4 v5}


void  S19514C8 ::v21(){vfunc_called(this, "_ZN8S19514C83v21Ev");}
void  S19514C8 ::v22(){vfunc_called(this, "_ZN8S19514C83v22Ev");}
void  S19514C8 ::v23(){vfunc_called(this, "_ZN8S19514C83v23Ev");}
void  S19514C8 ::v24(){vfunc_called(this, "_ZN8S19514C83v24Ev");}
void  S19514C8 ::v25(){vfunc_called(this, "_ZN8S19514C83v25Ev");}
S19514C8 ::~S19514C8(){ note_dtor("S19514C8", this);} // tgen
S19514C8 ::S19514C8(){ note_ctor("S19514C8", this);} // tgen

static void Test_S19514C8()
{
  extern Class_Descriptor cd_S19514C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19514C8, buf);
    S19514C8 *dp, &lv = *(dp=new (buf) S19514C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19514C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19514C8)");
    check_base_class_offset(lv, (S19514C4*), 0, "S19514C8");
    test_class_info(&lv, &cd_S19514C8);
    dp->~S19514C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19514C8(Test_S19514C8, "S19514C8", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S19514C8C1Ev();
extern void _ZN8S19514C8D1Ev();
Name_Map name_map_S19514C8[] = {
  NSPAIR(_ZN8S19514C8C1Ev),
  NSPAIR(_ZN8S19514C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19514C4;
extern VTBL_ENTRY _ZTI8S19514C4[];
extern  VTBL_ENTRY _ZTV8S19514C4[];
static Base_Class bases_S19514C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19514C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19514C8[];
extern void _ZN8S19514C42v2Ev();
extern void _ZN8S19514C42v3Ev();
extern void _ZN8S19514C42v4Ev();
extern void _ZN8S19514C42v5Ev();
extern void _ZN8S19514C42v6Ev();
extern void _ZN8S19514C83v21Ev();
extern void _ZN8S19514C83v22Ev();
extern void _ZN8S19514C83v23Ev();
extern void _ZN8S19514C83v24Ev();
extern void _ZN8S19514C83v25Ev();
static  VTBL_ENTRY vtc_S19514C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19514C8[0]),
  (VTBL_ENTRY)&_ZN8S19514C42v2Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v3Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19514C83v21Ev,
  (VTBL_ENTRY)&_ZN8S19514C83v22Ev,
  (VTBL_ENTRY)&_ZN8S19514C83v23Ev,
  (VTBL_ENTRY)&_ZN8S19514C83v24Ev,
  (VTBL_ENTRY)&_ZN8S19514C83v25Ev,
};
extern VTBL_ENTRY _ZTI8S19514C8[];
extern  VTBL_ENTRY _ZTV8S19514C8[];
Class_Descriptor cd_S19514C8 = {  "S19514C8", // class name
  bases_S19514C8, 1,
  &(vtc_S19514C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19514C8),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19514C8),12, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19514C1  : virtual S19514C2 , S19514C8 {
  virtual  ~S19514C1(); // _ZN8S19514C1D2Ev
  virtual void  v1(); // _ZN8S19514C12v1Ev
  S19514C1(); // tgen
};
//SIG(1 S19514C1) C1{ VBC2{ BC3{ VBC4{ v2 v3 v4 v5 v6 Fc:5 Fc[3]} VBC5{ BC4 vd v7 v8 v9 v10 v11 FU6{ m} FC7{} FC4} vd v12 v13 v14} vd v15 v16 v17 v18 v19 v20 Fi} BC8{ BC4 v21 v22 v23 v24 v25} vd v1}


 S19514C1 ::~S19514C1(){ note_dtor("S19514C1", this);}
void  S19514C1 ::v1(){vfunc_called(this, "_ZN8S19514C12v1Ev");}
S19514C1 ::S19514C1(){ note_ctor("S19514C1", this);} // tgen

static void Test_S19514C1()
{
  extern Class_Descriptor cd_S19514C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,12)];
    init_test(&cd_S19514C1, buf);
    S19514C1 *dp, &lv = *(dp=new (buf) S19514C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,44), "sizeof(S19514C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19514C1)");
    /*is_ambiguous_... S19514C3::S19514C4 */ AMB_check_base_class_offset(lv, (S19514C4*)(S19514C3*)(S19514C2*), ABISELECT(32,16), "S19514C1");
    check_base_class_offset(lv, (S19514C4*)(S19514C5*), ABISELECT(48,24), "S19514C1");
    check_base_class_offset(lv, (S19514C5*)(S19514C3*)(S19514C2*), ABISELECT(48,24), "S19514C1");
    check_base_class_offset(lv, (S19514C3*)(S19514C2*), ABISELECT(16,8), "S19514C1");
    check_base_class_offset(lv, (S19514C2*), ABISELECT(16,8), "S19514C1");
    check_base_class_offset(lv, (S19514C4*)(S19514C8*), 0, "S19514C1");
    check_base_class_offset(lv, (S19514C8*), 0, "S19514C1");
    test_class_info(&lv, &cd_S19514C1);
    dp->~S19514C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19514C1(Test_S19514C1, "S19514C1", ABISELECT(80,44));

#else // __cplusplus

extern void _ZN8S19514C1C1Ev();
extern void _ZN8S19514C1D2Ev();
Name_Map name_map_S19514C1[] = {
  NSPAIR(_ZN8S19514C1C1Ev),
  NSPAIR(_ZN8S19514C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19514C4;
extern VTBL_ENTRY _ZTI8S19514C4[];
extern  VTBL_ENTRY _ZTV8S19514C4[];
extern Class_Descriptor cd_S19514C4;
extern VTBL_ENTRY _ZTI8S19514C4[];
extern  VTBL_ENTRY _ZTV8S19514C4[];
extern Class_Descriptor cd_S19514C5;
extern VTBL_ENTRY _ZTI8S19514C5[];
extern  VTBL_ENTRY _ZTV8S19514C5[];
extern Class_Descriptor cd_S19514C3;
extern VTBL_ENTRY _ZTI8S19514C3[];
extern  VTBL_ENTRY _ZTV8S19514C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19514C3[];
extern Class_Descriptor cd_S19514C2;
extern VTBL_ENTRY _ZTI8S19514C2[];
extern  VTBL_ENTRY _ZTV8S19514C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19514C2[];
extern Class_Descriptor cd_S19514C4;
extern VTBL_ENTRY _ZTI8S19514C4[];
extern  VTBL_ENTRY _ZTV8S19514C4[];
extern Class_Descriptor cd_S19514C8;
extern VTBL_ENTRY _ZTI8S19514C8[];
extern  VTBL_ENTRY _ZTV8S19514C8[];
static Base_Class bases_S19514C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19514C4,    ABISELECT(32,16), //bcp->offset
    43, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19514C4,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19514C5,    ABISELECT(48,24), //bcp->offset
    55, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19514C3,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19514C2,    ABISELECT(16,8), //bcp->offset
    18, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19514C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19514C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19514C1[];
extern void _ZN8S19514C42v2Ev();
extern void _ZN8S19514C42v3Ev();
extern void _ZN8S19514C42v4Ev();
extern void _ZN8S19514C42v5Ev();
extern void _ZN8S19514C42v6Ev();
extern void _ZN8S19514C83v21Ev();
extern void _ZN8S19514C83v22Ev();
extern void _ZN8S19514C83v23Ev();
extern void _ZN8S19514C83v24Ev();
extern void _ZN8S19514C83v25Ev();
extern void _ZN8S19514C1D1Ev();
extern void _ZN8S19514C1D0Ev();
extern void _ZN8S19514C12v1Ev();
extern void ABISELECT(_ZTv0_n40_N8S19514C1D1Ev,_ZTv0_n20_N8S19514C1D1Ev)();
extern void ABISELECT(_ZThn16_N8S19514C1D1Ev,_ZThn8_N8S19514C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19514C1D0Ev,_ZTv0_n20_N8S19514C1D0Ev)();
extern void ABISELECT(_ZThn16_N8S19514C1D0Ev,_ZThn8_N8S19514C1D0Ev)() __attribute__((weak));
extern void _ZN8S19514C33v12Ev();
extern void _ZN8S19514C33v13Ev();
extern void _ZN8S19514C33v14Ev();
extern void _ZN8S19514C23v15Ev();
extern void _ZN8S19514C23v16Ev();
extern void _ZN8S19514C23v17Ev();
extern void _ZN8S19514C23v18Ev();
extern void _ZN8S19514C23v19Ev();
extern void _ZN8S19514C23v20Ev();
extern void _ZN8S19514C42v2Ev();
extern void _ZN8S19514C42v3Ev();
extern void _ZN8S19514C42v4Ev();
extern void _ZN8S19514C42v5Ev();
extern void _ZN8S19514C42v6Ev();
extern void _ZN8S19514C42v2Ev();
extern void _ZN8S19514C42v3Ev();
extern void _ZN8S19514C42v4Ev();
extern void _ZN8S19514C42v5Ev();
extern void _ZN8S19514C42v6Ev();
extern void ABISELECT(_ZTv0_n64_N8S19514C1D1Ev,_ZTv0_n32_N8S19514C1D1Ev)();
extern void ABISELECT(_ZThn48_N8S19514C1D1Ev,_ZThn24_N8S19514C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19514C1D0Ev,_ZTv0_n32_N8S19514C1D0Ev)();
extern void ABISELECT(_ZThn48_N8S19514C1D0Ev,_ZThn24_N8S19514C1D0Ev)() __attribute__((weak));
extern void _ZN8S19514C52v7Ev();
extern void _ZN8S19514C52v8Ev();
extern void _ZN8S19514C52v9Ev();
extern void _ZN8S19514C53v10Ev();
extern void _ZN8S19514C53v11Ev();
static  VTBL_ENTRY vtc_S19514C1[] = {
  ABISELECT(48,24),
  ABISELECT(32,16),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19514C1[0]),
  (VTBL_ENTRY)&_ZN8S19514C42v2Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v3Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19514C83v21Ev,
  (VTBL_ENTRY)&_ZN8S19514C83v22Ev,
  (VTBL_ENTRY)&_ZN8S19514C83v23Ev,
  (VTBL_ENTRY)&_ZN8S19514C83v24Ev,
  (VTBL_ENTRY)&_ZN8S19514C83v25Ev,
  (VTBL_ENTRY)&_ZN8S19514C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19514C1D0Ev,
  (VTBL_ENTRY)&_ZN8S19514C12v1Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19514C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19514C1D1Ev,_ZTv0_n20_N8S19514C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19514C1D0Ev,_ZTv0_n20_N8S19514C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19514C33v12Ev,
  (VTBL_ENTRY)&_ZN8S19514C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19514C33v14Ev,
  (VTBL_ENTRY)&_ZN8S19514C23v15Ev,
  (VTBL_ENTRY)&_ZN8S19514C23v16Ev,
  (VTBL_ENTRY)&_ZN8S19514C23v17Ev,
  (VTBL_ENTRY)&_ZN8S19514C23v18Ev,
  (VTBL_ENTRY)&_ZN8S19514C23v19Ev,
  (VTBL_ENTRY)&_ZN8S19514C23v20Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19514C1[0]),
  (VTBL_ENTRY)&_ZN8S19514C42v2Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v3Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v6Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-24),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S19514C1[0]),
  (VTBL_ENTRY)&_ZN8S19514C42v2Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v3Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19514C1D1Ev,_ZTv0_n32_N8S19514C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19514C1D0Ev,_ZTv0_n32_N8S19514C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19514C52v7Ev,
  (VTBL_ENTRY)&_ZN8S19514C52v8Ev,
  (VTBL_ENTRY)&_ZN8S19514C52v9Ev,
  (VTBL_ENTRY)&_ZN8S19514C53v10Ev,
  (VTBL_ENTRY)&_ZN8S19514C53v11Ev,
};
extern VTBL_ENTRY _ZTV8S19514C1[];
extern void _ZN8S19514C2D1Ev();
extern void _ZN8S19514C2D0Ev();
extern void _ZN8S19514C33v12Ev();
extern void _ZN8S19514C33v13Ev();
extern void _ZN8S19514C33v14Ev();
extern void _ZN8S19514C23v15Ev();
extern void _ZN8S19514C23v16Ev();
extern void _ZN8S19514C23v17Ev();
extern void _ZN8S19514C23v18Ev();
extern void _ZN8S19514C23v19Ev();
extern void _ZN8S19514C23v20Ev();
static  VTBL_ENTRY _tg__ZTV8S19514C2__8S19514C1[] = {
  ABISELECT(32,16),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19514C2[0]),
  (VTBL_ENTRY)&_ZN8S19514C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19514C2D0Ev,
  (VTBL_ENTRY)&_ZN8S19514C33v12Ev,
  (VTBL_ENTRY)&_ZN8S19514C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19514C33v14Ev,
  (VTBL_ENTRY)&_ZN8S19514C23v15Ev,
  (VTBL_ENTRY)&_ZN8S19514C23v16Ev,
  (VTBL_ENTRY)&_ZN8S19514C23v17Ev,
  (VTBL_ENTRY)&_ZN8S19514C23v18Ev,
  (VTBL_ENTRY)&_ZN8S19514C23v19Ev,
  (VTBL_ENTRY)&_ZN8S19514C23v20Ev,
};
extern void _ZN8S19514C3D1Ev();
extern void _ZN8S19514C3D0Ev();
extern void _ZN8S19514C33v12Ev();
extern void _ZN8S19514C33v13Ev();
extern void _ZN8S19514C33v14Ev();
static  VTBL_ENTRY _tg__ZTV8S19514C38S19514C2__8S19514C1[] = {
  ABISELECT(32,16),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19514C3[0]),
  (VTBL_ENTRY)&_ZN8S19514C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19514C3D0Ev,
  (VTBL_ENTRY)&_ZN8S19514C33v12Ev,
  (VTBL_ENTRY)&_ZN8S19514C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19514C33v14Ev,
};
extern void _ZN8S19514C42v2Ev();
extern void _ZN8S19514C42v3Ev();
extern void _ZN8S19514C42v4Ev();
extern void _ZN8S19514C42v5Ev();
extern void _ZN8S19514C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19514C4__8S19514C38S19514C2__8S19514C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19514C3[0]),
  (VTBL_ENTRY)&_ZN8S19514C42v2Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v3Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v6Ev,
};
extern void _ZN8S19514C42v2Ev();
extern void _ZN8S19514C42v3Ev();
extern void _ZN8S19514C42v4Ev();
extern void _ZN8S19514C42v5Ev();
extern void _ZN8S19514C42v6Ev();
extern void ABISELECT(_ZTv0_n64_N8S19514C3D1Ev,_ZTv0_n32_N8S19514C3D1Ev)();
extern void ABISELECT(_ZThn32_N8S19514C3D1Ev,_ZThn16_N8S19514C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19514C3D0Ev,_ZTv0_n32_N8S19514C3D0Ev)();
extern void ABISELECT(_ZThn32_N8S19514C3D0Ev,_ZThn16_N8S19514C3D0Ev)() __attribute__((weak));
extern void _ZN8S19514C52v7Ev();
extern void _ZN8S19514C52v8Ev();
extern void _ZN8S19514C52v9Ev();
extern void _ZN8S19514C53v10Ev();
extern void _ZN8S19514C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19514C5__8S19514C38S19514C2__8S19514C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-16),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19514C3[0]),
  (VTBL_ENTRY)&_ZN8S19514C42v2Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v3Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19514C3D1Ev,_ZTv0_n32_N8S19514C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19514C3D0Ev,_ZTv0_n32_N8S19514C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19514C52v7Ev,
  (VTBL_ENTRY)&_ZN8S19514C52v8Ev,
  (VTBL_ENTRY)&_ZN8S19514C52v9Ev,
  (VTBL_ENTRY)&_ZN8S19514C53v10Ev,
  (VTBL_ENTRY)&_ZN8S19514C53v11Ev,
};
extern void _ZN8S19514C42v2Ev();
extern void _ZN8S19514C42v3Ev();
extern void _ZN8S19514C42v4Ev();
extern void _ZN8S19514C42v5Ev();
extern void _ZN8S19514C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19514C4__8S19514C2__8S19514C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19514C2[0]),
  (VTBL_ENTRY)&_ZN8S19514C42v2Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v3Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v6Ev,
};
extern void _ZN8S19514C42v2Ev();
extern void _ZN8S19514C42v3Ev();
extern void _ZN8S19514C42v4Ev();
extern void _ZN8S19514C42v5Ev();
extern void _ZN8S19514C42v6Ev();
extern void ABISELECT(_ZTv0_n64_N8S19514C2D1Ev,_ZTv0_n32_N8S19514C2D1Ev)();
extern void ABISELECT(_ZThn32_N8S19514C2D1Ev,_ZThn16_N8S19514C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19514C2D0Ev,_ZTv0_n32_N8S19514C2D0Ev)();
extern void ABISELECT(_ZThn32_N8S19514C2D0Ev,_ZThn16_N8S19514C2D0Ev)() __attribute__((weak));
extern void _ZN8S19514C52v7Ev();
extern void _ZN8S19514C52v8Ev();
extern void _ZN8S19514C52v9Ev();
extern void _ZN8S19514C53v10Ev();
extern void _ZN8S19514C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19514C5__8S19514C2__8S19514C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-16),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19514C2[0]),
  (VTBL_ENTRY)&_ZN8S19514C42v2Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v3Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19514C2D1Ev,_ZTv0_n32_N8S19514C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19514C2D0Ev,_ZTv0_n32_N8S19514C2D0Ev),
  (VTBL_ENTRY)&_ZN8S19514C52v7Ev,
  (VTBL_ENTRY)&_ZN8S19514C52v8Ev,
  (VTBL_ENTRY)&_ZN8S19514C52v9Ev,
  (VTBL_ENTRY)&_ZN8S19514C53v10Ev,
  (VTBL_ENTRY)&_ZN8S19514C53v11Ev,
};
static  VTT_ENTRY vtt_S19514C1[] = {
  {&(_ZTV8S19514C1[5]),  5,80},
  {&(_ZTV8S19514C1[32]),  32,80},
  {&(_ZTV8S19514C1[50]),  50,80},
  {&(_ZTV8S19514C1[68]),  68,80},
  {&(_tg__ZTV8S19514C2__8S19514C1[4]),  4,15},
  {&(_tg__ZTV8S19514C38S19514C2__8S19514C1[4]),  4,9},
  {&(_tg__ZTV8S19514C4__8S19514C38S19514C2__8S19514C1[7]),  7,12},
  {&(_tg__ZTV8S19514C5__8S19514C38S19514C2__8S19514C1[13]),  13,25},
  {&(_tg__ZTV8S19514C4__8S19514C2__8S19514C1[7]),  7,12},
  {&(_tg__ZTV8S19514C5__8S19514C2__8S19514C1[13]),  13,25},
};
extern VTBL_ENTRY _ZTI8S19514C1[];
extern  VTBL_ENTRY _ZTV8S19514C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19514C1[];
static VTBL_ENTRY alt_thunk_names184[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19514C2D0Ev,_ZTv0_n32_N8S19514C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19514C2D0Ev,_ZThn16_N8S19514C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19514C2D1Ev,_ZTv0_n32_N8S19514C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19514C2D1Ev,_ZThn16_N8S19514C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19514C3D0Ev,_ZTv0_n32_N8S19514C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19514C3D0Ev,_ZThn16_N8S19514C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19514C3D1Ev,_ZTv0_n32_N8S19514C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19514C3D1Ev,_ZThn16_N8S19514C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19514C1D0Ev,_ZTv0_n32_N8S19514C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19514C1D0Ev,_ZThn24_N8S19514C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19514C1D1Ev,_ZTv0_n32_N8S19514C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19514C1D1Ev,_ZThn24_N8S19514C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19514C1D0Ev,_ZTv0_n20_N8S19514C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19514C1D0Ev,_ZThn8_N8S19514C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19514C1D1Ev,_ZTv0_n20_N8S19514C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19514C1D1Ev,_ZThn8_N8S19514C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19514C1 = {  "S19514C1", // class name
  bases_S19514C1, 7,
  &(vtc_S19514C1[0]), // expected_vtbl_contents
  &(vtt_S19514C1[0]), // expected_vtt_contents
  ABISELECT(80,44), // object size
  NSPAIRA(_ZTI8S19514C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19514C1),80, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19514C1),10, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names184,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18657C4  {
  virtual void  v10(); // _ZN8S18657C43v10Ev
  virtual void  v11(); // _ZN8S18657C43v11Ev
  ~S18657C4(); // tgen
  S18657C4(); // tgen
};
//SIG(-1 S18657C4) C1{ v1 v2}


void  S18657C4 ::v10(){vfunc_called(this, "_ZN8S18657C43v10Ev");}
void  S18657C4 ::v11(){vfunc_called(this, "_ZN8S18657C43v11Ev");}
S18657C4 ::~S18657C4(){ note_dtor("S18657C4", this);} // tgen
S18657C4 ::S18657C4(){ note_ctor("S18657C4", this);} // tgen

static void Test_S18657C4()
{
  extern Class_Descriptor cd_S18657C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S18657C4, buf);
    S18657C4 *dp, &lv = *(dp=new (buf) S18657C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S18657C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18657C4)");
    test_class_info(&lv, &cd_S18657C4);
    dp->~S18657C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18657C4(Test_S18657C4, "S18657C4", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S18657C4C1Ev();
extern void _ZN8S18657C4D1Ev();
Name_Map name_map_S18657C4[] = {
  NSPAIR(_ZN8S18657C4C1Ev),
  NSPAIR(_ZN8S18657C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18657C4[];
extern void _ZN8S18657C43v10Ev();
extern void _ZN8S18657C43v11Ev();
static  VTBL_ENTRY vtc_S18657C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18657C4[0]),
  (VTBL_ENTRY)&_ZN8S18657C43v10Ev,
  (VTBL_ENTRY)&_ZN8S18657C43v11Ev,
};
extern VTBL_ENTRY _ZTI8S18657C4[];
extern  VTBL_ENTRY _ZTV8S18657C4[];
Class_Descriptor cd_S18657C4 = {  "S18657C4", // class name
  0,0,//no base classes
  &(vtc_S18657C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S18657C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18657C4),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18657C3  : S18657C4 {
  int s18657c3f0[5];
  void *s18657c3f1;
  __tsi64 s18657c3f2[4];
  virtual void  v12(); // _ZN8S18657C33v12Ev
  virtual void  v13(); // _ZN8S18657C33v13Ev
  virtual void  v14(); // _ZN8S18657C33v14Ev
  virtual void  v15(); // _ZN8S18657C33v15Ev
  ~S18657C3(); // tgen
  S18657C3(); // tgen
};
//SIG(-1 S18657C3) C1{ BC2{ v5 v6} v1 v2 v3 v4 Fi[5] Fp FL[4]}


void  S18657C3 ::v12(){vfunc_called(this, "_ZN8S18657C33v12Ev");}
void  S18657C3 ::v13(){vfunc_called(this, "_ZN8S18657C33v13Ev");}
void  S18657C3 ::v14(){vfunc_called(this, "_ZN8S18657C33v14Ev");}
void  S18657C3 ::v15(){vfunc_called(this, "_ZN8S18657C33v15Ev");}
S18657C3 ::~S18657C3(){ note_dtor("S18657C3", this);} // tgen
S18657C3 ::S18657C3(){ note_ctor("S18657C3", this);} // tgen

static void Test_S18657C3()
{
  extern Class_Descriptor cd_S18657C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,16)];
    init_test(&cd_S18657C3, buf);
    S18657C3 *dp, &lv = *(dp=new (buf) S18657C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,60), "sizeof(S18657C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18657C3)");
    check_base_class_offset(lv, (S18657C4*), 0, "S18657C3");
    check_field_offset(lv, s18657c3f0, ABISELECT(8,4), "S18657C3.s18657c3f0");
    check_field_offset(lv, s18657c3f1, ABISELECT(32,24), "S18657C3.s18657c3f1");
    check_field_offset(lv, s18657c3f2, ABISELECT(40,28), "S18657C3.s18657c3f2");
    test_class_info(&lv, &cd_S18657C3);
    dp->~S18657C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18657C3(Test_S18657C3, "S18657C3", ABISELECT(72,60));

#else // __cplusplus

extern void _ZN8S18657C3C1Ev();
extern void _ZN8S18657C3D1Ev();
Name_Map name_map_S18657C3[] = {
  NSPAIR(_ZN8S18657C3C1Ev),
  NSPAIR(_ZN8S18657C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S18657C4;
extern VTBL_ENTRY _ZTI8S18657C4[];
extern  VTBL_ENTRY _ZTV8S18657C4[];
static Base_Class bases_S18657C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S18657C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S18657C3[];
extern void _ZN8S18657C43v10Ev();
extern void _ZN8S18657C43v11Ev();
extern void _ZN8S18657C33v12Ev();
extern void _ZN8S18657C33v13Ev();
extern void _ZN8S18657C33v14Ev();
extern void _ZN8S18657C33v15Ev();
static  VTBL_ENTRY vtc_S18657C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18657C3[0]),
  (VTBL_ENTRY)&_ZN8S18657C43v10Ev,
  (VTBL_ENTRY)&_ZN8S18657C43v11Ev,
  (VTBL_ENTRY)&_ZN8S18657C33v12Ev,
  (VTBL_ENTRY)&_ZN8S18657C33v13Ev,
  (VTBL_ENTRY)&_ZN8S18657C33v14Ev,
  (VTBL_ENTRY)&_ZN8S18657C33v15Ev,
};
extern VTBL_ENTRY _ZTI8S18657C3[];
extern  VTBL_ENTRY _ZTV8S18657C3[];
Class_Descriptor cd_S18657C3 = {  "S18657C3", // class name
  bases_S18657C3, 1,
  &(vtc_S18657C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,60), // object size
  NSPAIRA(_ZTI8S18657C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S18657C3),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18657C6  {
  virtual void  v16(); // _ZN8S18657C63v16Ev
  virtual void  v17(); // _ZN8S18657C63v17Ev
  ~S18657C6(); // tgen
  S18657C6(); // tgen
};
//SIG(-1 S18657C6) C1{ v1 v2}


void  S18657C6 ::v16(){vfunc_called(this, "_ZN8S18657C63v16Ev");}
void  S18657C6 ::v17(){vfunc_called(this, "_ZN8S18657C63v17Ev");}
S18657C6 ::~S18657C6(){ note_dtor("S18657C6", this);} // tgen
S18657C6 ::S18657C6(){ note_ctor("S18657C6", this);} // tgen

static void Test_S18657C6()
{
  extern Class_Descriptor cd_S18657C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S18657C6, buf);
    S18657C6 *dp, &lv = *(dp=new (buf) S18657C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S18657C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18657C6)");
    test_class_info(&lv, &cd_S18657C6);
    dp->~S18657C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18657C6(Test_S18657C6, "S18657C6", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S18657C6C1Ev();
extern void _ZN8S18657C6D1Ev();
Name_Map name_map_S18657C6[] = {
  NSPAIR(_ZN8S18657C6C1Ev),
  NSPAIR(_ZN8S18657C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18657C6[];
extern void _ZN8S18657C63v16Ev();
extern void _ZN8S18657C63v17Ev();
static  VTBL_ENTRY vtc_S18657C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18657C6[0]),
  (VTBL_ENTRY)&_ZN8S18657C63v16Ev,
  (VTBL_ENTRY)&_ZN8S18657C63v17Ev,
};
extern VTBL_ENTRY _ZTI8S18657C6[];
extern  VTBL_ENTRY _ZTV8S18657C6[];
Class_Descriptor cd_S18657C6 = {  "S18657C6", // class name
  0,0,//no base classes
  &(vtc_S18657C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S18657C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18657C6),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18657C8  : virtual S7856C24 , virtual S18657C4 , S18657C6 , virtual S18657C3 {
  virtual void  v18(); // _ZN8S18657C83v18Ev
  ~S18657C8(); // tgen
  S18657C8(); // tgen
};
//SIG(-1 S18657C8) C1{ VBC2{ m} VBC3{ v2 v3} BC4{ v4 v5} VBC5{ BC3 v6 v7 v8 v9 Fi[5] Fp FL[4]} v1}


void  S18657C8 ::v18(){vfunc_called(this, "_ZN8S18657C83v18Ev");}
S18657C8 ::~S18657C8(){ note_dtor("S18657C8", this);} // tgen
S18657C8 ::S18657C8(){ note_ctor("S18657C8", this);} // tgen

static void Test_S18657C8()
{
  extern Class_Descriptor cd_S18657C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,18)];
    init_test(&cd_S18657C8, buf);
    S18657C8 *dp, &lv = *(dp=new (buf) S18657C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,68), "sizeof(S18657C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18657C8)");
    check_base_class_offset(lv, (S7856C24*), 0, "S18657C8");
    /*is_ambiguous_... S18657C8::S18657C4 */ AMB_check_base_class_offset(lv, (S18657C4*), ABISELECT(8,4), "S18657C8");
    check_base_class_offset(lv, (S18657C6*), 0, "S18657C8");
    check_base_class_offset(lv, (S18657C4*)(S18657C3*), ABISELECT(16,8), "S18657C8");
    check_base_class_offset(lv, (S18657C3*), ABISELECT(16,8), "S18657C8");
    test_class_info(&lv, &cd_S18657C8);
    dp->~S18657C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18657C8(Test_S18657C8, "S18657C8", ABISELECT(88,68));

#else // __cplusplus

extern void _ZN8S18657C8C1Ev();
extern void _ZN8S18657C8D1Ev();
Name_Map name_map_S18657C8[] = {
  NSPAIR(_ZN8S18657C8C1Ev),
  NSPAIR(_ZN8S18657C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S18657C4;
extern VTBL_ENTRY _ZTI8S18657C4[];
extern  VTBL_ENTRY _ZTV8S18657C4[];
extern Class_Descriptor cd_S18657C6;
extern VTBL_ENTRY _ZTI8S18657C6[];
extern  VTBL_ENTRY _ZTV8S18657C6[];
extern Class_Descriptor cd_S18657C4;
extern VTBL_ENTRY _ZTI8S18657C4[];
extern  VTBL_ENTRY _ZTV8S18657C4[];
extern Class_Descriptor cd_S18657C3;
extern VTBL_ENTRY _ZTI8S18657C3[];
extern  VTBL_ENTRY _ZTV8S18657C3[];
static Base_Class bases_S18657C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S18657C4,    ABISELECT(8,4), //bcp->offset
    8, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S18657C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S18657C4,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S18657C3,    ABISELECT(16,8), //bcp->offset
    14, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S18657C8[];
extern void _ZN8S18657C63v16Ev();
extern void _ZN8S18657C63v17Ev();
extern void _ZN8S18657C83v18Ev();
extern void _ZN8S18657C43v10Ev();
extern void _ZN8S18657C43v11Ev();
extern void _ZN8S18657C43v10Ev();
extern void _ZN8S18657C43v11Ev();
extern void _ZN8S18657C33v12Ev();
extern void _ZN8S18657C33v13Ev();
extern void _ZN8S18657C33v14Ev();
extern void _ZN8S18657C33v15Ev();
static  VTBL_ENTRY vtc_S18657C8[] = {
  ABISELECT(16,8),
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S18657C8[0]),
  (VTBL_ENTRY)&_ZN8S18657C63v16Ev,
  (VTBL_ENTRY)&_ZN8S18657C63v17Ev,
  (VTBL_ENTRY)&_ZN8S18657C83v18Ev,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S18657C8[0]),
  (VTBL_ENTRY)&_ZN8S18657C43v10Ev,
  (VTBL_ENTRY)&_ZN8S18657C43v11Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S18657C8[0]),
  (VTBL_ENTRY)&_ZN8S18657C43v10Ev,
  (VTBL_ENTRY)&_ZN8S18657C43v11Ev,
  (VTBL_ENTRY)&_ZN8S18657C33v12Ev,
  (VTBL_ENTRY)&_ZN8S18657C33v13Ev,
  (VTBL_ENTRY)&_ZN8S18657C33v14Ev,
  (VTBL_ENTRY)&_ZN8S18657C33v15Ev,
};
extern VTBL_ENTRY _ZTV8S18657C8[];
static  VTT_ENTRY vtt_S18657C8[] = {
  {&(_ZTV8S18657C8[5]),  5,28},
  {&(_ZTV8S18657C8[12]),  12,28},
  {&(_ZTV8S18657C8[22]),  22,28},
};
extern VTBL_ENTRY _ZTI8S18657C8[];
extern  VTBL_ENTRY _ZTV8S18657C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18657C8[];
Class_Descriptor cd_S18657C8 = {  "S18657C8", // class name
  bases_S18657C8, 5,
  &(vtc_S18657C8[0]), // expected_vtbl_contents
  &(vtt_S18657C8[0]), // expected_vtt_contents
  ABISELECT(88,68), // object size
  NSPAIRA(_ZTI8S18657C8),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S18657C8),28, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S18657C8),3, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18657C9  {
  void *s18657c9f0;
  long double s18657c9f1[7];
  virtual void  v19(); // _ZN8S18657C93v19Ev
  ~S18657C9(); // tgen
  S18657C9(); // tgen
};
//SIG(-1 S18657C9) C1{ v1 Fp FD[7]}


void  S18657C9 ::v19(){vfunc_called(this, "_ZN8S18657C93v19Ev");}
S18657C9 ::~S18657C9(){ note_dtor("S18657C9", this);} // tgen
S18657C9 ::S18657C9(){ note_ctor("S18657C9", this);} // tgen

static void Test_S18657C9()
{
  extern Class_Descriptor cd_S18657C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(9,24)];
    init_test(&cd_S18657C9, buf);
    S18657C9 *dp, &lv = *(dp=new (buf) S18657C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,92), "sizeof(S18657C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S18657C9)");
    check_field_offset(lv, s18657c9f0, ABISELECT(8,4), "S18657C9.s18657c9f0");
    check_field_offset(lv, s18657c9f1, ABISELECT(16,8), "S18657C9.s18657c9f1");
    test_class_info(&lv, &cd_S18657C9);
    dp->~S18657C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18657C9(Test_S18657C9, "S18657C9", ABISELECT(128,92));

#else // __cplusplus

extern void _ZN8S18657C9C1Ev();
extern void _ZN8S18657C9D1Ev();
Name_Map name_map_S18657C9[] = {
  NSPAIR(_ZN8S18657C9C1Ev),
  NSPAIR(_ZN8S18657C9D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18657C9[];
extern void _ZN8S18657C93v19Ev();
static  VTBL_ENTRY vtc_S18657C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18657C9[0]),
  (VTBL_ENTRY)&_ZN8S18657C93v19Ev,
};
extern VTBL_ENTRY _ZTI8S18657C9[];
extern  VTBL_ENTRY _ZTV8S18657C9[];
Class_Descriptor cd_S18657C9 = {  "S18657C9", // class name
  0,0,//no base classes
  &(vtc_S18657C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(128,92), // object size
  NSPAIRA(_ZTI8S18657C9),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18657C9),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18657C7  : S18657C8 , virtual S18657C9 {
  void *s18657c7f0;
  virtual  ~S18657C7(); // _ZN8S18657C7D2Ev
  virtual void  v20(); // _ZN8S18657C73v20Ev
  S18657C7(); // tgen
};
//SIG(-1 S18657C7) C1{ BC2{ VBC3{ m} VBC4{ v2 v3} BC5{ v4 v5} VBC6{ BC4 v6 v7 v8 v9 Fi[5] Fp FL[4]} v10} VBC7{ v11 Fp FD[7]} vd v1 Fp}


 S18657C7 ::~S18657C7(){ note_dtor("S18657C7", this);}
void  S18657C7 ::v20(){vfunc_called(this, "_ZN8S18657C73v20Ev");}
S18657C7 ::S18657C7(){ note_ctor("S18657C7", this);} // tgen

static void Test_S18657C7()
{
  extern Class_Descriptor cd_S18657C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(15,42)];
    init_test(&cd_S18657C7, buf);
    S18657C7 *dp, &lv = *(dp=new (buf) S18657C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(224,164), "sizeof(S18657C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S18657C7)");
    check_base_class_offset(lv, (S7856C24*)(S18657C8*), 0, "S18657C7");
    /*is_ambiguous_... S18657C8::S18657C4 */ AMB_check_base_class_offset(lv, (S18657C4*)(S18657C8*), ABISELECT(16,8), "S18657C7");
    check_base_class_offset(lv, (S18657C6*)(S18657C8*), 0, "S18657C7");
    check_base_class_offset(lv, (S18657C4*)(S18657C3*), ABISELECT(24,12), "S18657C7");
    check_base_class_offset(lv, (S18657C3*)(S18657C8*), ABISELECT(24,12), "S18657C7");
    check_base_class_offset(lv, (S18657C8*), 0, "S18657C7");
    check_base_class_offset(lv, (S18657C9*), ABISELECT(96,72), "S18657C7");
    check_field_offset(lv, s18657c7f0, ABISELECT(8,4), "S18657C7.s18657c7f0");
    test_class_info(&lv, &cd_S18657C7);
    dp->~S18657C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18657C7(Test_S18657C7, "S18657C7", ABISELECT(224,164));

#else // __cplusplus

extern void _ZN8S18657C7C1Ev();
extern void _ZN8S18657C7D2Ev();
Name_Map name_map_S18657C7[] = {
  NSPAIR(_ZN8S18657C7C1Ev),
  NSPAIR(_ZN8S18657C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S18657C4;
extern VTBL_ENTRY _ZTI8S18657C4[];
extern  VTBL_ENTRY _ZTV8S18657C4[];
extern Class_Descriptor cd_S18657C6;
extern VTBL_ENTRY _ZTI8S18657C6[];
extern  VTBL_ENTRY _ZTV8S18657C6[];
extern Class_Descriptor cd_S18657C4;
extern VTBL_ENTRY _ZTI8S18657C4[];
extern  VTBL_ENTRY _ZTV8S18657C4[];
extern Class_Descriptor cd_S18657C3;
extern VTBL_ENTRY _ZTI8S18657C3[];
extern  VTBL_ENTRY _ZTV8S18657C3[];
extern Class_Descriptor cd_S18657C8;
extern VTBL_ENTRY _ZTI8S18657C8[];
extern  VTBL_ENTRY _ZTV8S18657C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18657C8[];
extern Class_Descriptor cd_S18657C9;
extern VTBL_ENTRY _ZTI8S18657C9[];
extern  VTBL_ENTRY _ZTV8S18657C9[];
static Base_Class bases_S18657C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S18657C4,    ABISELECT(16,8), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S18657C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S18657C4,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S18657C3,    ABISELECT(24,12), //bcp->offset
    18, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S18657C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S18657C9,    ABISELECT(96,72), //bcp->offset
    32, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S18657C7[];
extern void _ZN8S18657C63v16Ev();
extern void _ZN8S18657C63v17Ev();
extern void _ZN8S18657C83v18Ev();
extern void _ZN8S18657C7D1Ev();
extern void _ZN8S18657C7D0Ev();
extern void _ZN8S18657C73v20Ev();
extern void _ZN8S18657C43v10Ev();
extern void _ZN8S18657C43v11Ev();
extern void _ZN8S18657C43v10Ev();
extern void _ZN8S18657C43v11Ev();
extern void _ZN8S18657C33v12Ev();
extern void _ZN8S18657C33v13Ev();
extern void _ZN8S18657C33v14Ev();
extern void _ZN8S18657C33v15Ev();
extern void _ZN8S18657C93v19Ev();
static  VTBL_ENTRY vtc_S18657C7[] = {
  ABISELECT(96,72),
  ABISELECT(24,12),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S18657C7[0]),
  (VTBL_ENTRY)&_ZN8S18657C63v16Ev,
  (VTBL_ENTRY)&_ZN8S18657C63v17Ev,
  (VTBL_ENTRY)&_ZN8S18657C83v18Ev,
  (VTBL_ENTRY)&_ZN8S18657C7D1Ev,
  (VTBL_ENTRY)&_ZN8S18657C7D0Ev,
  (VTBL_ENTRY)&_ZN8S18657C73v20Ev,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S18657C7[0]),
  (VTBL_ENTRY)&_ZN8S18657C43v10Ev,
  (VTBL_ENTRY)&_ZN8S18657C43v11Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S18657C7[0]),
  (VTBL_ENTRY)&_ZN8S18657C43v10Ev,
  (VTBL_ENTRY)&_ZN8S18657C43v11Ev,
  (VTBL_ENTRY)&_ZN8S18657C33v12Ev,
  (VTBL_ENTRY)&_ZN8S18657C33v13Ev,
  (VTBL_ENTRY)&_ZN8S18657C33v14Ev,
  (VTBL_ENTRY)&_ZN8S18657C33v15Ev,
  0,
  ABISELECT(-96,-72),
  (VTBL_ENTRY)&(_ZTI8S18657C7[0]),
  (VTBL_ENTRY)&_ZN8S18657C93v19Ev,
};
extern VTBL_ENTRY _ZTV8S18657C7[];
extern void _ZN8S18657C63v16Ev();
extern void _ZN8S18657C63v17Ev();
extern void _ZN8S18657C83v18Ev();
static  VTBL_ENTRY _tg__ZTV8S18657C8__8S18657C7[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S18657C8[0]),
  (VTBL_ENTRY)&_ZN8S18657C63v16Ev,
  (VTBL_ENTRY)&_ZN8S18657C63v17Ev,
  (VTBL_ENTRY)&_ZN8S18657C83v18Ev,
};
extern void _ZN8S18657C43v10Ev();
extern void _ZN8S18657C43v11Ev();
static  VTBL_ENTRY _tg__ZTV8S18657C4__8S18657C8__8S18657C7[] = {
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S18657C8[0]),
  (VTBL_ENTRY)&_ZN8S18657C43v10Ev,
  (VTBL_ENTRY)&_ZN8S18657C43v11Ev,
};
extern void _ZN8S18657C43v10Ev();
extern void _ZN8S18657C43v11Ev();
extern void _ZN8S18657C33v12Ev();
extern void _ZN8S18657C33v13Ev();
extern void _ZN8S18657C33v14Ev();
extern void _ZN8S18657C33v15Ev();
static  VTBL_ENTRY _tg__ZTV8S18657C3__8S18657C8__8S18657C7[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S18657C8[0]),
  (VTBL_ENTRY)&_ZN8S18657C43v10Ev,
  (VTBL_ENTRY)&_ZN8S18657C43v11Ev,
  (VTBL_ENTRY)&_ZN8S18657C33v12Ev,
  (VTBL_ENTRY)&_ZN8S18657C33v13Ev,
  (VTBL_ENTRY)&_ZN8S18657C33v14Ev,
  (VTBL_ENTRY)&_ZN8S18657C33v15Ev,
};
static  VTT_ENTRY vtt_S18657C7[] = {
  {&(_ZTV8S18657C7[6]),  6,36},
  {&(_tg__ZTV8S18657C8__8S18657C7[5]),  5,8},
  {&(_tg__ZTV8S18657C4__8S18657C8__8S18657C7[4]),  4,6},
  {&(_tg__ZTV8S18657C3__8S18657C8__8S18657C7[8]),  8,14},
  {&(_ZTV8S18657C7[16]),  16,36},
  {&(_ZTV8S18657C7[26]),  26,36},
  {&(_ZTV8S18657C7[35]),  35,36},
};
extern VTBL_ENTRY _ZTI8S18657C7[];
extern  VTBL_ENTRY _ZTV8S18657C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18657C7[];
Class_Descriptor cd_S18657C7 = {  "S18657C7", // class name
  bases_S18657C7, 7,
  &(vtc_S18657C7[0]), // expected_vtbl_contents
  &(vtt_S18657C7[0]), // expected_vtt_contents
  ABISELECT(224,164), // object size
  NSPAIRA(_ZTI8S18657C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S18657C7),36, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S18657C7),7, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18657C2  : S18657C3 , virtual S7856C24 , S18657C6 , virtual S18657C7 {
  virtual void  v5(); // _ZN8S18657C22v5Ev
  virtual void  v6(); // _ZN8S18657C22v6Ev
  virtual void  v7(); // _ZN8S18657C22v7Ev
  virtual void  v8(); // _ZN8S18657C22v8Ev
  virtual void  v9(); // _ZN8S18657C22v9Ev
  ~S18657C2(); // tgen
  S18657C2(); // tgen
};
//SIG(1 S18657C2) C1{ BC2{ BC3{ v6 v7} v8 v9 v10 v11 Fi[5] Fp FL[4]} VBC4{ m} BC5{ v12 v13} VBC6{ BC7{ VBC4 VBC3 BC5 VBC2 v14} VBC8{ v15 Fp FD[7]} vd v16 Fp} v1 v2 v3 v4 v5}


void  S18657C2 ::v5(){vfunc_called(this, "_ZN8S18657C22v5Ev");}
void  S18657C2 ::v6(){vfunc_called(this, "_ZN8S18657C22v6Ev");}
void  S18657C2 ::v7(){vfunc_called(this, "_ZN8S18657C22v7Ev");}
void  S18657C2 ::v8(){vfunc_called(this, "_ZN8S18657C22v8Ev");}
void  S18657C2 ::v9(){vfunc_called(this, "_ZN8S18657C22v9Ev");}
S18657C2 ::~S18657C2(){ note_dtor("S18657C2", this);} // tgen
S18657C2 ::S18657C2(){ note_ctor("S18657C2", this);} // tgen

static void Test_S18657C2()
{
  extern Class_Descriptor cd_S18657C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(20,58)];
    init_test(&cd_S18657C2, buf);
    S18657C2 *dp, &lv = *(dp=new (buf) S18657C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(304,228), "sizeof(S18657C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S18657C2)");
    /*is_ambiguous_... S18657C2::S18657C3 */ AMB_check_base_class_offset(lv, (S18657C4*)(S18657C3*), 0, "S18657C2");
    /*is_ambiguous_... S18657C2::S18657C3 */ AMB_check_base_class_offset(lv, (S18657C3*), 0, "S18657C2");
    check_base_class_offset(lv, (S7856C24*), 0, "S18657C2");
    check_base_class_offset(lv, (S7856C24*)(S18657C8*)(S18657C7*), 0, "S18657C2");
    /*is_ambiguous_... S18657C2::S18657C6 */ AMB_check_base_class_offset(lv, (S18657C6*), ABISELECT(72,60), "S18657C2");
    /*is_ambiguous_... S18657C8::S18657C4 */ AMB_check_base_class_offset(lv, (S18657C4*)(S18657C8*)(S18657C7*), ABISELECT(96,72), "S18657C2");
    check_base_class_offset(lv, (S18657C6*)(S18657C8*)(S18657C7*), ABISELECT(80,64), "S18657C2");
    /*is_ambiguous_... S18657C2::S18657C3 */ AMB_check_base_class_offset(lv, (S18657C4*)(S18657C3*), ABISELECT(104,76), "S18657C2");
    check_base_class_offset(lv, (S18657C3*)(S18657C8*)(S18657C7*), ABISELECT(104,76), "S18657C2");
    check_base_class_offset(lv, (S18657C8*)(S18657C7*), ABISELECT(80,64), "S18657C2");
    check_base_class_offset(lv, (S18657C9*)(S18657C7*), ABISELECT(176,136), "S18657C2");
    check_base_class_offset(lv, (S18657C7*), ABISELECT(80,64), "S18657C2");
    test_class_info(&lv, &cd_S18657C2);
    dp->~S18657C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18657C2(Test_S18657C2, "S18657C2", ABISELECT(304,228));

#else // __cplusplus

extern void _ZN8S18657C2C1Ev();
extern void _ZN8S18657C2D1Ev();
Name_Map name_map_S18657C2[] = {
  NSPAIR(_ZN8S18657C2C1Ev),
  NSPAIR(_ZN8S18657C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S18657C4;
extern VTBL_ENTRY _ZTI8S18657C4[];
extern  VTBL_ENTRY _ZTV8S18657C4[];
extern Class_Descriptor cd_S18657C3;
extern VTBL_ENTRY _ZTI8S18657C3[];
extern  VTBL_ENTRY _ZTV8S18657C3[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S18657C6;
extern VTBL_ENTRY _ZTI8S18657C6[];
extern  VTBL_ENTRY _ZTV8S18657C6[];
extern Class_Descriptor cd_S18657C4;
extern VTBL_ENTRY _ZTI8S18657C4[];
extern  VTBL_ENTRY _ZTV8S18657C4[];
extern Class_Descriptor cd_S18657C6;
extern VTBL_ENTRY _ZTI8S18657C6[];
extern  VTBL_ENTRY _ZTV8S18657C6[];
extern Class_Descriptor cd_S18657C4;
extern VTBL_ENTRY _ZTI8S18657C4[];
extern  VTBL_ENTRY _ZTV8S18657C4[];
extern Class_Descriptor cd_S18657C3;
extern VTBL_ENTRY _ZTI8S18657C3[];
extern  VTBL_ENTRY _ZTV8S18657C3[];
extern Class_Descriptor cd_S18657C8;
extern VTBL_ENTRY _ZTI8S18657C8[];
extern  VTBL_ENTRY _ZTV8S18657C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18657C8[];
extern Class_Descriptor cd_S18657C9;
extern VTBL_ENTRY _ZTI8S18657C9[];
extern  VTBL_ENTRY _ZTV8S18657C9[];
extern Class_Descriptor cd_S18657C7;
extern VTBL_ENTRY _ZTI8S18657C7[];
extern  VTBL_ENTRY _ZTV8S18657C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18657C7[];
static Base_Class bases_S18657C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S18657C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S18657C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S18657C6,    ABISELECT(72,60), //bcp->offset
    20, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S18657C4,    ABISELECT(96,72), //bcp->offset
    41, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S18657C6,    ABISELECT(80,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S18657C4,    ABISELECT(104,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S18657C3,    ABISELECT(104,76), //bcp->offset
    47, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S18657C8,    ABISELECT(80,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S18657C9,    ABISELECT(176,136), //bcp->offset
    61, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S18657C7,    ABISELECT(80,64), //bcp->offset
    24, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S18657C2[];
extern void _ZN8S18657C43v10Ev();
extern void _ZN8S18657C43v11Ev();
extern void _ZN8S18657C33v12Ev();
extern void _ZN8S18657C33v13Ev();
extern void _ZN8S18657C33v14Ev();
extern void _ZN8S18657C33v15Ev();
extern void _ZN8S18657C22v5Ev();
extern void _ZN8S18657C22v6Ev();
extern void _ZN8S18657C22v7Ev();
extern void _ZN8S18657C22v8Ev();
extern void _ZN8S18657C22v9Ev();
extern void _ZN8S18657C2D1Ev();
extern void _ZN8S18657C2D0Ev();
extern void _ZN8S18657C63v16Ev();
extern void _ZN8S18657C63v17Ev();
extern void _ZN8S18657C63v16Ev();
extern void _ZN8S18657C63v17Ev();
extern void _ZN8S18657C83v18Ev();
extern void ABISELECT(_ZTv0_n80_N8S18657C2D1Ev,_ZTv0_n40_N8S18657C2D1Ev)();
extern void ABISELECT(_ZThn80_N8S18657C2D1Ev,_ZThn64_N8S18657C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S18657C2D0Ev,_ZTv0_n40_N8S18657C2D0Ev)();
extern void ABISELECT(_ZThn80_N8S18657C2D0Ev,_ZThn64_N8S18657C2D0Ev)() __attribute__((weak));
extern void _ZN8S18657C73v20Ev();
extern void _ZN8S18657C43v10Ev();
extern void _ZN8S18657C43v11Ev();
extern void _ZN8S18657C43v10Ev();
extern void _ZN8S18657C43v11Ev();
extern void _ZN8S18657C33v12Ev();
extern void _ZN8S18657C33v13Ev();
extern void _ZN8S18657C33v14Ev();
extern void _ZN8S18657C33v15Ev();
extern void _ZN8S18657C93v19Ev();
static  VTBL_ENTRY vtc_S18657C2[] = {
  ABISELECT(176,136),
  ABISELECT(104,76),
  ABISELECT(96,72),
  ABISELECT(80,64),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S18657C2[0]),
  (VTBL_ENTRY)&_ZN8S18657C43v10Ev,
  (VTBL_ENTRY)&_ZN8S18657C43v11Ev,
  (VTBL_ENTRY)&_ZN8S18657C33v12Ev,
  (VTBL_ENTRY)&_ZN8S18657C33v13Ev,
  (VTBL_ENTRY)&_ZN8S18657C33v14Ev,
  (VTBL_ENTRY)&_ZN8S18657C33v15Ev,
  (VTBL_ENTRY)&_ZN8S18657C22v5Ev,
  (VTBL_ENTRY)&_ZN8S18657C22v6Ev,
  (VTBL_ENTRY)&_ZN8S18657C22v7Ev,
  (VTBL_ENTRY)&_ZN8S18657C22v8Ev,
  (VTBL_ENTRY)&_ZN8S18657C22v9Ev,
  (VTBL_ENTRY)&_ZN8S18657C2D1Ev,
  (VTBL_ENTRY)&_ZN8S18657C2D0Ev,
  ABISELECT(-72,-60),
  (VTBL_ENTRY)&(_ZTI8S18657C2[0]),
  (VTBL_ENTRY)&_ZN8S18657C63v16Ev,
  (VTBL_ENTRY)&_ZN8S18657C63v17Ev,
  0,
  ABISELECT(-80,-64),
  0,
  0,
  0,
  ABISELECT(96,72),
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(-80,-64),
  ABISELECT(-80,-64),
  (VTBL_ENTRY)&(_ZTI8S18657C2[0]),
  (VTBL_ENTRY)&_ZN8S18657C63v16Ev,
  (VTBL_ENTRY)&_ZN8S18657C63v17Ev,
  (VTBL_ENTRY)&_ZN8S18657C83v18Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S18657C2D1Ev,_ZTv0_n40_N8S18657C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S18657C2D0Ev,_ZTv0_n40_N8S18657C2D0Ev),
  (VTBL_ENTRY)&_ZN8S18657C73v20Ev,
  0,
  0,
  ABISELECT(-96,-72),
  (VTBL_ENTRY)&(_ZTI8S18657C2[0]),
  (VTBL_ENTRY)&_ZN8S18657C43v10Ev,
  (VTBL_ENTRY)&_ZN8S18657C43v11Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-104,-76),
  (VTBL_ENTRY)&(_ZTI8S18657C2[0]),
  (VTBL_ENTRY)&_ZN8S18657C43v10Ev,
  (VTBL_ENTRY)&_ZN8S18657C43v11Ev,
  (VTBL_ENTRY)&_ZN8S18657C33v12Ev,
  (VTBL_ENTRY)&_ZN8S18657C33v13Ev,
  (VTBL_ENTRY)&_ZN8S18657C33v14Ev,
  (VTBL_ENTRY)&_ZN8S18657C33v15Ev,
  0,
  ABISELECT(-176,-136),
  (VTBL_ENTRY)&(_ZTI8S18657C2[0]),
  (VTBL_ENTRY)&_ZN8S18657C93v19Ev,
};
extern VTBL_ENTRY _ZTV8S18657C2[];
extern void _ZN8S18657C63v16Ev();
extern void _ZN8S18657C63v17Ev();
extern void _ZN8S18657C83v18Ev();
extern void _ZN8S18657C7D1Ev();
extern void _ZN8S18657C7D0Ev();
extern void _ZN8S18657C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S18657C7__8S18657C2[] = {
  ABISELECT(96,72),
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(-80,-64),
  0,
  (VTBL_ENTRY)&(_ZTI8S18657C7[0]),
  (VTBL_ENTRY)&_ZN8S18657C63v16Ev,
  (VTBL_ENTRY)&_ZN8S18657C63v17Ev,
  (VTBL_ENTRY)&_ZN8S18657C83v18Ev,
  (VTBL_ENTRY)&_ZN8S18657C7D1Ev,
  (VTBL_ENTRY)&_ZN8S18657C7D0Ev,
  (VTBL_ENTRY)&_ZN8S18657C73v20Ev,
};
extern void _ZN8S18657C63v16Ev();
extern void _ZN8S18657C63v17Ev();
extern void _ZN8S18657C83v18Ev();
static  VTBL_ENTRY _tg__ZTV8S18657C88S18657C7__8S18657C2[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(-80,-64),
  0,
  (VTBL_ENTRY)&(_ZTI8S18657C8[0]),
  (VTBL_ENTRY)&_ZN8S18657C63v16Ev,
  (VTBL_ENTRY)&_ZN8S18657C63v17Ev,
  (VTBL_ENTRY)&_ZN8S18657C83v18Ev,
};
extern void _ZN8S18657C43v10Ev();
extern void _ZN8S18657C43v11Ev();
static  VTBL_ENTRY _tg__ZTV8S18657C4__8S18657C88S18657C7__8S18657C2[] = {
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S18657C8[0]),
  (VTBL_ENTRY)&_ZN8S18657C43v10Ev,
  (VTBL_ENTRY)&_ZN8S18657C43v11Ev,
};
extern void _ZN8S18657C43v10Ev();
extern void _ZN8S18657C43v11Ev();
extern void _ZN8S18657C33v12Ev();
extern void _ZN8S18657C33v13Ev();
extern void _ZN8S18657C33v14Ev();
extern void _ZN8S18657C33v15Ev();
static  VTBL_ENTRY _tg__ZTV8S18657C3__8S18657C88S18657C7__8S18657C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S18657C8[0]),
  (VTBL_ENTRY)&_ZN8S18657C43v10Ev,
  (VTBL_ENTRY)&_ZN8S18657C43v11Ev,
  (VTBL_ENTRY)&_ZN8S18657C33v12Ev,
  (VTBL_ENTRY)&_ZN8S18657C33v13Ev,
  (VTBL_ENTRY)&_ZN8S18657C33v14Ev,
  (VTBL_ENTRY)&_ZN8S18657C33v15Ev,
};
extern void _ZN8S18657C43v10Ev();
extern void _ZN8S18657C43v11Ev();
static  VTBL_ENTRY _tg__ZTV8S18657C4__8S18657C7__8S18657C2[] = {
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S18657C7[0]),
  (VTBL_ENTRY)&_ZN8S18657C43v10Ev,
  (VTBL_ENTRY)&_ZN8S18657C43v11Ev,
};
extern void _ZN8S18657C43v10Ev();
extern void _ZN8S18657C43v11Ev();
extern void _ZN8S18657C33v12Ev();
extern void _ZN8S18657C33v13Ev();
extern void _ZN8S18657C33v14Ev();
extern void _ZN8S18657C33v15Ev();
static  VTBL_ENTRY _tg__ZTV8S18657C3__8S18657C7__8S18657C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S18657C7[0]),
  (VTBL_ENTRY)&_ZN8S18657C43v10Ev,
  (VTBL_ENTRY)&_ZN8S18657C43v11Ev,
  (VTBL_ENTRY)&_ZN8S18657C33v12Ev,
  (VTBL_ENTRY)&_ZN8S18657C33v13Ev,
  (VTBL_ENTRY)&_ZN8S18657C33v14Ev,
  (VTBL_ENTRY)&_ZN8S18657C33v15Ev,
};
extern void _ZN8S18657C93v19Ev();
static  VTBL_ENTRY _tg__ZTV8S18657C9__8S18657C7__8S18657C2[] = {
  0,
  ABISELECT(-96,-72),
  (VTBL_ENTRY)&(_ZTI8S18657C7[0]),
  (VTBL_ENTRY)&_ZN8S18657C93v19Ev,
};
static  VTT_ENTRY vtt_S18657C2[] = {
  {&(_ZTV8S18657C2[7]),  7,65},
  {&(_ZTV8S18657C2[35]),  35,65},
  {&(_ZTV8S18657C2[45]),  45,65},
  {&(_ZTV8S18657C2[55]),  55,65},
  {&(_ZTV8S18657C2[64]),  64,65},
  {&(_tg__ZTV8S18657C7__8S18657C2[6]),  6,12},
  {&(_tg__ZTV8S18657C88S18657C7__8S18657C2[5]),  5,8},
  {&(_tg__ZTV8S18657C4__8S18657C88S18657C7__8S18657C2[4]),  4,6},
  {&(_tg__ZTV8S18657C3__8S18657C88S18657C7__8S18657C2[8]),  8,14},
  {&(_tg__ZTV8S18657C4__8S18657C7__8S18657C2[4]),  4,6},
  {&(_tg__ZTV8S18657C3__8S18657C7__8S18657C2[8]),  8,14},
  {&(_tg__ZTV8S18657C9__8S18657C7__8S18657C2[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S18657C2[];
extern  VTBL_ENTRY _ZTV8S18657C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18657C2[];
static VTBL_ENTRY alt_thunk_names185[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S18657C2D0Ev,_ZTv0_n40_N8S18657C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S18657C2D0Ev,_ZThn64_N8S18657C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S18657C2D1Ev,_ZTv0_n40_N8S18657C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S18657C2D1Ev,_ZThn64_N8S18657C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S18657C2 = {  "S18657C2", // class name
  bases_S18657C2, 11,
  &(vtc_S18657C2[0]), // expected_vtbl_contents
  &(vtt_S18657C2[0]), // expected_vtt_contents
  ABISELECT(304,228), // object size
  NSPAIRA(_ZTI8S18657C2),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S18657C2),65, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S18657C2),12, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names185,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18657C1  {
  ::S18657C2 s18657c1f0[6];
  virtual void  v1(); // _ZN8S18657C12v1Ev
  virtual void  v2(); // _ZN8S18657C12v2Ev
  virtual void  v3(); // _ZN8S18657C12v3Ev
  virtual void  v4(); // _ZN8S18657C12v4Ev
  ~S18657C1(); // tgen
  S18657C1(); // tgen
};
//SIG(1 S18657C1) C1{ v1 v2 v3 v4 FC2{ BC3{ BC4{ v10 v11} v12 v13 v14 v15 Fi[5] Fp FL[4]} VBC5{ m} BC6{ v16 v17} VBC7{ BC8{ VBC5 VBC4 BC6 VBC3 v18} VBC9{ v19 Fp FD[7]} vd v20 Fp} v5 v6 v7 v8 v9}[6]}


void  S18657C1 ::v1(){vfunc_called(this, "_ZN8S18657C12v1Ev");}
void  S18657C1 ::v2(){vfunc_called(this, "_ZN8S18657C12v2Ev");}
void  S18657C1 ::v3(){vfunc_called(this, "_ZN8S18657C12v3Ev");}
void  S18657C1 ::v4(){vfunc_called(this, "_ZN8S18657C12v4Ev");}
S18657C1 ::~S18657C1(){ note_dtor("S18657C1", this);} // tgen
S18657C1 ::S18657C1(){ note_ctor("S18657C1", this);} // tgen

static void Test_S18657C1()
{
  extern Class_Descriptor cd_S18657C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(116,344)];
    init_test(&cd_S18657C1, buf);
    S18657C1 *dp, &lv = *(dp=new (buf) S18657C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1840,1372), "sizeof(S18657C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S18657C1)");
    check_field_offset(lv, s18657c1f0, ABISELECT(16,4), "S18657C1.s18657c1f0");
    test_class_info(&lv, &cd_S18657C1);
    dp->~S18657C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18657C1(Test_S18657C1, "S18657C1", ABISELECT(1840,1372));

#else // __cplusplus

extern void _ZN8S18657C1C1Ev();
extern void _ZN8S18657C1D1Ev();
Name_Map name_map_S18657C1[] = {
  NSPAIR(_ZN8S18657C1C1Ev),
  NSPAIR(_ZN8S18657C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18657C1[];
extern void _ZN8S18657C12v1Ev();
extern void _ZN8S18657C12v2Ev();
extern void _ZN8S18657C12v3Ev();
extern void _ZN8S18657C12v4Ev();
static  VTBL_ENTRY vtc_S18657C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18657C1[0]),
  (VTBL_ENTRY)&_ZN8S18657C12v1Ev,
  (VTBL_ENTRY)&_ZN8S18657C12v2Ev,
  (VTBL_ENTRY)&_ZN8S18657C12v3Ev,
  (VTBL_ENTRY)&_ZN8S18657C12v4Ev,
};
extern VTBL_ENTRY _ZTI8S18657C1[];
extern  VTBL_ENTRY _ZTV8S18657C1[];
Class_Descriptor cd_S18657C1 = {  "S18657C1", // class name
  0,0,//no base classes
  &(vtc_S18657C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(1840,1372), // object size
  NSPAIRA(_ZTI8S18657C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18657C1),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2283C4  {
  virtual  ~S2283C4(); // _ZN7S2283C4D1Ev
  virtual void  v4(); // _ZN7S2283C42v4Ev
  S2283C4(); // tgen
};
//SIG(-1 S2283C4) C1{ vd v1}


 S2283C4 ::~S2283C4(){ note_dtor("S2283C4", this);}
void  S2283C4 ::v4(){vfunc_called(this, "_ZN7S2283C42v4Ev");}
S2283C4 ::S2283C4(){ note_ctor("S2283C4", this);} // tgen

static void Test_S2283C4()
{
  extern Class_Descriptor cd_S2283C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S2283C4, buf);
    S2283C4 *dp, &lv = *(dp=new (buf) S2283C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S2283C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2283C4)");
    test_class_info(&lv, &cd_S2283C4);
    dp->~S2283C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2283C4(Test_S2283C4, "S2283C4", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S2283C4C1Ev();
extern void _ZN7S2283C4D1Ev();
Name_Map name_map_S2283C4[] = {
  NSPAIR(_ZN7S2283C4C1Ev),
  NSPAIR(_ZN7S2283C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S2283C4[];
extern void _ZN7S2283C4D1Ev();
extern void _ZN7S2283C4D0Ev();
extern void _ZN7S2283C42v4Ev();
static  VTBL_ENTRY vtc_S2283C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2283C4[0]),
  (VTBL_ENTRY)&_ZN7S2283C4D1Ev,
  (VTBL_ENTRY)&_ZN7S2283C4D0Ev,
  (VTBL_ENTRY)&_ZN7S2283C42v4Ev,
};
extern VTBL_ENTRY _ZTI7S2283C4[];
extern  VTBL_ENTRY _ZTV7S2283C4[];
Class_Descriptor cd_S2283C4 = {  "S2283C4", // class name
  0,0,//no base classes
  &(vtc_S2283C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S2283C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S2283C4),5, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2283C3  : S2283C4 {
  char s2283c3f0;
  ::S18423C15_nt s2283c3f1;
  ::S18423C15_nt s2283c3f2;
  ::S18423C15_nt s2283c3f3;
  void *s2283c3f4;
  ::S18423C15_nt s2283c3f5;
  ::S18423C15_nt s2283c3f6;
  int s2283c3f7;
  void *s2283c3f8[3];
  virtual  ~S2283C3(); // _ZN7S2283C3D1Ev
  virtual void  v5(); // _ZN7S2283C32v5Ev
  virtual void  v6(); // _ZN7S2283C32v6Ev
  S2283C3(); // tgen
};
//SIG(-1 S2283C3) C1{ BC2{ vd v3} vd v1 v2 Fc FC3{ m Fp Fi FC4{ m}} FC3 FC3 Fp FC3 FC3 Fi Fp[3]}


 S2283C3 ::~S2283C3(){ note_dtor("S2283C3", this);}
void  S2283C3 ::v5(){vfunc_called(this, "_ZN7S2283C32v5Ev");}
void  S2283C3 ::v6(){vfunc_called(this, "_ZN7S2283C32v6Ev");}
S2283C3 ::S2283C3(){ note_ctor("S2283C3", this);} // tgen

static void Test_S2283C3()
{
  extern Class_Descriptor cd_S2283C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,23)];
    init_test(&cd_S2283C3, buf);
    S2283C3 *dp, &lv = *(dp=new (buf) S2283C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,88), "sizeof(S2283C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2283C3)");
    check_base_class_offset(lv, (S2283C4*), 0, "S2283C3");
    check_field_offset(lv, s2283c3f0, ABISELECT(8,4), "S2283C3.s2283c3f0");
    check_field_offset(lv, s2283c3f1, ABISELECT(16,8), "S2283C3.s2283c3f1");
    check_field_offset(lv, s2283c3f2, ABISELECT(32,20), "S2283C3.s2283c3f2");
    check_field_offset(lv, s2283c3f3, ABISELECT(48,32), "S2283C3.s2283c3f3");
    check_field_offset(lv, s2283c3f4, ABISELECT(64,44), "S2283C3.s2283c3f4");
    check_field_offset(lv, s2283c3f5, ABISELECT(72,48), "S2283C3.s2283c3f5");
    check_field_offset(lv, s2283c3f6, ABISELECT(88,60), "S2283C3.s2283c3f6");
    check_field_offset(lv, s2283c3f7, ABISELECT(104,72), "S2283C3.s2283c3f7");
    check_field_offset(lv, s2283c3f8, ABISELECT(112,76), "S2283C3.s2283c3f8");
    test_class_info(&lv, &cd_S2283C3);
    dp->~S2283C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2283C3(Test_S2283C3, "S2283C3", ABISELECT(136,88));

#else // __cplusplus

extern void _ZN7S2283C3C1Ev();
extern void _ZN7S2283C3D1Ev();
Name_Map name_map_S2283C3[] = {
  NSPAIR(_ZN7S2283C3C1Ev),
  NSPAIR(_ZN7S2283C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2283C4;
extern VTBL_ENTRY _ZTI7S2283C4[];
extern  VTBL_ENTRY _ZTV7S2283C4[];
static Base_Class bases_S2283C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2283C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2283C3[];
extern void _ZN7S2283C3D1Ev();
extern void _ZN7S2283C3D0Ev();
extern void _ZN7S2283C42v4Ev();
extern void _ZN7S2283C32v5Ev();
extern void _ZN7S2283C32v6Ev();
static  VTBL_ENTRY vtc_S2283C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2283C3[0]),
  (VTBL_ENTRY)&_ZN7S2283C3D1Ev,
  (VTBL_ENTRY)&_ZN7S2283C3D0Ev,
  (VTBL_ENTRY)&_ZN7S2283C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2283C32v5Ev,
  (VTBL_ENTRY)&_ZN7S2283C32v6Ev,
};
extern VTBL_ENTRY _ZTI7S2283C3[];
extern  VTBL_ENTRY _ZTV7S2283C3[];
Class_Descriptor cd_S2283C3 = {  "S2283C3", // class name
  bases_S2283C3, 1,
  &(vtc_S2283C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(136,88), // object size
  NSPAIRA(_ZTI7S2283C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2283C3),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2283C2  : S2283C3 {
  ::S18423C15_nt s2283c2f0;
  ::S18423C15_nt s2283c2f1;
  ::S18423C15_nt s2283c2f2;
  ::S18423C15_nt s2283c2f3;
  ::S18423C15_nt s2283c2f4;
  int s2283c2f5;
  ::S17556C28_nt s2283c2f6;
  virtual  ~S2283C2(); // _ZN7S2283C2D1Ev
  virtual void  v7(); // _ZN7S2283C22v7Ev
  virtual void  v8(); // _ZN7S2283C22v8Ev
  virtual void  v9(); // _ZN7S2283C22v9Ev
  virtual void  v10(); // _ZN7S2283C23v10Ev
  virtual void  v11(); // _ZN7S2283C23v11Ev
  S2283C2(); // tgen
};
//SIG(-1 S2283C2) C1{ BC2{ BC3{ vd v6} vd v7 v8 Fc FC4{ m Fp Fi FC5{ m}} FC4 FC4 Fp FC4 FC4 Fi Fp[3]} vd v1 v2 v3 v4 v5 FC4 FC4 FC4 FC4 FC4 Fi FC6{ m Fp[2]}}


 S2283C2 ::~S2283C2(){ note_dtor("S2283C2", this);}
void  S2283C2 ::v7(){vfunc_called(this, "_ZN7S2283C22v7Ev");}
void  S2283C2 ::v8(){vfunc_called(this, "_ZN7S2283C22v8Ev");}
void  S2283C2 ::v9(){vfunc_called(this, "_ZN7S2283C22v9Ev");}
void  S2283C2 ::v10(){vfunc_called(this, "_ZN7S2283C23v10Ev");}
void  S2283C2 ::v11(){vfunc_called(this, "_ZN7S2283C23v11Ev");}
S2283C2 ::S2283C2(){ note_ctor("S2283C2", this);} // tgen

static void Test_S2283C2()
{
  extern Class_Descriptor cd_S2283C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(31,41)];
    init_test(&cd_S2283C2, buf);
    S2283C2 *dp, &lv = *(dp=new (buf) S2283C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,160), "sizeof(S2283C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2283C2)");
    check_base_class_offset(lv, (S2283C4*)(S2283C3*), 0, "S2283C2");
    check_base_class_offset(lv, (S2283C3*), 0, "S2283C2");
    check_field_offset(lv, s2283c2f0, ABISELECT(136,88), "S2283C2.s2283c2f0");
    check_field_offset(lv, s2283c2f1, ABISELECT(152,100), "S2283C2.s2283c2f1");
    check_field_offset(lv, s2283c2f2, ABISELECT(168,112), "S2283C2.s2283c2f2");
    check_field_offset(lv, s2283c2f3, ABISELECT(184,124), "S2283C2.s2283c2f3");
    check_field_offset(lv, s2283c2f4, ABISELECT(200,136), "S2283C2.s2283c2f4");
    check_field_offset(lv, s2283c2f5, ABISELECT(216,148), "S2283C2.s2283c2f5");
    check_field_offset(lv, s2283c2f6, ABISELECT(224,152), "S2283C2.s2283c2f6");
    test_class_info(&lv, &cd_S2283C2);
    dp->~S2283C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2283C2(Test_S2283C2, "S2283C2", ABISELECT(240,160));

#else // __cplusplus

extern void _ZN7S2283C2C1Ev();
extern void _ZN7S2283C2D1Ev();
Name_Map name_map_S2283C2[] = {
  NSPAIR(_ZN7S2283C2C1Ev),
  NSPAIR(_ZN7S2283C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2283C4;
extern VTBL_ENTRY _ZTI7S2283C4[];
extern  VTBL_ENTRY _ZTV7S2283C4[];
extern Class_Descriptor cd_S2283C3;
extern VTBL_ENTRY _ZTI7S2283C3[];
extern  VTBL_ENTRY _ZTV7S2283C3[];
static Base_Class bases_S2283C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2283C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2283C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2283C2[];
extern void _ZN7S2283C2D1Ev();
extern void _ZN7S2283C2D0Ev();
extern void _ZN7S2283C42v4Ev();
extern void _ZN7S2283C32v5Ev();
extern void _ZN7S2283C32v6Ev();
extern void _ZN7S2283C22v7Ev();
extern void _ZN7S2283C22v8Ev();
extern void _ZN7S2283C22v9Ev();
extern void _ZN7S2283C23v10Ev();
extern void _ZN7S2283C23v11Ev();
static  VTBL_ENTRY vtc_S2283C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2283C2[0]),
  (VTBL_ENTRY)&_ZN7S2283C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2283C2D0Ev,
  (VTBL_ENTRY)&_ZN7S2283C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2283C32v5Ev,
  (VTBL_ENTRY)&_ZN7S2283C32v6Ev,
  (VTBL_ENTRY)&_ZN7S2283C22v7Ev,
  (VTBL_ENTRY)&_ZN7S2283C22v8Ev,
  (VTBL_ENTRY)&_ZN7S2283C22v9Ev,
  (VTBL_ENTRY)&_ZN7S2283C23v10Ev,
  (VTBL_ENTRY)&_ZN7S2283C23v11Ev,
};
extern VTBL_ENTRY _ZTI7S2283C2[];
extern  VTBL_ENTRY _ZTV7S2283C2[];
Class_Descriptor cd_S2283C2 = {  "S2283C2", // class name
  bases_S2283C2, 2,
  &(vtc_S2283C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(240,160), // object size
  NSPAIRA(_ZTI7S2283C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2283C2),12, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2283C1  : S2283C2 {
  char s2283c1f0[2];
  ::S18423C15_nt s2283c1f1;
  virtual  ~S2283C1(); // _ZN7S2283C1D1Ev
  virtual void  v1(); // _ZN7S2283C12v1Ev
  virtual void  v2(); // _ZN7S2283C12v2Ev
  virtual void  v3(); // _ZN7S2283C12v3Ev
  S2283C1(); // tgen
};
//SIG(1 S2283C1) C1{ BC2{ BC3{ BC4{ vd v4} vd v5 v6 Fc FC5{ m Fp Fi FC6{ m}} FC5 FC5 Fp FC5 FC5 Fi Fp[3]} vd v7 v8 v9 v10 v11 FC5 FC5 FC5 FC5 FC5 Fi FC7{ m Fp[2]}} vd v1 v2 v3 Fc[2] FC5}


 S2283C1 ::~S2283C1(){ note_dtor("S2283C1", this);}
void  S2283C1 ::v1(){vfunc_called(this, "_ZN7S2283C12v1Ev");}
void  S2283C1 ::v2(){vfunc_called(this, "_ZN7S2283C12v2Ev");}
void  S2283C1 ::v3(){vfunc_called(this, "_ZN7S2283C12v3Ev");}
S2283C1 ::S2283C1(){ note_ctor("S2283C1", this);} // tgen

static void Test_S2283C1()
{
  extern Class_Descriptor cd_S2283C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(34,45)];
    init_test(&cd_S2283C1, buf);
    S2283C1 *dp, &lv = *(dp=new (buf) S2283C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(264,176), "sizeof(S2283C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2283C1)");
    check_base_class_offset(lv, (S2283C4*)(S2283C3*)(S2283C2*), 0, "S2283C1");
    check_base_class_offset(lv, (S2283C3*)(S2283C2*), 0, "S2283C1");
    check_base_class_offset(lv, (S2283C2*), 0, "S2283C1");
    check_field_offset(lv, s2283c1f0, ABISELECT(240,160), "S2283C1.s2283c1f0");
    check_field_offset(lv, s2283c1f1, ABISELECT(248,164), "S2283C1.s2283c1f1");
    test_class_info(&lv, &cd_S2283C1);
    dp->~S2283C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2283C1(Test_S2283C1, "S2283C1", ABISELECT(264,176));

#else // __cplusplus

extern void _ZN7S2283C1C1Ev();
extern void _ZN7S2283C1D1Ev();
Name_Map name_map_S2283C1[] = {
  NSPAIR(_ZN7S2283C1C1Ev),
  NSPAIR(_ZN7S2283C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2283C4;
extern VTBL_ENTRY _ZTI7S2283C4[];
extern  VTBL_ENTRY _ZTV7S2283C4[];
extern Class_Descriptor cd_S2283C3;
extern VTBL_ENTRY _ZTI7S2283C3[];
extern  VTBL_ENTRY _ZTV7S2283C3[];
extern Class_Descriptor cd_S2283C2;
extern VTBL_ENTRY _ZTI7S2283C2[];
extern  VTBL_ENTRY _ZTV7S2283C2[];
static Base_Class bases_S2283C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2283C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2283C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S2283C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2283C1[];
extern void _ZN7S2283C1D1Ev();
extern void _ZN7S2283C1D0Ev();
extern void _ZN7S2283C42v4Ev();
extern void _ZN7S2283C32v5Ev();
extern void _ZN7S2283C32v6Ev();
extern void _ZN7S2283C22v7Ev();
extern void _ZN7S2283C22v8Ev();
extern void _ZN7S2283C22v9Ev();
extern void _ZN7S2283C23v10Ev();
extern void _ZN7S2283C23v11Ev();
extern void _ZN7S2283C12v1Ev();
extern void _ZN7S2283C12v2Ev();
extern void _ZN7S2283C12v3Ev();
static  VTBL_ENTRY vtc_S2283C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2283C1[0]),
  (VTBL_ENTRY)&_ZN7S2283C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2283C1D0Ev,
  (VTBL_ENTRY)&_ZN7S2283C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2283C32v5Ev,
  (VTBL_ENTRY)&_ZN7S2283C32v6Ev,
  (VTBL_ENTRY)&_ZN7S2283C22v7Ev,
  (VTBL_ENTRY)&_ZN7S2283C22v8Ev,
  (VTBL_ENTRY)&_ZN7S2283C22v9Ev,
  (VTBL_ENTRY)&_ZN7S2283C23v10Ev,
  (VTBL_ENTRY)&_ZN7S2283C23v11Ev,
  (VTBL_ENTRY)&_ZN7S2283C12v1Ev,
  (VTBL_ENTRY)&_ZN7S2283C12v2Ev,
  (VTBL_ENTRY)&_ZN7S2283C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S2283C1[];
extern  VTBL_ENTRY _ZTV7S2283C1[];
Class_Descriptor cd_S2283C1 = {  "S2283C1", // class name
  bases_S2283C1, 3,
  &(vtc_S2283C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(264,176), // object size
  NSPAIRA(_ZTI7S2283C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2283C1),15, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6328C3_nt  {
  int s6328c3f0;
  char s6328c3f1;
};
//SIG(-1 S6328C3_nt) C1{ Fi Fc}



//skip512 S6328C3_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6328C5  : S7856C24 {
  virtual  ~S6328C5(); // _ZN7S6328C5D1Ev
  virtual void  v2(); // _ZN7S6328C52v2Ev
  S6328C5(); // tgen
};
//SIG(-1 S6328C5) C1{ BC2{ m} vd v1}


 S6328C5 ::~S6328C5(){ note_dtor("S6328C5", this);}
void  S6328C5 ::v2(){vfunc_called(this, "_ZN7S6328C52v2Ev");}
S6328C5 ::S6328C5(){ note_ctor("S6328C5", this);} // tgen

static void Test_S6328C5()
{
  extern Class_Descriptor cd_S6328C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S6328C5, buf);
    S6328C5 *dp, &lv = *(dp=new (buf) S6328C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S6328C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6328C5)");
    check_base_class_offset(lv, (S7856C24*), 0, "S6328C5");
    test_class_info(&lv, &cd_S6328C5);
    dp->~S6328C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6328C5(Test_S6328C5, "S6328C5", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S6328C5C1Ev();
extern void _ZN7S6328C5D1Ev();
Name_Map name_map_S6328C5[] = {
  NSPAIR(_ZN7S6328C5C1Ev),
  NSPAIR(_ZN7S6328C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
static Base_Class bases_S6328C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6328C5[];
extern void _ZN7S6328C5D1Ev();
extern void _ZN7S6328C5D0Ev();
extern void _ZN7S6328C52v2Ev();
static  VTBL_ENTRY vtc_S6328C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6328C5[0]),
  (VTBL_ENTRY)&_ZN7S6328C5D1Ev,
  (VTBL_ENTRY)&_ZN7S6328C5D0Ev,
  (VTBL_ENTRY)&_ZN7S6328C52v2Ev,
};
extern VTBL_ENTRY _ZTI7S6328C5[];
extern  VTBL_ENTRY _ZTV7S6328C5[];
Class_Descriptor cd_S6328C5 = {  "S6328C5", // class name
  bases_S6328C5, 1,
  &(vtc_S6328C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S6328C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6328C5),5, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6328C4  : S6328C5 {
  int s6328c4f0[3];
  void *s6328c4f1;
  virtual  ~S6328C4(); // _ZN7S6328C4D1Ev
  virtual void  v1(); // _ZN7S6328C42v1Ev
  S6328C4(); // tgen
};
//SIG(-1 S6328C4) C1{ BC2{ BC3{ m} vd v2} vd v1 Fi[3] Fp}


 S6328C4 ::~S6328C4(){ note_dtor("S6328C4", this);}
void  S6328C4 ::v1(){vfunc_called(this, "_ZN7S6328C42v1Ev");}
S6328C4 ::S6328C4(){ note_ctor("S6328C4", this);} // tgen

static void Test_S6328C4()
{
  extern Class_Descriptor cd_S6328C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S6328C4, buf);
    S6328C4 *dp, &lv = *(dp=new (buf) S6328C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S6328C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6328C4)");
    check_base_class_offset(lv, (S7856C24*)(S6328C5*), 0, "S6328C4");
    check_base_class_offset(lv, (S6328C5*), 0, "S6328C4");
    check_field_offset(lv, s6328c4f0, ABISELECT(8,4), "S6328C4.s6328c4f0");
    check_field_offset(lv, s6328c4f1, ABISELECT(24,16), "S6328C4.s6328c4f1");
    test_class_info(&lv, &cd_S6328C4);
    dp->~S6328C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6328C4(Test_S6328C4, "S6328C4", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S6328C4C1Ev();
extern void _ZN7S6328C4D1Ev();
Name_Map name_map_S6328C4[] = {
  NSPAIR(_ZN7S6328C4C1Ev),
  NSPAIR(_ZN7S6328C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S6328C5;
extern VTBL_ENTRY _ZTI7S6328C5[];
extern  VTBL_ENTRY _ZTV7S6328C5[];
static Base_Class bases_S6328C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S6328C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6328C4[];
extern void _ZN7S6328C4D1Ev();
extern void _ZN7S6328C4D0Ev();
extern void _ZN7S6328C52v2Ev();
extern void _ZN7S6328C42v1Ev();
static  VTBL_ENTRY vtc_S6328C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6328C4[0]),
  (VTBL_ENTRY)&_ZN7S6328C4D1Ev,
  (VTBL_ENTRY)&_ZN7S6328C4D0Ev,
  (VTBL_ENTRY)&_ZN7S6328C52v2Ev,
  (VTBL_ENTRY)&_ZN7S6328C42v1Ev,
};
extern VTBL_ENTRY _ZTI7S6328C4[];
extern  VTBL_ENTRY _ZTV7S6328C4[];
Class_Descriptor cd_S6328C4 = {  "S6328C4", // class name
  bases_S6328C4, 2,
  &(vtc_S6328C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S6328C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6328C4),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6328C7_nt  : S6328C5 {
  int s6328c7f0[2];
  void *s6328c7f1[3];
  virtual  ~S6328C7_nt(); // _ZN10S6328C7_ntD1Ev
  virtual void  v4(); // _ZN10S6328C7_nt2v4Ev
  S6328C7_nt(); // tgen
};
//SIG(-1 S6328C7_nt) C1{ BC2{ BC3{ m} vd v2} vd v1 Fi[2] Fp[3]}


 S6328C7_nt ::~S6328C7_nt(){ note_dtor("S6328C7_nt", this);}
void  S6328C7_nt ::v4(){vfunc_called(this, "_ZN10S6328C7_nt2v4Ev");}
S6328C7_nt ::S6328C7_nt(){ note_ctor("S6328C7_nt", this);} // tgen

//skip512 S6328C7_nt

#else // __cplusplus

extern void _ZN10S6328C7_ntC1Ev();
extern void _ZN10S6328C7_ntD1Ev();
Name_Map name_map_S6328C7_nt[] = {
  NSPAIR(_ZN10S6328C7_ntC1Ev),
  NSPAIR(_ZN10S6328C7_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S6328C5;
extern VTBL_ENTRY _ZTI7S6328C5[];
extern  VTBL_ENTRY _ZTV7S6328C5[];
static Base_Class bases_S6328C7_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S6328C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S6328C7_nt[];
extern void _ZN10S6328C7_ntD1Ev();
extern void _ZN10S6328C7_ntD0Ev();
extern void _ZN7S6328C52v2Ev();
extern void _ZN10S6328C7_nt2v4Ev();
static  VTBL_ENTRY vtc_S6328C7_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S6328C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6328C7_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S6328C7_ntD0Ev,
  (VTBL_ENTRY)&_ZN7S6328C52v2Ev,
  (VTBL_ENTRY)&_ZN10S6328C7_nt2v4Ev,
};
extern VTBL_ENTRY _ZTI10S6328C7_nt[];
VTBL_ENTRY *P__ZTI10S6328C7_nt = _ZTI10S6328C7_nt; 
extern  VTBL_ENTRY _ZTV10S6328C7_nt[];
Class_Descriptor cd_S6328C7_nt = {  "S6328C7_nt", // class name
  bases_S6328C7_nt, 2,
  &(vtc_S6328C7_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI10S6328C7_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S6328C7_nt),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6328C6  : S6328C7_nt {
  virtual  ~S6328C6(); // _ZN7S6328C6D1Ev
  virtual void  v3(); // _ZN7S6328C62v3Ev
  S6328C6(); // tgen
};
//SIG(-1 S6328C6) C1{ BC2{ BC3{ BC4{ m} vd v2} vd v3 Fi[2] Fp[3]} vd v1}


 S6328C6 ::~S6328C6(){ note_dtor("S6328C6", this);}
void  S6328C6 ::v3(){vfunc_called(this, "_ZN7S6328C62v3Ev");}
S6328C6 ::S6328C6(){ note_ctor("S6328C6", this);} // tgen

static void Test_S6328C6()
{
  extern Class_Descriptor cd_S6328C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S6328C6, buf);
    S6328C6 *dp, &lv = *(dp=new (buf) S6328C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S6328C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6328C6)");
    check_base_class_offset(lv, (S7856C24*)(S6328C5*)(S6328C7_nt*), 0, "S6328C6");
    check_base_class_offset(lv, (S6328C5*)(S6328C7_nt*), 0, "S6328C6");
    check_base_class_offset(lv, (S6328C7_nt*), 0, "S6328C6");
    test_class_info(&lv, &cd_S6328C6);
    dp->~S6328C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6328C6(Test_S6328C6, "S6328C6", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN7S6328C6C1Ev();
extern void _ZN7S6328C6D1Ev();
Name_Map name_map_S6328C6[] = {
  NSPAIR(_ZN7S6328C6C1Ev),
  NSPAIR(_ZN7S6328C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S6328C5;
extern VTBL_ENTRY _ZTI7S6328C5[];
extern  VTBL_ENTRY _ZTV7S6328C5[];
extern Class_Descriptor cd_S6328C7_nt;
extern VTBL_ENTRY _ZTI10S6328C7_nt[];
extern  VTBL_ENTRY _ZTV10S6328C7_nt[];
static Base_Class bases_S6328C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S6328C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S6328C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6328C6[];
extern void _ZN7S6328C6D1Ev();
extern void _ZN7S6328C6D0Ev();
extern void _ZN7S6328C52v2Ev();
extern void _ZN10S6328C7_nt2v4Ev();
extern void _ZN7S6328C62v3Ev();
static  VTBL_ENTRY vtc_S6328C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6328C6[0]),
  (VTBL_ENTRY)&_ZN7S6328C6D1Ev,
  (VTBL_ENTRY)&_ZN7S6328C6D0Ev,
  (VTBL_ENTRY)&_ZN7S6328C52v2Ev,
  (VTBL_ENTRY)&_ZN10S6328C7_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S6328C62v3Ev,
};
extern VTBL_ENTRY _ZTI7S6328C6[];
extern  VTBL_ENTRY _ZTV7S6328C6[];
Class_Descriptor cd_S6328C6 = {  "S6328C6", // class name
  bases_S6328C6, 3,
  &(vtc_S6328C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI7S6328C6),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6328C6),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6328C1  : S7856C24 {
  void *s6328c1f0[3];
  int s6328c1f1[2];
  char s6328c1f2[3];
  int s6328c1f3[4];
  ::S6328C3_nt s6328c1f4;
  void *s6328c1f5;
  short s6328c1f6[100];
  int s6328c1f7[3];
  char s6328c1f8;
  int s6328c1f9[2];
  ::S6328C4 s6328c1f10;
  int s6328c1f11[5];
  ::S6328C6 s6328c1f12;
  ::S6328C6 s6328c1f13;
  int s6328c1f14;
  virtual  ~S6328C1(); // _ZN7S6328C1D1Ev
  S6328C1(); // tgen
};
//SIG(1 S6328C1) C1{ BC2{ m} vd Fp[3] Fi[2] Fc[3] Fi[4] FC3{ Fi Fc} Fp Fs[100] Fi[3] Fc Fi[2] FC4{ BC5{ BC2 vd v2} vd v1 Fi[3] Fp} Fi[5] FC6{ BC7{ BC5 vd v4 Fi[2] Fp[3]} vd v3} FC6 Fi}


 S6328C1 ::~S6328C1(){ note_dtor("S6328C1", this);}
S6328C1 ::S6328C1(){ note_ctor("S6328C1", this);} // tgen

static void Test_S6328C1()
{
  extern Class_Descriptor cd_S6328C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(57,94)];
    init_test(&cd_S6328C1, buf);
    S6328C1 *dp, &lv = *(dp=new (buf) S6328C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(448,372), "sizeof(S6328C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6328C1)");
    check_base_class_offset(lv, (S7856C24*), 0, "S6328C1");
    check_field_offset(lv, s6328c1f0, ABISELECT(8,4), "S6328C1.s6328c1f0");
    check_field_offset(lv, s6328c1f1, ABISELECT(32,16), "S6328C1.s6328c1f1");
    check_field_offset(lv, s6328c1f2, ABISELECT(40,24), "S6328C1.s6328c1f2");
    check_field_offset(lv, s6328c1f3, ABISELECT(44,28), "S6328C1.s6328c1f3");
    check_field_offset(lv, s6328c1f4, ABISELECT(60,44), "S6328C1.s6328c1f4");
    check_field_offset(lv, s6328c1f5, ABISELECT(72,52), "S6328C1.s6328c1f5");
    check_field_offset(lv, s6328c1f6, ABISELECT(80,56), "S6328C1.s6328c1f6");
    check_field_offset(lv, s6328c1f7, ABISELECT(280,256), "S6328C1.s6328c1f7");
    check_field_offset(lv, s6328c1f8, ABISELECT(292,268), "S6328C1.s6328c1f8");
    check_field_offset(lv, s6328c1f9, ABISELECT(296,272), "S6328C1.s6328c1f9");
    check_field_offset(lv, s6328c1f10, ABISELECT(304,280), "S6328C1.s6328c1f10");
    check_field_offset(lv, s6328c1f11, ABISELECT(336,300), "S6328C1.s6328c1f11");
    check_field_offset(lv, s6328c1f12, ABISELECT(360,320), "S6328C1.s6328c1f12");
    check_field_offset(lv, s6328c1f13, ABISELECT(400,344), "S6328C1.s6328c1f13");
    check_field_offset(lv, s6328c1f14, ABISELECT(440,368), "S6328C1.s6328c1f14");
    test_class_info(&lv, &cd_S6328C1);
    dp->~S6328C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6328C1(Test_S6328C1, "S6328C1", ABISELECT(448,372));

#else // __cplusplus

extern void _ZN7S6328C1C1Ev();
extern void _ZN7S6328C1D1Ev();
Name_Map name_map_S6328C1[] = {
  NSPAIR(_ZN7S6328C1C1Ev),
  NSPAIR(_ZN7S6328C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
static Base_Class bases_S6328C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6328C1[];
extern void _ZN7S6328C1D1Ev();
extern void _ZN7S6328C1D0Ev();
static  VTBL_ENTRY vtc_S6328C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6328C1[0]),
  (VTBL_ENTRY)&_ZN7S6328C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6328C1D0Ev,
};
extern VTBL_ENTRY _ZTI7S6328C1[];
extern  VTBL_ENTRY _ZTV7S6328C1[];
Class_Descriptor cd_S6328C1 = {  "S6328C1", // class name
  bases_S6328C1, 1,
  &(vtc_S6328C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(448,372), // object size
  NSPAIRA(_ZTI7S6328C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6328C1),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5364C3  {
  char s5364c3f0;
  int s5364c3f1;
  virtual  ~S5364C3(); // _ZN7S5364C3D1Ev
  virtual void  v7(); // _ZN7S5364C32v7Ev
  S5364C3(); // tgen
};
//SIG(-1 S5364C3) C1{ vd v1 Fc Fi}


 S5364C3 ::~S5364C3(){ note_dtor("S5364C3", this);}
void  S5364C3 ::v7(){vfunc_called(this, "_ZN7S5364C32v7Ev");}
S5364C3 ::S5364C3(){ note_ctor("S5364C3", this);} // tgen

static void Test_S5364C3()
{
  extern Class_Descriptor cd_S5364C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S5364C3, buf);
    S5364C3 *dp, &lv = *(dp=new (buf) S5364C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S5364C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5364C3)");
    check_field_offset(lv, s5364c3f0, ABISELECT(8,4), "S5364C3.s5364c3f0");
    check_field_offset(lv, s5364c3f1, ABISELECT(12,8), "S5364C3.s5364c3f1");
    test_class_info(&lv, &cd_S5364C3);
    dp->~S5364C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5364C3(Test_S5364C3, "S5364C3", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S5364C3C1Ev();
extern void _ZN7S5364C3D1Ev();
Name_Map name_map_S5364C3[] = {
  NSPAIR(_ZN7S5364C3C1Ev),
  NSPAIR(_ZN7S5364C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S5364C3[];
extern void _ZN7S5364C3D1Ev();
extern void _ZN7S5364C3D0Ev();
extern void _ZN7S5364C32v7Ev();
static  VTBL_ENTRY vtc_S5364C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5364C3[0]),
  (VTBL_ENTRY)&_ZN7S5364C3D1Ev,
  (VTBL_ENTRY)&_ZN7S5364C3D0Ev,
  (VTBL_ENTRY)&_ZN7S5364C32v7Ev,
};
extern VTBL_ENTRY _ZTI7S5364C3[];
extern  VTBL_ENTRY _ZTV7S5364C3[];
Class_Descriptor cd_S5364C3 = {  "S5364C3", // class name
  0,0,//no base classes
  &(vtc_S5364C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S5364C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S5364C3),5, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5364C2  : S5364C3 {
  int s5364c2f0[2];
  char s5364c2f1;
  ::S2436C5_nt s5364c2f2;
  ::S2436C6 s5364c2f3;
  virtual  ~S5364C2(); // _ZN7S5364C2D1Ev
  virtual void  v8(); // _ZN7S5364C22v8Ev
  S5364C2(); // tgen
};
//SIG(-1 S5364C2) C1{ BC2{ vd v2 Fc Fi} vd v1 Fi[2] Fc FC3{ Fp} FC4{ BC5{ vd v5 Fc Fi} vd v3 v4 FL[4]}}


 S5364C2 ::~S5364C2(){ note_dtor("S5364C2", this);}
void  S5364C2 ::v8(){vfunc_called(this, "_ZN7S5364C22v8Ev");}
S5364C2 ::S5364C2(){ note_ctor("S5364C2", this);} // tgen

static void Test_S5364C2()
{
  extern Class_Descriptor cd_S5364C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,19)];
    init_test(&cd_S5364C2, buf);
    S5364C2 *dp, &lv = *(dp=new (buf) S5364C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,72), "sizeof(S5364C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5364C2)");
    check_base_class_offset(lv, (S5364C3*), 0, "S5364C2");
    check_field_offset(lv, s5364c2f0, ABISELECT(16,12), "S5364C2.s5364c2f0");
    check_field_offset(lv, s5364c2f1, ABISELECT(24,20), "S5364C2.s5364c2f1");
    check_field_offset(lv, s5364c2f2, ABISELECT(32,24), "S5364C2.s5364c2f2");
    check_field_offset(lv, s5364c2f3, ABISELECT(40,28), "S5364C2.s5364c2f3");
    test_class_info(&lv, &cd_S5364C2);
    dp->~S5364C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5364C2(Test_S5364C2, "S5364C2", ABISELECT(88,72));

#else // __cplusplus

extern void _ZN7S5364C2C1Ev();
extern void _ZN7S5364C2D1Ev();
Name_Map name_map_S5364C2[] = {
  NSPAIR(_ZN7S5364C2C1Ev),
  NSPAIR(_ZN7S5364C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5364C3;
extern VTBL_ENTRY _ZTI7S5364C3[];
extern  VTBL_ENTRY _ZTV7S5364C3[];
static Base_Class bases_S5364C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5364C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S5364C2[];
extern void _ZN7S5364C2D1Ev();
extern void _ZN7S5364C2D0Ev();
extern void _ZN7S5364C32v7Ev();
extern void _ZN7S5364C22v8Ev();
static  VTBL_ENTRY vtc_S5364C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5364C2[0]),
  (VTBL_ENTRY)&_ZN7S5364C2D1Ev,
  (VTBL_ENTRY)&_ZN7S5364C2D0Ev,
  (VTBL_ENTRY)&_ZN7S5364C32v7Ev,
  (VTBL_ENTRY)&_ZN7S5364C22v8Ev,
};
extern VTBL_ENTRY _ZTI7S5364C2[];
extern  VTBL_ENTRY _ZTV7S5364C2[];
Class_Descriptor cd_S5364C2 = {  "S5364C2", // class name
  bases_S5364C2, 1,
  &(vtc_S5364C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,72), // object size
  NSPAIRA(_ZTI7S5364C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S5364C2),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5364C6_nt  {
  virtual  ~S5364C6_nt(); // _ZN10S5364C6_ntD1Ev
  virtual void  v9(); // _ZN10S5364C6_nt2v9Ev
  virtual void  v10(); // _ZN10S5364C6_nt3v10Ev
  virtual void  v11(); // _ZN10S5364C6_nt3v11Ev
  virtual void  v12(); // _ZN10S5364C6_nt3v12Ev
  virtual void  v13(); // _ZN10S5364C6_nt3v13Ev
  S5364C6_nt(); // tgen
};
//SIG(-1 S5364C6_nt) C1{ vd v1 v2 v3 v4 v5}


 S5364C6_nt ::~S5364C6_nt(){ note_dtor("S5364C6_nt", this);}
void  S5364C6_nt ::v9(){vfunc_called(this, "_ZN10S5364C6_nt2v9Ev");}
void  S5364C6_nt ::v10(){vfunc_called(this, "_ZN10S5364C6_nt3v10Ev");}
void  S5364C6_nt ::v11(){vfunc_called(this, "_ZN10S5364C6_nt3v11Ev");}
void  S5364C6_nt ::v12(){vfunc_called(this, "_ZN10S5364C6_nt3v12Ev");}
void  S5364C6_nt ::v13(){vfunc_called(this, "_ZN10S5364C6_nt3v13Ev");}
S5364C6_nt ::S5364C6_nt(){ note_ctor("S5364C6_nt", this);} // tgen

//skip512 S5364C6_nt

#else // __cplusplus

extern void _ZN10S5364C6_ntC1Ev();
extern void _ZN10S5364C6_ntD1Ev();
Name_Map name_map_S5364C6_nt[] = {
  NSPAIR(_ZN10S5364C6_ntC1Ev),
  NSPAIR(_ZN10S5364C6_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S5364C6_nt[];
extern void _ZN10S5364C6_ntD1Ev();
extern void _ZN10S5364C6_ntD0Ev();
extern void _ZN10S5364C6_nt2v9Ev();
extern void _ZN10S5364C6_nt3v10Ev();
extern void _ZN10S5364C6_nt3v11Ev();
extern void _ZN10S5364C6_nt3v12Ev();
extern void _ZN10S5364C6_nt3v13Ev();
static  VTBL_ENTRY vtc_S5364C6_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S5364C6_nt[0]),
  (VTBL_ENTRY)&_ZN10S5364C6_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S5364C6_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S5364C6_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S5364C6_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S5364C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S5364C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S5364C6_nt3v13Ev,
};
extern VTBL_ENTRY _ZTI10S5364C6_nt[];
VTBL_ENTRY *P__ZTI10S5364C6_nt = _ZTI10S5364C6_nt; 
extern  VTBL_ENTRY _ZTV10S5364C6_nt[];
Class_Descriptor cd_S5364C6_nt = {  "S5364C6_nt", // class name
  0,0,//no base classes
  &(vtc_S5364C6_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S5364C6_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S5364C6_nt),9, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5364C1  : S5364C2 , S5364C6_nt {
  char s5364c1f0;
  void *s5364c1f1[5];
  char s5364c1f2;
  int s5364c1f3[4];
  void *s5364c1f4[2];
  int s5364c1f5[2];
  void *s5364c1f6;
  int s5364c1f7;
  virtual  ~S5364C1(); // _ZN7S5364C1D1Ev
  virtual void  v1(); // _ZN7S5364C12v1Ev
  virtual void  v2(); // _ZN7S5364C12v2Ev
  virtual void  v3(); // _ZN7S5364C12v3Ev
  virtual void  v4(); // _ZN7S5364C12v4Ev
  virtual void  v5(); // _ZN7S5364C12v5Ev
  virtual void  v6(); // _ZN7S5364C12v6Ev
  S5364C1(); // tgen
};
//SIG(1 S5364C1) C1{ BC2{ BC3{ vd v7 Fc Fi} vd v8 Fi[2] Fc FC4{ Fp} FC5{ BC6{ vd v16 Fc Fi} vd v14 v15 FL[4]}} BC7{ vd v9 v10 v11 v12 v13} vd v1 v2 v3 v4 v5 v6 Fc Fp[5] Fc Fi[4] Fp[2] Fi[2] Fp Fi}


 S5364C1 ::~S5364C1(){ note_dtor("S5364C1", this);}
void  S5364C1 ::v1(){vfunc_called(this, "_ZN7S5364C12v1Ev");}
void  S5364C1 ::v2(){vfunc_called(this, "_ZN7S5364C12v2Ev");}
void  S5364C1 ::v3(){vfunc_called(this, "_ZN7S5364C12v3Ev");}
void  S5364C1 ::v4(){vfunc_called(this, "_ZN7S5364C12v4Ev");}
void  S5364C1 ::v5(){vfunc_called(this, "_ZN7S5364C12v5Ev");}
void  S5364C1 ::v6(){vfunc_called(this, "_ZN7S5364C12v6Ev");}
S5364C1 ::S5364C1(){ note_ctor("S5364C1", this);} // tgen

static void Test_S5364C1()
{
  extern Class_Descriptor cd_S5364C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(27,37)];
    init_test(&cd_S5364C1, buf);
    S5364C1 *dp, &lv = *(dp=new (buf) S5364C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,144), "sizeof(S5364C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5364C1)");
    check_base_class_offset(lv, (S5364C3*)(S5364C2*), 0, "S5364C1");
    check_base_class_offset(lv, (S5364C2*), 0, "S5364C1");
    check_base_class_offset(lv, (S5364C6_nt*), ABISELECT(88,72), "S5364C1");
    check_field_offset(lv, s5364c1f0, ABISELECT(96,76), "S5364C1.s5364c1f0");
    check_field_offset(lv, s5364c1f1, ABISELECT(104,80), "S5364C1.s5364c1f1");
    check_field_offset(lv, s5364c1f2, ABISELECT(144,100), "S5364C1.s5364c1f2");
    check_field_offset(lv, s5364c1f3, ABISELECT(148,104), "S5364C1.s5364c1f3");
    check_field_offset(lv, s5364c1f4, ABISELECT(168,120), "S5364C1.s5364c1f4");
    check_field_offset(lv, s5364c1f5, ABISELECT(184,128), "S5364C1.s5364c1f5");
    check_field_offset(lv, s5364c1f6, ABISELECT(192,136), "S5364C1.s5364c1f6");
    check_field_offset(lv, s5364c1f7, ABISELECT(200,140), "S5364C1.s5364c1f7");
    test_class_info(&lv, &cd_S5364C1);
    dp->~S5364C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5364C1(Test_S5364C1, "S5364C1", ABISELECT(208,144));

#else // __cplusplus

extern void _ZN7S5364C1C1Ev();
extern void _ZN7S5364C1D1Ev();
Name_Map name_map_S5364C1[] = {
  NSPAIR(_ZN7S5364C1C1Ev),
  NSPAIR(_ZN7S5364C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5364C3;
extern VTBL_ENTRY _ZTI7S5364C3[];
extern  VTBL_ENTRY _ZTV7S5364C3[];
extern Class_Descriptor cd_S5364C2;
extern VTBL_ENTRY _ZTI7S5364C2[];
extern  VTBL_ENTRY _ZTV7S5364C2[];
extern Class_Descriptor cd_S5364C6_nt;
extern VTBL_ENTRY _ZTI10S5364C6_nt[];
extern  VTBL_ENTRY _ZTV10S5364C6_nt[];
static Base_Class bases_S5364C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5364C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S5364C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5364C6_nt,    ABISELECT(88,72), //bcp->offset
    12, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S5364C1[];
extern void _ZN7S5364C1D1Ev();
extern void _ZN7S5364C1D0Ev();
extern void _ZN7S5364C32v7Ev();
extern void _ZN7S5364C22v8Ev();
extern void _ZN7S5364C12v1Ev();
extern void _ZN7S5364C12v2Ev();
extern void _ZN7S5364C12v3Ev();
extern void _ZN7S5364C12v4Ev();
extern void _ZN7S5364C12v5Ev();
extern void _ZN7S5364C12v6Ev();
extern void ABISELECT(_ZThn88_N7S5364C1D1Ev,_ZThn72_N7S5364C1D1Ev)();
extern void ABISELECT(_ZThn88_N7S5364C1D0Ev,_ZThn72_N7S5364C1D0Ev)();
extern void _ZN10S5364C6_nt2v9Ev();
extern void _ZN10S5364C6_nt3v10Ev();
extern void _ZN10S5364C6_nt3v11Ev();
extern void _ZN10S5364C6_nt3v12Ev();
extern void _ZN10S5364C6_nt3v13Ev();
static  VTBL_ENTRY vtc_S5364C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5364C1[0]),
  (VTBL_ENTRY)&_ZN7S5364C1D1Ev,
  (VTBL_ENTRY)&_ZN7S5364C1D0Ev,
  (VTBL_ENTRY)&_ZN7S5364C32v7Ev,
  (VTBL_ENTRY)&_ZN7S5364C22v8Ev,
  (VTBL_ENTRY)&_ZN7S5364C12v1Ev,
  (VTBL_ENTRY)&_ZN7S5364C12v2Ev,
  (VTBL_ENTRY)&_ZN7S5364C12v3Ev,
  (VTBL_ENTRY)&_ZN7S5364C12v4Ev,
  (VTBL_ENTRY)&_ZN7S5364C12v5Ev,
  (VTBL_ENTRY)&_ZN7S5364C12v6Ev,
  ABISELECT(-88,-72),
  (VTBL_ENTRY)&(_ZTI7S5364C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn88_N7S5364C1D1Ev,_ZThn72_N7S5364C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn88_N7S5364C1D0Ev,_ZThn72_N7S5364C1D0Ev),
  (VTBL_ENTRY)&_ZN10S5364C6_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S5364C6_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S5364C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S5364C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S5364C6_nt3v13Ev,
};
extern VTBL_ENTRY _ZTI7S5364C1[];
extern  VTBL_ENTRY _ZTV7S5364C1[];
Class_Descriptor cd_S5364C1 = {  "S5364C1", // class name
  bases_S5364C1, 3,
  &(vtc_S5364C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(208,144), // object size
  NSPAIRA(_ZTI7S5364C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S5364C1),21, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2444C4  {
  virtual  ~S2444C4(); // _ZN7S2444C4D1Ev
  virtual void  v9(); // _ZN7S2444C42v9Ev
  virtual void  v10(); // _ZN7S2444C43v10Ev
  virtual void  v11(); // _ZN7S2444C43v11Ev
  S2444C4(); // tgen
};
//SIG(-1 S2444C4) C1{ vd v1 v2 v3}


 S2444C4 ::~S2444C4(){ note_dtor("S2444C4", this);}
void  S2444C4 ::v9(){vfunc_called(this, "_ZN7S2444C42v9Ev");}
void  S2444C4 ::v10(){vfunc_called(this, "_ZN7S2444C43v10Ev");}
void  S2444C4 ::v11(){vfunc_called(this, "_ZN7S2444C43v11Ev");}
S2444C4 ::S2444C4(){ note_ctor("S2444C4", this);} // tgen

static void Test_S2444C4()
{
  extern Class_Descriptor cd_S2444C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S2444C4, buf);
    S2444C4 *dp, &lv = *(dp=new (buf) S2444C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S2444C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2444C4)");
    test_class_info(&lv, &cd_S2444C4);
    dp->~S2444C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2444C4(Test_S2444C4, "S2444C4", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S2444C4C1Ev();
extern void _ZN7S2444C4D1Ev();
Name_Map name_map_S2444C4[] = {
  NSPAIR(_ZN7S2444C4C1Ev),
  NSPAIR(_ZN7S2444C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S2444C4[];
extern void _ZN7S2444C4D1Ev();
extern void _ZN7S2444C4D0Ev();
extern void _ZN7S2444C42v9Ev();
extern void _ZN7S2444C43v10Ev();
extern void _ZN7S2444C43v11Ev();
static  VTBL_ENTRY vtc_S2444C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2444C4[0]),
  (VTBL_ENTRY)&_ZN7S2444C4D1Ev,
  (VTBL_ENTRY)&_ZN7S2444C4D0Ev,
  (VTBL_ENTRY)&_ZN7S2444C42v9Ev,
  (VTBL_ENTRY)&_ZN7S2444C43v10Ev,
  (VTBL_ENTRY)&_ZN7S2444C43v11Ev,
};
extern VTBL_ENTRY _ZTI7S2444C4[];
extern  VTBL_ENTRY _ZTV7S2444C4[];
Class_Descriptor cd_S2444C4 = {  "S2444C4", // class name
  0,0,//no base classes
  &(vtc_S2444C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S2444C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S2444C4),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2444C3  : S2444C4 {
  virtual  ~S2444C3(); // _ZN7S2444C3D1Ev
  virtual void  v12(); // _ZN7S2444C33v12Ev
  virtual void  v13(); // _ZN7S2444C33v13Ev
  virtual void  v14(); // _ZN7S2444C33v14Ev
  virtual void  v15(); // _ZN7S2444C33v15Ev
  virtual void  v16(); // _ZN7S2444C33v16Ev
  virtual void  v17(); // _ZN7S2444C33v17Ev
  virtual void  v18(); // _ZN7S2444C33v18Ev
  virtual void  v19(); // _ZN7S2444C33v19Ev
  S2444C3(); // tgen
};
//SIG(-1 S2444C3) C1{ BC2{ vd v9 v10 v11} vd v1 v2 v3 v4 v5 v6 v7 v8}


 S2444C3 ::~S2444C3(){ note_dtor("S2444C3", this);}
void  S2444C3 ::v12(){vfunc_called(this, "_ZN7S2444C33v12Ev");}
void  S2444C3 ::v13(){vfunc_called(this, "_ZN7S2444C33v13Ev");}
void  S2444C3 ::v14(){vfunc_called(this, "_ZN7S2444C33v14Ev");}
void  S2444C3 ::v15(){vfunc_called(this, "_ZN7S2444C33v15Ev");}
void  S2444C3 ::v16(){vfunc_called(this, "_ZN7S2444C33v16Ev");}
void  S2444C3 ::v17(){vfunc_called(this, "_ZN7S2444C33v17Ev");}
void  S2444C3 ::v18(){vfunc_called(this, "_ZN7S2444C33v18Ev");}
void  S2444C3 ::v19(){vfunc_called(this, "_ZN7S2444C33v19Ev");}
S2444C3 ::S2444C3(){ note_ctor("S2444C3", this);} // tgen

static void Test_S2444C3()
{
  extern Class_Descriptor cd_S2444C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S2444C3, buf);
    S2444C3 *dp, &lv = *(dp=new (buf) S2444C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S2444C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2444C3)");
    check_base_class_offset(lv, (S2444C4*), 0, "S2444C3");
    test_class_info(&lv, &cd_S2444C3);
    dp->~S2444C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2444C3(Test_S2444C3, "S2444C3", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S2444C3C1Ev();
extern void _ZN7S2444C3D1Ev();
Name_Map name_map_S2444C3[] = {
  NSPAIR(_ZN7S2444C3C1Ev),
  NSPAIR(_ZN7S2444C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2444C4;
extern VTBL_ENTRY _ZTI7S2444C4[];
extern  VTBL_ENTRY _ZTV7S2444C4[];
static Base_Class bases_S2444C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2444C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2444C3[];
extern void _ZN7S2444C3D1Ev();
extern void _ZN7S2444C3D0Ev();
extern void _ZN7S2444C42v9Ev();
extern void _ZN7S2444C43v10Ev();
extern void _ZN7S2444C43v11Ev();
extern void _ZN7S2444C33v12Ev();
extern void _ZN7S2444C33v13Ev();
extern void _ZN7S2444C33v14Ev();
extern void _ZN7S2444C33v15Ev();
extern void _ZN7S2444C33v16Ev();
extern void _ZN7S2444C33v17Ev();
extern void _ZN7S2444C33v18Ev();
extern void _ZN7S2444C33v19Ev();
static  VTBL_ENTRY vtc_S2444C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2444C3[0]),
  (VTBL_ENTRY)&_ZN7S2444C3D1Ev,
  (VTBL_ENTRY)&_ZN7S2444C3D0Ev,
  (VTBL_ENTRY)&_ZN7S2444C42v9Ev,
  (VTBL_ENTRY)&_ZN7S2444C43v10Ev,
  (VTBL_ENTRY)&_ZN7S2444C43v11Ev,
  (VTBL_ENTRY)&_ZN7S2444C33v12Ev,
  (VTBL_ENTRY)&_ZN7S2444C33v13Ev,
  (VTBL_ENTRY)&_ZN7S2444C33v14Ev,
  (VTBL_ENTRY)&_ZN7S2444C33v15Ev,
  (VTBL_ENTRY)&_ZN7S2444C33v16Ev,
  (VTBL_ENTRY)&_ZN7S2444C33v17Ev,
  (VTBL_ENTRY)&_ZN7S2444C33v18Ev,
  (VTBL_ENTRY)&_ZN7S2444C33v19Ev,
};
extern VTBL_ENTRY _ZTI7S2444C3[];
extern  VTBL_ENTRY _ZTV7S2444C3[];
Class_Descriptor cd_S2444C3 = {  "S2444C3", // class name
  bases_S2444C3, 1,
  &(vtc_S2444C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S2444C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2444C3),15, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2444C2  : S2444C3 {
  ::S17556C15_nt s2444c2f0;
  ::S17556C3_nt s2444c2f1;
  char s2444c2f2;
  virtual  ~S2444C2(); // _ZN7S2444C2D1Ev
  virtual void  v20(); // _ZN7S2444C23v20Ev
  virtual void  v21(); // _ZN7S2444C23v21Ev
  virtual void  v22(); // _ZN7S2444C23v22Ev
  S2444C2(); // tgen
};
//SIG(-1 S2444C2) C1{ BC2{ BC3{ vd v4 v5 v6} vd v7 v8 v9 v10 v11 v12 v13 v14} vd v1 v2 v3 FC4{ m Fp Fi[2] FC5{ m}} FC6{ m FC7{ FL[4]}} Fc}


 S2444C2 ::~S2444C2(){ note_dtor("S2444C2", this);}
void  S2444C2 ::v20(){vfunc_called(this, "_ZN7S2444C23v20Ev");}
void  S2444C2 ::v21(){vfunc_called(this, "_ZN7S2444C23v21Ev");}
void  S2444C2 ::v22(){vfunc_called(this, "_ZN7S2444C23v22Ev");}
S2444C2 ::S2444C2(){ note_ctor("S2444C2", this);} // tgen

static void Test_S2444C2()
{
  extern Class_Descriptor cd_S2444C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,15)];
    init_test(&cd_S2444C2, buf);
    S2444C2 *dp, &lv = *(dp=new (buf) S2444C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,56), "sizeof(S2444C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2444C2)");
    check_base_class_offset(lv, (S2444C4*)(S2444C3*), 0, "S2444C2");
    check_base_class_offset(lv, (S2444C3*), 0, "S2444C2");
    check_field_offset(lv, s2444c2f0, ABISELECT(8,4), "S2444C2.s2444c2f0");
    check_field_offset(lv, s2444c2f1, ABISELECT(32,20), "S2444C2.s2444c2f1");
    check_field_offset(lv, s2444c2f2, ABISELECT(64,52), "S2444C2.s2444c2f2");
    test_class_info(&lv, &cd_S2444C2);
    dp->~S2444C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2444C2(Test_S2444C2, "S2444C2", ABISELECT(72,56));

#else // __cplusplus

extern void _ZN7S2444C2C1Ev();
extern void _ZN7S2444C2D1Ev();
Name_Map name_map_S2444C2[] = {
  NSPAIR(_ZN7S2444C2C1Ev),
  NSPAIR(_ZN7S2444C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2444C4;
extern VTBL_ENTRY _ZTI7S2444C4[];
extern  VTBL_ENTRY _ZTV7S2444C4[];
extern Class_Descriptor cd_S2444C3;
extern VTBL_ENTRY _ZTI7S2444C3[];
extern  VTBL_ENTRY _ZTV7S2444C3[];
static Base_Class bases_S2444C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2444C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2444C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2444C2[];
extern void _ZN7S2444C2D1Ev();
extern void _ZN7S2444C2D0Ev();
extern void _ZN7S2444C42v9Ev();
extern void _ZN7S2444C43v10Ev();
extern void _ZN7S2444C43v11Ev();
extern void _ZN7S2444C33v12Ev();
extern void _ZN7S2444C33v13Ev();
extern void _ZN7S2444C33v14Ev();
extern void _ZN7S2444C33v15Ev();
extern void _ZN7S2444C33v16Ev();
extern void _ZN7S2444C33v17Ev();
extern void _ZN7S2444C33v18Ev();
extern void _ZN7S2444C33v19Ev();
extern void _ZN7S2444C23v20Ev();
extern void _ZN7S2444C23v21Ev();
extern void _ZN7S2444C23v22Ev();
static  VTBL_ENTRY vtc_S2444C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2444C2[0]),
  (VTBL_ENTRY)&_ZN7S2444C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2444C2D0Ev,
  (VTBL_ENTRY)&_ZN7S2444C42v9Ev,
  (VTBL_ENTRY)&_ZN7S2444C43v10Ev,
  (VTBL_ENTRY)&_ZN7S2444C43v11Ev,
  (VTBL_ENTRY)&_ZN7S2444C33v12Ev,
  (VTBL_ENTRY)&_ZN7S2444C33v13Ev,
  (VTBL_ENTRY)&_ZN7S2444C33v14Ev,
  (VTBL_ENTRY)&_ZN7S2444C33v15Ev,
  (VTBL_ENTRY)&_ZN7S2444C33v16Ev,
  (VTBL_ENTRY)&_ZN7S2444C33v17Ev,
  (VTBL_ENTRY)&_ZN7S2444C33v18Ev,
  (VTBL_ENTRY)&_ZN7S2444C33v19Ev,
  (VTBL_ENTRY)&_ZN7S2444C23v20Ev,
  (VTBL_ENTRY)&_ZN7S2444C23v21Ev,
  (VTBL_ENTRY)&_ZN7S2444C23v22Ev,
};
extern VTBL_ENTRY _ZTI7S2444C2[];
extern  VTBL_ENTRY _ZTV7S2444C2[];
Class_Descriptor cd_S2444C2 = {  "S2444C2", // class name
  bases_S2444C2, 2,
  &(vtc_S2444C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,56), // object size
  NSPAIRA(_ZTI7S2444C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2444C2),18, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2444C1  : S2444C2 {
  int s2444c1f0;
  virtual  ~S2444C1(); // _ZN7S2444C1D1Ev
  virtual void  v1(); // _ZN7S2444C12v1Ev
  virtual void  v2(); // _ZN7S2444C12v2Ev
  virtual void  v3(); // _ZN7S2444C12v3Ev
  virtual void  v4(); // _ZN7S2444C12v4Ev
  virtual void  v5(); // _ZN7S2444C12v5Ev
  virtual void  v6(); // _ZN7S2444C12v6Ev
  virtual void  v7(); // _ZN7S2444C12v7Ev
  virtual void  v8(); // _ZN7S2444C12v8Ev
  S2444C1(); // tgen
};
//SIG(1 S2444C1) C1{ BC2{ BC3{ BC4{ vd v9 v10 v11} vd v12 v13 v14 v15 v16 v17 v18 v19} vd v20 v21 v22 FC5{ m Fp Fi[2] FC6{ m}} FC7{ m FC8{ FL[4]}} Fc} vd v1 v2 v3 v4 v5 v6 v7 v8 Fi}


 S2444C1 ::~S2444C1(){ note_dtor("S2444C1", this);}
void  S2444C1 ::v1(){vfunc_called(this, "_ZN7S2444C12v1Ev");}
void  S2444C1 ::v2(){vfunc_called(this, "_ZN7S2444C12v2Ev");}
void  S2444C1 ::v3(){vfunc_called(this, "_ZN7S2444C12v3Ev");}
void  S2444C1 ::v4(){vfunc_called(this, "_ZN7S2444C12v4Ev");}
void  S2444C1 ::v5(){vfunc_called(this, "_ZN7S2444C12v5Ev");}
void  S2444C1 ::v6(){vfunc_called(this, "_ZN7S2444C12v6Ev");}
void  S2444C1 ::v7(){vfunc_called(this, "_ZN7S2444C12v7Ev");}
void  S2444C1 ::v8(){vfunc_called(this, "_ZN7S2444C12v8Ev");}
S2444C1 ::S2444C1(){ note_ctor("S2444C1", this);} // tgen

static void Test_S2444C1()
{
  extern Class_Descriptor cd_S2444C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,16)];
    init_test(&cd_S2444C1, buf);
    S2444C1 *dp, &lv = *(dp=new (buf) S2444C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,60), "sizeof(S2444C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2444C1)");
    check_base_class_offset(lv, (S2444C4*)(S2444C3*)(S2444C2*), 0, "S2444C1");
    check_base_class_offset(lv, (S2444C3*)(S2444C2*), 0, "S2444C1");
    check_base_class_offset(lv, (S2444C2*), 0, "S2444C1");
    check_field_offset(lv, s2444c1f0, ABISELECT(68,56), "S2444C1.s2444c1f0");
    test_class_info(&lv, &cd_S2444C1);
    dp->~S2444C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2444C1(Test_S2444C1, "S2444C1", ABISELECT(72,60));

#else // __cplusplus

extern void _ZN7S2444C1C1Ev();
extern void _ZN7S2444C1D1Ev();
Name_Map name_map_S2444C1[] = {
  NSPAIR(_ZN7S2444C1C1Ev),
  NSPAIR(_ZN7S2444C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2444C4;
extern VTBL_ENTRY _ZTI7S2444C4[];
extern  VTBL_ENTRY _ZTV7S2444C4[];
extern Class_Descriptor cd_S2444C3;
extern VTBL_ENTRY _ZTI7S2444C3[];
extern  VTBL_ENTRY _ZTV7S2444C3[];
extern Class_Descriptor cd_S2444C2;
extern VTBL_ENTRY _ZTI7S2444C2[];
extern  VTBL_ENTRY _ZTV7S2444C2[];
static Base_Class bases_S2444C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2444C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2444C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S2444C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2444C1[];
extern void _ZN7S2444C1D1Ev();
extern void _ZN7S2444C1D0Ev();
extern void _ZN7S2444C42v9Ev();
extern void _ZN7S2444C43v10Ev();
extern void _ZN7S2444C43v11Ev();
extern void _ZN7S2444C33v12Ev();
extern void _ZN7S2444C33v13Ev();
extern void _ZN7S2444C33v14Ev();
extern void _ZN7S2444C33v15Ev();
extern void _ZN7S2444C33v16Ev();
extern void _ZN7S2444C33v17Ev();
extern void _ZN7S2444C33v18Ev();
extern void _ZN7S2444C33v19Ev();
extern void _ZN7S2444C23v20Ev();
extern void _ZN7S2444C23v21Ev();
extern void _ZN7S2444C23v22Ev();
extern void _ZN7S2444C12v1Ev();
extern void _ZN7S2444C12v2Ev();
extern void _ZN7S2444C12v3Ev();
extern void _ZN7S2444C12v4Ev();
extern void _ZN7S2444C12v5Ev();
extern void _ZN7S2444C12v6Ev();
extern void _ZN7S2444C12v7Ev();
extern void _ZN7S2444C12v8Ev();
static  VTBL_ENTRY vtc_S2444C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2444C1[0]),
  (VTBL_ENTRY)&_ZN7S2444C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2444C1D0Ev,
  (VTBL_ENTRY)&_ZN7S2444C42v9Ev,
  (VTBL_ENTRY)&_ZN7S2444C43v10Ev,
  (VTBL_ENTRY)&_ZN7S2444C43v11Ev,
  (VTBL_ENTRY)&_ZN7S2444C33v12Ev,
  (VTBL_ENTRY)&_ZN7S2444C33v13Ev,
  (VTBL_ENTRY)&_ZN7S2444C33v14Ev,
  (VTBL_ENTRY)&_ZN7S2444C33v15Ev,
  (VTBL_ENTRY)&_ZN7S2444C33v16Ev,
  (VTBL_ENTRY)&_ZN7S2444C33v17Ev,
  (VTBL_ENTRY)&_ZN7S2444C33v18Ev,
  (VTBL_ENTRY)&_ZN7S2444C33v19Ev,
  (VTBL_ENTRY)&_ZN7S2444C23v20Ev,
  (VTBL_ENTRY)&_ZN7S2444C23v21Ev,
  (VTBL_ENTRY)&_ZN7S2444C23v22Ev,
  (VTBL_ENTRY)&_ZN7S2444C12v1Ev,
  (VTBL_ENTRY)&_ZN7S2444C12v2Ev,
  (VTBL_ENTRY)&_ZN7S2444C12v3Ev,
  (VTBL_ENTRY)&_ZN7S2444C12v4Ev,
  (VTBL_ENTRY)&_ZN7S2444C12v5Ev,
  (VTBL_ENTRY)&_ZN7S2444C12v6Ev,
  (VTBL_ENTRY)&_ZN7S2444C12v7Ev,
  (VTBL_ENTRY)&_ZN7S2444C12v8Ev,
};
extern VTBL_ENTRY _ZTI7S2444C1[];
extern  VTBL_ENTRY _ZTV7S2444C1[];
Class_Descriptor cd_S2444C1 = {  "S2444C1", // class name
  bases_S2444C1, 3,
  &(vtc_S2444C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,60), // object size
  NSPAIRA(_ZTI7S2444C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2444C1),26, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8590C2  {
  virtual  ~S8590C2(); // _ZN7S8590C2D1Ev
  virtual void  v13(); // _ZN7S8590C23v13Ev
  virtual void  v14(); // _ZN7S8590C23v14Ev
  virtual void  v15(); // _ZN7S8590C23v15Ev
  virtual void  v16(); // _ZN7S8590C23v16Ev
  virtual void  v17(); // _ZN7S8590C23v17Ev
  virtual void  v18(); // _ZN7S8590C23v18Ev
  virtual void  v19(); // _ZN7S8590C23v19Ev
  virtual void  v20(); // _ZN7S8590C23v20Ev
  virtual void  v21(); // _ZN7S8590C23v21Ev
  virtual void  v22(); // _ZN7S8590C23v22Ev
  virtual void  v23(); // _ZN7S8590C23v23Ev
  virtual void  v24(); // _ZN7S8590C23v24Ev
  S8590C2(); // tgen
};
//SIG(-1 S8590C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12}


 S8590C2 ::~S8590C2(){ note_dtor("S8590C2", this);}
void  S8590C2 ::v13(){vfunc_called(this, "_ZN7S8590C23v13Ev");}
void  S8590C2 ::v14(){vfunc_called(this, "_ZN7S8590C23v14Ev");}
void  S8590C2 ::v15(){vfunc_called(this, "_ZN7S8590C23v15Ev");}
void  S8590C2 ::v16(){vfunc_called(this, "_ZN7S8590C23v16Ev");}
void  S8590C2 ::v17(){vfunc_called(this, "_ZN7S8590C23v17Ev");}
void  S8590C2 ::v18(){vfunc_called(this, "_ZN7S8590C23v18Ev");}
void  S8590C2 ::v19(){vfunc_called(this, "_ZN7S8590C23v19Ev");}
void  S8590C2 ::v20(){vfunc_called(this, "_ZN7S8590C23v20Ev");}
void  S8590C2 ::v21(){vfunc_called(this, "_ZN7S8590C23v21Ev");}
void  S8590C2 ::v22(){vfunc_called(this, "_ZN7S8590C23v22Ev");}
void  S8590C2 ::v23(){vfunc_called(this, "_ZN7S8590C23v23Ev");}
void  S8590C2 ::v24(){vfunc_called(this, "_ZN7S8590C23v24Ev");}
S8590C2 ::S8590C2(){ note_ctor("S8590C2", this);} // tgen

static void Test_S8590C2()
{
  extern Class_Descriptor cd_S8590C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S8590C2, buf);
    S8590C2 *dp, &lv = *(dp=new (buf) S8590C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S8590C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8590C2)");
    test_class_info(&lv, &cd_S8590C2);
    dp->~S8590C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8590C2(Test_S8590C2, "S8590C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S8590C2C1Ev();
extern void _ZN7S8590C2D1Ev();
Name_Map name_map_S8590C2[] = {
  NSPAIR(_ZN7S8590C2C1Ev),
  NSPAIR(_ZN7S8590C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8590C2[];
extern void _ZN7S8590C2D1Ev();
extern void _ZN7S8590C2D0Ev();
extern void _ZN7S8590C23v13Ev();
extern void _ZN7S8590C23v14Ev();
extern void _ZN7S8590C23v15Ev();
extern void _ZN7S8590C23v16Ev();
extern void _ZN7S8590C23v17Ev();
extern void _ZN7S8590C23v18Ev();
extern void _ZN7S8590C23v19Ev();
extern void _ZN7S8590C23v20Ev();
extern void _ZN7S8590C23v21Ev();
extern void _ZN7S8590C23v22Ev();
extern void _ZN7S8590C23v23Ev();
extern void _ZN7S8590C23v24Ev();
static  VTBL_ENTRY vtc_S8590C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8590C2[0]),
  (VTBL_ENTRY)&_ZN7S8590C2D1Ev,
  (VTBL_ENTRY)&_ZN7S8590C2D0Ev,
  (VTBL_ENTRY)&_ZN7S8590C23v13Ev,
  (VTBL_ENTRY)&_ZN7S8590C23v14Ev,
  (VTBL_ENTRY)&_ZN7S8590C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8590C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8590C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8590C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8590C23v19Ev,
  (VTBL_ENTRY)&_ZN7S8590C23v20Ev,
  (VTBL_ENTRY)&_ZN7S8590C23v21Ev,
  (VTBL_ENTRY)&_ZN7S8590C23v22Ev,
  (VTBL_ENTRY)&_ZN7S8590C23v23Ev,
  (VTBL_ENTRY)&_ZN7S8590C23v24Ev,
};
extern VTBL_ENTRY _ZTI7S8590C2[];
extern  VTBL_ENTRY _ZTV7S8590C2[];
Class_Descriptor cd_S8590C2 = {  "S8590C2", // class name
  0,0,//no base classes
  &(vtc_S8590C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S8590C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8590C2),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8590C1  : S8590C2 {
  ::S17556C3_nt s8590c1f0;
  ::S2345C15_nt s8590c1f1;
  virtual  ~S8590C1(); // _ZN7S8590C1D1Ev
  virtual void  v1(); // _ZN7S8590C12v1Ev
  virtual void  v2(); // _ZN7S8590C12v2Ev
  virtual void  v3(); // _ZN7S8590C12v3Ev
  virtual void  v4(); // _ZN7S8590C12v4Ev
  virtual void  v5(); // _ZN7S8590C12v5Ev
  virtual void  v6(); // _ZN7S8590C12v6Ev
  virtual void  v7(); // _ZN7S8590C12v7Ev
  virtual void  v8(); // _ZN7S8590C12v8Ev
  virtual void  v9(); // _ZN7S8590C12v9Ev
  virtual void  v10(); // _ZN7S8590C13v10Ev
  virtual void  v11(); // _ZN7S8590C13v11Ev
  virtual void  v12(); // _ZN7S8590C13v12Ev
  S8590C1(); // tgen
};
//SIG(1 S8590C1) C1{ BC2{ vd v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 FC3{ m FC4{ FL[4]}} FC5{ BC6{ m Fp Fi FC7{ m} FC8{ m}}}}


 S8590C1 ::~S8590C1(){ note_dtor("S8590C1", this);}
void  S8590C1 ::v1(){vfunc_called(this, "_ZN7S8590C12v1Ev");}
void  S8590C1 ::v2(){vfunc_called(this, "_ZN7S8590C12v2Ev");}
void  S8590C1 ::v3(){vfunc_called(this, "_ZN7S8590C12v3Ev");}
void  S8590C1 ::v4(){vfunc_called(this, "_ZN7S8590C12v4Ev");}
void  S8590C1 ::v5(){vfunc_called(this, "_ZN7S8590C12v5Ev");}
void  S8590C1 ::v6(){vfunc_called(this, "_ZN7S8590C12v6Ev");}
void  S8590C1 ::v7(){vfunc_called(this, "_ZN7S8590C12v7Ev");}
void  S8590C1 ::v8(){vfunc_called(this, "_ZN7S8590C12v8Ev");}
void  S8590C1 ::v9(){vfunc_called(this, "_ZN7S8590C12v9Ev");}
void  S8590C1 ::v10(){vfunc_called(this, "_ZN7S8590C13v10Ev");}
void  S8590C1 ::v11(){vfunc_called(this, "_ZN7S8590C13v11Ev");}
void  S8590C1 ::v12(){vfunc_called(this, "_ZN7S8590C13v12Ev");}
S8590C1 ::S8590C1(){ note_ctor("S8590C1", this);} // tgen

static void Test_S8590C1()
{
  extern Class_Descriptor cd_S8590C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,13)];
    init_test(&cd_S8590C1, buf);
    S8590C1 *dp, &lv = *(dp=new (buf) S8590C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,48), "sizeof(S8590C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8590C1)");
    check_base_class_offset(lv, (S8590C2*), 0, "S8590C1");
    check_field_offset(lv, s8590c1f0, ABISELECT(8,4), "S8590C1.s8590c1f0");
    check_field_offset(lv, s8590c1f1, ABISELECT(40,36), "S8590C1.s8590c1f1");
    test_class_info(&lv, &cd_S8590C1);
    dp->~S8590C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8590C1(Test_S8590C1, "S8590C1", ABISELECT(56,48));

#else // __cplusplus

extern void _ZN7S8590C1C1Ev();
extern void _ZN7S8590C1D1Ev();
Name_Map name_map_S8590C1[] = {
  NSPAIR(_ZN7S8590C1C1Ev),
  NSPAIR(_ZN7S8590C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8590C2;
extern VTBL_ENTRY _ZTI7S8590C2[];
extern  VTBL_ENTRY _ZTV7S8590C2[];
static Base_Class bases_S8590C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8590C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8590C1[];
extern void _ZN7S8590C1D1Ev();
extern void _ZN7S8590C1D0Ev();
extern void _ZN7S8590C23v13Ev();
extern void _ZN7S8590C23v14Ev();
extern void _ZN7S8590C23v15Ev();
extern void _ZN7S8590C23v16Ev();
extern void _ZN7S8590C23v17Ev();
extern void _ZN7S8590C23v18Ev();
extern void _ZN7S8590C23v19Ev();
extern void _ZN7S8590C23v20Ev();
extern void _ZN7S8590C23v21Ev();
extern void _ZN7S8590C23v22Ev();
extern void _ZN7S8590C23v23Ev();
extern void _ZN7S8590C23v24Ev();
extern void _ZN7S8590C12v1Ev();
extern void _ZN7S8590C12v2Ev();
extern void _ZN7S8590C12v3Ev();
extern void _ZN7S8590C12v4Ev();
extern void _ZN7S8590C12v5Ev();
extern void _ZN7S8590C12v6Ev();
extern void _ZN7S8590C12v7Ev();
extern void _ZN7S8590C12v8Ev();
extern void _ZN7S8590C12v9Ev();
extern void _ZN7S8590C13v10Ev();
extern void _ZN7S8590C13v11Ev();
extern void _ZN7S8590C13v12Ev();
static  VTBL_ENTRY vtc_S8590C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8590C1[0]),
  (VTBL_ENTRY)&_ZN7S8590C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8590C1D0Ev,
  (VTBL_ENTRY)&_ZN7S8590C23v13Ev,
  (VTBL_ENTRY)&_ZN7S8590C23v14Ev,
  (VTBL_ENTRY)&_ZN7S8590C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8590C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8590C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8590C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8590C23v19Ev,
  (VTBL_ENTRY)&_ZN7S8590C23v20Ev,
  (VTBL_ENTRY)&_ZN7S8590C23v21Ev,
  (VTBL_ENTRY)&_ZN7S8590C23v22Ev,
  (VTBL_ENTRY)&_ZN7S8590C23v23Ev,
  (VTBL_ENTRY)&_ZN7S8590C23v24Ev,
  (VTBL_ENTRY)&_ZN7S8590C12v1Ev,
  (VTBL_ENTRY)&_ZN7S8590C12v2Ev,
  (VTBL_ENTRY)&_ZN7S8590C12v3Ev,
  (VTBL_ENTRY)&_ZN7S8590C12v4Ev,
  (VTBL_ENTRY)&_ZN7S8590C12v5Ev,
  (VTBL_ENTRY)&_ZN7S8590C12v6Ev,
  (VTBL_ENTRY)&_ZN7S8590C12v7Ev,
  (VTBL_ENTRY)&_ZN7S8590C12v8Ev,
  (VTBL_ENTRY)&_ZN7S8590C12v9Ev,
  (VTBL_ENTRY)&_ZN7S8590C13v10Ev,
  (VTBL_ENTRY)&_ZN7S8590C13v11Ev,
  (VTBL_ENTRY)&_ZN7S8590C13v12Ev,
};
extern VTBL_ENTRY _ZTI7S8590C1[];
extern  VTBL_ENTRY _ZTV7S8590C1[];
Class_Descriptor cd_S8590C1 = {  "S8590C1", // class name
  bases_S8590C1, 1,
  &(vtc_S8590C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,48), // object size
  NSPAIRA(_ZTI7S8590C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8590C1),28, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8589C2  {
  virtual  ~S8589C2(); // _ZN7S8589C2D1Ev
  virtual void  v13(); // _ZN7S8589C23v13Ev
  virtual void  v14(); // _ZN7S8589C23v14Ev
  virtual void  v15(); // _ZN7S8589C23v15Ev
  virtual void  v16(); // _ZN7S8589C23v16Ev
  virtual void  v17(); // _ZN7S8589C23v17Ev
  virtual void  v18(); // _ZN7S8589C23v18Ev
  virtual void  v19(); // _ZN7S8589C23v19Ev
  virtual void  v20(); // _ZN7S8589C23v20Ev
  virtual void  v21(); // _ZN7S8589C23v21Ev
  virtual void  v22(); // _ZN7S8589C23v22Ev
  virtual void  v23(); // _ZN7S8589C23v23Ev
  virtual void  v24(); // _ZN7S8589C23v24Ev
  S8589C2(); // tgen
};
//SIG(-1 S8589C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12}


 S8589C2 ::~S8589C2(){ note_dtor("S8589C2", this);}
void  S8589C2 ::v13(){vfunc_called(this, "_ZN7S8589C23v13Ev");}
void  S8589C2 ::v14(){vfunc_called(this, "_ZN7S8589C23v14Ev");}
void  S8589C2 ::v15(){vfunc_called(this, "_ZN7S8589C23v15Ev");}
void  S8589C2 ::v16(){vfunc_called(this, "_ZN7S8589C23v16Ev");}
void  S8589C2 ::v17(){vfunc_called(this, "_ZN7S8589C23v17Ev");}
void  S8589C2 ::v18(){vfunc_called(this, "_ZN7S8589C23v18Ev");}
void  S8589C2 ::v19(){vfunc_called(this, "_ZN7S8589C23v19Ev");}
void  S8589C2 ::v20(){vfunc_called(this, "_ZN7S8589C23v20Ev");}
void  S8589C2 ::v21(){vfunc_called(this, "_ZN7S8589C23v21Ev");}
void  S8589C2 ::v22(){vfunc_called(this, "_ZN7S8589C23v22Ev");}
void  S8589C2 ::v23(){vfunc_called(this, "_ZN7S8589C23v23Ev");}
void  S8589C2 ::v24(){vfunc_called(this, "_ZN7S8589C23v24Ev");}
S8589C2 ::S8589C2(){ note_ctor("S8589C2", this);} // tgen

static void Test_S8589C2()
{
  extern Class_Descriptor cd_S8589C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S8589C2, buf);
    S8589C2 *dp, &lv = *(dp=new (buf) S8589C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S8589C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8589C2)");
    test_class_info(&lv, &cd_S8589C2);
    dp->~S8589C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8589C2(Test_S8589C2, "S8589C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S8589C2C1Ev();
extern void _ZN7S8589C2D1Ev();
Name_Map name_map_S8589C2[] = {
  NSPAIR(_ZN7S8589C2C1Ev),
  NSPAIR(_ZN7S8589C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8589C2[];
extern void _ZN7S8589C2D1Ev();
extern void _ZN7S8589C2D0Ev();
extern void _ZN7S8589C23v13Ev();
extern void _ZN7S8589C23v14Ev();
extern void _ZN7S8589C23v15Ev();
extern void _ZN7S8589C23v16Ev();
extern void _ZN7S8589C23v17Ev();
extern void _ZN7S8589C23v18Ev();
extern void _ZN7S8589C23v19Ev();
extern void _ZN7S8589C23v20Ev();
extern void _ZN7S8589C23v21Ev();
extern void _ZN7S8589C23v22Ev();
extern void _ZN7S8589C23v23Ev();
extern void _ZN7S8589C23v24Ev();
static  VTBL_ENTRY vtc_S8589C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8589C2[0]),
  (VTBL_ENTRY)&_ZN7S8589C2D1Ev,
  (VTBL_ENTRY)&_ZN7S8589C2D0Ev,
  (VTBL_ENTRY)&_ZN7S8589C23v13Ev,
  (VTBL_ENTRY)&_ZN7S8589C23v14Ev,
  (VTBL_ENTRY)&_ZN7S8589C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8589C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8589C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8589C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8589C23v19Ev,
  (VTBL_ENTRY)&_ZN7S8589C23v20Ev,
  (VTBL_ENTRY)&_ZN7S8589C23v21Ev,
  (VTBL_ENTRY)&_ZN7S8589C23v22Ev,
  (VTBL_ENTRY)&_ZN7S8589C23v23Ev,
  (VTBL_ENTRY)&_ZN7S8589C23v24Ev,
};
extern VTBL_ENTRY _ZTI7S8589C2[];
extern  VTBL_ENTRY _ZTV7S8589C2[];
Class_Descriptor cd_S8589C2 = {  "S8589C2", // class name
  0,0,//no base classes
  &(vtc_S8589C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S8589C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8589C2),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8589C1  : S8589C2 {
  ::S17555C3_nt s8589c1f0;
  ::S2345C15_nt s8589c1f1;
  virtual  ~S8589C1(); // _ZN7S8589C1D1Ev
  virtual void  v1(); // _ZN7S8589C12v1Ev
  virtual void  v2(); // _ZN7S8589C12v2Ev
  virtual void  v3(); // _ZN7S8589C12v3Ev
  virtual void  v4(); // _ZN7S8589C12v4Ev
  virtual void  v5(); // _ZN7S8589C12v5Ev
  virtual void  v6(); // _ZN7S8589C12v6Ev
  virtual void  v7(); // _ZN7S8589C12v7Ev
  virtual void  v8(); // _ZN7S8589C12v8Ev
  virtual void  v9(); // _ZN7S8589C12v9Ev
  virtual void  v10(); // _ZN7S8589C13v10Ev
  virtual void  v11(); // _ZN7S8589C13v11Ev
  virtual void  v12(); // _ZN7S8589C13v12Ev
  S8589C1(); // tgen
};
//SIG(1 S8589C1) C1{ BC2{ vd v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 FC3{ m FC4{ Fl[4]}} FC5{ BC6{ m Fp Fi FC7{ m} FC8{ m}}}}


 S8589C1 ::~S8589C1(){ note_dtor("S8589C1", this);}
void  S8589C1 ::v1(){vfunc_called(this, "_ZN7S8589C12v1Ev");}
void  S8589C1 ::v2(){vfunc_called(this, "_ZN7S8589C12v2Ev");}
void  S8589C1 ::v3(){vfunc_called(this, "_ZN7S8589C12v3Ev");}
void  S8589C1 ::v4(){vfunc_called(this, "_ZN7S8589C12v4Ev");}
void  S8589C1 ::v5(){vfunc_called(this, "_ZN7S8589C12v5Ev");}
void  S8589C1 ::v6(){vfunc_called(this, "_ZN7S8589C12v6Ev");}
void  S8589C1 ::v7(){vfunc_called(this, "_ZN7S8589C12v7Ev");}
void  S8589C1 ::v8(){vfunc_called(this, "_ZN7S8589C12v8Ev");}
void  S8589C1 ::v9(){vfunc_called(this, "_ZN7S8589C12v9Ev");}
void  S8589C1 ::v10(){vfunc_called(this, "_ZN7S8589C13v10Ev");}
void  S8589C1 ::v11(){vfunc_called(this, "_ZN7S8589C13v11Ev");}
void  S8589C1 ::v12(){vfunc_called(this, "_ZN7S8589C13v12Ev");}
S8589C1 ::S8589C1(){ note_ctor("S8589C1", this);} // tgen

static void Test_S8589C1()
{
  extern Class_Descriptor cd_S8589C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S8589C1, buf);
    S8589C1 *dp, &lv = *(dp=new (buf) S8589C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S8589C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8589C1)");
    check_base_class_offset(lv, (S8589C2*), 0, "S8589C1");
    check_field_offset(lv, s8589c1f0, ABISELECT(8,4), "S8589C1.s8589c1f0");
    check_field_offset(lv, s8589c1f1, ABISELECT(40,20), "S8589C1.s8589c1f1");
    test_class_info(&lv, &cd_S8589C1);
    dp->~S8589C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8589C1(Test_S8589C1, "S8589C1", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN7S8589C1C1Ev();
extern void _ZN7S8589C1D1Ev();
Name_Map name_map_S8589C1[] = {
  NSPAIR(_ZN7S8589C1C1Ev),
  NSPAIR(_ZN7S8589C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8589C2;
extern VTBL_ENTRY _ZTI7S8589C2[];
extern  VTBL_ENTRY _ZTV7S8589C2[];
static Base_Class bases_S8589C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8589C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8589C1[];
extern void _ZN7S8589C1D1Ev();
extern void _ZN7S8589C1D0Ev();
extern void _ZN7S8589C23v13Ev();
extern void _ZN7S8589C23v14Ev();
extern void _ZN7S8589C23v15Ev();
extern void _ZN7S8589C23v16Ev();
extern void _ZN7S8589C23v17Ev();
extern void _ZN7S8589C23v18Ev();
extern void _ZN7S8589C23v19Ev();
extern void _ZN7S8589C23v20Ev();
extern void _ZN7S8589C23v21Ev();
extern void _ZN7S8589C23v22Ev();
extern void _ZN7S8589C23v23Ev();
extern void _ZN7S8589C23v24Ev();
extern void _ZN7S8589C12v1Ev();
extern void _ZN7S8589C12v2Ev();
extern void _ZN7S8589C12v3Ev();
extern void _ZN7S8589C12v4Ev();
extern void _ZN7S8589C12v5Ev();
extern void _ZN7S8589C12v6Ev();
extern void _ZN7S8589C12v7Ev();
extern void _ZN7S8589C12v8Ev();
extern void _ZN7S8589C12v9Ev();
extern void _ZN7S8589C13v10Ev();
extern void _ZN7S8589C13v11Ev();
extern void _ZN7S8589C13v12Ev();
static  VTBL_ENTRY vtc_S8589C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8589C1[0]),
  (VTBL_ENTRY)&_ZN7S8589C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8589C1D0Ev,
  (VTBL_ENTRY)&_ZN7S8589C23v13Ev,
  (VTBL_ENTRY)&_ZN7S8589C23v14Ev,
  (VTBL_ENTRY)&_ZN7S8589C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8589C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8589C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8589C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8589C23v19Ev,
  (VTBL_ENTRY)&_ZN7S8589C23v20Ev,
  (VTBL_ENTRY)&_ZN7S8589C23v21Ev,
  (VTBL_ENTRY)&_ZN7S8589C23v22Ev,
  (VTBL_ENTRY)&_ZN7S8589C23v23Ev,
  (VTBL_ENTRY)&_ZN7S8589C23v24Ev,
  (VTBL_ENTRY)&_ZN7S8589C12v1Ev,
  (VTBL_ENTRY)&_ZN7S8589C12v2Ev,
  (VTBL_ENTRY)&_ZN7S8589C12v3Ev,
  (VTBL_ENTRY)&_ZN7S8589C12v4Ev,
  (VTBL_ENTRY)&_ZN7S8589C12v5Ev,
  (VTBL_ENTRY)&_ZN7S8589C12v6Ev,
  (VTBL_ENTRY)&_ZN7S8589C12v7Ev,
  (VTBL_ENTRY)&_ZN7S8589C12v8Ev,
  (VTBL_ENTRY)&_ZN7S8589C12v9Ev,
  (VTBL_ENTRY)&_ZN7S8589C13v10Ev,
  (VTBL_ENTRY)&_ZN7S8589C13v11Ev,
  (VTBL_ENTRY)&_ZN7S8589C13v12Ev,
};
extern VTBL_ENTRY _ZTI7S8589C1[];
extern  VTBL_ENTRY _ZTV7S8589C1[];
Class_Descriptor cd_S8589C1 = {  "S8589C1", // class name
  bases_S8589C1, 1,
  &(vtc_S8589C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI7S8589C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8589C1),28, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2222C4  {
  virtual  ~S2222C4(); // _ZN7S2222C4D1Ev
  virtual void  v3(); // _ZN7S2222C42v3Ev
  S2222C4(); // tgen
};
//SIG(-1 S2222C4) C1{ vd v1}


 S2222C4 ::~S2222C4(){ note_dtor("S2222C4", this);}
void  S2222C4 ::v3(){vfunc_called(this, "_ZN7S2222C42v3Ev");}
S2222C4 ::S2222C4(){ note_ctor("S2222C4", this);} // tgen

static void Test_S2222C4()
{
  extern Class_Descriptor cd_S2222C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S2222C4, buf);
    S2222C4 *dp, &lv = *(dp=new (buf) S2222C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S2222C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2222C4)");
    test_class_info(&lv, &cd_S2222C4);
    dp->~S2222C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2222C4(Test_S2222C4, "S2222C4", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S2222C4C1Ev();
extern void _ZN7S2222C4D1Ev();
Name_Map name_map_S2222C4[] = {
  NSPAIR(_ZN7S2222C4C1Ev),
  NSPAIR(_ZN7S2222C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S2222C4[];
extern void _ZN7S2222C4D1Ev();
extern void _ZN7S2222C4D0Ev();
extern void _ZN7S2222C42v3Ev();
static  VTBL_ENTRY vtc_S2222C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2222C4[0]),
  (VTBL_ENTRY)&_ZN7S2222C4D1Ev,
  (VTBL_ENTRY)&_ZN7S2222C4D0Ev,
  (VTBL_ENTRY)&_ZN7S2222C42v3Ev,
};
extern VTBL_ENTRY _ZTI7S2222C4[];
extern  VTBL_ENTRY _ZTV7S2222C4[];
Class_Descriptor cd_S2222C4 = {  "S2222C4", // class name
  0,0,//no base classes
  &(vtc_S2222C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S2222C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S2222C4),5, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2222C3  : S2222C4 {
  char s2222c3f0;
  ::S18423C15_nt s2222c3f1;
  ::S18423C15_nt s2222c3f2;
  ::S18423C15_nt s2222c3f3;
  void *s2222c3f4;
  ::S18423C15_nt s2222c3f5;
  ::S18423C15_nt s2222c3f6;
  int s2222c3f7;
  void *s2222c3f8[3];
  virtual  ~S2222C3(); // _ZN7S2222C3D1Ev
  virtual void  v4(); // _ZN7S2222C32v4Ev
  virtual void  v5(); // _ZN7S2222C32v5Ev
  S2222C3(); // tgen
};
//SIG(-1 S2222C3) C1{ BC2{ vd v3} vd v1 v2 Fc FC3{ m Fp Fi FC4{ m}} FC3 FC3 Fp FC3 FC3 Fi Fp[3]}


 S2222C3 ::~S2222C3(){ note_dtor("S2222C3", this);}
void  S2222C3 ::v4(){vfunc_called(this, "_ZN7S2222C32v4Ev");}
void  S2222C3 ::v5(){vfunc_called(this, "_ZN7S2222C32v5Ev");}
S2222C3 ::S2222C3(){ note_ctor("S2222C3", this);} // tgen

static void Test_S2222C3()
{
  extern Class_Descriptor cd_S2222C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,23)];
    init_test(&cd_S2222C3, buf);
    S2222C3 *dp, &lv = *(dp=new (buf) S2222C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,88), "sizeof(S2222C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2222C3)");
    check_base_class_offset(lv, (S2222C4*), 0, "S2222C3");
    check_field_offset(lv, s2222c3f0, ABISELECT(8,4), "S2222C3.s2222c3f0");
    check_field_offset(lv, s2222c3f1, ABISELECT(16,8), "S2222C3.s2222c3f1");
    check_field_offset(lv, s2222c3f2, ABISELECT(32,20), "S2222C3.s2222c3f2");
    check_field_offset(lv, s2222c3f3, ABISELECT(48,32), "S2222C3.s2222c3f3");
    check_field_offset(lv, s2222c3f4, ABISELECT(64,44), "S2222C3.s2222c3f4");
    check_field_offset(lv, s2222c3f5, ABISELECT(72,48), "S2222C3.s2222c3f5");
    check_field_offset(lv, s2222c3f6, ABISELECT(88,60), "S2222C3.s2222c3f6");
    check_field_offset(lv, s2222c3f7, ABISELECT(104,72), "S2222C3.s2222c3f7");
    check_field_offset(lv, s2222c3f8, ABISELECT(112,76), "S2222C3.s2222c3f8");
    test_class_info(&lv, &cd_S2222C3);
    dp->~S2222C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2222C3(Test_S2222C3, "S2222C3", ABISELECT(136,88));

#else // __cplusplus

extern void _ZN7S2222C3C1Ev();
extern void _ZN7S2222C3D1Ev();
Name_Map name_map_S2222C3[] = {
  NSPAIR(_ZN7S2222C3C1Ev),
  NSPAIR(_ZN7S2222C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2222C4;
extern VTBL_ENTRY _ZTI7S2222C4[];
extern  VTBL_ENTRY _ZTV7S2222C4[];
static Base_Class bases_S2222C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2222C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2222C3[];
extern void _ZN7S2222C3D1Ev();
extern void _ZN7S2222C3D0Ev();
extern void _ZN7S2222C42v3Ev();
extern void _ZN7S2222C32v4Ev();
extern void _ZN7S2222C32v5Ev();
static  VTBL_ENTRY vtc_S2222C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2222C3[0]),
  (VTBL_ENTRY)&_ZN7S2222C3D1Ev,
  (VTBL_ENTRY)&_ZN7S2222C3D0Ev,
  (VTBL_ENTRY)&_ZN7S2222C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2222C32v4Ev,
  (VTBL_ENTRY)&_ZN7S2222C32v5Ev,
};
extern VTBL_ENTRY _ZTI7S2222C3[];
extern  VTBL_ENTRY _ZTV7S2222C3[];
Class_Descriptor cd_S2222C3 = {  "S2222C3", // class name
  bases_S2222C3, 1,
  &(vtc_S2222C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(136,88), // object size
  NSPAIRA(_ZTI7S2222C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2222C3),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2222C2  : S2222C3 {
  ::S18423C15_nt s2222c2f0;
  ::S18423C15_nt s2222c2f1;
  ::S18423C15_nt s2222c2f2;
  ::S18423C15_nt s2222c2f3;
  ::S18423C15_nt s2222c2f4;
  int s2222c2f5;
  ::S17556C28_nt s2222c2f6;
  virtual  ~S2222C2(); // _ZN7S2222C2D1Ev
  virtual void  v6(); // _ZN7S2222C22v6Ev
  virtual void  v7(); // _ZN7S2222C22v7Ev
  virtual void  v8(); // _ZN7S2222C22v8Ev
  virtual void  v9(); // _ZN7S2222C22v9Ev
  virtual void  v10(); // _ZN7S2222C23v10Ev
  S2222C2(); // tgen
};
//SIG(-1 S2222C2) C1{ BC2{ BC3{ vd v6} vd v7 v8 Fc FC4{ m Fp Fi FC5{ m}} FC4 FC4 Fp FC4 FC4 Fi Fp[3]} vd v1 v2 v3 v4 v5 FC4 FC4 FC4 FC4 FC4 Fi FC6{ m Fp[2]}}


 S2222C2 ::~S2222C2(){ note_dtor("S2222C2", this);}
void  S2222C2 ::v6(){vfunc_called(this, "_ZN7S2222C22v6Ev");}
void  S2222C2 ::v7(){vfunc_called(this, "_ZN7S2222C22v7Ev");}
void  S2222C2 ::v8(){vfunc_called(this, "_ZN7S2222C22v8Ev");}
void  S2222C2 ::v9(){vfunc_called(this, "_ZN7S2222C22v9Ev");}
void  S2222C2 ::v10(){vfunc_called(this, "_ZN7S2222C23v10Ev");}
S2222C2 ::S2222C2(){ note_ctor("S2222C2", this);} // tgen

static void Test_S2222C2()
{
  extern Class_Descriptor cd_S2222C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(31,41)];
    init_test(&cd_S2222C2, buf);
    S2222C2 *dp, &lv = *(dp=new (buf) S2222C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,160), "sizeof(S2222C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2222C2)");
    check_base_class_offset(lv, (S2222C4*)(S2222C3*), 0, "S2222C2");
    check_base_class_offset(lv, (S2222C3*), 0, "S2222C2");
    check_field_offset(lv, s2222c2f0, ABISELECT(136,88), "S2222C2.s2222c2f0");
    check_field_offset(lv, s2222c2f1, ABISELECT(152,100), "S2222C2.s2222c2f1");
    check_field_offset(lv, s2222c2f2, ABISELECT(168,112), "S2222C2.s2222c2f2");
    check_field_offset(lv, s2222c2f3, ABISELECT(184,124), "S2222C2.s2222c2f3");
    check_field_offset(lv, s2222c2f4, ABISELECT(200,136), "S2222C2.s2222c2f4");
    check_field_offset(lv, s2222c2f5, ABISELECT(216,148), "S2222C2.s2222c2f5");
    check_field_offset(lv, s2222c2f6, ABISELECT(224,152), "S2222C2.s2222c2f6");
    test_class_info(&lv, &cd_S2222C2);
    dp->~S2222C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2222C2(Test_S2222C2, "S2222C2", ABISELECT(240,160));

#else // __cplusplus

extern void _ZN7S2222C2C1Ev();
extern void _ZN7S2222C2D1Ev();
Name_Map name_map_S2222C2[] = {
  NSPAIR(_ZN7S2222C2C1Ev),
  NSPAIR(_ZN7S2222C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2222C4;
extern VTBL_ENTRY _ZTI7S2222C4[];
extern  VTBL_ENTRY _ZTV7S2222C4[];
extern Class_Descriptor cd_S2222C3;
extern VTBL_ENTRY _ZTI7S2222C3[];
extern  VTBL_ENTRY _ZTV7S2222C3[];
static Base_Class bases_S2222C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2222C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2222C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2222C2[];
extern void _ZN7S2222C2D1Ev();
extern void _ZN7S2222C2D0Ev();
extern void _ZN7S2222C42v3Ev();
extern void _ZN7S2222C32v4Ev();
extern void _ZN7S2222C32v5Ev();
extern void _ZN7S2222C22v6Ev();
extern void _ZN7S2222C22v7Ev();
extern void _ZN7S2222C22v8Ev();
extern void _ZN7S2222C22v9Ev();
extern void _ZN7S2222C23v10Ev();
static  VTBL_ENTRY vtc_S2222C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2222C2[0]),
  (VTBL_ENTRY)&_ZN7S2222C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2222C2D0Ev,
  (VTBL_ENTRY)&_ZN7S2222C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2222C32v4Ev,
  (VTBL_ENTRY)&_ZN7S2222C32v5Ev,
  (VTBL_ENTRY)&_ZN7S2222C22v6Ev,
  (VTBL_ENTRY)&_ZN7S2222C22v7Ev,
  (VTBL_ENTRY)&_ZN7S2222C22v8Ev,
  (VTBL_ENTRY)&_ZN7S2222C22v9Ev,
  (VTBL_ENTRY)&_ZN7S2222C23v10Ev,
};
extern VTBL_ENTRY _ZTI7S2222C2[];
extern  VTBL_ENTRY _ZTV7S2222C2[];
Class_Descriptor cd_S2222C2 = {  "S2222C2", // class name
  bases_S2222C2, 2,
  &(vtc_S2222C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(240,160), // object size
  NSPAIRA(_ZTI7S2222C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2222C2),12, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2222C1  : S2222C2 {
  virtual  ~S2222C1(); // _ZN7S2222C1D1Ev
  virtual void  v1(); // _ZN7S2222C12v1Ev
  virtual void  v2(); // _ZN7S2222C12v2Ev
  S2222C1(); // tgen
};
//SIG(1 S2222C1) C1{ BC2{ BC3{ BC4{ vd v3} vd v4 v5 Fc FC5{ m Fp Fi FC6{ m}} FC5 FC5 Fp FC5 FC5 Fi Fp[3]} vd v6 v7 v8 v9 v10 FC5 FC5 FC5 FC5 FC5 Fi FC7{ m Fp[2]}} vd v1 v2}


 S2222C1 ::~S2222C1(){ note_dtor("S2222C1", this);}
void  S2222C1 ::v1(){vfunc_called(this, "_ZN7S2222C12v1Ev");}
void  S2222C1 ::v2(){vfunc_called(this, "_ZN7S2222C12v2Ev");}
S2222C1 ::S2222C1(){ note_ctor("S2222C1", this);} // tgen

static void Test_S2222C1()
{
  extern Class_Descriptor cd_S2222C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(31,41)];
    init_test(&cd_S2222C1, buf);
    S2222C1 *dp, &lv = *(dp=new (buf) S2222C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,160), "sizeof(S2222C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2222C1)");
    check_base_class_offset(lv, (S2222C4*)(S2222C3*)(S2222C2*), 0, "S2222C1");
    check_base_class_offset(lv, (S2222C3*)(S2222C2*), 0, "S2222C1");
    check_base_class_offset(lv, (S2222C2*), 0, "S2222C1");
    test_class_info(&lv, &cd_S2222C1);
    dp->~S2222C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2222C1(Test_S2222C1, "S2222C1", ABISELECT(240,160));

#else // __cplusplus

extern void _ZN7S2222C1C1Ev();
extern void _ZN7S2222C1D1Ev();
Name_Map name_map_S2222C1[] = {
  NSPAIR(_ZN7S2222C1C1Ev),
  NSPAIR(_ZN7S2222C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2222C4;
extern VTBL_ENTRY _ZTI7S2222C4[];
extern  VTBL_ENTRY _ZTV7S2222C4[];
extern Class_Descriptor cd_S2222C3;
extern VTBL_ENTRY _ZTI7S2222C3[];
extern  VTBL_ENTRY _ZTV7S2222C3[];
extern Class_Descriptor cd_S2222C2;
extern VTBL_ENTRY _ZTI7S2222C2[];
extern  VTBL_ENTRY _ZTV7S2222C2[];
static Base_Class bases_S2222C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2222C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2222C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S2222C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2222C1[];
extern void _ZN7S2222C1D1Ev();
extern void _ZN7S2222C1D0Ev();
extern void _ZN7S2222C42v3Ev();
extern void _ZN7S2222C32v4Ev();
extern void _ZN7S2222C32v5Ev();
extern void _ZN7S2222C22v6Ev();
extern void _ZN7S2222C22v7Ev();
extern void _ZN7S2222C22v8Ev();
extern void _ZN7S2222C22v9Ev();
extern void _ZN7S2222C23v10Ev();
extern void _ZN7S2222C12v1Ev();
extern void _ZN7S2222C12v2Ev();
static  VTBL_ENTRY vtc_S2222C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2222C1[0]),
  (VTBL_ENTRY)&_ZN7S2222C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2222C1D0Ev,
  (VTBL_ENTRY)&_ZN7S2222C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2222C32v4Ev,
  (VTBL_ENTRY)&_ZN7S2222C32v5Ev,
  (VTBL_ENTRY)&_ZN7S2222C22v6Ev,
  (VTBL_ENTRY)&_ZN7S2222C22v7Ev,
  (VTBL_ENTRY)&_ZN7S2222C22v8Ev,
  (VTBL_ENTRY)&_ZN7S2222C22v9Ev,
  (VTBL_ENTRY)&_ZN7S2222C23v10Ev,
  (VTBL_ENTRY)&_ZN7S2222C12v1Ev,
  (VTBL_ENTRY)&_ZN7S2222C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S2222C1[];
extern  VTBL_ENTRY _ZTV7S2222C1[];
Class_Descriptor cd_S2222C1 = {  "S2222C1", // class name
  bases_S2222C1, 3,
  &(vtc_S2222C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(240,160), // object size
  NSPAIRA(_ZTI7S2222C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2222C1),14, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8591C2  {
  virtual  ~S8591C2(); // _ZN7S8591C2D1Ev
  virtual void  v13(); // _ZN7S8591C23v13Ev
  virtual void  v14(); // _ZN7S8591C23v14Ev
  virtual void  v15(); // _ZN7S8591C23v15Ev
  virtual void  v16(); // _ZN7S8591C23v16Ev
  virtual void  v17(); // _ZN7S8591C23v17Ev
  virtual void  v18(); // _ZN7S8591C23v18Ev
  virtual void  v19(); // _ZN7S8591C23v19Ev
  virtual void  v20(); // _ZN7S8591C23v20Ev
  virtual void  v21(); // _ZN7S8591C23v21Ev
  virtual void  v22(); // _ZN7S8591C23v22Ev
  virtual void  v23(); // _ZN7S8591C23v23Ev
  virtual void  v24(); // _ZN7S8591C23v24Ev
  S8591C2(); // tgen
};
//SIG(-1 S8591C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12}


 S8591C2 ::~S8591C2(){ note_dtor("S8591C2", this);}
void  S8591C2 ::v13(){vfunc_called(this, "_ZN7S8591C23v13Ev");}
void  S8591C2 ::v14(){vfunc_called(this, "_ZN7S8591C23v14Ev");}
void  S8591C2 ::v15(){vfunc_called(this, "_ZN7S8591C23v15Ev");}
void  S8591C2 ::v16(){vfunc_called(this, "_ZN7S8591C23v16Ev");}
void  S8591C2 ::v17(){vfunc_called(this, "_ZN7S8591C23v17Ev");}
void  S8591C2 ::v18(){vfunc_called(this, "_ZN7S8591C23v18Ev");}
void  S8591C2 ::v19(){vfunc_called(this, "_ZN7S8591C23v19Ev");}
void  S8591C2 ::v20(){vfunc_called(this, "_ZN7S8591C23v20Ev");}
void  S8591C2 ::v21(){vfunc_called(this, "_ZN7S8591C23v21Ev");}
void  S8591C2 ::v22(){vfunc_called(this, "_ZN7S8591C23v22Ev");}
void  S8591C2 ::v23(){vfunc_called(this, "_ZN7S8591C23v23Ev");}
void  S8591C2 ::v24(){vfunc_called(this, "_ZN7S8591C23v24Ev");}
S8591C2 ::S8591C2(){ note_ctor("S8591C2", this);} // tgen

static void Test_S8591C2()
{
  extern Class_Descriptor cd_S8591C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S8591C2, buf);
    S8591C2 *dp, &lv = *(dp=new (buf) S8591C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S8591C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8591C2)");
    test_class_info(&lv, &cd_S8591C2);
    dp->~S8591C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8591C2(Test_S8591C2, "S8591C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S8591C2C1Ev();
extern void _ZN7S8591C2D1Ev();
Name_Map name_map_S8591C2[] = {
  NSPAIR(_ZN7S8591C2C1Ev),
  NSPAIR(_ZN7S8591C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8591C2[];
extern void _ZN7S8591C2D1Ev();
extern void _ZN7S8591C2D0Ev();
extern void _ZN7S8591C23v13Ev();
extern void _ZN7S8591C23v14Ev();
extern void _ZN7S8591C23v15Ev();
extern void _ZN7S8591C23v16Ev();
extern void _ZN7S8591C23v17Ev();
extern void _ZN7S8591C23v18Ev();
extern void _ZN7S8591C23v19Ev();
extern void _ZN7S8591C23v20Ev();
extern void _ZN7S8591C23v21Ev();
extern void _ZN7S8591C23v22Ev();
extern void _ZN7S8591C23v23Ev();
extern void _ZN7S8591C23v24Ev();
static  VTBL_ENTRY vtc_S8591C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8591C2[0]),
  (VTBL_ENTRY)&_ZN7S8591C2D1Ev,
  (VTBL_ENTRY)&_ZN7S8591C2D0Ev,
  (VTBL_ENTRY)&_ZN7S8591C23v13Ev,
  (VTBL_ENTRY)&_ZN7S8591C23v14Ev,
  (VTBL_ENTRY)&_ZN7S8591C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8591C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8591C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8591C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8591C23v19Ev,
  (VTBL_ENTRY)&_ZN7S8591C23v20Ev,
  (VTBL_ENTRY)&_ZN7S8591C23v21Ev,
  (VTBL_ENTRY)&_ZN7S8591C23v22Ev,
  (VTBL_ENTRY)&_ZN7S8591C23v23Ev,
  (VTBL_ENTRY)&_ZN7S8591C23v24Ev,
};
extern VTBL_ENTRY _ZTI7S8591C2[];
extern  VTBL_ENTRY _ZTV7S8591C2[];
Class_Descriptor cd_S8591C2 = {  "S8591C2", // class name
  0,0,//no base classes
  &(vtc_S8591C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S8591C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8591C2),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8591C1  : S8591C2 {
  ::S17566C3_nt s8591c1f0;
  ::S2345C15_nt s8591c1f1;
  virtual  ~S8591C1(); // _ZN7S8591C1D1Ev
  virtual void  v1(); // _ZN7S8591C12v1Ev
  virtual void  v2(); // _ZN7S8591C12v2Ev
  virtual void  v3(); // _ZN7S8591C12v3Ev
  virtual void  v4(); // _ZN7S8591C12v4Ev
  virtual void  v5(); // _ZN7S8591C12v5Ev
  virtual void  v6(); // _ZN7S8591C12v6Ev
  virtual void  v7(); // _ZN7S8591C12v7Ev
  virtual void  v8(); // _ZN7S8591C12v8Ev
  virtual void  v9(); // _ZN7S8591C12v9Ev
  virtual void  v10(); // _ZN7S8591C13v10Ev
  virtual void  v11(); // _ZN7S8591C13v11Ev
  virtual void  v12(); // _ZN7S8591C13v12Ev
  S8591C1(); // tgen
};
//SIG(1 S8591C1) C1{ BC2{ vd v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 FC3{ m FL[4]} FC4{ BC5{ m Fp Fi FC6{ m} FC7{ m}}}}


 S8591C1 ::~S8591C1(){ note_dtor("S8591C1", this);}
void  S8591C1 ::v1(){vfunc_called(this, "_ZN7S8591C12v1Ev");}
void  S8591C1 ::v2(){vfunc_called(this, "_ZN7S8591C12v2Ev");}
void  S8591C1 ::v3(){vfunc_called(this, "_ZN7S8591C12v3Ev");}
void  S8591C1 ::v4(){vfunc_called(this, "_ZN7S8591C12v4Ev");}
void  S8591C1 ::v5(){vfunc_called(this, "_ZN7S8591C12v5Ev");}
void  S8591C1 ::v6(){vfunc_called(this, "_ZN7S8591C12v6Ev");}
void  S8591C1 ::v7(){vfunc_called(this, "_ZN7S8591C12v7Ev");}
void  S8591C1 ::v8(){vfunc_called(this, "_ZN7S8591C12v8Ev");}
void  S8591C1 ::v9(){vfunc_called(this, "_ZN7S8591C12v9Ev");}
void  S8591C1 ::v10(){vfunc_called(this, "_ZN7S8591C13v10Ev");}
void  S8591C1 ::v11(){vfunc_called(this, "_ZN7S8591C13v11Ev");}
void  S8591C1 ::v12(){vfunc_called(this, "_ZN7S8591C13v12Ev");}
S8591C1 ::S8591C1(){ note_ctor("S8591C1", this);} // tgen

static void Test_S8591C1()
{
  extern Class_Descriptor cd_S8591C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,13)];
    init_test(&cd_S8591C1, buf);
    S8591C1 *dp, &lv = *(dp=new (buf) S8591C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,48), "sizeof(S8591C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8591C1)");
    check_base_class_offset(lv, (S8591C2*), 0, "S8591C1");
    check_field_offset(lv, s8591c1f0, ABISELECT(8,4), "S8591C1.s8591c1f0");
    check_field_offset(lv, s8591c1f1, ABISELECT(40,36), "S8591C1.s8591c1f1");
    test_class_info(&lv, &cd_S8591C1);
    dp->~S8591C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8591C1(Test_S8591C1, "S8591C1", ABISELECT(56,48));

#else // __cplusplus

extern void _ZN7S8591C1C1Ev();
extern void _ZN7S8591C1D1Ev();
Name_Map name_map_S8591C1[] = {
  NSPAIR(_ZN7S8591C1C1Ev),
  NSPAIR(_ZN7S8591C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8591C2;
extern VTBL_ENTRY _ZTI7S8591C2[];
extern  VTBL_ENTRY _ZTV7S8591C2[];
static Base_Class bases_S8591C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8591C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8591C1[];
extern void _ZN7S8591C1D1Ev();
extern void _ZN7S8591C1D0Ev();
extern void _ZN7S8591C23v13Ev();
extern void _ZN7S8591C23v14Ev();
extern void _ZN7S8591C23v15Ev();
extern void _ZN7S8591C23v16Ev();
extern void _ZN7S8591C23v17Ev();
extern void _ZN7S8591C23v18Ev();
extern void _ZN7S8591C23v19Ev();
extern void _ZN7S8591C23v20Ev();
extern void _ZN7S8591C23v21Ev();
extern void _ZN7S8591C23v22Ev();
extern void _ZN7S8591C23v23Ev();
extern void _ZN7S8591C23v24Ev();
extern void _ZN7S8591C12v1Ev();
extern void _ZN7S8591C12v2Ev();
extern void _ZN7S8591C12v3Ev();
extern void _ZN7S8591C12v4Ev();
extern void _ZN7S8591C12v5Ev();
extern void _ZN7S8591C12v6Ev();
extern void _ZN7S8591C12v7Ev();
extern void _ZN7S8591C12v8Ev();
extern void _ZN7S8591C12v9Ev();
extern void _ZN7S8591C13v10Ev();
extern void _ZN7S8591C13v11Ev();
extern void _ZN7S8591C13v12Ev();
static  VTBL_ENTRY vtc_S8591C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8591C1[0]),
  (VTBL_ENTRY)&_ZN7S8591C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8591C1D0Ev,
  (VTBL_ENTRY)&_ZN7S8591C23v13Ev,
  (VTBL_ENTRY)&_ZN7S8591C23v14Ev,
  (VTBL_ENTRY)&_ZN7S8591C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8591C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8591C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8591C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8591C23v19Ev,
  (VTBL_ENTRY)&_ZN7S8591C23v20Ev,
  (VTBL_ENTRY)&_ZN7S8591C23v21Ev,
  (VTBL_ENTRY)&_ZN7S8591C23v22Ev,
  (VTBL_ENTRY)&_ZN7S8591C23v23Ev,
  (VTBL_ENTRY)&_ZN7S8591C23v24Ev,
  (VTBL_ENTRY)&_ZN7S8591C12v1Ev,
  (VTBL_ENTRY)&_ZN7S8591C12v2Ev,
  (VTBL_ENTRY)&_ZN7S8591C12v3Ev,
  (VTBL_ENTRY)&_ZN7S8591C12v4Ev,
  (VTBL_ENTRY)&_ZN7S8591C12v5Ev,
  (VTBL_ENTRY)&_ZN7S8591C12v6Ev,
  (VTBL_ENTRY)&_ZN7S8591C12v7Ev,
  (VTBL_ENTRY)&_ZN7S8591C12v8Ev,
  (VTBL_ENTRY)&_ZN7S8591C12v9Ev,
  (VTBL_ENTRY)&_ZN7S8591C13v10Ev,
  (VTBL_ENTRY)&_ZN7S8591C13v11Ev,
  (VTBL_ENTRY)&_ZN7S8591C13v12Ev,
};
extern VTBL_ENTRY _ZTI7S8591C1[];
extern  VTBL_ENTRY _ZTV7S8591C1[];
Class_Descriptor cd_S8591C1 = {  "S8591C1", // class name
  bases_S8591C1, 1,
  &(vtc_S8591C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,48), // object size
  NSPAIRA(_ZTI7S8591C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8591C1),28, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9208C2  {
  ::S18423C15_nt s9208c2f0;
  int s9208c2f1[2];
  char s9208c2f2;
  virtual  ~S9208C2(); // _ZN7S9208C2D1Ev
  virtual void  v3(); // _ZN7S9208C22v3Ev
  virtual void  v4(); // _ZN7S9208C22v4Ev
  virtual void  v5(); // _ZN7S9208C22v5Ev
  S9208C2(); // tgen
};
//SIG(-1 S9208C2) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S9208C2 ::~S9208C2(){ note_dtor("S9208C2", this);}
void  S9208C2 ::v3(){vfunc_called(this, "_ZN7S9208C22v3Ev");}
void  S9208C2 ::v4(){vfunc_called(this, "_ZN7S9208C22v4Ev");}
void  S9208C2 ::v5(){vfunc_called(this, "_ZN7S9208C22v5Ev");}
S9208C2 ::S9208C2(){ note_ctor("S9208C2", this);} // tgen

static void Test_S9208C2()
{
  extern Class_Descriptor cd_S9208C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S9208C2, buf);
    S9208C2 *dp, &lv = *(dp=new (buf) S9208C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S9208C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9208C2)");
    check_field_offset(lv, s9208c2f0, ABISELECT(8,4), "S9208C2.s9208c2f0");
    check_field_offset(lv, s9208c2f1, ABISELECT(24,16), "S9208C2.s9208c2f1");
    check_field_offset(lv, s9208c2f2, ABISELECT(32,24), "S9208C2.s9208c2f2");
    test_class_info(&lv, &cd_S9208C2);
    dp->~S9208C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9208C2(Test_S9208C2, "S9208C2", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S9208C2C1Ev();
extern void _ZN7S9208C2D1Ev();
Name_Map name_map_S9208C2[] = {
  NSPAIR(_ZN7S9208C2C1Ev),
  NSPAIR(_ZN7S9208C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9208C2[];
extern void _ZN7S9208C2D1Ev();
extern void _ZN7S9208C2D0Ev();
extern void _ZN7S9208C22v3Ev();
extern void _ZN7S9208C22v4Ev();
extern void _ZN7S9208C22v5Ev();
static  VTBL_ENTRY vtc_S9208C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9208C2[0]),
  (VTBL_ENTRY)&_ZN7S9208C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9208C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9208C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9208C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9208C22v5Ev,
};
extern VTBL_ENTRY _ZTI7S9208C2[];
extern  VTBL_ENTRY _ZTV7S9208C2[];
Class_Descriptor cd_S9208C2 = {  "S9208C2", // class name
  0,0,//no base classes
  &(vtc_S9208C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S9208C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9208C2),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9208C7_nt  {
  void *s9208c7f0;
  int s9208c7f1[3];
};
//SIG(-1 S9208C7_nt) C1{ Fp Fi[3]}



//skip512 S9208C7_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9208C1  : S9208C2 , S7856C24 {
  ::S6193C4 s9208c1f0;
  int s9208c1f1;
  char s9208c1f2;
  int s9208c1f3;
  ::S18423C15_nt s9208c1f4;
  ::S18423C15_nt s9208c1f5;
  ::S9208C7_nt s9208c1f6;
  void *s9208c1f7[3];
  virtual  ~S9208C1(); // _ZN7S9208C1D1Ev
  virtual void  v1(); // _ZN7S9208C12v1Ev
  virtual void  v2(); // _ZN7S9208C12v2Ev
  S9208C1(); // tgen
};
//SIG(1 S9208C1) C1{ BC2{ vd v3 v4 v5 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} BC4 vd v1 v2 FC5{ m Fi[2] Fc[4] FC3 FC3 FC3 FC3 Fi[3]} Fi Fc Fi FC3 FC3 FC6{ Fp Fi[3]} Fp[3]}


 S9208C1 ::~S9208C1(){ note_dtor("S9208C1", this);}
void  S9208C1 ::v1(){vfunc_called(this, "_ZN7S9208C12v1Ev");}
void  S9208C1 ::v2(){vfunc_called(this, "_ZN7S9208C12v2Ev");}
S9208C1 ::S9208C1(){ note_ctor("S9208C1", this);} // tgen

static void Test_S9208C1()
{
  extern Class_Descriptor cd_S9208C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(30,42)];
    init_test(&cd_S9208C1, buf);
    S9208C1 *dp, &lv = *(dp=new (buf) S9208C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(232,164), "sizeof(S9208C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9208C1)");
    check_base_class_offset(lv, (S9208C2*), 0, "S9208C1");
    check_base_class_offset(lv, (S7856C24*), 0, "S9208C1");
    check_field_offset(lv, s9208c1f0, ABISELECT(40,28), "S9208C1.s9208c1f0");
    check_field_offset(lv, s9208c1f1, ABISELECT(136,100), "S9208C1.s9208c1f1");
    check_field_offset(lv, s9208c1f2, ABISELECT(140,104), "S9208C1.s9208c1f2");
    check_field_offset(lv, s9208c1f3, ABISELECT(144,108), "S9208C1.s9208c1f3");
    check_field_offset(lv, s9208c1f4, ABISELECT(152,112), "S9208C1.s9208c1f4");
    check_field_offset(lv, s9208c1f5, ABISELECT(168,124), "S9208C1.s9208c1f5");
    check_field_offset(lv, s9208c1f6, ABISELECT(184,136), "S9208C1.s9208c1f6");
    check_field_offset(lv, s9208c1f7, ABISELECT(208,152), "S9208C1.s9208c1f7");
    test_class_info(&lv, &cd_S9208C1);
    dp->~S9208C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9208C1(Test_S9208C1, "S9208C1", ABISELECT(232,164));

#else // __cplusplus

extern void _ZN7S9208C1C1Ev();
extern void _ZN7S9208C1D1Ev();
Name_Map name_map_S9208C1[] = {
  NSPAIR(_ZN7S9208C1C1Ev),
  NSPAIR(_ZN7S9208C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9208C2;
extern VTBL_ENTRY _ZTI7S9208C2[];
extern  VTBL_ENTRY _ZTV7S9208C2[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
static Base_Class bases_S9208C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9208C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9208C1[];
extern void _ZN7S9208C1D1Ev();
extern void _ZN7S9208C1D0Ev();
extern void _ZN7S9208C22v3Ev();
extern void _ZN7S9208C22v4Ev();
extern void _ZN7S9208C22v5Ev();
extern void _ZN7S9208C12v1Ev();
extern void _ZN7S9208C12v2Ev();
static  VTBL_ENTRY vtc_S9208C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9208C1[0]),
  (VTBL_ENTRY)&_ZN7S9208C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9208C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9208C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9208C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9208C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9208C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9208C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S9208C1[];
extern  VTBL_ENTRY _ZTV7S9208C1[];
Class_Descriptor cd_S9208C1 = {  "S9208C1", // class name
  bases_S9208C1, 2,
  &(vtc_S9208C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(232,164), // object size
  NSPAIRA(_ZTI7S9208C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S9208C1),9, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20524C4  {
  virtual void  v2(); // _ZN8S20524C42v2Ev
  ~S20524C4(); // tgen
  S20524C4(); // tgen
};
//SIG(-1 S20524C4) C1{ v1}


void  S20524C4 ::v2(){vfunc_called(this, "_ZN8S20524C42v2Ev");}
S20524C4 ::~S20524C4(){ note_dtor("S20524C4", this);} // tgen
S20524C4 ::S20524C4(){ note_ctor("S20524C4", this);} // tgen

static void Test_S20524C4()
{
  extern Class_Descriptor cd_S20524C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S20524C4, buf);
    S20524C4 *dp, &lv = *(dp=new (buf) S20524C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S20524C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20524C4)");
    test_class_info(&lv, &cd_S20524C4);
    dp->~S20524C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20524C4(Test_S20524C4, "S20524C4", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S20524C4C1Ev();
extern void _ZN8S20524C4D1Ev();
Name_Map name_map_S20524C4[] = {
  NSPAIR(_ZN8S20524C4C1Ev),
  NSPAIR(_ZN8S20524C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20524C4[];
extern void _ZN8S20524C42v2Ev();
static  VTBL_ENTRY vtc_S20524C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20524C4[0]),
  (VTBL_ENTRY)&_ZN8S20524C42v2Ev,
};
extern VTBL_ENTRY _ZTI8S20524C4[];
extern  VTBL_ENTRY _ZTV8S20524C4[];
Class_Descriptor cd_S20524C4 = {  "S20524C4", // class name
  0,0,//no base classes
  &(vtc_S20524C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S20524C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20524C4),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20524C3  : S20524C4 {
  virtual  ~S20524C3(); // _ZN8S20524C3D1Ev
  virtual void  v3(); // _ZN8S20524C32v3Ev
  virtual void  v4(); // _ZN8S20524C32v4Ev
  virtual void  v5(); // _ZN8S20524C32v5Ev
  S20524C3(); // tgen
};
//SIG(-1 S20524C3) C1{ BC2{ v4} vd v1 v2 v3}


 S20524C3 ::~S20524C3(){ note_dtor("S20524C3", this);}
void  S20524C3 ::v3(){vfunc_called(this, "_ZN8S20524C32v3Ev");}
void  S20524C3 ::v4(){vfunc_called(this, "_ZN8S20524C32v4Ev");}
void  S20524C3 ::v5(){vfunc_called(this, "_ZN8S20524C32v5Ev");}
S20524C3 ::S20524C3(){ note_ctor("S20524C3", this);} // tgen

static void Test_S20524C3()
{
  extern Class_Descriptor cd_S20524C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S20524C3, buf);
    S20524C3 *dp, &lv = *(dp=new (buf) S20524C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S20524C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20524C3)");
    check_base_class_offset(lv, (S20524C4*), 0, "S20524C3");
    test_class_info(&lv, &cd_S20524C3);
    dp->~S20524C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20524C3(Test_S20524C3, "S20524C3", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S20524C3C1Ev();
extern void _ZN8S20524C3D1Ev();
Name_Map name_map_S20524C3[] = {
  NSPAIR(_ZN8S20524C3C1Ev),
  NSPAIR(_ZN8S20524C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20524C4;
extern VTBL_ENTRY _ZTI8S20524C4[];
extern  VTBL_ENTRY _ZTV8S20524C4[];
static Base_Class bases_S20524C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20524C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20524C3[];
extern void _ZN8S20524C42v2Ev();
extern void _ZN8S20524C3D1Ev();
extern void _ZN8S20524C3D0Ev();
extern void _ZN8S20524C32v3Ev();
extern void _ZN8S20524C32v4Ev();
extern void _ZN8S20524C32v5Ev();
static  VTBL_ENTRY vtc_S20524C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20524C3[0]),
  (VTBL_ENTRY)&_ZN8S20524C42v2Ev,
  (VTBL_ENTRY)&_ZN8S20524C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20524C3D0Ev,
  (VTBL_ENTRY)&_ZN8S20524C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20524C32v4Ev,
  (VTBL_ENTRY)&_ZN8S20524C32v5Ev,
};
extern VTBL_ENTRY _ZTI8S20524C3[];
extern  VTBL_ENTRY _ZTV8S20524C3[];
Class_Descriptor cd_S20524C3 = {  "S20524C3", // class name
  bases_S20524C3, 1,
  &(vtc_S20524C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S20524C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20524C3),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20524C2  : virtual S20524C3 {
  int s20524c2f0:6;
  int s20524c2f1[4];
  virtual  ~S20524C2(); // _ZN8S20524C2D2Ev
  virtual void  v6(); // _ZN8S20524C22v6Ev
  virtual void  v7(); // _ZN8S20524C22v7Ev
  virtual void  v8(); // _ZN8S20524C22v8Ev
  virtual void  v9(); // _ZN8S20524C22v9Ev
  virtual void  v10(); // _ZN8S20524C23v10Ev
  virtual void  v11(); // _ZN8S20524C23v11Ev
  virtual void  v12(); // _ZN8S20524C23v12Ev
  virtual void  v13(); // _ZN8S20524C23v13Ev
  S20524C2(); // tgen
};
//SIG(-1 S20524C2) C1{ VBC2{ BC3{ v9} vd v10 v11 v12} vd v1 v2 v3 v4 v5 v6 v7 v8 Fi:6 Fi[4]}


 S20524C2 ::~S20524C2(){ note_dtor("S20524C2", this);}
void  S20524C2 ::v6(){vfunc_called(this, "_ZN8S20524C22v6Ev");}
void  S20524C2 ::v7(){vfunc_called(this, "_ZN8S20524C22v7Ev");}
void  S20524C2 ::v8(){vfunc_called(this, "_ZN8S20524C22v8Ev");}
void  S20524C2 ::v9(){vfunc_called(this, "_ZN8S20524C22v9Ev");}
void  S20524C2 ::v10(){vfunc_called(this, "_ZN8S20524C23v10Ev");}
void  S20524C2 ::v11(){vfunc_called(this, "_ZN8S20524C23v11Ev");}
void  S20524C2 ::v12(){vfunc_called(this, "_ZN8S20524C23v12Ev");}
void  S20524C2 ::v13(){vfunc_called(this, "_ZN8S20524C23v13Ev");}
S20524C2 ::S20524C2(){ note_ctor("S20524C2", this);} // tgen

static void Test_S20524C2()
{
  extern Class_Descriptor cd_S20524C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,7)];
    init_test(&cd_S20524C2, buf);
    S20524C2 *dp, &lv = *(dp=new (buf) S20524C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S20524C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20524C2)");
    check_base_class_offset(lv, (S20524C4*)(S20524C3*), 0, "S20524C2");
    check_base_class_offset(lv, (S20524C3*), 0, "S20524C2");
    set_bf_and_test(lv, s20524c2f0, ABISELECT(8,4), 0, 6, 1, "S20524C2");
    set_bf_and_test(lv, s20524c2f0, ABISELECT(8,4), 0, 6, hide_sll(1LL<<5), "S20524C2");
    check_field_offset(lv, s20524c2f1, ABISELECT(12,8), "S20524C2.s20524c2f1");
    test_class_info(&lv, &cd_S20524C2);
    dp->~S20524C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20524C2(Test_S20524C2, "S20524C2", ABISELECT(32,24));

#else // __cplusplus

extern void _ZN8S20524C2C1Ev();
extern void _ZN8S20524C2D2Ev();
Name_Map name_map_S20524C2[] = {
  NSPAIR(_ZN8S20524C2C1Ev),
  NSPAIR(_ZN8S20524C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20524C4;
extern VTBL_ENTRY _ZTI8S20524C4[];
extern  VTBL_ENTRY _ZTV8S20524C4[];
extern Class_Descriptor cd_S20524C3;
extern VTBL_ENTRY _ZTI8S20524C3[];
extern  VTBL_ENTRY _ZTV8S20524C3[];
static Base_Class bases_S20524C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20524C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20524C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20524C2[];
extern void _ZN8S20524C42v2Ev();
extern void _ZN8S20524C2D1Ev();
extern void _ZN8S20524C2D0Ev();
extern void _ZN8S20524C32v3Ev();
extern void _ZN8S20524C32v4Ev();
extern void _ZN8S20524C32v5Ev();
extern void _ZN8S20524C22v6Ev();
extern void _ZN8S20524C22v7Ev();
extern void _ZN8S20524C22v8Ev();
extern void _ZN8S20524C22v9Ev();
extern void _ZN8S20524C23v10Ev();
extern void _ZN8S20524C23v11Ev();
extern void _ZN8S20524C23v12Ev();
extern void _ZN8S20524C23v13Ev();
static  VTBL_ENTRY vtc_S20524C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20524C2[0]),
  (VTBL_ENTRY)&_ZN8S20524C42v2Ev,
  (VTBL_ENTRY)&_ZN8S20524C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20524C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20524C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20524C32v4Ev,
  (VTBL_ENTRY)&_ZN8S20524C32v5Ev,
  (VTBL_ENTRY)&_ZN8S20524C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20524C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20524C22v8Ev,
  (VTBL_ENTRY)&_ZN8S20524C22v9Ev,
  (VTBL_ENTRY)&_ZN8S20524C23v10Ev,
  (VTBL_ENTRY)&_ZN8S20524C23v11Ev,
  (VTBL_ENTRY)&_ZN8S20524C23v12Ev,
  (VTBL_ENTRY)&_ZN8S20524C23v13Ev,
};
extern VTBL_ENTRY _ZTV8S20524C2[];
static  VTT_ENTRY vtt_S20524C2[] = {
  {&(_ZTV8S20524C2[8]),  8,22},
  {&(_ZTV8S20524C2[8]),  8,22},
};
extern VTBL_ENTRY _ZTI8S20524C2[];
extern  VTBL_ENTRY _ZTV8S20524C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20524C2[];
Class_Descriptor cd_S20524C2 = {  "S20524C2", // class name
  bases_S20524C2, 2,
  &(vtc_S20524C2[0]), // expected_vtbl_contents
  &(vtt_S20524C2[0]), // expected_vtt_contents
  ABISELECT(32,24), // object size
  NSPAIRA(_ZTI8S20524C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20524C2),22, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20524C2),2, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20524C6  {
  int s20524c6f0;
  char s20524c6f1[2];
  virtual void  v14(); // _ZN8S20524C63v14Ev
  virtual void  v15(); // _ZN8S20524C63v15Ev
  virtual void  v16(); // _ZN8S20524C63v16Ev
  virtual void  v17(); // _ZN8S20524C63v17Ev
  virtual void  v18(); // _ZN8S20524C63v18Ev
  ~S20524C6(); // tgen
  S20524C6(); // tgen
};
//SIG(-1 S20524C6) C1{ v1 v2 v3 v4 v5 Fi Fc[2]}


void  S20524C6 ::v14(){vfunc_called(this, "_ZN8S20524C63v14Ev");}
void  S20524C6 ::v15(){vfunc_called(this, "_ZN8S20524C63v15Ev");}
void  S20524C6 ::v16(){vfunc_called(this, "_ZN8S20524C63v16Ev");}
void  S20524C6 ::v17(){vfunc_called(this, "_ZN8S20524C63v17Ev");}
void  S20524C6 ::v18(){vfunc_called(this, "_ZN8S20524C63v18Ev");}
S20524C6 ::~S20524C6(){ note_dtor("S20524C6", this);} // tgen
S20524C6 ::S20524C6(){ note_ctor("S20524C6", this);} // tgen

static void Test_S20524C6()
{
  extern Class_Descriptor cd_S20524C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S20524C6, buf);
    S20524C6 *dp, &lv = *(dp=new (buf) S20524C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S20524C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20524C6)");
    check_field_offset(lv, s20524c6f0, ABISELECT(8,4), "S20524C6.s20524c6f0");
    check_field_offset(lv, s20524c6f1, ABISELECT(12,8), "S20524C6.s20524c6f1");
    test_class_info(&lv, &cd_S20524C6);
    dp->~S20524C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20524C6(Test_S20524C6, "S20524C6", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S20524C6C1Ev();
extern void _ZN8S20524C6D1Ev();
Name_Map name_map_S20524C6[] = {
  NSPAIR(_ZN8S20524C6C1Ev),
  NSPAIR(_ZN8S20524C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20524C6[];
extern void _ZN8S20524C63v14Ev();
extern void _ZN8S20524C63v15Ev();
extern void _ZN8S20524C63v16Ev();
extern void _ZN8S20524C63v17Ev();
extern void _ZN8S20524C63v18Ev();
static  VTBL_ENTRY vtc_S20524C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20524C6[0]),
  (VTBL_ENTRY)&_ZN8S20524C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20524C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20524C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20524C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20524C63v18Ev,
};
extern VTBL_ENTRY _ZTI8S20524C6[];
extern  VTBL_ENTRY _ZTV8S20524C6[];
Class_Descriptor cd_S20524C6 = {  "S20524C6", // class name
  0,0,//no base classes
  &(vtc_S20524C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S20524C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20524C6),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20524C5  : S20524C6 {
  virtual void  v19(); // _ZN8S20524C53v19Ev
  virtual void  v20(); // _ZN8S20524C53v20Ev
  virtual void  v21(); // _ZN8S20524C53v21Ev
  virtual void  v22(); // _ZN8S20524C53v22Ev
  virtual void  v23(); // _ZN8S20524C53v23Ev
  ~S20524C5(); // tgen
  S20524C5(); // tgen
};
//SIG(-1 S20524C5) C1{ BC2{ v6 v7 v8 v9 v10 Fi Fc[2]} v1 v2 v3 v4 v5}


void  S20524C5 ::v19(){vfunc_called(this, "_ZN8S20524C53v19Ev");}
void  S20524C5 ::v20(){vfunc_called(this, "_ZN8S20524C53v20Ev");}
void  S20524C5 ::v21(){vfunc_called(this, "_ZN8S20524C53v21Ev");}
void  S20524C5 ::v22(){vfunc_called(this, "_ZN8S20524C53v22Ev");}
void  S20524C5 ::v23(){vfunc_called(this, "_ZN8S20524C53v23Ev");}
S20524C5 ::~S20524C5(){ note_dtor("S20524C5", this);} // tgen
S20524C5 ::S20524C5(){ note_ctor("S20524C5", this);} // tgen

static void Test_S20524C5()
{
  extern Class_Descriptor cd_S20524C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S20524C5, buf);
    S20524C5 *dp, &lv = *(dp=new (buf) S20524C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S20524C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20524C5)");
    check_base_class_offset(lv, (S20524C6*), 0, "S20524C5");
    test_class_info(&lv, &cd_S20524C5);
    dp->~S20524C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20524C5(Test_S20524C5, "S20524C5", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S20524C5C1Ev();
extern void _ZN8S20524C5D1Ev();
Name_Map name_map_S20524C5[] = {
  NSPAIR(_ZN8S20524C5C1Ev),
  NSPAIR(_ZN8S20524C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20524C6;
extern VTBL_ENTRY _ZTI8S20524C6[];
extern  VTBL_ENTRY _ZTV8S20524C6[];
static Base_Class bases_S20524C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20524C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20524C5[];
extern void _ZN8S20524C63v14Ev();
extern void _ZN8S20524C63v15Ev();
extern void _ZN8S20524C63v16Ev();
extern void _ZN8S20524C63v17Ev();
extern void _ZN8S20524C63v18Ev();
extern void _ZN8S20524C53v19Ev();
extern void _ZN8S20524C53v20Ev();
extern void _ZN8S20524C53v21Ev();
extern void _ZN8S20524C53v22Ev();
extern void _ZN8S20524C53v23Ev();
static  VTBL_ENTRY vtc_S20524C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20524C5[0]),
  (VTBL_ENTRY)&_ZN8S20524C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20524C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20524C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20524C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20524C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20524C53v19Ev,
  (VTBL_ENTRY)&_ZN8S20524C53v20Ev,
  (VTBL_ENTRY)&_ZN8S20524C53v21Ev,
  (VTBL_ENTRY)&_ZN8S20524C53v22Ev,
  (VTBL_ENTRY)&_ZN8S20524C53v23Ev,
};
extern VTBL_ENTRY _ZTI8S20524C5[];
extern  VTBL_ENTRY _ZTV8S20524C5[];
Class_Descriptor cd_S20524C5 = {  "S20524C5", // class name
  bases_S20524C5, 1,
  &(vtc_S20524C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S20524C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20524C5),12, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20524C1  : virtual S20524C2 , S20524C5 {
  virtual  ~S20524C1(); // _ZN8S20524C1D2Ev
  virtual void  v1(); // _ZN8S20524C12v1Ev
  S20524C1(); // tgen
};
//SIG(1 S20524C1) C1{ VBC2{ VBC3{ BC4{ v2} vd v3 v4 v5} vd v6 v7 v8 v9 v10 v11 v12 v13 Fi:6 Fi[4]} BC5{ BC6{ v14 v15 v16 v17 v18 Fi Fc[2]} v19 v20 v21 v22 v23} vd v1}


 S20524C1 ::~S20524C1(){ note_dtor("S20524C1", this);}
void  S20524C1 ::v1(){vfunc_called(this, "_ZN8S20524C12v1Ev");}
S20524C1 ::S20524C1(){ note_ctor("S20524C1", this);} // tgen

static void Test_S20524C1()
{
  extern Class_Descriptor cd_S20524C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,10)];
    init_test(&cd_S20524C1, buf);
    S20524C1 *dp, &lv = *(dp=new (buf) S20524C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,36), "sizeof(S20524C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20524C1)");
    check_base_class_offset(lv, (S20524C4*)(S20524C3*), ABISELECT(16,12), "S20524C1");
    check_base_class_offset(lv, (S20524C3*)(S20524C2*), ABISELECT(16,12), "S20524C1");
    check_base_class_offset(lv, (S20524C2*), ABISELECT(16,12), "S20524C1");
    check_base_class_offset(lv, (S20524C6*)(S20524C5*), 0, "S20524C1");
    check_base_class_offset(lv, (S20524C5*), 0, "S20524C1");
    test_class_info(&lv, &cd_S20524C1);
    dp->~S20524C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20524C1(Test_S20524C1, "S20524C1", ABISELECT(48,36));

#else // __cplusplus

extern void _ZN8S20524C1C1Ev();
extern void _ZN8S20524C1D2Ev();
Name_Map name_map_S20524C1[] = {
  NSPAIR(_ZN8S20524C1C1Ev),
  NSPAIR(_ZN8S20524C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20524C4;
extern VTBL_ENTRY _ZTI8S20524C4[];
extern  VTBL_ENTRY _ZTV8S20524C4[];
extern Class_Descriptor cd_S20524C3;
extern VTBL_ENTRY _ZTI8S20524C3[];
extern  VTBL_ENTRY _ZTV8S20524C3[];
extern Class_Descriptor cd_S20524C2;
extern VTBL_ENTRY _ZTI8S20524C2[];
extern  VTBL_ENTRY _ZTV8S20524C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20524C2[];
extern Class_Descriptor cd_S20524C6;
extern VTBL_ENTRY _ZTI8S20524C6[];
extern  VTBL_ENTRY _ZTV8S20524C6[];
extern Class_Descriptor cd_S20524C5;
extern VTBL_ENTRY _ZTI8S20524C5[];
extern  VTBL_ENTRY _ZTV8S20524C5[];
static Base_Class bases_S20524C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20524C4,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20524C3,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20524C2,    ABISELECT(16,12), //bcp->offset
    17, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20524C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20524C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20524C1[];
extern void _ZN8S20524C63v14Ev();
extern void _ZN8S20524C63v15Ev();
extern void _ZN8S20524C63v16Ev();
extern void _ZN8S20524C63v17Ev();
extern void _ZN8S20524C63v18Ev();
extern void _ZN8S20524C53v19Ev();
extern void _ZN8S20524C53v20Ev();
extern void _ZN8S20524C53v21Ev();
extern void _ZN8S20524C53v22Ev();
extern void _ZN8S20524C53v23Ev();
extern void _ZN8S20524C1D1Ev();
extern void _ZN8S20524C1D0Ev();
extern void _ZN8S20524C12v1Ev();
extern void _ZN8S20524C42v2Ev();
extern void ABISELECT(_ZTv0_n32_N8S20524C1D1Ev,_ZTv0_n16_N8S20524C1D1Ev)();
extern void ABISELECT(_ZThn16_N8S20524C1D1Ev,_ZThn12_N8S20524C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20524C1D0Ev,_ZTv0_n16_N8S20524C1D0Ev)();
extern void ABISELECT(_ZThn16_N8S20524C1D0Ev,_ZThn12_N8S20524C1D0Ev)() __attribute__((weak));
extern void _ZN8S20524C32v3Ev();
extern void _ZN8S20524C32v4Ev();
extern void _ZN8S20524C32v5Ev();
extern void _ZN8S20524C22v6Ev();
extern void _ZN8S20524C22v7Ev();
extern void _ZN8S20524C22v8Ev();
extern void _ZN8S20524C22v9Ev();
extern void _ZN8S20524C23v10Ev();
extern void _ZN8S20524C23v11Ev();
extern void _ZN8S20524C23v12Ev();
extern void _ZN8S20524C23v13Ev();
static  VTBL_ENTRY vtc_S20524C1[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20524C1[0]),
  (VTBL_ENTRY)&_ZN8S20524C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20524C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20524C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20524C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20524C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20524C53v19Ev,
  (VTBL_ENTRY)&_ZN8S20524C53v20Ev,
  (VTBL_ENTRY)&_ZN8S20524C53v21Ev,
  (VTBL_ENTRY)&_ZN8S20524C53v22Ev,
  (VTBL_ENTRY)&_ZN8S20524C53v23Ev,
  (VTBL_ENTRY)&_ZN8S20524C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20524C1D0Ev,
  (VTBL_ENTRY)&_ZN8S20524C12v1Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  0,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S20524C1[0]),
  (VTBL_ENTRY)&_ZN8S20524C42v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20524C1D1Ev,_ZTv0_n16_N8S20524C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20524C1D0Ev,_ZTv0_n16_N8S20524C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20524C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20524C32v4Ev,
  (VTBL_ENTRY)&_ZN8S20524C32v5Ev,
  (VTBL_ENTRY)&_ZN8S20524C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20524C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20524C22v8Ev,
  (VTBL_ENTRY)&_ZN8S20524C22v9Ev,
  (VTBL_ENTRY)&_ZN8S20524C23v10Ev,
  (VTBL_ENTRY)&_ZN8S20524C23v11Ev,
  (VTBL_ENTRY)&_ZN8S20524C23v12Ev,
  (VTBL_ENTRY)&_ZN8S20524C23v13Ev,
};
extern VTBL_ENTRY _ZTV8S20524C1[];
extern void _ZN8S20524C42v2Ev();
extern void ABISELECT(_ZTv0_n32_N8S20524C2D1Ev,_ZTv0_n16_N8S20524C2D1Ev)();
extern void _ZN8S20524C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20524C2D0Ev,_ZTv0_n16_N8S20524C2D0Ev)();
extern void _ZN8S20524C2D0Ev() __attribute__((weak));
extern void _ZN8S20524C32v3Ev();
extern void _ZN8S20524C32v4Ev();
extern void _ZN8S20524C32v5Ev();
extern void _ZN8S20524C22v6Ev();
extern void _ZN8S20524C22v7Ev();
extern void _ZN8S20524C22v8Ev();
extern void _ZN8S20524C22v9Ev();
extern void _ZN8S20524C23v10Ev();
extern void _ZN8S20524C23v11Ev();
extern void _ZN8S20524C23v12Ev();
extern void _ZN8S20524C23v13Ev();
static  VTBL_ENTRY _tg__ZTV8S20524C2__8S20524C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20524C2[0]),
  (VTBL_ENTRY)&_ZN8S20524C42v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20524C2D1Ev,_ZTv0_n16_N8S20524C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20524C2D0Ev,_ZTv0_n16_N8S20524C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20524C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20524C32v4Ev,
  (VTBL_ENTRY)&_ZN8S20524C32v5Ev,
  (VTBL_ENTRY)&_ZN8S20524C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20524C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20524C22v8Ev,
  (VTBL_ENTRY)&_ZN8S20524C22v9Ev,
  (VTBL_ENTRY)&_ZN8S20524C23v10Ev,
  (VTBL_ENTRY)&_ZN8S20524C23v11Ev,
  (VTBL_ENTRY)&_ZN8S20524C23v12Ev,
  (VTBL_ENTRY)&_ZN8S20524C23v13Ev,
};
static  VTT_ENTRY vtt_S20524C1[] = {
  {&(_ZTV8S20524C1[4]),  4,47},
  {&(_ZTV8S20524C1[33]),  33,47},
  {&(_ZTV8S20524C1[33]),  33,47},
  {&(_tg__ZTV8S20524C2__8S20524C1[8]),  8,22},
  {&(_tg__ZTV8S20524C2__8S20524C1[8]),  8,22},
};
extern VTBL_ENTRY _ZTI8S20524C1[];
extern  VTBL_ENTRY _ZTV8S20524C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20524C1[];
static VTBL_ENTRY alt_thunk_names186[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20524C2D0Ev,_ZTv0_n16_N8S20524C2D0Ev), // 
  (VTBL_ENTRY)_ZN8S20524C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20524C2D1Ev,_ZTv0_n16_N8S20524C2D1Ev), // 
  (VTBL_ENTRY)_ZN8S20524C2D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20524C1D0Ev,_ZTv0_n16_N8S20524C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20524C1D0Ev,_ZThn12_N8S20524C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20524C1D1Ev,_ZTv0_n16_N8S20524C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20524C1D1Ev,_ZThn12_N8S20524C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20524C1 = {  "S20524C1", // class name
  bases_S20524C1, 5,
  &(vtc_S20524C1[0]), // expected_vtbl_contents
  &(vtt_S20524C1[0]), // expected_vtt_contents
  ABISELECT(48,36), // object size
  NSPAIRA(_ZTI8S20524C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20524C1),47, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20524C1),5, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names186,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4235C3_nt  {
  virtual  ~S4235C3_nt(); // _ZN10S4235C3_ntD1Ev
  virtual void  v11(); // _ZN10S4235C3_nt3v11Ev
  virtual void  v12(); // _ZN10S4235C3_nt3v12Ev
  virtual void  v13(); // _ZN10S4235C3_nt3v13Ev
  virtual void  v14(); // _ZN10S4235C3_nt3v14Ev
  virtual void  v15(); // _ZN10S4235C3_nt3v15Ev
  virtual void  v16(); // _ZN10S4235C3_nt3v16Ev
  virtual void  v17(); // _ZN10S4235C3_nt3v17Ev
  virtual void  v18(); // _ZN10S4235C3_nt3v18Ev
  virtual void  v19(); // _ZN10S4235C3_nt3v19Ev
  S4235C3_nt(); // tgen
};
//SIG(-1 S4235C3_nt) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9}


 S4235C3_nt ::~S4235C3_nt(){ note_dtor("S4235C3_nt", this);}
void  S4235C3_nt ::v11(){vfunc_called(this, "_ZN10S4235C3_nt3v11Ev");}
void  S4235C3_nt ::v12(){vfunc_called(this, "_ZN10S4235C3_nt3v12Ev");}
void  S4235C3_nt ::v13(){vfunc_called(this, "_ZN10S4235C3_nt3v13Ev");}
void  S4235C3_nt ::v14(){vfunc_called(this, "_ZN10S4235C3_nt3v14Ev");}
void  S4235C3_nt ::v15(){vfunc_called(this, "_ZN10S4235C3_nt3v15Ev");}
void  S4235C3_nt ::v16(){vfunc_called(this, "_ZN10S4235C3_nt3v16Ev");}
void  S4235C3_nt ::v17(){vfunc_called(this, "_ZN10S4235C3_nt3v17Ev");}
void  S4235C3_nt ::v18(){vfunc_called(this, "_ZN10S4235C3_nt3v18Ev");}
void  S4235C3_nt ::v19(){vfunc_called(this, "_ZN10S4235C3_nt3v19Ev");}
S4235C3_nt ::S4235C3_nt(){ note_ctor("S4235C3_nt", this);} // tgen

//skip512 S4235C3_nt

#else // __cplusplus

extern void _ZN10S4235C3_ntC1Ev();
extern void _ZN10S4235C3_ntD1Ev();
Name_Map name_map_S4235C3_nt[] = {
  NSPAIR(_ZN10S4235C3_ntC1Ev),
  NSPAIR(_ZN10S4235C3_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S4235C3_nt[];
extern void _ZN10S4235C3_ntD1Ev();
extern void _ZN10S4235C3_ntD0Ev();
extern void _ZN10S4235C3_nt3v11Ev();
extern void _ZN10S4235C3_nt3v12Ev();
extern void _ZN10S4235C3_nt3v13Ev();
extern void _ZN10S4235C3_nt3v14Ev();
extern void _ZN10S4235C3_nt3v15Ev();
extern void _ZN10S4235C3_nt3v16Ev();
extern void _ZN10S4235C3_nt3v17Ev();
extern void _ZN10S4235C3_nt3v18Ev();
extern void _ZN10S4235C3_nt3v19Ev();
static  VTBL_ENTRY vtc_S4235C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S4235C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S4235C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S4235C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S4235C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S4235C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S4235C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S4235C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S4235C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S4235C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S4235C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S4235C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S4235C3_nt3v19Ev,
};
extern VTBL_ENTRY _ZTI10S4235C3_nt[];
VTBL_ENTRY *P__ZTI10S4235C3_nt = _ZTI10S4235C3_nt; 
extern  VTBL_ENTRY _ZTV10S4235C3_nt[];
Class_Descriptor cd_S4235C3_nt = {  "S4235C3_nt", // class name
  0,0,//no base classes
  &(vtc_S4235C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S4235C3_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S4235C3_nt),13, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4235C2_nt  : S4235C3_nt {
  virtual  ~S4235C2_nt(); // _ZN10S4235C2_ntD1Ev
  S4235C2_nt(); // tgen
};
//SIG(-1 S4235C2_nt) C1{ BC2{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9} vd}


 S4235C2_nt ::~S4235C2_nt(){ note_dtor("S4235C2_nt", this);}
S4235C2_nt ::S4235C2_nt(){ note_ctor("S4235C2_nt", this);} // tgen

//skip512 S4235C2_nt

#else // __cplusplus

extern void _ZN10S4235C2_ntC1Ev();
extern void _ZN10S4235C2_ntD1Ev();
Name_Map name_map_S4235C2_nt[] = {
  NSPAIR(_ZN10S4235C2_ntC1Ev),
  NSPAIR(_ZN10S4235C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4235C3_nt;
extern VTBL_ENTRY _ZTI10S4235C3_nt[];
extern  VTBL_ENTRY _ZTV10S4235C3_nt[];
static Base_Class bases_S4235C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4235C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S4235C2_nt[];
extern void _ZN10S4235C2_ntD1Ev();
extern void _ZN10S4235C2_ntD0Ev();
extern void _ZN10S4235C3_nt3v11Ev();
extern void _ZN10S4235C3_nt3v12Ev();
extern void _ZN10S4235C3_nt3v13Ev();
extern void _ZN10S4235C3_nt3v14Ev();
extern void _ZN10S4235C3_nt3v15Ev();
extern void _ZN10S4235C3_nt3v16Ev();
extern void _ZN10S4235C3_nt3v17Ev();
extern void _ZN10S4235C3_nt3v18Ev();
extern void _ZN10S4235C3_nt3v19Ev();
static  VTBL_ENTRY vtc_S4235C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S4235C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S4235C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S4235C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S4235C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S4235C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S4235C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S4235C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S4235C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S4235C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S4235C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S4235C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S4235C3_nt3v19Ev,
};
extern VTBL_ENTRY _ZTI10S4235C2_nt[];
VTBL_ENTRY *P__ZTI10S4235C2_nt = _ZTI10S4235C2_nt; 
extern  VTBL_ENTRY _ZTV10S4235C2_nt[];
Class_Descriptor cd_S4235C2_nt = {  "S4235C2_nt", // class name
  bases_S4235C2_nt, 1,
  &(vtc_S4235C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S4235C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S4235C2_nt),13, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4235C4_nt  {
  void *s4235c4f0;
  char s4235c4f1;
  void  mf4235c4(); // _ZN10S4235C4_nt8mf4235c4Ev
};
//SIG(-1 S4235C4_nt) C1{ m Fp Fc}


void  S4235C4_nt ::mf4235c4(){}

//skip512 S4235C4_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4235C6_nt  {
  ::S4235C4_nt s4235c6f0;
  void *s4235c6f1[2];
  void  mf4235c6(); // _ZN10S4235C6_nt8mf4235c6Ev
};
//SIG(-1 S4235C6_nt) C1{ m FC2{ m Fp Fc} Fp[2]}


void  S4235C6_nt ::mf4235c6(){}

//skip512 S4235C6_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4235C5_nt  {
  ::S4235C6_nt s4235c5f0;
  int s4235c5f1;
  void  mf4235c5(); // _ZN10S4235C5_nt8mf4235c5Ev
};
//SIG(-1 S4235C5_nt) C1{ m FC2{ m FC3{ m Fp Fc} Fp[2]} Fi}


void  S4235C5_nt ::mf4235c5(){}

//skip512 S4235C5_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4235C1  : S4235C2_nt {
  ::S4235C4_nt s4235c1f0;
  ::S4235C5_nt s4235c1f1;
  virtual  ~S4235C1(); // _ZN7S4235C1D1Ev
  virtual void  v1(); // _ZN7S4235C12v1Ev
  virtual void  v2(); // _ZN7S4235C12v2Ev
  virtual void  v3(); // _ZN7S4235C12v3Ev
  virtual void  v4(); // _ZN7S4235C12v4Ev
  virtual void  v5(); // _ZN7S4235C12v5Ev
  virtual void  v6(); // _ZN7S4235C12v6Ev
  virtual void  v7(); // _ZN7S4235C12v7Ev
  virtual void  v8(); // _ZN7S4235C12v8Ev
  virtual void  v9(); // _ZN7S4235C12v9Ev
  virtual void  v10(); // _ZN7S4235C13v10Ev
  S4235C1(); // tgen
};
//SIG(1 S4235C1) C1{ BC2{ BC3{ vd v11 v12 v13 v14 v15 v16 v17 v18 v19} vd} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 FC4{ m Fp Fc} FC5{ m FC6{ m FC4 Fp[2]} Fi}}


 S4235C1 ::~S4235C1(){ note_dtor("S4235C1", this);}
void  S4235C1 ::v1(){vfunc_called(this, "_ZN7S4235C12v1Ev");}
void  S4235C1 ::v2(){vfunc_called(this, "_ZN7S4235C12v2Ev");}
void  S4235C1 ::v3(){vfunc_called(this, "_ZN7S4235C12v3Ev");}
void  S4235C1 ::v4(){vfunc_called(this, "_ZN7S4235C12v4Ev");}
void  S4235C1 ::v5(){vfunc_called(this, "_ZN7S4235C12v5Ev");}
void  S4235C1 ::v6(){vfunc_called(this, "_ZN7S4235C12v6Ev");}
void  S4235C1 ::v7(){vfunc_called(this, "_ZN7S4235C12v7Ev");}
void  S4235C1 ::v8(){vfunc_called(this, "_ZN7S4235C12v8Ev");}
void  S4235C1 ::v9(){vfunc_called(this, "_ZN7S4235C12v9Ev");}
void  S4235C1 ::v10(){vfunc_called(this, "_ZN7S4235C13v10Ev");}
S4235C1 ::S4235C1(){ note_ctor("S4235C1", this);} // tgen

static void Test_S4235C1()
{
  extern Class_Descriptor cd_S4235C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[9];
    init_test(&cd_S4235C1, buf);
    S4235C1 *dp, &lv = *(dp=new (buf) S4235C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S4235C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4235C1)");
    check_base_class_offset(lv, (S4235C3_nt*)(S4235C2_nt*), 0, "S4235C1");
    check_base_class_offset(lv, (S4235C2_nt*), 0, "S4235C1");
    check_field_offset(lv, s4235c1f0, ABISELECT(8,4), "S4235C1.s4235c1f0");
    check_field_offset(lv, s4235c1f1, ABISELECT(24,12), "S4235C1.s4235c1f1");
    test_class_info(&lv, &cd_S4235C1);
    dp->~S4235C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4235C1(Test_S4235C1, "S4235C1", ABISELECT(64,32));

#else // __cplusplus

extern void _ZN7S4235C1C1Ev();
extern void _ZN7S4235C1D1Ev();
Name_Map name_map_S4235C1[] = {
  NSPAIR(_ZN7S4235C1C1Ev),
  NSPAIR(_ZN7S4235C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4235C3_nt;
extern VTBL_ENTRY _ZTI10S4235C3_nt[];
extern  VTBL_ENTRY _ZTV10S4235C3_nt[];
extern Class_Descriptor cd_S4235C2_nt;
extern VTBL_ENTRY _ZTI10S4235C2_nt[];
extern  VTBL_ENTRY _ZTV10S4235C2_nt[];
static Base_Class bases_S4235C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4235C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4235C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4235C1[];
extern void _ZN7S4235C1D1Ev();
extern void _ZN7S4235C1D0Ev();
extern void _ZN10S4235C3_nt3v11Ev();
extern void _ZN10S4235C3_nt3v12Ev();
extern void _ZN10S4235C3_nt3v13Ev();
extern void _ZN10S4235C3_nt3v14Ev();
extern void _ZN10S4235C3_nt3v15Ev();
extern void _ZN10S4235C3_nt3v16Ev();
extern void _ZN10S4235C3_nt3v17Ev();
extern void _ZN10S4235C3_nt3v18Ev();
extern void _ZN10S4235C3_nt3v19Ev();
extern void _ZN7S4235C12v1Ev();
extern void _ZN7S4235C12v2Ev();
extern void _ZN7S4235C12v3Ev();
extern void _ZN7S4235C12v4Ev();
extern void _ZN7S4235C12v5Ev();
extern void _ZN7S4235C12v6Ev();
extern void _ZN7S4235C12v7Ev();
extern void _ZN7S4235C12v8Ev();
extern void _ZN7S4235C12v9Ev();
extern void _ZN7S4235C13v10Ev();
static  VTBL_ENTRY vtc_S4235C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4235C1[0]),
  (VTBL_ENTRY)&_ZN7S4235C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4235C1D0Ev,
  (VTBL_ENTRY)&_ZN10S4235C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S4235C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S4235C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S4235C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S4235C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S4235C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S4235C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S4235C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S4235C3_nt3v19Ev,
  (VTBL_ENTRY)&_ZN7S4235C12v1Ev,
  (VTBL_ENTRY)&_ZN7S4235C12v2Ev,
  (VTBL_ENTRY)&_ZN7S4235C12v3Ev,
  (VTBL_ENTRY)&_ZN7S4235C12v4Ev,
  (VTBL_ENTRY)&_ZN7S4235C12v5Ev,
  (VTBL_ENTRY)&_ZN7S4235C12v6Ev,
  (VTBL_ENTRY)&_ZN7S4235C12v7Ev,
  (VTBL_ENTRY)&_ZN7S4235C12v8Ev,
  (VTBL_ENTRY)&_ZN7S4235C12v9Ev,
  (VTBL_ENTRY)&_ZN7S4235C13v10Ev,
};
extern VTBL_ENTRY _ZTI7S4235C1[];
extern  VTBL_ENTRY _ZTV7S4235C1[];
Class_Descriptor cd_S4235C1 = {  "S4235C1", // class name
  bases_S4235C1, 2,
  &(vtc_S4235C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,32), // object size
  NSPAIRA(_ZTI7S4235C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4235C1),23, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9724C2  {
  ::S18423C15_nt s9724c2f0;
  int s9724c2f1[2];
  char s9724c2f2;
  virtual  ~S9724C2(); // _ZN7S9724C2D1Ev
  virtual void  v4(); // _ZN7S9724C22v4Ev
  virtual void  v5(); // _ZN7S9724C22v5Ev
  virtual void  v6(); // _ZN7S9724C22v6Ev
  S9724C2(); // tgen
};
//SIG(-1 S9724C2) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S9724C2 ::~S9724C2(){ note_dtor("S9724C2", this);}
void  S9724C2 ::v4(){vfunc_called(this, "_ZN7S9724C22v4Ev");}
void  S9724C2 ::v5(){vfunc_called(this, "_ZN7S9724C22v5Ev");}
void  S9724C2 ::v6(){vfunc_called(this, "_ZN7S9724C22v6Ev");}
S9724C2 ::S9724C2(){ note_ctor("S9724C2", this);} // tgen

static void Test_S9724C2()
{
  extern Class_Descriptor cd_S9724C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S9724C2, buf);
    S9724C2 *dp, &lv = *(dp=new (buf) S9724C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S9724C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9724C2)");
    check_field_offset(lv, s9724c2f0, ABISELECT(8,4), "S9724C2.s9724c2f0");
    check_field_offset(lv, s9724c2f1, ABISELECT(24,16), "S9724C2.s9724c2f1");
    check_field_offset(lv, s9724c2f2, ABISELECT(32,24), "S9724C2.s9724c2f2");
    test_class_info(&lv, &cd_S9724C2);
    dp->~S9724C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9724C2(Test_S9724C2, "S9724C2", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S9724C2C1Ev();
extern void _ZN7S9724C2D1Ev();
Name_Map name_map_S9724C2[] = {
  NSPAIR(_ZN7S9724C2C1Ev),
  NSPAIR(_ZN7S9724C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9724C2[];
extern void _ZN7S9724C2D1Ev();
extern void _ZN7S9724C2D0Ev();
extern void _ZN7S9724C22v4Ev();
extern void _ZN7S9724C22v5Ev();
extern void _ZN7S9724C22v6Ev();
static  VTBL_ENTRY vtc_S9724C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9724C2[0]),
  (VTBL_ENTRY)&_ZN7S9724C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9724C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9724C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9724C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9724C22v6Ev,
};
extern VTBL_ENTRY _ZTI7S9724C2[];
extern  VTBL_ENTRY _ZTV7S9724C2[];
Class_Descriptor cd_S9724C2 = {  "S9724C2", // class name
  0,0,//no base classes
  &(vtc_S9724C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S9724C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9724C2),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9724C5_nt  {
  __tsi64 s9724c5f0;
};
//SIG(-1 S9724C5_nt) C1{ FL}



//skip512 S9724C5_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9724C7_nt  {
  __tsi64 s9724c7f0[4];
};
//SIG(-1 S9724C7_nt) C1{ FL[4]}



//skip512 S9724C7_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9724C1  : S9724C2 {
  void *s9724c1f0[3];
  char s9724c1f1[2];
  void *s9724c1f2[2];
  char s9724c1f3;
  int s9724c1f4[2];
  __tsi64 s9724c1f5[3];
  char s9724c1f6;
  ::S9724C5_nt s9724c1f7;
  ::S9724C5_nt s9724c1f8;
  ::S17556C4_nt s9724c1f9;
  ::S17556C4_nt s9724c1f10;
  ::S9724C7_nt s9724c1f11;
  virtual  ~S9724C1(); // _ZN7S9724C1D1Ev
  virtual void  v1(); // _ZN7S9724C12v1Ev
  virtual void  v2(); // _ZN7S9724C12v2Ev
  virtual void  v3(); // _ZN7S9724C12v3Ev
  S9724C1(); // tgen
};
//SIG(1 S9724C1) C1{ BC2{ vd v4 v5 v6 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} vd v1 v2 v3 Fp[3] Fc[2] Fp[2] Fc Fi[2] FL[3] Fc FC5{ FL} FC5 FC6{ FL[4]} FC6 FC7{ FL[4]}}


 S9724C1 ::~S9724C1(){ note_dtor("S9724C1", this);}
void  S9724C1 ::v1(){vfunc_called(this, "_ZN7S9724C12v1Ev");}
void  S9724C1 ::v2(){vfunc_called(this, "_ZN7S9724C12v2Ev");}
void  S9724C1 ::v3(){vfunc_called(this, "_ZN7S9724C12v3Ev");}
S9724C1 ::S9724C1(){ note_ctor("S9724C1", this);} // tgen

static void Test_S9724C1()
{
  extern Class_Descriptor cd_S9724C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(32,52)];
    init_test(&cd_S9724C1, buf);
    S9724C1 *dp, &lv = *(dp=new (buf) S9724C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(248,204), "sizeof(S9724C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9724C1)");
    check_base_class_offset(lv, (S9724C2*), 0, "S9724C1");
    check_field_offset(lv, s9724c1f0, ABISELECT(40,28), "S9724C1.s9724c1f0");
    check_field_offset(lv, s9724c1f1, ABISELECT(64,40), "S9724C1.s9724c1f1");
    check_field_offset(lv, s9724c1f2, ABISELECT(72,44), "S9724C1.s9724c1f2");
    check_field_offset(lv, s9724c1f3, ABISELECT(88,52), "S9724C1.s9724c1f3");
    check_field_offset(lv, s9724c1f4, ABISELECT(92,56), "S9724C1.s9724c1f4");
    check_field_offset(lv, s9724c1f5, ABISELECT(104,64), "S9724C1.s9724c1f5");
    check_field_offset(lv, s9724c1f6, ABISELECT(128,88), "S9724C1.s9724c1f6");
    check_field_offset(lv, s9724c1f7, ABISELECT(136,92), "S9724C1.s9724c1f7");
    check_field_offset(lv, s9724c1f8, ABISELECT(144,100), "S9724C1.s9724c1f8");
    check_field_offset(lv, s9724c1f9, ABISELECT(152,108), "S9724C1.s9724c1f9");
    check_field_offset(lv, s9724c1f10, ABISELECT(184,140), "S9724C1.s9724c1f10");
    check_field_offset(lv, s9724c1f11, ABISELECT(216,172), "S9724C1.s9724c1f11");
    test_class_info(&lv, &cd_S9724C1);
    dp->~S9724C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9724C1(Test_S9724C1, "S9724C1", ABISELECT(248,204));

#else // __cplusplus

extern void _ZN7S9724C1C1Ev();
extern void _ZN7S9724C1D1Ev();
Name_Map name_map_S9724C1[] = {
  NSPAIR(_ZN7S9724C1C1Ev),
  NSPAIR(_ZN7S9724C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9724C2;
extern VTBL_ENTRY _ZTI7S9724C2[];
extern  VTBL_ENTRY _ZTV7S9724C2[];
static Base_Class bases_S9724C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9724C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9724C1[];
extern void _ZN7S9724C1D1Ev();
extern void _ZN7S9724C1D0Ev();
extern void _ZN7S9724C22v4Ev();
extern void _ZN7S9724C22v5Ev();
extern void _ZN7S9724C22v6Ev();
extern void _ZN7S9724C12v1Ev();
extern void _ZN7S9724C12v2Ev();
extern void _ZN7S9724C12v3Ev();
static  VTBL_ENTRY vtc_S9724C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9724C1[0]),
  (VTBL_ENTRY)&_ZN7S9724C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9724C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9724C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9724C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9724C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9724C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9724C12v2Ev,
  (VTBL_ENTRY)&_ZN7S9724C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S9724C1[];
extern  VTBL_ENTRY _ZTV7S9724C1[];
Class_Descriptor cd_S9724C1 = {  "S9724C1", // class name
  bases_S9724C1, 1,
  &(vtc_S9724C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(248,204), // object size
  NSPAIRA(_ZTI7S9724C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9724C1),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8580C2_nt  {
  int s8580c2f0;
  void *s8580c2f1[2];
  virtual  ~S8580C2_nt(); // _ZN10S8580C2_ntD1Ev
  virtual void  v13(); // _ZN10S8580C2_nt3v13Ev
  virtual void  v14(); // _ZN10S8580C2_nt3v14Ev
  virtual void  v15(); // _ZN10S8580C2_nt3v15Ev
  virtual void  v16(); // _ZN10S8580C2_nt3v16Ev
  virtual void  v17(); // _ZN10S8580C2_nt3v17Ev
  virtual void  v18(); // _ZN10S8580C2_nt3v18Ev
  virtual void  v19(); // _ZN10S8580C2_nt3v19Ev
  virtual void  v20(); // _ZN10S8580C2_nt3v20Ev
  virtual void  v21(); // _ZN10S8580C2_nt3v21Ev
  virtual void  v22(); // _ZN10S8580C2_nt3v22Ev
  virtual void  v23(); // _ZN10S8580C2_nt3v23Ev
  S8580C2_nt(); // tgen
};
//SIG(-1 S8580C2_nt) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 Fi Fp[2]}


 S8580C2_nt ::~S8580C2_nt(){ note_dtor("S8580C2_nt", this);}
void  S8580C2_nt ::v13(){vfunc_called(this, "_ZN10S8580C2_nt3v13Ev");}
void  S8580C2_nt ::v14(){vfunc_called(this, "_ZN10S8580C2_nt3v14Ev");}
void  S8580C2_nt ::v15(){vfunc_called(this, "_ZN10S8580C2_nt3v15Ev");}
void  S8580C2_nt ::v16(){vfunc_called(this, "_ZN10S8580C2_nt3v16Ev");}
void  S8580C2_nt ::v17(){vfunc_called(this, "_ZN10S8580C2_nt3v17Ev");}
void  S8580C2_nt ::v18(){vfunc_called(this, "_ZN10S8580C2_nt3v18Ev");}
void  S8580C2_nt ::v19(){vfunc_called(this, "_ZN10S8580C2_nt3v19Ev");}
void  S8580C2_nt ::v20(){vfunc_called(this, "_ZN10S8580C2_nt3v20Ev");}
void  S8580C2_nt ::v21(){vfunc_called(this, "_ZN10S8580C2_nt3v21Ev");}
void  S8580C2_nt ::v22(){vfunc_called(this, "_ZN10S8580C2_nt3v22Ev");}
void  S8580C2_nt ::v23(){vfunc_called(this, "_ZN10S8580C2_nt3v23Ev");}
S8580C2_nt ::S8580C2_nt(){ note_ctor("S8580C2_nt", this);} // tgen

//skip512 S8580C2_nt

#else // __cplusplus

extern void _ZN10S8580C2_ntC1Ev();
extern void _ZN10S8580C2_ntD1Ev();
Name_Map name_map_S8580C2_nt[] = {
  NSPAIR(_ZN10S8580C2_ntC1Ev),
  NSPAIR(_ZN10S8580C2_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S8580C2_nt[];
extern void _ZN10S8580C2_ntD1Ev();
extern void _ZN10S8580C2_ntD0Ev();
extern void _ZN10S8580C2_nt3v13Ev();
extern void _ZN10S8580C2_nt3v14Ev();
extern void _ZN10S8580C2_nt3v15Ev();
extern void _ZN10S8580C2_nt3v16Ev();
extern void _ZN10S8580C2_nt3v17Ev();
extern void _ZN10S8580C2_nt3v18Ev();
extern void _ZN10S8580C2_nt3v19Ev();
extern void _ZN10S8580C2_nt3v20Ev();
extern void _ZN10S8580C2_nt3v21Ev();
extern void _ZN10S8580C2_nt3v22Ev();
extern void _ZN10S8580C2_nt3v23Ev();
static  VTBL_ENTRY vtc_S8580C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S8580C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S8580C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S8580C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S8580C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S8580C2_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S8580C2_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S8580C2_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S8580C2_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S8580C2_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S8580C2_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S8580C2_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S8580C2_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S8580C2_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S8580C2_nt3v23Ev,
};
extern VTBL_ENTRY _ZTI10S8580C2_nt[];
VTBL_ENTRY *P__ZTI10S8580C2_nt = _ZTI10S8580C2_nt; 
extern  VTBL_ENTRY _ZTV10S8580C2_nt[];
Class_Descriptor cd_S8580C2_nt = {  "S8580C2_nt", // class name
  0,0,//no base classes
  &(vtc_S8580C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI10S8580C2_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S8580C2_nt),15, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8580C1  : S8580C2_nt {
  void *s8580c1f0;
  int s8580c1f1[3];
  char s8580c1f2;
  ::S9208C7_nt s8580c1f3;
  virtual  ~S8580C1(); // _ZN7S8580C1D1Ev
  virtual void  v1(); // _ZN7S8580C12v1Ev
  virtual void  v2(); // _ZN7S8580C12v2Ev
  virtual void  v3(); // _ZN7S8580C12v3Ev
  virtual void  v4(); // _ZN7S8580C12v4Ev
  virtual void  v5(); // _ZN7S8580C12v5Ev
  virtual void  v6(); // _ZN7S8580C12v6Ev
  virtual void  v7(); // _ZN7S8580C12v7Ev
  virtual void  v8(); // _ZN7S8580C12v8Ev
  virtual void  v9(); // _ZN7S8580C12v9Ev
  virtual void  v10(); // _ZN7S8580C13v10Ev
  virtual void  v11(); // _ZN7S8580C13v11Ev
  virtual void  v12(); // _ZN7S8580C13v12Ev
  S8580C1(); // tgen
};
//SIG(1 S8580C1) C1{ BC2{ vd v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 Fi Fp[2]} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 Fp Fi[3] Fc FC3{ Fp Fi[3]}}


 S8580C1 ::~S8580C1(){ note_dtor("S8580C1", this);}
void  S8580C1 ::v1(){vfunc_called(this, "_ZN7S8580C12v1Ev");}
void  S8580C1 ::v2(){vfunc_called(this, "_ZN7S8580C12v2Ev");}
void  S8580C1 ::v3(){vfunc_called(this, "_ZN7S8580C12v3Ev");}
void  S8580C1 ::v4(){vfunc_called(this, "_ZN7S8580C12v4Ev");}
void  S8580C1 ::v5(){vfunc_called(this, "_ZN7S8580C12v5Ev");}
void  S8580C1 ::v6(){vfunc_called(this, "_ZN7S8580C12v6Ev");}
void  S8580C1 ::v7(){vfunc_called(this, "_ZN7S8580C12v7Ev");}
void  S8580C1 ::v8(){vfunc_called(this, "_ZN7S8580C12v8Ev");}
void  S8580C1 ::v9(){vfunc_called(this, "_ZN7S8580C12v9Ev");}
void  S8580C1 ::v10(){vfunc_called(this, "_ZN7S8580C13v10Ev");}
void  S8580C1 ::v11(){vfunc_called(this, "_ZN7S8580C13v11Ev");}
void  S8580C1 ::v12(){vfunc_called(this, "_ZN7S8580C13v12Ev");}
S8580C1 ::S8580C1(){ note_ctor("S8580C1", this);} // tgen

static void Test_S8580C1()
{
  extern Class_Descriptor cd_S8580C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,14)];
    init_test(&cd_S8580C1, buf);
    S8580C1 *dp, &lv = *(dp=new (buf) S8580C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,52), "sizeof(S8580C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8580C1)");
    check_base_class_offset(lv, (S8580C2_nt*), 0, "S8580C1");
    check_field_offset(lv, s8580c1f0, ABISELECT(32,16), "S8580C1.s8580c1f0");
    check_field_offset(lv, s8580c1f1, ABISELECT(40,20), "S8580C1.s8580c1f1");
    check_field_offset(lv, s8580c1f2, ABISELECT(52,32), "S8580C1.s8580c1f2");
    check_field_offset(lv, s8580c1f3, ABISELECT(56,36), "S8580C1.s8580c1f3");
    test_class_info(&lv, &cd_S8580C1);
    dp->~S8580C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8580C1(Test_S8580C1, "S8580C1", ABISELECT(80,52));

#else // __cplusplus

extern void _ZN7S8580C1C1Ev();
extern void _ZN7S8580C1D1Ev();
Name_Map name_map_S8580C1[] = {
  NSPAIR(_ZN7S8580C1C1Ev),
  NSPAIR(_ZN7S8580C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8580C2_nt;
extern VTBL_ENTRY _ZTI10S8580C2_nt[];
extern  VTBL_ENTRY _ZTV10S8580C2_nt[];
static Base_Class bases_S8580C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8580C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8580C1[];
extern void _ZN7S8580C1D1Ev();
extern void _ZN7S8580C1D0Ev();
extern void _ZN10S8580C2_nt3v13Ev();
extern void _ZN10S8580C2_nt3v14Ev();
extern void _ZN10S8580C2_nt3v15Ev();
extern void _ZN10S8580C2_nt3v16Ev();
extern void _ZN10S8580C2_nt3v17Ev();
extern void _ZN10S8580C2_nt3v18Ev();
extern void _ZN10S8580C2_nt3v19Ev();
extern void _ZN10S8580C2_nt3v20Ev();
extern void _ZN10S8580C2_nt3v21Ev();
extern void _ZN10S8580C2_nt3v22Ev();
extern void _ZN10S8580C2_nt3v23Ev();
extern void _ZN7S8580C12v1Ev();
extern void _ZN7S8580C12v2Ev();
extern void _ZN7S8580C12v3Ev();
extern void _ZN7S8580C12v4Ev();
extern void _ZN7S8580C12v5Ev();
extern void _ZN7S8580C12v6Ev();
extern void _ZN7S8580C12v7Ev();
extern void _ZN7S8580C12v8Ev();
extern void _ZN7S8580C12v9Ev();
extern void _ZN7S8580C13v10Ev();
extern void _ZN7S8580C13v11Ev();
extern void _ZN7S8580C13v12Ev();
static  VTBL_ENTRY vtc_S8580C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8580C1[0]),
  (VTBL_ENTRY)&_ZN7S8580C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8580C1D0Ev,
  (VTBL_ENTRY)&_ZN10S8580C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S8580C2_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S8580C2_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S8580C2_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S8580C2_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S8580C2_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S8580C2_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S8580C2_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S8580C2_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S8580C2_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S8580C2_nt3v23Ev,
  (VTBL_ENTRY)&_ZN7S8580C12v1Ev,
  (VTBL_ENTRY)&_ZN7S8580C12v2Ev,
  (VTBL_ENTRY)&_ZN7S8580C12v3Ev,
  (VTBL_ENTRY)&_ZN7S8580C12v4Ev,
  (VTBL_ENTRY)&_ZN7S8580C12v5Ev,
  (VTBL_ENTRY)&_ZN7S8580C12v6Ev,
  (VTBL_ENTRY)&_ZN7S8580C12v7Ev,
  (VTBL_ENTRY)&_ZN7S8580C12v8Ev,
  (VTBL_ENTRY)&_ZN7S8580C12v9Ev,
  (VTBL_ENTRY)&_ZN7S8580C13v10Ev,
  (VTBL_ENTRY)&_ZN7S8580C13v11Ev,
  (VTBL_ENTRY)&_ZN7S8580C13v12Ev,
};
extern VTBL_ENTRY _ZTI7S8580C1[];
extern  VTBL_ENTRY _ZTV7S8580C1[];
Class_Descriptor cd_S8580C1 = {  "S8580C1", // class name
  bases_S8580C1, 1,
  &(vtc_S8580C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,52), // object size
  NSPAIRA(_ZTI7S8580C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8580C1),27, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8565C2  {
  virtual  ~S8565C2(); // _ZN7S8565C2D1Ev
  virtual void  v12(); // _ZN7S8565C23v12Ev
  virtual void  v13(); // _ZN7S8565C23v13Ev
  virtual void  v14(); // _ZN7S8565C23v14Ev
  virtual void  v15(); // _ZN7S8565C23v15Ev
  virtual void  v16(); // _ZN7S8565C23v16Ev
  virtual void  v17(); // _ZN7S8565C23v17Ev
  virtual void  v18(); // _ZN7S8565C23v18Ev
  virtual void  v19(); // _ZN7S8565C23v19Ev
  virtual void  v20(); // _ZN7S8565C23v20Ev
  virtual void  v21(); // _ZN7S8565C23v21Ev
  virtual void  v22(); // _ZN7S8565C23v22Ev
  virtual void  v23(); // _ZN7S8565C23v23Ev
  S8565C2(); // tgen
};
//SIG(-1 S8565C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12}


 S8565C2 ::~S8565C2(){ note_dtor("S8565C2", this);}
void  S8565C2 ::v12(){vfunc_called(this, "_ZN7S8565C23v12Ev");}
void  S8565C2 ::v13(){vfunc_called(this, "_ZN7S8565C23v13Ev");}
void  S8565C2 ::v14(){vfunc_called(this, "_ZN7S8565C23v14Ev");}
void  S8565C2 ::v15(){vfunc_called(this, "_ZN7S8565C23v15Ev");}
void  S8565C2 ::v16(){vfunc_called(this, "_ZN7S8565C23v16Ev");}
void  S8565C2 ::v17(){vfunc_called(this, "_ZN7S8565C23v17Ev");}
void  S8565C2 ::v18(){vfunc_called(this, "_ZN7S8565C23v18Ev");}
void  S8565C2 ::v19(){vfunc_called(this, "_ZN7S8565C23v19Ev");}
void  S8565C2 ::v20(){vfunc_called(this, "_ZN7S8565C23v20Ev");}
void  S8565C2 ::v21(){vfunc_called(this, "_ZN7S8565C23v21Ev");}
void  S8565C2 ::v22(){vfunc_called(this, "_ZN7S8565C23v22Ev");}
void  S8565C2 ::v23(){vfunc_called(this, "_ZN7S8565C23v23Ev");}
S8565C2 ::S8565C2(){ note_ctor("S8565C2", this);} // tgen

static void Test_S8565C2()
{
  extern Class_Descriptor cd_S8565C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S8565C2, buf);
    S8565C2 *dp, &lv = *(dp=new (buf) S8565C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S8565C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8565C2)");
    test_class_info(&lv, &cd_S8565C2);
    dp->~S8565C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8565C2(Test_S8565C2, "S8565C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S8565C2C1Ev();
extern void _ZN7S8565C2D1Ev();
Name_Map name_map_S8565C2[] = {
  NSPAIR(_ZN7S8565C2C1Ev),
  NSPAIR(_ZN7S8565C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8565C2[];
extern void _ZN7S8565C2D1Ev();
extern void _ZN7S8565C2D0Ev();
extern void _ZN7S8565C23v12Ev();
extern void _ZN7S8565C23v13Ev();
extern void _ZN7S8565C23v14Ev();
extern void _ZN7S8565C23v15Ev();
extern void _ZN7S8565C23v16Ev();
extern void _ZN7S8565C23v17Ev();
extern void _ZN7S8565C23v18Ev();
extern void _ZN7S8565C23v19Ev();
extern void _ZN7S8565C23v20Ev();
extern void _ZN7S8565C23v21Ev();
extern void _ZN7S8565C23v22Ev();
extern void _ZN7S8565C23v23Ev();
static  VTBL_ENTRY vtc_S8565C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8565C2[0]),
  (VTBL_ENTRY)&_ZN7S8565C2D1Ev,
  (VTBL_ENTRY)&_ZN7S8565C2D0Ev,
  (VTBL_ENTRY)&_ZN7S8565C23v12Ev,
  (VTBL_ENTRY)&_ZN7S8565C23v13Ev,
  (VTBL_ENTRY)&_ZN7S8565C23v14Ev,
  (VTBL_ENTRY)&_ZN7S8565C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8565C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8565C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8565C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8565C23v19Ev,
  (VTBL_ENTRY)&_ZN7S8565C23v20Ev,
  (VTBL_ENTRY)&_ZN7S8565C23v21Ev,
  (VTBL_ENTRY)&_ZN7S8565C23v22Ev,
  (VTBL_ENTRY)&_ZN7S8565C23v23Ev,
};
extern VTBL_ENTRY _ZTI7S8565C2[];
extern  VTBL_ENTRY _ZTV7S8565C2[];
Class_Descriptor cd_S8565C2 = {  "S8565C2", // class name
  0,0,//no base classes
  &(vtc_S8565C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S8565C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8565C2),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8565C3_nt  {
  int s8565c3f0;
};
//SIG(-1 S8565C3_nt) C1{ Fi}



//skip512 S8565C3_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8565C1  : S8565C2 {
  void *s8565c1f0[20];
  ::S8565C3_nt s8565c1f1;
  char s8565c1f2[4];
  ::S7856C24 s8565c1f3;
  void *s8565c1f4[2];
  virtual  ~S8565C1(); // _ZN7S8565C1D1Ev
  virtual void  v1(); // _ZN7S8565C12v1Ev
  virtual void  v2(); // _ZN7S8565C12v2Ev
  virtual void  v3(); // _ZN7S8565C12v3Ev
  virtual void  v4(); // _ZN7S8565C12v4Ev
  virtual void  v5(); // _ZN7S8565C12v5Ev
  virtual void  v6(); // _ZN7S8565C12v6Ev
  virtual void  v7(); // _ZN7S8565C12v7Ev
  virtual void  v8(); // _ZN7S8565C12v8Ev
  virtual void  v9(); // _ZN7S8565C12v9Ev
  virtual void  v10(); // _ZN7S8565C13v10Ev
  virtual void  v11(); // _ZN7S8565C13v11Ev
  S8565C1(); // tgen
};
//SIG(1 S8565C1) C1{ BC2{ vd v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 Fp[20] FC3{ Fi} Fc[4] FC4{ m} Fp[2]}


 S8565C1 ::~S8565C1(){ note_dtor("S8565C1", this);}
void  S8565C1 ::v1(){vfunc_called(this, "_ZN7S8565C12v1Ev");}
void  S8565C1 ::v2(){vfunc_called(this, "_ZN7S8565C12v2Ev");}
void  S8565C1 ::v3(){vfunc_called(this, "_ZN7S8565C12v3Ev");}
void  S8565C1 ::v4(){vfunc_called(this, "_ZN7S8565C12v4Ev");}
void  S8565C1 ::v5(){vfunc_called(this, "_ZN7S8565C12v5Ev");}
void  S8565C1 ::v6(){vfunc_called(this, "_ZN7S8565C12v6Ev");}
void  S8565C1 ::v7(){vfunc_called(this, "_ZN7S8565C12v7Ev");}
void  S8565C1 ::v8(){vfunc_called(this, "_ZN7S8565C12v8Ev");}
void  S8565C1 ::v9(){vfunc_called(this, "_ZN7S8565C12v9Ev");}
void  S8565C1 ::v10(){vfunc_called(this, "_ZN7S8565C13v10Ev");}
void  S8565C1 ::v11(){vfunc_called(this, "_ZN7S8565C13v11Ev");}
S8565C1 ::S8565C1(){ note_ctor("S8565C1", this);} // tgen

static void Test_S8565C1()
{
  extern Class_Descriptor cd_S8565C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(26,27)];
    init_test(&cd_S8565C1, buf);
    S8565C1 *dp, &lv = *(dp=new (buf) S8565C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(200,104), "sizeof(S8565C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8565C1)");
    check_base_class_offset(lv, (S8565C2*), 0, "S8565C1");
    check_field_offset(lv, s8565c1f0, ABISELECT(8,4), "S8565C1.s8565c1f0");
    check_field_offset(lv, s8565c1f1, ABISELECT(168,84), "S8565C1.s8565c1f1");
    check_field_offset(lv, s8565c1f2, ABISELECT(172,88), "S8565C1.s8565c1f2");
    check_field_offset(lv, s8565c1f3, ABISELECT(176,92), "S8565C1.s8565c1f3");
    check_field_offset(lv, s8565c1f4, ABISELECT(184,96), "S8565C1.s8565c1f4");
    test_class_info(&lv, &cd_S8565C1);
    dp->~S8565C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8565C1(Test_S8565C1, "S8565C1", ABISELECT(200,104));

#else // __cplusplus

extern void _ZN7S8565C1C1Ev();
extern void _ZN7S8565C1D1Ev();
Name_Map name_map_S8565C1[] = {
  NSPAIR(_ZN7S8565C1C1Ev),
  NSPAIR(_ZN7S8565C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8565C2;
extern VTBL_ENTRY _ZTI7S8565C2[];
extern  VTBL_ENTRY _ZTV7S8565C2[];
static Base_Class bases_S8565C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8565C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8565C1[];
extern void _ZN7S8565C1D1Ev();
extern void _ZN7S8565C1D0Ev();
extern void _ZN7S8565C23v12Ev();
extern void _ZN7S8565C23v13Ev();
extern void _ZN7S8565C23v14Ev();
extern void _ZN7S8565C23v15Ev();
extern void _ZN7S8565C23v16Ev();
extern void _ZN7S8565C23v17Ev();
extern void _ZN7S8565C23v18Ev();
extern void _ZN7S8565C23v19Ev();
extern void _ZN7S8565C23v20Ev();
extern void _ZN7S8565C23v21Ev();
extern void _ZN7S8565C23v22Ev();
extern void _ZN7S8565C23v23Ev();
extern void _ZN7S8565C12v1Ev();
extern void _ZN7S8565C12v2Ev();
extern void _ZN7S8565C12v3Ev();
extern void _ZN7S8565C12v4Ev();
extern void _ZN7S8565C12v5Ev();
extern void _ZN7S8565C12v6Ev();
extern void _ZN7S8565C12v7Ev();
extern void _ZN7S8565C12v8Ev();
extern void _ZN7S8565C12v9Ev();
extern void _ZN7S8565C13v10Ev();
extern void _ZN7S8565C13v11Ev();
static  VTBL_ENTRY vtc_S8565C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8565C1[0]),
  (VTBL_ENTRY)&_ZN7S8565C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8565C1D0Ev,
  (VTBL_ENTRY)&_ZN7S8565C23v12Ev,
  (VTBL_ENTRY)&_ZN7S8565C23v13Ev,
  (VTBL_ENTRY)&_ZN7S8565C23v14Ev,
  (VTBL_ENTRY)&_ZN7S8565C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8565C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8565C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8565C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8565C23v19Ev,
  (VTBL_ENTRY)&_ZN7S8565C23v20Ev,
  (VTBL_ENTRY)&_ZN7S8565C23v21Ev,
  (VTBL_ENTRY)&_ZN7S8565C23v22Ev,
  (VTBL_ENTRY)&_ZN7S8565C23v23Ev,
  (VTBL_ENTRY)&_ZN7S8565C12v1Ev,
  (VTBL_ENTRY)&_ZN7S8565C12v2Ev,
  (VTBL_ENTRY)&_ZN7S8565C12v3Ev,
  (VTBL_ENTRY)&_ZN7S8565C12v4Ev,
  (VTBL_ENTRY)&_ZN7S8565C12v5Ev,
  (VTBL_ENTRY)&_ZN7S8565C12v6Ev,
  (VTBL_ENTRY)&_ZN7S8565C12v7Ev,
  (VTBL_ENTRY)&_ZN7S8565C12v8Ev,
  (VTBL_ENTRY)&_ZN7S8565C12v9Ev,
  (VTBL_ENTRY)&_ZN7S8565C13v10Ev,
  (VTBL_ENTRY)&_ZN7S8565C13v11Ev,
};
extern VTBL_ENTRY _ZTI7S8565C1[];
extern  VTBL_ENTRY _ZTV7S8565C1[];
Class_Descriptor cd_S8565C1 = {  "S8565C1", // class name
  bases_S8565C1, 1,
  &(vtc_S8565C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(200,104), // object size
  NSPAIRA(_ZTI7S8565C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8565C1),27, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8568C2  {
  virtual  ~S8568C2(); // _ZN7S8568C2D1Ev
  virtual void  v12(); // _ZN7S8568C23v12Ev
  virtual void  v13(); // _ZN7S8568C23v13Ev
  virtual void  v14(); // _ZN7S8568C23v14Ev
  virtual void  v15(); // _ZN7S8568C23v15Ev
  virtual void  v16(); // _ZN7S8568C23v16Ev
  virtual void  v17(); // _ZN7S8568C23v17Ev
  virtual void  v18(); // _ZN7S8568C23v18Ev
  virtual void  v19(); // _ZN7S8568C23v19Ev
  virtual void  v20(); // _ZN7S8568C23v20Ev
  virtual void  v21(); // _ZN7S8568C23v21Ev
  virtual void  v22(); // _ZN7S8568C23v22Ev
  virtual void  v23(); // _ZN7S8568C23v23Ev
  S8568C2(); // tgen
};
//SIG(-1 S8568C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12}


 S8568C2 ::~S8568C2(){ note_dtor("S8568C2", this);}
void  S8568C2 ::v12(){vfunc_called(this, "_ZN7S8568C23v12Ev");}
void  S8568C2 ::v13(){vfunc_called(this, "_ZN7S8568C23v13Ev");}
void  S8568C2 ::v14(){vfunc_called(this, "_ZN7S8568C23v14Ev");}
void  S8568C2 ::v15(){vfunc_called(this, "_ZN7S8568C23v15Ev");}
void  S8568C2 ::v16(){vfunc_called(this, "_ZN7S8568C23v16Ev");}
void  S8568C2 ::v17(){vfunc_called(this, "_ZN7S8568C23v17Ev");}
void  S8568C2 ::v18(){vfunc_called(this, "_ZN7S8568C23v18Ev");}
void  S8568C2 ::v19(){vfunc_called(this, "_ZN7S8568C23v19Ev");}
void  S8568C2 ::v20(){vfunc_called(this, "_ZN7S8568C23v20Ev");}
void  S8568C2 ::v21(){vfunc_called(this, "_ZN7S8568C23v21Ev");}
void  S8568C2 ::v22(){vfunc_called(this, "_ZN7S8568C23v22Ev");}
void  S8568C2 ::v23(){vfunc_called(this, "_ZN7S8568C23v23Ev");}
S8568C2 ::S8568C2(){ note_ctor("S8568C2", this);} // tgen

static void Test_S8568C2()
{
  extern Class_Descriptor cd_S8568C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S8568C2, buf);
    S8568C2 *dp, &lv = *(dp=new (buf) S8568C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S8568C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8568C2)");
    test_class_info(&lv, &cd_S8568C2);
    dp->~S8568C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8568C2(Test_S8568C2, "S8568C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S8568C2C1Ev();
extern void _ZN7S8568C2D1Ev();
Name_Map name_map_S8568C2[] = {
  NSPAIR(_ZN7S8568C2C1Ev),
  NSPAIR(_ZN7S8568C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8568C2[];
extern void _ZN7S8568C2D1Ev();
extern void _ZN7S8568C2D0Ev();
extern void _ZN7S8568C23v12Ev();
extern void _ZN7S8568C23v13Ev();
extern void _ZN7S8568C23v14Ev();
extern void _ZN7S8568C23v15Ev();
extern void _ZN7S8568C23v16Ev();
extern void _ZN7S8568C23v17Ev();
extern void _ZN7S8568C23v18Ev();
extern void _ZN7S8568C23v19Ev();
extern void _ZN7S8568C23v20Ev();
extern void _ZN7S8568C23v21Ev();
extern void _ZN7S8568C23v22Ev();
extern void _ZN7S8568C23v23Ev();
static  VTBL_ENTRY vtc_S8568C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8568C2[0]),
  (VTBL_ENTRY)&_ZN7S8568C2D1Ev,
  (VTBL_ENTRY)&_ZN7S8568C2D0Ev,
  (VTBL_ENTRY)&_ZN7S8568C23v12Ev,
  (VTBL_ENTRY)&_ZN7S8568C23v13Ev,
  (VTBL_ENTRY)&_ZN7S8568C23v14Ev,
  (VTBL_ENTRY)&_ZN7S8568C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8568C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8568C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8568C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8568C23v19Ev,
  (VTBL_ENTRY)&_ZN7S8568C23v20Ev,
  (VTBL_ENTRY)&_ZN7S8568C23v21Ev,
  (VTBL_ENTRY)&_ZN7S8568C23v22Ev,
  (VTBL_ENTRY)&_ZN7S8568C23v23Ev,
};
extern VTBL_ENTRY _ZTI7S8568C2[];
extern  VTBL_ENTRY _ZTV7S8568C2[];
Class_Descriptor cd_S8568C2 = {  "S8568C2", // class name
  0,0,//no base classes
  &(vtc_S8568C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S8568C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8568C2),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8568C3_nt  {
  int s8568c3f0[2];
};
//SIG(-1 S8568C3_nt) C1{ Fi[2]}



//skip512 S8568C3_nt

#else // __cplusplus

Class_Descriptor cd_S8568C3_nt = {  "S8568C3_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  8, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8568C1  : S8568C2 {
  void *s8568c1f0[9];
  ::S8568C3_nt s8568c1f1;
  void *s8568c1f2;
  ::S7856C24 s8568c1f3;
  void *s8568c1f4[3];
  virtual  ~S8568C1(); // _ZN7S8568C1D1Ev
  virtual void  v1(); // _ZN7S8568C12v1Ev
  virtual void  v2(); // _ZN7S8568C12v2Ev
  virtual void  v3(); // _ZN7S8568C12v3Ev
  virtual void  v4(); // _ZN7S8568C12v4Ev
  virtual void  v5(); // _ZN7S8568C12v5Ev
  virtual void  v6(); // _ZN7S8568C12v6Ev
  virtual void  v7(); // _ZN7S8568C12v7Ev
  virtual void  v8(); // _ZN7S8568C12v8Ev
  virtual void  v9(); // _ZN7S8568C12v9Ev
  virtual void  v10(); // _ZN7S8568C13v10Ev
  virtual void  v11(); // _ZN7S8568C13v11Ev
  S8568C1(); // tgen
};
//SIG(1 S8568C1) C1{ BC2{ vd v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 Fp[9] FC3{ Fi[2]} Fp FC4{ m} Fp[3]}


 S8568C1 ::~S8568C1(){ note_dtor("S8568C1", this);}
void  S8568C1 ::v1(){vfunc_called(this, "_ZN7S8568C12v1Ev");}
void  S8568C1 ::v2(){vfunc_called(this, "_ZN7S8568C12v2Ev");}
void  S8568C1 ::v3(){vfunc_called(this, "_ZN7S8568C12v3Ev");}
void  S8568C1 ::v4(){vfunc_called(this, "_ZN7S8568C12v4Ev");}
void  S8568C1 ::v5(){vfunc_called(this, "_ZN7S8568C12v5Ev");}
void  S8568C1 ::v6(){vfunc_called(this, "_ZN7S8568C12v6Ev");}
void  S8568C1 ::v7(){vfunc_called(this, "_ZN7S8568C12v7Ev");}
void  S8568C1 ::v8(){vfunc_called(this, "_ZN7S8568C12v8Ev");}
void  S8568C1 ::v9(){vfunc_called(this, "_ZN7S8568C12v9Ev");}
void  S8568C1 ::v10(){vfunc_called(this, "_ZN7S8568C13v10Ev");}
void  S8568C1 ::v11(){vfunc_called(this, "_ZN7S8568C13v11Ev");}
S8568C1 ::S8568C1(){ note_ctor("S8568C1", this);} // tgen

static void Test_S8568C1()
{
  extern Class_Descriptor cd_S8568C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,18)];
    init_test(&cd_S8568C1, buf);
    S8568C1 *dp, &lv = *(dp=new (buf) S8568C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,68), "sizeof(S8568C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8568C1)");
    check_base_class_offset(lv, (S8568C2*), 0, "S8568C1");
    check_field_offset(lv, s8568c1f0, ABISELECT(8,4), "S8568C1.s8568c1f0");
    check_field_offset(lv, s8568c1f1, ABISELECT(80,40), "S8568C1.s8568c1f1");
    check_field_offset(lv, s8568c1f2, ABISELECT(88,48), "S8568C1.s8568c1f2");
    check_field_offset(lv, s8568c1f3, ABISELECT(96,52), "S8568C1.s8568c1f3");
    check_field_offset(lv, s8568c1f4, ABISELECT(104,56), "S8568C1.s8568c1f4");
    test_class_info(&lv, &cd_S8568C1);
    dp->~S8568C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8568C1(Test_S8568C1, "S8568C1", ABISELECT(128,68));

#else // __cplusplus

extern void _ZN7S8568C1C1Ev();
extern void _ZN7S8568C1D1Ev();
Name_Map name_map_S8568C1[] = {
  NSPAIR(_ZN7S8568C1C1Ev),
  NSPAIR(_ZN7S8568C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8568C2;
extern VTBL_ENTRY _ZTI7S8568C2[];
extern  VTBL_ENTRY _ZTV7S8568C2[];
static Base_Class bases_S8568C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8568C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8568C1[];
extern void _ZN7S8568C1D1Ev();
extern void _ZN7S8568C1D0Ev();
extern void _ZN7S8568C23v12Ev();
extern void _ZN7S8568C23v13Ev();
extern void _ZN7S8568C23v14Ev();
extern void _ZN7S8568C23v15Ev();
extern void _ZN7S8568C23v16Ev();
extern void _ZN7S8568C23v17Ev();
extern void _ZN7S8568C23v18Ev();
extern void _ZN7S8568C23v19Ev();
extern void _ZN7S8568C23v20Ev();
extern void _ZN7S8568C23v21Ev();
extern void _ZN7S8568C23v22Ev();
extern void _ZN7S8568C23v23Ev();
extern void _ZN7S8568C12v1Ev();
extern void _ZN7S8568C12v2Ev();
extern void _ZN7S8568C12v3Ev();
extern void _ZN7S8568C12v4Ev();
extern void _ZN7S8568C12v5Ev();
extern void _ZN7S8568C12v6Ev();
extern void _ZN7S8568C12v7Ev();
extern void _ZN7S8568C12v8Ev();
extern void _ZN7S8568C12v9Ev();
extern void _ZN7S8568C13v10Ev();
extern void _ZN7S8568C13v11Ev();
static  VTBL_ENTRY vtc_S8568C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8568C1[0]),
  (VTBL_ENTRY)&_ZN7S8568C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8568C1D0Ev,
  (VTBL_ENTRY)&_ZN7S8568C23v12Ev,
  (VTBL_ENTRY)&_ZN7S8568C23v13Ev,
  (VTBL_ENTRY)&_ZN7S8568C23v14Ev,
  (VTBL_ENTRY)&_ZN7S8568C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8568C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8568C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8568C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8568C23v19Ev,
  (VTBL_ENTRY)&_ZN7S8568C23v20Ev,
  (VTBL_ENTRY)&_ZN7S8568C23v21Ev,
  (VTBL_ENTRY)&_ZN7S8568C23v22Ev,
  (VTBL_ENTRY)&_ZN7S8568C23v23Ev,
  (VTBL_ENTRY)&_ZN7S8568C12v1Ev,
  (VTBL_ENTRY)&_ZN7S8568C12v2Ev,
  (VTBL_ENTRY)&_ZN7S8568C12v3Ev,
  (VTBL_ENTRY)&_ZN7S8568C12v4Ev,
  (VTBL_ENTRY)&_ZN7S8568C12v5Ev,
  (VTBL_ENTRY)&_ZN7S8568C12v6Ev,
  (VTBL_ENTRY)&_ZN7S8568C12v7Ev,
  (VTBL_ENTRY)&_ZN7S8568C12v8Ev,
  (VTBL_ENTRY)&_ZN7S8568C12v9Ev,
  (VTBL_ENTRY)&_ZN7S8568C13v10Ev,
  (VTBL_ENTRY)&_ZN7S8568C13v11Ev,
};
extern VTBL_ENTRY _ZTI7S8568C1[];
extern  VTBL_ENTRY _ZTV7S8568C1[];
Class_Descriptor cd_S8568C1 = {  "S8568C1", // class name
  bases_S8568C1, 1,
  &(vtc_S8568C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(128,68), // object size
  NSPAIRA(_ZTI7S8568C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8568C1),27, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8564C2  {
  virtual  ~S8564C2(); // _ZN7S8564C2D1Ev
  virtual void  v12(); // _ZN7S8564C23v12Ev
  virtual void  v13(); // _ZN7S8564C23v13Ev
  virtual void  v14(); // _ZN7S8564C23v14Ev
  virtual void  v15(); // _ZN7S8564C23v15Ev
  virtual void  v16(); // _ZN7S8564C23v16Ev
  virtual void  v17(); // _ZN7S8564C23v17Ev
  virtual void  v18(); // _ZN7S8564C23v18Ev
  virtual void  v19(); // _ZN7S8564C23v19Ev
  virtual void  v20(); // _ZN7S8564C23v20Ev
  virtual void  v21(); // _ZN7S8564C23v21Ev
  virtual void  v22(); // _ZN7S8564C23v22Ev
  virtual void  v23(); // _ZN7S8564C23v23Ev
  S8564C2(); // tgen
};
//SIG(-1 S8564C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12}


 S8564C2 ::~S8564C2(){ note_dtor("S8564C2", this);}
void  S8564C2 ::v12(){vfunc_called(this, "_ZN7S8564C23v12Ev");}
void  S8564C2 ::v13(){vfunc_called(this, "_ZN7S8564C23v13Ev");}
void  S8564C2 ::v14(){vfunc_called(this, "_ZN7S8564C23v14Ev");}
void  S8564C2 ::v15(){vfunc_called(this, "_ZN7S8564C23v15Ev");}
void  S8564C2 ::v16(){vfunc_called(this, "_ZN7S8564C23v16Ev");}
void  S8564C2 ::v17(){vfunc_called(this, "_ZN7S8564C23v17Ev");}
void  S8564C2 ::v18(){vfunc_called(this, "_ZN7S8564C23v18Ev");}
void  S8564C2 ::v19(){vfunc_called(this, "_ZN7S8564C23v19Ev");}
void  S8564C2 ::v20(){vfunc_called(this, "_ZN7S8564C23v20Ev");}
void  S8564C2 ::v21(){vfunc_called(this, "_ZN7S8564C23v21Ev");}
void  S8564C2 ::v22(){vfunc_called(this, "_ZN7S8564C23v22Ev");}
void  S8564C2 ::v23(){vfunc_called(this, "_ZN7S8564C23v23Ev");}
S8564C2 ::S8564C2(){ note_ctor("S8564C2", this);} // tgen

static void Test_S8564C2()
{
  extern Class_Descriptor cd_S8564C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S8564C2, buf);
    S8564C2 *dp, &lv = *(dp=new (buf) S8564C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S8564C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8564C2)");
    test_class_info(&lv, &cd_S8564C2);
    dp->~S8564C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8564C2(Test_S8564C2, "S8564C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S8564C2C1Ev();
extern void _ZN7S8564C2D1Ev();
Name_Map name_map_S8564C2[] = {
  NSPAIR(_ZN7S8564C2C1Ev),
  NSPAIR(_ZN7S8564C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8564C2[];
extern void _ZN7S8564C2D1Ev();
extern void _ZN7S8564C2D0Ev();
extern void _ZN7S8564C23v12Ev();
extern void _ZN7S8564C23v13Ev();
extern void _ZN7S8564C23v14Ev();
extern void _ZN7S8564C23v15Ev();
extern void _ZN7S8564C23v16Ev();
extern void _ZN7S8564C23v17Ev();
extern void _ZN7S8564C23v18Ev();
extern void _ZN7S8564C23v19Ev();
extern void _ZN7S8564C23v20Ev();
extern void _ZN7S8564C23v21Ev();
extern void _ZN7S8564C23v22Ev();
extern void _ZN7S8564C23v23Ev();
static  VTBL_ENTRY vtc_S8564C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8564C2[0]),
  (VTBL_ENTRY)&_ZN7S8564C2D1Ev,
  (VTBL_ENTRY)&_ZN7S8564C2D0Ev,
  (VTBL_ENTRY)&_ZN7S8564C23v12Ev,
  (VTBL_ENTRY)&_ZN7S8564C23v13Ev,
  (VTBL_ENTRY)&_ZN7S8564C23v14Ev,
  (VTBL_ENTRY)&_ZN7S8564C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8564C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8564C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8564C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8564C23v19Ev,
  (VTBL_ENTRY)&_ZN7S8564C23v20Ev,
  (VTBL_ENTRY)&_ZN7S8564C23v21Ev,
  (VTBL_ENTRY)&_ZN7S8564C23v22Ev,
  (VTBL_ENTRY)&_ZN7S8564C23v23Ev,
};
extern VTBL_ENTRY _ZTI7S8564C2[];
extern  VTBL_ENTRY _ZTV7S8564C2[];
Class_Descriptor cd_S8564C2 = {  "S8564C2", // class name
  0,0,//no base classes
  &(vtc_S8564C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S8564C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8564C2),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8564C1  : S8564C2 {
  void *s8564c1f0[14];
  ::S8565C3_nt s8564c1f1;
  char s8564c1f2[3];
  ::S7856C24 s8564c1f3;
  void *s8564c1f4;
  virtual  ~S8564C1(); // _ZN7S8564C1D1Ev
  virtual void  v1(); // _ZN7S8564C12v1Ev
  virtual void  v2(); // _ZN7S8564C12v2Ev
  virtual void  v3(); // _ZN7S8564C12v3Ev
  virtual void  v4(); // _ZN7S8564C12v4Ev
  virtual void  v5(); // _ZN7S8564C12v5Ev
  virtual void  v6(); // _ZN7S8564C12v6Ev
  virtual void  v7(); // _ZN7S8564C12v7Ev
  virtual void  v8(); // _ZN7S8564C12v8Ev
  virtual void  v9(); // _ZN7S8564C12v9Ev
  virtual void  v10(); // _ZN7S8564C13v10Ev
  virtual void  v11(); // _ZN7S8564C13v11Ev
  S8564C1(); // tgen
};
//SIG(1 S8564C1) C1{ BC2{ vd v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 Fp[14] FC3{ Fi} Fc[3] FC4{ m} Fp}


 S8564C1 ::~S8564C1(){ note_dtor("S8564C1", this);}
void  S8564C1 ::v1(){vfunc_called(this, "_ZN7S8564C12v1Ev");}
void  S8564C1 ::v2(){vfunc_called(this, "_ZN7S8564C12v2Ev");}
void  S8564C1 ::v3(){vfunc_called(this, "_ZN7S8564C12v3Ev");}
void  S8564C1 ::v4(){vfunc_called(this, "_ZN7S8564C12v4Ev");}
void  S8564C1 ::v5(){vfunc_called(this, "_ZN7S8564C12v5Ev");}
void  S8564C1 ::v6(){vfunc_called(this, "_ZN7S8564C12v6Ev");}
void  S8564C1 ::v7(){vfunc_called(this, "_ZN7S8564C12v7Ev");}
void  S8564C1 ::v8(){vfunc_called(this, "_ZN7S8564C12v8Ev");}
void  S8564C1 ::v9(){vfunc_called(this, "_ZN7S8564C12v9Ev");}
void  S8564C1 ::v10(){vfunc_called(this, "_ZN7S8564C13v10Ev");}
void  S8564C1 ::v11(){vfunc_called(this, "_ZN7S8564C13v11Ev");}
S8564C1 ::S8564C1(){ note_ctor("S8564C1", this);} // tgen

static void Test_S8564C1()
{
  extern Class_Descriptor cd_S8564C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,19)];
    init_test(&cd_S8564C1, buf);
    S8564C1 *dp, &lv = *(dp=new (buf) S8564C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,72), "sizeof(S8564C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8564C1)");
    check_base_class_offset(lv, (S8564C2*), 0, "S8564C1");
    check_field_offset(lv, s8564c1f0, ABISELECT(8,4), "S8564C1.s8564c1f0");
    check_field_offset(lv, s8564c1f1, ABISELECT(120,60), "S8564C1.s8564c1f1");
    check_field_offset(lv, s8564c1f2, ABISELECT(124,64), "S8564C1.s8564c1f2");
    check_field_offset(lv, s8564c1f3, ABISELECT(127,67), "S8564C1.s8564c1f3");
    check_field_offset(lv, s8564c1f4, ABISELECT(128,68), "S8564C1.s8564c1f4");
    test_class_info(&lv, &cd_S8564C1);
    dp->~S8564C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8564C1(Test_S8564C1, "S8564C1", ABISELECT(136,72));

#else // __cplusplus

extern void _ZN7S8564C1C1Ev();
extern void _ZN7S8564C1D1Ev();
Name_Map name_map_S8564C1[] = {
  NSPAIR(_ZN7S8564C1C1Ev),
  NSPAIR(_ZN7S8564C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8564C2;
extern VTBL_ENTRY _ZTI7S8564C2[];
extern  VTBL_ENTRY _ZTV7S8564C2[];
static Base_Class bases_S8564C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8564C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8564C1[];
extern void _ZN7S8564C1D1Ev();
extern void _ZN7S8564C1D0Ev();
extern void _ZN7S8564C23v12Ev();
extern void _ZN7S8564C23v13Ev();
extern void _ZN7S8564C23v14Ev();
extern void _ZN7S8564C23v15Ev();
extern void _ZN7S8564C23v16Ev();
extern void _ZN7S8564C23v17Ev();
extern void _ZN7S8564C23v18Ev();
extern void _ZN7S8564C23v19Ev();
extern void _ZN7S8564C23v20Ev();
extern void _ZN7S8564C23v21Ev();
extern void _ZN7S8564C23v22Ev();
extern void _ZN7S8564C23v23Ev();
extern void _ZN7S8564C12v1Ev();
extern void _ZN7S8564C12v2Ev();
extern void _ZN7S8564C12v3Ev();
extern void _ZN7S8564C12v4Ev();
extern void _ZN7S8564C12v5Ev();
extern void _ZN7S8564C12v6Ev();
extern void _ZN7S8564C12v7Ev();
extern void _ZN7S8564C12v8Ev();
extern void _ZN7S8564C12v9Ev();
extern void _ZN7S8564C13v10Ev();
extern void _ZN7S8564C13v11Ev();
static  VTBL_ENTRY vtc_S8564C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8564C1[0]),
  (VTBL_ENTRY)&_ZN7S8564C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8564C1D0Ev,
  (VTBL_ENTRY)&_ZN7S8564C23v12Ev,
  (VTBL_ENTRY)&_ZN7S8564C23v13Ev,
  (VTBL_ENTRY)&_ZN7S8564C23v14Ev,
  (VTBL_ENTRY)&_ZN7S8564C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8564C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8564C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8564C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8564C23v19Ev,
  (VTBL_ENTRY)&_ZN7S8564C23v20Ev,
  (VTBL_ENTRY)&_ZN7S8564C23v21Ev,
  (VTBL_ENTRY)&_ZN7S8564C23v22Ev,
  (VTBL_ENTRY)&_ZN7S8564C23v23Ev,
  (VTBL_ENTRY)&_ZN7S8564C12v1Ev,
  (VTBL_ENTRY)&_ZN7S8564C12v2Ev,
  (VTBL_ENTRY)&_ZN7S8564C12v3Ev,
  (VTBL_ENTRY)&_ZN7S8564C12v4Ev,
  (VTBL_ENTRY)&_ZN7S8564C12v5Ev,
  (VTBL_ENTRY)&_ZN7S8564C12v6Ev,
  (VTBL_ENTRY)&_ZN7S8564C12v7Ev,
  (VTBL_ENTRY)&_ZN7S8564C12v8Ev,
  (VTBL_ENTRY)&_ZN7S8564C12v9Ev,
  (VTBL_ENTRY)&_ZN7S8564C13v10Ev,
  (VTBL_ENTRY)&_ZN7S8564C13v11Ev,
};
extern VTBL_ENTRY _ZTI7S8564C1[];
extern  VTBL_ENTRY _ZTV7S8564C1[];
Class_Descriptor cd_S8564C1 = {  "S8564C1", // class name
  bases_S8564C1, 1,
  &(vtc_S8564C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(136,72), // object size
  NSPAIRA(_ZTI7S8564C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8564C1),27, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8566C2  {
  virtual  ~S8566C2(); // _ZN7S8566C2D1Ev
  virtual void  v12(); // _ZN7S8566C23v12Ev
  virtual void  v13(); // _ZN7S8566C23v13Ev
  virtual void  v14(); // _ZN7S8566C23v14Ev
  virtual void  v15(); // _ZN7S8566C23v15Ev
  virtual void  v16(); // _ZN7S8566C23v16Ev
  virtual void  v17(); // _ZN7S8566C23v17Ev
  virtual void  v18(); // _ZN7S8566C23v18Ev
  virtual void  v19(); // _ZN7S8566C23v19Ev
  virtual void  v20(); // _ZN7S8566C23v20Ev
  virtual void  v21(); // _ZN7S8566C23v21Ev
  virtual void  v22(); // _ZN7S8566C23v22Ev
  virtual void  v23(); // _ZN7S8566C23v23Ev
  S8566C2(); // tgen
};
//SIG(-1 S8566C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12}


 S8566C2 ::~S8566C2(){ note_dtor("S8566C2", this);}
void  S8566C2 ::v12(){vfunc_called(this, "_ZN7S8566C23v12Ev");}
void  S8566C2 ::v13(){vfunc_called(this, "_ZN7S8566C23v13Ev");}
void  S8566C2 ::v14(){vfunc_called(this, "_ZN7S8566C23v14Ev");}
void  S8566C2 ::v15(){vfunc_called(this, "_ZN7S8566C23v15Ev");}
void  S8566C2 ::v16(){vfunc_called(this, "_ZN7S8566C23v16Ev");}
void  S8566C2 ::v17(){vfunc_called(this, "_ZN7S8566C23v17Ev");}
void  S8566C2 ::v18(){vfunc_called(this, "_ZN7S8566C23v18Ev");}
void  S8566C2 ::v19(){vfunc_called(this, "_ZN7S8566C23v19Ev");}
void  S8566C2 ::v20(){vfunc_called(this, "_ZN7S8566C23v20Ev");}
void  S8566C2 ::v21(){vfunc_called(this, "_ZN7S8566C23v21Ev");}
void  S8566C2 ::v22(){vfunc_called(this, "_ZN7S8566C23v22Ev");}
void  S8566C2 ::v23(){vfunc_called(this, "_ZN7S8566C23v23Ev");}
S8566C2 ::S8566C2(){ note_ctor("S8566C2", this);} // tgen

static void Test_S8566C2()
{
  extern Class_Descriptor cd_S8566C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S8566C2, buf);
    S8566C2 *dp, &lv = *(dp=new (buf) S8566C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S8566C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8566C2)");
    test_class_info(&lv, &cd_S8566C2);
    dp->~S8566C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8566C2(Test_S8566C2, "S8566C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S8566C2C1Ev();
extern void _ZN7S8566C2D1Ev();
Name_Map name_map_S8566C2[] = {
  NSPAIR(_ZN7S8566C2C1Ev),
  NSPAIR(_ZN7S8566C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8566C2[];
extern void _ZN7S8566C2D1Ev();
extern void _ZN7S8566C2D0Ev();
extern void _ZN7S8566C23v12Ev();
extern void _ZN7S8566C23v13Ev();
extern void _ZN7S8566C23v14Ev();
extern void _ZN7S8566C23v15Ev();
extern void _ZN7S8566C23v16Ev();
extern void _ZN7S8566C23v17Ev();
extern void _ZN7S8566C23v18Ev();
extern void _ZN7S8566C23v19Ev();
extern void _ZN7S8566C23v20Ev();
extern void _ZN7S8566C23v21Ev();
extern void _ZN7S8566C23v22Ev();
extern void _ZN7S8566C23v23Ev();
static  VTBL_ENTRY vtc_S8566C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8566C2[0]),
  (VTBL_ENTRY)&_ZN7S8566C2D1Ev,
  (VTBL_ENTRY)&_ZN7S8566C2D0Ev,
  (VTBL_ENTRY)&_ZN7S8566C23v12Ev,
  (VTBL_ENTRY)&_ZN7S8566C23v13Ev,
  (VTBL_ENTRY)&_ZN7S8566C23v14Ev,
  (VTBL_ENTRY)&_ZN7S8566C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8566C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8566C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8566C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8566C23v19Ev,
  (VTBL_ENTRY)&_ZN7S8566C23v20Ev,
  (VTBL_ENTRY)&_ZN7S8566C23v21Ev,
  (VTBL_ENTRY)&_ZN7S8566C23v22Ev,
  (VTBL_ENTRY)&_ZN7S8566C23v23Ev,
};
extern VTBL_ENTRY _ZTI7S8566C2[];
extern  VTBL_ENTRY _ZTV7S8566C2[];
Class_Descriptor cd_S8566C2 = {  "S8566C2", // class name
  0,0,//no base classes
  &(vtc_S8566C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S8566C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8566C2),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8566C1  : S8566C2 {
  void *s8566c1f0[20];
  ::S8565C3_nt s8566c1f1;
  char s8566c1f2[4];
  ::S7856C24 s8566c1f3;
  void *s8566c1f4;
  virtual  ~S8566C1(); // _ZN7S8566C1D1Ev
  virtual void  v1(); // _ZN7S8566C12v1Ev
  virtual void  v2(); // _ZN7S8566C12v2Ev
  virtual void  v3(); // _ZN7S8566C12v3Ev
  virtual void  v4(); // _ZN7S8566C12v4Ev
  virtual void  v5(); // _ZN7S8566C12v5Ev
  virtual void  v6(); // _ZN7S8566C12v6Ev
  virtual void  v7(); // _ZN7S8566C12v7Ev
  virtual void  v8(); // _ZN7S8566C12v8Ev
  virtual void  v9(); // _ZN7S8566C12v9Ev
  virtual void  v10(); // _ZN7S8566C13v10Ev
  virtual void  v11(); // _ZN7S8566C13v11Ev
  S8566C1(); // tgen
};
//SIG(1 S8566C1) C1{ BC2{ vd v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 Fp[20] FC3{ Fi} Fc[4] FC4{ m} Fp}


 S8566C1 ::~S8566C1(){ note_dtor("S8566C1", this);}
void  S8566C1 ::v1(){vfunc_called(this, "_ZN7S8566C12v1Ev");}
void  S8566C1 ::v2(){vfunc_called(this, "_ZN7S8566C12v2Ev");}
void  S8566C1 ::v3(){vfunc_called(this, "_ZN7S8566C12v3Ev");}
void  S8566C1 ::v4(){vfunc_called(this, "_ZN7S8566C12v4Ev");}
void  S8566C1 ::v5(){vfunc_called(this, "_ZN7S8566C12v5Ev");}
void  S8566C1 ::v6(){vfunc_called(this, "_ZN7S8566C12v6Ev");}
void  S8566C1 ::v7(){vfunc_called(this, "_ZN7S8566C12v7Ev");}
void  S8566C1 ::v8(){vfunc_called(this, "_ZN7S8566C12v8Ev");}
void  S8566C1 ::v9(){vfunc_called(this, "_ZN7S8566C12v9Ev");}
void  S8566C1 ::v10(){vfunc_called(this, "_ZN7S8566C13v10Ev");}
void  S8566C1 ::v11(){vfunc_called(this, "_ZN7S8566C13v11Ev");}
S8566C1 ::S8566C1(){ note_ctor("S8566C1", this);} // tgen

static void Test_S8566C1()
{
  extern Class_Descriptor cd_S8566C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(25,26)];
    init_test(&cd_S8566C1, buf);
    S8566C1 *dp, &lv = *(dp=new (buf) S8566C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,100), "sizeof(S8566C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8566C1)");
    check_base_class_offset(lv, (S8566C2*), 0, "S8566C1");
    check_field_offset(lv, s8566c1f0, ABISELECT(8,4), "S8566C1.s8566c1f0");
    check_field_offset(lv, s8566c1f1, ABISELECT(168,84), "S8566C1.s8566c1f1");
    check_field_offset(lv, s8566c1f2, ABISELECT(172,88), "S8566C1.s8566c1f2");
    check_field_offset(lv, s8566c1f3, ABISELECT(176,92), "S8566C1.s8566c1f3");
    check_field_offset(lv, s8566c1f4, ABISELECT(184,96), "S8566C1.s8566c1f4");
    test_class_info(&lv, &cd_S8566C1);
    dp->~S8566C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8566C1(Test_S8566C1, "S8566C1", ABISELECT(192,100));

#else // __cplusplus

extern void _ZN7S8566C1C1Ev();
extern void _ZN7S8566C1D1Ev();
Name_Map name_map_S8566C1[] = {
  NSPAIR(_ZN7S8566C1C1Ev),
  NSPAIR(_ZN7S8566C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8566C2;
extern VTBL_ENTRY _ZTI7S8566C2[];
extern  VTBL_ENTRY _ZTV7S8566C2[];
static Base_Class bases_S8566C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8566C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8566C1[];
extern void _ZN7S8566C1D1Ev();
extern void _ZN7S8566C1D0Ev();
extern void _ZN7S8566C23v12Ev();
extern void _ZN7S8566C23v13Ev();
extern void _ZN7S8566C23v14Ev();
extern void _ZN7S8566C23v15Ev();
extern void _ZN7S8566C23v16Ev();
extern void _ZN7S8566C23v17Ev();
extern void _ZN7S8566C23v18Ev();
extern void _ZN7S8566C23v19Ev();
extern void _ZN7S8566C23v20Ev();
extern void _ZN7S8566C23v21Ev();
extern void _ZN7S8566C23v22Ev();
extern void _ZN7S8566C23v23Ev();
extern void _ZN7S8566C12v1Ev();
extern void _ZN7S8566C12v2Ev();
extern void _ZN7S8566C12v3Ev();
extern void _ZN7S8566C12v4Ev();
extern void _ZN7S8566C12v5Ev();
extern void _ZN7S8566C12v6Ev();
extern void _ZN7S8566C12v7Ev();
extern void _ZN7S8566C12v8Ev();
extern void _ZN7S8566C12v9Ev();
extern void _ZN7S8566C13v10Ev();
extern void _ZN7S8566C13v11Ev();
static  VTBL_ENTRY vtc_S8566C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8566C1[0]),
  (VTBL_ENTRY)&_ZN7S8566C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8566C1D0Ev,
  (VTBL_ENTRY)&_ZN7S8566C23v12Ev,
  (VTBL_ENTRY)&_ZN7S8566C23v13Ev,
  (VTBL_ENTRY)&_ZN7S8566C23v14Ev,
  (VTBL_ENTRY)&_ZN7S8566C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8566C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8566C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8566C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8566C23v19Ev,
  (VTBL_ENTRY)&_ZN7S8566C23v20Ev,
  (VTBL_ENTRY)&_ZN7S8566C23v21Ev,
  (VTBL_ENTRY)&_ZN7S8566C23v22Ev,
  (VTBL_ENTRY)&_ZN7S8566C23v23Ev,
  (VTBL_ENTRY)&_ZN7S8566C12v1Ev,
  (VTBL_ENTRY)&_ZN7S8566C12v2Ev,
  (VTBL_ENTRY)&_ZN7S8566C12v3Ev,
  (VTBL_ENTRY)&_ZN7S8566C12v4Ev,
  (VTBL_ENTRY)&_ZN7S8566C12v5Ev,
  (VTBL_ENTRY)&_ZN7S8566C12v6Ev,
  (VTBL_ENTRY)&_ZN7S8566C12v7Ev,
  (VTBL_ENTRY)&_ZN7S8566C12v8Ev,
  (VTBL_ENTRY)&_ZN7S8566C12v9Ev,
  (VTBL_ENTRY)&_ZN7S8566C13v10Ev,
  (VTBL_ENTRY)&_ZN7S8566C13v11Ev,
};
extern VTBL_ENTRY _ZTI7S8566C1[];
extern  VTBL_ENTRY _ZTV7S8566C1[];
Class_Descriptor cd_S8566C1 = {  "S8566C1", // class name
  bases_S8566C1, 1,
  &(vtc_S8566C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(192,100), // object size
  NSPAIRA(_ZTI7S8566C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8566C1),27, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8569C2  {
  virtual  ~S8569C2(); // _ZN7S8569C2D1Ev
  virtual void  v12(); // _ZN7S8569C23v12Ev
  virtual void  v13(); // _ZN7S8569C23v13Ev
  virtual void  v14(); // _ZN7S8569C23v14Ev
  virtual void  v15(); // _ZN7S8569C23v15Ev
  virtual void  v16(); // _ZN7S8569C23v16Ev
  virtual void  v17(); // _ZN7S8569C23v17Ev
  virtual void  v18(); // _ZN7S8569C23v18Ev
  virtual void  v19(); // _ZN7S8569C23v19Ev
  virtual void  v20(); // _ZN7S8569C23v20Ev
  virtual void  v21(); // _ZN7S8569C23v21Ev
  virtual void  v22(); // _ZN7S8569C23v22Ev
  virtual void  v23(); // _ZN7S8569C23v23Ev
  S8569C2(); // tgen
};
//SIG(-1 S8569C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12}


 S8569C2 ::~S8569C2(){ note_dtor("S8569C2", this);}
void  S8569C2 ::v12(){vfunc_called(this, "_ZN7S8569C23v12Ev");}
void  S8569C2 ::v13(){vfunc_called(this, "_ZN7S8569C23v13Ev");}
void  S8569C2 ::v14(){vfunc_called(this, "_ZN7S8569C23v14Ev");}
void  S8569C2 ::v15(){vfunc_called(this, "_ZN7S8569C23v15Ev");}
void  S8569C2 ::v16(){vfunc_called(this, "_ZN7S8569C23v16Ev");}
void  S8569C2 ::v17(){vfunc_called(this, "_ZN7S8569C23v17Ev");}
void  S8569C2 ::v18(){vfunc_called(this, "_ZN7S8569C23v18Ev");}
void  S8569C2 ::v19(){vfunc_called(this, "_ZN7S8569C23v19Ev");}
void  S8569C2 ::v20(){vfunc_called(this, "_ZN7S8569C23v20Ev");}
void  S8569C2 ::v21(){vfunc_called(this, "_ZN7S8569C23v21Ev");}
void  S8569C2 ::v22(){vfunc_called(this, "_ZN7S8569C23v22Ev");}
void  S8569C2 ::v23(){vfunc_called(this, "_ZN7S8569C23v23Ev");}
S8569C2 ::S8569C2(){ note_ctor("S8569C2", this);} // tgen

static void Test_S8569C2()
{
  extern Class_Descriptor cd_S8569C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S8569C2, buf);
    S8569C2 *dp, &lv = *(dp=new (buf) S8569C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S8569C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8569C2)");
    test_class_info(&lv, &cd_S8569C2);
    dp->~S8569C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8569C2(Test_S8569C2, "S8569C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S8569C2C1Ev();
extern void _ZN7S8569C2D1Ev();
Name_Map name_map_S8569C2[] = {
  NSPAIR(_ZN7S8569C2C1Ev),
  NSPAIR(_ZN7S8569C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8569C2[];
extern void _ZN7S8569C2D1Ev();
extern void _ZN7S8569C2D0Ev();
extern void _ZN7S8569C23v12Ev();
extern void _ZN7S8569C23v13Ev();
extern void _ZN7S8569C23v14Ev();
extern void _ZN7S8569C23v15Ev();
extern void _ZN7S8569C23v16Ev();
extern void _ZN7S8569C23v17Ev();
extern void _ZN7S8569C23v18Ev();
extern void _ZN7S8569C23v19Ev();
extern void _ZN7S8569C23v20Ev();
extern void _ZN7S8569C23v21Ev();
extern void _ZN7S8569C23v22Ev();
extern void _ZN7S8569C23v23Ev();
static  VTBL_ENTRY vtc_S8569C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8569C2[0]),
  (VTBL_ENTRY)&_ZN7S8569C2D1Ev,
  (VTBL_ENTRY)&_ZN7S8569C2D0Ev,
  (VTBL_ENTRY)&_ZN7S8569C23v12Ev,
  (VTBL_ENTRY)&_ZN7S8569C23v13Ev,
  (VTBL_ENTRY)&_ZN7S8569C23v14Ev,
  (VTBL_ENTRY)&_ZN7S8569C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8569C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8569C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8569C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8569C23v19Ev,
  (VTBL_ENTRY)&_ZN7S8569C23v20Ev,
  (VTBL_ENTRY)&_ZN7S8569C23v21Ev,
  (VTBL_ENTRY)&_ZN7S8569C23v22Ev,
  (VTBL_ENTRY)&_ZN7S8569C23v23Ev,
};
extern VTBL_ENTRY _ZTI7S8569C2[];
extern  VTBL_ENTRY _ZTV7S8569C2[];
Class_Descriptor cd_S8569C2 = {  "S8569C2", // class name
  0,0,//no base classes
  &(vtc_S8569C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S8569C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8569C2),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8569C1  : S8569C2 {
  void *s8569c1f0[9];
  int s8569c1f1;
  ::S8565C3_nt s8569c1f2;
  char s8569c1f3;
  void *s8569c1f4[18];
  virtual  ~S8569C1(); // _ZN7S8569C1D1Ev
  virtual void  v1(); // _ZN7S8569C12v1Ev
  virtual void  v2(); // _ZN7S8569C12v2Ev
  virtual void  v3(); // _ZN7S8569C12v3Ev
  virtual void  v4(); // _ZN7S8569C12v4Ev
  virtual void  v5(); // _ZN7S8569C12v5Ev
  virtual void  v6(); // _ZN7S8569C12v6Ev
  virtual void  v7(); // _ZN7S8569C12v7Ev
  virtual void  v8(); // _ZN7S8569C12v8Ev
  virtual void  v9(); // _ZN7S8569C12v9Ev
  virtual void  v10(); // _ZN7S8569C13v10Ev
  virtual void  v11(); // _ZN7S8569C13v11Ev
  S8569C1(); // tgen
};
//SIG(1 S8569C1) C1{ BC2{ vd v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 Fp[9] Fi FC3{ Fi} Fc Fp[18]}


 S8569C1 ::~S8569C1(){ note_dtor("S8569C1", this);}
void  S8569C1 ::v1(){vfunc_called(this, "_ZN7S8569C12v1Ev");}
void  S8569C1 ::v2(){vfunc_called(this, "_ZN7S8569C12v2Ev");}
void  S8569C1 ::v3(){vfunc_called(this, "_ZN7S8569C12v3Ev");}
void  S8569C1 ::v4(){vfunc_called(this, "_ZN7S8569C12v4Ev");}
void  S8569C1 ::v5(){vfunc_called(this, "_ZN7S8569C12v5Ev");}
void  S8569C1 ::v6(){vfunc_called(this, "_ZN7S8569C12v6Ev");}
void  S8569C1 ::v7(){vfunc_called(this, "_ZN7S8569C12v7Ev");}
void  S8569C1 ::v8(){vfunc_called(this, "_ZN7S8569C12v8Ev");}
void  S8569C1 ::v9(){vfunc_called(this, "_ZN7S8569C12v9Ev");}
void  S8569C1 ::v10(){vfunc_called(this, "_ZN7S8569C13v10Ev");}
void  S8569C1 ::v11(){vfunc_called(this, "_ZN7S8569C13v11Ev");}
S8569C1 ::S8569C1(){ note_ctor("S8569C1", this);} // tgen

static void Test_S8569C1()
{
  extern Class_Descriptor cd_S8569C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(31,32)];
    init_test(&cd_S8569C1, buf);
    S8569C1 *dp, &lv = *(dp=new (buf) S8569C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,124), "sizeof(S8569C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8569C1)");
    check_base_class_offset(lv, (S8569C2*), 0, "S8569C1");
    check_field_offset(lv, s8569c1f0, ABISELECT(8,4), "S8569C1.s8569c1f0");
    check_field_offset(lv, s8569c1f1, ABISELECT(80,40), "S8569C1.s8569c1f1");
    check_field_offset(lv, s8569c1f2, ABISELECT(84,44), "S8569C1.s8569c1f2");
    check_field_offset(lv, s8569c1f3, ABISELECT(88,48), "S8569C1.s8569c1f3");
    check_field_offset(lv, s8569c1f4, ABISELECT(96,52), "S8569C1.s8569c1f4");
    test_class_info(&lv, &cd_S8569C1);
    dp->~S8569C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8569C1(Test_S8569C1, "S8569C1", ABISELECT(240,124));

#else // __cplusplus

extern void _ZN7S8569C1C1Ev();
extern void _ZN7S8569C1D1Ev();
Name_Map name_map_S8569C1[] = {
  NSPAIR(_ZN7S8569C1C1Ev),
  NSPAIR(_ZN7S8569C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8569C2;
extern VTBL_ENTRY _ZTI7S8569C2[];
extern  VTBL_ENTRY _ZTV7S8569C2[];
static Base_Class bases_S8569C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8569C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8569C1[];
extern void _ZN7S8569C1D1Ev();
extern void _ZN7S8569C1D0Ev();
extern void _ZN7S8569C23v12Ev();
extern void _ZN7S8569C23v13Ev();
extern void _ZN7S8569C23v14Ev();
extern void _ZN7S8569C23v15Ev();
extern void _ZN7S8569C23v16Ev();
extern void _ZN7S8569C23v17Ev();
extern void _ZN7S8569C23v18Ev();
extern void _ZN7S8569C23v19Ev();
extern void _ZN7S8569C23v20Ev();
extern void _ZN7S8569C23v21Ev();
extern void _ZN7S8569C23v22Ev();
extern void _ZN7S8569C23v23Ev();
extern void _ZN7S8569C12v1Ev();
extern void _ZN7S8569C12v2Ev();
extern void _ZN7S8569C12v3Ev();
extern void _ZN7S8569C12v4Ev();
extern void _ZN7S8569C12v5Ev();
extern void _ZN7S8569C12v6Ev();
extern void _ZN7S8569C12v7Ev();
extern void _ZN7S8569C12v8Ev();
extern void _ZN7S8569C12v9Ev();
extern void _ZN7S8569C13v10Ev();
extern void _ZN7S8569C13v11Ev();
static  VTBL_ENTRY vtc_S8569C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8569C1[0]),
  (VTBL_ENTRY)&_ZN7S8569C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8569C1D0Ev,
  (VTBL_ENTRY)&_ZN7S8569C23v12Ev,
  (VTBL_ENTRY)&_ZN7S8569C23v13Ev,
  (VTBL_ENTRY)&_ZN7S8569C23v14Ev,
  (VTBL_ENTRY)&_ZN7S8569C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8569C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8569C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8569C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8569C23v19Ev,
  (VTBL_ENTRY)&_ZN7S8569C23v20Ev,
  (VTBL_ENTRY)&_ZN7S8569C23v21Ev,
  (VTBL_ENTRY)&_ZN7S8569C23v22Ev,
  (VTBL_ENTRY)&_ZN7S8569C23v23Ev,
  (VTBL_ENTRY)&_ZN7S8569C12v1Ev,
  (VTBL_ENTRY)&_ZN7S8569C12v2Ev,
  (VTBL_ENTRY)&_ZN7S8569C12v3Ev,
  (VTBL_ENTRY)&_ZN7S8569C12v4Ev,
  (VTBL_ENTRY)&_ZN7S8569C12v5Ev,
  (VTBL_ENTRY)&_ZN7S8569C12v6Ev,
  (VTBL_ENTRY)&_ZN7S8569C12v7Ev,
  (VTBL_ENTRY)&_ZN7S8569C12v8Ev,
  (VTBL_ENTRY)&_ZN7S8569C12v9Ev,
  (VTBL_ENTRY)&_ZN7S8569C13v10Ev,
  (VTBL_ENTRY)&_ZN7S8569C13v11Ev,
};
extern VTBL_ENTRY _ZTI7S8569C1[];
extern  VTBL_ENTRY _ZTV7S8569C1[];
Class_Descriptor cd_S8569C1 = {  "S8569C1", // class name
  bases_S8569C1, 1,
  &(vtc_S8569C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(240,124), // object size
  NSPAIRA(_ZTI7S8569C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8569C1),27, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4589C3  {
  virtual  ~S4589C3(); // _ZN7S4589C3D1Ev
  virtual void  v2(); // _ZN7S4589C32v2Ev
  S4589C3(); // tgen
};
//SIG(-1 S4589C3) C1{ vd v1}


 S4589C3 ::~S4589C3(){ note_dtor("S4589C3", this);}
void  S4589C3 ::v2(){vfunc_called(this, "_ZN7S4589C32v2Ev");}
S4589C3 ::S4589C3(){ note_ctor("S4589C3", this);} // tgen

static void Test_S4589C3()
{
  extern Class_Descriptor cd_S4589C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S4589C3, buf);
    S4589C3 *dp, &lv = *(dp=new (buf) S4589C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S4589C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4589C3)");
    test_class_info(&lv, &cd_S4589C3);
    dp->~S4589C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4589C3(Test_S4589C3, "S4589C3", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S4589C3C1Ev();
extern void _ZN7S4589C3D1Ev();
Name_Map name_map_S4589C3[] = {
  NSPAIR(_ZN7S4589C3C1Ev),
  NSPAIR(_ZN7S4589C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4589C3[];
extern void _ZN7S4589C3D1Ev();
extern void _ZN7S4589C3D0Ev();
extern void _ZN7S4589C32v2Ev();
static  VTBL_ENTRY vtc_S4589C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4589C3[0]),
  (VTBL_ENTRY)&_ZN7S4589C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4589C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4589C32v2Ev,
};
extern VTBL_ENTRY _ZTI7S4589C3[];
extern  VTBL_ENTRY _ZTV7S4589C3[];
Class_Descriptor cd_S4589C3 = {  "S4589C3", // class name
  0,0,//no base classes
  &(vtc_S4589C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S4589C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4589C3),5, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4589C2  : S4589C3 {
  char s4589c2f0;
  ::S18423C15_nt s4589c2f1;
  ::S18423C15_nt s4589c2f2;
  ::S18423C15_nt s4589c2f3;
  void *s4589c2f4;
  ::S18423C15_nt s4589c2f5;
  ::S18423C15_nt s4589c2f6;
  int s4589c2f7;
  void *s4589c2f8[3];
  virtual  ~S4589C2(); // _ZN7S4589C2D1Ev
  virtual void  v3(); // _ZN7S4589C22v3Ev
  virtual void  v4(); // _ZN7S4589C22v4Ev
  S4589C2(); // tgen
};
//SIG(-1 S4589C2) C1{ BC2{ vd v3} vd v1 v2 Fc FC3{ m Fp Fi FC4{ m}} FC3 FC3 Fp FC3 FC3 Fi Fp[3]}


 S4589C2 ::~S4589C2(){ note_dtor("S4589C2", this);}
void  S4589C2 ::v3(){vfunc_called(this, "_ZN7S4589C22v3Ev");}
void  S4589C2 ::v4(){vfunc_called(this, "_ZN7S4589C22v4Ev");}
S4589C2 ::S4589C2(){ note_ctor("S4589C2", this);} // tgen

static void Test_S4589C2()
{
  extern Class_Descriptor cd_S4589C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,23)];
    init_test(&cd_S4589C2, buf);
    S4589C2 *dp, &lv = *(dp=new (buf) S4589C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,88), "sizeof(S4589C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4589C2)");
    check_base_class_offset(lv, (S4589C3*), 0, "S4589C2");
    check_field_offset(lv, s4589c2f0, ABISELECT(8,4), "S4589C2.s4589c2f0");
    check_field_offset(lv, s4589c2f1, ABISELECT(16,8), "S4589C2.s4589c2f1");
    check_field_offset(lv, s4589c2f2, ABISELECT(32,20), "S4589C2.s4589c2f2");
    check_field_offset(lv, s4589c2f3, ABISELECT(48,32), "S4589C2.s4589c2f3");
    check_field_offset(lv, s4589c2f4, ABISELECT(64,44), "S4589C2.s4589c2f4");
    check_field_offset(lv, s4589c2f5, ABISELECT(72,48), "S4589C2.s4589c2f5");
    check_field_offset(lv, s4589c2f6, ABISELECT(88,60), "S4589C2.s4589c2f6");
    check_field_offset(lv, s4589c2f7, ABISELECT(104,72), "S4589C2.s4589c2f7");
    check_field_offset(lv, s4589c2f8, ABISELECT(112,76), "S4589C2.s4589c2f8");
    test_class_info(&lv, &cd_S4589C2);
    dp->~S4589C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4589C2(Test_S4589C2, "S4589C2", ABISELECT(136,88));

#else // __cplusplus

extern void _ZN7S4589C2C1Ev();
extern void _ZN7S4589C2D1Ev();
Name_Map name_map_S4589C2[] = {
  NSPAIR(_ZN7S4589C2C1Ev),
  NSPAIR(_ZN7S4589C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4589C3;
extern VTBL_ENTRY _ZTI7S4589C3[];
extern  VTBL_ENTRY _ZTV7S4589C3[];
static Base_Class bases_S4589C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4589C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4589C2[];
extern void _ZN7S4589C2D1Ev();
extern void _ZN7S4589C2D0Ev();
extern void _ZN7S4589C32v2Ev();
extern void _ZN7S4589C22v3Ev();
extern void _ZN7S4589C22v4Ev();
static  VTBL_ENTRY vtc_S4589C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4589C2[0]),
  (VTBL_ENTRY)&_ZN7S4589C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4589C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4589C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4589C22v3Ev,
  (VTBL_ENTRY)&_ZN7S4589C22v4Ev,
};
extern VTBL_ENTRY _ZTI7S4589C2[];
extern  VTBL_ENTRY _ZTV7S4589C2[];
Class_Descriptor cd_S4589C2 = {  "S4589C2", // class name
  bases_S4589C2, 1,
  &(vtc_S4589C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(136,88), // object size
  NSPAIRA(_ZTI7S4589C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4589C2),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4589C1  : S4589C2 {
  int s4589c1f0;
  ::S17556C28_nt s4589c1f1;
  ::S18423C15_nt s4589c1f2;
  ::S18423C15_nt s4589c1f3;
  ::S18423C15_nt s4589c1f4;
  ::S18423C15_nt s4589c1f5;
  ::S18423C15_nt s4589c1f6;
  ::S18423C15_nt s4589c1f7;
  virtual  ~S4589C1(); // _ZN7S4589C1D1Ev
  virtual void  v1(); // _ZN7S4589C12v1Ev
  S4589C1(); // tgen
};
//SIG(1 S4589C1) C1{ BC2{ BC3{ vd v2} vd v3 v4 Fc FC4{ m Fp Fi FC5{ m}} FC4 FC4 Fp FC4 FC4 Fi Fp[3]} vd v1 Fi FC6{ m Fp[2]} FC4 FC4 FC4 FC4 FC4 FC4}


 S4589C1 ::~S4589C1(){ note_dtor("S4589C1", this);}
void  S4589C1 ::v1(){vfunc_called(this, "_ZN7S4589C12v1Ev");}
S4589C1 ::S4589C1(){ note_ctor("S4589C1", this);} // tgen

static void Test_S4589C1()
{
  extern Class_Descriptor cd_S4589C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(33,44)];
    init_test(&cd_S4589C1, buf);
    S4589C1 *dp, &lv = *(dp=new (buf) S4589C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(256,172), "sizeof(S4589C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4589C1)");
    check_base_class_offset(lv, (S4589C3*)(S4589C2*), 0, "S4589C1");
    check_base_class_offset(lv, (S4589C2*), 0, "S4589C1");
    check_field_offset(lv, s4589c1f0, ABISELECT(136,88), "S4589C1.s4589c1f0");
    check_field_offset(lv, s4589c1f1, ABISELECT(144,92), "S4589C1.s4589c1f1");
    check_field_offset(lv, s4589c1f2, ABISELECT(160,100), "S4589C1.s4589c1f2");
    check_field_offset(lv, s4589c1f3, ABISELECT(176,112), "S4589C1.s4589c1f3");
    check_field_offset(lv, s4589c1f4, ABISELECT(192,124), "S4589C1.s4589c1f4");
    check_field_offset(lv, s4589c1f5, ABISELECT(208,136), "S4589C1.s4589c1f5");
    check_field_offset(lv, s4589c1f6, ABISELECT(224,148), "S4589C1.s4589c1f6");
    check_field_offset(lv, s4589c1f7, ABISELECT(240,160), "S4589C1.s4589c1f7");
    test_class_info(&lv, &cd_S4589C1);
    dp->~S4589C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4589C1(Test_S4589C1, "S4589C1", ABISELECT(256,172));

#else // __cplusplus

extern void _ZN7S4589C1C1Ev();
extern void _ZN7S4589C1D1Ev();
Name_Map name_map_S4589C1[] = {
  NSPAIR(_ZN7S4589C1C1Ev),
  NSPAIR(_ZN7S4589C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4589C3;
extern VTBL_ENTRY _ZTI7S4589C3[];
extern  VTBL_ENTRY _ZTV7S4589C3[];
extern Class_Descriptor cd_S4589C2;
extern VTBL_ENTRY _ZTI7S4589C2[];
extern  VTBL_ENTRY _ZTV7S4589C2[];
static Base_Class bases_S4589C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4589C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4589C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4589C1[];
extern void _ZN7S4589C1D1Ev();
extern void _ZN7S4589C1D0Ev();
extern void _ZN7S4589C32v2Ev();
extern void _ZN7S4589C22v3Ev();
extern void _ZN7S4589C22v4Ev();
extern void _ZN7S4589C12v1Ev();
static  VTBL_ENTRY vtc_S4589C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4589C1[0]),
  (VTBL_ENTRY)&_ZN7S4589C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4589C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4589C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4589C22v3Ev,
  (VTBL_ENTRY)&_ZN7S4589C22v4Ev,
  (VTBL_ENTRY)&_ZN7S4589C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S4589C1[];
extern  VTBL_ENTRY _ZTV7S4589C1[];
Class_Descriptor cd_S4589C1 = {  "S4589C1", // class name
  bases_S4589C1, 2,
  &(vtc_S4589C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(256,172), // object size
  NSPAIRA(_ZTI7S4589C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4589C1),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7592C3  {
  virtual void  v3(); // _ZN7S7592C32v3Ev
  ~S7592C3(); // tgen
  S7592C3(); // tgen
};
//SIG(-1 S7592C3) C1{ v1}


void  S7592C3 ::v3(){vfunc_called(this, "_ZN7S7592C32v3Ev");}
S7592C3 ::~S7592C3(){ note_dtor("S7592C3", this);} // tgen
S7592C3 ::S7592C3(){ note_ctor("S7592C3", this);} // tgen

static void Test_S7592C3()
{
  extern Class_Descriptor cd_S7592C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7592C3, buf);
    S7592C3 *dp, &lv = *(dp=new (buf) S7592C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7592C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7592C3)");
    test_class_info(&lv, &cd_S7592C3);
    dp->~S7592C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7592C3(Test_S7592C3, "S7592C3", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7592C3C1Ev();
extern void _ZN7S7592C3D1Ev();
Name_Map name_map_S7592C3[] = {
  NSPAIR(_ZN7S7592C3C1Ev),
  NSPAIR(_ZN7S7592C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7592C3[];
extern void _ZN7S7592C32v3Ev();
static  VTBL_ENTRY vtc_S7592C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7592C3[0]),
  (VTBL_ENTRY)&_ZN7S7592C32v3Ev,
};
extern VTBL_ENTRY _ZTI7S7592C3[];
extern  VTBL_ENTRY _ZTV7S7592C3[];
Class_Descriptor cd_S7592C3 = {  "S7592C3", // class name
  0,0,//no base classes
  &(vtc_S7592C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7592C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7592C3),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7592C2  : virtual S7592C3 {
  int s7592c2f0;
  __tsi64 s7592c2f1;
  int s7592c2f2;
  char s7592c2f3;
  virtual void  v4(); // _ZN7S7592C22v4Ev
  virtual void  v5(); // _ZN7S7592C22v5Ev
  virtual void  v6(); // _ZN7S7592C22v6Ev
  virtual void  v7(); // _ZN7S7592C22v7Ev
  ~S7592C2(); // tgen
  S7592C2(); // tgen
};
//SIG(-1 S7592C2) C1{ VBC2{ v5} v1 v2 v3 v4 Fi FL Fi Fc}


void  S7592C2 ::v4(){vfunc_called(this, "_ZN7S7592C22v4Ev");}
void  S7592C2 ::v5(){vfunc_called(this, "_ZN7S7592C22v5Ev");}
void  S7592C2 ::v6(){vfunc_called(this, "_ZN7S7592C22v6Ev");}
void  S7592C2 ::v7(){vfunc_called(this, "_ZN7S7592C22v7Ev");}
S7592C2 ::~S7592C2(){ note_dtor("S7592C2", this);} // tgen
S7592C2 ::S7592C2(){ note_ctor("S7592C2", this);} // tgen

static void Test_S7592C2()
{
  extern Class_Descriptor cd_S7592C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,7)];
    init_test(&cd_S7592C2, buf);
    S7592C2 *dp, &lv = *(dp=new (buf) S7592C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S7592C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7592C2)");
    check_base_class_offset(lv, (S7592C3*), 0, "S7592C2");
    check_field_offset(lv, s7592c2f0, ABISELECT(8,4), "S7592C2.s7592c2f0");
    check_field_offset(lv, s7592c2f1, ABISELECT(16,8), "S7592C2.s7592c2f1");
    check_field_offset(lv, s7592c2f2, ABISELECT(24,16), "S7592C2.s7592c2f2");
    check_field_offset(lv, s7592c2f3, ABISELECT(28,20), "S7592C2.s7592c2f3");
    test_class_info(&lv, &cd_S7592C2);
    dp->~S7592C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7592C2(Test_S7592C2, "S7592C2", ABISELECT(32,24));

#else // __cplusplus

extern void _ZN7S7592C2C1Ev();
extern void _ZN7S7592C2D1Ev();
Name_Map name_map_S7592C2[] = {
  NSPAIR(_ZN7S7592C2C1Ev),
  NSPAIR(_ZN7S7592C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7592C3;
extern VTBL_ENTRY _ZTI7S7592C3[];
extern  VTBL_ENTRY _ZTV7S7592C3[];
static Base_Class bases_S7592C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7592C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7592C2[];
extern void _ZN7S7592C32v3Ev();
extern void _ZN7S7592C22v4Ev();
extern void _ZN7S7592C22v5Ev();
extern void _ZN7S7592C22v6Ev();
extern void _ZN7S7592C22v7Ev();
static  VTBL_ENTRY vtc_S7592C2[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7592C2[0]),
  (VTBL_ENTRY)&_ZN7S7592C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7592C22v4Ev,
  (VTBL_ENTRY)&_ZN7S7592C22v5Ev,
  (VTBL_ENTRY)&_ZN7S7592C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7592C22v7Ev,
};
extern VTBL_ENTRY _ZTV7S7592C2[];
static  VTT_ENTRY vtt_S7592C2[] = {
  {&(_ZTV7S7592C2[4]),  4,9},
  {&(_ZTV7S7592C2[4]),  4,9},
};
extern VTBL_ENTRY _ZTI7S7592C2[];
extern  VTBL_ENTRY _ZTV7S7592C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7592C2[];
Class_Descriptor cd_S7592C2 = {  "S7592C2", // class name
  bases_S7592C2, 1,
  &(vtc_S7592C2[0]), // expected_vtbl_contents
  &(vtt_S7592C2[0]), // expected_vtt_contents
  ABISELECT(32,24), // object size
  NSPAIRA(_ZTI7S7592C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7592C2),9, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7592C2),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7592C5  {
  int s7592c5f0;
  char s7592c5f1[2];
  virtual void  v8(); // _ZN7S7592C52v8Ev
  virtual void  v9(); // _ZN7S7592C52v9Ev
  virtual void  v10(); // _ZN7S7592C53v10Ev
  virtual void  v11(); // _ZN7S7592C53v11Ev
  virtual void  v12(); // _ZN7S7592C53v12Ev
  ~S7592C5(); // tgen
  S7592C5(); // tgen
};
//SIG(-1 S7592C5) C1{ v1 v2 v3 v4 v5 Fi Fc[2]}


void  S7592C5 ::v8(){vfunc_called(this, "_ZN7S7592C52v8Ev");}
void  S7592C5 ::v9(){vfunc_called(this, "_ZN7S7592C52v9Ev");}
void  S7592C5 ::v10(){vfunc_called(this, "_ZN7S7592C53v10Ev");}
void  S7592C5 ::v11(){vfunc_called(this, "_ZN7S7592C53v11Ev");}
void  S7592C5 ::v12(){vfunc_called(this, "_ZN7S7592C53v12Ev");}
S7592C5 ::~S7592C5(){ note_dtor("S7592C5", this);} // tgen
S7592C5 ::S7592C5(){ note_ctor("S7592C5", this);} // tgen

static void Test_S7592C5()
{
  extern Class_Descriptor cd_S7592C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S7592C5, buf);
    S7592C5 *dp, &lv = *(dp=new (buf) S7592C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S7592C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7592C5)");
    check_field_offset(lv, s7592c5f0, ABISELECT(8,4), "S7592C5.s7592c5f0");
    check_field_offset(lv, s7592c5f1, ABISELECT(12,8), "S7592C5.s7592c5f1");
    test_class_info(&lv, &cd_S7592C5);
    dp->~S7592C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7592C5(Test_S7592C5, "S7592C5", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S7592C5C1Ev();
extern void _ZN7S7592C5D1Ev();
Name_Map name_map_S7592C5[] = {
  NSPAIR(_ZN7S7592C5C1Ev),
  NSPAIR(_ZN7S7592C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7592C5[];
extern void _ZN7S7592C52v8Ev();
extern void _ZN7S7592C52v9Ev();
extern void _ZN7S7592C53v10Ev();
extern void _ZN7S7592C53v11Ev();
extern void _ZN7S7592C53v12Ev();
static  VTBL_ENTRY vtc_S7592C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7592C5[0]),
  (VTBL_ENTRY)&_ZN7S7592C52v8Ev,
  (VTBL_ENTRY)&_ZN7S7592C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7592C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7592C53v11Ev,
  (VTBL_ENTRY)&_ZN7S7592C53v12Ev,
};
extern VTBL_ENTRY _ZTI7S7592C5[];
extern  VTBL_ENTRY _ZTV7S7592C5[];
Class_Descriptor cd_S7592C5 = {  "S7592C5", // class name
  0,0,//no base classes
  &(vtc_S7592C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S7592C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7592C5),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7592C4  : S7592C5 {
  virtual  ~S7592C4(); // _ZN7S7592C4D1Ev
  virtual void  v13(); // _ZN7S7592C43v13Ev
  virtual void  v14(); // _ZN7S7592C43v14Ev
  virtual void  v15(); // _ZN7S7592C43v15Ev
  virtual void  v16(); // _ZN7S7592C43v16Ev
  virtual void  v17(); // _ZN7S7592C43v17Ev
  virtual void  v18(); // _ZN7S7592C43v18Ev
  virtual void  v19(); // _ZN7S7592C43v19Ev
  virtual void  v20(); // _ZN7S7592C43v20Ev
  S7592C4(); // tgen
};
//SIG(-1 S7592C4) C1{ BC2{ v9 v10 v11 v12 v13 Fi Fc[2]} vd v1 v2 v3 v4 v5 v6 v7 v8}


 S7592C4 ::~S7592C4(){ note_dtor("S7592C4", this);}
void  S7592C4 ::v13(){vfunc_called(this, "_ZN7S7592C43v13Ev");}
void  S7592C4 ::v14(){vfunc_called(this, "_ZN7S7592C43v14Ev");}
void  S7592C4 ::v15(){vfunc_called(this, "_ZN7S7592C43v15Ev");}
void  S7592C4 ::v16(){vfunc_called(this, "_ZN7S7592C43v16Ev");}
void  S7592C4 ::v17(){vfunc_called(this, "_ZN7S7592C43v17Ev");}
void  S7592C4 ::v18(){vfunc_called(this, "_ZN7S7592C43v18Ev");}
void  S7592C4 ::v19(){vfunc_called(this, "_ZN7S7592C43v19Ev");}
void  S7592C4 ::v20(){vfunc_called(this, "_ZN7S7592C43v20Ev");}
S7592C4 ::S7592C4(){ note_ctor("S7592C4", this);} // tgen

static void Test_S7592C4()
{
  extern Class_Descriptor cd_S7592C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S7592C4, buf);
    S7592C4 *dp, &lv = *(dp=new (buf) S7592C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S7592C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7592C4)");
    check_base_class_offset(lv, (S7592C5*), 0, "S7592C4");
    test_class_info(&lv, &cd_S7592C4);
    dp->~S7592C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7592C4(Test_S7592C4, "S7592C4", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S7592C4C1Ev();
extern void _ZN7S7592C4D1Ev();
Name_Map name_map_S7592C4[] = {
  NSPAIR(_ZN7S7592C4C1Ev),
  NSPAIR(_ZN7S7592C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7592C5;
extern VTBL_ENTRY _ZTI7S7592C5[];
extern  VTBL_ENTRY _ZTV7S7592C5[];
static Base_Class bases_S7592C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7592C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7592C4[];
extern void _ZN7S7592C52v8Ev();
extern void _ZN7S7592C52v9Ev();
extern void _ZN7S7592C53v10Ev();
extern void _ZN7S7592C53v11Ev();
extern void _ZN7S7592C53v12Ev();
extern void _ZN7S7592C4D1Ev();
extern void _ZN7S7592C4D0Ev();
extern void _ZN7S7592C43v13Ev();
extern void _ZN7S7592C43v14Ev();
extern void _ZN7S7592C43v15Ev();
extern void _ZN7S7592C43v16Ev();
extern void _ZN7S7592C43v17Ev();
extern void _ZN7S7592C43v18Ev();
extern void _ZN7S7592C43v19Ev();
extern void _ZN7S7592C43v20Ev();
static  VTBL_ENTRY vtc_S7592C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7592C4[0]),
  (VTBL_ENTRY)&_ZN7S7592C52v8Ev,
  (VTBL_ENTRY)&_ZN7S7592C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7592C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7592C53v11Ev,
  (VTBL_ENTRY)&_ZN7S7592C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7592C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7592C4D0Ev,
  (VTBL_ENTRY)&_ZN7S7592C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7592C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7592C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7592C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7592C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7592C43v18Ev,
  (VTBL_ENTRY)&_ZN7S7592C43v19Ev,
  (VTBL_ENTRY)&_ZN7S7592C43v20Ev,
};
extern VTBL_ENTRY _ZTI7S7592C4[];
extern  VTBL_ENTRY _ZTV7S7592C4[];
Class_Descriptor cd_S7592C4 = {  "S7592C4", // class name
  bases_S7592C4, 1,
  &(vtc_S7592C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S7592C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7592C4),17, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7592C1  : S7592C2 , S7592C4 {
  virtual  ~S7592C1(); // _ZN7S7592C1D2Ev
  virtual void  v1(); // _ZN7S7592C12v1Ev
  virtual void  v2(); // _ZN7S7592C12v2Ev
  S7592C1(); // tgen
};
//SIG(1 S7592C1) C1{ BC2{ VBC3{ v3} v4 v5 v6 v7 Fi FL Fi Fc} BC4{ BC5{ v8 v9 v10 v11 v12 Fi Fc[2]} vd v13 v14 v15 v16 v17 v18 v19 v20} vd v1 v2}


 S7592C1 ::~S7592C1(){ note_dtor("S7592C1", this);}
void  S7592C1 ::v1(){vfunc_called(this, "_ZN7S7592C12v1Ev");}
void  S7592C1 ::v2(){vfunc_called(this, "_ZN7S7592C12v2Ev");}
S7592C1 ::S7592C1(){ note_ctor("S7592C1", this);} // tgen

static void Test_S7592C1()
{
  extern Class_Descriptor cd_S7592C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,10)];
    init_test(&cd_S7592C1, buf);
    S7592C1 *dp, &lv = *(dp=new (buf) S7592C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,36), "sizeof(S7592C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7592C1)");
    check_base_class_offset(lv, (S7592C3*)(S7592C2*), 0, "S7592C1");
    check_base_class_offset(lv, (S7592C2*), 0, "S7592C1");
    check_base_class_offset(lv, (S7592C5*)(S7592C4*), ABISELECT(32,24), "S7592C1");
    check_base_class_offset(lv, (S7592C4*), ABISELECT(32,24), "S7592C1");
    test_class_info(&lv, &cd_S7592C1);
    dp->~S7592C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7592C1(Test_S7592C1, "S7592C1", ABISELECT(48,36));

#else // __cplusplus

extern void _ZN7S7592C1C1Ev();
extern void _ZN7S7592C1D2Ev();
Name_Map name_map_S7592C1[] = {
  NSPAIR(_ZN7S7592C1C1Ev),
  NSPAIR(_ZN7S7592C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7592C3;
extern VTBL_ENTRY _ZTI7S7592C3[];
extern  VTBL_ENTRY _ZTV7S7592C3[];
extern Class_Descriptor cd_S7592C2;
extern VTBL_ENTRY _ZTI7S7592C2[];
extern  VTBL_ENTRY _ZTV7S7592C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7592C2[];
extern Class_Descriptor cd_S7592C5;
extern VTBL_ENTRY _ZTI7S7592C5[];
extern  VTBL_ENTRY _ZTV7S7592C5[];
extern Class_Descriptor cd_S7592C4;
extern VTBL_ENTRY _ZTI7S7592C4[];
extern  VTBL_ENTRY _ZTV7S7592C4[];
static Base_Class bases_S7592C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7592C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7592C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7592C5,    ABISELECT(32,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7592C4,    ABISELECT(32,24), //bcp->offset
    13, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7592C1[];
extern void _ZN7S7592C32v3Ev();
extern void _ZN7S7592C22v4Ev();
extern void _ZN7S7592C22v5Ev();
extern void _ZN7S7592C22v6Ev();
extern void _ZN7S7592C22v7Ev();
extern void _ZN7S7592C1D1Ev();
extern void _ZN7S7592C1D0Ev();
extern void _ZN7S7592C12v1Ev();
extern void _ZN7S7592C12v2Ev();
extern void _ZN7S7592C52v8Ev();
extern void _ZN7S7592C52v9Ev();
extern void _ZN7S7592C53v10Ev();
extern void _ZN7S7592C53v11Ev();
extern void _ZN7S7592C53v12Ev();
extern void ABISELECT(_ZThn32_N7S7592C1D1Ev,_ZThn24_N7S7592C1D1Ev)();
extern void ABISELECT(_ZThn32_N7S7592C1D0Ev,_ZThn24_N7S7592C1D0Ev)();
extern void _ZN7S7592C43v13Ev();
extern void _ZN7S7592C43v14Ev();
extern void _ZN7S7592C43v15Ev();
extern void _ZN7S7592C43v16Ev();
extern void _ZN7S7592C43v17Ev();
extern void _ZN7S7592C43v18Ev();
extern void _ZN7S7592C43v19Ev();
extern void _ZN7S7592C43v20Ev();
static  VTBL_ENTRY vtc_S7592C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7592C1[0]),
  (VTBL_ENTRY)&_ZN7S7592C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7592C22v4Ev,
  (VTBL_ENTRY)&_ZN7S7592C22v5Ev,
  (VTBL_ENTRY)&_ZN7S7592C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7592C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7592C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7592C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7592C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7592C12v2Ev,
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI7S7592C1[0]),
  (VTBL_ENTRY)&_ZN7S7592C52v8Ev,
  (VTBL_ENTRY)&_ZN7S7592C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7592C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7592C53v11Ev,
  (VTBL_ENTRY)&_ZN7S7592C53v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S7592C1D1Ev,_ZThn24_N7S7592C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S7592C1D0Ev,_ZThn24_N7S7592C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7592C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7592C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7592C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7592C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7592C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7592C43v18Ev,
  (VTBL_ENTRY)&_ZN7S7592C43v19Ev,
  (VTBL_ENTRY)&_ZN7S7592C43v20Ev,
};
extern VTBL_ENTRY _ZTV7S7592C1[];
extern void _ZN7S7592C32v3Ev();
extern void _ZN7S7592C22v4Ev();
extern void _ZN7S7592C22v5Ev();
extern void _ZN7S7592C22v6Ev();
extern void _ZN7S7592C22v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7592C2__7S7592C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7592C2[0]),
  (VTBL_ENTRY)&_ZN7S7592C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7592C22v4Ev,
  (VTBL_ENTRY)&_ZN7S7592C22v5Ev,
  (VTBL_ENTRY)&_ZN7S7592C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7592C22v7Ev,
};
static  VTT_ENTRY vtt_S7592C1[] = {
  {&(_ZTV7S7592C1[4]),  4,30},
  {&(_tg__ZTV7S7592C2__7S7592C1[4]),  4,9},
  {&(_tg__ZTV7S7592C2__7S7592C1[4]),  4,9},
  {&(_ZTV7S7592C1[4]),  4,30},
};
extern VTBL_ENTRY _ZTI7S7592C1[];
extern  VTBL_ENTRY _ZTV7S7592C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7592C1[];
Class_Descriptor cd_S7592C1 = {  "S7592C1", // class name
  bases_S7592C1, 4,
  &(vtc_S7592C1[0]), // expected_vtbl_contents
  &(vtt_S7592C1[0]), // expected_vtt_contents
  ABISELECT(48,36), // object size
  NSPAIRA(_ZTI7S7592C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7592C1),30, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7592C1),4, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8567C2  {
  virtual  ~S8567C2(); // _ZN7S8567C2D1Ev
  virtual void  v12(); // _ZN7S8567C23v12Ev
  virtual void  v13(); // _ZN7S8567C23v13Ev
  virtual void  v14(); // _ZN7S8567C23v14Ev
  virtual void  v15(); // _ZN7S8567C23v15Ev
  virtual void  v16(); // _ZN7S8567C23v16Ev
  virtual void  v17(); // _ZN7S8567C23v17Ev
  virtual void  v18(); // _ZN7S8567C23v18Ev
  virtual void  v19(); // _ZN7S8567C23v19Ev
  virtual void  v20(); // _ZN7S8567C23v20Ev
  virtual void  v21(); // _ZN7S8567C23v21Ev
  virtual void  v22(); // _ZN7S8567C23v22Ev
  virtual void  v23(); // _ZN7S8567C23v23Ev
  S8567C2(); // tgen
};
//SIG(-1 S8567C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12}


 S8567C2 ::~S8567C2(){ note_dtor("S8567C2", this);}
void  S8567C2 ::v12(){vfunc_called(this, "_ZN7S8567C23v12Ev");}
void  S8567C2 ::v13(){vfunc_called(this, "_ZN7S8567C23v13Ev");}
void  S8567C2 ::v14(){vfunc_called(this, "_ZN7S8567C23v14Ev");}
void  S8567C2 ::v15(){vfunc_called(this, "_ZN7S8567C23v15Ev");}
void  S8567C2 ::v16(){vfunc_called(this, "_ZN7S8567C23v16Ev");}
void  S8567C2 ::v17(){vfunc_called(this, "_ZN7S8567C23v17Ev");}
void  S8567C2 ::v18(){vfunc_called(this, "_ZN7S8567C23v18Ev");}
void  S8567C2 ::v19(){vfunc_called(this, "_ZN7S8567C23v19Ev");}
void  S8567C2 ::v20(){vfunc_called(this, "_ZN7S8567C23v20Ev");}
void  S8567C2 ::v21(){vfunc_called(this, "_ZN7S8567C23v21Ev");}
void  S8567C2 ::v22(){vfunc_called(this, "_ZN7S8567C23v22Ev");}
void  S8567C2 ::v23(){vfunc_called(this, "_ZN7S8567C23v23Ev");}
S8567C2 ::S8567C2(){ note_ctor("S8567C2", this);} // tgen

static void Test_S8567C2()
{
  extern Class_Descriptor cd_S8567C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S8567C2, buf);
    S8567C2 *dp, &lv = *(dp=new (buf) S8567C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S8567C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8567C2)");
    test_class_info(&lv, &cd_S8567C2);
    dp->~S8567C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8567C2(Test_S8567C2, "S8567C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S8567C2C1Ev();
extern void _ZN7S8567C2D1Ev();
Name_Map name_map_S8567C2[] = {
  NSPAIR(_ZN7S8567C2C1Ev),
  NSPAIR(_ZN7S8567C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8567C2[];
extern void _ZN7S8567C2D1Ev();
extern void _ZN7S8567C2D0Ev();
extern void _ZN7S8567C23v12Ev();
extern void _ZN7S8567C23v13Ev();
extern void _ZN7S8567C23v14Ev();
extern void _ZN7S8567C23v15Ev();
extern void _ZN7S8567C23v16Ev();
extern void _ZN7S8567C23v17Ev();
extern void _ZN7S8567C23v18Ev();
extern void _ZN7S8567C23v19Ev();
extern void _ZN7S8567C23v20Ev();
extern void _ZN7S8567C23v21Ev();
extern void _ZN7S8567C23v22Ev();
extern void _ZN7S8567C23v23Ev();
static  VTBL_ENTRY vtc_S8567C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8567C2[0]),
  (VTBL_ENTRY)&_ZN7S8567C2D1Ev,
  (VTBL_ENTRY)&_ZN7S8567C2D0Ev,
  (VTBL_ENTRY)&_ZN7S8567C23v12Ev,
  (VTBL_ENTRY)&_ZN7S8567C23v13Ev,
  (VTBL_ENTRY)&_ZN7S8567C23v14Ev,
  (VTBL_ENTRY)&_ZN7S8567C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8567C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8567C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8567C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8567C23v19Ev,
  (VTBL_ENTRY)&_ZN7S8567C23v20Ev,
  (VTBL_ENTRY)&_ZN7S8567C23v21Ev,
  (VTBL_ENTRY)&_ZN7S8567C23v22Ev,
  (VTBL_ENTRY)&_ZN7S8567C23v23Ev,
};
extern VTBL_ENTRY _ZTI7S8567C2[];
extern  VTBL_ENTRY _ZTV7S8567C2[];
Class_Descriptor cd_S8567C2 = {  "S8567C2", // class name
  0,0,//no base classes
  &(vtc_S8567C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S8567C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8567C2),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8567C1  : S8567C2 {
  void *s8567c1f0[20];
  int s8567c1f1;
  ::S8565C3_nt s8567c1f2;
  virtual  ~S8567C1(); // _ZN7S8567C1D1Ev
  virtual void  v1(); // _ZN7S8567C12v1Ev
  virtual void  v2(); // _ZN7S8567C12v2Ev
  virtual void  v3(); // _ZN7S8567C12v3Ev
  virtual void  v4(); // _ZN7S8567C12v4Ev
  virtual void  v5(); // _ZN7S8567C12v5Ev
  virtual void  v6(); // _ZN7S8567C12v6Ev
  virtual void  v7(); // _ZN7S8567C12v7Ev
  virtual void  v8(); // _ZN7S8567C12v8Ev
  virtual void  v9(); // _ZN7S8567C12v9Ev
  virtual void  v10(); // _ZN7S8567C13v10Ev
  virtual void  v11(); // _ZN7S8567C13v11Ev
  S8567C1(); // tgen
};
//SIG(1 S8567C1) C1{ BC2{ vd v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 Fp[20] Fi FC3{ Fi}}


 S8567C1 ::~S8567C1(){ note_dtor("S8567C1", this);}
void  S8567C1 ::v1(){vfunc_called(this, "_ZN7S8567C12v1Ev");}
void  S8567C1 ::v2(){vfunc_called(this, "_ZN7S8567C12v2Ev");}
void  S8567C1 ::v3(){vfunc_called(this, "_ZN7S8567C12v3Ev");}
void  S8567C1 ::v4(){vfunc_called(this, "_ZN7S8567C12v4Ev");}
void  S8567C1 ::v5(){vfunc_called(this, "_ZN7S8567C12v5Ev");}
void  S8567C1 ::v6(){vfunc_called(this, "_ZN7S8567C12v6Ev");}
void  S8567C1 ::v7(){vfunc_called(this, "_ZN7S8567C12v7Ev");}
void  S8567C1 ::v8(){vfunc_called(this, "_ZN7S8567C12v8Ev");}
void  S8567C1 ::v9(){vfunc_called(this, "_ZN7S8567C12v9Ev");}
void  S8567C1 ::v10(){vfunc_called(this, "_ZN7S8567C13v10Ev");}
void  S8567C1 ::v11(){vfunc_called(this, "_ZN7S8567C13v11Ev");}
S8567C1 ::S8567C1(){ note_ctor("S8567C1", this);} // tgen

static void Test_S8567C1()
{
  extern Class_Descriptor cd_S8567C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,24)];
    init_test(&cd_S8567C1, buf);
    S8567C1 *dp, &lv = *(dp=new (buf) S8567C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,92), "sizeof(S8567C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8567C1)");
    check_base_class_offset(lv, (S8567C2*), 0, "S8567C1");
    check_field_offset(lv, s8567c1f0, ABISELECT(8,4), "S8567C1.s8567c1f0");
    check_field_offset(lv, s8567c1f1, ABISELECT(168,84), "S8567C1.s8567c1f1");
    check_field_offset(lv, s8567c1f2, ABISELECT(172,88), "S8567C1.s8567c1f2");
    test_class_info(&lv, &cd_S8567C1);
    dp->~S8567C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8567C1(Test_S8567C1, "S8567C1", ABISELECT(176,92));

#else // __cplusplus

extern void _ZN7S8567C1C1Ev();
extern void _ZN7S8567C1D1Ev();
Name_Map name_map_S8567C1[] = {
  NSPAIR(_ZN7S8567C1C1Ev),
  NSPAIR(_ZN7S8567C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8567C2;
extern VTBL_ENTRY _ZTI7S8567C2[];
extern  VTBL_ENTRY _ZTV7S8567C2[];
static Base_Class bases_S8567C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8567C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8567C1[];
extern void _ZN7S8567C1D1Ev();
extern void _ZN7S8567C1D0Ev();
extern void _ZN7S8567C23v12Ev();
extern void _ZN7S8567C23v13Ev();
extern void _ZN7S8567C23v14Ev();
extern void _ZN7S8567C23v15Ev();
extern void _ZN7S8567C23v16Ev();
extern void _ZN7S8567C23v17Ev();
extern void _ZN7S8567C23v18Ev();
extern void _ZN7S8567C23v19Ev();
extern void _ZN7S8567C23v20Ev();
extern void _ZN7S8567C23v21Ev();
extern void _ZN7S8567C23v22Ev();
extern void _ZN7S8567C23v23Ev();
extern void _ZN7S8567C12v1Ev();
extern void _ZN7S8567C12v2Ev();
extern void _ZN7S8567C12v3Ev();
extern void _ZN7S8567C12v4Ev();
extern void _ZN7S8567C12v5Ev();
extern void _ZN7S8567C12v6Ev();
extern void _ZN7S8567C12v7Ev();
extern void _ZN7S8567C12v8Ev();
extern void _ZN7S8567C12v9Ev();
extern void _ZN7S8567C13v10Ev();
extern void _ZN7S8567C13v11Ev();
static  VTBL_ENTRY vtc_S8567C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8567C1[0]),
  (VTBL_ENTRY)&_ZN7S8567C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8567C1D0Ev,
  (VTBL_ENTRY)&_ZN7S8567C23v12Ev,
  (VTBL_ENTRY)&_ZN7S8567C23v13Ev,
  (VTBL_ENTRY)&_ZN7S8567C23v14Ev,
  (VTBL_ENTRY)&_ZN7S8567C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8567C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8567C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8567C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8567C23v19Ev,
  (VTBL_ENTRY)&_ZN7S8567C23v20Ev,
  (VTBL_ENTRY)&_ZN7S8567C23v21Ev,
  (VTBL_ENTRY)&_ZN7S8567C23v22Ev,
  (VTBL_ENTRY)&_ZN7S8567C23v23Ev,
  (VTBL_ENTRY)&_ZN7S8567C12v1Ev,
  (VTBL_ENTRY)&_ZN7S8567C12v2Ev,
  (VTBL_ENTRY)&_ZN7S8567C12v3Ev,
  (VTBL_ENTRY)&_ZN7S8567C12v4Ev,
  (VTBL_ENTRY)&_ZN7S8567C12v5Ev,
  (VTBL_ENTRY)&_ZN7S8567C12v6Ev,
  (VTBL_ENTRY)&_ZN7S8567C12v7Ev,
  (VTBL_ENTRY)&_ZN7S8567C12v8Ev,
  (VTBL_ENTRY)&_ZN7S8567C12v9Ev,
  (VTBL_ENTRY)&_ZN7S8567C13v10Ev,
  (VTBL_ENTRY)&_ZN7S8567C13v11Ev,
};
extern VTBL_ENTRY _ZTI7S8567C1[];
extern  VTBL_ENTRY _ZTV7S8567C1[];
Class_Descriptor cd_S8567C1 = {  "S8567C1", // class name
  bases_S8567C1, 1,
  &(vtc_S8567C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(176,92), // object size
  NSPAIRA(_ZTI7S8567C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8567C1),27, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9660C2  {
  ::S18423C15_nt s9660c2f0;
  int s9660c2f1[2];
  char s9660c2f2;
  virtual  ~S9660C2(); // _ZN7S9660C2D1Ev
  virtual void  v4(); // _ZN7S9660C22v4Ev
  virtual void  v5(); // _ZN7S9660C22v5Ev
  virtual void  v6(); // _ZN7S9660C22v6Ev
  S9660C2(); // tgen
};
//SIG(-1 S9660C2) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S9660C2 ::~S9660C2(){ note_dtor("S9660C2", this);}
void  S9660C2 ::v4(){vfunc_called(this, "_ZN7S9660C22v4Ev");}
void  S9660C2 ::v5(){vfunc_called(this, "_ZN7S9660C22v5Ev");}
void  S9660C2 ::v6(){vfunc_called(this, "_ZN7S9660C22v6Ev");}
S9660C2 ::S9660C2(){ note_ctor("S9660C2", this);} // tgen

static void Test_S9660C2()
{
  extern Class_Descriptor cd_S9660C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S9660C2, buf);
    S9660C2 *dp, &lv = *(dp=new (buf) S9660C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S9660C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9660C2)");
    check_field_offset(lv, s9660c2f0, ABISELECT(8,4), "S9660C2.s9660c2f0");
    check_field_offset(lv, s9660c2f1, ABISELECT(24,16), "S9660C2.s9660c2f1");
    check_field_offset(lv, s9660c2f2, ABISELECT(32,24), "S9660C2.s9660c2f2");
    test_class_info(&lv, &cd_S9660C2);
    dp->~S9660C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9660C2(Test_S9660C2, "S9660C2", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S9660C2C1Ev();
extern void _ZN7S9660C2D1Ev();
Name_Map name_map_S9660C2[] = {
  NSPAIR(_ZN7S9660C2C1Ev),
  NSPAIR(_ZN7S9660C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9660C2[];
extern void _ZN7S9660C2D1Ev();
extern void _ZN7S9660C2D0Ev();
extern void _ZN7S9660C22v4Ev();
extern void _ZN7S9660C22v5Ev();
extern void _ZN7S9660C22v6Ev();
static  VTBL_ENTRY vtc_S9660C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9660C2[0]),
  (VTBL_ENTRY)&_ZN7S9660C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9660C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9660C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9660C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9660C22v6Ev,
};
extern VTBL_ENTRY _ZTI7S9660C2[];
extern  VTBL_ENTRY _ZTV7S9660C2[];
Class_Descriptor cd_S9660C2 = {  "S9660C2", // class name
  0,0,//no base classes
  &(vtc_S9660C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S9660C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9660C2),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9660C5  {
  ::S18423C15_nt s9660c5f0;
  ::S40C9_nt s9660c5f1;
  void *s9660c5f2[2];
  void  mf9660c5(); // _ZN7S9660C58mf9660c5Ev
};
//SIG(-1 S9660C5) C1{ m FC2{ m Fp Fi FC3{ m}} FC4{ m Fi[2]} Fp[2]}


void  S9660C5 ::mf9660c5(){}

static void Test_S9660C5()
{
  {
    init_simple_test("S9660C5");
    S9660C5 lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S9660C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9660C5)");
    check_field_offset(lv, s9660c5f0, 0, "S9660C5.s9660c5f0");
    check_field_offset(lv, s9660c5f1, ABISELECT(16,12), "S9660C5.s9660c5f1");
    check_field_offset(lv, s9660c5f2, ABISELECT(24,20), "S9660C5.s9660c5f2");
  }
}
static Arrange_To_Call_Me vS9660C5(Test_S9660C5, "S9660C5", ABISELECT(40,28));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9660C1  : S9660C2 {
  ::S9660C5 s9660c1f0;
  ::S1868C17 s9660c1f1;
  ::S17556C28_nt s9660c1f2;
  virtual  ~S9660C1(); // _ZN7S9660C1D1Ev
  virtual void  v1(); // _ZN7S9660C12v1Ev
  virtual void  v2(); // _ZN7S9660C12v2Ev
  virtual void  v3(); // _ZN7S9660C12v3Ev
  S9660C1(); // tgen
};
//SIG(1 S9660C1) C1{ BC2{ vd v4 v5 v6 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} vd v1 v2 v3 FC5{ m FC3 FC6{ m Fi[2]} Fp[2]} FC7{ m Fp} FC8{ m Fp[2]}}


 S9660C1 ::~S9660C1(){ note_dtor("S9660C1", this);}
void  S9660C1 ::v1(){vfunc_called(this, "_ZN7S9660C12v1Ev");}
void  S9660C1 ::v2(){vfunc_called(this, "_ZN7S9660C12v2Ev");}
void  S9660C1 ::v3(){vfunc_called(this, "_ZN7S9660C12v3Ev");}
S9660C1 ::S9660C1(){ note_ctor("S9660C1", this);} // tgen

static void Test_S9660C1()
{
  extern Class_Descriptor cd_S9660C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(14,18)];
    init_test(&cd_S9660C1, buf);
    S9660C1 *dp, &lv = *(dp=new (buf) S9660C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,68), "sizeof(S9660C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9660C1)");
    check_base_class_offset(lv, (S9660C2*), 0, "S9660C1");
    check_field_offset(lv, s9660c1f0, ABISELECT(40,28), "S9660C1.s9660c1f0");
    check_field_offset(lv, s9660c1f1, ABISELECT(80,56), "S9660C1.s9660c1f1");
    check_field_offset(lv, s9660c1f2, ABISELECT(88,60), "S9660C1.s9660c1f2");
    test_class_info(&lv, &cd_S9660C1);
    dp->~S9660C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9660C1(Test_S9660C1, "S9660C1", ABISELECT(104,68));

#else // __cplusplus

extern void _ZN7S9660C1C1Ev();
extern void _ZN7S9660C1D1Ev();
Name_Map name_map_S9660C1[] = {
  NSPAIR(_ZN7S9660C1C1Ev),
  NSPAIR(_ZN7S9660C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9660C2;
extern VTBL_ENTRY _ZTI7S9660C2[];
extern  VTBL_ENTRY _ZTV7S9660C2[];
static Base_Class bases_S9660C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9660C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9660C1[];
extern void _ZN7S9660C1D1Ev();
extern void _ZN7S9660C1D0Ev();
extern void _ZN7S9660C22v4Ev();
extern void _ZN7S9660C22v5Ev();
extern void _ZN7S9660C22v6Ev();
extern void _ZN7S9660C12v1Ev();
extern void _ZN7S9660C12v2Ev();
extern void _ZN7S9660C12v3Ev();
static  VTBL_ENTRY vtc_S9660C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9660C1[0]),
  (VTBL_ENTRY)&_ZN7S9660C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9660C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9660C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9660C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9660C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9660C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9660C12v2Ev,
  (VTBL_ENTRY)&_ZN7S9660C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S9660C1[];
extern  VTBL_ENTRY _ZTV7S9660C1[];
Class_Descriptor cd_S9660C1 = {  "S9660C1", // class name
  bases_S9660C1, 1,
  &(vtc_S9660C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(104,68), // object size
  NSPAIRA(_ZTI7S9660C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9660C1),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19900C7  : virtual S7856C15 , S7856C12 , virtual S7856C24 {
  ~S19900C7(); // tgen
  S19900C7(); // tgen
};
//SIG(-1 S19900C7) C1{ VBC2{ m} BC3{ m} VBC4{ m}}


S19900C7 ::~S19900C7(){ note_dtor("S19900C7", this);} // tgen
S19900C7 ::S19900C7(){ note_ctor("S19900C7", this);} // tgen

static void Test_S19900C7()
{
  extern Class_Descriptor cd_S19900C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S19900C7, buf);
    S19900C7 *dp, &lv = *(dp=new (buf) S19900C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S19900C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19900C7)");
    check_base_class_offset(lv, (S7856C15*), 0, "S19900C7");
    check_base_class_offset(lv, (S7856C12*), 0, "S19900C7");
    check_base_class_offset(lv, (S7856C24*), 0, "S19900C7");
    test_class_info(&lv, &cd_S19900C7);
    dp->~S19900C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19900C7(Test_S19900C7, "S19900C7", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S19900C7C1Ev();
extern void _ZN8S19900C7D1Ev();
Name_Map name_map_S19900C7[] = {
  NSPAIR(_ZN8S19900C7C1Ev),
  NSPAIR(_ZN8S19900C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
static Base_Class bases_S19900C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19900C7[];
static  VTBL_ENTRY vtc_S19900C7[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19900C7[0]),
};
extern VTBL_ENTRY _ZTV8S19900C7[];
static  VTT_ENTRY vtt_S19900C7[] = {
  {&(_ZTV8S19900C7[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S19900C7[];
extern  VTBL_ENTRY _ZTV8S19900C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19900C7[];
Class_Descriptor cd_S19900C7 = {  "S19900C7", // class name
  bases_S19900C7, 3,
  &(vtc_S19900C7[0]), // expected_vtbl_contents
  &(vtt_S19900C7[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S19900C7),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19900C7),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19900C7),1, //virtual table table var
  0, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19900C6  : S7856C15 , virtual S19900C7 , virtual S7856C12 {
  ~S19900C6(); // tgen
  S19900C6(); // tgen
};
//SIG(-1 S19900C6) C1{ BC2{ m} VBC3{ VBC2 BC4{ m} VBC5{ m}} VBC4}


S19900C6 ::~S19900C6(){ note_dtor("S19900C6", this);} // tgen
S19900C6 ::S19900C6(){ note_ctor("S19900C6", this);} // tgen

static void Test_S19900C6()
{
  extern Class_Descriptor cd_S19900C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19900C6, buf);
    S19900C6 *dp, &lv = *(dp=new (buf) S19900C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19900C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19900C6)");
    /*is_ambiguous_... S19900C6::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), 0, "S19900C6");
    check_base_class_offset(lv, (S7856C15*)(S19900C7*), ABISELECT(8,4), "S19900C6");
    check_base_class_offset(lv, (S7856C12*)(S19900C7*), 0, "S19900C6");
    check_base_class_offset(lv, (S7856C24*)(S19900C7*), 0, "S19900C6");
    check_base_class_offset(lv, (S19900C7*), 0, "S19900C6");
    /*is_ambiguous_... S19900C6::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), ABISELECT(8,4), "S19900C6");
    test_class_info(&lv, &cd_S19900C6);
    dp->~S19900C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19900C6(Test_S19900C6, "S19900C6", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S19900C6C1Ev();
extern void _ZN8S19900C6D1Ev();
Name_Map name_map_S19900C6[] = {
  NSPAIR(_ZN8S19900C6C1Ev),
  NSPAIR(_ZN8S19900C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19900C7;
extern VTBL_ENTRY _ZTI8S19900C7[];
extern  VTBL_ENTRY _ZTV8S19900C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19900C7[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
static Base_Class bases_S19900C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19900C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19900C6[];
static  VTBL_ENTRY vtc_S19900C6[] = {
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19900C6[0]),
};
extern VTBL_ENTRY _ZTV8S19900C6[];
static  VTBL_ENTRY _tg__ZTV8S19900C7__8S19900C6[] = {
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19900C7[0]),
};
static  VTT_ENTRY vtt_S19900C6[] = {
  {&(_ZTV8S19900C6[6]),  6,6},
  {&(_ZTV8S19900C6[6]),  6,6},
  {&(_tg__ZTV8S19900C7__8S19900C6[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S19900C6[];
extern  VTBL_ENTRY _ZTV8S19900C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19900C6[];
Class_Descriptor cd_S19900C6 = {  "S19900C6", // class name
  bases_S19900C6, 6,
  &(vtc_S19900C6[0]), // expected_vtbl_contents
  &(vtt_S19900C6[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19900C6),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19900C6),6, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19900C6),3, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19900C8  : S7856C12 , virtual S7856C15 , virtual S7856C24 , S19900C7 , virtual S19900C6 {
  virtual  ~S19900C8(); // _ZN8S19900C8D2Ev
  S19900C8(); // tgen
};
//SIG(-1 S19900C8) C1{ BC2{ m} VBC3{ m} VBC4{ m} BC5{ VBC3 BC2 VBC4} VBC6{ BC3 VBC5 VBC2} vd}


 S19900C8 ::~S19900C8(){ note_dtor("S19900C8", this);}
S19900C8 ::S19900C8(){ note_ctor("S19900C8", this);} // tgen

static void Test_S19900C8()
{
  extern Class_Descriptor cd_S19900C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S19900C8, buf);
    S19900C8 *dp, &lv = *(dp=new (buf) S19900C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S19900C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19900C8)");
    /*is_ambiguous_... S19900C8::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), ABISELECT(8,4), "S19900C8");
    /*is_ambiguous_... S19900C8::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), 0, "S19900C8");
    /*is_ambiguous_... S19900C8::S19900C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19900C7*), 0, "S19900C8");
    /*is_ambiguous_... S19900C8::S19900C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19900C7*), 0, "S19900C8");
    check_base_class_offset(lv, (S7856C24*), 0, "S19900C8");
    /*is_ambiguous_... S19900C8::S19900C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19900C7*), 0, "S19900C8");
    /*is_ambiguous_... S19900C8::S19900C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19900C7*), 0, "S19900C8");
    /*is_ambiguous_... S19900C8::S19900C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19900C7*), 0, "S19900C8");
    /*is_ambiguous_... S19900C8::S19900C7 */ AMB_check_base_class_offset(lv, (S19900C7*), 0, "S19900C8");
    /*is_ambiguous_... S19900C6::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19900C6*), ABISELECT(16,8), "S19900C8");
    /*is_ambiguous_... S19900C8::S19900C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19900C7*), ABISELECT(16,8), "S19900C8");
    check_base_class_offset(lv, (S19900C7*)(S19900C6*), ABISELECT(16,8), "S19900C8");
    /*is_ambiguous_... S19900C6::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19900C6*), ABISELECT(24,12), "S19900C8");
    check_base_class_offset(lv, (S19900C6*), ABISELECT(16,8), "S19900C8");
    test_class_info(&lv, &cd_S19900C8);
    dp->~S19900C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19900C8(Test_S19900C8, "S19900C8", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S19900C8C1Ev();
extern void _ZN8S19900C8D2Ev();
Name_Map name_map_S19900C8[] = {
  NSPAIR(_ZN8S19900C8C1Ev),
  NSPAIR(_ZN8S19900C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19900C7;
extern VTBL_ENTRY _ZTI8S19900C7[];
extern  VTBL_ENTRY _ZTV8S19900C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19900C7[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19900C7;
extern VTBL_ENTRY _ZTI8S19900C7[];
extern  VTBL_ENTRY _ZTV8S19900C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19900C7[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19900C6;
extern VTBL_ENTRY _ZTI8S19900C6[];
extern  VTBL_ENTRY _ZTV8S19900C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19900C6[];
static Base_Class bases_S19900C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C12,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19900C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C15,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19900C7,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19900C6,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19900C8[];
extern void _ZN8S19900C8D1Ev();
extern void _ZN8S19900C8D0Ev();
static  VTBL_ENTRY vtc_S19900C8[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19900C8[0]),
  (VTBL_ENTRY)&_ZN8S19900C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19900C8D0Ev,
  ABISELECT(8,4),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19900C8[0]),
};
extern VTBL_ENTRY _ZTV8S19900C8[];
static  VTBL_ENTRY _tg__ZTV8S19900C7__A__8S19900C8[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19900C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19900C6__8S19900C8[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19900C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19900C7__A1__8S19900C8[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19900C7[0]),
};
static  VTT_ENTRY vtt_S19900C8[] = {
  {&(_ZTV8S19900C8[7]),  7,15},
  {&(_tg__ZTV8S19900C7__A__8S19900C8[4]),  4,4},
  {&(_ZTV8S19900C8[15]),  15,15},
  {&(_ZTV8S19900C8[15]),  15,15},
  {&(_tg__ZTV8S19900C6__8S19900C8[6]),  6,6},
  {&(_tg__ZTV8S19900C6__8S19900C8[6]),  6,6},
  {&(_tg__ZTV8S19900C7__A1__8S19900C8[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S19900C8[];
extern  VTBL_ENTRY _ZTV8S19900C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19900C8[];
Class_Descriptor cd_S19900C8 = {  "S19900C8", // class name
  bases_S19900C8, 10,
  &(vtc_S19900C8[0]), // expected_vtbl_contents
  &(vtt_S19900C8[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S19900C8),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19900C8),15, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19900C8),7, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19900C3  : virtual S7856C15 , virtual S7856C12 , virtual S19900C6 , S7856C24 , S19900C8 {
  virtual  ~S19900C3(); // _ZN8S19900C3D2Ev
  S19900C3(); // tgen
};
//SIG(-1 S19900C3) C1{ VBC2{ m} VBC3{ m} VBC4{ BC2 VBC5{ VBC2 BC3 VBC6{ m}} VBC3} BC6 BC7{ BC3 VBC2 VBC6 BC5 VBC4 vd} vd}


 S19900C3 ::~S19900C3(){ note_dtor("S19900C3", this);}
S19900C3 ::S19900C3(){ note_ctor("S19900C3", this);} // tgen

static void Test_S19900C3()
{
  extern Class_Descriptor cd_S19900C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S19900C3, buf);
    S19900C3 *dp, &lv = *(dp=new (buf) S19900C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S19900C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19900C3)");
    /*is_ambiguous_... S19900C3::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), 0, "S19900C3");
    /*is_ambiguous_... S19900C3::S19900C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19900C7*), 0, "S19900C3");
    /*is_ambiguous_... S19900C8::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19900C8*), 0, "S19900C3");
    /*is_ambiguous_... S19900C8::S19900C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19900C7*)(S19900C8*), 0, "S19900C3");
    /*is_ambiguous_... S19900C3::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), ABISELECT(9,5), "S19900C3");
    /*is_ambiguous_... S19900C6::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19900C6*), ABISELECT(9,5), "S19900C3");
    /*is_ambiguous_... S19900C6::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19900C6*), ABISELECT(16,8), "S19900C3");
    /*is_ambiguous_... S19900C3::S19900C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19900C7*), ABISELECT(16,8), "S19900C3");
    /*is_ambiguous_... S19900C3::S19900C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19900C7*), ABISELECT(24,12), "S19900C3");
    check_base_class_offset(lv, (S7856C24*)(S19900C8*), ABISELECT(24,12), "S19900C3");
    /*is_ambiguous_... S19900C8::S19900C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19900C7*)(S19900C8*), ABISELECT(24,12), "S19900C3");
    check_base_class_offset(lv, (S19900C7*)(S19900C6*), ABISELECT(16,8), "S19900C3");
    check_base_class_offset(lv, (S19900C6*), ABISELECT(16,8), "S19900C3");
    check_base_class_offset(lv, (S19900C6*)(S19900C8*), ABISELECT(16,8), "S19900C3");
    /*is_ambiguous_... S19900C3::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), 0, "S19900C3");
    /*is_ambiguous_... S19900C8::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19900C8*), ABISELECT(8,4), "S19900C3");
    /*is_ambiguous_... S19900C8::S19900C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19900C7*)(S19900C8*), 0, "S19900C3");
    /*is_ambiguous_... S19900C8::S19900C7 */ AMB_check_base_class_offset(lv, (S19900C7*)(S19900C8*), 0, "S19900C3");
    check_base_class_offset(lv, (S19900C8*), 0, "S19900C3");
    test_class_info(&lv, &cd_S19900C3);
    dp->~S19900C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19900C3(Test_S19900C3, "S19900C3", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S19900C3C1Ev();
extern void _ZN8S19900C3D2Ev();
Name_Map name_map_S19900C3[] = {
  NSPAIR(_ZN8S19900C3C1Ev),
  NSPAIR(_ZN8S19900C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19900C7;
extern VTBL_ENTRY _ZTI8S19900C7[];
extern  VTBL_ENTRY _ZTV8S19900C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19900C7[];
extern Class_Descriptor cd_S19900C6;
extern VTBL_ENTRY _ZTI8S19900C6[];
extern  VTBL_ENTRY _ZTV8S19900C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19900C6[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19900C7;
extern VTBL_ENTRY _ZTI8S19900C7[];
extern  VTBL_ENTRY _ZTV8S19900C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19900C7[];
extern Class_Descriptor cd_S19900C8;
extern VTBL_ENTRY _ZTI8S19900C8[];
extern  VTBL_ENTRY _ZTV8S19900C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19900C8[];
static Base_Class bases_S19900C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19900C7,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19900C6,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19900C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19900C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19900C3[];
extern void _ZN8S19900C3D1Ev();
extern void _ZN8S19900C3D0Ev();
static  VTBL_ENTRY vtc_S19900C3[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19900C3[0]),
  (VTBL_ENTRY)&_ZN8S19900C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19900C3D0Ev,
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19900C3[0]),
};
extern VTBL_ENTRY _ZTV8S19900C3[];
extern void _ZN8S19900C8D1Ev();
extern void _ZN8S19900C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19900C8__8S19900C3[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19900C8[0]),
  (VTBL_ENTRY)&_ZN8S19900C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19900C8D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19900C78S19900C8__A1__8S19900C3[] = {
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19900C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19900C6__8S19900C8__8S19900C3[] = {
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19900C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19900C6__8S19900C3[] = {
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19900C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19900C7__8S19900C3[] = {
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19900C7[0]),
};
static  VTT_ENTRY vtt_S19900C3[] = {
  {&(_ZTV8S19900C3[7]),  7,15},
  {&(_tg__ZTV8S19900C8__8S19900C3[7]),  7,9},
  {&(_tg__ZTV8S19900C78S19900C8__A1__8S19900C3[4]),  4,4},
  {&(_tg__ZTV8S19900C6__8S19900C8__8S19900C3[6]),  6,6},
  {&(_tg__ZTV8S19900C6__8S19900C8__8S19900C3[6]),  6,6},
  {&(_ZTV8S19900C3[15]),  15,15},
  {&(_ZTV8S19900C3[15]),  15,15},
  {&(_tg__ZTV8S19900C6__8S19900C3[6]),  6,6},
  {&(_tg__ZTV8S19900C6__8S19900C3[6]),  6,6},
  {&(_tg__ZTV8S19900C7__8S19900C3[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S19900C3[];
extern  VTBL_ENTRY _ZTV8S19900C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19900C3[];
Class_Descriptor cd_S19900C3 = {  "S19900C3", // class name
  bases_S19900C3, 12,
  &(vtc_S19900C3[0]), // expected_vtbl_contents
  &(vtt_S19900C3[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S19900C3),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19900C3),15, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19900C3),10, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19900C1  : virtual S7856C24 , virtual S19900C3 , virtual S7856C9_nt {
  virtual  ~S19900C1(); // _ZN8S19900C1D2Ev
  S19900C1(); // tgen
};
//SIG(1 S19900C1) C1{ VBC2{ m} VBC3{ VBC4{ m} VBC5{ m} VBC6{ BC4 VBC7{ VBC4 BC5 VBC2} VBC5} BC2 BC8{ BC5 VBC4 VBC2 BC7 VBC6 vd} vd} VBC9{ m} vd}


 S19900C1 ::~S19900C1(){ note_dtor("S19900C1", this);}
S19900C1 ::S19900C1(){ note_ctor("S19900C1", this);} // tgen

static void Test_S19900C1()
{
  extern Class_Descriptor cd_S19900C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S19900C1, buf);
    S19900C1 *dp, &lv = *(dp=new (buf) S19900C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S19900C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19900C1)");
    /*is_ambiguous_... S19900C1::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), 0, "S19900C1");
    /*is_ambiguous_... S19900C1::S19900C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19900C7*), 0, "S19900C1");
    check_base_class_offset(lv, (S7856C24*)(S19900C8*)(S19900C3*), 0, "S19900C1");
    /*is_ambiguous_... S19900C8::S19900C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19900C7*)(S19900C8*)(S19900C3*), 0, "S19900C1");
    /*is_ambiguous_... S19900C3::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19900C3*), ABISELECT(17,9), "S19900C1");
    /*is_ambiguous_... S19900C1::S19900C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19900C7*), ABISELECT(17,9), "S19900C1");
    /*is_ambiguous_... S19900C8::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19900C8*)(S19900C3*), ABISELECT(17,9), "S19900C1");
    /*is_ambiguous_... S19900C8::S19900C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19900C7*)(S19900C8*)(S19900C3*), ABISELECT(17,9), "S19900C1");
    /*is_ambiguous_... S19900C3::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19900C3*), ABISELECT(17,9), "S19900C1");
    /*is_ambiguous_... S19900C6::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19900C6*), ABISELECT(17,9), "S19900C1");
    /*is_ambiguous_... S19900C6::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19900C6*), 0, "S19900C1");
    /*is_ambiguous_... S19900C1::S19900C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19900C7*), 0, "S19900C1");
    check_base_class_offset(lv, (S19900C7*)(S19900C6*), 0, "S19900C1");
    check_base_class_offset(lv, (S19900C6*)(S19900C3*), 0, "S19900C1");
    check_base_class_offset(lv, (S19900C6*)(S19900C8*)(S19900C3*), 0, "S19900C1");
    /*is_ambiguous_... S19900C3::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19900C3*), ABISELECT(8,4), "S19900C1");
    /*is_ambiguous_... S19900C8::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19900C8*)(S19900C3*), ABISELECT(16,8), "S19900C1");
    /*is_ambiguous_... S19900C8::S19900C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19900C7*)(S19900C8*)(S19900C3*), ABISELECT(8,4), "S19900C1");
    /*is_ambiguous_... S19900C8::S19900C7 */ AMB_check_base_class_offset(lv, (S19900C7*)(S19900C8*)(S19900C3*), ABISELECT(8,4), "S19900C1");
    check_base_class_offset(lv, (S19900C8*)(S19900C3*), ABISELECT(8,4), "S19900C1");
    check_base_class_offset(lv, (S19900C3*), ABISELECT(8,4), "S19900C1");
    check_base_class_offset(lv, (S7856C9_nt*), 0, "S19900C1");
    test_class_info(&lv, &cd_S19900C1);
    dp->~S19900C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19900C1(Test_S19900C1, "S19900C1", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S19900C1C1Ev();
extern void _ZN8S19900C1D2Ev();
Name_Map name_map_S19900C1[] = {
  NSPAIR(_ZN8S19900C1C1Ev),
  NSPAIR(_ZN8S19900C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19900C7;
extern VTBL_ENTRY _ZTI8S19900C7[];
extern  VTBL_ENTRY _ZTV8S19900C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19900C7[];
extern Class_Descriptor cd_S19900C6;
extern VTBL_ENTRY _ZTI8S19900C6[];
extern  VTBL_ENTRY _ZTV8S19900C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19900C6[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19900C7;
extern VTBL_ENTRY _ZTI8S19900C7[];
extern  VTBL_ENTRY _ZTV8S19900C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19900C7[];
extern Class_Descriptor cd_S19900C8;
extern VTBL_ENTRY _ZTI8S19900C8[];
extern  VTBL_ENTRY _ZTV8S19900C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19900C8[];
extern Class_Descriptor cd_S19900C3;
extern VTBL_ENTRY _ZTI8S19900C3[];
extern  VTBL_ENTRY _ZTV8S19900C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19900C3[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
static Base_Class bases_S19900C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    ABISELECT(17,9), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(17,9), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19900C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19900C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19900C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19900C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19900C3,    ABISELECT(8,4), //bcp->offset
    11, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19900C1[];
extern void _ZN8S19900C1D1Ev();
extern void _ZN8S19900C1D0Ev();
extern void ABISELECT(_ZTv0_n64_N8S19900C1D1Ev,_ZTv0_n32_N8S19900C1D1Ev)();
extern void ABISELECT(_ZThn8_N8S19900C1D1Ev,_ZThn4_N8S19900C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19900C1D0Ev,_ZTv0_n32_N8S19900C1D0Ev)();
extern void ABISELECT(_ZThn8_N8S19900C1D0Ev,_ZThn4_N8S19900C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19900C1[] = {
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  0,
  (VTBL_ENTRY)&(_ZTI8S19900C1[0]),
  (VTBL_ENTRY)&_ZN8S19900C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19900C1D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19900C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19900C1D1Ev,_ZTv0_n32_N8S19900C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19900C1D0Ev,_ZTv0_n32_N8S19900C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S19900C1[];
extern void _ZN8S19900C3D1Ev();
extern void _ZN8S19900C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19900C3__8S19900C1[] = {
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S19900C3[0]),
  (VTBL_ENTRY)&_ZN8S19900C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19900C3D0Ev,
};
extern void _ZN8S19900C8D1Ev();
extern void _ZN8S19900C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19900C88S19900C3__8S19900C1[] = {
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S19900C8[0]),
  (VTBL_ENTRY)&_ZN8S19900C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19900C8D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19900C78S19900C88S19900C3__A1__8S19900C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S19900C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19900C6__8S19900C88S19900C3__8S19900C1[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S19900C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19900C6__8S19900C3__8S19900C1[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S19900C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19900C6__8S19900C1[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  0,
  (VTBL_ENTRY)&(_ZTI8S19900C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19900C7__8S19900C1[] = {
  0,
  ABISELECT(17,9),
  0,
  (VTBL_ENTRY)&(_ZTI8S19900C7[0]),
};
static  VTT_ENTRY vtt_S19900C1[] = {
  {&(_ZTV8S19900C1[9]),  9,21},
  {&(_ZTV8S19900C1[19]),  19,21},
  {&(_ZTV8S19900C1[9]),  9,21},
  {&(_ZTV8S19900C1[9]),  9,21},
  {&(_tg__ZTV8S19900C3__8S19900C1[7]),  7,9},
  {&(_tg__ZTV8S19900C88S19900C3__8S19900C1[7]),  7,9},
  {&(_tg__ZTV8S19900C78S19900C88S19900C3__A1__8S19900C1[4]),  4,4},
  {&(_tg__ZTV8S19900C6__8S19900C88S19900C3__8S19900C1[6]),  6,6},
  {&(_tg__ZTV8S19900C6__8S19900C88S19900C3__8S19900C1[6]),  6,6},
  {&(_tg__ZTV8S19900C6__8S19900C3__8S19900C1[6]),  6,6},
  {&(_tg__ZTV8S19900C6__8S19900C3__8S19900C1[6]),  6,6},
  {&(_tg__ZTV8S19900C6__8S19900C1[6]),  6,6},
  {&(_tg__ZTV8S19900C6__8S19900C1[6]),  6,6},
  {&(_tg__ZTV8S19900C7__8S19900C1[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S19900C1[];
extern  VTBL_ENTRY _ZTV8S19900C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19900C1[];
static VTBL_ENTRY alt_thunk_names187[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19900C1D0Ev,_ZTv0_n32_N8S19900C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S19900C1D0Ev,_ZThn4_N8S19900C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19900C1D1Ev,_ZTv0_n32_N8S19900C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S19900C1D1Ev,_ZThn4_N8S19900C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19900C1 = {  "S19900C1", // class name
  bases_S19900C1, 14,
  &(vtc_S19900C1[0]), // expected_vtbl_contents
  &(vtt_S19900C1[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S19900C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19900C1),21, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19900C1),14, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names187,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4314C3  {
  char s4314c3f0;
  int s4314c3f1;
  virtual  ~S4314C3(); // _ZN7S4314C3D1Ev
  virtual void  v2(); // _ZN7S4314C32v2Ev
  S4314C3(); // tgen
};
//SIG(-1 S4314C3) C1{ vd v1 Fc Fi}


 S4314C3 ::~S4314C3(){ note_dtor("S4314C3", this);}
void  S4314C3 ::v2(){vfunc_called(this, "_ZN7S4314C32v2Ev");}
S4314C3 ::S4314C3(){ note_ctor("S4314C3", this);} // tgen

static void Test_S4314C3()
{
  extern Class_Descriptor cd_S4314C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S4314C3, buf);
    S4314C3 *dp, &lv = *(dp=new (buf) S4314C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S4314C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4314C3)");
    check_field_offset(lv, s4314c3f0, ABISELECT(8,4), "S4314C3.s4314c3f0");
    check_field_offset(lv, s4314c3f1, ABISELECT(12,8), "S4314C3.s4314c3f1");
    test_class_info(&lv, &cd_S4314C3);
    dp->~S4314C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4314C3(Test_S4314C3, "S4314C3", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S4314C3C1Ev();
extern void _ZN7S4314C3D1Ev();
Name_Map name_map_S4314C3[] = {
  NSPAIR(_ZN7S4314C3C1Ev),
  NSPAIR(_ZN7S4314C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4314C3[];
extern void _ZN7S4314C3D1Ev();
extern void _ZN7S4314C3D0Ev();
extern void _ZN7S4314C32v2Ev();
static  VTBL_ENTRY vtc_S4314C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4314C3[0]),
  (VTBL_ENTRY)&_ZN7S4314C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4314C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4314C32v2Ev,
};
extern VTBL_ENTRY _ZTI7S4314C3[];
extern  VTBL_ENTRY _ZTV7S4314C3[];
Class_Descriptor cd_S4314C3 = {  "S4314C3", // class name
  0,0,//no base classes
  &(vtc_S4314C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S4314C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4314C3),5, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4314C2  : S4314C3 {
  int s4314c2f0[2];
  char s4314c2f1;
  ::S2436C5_nt s4314c2f2;
  ::S2436C6 s4314c2f3;
  virtual  ~S4314C2(); // _ZN7S4314C2D1Ev
  virtual void  v3(); // _ZN7S4314C22v3Ev
  S4314C2(); // tgen
};
//SIG(-1 S4314C2) C1{ BC2{ vd v2 Fc Fi} vd v1 Fi[2] Fc FC3{ Fp} FC4{ BC5{ vd v5 Fc Fi} vd v3 v4 FL[4]}}


 S4314C2 ::~S4314C2(){ note_dtor("S4314C2", this);}
void  S4314C2 ::v3(){vfunc_called(this, "_ZN7S4314C22v3Ev");}
S4314C2 ::S4314C2(){ note_ctor("S4314C2", this);} // tgen

static void Test_S4314C2()
{
  extern Class_Descriptor cd_S4314C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,19)];
    init_test(&cd_S4314C2, buf);
    S4314C2 *dp, &lv = *(dp=new (buf) S4314C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,72), "sizeof(S4314C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4314C2)");
    check_base_class_offset(lv, (S4314C3*), 0, "S4314C2");
    check_field_offset(lv, s4314c2f0, ABISELECT(16,12), "S4314C2.s4314c2f0");
    check_field_offset(lv, s4314c2f1, ABISELECT(24,20), "S4314C2.s4314c2f1");
    check_field_offset(lv, s4314c2f2, ABISELECT(32,24), "S4314C2.s4314c2f2");
    check_field_offset(lv, s4314c2f3, ABISELECT(40,28), "S4314C2.s4314c2f3");
    test_class_info(&lv, &cd_S4314C2);
    dp->~S4314C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4314C2(Test_S4314C2, "S4314C2", ABISELECT(88,72));

#else // __cplusplus

extern void _ZN7S4314C2C1Ev();
extern void _ZN7S4314C2D1Ev();
Name_Map name_map_S4314C2[] = {
  NSPAIR(_ZN7S4314C2C1Ev),
  NSPAIR(_ZN7S4314C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4314C3;
extern VTBL_ENTRY _ZTI7S4314C3[];
extern  VTBL_ENTRY _ZTV7S4314C3[];
static Base_Class bases_S4314C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4314C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4314C2[];
extern void _ZN7S4314C2D1Ev();
extern void _ZN7S4314C2D0Ev();
extern void _ZN7S4314C32v2Ev();
extern void _ZN7S4314C22v3Ev();
static  VTBL_ENTRY vtc_S4314C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4314C2[0]),
  (VTBL_ENTRY)&_ZN7S4314C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4314C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4314C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4314C22v3Ev,
};
extern VTBL_ENTRY _ZTI7S4314C2[];
extern  VTBL_ENTRY _ZTV7S4314C2[];
Class_Descriptor cd_S4314C2 = {  "S4314C2", // class name
  bases_S4314C2, 1,
  &(vtc_S4314C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,72), // object size
  NSPAIRA(_ZTI7S4314C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4314C2),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4314C1  : S4314C2 {
  int s4314c1f0[3];
  void *s4314c1f1[2];
  int s4314c1f2;
  void *s4314c1f3[2];
  int s4314c1f4;
  void *s4314c1f5;
  char s4314c1f6[31];
  virtual  ~S4314C1(); // _ZN7S4314C1D1Ev
  virtual void  v1(); // _ZN7S4314C12v1Ev
  S4314C1(); // tgen
};
//SIG(1 S4314C1) C1{ BC2{ BC3{ vd v2 Fc Fi} vd v3 Fi[2] Fc FC4{ Fp} FC5{ BC6{ vd v6 Fc Fi} vd v4 v5 FL[4]}} vd v1 Fi[3] Fp[2] Fi Fp[2] Fi Fp Fc[31]}


 S4314C1 ::~S4314C1(){ note_dtor("S4314C1", this);}
void  S4314C1 ::v1(){vfunc_called(this, "_ZN7S4314C12v1Ev");}
S4314C1 ::S4314C1(){ note_ctor("S4314C1", this);} // tgen

static void Test_S4314C1()
{
  extern Class_Descriptor cd_S4314C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(25,37)];
    init_test(&cd_S4314C1, buf);
    S4314C1 *dp, &lv = *(dp=new (buf) S4314C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,144), "sizeof(S4314C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4314C1)");
    check_base_class_offset(lv, (S4314C3*)(S4314C2*), 0, "S4314C1");
    check_base_class_offset(lv, (S4314C2*), 0, "S4314C1");
    check_field_offset(lv, s4314c1f0, ABISELECT(88,72), "S4314C1.s4314c1f0");
    check_field_offset(lv, s4314c1f1, ABISELECT(104,84), "S4314C1.s4314c1f1");
    check_field_offset(lv, s4314c1f2, ABISELECT(120,92), "S4314C1.s4314c1f2");
    check_field_offset(lv, s4314c1f3, ABISELECT(128,96), "S4314C1.s4314c1f3");
    check_field_offset(lv, s4314c1f4, ABISELECT(144,104), "S4314C1.s4314c1f4");
    check_field_offset(lv, s4314c1f5, ABISELECT(152,108), "S4314C1.s4314c1f5");
    check_field_offset(lv, s4314c1f6, ABISELECT(160,112), "S4314C1.s4314c1f6");
    test_class_info(&lv, &cd_S4314C1);
    dp->~S4314C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4314C1(Test_S4314C1, "S4314C1", ABISELECT(192,144));

#else // __cplusplus

extern void _ZN7S4314C1C1Ev();
extern void _ZN7S4314C1D1Ev();
Name_Map name_map_S4314C1[] = {
  NSPAIR(_ZN7S4314C1C1Ev),
  NSPAIR(_ZN7S4314C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4314C3;
extern VTBL_ENTRY _ZTI7S4314C3[];
extern  VTBL_ENTRY _ZTV7S4314C3[];
extern Class_Descriptor cd_S4314C2;
extern VTBL_ENTRY _ZTI7S4314C2[];
extern  VTBL_ENTRY _ZTV7S4314C2[];
static Base_Class bases_S4314C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4314C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4314C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4314C1[];
extern void _ZN7S4314C1D1Ev();
extern void _ZN7S4314C1D0Ev();
extern void _ZN7S4314C32v2Ev();
extern void _ZN7S4314C22v3Ev();
extern void _ZN7S4314C12v1Ev();
static  VTBL_ENTRY vtc_S4314C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4314C1[0]),
  (VTBL_ENTRY)&_ZN7S4314C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4314C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4314C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4314C22v3Ev,
  (VTBL_ENTRY)&_ZN7S4314C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S4314C1[];
extern  VTBL_ENTRY _ZTV7S4314C1[];
Class_Descriptor cd_S4314C1 = {  "S4314C1", // class name
  bases_S4314C1, 2,
  &(vtc_S4314C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(192,144), // object size
  NSPAIRA(_ZTI7S4314C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4314C1),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4680C3  {
  char s4680c3f0;
  int s4680c3f1;
  virtual  ~S4680C3(); // _ZN7S4680C3D1Ev
  virtual void  v3(); // _ZN7S4680C32v3Ev
  S4680C3(); // tgen
};
//SIG(-1 S4680C3) C1{ vd v1 Fc Fi}


 S4680C3 ::~S4680C3(){ note_dtor("S4680C3", this);}
void  S4680C3 ::v3(){vfunc_called(this, "_ZN7S4680C32v3Ev");}
S4680C3 ::S4680C3(){ note_ctor("S4680C3", this);} // tgen

static void Test_S4680C3()
{
  extern Class_Descriptor cd_S4680C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S4680C3, buf);
    S4680C3 *dp, &lv = *(dp=new (buf) S4680C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S4680C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4680C3)");
    check_field_offset(lv, s4680c3f0, ABISELECT(8,4), "S4680C3.s4680c3f0");
    check_field_offset(lv, s4680c3f1, ABISELECT(12,8), "S4680C3.s4680c3f1");
    test_class_info(&lv, &cd_S4680C3);
    dp->~S4680C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4680C3(Test_S4680C3, "S4680C3", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S4680C3C1Ev();
extern void _ZN7S4680C3D1Ev();
Name_Map name_map_S4680C3[] = {
  NSPAIR(_ZN7S4680C3C1Ev),
  NSPAIR(_ZN7S4680C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4680C3[];
extern void _ZN7S4680C3D1Ev();
extern void _ZN7S4680C3D0Ev();
extern void _ZN7S4680C32v3Ev();
static  VTBL_ENTRY vtc_S4680C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4680C3[0]),
  (VTBL_ENTRY)&_ZN7S4680C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4680C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4680C32v3Ev,
};
extern VTBL_ENTRY _ZTI7S4680C3[];
extern  VTBL_ENTRY _ZTV7S4680C3[];
Class_Descriptor cd_S4680C3 = {  "S4680C3", // class name
  0,0,//no base classes
  &(vtc_S4680C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S4680C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4680C3),5, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4680C2  : S4680C3 {
  int s4680c2f0[2];
  char s4680c2f1;
  ::S2436C5_nt s4680c2f2;
  ::S2436C6 s4680c2f3;
  virtual  ~S4680C2(); // _ZN7S4680C2D1Ev
  virtual void  v4(); // _ZN7S4680C22v4Ev
  S4680C2(); // tgen
};
//SIG(-1 S4680C2) C1{ BC2{ vd v2 Fc Fi} vd v1 Fi[2] Fc FC3{ Fp} FC4{ BC5{ vd v5 Fc Fi} vd v3 v4 FL[4]}}


 S4680C2 ::~S4680C2(){ note_dtor("S4680C2", this);}
void  S4680C2 ::v4(){vfunc_called(this, "_ZN7S4680C22v4Ev");}
S4680C2 ::S4680C2(){ note_ctor("S4680C2", this);} // tgen

static void Test_S4680C2()
{
  extern Class_Descriptor cd_S4680C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,19)];
    init_test(&cd_S4680C2, buf);
    S4680C2 *dp, &lv = *(dp=new (buf) S4680C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,72), "sizeof(S4680C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4680C2)");
    check_base_class_offset(lv, (S4680C3*), 0, "S4680C2");
    check_field_offset(lv, s4680c2f0, ABISELECT(16,12), "S4680C2.s4680c2f0");
    check_field_offset(lv, s4680c2f1, ABISELECT(24,20), "S4680C2.s4680c2f1");
    check_field_offset(lv, s4680c2f2, ABISELECT(32,24), "S4680C2.s4680c2f2");
    check_field_offset(lv, s4680c2f3, ABISELECT(40,28), "S4680C2.s4680c2f3");
    test_class_info(&lv, &cd_S4680C2);
    dp->~S4680C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4680C2(Test_S4680C2, "S4680C2", ABISELECT(88,72));

#else // __cplusplus

extern void _ZN7S4680C2C1Ev();
extern void _ZN7S4680C2D1Ev();
Name_Map name_map_S4680C2[] = {
  NSPAIR(_ZN7S4680C2C1Ev),
  NSPAIR(_ZN7S4680C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4680C3;
extern VTBL_ENTRY _ZTI7S4680C3[];
extern  VTBL_ENTRY _ZTV7S4680C3[];
static Base_Class bases_S4680C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4680C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4680C2[];
extern void _ZN7S4680C2D1Ev();
extern void _ZN7S4680C2D0Ev();
extern void _ZN7S4680C32v3Ev();
extern void _ZN7S4680C22v4Ev();
static  VTBL_ENTRY vtc_S4680C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4680C2[0]),
  (VTBL_ENTRY)&_ZN7S4680C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4680C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4680C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4680C22v4Ev,
};
extern VTBL_ENTRY _ZTI7S4680C2[];
extern  VTBL_ENTRY _ZTV7S4680C2[];
Class_Descriptor cd_S4680C2 = {  "S4680C2", // class name
  bases_S4680C2, 1,
  &(vtc_S4680C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,72), // object size
  NSPAIRA(_ZTI7S4680C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4680C2),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4680C6_nt  : S4680C3 {
  void *s4680c6f0;
  char s4680c6f1[2];
  virtual  ~S4680C6_nt(); // _ZN10S4680C6_ntD1Ev
  virtual void  v5(); // _ZN10S4680C6_nt2v5Ev
  S4680C6_nt(); // tgen
};
//SIG(-1 S4680C6_nt) C1{ BC2{ vd v2 Fc Fi} vd v1 Fp Fc[2]}


 S4680C6_nt ::~S4680C6_nt(){ note_dtor("S4680C6_nt", this);}
void  S4680C6_nt ::v5(){vfunc_called(this, "_ZN10S4680C6_nt2v5Ev");}
S4680C6_nt ::S4680C6_nt(){ note_ctor("S4680C6_nt", this);} // tgen

//skip512 S4680C6_nt

#else // __cplusplus

extern void _ZN10S4680C6_ntC1Ev();
extern void _ZN10S4680C6_ntD1Ev();
Name_Map name_map_S4680C6_nt[] = {
  NSPAIR(_ZN10S4680C6_ntC1Ev),
  NSPAIR(_ZN10S4680C6_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4680C3;
extern VTBL_ENTRY _ZTI7S4680C3[];
extern  VTBL_ENTRY _ZTV7S4680C3[];
static Base_Class bases_S4680C6_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4680C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S4680C6_nt[];
extern void _ZN10S4680C6_ntD1Ev();
extern void _ZN10S4680C6_ntD0Ev();
extern void _ZN7S4680C32v3Ev();
extern void _ZN10S4680C6_nt2v5Ev();
static  VTBL_ENTRY vtc_S4680C6_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S4680C6_nt[0]),
  (VTBL_ENTRY)&_ZN10S4680C6_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S4680C6_ntD0Ev,
  (VTBL_ENTRY)&_ZN7S4680C32v3Ev,
  (VTBL_ENTRY)&_ZN10S4680C6_nt2v5Ev,
};
extern VTBL_ENTRY _ZTI10S4680C6_nt[];
VTBL_ENTRY *P__ZTI10S4680C6_nt = _ZTI10S4680C6_nt; 
extern  VTBL_ENTRY _ZTV10S4680C6_nt[];
Class_Descriptor cd_S4680C6_nt = {  "S4680C6_nt", // class name
  bases_S4680C6_nt, 1,
  &(vtc_S4680C6_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI10S4680C6_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S4680C6_nt),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4680C1  : S4680C2 , S4680C6_nt {
  void *s4680c1f0;
  int s4680c1f1;
  virtual  ~S4680C1(); // _ZN7S4680C1D1Ev
  virtual void  v1(); // _ZN7S4680C12v1Ev
  virtual void  v2(); // _ZN7S4680C12v2Ev
  S4680C1(); // tgen
};
//SIG(1 S4680C1) C1{ BC2{ BC3{ vd v3 Fc Fi} vd v4 Fi[2] Fc FC4{ Fp} FC5{ BC6{ vd v8 Fc Fi} vd v6 v7 FL[4]}} BC7{ BC3 vd v5 Fp Fc[2]} vd v1 v2 Fp Fi}


 S4680C1 ::~S4680C1(){ note_dtor("S4680C1", this);}
void  S4680C1 ::v1(){vfunc_called(this, "_ZN7S4680C12v1Ev");}
void  S4680C1 ::v2(){vfunc_called(this, "_ZN7S4680C12v2Ev");}
S4680C1 ::S4680C1(){ note_ctor("S4680C1", this);} // tgen

static void Test_S4680C1()
{
  extern Class_Descriptor cd_S4680C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,26)];
    init_test(&cd_S4680C1, buf);
    S4680C1 *dp, &lv = *(dp=new (buf) S4680C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,100), "sizeof(S4680C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4680C1)");
    check_base_class_offset(lv, (S4680C3*)(S4680C2*), 0, "S4680C1");
    check_base_class_offset(lv, (S4680C2*), 0, "S4680C1");
    check_base_class_offset(lv, (S4680C3*)(S4680C6_nt*), ABISELECT(88,72), "S4680C1");
    check_base_class_offset(lv, (S4680C6_nt*), ABISELECT(88,72), "S4680C1");
    check_field_offset(lv, s4680c1f0, ABISELECT(120,92), "S4680C1.s4680c1f0");
    check_field_offset(lv, s4680c1f1, ABISELECT(128,96), "S4680C1.s4680c1f1");
    test_class_info(&lv, &cd_S4680C1);
    dp->~S4680C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4680C1(Test_S4680C1, "S4680C1", ABISELECT(136,100));

#else // __cplusplus

extern void _ZN7S4680C1C1Ev();
extern void _ZN7S4680C1D1Ev();
Name_Map name_map_S4680C1[] = {
  NSPAIR(_ZN7S4680C1C1Ev),
  NSPAIR(_ZN7S4680C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4680C3;
extern VTBL_ENTRY _ZTI7S4680C3[];
extern  VTBL_ENTRY _ZTV7S4680C3[];
extern Class_Descriptor cd_S4680C2;
extern VTBL_ENTRY _ZTI7S4680C2[];
extern  VTBL_ENTRY _ZTV7S4680C2[];
extern Class_Descriptor cd_S4680C3;
extern VTBL_ENTRY _ZTI7S4680C3[];
extern  VTBL_ENTRY _ZTV7S4680C3[];
extern Class_Descriptor cd_S4680C6_nt;
extern VTBL_ENTRY _ZTI10S4680C6_nt[];
extern  VTBL_ENTRY _ZTV10S4680C6_nt[];
static Base_Class bases_S4680C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4680C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4680C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4680C3,    ABISELECT(88,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S4680C6_nt,    ABISELECT(88,72), //bcp->offset
    8, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4680C1[];
extern void _ZN7S4680C1D1Ev();
extern void _ZN7S4680C1D0Ev();
extern void _ZN7S4680C32v3Ev();
extern void _ZN7S4680C22v4Ev();
extern void _ZN7S4680C12v1Ev();
extern void _ZN7S4680C12v2Ev();
extern void ABISELECT(_ZThn88_N7S4680C1D1Ev,_ZThn72_N7S4680C1D1Ev)();
extern void ABISELECT(_ZThn88_N7S4680C1D0Ev,_ZThn72_N7S4680C1D0Ev)();
extern void _ZN7S4680C32v3Ev();
extern void _ZN10S4680C6_nt2v5Ev();
static  VTBL_ENTRY vtc_S4680C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4680C1[0]),
  (VTBL_ENTRY)&_ZN7S4680C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4680C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4680C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4680C22v4Ev,
  (VTBL_ENTRY)&_ZN7S4680C12v1Ev,
  (VTBL_ENTRY)&_ZN7S4680C12v2Ev,
  ABISELECT(-88,-72),
  (VTBL_ENTRY)&(_ZTI7S4680C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn88_N7S4680C1D1Ev,_ZThn72_N7S4680C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn88_N7S4680C1D0Ev,_ZThn72_N7S4680C1D0Ev),
  (VTBL_ENTRY)&_ZN7S4680C32v3Ev,
  (VTBL_ENTRY)&_ZN10S4680C6_nt2v5Ev,
};
extern VTBL_ENTRY _ZTI7S4680C1[];
extern  VTBL_ENTRY _ZTV7S4680C1[];
Class_Descriptor cd_S4680C1 = {  "S4680C1", // class name
  bases_S4680C1, 4,
  &(vtc_S4680C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(136,100), // object size
  NSPAIRA(_ZTI7S4680C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S4680C1),14, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  4, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8593C2  {
  virtual  ~S8593C2(); // _ZN7S8593C2D1Ev
  virtual void  v13(); // _ZN7S8593C23v13Ev
  virtual void  v14(); // _ZN7S8593C23v14Ev
  virtual void  v15(); // _ZN7S8593C23v15Ev
  virtual void  v16(); // _ZN7S8593C23v16Ev
  virtual void  v17(); // _ZN7S8593C23v17Ev
  virtual void  v18(); // _ZN7S8593C23v18Ev
  virtual void  v19(); // _ZN7S8593C23v19Ev
  virtual void  v20(); // _ZN7S8593C23v20Ev
  virtual void  v21(); // _ZN7S8593C23v21Ev
  virtual void  v22(); // _ZN7S8593C23v22Ev
  virtual void  v23(); // _ZN7S8593C23v23Ev
  virtual void  v24(); // _ZN7S8593C23v24Ev
  S8593C2(); // tgen
};
//SIG(-1 S8593C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12}


 S8593C2 ::~S8593C2(){ note_dtor("S8593C2", this);}
void  S8593C2 ::v13(){vfunc_called(this, "_ZN7S8593C23v13Ev");}
void  S8593C2 ::v14(){vfunc_called(this, "_ZN7S8593C23v14Ev");}
void  S8593C2 ::v15(){vfunc_called(this, "_ZN7S8593C23v15Ev");}
void  S8593C2 ::v16(){vfunc_called(this, "_ZN7S8593C23v16Ev");}
void  S8593C2 ::v17(){vfunc_called(this, "_ZN7S8593C23v17Ev");}
void  S8593C2 ::v18(){vfunc_called(this, "_ZN7S8593C23v18Ev");}
void  S8593C2 ::v19(){vfunc_called(this, "_ZN7S8593C23v19Ev");}
void  S8593C2 ::v20(){vfunc_called(this, "_ZN7S8593C23v20Ev");}
void  S8593C2 ::v21(){vfunc_called(this, "_ZN7S8593C23v21Ev");}
void  S8593C2 ::v22(){vfunc_called(this, "_ZN7S8593C23v22Ev");}
void  S8593C2 ::v23(){vfunc_called(this, "_ZN7S8593C23v23Ev");}
void  S8593C2 ::v24(){vfunc_called(this, "_ZN7S8593C23v24Ev");}
S8593C2 ::S8593C2(){ note_ctor("S8593C2", this);} // tgen

static void Test_S8593C2()
{
  extern Class_Descriptor cd_S8593C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S8593C2, buf);
    S8593C2 *dp, &lv = *(dp=new (buf) S8593C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S8593C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8593C2)");
    test_class_info(&lv, &cd_S8593C2);
    dp->~S8593C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8593C2(Test_S8593C2, "S8593C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S8593C2C1Ev();
extern void _ZN7S8593C2D1Ev();
Name_Map name_map_S8593C2[] = {
  NSPAIR(_ZN7S8593C2C1Ev),
  NSPAIR(_ZN7S8593C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8593C2[];
extern void _ZN7S8593C2D1Ev();
extern void _ZN7S8593C2D0Ev();
extern void _ZN7S8593C23v13Ev();
extern void _ZN7S8593C23v14Ev();
extern void _ZN7S8593C23v15Ev();
extern void _ZN7S8593C23v16Ev();
extern void _ZN7S8593C23v17Ev();
extern void _ZN7S8593C23v18Ev();
extern void _ZN7S8593C23v19Ev();
extern void _ZN7S8593C23v20Ev();
extern void _ZN7S8593C23v21Ev();
extern void _ZN7S8593C23v22Ev();
extern void _ZN7S8593C23v23Ev();
extern void _ZN7S8593C23v24Ev();
static  VTBL_ENTRY vtc_S8593C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8593C2[0]),
  (VTBL_ENTRY)&_ZN7S8593C2D1Ev,
  (VTBL_ENTRY)&_ZN7S8593C2D0Ev,
  (VTBL_ENTRY)&_ZN7S8593C23v13Ev,
  (VTBL_ENTRY)&_ZN7S8593C23v14Ev,
  (VTBL_ENTRY)&_ZN7S8593C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8593C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8593C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8593C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8593C23v19Ev,
  (VTBL_ENTRY)&_ZN7S8593C23v20Ev,
  (VTBL_ENTRY)&_ZN7S8593C23v21Ev,
  (VTBL_ENTRY)&_ZN7S8593C23v22Ev,
  (VTBL_ENTRY)&_ZN7S8593C23v23Ev,
  (VTBL_ENTRY)&_ZN7S8593C23v24Ev,
};
extern VTBL_ENTRY _ZTI7S8593C2[];
extern  VTBL_ENTRY _ZTV7S8593C2[];
Class_Descriptor cd_S8593C2 = {  "S8593C2", // class name
  0,0,//no base classes
  &(vtc_S8593C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S8593C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8593C2),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8593C1  : S8593C2 {
  void *s8593c1f0[5];
  virtual  ~S8593C1(); // _ZN7S8593C1D1Ev
  virtual void  v1(); // _ZN7S8593C12v1Ev
  virtual void  v2(); // _ZN7S8593C12v2Ev
  virtual void  v3(); // _ZN7S8593C12v3Ev
  virtual void  v4(); // _ZN7S8593C12v4Ev
  virtual void  v5(); // _ZN7S8593C12v5Ev
  virtual void  v6(); // _ZN7S8593C12v6Ev
  virtual void  v7(); // _ZN7S8593C12v7Ev
  virtual void  v8(); // _ZN7S8593C12v8Ev
  virtual void  v9(); // _ZN7S8593C12v9Ev
  virtual void  v10(); // _ZN7S8593C13v10Ev
  virtual void  v11(); // _ZN7S8593C13v11Ev
  virtual void  v12(); // _ZN7S8593C13v12Ev
  S8593C1(); // tgen
};
//SIG(1 S8593C1) C1{ BC2{ vd v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 Fp[5]}


 S8593C1 ::~S8593C1(){ note_dtor("S8593C1", this);}
void  S8593C1 ::v1(){vfunc_called(this, "_ZN7S8593C12v1Ev");}
void  S8593C1 ::v2(){vfunc_called(this, "_ZN7S8593C12v2Ev");}
void  S8593C1 ::v3(){vfunc_called(this, "_ZN7S8593C12v3Ev");}
void  S8593C1 ::v4(){vfunc_called(this, "_ZN7S8593C12v4Ev");}
void  S8593C1 ::v5(){vfunc_called(this, "_ZN7S8593C12v5Ev");}
void  S8593C1 ::v6(){vfunc_called(this, "_ZN7S8593C12v6Ev");}
void  S8593C1 ::v7(){vfunc_called(this, "_ZN7S8593C12v7Ev");}
void  S8593C1 ::v8(){vfunc_called(this, "_ZN7S8593C12v8Ev");}
void  S8593C1 ::v9(){vfunc_called(this, "_ZN7S8593C12v9Ev");}
void  S8593C1 ::v10(){vfunc_called(this, "_ZN7S8593C13v10Ev");}
void  S8593C1 ::v11(){vfunc_called(this, "_ZN7S8593C13v11Ev");}
void  S8593C1 ::v12(){vfunc_called(this, "_ZN7S8593C13v12Ev");}
S8593C1 ::S8593C1(){ note_ctor("S8593C1", this);} // tgen

static void Test_S8593C1()
{
  extern Class_Descriptor cd_S8593C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[7];
    init_test(&cd_S8593C1, buf);
    S8593C1 *dp, &lv = *(dp=new (buf) S8593C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S8593C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8593C1)");
    check_base_class_offset(lv, (S8593C2*), 0, "S8593C1");
    check_field_offset(lv, s8593c1f0, ABISELECT(8,4), "S8593C1.s8593c1f0");
    test_class_info(&lv, &cd_S8593C1);
    dp->~S8593C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8593C1(Test_S8593C1, "S8593C1", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN7S8593C1C1Ev();
extern void _ZN7S8593C1D1Ev();
Name_Map name_map_S8593C1[] = {
  NSPAIR(_ZN7S8593C1C1Ev),
  NSPAIR(_ZN7S8593C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8593C2;
extern VTBL_ENTRY _ZTI7S8593C2[];
extern  VTBL_ENTRY _ZTV7S8593C2[];
static Base_Class bases_S8593C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8593C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8593C1[];
extern void _ZN7S8593C1D1Ev();
extern void _ZN7S8593C1D0Ev();
extern void _ZN7S8593C23v13Ev();
extern void _ZN7S8593C23v14Ev();
extern void _ZN7S8593C23v15Ev();
extern void _ZN7S8593C23v16Ev();
extern void _ZN7S8593C23v17Ev();
extern void _ZN7S8593C23v18Ev();
extern void _ZN7S8593C23v19Ev();
extern void _ZN7S8593C23v20Ev();
extern void _ZN7S8593C23v21Ev();
extern void _ZN7S8593C23v22Ev();
extern void _ZN7S8593C23v23Ev();
extern void _ZN7S8593C23v24Ev();
extern void _ZN7S8593C12v1Ev();
extern void _ZN7S8593C12v2Ev();
extern void _ZN7S8593C12v3Ev();
extern void _ZN7S8593C12v4Ev();
extern void _ZN7S8593C12v5Ev();
extern void _ZN7S8593C12v6Ev();
extern void _ZN7S8593C12v7Ev();
extern void _ZN7S8593C12v8Ev();
extern void _ZN7S8593C12v9Ev();
extern void _ZN7S8593C13v10Ev();
extern void _ZN7S8593C13v11Ev();
extern void _ZN7S8593C13v12Ev();
static  VTBL_ENTRY vtc_S8593C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8593C1[0]),
  (VTBL_ENTRY)&_ZN7S8593C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8593C1D0Ev,
  (VTBL_ENTRY)&_ZN7S8593C23v13Ev,
  (VTBL_ENTRY)&_ZN7S8593C23v14Ev,
  (VTBL_ENTRY)&_ZN7S8593C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8593C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8593C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8593C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8593C23v19Ev,
  (VTBL_ENTRY)&_ZN7S8593C23v20Ev,
  (VTBL_ENTRY)&_ZN7S8593C23v21Ev,
  (VTBL_ENTRY)&_ZN7S8593C23v22Ev,
  (VTBL_ENTRY)&_ZN7S8593C23v23Ev,
  (VTBL_ENTRY)&_ZN7S8593C23v24Ev,
  (VTBL_ENTRY)&_ZN7S8593C12v1Ev,
  (VTBL_ENTRY)&_ZN7S8593C12v2Ev,
  (VTBL_ENTRY)&_ZN7S8593C12v3Ev,
  (VTBL_ENTRY)&_ZN7S8593C12v4Ev,
  (VTBL_ENTRY)&_ZN7S8593C12v5Ev,
  (VTBL_ENTRY)&_ZN7S8593C12v6Ev,
  (VTBL_ENTRY)&_ZN7S8593C12v7Ev,
  (VTBL_ENTRY)&_ZN7S8593C12v8Ev,
  (VTBL_ENTRY)&_ZN7S8593C12v9Ev,
  (VTBL_ENTRY)&_ZN7S8593C13v10Ev,
  (VTBL_ENTRY)&_ZN7S8593C13v11Ev,
  (VTBL_ENTRY)&_ZN7S8593C13v12Ev,
};
extern VTBL_ENTRY _ZTI7S8593C1[];
extern  VTBL_ENTRY _ZTV7S8593C1[];
Class_Descriptor cd_S8593C1 = {  "S8593C1", // class name
  bases_S8593C1, 1,
  &(vtc_S8593C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI7S8593C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8593C1),28, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8592C2  {
  virtual  ~S8592C2(); // _ZN7S8592C2D1Ev
  virtual void  v13(); // _ZN7S8592C23v13Ev
  virtual void  v14(); // _ZN7S8592C23v14Ev
  virtual void  v15(); // _ZN7S8592C23v15Ev
  virtual void  v16(); // _ZN7S8592C23v16Ev
  virtual void  v17(); // _ZN7S8592C23v17Ev
  virtual void  v18(); // _ZN7S8592C23v18Ev
  virtual void  v19(); // _ZN7S8592C23v19Ev
  virtual void  v20(); // _ZN7S8592C23v20Ev
  virtual void  v21(); // _ZN7S8592C23v21Ev
  virtual void  v22(); // _ZN7S8592C23v22Ev
  virtual void  v23(); // _ZN7S8592C23v23Ev
  virtual void  v24(); // _ZN7S8592C23v24Ev
  S8592C2(); // tgen
};
//SIG(-1 S8592C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12}


 S8592C2 ::~S8592C2(){ note_dtor("S8592C2", this);}
void  S8592C2 ::v13(){vfunc_called(this, "_ZN7S8592C23v13Ev");}
void  S8592C2 ::v14(){vfunc_called(this, "_ZN7S8592C23v14Ev");}
void  S8592C2 ::v15(){vfunc_called(this, "_ZN7S8592C23v15Ev");}
void  S8592C2 ::v16(){vfunc_called(this, "_ZN7S8592C23v16Ev");}
void  S8592C2 ::v17(){vfunc_called(this, "_ZN7S8592C23v17Ev");}
void  S8592C2 ::v18(){vfunc_called(this, "_ZN7S8592C23v18Ev");}
void  S8592C2 ::v19(){vfunc_called(this, "_ZN7S8592C23v19Ev");}
void  S8592C2 ::v20(){vfunc_called(this, "_ZN7S8592C23v20Ev");}
void  S8592C2 ::v21(){vfunc_called(this, "_ZN7S8592C23v21Ev");}
void  S8592C2 ::v22(){vfunc_called(this, "_ZN7S8592C23v22Ev");}
void  S8592C2 ::v23(){vfunc_called(this, "_ZN7S8592C23v23Ev");}
void  S8592C2 ::v24(){vfunc_called(this, "_ZN7S8592C23v24Ev");}
S8592C2 ::S8592C2(){ note_ctor("S8592C2", this);} // tgen

static void Test_S8592C2()
{
  extern Class_Descriptor cd_S8592C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S8592C2, buf);
    S8592C2 *dp, &lv = *(dp=new (buf) S8592C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S8592C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8592C2)");
    test_class_info(&lv, &cd_S8592C2);
    dp->~S8592C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8592C2(Test_S8592C2, "S8592C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S8592C2C1Ev();
extern void _ZN7S8592C2D1Ev();
Name_Map name_map_S8592C2[] = {
  NSPAIR(_ZN7S8592C2C1Ev),
  NSPAIR(_ZN7S8592C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8592C2[];
extern void _ZN7S8592C2D1Ev();
extern void _ZN7S8592C2D0Ev();
extern void _ZN7S8592C23v13Ev();
extern void _ZN7S8592C23v14Ev();
extern void _ZN7S8592C23v15Ev();
extern void _ZN7S8592C23v16Ev();
extern void _ZN7S8592C23v17Ev();
extern void _ZN7S8592C23v18Ev();
extern void _ZN7S8592C23v19Ev();
extern void _ZN7S8592C23v20Ev();
extern void _ZN7S8592C23v21Ev();
extern void _ZN7S8592C23v22Ev();
extern void _ZN7S8592C23v23Ev();
extern void _ZN7S8592C23v24Ev();
static  VTBL_ENTRY vtc_S8592C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8592C2[0]),
  (VTBL_ENTRY)&_ZN7S8592C2D1Ev,
  (VTBL_ENTRY)&_ZN7S8592C2D0Ev,
  (VTBL_ENTRY)&_ZN7S8592C23v13Ev,
  (VTBL_ENTRY)&_ZN7S8592C23v14Ev,
  (VTBL_ENTRY)&_ZN7S8592C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8592C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8592C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8592C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8592C23v19Ev,
  (VTBL_ENTRY)&_ZN7S8592C23v20Ev,
  (VTBL_ENTRY)&_ZN7S8592C23v21Ev,
  (VTBL_ENTRY)&_ZN7S8592C23v22Ev,
  (VTBL_ENTRY)&_ZN7S8592C23v23Ev,
  (VTBL_ENTRY)&_ZN7S8592C23v24Ev,
};
extern VTBL_ENTRY _ZTI7S8592C2[];
extern  VTBL_ENTRY _ZTV7S8592C2[];
Class_Descriptor cd_S8592C2 = {  "S8592C2", // class name
  0,0,//no base classes
  &(vtc_S8592C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S8592C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8592C2),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8592C1  : S8592C2 {
  void *s8592c1f0[2];
  virtual  ~S8592C1(); // _ZN7S8592C1D1Ev
  virtual void  v1(); // _ZN7S8592C12v1Ev
  virtual void  v2(); // _ZN7S8592C12v2Ev
  virtual void  v3(); // _ZN7S8592C12v3Ev
  virtual void  v4(); // _ZN7S8592C12v4Ev
  virtual void  v5(); // _ZN7S8592C12v5Ev
  virtual void  v6(); // _ZN7S8592C12v6Ev
  virtual void  v7(); // _ZN7S8592C12v7Ev
  virtual void  v8(); // _ZN7S8592C12v8Ev
  virtual void  v9(); // _ZN7S8592C12v9Ev
  virtual void  v10(); // _ZN7S8592C13v10Ev
  virtual void  v11(); // _ZN7S8592C13v11Ev
  virtual void  v12(); // _ZN7S8592C13v12Ev
  S8592C1(); // tgen
};
//SIG(1 S8592C1) C1{ BC2{ vd v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 Fp[2]}


 S8592C1 ::~S8592C1(){ note_dtor("S8592C1", this);}
void  S8592C1 ::v1(){vfunc_called(this, "_ZN7S8592C12v1Ev");}
void  S8592C1 ::v2(){vfunc_called(this, "_ZN7S8592C12v2Ev");}
void  S8592C1 ::v3(){vfunc_called(this, "_ZN7S8592C12v3Ev");}
void  S8592C1 ::v4(){vfunc_called(this, "_ZN7S8592C12v4Ev");}
void  S8592C1 ::v5(){vfunc_called(this, "_ZN7S8592C12v5Ev");}
void  S8592C1 ::v6(){vfunc_called(this, "_ZN7S8592C12v6Ev");}
void  S8592C1 ::v7(){vfunc_called(this, "_ZN7S8592C12v7Ev");}
void  S8592C1 ::v8(){vfunc_called(this, "_ZN7S8592C12v8Ev");}
void  S8592C1 ::v9(){vfunc_called(this, "_ZN7S8592C12v9Ev");}
void  S8592C1 ::v10(){vfunc_called(this, "_ZN7S8592C13v10Ev");}
void  S8592C1 ::v11(){vfunc_called(this, "_ZN7S8592C13v11Ev");}
void  S8592C1 ::v12(){vfunc_called(this, "_ZN7S8592C13v12Ev");}
S8592C1 ::S8592C1(){ note_ctor("S8592C1", this);} // tgen

static void Test_S8592C1()
{
  extern Class_Descriptor cd_S8592C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S8592C1, buf);
    S8592C1 *dp, &lv = *(dp=new (buf) S8592C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S8592C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8592C1)");
    check_base_class_offset(lv, (S8592C2*), 0, "S8592C1");
    check_field_offset(lv, s8592c1f0, ABISELECT(8,4), "S8592C1.s8592c1f0");
    test_class_info(&lv, &cd_S8592C1);
    dp->~S8592C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8592C1(Test_S8592C1, "S8592C1", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S8592C1C1Ev();
extern void _ZN7S8592C1D1Ev();
Name_Map name_map_S8592C1[] = {
  NSPAIR(_ZN7S8592C1C1Ev),
  NSPAIR(_ZN7S8592C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8592C2;
extern VTBL_ENTRY _ZTI7S8592C2[];
extern  VTBL_ENTRY _ZTV7S8592C2[];
static Base_Class bases_S8592C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8592C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8592C1[];
extern void _ZN7S8592C1D1Ev();
extern void _ZN7S8592C1D0Ev();
extern void _ZN7S8592C23v13Ev();
extern void _ZN7S8592C23v14Ev();
extern void _ZN7S8592C23v15Ev();
extern void _ZN7S8592C23v16Ev();
extern void _ZN7S8592C23v17Ev();
extern void _ZN7S8592C23v18Ev();
extern void _ZN7S8592C23v19Ev();
extern void _ZN7S8592C23v20Ev();
extern void _ZN7S8592C23v21Ev();
extern void _ZN7S8592C23v22Ev();
extern void _ZN7S8592C23v23Ev();
extern void _ZN7S8592C23v24Ev();
extern void _ZN7S8592C12v1Ev();
extern void _ZN7S8592C12v2Ev();
extern void _ZN7S8592C12v3Ev();
extern void _ZN7S8592C12v4Ev();
extern void _ZN7S8592C12v5Ev();
extern void _ZN7S8592C12v6Ev();
extern void _ZN7S8592C12v7Ev();
extern void _ZN7S8592C12v8Ev();
extern void _ZN7S8592C12v9Ev();
extern void _ZN7S8592C13v10Ev();
extern void _ZN7S8592C13v11Ev();
extern void _ZN7S8592C13v12Ev();
static  VTBL_ENTRY vtc_S8592C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8592C1[0]),
  (VTBL_ENTRY)&_ZN7S8592C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8592C1D0Ev,
  (VTBL_ENTRY)&_ZN7S8592C23v13Ev,
  (VTBL_ENTRY)&_ZN7S8592C23v14Ev,
  (VTBL_ENTRY)&_ZN7S8592C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8592C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8592C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8592C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8592C23v19Ev,
  (VTBL_ENTRY)&_ZN7S8592C23v20Ev,
  (VTBL_ENTRY)&_ZN7S8592C23v21Ev,
  (VTBL_ENTRY)&_ZN7S8592C23v22Ev,
  (VTBL_ENTRY)&_ZN7S8592C23v23Ev,
  (VTBL_ENTRY)&_ZN7S8592C23v24Ev,
  (VTBL_ENTRY)&_ZN7S8592C12v1Ev,
  (VTBL_ENTRY)&_ZN7S8592C12v2Ev,
  (VTBL_ENTRY)&_ZN7S8592C12v3Ev,
  (VTBL_ENTRY)&_ZN7S8592C12v4Ev,
  (VTBL_ENTRY)&_ZN7S8592C12v5Ev,
  (VTBL_ENTRY)&_ZN7S8592C12v6Ev,
  (VTBL_ENTRY)&_ZN7S8592C12v7Ev,
  (VTBL_ENTRY)&_ZN7S8592C12v8Ev,
  (VTBL_ENTRY)&_ZN7S8592C12v9Ev,
  (VTBL_ENTRY)&_ZN7S8592C13v10Ev,
  (VTBL_ENTRY)&_ZN7S8592C13v11Ev,
  (VTBL_ENTRY)&_ZN7S8592C13v12Ev,
};
extern VTBL_ENTRY _ZTI7S8592C1[];
extern  VTBL_ENTRY _ZTV7S8592C1[];
Class_Descriptor cd_S8592C1 = {  "S8592C1", // class name
  bases_S8592C1, 1,
  &(vtc_S8592C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S8592C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8592C1),28, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8594C2  {
  virtual  ~S8594C2(); // _ZN7S8594C2D1Ev
  virtual void  v13(); // _ZN7S8594C23v13Ev
  virtual void  v14(); // _ZN7S8594C23v14Ev
  virtual void  v15(); // _ZN7S8594C23v15Ev
  virtual void  v16(); // _ZN7S8594C23v16Ev
  virtual void  v17(); // _ZN7S8594C23v17Ev
  virtual void  v18(); // _ZN7S8594C23v18Ev
  virtual void  v19(); // _ZN7S8594C23v19Ev
  virtual void  v20(); // _ZN7S8594C23v20Ev
  virtual void  v21(); // _ZN7S8594C23v21Ev
  virtual void  v22(); // _ZN7S8594C23v22Ev
  virtual void  v23(); // _ZN7S8594C23v23Ev
  virtual void  v24(); // _ZN7S8594C23v24Ev
  S8594C2(); // tgen
};
//SIG(-1 S8594C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12}


 S8594C2 ::~S8594C2(){ note_dtor("S8594C2", this);}
void  S8594C2 ::v13(){vfunc_called(this, "_ZN7S8594C23v13Ev");}
void  S8594C2 ::v14(){vfunc_called(this, "_ZN7S8594C23v14Ev");}
void  S8594C2 ::v15(){vfunc_called(this, "_ZN7S8594C23v15Ev");}
void  S8594C2 ::v16(){vfunc_called(this, "_ZN7S8594C23v16Ev");}
void  S8594C2 ::v17(){vfunc_called(this, "_ZN7S8594C23v17Ev");}
void  S8594C2 ::v18(){vfunc_called(this, "_ZN7S8594C23v18Ev");}
void  S8594C2 ::v19(){vfunc_called(this, "_ZN7S8594C23v19Ev");}
void  S8594C2 ::v20(){vfunc_called(this, "_ZN7S8594C23v20Ev");}
void  S8594C2 ::v21(){vfunc_called(this, "_ZN7S8594C23v21Ev");}
void  S8594C2 ::v22(){vfunc_called(this, "_ZN7S8594C23v22Ev");}
void  S8594C2 ::v23(){vfunc_called(this, "_ZN7S8594C23v23Ev");}
void  S8594C2 ::v24(){vfunc_called(this, "_ZN7S8594C23v24Ev");}
S8594C2 ::S8594C2(){ note_ctor("S8594C2", this);} // tgen

static void Test_S8594C2()
{
  extern Class_Descriptor cd_S8594C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S8594C2, buf);
    S8594C2 *dp, &lv = *(dp=new (buf) S8594C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S8594C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8594C2)");
    test_class_info(&lv, &cd_S8594C2);
    dp->~S8594C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8594C2(Test_S8594C2, "S8594C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S8594C2C1Ev();
extern void _ZN7S8594C2D1Ev();
Name_Map name_map_S8594C2[] = {
  NSPAIR(_ZN7S8594C2C1Ev),
  NSPAIR(_ZN7S8594C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8594C2[];
extern void _ZN7S8594C2D1Ev();
extern void _ZN7S8594C2D0Ev();
extern void _ZN7S8594C23v13Ev();
extern void _ZN7S8594C23v14Ev();
extern void _ZN7S8594C23v15Ev();
extern void _ZN7S8594C23v16Ev();
extern void _ZN7S8594C23v17Ev();
extern void _ZN7S8594C23v18Ev();
extern void _ZN7S8594C23v19Ev();
extern void _ZN7S8594C23v20Ev();
extern void _ZN7S8594C23v21Ev();
extern void _ZN7S8594C23v22Ev();
extern void _ZN7S8594C23v23Ev();
extern void _ZN7S8594C23v24Ev();
static  VTBL_ENTRY vtc_S8594C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8594C2[0]),
  (VTBL_ENTRY)&_ZN7S8594C2D1Ev,
  (VTBL_ENTRY)&_ZN7S8594C2D0Ev,
  (VTBL_ENTRY)&_ZN7S8594C23v13Ev,
  (VTBL_ENTRY)&_ZN7S8594C23v14Ev,
  (VTBL_ENTRY)&_ZN7S8594C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8594C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8594C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8594C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8594C23v19Ev,
  (VTBL_ENTRY)&_ZN7S8594C23v20Ev,
  (VTBL_ENTRY)&_ZN7S8594C23v21Ev,
  (VTBL_ENTRY)&_ZN7S8594C23v22Ev,
  (VTBL_ENTRY)&_ZN7S8594C23v23Ev,
  (VTBL_ENTRY)&_ZN7S8594C23v24Ev,
};
extern VTBL_ENTRY _ZTI7S8594C2[];
extern  VTBL_ENTRY _ZTV7S8594C2[];
Class_Descriptor cd_S8594C2 = {  "S8594C2", // class name
  0,0,//no base classes
  &(vtc_S8594C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S8594C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8594C2),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8594C1  : S8594C2 {
  void *s8594c1f0;
  virtual  ~S8594C1(); // _ZN7S8594C1D1Ev
  virtual void  v1(); // _ZN7S8594C12v1Ev
  virtual void  v2(); // _ZN7S8594C12v2Ev
  virtual void  v3(); // _ZN7S8594C12v3Ev
  virtual void  v4(); // _ZN7S8594C12v4Ev
  virtual void  v5(); // _ZN7S8594C12v5Ev
  virtual void  v6(); // _ZN7S8594C12v6Ev
  virtual void  v7(); // _ZN7S8594C12v7Ev
  virtual void  v8(); // _ZN7S8594C12v8Ev
  virtual void  v9(); // _ZN7S8594C12v9Ev
  virtual void  v10(); // _ZN7S8594C13v10Ev
  virtual void  v11(); // _ZN7S8594C13v11Ev
  virtual void  v12(); // _ZN7S8594C13v12Ev
  S8594C1(); // tgen
};
//SIG(1 S8594C1) C1{ BC2{ vd v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 Fp}


 S8594C1 ::~S8594C1(){ note_dtor("S8594C1", this);}
void  S8594C1 ::v1(){vfunc_called(this, "_ZN7S8594C12v1Ev");}
void  S8594C1 ::v2(){vfunc_called(this, "_ZN7S8594C12v2Ev");}
void  S8594C1 ::v3(){vfunc_called(this, "_ZN7S8594C12v3Ev");}
void  S8594C1 ::v4(){vfunc_called(this, "_ZN7S8594C12v4Ev");}
void  S8594C1 ::v5(){vfunc_called(this, "_ZN7S8594C12v5Ev");}
void  S8594C1 ::v6(){vfunc_called(this, "_ZN7S8594C12v6Ev");}
void  S8594C1 ::v7(){vfunc_called(this, "_ZN7S8594C12v7Ev");}
void  S8594C1 ::v8(){vfunc_called(this, "_ZN7S8594C12v8Ev");}
void  S8594C1 ::v9(){vfunc_called(this, "_ZN7S8594C12v9Ev");}
void  S8594C1 ::v10(){vfunc_called(this, "_ZN7S8594C13v10Ev");}
void  S8594C1 ::v11(){vfunc_called(this, "_ZN7S8594C13v11Ev");}
void  S8594C1 ::v12(){vfunc_called(this, "_ZN7S8594C13v12Ev");}
S8594C1 ::S8594C1(){ note_ctor("S8594C1", this);} // tgen

static void Test_S8594C1()
{
  extern Class_Descriptor cd_S8594C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S8594C1, buf);
    S8594C1 *dp, &lv = *(dp=new (buf) S8594C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S8594C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8594C1)");
    check_base_class_offset(lv, (S8594C2*), 0, "S8594C1");
    check_field_offset(lv, s8594c1f0, ABISELECT(8,4), "S8594C1.s8594c1f0");
    test_class_info(&lv, &cd_S8594C1);
    dp->~S8594C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8594C1(Test_S8594C1, "S8594C1", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S8594C1C1Ev();
extern void _ZN7S8594C1D1Ev();
Name_Map name_map_S8594C1[] = {
  NSPAIR(_ZN7S8594C1C1Ev),
  NSPAIR(_ZN7S8594C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8594C2;
extern VTBL_ENTRY _ZTI7S8594C2[];
extern  VTBL_ENTRY _ZTV7S8594C2[];
static Base_Class bases_S8594C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8594C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8594C1[];
extern void _ZN7S8594C1D1Ev();
extern void _ZN7S8594C1D0Ev();
extern void _ZN7S8594C23v13Ev();
extern void _ZN7S8594C23v14Ev();
extern void _ZN7S8594C23v15Ev();
extern void _ZN7S8594C23v16Ev();
extern void _ZN7S8594C23v17Ev();
extern void _ZN7S8594C23v18Ev();
extern void _ZN7S8594C23v19Ev();
extern void _ZN7S8594C23v20Ev();
extern void _ZN7S8594C23v21Ev();
extern void _ZN7S8594C23v22Ev();
extern void _ZN7S8594C23v23Ev();
extern void _ZN7S8594C23v24Ev();
extern void _ZN7S8594C12v1Ev();
extern void _ZN7S8594C12v2Ev();
extern void _ZN7S8594C12v3Ev();
extern void _ZN7S8594C12v4Ev();
extern void _ZN7S8594C12v5Ev();
extern void _ZN7S8594C12v6Ev();
extern void _ZN7S8594C12v7Ev();
extern void _ZN7S8594C12v8Ev();
extern void _ZN7S8594C12v9Ev();
extern void _ZN7S8594C13v10Ev();
extern void _ZN7S8594C13v11Ev();
extern void _ZN7S8594C13v12Ev();
static  VTBL_ENTRY vtc_S8594C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8594C1[0]),
  (VTBL_ENTRY)&_ZN7S8594C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8594C1D0Ev,
  (VTBL_ENTRY)&_ZN7S8594C23v13Ev,
  (VTBL_ENTRY)&_ZN7S8594C23v14Ev,
  (VTBL_ENTRY)&_ZN7S8594C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8594C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8594C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8594C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8594C23v19Ev,
  (VTBL_ENTRY)&_ZN7S8594C23v20Ev,
  (VTBL_ENTRY)&_ZN7S8594C23v21Ev,
  (VTBL_ENTRY)&_ZN7S8594C23v22Ev,
  (VTBL_ENTRY)&_ZN7S8594C23v23Ev,
  (VTBL_ENTRY)&_ZN7S8594C23v24Ev,
  (VTBL_ENTRY)&_ZN7S8594C12v1Ev,
  (VTBL_ENTRY)&_ZN7S8594C12v2Ev,
  (VTBL_ENTRY)&_ZN7S8594C12v3Ev,
  (VTBL_ENTRY)&_ZN7S8594C12v4Ev,
  (VTBL_ENTRY)&_ZN7S8594C12v5Ev,
  (VTBL_ENTRY)&_ZN7S8594C12v6Ev,
  (VTBL_ENTRY)&_ZN7S8594C12v7Ev,
  (VTBL_ENTRY)&_ZN7S8594C12v8Ev,
  (VTBL_ENTRY)&_ZN7S8594C12v9Ev,
  (VTBL_ENTRY)&_ZN7S8594C13v10Ev,
  (VTBL_ENTRY)&_ZN7S8594C13v11Ev,
  (VTBL_ENTRY)&_ZN7S8594C13v12Ev,
};
extern VTBL_ENTRY _ZTI7S8594C1[];
extern  VTBL_ENTRY _ZTV7S8594C1[];
Class_Descriptor cd_S8594C1 = {  "S8594C1", // class name
  bases_S8594C1, 1,
  &(vtc_S8594C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S8594C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8594C1),28, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6466C2  {
  virtual  ~S6466C2(); // _ZN7S6466C2D1Ev
  virtual void  v13(); // _ZN7S6466C23v13Ev
  virtual void  v14(); // _ZN7S6466C23v14Ev
  virtual void  v15(); // _ZN7S6466C23v15Ev
  virtual void  v16(); // _ZN7S6466C23v16Ev
  virtual void  v17(); // _ZN7S6466C23v17Ev
  virtual void  v18(); // _ZN7S6466C23v18Ev
  virtual void  v19(); // _ZN7S6466C23v19Ev
  virtual void  v20(); // _ZN7S6466C23v20Ev
  virtual void  v21(); // _ZN7S6466C23v21Ev
  virtual void  v22(); // _ZN7S6466C23v22Ev
  virtual void  v23(); // _ZN7S6466C23v23Ev
  virtual void  v24(); // _ZN7S6466C23v24Ev
  S6466C2(); // tgen
};
//SIG(-1 S6466C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12}


 S6466C2 ::~S6466C2(){ note_dtor("S6466C2", this);}
void  S6466C2 ::v13(){vfunc_called(this, "_ZN7S6466C23v13Ev");}
void  S6466C2 ::v14(){vfunc_called(this, "_ZN7S6466C23v14Ev");}
void  S6466C2 ::v15(){vfunc_called(this, "_ZN7S6466C23v15Ev");}
void  S6466C2 ::v16(){vfunc_called(this, "_ZN7S6466C23v16Ev");}
void  S6466C2 ::v17(){vfunc_called(this, "_ZN7S6466C23v17Ev");}
void  S6466C2 ::v18(){vfunc_called(this, "_ZN7S6466C23v18Ev");}
void  S6466C2 ::v19(){vfunc_called(this, "_ZN7S6466C23v19Ev");}
void  S6466C2 ::v20(){vfunc_called(this, "_ZN7S6466C23v20Ev");}
void  S6466C2 ::v21(){vfunc_called(this, "_ZN7S6466C23v21Ev");}
void  S6466C2 ::v22(){vfunc_called(this, "_ZN7S6466C23v22Ev");}
void  S6466C2 ::v23(){vfunc_called(this, "_ZN7S6466C23v23Ev");}
void  S6466C2 ::v24(){vfunc_called(this, "_ZN7S6466C23v24Ev");}
S6466C2 ::S6466C2(){ note_ctor("S6466C2", this);} // tgen

static void Test_S6466C2()
{
  extern Class_Descriptor cd_S6466C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S6466C2, buf);
    S6466C2 *dp, &lv = *(dp=new (buf) S6466C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S6466C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6466C2)");
    test_class_info(&lv, &cd_S6466C2);
    dp->~S6466C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6466C2(Test_S6466C2, "S6466C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S6466C2C1Ev();
extern void _ZN7S6466C2D1Ev();
Name_Map name_map_S6466C2[] = {
  NSPAIR(_ZN7S6466C2C1Ev),
  NSPAIR(_ZN7S6466C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6466C2[];
extern void _ZN7S6466C2D1Ev();
extern void _ZN7S6466C2D0Ev();
extern void _ZN7S6466C23v13Ev();
extern void _ZN7S6466C23v14Ev();
extern void _ZN7S6466C23v15Ev();
extern void _ZN7S6466C23v16Ev();
extern void _ZN7S6466C23v17Ev();
extern void _ZN7S6466C23v18Ev();
extern void _ZN7S6466C23v19Ev();
extern void _ZN7S6466C23v20Ev();
extern void _ZN7S6466C23v21Ev();
extern void _ZN7S6466C23v22Ev();
extern void _ZN7S6466C23v23Ev();
extern void _ZN7S6466C23v24Ev();
static  VTBL_ENTRY vtc_S6466C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6466C2[0]),
  (VTBL_ENTRY)&_ZN7S6466C2D1Ev,
  (VTBL_ENTRY)&_ZN7S6466C2D0Ev,
  (VTBL_ENTRY)&_ZN7S6466C23v13Ev,
  (VTBL_ENTRY)&_ZN7S6466C23v14Ev,
  (VTBL_ENTRY)&_ZN7S6466C23v15Ev,
  (VTBL_ENTRY)&_ZN7S6466C23v16Ev,
  (VTBL_ENTRY)&_ZN7S6466C23v17Ev,
  (VTBL_ENTRY)&_ZN7S6466C23v18Ev,
  (VTBL_ENTRY)&_ZN7S6466C23v19Ev,
  (VTBL_ENTRY)&_ZN7S6466C23v20Ev,
  (VTBL_ENTRY)&_ZN7S6466C23v21Ev,
  (VTBL_ENTRY)&_ZN7S6466C23v22Ev,
  (VTBL_ENTRY)&_ZN7S6466C23v23Ev,
  (VTBL_ENTRY)&_ZN7S6466C23v24Ev,
};
extern VTBL_ENTRY _ZTI7S6466C2[];
extern  VTBL_ENTRY _ZTV7S6466C2[];
Class_Descriptor cd_S6466C2 = {  "S6466C2", // class name
  0,0,//no base classes
  &(vtc_S6466C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S6466C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6466C2),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6466C1  : S6466C2 {
  virtual  ~S6466C1(); // _ZN7S6466C1D1Ev
  virtual void  v1(); // _ZN7S6466C12v1Ev
  virtual void  v2(); // _ZN7S6466C12v2Ev
  virtual void  v3(); // _ZN7S6466C12v3Ev
  virtual void  v4(); // _ZN7S6466C12v4Ev
  virtual void  v5(); // _ZN7S6466C12v5Ev
  virtual void  v6(); // _ZN7S6466C12v6Ev
  virtual void  v7(); // _ZN7S6466C12v7Ev
  virtual void  v8(); // _ZN7S6466C12v8Ev
  virtual void  v9(); // _ZN7S6466C12v9Ev
  virtual void  v10(); // _ZN7S6466C13v10Ev
  virtual void  v11(); // _ZN7S6466C13v11Ev
  virtual void  v12(); // _ZN7S6466C13v12Ev
  S6466C1(); // tgen
};
//SIG(1 S6466C1) C1{ BC2{ vd v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12}


 S6466C1 ::~S6466C1(){ note_dtor("S6466C1", this);}
void  S6466C1 ::v1(){vfunc_called(this, "_ZN7S6466C12v1Ev");}
void  S6466C1 ::v2(){vfunc_called(this, "_ZN7S6466C12v2Ev");}
void  S6466C1 ::v3(){vfunc_called(this, "_ZN7S6466C12v3Ev");}
void  S6466C1 ::v4(){vfunc_called(this, "_ZN7S6466C12v4Ev");}
void  S6466C1 ::v5(){vfunc_called(this, "_ZN7S6466C12v5Ev");}
void  S6466C1 ::v6(){vfunc_called(this, "_ZN7S6466C12v6Ev");}
void  S6466C1 ::v7(){vfunc_called(this, "_ZN7S6466C12v7Ev");}
void  S6466C1 ::v8(){vfunc_called(this, "_ZN7S6466C12v8Ev");}
void  S6466C1 ::v9(){vfunc_called(this, "_ZN7S6466C12v9Ev");}
void  S6466C1 ::v10(){vfunc_called(this, "_ZN7S6466C13v10Ev");}
void  S6466C1 ::v11(){vfunc_called(this, "_ZN7S6466C13v11Ev");}
void  S6466C1 ::v12(){vfunc_called(this, "_ZN7S6466C13v12Ev");}
S6466C1 ::S6466C1(){ note_ctor("S6466C1", this);} // tgen

static void Test_S6466C1()
{
  extern Class_Descriptor cd_S6466C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S6466C1, buf);
    S6466C1 *dp, &lv = *(dp=new (buf) S6466C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S6466C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6466C1)");
    check_base_class_offset(lv, (S6466C2*), 0, "S6466C1");
    test_class_info(&lv, &cd_S6466C1);
    dp->~S6466C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6466C1(Test_S6466C1, "S6466C1", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S6466C1C1Ev();
extern void _ZN7S6466C1D1Ev();
Name_Map name_map_S6466C1[] = {
  NSPAIR(_ZN7S6466C1C1Ev),
  NSPAIR(_ZN7S6466C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6466C2;
extern VTBL_ENTRY _ZTI7S6466C2[];
extern  VTBL_ENTRY _ZTV7S6466C2[];
static Base_Class bases_S6466C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6466C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6466C1[];
extern void _ZN7S6466C1D1Ev();
extern void _ZN7S6466C1D0Ev();
extern void _ZN7S6466C23v13Ev();
extern void _ZN7S6466C23v14Ev();
extern void _ZN7S6466C23v15Ev();
extern void _ZN7S6466C23v16Ev();
extern void _ZN7S6466C23v17Ev();
extern void _ZN7S6466C23v18Ev();
extern void _ZN7S6466C23v19Ev();
extern void _ZN7S6466C23v20Ev();
extern void _ZN7S6466C23v21Ev();
extern void _ZN7S6466C23v22Ev();
extern void _ZN7S6466C23v23Ev();
extern void _ZN7S6466C23v24Ev();
extern void _ZN7S6466C12v1Ev();
extern void _ZN7S6466C12v2Ev();
extern void _ZN7S6466C12v3Ev();
extern void _ZN7S6466C12v4Ev();
extern void _ZN7S6466C12v5Ev();
extern void _ZN7S6466C12v6Ev();
extern void _ZN7S6466C12v7Ev();
extern void _ZN7S6466C12v8Ev();
extern void _ZN7S6466C12v9Ev();
extern void _ZN7S6466C13v10Ev();
extern void _ZN7S6466C13v11Ev();
extern void _ZN7S6466C13v12Ev();
static  VTBL_ENTRY vtc_S6466C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6466C1[0]),
  (VTBL_ENTRY)&_ZN7S6466C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6466C1D0Ev,
  (VTBL_ENTRY)&_ZN7S6466C23v13Ev,
  (VTBL_ENTRY)&_ZN7S6466C23v14Ev,
  (VTBL_ENTRY)&_ZN7S6466C23v15Ev,
  (VTBL_ENTRY)&_ZN7S6466C23v16Ev,
  (VTBL_ENTRY)&_ZN7S6466C23v17Ev,
  (VTBL_ENTRY)&_ZN7S6466C23v18Ev,
  (VTBL_ENTRY)&_ZN7S6466C23v19Ev,
  (VTBL_ENTRY)&_ZN7S6466C23v20Ev,
  (VTBL_ENTRY)&_ZN7S6466C23v21Ev,
  (VTBL_ENTRY)&_ZN7S6466C23v22Ev,
  (VTBL_ENTRY)&_ZN7S6466C23v23Ev,
  (VTBL_ENTRY)&_ZN7S6466C23v24Ev,
  (VTBL_ENTRY)&_ZN7S6466C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6466C12v2Ev,
  (VTBL_ENTRY)&_ZN7S6466C12v3Ev,
  (VTBL_ENTRY)&_ZN7S6466C12v4Ev,
  (VTBL_ENTRY)&_ZN7S6466C12v5Ev,
  (VTBL_ENTRY)&_ZN7S6466C12v6Ev,
  (VTBL_ENTRY)&_ZN7S6466C12v7Ev,
  (VTBL_ENTRY)&_ZN7S6466C12v8Ev,
  (VTBL_ENTRY)&_ZN7S6466C12v9Ev,
  (VTBL_ENTRY)&_ZN7S6466C13v10Ev,
  (VTBL_ENTRY)&_ZN7S6466C13v11Ev,
  (VTBL_ENTRY)&_ZN7S6466C13v12Ev,
};
extern VTBL_ENTRY _ZTI7S6466C1[];
extern  VTBL_ENTRY _ZTV7S6466C1[];
Class_Descriptor cd_S6466C1 = {  "S6466C1", // class name
  bases_S6466C1, 1,
  &(vtc_S6466C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S6466C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6466C1),28, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8595C2  {
  virtual  ~S8595C2(); // _ZN7S8595C2D1Ev
  virtual void  v13(); // _ZN7S8595C23v13Ev
  virtual void  v14(); // _ZN7S8595C23v14Ev
  virtual void  v15(); // _ZN7S8595C23v15Ev
  virtual void  v16(); // _ZN7S8595C23v16Ev
  virtual void  v17(); // _ZN7S8595C23v17Ev
  virtual void  v18(); // _ZN7S8595C23v18Ev
  virtual void  v19(); // _ZN7S8595C23v19Ev
  virtual void  v20(); // _ZN7S8595C23v20Ev
  virtual void  v21(); // _ZN7S8595C23v21Ev
  virtual void  v22(); // _ZN7S8595C23v22Ev
  virtual void  v23(); // _ZN7S8595C23v23Ev
  virtual void  v24(); // _ZN7S8595C23v24Ev
  S8595C2(); // tgen
};
//SIG(-1 S8595C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12}


 S8595C2 ::~S8595C2(){ note_dtor("S8595C2", this);}
void  S8595C2 ::v13(){vfunc_called(this, "_ZN7S8595C23v13Ev");}
void  S8595C2 ::v14(){vfunc_called(this, "_ZN7S8595C23v14Ev");}
void  S8595C2 ::v15(){vfunc_called(this, "_ZN7S8595C23v15Ev");}
void  S8595C2 ::v16(){vfunc_called(this, "_ZN7S8595C23v16Ev");}
void  S8595C2 ::v17(){vfunc_called(this, "_ZN7S8595C23v17Ev");}
void  S8595C2 ::v18(){vfunc_called(this, "_ZN7S8595C23v18Ev");}
void  S8595C2 ::v19(){vfunc_called(this, "_ZN7S8595C23v19Ev");}
void  S8595C2 ::v20(){vfunc_called(this, "_ZN7S8595C23v20Ev");}
void  S8595C2 ::v21(){vfunc_called(this, "_ZN7S8595C23v21Ev");}
void  S8595C2 ::v22(){vfunc_called(this, "_ZN7S8595C23v22Ev");}
void  S8595C2 ::v23(){vfunc_called(this, "_ZN7S8595C23v23Ev");}
void  S8595C2 ::v24(){vfunc_called(this, "_ZN7S8595C23v24Ev");}
S8595C2 ::S8595C2(){ note_ctor("S8595C2", this);} // tgen

static void Test_S8595C2()
{
  extern Class_Descriptor cd_S8595C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S8595C2, buf);
    S8595C2 *dp, &lv = *(dp=new (buf) S8595C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S8595C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8595C2)");
    test_class_info(&lv, &cd_S8595C2);
    dp->~S8595C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8595C2(Test_S8595C2, "S8595C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S8595C2C1Ev();
extern void _ZN7S8595C2D1Ev();
Name_Map name_map_S8595C2[] = {
  NSPAIR(_ZN7S8595C2C1Ev),
  NSPAIR(_ZN7S8595C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8595C2[];
extern void _ZN7S8595C2D1Ev();
extern void _ZN7S8595C2D0Ev();
extern void _ZN7S8595C23v13Ev();
extern void _ZN7S8595C23v14Ev();
extern void _ZN7S8595C23v15Ev();
extern void _ZN7S8595C23v16Ev();
extern void _ZN7S8595C23v17Ev();
extern void _ZN7S8595C23v18Ev();
extern void _ZN7S8595C23v19Ev();
extern void _ZN7S8595C23v20Ev();
extern void _ZN7S8595C23v21Ev();
extern void _ZN7S8595C23v22Ev();
extern void _ZN7S8595C23v23Ev();
extern void _ZN7S8595C23v24Ev();
static  VTBL_ENTRY vtc_S8595C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8595C2[0]),
  (VTBL_ENTRY)&_ZN7S8595C2D1Ev,
  (VTBL_ENTRY)&_ZN7S8595C2D0Ev,
  (VTBL_ENTRY)&_ZN7S8595C23v13Ev,
  (VTBL_ENTRY)&_ZN7S8595C23v14Ev,
  (VTBL_ENTRY)&_ZN7S8595C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8595C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8595C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8595C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8595C23v19Ev,
  (VTBL_ENTRY)&_ZN7S8595C23v20Ev,
  (VTBL_ENTRY)&_ZN7S8595C23v21Ev,
  (VTBL_ENTRY)&_ZN7S8595C23v22Ev,
  (VTBL_ENTRY)&_ZN7S8595C23v23Ev,
  (VTBL_ENTRY)&_ZN7S8595C23v24Ev,
};
extern VTBL_ENTRY _ZTI7S8595C2[];
extern  VTBL_ENTRY _ZTV7S8595C2[];
Class_Descriptor cd_S8595C2 = {  "S8595C2", // class name
  0,0,//no base classes
  &(vtc_S8595C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S8595C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8595C2),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8595C1  : S8595C2 {
  virtual  ~S8595C1(); // _ZN7S8595C1D1Ev
  virtual void  v1(); // _ZN7S8595C12v1Ev
  virtual void  v2(); // _ZN7S8595C12v2Ev
  virtual void  v3(); // _ZN7S8595C12v3Ev
  virtual void  v4(); // _ZN7S8595C12v4Ev
  virtual void  v5(); // _ZN7S8595C12v5Ev
  virtual void  v6(); // _ZN7S8595C12v6Ev
  virtual void  v7(); // _ZN7S8595C12v7Ev
  virtual void  v8(); // _ZN7S8595C12v8Ev
  virtual void  v9(); // _ZN7S8595C12v9Ev
  virtual void  v10(); // _ZN7S8595C13v10Ev
  virtual void  v11(); // _ZN7S8595C13v11Ev
  virtual void  v12(); // _ZN7S8595C13v12Ev
  S8595C1(); // tgen
};
//SIG(1 S8595C1) C1{ BC2{ vd v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12}


 S8595C1 ::~S8595C1(){ note_dtor("S8595C1", this);}
void  S8595C1 ::v1(){vfunc_called(this, "_ZN7S8595C12v1Ev");}
void  S8595C1 ::v2(){vfunc_called(this, "_ZN7S8595C12v2Ev");}
void  S8595C1 ::v3(){vfunc_called(this, "_ZN7S8595C12v3Ev");}
void  S8595C1 ::v4(){vfunc_called(this, "_ZN7S8595C12v4Ev");}
void  S8595C1 ::v5(){vfunc_called(this, "_ZN7S8595C12v5Ev");}
void  S8595C1 ::v6(){vfunc_called(this, "_ZN7S8595C12v6Ev");}
void  S8595C1 ::v7(){vfunc_called(this, "_ZN7S8595C12v7Ev");}
void  S8595C1 ::v8(){vfunc_called(this, "_ZN7S8595C12v8Ev");}
void  S8595C1 ::v9(){vfunc_called(this, "_ZN7S8595C12v9Ev");}
void  S8595C1 ::v10(){vfunc_called(this, "_ZN7S8595C13v10Ev");}
void  S8595C1 ::v11(){vfunc_called(this, "_ZN7S8595C13v11Ev");}
void  S8595C1 ::v12(){vfunc_called(this, "_ZN7S8595C13v12Ev");}
S8595C1 ::S8595C1(){ note_ctor("S8595C1", this);} // tgen

static void Test_S8595C1()
{
  extern Class_Descriptor cd_S8595C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S8595C1, buf);
    S8595C1 *dp, &lv = *(dp=new (buf) S8595C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S8595C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8595C1)");
    check_base_class_offset(lv, (S8595C2*), 0, "S8595C1");
    test_class_info(&lv, &cd_S8595C1);
    dp->~S8595C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8595C1(Test_S8595C1, "S8595C1", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S8595C1C1Ev();
extern void _ZN7S8595C1D1Ev();
Name_Map name_map_S8595C1[] = {
  NSPAIR(_ZN7S8595C1C1Ev),
  NSPAIR(_ZN7S8595C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8595C2;
extern VTBL_ENTRY _ZTI7S8595C2[];
extern  VTBL_ENTRY _ZTV7S8595C2[];
static Base_Class bases_S8595C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8595C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8595C1[];
extern void _ZN7S8595C1D1Ev();
extern void _ZN7S8595C1D0Ev();
extern void _ZN7S8595C23v13Ev();
extern void _ZN7S8595C23v14Ev();
extern void _ZN7S8595C23v15Ev();
extern void _ZN7S8595C23v16Ev();
extern void _ZN7S8595C23v17Ev();
extern void _ZN7S8595C23v18Ev();
extern void _ZN7S8595C23v19Ev();
extern void _ZN7S8595C23v20Ev();
extern void _ZN7S8595C23v21Ev();
extern void _ZN7S8595C23v22Ev();
extern void _ZN7S8595C23v23Ev();
extern void _ZN7S8595C23v24Ev();
extern void _ZN7S8595C12v1Ev();
extern void _ZN7S8595C12v2Ev();
extern void _ZN7S8595C12v3Ev();
extern void _ZN7S8595C12v4Ev();
extern void _ZN7S8595C12v5Ev();
extern void _ZN7S8595C12v6Ev();
extern void _ZN7S8595C12v7Ev();
extern void _ZN7S8595C12v8Ev();
extern void _ZN7S8595C12v9Ev();
extern void _ZN7S8595C13v10Ev();
extern void _ZN7S8595C13v11Ev();
extern void _ZN7S8595C13v12Ev();
static  VTBL_ENTRY vtc_S8595C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8595C1[0]),
  (VTBL_ENTRY)&_ZN7S8595C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8595C1D0Ev,
  (VTBL_ENTRY)&_ZN7S8595C23v13Ev,
  (VTBL_ENTRY)&_ZN7S8595C23v14Ev,
  (VTBL_ENTRY)&_ZN7S8595C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8595C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8595C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8595C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8595C23v19Ev,
  (VTBL_ENTRY)&_ZN7S8595C23v20Ev,
  (VTBL_ENTRY)&_ZN7S8595C23v21Ev,
  (VTBL_ENTRY)&_ZN7S8595C23v22Ev,
  (VTBL_ENTRY)&_ZN7S8595C23v23Ev,
  (VTBL_ENTRY)&_ZN7S8595C23v24Ev,
  (VTBL_ENTRY)&_ZN7S8595C12v1Ev,
  (VTBL_ENTRY)&_ZN7S8595C12v2Ev,
  (VTBL_ENTRY)&_ZN7S8595C12v3Ev,
  (VTBL_ENTRY)&_ZN7S8595C12v4Ev,
  (VTBL_ENTRY)&_ZN7S8595C12v5Ev,
  (VTBL_ENTRY)&_ZN7S8595C12v6Ev,
  (VTBL_ENTRY)&_ZN7S8595C12v7Ev,
  (VTBL_ENTRY)&_ZN7S8595C12v8Ev,
  (VTBL_ENTRY)&_ZN7S8595C12v9Ev,
  (VTBL_ENTRY)&_ZN7S8595C13v10Ev,
  (VTBL_ENTRY)&_ZN7S8595C13v11Ev,
  (VTBL_ENTRY)&_ZN7S8595C13v12Ev,
};
extern VTBL_ENTRY _ZTI7S8595C1[];
extern  VTBL_ENTRY _ZTV7S8595C1[];
Class_Descriptor cd_S8595C1 = {  "S8595C1", // class name
  bases_S8595C1, 1,
  &(vtc_S8595C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S8595C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8595C1),28, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4775C3  {
  ::S18423C15_nt s4775c3f0;
  int s4775c3f1[2];
  char s4775c3f2;
  virtual  ~S4775C3(); // _ZN7S4775C3D1Ev
  virtual void  v3(); // _ZN7S4775C32v3Ev
  virtual void  v4(); // _ZN7S4775C32v4Ev
  virtual void  v5(); // _ZN7S4775C32v5Ev
  S4775C3(); // tgen
};
//SIG(-1 S4775C3) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S4775C3 ::~S4775C3(){ note_dtor("S4775C3", this);}
void  S4775C3 ::v3(){vfunc_called(this, "_ZN7S4775C32v3Ev");}
void  S4775C3 ::v4(){vfunc_called(this, "_ZN7S4775C32v4Ev");}
void  S4775C3 ::v5(){vfunc_called(this, "_ZN7S4775C32v5Ev");}
S4775C3 ::S4775C3(){ note_ctor("S4775C3", this);} // tgen

static void Test_S4775C3()
{
  extern Class_Descriptor cd_S4775C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S4775C3, buf);
    S4775C3 *dp, &lv = *(dp=new (buf) S4775C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S4775C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4775C3)");
    check_field_offset(lv, s4775c3f0, ABISELECT(8,4), "S4775C3.s4775c3f0");
    check_field_offset(lv, s4775c3f1, ABISELECT(24,16), "S4775C3.s4775c3f1");
    check_field_offset(lv, s4775c3f2, ABISELECT(32,24), "S4775C3.s4775c3f2");
    test_class_info(&lv, &cd_S4775C3);
    dp->~S4775C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4775C3(Test_S4775C3, "S4775C3", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S4775C3C1Ev();
extern void _ZN7S4775C3D1Ev();
Name_Map name_map_S4775C3[] = {
  NSPAIR(_ZN7S4775C3C1Ev),
  NSPAIR(_ZN7S4775C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4775C3[];
extern void _ZN7S4775C3D1Ev();
extern void _ZN7S4775C3D0Ev();
extern void _ZN7S4775C32v3Ev();
extern void _ZN7S4775C32v4Ev();
extern void _ZN7S4775C32v5Ev();
static  VTBL_ENTRY vtc_S4775C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4775C3[0]),
  (VTBL_ENTRY)&_ZN7S4775C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4775C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4775C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4775C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4775C32v5Ev,
};
extern VTBL_ENTRY _ZTI7S4775C3[];
extern  VTBL_ENTRY _ZTV7S4775C3[];
Class_Descriptor cd_S4775C3 = {  "S4775C3", // class name
  0,0,//no base classes
  &(vtc_S4775C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S4775C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4775C3),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4775C2_nt  : S4775C3 {
  void *s4775c2f0;
  virtual void  v6(); // _ZN10S4775C2_nt2v6Ev
  virtual void  v7(); // _ZN10S4775C2_nt2v7Ev
  ~S4775C2_nt(); // tgen
  S4775C2_nt(); // tgen
};
//SIG(-1 S4775C2_nt) C1{ BC2{ vd v3 v4 v5 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} v1 v2 Fp}


void  S4775C2_nt ::v6(){vfunc_called(this, "_ZN10S4775C2_nt2v6Ev");}
void  S4775C2_nt ::v7(){vfunc_called(this, "_ZN10S4775C2_nt2v7Ev");}
S4775C2_nt ::~S4775C2_nt(){ note_dtor("S4775C2_nt", this);} // tgen
S4775C2_nt ::S4775C2_nt(){ note_ctor("S4775C2_nt", this);} // tgen

//skip512 S4775C2_nt

#else // __cplusplus

extern void _ZN10S4775C2_ntC1Ev();
extern void _ZN10S4775C2_ntD1Ev();
Name_Map name_map_S4775C2_nt[] = {
  NSPAIR(_ZN10S4775C2_ntC1Ev),
  NSPAIR(_ZN10S4775C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4775C3;
extern VTBL_ENTRY _ZTI7S4775C3[];
extern  VTBL_ENTRY _ZTV7S4775C3[];
static Base_Class bases_S4775C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4775C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S4775C2_nt[];
extern void _ZN10S4775C2_ntD1Ev();
extern void _ZN10S4775C2_ntD0Ev();
extern void _ZN7S4775C32v3Ev();
extern void _ZN7S4775C32v4Ev();
extern void _ZN7S4775C32v5Ev();
extern void _ZN10S4775C2_nt2v6Ev();
extern void _ZN10S4775C2_nt2v7Ev();
static  VTBL_ENTRY vtc_S4775C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S4775C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S4775C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S4775C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN7S4775C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4775C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4775C32v5Ev,
  (VTBL_ENTRY)&_ZN10S4775C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S4775C2_nt2v7Ev,
};
extern VTBL_ENTRY _ZTI10S4775C2_nt[];
VTBL_ENTRY *P__ZTI10S4775C2_nt = _ZTI10S4775C2_nt; 
extern  VTBL_ENTRY _ZTV10S4775C2_nt[];
Class_Descriptor cd_S4775C2_nt = {  "S4775C2_nt", // class name
  bases_S4775C2_nt, 1,
  &(vtc_S4775C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI10S4775C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S4775C2_nt),9, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4775C1  : S4775C2_nt {
  ::S15733C7_nt s4775c1f0;
  virtual  ~S4775C1(); // _ZN7S4775C1D1Ev
  virtual void  v1(); // _ZN7S4775C12v1Ev
  virtual void  v2(); // _ZN7S4775C12v2Ev
  S4775C1(); // tgen
};
//SIG(1 S4775C1) C1{ BC2{ BC3{ vd v3 v4 v5 FC4{ m Fp Fi FC5{ m}} Fi[2] Fc} v6 v7 Fp} vd v1 v2 FC6{ m Fp Fi FC5 FC7{ m}}}


 S4775C1 ::~S4775C1(){ note_dtor("S4775C1", this);}
void  S4775C1 ::v1(){vfunc_called(this, "_ZN7S4775C12v1Ev");}
void  S4775C1 ::v2(){vfunc_called(this, "_ZN7S4775C12v2Ev");}
S4775C1 ::S4775C1(){ note_ctor("S4775C1", this);} // tgen

static void Test_S4775C1()
{
  extern Class_Descriptor cd_S4775C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,12)];
    init_test(&cd_S4775C1, buf);
    S4775C1 *dp, &lv = *(dp=new (buf) S4775C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,44), "sizeof(S4775C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4775C1)");
    check_base_class_offset(lv, (S4775C3*)(S4775C2_nt*), 0, "S4775C1");
    check_base_class_offset(lv, (S4775C2_nt*), 0, "S4775C1");
    check_field_offset(lv, s4775c1f0, ABISELECT(48,32), "S4775C1.s4775c1f0");
    test_class_info(&lv, &cd_S4775C1);
    dp->~S4775C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4775C1(Test_S4775C1, "S4775C1", ABISELECT(64,44));

#else // __cplusplus

extern void _ZN7S4775C1C1Ev();
extern void _ZN7S4775C1D1Ev();
Name_Map name_map_S4775C1[] = {
  NSPAIR(_ZN7S4775C1C1Ev),
  NSPAIR(_ZN7S4775C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4775C3;
extern VTBL_ENTRY _ZTI7S4775C3[];
extern  VTBL_ENTRY _ZTV7S4775C3[];
extern Class_Descriptor cd_S4775C2_nt;
extern VTBL_ENTRY _ZTI10S4775C2_nt[];
extern  VTBL_ENTRY _ZTV10S4775C2_nt[];
static Base_Class bases_S4775C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4775C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4775C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4775C1[];
extern void _ZN7S4775C1D1Ev();
extern void _ZN7S4775C1D0Ev();
extern void _ZN7S4775C32v3Ev();
extern void _ZN7S4775C32v4Ev();
extern void _ZN7S4775C32v5Ev();
extern void _ZN10S4775C2_nt2v6Ev();
extern void _ZN10S4775C2_nt2v7Ev();
extern void _ZN7S4775C12v1Ev();
extern void _ZN7S4775C12v2Ev();
static  VTBL_ENTRY vtc_S4775C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4775C1[0]),
  (VTBL_ENTRY)&_ZN7S4775C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4775C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4775C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4775C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4775C32v5Ev,
  (VTBL_ENTRY)&_ZN10S4775C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S4775C2_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S4775C12v1Ev,
  (VTBL_ENTRY)&_ZN7S4775C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S4775C1[];
extern  VTBL_ENTRY _ZTV7S4775C1[];
Class_Descriptor cd_S4775C1 = {  "S4775C1", // class name
  bases_S4775C1, 2,
  &(vtc_S4775C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,44), // object size
  NSPAIRA(_ZTI7S4775C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4775C1),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S16697C1  {
  int s16697c1f0;
  ::S2619C8 s16697c1f1;
  void  mf16697c1(); // _ZN8S16697C19mf16697c1Ev
};
//SIG(1 S16697C1) C1{ m Fi FC2{ m FC3{ m FC4{ FC5{ Fl[4]}}} FC6{ m FC7{ FC8{ Fi[4]}}} FC9{ m Fi[2] FC10{ BC11{ m Fp Fi}}} Fc}}


void  S16697C1 ::mf16697c1(){}

static void Test_S16697C1()
{
  {
    init_simple_test("S16697C1");
    S16697C1 lv;
    check2(sizeof(lv), ABISELECT(88,56), "sizeof(S16697C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16697C1)");
    check_field_offset(lv, s16697c1f0, 0, "S16697C1.s16697c1f0");
    check_field_offset(lv, s16697c1f1, ABISELECT(8,4), "S16697C1.s16697c1f1");
  }
}
static Arrange_To_Call_Me vS16697C1(Test_S16697C1, "S16697C1", ABISELECT(88,56));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S982C3  : S40C13_nt {
};
//SIG(-1 S982C3) C1{ BC2{ m Fi}}



static void Test_S982C3()
{
  extern Class_Descriptor cd_S982C3;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S982C3, buf);
    S982C3 &lv = *(new (buf) S982C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S982C3)");
    check2(__alignof__(lv), 4, "__alignof__(S982C3)");
    check_base_class_offset(lv, (S40C13_nt*), 0, "S982C3");
    test_class_info(&lv, &cd_S982C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS982C3(Test_S982C3, "S982C3", 4);

#else // __cplusplus

extern Class_Descriptor cd_S40C13_nt;
extern VTBL_ENTRY _ZTI9S40C13_nt[];
static Base_Class bases_S982C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S982C3 = {  "S982C3", // class name
  bases_S982C3, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S982C2  : S982C3 {
  unsigned int s982c2f0:1;
  unsigned int s982c2f1:1;
  int s982c2f2:4;
};
//SIG(-1 S982C2) C1{ BC2{ BC3{ m Fi}} Fi:1 Fi:1 Fi:4}



static void Test_S982C2()
{
  extern Class_Descriptor cd_S982C2;
  void *lvp;
  {
    int buf[3];
    init_test(&cd_S982C2, buf);
    S982C2 &lv = *(new (buf) S982C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 8, "sizeof(S982C2)");
    check2(__alignof__(lv), 4, "__alignof__(S982C2)");
    check_base_class_offset(lv, (S40C13_nt*)(S982C3*), 0, "S982C2");
    check_base_class_offset(lv, (S982C3*), 0, "S982C2");
    set_bf_and_test(lv, s982c2f0, 4, 0, 1, 1, "S982C2");
    set_bf_and_test(lv, s982c2f1, 4, 1, 1, 1, "S982C2");
    set_bf_and_test(lv, s982c2f2, 4, 2, 4, 1, "S982C2");
    set_bf_and_test(lv, s982c2f2, 4, 2, 4, hide_sll(1LL<<3), "S982C2");
    test_class_info(&lv, &cd_S982C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS982C2(Test_S982C2, "S982C2", 8);

#else // __cplusplus

extern Class_Descriptor cd_S40C13_nt;
extern VTBL_ENTRY _ZTI9S40C13_nt[];
extern Class_Descriptor cd_S982C3;
static Base_Class bases_S982C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S982C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S982C2 = {  "S982C2", // class name
  bases_S982C2, 2,
  0, // no vftv
  0, //no vtt
  8, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S982C1  : S982C2 {
  ::S1868C17 s982c1f0;
  ::S1868C12 s982c1f1;
  ::S1113C11_nt s982c1f2;
  ::S1868C9_nt s982c1f3;
};
//SIG(1 S982C1) C1{ BC2{ BC3{ BC4{ m Fi}} Fi:1 Fi:1 Fi:4} FC5{ m Fp} FC6{ m Fp} FC7{ m Fi FC8{ BC9{ m Fp Fi}}} FC10{ m Fp}}



static void Test_S982C1()
{
  extern Class_Descriptor cd_S982C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S982C1, buf);
    S982C1 &lv = *(new (buf) S982C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S982C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S982C1)");
    check_base_class_offset(lv, (S40C13_nt*)(S982C3*)(S982C2*), 0, "S982C1");
    check_base_class_offset(lv, (S982C3*)(S982C2*), 0, "S982C1");
    check_base_class_offset(lv, (S982C2*), 0, "S982C1");
    check_field_offset(lv, s982c1f0, 8, "S982C1.s982c1f0");
    check_field_offset(lv, s982c1f1, ABISELECT(16,12), "S982C1.s982c1f1");
    check_field_offset(lv, s982c1f2, ABISELECT(24,16), "S982C1.s982c1f2");
    check_field_offset(lv, s982c1f3, ABISELECT(48,28), "S982C1.s982c1f3");
    test_class_info(&lv, &cd_S982C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS982C1(Test_S982C1, "S982C1", ABISELECT(56,32));

#else // __cplusplus

extern Class_Descriptor cd_S40C13_nt;
extern VTBL_ENTRY _ZTI9S40C13_nt[];
extern Class_Descriptor cd_S982C3;
extern Class_Descriptor cd_S982C2;
static Base_Class bases_S982C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S982C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S982C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S982C1 = {  "S982C1", // class name
  bases_S982C1, 3,
  0, // no vftv
  0, //no vtt
  ABISELECT(56,32), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17879C1  {
  void *s17879c1f0[2];
  ::S40C81 s17879c1f1;
  ::S40C77 s17879c1f2;
  ::S1868C17 s17879c1f3;
  ::S40C72 s17879c1f4;
  void *s17879c1f5;
  int s17879c1f6[4];
  ::S40C82 s17879c1f7;
  void  mf17879c1(); // _ZN8S17879C19mf17879c1Ev
};
//SIG(1 S17879C1) C1{ m Fp[2] FC2{ BC3{ m Fp Fi[2]}} FC4{ BC3} FC5{ m Fp} FC6{ BC3} Fp Fi[4] FC7{ m FC8{ m Fi[3]} FC8 Fc}}


void  S17879C1 ::mf17879c1(){}

static void Test_S17879C1()
{
  {
    init_simple_test("S17879C1");
    S17879C1 lv;
    check2(sizeof(lv), ABISELECT(128,96), "sizeof(S17879C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17879C1)");
    check_field_offset(lv, s17879c1f0, 0, "S17879C1.s17879c1f0");
    check_field_offset(lv, s17879c1f1, ABISELECT(16,8), "S17879C1.s17879c1f1");
    check_field_offset(lv, s17879c1f2, ABISELECT(32,20), "S17879C1.s17879c1f2");
    check_field_offset(lv, s17879c1f3, ABISELECT(48,32), "S17879C1.s17879c1f3");
    check_field_offset(lv, s17879c1f4, ABISELECT(56,36), "S17879C1.s17879c1f4");
    check_field_offset(lv, s17879c1f5, ABISELECT(72,48), "S17879C1.s17879c1f5");
    check_field_offset(lv, s17879c1f6, ABISELECT(80,52), "S17879C1.s17879c1f6");
    check_field_offset(lv, s17879c1f7, ABISELECT(96,68), "S17879C1.s17879c1f7");
  }
}
static Arrange_To_Call_Me vS17879C1(Test_S17879C1, "S17879C1", ABISELECT(128,96));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4588C3  {
  virtual  ~S4588C3(); // _ZN7S4588C3D1Ev
  virtual void  v2(); // _ZN7S4588C32v2Ev
  S4588C3(); // tgen
};
//SIG(-1 S4588C3) C1{ vd v1}


 S4588C3 ::~S4588C3(){ note_dtor("S4588C3", this);}
void  S4588C3 ::v2(){vfunc_called(this, "_ZN7S4588C32v2Ev");}
S4588C3 ::S4588C3(){ note_ctor("S4588C3", this);} // tgen

static void Test_S4588C3()
{
  extern Class_Descriptor cd_S4588C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S4588C3, buf);
    S4588C3 *dp, &lv = *(dp=new (buf) S4588C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S4588C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4588C3)");
    test_class_info(&lv, &cd_S4588C3);
    dp->~S4588C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4588C3(Test_S4588C3, "S4588C3", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S4588C3C1Ev();
extern void _ZN7S4588C3D1Ev();
Name_Map name_map_S4588C3[] = {
  NSPAIR(_ZN7S4588C3C1Ev),
  NSPAIR(_ZN7S4588C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4588C3[];
extern void _ZN7S4588C3D1Ev();
extern void _ZN7S4588C3D0Ev();
extern void _ZN7S4588C32v2Ev();
static  VTBL_ENTRY vtc_S4588C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4588C3[0]),
  (VTBL_ENTRY)&_ZN7S4588C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4588C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4588C32v2Ev,
};
extern VTBL_ENTRY _ZTI7S4588C3[];
extern  VTBL_ENTRY _ZTV7S4588C3[];
Class_Descriptor cd_S4588C3 = {  "S4588C3", // class name
  0,0,//no base classes
  &(vtc_S4588C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S4588C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4588C3),5, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4588C2  : S4588C3 {
  char s4588c2f0;
  ::S18423C15_nt s4588c2f1;
  ::S18423C15_nt s4588c2f2;
  ::S18423C15_nt s4588c2f3;
  void *s4588c2f4;
  ::S18423C15_nt s4588c2f5;
  ::S18423C15_nt s4588c2f6;
  int s4588c2f7;
  void *s4588c2f8[3];
  virtual  ~S4588C2(); // _ZN7S4588C2D1Ev
  virtual void  v3(); // _ZN7S4588C22v3Ev
  virtual void  v4(); // _ZN7S4588C22v4Ev
  S4588C2(); // tgen
};
//SIG(-1 S4588C2) C1{ BC2{ vd v3} vd v1 v2 Fc FC3{ m Fp Fi FC4{ m}} FC3 FC3 Fp FC3 FC3 Fi Fp[3]}


 S4588C2 ::~S4588C2(){ note_dtor("S4588C2", this);}
void  S4588C2 ::v3(){vfunc_called(this, "_ZN7S4588C22v3Ev");}
void  S4588C2 ::v4(){vfunc_called(this, "_ZN7S4588C22v4Ev");}
S4588C2 ::S4588C2(){ note_ctor("S4588C2", this);} // tgen

static void Test_S4588C2()
{
  extern Class_Descriptor cd_S4588C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,23)];
    init_test(&cd_S4588C2, buf);
    S4588C2 *dp, &lv = *(dp=new (buf) S4588C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,88), "sizeof(S4588C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4588C2)");
    check_base_class_offset(lv, (S4588C3*), 0, "S4588C2");
    check_field_offset(lv, s4588c2f0, ABISELECT(8,4), "S4588C2.s4588c2f0");
    check_field_offset(lv, s4588c2f1, ABISELECT(16,8), "S4588C2.s4588c2f1");
    check_field_offset(lv, s4588c2f2, ABISELECT(32,20), "S4588C2.s4588c2f2");
    check_field_offset(lv, s4588c2f3, ABISELECT(48,32), "S4588C2.s4588c2f3");
    check_field_offset(lv, s4588c2f4, ABISELECT(64,44), "S4588C2.s4588c2f4");
    check_field_offset(lv, s4588c2f5, ABISELECT(72,48), "S4588C2.s4588c2f5");
    check_field_offset(lv, s4588c2f6, ABISELECT(88,60), "S4588C2.s4588c2f6");
    check_field_offset(lv, s4588c2f7, ABISELECT(104,72), "S4588C2.s4588c2f7");
    check_field_offset(lv, s4588c2f8, ABISELECT(112,76), "S4588C2.s4588c2f8");
    test_class_info(&lv, &cd_S4588C2);
    dp->~S4588C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4588C2(Test_S4588C2, "S4588C2", ABISELECT(136,88));

#else // __cplusplus

extern void _ZN7S4588C2C1Ev();
extern void _ZN7S4588C2D1Ev();
Name_Map name_map_S4588C2[] = {
  NSPAIR(_ZN7S4588C2C1Ev),
  NSPAIR(_ZN7S4588C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4588C3;
extern VTBL_ENTRY _ZTI7S4588C3[];
extern  VTBL_ENTRY _ZTV7S4588C3[];
static Base_Class bases_S4588C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4588C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4588C2[];
extern void _ZN7S4588C2D1Ev();
extern void _ZN7S4588C2D0Ev();
extern void _ZN7S4588C32v2Ev();
extern void _ZN7S4588C22v3Ev();
extern void _ZN7S4588C22v4Ev();
static  VTBL_ENTRY vtc_S4588C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4588C2[0]),
  (VTBL_ENTRY)&_ZN7S4588C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4588C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4588C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4588C22v3Ev,
  (VTBL_ENTRY)&_ZN7S4588C22v4Ev,
};
extern VTBL_ENTRY _ZTI7S4588C2[];
extern  VTBL_ENTRY _ZTV7S4588C2[];
Class_Descriptor cd_S4588C2 = {  "S4588C2", // class name
  bases_S4588C2, 1,
  &(vtc_S4588C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(136,88), // object size
  NSPAIRA(_ZTI7S4588C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4588C2),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4588C1  : S4588C2 {
  ::S18423C15_nt s4588c1f0;
  ::S18423C15_nt s4588c1f1;
  virtual  ~S4588C1(); // _ZN7S4588C1D1Ev
  virtual void  v1(); // _ZN7S4588C12v1Ev
  S4588C1(); // tgen
};
//SIG(1 S4588C1) C1{ BC2{ BC3{ vd v2} vd v3 v4 Fc FC4{ m Fp Fi FC5{ m}} FC4 FC4 Fp FC4 FC4 Fi Fp[3]} vd v1 FC4 FC4}


 S4588C1 ::~S4588C1(){ note_dtor("S4588C1", this);}
void  S4588C1 ::v1(){vfunc_called(this, "_ZN7S4588C12v1Ev");}
S4588C1 ::S4588C1(){ note_ctor("S4588C1", this);} // tgen

static void Test_S4588C1()
{
  extern Class_Descriptor cd_S4588C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(22,29)];
    init_test(&cd_S4588C1, buf);
    S4588C1 *dp, &lv = *(dp=new (buf) S4588C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(168,112), "sizeof(S4588C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4588C1)");
    check_base_class_offset(lv, (S4588C3*)(S4588C2*), 0, "S4588C1");
    check_base_class_offset(lv, (S4588C2*), 0, "S4588C1");
    check_field_offset(lv, s4588c1f0, ABISELECT(136,88), "S4588C1.s4588c1f0");
    check_field_offset(lv, s4588c1f1, ABISELECT(152,100), "S4588C1.s4588c1f1");
    test_class_info(&lv, &cd_S4588C1);
    dp->~S4588C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4588C1(Test_S4588C1, "S4588C1", ABISELECT(168,112));

#else // __cplusplus

extern void _ZN7S4588C1C1Ev();
extern void _ZN7S4588C1D1Ev();
Name_Map name_map_S4588C1[] = {
  NSPAIR(_ZN7S4588C1C1Ev),
  NSPAIR(_ZN7S4588C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4588C3;
extern VTBL_ENTRY _ZTI7S4588C3[];
extern  VTBL_ENTRY _ZTV7S4588C3[];
extern Class_Descriptor cd_S4588C2;
extern VTBL_ENTRY _ZTI7S4588C2[];
extern  VTBL_ENTRY _ZTV7S4588C2[];
static Base_Class bases_S4588C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4588C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4588C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4588C1[];
extern void _ZN7S4588C1D1Ev();
extern void _ZN7S4588C1D0Ev();
extern void _ZN7S4588C32v2Ev();
extern void _ZN7S4588C22v3Ev();
extern void _ZN7S4588C22v4Ev();
extern void _ZN7S4588C12v1Ev();
static  VTBL_ENTRY vtc_S4588C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4588C1[0]),
  (VTBL_ENTRY)&_ZN7S4588C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4588C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4588C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4588C22v3Ev,
  (VTBL_ENTRY)&_ZN7S4588C22v4Ev,
  (VTBL_ENTRY)&_ZN7S4588C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S4588C1[];
extern  VTBL_ENTRY _ZTV7S4588C1[];
Class_Descriptor cd_S4588C1 = {  "S4588C1", // class name
  bases_S4588C1, 2,
  &(vtc_S4588C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(168,112), // object size
  NSPAIRA(_ZTI7S4588C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4588C1),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13686C3  {
  __tsi64 s13686c3f0[2];
  long s13686c3f1;
};
//SIG(-1 S13686C3) C1{ FL[2] Fl}



static void Test_S13686C3()
{
  {
    init_simple_test("S13686C3");
    S13686C3 lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S13686C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13686C3)");
    check_field_offset(lv, s13686c3f0, 0, "S13686C3.s13686c3f0");
    check_field_offset(lv, s13686c3f1, 16, "S13686C3.s13686c3f1");
  }
}
static Arrange_To_Call_Me vS13686C3(Test_S13686C3, "S13686C3", ABISELECT(24,20));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13686C2  {
  char s13686c2f0;
  ::S13686C3 s13686c2f1;
};
//SIG(-1 S13686C2) C1{ Fc FC2{ FL[2] Fl}}



static void Test_S13686C2()
{
  {
    init_simple_test("S13686C2");
    S13686C2 lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S13686C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13686C2)");
    check_field_offset(lv, s13686c2f0, 0, "S13686C2.s13686c2f0");
    check_field_offset(lv, s13686c2f1, ABISELECT(8,4), "S13686C2.s13686c2f1");
  }
}
static Arrange_To_Call_Me vS13686C2(Test_S13686C2, "S13686C2", ABISELECT(32,24));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13686C6_nt  {
  void *s13686c6f0[2];
};
//SIG(-1 S13686C6_nt) C1{ Fp[2]}



//skip512 S13686C6_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13686C5  {
  __tsi64 s13686c5f0;
  ::S13686C6_nt s13686c5f1;
};
//SIG(-1 S13686C5) C1{ FL FC2{ Fp[2]}}



static void Test_S13686C5()
{
  {
    init_simple_test("S13686C5");
    S13686C5 lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S13686C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13686C5)");
    check_field_offset(lv, s13686c5f0, 0, "S13686C5.s13686c5f0");
    check_field_offset(lv, s13686c5f1, 8, "S13686C5.s13686c5f1");
  }
}
static Arrange_To_Call_Me vS13686C5(Test_S13686C5, "S13686C5", ABISELECT(24,16));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13686C4  {
  __tsi64 s13686c4f0;
  ::S13686C5 s13686c4f1;
};
//SIG(-1 S13686C4) C1{ FL FC2{ FL FC3{ Fp[2]}}}



static void Test_S13686C4()
{
  {
    init_simple_test("S13686C4");
    S13686C4 lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S13686C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13686C4)");
    check_field_offset(lv, s13686c4f0, 0, "S13686C4.s13686c4f0");
    check_field_offset(lv, s13686c4f1, 8, "S13686C4.s13686c4f1");
  }
}
static Arrange_To_Call_Me vS13686C4(Test_S13686C4, "S13686C4", ABISELECT(32,24));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13686C7  {
  __tsi64 s13686c7f0;
  void *s13686c7f1[2];
};
//SIG(-1 S13686C7) C1{ FL Fp[2]}



static void Test_S13686C7()
{
  {
    init_simple_test("S13686C7");
    S13686C7 lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S13686C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13686C7)");
    check_field_offset(lv, s13686c7f0, 0, "S13686C7.s13686c7f0");
    check_field_offset(lv, s13686c7f1, 8, "S13686C7.s13686c7f1");
  }
}
static Arrange_To_Call_Me vS13686C7(Test_S13686C7, "S13686C7", ABISELECT(24,16));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13686C1  {
  __tsi64 s13686c1f0;
  ::S13686C2 s13686c1f1;
  ::S13686C4 s13686c1f2;
  ::S13686C7 s13686c1f3;
  ::S13686C5 s13686c1f4;
  void *s13686c1f5;
};
//SIG(1 S13686C1) C1{ FL FC2{ Fc FC3{ FL[2] Fl}} FC4{ FL FC5{ FL FC6{ Fp[2]}}} FC7{ FL Fp[2]} FC5 Fp}



static void Test_S13686C1()
{
  {
    init_simple_test("S13686C1");
    S13686C1 lv;
    check2(sizeof(lv), ABISELECT(128,92), "sizeof(S13686C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13686C1)");
    check_field_offset(lv, s13686c1f0, 0, "S13686C1.s13686c1f0");
    check_field_offset(lv, s13686c1f1, 8, "S13686C1.s13686c1f1");
    check_field_offset(lv, s13686c1f2, ABISELECT(40,32), "S13686C1.s13686c1f2");
    check_field_offset(lv, s13686c1f3, ABISELECT(72,56), "S13686C1.s13686c1f3");
    check_field_offset(lv, s13686c1f4, ABISELECT(96,72), "S13686C1.s13686c1f4");
    check_field_offset(lv, s13686c1f5, ABISELECT(120,88), "S13686C1.s13686c1f5");
  }
}
static Arrange_To_Call_Me vS13686C1(Test_S13686C1, "S13686C1", ABISELECT(128,92));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18831C1  {
  virtual  ~S18831C1(); // _ZN8S18831C1D1Ev
  virtual void  v1(); // _ZN8S18831C12v1Ev
  virtual void  v2(); // _ZN8S18831C12v2Ev
  virtual void  v3(); // _ZN8S18831C12v3Ev
  virtual void  v4(); // _ZN8S18831C12v4Ev
  virtual void  v5(); // _ZN8S18831C12v5Ev
  virtual void  v6(); // _ZN8S18831C12v6Ev
  virtual void  v7(); // _ZN8S18831C12v7Ev
  virtual void  v8(); // _ZN8S18831C12v8Ev
  virtual void  v9(); // _ZN8S18831C12v9Ev
  virtual void  v10(); // _ZN8S18831C13v10Ev
  virtual void  v11(); // _ZN8S18831C13v11Ev
  virtual void  v12(); // _ZN8S18831C13v12Ev
  virtual void  v13(); // _ZN8S18831C13v13Ev
  virtual void  v14(); // _ZN8S18831C13v14Ev
  virtual void  v15(); // _ZN8S18831C13v15Ev
  virtual void  v16(); // _ZN8S18831C13v16Ev
  virtual void  v17(); // _ZN8S18831C13v17Ev
  virtual void  v18(); // _ZN8S18831C13v18Ev
  virtual void  v19(); // _ZN8S18831C13v19Ev
  virtual void  v20(); // _ZN8S18831C13v20Ev
  virtual void  v21(); // _ZN8S18831C13v21Ev
  virtual void  v22(); // _ZN8S18831C13v22Ev
  S18831C1(); // tgen
};
//SIG(1 S18831C1) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22}


 S18831C1 ::~S18831C1(){ note_dtor("S18831C1", this);}
void  S18831C1 ::v1(){vfunc_called(this, "_ZN8S18831C12v1Ev");}
void  S18831C1 ::v2(){vfunc_called(this, "_ZN8S18831C12v2Ev");}
void  S18831C1 ::v3(){vfunc_called(this, "_ZN8S18831C12v3Ev");}
void  S18831C1 ::v4(){vfunc_called(this, "_ZN8S18831C12v4Ev");}
void  S18831C1 ::v5(){vfunc_called(this, "_ZN8S18831C12v5Ev");}
void  S18831C1 ::v6(){vfunc_called(this, "_ZN8S18831C12v6Ev");}
void  S18831C1 ::v7(){vfunc_called(this, "_ZN8S18831C12v7Ev");}
void  S18831C1 ::v8(){vfunc_called(this, "_ZN8S18831C12v8Ev");}
void  S18831C1 ::v9(){vfunc_called(this, "_ZN8S18831C12v9Ev");}
void  S18831C1 ::v10(){vfunc_called(this, "_ZN8S18831C13v10Ev");}
void  S18831C1 ::v11(){vfunc_called(this, "_ZN8S18831C13v11Ev");}
void  S18831C1 ::v12(){vfunc_called(this, "_ZN8S18831C13v12Ev");}
void  S18831C1 ::v13(){vfunc_called(this, "_ZN8S18831C13v13Ev");}
void  S18831C1 ::v14(){vfunc_called(this, "_ZN8S18831C13v14Ev");}
void  S18831C1 ::v15(){vfunc_called(this, "_ZN8S18831C13v15Ev");}
void  S18831C1 ::v16(){vfunc_called(this, "_ZN8S18831C13v16Ev");}
void  S18831C1 ::v17(){vfunc_called(this, "_ZN8S18831C13v17Ev");}
void  S18831C1 ::v18(){vfunc_called(this, "_ZN8S18831C13v18Ev");}
void  S18831C1 ::v19(){vfunc_called(this, "_ZN8S18831C13v19Ev");}
void  S18831C1 ::v20(){vfunc_called(this, "_ZN8S18831C13v20Ev");}
void  S18831C1 ::v21(){vfunc_called(this, "_ZN8S18831C13v21Ev");}
void  S18831C1 ::v22(){vfunc_called(this, "_ZN8S18831C13v22Ev");}
S18831C1 ::S18831C1(){ note_ctor("S18831C1", this);} // tgen

static void Test_S18831C1()
{
  extern Class_Descriptor cd_S18831C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S18831C1, buf);
    S18831C1 *dp, &lv = *(dp=new (buf) S18831C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S18831C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18831C1)");
    test_class_info(&lv, &cd_S18831C1);
    dp->~S18831C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18831C1(Test_S18831C1, "S18831C1", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S18831C1C1Ev();
extern void _ZN8S18831C1D1Ev();
Name_Map name_map_S18831C1[] = {
  NSPAIR(_ZN8S18831C1C1Ev),
  NSPAIR(_ZN8S18831C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18831C1[];
extern void _ZN8S18831C1D1Ev();
extern void _ZN8S18831C1D0Ev();
extern void _ZN8S18831C12v1Ev();
extern void _ZN8S18831C12v2Ev();
extern void _ZN8S18831C12v3Ev();
extern void _ZN8S18831C12v4Ev();
extern void _ZN8S18831C12v5Ev();
extern void _ZN8S18831C12v6Ev();
extern void _ZN8S18831C12v7Ev();
extern void _ZN8S18831C12v8Ev();
extern void _ZN8S18831C12v9Ev();
extern void _ZN8S18831C13v10Ev();
extern void _ZN8S18831C13v11Ev();
extern void _ZN8S18831C13v12Ev();
extern void _ZN8S18831C13v13Ev();
extern void _ZN8S18831C13v14Ev();
extern void _ZN8S18831C13v15Ev();
extern void _ZN8S18831C13v16Ev();
extern void _ZN8S18831C13v17Ev();
extern void _ZN8S18831C13v18Ev();
extern void _ZN8S18831C13v19Ev();
extern void _ZN8S18831C13v20Ev();
extern void _ZN8S18831C13v21Ev();
extern void _ZN8S18831C13v22Ev();
static  VTBL_ENTRY vtc_S18831C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18831C1[0]),
  (VTBL_ENTRY)&_ZN8S18831C1D1Ev,
  (VTBL_ENTRY)&_ZN8S18831C1D0Ev,
  (VTBL_ENTRY)&_ZN8S18831C12v1Ev,
  (VTBL_ENTRY)&_ZN8S18831C12v2Ev,
  (VTBL_ENTRY)&_ZN8S18831C12v3Ev,
  (VTBL_ENTRY)&_ZN8S18831C12v4Ev,
  (VTBL_ENTRY)&_ZN8S18831C12v5Ev,
  (VTBL_ENTRY)&_ZN8S18831C12v6Ev,
  (VTBL_ENTRY)&_ZN8S18831C12v7Ev,
  (VTBL_ENTRY)&_ZN8S18831C12v8Ev,
  (VTBL_ENTRY)&_ZN8S18831C12v9Ev,
  (VTBL_ENTRY)&_ZN8S18831C13v10Ev,
  (VTBL_ENTRY)&_ZN8S18831C13v11Ev,
  (VTBL_ENTRY)&_ZN8S18831C13v12Ev,
  (VTBL_ENTRY)&_ZN8S18831C13v13Ev,
  (VTBL_ENTRY)&_ZN8S18831C13v14Ev,
  (VTBL_ENTRY)&_ZN8S18831C13v15Ev,
  (VTBL_ENTRY)&_ZN8S18831C13v16Ev,
  (VTBL_ENTRY)&_ZN8S18831C13v17Ev,
  (VTBL_ENTRY)&_ZN8S18831C13v18Ev,
  (VTBL_ENTRY)&_ZN8S18831C13v19Ev,
  (VTBL_ENTRY)&_ZN8S18831C13v20Ev,
  (VTBL_ENTRY)&_ZN8S18831C13v21Ev,
  (VTBL_ENTRY)&_ZN8S18831C13v22Ev,
};
extern VTBL_ENTRY _ZTI8S18831C1[];
extern  VTBL_ENTRY _ZTV8S18831C1[];
Class_Descriptor cd_S18831C1 = {  "S18831C1", // class name
  0,0,//no base classes
  &(vtc_S18831C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S18831C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18831C1),26, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12396C3_nt  {
  char s12396c3f0[20];
};
//SIG(-1 S12396C3_nt) C1{ Fc[20]}



//skip512 S12396C3_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12396C2_nt  {
  ::S12396C3_nt s12396c2f0;
  char s12396c2f1[16];
};
//SIG(-1 S12396C2_nt) C1{ FC2{ Fc[20]} Fc[16]}



//skip512 S12396C2_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12396C4_nt  {
  char s12396c4f0[12];
};
//SIG(-1 S12396C4_nt) C1{ Fc[12]}



//skip512 S12396C4_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12396C6_nt  {
  long s12396c6f0;
};
//SIG(-1 S12396C6_nt) C1{ Fl}



//skip512 S12396C6_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12396C5  {
  int s12396c5f0;
  char s12396c5f1[4];
  ::S12396C6_nt s12396c5f2;
};
//SIG(-1 S12396C5) C1{ Fi Fc[4] FC2{ Fl}}



static void Test_S12396C5()
{
  {
    init_simple_test("S12396C5");
    S12396C5 lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S12396C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S12396C5)");
    check_field_offset(lv, s12396c5f0, 0, "S12396C5.s12396c5f0");
    check_field_offset(lv, s12396c5f1, 4, "S12396C5.s12396c5f1");
    check_field_offset(lv, s12396c5f2, 8, "S12396C5.s12396c5f2");
  }
}
static Arrange_To_Call_Me vS12396C5(Test_S12396C5, "S12396C5", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12396C1  {
  int s12396c1f0;
  ::S12396C2_nt s12396c1f1;
  ::S12396C4_nt s12396c1f2;
  int s12396c1f3[3];
  ::S12396C5 s12396c1f4;
  int s12396c1f5;
  long s12396c1f6;
  int s12396c1f7;
  long s12396c1f8;
  int s12396c1f9[2];
};
//SIG(1 S12396C1) C1{ Fi FC2{ FC3{ Fc[20]} Fc[16]} FC4{ Fc[12]} Fi[3] FC5{ Fi Fc[4] FC6{ Fl}} Fi Fl Fi Fl Fi[2]}



static void Test_S12396C1()
{
  {
    init_simple_test("S12396C1");
    S12396C1 lv;
    check2(sizeof(lv), ABISELECT(120,100), "sizeof(S12396C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S12396C1)");
    check_field_offset(lv, s12396c1f0, 0, "S12396C1.s12396c1f0");
    check_field_offset(lv, s12396c1f1, 4, "S12396C1.s12396c1f1");
    check_field_offset(lv, s12396c1f2, 40, "S12396C1.s12396c1f2");
    check_field_offset(lv, s12396c1f3, 52, "S12396C1.s12396c1f3");
    check_field_offset(lv, s12396c1f4, 64, "S12396C1.s12396c1f4");
    check_field_offset(lv, s12396c1f5, ABISELECT(80,76), "S12396C1.s12396c1f5");
    check_field_offset(lv, s12396c1f6, ABISELECT(88,80), "S12396C1.s12396c1f6");
    check_field_offset(lv, s12396c1f7, ABISELECT(96,84), "S12396C1.s12396c1f7");
    check_field_offset(lv, s12396c1f8, ABISELECT(104,88), "S12396C1.s12396c1f8");
    check_field_offset(lv, s12396c1f9, ABISELECT(112,92), "S12396C1.s12396c1f9");
  }
}
static Arrange_To_Call_Me vS12396C1(Test_S12396C1, "S12396C1", ABISELECT(120,100));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8262C1  : S1868C4_nt {
  ::S40C81 s8262c1f0;
  ::S40C81 s8262c1f1;
  int s8262c1f2;
  ::S40C77 s8262c1f3;
  ::S7856C24 s8262c1f4;
  ::S40C72 s8262c1f5;
  ::S40C72 s8262c1f6;
  int s8262c1f7;
  ::S40C67 s8262c1f8;
  int s8262c1f9;
  ::S40C67 s8262c1f10;
  ~S8262C1(); // tgen
  S8262C1(); // tgen
};
//SIG(1 S8262C1) C1{ BC2{ vd m} FC3{ BC4{ m Fp Fi[2]}} FC3 Fi FC5{ BC4} FC6{ m} FC7{ BC4} FC7 Fi FC8{ BC4} Fi FC8}


S8262C1 ::~S8262C1(){ note_dtor("S8262C1", this);} // tgen
S8262C1 ::S8262C1(){ note_ctor("S8262C1", this);} // tgen

static void Test_S8262C1()
{
  extern Class_Descriptor cd_S8262C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(20,27)];
    init_test(&cd_S8262C1, buf);
    S8262C1 *dp, &lv = *(dp=new (buf) S8262C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(152,104), "sizeof(S8262C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8262C1)");
    check_base_class_offset(lv, (S1868C4_nt*), 0, "S8262C1");
    check_field_offset(lv, s8262c1f0, ABISELECT(8,4), "S8262C1.s8262c1f0");
    check_field_offset(lv, s8262c1f1, ABISELECT(24,16), "S8262C1.s8262c1f1");
    check_field_offset(lv, s8262c1f2, ABISELECT(40,28), "S8262C1.s8262c1f2");
    check_field_offset(lv, s8262c1f3, ABISELECT(48,32), "S8262C1.s8262c1f3");
    check_field_offset(lv, s8262c1f4, ABISELECT(64,44), "S8262C1.s8262c1f4");
    check_field_offset(lv, s8262c1f5, ABISELECT(72,48), "S8262C1.s8262c1f5");
    check_field_offset(lv, s8262c1f6, ABISELECT(88,60), "S8262C1.s8262c1f6");
    check_field_offset(lv, s8262c1f7, ABISELECT(104,72), "S8262C1.s8262c1f7");
    check_field_offset(lv, s8262c1f8, ABISELECT(112,76), "S8262C1.s8262c1f8");
    check_field_offset(lv, s8262c1f9, ABISELECT(128,88), "S8262C1.s8262c1f9");
    check_field_offset(lv, s8262c1f10, ABISELECT(136,92), "S8262C1.s8262c1f10");
    test_class_info(&lv, &cd_S8262C1);
    dp->~S8262C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8262C1(Test_S8262C1, "S8262C1", ABISELECT(152,104));

#else // __cplusplus

extern void _ZN7S8262C1C1Ev();
extern void _ZN7S8262C1D1Ev();
Name_Map name_map_S8262C1[] = {
  NSPAIR(_ZN7S8262C1C1Ev),
  NSPAIR(_ZN7S8262C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1868C4_nt;
extern VTBL_ENTRY _ZTI10S1868C4_nt[];
extern  VTBL_ENTRY _ZTV10S1868C4_nt[];
static Base_Class bases_S8262C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1868C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8262C1[];
extern void _ZN7S8262C1D1Ev();
extern void _ZN7S8262C1D0Ev();
static  VTBL_ENTRY vtc_S8262C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8262C1[0]),
  (VTBL_ENTRY)&_ZN7S8262C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8262C1D0Ev,
};
extern VTBL_ENTRY _ZTI7S8262C1[];
extern  VTBL_ENTRY _ZTV7S8262C1[];
Class_Descriptor cd_S8262C1 = {  "S8262C1", // class name
  bases_S8262C1, 1,
  &(vtc_S8262C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(152,104), // object size
  NSPAIRA(_ZTI7S8262C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8262C1),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S981C3  : S40C13_nt {
};
//SIG(-1 S981C3) C1{ BC2{ m Fi}}



static void Test_S981C3()
{
  extern Class_Descriptor cd_S981C3;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S981C3, buf);
    S981C3 &lv = *(new (buf) S981C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S981C3)");
    check2(__alignof__(lv), 4, "__alignof__(S981C3)");
    check_base_class_offset(lv, (S40C13_nt*), 0, "S981C3");
    test_class_info(&lv, &cd_S981C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS981C3(Test_S981C3, "S981C3", 4);

#else // __cplusplus

extern Class_Descriptor cd_S40C13_nt;
extern VTBL_ENTRY _ZTI9S40C13_nt[];
static Base_Class bases_S981C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S981C3 = {  "S981C3", // class name
  bases_S981C3, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S981C2  : S981C3 {
  unsigned int s981c2f0:1;
  unsigned int s981c2f1:1;
  int s981c2f2:4;
};
//SIG(-1 S981C2) C1{ BC2{ BC3{ m Fi}} Fi:1 Fi:1 Fi:4}



static void Test_S981C2()
{
  extern Class_Descriptor cd_S981C2;
  void *lvp;
  {
    int buf[3];
    init_test(&cd_S981C2, buf);
    S981C2 &lv = *(new (buf) S981C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 8, "sizeof(S981C2)");
    check2(__alignof__(lv), 4, "__alignof__(S981C2)");
    check_base_class_offset(lv, (S40C13_nt*)(S981C3*), 0, "S981C2");
    check_base_class_offset(lv, (S981C3*), 0, "S981C2");
    set_bf_and_test(lv, s981c2f0, 4, 0, 1, 1, "S981C2");
    set_bf_and_test(lv, s981c2f1, 4, 1, 1, 1, "S981C2");
    set_bf_and_test(lv, s981c2f2, 4, 2, 4, 1, "S981C2");
    set_bf_and_test(lv, s981c2f2, 4, 2, 4, hide_sll(1LL<<3), "S981C2");
    test_class_info(&lv, &cd_S981C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS981C2(Test_S981C2, "S981C2", 8);

#else // __cplusplus

extern Class_Descriptor cd_S40C13_nt;
extern VTBL_ENTRY _ZTI9S40C13_nt[];
extern Class_Descriptor cd_S981C3;
static Base_Class bases_S981C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S981C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S981C2 = {  "S981C2", // class name
  bases_S981C2, 2,
  0, // no vftv
  0, //no vtt
  8, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S981C1  : S981C2 {
  ::S1868C17 s981c1f0;
  ::S1113C11_nt s981c1f1;
  ::S1868C12 s981c1f2;
};
//SIG(1 S981C1) C1{ BC2{ BC3{ BC4{ m Fi}} Fi:1 Fi:1 Fi:4} FC5{ m Fp} FC6{ m Fi FC7{ BC8{ m Fp Fi}}} FC9{ m Fp}}



static void Test_S981C1()
{
  extern Class_Descriptor cd_S981C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,8)];
    init_test(&cd_S981C1, buf);
    S981C1 &lv = *(new (buf) S981C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S981C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S981C1)");
    check_base_class_offset(lv, (S40C13_nt*)(S981C3*)(S981C2*), 0, "S981C1");
    check_base_class_offset(lv, (S981C3*)(S981C2*), 0, "S981C1");
    check_base_class_offset(lv, (S981C2*), 0, "S981C1");
    check_field_offset(lv, s981c1f0, 8, "S981C1.s981c1f0");
    check_field_offset(lv, s981c1f1, ABISELECT(16,12), "S981C1.s981c1f1");
    check_field_offset(lv, s981c1f2, ABISELECT(40,24), "S981C1.s981c1f2");
    test_class_info(&lv, &cd_S981C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS981C1(Test_S981C1, "S981C1", ABISELECT(48,28));

#else // __cplusplus

extern Class_Descriptor cd_S40C13_nt;
extern VTBL_ENTRY _ZTI9S40C13_nt[];
extern Class_Descriptor cd_S981C3;
extern Class_Descriptor cd_S981C2;
static Base_Class bases_S981C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S981C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S981C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S981C1 = {  "S981C1", // class name
  bases_S981C1, 3,
  0, // no vftv
  0, //no vtt
  ABISELECT(48,28), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4315C3  {
  char s4315c3f0;
  int s4315c3f1;
  virtual  ~S4315C3(); // _ZN7S4315C3D1Ev
  virtual void  v2(); // _ZN7S4315C32v2Ev
  S4315C3(); // tgen
};
//SIG(-1 S4315C3) C1{ vd v1 Fc Fi}


 S4315C3 ::~S4315C3(){ note_dtor("S4315C3", this);}
void  S4315C3 ::v2(){vfunc_called(this, "_ZN7S4315C32v2Ev");}
S4315C3 ::S4315C3(){ note_ctor("S4315C3", this);} // tgen

static void Test_S4315C3()
{
  extern Class_Descriptor cd_S4315C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S4315C3, buf);
    S4315C3 *dp, &lv = *(dp=new (buf) S4315C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S4315C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4315C3)");
    check_field_offset(lv, s4315c3f0, ABISELECT(8,4), "S4315C3.s4315c3f0");
    check_field_offset(lv, s4315c3f1, ABISELECT(12,8), "S4315C3.s4315c3f1");
    test_class_info(&lv, &cd_S4315C3);
    dp->~S4315C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4315C3(Test_S4315C3, "S4315C3", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S4315C3C1Ev();
extern void _ZN7S4315C3D1Ev();
Name_Map name_map_S4315C3[] = {
  NSPAIR(_ZN7S4315C3C1Ev),
  NSPAIR(_ZN7S4315C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4315C3[];
extern void _ZN7S4315C3D1Ev();
extern void _ZN7S4315C3D0Ev();
extern void _ZN7S4315C32v2Ev();
static  VTBL_ENTRY vtc_S4315C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4315C3[0]),
  (VTBL_ENTRY)&_ZN7S4315C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4315C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4315C32v2Ev,
};
extern VTBL_ENTRY _ZTI7S4315C3[];
extern  VTBL_ENTRY _ZTV7S4315C3[];
Class_Descriptor cd_S4315C3 = {  "S4315C3", // class name
  0,0,//no base classes
  &(vtc_S4315C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S4315C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4315C3),5, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4315C2  : S4315C3 {
  int s4315c2f0[2];
  char s4315c2f1;
  ::S2436C5_nt s4315c2f2;
  ::S2436C6 s4315c2f3;
  virtual  ~S4315C2(); // _ZN7S4315C2D1Ev
  virtual void  v3(); // _ZN7S4315C22v3Ev
  S4315C2(); // tgen
};
//SIG(-1 S4315C2) C1{ BC2{ vd v2 Fc Fi} vd v1 Fi[2] Fc FC3{ Fp} FC4{ BC5{ vd v5 Fc Fi} vd v3 v4 FL[4]}}


 S4315C2 ::~S4315C2(){ note_dtor("S4315C2", this);}
void  S4315C2 ::v3(){vfunc_called(this, "_ZN7S4315C22v3Ev");}
S4315C2 ::S4315C2(){ note_ctor("S4315C2", this);} // tgen

static void Test_S4315C2()
{
  extern Class_Descriptor cd_S4315C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,19)];
    init_test(&cd_S4315C2, buf);
    S4315C2 *dp, &lv = *(dp=new (buf) S4315C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,72), "sizeof(S4315C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4315C2)");
    check_base_class_offset(lv, (S4315C3*), 0, "S4315C2");
    check_field_offset(lv, s4315c2f0, ABISELECT(16,12), "S4315C2.s4315c2f0");
    check_field_offset(lv, s4315c2f1, ABISELECT(24,20), "S4315C2.s4315c2f1");
    check_field_offset(lv, s4315c2f2, ABISELECT(32,24), "S4315C2.s4315c2f2");
    check_field_offset(lv, s4315c2f3, ABISELECT(40,28), "S4315C2.s4315c2f3");
    test_class_info(&lv, &cd_S4315C2);
    dp->~S4315C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4315C2(Test_S4315C2, "S4315C2", ABISELECT(88,72));

#else // __cplusplus

extern void _ZN7S4315C2C1Ev();
extern void _ZN7S4315C2D1Ev();
Name_Map name_map_S4315C2[] = {
  NSPAIR(_ZN7S4315C2C1Ev),
  NSPAIR(_ZN7S4315C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4315C3;
extern VTBL_ENTRY _ZTI7S4315C3[];
extern  VTBL_ENTRY _ZTV7S4315C3[];
static Base_Class bases_S4315C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4315C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4315C2[];
extern void _ZN7S4315C2D1Ev();
extern void _ZN7S4315C2D0Ev();
extern void _ZN7S4315C32v2Ev();
extern void _ZN7S4315C22v3Ev();
static  VTBL_ENTRY vtc_S4315C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4315C2[0]),
  (VTBL_ENTRY)&_ZN7S4315C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4315C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4315C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4315C22v3Ev,
};
extern VTBL_ENTRY _ZTI7S4315C2[];
extern  VTBL_ENTRY _ZTV7S4315C2[];
Class_Descriptor cd_S4315C2 = {  "S4315C2", // class name
  bases_S4315C2, 1,
  &(vtc_S4315C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,72), // object size
  NSPAIRA(_ZTI7S4315C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4315C2),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4315C1  : S4315C2 {
  void *s4315c1f0[3];
  virtual  ~S4315C1(); // _ZN7S4315C1D1Ev
  virtual void  v1(); // _ZN7S4315C12v1Ev
  S4315C1(); // tgen
};
//SIG(1 S4315C1) C1{ BC2{ BC3{ vd v2 Fc Fi} vd v3 Fi[2] Fc FC4{ Fp} FC5{ BC6{ vd v6 Fc Fi} vd v4 v5 FL[4]}} vd v1 Fp[3]}


 S4315C1 ::~S4315C1(){ note_dtor("S4315C1", this);}
void  S4315C1 ::v1(){vfunc_called(this, "_ZN7S4315C12v1Ev");}
S4315C1 ::S4315C1(){ note_ctor("S4315C1", this);} // tgen

static void Test_S4315C1()
{
  extern Class_Descriptor cd_S4315C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,22)];
    init_test(&cd_S4315C1, buf);
    S4315C1 *dp, &lv = *(dp=new (buf) S4315C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,84), "sizeof(S4315C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4315C1)");
    check_base_class_offset(lv, (S4315C3*)(S4315C2*), 0, "S4315C1");
    check_base_class_offset(lv, (S4315C2*), 0, "S4315C1");
    check_field_offset(lv, s4315c1f0, ABISELECT(88,72), "S4315C1.s4315c1f0");
    test_class_info(&lv, &cd_S4315C1);
    dp->~S4315C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4315C1(Test_S4315C1, "S4315C1", ABISELECT(112,84));

#else // __cplusplus

extern void _ZN7S4315C1C1Ev();
extern void _ZN7S4315C1D1Ev();
Name_Map name_map_S4315C1[] = {
  NSPAIR(_ZN7S4315C1C1Ev),
  NSPAIR(_ZN7S4315C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4315C3;
extern VTBL_ENTRY _ZTI7S4315C3[];
extern  VTBL_ENTRY _ZTV7S4315C3[];
extern Class_Descriptor cd_S4315C2;
extern VTBL_ENTRY _ZTI7S4315C2[];
extern  VTBL_ENTRY _ZTV7S4315C2[];
static Base_Class bases_S4315C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4315C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4315C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4315C1[];
extern void _ZN7S4315C1D1Ev();
extern void _ZN7S4315C1D0Ev();
extern void _ZN7S4315C32v2Ev();
extern void _ZN7S4315C22v3Ev();
extern void _ZN7S4315C12v1Ev();
static  VTBL_ENTRY vtc_S4315C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4315C1[0]),
  (VTBL_ENTRY)&_ZN7S4315C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4315C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4315C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4315C22v3Ev,
  (VTBL_ENTRY)&_ZN7S4315C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S4315C1[];
extern  VTBL_ENTRY _ZTV7S4315C1[];
Class_Descriptor cd_S4315C1 = {  "S4315C1", // class name
  bases_S4315C1, 2,
  &(vtc_S4315C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(112,84), // object size
  NSPAIRA(_ZTI7S4315C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4315C1),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3333C3  {
  virtual void  v5(); // _ZN7S3333C32v5Ev
  ~S3333C3(); // tgen
  S3333C3(); // tgen
};
//SIG(-1 S3333C3) C1{ v1}


void  S3333C3 ::v5(){vfunc_called(this, "_ZN7S3333C32v5Ev");}
S3333C3 ::~S3333C3(){ note_dtor("S3333C3", this);} // tgen
S3333C3 ::S3333C3(){ note_ctor("S3333C3", this);} // tgen

static void Test_S3333C3()
{
  extern Class_Descriptor cd_S3333C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S3333C3, buf);
    S3333C3 *dp, &lv = *(dp=new (buf) S3333C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S3333C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3333C3)");
    test_class_info(&lv, &cd_S3333C3);
    dp->~S3333C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3333C3(Test_S3333C3, "S3333C3", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S3333C3C1Ev();
extern void _ZN7S3333C3D1Ev();
Name_Map name_map_S3333C3[] = {
  NSPAIR(_ZN7S3333C3C1Ev),
  NSPAIR(_ZN7S3333C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3333C3[];
extern void _ZN7S3333C32v5Ev();
static  VTBL_ENTRY vtc_S3333C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3333C3[0]),
  (VTBL_ENTRY)&_ZN7S3333C32v5Ev,
};
extern VTBL_ENTRY _ZTI7S3333C3[];
extern  VTBL_ENTRY _ZTV7S3333C3[];
Class_Descriptor cd_S3333C3 = {  "S3333C3", // class name
  0,0,//no base classes
  &(vtc_S3333C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S3333C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3333C3),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3333C2  : S3333C3 {
  virtual  ~S3333C2(); // _ZN7S3333C2D1Ev
  virtual void  v6(); // _ZN7S3333C22v6Ev
  virtual void  v7(); // _ZN7S3333C22v7Ev
  virtual void  v8(); // _ZN7S3333C22v8Ev
  S3333C2(); // tgen
};
//SIG(-1 S3333C2) C1{ BC2{ v4} vd v1 v2 v3}


 S3333C2 ::~S3333C2(){ note_dtor("S3333C2", this);}
void  S3333C2 ::v6(){vfunc_called(this, "_ZN7S3333C22v6Ev");}
void  S3333C2 ::v7(){vfunc_called(this, "_ZN7S3333C22v7Ev");}
void  S3333C2 ::v8(){vfunc_called(this, "_ZN7S3333C22v8Ev");}
S3333C2 ::S3333C2(){ note_ctor("S3333C2", this);} // tgen

static void Test_S3333C2()
{
  extern Class_Descriptor cd_S3333C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S3333C2, buf);
    S3333C2 *dp, &lv = *(dp=new (buf) S3333C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S3333C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3333C2)");
    check_base_class_offset(lv, (S3333C3*), 0, "S3333C2");
    test_class_info(&lv, &cd_S3333C2);
    dp->~S3333C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3333C2(Test_S3333C2, "S3333C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S3333C2C1Ev();
extern void _ZN7S3333C2D1Ev();
Name_Map name_map_S3333C2[] = {
  NSPAIR(_ZN7S3333C2C1Ev),
  NSPAIR(_ZN7S3333C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3333C3;
extern VTBL_ENTRY _ZTI7S3333C3[];
extern  VTBL_ENTRY _ZTV7S3333C3[];
static Base_Class bases_S3333C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3333C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3333C2[];
extern void _ZN7S3333C32v5Ev();
extern void _ZN7S3333C2D1Ev();
extern void _ZN7S3333C2D0Ev();
extern void _ZN7S3333C22v6Ev();
extern void _ZN7S3333C22v7Ev();
extern void _ZN7S3333C22v8Ev();
static  VTBL_ENTRY vtc_S3333C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3333C2[0]),
  (VTBL_ENTRY)&_ZN7S3333C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3333C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3333C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3333C22v6Ev,
  (VTBL_ENTRY)&_ZN7S3333C22v7Ev,
  (VTBL_ENTRY)&_ZN7S3333C22v8Ev,
};
extern VTBL_ENTRY _ZTI7S3333C2[];
extern  VTBL_ENTRY _ZTV7S3333C2[];
Class_Descriptor cd_S3333C2 = {  "S3333C2", // class name
  bases_S3333C2, 1,
  &(vtc_S3333C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S3333C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3333C2),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3333C4  : virtual S3333C3 {
  int s3333c4f0;
  __tsi64 s3333c4f1;
  int s3333c4f2;
  char s3333c4f3;
  virtual void  v9(); // _ZN7S3333C42v9Ev
  virtual void  v10(); // _ZN7S3333C43v10Ev
  virtual void  v11(); // _ZN7S3333C43v11Ev
  virtual void  v12(); // _ZN7S3333C43v12Ev
  ~S3333C4(); // tgen
  S3333C4(); // tgen
};
//SIG(-1 S3333C4) C1{ VBC2{ v5} v1 v2 v3 v4 Fi FL Fi Fc}


void  S3333C4 ::v9(){vfunc_called(this, "_ZN7S3333C42v9Ev");}
void  S3333C4 ::v10(){vfunc_called(this, "_ZN7S3333C43v10Ev");}
void  S3333C4 ::v11(){vfunc_called(this, "_ZN7S3333C43v11Ev");}
void  S3333C4 ::v12(){vfunc_called(this, "_ZN7S3333C43v12Ev");}
S3333C4 ::~S3333C4(){ note_dtor("S3333C4", this);} // tgen
S3333C4 ::S3333C4(){ note_ctor("S3333C4", this);} // tgen

static void Test_S3333C4()
{
  extern Class_Descriptor cd_S3333C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,7)];
    init_test(&cd_S3333C4, buf);
    S3333C4 *dp, &lv = *(dp=new (buf) S3333C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S3333C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3333C4)");
    check_base_class_offset(lv, (S3333C3*), 0, "S3333C4");
    check_field_offset(lv, s3333c4f0, ABISELECT(8,4), "S3333C4.s3333c4f0");
    check_field_offset(lv, s3333c4f1, ABISELECT(16,8), "S3333C4.s3333c4f1");
    check_field_offset(lv, s3333c4f2, ABISELECT(24,16), "S3333C4.s3333c4f2");
    check_field_offset(lv, s3333c4f3, ABISELECT(28,20), "S3333C4.s3333c4f3");
    test_class_info(&lv, &cd_S3333C4);
    dp->~S3333C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3333C4(Test_S3333C4, "S3333C4", ABISELECT(32,24));

#else // __cplusplus

extern void _ZN7S3333C4C1Ev();
extern void _ZN7S3333C4D1Ev();
Name_Map name_map_S3333C4[] = {
  NSPAIR(_ZN7S3333C4C1Ev),
  NSPAIR(_ZN7S3333C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3333C3;
extern VTBL_ENTRY _ZTI7S3333C3[];
extern  VTBL_ENTRY _ZTV7S3333C3[];
static Base_Class bases_S3333C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3333C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S3333C4[];
extern void _ZN7S3333C32v5Ev();
extern void _ZN7S3333C42v9Ev();
extern void _ZN7S3333C43v10Ev();
extern void _ZN7S3333C43v11Ev();
extern void _ZN7S3333C43v12Ev();
static  VTBL_ENTRY vtc_S3333C4[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S3333C4[0]),
  (VTBL_ENTRY)&_ZN7S3333C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3333C42v9Ev,
  (VTBL_ENTRY)&_ZN7S3333C43v10Ev,
  (VTBL_ENTRY)&_ZN7S3333C43v11Ev,
  (VTBL_ENTRY)&_ZN7S3333C43v12Ev,
};
extern VTBL_ENTRY _ZTV7S3333C4[];
static  VTT_ENTRY vtt_S3333C4[] = {
  {&(_ZTV7S3333C4[4]),  4,9},
  {&(_ZTV7S3333C4[4]),  4,9},
};
extern VTBL_ENTRY _ZTI7S3333C4[];
extern  VTBL_ENTRY _ZTV7S3333C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3333C4[];
Class_Descriptor cd_S3333C4 = {  "S3333C4", // class name
  bases_S3333C4, 1,
  &(vtc_S3333C4[0]), // expected_vtbl_contents
  &(vtt_S3333C4[0]), // expected_vtt_contents
  ABISELECT(32,24), // object size
  NSPAIRA(_ZTI7S3333C4),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S3333C4),9, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3333C4),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3333C1  : S3333C2 , S3333C4 {
  void *s3333c1f0;
  virtual  ~S3333C1(); // _ZN7S3333C1D2Ev
  virtual void  v1(); // _ZN7S3333C12v1Ev
  virtual void  v2(); // _ZN7S3333C12v2Ev
  virtual void  v3(); // _ZN7S3333C12v3Ev
  virtual void  v4(); // _ZN7S3333C12v4Ev
  S3333C1(); // tgen
};
//SIG(1 S3333C1) C1{ BC2{ BC3{ v5} vd v6 v7 v8} BC4{ VBC3 v9 v10 v11 v12 Fi FL Fi Fc} vd v1 v2 v3 v4 Fp}


 S3333C1 ::~S3333C1(){ note_dtor("S3333C1", this);}
void  S3333C1 ::v1(){vfunc_called(this, "_ZN7S3333C12v1Ev");}
void  S3333C1 ::v2(){vfunc_called(this, "_ZN7S3333C12v2Ev");}
void  S3333C1 ::v3(){vfunc_called(this, "_ZN7S3333C12v3Ev");}
void  S3333C1 ::v4(){vfunc_called(this, "_ZN7S3333C12v4Ev");}
S3333C1 ::S3333C1(){ note_ctor("S3333C1", this);} // tgen

static void Test_S3333C1()
{
  extern Class_Descriptor cd_S3333C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S3333C1, buf);
    S3333C1 *dp, &lv = *(dp=new (buf) S3333C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S3333C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3333C1)");
    check_base_class_offset(lv, (S3333C3*)(S3333C2*), 0, "S3333C1");
    check_base_class_offset(lv, (S3333C2*), 0, "S3333C1");
    check_base_class_offset(lv, (S3333C3*)(S3333C4*), ABISELECT(8,4), "S3333C1");
    check_base_class_offset(lv, (S3333C4*), ABISELECT(8,4), "S3333C1");
    check_field_offset(lv, s3333c1f0, ABISELECT(40,28), "S3333C1.s3333c1f0");
    test_class_info(&lv, &cd_S3333C1);
    dp->~S3333C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3333C1(Test_S3333C1, "S3333C1", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN7S3333C1C1Ev();
extern void _ZN7S3333C1D2Ev();
Name_Map name_map_S3333C1[] = {
  NSPAIR(_ZN7S3333C1C1Ev),
  NSPAIR(_ZN7S3333C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3333C3;
extern VTBL_ENTRY _ZTI7S3333C3[];
extern  VTBL_ENTRY _ZTV7S3333C3[];
extern Class_Descriptor cd_S3333C2;
extern VTBL_ENTRY _ZTI7S3333C2[];
extern  VTBL_ENTRY _ZTV7S3333C2[];
extern Class_Descriptor cd_S3333C3;
extern VTBL_ENTRY _ZTI7S3333C3[];
extern  VTBL_ENTRY _ZTV7S3333C3[];
extern Class_Descriptor cd_S3333C4;
extern VTBL_ENTRY _ZTI7S3333C4[];
extern  VTBL_ENTRY _ZTV7S3333C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3333C4[];
static Base_Class bases_S3333C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3333C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3333C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3333C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3333C4,    ABISELECT(8,4), //bcp->offset
    13, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3333C1[];
extern void _ZN7S3333C32v5Ev();
extern void _ZN7S3333C1D1Ev();
extern void _ZN7S3333C1D0Ev();
extern void _ZN7S3333C22v6Ev();
extern void _ZN7S3333C22v7Ev();
extern void _ZN7S3333C22v8Ev();
extern void _ZN7S3333C12v1Ev();
extern void _ZN7S3333C12v2Ev();
extern void _ZN7S3333C12v3Ev();
extern void _ZN7S3333C12v4Ev();
extern void _ZN7S3333C32v5Ev();
extern void _ZN7S3333C42v9Ev();
extern void _ZN7S3333C43v10Ev();
extern void _ZN7S3333C43v11Ev();
extern void _ZN7S3333C43v12Ev();
static  VTBL_ENTRY vtc_S3333C1[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S3333C1[0]),
  (VTBL_ENTRY)&_ZN7S3333C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3333C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3333C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3333C22v6Ev,
  (VTBL_ENTRY)&_ZN7S3333C22v7Ev,
  (VTBL_ENTRY)&_ZN7S3333C22v8Ev,
  (VTBL_ENTRY)&_ZN7S3333C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3333C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3333C12v3Ev,
  (VTBL_ENTRY)&_ZN7S3333C12v4Ev,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S3333C1[0]),
  (VTBL_ENTRY)&_ZN7S3333C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3333C42v9Ev,
  (VTBL_ENTRY)&_ZN7S3333C43v10Ev,
  (VTBL_ENTRY)&_ZN7S3333C43v11Ev,
  (VTBL_ENTRY)&_ZN7S3333C43v12Ev,
};
extern VTBL_ENTRY _ZTV7S3333C1[];
extern void _ZN7S3333C32v5Ev();
extern void _ZN7S3333C42v9Ev();
extern void _ZN7S3333C43v10Ev();
extern void _ZN7S3333C43v11Ev();
extern void _ZN7S3333C43v12Ev();
static  VTBL_ENTRY _tg__ZTV7S3333C4__7S3333C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S3333C4[0]),
  (VTBL_ENTRY)&_ZN7S3333C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3333C42v9Ev,
  (VTBL_ENTRY)&_ZN7S3333C43v10Ev,
  (VTBL_ENTRY)&_ZN7S3333C43v11Ev,
  (VTBL_ENTRY)&_ZN7S3333C43v12Ev,
};
static  VTT_ENTRY vtt_S3333C1[] = {
  {&(_ZTV7S3333C1[3]),  3,22},
  {&(_tg__ZTV7S3333C4__7S3333C1[4]),  4,9},
  {&(_tg__ZTV7S3333C4__7S3333C1[4]),  4,9},
  {&(_ZTV7S3333C1[17]),  17,22},
  {&(_ZTV7S3333C1[17]),  17,22},
};
extern VTBL_ENTRY _ZTI7S3333C1[];
extern  VTBL_ENTRY _ZTV7S3333C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3333C1[];
Class_Descriptor cd_S3333C1 = {  "S3333C1", // class name
  bases_S3333C1, 4,
  &(vtc_S3333C1[0]), // expected_vtbl_contents
  &(vtt_S3333C1[0]), // expected_vtt_contents
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI7S3333C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S3333C1),22, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3333C1),5, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9267C2  {
  ::S18423C15_nt s9267c2f0;
  int s9267c2f1[2];
  char s9267c2f2;
  virtual  ~S9267C2(); // _ZN7S9267C2D1Ev
  virtual void  v3(); // _ZN7S9267C22v3Ev
  virtual void  v4(); // _ZN7S9267C22v4Ev
  virtual void  v5(); // _ZN7S9267C22v5Ev
  S9267C2(); // tgen
};
//SIG(-1 S9267C2) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S9267C2 ::~S9267C2(){ note_dtor("S9267C2", this);}
void  S9267C2 ::v3(){vfunc_called(this, "_ZN7S9267C22v3Ev");}
void  S9267C2 ::v4(){vfunc_called(this, "_ZN7S9267C22v4Ev");}
void  S9267C2 ::v5(){vfunc_called(this, "_ZN7S9267C22v5Ev");}
S9267C2 ::S9267C2(){ note_ctor("S9267C2", this);} // tgen

static void Test_S9267C2()
{
  extern Class_Descriptor cd_S9267C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S9267C2, buf);
    S9267C2 *dp, &lv = *(dp=new (buf) S9267C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S9267C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9267C2)");
    check_field_offset(lv, s9267c2f0, ABISELECT(8,4), "S9267C2.s9267c2f0");
    check_field_offset(lv, s9267c2f1, ABISELECT(24,16), "S9267C2.s9267c2f1");
    check_field_offset(lv, s9267c2f2, ABISELECT(32,24), "S9267C2.s9267c2f2");
    test_class_info(&lv, &cd_S9267C2);
    dp->~S9267C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9267C2(Test_S9267C2, "S9267C2", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S9267C2C1Ev();
extern void _ZN7S9267C2D1Ev();
Name_Map name_map_S9267C2[] = {
  NSPAIR(_ZN7S9267C2C1Ev),
  NSPAIR(_ZN7S9267C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9267C2[];
extern void _ZN7S9267C2D1Ev();
extern void _ZN7S9267C2D0Ev();
extern void _ZN7S9267C22v3Ev();
extern void _ZN7S9267C22v4Ev();
extern void _ZN7S9267C22v5Ev();
static  VTBL_ENTRY vtc_S9267C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9267C2[0]),
  (VTBL_ENTRY)&_ZN7S9267C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9267C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9267C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9267C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9267C22v5Ev,
};
extern VTBL_ENTRY _ZTI7S9267C2[];
extern  VTBL_ENTRY _ZTV7S9267C2[];
Class_Descriptor cd_S9267C2 = {  "S9267C2", // class name
  0,0,//no base classes
  &(vtc_S9267C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S9267C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9267C2),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9267C1  : S9267C2 {
  char s9267c1f0[3];
  ::S1868C17 s9267c1f1;
  void *s9267c1f2[2];
  virtual  ~S9267C1(); // _ZN7S9267C1D1Ev
  virtual void  v1(); // _ZN7S9267C12v1Ev
  virtual void  v2(); // _ZN7S9267C12v2Ev
  S9267C1(); // tgen
};
//SIG(1 S9267C1) C1{ BC2{ vd v3 v4 v5 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} vd v1 v2 Fc[3] FC5{ m Fp} Fp[2]}


 S9267C1 ::~S9267C1(){ note_dtor("S9267C1", this);}
void  S9267C1 ::v1(){vfunc_called(this, "_ZN7S9267C12v1Ev");}
void  S9267C1 ::v2(){vfunc_called(this, "_ZN7S9267C12v2Ev");}
S9267C1 ::S9267C1(){ note_ctor("S9267C1", this);} // tgen

static void Test_S9267C1()
{
  extern Class_Descriptor cd_S9267C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,11)];
    init_test(&cd_S9267C1, buf);
    S9267C1 *dp, &lv = *(dp=new (buf) S9267C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,40), "sizeof(S9267C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9267C1)");
    check_base_class_offset(lv, (S9267C2*), 0, "S9267C1");
    check_field_offset(lv, s9267c1f0, ABISELECT(33,25), "S9267C1.s9267c1f0");
    check_field_offset(lv, s9267c1f1, ABISELECT(40,28), "S9267C1.s9267c1f1");
    check_field_offset(lv, s9267c1f2, ABISELECT(48,32), "S9267C1.s9267c1f2");
    test_class_info(&lv, &cd_S9267C1);
    dp->~S9267C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9267C1(Test_S9267C1, "S9267C1", ABISELECT(64,40));

#else // __cplusplus

extern void _ZN7S9267C1C1Ev();
extern void _ZN7S9267C1D1Ev();
Name_Map name_map_S9267C1[] = {
  NSPAIR(_ZN7S9267C1C1Ev),
  NSPAIR(_ZN7S9267C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9267C2;
extern VTBL_ENTRY _ZTI7S9267C2[];
extern  VTBL_ENTRY _ZTV7S9267C2[];
static Base_Class bases_S9267C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9267C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9267C1[];
extern void _ZN7S9267C1D1Ev();
extern void _ZN7S9267C1D0Ev();
extern void _ZN7S9267C22v3Ev();
extern void _ZN7S9267C22v4Ev();
extern void _ZN7S9267C22v5Ev();
extern void _ZN7S9267C12v1Ev();
extern void _ZN7S9267C12v2Ev();
static  VTBL_ENTRY vtc_S9267C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9267C1[0]),
  (VTBL_ENTRY)&_ZN7S9267C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9267C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9267C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9267C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9267C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9267C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9267C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S9267C1[];
extern  VTBL_ENTRY _ZTV7S9267C1[];
Class_Descriptor cd_S9267C1 = {  "S9267C1", // class name
  bases_S9267C1, 1,
  &(vtc_S9267C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,40), // object size
  NSPAIRA(_ZTI7S9267C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9267C1),9, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12379C1  {
  int s12379c1f0;
  ::S12396C2_nt s12379c1f1;
  ::S12396C2_nt s12379c1f2;
  int s12379c1f3;
  ::S12396C4_nt s12379c1f4;
  int s12379c1f5[3];
  long s12379c1f6[2];
  ::S12396C2_nt s12379c1f7;
  ::S12396C6_nt s12379c1f8;
  int s12379c1f9[3];
};
//SIG(1 S12379C1) C1{ Fi FC2{ FC3{ Fc[20]} Fc[16]} FC2 Fi FC4{ Fc[12]} Fi[3] Fl[2] FC2 FC5{ Fl} Fi[3]}



static void Test_S12379C1()
{
  {
    init_simple_test("S12379C1");
    S12379C1 lv;
    check2(sizeof(lv), ABISELECT(184,164), "sizeof(S12379C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S12379C1)");
    check_field_offset(lv, s12379c1f0, 0, "S12379C1.s12379c1f0");
    check_field_offset(lv, s12379c1f1, 4, "S12379C1.s12379c1f1");
    check_field_offset(lv, s12379c1f2, 40, "S12379C1.s12379c1f2");
    check_field_offset(lv, s12379c1f3, 76, "S12379C1.s12379c1f3");
    check_field_offset(lv, s12379c1f4, 80, "S12379C1.s12379c1f4");
    check_field_offset(lv, s12379c1f5, 92, "S12379C1.s12379c1f5");
    check_field_offset(lv, s12379c1f6, 104, "S12379C1.s12379c1f6");
    check_field_offset(lv, s12379c1f7, ABISELECT(120,112), "S12379C1.s12379c1f7");
    check_field_offset(lv, s12379c1f8, ABISELECT(160,148), "S12379C1.s12379c1f8");
    check_field_offset(lv, s12379c1f9, ABISELECT(168,152), "S12379C1.s12379c1f9");
  }
}
static Arrange_To_Call_Me vS12379C1(Test_S12379C1, "S12379C1", ABISELECT(184,164));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2933C2  : S7856C24 {
  void *s2933c2f0;
  ::S17556C15_nt s2933c2f1;
  int s2933c2f2;
  virtual  ~S2933C2(); // _ZN7S2933C2D1Ev
  virtual void  v5(); // _ZN7S2933C22v5Ev
  virtual void  v6(); // _ZN7S2933C22v6Ev
  virtual void  v7(); // _ZN7S2933C22v7Ev
  virtual void  v8(); // _ZN7S2933C22v8Ev
  S2933C2(); // tgen
};
//SIG(-1 S2933C2) C1{ BC2{ m} vd v1 v2 v3 v4 Fp FC3{ m Fp Fi[2] FC4{ m}} Fi}


 S2933C2 ::~S2933C2(){ note_dtor("S2933C2", this);}
void  S2933C2 ::v5(){vfunc_called(this, "_ZN7S2933C22v5Ev");}
void  S2933C2 ::v6(){vfunc_called(this, "_ZN7S2933C22v6Ev");}
void  S2933C2 ::v7(){vfunc_called(this, "_ZN7S2933C22v7Ev");}
void  S2933C2 ::v8(){vfunc_called(this, "_ZN7S2933C22v8Ev");}
S2933C2 ::S2933C2(){ note_ctor("S2933C2", this);} // tgen

static void Test_S2933C2()
{
  extern Class_Descriptor cd_S2933C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,8)];
    init_test(&cd_S2933C2, buf);
    S2933C2 *dp, &lv = *(dp=new (buf) S2933C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S2933C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2933C2)");
    check_base_class_offset(lv, (S7856C24*), 0, "S2933C2");
    check_field_offset(lv, s2933c2f0, ABISELECT(8,4), "S2933C2.s2933c2f0");
    check_field_offset(lv, s2933c2f1, ABISELECT(16,8), "S2933C2.s2933c2f1");
    check_field_offset(lv, s2933c2f2, ABISELECT(40,24), "S2933C2.s2933c2f2");
    test_class_info(&lv, &cd_S2933C2);
    dp->~S2933C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2933C2(Test_S2933C2, "S2933C2", ABISELECT(48,28));

#else // __cplusplus

extern void _ZN7S2933C2C1Ev();
extern void _ZN7S2933C2D1Ev();
Name_Map name_map_S2933C2[] = {
  NSPAIR(_ZN7S2933C2C1Ev),
  NSPAIR(_ZN7S2933C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
static Base_Class bases_S2933C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2933C2[];
extern void _ZN7S2933C2D1Ev();
extern void _ZN7S2933C2D0Ev();
extern void _ZN7S2933C22v5Ev();
extern void _ZN7S2933C22v6Ev();
extern void _ZN7S2933C22v7Ev();
extern void _ZN7S2933C22v8Ev();
static  VTBL_ENTRY vtc_S2933C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2933C2[0]),
  (VTBL_ENTRY)&_ZN7S2933C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2933C2D0Ev,
  (VTBL_ENTRY)&_ZN7S2933C22v5Ev,
  (VTBL_ENTRY)&_ZN7S2933C22v6Ev,
  (VTBL_ENTRY)&_ZN7S2933C22v7Ev,
  (VTBL_ENTRY)&_ZN7S2933C22v8Ev,
};
extern VTBL_ENTRY _ZTI7S2933C2[];
extern  VTBL_ENTRY _ZTV7S2933C2[];
Class_Descriptor cd_S2933C2 = {  "S2933C2", // class name
  bases_S2933C2, 1,
  &(vtc_S2933C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,28), // object size
  NSPAIRA(_ZTI7S2933C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2933C2),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2933C1  : S2933C2 {
  int s2933c1f0;
  virtual  ~S2933C1(); // _ZN7S2933C1D1Ev
  virtual void  v1(); // _ZN7S2933C12v1Ev
  virtual void  v2(); // _ZN7S2933C12v2Ev
  virtual void  v3(); // _ZN7S2933C12v3Ev
  virtual void  v4(); // _ZN7S2933C12v4Ev
  S2933C1(); // tgen
};
//SIG(1 S2933C1) C1{ BC2{ BC3{ m} vd v5 v6 v7 v8 Fp FC4{ m Fp Fi[2] FC5{ m}} Fi} vd v1 v2 v3 v4 Fi}


 S2933C1 ::~S2933C1(){ note_dtor("S2933C1", this);}
void  S2933C1 ::v1(){vfunc_called(this, "_ZN7S2933C12v1Ev");}
void  S2933C1 ::v2(){vfunc_called(this, "_ZN7S2933C12v2Ev");}
void  S2933C1 ::v3(){vfunc_called(this, "_ZN7S2933C12v3Ev");}
void  S2933C1 ::v4(){vfunc_called(this, "_ZN7S2933C12v4Ev");}
S2933C1 ::S2933C1(){ note_ctor("S2933C1", this);} // tgen

static void Test_S2933C1()
{
  extern Class_Descriptor cd_S2933C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S2933C1, buf);
    S2933C1 *dp, &lv = *(dp=new (buf) S2933C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S2933C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2933C1)");
    check_base_class_offset(lv, (S7856C24*)(S2933C2*), 0, "S2933C1");
    check_base_class_offset(lv, (S2933C2*), 0, "S2933C1");
    check_field_offset(lv, s2933c1f0, ABISELECT(44,28), "S2933C1.s2933c1f0");
    test_class_info(&lv, &cd_S2933C1);
    dp->~S2933C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2933C1(Test_S2933C1, "S2933C1", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN7S2933C1C1Ev();
extern void _ZN7S2933C1D1Ev();
Name_Map name_map_S2933C1[] = {
  NSPAIR(_ZN7S2933C1C1Ev),
  NSPAIR(_ZN7S2933C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S2933C2;
extern VTBL_ENTRY _ZTI7S2933C2[];
extern  VTBL_ENTRY _ZTV7S2933C2[];
static Base_Class bases_S2933C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2933C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2933C1[];
extern void _ZN7S2933C1D1Ev();
extern void _ZN7S2933C1D0Ev();
extern void _ZN7S2933C22v5Ev();
extern void _ZN7S2933C22v6Ev();
extern void _ZN7S2933C22v7Ev();
extern void _ZN7S2933C22v8Ev();
extern void _ZN7S2933C12v1Ev();
extern void _ZN7S2933C12v2Ev();
extern void _ZN7S2933C12v3Ev();
extern void _ZN7S2933C12v4Ev();
static  VTBL_ENTRY vtc_S2933C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2933C1[0]),
  (VTBL_ENTRY)&_ZN7S2933C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2933C1D0Ev,
  (VTBL_ENTRY)&_ZN7S2933C22v5Ev,
  (VTBL_ENTRY)&_ZN7S2933C22v6Ev,
  (VTBL_ENTRY)&_ZN7S2933C22v7Ev,
  (VTBL_ENTRY)&_ZN7S2933C22v8Ev,
  (VTBL_ENTRY)&_ZN7S2933C12v1Ev,
  (VTBL_ENTRY)&_ZN7S2933C12v2Ev,
  (VTBL_ENTRY)&_ZN7S2933C12v3Ev,
  (VTBL_ENTRY)&_ZN7S2933C12v4Ev,
};
extern VTBL_ENTRY _ZTI7S2933C1[];
extern  VTBL_ENTRY _ZTV7S2933C1[];
Class_Descriptor cd_S2933C1 = {  "S2933C1", // class name
  bases_S2933C1, 2,
  &(vtc_S2933C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI7S2933C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2933C1),12, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6873C2_nt  {
  virtual  ~S6873C2_nt(); // _ZN10S6873C2_ntD1Ev
  virtual void  v4(); // _ZN10S6873C2_nt2v4Ev
  virtual void  v5(); // _ZN10S6873C2_nt2v5Ev
  virtual void  v6(); // _ZN10S6873C2_nt2v6Ev
  virtual void  v7(); // _ZN10S6873C2_nt2v7Ev
  virtual void  v8(); // _ZN10S6873C2_nt2v8Ev
  virtual void  v9(); // _ZN10S6873C2_nt2v9Ev
  S6873C2_nt(); // tgen
};
//SIG(-1 S6873C2_nt) C1{ vd v1 v2 v3 v4 v5 v6}


 S6873C2_nt ::~S6873C2_nt(){ note_dtor("S6873C2_nt", this);}
void  S6873C2_nt ::v4(){vfunc_called(this, "_ZN10S6873C2_nt2v4Ev");}
void  S6873C2_nt ::v5(){vfunc_called(this, "_ZN10S6873C2_nt2v5Ev");}
void  S6873C2_nt ::v6(){vfunc_called(this, "_ZN10S6873C2_nt2v6Ev");}
void  S6873C2_nt ::v7(){vfunc_called(this, "_ZN10S6873C2_nt2v7Ev");}
void  S6873C2_nt ::v8(){vfunc_called(this, "_ZN10S6873C2_nt2v8Ev");}
void  S6873C2_nt ::v9(){vfunc_called(this, "_ZN10S6873C2_nt2v9Ev");}
S6873C2_nt ::S6873C2_nt(){ note_ctor("S6873C2_nt", this);} // tgen

//skip512 S6873C2_nt

#else // __cplusplus

extern void _ZN10S6873C2_ntC1Ev();
extern void _ZN10S6873C2_ntD1Ev();
Name_Map name_map_S6873C2_nt[] = {
  NSPAIR(_ZN10S6873C2_ntC1Ev),
  NSPAIR(_ZN10S6873C2_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S6873C2_nt[];
extern void _ZN10S6873C2_ntD1Ev();
extern void _ZN10S6873C2_ntD0Ev();
extern void _ZN10S6873C2_nt2v4Ev();
extern void _ZN10S6873C2_nt2v5Ev();
extern void _ZN10S6873C2_nt2v6Ev();
extern void _ZN10S6873C2_nt2v7Ev();
extern void _ZN10S6873C2_nt2v8Ev();
extern void _ZN10S6873C2_nt2v9Ev();
static  VTBL_ENTRY vtc_S6873C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S6873C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S6873C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S6873C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S6873C2_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S6873C2_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S6873C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S6873C2_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S6873C2_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S6873C2_nt2v9Ev,
};
extern VTBL_ENTRY _ZTI10S6873C2_nt[];
VTBL_ENTRY *P__ZTI10S6873C2_nt = _ZTI10S6873C2_nt; 
extern  VTBL_ENTRY _ZTV10S6873C2_nt[];
Class_Descriptor cd_S6873C2_nt = {  "S6873C2_nt", // class name
  0,0,//no base classes
  &(vtc_S6873C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S6873C2_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S6873C2_nt),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6873C1  : S6873C2_nt {
  void *s6873c1f0[3];
  __tsi64 s6873c1f1;
  int s6873c1f2[3];
  ::S17566C3_nt s6873c1f3;
  char s6873c1f4[2];
  virtual  ~S6873C1(); // _ZN7S6873C1D1Ev
  virtual void  v1(); // _ZN7S6873C12v1Ev
  virtual void  v2(); // _ZN7S6873C12v2Ev
  virtual void  v3(); // _ZN7S6873C12v3Ev
  S6873C1(); // tgen
};
//SIG(1 S6873C1) C1{ BC2{ vd v4 v5 v6 v7 v8 v9} vd v1 v2 v3 Fp[3] FL Fi[3] FC3{ m FL[4]} Fc[2]}


 S6873C1 ::~S6873C1(){ note_dtor("S6873C1", this);}
void  S6873C1 ::v1(){vfunc_called(this, "_ZN7S6873C12v1Ev");}
void  S6873C1 ::v2(){vfunc_called(this, "_ZN7S6873C12v2Ev");}
void  S6873C1 ::v3(){vfunc_called(this, "_ZN7S6873C12v3Ev");}
S6873C1 ::S6873C1(){ note_ctor("S6873C1", this);} // tgen

static void Test_S6873C1()
{
  extern Class_Descriptor cd_S6873C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,19)];
    init_test(&cd_S6873C1, buf);
    S6873C1 *dp, &lv = *(dp=new (buf) S6873C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,72), "sizeof(S6873C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6873C1)");
    check_base_class_offset(lv, (S6873C2_nt*), 0, "S6873C1");
    check_field_offset(lv, s6873c1f0, ABISELECT(8,4), "S6873C1.s6873c1f0");
    check_field_offset(lv, s6873c1f1, ABISELECT(32,16), "S6873C1.s6873c1f1");
    check_field_offset(lv, s6873c1f2, ABISELECT(40,24), "S6873C1.s6873c1f2");
    check_field_offset(lv, s6873c1f3, ABISELECT(56,36), "S6873C1.s6873c1f3");
    check_field_offset(lv, s6873c1f4, ABISELECT(88,68), "S6873C1.s6873c1f4");
    test_class_info(&lv, &cd_S6873C1);
    dp->~S6873C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6873C1(Test_S6873C1, "S6873C1", ABISELECT(96,72));

#else // __cplusplus

extern void _ZN7S6873C1C1Ev();
extern void _ZN7S6873C1D1Ev();
Name_Map name_map_S6873C1[] = {
  NSPAIR(_ZN7S6873C1C1Ev),
  NSPAIR(_ZN7S6873C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6873C2_nt;
extern VTBL_ENTRY _ZTI10S6873C2_nt[];
extern  VTBL_ENTRY _ZTV10S6873C2_nt[];
static Base_Class bases_S6873C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6873C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6873C1[];
extern void _ZN7S6873C1D1Ev();
extern void _ZN7S6873C1D0Ev();
extern void _ZN10S6873C2_nt2v4Ev();
extern void _ZN10S6873C2_nt2v5Ev();
extern void _ZN10S6873C2_nt2v6Ev();
extern void _ZN10S6873C2_nt2v7Ev();
extern void _ZN10S6873C2_nt2v8Ev();
extern void _ZN10S6873C2_nt2v9Ev();
extern void _ZN7S6873C12v1Ev();
extern void _ZN7S6873C12v2Ev();
extern void _ZN7S6873C12v3Ev();
static  VTBL_ENTRY vtc_S6873C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6873C1[0]),
  (VTBL_ENTRY)&_ZN7S6873C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6873C1D0Ev,
  (VTBL_ENTRY)&_ZN10S6873C2_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S6873C2_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S6873C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S6873C2_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S6873C2_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S6873C2_nt2v9Ev,
  (VTBL_ENTRY)&_ZN7S6873C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6873C12v2Ev,
  (VTBL_ENTRY)&_ZN7S6873C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S6873C1[];
extern  VTBL_ENTRY _ZTV7S6873C1[];
Class_Descriptor cd_S6873C1 = {  "S6873C1", // class name
  bases_S6873C1, 1,
  &(vtc_S6873C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,72), // object size
  NSPAIRA(_ZTI7S6873C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6873C1),13, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9389C2  {
  ::S18423C15_nt s9389c2f0;
  int s9389c2f1[2];
  char s9389c2f2;
  virtual  ~S9389C2(); // _ZN7S9389C2D1Ev
  virtual void  v3(); // _ZN7S9389C22v3Ev
  virtual void  v4(); // _ZN7S9389C22v4Ev
  virtual void  v5(); // _ZN7S9389C22v5Ev
  S9389C2(); // tgen
};
//SIG(-1 S9389C2) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S9389C2 ::~S9389C2(){ note_dtor("S9389C2", this);}
void  S9389C2 ::v3(){vfunc_called(this, "_ZN7S9389C22v3Ev");}
void  S9389C2 ::v4(){vfunc_called(this, "_ZN7S9389C22v4Ev");}
void  S9389C2 ::v5(){vfunc_called(this, "_ZN7S9389C22v5Ev");}
S9389C2 ::S9389C2(){ note_ctor("S9389C2", this);} // tgen

static void Test_S9389C2()
{
  extern Class_Descriptor cd_S9389C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S9389C2, buf);
    S9389C2 *dp, &lv = *(dp=new (buf) S9389C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S9389C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9389C2)");
    check_field_offset(lv, s9389c2f0, ABISELECT(8,4), "S9389C2.s9389c2f0");
    check_field_offset(lv, s9389c2f1, ABISELECT(24,16), "S9389C2.s9389c2f1");
    check_field_offset(lv, s9389c2f2, ABISELECT(32,24), "S9389C2.s9389c2f2");
    test_class_info(&lv, &cd_S9389C2);
    dp->~S9389C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9389C2(Test_S9389C2, "S9389C2", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S9389C2C1Ev();
extern void _ZN7S9389C2D1Ev();
Name_Map name_map_S9389C2[] = {
  NSPAIR(_ZN7S9389C2C1Ev),
  NSPAIR(_ZN7S9389C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9389C2[];
extern void _ZN7S9389C2D1Ev();
extern void _ZN7S9389C2D0Ev();
extern void _ZN7S9389C22v3Ev();
extern void _ZN7S9389C22v4Ev();
extern void _ZN7S9389C22v5Ev();
static  VTBL_ENTRY vtc_S9389C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9389C2[0]),
  (VTBL_ENTRY)&_ZN7S9389C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9389C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9389C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9389C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9389C22v5Ev,
};
extern VTBL_ENTRY _ZTI7S9389C2[];
extern  VTBL_ENTRY _ZTV7S9389C2[];
Class_Descriptor cd_S9389C2 = {  "S9389C2", // class name
  0,0,//no base classes
  &(vtc_S9389C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S9389C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9389C2),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9389C1  : S9389C2 {
  void *s9389c1f0[2];
  ::S18423C15_nt s9389c1f1;
  char s9389c1f2[2];
  virtual  ~S9389C1(); // _ZN7S9389C1D1Ev
  virtual void  v1(); // _ZN7S9389C12v1Ev
  virtual void  v2(); // _ZN7S9389C12v2Ev
  S9389C1(); // tgen
};
//SIG(1 S9389C1) C1{ BC2{ vd v3 v4 v5 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} vd v1 v2 Fp[2] FC3 Fc[2]}


 S9389C1 ::~S9389C1(){ note_dtor("S9389C1", this);}
void  S9389C1 ::v1(){vfunc_called(this, "_ZN7S9389C12v1Ev");}
void  S9389C1 ::v2(){vfunc_called(this, "_ZN7S9389C12v2Ev");}
S9389C1 ::S9389C1(){ note_ctor("S9389C1", this);} // tgen

static void Test_S9389C1()
{
  extern Class_Descriptor cd_S9389C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,14)];
    init_test(&cd_S9389C1, buf);
    S9389C1 *dp, &lv = *(dp=new (buf) S9389C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,52), "sizeof(S9389C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9389C1)");
    check_base_class_offset(lv, (S9389C2*), 0, "S9389C1");
    check_field_offset(lv, s9389c1f0, ABISELECT(40,28), "S9389C1.s9389c1f0");
    check_field_offset(lv, s9389c1f1, ABISELECT(56,36), "S9389C1.s9389c1f1");
    check_field_offset(lv, s9389c1f2, ABISELECT(72,48), "S9389C1.s9389c1f2");
    test_class_info(&lv, &cd_S9389C1);
    dp->~S9389C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9389C1(Test_S9389C1, "S9389C1", ABISELECT(80,52));

#else // __cplusplus

extern void _ZN7S9389C1C1Ev();
extern void _ZN7S9389C1D1Ev();
Name_Map name_map_S9389C1[] = {
  NSPAIR(_ZN7S9389C1C1Ev),
  NSPAIR(_ZN7S9389C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9389C2;
extern VTBL_ENTRY _ZTI7S9389C2[];
extern  VTBL_ENTRY _ZTV7S9389C2[];
static Base_Class bases_S9389C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9389C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9389C1[];
extern void _ZN7S9389C1D1Ev();
extern void _ZN7S9389C1D0Ev();
extern void _ZN7S9389C22v3Ev();
extern void _ZN7S9389C22v4Ev();
extern void _ZN7S9389C22v5Ev();
extern void _ZN7S9389C12v1Ev();
extern void _ZN7S9389C12v2Ev();
static  VTBL_ENTRY vtc_S9389C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9389C1[0]),
  (VTBL_ENTRY)&_ZN7S9389C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9389C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9389C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9389C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9389C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9389C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9389C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S9389C1[];
extern  VTBL_ENTRY _ZTV7S9389C1[];
Class_Descriptor cd_S9389C1 = {  "S9389C1", // class name
  bases_S9389C1, 1,
  &(vtc_S9389C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,52), // object size
  NSPAIRA(_ZTI7S9389C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9389C1),9, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2934C2  : S7856C24 {
  void *s2934c2f0;
  ::S17556C15_nt s2934c2f1;
  int s2934c2f2;
  virtual  ~S2934C2(); // _ZN7S2934C2D1Ev
  virtual void  v5(); // _ZN7S2934C22v5Ev
  virtual void  v6(); // _ZN7S2934C22v6Ev
  virtual void  v7(); // _ZN7S2934C22v7Ev
  virtual void  v8(); // _ZN7S2934C22v8Ev
  S2934C2(); // tgen
};
//SIG(-1 S2934C2) C1{ BC2{ m} vd v1 v2 v3 v4 Fp FC3{ m Fp Fi[2] FC4{ m}} Fi}


 S2934C2 ::~S2934C2(){ note_dtor("S2934C2", this);}
void  S2934C2 ::v5(){vfunc_called(this, "_ZN7S2934C22v5Ev");}
void  S2934C2 ::v6(){vfunc_called(this, "_ZN7S2934C22v6Ev");}
void  S2934C2 ::v7(){vfunc_called(this, "_ZN7S2934C22v7Ev");}
void  S2934C2 ::v8(){vfunc_called(this, "_ZN7S2934C22v8Ev");}
S2934C2 ::S2934C2(){ note_ctor("S2934C2", this);} // tgen

static void Test_S2934C2()
{
  extern Class_Descriptor cd_S2934C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,8)];
    init_test(&cd_S2934C2, buf);
    S2934C2 *dp, &lv = *(dp=new (buf) S2934C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S2934C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2934C2)");
    check_base_class_offset(lv, (S7856C24*), 0, "S2934C2");
    check_field_offset(lv, s2934c2f0, ABISELECT(8,4), "S2934C2.s2934c2f0");
    check_field_offset(lv, s2934c2f1, ABISELECT(16,8), "S2934C2.s2934c2f1");
    check_field_offset(lv, s2934c2f2, ABISELECT(40,24), "S2934C2.s2934c2f2");
    test_class_info(&lv, &cd_S2934C2);
    dp->~S2934C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2934C2(Test_S2934C2, "S2934C2", ABISELECT(48,28));

#else // __cplusplus

extern void _ZN7S2934C2C1Ev();
extern void _ZN7S2934C2D1Ev();
Name_Map name_map_S2934C2[] = {
  NSPAIR(_ZN7S2934C2C1Ev),
  NSPAIR(_ZN7S2934C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
static Base_Class bases_S2934C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2934C2[];
extern void _ZN7S2934C2D1Ev();
extern void _ZN7S2934C2D0Ev();
extern void _ZN7S2934C22v5Ev();
extern void _ZN7S2934C22v6Ev();
extern void _ZN7S2934C22v7Ev();
extern void _ZN7S2934C22v8Ev();
static  VTBL_ENTRY vtc_S2934C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2934C2[0]),
  (VTBL_ENTRY)&_ZN7S2934C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2934C2D0Ev,
  (VTBL_ENTRY)&_ZN7S2934C22v5Ev,
  (VTBL_ENTRY)&_ZN7S2934C22v6Ev,
  (VTBL_ENTRY)&_ZN7S2934C22v7Ev,
  (VTBL_ENTRY)&_ZN7S2934C22v8Ev,
};
extern VTBL_ENTRY _ZTI7S2934C2[];
extern  VTBL_ENTRY _ZTV7S2934C2[];
Class_Descriptor cd_S2934C2 = {  "S2934C2", // class name
  bases_S2934C2, 1,
  &(vtc_S2934C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,28), // object size
  NSPAIRA(_ZTI7S2934C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2934C2),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2934C1  : S2934C2 {
  virtual  ~S2934C1(); // _ZN7S2934C1D1Ev
  virtual void  v1(); // _ZN7S2934C12v1Ev
  virtual void  v2(); // _ZN7S2934C12v2Ev
  virtual void  v3(); // _ZN7S2934C12v3Ev
  virtual void  v4(); // _ZN7S2934C12v4Ev
  S2934C1(); // tgen
};
//SIG(1 S2934C1) C1{ BC2{ BC3{ m} vd v5 v6 v7 v8 Fp FC4{ m Fp Fi[2] FC5{ m}} Fi} vd v1 v2 v3 v4}


 S2934C1 ::~S2934C1(){ note_dtor("S2934C1", this);}
void  S2934C1 ::v1(){vfunc_called(this, "_ZN7S2934C12v1Ev");}
void  S2934C1 ::v2(){vfunc_called(this, "_ZN7S2934C12v2Ev");}
void  S2934C1 ::v3(){vfunc_called(this, "_ZN7S2934C12v3Ev");}
void  S2934C1 ::v4(){vfunc_called(this, "_ZN7S2934C12v4Ev");}
S2934C1 ::S2934C1(){ note_ctor("S2934C1", this);} // tgen

static void Test_S2934C1()
{
  extern Class_Descriptor cd_S2934C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,8)];
    init_test(&cd_S2934C1, buf);
    S2934C1 *dp, &lv = *(dp=new (buf) S2934C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S2934C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2934C1)");
    check_base_class_offset(lv, (S7856C24*)(S2934C2*), 0, "S2934C1");
    check_base_class_offset(lv, (S2934C2*), 0, "S2934C1");
    test_class_info(&lv, &cd_S2934C1);
    dp->~S2934C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2934C1(Test_S2934C1, "S2934C1", ABISELECT(48,28));

#else // __cplusplus

extern void _ZN7S2934C1C1Ev();
extern void _ZN7S2934C1D1Ev();
Name_Map name_map_S2934C1[] = {
  NSPAIR(_ZN7S2934C1C1Ev),
  NSPAIR(_ZN7S2934C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S2934C2;
extern VTBL_ENTRY _ZTI7S2934C2[];
extern  VTBL_ENTRY _ZTV7S2934C2[];
static Base_Class bases_S2934C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2934C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2934C1[];
extern void _ZN7S2934C1D1Ev();
extern void _ZN7S2934C1D0Ev();
extern void _ZN7S2934C22v5Ev();
extern void _ZN7S2934C22v6Ev();
extern void _ZN7S2934C22v7Ev();
extern void _ZN7S2934C22v8Ev();
extern void _ZN7S2934C12v1Ev();
extern void _ZN7S2934C12v2Ev();
extern void _ZN7S2934C12v3Ev();
extern void _ZN7S2934C12v4Ev();
static  VTBL_ENTRY vtc_S2934C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2934C1[0]),
  (VTBL_ENTRY)&_ZN7S2934C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2934C1D0Ev,
  (VTBL_ENTRY)&_ZN7S2934C22v5Ev,
  (VTBL_ENTRY)&_ZN7S2934C22v6Ev,
  (VTBL_ENTRY)&_ZN7S2934C22v7Ev,
  (VTBL_ENTRY)&_ZN7S2934C22v8Ev,
  (VTBL_ENTRY)&_ZN7S2934C12v1Ev,
  (VTBL_ENTRY)&_ZN7S2934C12v2Ev,
  (VTBL_ENTRY)&_ZN7S2934C12v3Ev,
  (VTBL_ENTRY)&_ZN7S2934C12v4Ev,
};
extern VTBL_ENTRY _ZTI7S2934C1[];
extern  VTBL_ENTRY _ZTV7S2934C1[];
Class_Descriptor cd_S2934C1 = {  "S2934C1", // class name
  bases_S2934C1, 2,
  &(vtc_S2934C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,28), // object size
  NSPAIRA(_ZTI7S2934C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2934C1),12, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3717C2  : S3750C3_nt {
  virtual  ~S3717C2(); // _ZN7S3717C2D1Ev
  virtual void  v3(); // _ZN7S3717C22v3Ev
  virtual void  v4(); // _ZN7S3717C22v4Ev
  S3717C2(); // tgen
};
//SIG(-1 S3717C2) C1{ BC2{ vd m Fi} vd v1 v2}


 S3717C2 ::~S3717C2(){ note_dtor("S3717C2", this);}
void  S3717C2 ::v3(){vfunc_called(this, "_ZN7S3717C22v3Ev");}
void  S3717C2 ::v4(){vfunc_called(this, "_ZN7S3717C22v4Ev");}
S3717C2 ::S3717C2(){ note_ctor("S3717C2", this);} // tgen

static void Test_S3717C2()
{
  extern Class_Descriptor cd_S3717C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S3717C2, buf);
    S3717C2 *dp, &lv = *(dp=new (buf) S3717C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S3717C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3717C2)");
    check_base_class_offset(lv, (S3750C3_nt*), 0, "S3717C2");
    test_class_info(&lv, &cd_S3717C2);
    dp->~S3717C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3717C2(Test_S3717C2, "S3717C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S3717C2C1Ev();
extern void _ZN7S3717C2D1Ev();
Name_Map name_map_S3717C2[] = {
  NSPAIR(_ZN7S3717C2C1Ev),
  NSPAIR(_ZN7S3717C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3750C3_nt;
extern VTBL_ENTRY _ZTI10S3750C3_nt[];
extern  VTBL_ENTRY _ZTV10S3750C3_nt[];
static Base_Class bases_S3717C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3750C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3717C2[];
extern void _ZN7S3717C2D1Ev();
extern void _ZN7S3717C2D0Ev();
extern void _ZN7S3717C22v3Ev();
extern void _ZN7S3717C22v4Ev();
static  VTBL_ENTRY vtc_S3717C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3717C2[0]),
  (VTBL_ENTRY)&_ZN7S3717C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3717C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3717C22v3Ev,
  (VTBL_ENTRY)&_ZN7S3717C22v4Ev,
};
extern VTBL_ENTRY _ZTI7S3717C2[];
extern  VTBL_ENTRY _ZTV7S3717C2[];
Class_Descriptor cd_S3717C2 = {  "S3717C2", // class name
  bases_S3717C2, 1,
  &(vtc_S3717C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S3717C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3717C2),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3717C1  : S3717C2 {
  ::S18423C15_nt s3717c1f0;
  ::S40C9_nt s3717c1f1;
  virtual  ~S3717C1(); // _ZN7S3717C1D1Ev
  virtual void  v1(); // _ZN7S3717C12v1Ev
  virtual void  v2(); // _ZN7S3717C12v2Ev
  S3717C1(); // tgen
};
//SIG(1 S3717C1) C1{ BC2{ BC3{ vd m Fi} vd v3 v4} vd v1 v2 FC4{ m Fp Fi FC5{ m}} FC6{ m Fi[2]}}


 S3717C1 ::~S3717C1(){ note_dtor("S3717C1", this);}
void  S3717C1 ::v1(){vfunc_called(this, "_ZN7S3717C12v1Ev");}
void  S3717C1 ::v2(){vfunc_called(this, "_ZN7S3717C12v2Ev");}
S3717C1 ::S3717C1(){ note_ctor("S3717C1", this);} // tgen

static void Test_S3717C1()
{
  extern Class_Descriptor cd_S3717C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S3717C1, buf);
    S3717C1 *dp, &lv = *(dp=new (buf) S3717C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S3717C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3717C1)");
    check_base_class_offset(lv, (S3750C3_nt*)(S3717C2*), 0, "S3717C1");
    check_base_class_offset(lv, (S3717C2*), 0, "S3717C1");
    check_field_offset(lv, s3717c1f0, ABISELECT(16,8), "S3717C1.s3717c1f0");
    check_field_offset(lv, s3717c1f1, ABISELECT(32,20), "S3717C1.s3717c1f1");
    test_class_info(&lv, &cd_S3717C1);
    dp->~S3717C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3717C1(Test_S3717C1, "S3717C1", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S3717C1C1Ev();
extern void _ZN7S3717C1D1Ev();
Name_Map name_map_S3717C1[] = {
  NSPAIR(_ZN7S3717C1C1Ev),
  NSPAIR(_ZN7S3717C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3750C3_nt;
extern VTBL_ENTRY _ZTI10S3750C3_nt[];
extern  VTBL_ENTRY _ZTV10S3750C3_nt[];
extern Class_Descriptor cd_S3717C2;
extern VTBL_ENTRY _ZTI7S3717C2[];
extern  VTBL_ENTRY _ZTV7S3717C2[];
static Base_Class bases_S3717C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3750C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3717C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3717C1[];
extern void _ZN7S3717C1D1Ev();
extern void _ZN7S3717C1D0Ev();
extern void _ZN7S3717C22v3Ev();
extern void _ZN7S3717C22v4Ev();
extern void _ZN7S3717C12v1Ev();
extern void _ZN7S3717C12v2Ev();
static  VTBL_ENTRY vtc_S3717C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3717C1[0]),
  (VTBL_ENTRY)&_ZN7S3717C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3717C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3717C22v3Ev,
  (VTBL_ENTRY)&_ZN7S3717C22v4Ev,
  (VTBL_ENTRY)&_ZN7S3717C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3717C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S3717C1[];
extern  VTBL_ENTRY _ZTV7S3717C1[];
Class_Descriptor cd_S3717C1 = {  "S3717C1", // class name
  bases_S3717C1, 2,
  &(vtc_S3717C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S3717C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3717C1),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12093C1  {
  ::S8611C4_nt s12093c1f0;
  int s12093c1f1;
  ::S8611C4_nt s12093c1f2;
  int s12093c1f3;
  ::S8611C4_nt s12093c1f4;
  int s12093c1f5;
  ::S8611C4_nt s12093c1f6;
  int s12093c1f7;
  ::S8611C4_nt s12093c1f8;
  int s12093c1f9;
  ::S8611C4_nt s12093c1f10;
  int s12093c1f11;
  ::S40C35_nt s12093c1f12;
  ::S40C35_nt s12093c1f13;
};
//SIG(1 S12093C1) C1{ FC2{ m Fi[3]} Fi FC2 Fi FC2 Fi FC2 Fi FC2 Fi FC2 Fi FC3{ m Fi[4]} FC3}



static void Test_S12093C1()
{
  {
    init_simple_test("S12093C1");
    S12093C1 lv;
    check2(sizeof(lv), 128, "sizeof(S12093C1)");
    check2(__alignof__(lv), 4, "__alignof__(S12093C1)");
    check_field_offset(lv, s12093c1f0, 0, "S12093C1.s12093c1f0");
    check_field_offset(lv, s12093c1f1, 12, "S12093C1.s12093c1f1");
    check_field_offset(lv, s12093c1f2, 16, "S12093C1.s12093c1f2");
    check_field_offset(lv, s12093c1f3, 28, "S12093C1.s12093c1f3");
    check_field_offset(lv, s12093c1f4, 32, "S12093C1.s12093c1f4");
    check_field_offset(lv, s12093c1f5, 44, "S12093C1.s12093c1f5");
    check_field_offset(lv, s12093c1f6, 48, "S12093C1.s12093c1f6");
    check_field_offset(lv, s12093c1f7, 60, "S12093C1.s12093c1f7");
    check_field_offset(lv, s12093c1f8, 64, "S12093C1.s12093c1f8");
    check_field_offset(lv, s12093c1f9, 76, "S12093C1.s12093c1f9");
    check_field_offset(lv, s12093c1f10, 80, "S12093C1.s12093c1f10");
    check_field_offset(lv, s12093c1f11, 92, "S12093C1.s12093c1f11");
    check_field_offset(lv, s12093c1f12, 96, "S12093C1.s12093c1f12");
    check_field_offset(lv, s12093c1f13, 112, "S12093C1.s12093c1f13");
  }
}
static Arrange_To_Call_Me vS12093C1(Test_S12093C1, "S12093C1", 128);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S16181C1  {
  ::S15733C7_nt s16181c1f0;
  ::S17555C3_nt s16181c1f1;
  ::S2442C11_nt s16181c1f2;
  void  mf16181c1(); // _ZN8S16181C19mf16181c1Ev
};
//SIG(1 S16181C1) C1{ m FC2{ m Fp Fi FC3{ m} FC4{ m}} FC5{ m FC6{ Fl[4]}} FC7{ m Fp FC8{ Fi[4]}}}


void  S16181C1 ::mf16181c1(){}

static void Test_S16181C1()
{
  {
    init_simple_test("S16181C1");
    S16181C1 lv;
    check2(sizeof(lv), ABISELECT(72,48), "sizeof(S16181C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16181C1)");
    check_field_offset(lv, s16181c1f0, 0, "S16181C1.s16181c1f0");
    check_field_offset(lv, s16181c1f1, ABISELECT(16,12), "S16181C1.s16181c1f1");
    check_field_offset(lv, s16181c1f2, ABISELECT(48,28), "S16181C1.s16181c1f2");
  }
}
static Arrange_To_Call_Me vS16181C1(Test_S16181C1, "S16181C1", ABISELECT(72,48));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S16311C1  {
  ::S17556C15_nt s16311c1f0;
  ::S17556C15_nt s16311c1f1;
  ::S1868C13_nt s16311c1f2;
  ::S1868C13_nt s16311c1f3;
  int s16311c1f4;
  void *s16311c1f5[2];
  void  mf16311c1(); // _ZN8S16311C19mf16311c1Ev
};
//SIG(1 S16311C1) C1{ m FC2{ m Fp Fi[2] FC3{ m}} FC2 FC4{ m Fp Fi[2] FC5{ m}} FC4 Fi Fp[2]}


void  S16311C1 ::mf16311c1(){}

static void Test_S16311C1()
{
  {
    init_simple_test("S16311C1");
    S16311C1 lv;
    check2(sizeof(lv), ABISELECT(120,76), "sizeof(S16311C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16311C1)");
    check_field_offset(lv, s16311c1f0, 0, "S16311C1.s16311c1f0");
    check_field_offset(lv, s16311c1f1, ABISELECT(24,16), "S16311C1.s16311c1f1");
    check_field_offset(lv, s16311c1f2, ABISELECT(48,32), "S16311C1.s16311c1f2");
    check_field_offset(lv, s16311c1f3, ABISELECT(72,48), "S16311C1.s16311c1f3");
    check_field_offset(lv, s16311c1f4, ABISELECT(96,64), "S16311C1.s16311c1f4");
    check_field_offset(lv, s16311c1f5, ABISELECT(104,68), "S16311C1.s16311c1f5");
  }
}
static Arrange_To_Call_Me vS16311C1(Test_S16311C1, "S16311C1", ABISELECT(120,76));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19602C2  : S8033C7 {
  void *s19602c2f0;
  ::S20291C14_nt s19602c2f1;
  void *s19602c2f2;
  long double s19602c2f3;
  ~S19602C2(); // tgen
  S19602C2(); // tgen
};
//SIG(-1 S19602C2) C1{ BC2{ vd m Fc Fc:0 Fl[8] FD} Fp FC3{} Fp FD}


S19602C2 ::~S19602C2(){ note_dtor("S19602C2", this);} // tgen
S19602C2 ::S19602C2(){ note_ctor("S19602C2", this);} // tgen

static void Test_S19602C2()
{
  extern Class_Descriptor cd_S19602C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(10,20)];
    init_test(&cd_S19602C2, buf);
    S19602C2 *dp, &lv = *(dp=new (buf) S19602C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,76), "sizeof(S19602C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19602C2)");
    check_base_class_offset(lv, (S8033C7*), 0, "S19602C2");
    check_field_offset(lv, s19602c2f0, ABISELECT(96,52), "S19602C2.s19602c2f0");
    check_field_offset(lv, s19602c2f1, ABISELECT(104,56), "S19602C2.s19602c2f1");
    check_field_offset(lv, s19602c2f2, ABISELECT(112,60), "S19602C2.s19602c2f2");
    check_field_offset(lv, s19602c2f3, ABISELECT(128,64), "S19602C2.s19602c2f3");
    test_class_info(&lv, &cd_S19602C2);
    dp->~S19602C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19602C2(Test_S19602C2, "S19602C2", ABISELECT(144,76));

#else // __cplusplus

extern void _ZN8S19602C2C1Ev();
extern void _ZN8S19602C2D1Ev();
Name_Map name_map_S19602C2[] = {
  NSPAIR(_ZN8S19602C2C1Ev),
  NSPAIR(_ZN8S19602C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
static Base_Class bases_S19602C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19602C2[];
extern void _ZN8S19602C2D1Ev();
extern void _ZN8S19602C2D0Ev();
static  VTBL_ENTRY vtc_S19602C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19602C2[0]),
  (VTBL_ENTRY)&_ZN8S19602C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19602C2D0Ev,
};
extern VTBL_ENTRY _ZTI8S19602C2[];
extern  VTBL_ENTRY _ZTV8S19602C2[];
Class_Descriptor cd_S19602C2 = {  "S19602C2", // class name
  bases_S19602C2, 1,
  &(vtc_S19602C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,76), // object size
  NSPAIRA(_ZTI8S19602C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19602C2),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19602C1  : virtual S19602C2 {
  __tsi64 s19602c1f0;
  long double s19602c1f1;
  int s19602c1f2;
  char s19602c1f3[7];
  void *s19602c1f4;
  ~S19602C1(); // tgen
  S19602C1(); // tgen
};
//SIG(1 S19602C1) C1{ VBC2{ BC3{ vd m Fc Fc:0 Fl[8] FD} Fp FC4{} Fp FD} FL FD Fi Fc[7] Fp}


S19602C1 ::~S19602C1(){ note_dtor("S19602C1", this);} // tgen
S19602C1 ::S19602C1(){ note_ctor("S19602C1", this);} // tgen

static void Test_S19602C1()
{
  extern Class_Descriptor cd_S19602C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(14,30)];
    init_test(&cd_S19602C1, buf);
    S19602C1 *dp, &lv = *(dp=new (buf) S19602C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,116), "sizeof(S19602C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19602C1)");
    check_base_class_offset(lv, (S8033C7*)(S19602C2*), ABISELECT(64,40), "S19602C1");
    check_base_class_offset(lv, (S19602C2*), ABISELECT(64,40), "S19602C1");
    check_field_offset(lv, s19602c1f0, ABISELECT(8,4), "S19602C1.s19602c1f0");
    check_field_offset(lv, s19602c1f1, ABISELECT(16,12), "S19602C1.s19602c1f1");
    check_field_offset(lv, s19602c1f2, ABISELECT(32,24), "S19602C1.s19602c1f2");
    check_field_offset(lv, s19602c1f3, ABISELECT(36,28), "S19602C1.s19602c1f3");
    check_field_offset(lv, s19602c1f4, ABISELECT(48,36), "S19602C1.s19602c1f4");
    test_class_info(&lv, &cd_S19602C1);
    dp->~S19602C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19602C1(Test_S19602C1, "S19602C1", ABISELECT(208,116));

#else // __cplusplus

extern void _ZN8S19602C1C1Ev();
extern void _ZN8S19602C1D1Ev();
Name_Map name_map_S19602C1[] = {
  NSPAIR(_ZN8S19602C1C1Ev),
  NSPAIR(_ZN8S19602C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19602C2;
extern VTBL_ENTRY _ZTI8S19602C2[];
extern  VTBL_ENTRY _ZTV8S19602C2[];
static Base_Class bases_S19602C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19602C2,    ABISELECT(64,40), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19602C1[];
extern void _ZN8S19602C1D1Ev();
extern void _ZN8S19602C1D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S19602C1D1Ev,_ZTv0_n12_N8S19602C1D1Ev)();
extern void ABISELECT(_ZThn64_N8S19602C1D1Ev,_ZThn40_N8S19602C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19602C1D0Ev,_ZTv0_n12_N8S19602C1D0Ev)();
extern void ABISELECT(_ZThn64_N8S19602C1D0Ev,_ZThn40_N8S19602C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19602C1[] = {
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19602C1[0]),
  (VTBL_ENTRY)&_ZN8S19602C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19602C1D0Ev,
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S19602C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19602C1D1Ev,_ZTv0_n12_N8S19602C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19602C1D0Ev,_ZTv0_n12_N8S19602C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S19602C1[];
static  VTT_ENTRY vtt_S19602C1[] = {
  {&(_ZTV8S19602C1[3]),  3,10},
  {&(_ZTV8S19602C1[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S19602C1[];
extern  VTBL_ENTRY _ZTV8S19602C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19602C1[];
static VTBL_ENTRY alt_thunk_names188[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19602C1D0Ev,_ZTv0_n12_N8S19602C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19602C1D0Ev,_ZThn40_N8S19602C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19602C1D1Ev,_ZTv0_n12_N8S19602C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19602C1D1Ev,_ZThn40_N8S19602C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19602C1 = {  "S19602C1", // class name
  bases_S19602C1, 2,
  &(vtc_S19602C1[0]), // expected_vtbl_contents
  &(vtt_S19602C1[0]), // expected_vtt_contents
  ABISELECT(208,116), // object size
  NSPAIRA(_ZTI8S19602C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19602C1),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19602C1),2, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names188,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3718C2  : S3750C3_nt {
  virtual  ~S3718C2(); // _ZN7S3718C2D1Ev
  virtual void  v3(); // _ZN7S3718C22v3Ev
  virtual void  v4(); // _ZN7S3718C22v4Ev
  S3718C2(); // tgen
};
//SIG(-1 S3718C2) C1{ BC2{ vd m Fi} vd v1 v2}


 S3718C2 ::~S3718C2(){ note_dtor("S3718C2", this);}
void  S3718C2 ::v3(){vfunc_called(this, "_ZN7S3718C22v3Ev");}
void  S3718C2 ::v4(){vfunc_called(this, "_ZN7S3718C22v4Ev");}
S3718C2 ::S3718C2(){ note_ctor("S3718C2", this);} // tgen

static void Test_S3718C2()
{
  extern Class_Descriptor cd_S3718C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S3718C2, buf);
    S3718C2 *dp, &lv = *(dp=new (buf) S3718C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S3718C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3718C2)");
    check_base_class_offset(lv, (S3750C3_nt*), 0, "S3718C2");
    test_class_info(&lv, &cd_S3718C2);
    dp->~S3718C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3718C2(Test_S3718C2, "S3718C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S3718C2C1Ev();
extern void _ZN7S3718C2D1Ev();
Name_Map name_map_S3718C2[] = {
  NSPAIR(_ZN7S3718C2C1Ev),
  NSPAIR(_ZN7S3718C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3750C3_nt;
extern VTBL_ENTRY _ZTI10S3750C3_nt[];
extern  VTBL_ENTRY _ZTV10S3750C3_nt[];
static Base_Class bases_S3718C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3750C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3718C2[];
extern void _ZN7S3718C2D1Ev();
extern void _ZN7S3718C2D0Ev();
extern void _ZN7S3718C22v3Ev();
extern void _ZN7S3718C22v4Ev();
static  VTBL_ENTRY vtc_S3718C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3718C2[0]),
  (VTBL_ENTRY)&_ZN7S3718C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3718C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3718C22v3Ev,
  (VTBL_ENTRY)&_ZN7S3718C22v4Ev,
};
extern VTBL_ENTRY _ZTI7S3718C2[];
extern  VTBL_ENTRY _ZTV7S3718C2[];
Class_Descriptor cd_S3718C2 = {  "S3718C2", // class name
  bases_S3718C2, 1,
  &(vtc_S3718C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S3718C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3718C2),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3718C1  : S3718C2 {
  ::S1868C17 s3718c1f0;
  ::S18423C15_nt s3718c1f1;
  virtual  ~S3718C1(); // _ZN7S3718C1D1Ev
  virtual void  v1(); // _ZN7S3718C12v1Ev
  virtual void  v2(); // _ZN7S3718C12v2Ev
  S3718C1(); // tgen
};
//SIG(1 S3718C1) C1{ BC2{ BC3{ vd m Fi} vd v3 v4} vd v1 v2 FC4{ m Fp} FC5{ m Fp Fi FC6{ m}}}


 S3718C1 ::~S3718C1(){ note_dtor("S3718C1", this);}
void  S3718C1 ::v1(){vfunc_called(this, "_ZN7S3718C12v1Ev");}
void  S3718C1 ::v2(){vfunc_called(this, "_ZN7S3718C12v2Ev");}
S3718C1 ::S3718C1(){ note_ctor("S3718C1", this);} // tgen

static void Test_S3718C1()
{
  extern Class_Descriptor cd_S3718C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S3718C1, buf);
    S3718C1 *dp, &lv = *(dp=new (buf) S3718C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S3718C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3718C1)");
    check_base_class_offset(lv, (S3750C3_nt*)(S3718C2*), 0, "S3718C1");
    check_base_class_offset(lv, (S3718C2*), 0, "S3718C1");
    check_field_offset(lv, s3718c1f0, ABISELECT(16,8), "S3718C1.s3718c1f0");
    check_field_offset(lv, s3718c1f1, ABISELECT(24,12), "S3718C1.s3718c1f1");
    test_class_info(&lv, &cd_S3718C1);
    dp->~S3718C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3718C1(Test_S3718C1, "S3718C1", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN7S3718C1C1Ev();
extern void _ZN7S3718C1D1Ev();
Name_Map name_map_S3718C1[] = {
  NSPAIR(_ZN7S3718C1C1Ev),
  NSPAIR(_ZN7S3718C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3750C3_nt;
extern VTBL_ENTRY _ZTI10S3750C3_nt[];
extern  VTBL_ENTRY _ZTV10S3750C3_nt[];
extern Class_Descriptor cd_S3718C2;
extern VTBL_ENTRY _ZTI7S3718C2[];
extern  VTBL_ENTRY _ZTV7S3718C2[];
static Base_Class bases_S3718C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3750C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3718C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3718C1[];
extern void _ZN7S3718C1D1Ev();
extern void _ZN7S3718C1D0Ev();
extern void _ZN7S3718C22v3Ev();
extern void _ZN7S3718C22v4Ev();
extern void _ZN7S3718C12v1Ev();
extern void _ZN7S3718C12v2Ev();
static  VTBL_ENTRY vtc_S3718C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3718C1[0]),
  (VTBL_ENTRY)&_ZN7S3718C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3718C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3718C22v3Ev,
  (VTBL_ENTRY)&_ZN7S3718C22v4Ev,
  (VTBL_ENTRY)&_ZN7S3718C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3718C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S3718C1[];
extern  VTBL_ENTRY _ZTV7S3718C1[];
Class_Descriptor cd_S3718C1 = {  "S3718C1", // class name
  bases_S3718C1, 2,
  &(vtc_S3718C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI7S3718C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3718C1),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3142C3  {
  int s3142c3f0;
  char s3142c3f1[2];
  virtual void  v3(); // _ZN7S3142C32v3Ev
  virtual void  v4(); // _ZN7S3142C32v4Ev
  virtual void  v5(); // _ZN7S3142C32v5Ev
  virtual void  v6(); // _ZN7S3142C32v6Ev
  virtual void  v7(); // _ZN7S3142C32v7Ev
  ~S3142C3(); // tgen
  S3142C3(); // tgen
};
//SIG(-1 S3142C3) C1{ v1 v2 v3 v4 v5 Fi Fc[2]}


void  S3142C3 ::v3(){vfunc_called(this, "_ZN7S3142C32v3Ev");}
void  S3142C3 ::v4(){vfunc_called(this, "_ZN7S3142C32v4Ev");}
void  S3142C3 ::v5(){vfunc_called(this, "_ZN7S3142C32v5Ev");}
void  S3142C3 ::v6(){vfunc_called(this, "_ZN7S3142C32v6Ev");}
void  S3142C3 ::v7(){vfunc_called(this, "_ZN7S3142C32v7Ev");}
S3142C3 ::~S3142C3(){ note_dtor("S3142C3", this);} // tgen
S3142C3 ::S3142C3(){ note_ctor("S3142C3", this);} // tgen

static void Test_S3142C3()
{
  extern Class_Descriptor cd_S3142C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S3142C3, buf);
    S3142C3 *dp, &lv = *(dp=new (buf) S3142C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S3142C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3142C3)");
    check_field_offset(lv, s3142c3f0, ABISELECT(8,4), "S3142C3.s3142c3f0");
    check_field_offset(lv, s3142c3f1, ABISELECT(12,8), "S3142C3.s3142c3f1");
    test_class_info(&lv, &cd_S3142C3);
    dp->~S3142C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3142C3(Test_S3142C3, "S3142C3", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S3142C3C1Ev();
extern void _ZN7S3142C3D1Ev();
Name_Map name_map_S3142C3[] = {
  NSPAIR(_ZN7S3142C3C1Ev),
  NSPAIR(_ZN7S3142C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3142C3[];
extern void _ZN7S3142C32v3Ev();
extern void _ZN7S3142C32v4Ev();
extern void _ZN7S3142C32v5Ev();
extern void _ZN7S3142C32v6Ev();
extern void _ZN7S3142C32v7Ev();
static  VTBL_ENTRY vtc_S3142C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3142C3[0]),
  (VTBL_ENTRY)&_ZN7S3142C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3142C32v4Ev,
  (VTBL_ENTRY)&_ZN7S3142C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3142C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3142C32v7Ev,
};
extern VTBL_ENTRY _ZTI7S3142C3[];
extern  VTBL_ENTRY _ZTV7S3142C3[];
Class_Descriptor cd_S3142C3 = {  "S3142C3", // class name
  0,0,//no base classes
  &(vtc_S3142C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S3142C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3142C3),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3142C2  : S3142C3 {
  virtual void  v8(); // _ZN7S3142C22v8Ev
  virtual void  v9(); // _ZN7S3142C22v9Ev
  virtual void  v10(); // _ZN7S3142C23v10Ev
  virtual void  v11(); // _ZN7S3142C23v11Ev
  virtual void  v12(); // _ZN7S3142C23v12Ev
  ~S3142C2(); // tgen
  S3142C2(); // tgen
};
//SIG(-1 S3142C2) C1{ BC2{ v6 v7 v8 v9 v10 Fi Fc[2]} v1 v2 v3 v4 v5}


void  S3142C2 ::v8(){vfunc_called(this, "_ZN7S3142C22v8Ev");}
void  S3142C2 ::v9(){vfunc_called(this, "_ZN7S3142C22v9Ev");}
void  S3142C2 ::v10(){vfunc_called(this, "_ZN7S3142C23v10Ev");}
void  S3142C2 ::v11(){vfunc_called(this, "_ZN7S3142C23v11Ev");}
void  S3142C2 ::v12(){vfunc_called(this, "_ZN7S3142C23v12Ev");}
S3142C2 ::~S3142C2(){ note_dtor("S3142C2", this);} // tgen
S3142C2 ::S3142C2(){ note_ctor("S3142C2", this);} // tgen

static void Test_S3142C2()
{
  extern Class_Descriptor cd_S3142C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S3142C2, buf);
    S3142C2 *dp, &lv = *(dp=new (buf) S3142C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S3142C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3142C2)");
    check_base_class_offset(lv, (S3142C3*), 0, "S3142C2");
    test_class_info(&lv, &cd_S3142C2);
    dp->~S3142C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3142C2(Test_S3142C2, "S3142C2", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S3142C2C1Ev();
extern void _ZN7S3142C2D1Ev();
Name_Map name_map_S3142C2[] = {
  NSPAIR(_ZN7S3142C2C1Ev),
  NSPAIR(_ZN7S3142C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3142C3;
extern VTBL_ENTRY _ZTI7S3142C3[];
extern  VTBL_ENTRY _ZTV7S3142C3[];
static Base_Class bases_S3142C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3142C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3142C2[];
extern void _ZN7S3142C32v3Ev();
extern void _ZN7S3142C32v4Ev();
extern void _ZN7S3142C32v5Ev();
extern void _ZN7S3142C32v6Ev();
extern void _ZN7S3142C32v7Ev();
extern void _ZN7S3142C22v8Ev();
extern void _ZN7S3142C22v9Ev();
extern void _ZN7S3142C23v10Ev();
extern void _ZN7S3142C23v11Ev();
extern void _ZN7S3142C23v12Ev();
static  VTBL_ENTRY vtc_S3142C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3142C2[0]),
  (VTBL_ENTRY)&_ZN7S3142C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3142C32v4Ev,
  (VTBL_ENTRY)&_ZN7S3142C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3142C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3142C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3142C22v8Ev,
  (VTBL_ENTRY)&_ZN7S3142C22v9Ev,
  (VTBL_ENTRY)&_ZN7S3142C23v10Ev,
  (VTBL_ENTRY)&_ZN7S3142C23v11Ev,
  (VTBL_ENTRY)&_ZN7S3142C23v12Ev,
};
extern VTBL_ENTRY _ZTI7S3142C2[];
extern  VTBL_ENTRY _ZTV7S3142C2[];
Class_Descriptor cd_S3142C2 = {  "S3142C2", // class name
  bases_S3142C2, 1,
  &(vtc_S3142C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S3142C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3142C2),12, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3142C1  : S3142C2 {
  long double s3142c1f0[3];
  virtual void  v1(); // _ZN7S3142C12v1Ev
  virtual void  v2(); // _ZN7S3142C12v2Ev
  ~S3142C1(); // tgen
  S3142C1(); // tgen
};
//SIG(1 S3142C1) C1{ BC2{ BC3{ v3 v4 v5 v6 v7 Fi Fc[2]} v8 v9 v10 v11 v12} v1 v2 FD[3]}


void  S3142C1 ::v1(){vfunc_called(this, "_ZN7S3142C12v1Ev");}
void  S3142C1 ::v2(){vfunc_called(this, "_ZN7S3142C12v2Ev");}
S3142C1 ::~S3142C1(){ note_dtor("S3142C1", this);} // tgen
S3142C1 ::S3142C1(){ note_ctor("S3142C1", this);} // tgen

static void Test_S3142C1()
{
  extern Class_Descriptor cd_S3142C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5,13)];
    init_test(&cd_S3142C1, buf);
    S3142C1 *dp, &lv = *(dp=new (buf) S3142C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,48), "sizeof(S3142C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3142C1)");
    check_base_class_offset(lv, (S3142C3*)(S3142C2*), 0, "S3142C1");
    check_base_class_offset(lv, (S3142C2*), 0, "S3142C1");
    check_field_offset(lv, s3142c1f0, ABISELECT(16,12), "S3142C1.s3142c1f0");
    test_class_info(&lv, &cd_S3142C1);
    dp->~S3142C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3142C1(Test_S3142C1, "S3142C1", ABISELECT(64,48));

#else // __cplusplus

extern void _ZN7S3142C1C1Ev();
extern void _ZN7S3142C1D1Ev();
Name_Map name_map_S3142C1[] = {
  NSPAIR(_ZN7S3142C1C1Ev),
  NSPAIR(_ZN7S3142C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3142C3;
extern VTBL_ENTRY _ZTI7S3142C3[];
extern  VTBL_ENTRY _ZTV7S3142C3[];
extern Class_Descriptor cd_S3142C2;
extern VTBL_ENTRY _ZTI7S3142C2[];
extern  VTBL_ENTRY _ZTV7S3142C2[];
static Base_Class bases_S3142C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3142C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3142C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3142C1[];
extern void _ZN7S3142C32v3Ev();
extern void _ZN7S3142C32v4Ev();
extern void _ZN7S3142C32v5Ev();
extern void _ZN7S3142C32v6Ev();
extern void _ZN7S3142C32v7Ev();
extern void _ZN7S3142C22v8Ev();
extern void _ZN7S3142C22v9Ev();
extern void _ZN7S3142C23v10Ev();
extern void _ZN7S3142C23v11Ev();
extern void _ZN7S3142C23v12Ev();
extern void _ZN7S3142C12v1Ev();
extern void _ZN7S3142C12v2Ev();
static  VTBL_ENTRY vtc_S3142C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3142C1[0]),
  (VTBL_ENTRY)&_ZN7S3142C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3142C32v4Ev,
  (VTBL_ENTRY)&_ZN7S3142C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3142C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3142C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3142C22v8Ev,
  (VTBL_ENTRY)&_ZN7S3142C22v9Ev,
  (VTBL_ENTRY)&_ZN7S3142C23v10Ev,
  (VTBL_ENTRY)&_ZN7S3142C23v11Ev,
  (VTBL_ENTRY)&_ZN7S3142C23v12Ev,
  (VTBL_ENTRY)&_ZN7S3142C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3142C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S3142C1[];
extern  VTBL_ENTRY _ZTV7S3142C1[];
Class_Descriptor cd_S3142C1 = {  "S3142C1", // class name
  bases_S3142C1, 2,
  &(vtc_S3142C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,48), // object size
  NSPAIRA(_ZTI7S3142C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3142C1),14, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15950C2  {
  int s15950c2f0;
  void *s15950c2f1[11];
  __tsi64 s15950c2f2;
  char s15950c2f3;
  short s15950c2f4[5];
  void *s15950c2f5;
  void  mf15950c2(); // _ZN8S15950C29mf15950c2Ev
};
//SIG(-1 S15950C2) C1{ m Fi Fp[11] FL Fc Fs[5] Fp}


void  S15950C2 ::mf15950c2(){}

static void Test_S15950C2()
{
  {
    init_simple_test("S15950C2");
    S15950C2 lv;
    check2(sizeof(lv), ABISELECT(128,72), "sizeof(S15950C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15950C2)");
    check_field_offset(lv, s15950c2f0, 0, "S15950C2.s15950c2f0");
    check_field_offset(lv, s15950c2f1, ABISELECT(8,4), "S15950C2.s15950c2f1");
    check_field_offset(lv, s15950c2f2, ABISELECT(96,48), "S15950C2.s15950c2f2");
    check_field_offset(lv, s15950c2f3, ABISELECT(104,56), "S15950C2.s15950c2f3");
    check_field_offset(lv, s15950c2f4, ABISELECT(106,58), "S15950C2.s15950c2f4");
    check_field_offset(lv, s15950c2f5, ABISELECT(120,68), "S15950C2.s15950c2f5");
  }
}
static Arrange_To_Call_Me vS15950C2(Test_S15950C2, "S15950C2", ABISELECT(128,72));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15950C1  {
  ::S15950C2 s15950c1f0;
  void *s15950c1f1[5];
  ::S15950C2 s15950c1f2;
  short s15950c1f3;
  __tsi64 s15950c1f4;
  long double s15950c1f5;
  ::S15950C2 s15950c1f6;
  int s15950c1f7;
  void  mf15950c1(); // _ZN8S15950C19mf15950c1Ev
};
//SIG(1 S15950C1) C1{ m FC2{ m Fi Fp[11] FL Fc Fs[5] Fp} Fp[5] FC2 Fs FL FD FC2 Fi}


void  S15950C1 ::mf15950c1(){}

static void Test_S15950C1()
{
  {
    init_simple_test("S15950C1");
    S15950C1 lv;
    check2(sizeof(lv), ABISELECT(480,264), "sizeof(S15950C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S15950C1)");
    check_field_offset(lv, s15950c1f0, 0, "S15950C1.s15950c1f0");
    check_field_offset(lv, s15950c1f1, ABISELECT(128,72), "S15950C1.s15950c1f1");
    check_field_offset(lv, s15950c1f2, ABISELECT(168,92), "S15950C1.s15950c1f2");
    check_field_offset(lv, s15950c1f3, ABISELECT(296,164), "S15950C1.s15950c1f3");
    check_field_offset(lv, s15950c1f4, ABISELECT(304,168), "S15950C1.s15950c1f4");
    check_field_offset(lv, s15950c1f5, ABISELECT(320,176), "S15950C1.s15950c1f5");
    check_field_offset(lv, s15950c1f6, ABISELECT(336,188), "S15950C1.s15950c1f6");
    check_field_offset(lv, s15950c1f7, ABISELECT(464,260), "S15950C1.s15950c1f7");
  }
}
static Arrange_To_Call_Me vS15950C1(Test_S15950C1, "S15950C1", ABISELECT(480,264));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1004C3  : S40C13_nt {
};
//SIG(-1 S1004C3) C1{ BC2{ m Fi}}



static void Test_S1004C3()
{
  extern Class_Descriptor cd_S1004C3;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S1004C3, buf);
    S1004C3 &lv = *(new (buf) S1004C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S1004C3)");
    check2(__alignof__(lv), 4, "__alignof__(S1004C3)");
    check_base_class_offset(lv, (S40C13_nt*), 0, "S1004C3");
    test_class_info(&lv, &cd_S1004C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1004C3(Test_S1004C3, "S1004C3", 4);

#else // __cplusplus

extern Class_Descriptor cd_S40C13_nt;
extern VTBL_ENTRY _ZTI9S40C13_nt[];
static Base_Class bases_S1004C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S1004C3 = {  "S1004C3", // class name
  bases_S1004C3, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1004C6_nt  {
  ::S1868C17 s1004c6f0;
  void  mf1004c6(); // _ZN10S1004C6_nt8mf1004c6Ev
};
//SIG(-1 S1004C6_nt) C1{ m FC2{ m Fp}}


void  S1004C6_nt ::mf1004c6(){}

//skip512 S1004C6_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1004C5  {
  int s1004c5f0;
  ::S1004C6_nt s1004c5f1;
};
//SIG(-1 S1004C5) C1{ Fi FC2{ m FC3{ m Fp}}}



static void Test_S1004C5()
{
  {
    init_simple_test("S1004C5");
    S1004C5 lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S1004C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1004C5)");
    check_field_offset(lv, s1004c5f0, 0, "S1004C5.s1004c5f0");
    check_field_offset(lv, s1004c5f1, ABISELECT(8,4), "S1004C5.s1004c5f1");
  }
}
static Arrange_To_Call_Me vS1004C5(Test_S1004C5, "S1004C5", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1004C2  : S1004C3 {
  void *s1004c2f0;
  ::S1004C5 s1004c2f1;
  char s1004c2f2;
  int s1004c2f3;
};
//SIG(-1 S1004C2) C1{ BC2{ BC3{ m Fi}} Fp FC4{ Fi FC5{ m FC6{ m Fp}}} Fc Fi}



static void Test_S1004C2()
{
  extern Class_Descriptor cd_S1004C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S1004C2, buf);
    S1004C2 &lv = *(new (buf) S1004C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S1004C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1004C2)");
    check_base_class_offset(lv, (S40C13_nt*)(S1004C3*), 0, "S1004C2");
    check_base_class_offset(lv, (S1004C3*), 0, "S1004C2");
    check_field_offset(lv, s1004c2f0, ABISELECT(8,4), "S1004C2.s1004c2f0");
    check_field_offset(lv, s1004c2f1, ABISELECT(16,8), "S1004C2.s1004c2f1");
    check_field_offset(lv, s1004c2f2, ABISELECT(32,16), "S1004C2.s1004c2f2");
    check_field_offset(lv, s1004c2f3, ABISELECT(36,20), "S1004C2.s1004c2f3");
    test_class_info(&lv, &cd_S1004C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1004C2(Test_S1004C2, "S1004C2", ABISELECT(40,24));

#else // __cplusplus

extern Class_Descriptor cd_S40C13_nt;
extern VTBL_ENTRY _ZTI9S40C13_nt[];
extern Class_Descriptor cd_S1004C3;
static Base_Class bases_S1004C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1004C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S1004C2 = {  "S1004C2", // class name
  bases_S1004C2, 2,
  0, // no vftv
  0, //no vtt
  ABISELECT(40,24), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1004C1  : S1004C2 , S7856C24 {
};
//SIG(1 S1004C1) C1{ BC2{ BC3{ BC4{ m Fi}} Fp FC5{ Fi FC6{ m FC7{ m Fp}}} Fc Fi} BC8{ m}}



static void Test_S1004C1()
{
  extern Class_Descriptor cd_S1004C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S1004C1, buf);
    S1004C1 &lv = *(new (buf) S1004C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S1004C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1004C1)");
    check_base_class_offset(lv, (S40C13_nt*)(S1004C3*)(S1004C2*), 0, "S1004C1");
    check_base_class_offset(lv, (S1004C3*)(S1004C2*), 0, "S1004C1");
    check_base_class_offset(lv, (S1004C2*), 0, "S1004C1");
    check_base_class_offset(lv, (S7856C24*), 0, "S1004C1");
    test_class_info(&lv, &cd_S1004C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1004C1(Test_S1004C1, "S1004C1", ABISELECT(40,24));

#else // __cplusplus

extern Class_Descriptor cd_S40C13_nt;
extern VTBL_ENTRY _ZTI9S40C13_nt[];
extern Class_Descriptor cd_S1004C3;
extern Class_Descriptor cd_S1004C2;
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
static Base_Class bases_S1004C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1004C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S1004C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S1004C1 = {  "S1004C1", // class name
  bases_S1004C1, 4,
  0, // no vftv
  0, //no vtt
  ABISELECT(40,24), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21675C2  {
  void *s21675c2f0;
  int s21675c2f1;
  void *s21675c2f2;
  int s21675c2f3;
  void *s21675c2f4;
  int s21675c2f5;
  void *s21675c2f6;
  int s21675c2f7;
  void *s21675c2f8;
  int s21675c2f9;
  void *s21675c2f10[5];
  void  mf21675c2(); // _ZN8S21675C29mf21675c2Ev
  virtual  ~S21675C2(); // _ZN8S21675C2D1Ev
  S21675C2(); // tgen
};
//SIG(-1 S21675C2) C1{ vd m Fp Fi Fp Fi Fp Fi Fp Fi Fp Fi Fp[5]}


void  S21675C2 ::mf21675c2(){}
 S21675C2 ::~S21675C2(){ note_dtor("S21675C2", this);}
S21675C2 ::S21675C2(){ note_ctor("S21675C2", this);} // tgen

static void Test_S21675C2()
{
  extern Class_Descriptor cd_S21675C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[17];
    init_test(&cd_S21675C2, buf);
    S21675C2 *dp, &lv = *(dp=new (buf) S21675C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,64), "sizeof(S21675C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21675C2)");
    check_field_offset(lv, s21675c2f0, ABISELECT(8,4), "S21675C2.s21675c2f0");
    check_field_offset(lv, s21675c2f1, ABISELECT(16,8), "S21675C2.s21675c2f1");
    check_field_offset(lv, s21675c2f2, ABISELECT(24,12), "S21675C2.s21675c2f2");
    check_field_offset(lv, s21675c2f3, ABISELECT(32,16), "S21675C2.s21675c2f3");
    check_field_offset(lv, s21675c2f4, ABISELECT(40,20), "S21675C2.s21675c2f4");
    check_field_offset(lv, s21675c2f5, ABISELECT(48,24), "S21675C2.s21675c2f5");
    check_field_offset(lv, s21675c2f6, ABISELECT(56,28), "S21675C2.s21675c2f6");
    check_field_offset(lv, s21675c2f7, ABISELECT(64,32), "S21675C2.s21675c2f7");
    check_field_offset(lv, s21675c2f8, ABISELECT(72,36), "S21675C2.s21675c2f8");
    check_field_offset(lv, s21675c2f9, ABISELECT(80,40), "S21675C2.s21675c2f9");
    check_field_offset(lv, s21675c2f10, ABISELECT(88,44), "S21675C2.s21675c2f10");
    test_class_info(&lv, &cd_S21675C2);
    dp->~S21675C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21675C2(Test_S21675C2, "S21675C2", ABISELECT(128,64));

#else // __cplusplus

extern void _ZN8S21675C2C1Ev();
extern void _ZN8S21675C2D1Ev();
Name_Map name_map_S21675C2[] = {
  NSPAIR(_ZN8S21675C2C1Ev),
  NSPAIR(_ZN8S21675C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21675C2[];
extern void _ZN8S21675C2D1Ev();
extern void _ZN8S21675C2D0Ev();
static  VTBL_ENTRY vtc_S21675C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21675C2[0]),
  (VTBL_ENTRY)&_ZN8S21675C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21675C2D0Ev,
};
extern VTBL_ENTRY _ZTI8S21675C2[];
extern  VTBL_ENTRY _ZTV8S21675C2[];
Class_Descriptor cd_S21675C2 = {  "S21675C2", // class name
  0,0,//no base classes
  &(vtc_S21675C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(128,64), // object size
  NSPAIRA(_ZTI8S21675C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21675C2),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21675C1  {
  int s21675c1f0[3];
  ::S21675C2 s21675c1f1;
  void  mf21675c1(); // _ZN8S21675C19mf21675c1Ev
  virtual  ~S21675C1(); // _ZN8S21675C1D1Ev
  S21675C1(); // tgen
};
//SIG(1 S21675C1) C1{ vd m Fi[3] FC2{ vd m Fp Fi Fp Fi Fp Fi Fp Fi Fp Fi Fp[5]}}


void  S21675C1 ::mf21675c1(){}
 S21675C1 ::~S21675C1(){ note_dtor("S21675C1", this);}
S21675C1 ::S21675C1(){ note_ctor("S21675C1", this);} // tgen

static void Test_S21675C1()
{
  extern Class_Descriptor cd_S21675C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(20,21)];
    init_test(&cd_S21675C1, buf);
    S21675C1 *dp, &lv = *(dp=new (buf) S21675C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(152,80), "sizeof(S21675C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21675C1)");
    check_field_offset(lv, s21675c1f0, ABISELECT(8,4), "S21675C1.s21675c1f0");
    check_field_offset(lv, s21675c1f1, ABISELECT(24,16), "S21675C1.s21675c1f1");
    test_class_info(&lv, &cd_S21675C1);
    dp->~S21675C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21675C1(Test_S21675C1, "S21675C1", ABISELECT(152,80));

#else // __cplusplus

extern void _ZN8S21675C1C1Ev();
extern void _ZN8S21675C1D1Ev();
Name_Map name_map_S21675C1[] = {
  NSPAIR(_ZN8S21675C1C1Ev),
  NSPAIR(_ZN8S21675C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21675C1[];
extern void _ZN8S21675C1D1Ev();
extern void _ZN8S21675C1D0Ev();
static  VTBL_ENTRY vtc_S21675C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21675C1[0]),
  (VTBL_ENTRY)&_ZN8S21675C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21675C1D0Ev,
};
extern VTBL_ENTRY _ZTI8S21675C1[];
extern  VTBL_ENTRY _ZTV8S21675C1[];
Class_Descriptor cd_S21675C1 = {  "S21675C1", // class name
  0,0,//no base classes
  &(vtc_S21675C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(152,80), // object size
  NSPAIRA(_ZTI8S21675C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21675C1),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S16608C1  {
  int s16608c1f0;
  ::S40C26_nt s16608c1f1;
  ::S40C26_nt s16608c1f2;
  ::S40C80 s16608c1f3;
  ::S40C80 s16608c1f4;
  void  mf16608c1(); // _ZN8S16608C19mf16608c1Ev
};
//SIG(1 S16608C1) C1{ m Fi FC2{ BC3{ BC4{ BC5{ m Fp Fi[2]}}}} FC2 FC6{ BC7{ BC5}} FC6}


void  S16608C1 ::mf16608c1(){}

static void Test_S16608C1()
{
  {
    init_simple_test("S16608C1");
    S16608C1 lv;
    check2(sizeof(lv), ABISELECT(72,52), "sizeof(S16608C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16608C1)");
    check_field_offset(lv, s16608c1f0, 0, "S16608C1.s16608c1f0");
    check_field_offset(lv, s16608c1f1, ABISELECT(8,4), "S16608C1.s16608c1f1");
    check_field_offset(lv, s16608c1f2, ABISELECT(24,16), "S16608C1.s16608c1f2");
    check_field_offset(lv, s16608c1f3, ABISELECT(40,28), "S16608C1.s16608c1f3");
    check_field_offset(lv, s16608c1f4, ABISELECT(56,40), "S16608C1.s16608c1f4");
  }
}
static Arrange_To_Call_Me vS16608C1(Test_S16608C1, "S16608C1", ABISELECT(72,52));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21382C1  {
  ::S17555C3_nt s21382c1f0;
  ::S2345C15_nt s21382c1f1;
  void *s21382c1f2;
  void  mf21382c1(); // _ZN8S21382C19mf21382c1Ev
  virtual  ~S21382C1(); // _ZN8S21382C1D1Ev
  S21382C1(); // tgen
};
//SIG(1 S21382C1) C1{ vd m FC2{ m FC3{ Fl[4]}} FC4{ BC5{ m Fp Fi FC6{ m} FC7{ m}}} Fp}


void  S21382C1 ::mf21382c1(){}
 S21382C1 ::~S21382C1(){ note_dtor("S21382C1", this);}
S21382C1 ::S21382C1(){ note_ctor("S21382C1", this);} // tgen

static void Test_S21382C1()
{
  extern Class_Descriptor cd_S21382C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,10)];
    init_test(&cd_S21382C1, buf);
    S21382C1 *dp, &lv = *(dp=new (buf) S21382C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S21382C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21382C1)");
    check_field_offset(lv, s21382c1f0, ABISELECT(8,4), "S21382C1.s21382c1f0");
    check_field_offset(lv, s21382c1f1, ABISELECT(40,20), "S21382C1.s21382c1f1");
    check_field_offset(lv, s21382c1f2, ABISELECT(56,32), "S21382C1.s21382c1f2");
    test_class_info(&lv, &cd_S21382C1);
    dp->~S21382C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21382C1(Test_S21382C1, "S21382C1", ABISELECT(64,36));

#else // __cplusplus

extern void _ZN8S21382C1C1Ev();
extern void _ZN8S21382C1D1Ev();
Name_Map name_map_S21382C1[] = {
  NSPAIR(_ZN8S21382C1C1Ev),
  NSPAIR(_ZN8S21382C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21382C1[];
extern void _ZN8S21382C1D1Ev();
extern void _ZN8S21382C1D0Ev();
static  VTBL_ENTRY vtc_S21382C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21382C1[0]),
  (VTBL_ENTRY)&_ZN8S21382C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21382C1D0Ev,
};
extern VTBL_ENTRY _ZTI8S21382C1[];
extern  VTBL_ENTRY _ZTV8S21382C1[];
Class_Descriptor cd_S21382C1 = {  "S21382C1", // class name
  0,0,//no base classes
  &(vtc_S21382C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI8S21382C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21382C1),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21483C1  {
  ::S18423C15_nt s21483c1f0;
  ::S40C9_nt s21483c1f1;
  ::S1868C17 s21483c1f2;
  void *s21483c1f3;
  int s21483c1f4[2];
  void  mf21483c1(); // _ZN8S21483C19mf21483c1Ev
  virtual  ~S21483C1(); // _ZN8S21483C1D1Ev
  S21483C1(); // tgen
};
//SIG(1 S21483C1) C1{ vd m FC2{ m Fp Fi FC3{ m}} FC4{ m Fi[2]} FC5{ m Fp} Fp Fi[2]}


void  S21483C1 ::mf21483c1(){}
 S21483C1 ::~S21483C1(){ note_dtor("S21483C1", this);}
S21483C1 ::S21483C1(){ note_ctor("S21483C1", this);} // tgen

static void Test_S21483C1()
{
  extern Class_Descriptor cd_S21483C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,11)];
    init_test(&cd_S21483C1, buf);
    S21483C1 *dp, &lv = *(dp=new (buf) S21483C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,40), "sizeof(S21483C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21483C1)");
    check_field_offset(lv, s21483c1f0, ABISELECT(8,4), "S21483C1.s21483c1f0");
    check_field_offset(lv, s21483c1f1, ABISELECT(24,16), "S21483C1.s21483c1f1");
    check_field_offset(lv, s21483c1f2, ABISELECT(32,24), "S21483C1.s21483c1f2");
    check_field_offset(lv, s21483c1f3, ABISELECT(40,28), "S21483C1.s21483c1f3");
    check_field_offset(lv, s21483c1f4, ABISELECT(48,32), "S21483C1.s21483c1f4");
    test_class_info(&lv, &cd_S21483C1);
    dp->~S21483C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21483C1(Test_S21483C1, "S21483C1", ABISELECT(56,40));

#else // __cplusplus

extern void _ZN8S21483C1C1Ev();
extern void _ZN8S21483C1D1Ev();
Name_Map name_map_S21483C1[] = {
  NSPAIR(_ZN8S21483C1C1Ev),
  NSPAIR(_ZN8S21483C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21483C1[];
extern void _ZN8S21483C1D1Ev();
extern void _ZN8S21483C1D0Ev();
static  VTBL_ENTRY vtc_S21483C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21483C1[0]),
  (VTBL_ENTRY)&_ZN8S21483C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21483C1D0Ev,
};
extern VTBL_ENTRY _ZTI8S21483C1[];
extern  VTBL_ENTRY _ZTV8S21483C1[];
Class_Descriptor cd_S21483C1 = {  "S21483C1", // class name
  0,0,//no base classes
  &(vtc_S21483C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,40), // object size
  NSPAIRA(_ZTI8S21483C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21483C1),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5523C4_nt  {
  int s5523c4f0[3];
};
//SIG(-1 S5523C4_nt) C1{ Fi[3]}



//skip512 S5523C4_nt

#else // __cplusplus

Class_Descriptor cd_S5523C4_nt = {  "S5523C4_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  12, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5523C3  : S5523C4_nt {
  void *s5523c3f0;
  int s5523c3f1;
};
//SIG(-1 S5523C3) C1{ BC2{ Fi[3]} Fp Fi}



static void Test_S5523C3()
{
  extern Class_Descriptor cd_S5523C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S5523C3, buf);
    S5523C3 &lv = *(new (buf) S5523C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S5523C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5523C3)");
    check_base_class_offset(lv, (S5523C4_nt*), 0, "S5523C3");
    check_field_offset(lv, s5523c3f0, ABISELECT(16,12), "S5523C3.s5523c3f0");
    check_field_offset(lv, s5523c3f1, ABISELECT(24,16), "S5523C3.s5523c3f1");
    test_class_info(&lv, &cd_S5523C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5523C3(Test_S5523C3, "S5523C3", ABISELECT(32,20));

#else // __cplusplus

extern Class_Descriptor cd_S5523C4_nt;
static Base_Class bases_S5523C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5523C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S5523C3 = {  "S5523C3", // class name
  bases_S5523C3, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(32,20), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5523C1  : S8568C3_nt {
  ::S5523C3 s5523c1f0;
  ::S2442C12_nt s5523c1f1;
  ::S40C35_nt s5523c1f2;
};
//SIG(1 S5523C1) C1{ BC2{ Fi[2]} FC3{ BC4{ Fi[3]} Fp Fi} FC5{ Fi[4]} FC6{ m Fi[4]}}



static void Test_S5523C1()
{
  extern Class_Descriptor cd_S5523C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,16)];
    init_test(&cd_S5523C1, buf);
    S5523C1 &lv = *(new (buf) S5523C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,60), "sizeof(S5523C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5523C1)");
    check_base_class_offset(lv, (S8568C3_nt*), 0, "S5523C1");
    check_field_offset(lv, s5523c1f0, 8, "S5523C1.s5523c1f0");
    check_field_offset(lv, s5523c1f1, ABISELECT(40,28), "S5523C1.s5523c1f1");
    check_field_offset(lv, s5523c1f2, ABISELECT(56,44), "S5523C1.s5523c1f2");
    test_class_info(&lv, &cd_S5523C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5523C1(Test_S5523C1, "S5523C1", ABISELECT(72,60));

#else // __cplusplus

extern Class_Descriptor cd_S8568C3_nt;
static Base_Class bases_S5523C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8568C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S5523C1 = {  "S5523C1", // class name
  bases_S5523C1, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(72,60), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20862C3  {
  virtual void  v4(); // _ZN8S20862C32v4Ev
  ~S20862C3(); // tgen
  S20862C3(); // tgen
};
//SIG(-1 S20862C3) C1{ v1}


void  S20862C3 ::v4(){vfunc_called(this, "_ZN8S20862C32v4Ev");}
S20862C3 ::~S20862C3(){ note_dtor("S20862C3", this);} // tgen
S20862C3 ::S20862C3(){ note_ctor("S20862C3", this);} // tgen

static void Test_S20862C3()
{
  extern Class_Descriptor cd_S20862C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S20862C3, buf);
    S20862C3 *dp, &lv = *(dp=new (buf) S20862C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S20862C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20862C3)");
    test_class_info(&lv, &cd_S20862C3);
    dp->~S20862C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20862C3(Test_S20862C3, "S20862C3", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S20862C3C1Ev();
extern void _ZN8S20862C3D1Ev();
Name_Map name_map_S20862C3[] = {
  NSPAIR(_ZN8S20862C3C1Ev),
  NSPAIR(_ZN8S20862C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20862C3[];
extern void _ZN8S20862C32v4Ev();
static  VTBL_ENTRY vtc_S20862C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20862C3[0]),
  (VTBL_ENTRY)&_ZN8S20862C32v4Ev,
};
extern VTBL_ENTRY _ZTI8S20862C3[];
extern  VTBL_ENTRY _ZTV8S20862C3[];
Class_Descriptor cd_S20862C3 = {  "S20862C3", // class name
  0,0,//no base classes
  &(vtc_S20862C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S20862C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20862C3),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20862C2_nt  : virtual S20862C3 {
  ~S20862C2_nt(); // tgen
  S20862C2_nt(); // tgen
};
//SIG(-1 S20862C2_nt) C1{ VBC2{ v1}}


S20862C2_nt ::~S20862C2_nt(){ note_dtor("S20862C2_nt", this);} // tgen
S20862C2_nt ::S20862C2_nt(){ note_ctor("S20862C2_nt", this);} // tgen

//skip512 S20862C2_nt

#else // __cplusplus

extern void _ZN11S20862C2_ntC1Ev();
extern void _ZN11S20862C2_ntD1Ev();
Name_Map name_map_S20862C2_nt[] = {
  NSPAIR(_ZN11S20862C2_ntC1Ev),
  NSPAIR(_ZN11S20862C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20862C3;
extern VTBL_ENTRY _ZTI8S20862C3[];
extern  VTBL_ENTRY _ZTV8S20862C3[];
static Base_Class bases_S20862C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20862C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI11S20862C2_nt[];
extern void _ZN8S20862C32v4Ev();
static  VTBL_ENTRY vtc_S20862C2_nt[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI11S20862C2_nt[0]),
  (VTBL_ENTRY)&_ZN8S20862C32v4Ev,
};
extern VTBL_ENTRY _ZTV11S20862C2_nt[];
static  VTT_ENTRY vtt_S20862C2_nt[] = {
  {&(_ZTV11S20862C2_nt[4]),  4,5},
  {&(_ZTV11S20862C2_nt[4]),  4,5},
};
extern VTBL_ENTRY _ZTI11S20862C2_nt[];
VTBL_ENTRY *P__ZTI11S20862C2_nt = _ZTI11S20862C2_nt; 
extern  VTBL_ENTRY _ZTV11S20862C2_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20862C2_nt[];
Class_Descriptor cd_S20862C2_nt = {  "S20862C2_nt", // class name
  bases_S20862C2_nt, 1,
  &(vtc_S20862C2_nt[0]), // expected_vtbl_contents
  &(vtt_S20862C2_nt[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI11S20862C2_nt),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV11S20862C2_nt),5, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT11S20862C2_nt),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20862C4  : S20862C3 {
  virtual  ~S20862C4(); // _ZN8S20862C4D1Ev
  virtual void  v5(); // _ZN8S20862C42v5Ev
  virtual void  v6(); // _ZN8S20862C42v6Ev
  virtual void  v7(); // _ZN8S20862C42v7Ev
  S20862C4(); // tgen
};
//SIG(-1 S20862C4) C1{ BC2{ v4} vd v1 v2 v3}


 S20862C4 ::~S20862C4(){ note_dtor("S20862C4", this);}
void  S20862C4 ::v5(){vfunc_called(this, "_ZN8S20862C42v5Ev");}
void  S20862C4 ::v6(){vfunc_called(this, "_ZN8S20862C42v6Ev");}
void  S20862C4 ::v7(){vfunc_called(this, "_ZN8S20862C42v7Ev");}
S20862C4 ::S20862C4(){ note_ctor("S20862C4", this);} // tgen

static void Test_S20862C4()
{
  extern Class_Descriptor cd_S20862C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S20862C4, buf);
    S20862C4 *dp, &lv = *(dp=new (buf) S20862C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S20862C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20862C4)");
    check_base_class_offset(lv, (S20862C3*), 0, "S20862C4");
    test_class_info(&lv, &cd_S20862C4);
    dp->~S20862C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20862C4(Test_S20862C4, "S20862C4", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S20862C4C1Ev();
extern void _ZN8S20862C4D1Ev();
Name_Map name_map_S20862C4[] = {
  NSPAIR(_ZN8S20862C4C1Ev),
  NSPAIR(_ZN8S20862C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20862C3;
extern VTBL_ENTRY _ZTI8S20862C3[];
extern  VTBL_ENTRY _ZTV8S20862C3[];
static Base_Class bases_S20862C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20862C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20862C4[];
extern void _ZN8S20862C32v4Ev();
extern void _ZN8S20862C4D1Ev();
extern void _ZN8S20862C4D0Ev();
extern void _ZN8S20862C42v5Ev();
extern void _ZN8S20862C42v6Ev();
extern void _ZN8S20862C42v7Ev();
static  VTBL_ENTRY vtc_S20862C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20862C4[0]),
  (VTBL_ENTRY)&_ZN8S20862C32v4Ev,
  (VTBL_ENTRY)&_ZN8S20862C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20862C4D0Ev,
  (VTBL_ENTRY)&_ZN8S20862C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20862C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20862C42v7Ev,
};
extern VTBL_ENTRY _ZTI8S20862C4[];
extern  VTBL_ENTRY _ZTV8S20862C4[];
Class_Descriptor cd_S20862C4 = {  "S20862C4", // class name
  bases_S20862C4, 1,
  &(vtc_S20862C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S20862C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20862C4),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20862C1  : virtual S20862C2_nt , S20862C3 , S20862C4 {
  int s20862c1f0;
  virtual  ~S20862C1(); // _ZN8S20862C1D2Ev
  virtual void  v1(); // _ZN8S20862C12v1Ev
  virtual void  v2(); // _ZN8S20862C12v2Ev
  virtual void  v3(); // _ZN8S20862C12v3Ev
  S20862C1(); // tgen
};
//SIG(1 S20862C1) C1{ VBC2{ VBC3{ v4}} BC3 BC4{ BC3 vd v5 v6 v7} vd v1 v2 v3 Fi}


 S20862C1 ::~S20862C1(){ note_dtor("S20862C1", this);}
void  S20862C1 ::v1(){vfunc_called(this, "_ZN8S20862C12v1Ev");}
void  S20862C1 ::v2(){vfunc_called(this, "_ZN8S20862C12v2Ev");}
void  S20862C1 ::v3(){vfunc_called(this, "_ZN8S20862C12v3Ev");}
S20862C1 ::S20862C1(){ note_ctor("S20862C1", this);} // tgen

static void Test_S20862C1()
{
  extern Class_Descriptor cd_S20862C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S20862C1, buf);
    S20862C1 *dp, &lv = *(dp=new (buf) S20862C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S20862C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20862C1)");
    check_base_class_offset(lv, (S20862C3*)(S20862C2_nt*), ABISELECT(24,12), "S20862C1");
    check_base_class_offset(lv, (S20862C2_nt*), ABISELECT(24,12), "S20862C1");
    /*is_ambiguous_... S20862C1::S20862C3 */ AMB_check_base_class_offset(lv, (S20862C3*), 0, "S20862C1");
    check_base_class_offset(lv, (S20862C3*)(S20862C4*), ABISELECT(8,4), "S20862C1");
    check_base_class_offset(lv, (S20862C4*), ABISELECT(8,4), "S20862C1");
    check_field_offset(lv, s20862c1f0, ABISELECT(16,8), "S20862C1.s20862c1f0");
    test_class_info(&lv, &cd_S20862C1);
    dp->~S20862C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20862C1(Test_S20862C1, "S20862C1", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S20862C1C1Ev();
extern void _ZN8S20862C1D2Ev();
Name_Map name_map_S20862C1[] = {
  NSPAIR(_ZN8S20862C1C1Ev),
  NSPAIR(_ZN8S20862C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20862C3;
extern VTBL_ENTRY _ZTI8S20862C3[];
extern  VTBL_ENTRY _ZTV8S20862C3[];
extern Class_Descriptor cd_S20862C2_nt;
extern VTBL_ENTRY _ZTI11S20862C2_nt[];
extern  VTBL_ENTRY _ZTV11S20862C2_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20862C2_nt[];
extern Class_Descriptor cd_S20862C3;
extern VTBL_ENTRY _ZTI8S20862C3[];
extern  VTBL_ENTRY _ZTV8S20862C3[];
extern Class_Descriptor cd_S20862C3;
extern VTBL_ENTRY _ZTI8S20862C3[];
extern  VTBL_ENTRY _ZTV8S20862C3[];
extern Class_Descriptor cd_S20862C4;
extern VTBL_ENTRY _ZTI8S20862C4[];
extern  VTBL_ENTRY _ZTV8S20862C4[];
static Base_Class bases_S20862C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20862C3,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S20862C2_nt,    ABISELECT(24,12), //bcp->offset
    18, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20862C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20862C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20862C4,    ABISELECT(8,4), //bcp->offset
    10, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20862C1[];
extern void _ZN8S20862C32v4Ev();
extern void _ZN8S20862C1D1Ev();
extern void _ZN8S20862C1D0Ev();
extern void _ZN8S20862C12v1Ev();
extern void _ZN8S20862C12v2Ev();
extern void _ZN8S20862C12v3Ev();
extern void _ZN8S20862C32v4Ev();
extern void ABISELECT(_ZThn8_N8S20862C1D1Ev,_ZThn4_N8S20862C1D1Ev)();
extern void ABISELECT(_ZThn8_N8S20862C1D0Ev,_ZThn4_N8S20862C1D0Ev)();
extern void _ZN8S20862C42v5Ev();
extern void _ZN8S20862C42v6Ev();
extern void _ZN8S20862C42v7Ev();
extern void _ZN8S20862C32v4Ev();
static  VTBL_ENTRY vtc_S20862C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20862C1[0]),
  (VTBL_ENTRY)&_ZN8S20862C32v4Ev,
  (VTBL_ENTRY)&_ZN8S20862C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20862C1D0Ev,
  (VTBL_ENTRY)&_ZN8S20862C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20862C12v2Ev,
  (VTBL_ENTRY)&_ZN8S20862C12v3Ev,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20862C1[0]),
  (VTBL_ENTRY)&_ZN8S20862C32v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S20862C1D1Ev,_ZThn4_N8S20862C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S20862C1D0Ev,_ZThn4_N8S20862C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20862C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20862C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20862C42v7Ev,
  0,
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S20862C1[0]),
  (VTBL_ENTRY)&_ZN8S20862C32v4Ev,
};
extern VTBL_ENTRY _ZTV8S20862C1[];
extern void _ZN8S20862C32v4Ev();
static  VTBL_ENTRY _tg__ZTV11S20862C2_nt__8S20862C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI11S20862C2_nt[0]),
  (VTBL_ENTRY)&_ZN8S20862C32v4Ev,
};
static  VTT_ENTRY vtt_S20862C1[] = {
  {&(_ZTV8S20862C1[4]),  4,23},
  {&(_ZTV8S20862C1[22]),  22,23},
  {&(_ZTV8S20862C1[22]),  22,23},
  {&(_tg__ZTV11S20862C2_nt__8S20862C1[4]),  4,5},
  {&(_tg__ZTV11S20862C2_nt__8S20862C1[4]),  4,5},
};
extern VTBL_ENTRY _ZTI8S20862C1[];
extern  VTBL_ENTRY _ZTV8S20862C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20862C1[];
Class_Descriptor cd_S20862C1 = {  "S20862C1", // class name
  bases_S20862C1, 5,
  &(vtc_S20862C1[0]), // expected_vtbl_contents
  &(vtt_S20862C1[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S20862C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20862C1),23, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20862C1),5, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3077C3  {
  virtual  ~S3077C3(); // _ZN7S3077C3D1Ev
  virtual void  v2(); // _ZN7S3077C32v2Ev
  virtual void  v3(); // _ZN7S3077C32v3Ev
  S3077C3(); // tgen
};
//SIG(-1 S3077C3) C1{ vd v1 v2}


 S3077C3 ::~S3077C3(){ note_dtor("S3077C3", this);}
void  S3077C3 ::v2(){vfunc_called(this, "_ZN7S3077C32v2Ev");}
void  S3077C3 ::v3(){vfunc_called(this, "_ZN7S3077C32v3Ev");}
S3077C3 ::S3077C3(){ note_ctor("S3077C3", this);} // tgen

static void Test_S3077C3()
{
  extern Class_Descriptor cd_S3077C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S3077C3, buf);
    S3077C3 *dp, &lv = *(dp=new (buf) S3077C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S3077C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3077C3)");
    test_class_info(&lv, &cd_S3077C3);
    dp->~S3077C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3077C3(Test_S3077C3, "S3077C3", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S3077C3C1Ev();
extern void _ZN7S3077C3D1Ev();
Name_Map name_map_S3077C3[] = {
  NSPAIR(_ZN7S3077C3C1Ev),
  NSPAIR(_ZN7S3077C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3077C3[];
extern void _ZN7S3077C3D1Ev();
extern void _ZN7S3077C3D0Ev();
extern void _ZN7S3077C32v2Ev();
extern void _ZN7S3077C32v3Ev();
static  VTBL_ENTRY vtc_S3077C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3077C3[0]),
  (VTBL_ENTRY)&_ZN7S3077C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3077C3D0Ev,
  (VTBL_ENTRY)&_ZN7S3077C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3077C32v3Ev,
};
extern VTBL_ENTRY _ZTI7S3077C3[];
extern  VTBL_ENTRY _ZTV7S3077C3[];
Class_Descriptor cd_S3077C3 = {  "S3077C3", // class name
  0,0,//no base classes
  &(vtc_S3077C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S3077C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3077C3),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3077C2  : S3077C3 {
  void *s3077c2f0;
  ::S793C8_nt s3077c2f1;
  virtual void  v4(); // _ZN7S3077C22v4Ev
  virtual void  v5(); // _ZN7S3077C22v5Ev
  ~S3077C2(); // tgen
  S3077C2(); // tgen
};
//SIG(-1 S3077C2) C1{ BC2{ vd v3 v4} v1 v2 Fp FC3{ m FC4{ m FL[2]}}}


void  S3077C2 ::v4(){vfunc_called(this, "_ZN7S3077C22v4Ev");}
void  S3077C2 ::v5(){vfunc_called(this, "_ZN7S3077C22v5Ev");}
S3077C2 ::~S3077C2(){ note_dtor("S3077C2", this);} // tgen
S3077C2 ::S3077C2(){ note_ctor("S3077C2", this);} // tgen

static void Test_S3077C2()
{
  extern Class_Descriptor cd_S3077C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,7)];
    init_test(&cd_S3077C2, buf);
    S3077C2 *dp, &lv = *(dp=new (buf) S3077C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S3077C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3077C2)");
    check_base_class_offset(lv, (S3077C3*), 0, "S3077C2");
    check_field_offset(lv, s3077c2f0, ABISELECT(8,4), "S3077C2.s3077c2f0");
    check_field_offset(lv, s3077c2f1, ABISELECT(16,8), "S3077C2.s3077c2f1");
    test_class_info(&lv, &cd_S3077C2);
    dp->~S3077C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3077C2(Test_S3077C2, "S3077C2", ABISELECT(32,24));

#else // __cplusplus

extern void _ZN7S3077C2C1Ev();
extern void _ZN7S3077C2D1Ev();
Name_Map name_map_S3077C2[] = {
  NSPAIR(_ZN7S3077C2C1Ev),
  NSPAIR(_ZN7S3077C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3077C3;
extern VTBL_ENTRY _ZTI7S3077C3[];
extern  VTBL_ENTRY _ZTV7S3077C3[];
static Base_Class bases_S3077C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3077C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3077C2[];
extern void _ZN7S3077C2D1Ev();
extern void _ZN7S3077C2D0Ev();
extern void _ZN7S3077C32v2Ev();
extern void _ZN7S3077C32v3Ev();
extern void _ZN7S3077C22v4Ev();
extern void _ZN7S3077C22v5Ev();
static  VTBL_ENTRY vtc_S3077C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3077C2[0]),
  (VTBL_ENTRY)&_ZN7S3077C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3077C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3077C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3077C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3077C22v4Ev,
  (VTBL_ENTRY)&_ZN7S3077C22v5Ev,
};
extern VTBL_ENTRY _ZTI7S3077C2[];
extern  VTBL_ENTRY _ZTV7S3077C2[];
Class_Descriptor cd_S3077C2 = {  "S3077C2", // class name
  bases_S3077C2, 1,
  &(vtc_S3077C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,24), // object size
  NSPAIRA(_ZTI7S3077C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3077C2),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3077C1  : S3077C2 {
  int s3077c1f0;
  virtual void  v1(); // _ZN7S3077C12v1Ev
  ~S3077C1(); // tgen
  S3077C1(); // tgen
};
//SIG(1 S3077C1) C1{ BC2{ BC3{ vd v2 v3} v4 v5 Fp FC4{ m FC5{ m FL[2]}}} v1 Fi}


void  S3077C1 ::v1(){vfunc_called(this, "_ZN7S3077C12v1Ev");}
S3077C1 ::~S3077C1(){ note_dtor("S3077C1", this);} // tgen
S3077C1 ::S3077C1(){ note_ctor("S3077C1", this);} // tgen

static void Test_S3077C1()
{
  extern Class_Descriptor cd_S3077C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S3077C1, buf);
    S3077C1 *dp, &lv = *(dp=new (buf) S3077C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S3077C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3077C1)");
    check_base_class_offset(lv, (S3077C3*)(S3077C2*), 0, "S3077C1");
    check_base_class_offset(lv, (S3077C2*), 0, "S3077C1");
    check_field_offset(lv, s3077c1f0, ABISELECT(32,24), "S3077C1.s3077c1f0");
    test_class_info(&lv, &cd_S3077C1);
    dp->~S3077C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3077C1(Test_S3077C1, "S3077C1", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S3077C1C1Ev();
extern void _ZN7S3077C1D1Ev();
Name_Map name_map_S3077C1[] = {
  NSPAIR(_ZN7S3077C1C1Ev),
  NSPAIR(_ZN7S3077C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3077C3;
extern VTBL_ENTRY _ZTI7S3077C3[];
extern  VTBL_ENTRY _ZTV7S3077C3[];
extern Class_Descriptor cd_S3077C2;
extern VTBL_ENTRY _ZTI7S3077C2[];
extern  VTBL_ENTRY _ZTV7S3077C2[];
static Base_Class bases_S3077C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3077C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3077C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3077C1[];
extern void _ZN7S3077C1D1Ev();
extern void _ZN7S3077C1D0Ev();
extern void _ZN7S3077C32v2Ev();
extern void _ZN7S3077C32v3Ev();
extern void _ZN7S3077C22v4Ev();
extern void _ZN7S3077C22v5Ev();
extern void _ZN7S3077C12v1Ev();
static  VTBL_ENTRY vtc_S3077C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3077C1[0]),
  (VTBL_ENTRY)&_ZN7S3077C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3077C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3077C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3077C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3077C22v4Ev,
  (VTBL_ENTRY)&_ZN7S3077C22v5Ev,
  (VTBL_ENTRY)&_ZN7S3077C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S3077C1[];
extern  VTBL_ENTRY _ZTV7S3077C1[];
Class_Descriptor cd_S3077C1 = {  "S3077C1", // class name
  bases_S3077C1, 2,
  &(vtc_S3077C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S3077C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3077C1),9, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8150C1  : S3750C3_nt {
  ::S13686C6_nt s8150c1f0;
  virtual  ~S8150C1(); // _ZN7S8150C1D1Ev
  virtual void  v1(); // _ZN7S8150C12v1Ev
  virtual void  v2(); // _ZN7S8150C12v2Ev
  virtual void  v3(); // _ZN7S8150C12v3Ev
  virtual void  v4(); // _ZN7S8150C12v4Ev
  virtual void  v5(); // _ZN7S8150C12v5Ev
  virtual void  v6(); // _ZN7S8150C12v6Ev
  virtual void  v7(); // _ZN7S8150C12v7Ev
  virtual void  v8(); // _ZN7S8150C12v8Ev
  S8150C1(); // tgen
};
//SIG(1 S8150C1) C1{ BC2{ vd m Fi} vd v1 v2 v3 v4 v5 v6 v7 v8 FC3{ Fp[2]}}


 S8150C1 ::~S8150C1(){ note_dtor("S8150C1", this);}
void  S8150C1 ::v1(){vfunc_called(this, "_ZN7S8150C12v1Ev");}
void  S8150C1 ::v2(){vfunc_called(this, "_ZN7S8150C12v2Ev");}
void  S8150C1 ::v3(){vfunc_called(this, "_ZN7S8150C12v3Ev");}
void  S8150C1 ::v4(){vfunc_called(this, "_ZN7S8150C12v4Ev");}
void  S8150C1 ::v5(){vfunc_called(this, "_ZN7S8150C12v5Ev");}
void  S8150C1 ::v6(){vfunc_called(this, "_ZN7S8150C12v6Ev");}
void  S8150C1 ::v7(){vfunc_called(this, "_ZN7S8150C12v7Ev");}
void  S8150C1 ::v8(){vfunc_called(this, "_ZN7S8150C12v8Ev");}
S8150C1 ::S8150C1(){ note_ctor("S8150C1", this);} // tgen

static void Test_S8150C1()
{
  extern Class_Descriptor cd_S8150C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S8150C1, buf);
    S8150C1 *dp, &lv = *(dp=new (buf) S8150C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S8150C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8150C1)");
    check_base_class_offset(lv, (S3750C3_nt*), 0, "S8150C1");
    check_field_offset(lv, s8150c1f0, ABISELECT(16,8), "S8150C1.s8150c1f0");
    test_class_info(&lv, &cd_S8150C1);
    dp->~S8150C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8150C1(Test_S8150C1, "S8150C1", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN7S8150C1C1Ev();
extern void _ZN7S8150C1D1Ev();
Name_Map name_map_S8150C1[] = {
  NSPAIR(_ZN7S8150C1C1Ev),
  NSPAIR(_ZN7S8150C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3750C3_nt;
extern VTBL_ENTRY _ZTI10S3750C3_nt[];
extern  VTBL_ENTRY _ZTV10S3750C3_nt[];
static Base_Class bases_S8150C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3750C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8150C1[];
extern void _ZN7S8150C1D1Ev();
extern void _ZN7S8150C1D0Ev();
extern void _ZN7S8150C12v1Ev();
extern void _ZN7S8150C12v2Ev();
extern void _ZN7S8150C12v3Ev();
extern void _ZN7S8150C12v4Ev();
extern void _ZN7S8150C12v5Ev();
extern void _ZN7S8150C12v6Ev();
extern void _ZN7S8150C12v7Ev();
extern void _ZN7S8150C12v8Ev();
static  VTBL_ENTRY vtc_S8150C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8150C1[0]),
  (VTBL_ENTRY)&_ZN7S8150C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8150C1D0Ev,
  (VTBL_ENTRY)&_ZN7S8150C12v1Ev,
  (VTBL_ENTRY)&_ZN7S8150C12v2Ev,
  (VTBL_ENTRY)&_ZN7S8150C12v3Ev,
  (VTBL_ENTRY)&_ZN7S8150C12v4Ev,
  (VTBL_ENTRY)&_ZN7S8150C12v5Ev,
  (VTBL_ENTRY)&_ZN7S8150C12v6Ev,
  (VTBL_ENTRY)&_ZN7S8150C12v7Ev,
  (VTBL_ENTRY)&_ZN7S8150C12v8Ev,
};
extern VTBL_ENTRY _ZTI7S8150C1[];
extern  VTBL_ENTRY _ZTV7S8150C1[];
Class_Descriptor cd_S8150C1 = {  "S8150C1", // class name
  bases_S8150C1, 1,
  &(vtc_S8150C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI7S8150C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8150C1),12, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S980C3  : S40C13_nt {
};
//SIG(-1 S980C3) C1{ BC2{ m Fi}}



static void Test_S980C3()
{
  extern Class_Descriptor cd_S980C3;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S980C3, buf);
    S980C3 &lv = *(new (buf) S980C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S980C3)");
    check2(__alignof__(lv), 4, "__alignof__(S980C3)");
    check_base_class_offset(lv, (S40C13_nt*), 0, "S980C3");
    test_class_info(&lv, &cd_S980C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS980C3(Test_S980C3, "S980C3", 4);

#else // __cplusplus

extern Class_Descriptor cd_S40C13_nt;
extern VTBL_ENTRY _ZTI9S40C13_nt[];
static Base_Class bases_S980C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S980C3 = {  "S980C3", // class name
  bases_S980C3, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S980C2  : S980C3 {
  unsigned int s980c2f0:1;
  unsigned int s980c2f1:1;
  int s980c2f2:4;
};
//SIG(-1 S980C2) C1{ BC2{ BC3{ m Fi}} Fi:1 Fi:1 Fi:4}



static void Test_S980C2()
{
  extern Class_Descriptor cd_S980C2;
  void *lvp;
  {
    int buf[3];
    init_test(&cd_S980C2, buf);
    S980C2 &lv = *(new (buf) S980C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 8, "sizeof(S980C2)");
    check2(__alignof__(lv), 4, "__alignof__(S980C2)");
    check_base_class_offset(lv, (S40C13_nt*)(S980C3*), 0, "S980C2");
    check_base_class_offset(lv, (S980C3*), 0, "S980C2");
    set_bf_and_test(lv, s980c2f0, 4, 0, 1, 1, "S980C2");
    set_bf_and_test(lv, s980c2f1, 4, 1, 1, 1, "S980C2");
    set_bf_and_test(lv, s980c2f2, 4, 2, 4, 1, "S980C2");
    set_bf_and_test(lv, s980c2f2, 4, 2, 4, hide_sll(1LL<<3), "S980C2");
    test_class_info(&lv, &cd_S980C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS980C2(Test_S980C2, "S980C2", 8);

#else // __cplusplus

extern Class_Descriptor cd_S40C13_nt;
extern VTBL_ENTRY _ZTI9S40C13_nt[];
extern Class_Descriptor cd_S980C3;
static Base_Class bases_S980C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S980C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S980C2 = {  "S980C2", // class name
  bases_S980C2, 2,
  0, // no vftv
  0, //no vtt
  8, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S980C1  : S980C2 {
  ::S1004C6_nt s980c1f0;
};
//SIG(1 S980C1) C1{ BC2{ BC3{ BC4{ m Fi}} Fi:1 Fi:1 Fi:4} FC5{ m FC6{ m Fp}}}



static void Test_S980C1()
{
  extern Class_Descriptor cd_S980C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S980C1, buf);
    S980C1 &lv = *(new (buf) S980C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S980C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S980C1)");
    check_base_class_offset(lv, (S40C13_nt*)(S980C3*)(S980C2*), 0, "S980C1");
    check_base_class_offset(lv, (S980C3*)(S980C2*), 0, "S980C1");
    check_base_class_offset(lv, (S980C2*), 0, "S980C1");
    check_field_offset(lv, s980c1f0, 8, "S980C1.s980c1f0");
    test_class_info(&lv, &cd_S980C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS980C1(Test_S980C1, "S980C1", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S40C13_nt;
extern VTBL_ENTRY _ZTI9S40C13_nt[];
extern Class_Descriptor cd_S980C3;
extern Class_Descriptor cd_S980C2;
static Base_Class bases_S980C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S980C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S980C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S980C1 = {  "S980C1", // class name
  bases_S980C1, 3,
  0, // no vftv
  0, //no vtt
  ABISELECT(16,12), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18524C1  {
  __tsi64 s18524c1f0;
  short s18524c1f1;
  int s18524c1f2[3];
  ::S15950C2 s18524c1f3;
  ::S15950C2 s18524c1f4;
  virtual void  v1(); // _ZN8S18524C12v1Ev
  ~S18524C1(); // tgen
  S18524C1(); // tgen
};
//SIG(1 S18524C1) C1{ v1 FL Fs Fi[3] FC2{ m Fi Fp[11] FL Fc Fs[5] Fp} FC2}


void  S18524C1 ::v1(){vfunc_called(this, "_ZN8S18524C12v1Ev");}
S18524C1 ::~S18524C1(){ note_dtor("S18524C1", this);} // tgen
S18524C1 ::S18524C1(){ note_ctor("S18524C1", this);} // tgen

static void Test_S18524C1()
{
  extern Class_Descriptor cd_S18524C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(37,44)];
    init_test(&cd_S18524C1, buf);
    S18524C1 *dp, &lv = *(dp=new (buf) S18524C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(288,172), "sizeof(S18524C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18524C1)");
    check_field_offset(lv, s18524c1f0, ABISELECT(8,4), "S18524C1.s18524c1f0");
    check_field_offset(lv, s18524c1f1, ABISELECT(16,12), "S18524C1.s18524c1f1");
    check_field_offset(lv, s18524c1f2, ABISELECT(20,16), "S18524C1.s18524c1f2");
    check_field_offset(lv, s18524c1f3, ABISELECT(32,28), "S18524C1.s18524c1f3");
    check_field_offset(lv, s18524c1f4, ABISELECT(160,100), "S18524C1.s18524c1f4");
    test_class_info(&lv, &cd_S18524C1);
    dp->~S18524C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18524C1(Test_S18524C1, "S18524C1", ABISELECT(288,172));

#else // __cplusplus

extern void _ZN8S18524C1C1Ev();
extern void _ZN8S18524C1D1Ev();
Name_Map name_map_S18524C1[] = {
  NSPAIR(_ZN8S18524C1C1Ev),
  NSPAIR(_ZN8S18524C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18524C1[];
extern void _ZN8S18524C12v1Ev();
static  VTBL_ENTRY vtc_S18524C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18524C1[0]),
  (VTBL_ENTRY)&_ZN8S18524C12v1Ev,
};
extern VTBL_ENTRY _ZTI8S18524C1[];
extern  VTBL_ENTRY _ZTV8S18524C1[];
Class_Descriptor cd_S18524C1 = {  "S18524C1", // class name
  0,0,//no base classes
  &(vtc_S18524C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(288,172), // object size
  NSPAIRA(_ZTI8S18524C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18524C1),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3078C3  {
  virtual  ~S3078C3(); // _ZN7S3078C3D1Ev
  virtual void  v2(); // _ZN7S3078C32v2Ev
  virtual void  v3(); // _ZN7S3078C32v3Ev
  S3078C3(); // tgen
};
//SIG(-1 S3078C3) C1{ vd v1 v2}


 S3078C3 ::~S3078C3(){ note_dtor("S3078C3", this);}
void  S3078C3 ::v2(){vfunc_called(this, "_ZN7S3078C32v2Ev");}
void  S3078C3 ::v3(){vfunc_called(this, "_ZN7S3078C32v3Ev");}
S3078C3 ::S3078C3(){ note_ctor("S3078C3", this);} // tgen

static void Test_S3078C3()
{
  extern Class_Descriptor cd_S3078C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S3078C3, buf);
    S3078C3 *dp, &lv = *(dp=new (buf) S3078C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S3078C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3078C3)");
    test_class_info(&lv, &cd_S3078C3);
    dp->~S3078C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3078C3(Test_S3078C3, "S3078C3", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S3078C3C1Ev();
extern void _ZN7S3078C3D1Ev();
Name_Map name_map_S3078C3[] = {
  NSPAIR(_ZN7S3078C3C1Ev),
  NSPAIR(_ZN7S3078C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3078C3[];
extern void _ZN7S3078C3D1Ev();
extern void _ZN7S3078C3D0Ev();
extern void _ZN7S3078C32v2Ev();
extern void _ZN7S3078C32v3Ev();
static  VTBL_ENTRY vtc_S3078C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3078C3[0]),
  (VTBL_ENTRY)&_ZN7S3078C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3078C3D0Ev,
  (VTBL_ENTRY)&_ZN7S3078C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3078C32v3Ev,
};
extern VTBL_ENTRY _ZTI7S3078C3[];
extern  VTBL_ENTRY _ZTV7S3078C3[];
Class_Descriptor cd_S3078C3 = {  "S3078C3", // class name
  0,0,//no base classes
  &(vtc_S3078C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S3078C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3078C3),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3078C2  : S3078C3 {
  void *s3078c2f0;
  ::S793C8_nt s3078c2f1;
  virtual void  v4(); // _ZN7S3078C22v4Ev
  virtual void  v5(); // _ZN7S3078C22v5Ev
  ~S3078C2(); // tgen
  S3078C2(); // tgen
};
//SIG(-1 S3078C2) C1{ BC2{ vd v3 v4} v1 v2 Fp FC3{ m FC4{ m FL[2]}}}


void  S3078C2 ::v4(){vfunc_called(this, "_ZN7S3078C22v4Ev");}
void  S3078C2 ::v5(){vfunc_called(this, "_ZN7S3078C22v5Ev");}
S3078C2 ::~S3078C2(){ note_dtor("S3078C2", this);} // tgen
S3078C2 ::S3078C2(){ note_ctor("S3078C2", this);} // tgen

static void Test_S3078C2()
{
  extern Class_Descriptor cd_S3078C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,7)];
    init_test(&cd_S3078C2, buf);
    S3078C2 *dp, &lv = *(dp=new (buf) S3078C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S3078C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3078C2)");
    check_base_class_offset(lv, (S3078C3*), 0, "S3078C2");
    check_field_offset(lv, s3078c2f0, ABISELECT(8,4), "S3078C2.s3078c2f0");
    check_field_offset(lv, s3078c2f1, ABISELECT(16,8), "S3078C2.s3078c2f1");
    test_class_info(&lv, &cd_S3078C2);
    dp->~S3078C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3078C2(Test_S3078C2, "S3078C2", ABISELECT(32,24));

#else // __cplusplus

extern void _ZN7S3078C2C1Ev();
extern void _ZN7S3078C2D1Ev();
Name_Map name_map_S3078C2[] = {
  NSPAIR(_ZN7S3078C2C1Ev),
  NSPAIR(_ZN7S3078C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3078C3;
extern VTBL_ENTRY _ZTI7S3078C3[];
extern  VTBL_ENTRY _ZTV7S3078C3[];
static Base_Class bases_S3078C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3078C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3078C2[];
extern void _ZN7S3078C2D1Ev();
extern void _ZN7S3078C2D0Ev();
extern void _ZN7S3078C32v2Ev();
extern void _ZN7S3078C32v3Ev();
extern void _ZN7S3078C22v4Ev();
extern void _ZN7S3078C22v5Ev();
static  VTBL_ENTRY vtc_S3078C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3078C2[0]),
  (VTBL_ENTRY)&_ZN7S3078C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3078C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3078C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3078C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3078C22v4Ev,
  (VTBL_ENTRY)&_ZN7S3078C22v5Ev,
};
extern VTBL_ENTRY _ZTI7S3078C2[];
extern  VTBL_ENTRY _ZTV7S3078C2[];
Class_Descriptor cd_S3078C2 = {  "S3078C2", // class name
  bases_S3078C2, 1,
  &(vtc_S3078C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,24), // object size
  NSPAIRA(_ZTI7S3078C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3078C2),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3078C1  : S3078C2 {
  virtual void  v1(); // _ZN7S3078C12v1Ev
  ~S3078C1(); // tgen
  S3078C1(); // tgen
};
//SIG(1 S3078C1) C1{ BC2{ BC3{ vd v2 v3} v4 v5 Fp FC4{ m FC5{ m FL[2]}}} v1}


void  S3078C1 ::v1(){vfunc_called(this, "_ZN7S3078C12v1Ev");}
S3078C1 ::~S3078C1(){ note_dtor("S3078C1", this);} // tgen
S3078C1 ::S3078C1(){ note_ctor("S3078C1", this);} // tgen

static void Test_S3078C1()
{
  extern Class_Descriptor cd_S3078C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,7)];
    init_test(&cd_S3078C1, buf);
    S3078C1 *dp, &lv = *(dp=new (buf) S3078C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S3078C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3078C1)");
    check_base_class_offset(lv, (S3078C3*)(S3078C2*), 0, "S3078C1");
    check_base_class_offset(lv, (S3078C2*), 0, "S3078C1");
    test_class_info(&lv, &cd_S3078C1);
    dp->~S3078C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3078C1(Test_S3078C1, "S3078C1", ABISELECT(32,24));

#else // __cplusplus

extern void _ZN7S3078C1C1Ev();
extern void _ZN7S3078C1D1Ev();
Name_Map name_map_S3078C1[] = {
  NSPAIR(_ZN7S3078C1C1Ev),
  NSPAIR(_ZN7S3078C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3078C3;
extern VTBL_ENTRY _ZTI7S3078C3[];
extern  VTBL_ENTRY _ZTV7S3078C3[];
extern Class_Descriptor cd_S3078C2;
extern VTBL_ENTRY _ZTI7S3078C2[];
extern  VTBL_ENTRY _ZTV7S3078C2[];
static Base_Class bases_S3078C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3078C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3078C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3078C1[];
extern void _ZN7S3078C1D1Ev();
extern void _ZN7S3078C1D0Ev();
extern void _ZN7S3078C32v2Ev();
extern void _ZN7S3078C32v3Ev();
extern void _ZN7S3078C22v4Ev();
extern void _ZN7S3078C22v5Ev();
extern void _ZN7S3078C12v1Ev();
static  VTBL_ENTRY vtc_S3078C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3078C1[0]),
  (VTBL_ENTRY)&_ZN7S3078C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3078C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3078C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3078C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3078C22v4Ev,
  (VTBL_ENTRY)&_ZN7S3078C22v5Ev,
  (VTBL_ENTRY)&_ZN7S3078C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S3078C1[];
extern  VTBL_ENTRY _ZTV7S3078C1[];
Class_Descriptor cd_S3078C1 = {  "S3078C1", // class name
  bases_S3078C1, 2,
  &(vtc_S3078C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,24), // object size
  NSPAIRA(_ZTI7S3078C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3078C1),9, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4683C3  {
  char s4683c3f0;
  int s4683c3f1;
  virtual  ~S4683C3(); // _ZN7S4683C3D1Ev
  virtual void  v3(); // _ZN7S4683C32v3Ev
  S4683C3(); // tgen
};
//SIG(-1 S4683C3) C1{ vd v1 Fc Fi}


 S4683C3 ::~S4683C3(){ note_dtor("S4683C3", this);}
void  S4683C3 ::v3(){vfunc_called(this, "_ZN7S4683C32v3Ev");}
S4683C3 ::S4683C3(){ note_ctor("S4683C3", this);} // tgen

static void Test_S4683C3()
{
  extern Class_Descriptor cd_S4683C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S4683C3, buf);
    S4683C3 *dp, &lv = *(dp=new (buf) S4683C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S4683C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4683C3)");
    check_field_offset(lv, s4683c3f0, ABISELECT(8,4), "S4683C3.s4683c3f0");
    check_field_offset(lv, s4683c3f1, ABISELECT(12,8), "S4683C3.s4683c3f1");
    test_class_info(&lv, &cd_S4683C3);
    dp->~S4683C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4683C3(Test_S4683C3, "S4683C3", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S4683C3C1Ev();
extern void _ZN7S4683C3D1Ev();
Name_Map name_map_S4683C3[] = {
  NSPAIR(_ZN7S4683C3C1Ev),
  NSPAIR(_ZN7S4683C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4683C3[];
extern void _ZN7S4683C3D1Ev();
extern void _ZN7S4683C3D0Ev();
extern void _ZN7S4683C32v3Ev();
static  VTBL_ENTRY vtc_S4683C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4683C3[0]),
  (VTBL_ENTRY)&_ZN7S4683C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4683C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4683C32v3Ev,
};
extern VTBL_ENTRY _ZTI7S4683C3[];
extern  VTBL_ENTRY _ZTV7S4683C3[];
Class_Descriptor cd_S4683C3 = {  "S4683C3", // class name
  0,0,//no base classes
  &(vtc_S4683C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S4683C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4683C3),5, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4683C2  : S4683C3 {
  __tsi64 s4683c2f0[4];
  virtual  ~S4683C2(); // _ZN7S4683C2D1Ev
  virtual void  v4(); // _ZN7S4683C22v4Ev
  virtual void  v5(); // _ZN7S4683C22v5Ev
  S4683C2(); // tgen
};
//SIG(-1 S4683C2) C1{ BC2{ vd v3 Fc Fi} vd v1 v2 FL[4]}


 S4683C2 ::~S4683C2(){ note_dtor("S4683C2", this);}
void  S4683C2 ::v4(){vfunc_called(this, "_ZN7S4683C22v4Ev");}
void  S4683C2 ::v5(){vfunc_called(this, "_ZN7S4683C22v5Ev");}
S4683C2 ::S4683C2(){ note_ctor("S4683C2", this);} // tgen

static void Test_S4683C2()
{
  extern Class_Descriptor cd_S4683C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S4683C2, buf);
    S4683C2 *dp, &lv = *(dp=new (buf) S4683C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S4683C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4683C2)");
    check_base_class_offset(lv, (S4683C3*), 0, "S4683C2");
    check_field_offset(lv, s4683c2f0, ABISELECT(16,12), "S4683C2.s4683c2f0");
    test_class_info(&lv, &cd_S4683C2);
    dp->~S4683C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4683C2(Test_S4683C2, "S4683C2", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN7S4683C2C1Ev();
extern void _ZN7S4683C2D1Ev();
Name_Map name_map_S4683C2[] = {
  NSPAIR(_ZN7S4683C2C1Ev),
  NSPAIR(_ZN7S4683C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4683C3;
extern VTBL_ENTRY _ZTI7S4683C3[];
extern  VTBL_ENTRY _ZTV7S4683C3[];
static Base_Class bases_S4683C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4683C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4683C2[];
extern void _ZN7S4683C2D1Ev();
extern void _ZN7S4683C2D0Ev();
extern void _ZN7S4683C32v3Ev();
extern void _ZN7S4683C22v4Ev();
extern void _ZN7S4683C22v5Ev();
static  VTBL_ENTRY vtc_S4683C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4683C2[0]),
  (VTBL_ENTRY)&_ZN7S4683C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4683C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4683C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4683C22v4Ev,
  (VTBL_ENTRY)&_ZN7S4683C22v5Ev,
};
extern VTBL_ENTRY _ZTI7S4683C2[];
extern  VTBL_ENTRY _ZTV7S4683C2[];
Class_Descriptor cd_S4683C2 = {  "S4683C2", // class name
  bases_S4683C2, 1,
  &(vtc_S4683C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI7S4683C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4683C2),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4683C1  : S4683C2 {
  int s4683c1f0;
  virtual  ~S4683C1(); // _ZN7S4683C1D1Ev
  virtual void  v1(); // _ZN7S4683C12v1Ev
  virtual void  v2(); // _ZN7S4683C12v2Ev
  S4683C1(); // tgen
};
//SIG(1 S4683C1) C1{ BC2{ BC3{ vd v3 Fc Fi} vd v4 v5 FL[4]} vd v1 v2 Fi}


 S4683C1 ::~S4683C1(){ note_dtor("S4683C1", this);}
void  S4683C1 ::v1(){vfunc_called(this, "_ZN7S4683C12v1Ev");}
void  S4683C1 ::v2(){vfunc_called(this, "_ZN7S4683C12v2Ev");}
S4683C1 ::S4683C1(){ note_ctor("S4683C1", this);} // tgen

static void Test_S4683C1()
{
  extern Class_Descriptor cd_S4683C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,13)];
    init_test(&cd_S4683C1, buf);
    S4683C1 *dp, &lv = *(dp=new (buf) S4683C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,48), "sizeof(S4683C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4683C1)");
    check_base_class_offset(lv, (S4683C3*)(S4683C2*), 0, "S4683C1");
    check_base_class_offset(lv, (S4683C2*), 0, "S4683C1");
    check_field_offset(lv, s4683c1f0, ABISELECT(48,44), "S4683C1.s4683c1f0");
    test_class_info(&lv, &cd_S4683C1);
    dp->~S4683C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4683C1(Test_S4683C1, "S4683C1", ABISELECT(56,48));

#else // __cplusplus

extern void _ZN7S4683C1C1Ev();
extern void _ZN7S4683C1D1Ev();
Name_Map name_map_S4683C1[] = {
  NSPAIR(_ZN7S4683C1C1Ev),
  NSPAIR(_ZN7S4683C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4683C3;
extern VTBL_ENTRY _ZTI7S4683C3[];
extern  VTBL_ENTRY _ZTV7S4683C3[];
extern Class_Descriptor cd_S4683C2;
extern VTBL_ENTRY _ZTI7S4683C2[];
extern  VTBL_ENTRY _ZTV7S4683C2[];
static Base_Class bases_S4683C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4683C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4683C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4683C1[];
extern void _ZN7S4683C1D1Ev();
extern void _ZN7S4683C1D0Ev();
extern void _ZN7S4683C32v3Ev();
extern void _ZN7S4683C22v4Ev();
extern void _ZN7S4683C22v5Ev();
extern void _ZN7S4683C12v1Ev();
extern void _ZN7S4683C12v2Ev();
static  VTBL_ENTRY vtc_S4683C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4683C1[0]),
  (VTBL_ENTRY)&_ZN7S4683C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4683C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4683C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4683C22v4Ev,
  (VTBL_ENTRY)&_ZN7S4683C22v5Ev,
  (VTBL_ENTRY)&_ZN7S4683C12v1Ev,
  (VTBL_ENTRY)&_ZN7S4683C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S4683C1[];
extern  VTBL_ENTRY _ZTV7S4683C1[];
Class_Descriptor cd_S4683C1 = {  "S4683C1", // class name
  bases_S4683C1, 2,
  &(vtc_S4683C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,48), // object size
  NSPAIRA(_ZTI7S4683C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4683C1),9, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18844C1  {
  virtual  ~S18844C1(); // _ZN8S18844C1D1Ev
  virtual void  v1(); // _ZN8S18844C12v1Ev
  virtual void  v2(); // _ZN8S18844C12v2Ev
  virtual void  v3(); // _ZN8S18844C12v3Ev
  virtual void  v4(); // _ZN8S18844C12v4Ev
  virtual void  v5(); // _ZN8S18844C12v5Ev
  virtual void  v6(); // _ZN8S18844C12v6Ev
  virtual void  v7(); // _ZN8S18844C12v7Ev
  virtual void  v8(); // _ZN8S18844C12v8Ev
  virtual void  v9(); // _ZN8S18844C12v9Ev
  virtual void  v10(); // _ZN8S18844C13v10Ev
  virtual void  v11(); // _ZN8S18844C13v11Ev
  virtual void  v12(); // _ZN8S18844C13v12Ev
  virtual void  v13(); // _ZN8S18844C13v13Ev
  S18844C1(); // tgen
};
//SIG(1 S18844C1) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13}


 S18844C1 ::~S18844C1(){ note_dtor("S18844C1", this);}
void  S18844C1 ::v1(){vfunc_called(this, "_ZN8S18844C12v1Ev");}
void  S18844C1 ::v2(){vfunc_called(this, "_ZN8S18844C12v2Ev");}
void  S18844C1 ::v3(){vfunc_called(this, "_ZN8S18844C12v3Ev");}
void  S18844C1 ::v4(){vfunc_called(this, "_ZN8S18844C12v4Ev");}
void  S18844C1 ::v5(){vfunc_called(this, "_ZN8S18844C12v5Ev");}
void  S18844C1 ::v6(){vfunc_called(this, "_ZN8S18844C12v6Ev");}
void  S18844C1 ::v7(){vfunc_called(this, "_ZN8S18844C12v7Ev");}
void  S18844C1 ::v8(){vfunc_called(this, "_ZN8S18844C12v8Ev");}
void  S18844C1 ::v9(){vfunc_called(this, "_ZN8S18844C12v9Ev");}
void  S18844C1 ::v10(){vfunc_called(this, "_ZN8S18844C13v10Ev");}
void  S18844C1 ::v11(){vfunc_called(this, "_ZN8S18844C13v11Ev");}
void  S18844C1 ::v12(){vfunc_called(this, "_ZN8S18844C13v12Ev");}
void  S18844C1 ::v13(){vfunc_called(this, "_ZN8S18844C13v13Ev");}
S18844C1 ::S18844C1(){ note_ctor("S18844C1", this);} // tgen

static void Test_S18844C1()
{
  extern Class_Descriptor cd_S18844C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S18844C1, buf);
    S18844C1 *dp, &lv = *(dp=new (buf) S18844C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S18844C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18844C1)");
    test_class_info(&lv, &cd_S18844C1);
    dp->~S18844C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18844C1(Test_S18844C1, "S18844C1", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S18844C1C1Ev();
extern void _ZN8S18844C1D1Ev();
Name_Map name_map_S18844C1[] = {
  NSPAIR(_ZN8S18844C1C1Ev),
  NSPAIR(_ZN8S18844C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18844C1[];
extern void _ZN8S18844C1D1Ev();
extern void _ZN8S18844C1D0Ev();
extern void _ZN8S18844C12v1Ev();
extern void _ZN8S18844C12v2Ev();
extern void _ZN8S18844C12v3Ev();
extern void _ZN8S18844C12v4Ev();
extern void _ZN8S18844C12v5Ev();
extern void _ZN8S18844C12v6Ev();
extern void _ZN8S18844C12v7Ev();
extern void _ZN8S18844C12v8Ev();
extern void _ZN8S18844C12v9Ev();
extern void _ZN8S18844C13v10Ev();
extern void _ZN8S18844C13v11Ev();
extern void _ZN8S18844C13v12Ev();
extern void _ZN8S18844C13v13Ev();
static  VTBL_ENTRY vtc_S18844C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18844C1[0]),
  (VTBL_ENTRY)&_ZN8S18844C1D1Ev,
  (VTBL_ENTRY)&_ZN8S18844C1D0Ev,
  (VTBL_ENTRY)&_ZN8S18844C12v1Ev,
  (VTBL_ENTRY)&_ZN8S18844C12v2Ev,
  (VTBL_ENTRY)&_ZN8S18844C12v3Ev,
  (VTBL_ENTRY)&_ZN8S18844C12v4Ev,
  (VTBL_ENTRY)&_ZN8S18844C12v5Ev,
  (VTBL_ENTRY)&_ZN8S18844C12v6Ev,
  (VTBL_ENTRY)&_ZN8S18844C12v7Ev,
  (VTBL_ENTRY)&_ZN8S18844C12v8Ev,
  (VTBL_ENTRY)&_ZN8S18844C12v9Ev,
  (VTBL_ENTRY)&_ZN8S18844C13v10Ev,
  (VTBL_ENTRY)&_ZN8S18844C13v11Ev,
  (VTBL_ENTRY)&_ZN8S18844C13v12Ev,
  (VTBL_ENTRY)&_ZN8S18844C13v13Ev,
};
extern VTBL_ENTRY _ZTI8S18844C1[];
extern  VTBL_ENTRY _ZTV8S18844C1[];
Class_Descriptor cd_S18844C1 = {  "S18844C1", // class name
  0,0,//no base classes
  &(vtc_S18844C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S18844C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18844C1),17, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11721C4_nt  {
  void *s11721c4f0[2];
};
//SIG(-1 S11721C4_nt) C1{ Fp[2]}



//skip512 S11721C4_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11721C1  {
  ::S13686C3 s11721c1f0;
  ::S13686C6_nt s11721c1f1;
  ::S11721C4_nt s11721c1f2;
  ::S11721C4_nt s11721c1f3;
  void *s11721c1f4;
};
//SIG(1 S11721C1) C1{ FC2{ FL[2] Fl} FC3{ Fp[2]} FC4{ Fp[2]} FC4 Fp}



static void Test_S11721C1()
{
  {
    init_simple_test("S11721C1");
    S11721C1 lv;
    check2(sizeof(lv), ABISELECT(80,48), "sizeof(S11721C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11721C1)");
    check_field_offset(lv, s11721c1f0, 0, "S11721C1.s11721c1f0");
    check_field_offset(lv, s11721c1f1, ABISELECT(24,20), "S11721C1.s11721c1f1");
    check_field_offset(lv, s11721c1f2, ABISELECT(40,28), "S11721C1.s11721c1f2");
    check_field_offset(lv, s11721c1f3, ABISELECT(56,36), "S11721C1.s11721c1f3");
    check_field_offset(lv, s11721c1f4, ABISELECT(72,44), "S11721C1.s11721c1f4");
  }
}
static Arrange_To_Call_Me vS11721C1(Test_S11721C1, "S11721C1", ABISELECT(80,48));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21838C1  {
  void *s21838c1f0[3];
  int s21838c1f1;
  void *s21838c1f2;
  int s21838c1f3;
  ::S17556C15_nt s21838c1f4;
  int s21838c1f5;
  void  mf21838c1(); // _ZN8S21838C19mf21838c1Ev
  virtual  ~S21838C1(); // _ZN8S21838C1D1Ev
  S21838C1(); // tgen
};
//SIG(1 S21838C1) C1{ vd m Fp[3] Fi Fp Fi FC2{ m Fp Fi[2] FC3{ m}} Fi}


void  S21838C1 ::mf21838c1(){}
 S21838C1 ::~S21838C1(){ note_dtor("S21838C1", this);}
S21838C1 ::S21838C1(){ note_ctor("S21838C1", this);} // tgen

static void Test_S21838C1()
{
  extern Class_Descriptor cd_S21838C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,13)];
    init_test(&cd_S21838C1, buf);
    S21838C1 *dp, &lv = *(dp=new (buf) S21838C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,48), "sizeof(S21838C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21838C1)");
    check_field_offset(lv, s21838c1f0, ABISELECT(8,4), "S21838C1.s21838c1f0");
    check_field_offset(lv, s21838c1f1, ABISELECT(32,16), "S21838C1.s21838c1f1");
    check_field_offset(lv, s21838c1f2, ABISELECT(40,20), "S21838C1.s21838c1f2");
    check_field_offset(lv, s21838c1f3, ABISELECT(48,24), "S21838C1.s21838c1f3");
    check_field_offset(lv, s21838c1f4, ABISELECT(56,28), "S21838C1.s21838c1f4");
    check_field_offset(lv, s21838c1f5, ABISELECT(80,44), "S21838C1.s21838c1f5");
    test_class_info(&lv, &cd_S21838C1);
    dp->~S21838C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21838C1(Test_S21838C1, "S21838C1", ABISELECT(88,48));

#else // __cplusplus

extern void _ZN8S21838C1C1Ev();
extern void _ZN8S21838C1D1Ev();
Name_Map name_map_S21838C1[] = {
  NSPAIR(_ZN8S21838C1C1Ev),
  NSPAIR(_ZN8S21838C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21838C1[];
extern void _ZN8S21838C1D1Ev();
extern void _ZN8S21838C1D0Ev();
static  VTBL_ENTRY vtc_S21838C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21838C1[0]),
  (VTBL_ENTRY)&_ZN8S21838C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21838C1D0Ev,
};
extern VTBL_ENTRY _ZTI8S21838C1[];
extern  VTBL_ENTRY _ZTV8S21838C1[];
Class_Descriptor cd_S21838C1 = {  "S21838C1", // class name
  0,0,//no base classes
  &(vtc_S21838C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,48), // object size
  NSPAIRA(_ZTI8S21838C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21838C1),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7472C2  : virtual S7856C24 , S7856C15 , virtual S7856C12 {
  ~S7472C2(); // tgen
  S7472C2(); // tgen
};
//SIG(-1 S7472C2) C1{ VBC2{ m} BC3{ m} VBC4{ m}}


S7472C2 ::~S7472C2(){ note_dtor("S7472C2", this);} // tgen
S7472C2 ::S7472C2(){ note_ctor("S7472C2", this);} // tgen

static void Test_S7472C2()
{
  extern Class_Descriptor cd_S7472C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7472C2, buf);
    S7472C2 *dp, &lv = *(dp=new (buf) S7472C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7472C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7472C2)");
    check_base_class_offset(lv, (S7856C24*), 0, "S7472C2");
    check_base_class_offset(lv, (S7856C15*), 0, "S7472C2");
    check_base_class_offset(lv, (S7856C12*), 0, "S7472C2");
    test_class_info(&lv, &cd_S7472C2);
    dp->~S7472C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7472C2(Test_S7472C2, "S7472C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7472C2C1Ev();
extern void _ZN7S7472C2D1Ev();
Name_Map name_map_S7472C2[] = {
  NSPAIR(_ZN7S7472C2C1Ev),
  NSPAIR(_ZN7S7472C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
static Base_Class bases_S7472C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7472C2[];
static  VTBL_ENTRY vtc_S7472C2[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7472C2[0]),
};
extern VTBL_ENTRY _ZTV7S7472C2[];
static  VTT_ENTRY vtt_S7472C2[] = {
  {&(_ZTV7S7472C2[4]),  4,4},
};
extern VTBL_ENTRY _ZTI7S7472C2[];
extern  VTBL_ENTRY _ZTV7S7472C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7472C2[];
Class_Descriptor cd_S7472C2 = {  "S7472C2", // class name
  bases_S7472C2, 3,
  &(vtc_S7472C2[0]), // expected_vtbl_contents
  &(vtt_S7472C2[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7472C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7472C2),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7472C2),1, //virtual table table var
  0, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7472C6  : S7856C24 , virtual S7472C2 , virtual S7856C15 {
  ~S7472C6(); // tgen
  S7472C6(); // tgen
};
//SIG(-1 S7472C6) C1{ BC2{ m} VBC3{ VBC2 BC4{ m} VBC5{ m}} VBC4}


S7472C6 ::~S7472C6(){ note_dtor("S7472C6", this);} // tgen
S7472C6 ::S7472C6(){ note_ctor("S7472C6", this);} // tgen

static void Test_S7472C6()
{
  extern Class_Descriptor cd_S7472C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S7472C6, buf);
    S7472C6 *dp, &lv = *(dp=new (buf) S7472C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S7472C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7472C6)");
    /*is_ambiguous_... S7472C6::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), 0, "S7472C6");
    check_base_class_offset(lv, (S7856C24*)(S7472C2*), ABISELECT(8,4), "S7472C6");
    check_base_class_offset(lv, (S7856C15*)(S7472C2*), 0, "S7472C6");
    check_base_class_offset(lv, (S7856C12*)(S7472C2*), 0, "S7472C6");
    check_base_class_offset(lv, (S7472C2*), 0, "S7472C6");
    /*is_ambiguous_... S7472C6::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(8,4), "S7472C6");
    test_class_info(&lv, &cd_S7472C6);
    dp->~S7472C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7472C6(Test_S7472C6, "S7472C6", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S7472C6C1Ev();
extern void _ZN7S7472C6D1Ev();
Name_Map name_map_S7472C6[] = {
  NSPAIR(_ZN7S7472C6C1Ev),
  NSPAIR(_ZN7S7472C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7472C2;
extern VTBL_ENTRY _ZTI7S7472C2[];
extern  VTBL_ENTRY _ZTV7S7472C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7472C2[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
static Base_Class bases_S7472C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7472C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7472C6[];
static  VTBL_ENTRY vtc_S7472C6[] = {
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7472C6[0]),
};
extern VTBL_ENTRY _ZTV7S7472C6[];
static  VTBL_ENTRY _tg__ZTV7S7472C2__7S7472C6[] = {
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7472C2[0]),
};
static  VTT_ENTRY vtt_S7472C6[] = {
  {&(_ZTV7S7472C6[6]),  6,6},
  {&(_ZTV7S7472C6[6]),  6,6},
  {&(_tg__ZTV7S7472C2__7S7472C6[4]),  4,4},
};
extern VTBL_ENTRY _ZTI7S7472C6[];
extern  VTBL_ENTRY _ZTV7S7472C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7472C6[];
Class_Descriptor cd_S7472C6 = {  "S7472C6", // class name
  bases_S7472C6, 6,
  &(vtc_S7472C6[0]), // expected_vtbl_contents
  &(vtt_S7472C6[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7472C6),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7472C6),6, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7472C6),3, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7472C1  : S7472C2 , virtual S7472C6 {
  ~S7472C1(); // tgen
  S7472C1(); // tgen
};
//SIG(1 S7472C1) C1{ BC2{ VBC3{ m} BC4{ m} VBC5{ m}} VBC6{ BC3 VBC2 VBC4}}


S7472C1 ::~S7472C1(){ note_dtor("S7472C1", this);} // tgen
S7472C1 ::S7472C1(){ note_ctor("S7472C1", this);} // tgen

static void Test_S7472C1()
{
  extern Class_Descriptor cd_S7472C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S7472C1, buf);
    S7472C1 *dp, &lv = *(dp=new (buf) S7472C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S7472C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7472C1)");
    /*is_ambiguous_... S7472C1::S7472C2 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7472C2*), 0, "S7472C1");
    /*is_ambiguous_... S7472C1::S7472C2 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7472C2*), 0, "S7472C1");
    /*is_ambiguous_... S7472C1::S7472C2 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7472C2*), 0, "S7472C1");
    /*is_ambiguous_... S7472C1::S7472C2 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7472C2*), 0, "S7472C1");
    /*is_ambiguous_... S7472C1::S7472C2 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7472C2*), 0, "S7472C1");
    /*is_ambiguous_... S7472C1::S7472C2 */ AMB_check_base_class_offset(lv, (S7472C2*), 0, "S7472C1");
    /*is_ambiguous_... S7472C6::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7472C6*), ABISELECT(8,4), "S7472C1");
    /*is_ambiguous_... S7472C1::S7472C2 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7472C2*), ABISELECT(8,4), "S7472C1");
    check_base_class_offset(lv, (S7472C2*)(S7472C6*), ABISELECT(8,4), "S7472C1");
    /*is_ambiguous_... S7472C6::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7472C6*), ABISELECT(16,8), "S7472C1");
    check_base_class_offset(lv, (S7472C6*), ABISELECT(8,4), "S7472C1");
    test_class_info(&lv, &cd_S7472C1);
    dp->~S7472C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7472C1(Test_S7472C1, "S7472C1", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S7472C1C1Ev();
extern void _ZN7S7472C1D1Ev();
Name_Map name_map_S7472C1[] = {
  NSPAIR(_ZN7S7472C1C1Ev),
  NSPAIR(_ZN7S7472C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7472C2;
extern VTBL_ENTRY _ZTI7S7472C2[];
extern  VTBL_ENTRY _ZTV7S7472C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7472C2[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7472C2;
extern VTBL_ENTRY _ZTI7S7472C2[];
extern  VTBL_ENTRY _ZTV7S7472C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7472C2[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7472C6;
extern VTBL_ENTRY _ZTI7S7472C6[];
extern  VTBL_ENTRY _ZTV7S7472C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7472C6[];
static Base_Class bases_S7472C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7472C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7472C2,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S7472C6,    ABISELECT(8,4), //bcp->offset
    7, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7472C1[];
static  VTBL_ENTRY vtc_S7472C1[] = {
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7472C1[0]),
  ABISELECT(8,4),
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7472C1[0]),
};
extern VTBL_ENTRY _ZTV7S7472C1[];
static  VTBL_ENTRY _tg__ZTV7S7472C2__A__7S7472C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7472C2[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7472C6__7S7472C1[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7472C6[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7472C2__A1__7S7472C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7472C2[0]),
};
static  VTT_ENTRY vtt_S7472C1[] = {
  {&(_ZTV7S7472C1[7]),  7,13},
  {&(_tg__ZTV7S7472C2__A__7S7472C1[4]),  4,4},
  {&(_ZTV7S7472C1[13]),  13,13},
  {&(_ZTV7S7472C1[13]),  13,13},
  {&(_tg__ZTV7S7472C6__7S7472C1[6]),  6,6},
  {&(_tg__ZTV7S7472C6__7S7472C1[6]),  6,6},
  {&(_tg__ZTV7S7472C2__A1__7S7472C1[4]),  4,4},
};
extern VTBL_ENTRY _ZTI7S7472C1[];
extern  VTBL_ENTRY _ZTV7S7472C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7472C1[];
Class_Descriptor cd_S7472C1 = {  "S7472C1", // class name
  bases_S7472C1, 9,
  &(vtc_S7472C1[0]), // expected_vtbl_contents
  &(vtt_S7472C1[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S7472C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7472C1),13, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7472C1),7, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13532C2  {
  char s13532c2f0[4];
  int s13532c2f1;
  char s13532c2f2[512];
};
//SIG(-1 S13532C2) C1{ Fc[4] Fi Fc[512]}



static void Test_S13532C2()
{
  {
    init_simple_test("S13532C2");
    S13532C2 lv;
    check2(sizeof(lv), 520, "sizeof(S13532C2)");
    check2(__alignof__(lv), 4, "__alignof__(S13532C2)");
    check_field_offset(lv, s13532c2f0, 0, "S13532C2.s13532c2f0");
    check_field_offset(lv, s13532c2f1, 4, "S13532C2.s13532c2f1");
    check_field_offset(lv, s13532c2f2, 8, "S13532C2.s13532c2f2");
  }
}
static Arrange_To_Call_Me vS13532C2(Test_S13532C2, "S13532C2", 520);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13532C1  {
  int s13532c1f0[5];
  char s13532c1f1[32];
  int s13532c1f2;
  void *s13532c1f3;
  int s13532c1f4;
  ::S13532C2 s13532c1f5;
};
//SIG(1 S13532C1) C1{ Fi[5] Fc[32] Fi Fp Fi FC2{ Fc[4] Fi Fc[512]}}



static void Test_S13532C1()
{
  {
    init_simple_test("S13532C1");
    S13532C1 lv;
    check2(sizeof(lv), ABISELECT(592,584), "sizeof(S13532C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13532C1)");
    check_field_offset(lv, s13532c1f0, 0, "S13532C1.s13532c1f0");
    check_field_offset(lv, s13532c1f1, 20, "S13532C1.s13532c1f1");
    check_field_offset(lv, s13532c1f2, 52, "S13532C1.s13532c1f2");
    check_field_offset(lv, s13532c1f3, 56, "S13532C1.s13532c1f3");
    check_field_offset(lv, s13532c1f4, ABISELECT(64,60), "S13532C1.s13532c1f4");
    check_field_offset(lv, s13532c1f5, ABISELECT(68,64), "S13532C1.s13532c1f5");
  }
}
static Arrange_To_Call_Me vS13532C1(Test_S13532C1, "S13532C1", ABISELECT(592,584));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7470C2  : virtual S7856C24 , S7856C15 , virtual S7856C12 {
  ~S7470C2(); // tgen
  S7470C2(); // tgen
};
//SIG(-1 S7470C2) C1{ VBC2{ m} BC3{ m} VBC4{ m}}


S7470C2 ::~S7470C2(){ note_dtor("S7470C2", this);} // tgen
S7470C2 ::S7470C2(){ note_ctor("S7470C2", this);} // tgen

static void Test_S7470C2()
{
  extern Class_Descriptor cd_S7470C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7470C2, buf);
    S7470C2 *dp, &lv = *(dp=new (buf) S7470C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7470C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7470C2)");
    check_base_class_offset(lv, (S7856C24*), 0, "S7470C2");
    check_base_class_offset(lv, (S7856C15*), 0, "S7470C2");
    check_base_class_offset(lv, (S7856C12*), 0, "S7470C2");
    test_class_info(&lv, &cd_S7470C2);
    dp->~S7470C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7470C2(Test_S7470C2, "S7470C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7470C2C1Ev();
extern void _ZN7S7470C2D1Ev();
Name_Map name_map_S7470C2[] = {
  NSPAIR(_ZN7S7470C2C1Ev),
  NSPAIR(_ZN7S7470C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
static Base_Class bases_S7470C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7470C2[];
static  VTBL_ENTRY vtc_S7470C2[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7470C2[0]),
};
extern VTBL_ENTRY _ZTV7S7470C2[];
static  VTT_ENTRY vtt_S7470C2[] = {
  {&(_ZTV7S7470C2[4]),  4,4},
};
extern VTBL_ENTRY _ZTI7S7470C2[];
extern  VTBL_ENTRY _ZTV7S7470C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7470C2[];
Class_Descriptor cd_S7470C2 = {  "S7470C2", // class name
  bases_S7470C2, 3,
  &(vtc_S7470C2[0]), // expected_vtbl_contents
  &(vtt_S7470C2[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7470C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7470C2),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7470C2),1, //virtual table table var
  0, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7470C6  : virtual S7856C24 , S7856C15 , virtual S7856C12 {
  ~S7470C6(); // tgen
  S7470C6(); // tgen
};
//SIG(-1 S7470C6) C1{ VBC2{ m} BC3{ m} VBC4{ m}}


S7470C6 ::~S7470C6(){ note_dtor("S7470C6", this);} // tgen
S7470C6 ::S7470C6(){ note_ctor("S7470C6", this);} // tgen

static void Test_S7470C6()
{
  extern Class_Descriptor cd_S7470C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7470C6, buf);
    S7470C6 *dp, &lv = *(dp=new (buf) S7470C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7470C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7470C6)");
    check_base_class_offset(lv, (S7856C24*), 0, "S7470C6");
    check_base_class_offset(lv, (S7856C15*), 0, "S7470C6");
    check_base_class_offset(lv, (S7856C12*), 0, "S7470C6");
    test_class_info(&lv, &cd_S7470C6);
    dp->~S7470C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7470C6(Test_S7470C6, "S7470C6", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7470C6C1Ev();
extern void _ZN7S7470C6D1Ev();
Name_Map name_map_S7470C6[] = {
  NSPAIR(_ZN7S7470C6C1Ev),
  NSPAIR(_ZN7S7470C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
static Base_Class bases_S7470C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7470C6[];
static  VTBL_ENTRY vtc_S7470C6[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7470C6[0]),
};
extern VTBL_ENTRY _ZTV7S7470C6[];
static  VTT_ENTRY vtt_S7470C6[] = {
  {&(_ZTV7S7470C6[4]),  4,4},
};
extern VTBL_ENTRY _ZTI7S7470C6[];
extern  VTBL_ENTRY _ZTV7S7470C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7470C6[];
Class_Descriptor cd_S7470C6 = {  "S7470C6", // class name
  bases_S7470C6, 3,
  &(vtc_S7470C6[0]), // expected_vtbl_contents
  &(vtt_S7470C6[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7470C6),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7470C6),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7470C6),1, //virtual table table var
  0, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7470C1  : S7470C2 , S7470C6 {
  ~S7470C1(); // tgen
  S7470C1(); // tgen
};
//SIG(1 S7470C1) C1{ BC2{ VBC3{ m} BC4{ m} VBC5{ m}} BC6{ VBC3 BC4 VBC5}}


S7470C1 ::~S7470C1(){ note_dtor("S7470C1", this);} // tgen
S7470C1 ::S7470C1(){ note_ctor("S7470C1", this);} // tgen

static void Test_S7470C1()
{
  extern Class_Descriptor cd_S7470C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S7470C1, buf);
    S7470C1 *dp, &lv = *(dp=new (buf) S7470C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S7470C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7470C1)");
    check_base_class_offset(lv, (S7856C24*)(S7470C2*), 0, "S7470C1");
    check_base_class_offset(lv, (S7856C24*)(S7470C6*), 0, "S7470C1");
    check_base_class_offset(lv, (S7856C15*)(S7470C2*), 0, "S7470C1");
    check_base_class_offset(lv, (S7856C12*)(S7470C2*), 0, "S7470C1");
    check_base_class_offset(lv, (S7856C12*)(S7470C6*), 0, "S7470C1");
    check_base_class_offset(lv, (S7470C2*), 0, "S7470C1");
    check_base_class_offset(lv, (S7856C15*)(S7470C6*), ABISELECT(8,4), "S7470C1");
    check_base_class_offset(lv, (S7470C6*), ABISELECT(8,4), "S7470C1");
    test_class_info(&lv, &cd_S7470C1);
    dp->~S7470C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7470C1(Test_S7470C1, "S7470C1", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S7470C1C1Ev();
extern void _ZN7S7470C1D1Ev();
Name_Map name_map_S7470C1[] = {
  NSPAIR(_ZN7S7470C1C1Ev),
  NSPAIR(_ZN7S7470C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7470C2;
extern VTBL_ENTRY _ZTI7S7470C2[];
extern  VTBL_ENTRY _ZTV7S7470C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7470C2[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7470C6;
extern VTBL_ENTRY _ZTI7S7470C6[];
extern  VTBL_ENTRY _ZTV7S7470C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7470C6[];
static Base_Class bases_S7470C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7470C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7470C6,    ABISELECT(8,4), //bcp->offset
    4, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7470C1[];
static  VTBL_ENTRY vtc_S7470C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7470C1[0]),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7470C1[0]),
};
extern VTBL_ENTRY _ZTV7S7470C1[];
static  VTBL_ENTRY _tg__ZTV7S7470C2__7S7470C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7470C2[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7470C6__7S7470C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7470C6[0]),
};
static  VTT_ENTRY vtt_S7470C1[] = {
  {&(_ZTV7S7470C1[4]),  4,8},
  {&(_tg__ZTV7S7470C2__7S7470C1[4]),  4,4},
  {&(_tg__ZTV7S7470C6__7S7470C1[4]),  4,4},
  {&(_ZTV7S7470C1[8]),  8,8},
};
extern VTBL_ENTRY _ZTI7S7470C1[];
extern  VTBL_ENTRY _ZTV7S7470C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7470C1[];
Class_Descriptor cd_S7470C1 = {  "S7470C1", // class name
  bases_S7470C1, 6,
  &(vtc_S7470C1[0]), // expected_vtbl_contents
  &(vtt_S7470C1[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7470C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7470C1),8, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7470C1),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18145C1  {
  void *s18145c1f0[3];
  ::S18423C26 s18145c1f1;
  int s18145c1f2;
  void *s18145c1f3;
  void  mf18145c1(); // _ZN8S18145C19mf18145c1Ev
};
//SIG(1 S18145C1) C1{ m Fp[3] FC2{ Fi FC3{ m Fp Fi FC4{ m}} Fi} Fi Fp}


void  S18145C1 ::mf18145c1(){}

static void Test_S18145C1()
{
  {
    init_simple_test("S18145C1");
    S18145C1 lv;
    check2(sizeof(lv), ABISELECT(72,40), "sizeof(S18145C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18145C1)");
    check_field_offset(lv, s18145c1f0, 0, "S18145C1.s18145c1f0");
    check_field_offset(lv, s18145c1f1, ABISELECT(24,12), "S18145C1.s18145c1f1");
    check_field_offset(lv, s18145c1f2, ABISELECT(56,32), "S18145C1.s18145c1f2");
    check_field_offset(lv, s18145c1f3, ABISELECT(64,36), "S18145C1.s18145c1f3");
  }
}
static Arrange_To_Call_Me vS18145C1(Test_S18145C1, "S18145C1", ABISELECT(72,40));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17095C3_nt  {
  int s17095c3f0[2];
  void  mf17095c3(); // _ZN11S17095C3_nt9mf17095c3Ev
};
//SIG(-1 S17095C3_nt) C1{ m Fi[2]}


void  S17095C3_nt ::mf17095c3(){}

//skip512 S17095C3_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17095C1  {
  int s17095c1f0[2];
  ::S40C9_nt s17095c1f1;
  ::S40C9_nt s17095c1f2;
  ::S17095C3_nt s17095c1f3;
  int s17095c1f4[2];
  void  mf17095c1(); // _ZN8S17095C19mf17095c1Ev
};
//SIG(1 S17095C1) C1{ m Fi[2] FC2{ m Fi[2]} FC2 FC3{ m Fi[2]} Fi[2]}


void  S17095C1 ::mf17095c1(){}

static void Test_S17095C1()
{
  {
    init_simple_test("S17095C1");
    S17095C1 lv;
    check2(sizeof(lv), 40, "sizeof(S17095C1)");
    check2(__alignof__(lv), 4, "__alignof__(S17095C1)");
    check_field_offset(lv, s17095c1f0, 0, "S17095C1.s17095c1f0");
    check_field_offset(lv, s17095c1f1, 8, "S17095C1.s17095c1f1");
    check_field_offset(lv, s17095c1f2, 16, "S17095C1.s17095c1f2");
    check_field_offset(lv, s17095c1f3, 24, "S17095C1.s17095c1f3");
    check_field_offset(lv, s17095c1f4, 32, "S17095C1.s17095c1f4");
  }
}
static Arrange_To_Call_Me vS17095C1(Test_S17095C1, "S17095C1", 40);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13439C1  {
  int s13439c1f0[4];
  char s13439c1f1[32];
  int s13439c1f2;
  void *s13439c1f3;
  ::S13532C2 s13439c1f4;
};
//SIG(1 S13439C1) C1{ Fi[4] Fc[32] Fi Fp FC2{ Fc[4] Fi Fc[512]}}



static void Test_S13439C1()
{
  {
    init_simple_test("S13439C1");
    S13439C1 lv;
    check2(sizeof(lv), ABISELECT(584,576), "sizeof(S13439C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13439C1)");
    check_field_offset(lv, s13439c1f0, 0, "S13439C1.s13439c1f0");
    check_field_offset(lv, s13439c1f1, 16, "S13439C1.s13439c1f1");
    check_field_offset(lv, s13439c1f2, 48, "S13439C1.s13439c1f2");
    check_field_offset(lv, s13439c1f3, ABISELECT(56,52), "S13439C1.s13439c1f3");
    check_field_offset(lv, s13439c1f4, ABISELECT(64,56), "S13439C1.s13439c1f4");
  }
}
static Arrange_To_Call_Me vS13439C1(Test_S13439C1, "S13439C1", ABISELECT(584,576));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9592C2  {
  virtual  ~S9592C2(); // _ZN7S9592C2D1Ev
  virtual void  v3(); // _ZN7S9592C22v3Ev
  virtual void  v4(); // _ZN7S9592C22v4Ev
  S9592C2(); // tgen
};
//SIG(-1 S9592C2) C1{ vd v1 v2}


 S9592C2 ::~S9592C2(){ note_dtor("S9592C2", this);}
void  S9592C2 ::v3(){vfunc_called(this, "_ZN7S9592C22v3Ev");}
void  S9592C2 ::v4(){vfunc_called(this, "_ZN7S9592C22v4Ev");}
S9592C2 ::S9592C2(){ note_ctor("S9592C2", this);} // tgen

static void Test_S9592C2()
{
  extern Class_Descriptor cd_S9592C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S9592C2, buf);
    S9592C2 *dp, &lv = *(dp=new (buf) S9592C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S9592C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9592C2)");
    test_class_info(&lv, &cd_S9592C2);
    dp->~S9592C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9592C2(Test_S9592C2, "S9592C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S9592C2C1Ev();
extern void _ZN7S9592C2D1Ev();
Name_Map name_map_S9592C2[] = {
  NSPAIR(_ZN7S9592C2C1Ev),
  NSPAIR(_ZN7S9592C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9592C2[];
extern void _ZN7S9592C2D1Ev();
extern void _ZN7S9592C2D0Ev();
extern void _ZN7S9592C22v3Ev();
extern void _ZN7S9592C22v4Ev();
static  VTBL_ENTRY vtc_S9592C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9592C2[0]),
  (VTBL_ENTRY)&_ZN7S9592C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9592C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9592C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9592C22v4Ev,
};
extern VTBL_ENTRY _ZTI7S9592C2[];
extern  VTBL_ENTRY _ZTV7S9592C2[];
Class_Descriptor cd_S9592C2 = {  "S9592C2", // class name
  0,0,//no base classes
  &(vtc_S9592C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S9592C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9592C2),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9592C1  : S9592C2 {
  ::S1954C11 s9592c1f0;
  void *s9592c1f1;
  virtual  ~S9592C1(); // _ZN7S9592C1D1Ev
  virtual void  v1(); // _ZN7S9592C12v1Ev
  virtual void  v2(); // _ZN7S9592C12v2Ev
  S9592C1(); // tgen
};
//SIG(1 S9592C1) C1{ BC2{ vd v3 v4} vd v1 v2 FC3{ m Fp Fi[2]} Fp}


 S9592C1 ::~S9592C1(){ note_dtor("S9592C1", this);}
void  S9592C1 ::v1(){vfunc_called(this, "_ZN7S9592C12v1Ev");}
void  S9592C1 ::v2(){vfunc_called(this, "_ZN7S9592C12v2Ev");}
S9592C1 ::S9592C1(){ note_ctor("S9592C1", this);} // tgen

static void Test_S9592C1()
{
  extern Class_Descriptor cd_S9592C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S9592C1, buf);
    S9592C1 *dp, &lv = *(dp=new (buf) S9592C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S9592C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9592C1)");
    check_base_class_offset(lv, (S9592C2*), 0, "S9592C1");
    check_field_offset(lv, s9592c1f0, ABISELECT(8,4), "S9592C1.s9592c1f0");
    check_field_offset(lv, s9592c1f1, ABISELECT(24,16), "S9592C1.s9592c1f1");
    test_class_info(&lv, &cd_S9592C1);
    dp->~S9592C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9592C1(Test_S9592C1, "S9592C1", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S9592C1C1Ev();
extern void _ZN7S9592C1D1Ev();
Name_Map name_map_S9592C1[] = {
  NSPAIR(_ZN7S9592C1C1Ev),
  NSPAIR(_ZN7S9592C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9592C2;
extern VTBL_ENTRY _ZTI7S9592C2[];
extern  VTBL_ENTRY _ZTV7S9592C2[];
static Base_Class bases_S9592C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9592C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9592C1[];
extern void _ZN7S9592C1D1Ev();
extern void _ZN7S9592C1D0Ev();
extern void _ZN7S9592C22v3Ev();
extern void _ZN7S9592C22v4Ev();
extern void _ZN7S9592C12v1Ev();
extern void _ZN7S9592C12v2Ev();
static  VTBL_ENTRY vtc_S9592C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9592C1[0]),
  (VTBL_ENTRY)&_ZN7S9592C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9592C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9592C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9592C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9592C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9592C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S9592C1[];
extern  VTBL_ENTRY _ZTV7S9592C1[];
Class_Descriptor cd_S9592C1 = {  "S9592C1", // class name
  bases_S9592C1, 1,
  &(vtc_S9592C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S9592C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9592C1),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3719C2  : S3750C3_nt {
  virtual  ~S3719C2(); // _ZN7S3719C2D1Ev
  virtual void  v3(); // _ZN7S3719C22v3Ev
  virtual void  v4(); // _ZN7S3719C22v4Ev
  S3719C2(); // tgen
};
//SIG(-1 S3719C2) C1{ BC2{ vd m Fi} vd v1 v2}


 S3719C2 ::~S3719C2(){ note_dtor("S3719C2", this);}
void  S3719C2 ::v3(){vfunc_called(this, "_ZN7S3719C22v3Ev");}
void  S3719C2 ::v4(){vfunc_called(this, "_ZN7S3719C22v4Ev");}
S3719C2 ::S3719C2(){ note_ctor("S3719C2", this);} // tgen

static void Test_S3719C2()
{
  extern Class_Descriptor cd_S3719C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S3719C2, buf);
    S3719C2 *dp, &lv = *(dp=new (buf) S3719C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S3719C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3719C2)");
    check_base_class_offset(lv, (S3750C3_nt*), 0, "S3719C2");
    test_class_info(&lv, &cd_S3719C2);
    dp->~S3719C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3719C2(Test_S3719C2, "S3719C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S3719C2C1Ev();
extern void _ZN7S3719C2D1Ev();
Name_Map name_map_S3719C2[] = {
  NSPAIR(_ZN7S3719C2C1Ev),
  NSPAIR(_ZN7S3719C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3750C3_nt;
extern VTBL_ENTRY _ZTI10S3750C3_nt[];
extern  VTBL_ENTRY _ZTV10S3750C3_nt[];
static Base_Class bases_S3719C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3750C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3719C2[];
extern void _ZN7S3719C2D1Ev();
extern void _ZN7S3719C2D0Ev();
extern void _ZN7S3719C22v3Ev();
extern void _ZN7S3719C22v4Ev();
static  VTBL_ENTRY vtc_S3719C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3719C2[0]),
  (VTBL_ENTRY)&_ZN7S3719C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3719C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3719C22v3Ev,
  (VTBL_ENTRY)&_ZN7S3719C22v4Ev,
};
extern VTBL_ENTRY _ZTI7S3719C2[];
extern  VTBL_ENTRY _ZTV7S3719C2[];
Class_Descriptor cd_S3719C2 = {  "S3719C2", // class name
  bases_S3719C2, 1,
  &(vtc_S3719C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S3719C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3719C2),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3719C1  : S3719C2 {
  __tsi64 s3719c1f0[2];
  virtual  ~S3719C1(); // _ZN7S3719C1D1Ev
  virtual void  v1(); // _ZN7S3719C12v1Ev
  virtual void  v2(); // _ZN7S3719C12v2Ev
  S3719C1(); // tgen
};
//SIG(1 S3719C1) C1{ BC2{ BC3{ vd m Fi} vd v3 v4} vd v1 v2 FL[2]}


 S3719C1 ::~S3719C1(){ note_dtor("S3719C1", this);}
void  S3719C1 ::v1(){vfunc_called(this, "_ZN7S3719C12v1Ev");}
void  S3719C1 ::v2(){vfunc_called(this, "_ZN7S3719C12v2Ev");}
S3719C1 ::S3719C1(){ note_ctor("S3719C1", this);} // tgen

static void Test_S3719C1()
{
  extern Class_Descriptor cd_S3719C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,7)];
    init_test(&cd_S3719C1, buf);
    S3719C1 *dp, &lv = *(dp=new (buf) S3719C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S3719C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3719C1)");
    check_base_class_offset(lv, (S3750C3_nt*)(S3719C2*), 0, "S3719C1");
    check_base_class_offset(lv, (S3719C2*), 0, "S3719C1");
    check_field_offset(lv, s3719c1f0, ABISELECT(16,8), "S3719C1.s3719c1f0");
    test_class_info(&lv, &cd_S3719C1);
    dp->~S3719C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3719C1(Test_S3719C1, "S3719C1", ABISELECT(32,24));

#else // __cplusplus

extern void _ZN7S3719C1C1Ev();
extern void _ZN7S3719C1D1Ev();
Name_Map name_map_S3719C1[] = {
  NSPAIR(_ZN7S3719C1C1Ev),
  NSPAIR(_ZN7S3719C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3750C3_nt;
extern VTBL_ENTRY _ZTI10S3750C3_nt[];
extern  VTBL_ENTRY _ZTV10S3750C3_nt[];
extern Class_Descriptor cd_S3719C2;
extern VTBL_ENTRY _ZTI7S3719C2[];
extern  VTBL_ENTRY _ZTV7S3719C2[];
static Base_Class bases_S3719C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3750C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3719C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3719C1[];
extern void _ZN7S3719C1D1Ev();
extern void _ZN7S3719C1D0Ev();
extern void _ZN7S3719C22v3Ev();
extern void _ZN7S3719C22v4Ev();
extern void _ZN7S3719C12v1Ev();
extern void _ZN7S3719C12v2Ev();
static  VTBL_ENTRY vtc_S3719C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3719C1[0]),
  (VTBL_ENTRY)&_ZN7S3719C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3719C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3719C22v3Ev,
  (VTBL_ENTRY)&_ZN7S3719C22v4Ev,
  (VTBL_ENTRY)&_ZN7S3719C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3719C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S3719C1[];
extern  VTBL_ENTRY _ZTV7S3719C1[];
Class_Descriptor cd_S3719C1 = {  "S3719C1", // class name
  bases_S3719C1, 2,
  &(vtc_S3719C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,24), // object size
  NSPAIRA(_ZTI7S3719C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3719C1),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11622C3  {
  int s11622c3f0;
  ::S5523C4_nt s11622c3f1;
  int s11622c3f2;
  ::S5523C4_nt s11622c3f3;
  int s11622c3f4;
  ::S5523C4_nt s11622c3f5;
};
//SIG(1 S11622C3) C1{ Fi FC2{ Fi[3]} Fi FC2 Fi FC2}



static void Test_S11622C3()
{
  {
    init_simple_test("S11622C3");
    S11622C3 lv;
    check2(sizeof(lv), 48, "sizeof(S11622C3)");
    check2(__alignof__(lv), 4, "__alignof__(S11622C3)");
    check_field_offset(lv, s11622c3f0, 0, "S11622C3.s11622c3f0");
    check_field_offset(lv, s11622c3f1, 4, "S11622C3.s11622c3f1");
    check_field_offset(lv, s11622c3f2, 16, "S11622C3.s11622c3f2");
    check_field_offset(lv, s11622c3f3, 20, "S11622C3.s11622c3f3");
    check_field_offset(lv, s11622c3f4, 32, "S11622C3.s11622c3f4");
    check_field_offset(lv, s11622c3f5, 36, "S11622C3.s11622c3f5");
  }
}
static Arrange_To_Call_Me vS11622C3(Test_S11622C3, "S11622C3", 48);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11622C1  {
  ::S5523C4_nt s11622c1f0;
  ::S11622C3 s11622c1f1[2];
};
//SIG(1 S11622C1) C1{ FC2{ Fi[3]} FC3{ Fi FC2 Fi FC2 Fi FC2}[2]}



static void Test_S11622C1()
{
  {
    init_simple_test("S11622C1");
    S11622C1 lv;
    check2(sizeof(lv), 108, "sizeof(S11622C1)");
    check2(__alignof__(lv), 4, "__alignof__(S11622C1)");
    check_field_offset(lv, s11622c1f0, 0, "S11622C1.s11622c1f0");
    check_field_offset(lv, s11622c1f1, 12, "S11622C1.s11622c1f1");
  }
}
static Arrange_To_Call_Me vS11622C1(Test_S11622C1, "S11622C1", 108);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18260C2  {
  __tsi64 s18260c2f0;
  ::S580C22_nt s18260c2f1;
  void  mf18260c2(); // _ZN8S18260C29mf18260c2Ev
};
//SIG(-1 S18260C2) C1{ m FL FC2{ m Fi Fc Fi}}


void  S18260C2 ::mf18260c2(){}

static void Test_S18260C2()
{
  {
    init_simple_test("S18260C2");
    S18260C2 lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S18260C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18260C2)");
    check_field_offset(lv, s18260c2f0, 0, "S18260C2.s18260c2f0");
    check_field_offset(lv, s18260c2f1, 8, "S18260C2.s18260c2f1");
  }
}
static Arrange_To_Call_Me vS18260C2(Test_S18260C2, "S18260C2", ABISELECT(24,20));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18260C1  {
  void *s18260c1f0[3];
  ::S18260C2 s18260c1f1;
  char s18260c1f2[2];
  void  mf18260c1(); // _ZN8S18260C19mf18260c1Ev
};
//SIG(1 S18260C1) C1{ m Fp[3] FC2{ m FL FC3{ m Fi Fc Fi}} Fc[2]}


void  S18260C1 ::mf18260c1(){}

static void Test_S18260C1()
{
  {
    init_simple_test("S18260C1");
    S18260C1 lv;
    check2(sizeof(lv), ABISELECT(56,36), "sizeof(S18260C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18260C1)");
    check_field_offset(lv, s18260c1f0, 0, "S18260C1.s18260c1f0");
    check_field_offset(lv, s18260c1f1, ABISELECT(24,12), "S18260C1.s18260c1f1");
    check_field_offset(lv, s18260c1f2, ABISELECT(48,32), "S18260C1.s18260c1f2");
  }
}
static Arrange_To_Call_Me vS18260C1(Test_S18260C1, "S18260C1", ABISELECT(56,36));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5522C4  : S5523C4_nt {
  void *s5522c4f0;
  int s5522c4f1;
};
//SIG(-1 S5522C4) C1{ BC2{ Fi[3]} Fp Fi}



static void Test_S5522C4()
{
  extern Class_Descriptor cd_S5522C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S5522C4, buf);
    S5522C4 &lv = *(new (buf) S5522C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S5522C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5522C4)");
    check_base_class_offset(lv, (S5523C4_nt*), 0, "S5522C4");
    check_field_offset(lv, s5522c4f0, ABISELECT(16,12), "S5522C4.s5522c4f0");
    check_field_offset(lv, s5522c4f1, ABISELECT(24,16), "S5522C4.s5522c4f1");
    test_class_info(&lv, &cd_S5522C4);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5522C4(Test_S5522C4, "S5522C4", ABISELECT(32,20));

#else // __cplusplus

extern Class_Descriptor cd_S5523C4_nt;
static Base_Class bases_S5522C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5523C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S5522C4 = {  "S5522C4", // class name
  bases_S5522C4, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(32,20), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5522C3  : S5522C4 {
  void *s5522c3f0;
};
//SIG(-1 S5522C3) C1{ BC2{ BC3{ Fi[3]} Fp Fi} Fp}



static void Test_S5522C3()
{
  extern Class_Descriptor cd_S5522C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S5522C3, buf);
    S5522C3 &lv = *(new (buf) S5522C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S5522C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5522C3)");
    check_base_class_offset(lv, (S5523C4_nt*)(S5522C4*), 0, "S5522C3");
    check_base_class_offset(lv, (S5522C4*), 0, "S5522C3");
    check_field_offset(lv, s5522c3f0, ABISELECT(32,20), "S5522C3.s5522c3f0");
    test_class_info(&lv, &cd_S5522C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5522C3(Test_S5522C3, "S5522C3", ABISELECT(40,24));

#else // __cplusplus

extern Class_Descriptor cd_S5523C4_nt;
extern Class_Descriptor cd_S5522C4;
static Base_Class bases_S5522C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5523C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S5522C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S5522C3 = {  "S5522C3", // class name
  bases_S5522C3, 2,
  0, // no vftv
  0, //no vtt
  ABISELECT(40,24), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5522C1  : S8568C3_nt {
  ::S5522C3 s5522c1f0;
};
//SIG(1 S5522C1) C1{ BC2{ Fi[2]} FC3{ BC4{ BC5{ Fi[3]} Fp Fi} Fp}}



static void Test_S5522C1()
{
  extern Class_Descriptor cd_S5522C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S5522C1, buf);
    S5522C1 &lv = *(new (buf) S5522C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S5522C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5522C1)");
    check_base_class_offset(lv, (S8568C3_nt*), 0, "S5522C1");
    check_field_offset(lv, s5522c1f0, 8, "S5522C1.s5522c1f0");
    test_class_info(&lv, &cd_S5522C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5522C1(Test_S5522C1, "S5522C1", ABISELECT(48,32));

#else // __cplusplus

extern Class_Descriptor cd_S8568C3_nt;
static Base_Class bases_S5522C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8568C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S5522C1 = {  "S5522C1", // class name
  bases_S5522C1, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(48,32), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9458C2  {
  int s9458c2f0[4];
  virtual  ~S9458C2(); // _ZN7S9458C2D1Ev
  virtual void  v3(); // _ZN7S9458C22v3Ev
  virtual void  v4(); // _ZN7S9458C22v4Ev
  virtual void  v5(); // _ZN7S9458C22v5Ev
  virtual void  v6(); // _ZN7S9458C22v6Ev
  virtual void  v7(); // _ZN7S9458C22v7Ev
  S9458C2(); // tgen
};
//SIG(-1 S9458C2) C1{ vd v1 v2 v3 v4 v5 Fi[4]}


 S9458C2 ::~S9458C2(){ note_dtor("S9458C2", this);}
void  S9458C2 ::v3(){vfunc_called(this, "_ZN7S9458C22v3Ev");}
void  S9458C2 ::v4(){vfunc_called(this, "_ZN7S9458C22v4Ev");}
void  S9458C2 ::v5(){vfunc_called(this, "_ZN7S9458C22v5Ev");}
void  S9458C2 ::v6(){vfunc_called(this, "_ZN7S9458C22v6Ev");}
void  S9458C2 ::v7(){vfunc_called(this, "_ZN7S9458C22v7Ev");}
S9458C2 ::S9458C2(){ note_ctor("S9458C2", this);} // tgen

static void Test_S9458C2()
{
  extern Class_Descriptor cd_S9458C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,6)];
    init_test(&cd_S9458C2, buf);
    S9458C2 *dp, &lv = *(dp=new (buf) S9458C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S9458C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9458C2)");
    check_field_offset(lv, s9458c2f0, ABISELECT(8,4), "S9458C2.s9458c2f0");
    test_class_info(&lv, &cd_S9458C2);
    dp->~S9458C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9458C2(Test_S9458C2, "S9458C2", ABISELECT(24,20));

#else // __cplusplus

extern void _ZN7S9458C2C1Ev();
extern void _ZN7S9458C2D1Ev();
Name_Map name_map_S9458C2[] = {
  NSPAIR(_ZN7S9458C2C1Ev),
  NSPAIR(_ZN7S9458C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9458C2[];
extern void _ZN7S9458C2D1Ev();
extern void _ZN7S9458C2D0Ev();
extern void _ZN7S9458C22v3Ev();
extern void _ZN7S9458C22v4Ev();
extern void _ZN7S9458C22v5Ev();
extern void _ZN7S9458C22v6Ev();
extern void _ZN7S9458C22v7Ev();
static  VTBL_ENTRY vtc_S9458C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9458C2[0]),
  (VTBL_ENTRY)&_ZN7S9458C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9458C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9458C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9458C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9458C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9458C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9458C22v7Ev,
};
extern VTBL_ENTRY _ZTI7S9458C2[];
extern  VTBL_ENTRY _ZTV7S9458C2[];
Class_Descriptor cd_S9458C2 = {  "S9458C2", // class name
  0,0,//no base classes
  &(vtc_S9458C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,20), // object size
  NSPAIRA(_ZTI7S9458C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9458C2),9, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9458C1  : S9458C2 {
  virtual  ~S9458C1(); // _ZN7S9458C1D1Ev
  virtual void  v1(); // _ZN7S9458C12v1Ev
  virtual void  v2(); // _ZN7S9458C12v2Ev
  S9458C1(); // tgen
};
//SIG(1 S9458C1) C1{ BC2{ vd v3 v4 v5 v6 v7 Fi[4]} vd v1 v2}


 S9458C1 ::~S9458C1(){ note_dtor("S9458C1", this);}
void  S9458C1 ::v1(){vfunc_called(this, "_ZN7S9458C12v1Ev");}
void  S9458C1 ::v2(){vfunc_called(this, "_ZN7S9458C12v2Ev");}
S9458C1 ::S9458C1(){ note_ctor("S9458C1", this);} // tgen

static void Test_S9458C1()
{
  extern Class_Descriptor cd_S9458C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,6)];
    init_test(&cd_S9458C1, buf);
    S9458C1 *dp, &lv = *(dp=new (buf) S9458C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S9458C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9458C1)");
    check_base_class_offset(lv, (S9458C2*), 0, "S9458C1");
    test_class_info(&lv, &cd_S9458C1);
    dp->~S9458C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9458C1(Test_S9458C1, "S9458C1", ABISELECT(24,20));

#else // __cplusplus

extern void _ZN7S9458C1C1Ev();
extern void _ZN7S9458C1D1Ev();
Name_Map name_map_S9458C1[] = {
  NSPAIR(_ZN7S9458C1C1Ev),
  NSPAIR(_ZN7S9458C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9458C2;
extern VTBL_ENTRY _ZTI7S9458C2[];
extern  VTBL_ENTRY _ZTV7S9458C2[];
static Base_Class bases_S9458C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9458C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9458C1[];
extern void _ZN7S9458C1D1Ev();
extern void _ZN7S9458C1D0Ev();
extern void _ZN7S9458C22v3Ev();
extern void _ZN7S9458C22v4Ev();
extern void _ZN7S9458C22v5Ev();
extern void _ZN7S9458C22v6Ev();
extern void _ZN7S9458C22v7Ev();
extern void _ZN7S9458C12v1Ev();
extern void _ZN7S9458C12v2Ev();
static  VTBL_ENTRY vtc_S9458C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9458C1[0]),
  (VTBL_ENTRY)&_ZN7S9458C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9458C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9458C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9458C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9458C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9458C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9458C22v7Ev,
  (VTBL_ENTRY)&_ZN7S9458C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9458C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S9458C1[];
extern  VTBL_ENTRY _ZTV7S9458C1[];
Class_Descriptor cd_S9458C1 = {  "S9458C1", // class name
  bases_S9458C1, 1,
  &(vtc_S9458C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,20), // object size
  NSPAIRA(_ZTI7S9458C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9458C1),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15543C1  {
  ::S18423C26 s15543c1f0;
  void *s15543c1f1[2];
  void  mf15543c1(); // _ZN8S15543C19mf15543c1Ev
};
//SIG(1 S15543C1) C1{ m FC2{ Fi FC3{ m Fp Fi FC4{ m}} Fi} Fp[2]}


void  S15543C1 ::mf15543c1(){}

static void Test_S15543C1()
{
  {
    init_simple_test("S15543C1");
    S15543C1 lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S15543C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15543C1)");
    check_field_offset(lv, s15543c1f0, 0, "S15543C1.s15543c1f0");
    check_field_offset(lv, s15543c1f1, ABISELECT(32,20), "S15543C1.s15543c1f1");
  }
}
static Arrange_To_Call_Me vS15543C1(Test_S15543C1, "S15543C1", ABISELECT(48,28));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12078C1  {
  ::S8611C4_nt s12078c1f0;
  ::S8611C4_nt s12078c1f1;
  int s12078c1f2;
  ::S8611C4_nt s12078c1f3;
  ::S40C35_nt s12078c1f4;
};
//SIG(1 S12078C1) C1{ FC2{ m Fi[3]} FC2 Fi FC2 FC3{ m Fi[4]}}



static void Test_S12078C1()
{
  {
    init_simple_test("S12078C1");
    S12078C1 lv;
    check2(sizeof(lv), 56, "sizeof(S12078C1)");
    check2(__alignof__(lv), 4, "__alignof__(S12078C1)");
    check_field_offset(lv, s12078c1f0, 0, "S12078C1.s12078c1f0");
    check_field_offset(lv, s12078c1f1, 12, "S12078C1.s12078c1f1");
    check_field_offset(lv, s12078c1f2, 24, "S12078C1.s12078c1f2");
    check_field_offset(lv, s12078c1f3, 28, "S12078C1.s12078c1f3");
    check_field_offset(lv, s12078c1f4, 40, "S12078C1.s12078c1f4");
  }
}
static Arrange_To_Call_Me vS12078C1(Test_S12078C1, "S12078C1", 56);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11002C2  {
  void *s11002c2f0;
  short s11002c2f1;
};
//SIG(1 S11002C2) C1{ Fp Fs}



static void Test_S11002C2()
{
  {
    init_simple_test("S11002C2");
    S11002C2 lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S11002C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11002C2)");
    check_field_offset(lv, s11002c2f0, 0, "S11002C2.s11002c2f0");
    check_field_offset(lv, s11002c2f1, ABISELECT(8,4), "S11002C2.s11002c2f1");
  }
}
static Arrange_To_Call_Me vS11002C2(Test_S11002C2, "S11002C2", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11002C1  {
  char s11002c1f0[7];
  short s11002c1f1[6];
  ::S11002C2 s11002c1f2[5];
  void *s11002c1f3[3];
  int s11002c1f4;
};
//SIG(1 S11002C1) C1{ Fc[7] Fs[6] FC2{ Fp Fs}[5] Fp[3] Fi}



static void Test_S11002C1()
{
  {
    init_simple_test("S11002C1");
    S11002C1 lv;
    check2(sizeof(lv), ABISELECT(136,76), "sizeof(S11002C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11002C1)");
    check_field_offset(lv, s11002c1f0, 0, "S11002C1.s11002c1f0");
    check_field_offset(lv, s11002c1f1, 8, "S11002C1.s11002c1f1");
    check_field_offset(lv, s11002c1f2, ABISELECT(24,20), "S11002C1.s11002c1f2");
    check_field_offset(lv, s11002c1f3, ABISELECT(104,60), "S11002C1.s11002c1f3");
    check_field_offset(lv, s11002c1f4, ABISELECT(128,72), "S11002C1.s11002c1f4");
  }
}
static Arrange_To_Call_Me vS11002C1(Test_S11002C1, "S11002C1", ABISELECT(136,76));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11357C1  {
  ::S11622C3 s11357c1f0[2];
};
//SIG(1 S11357C1) C1{ FC2{ Fi FC3{ Fi[3]} Fi FC3 Fi FC3}[2]}



static void Test_S11357C1()
{
  {
    init_simple_test("S11357C1");
    S11357C1 lv;
    check2(sizeof(lv), 96, "sizeof(S11357C1)");
    check2(__alignof__(lv), 4, "__alignof__(S11357C1)");
    check_field_offset(lv, s11357c1f0, 0, "S11357C1.s11357c1f0");
  }
}
static Arrange_To_Call_Me vS11357C1(Test_S11357C1, "S11357C1", 96);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12358C1  {
  int s12358c1f0;
  ::S13532C2 s12358c1f1;
  int s12358c1f2;
  char s12358c1f3[32];
};
//SIG(1 S12358C1) C1{ Fi FC2{ Fc[4] Fi Fc[512]} Fi Fc[32]}



static void Test_S12358C1()
{
  {
    init_simple_test("S12358C1");
    S12358C1 lv;
    check2(sizeof(lv), 560, "sizeof(S12358C1)");
    check2(__alignof__(lv), 4, "__alignof__(S12358C1)");
    check_field_offset(lv, s12358c1f0, 0, "S12358C1.s12358c1f0");
    check_field_offset(lv, s12358c1f1, 4, "S12358C1.s12358c1f1");
    check_field_offset(lv, s12358c1f2, 524, "S12358C1.s12358c1f2");
    check_field_offset(lv, s12358c1f3, 528, "S12358C1.s12358c1f3");
  }
}
static Arrange_To_Call_Me vS12358C1(Test_S12358C1, "S12358C1", 560);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S985C3  : S40C13_nt {
};
//SIG(-1 S985C3) C1{ BC2{ m Fi}}



static void Test_S985C3()
{
  extern Class_Descriptor cd_S985C3;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S985C3, buf);
    S985C3 &lv = *(new (buf) S985C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S985C3)");
    check2(__alignof__(lv), 4, "__alignof__(S985C3)");
    check_base_class_offset(lv, (S40C13_nt*), 0, "S985C3");
    test_class_info(&lv, &cd_S985C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS985C3(Test_S985C3, "S985C3", 4);

#else // __cplusplus

extern Class_Descriptor cd_S40C13_nt;
extern VTBL_ENTRY _ZTI9S40C13_nt[];
static Base_Class bases_S985C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S985C3 = {  "S985C3", // class name
  bases_S985C3, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S985C2  : S985C3 {
  unsigned int s985c2f0:1;
  unsigned int s985c2f1:1;
  int s985c2f2:4;
};
//SIG(-1 S985C2) C1{ BC2{ BC3{ m Fi}} Fi:1 Fi:1 Fi:4}



static void Test_S985C2()
{
  extern Class_Descriptor cd_S985C2;
  void *lvp;
  {
    int buf[3];
    init_test(&cd_S985C2, buf);
    S985C2 &lv = *(new (buf) S985C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 8, "sizeof(S985C2)");
    check2(__alignof__(lv), 4, "__alignof__(S985C2)");
    check_base_class_offset(lv, (S40C13_nt*)(S985C3*), 0, "S985C2");
    check_base_class_offset(lv, (S985C3*), 0, "S985C2");
    set_bf_and_test(lv, s985c2f0, 4, 0, 1, 1, "S985C2");
    set_bf_and_test(lv, s985c2f1, 4, 1, 1, 1, "S985C2");
    set_bf_and_test(lv, s985c2f2, 4, 2, 4, 1, "S985C2");
    set_bf_and_test(lv, s985c2f2, 4, 2, 4, hide_sll(1LL<<3), "S985C2");
    test_class_info(&lv, &cd_S985C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS985C2(Test_S985C2, "S985C2", 8);

#else // __cplusplus

extern Class_Descriptor cd_S40C13_nt;
extern VTBL_ENTRY _ZTI9S40C13_nt[];
extern Class_Descriptor cd_S985C3;
static Base_Class bases_S985C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S985C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S985C2 = {  "S985C2", // class name
  bases_S985C2, 2,
  0, // no vftv
  0, //no vtt
  8, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S985C1  : S985C2 {
};
//SIG(1 S985C1) C1{ BC2{ BC3{ BC4{ m Fi}} Fi:1 Fi:1 Fi:4}}



static void Test_S985C1()
{
  extern Class_Descriptor cd_S985C1;
  void *lvp;
  {
    int buf[3];
    init_test(&cd_S985C1, buf);
    S985C1 &lv = *(new (buf) S985C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), 8, "sizeof(S985C1)");
    check2(__alignof__(lv), 4, "__alignof__(S985C1)");
    check_base_class_offset(lv, (S40C13_nt*)(S985C3*)(S985C2*), 0, "S985C1");
    check_base_class_offset(lv, (S985C3*)(S985C2*), 0, "S985C1");
    check_base_class_offset(lv, (S985C2*), 0, "S985C1");
    test_class_info(&lv, &cd_S985C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS985C1(Test_S985C1, "S985C1", 8);

#else // __cplusplus

extern Class_Descriptor cd_S40C13_nt;
extern VTBL_ENTRY _ZTI9S40C13_nt[];
extern Class_Descriptor cd_S985C3;
extern Class_Descriptor cd_S985C2;
static Base_Class bases_S985C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S985C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S985C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S985C1 = {  "S985C1", // class name
  bases_S985C1, 3,
  0, // no vftv
  0, //no vtt
  8, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18286C1  {
  void *s18286c1f0[3];
  ::S18423C15_nt s18286c1f1;
  char s18286c1f2[2];
  void  mf18286c1(); // _ZN8S18286C19mf18286c1Ev
};
//SIG(1 S18286C1) C1{ m Fp[3] FC2{ m Fp Fi FC3{ m}} Fc[2]}


void  S18286C1 ::mf18286c1(){}

static void Test_S18286C1()
{
  {
    init_simple_test("S18286C1");
    S18286C1 lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S18286C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18286C1)");
    check_field_offset(lv, s18286c1f0, 0, "S18286C1.s18286c1f0");
    check_field_offset(lv, s18286c1f1, ABISELECT(24,12), "S18286C1.s18286c1f1");
    check_field_offset(lv, s18286c1f2, ABISELECT(40,24), "S18286C1.s18286c1f2");
  }
}
static Arrange_To_Call_Me vS18286C1(Test_S18286C1, "S18286C1", ABISELECT(48,28));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12584C1  {
  int s12584c1f0;
  ::S18423C15_nt s12584c1f1;
  ::S18423C15_nt s12584c1f2;
  int s12584c1f3;
  __tsi64 s12584c1f4;
};
//SIG(1 S12584C1) C1{ Fi FC2{ m Fp Fi FC3{ m}} FC2 Fi FL}



static void Test_S12584C1()
{
  {
    init_simple_test("S12584C1");
    S12584C1 lv;
    check2(sizeof(lv), ABISELECT(56,40), "sizeof(S12584C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S12584C1)");
    check_field_offset(lv, s12584c1f0, 0, "S12584C1.s12584c1f0");
    check_field_offset(lv, s12584c1f1, ABISELECT(8,4), "S12584C1.s12584c1f1");
    check_field_offset(lv, s12584c1f2, ABISELECT(24,16), "S12584C1.s12584c1f2");
    check_field_offset(lv, s12584c1f3, ABISELECT(40,28), "S12584C1.s12584c1f3");
    check_field_offset(lv, s12584c1f4, ABISELECT(48,32), "S12584C1.s12584c1f4");
  }
}
static Arrange_To_Call_Me vS12584C1(Test_S12584C1, "S12584C1", ABISELECT(56,40));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12976C1  {
  int s12976c1f0[19];
  char s12976c1f1[32];
  int s12976c1f2;
  ::S5523C4_nt s12976c1f3[8];
};
//SIG(1 S12976C1) C1{ Fi[19] Fc[32] Fi FC2{ Fi[3]}[8]}



static void Test_S12976C1()
{
  {
    init_simple_test("S12976C1");
    S12976C1 lv;
    check2(sizeof(lv), 208, "sizeof(S12976C1)");
    check2(__alignof__(lv), 4, "__alignof__(S12976C1)");
    check_field_offset(lv, s12976c1f0, 0, "S12976C1.s12976c1f0");
    check_field_offset(lv, s12976c1f1, 76, "S12976C1.s12976c1f1");
    check_field_offset(lv, s12976c1f2, 108, "S12976C1.s12976c1f2");
    check_field_offset(lv, s12976c1f3, 112, "S12976C1.s12976c1f3");
  }
}
static Arrange_To_Call_Me vS12976C1(Test_S12976C1, "S12976C1", 208);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21688C1  {
  int s21688c1f0[5];
  ::S18423C15_nt s21688c1f1;
  void  mf21688c1(); // _ZN8S21688C19mf21688c1Ev
  virtual  ~S21688C1(); // _ZN8S21688C1D1Ev
  S21688C1(); // tgen
};
//SIG(1 S21688C1) C1{ vd m Fi[5] FC2{ m Fp Fi FC3{ m}}}


void  S21688C1 ::mf21688c1(){}
 S21688C1 ::~S21688C1(){ note_dtor("S21688C1", this);}
S21688C1 ::S21688C1(){ note_ctor("S21688C1", this);} // tgen

static void Test_S21688C1()
{
  extern Class_Descriptor cd_S21688C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,10)];
    init_test(&cd_S21688C1, buf);
    S21688C1 *dp, &lv = *(dp=new (buf) S21688C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,36), "sizeof(S21688C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21688C1)");
    check_field_offset(lv, s21688c1f0, ABISELECT(8,4), "S21688C1.s21688c1f0");
    check_field_offset(lv, s21688c1f1, ABISELECT(32,24), "S21688C1.s21688c1f1");
    test_class_info(&lv, &cd_S21688C1);
    dp->~S21688C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21688C1(Test_S21688C1, "S21688C1", ABISELECT(48,36));

#else // __cplusplus

extern void _ZN8S21688C1C1Ev();
extern void _ZN8S21688C1D1Ev();
Name_Map name_map_S21688C1[] = {
  NSPAIR(_ZN8S21688C1C1Ev),
  NSPAIR(_ZN8S21688C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21688C1[];
extern void _ZN8S21688C1D1Ev();
extern void _ZN8S21688C1D0Ev();
static  VTBL_ENTRY vtc_S21688C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21688C1[0]),
  (VTBL_ENTRY)&_ZN8S21688C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21688C1D0Ev,
};
extern VTBL_ENTRY _ZTI8S21688C1[];
extern  VTBL_ENTRY _ZTV8S21688C1[];
Class_Descriptor cd_S21688C1 = {  "S21688C1", // class name
  0,0,//no base classes
  &(vtc_S21688C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,36), // object size
  NSPAIRA(_ZTI8S21688C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21688C1),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12132C1  {
  ::S18423C15_nt s12132c1f0;
  ::S18423C15_nt s12132c1f1;
  ::S18423C15_nt s12132c1f2;
  int s12132c1f3;
};
//SIG(1 S12132C1) C1{ FC2{ m Fp Fi FC3{ m}} FC2 FC2 Fi}



static void Test_S12132C1()
{
  {
    init_simple_test("S12132C1");
    S12132C1 lv;
    check2(sizeof(lv), ABISELECT(56,40), "sizeof(S12132C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S12132C1)");
    check_field_offset(lv, s12132c1f0, 0, "S12132C1.s12132c1f0");
    check_field_offset(lv, s12132c1f1, ABISELECT(16,12), "S12132C1.s12132c1f1");
    check_field_offset(lv, s12132c1f2, ABISELECT(32,24), "S12132C1.s12132c1f2");
    check_field_offset(lv, s12132c1f3, ABISELECT(48,36), "S12132C1.s12132c1f3");
  }
}
static Arrange_To_Call_Me vS12132C1(Test_S12132C1, "S12132C1", ABISELECT(56,40));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14483C3  {
  char s14483c3f0[278];
  void  mf14483c3(); // _ZN8S14483C39mf14483c3Ev
};
//SIG(-1 S14483C3) C1{ m Fc[278]}


void  S14483C3 ::mf14483c3(){}

static void Test_S14483C3()
{
  {
    init_simple_test("S14483C3");
    S14483C3 lv;
    check2(sizeof(lv), 278, "sizeof(S14483C3)");
    check2(__alignof__(lv), 1, "__alignof__(S14483C3)");
    check_field_offset(lv, s14483c3f0, 0, "S14483C3.s14483c3f0");
  }
}
static Arrange_To_Call_Me vS14483C3(Test_S14483C3, "S14483C3", 278);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14483C2  {
  ::S14483C3 s14483c2f0;
  int s14483c2f1;
  void  mf14483c2(); // _ZN8S14483C29mf14483c2Ev
};
//SIG(-1 S14483C2) C1{ m FC2{ m Fc[278]} Fi}


void  S14483C2 ::mf14483c2(){}

static void Test_S14483C2()
{
  {
    init_simple_test("S14483C2");
    S14483C2 lv;
    check2(sizeof(lv), 284, "sizeof(S14483C2)");
    check2(__alignof__(lv), 4, "__alignof__(S14483C2)");
    check_field_offset(lv, s14483c2f0, 0, "S14483C2.s14483c2f0");
    check_field_offset(lv, s14483c2f1, 280, "S14483C2.s14483c2f1");
  }
}
static Arrange_To_Call_Me vS14483C2(Test_S14483C2, "S14483C2", 284);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14483C1  {
  void *s14483c1f0[2];
  ::S14483C2 s14483c1f1;
};
//SIG(1 S14483C1) C1{ Fp[2] FC2{ m FC3{ m Fc[278]} Fi}}



static void Test_S14483C1()
{
  {
    init_simple_test("S14483C1");
    S14483C1 lv;
    check2(sizeof(lv), ABISELECT(304,292), "sizeof(S14483C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14483C1)");
    check_field_offset(lv, s14483c1f0, 0, "S14483C1.s14483c1f0");
    check_field_offset(lv, s14483c1f1, ABISELECT(16,8), "S14483C1.s14483c1f1");
  }
}
static Arrange_To_Call_Me vS14483C1(Test_S14483C1, "S14483C1", ABISELECT(304,292));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13708C3  {
  __tsi64 s13708c3f0;
  void *s13708c3f1[2];
};
//SIG(-1 S13708C3) C1{ FL Fp[2]}



static void Test_S13708C3()
{
  {
    init_simple_test("S13708C3");
    S13708C3 lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S13708C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13708C3)");
    check_field_offset(lv, s13708c3f0, 0, "S13708C3.s13708c3f0");
    check_field_offset(lv, s13708c3f1, 8, "S13708C3.s13708c3f1");
  }
}
static Arrange_To_Call_Me vS13708C3(Test_S13708C3, "S13708C3", ABISELECT(24,16));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13708C1  {
  __tsi64 s13708c1f0;
  ::S13686C7 s13708c1f1;
  ::S13708C3 s13708c1f2;
};
//SIG(1 S13708C1) C1{ FL FC2{ FL Fp[2]} FC3{ FL Fp[2]}}



static void Test_S13708C1()
{
  {
    init_simple_test("S13708C1");
    S13708C1 lv;
    check2(sizeof(lv), ABISELECT(56,40), "sizeof(S13708C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13708C1)");
    check_field_offset(lv, s13708c1f0, 0, "S13708C1.s13708c1f0");
    check_field_offset(lv, s13708c1f1, 8, "S13708C1.s13708c1f1");
    check_field_offset(lv, s13708c1f2, ABISELECT(32,24), "S13708C1.s13708c1f2");
  }
}
static Arrange_To_Call_Me vS13708C1(Test_S13708C1, "S13708C1", ABISELECT(56,40));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6306C1  : S7856C24 {
  ::S18423C15_nt s6306c1f0;
  virtual  ~S6306C1(); // _ZN7S6306C1D1Ev
  S6306C1(); // tgen
};
//SIG(1 S6306C1) C1{ BC2{ m} vd FC3{ m Fp Fi FC2}}


 S6306C1 ::~S6306C1(){ note_dtor("S6306C1", this);}
S6306C1 ::S6306C1(){ note_ctor("S6306C1", this);} // tgen

static void Test_S6306C1()
{
  extern Class_Descriptor cd_S6306C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S6306C1, buf);
    S6306C1 *dp, &lv = *(dp=new (buf) S6306C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S6306C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6306C1)");
    check_base_class_offset(lv, (S7856C24*), 0, "S6306C1");
    check_field_offset(lv, s6306c1f0, ABISELECT(8,4), "S6306C1.s6306c1f0");
    test_class_info(&lv, &cd_S6306C1);
    dp->~S6306C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6306C1(Test_S6306C1, "S6306C1", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN7S6306C1C1Ev();
extern void _ZN7S6306C1D1Ev();
Name_Map name_map_S6306C1[] = {
  NSPAIR(_ZN7S6306C1C1Ev),
  NSPAIR(_ZN7S6306C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
static Base_Class bases_S6306C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6306C1[];
extern void _ZN7S6306C1D1Ev();
extern void _ZN7S6306C1D0Ev();
static  VTBL_ENTRY vtc_S6306C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6306C1[0]),
  (VTBL_ENTRY)&_ZN7S6306C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6306C1D0Ev,
};
extern VTBL_ENTRY _ZTI7S6306C1[];
extern  VTBL_ENTRY _ZTV7S6306C1[];
Class_Descriptor cd_S6306C1 = {  "S6306C1", // class name
  bases_S6306C1, 1,
  &(vtc_S6306C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI7S6306C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6306C1),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18024C1  {
  void *s18024c1f0[2];
  ::S18423C15_nt s18024c1f1;
  void  mf18024c1(); // _ZN8S18024C19mf18024c1Ev
};
//SIG(1 S18024C1) C1{ m Fp[2] FC2{ m Fp Fi FC3{ m}}}


void  S18024C1 ::mf18024c1(){}

static void Test_S18024C1()
{
  {
    init_simple_test("S18024C1");
    S18024C1 lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S18024C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18024C1)");
    check_field_offset(lv, s18024c1f0, 0, "S18024C1.s18024c1f0");
    check_field_offset(lv, s18024c1f1, ABISELECT(16,8), "S18024C1.s18024c1f1");
  }
}
static Arrange_To_Call_Me vS18024C1(Test_S18024C1, "S18024C1", ABISELECT(32,20));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18702C1  {
  ::S7445C11 s18702c1f0[2];
  virtual void  v1(); // _ZN8S18702C12v1Ev
  virtual void  v2(); // _ZN8S18702C12v2Ev
  virtual void  v3(); // _ZN8S18702C12v3Ev
  virtual void  v4(); // _ZN8S18702C12v4Ev
  ~S18702C1(); // tgen
  S18702C1(); // tgen
};
//SIG(1 S18702C1) C1{ v1 v2 v3 v4 FU2{ m FL Fp}[2]}


void  S18702C1 ::v1(){vfunc_called(this, "_ZN8S18702C12v1Ev");}
void  S18702C1 ::v2(){vfunc_called(this, "_ZN8S18702C12v2Ev");}
void  S18702C1 ::v3(){vfunc_called(this, "_ZN8S18702C12v3Ev");}
void  S18702C1 ::v4(){vfunc_called(this, "_ZN8S18702C12v4Ev");}
S18702C1 ::~S18702C1(){ note_dtor("S18702C1", this);} // tgen
S18702C1 ::S18702C1(){ note_ctor("S18702C1", this);} // tgen

static void Test_S18702C1()
{
  extern Class_Descriptor cd_S18702C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,6)];
    init_test(&cd_S18702C1, buf);
    S18702C1 *dp, &lv = *(dp=new (buf) S18702C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S18702C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18702C1)");
    check_field_offset(lv, s18702c1f0, ABISELECT(8,4), "S18702C1.s18702c1f0");
    test_class_info(&lv, &cd_S18702C1);
    dp->~S18702C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18702C1(Test_S18702C1, "S18702C1", ABISELECT(24,20));

#else // __cplusplus

extern void _ZN8S18702C1C1Ev();
extern void _ZN8S18702C1D1Ev();
Name_Map name_map_S18702C1[] = {
  NSPAIR(_ZN8S18702C1C1Ev),
  NSPAIR(_ZN8S18702C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18702C1[];
extern void _ZN8S18702C12v1Ev();
extern void _ZN8S18702C12v2Ev();
extern void _ZN8S18702C12v3Ev();
extern void _ZN8S18702C12v4Ev();
static  VTBL_ENTRY vtc_S18702C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18702C1[0]),
  (VTBL_ENTRY)&_ZN8S18702C12v1Ev,
  (VTBL_ENTRY)&_ZN8S18702C12v2Ev,
  (VTBL_ENTRY)&_ZN8S18702C12v3Ev,
  (VTBL_ENTRY)&_ZN8S18702C12v4Ev,
};
extern VTBL_ENTRY _ZTI8S18702C1[];
extern  VTBL_ENTRY _ZTV8S18702C1[];
Class_Descriptor cd_S18702C1 = {  "S18702C1", // class name
  0,0,//no base classes
  &(vtc_S18702C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,20), // object size
  NSPAIRA(_ZTI8S18702C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18702C1),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S16912C1  {
  int s16912c1f0;
  void *s16912c1f1;
  ::S1868C17 s16912c1f2;
  ::S40C13_nt s16912c1f3;
  void  mf16912c1(); // _ZN8S16912C19mf16912c1Ev
};
//SIG(1 S16912C1) C1{ m Fi Fp FC2{ m Fp} FC3{ m Fi}}


void  S16912C1 ::mf16912c1(){}

static void Test_S16912C1()
{
  {
    init_simple_test("S16912C1");
    S16912C1 lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S16912C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16912C1)");
    check_field_offset(lv, s16912c1f0, 0, "S16912C1.s16912c1f0");
    check_field_offset(lv, s16912c1f1, ABISELECT(8,4), "S16912C1.s16912c1f1");
    check_field_offset(lv, s16912c1f2, ABISELECT(16,8), "S16912C1.s16912c1f2");
    check_field_offset(lv, s16912c1f3, ABISELECT(24,12), "S16912C1.s16912c1f3");
  }
}
static Arrange_To_Call_Me vS16912C1(Test_S16912C1, "S16912C1", ABISELECT(32,16));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19924C2  {
  __tsi64 s19924c2f0[8];
  void *s19924c2f1[5];
  short s19924c2f2;
  virtual void  v1(); // _ZN8S19924C22v1Ev
  ~S19924C2(); // tgen
  S19924C2(); // tgen
};
//SIG(-1 S19924C2) C1{ v1 FL[8] Fp[5] Fs}


void  S19924C2 ::v1(){vfunc_called(this, "_ZN8S19924C22v1Ev");}
S19924C2 ::~S19924C2(){ note_dtor("S19924C2", this);} // tgen
S19924C2 ::S19924C2(){ note_ctor("S19924C2", this);} // tgen

static void Test_S19924C2()
{
  extern Class_Descriptor cd_S19924C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,24)];
    init_test(&cd_S19924C2, buf);
    S19924C2 *dp, &lv = *(dp=new (buf) S19924C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,92), "sizeof(S19924C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19924C2)");
    check_field_offset(lv, s19924c2f0, ABISELECT(8,4), "S19924C2.s19924c2f0");
    check_field_offset(lv, s19924c2f1, ABISELECT(72,68), "S19924C2.s19924c2f1");
    check_field_offset(lv, s19924c2f2, ABISELECT(112,88), "S19924C2.s19924c2f2");
    test_class_info(&lv, &cd_S19924C2);
    dp->~S19924C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19924C2(Test_S19924C2, "S19924C2", ABISELECT(120,92));

#else // __cplusplus

extern void _ZN8S19924C2C1Ev();
extern void _ZN8S19924C2D1Ev();
Name_Map name_map_S19924C2[] = {
  NSPAIR(_ZN8S19924C2C1Ev),
  NSPAIR(_ZN8S19924C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19924C2[];
extern void _ZN8S19924C22v1Ev();
static  VTBL_ENTRY vtc_S19924C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19924C2[0]),
  (VTBL_ENTRY)&_ZN8S19924C22v1Ev,
};
extern VTBL_ENTRY _ZTI8S19924C2[];
extern  VTBL_ENTRY _ZTV8S19924C2[];
Class_Descriptor cd_S19924C2 = {  "S19924C2", // class name
  0,0,//no base classes
  &(vtc_S19924C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(120,92), // object size
  NSPAIRA(_ZTI8S19924C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19924C2),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19924C1  : virtual S19924C2 {
  ::S19924C2 s19924c1f0;
  ~S19924C1(); // tgen
  S19924C1(); // tgen
};
//SIG(1 S19924C1) C1{ VBC2{ v1 FL[8] Fp[5] Fs} FC2}


S19924C1 ::~S19924C1(){ note_dtor("S19924C1", this);} // tgen
S19924C1 ::S19924C1(){ note_ctor("S19924C1", this);} // tgen

static void Test_S19924C1()
{
  extern Class_Descriptor cd_S19924C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(32,48)];
    init_test(&cd_S19924C1, buf);
    S19924C1 *dp, &lv = *(dp=new (buf) S19924C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(248,188), "sizeof(S19924C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19924C1)");
    check_base_class_offset(lv, (S19924C2*), ABISELECT(128,96), "S19924C1");
    check_field_offset(lv, s19924c1f0, ABISELECT(8,4), "S19924C1.s19924c1f0");
    test_class_info(&lv, &cd_S19924C1);
    dp->~S19924C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19924C1(Test_S19924C1, "S19924C1", ABISELECT(248,188));

#else // __cplusplus

extern void _ZN8S19924C1C1Ev();
extern void _ZN8S19924C1D1Ev();
Name_Map name_map_S19924C1[] = {
  NSPAIR(_ZN8S19924C1C1Ev),
  NSPAIR(_ZN8S19924C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19924C2;
extern VTBL_ENTRY _ZTI8S19924C2[];
extern  VTBL_ENTRY _ZTV8S19924C2[];
static Base_Class bases_S19924C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19924C2,    ABISELECT(128,96), //bcp->offset
    3, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19924C1[];
extern void _ZN8S19924C22v1Ev();
static  VTBL_ENTRY vtc_S19924C1[] = {
  ABISELECT(128,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S19924C1[0]),
  0,
  ABISELECT(-128,-96),
  (VTBL_ENTRY)&(_ZTI8S19924C1[0]),
  (VTBL_ENTRY)&_ZN8S19924C22v1Ev,
};
extern VTBL_ENTRY _ZTV8S19924C1[];
static  VTT_ENTRY vtt_S19924C1[] = {
  {&(_ZTV8S19924C1[3]),  3,7},
  {&(_ZTV8S19924C1[6]),  6,7},
};
extern VTBL_ENTRY _ZTI8S19924C1[];
extern  VTBL_ENTRY _ZTV8S19924C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19924C1[];
Class_Descriptor cd_S19924C1 = {  "S19924C1", // class name
  bases_S19924C1, 1,
  &(vtc_S19924C1[0]), // expected_vtbl_contents
  &(vtt_S19924C1[0]), // expected_vtt_contents
  ABISELECT(248,188), // object size
  NSPAIRA(_ZTI8S19924C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19924C1),7, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19924C1),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18736C1  {
  void *s18736c1f0;
  long double s18736c1f1[2];
  long s18736c1f2;
  virtual void  v1(); // _ZN8S18736C12v1Ev
  virtual void  v2(); // _ZN8S18736C12v2Ev
  virtual void  v3(); // _ZN8S18736C12v3Ev
  virtual void  v4(); // _ZN8S18736C12v4Ev
  virtual void  v5(); // _ZN8S18736C12v5Ev
  ~S18736C1(); // tgen
  S18736C1(); // tgen
};
//SIG(1 S18736C1) C1{ v1 v2 v3 v4 v5 Fp FD[2] Fl}


void  S18736C1 ::v1(){vfunc_called(this, "_ZN8S18736C12v1Ev");}
void  S18736C1 ::v2(){vfunc_called(this, "_ZN8S18736C12v2Ev");}
void  S18736C1 ::v3(){vfunc_called(this, "_ZN8S18736C12v3Ev");}
void  S18736C1 ::v4(){vfunc_called(this, "_ZN8S18736C12v4Ev");}
void  S18736C1 ::v5(){vfunc_called(this, "_ZN8S18736C12v5Ev");}
S18736C1 ::~S18736C1(){ note_dtor("S18736C1", this);} // tgen
S18736C1 ::S18736C1(){ note_ctor("S18736C1", this);} // tgen

static void Test_S18736C1()
{
  extern Class_Descriptor cd_S18736C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5,10)];
    init_test(&cd_S18736C1, buf);
    S18736C1 *dp, &lv = *(dp=new (buf) S18736C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S18736C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S18736C1)");
    check_field_offset(lv, s18736c1f0, ABISELECT(8,4), "S18736C1.s18736c1f0");
    check_field_offset(lv, s18736c1f1, ABISELECT(16,8), "S18736C1.s18736c1f1");
    check_field_offset(lv, s18736c1f2, ABISELECT(48,32), "S18736C1.s18736c1f2");
    test_class_info(&lv, &cd_S18736C1);
    dp->~S18736C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18736C1(Test_S18736C1, "S18736C1", ABISELECT(64,36));

#else // __cplusplus

extern void _ZN8S18736C1C1Ev();
extern void _ZN8S18736C1D1Ev();
Name_Map name_map_S18736C1[] = {
  NSPAIR(_ZN8S18736C1C1Ev),
  NSPAIR(_ZN8S18736C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18736C1[];
extern void _ZN8S18736C12v1Ev();
extern void _ZN8S18736C12v2Ev();
extern void _ZN8S18736C12v3Ev();
extern void _ZN8S18736C12v4Ev();
extern void _ZN8S18736C12v5Ev();
static  VTBL_ENTRY vtc_S18736C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18736C1[0]),
  (VTBL_ENTRY)&_ZN8S18736C12v1Ev,
  (VTBL_ENTRY)&_ZN8S18736C12v2Ev,
  (VTBL_ENTRY)&_ZN8S18736C12v3Ev,
  (VTBL_ENTRY)&_ZN8S18736C12v4Ev,
  (VTBL_ENTRY)&_ZN8S18736C12v5Ev,
};
extern VTBL_ENTRY _ZTI8S18736C1[];
extern  VTBL_ENTRY _ZTV8S18736C1[];
Class_Descriptor cd_S18736C1 = {  "S18736C1", // class name
  0,0,//no base classes
  &(vtc_S18736C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI8S18736C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18736C1),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7473C2  : virtual S7856C24 , S7856C15 , virtual S7856C12 {
  ~S7473C2(); // tgen
  S7473C2(); // tgen
};
//SIG(-1 S7473C2) C1{ VBC2{ m} BC3{ m} VBC4{ m}}


S7473C2 ::~S7473C2(){ note_dtor("S7473C2", this);} // tgen
S7473C2 ::S7473C2(){ note_ctor("S7473C2", this);} // tgen

static void Test_S7473C2()
{
  extern Class_Descriptor cd_S7473C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7473C2, buf);
    S7473C2 *dp, &lv = *(dp=new (buf) S7473C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7473C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7473C2)");
    check_base_class_offset(lv, (S7856C24*), 0, "S7473C2");
    check_base_class_offset(lv, (S7856C15*), 0, "S7473C2");
    check_base_class_offset(lv, (S7856C12*), 0, "S7473C2");
    test_class_info(&lv, &cd_S7473C2);
    dp->~S7473C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7473C2(Test_S7473C2, "S7473C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7473C2C1Ev();
extern void _ZN7S7473C2D1Ev();
Name_Map name_map_S7473C2[] = {
  NSPAIR(_ZN7S7473C2C1Ev),
  NSPAIR(_ZN7S7473C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
static Base_Class bases_S7473C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7473C2[];
static  VTBL_ENTRY vtc_S7473C2[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7473C2[0]),
};
extern VTBL_ENTRY _ZTV7S7473C2[];
static  VTT_ENTRY vtt_S7473C2[] = {
  {&(_ZTV7S7473C2[4]),  4,4},
};
extern VTBL_ENTRY _ZTI7S7473C2[];
extern  VTBL_ENTRY _ZTV7S7473C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7473C2[];
Class_Descriptor cd_S7473C2 = {  "S7473C2", // class name
  bases_S7473C2, 3,
  &(vtc_S7473C2[0]), // expected_vtbl_contents
  &(vtt_S7473C2[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7473C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7473C2),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7473C2),1, //virtual table table var
  0, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7473C1  : S7473C2 {
  ~S7473C1(); // tgen
  S7473C1(); // tgen
};
//SIG(1 S7473C1) C1{ BC2{ VBC3{ m} BC4{ m} VBC5{ m}}}


S7473C1 ::~S7473C1(){ note_dtor("S7473C1", this);} // tgen
S7473C1 ::S7473C1(){ note_ctor("S7473C1", this);} // tgen

static void Test_S7473C1()
{
  extern Class_Descriptor cd_S7473C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7473C1, buf);
    S7473C1 *dp, &lv = *(dp=new (buf) S7473C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7473C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7473C1)");
    check_base_class_offset(lv, (S7856C24*)(S7473C2*), 0, "S7473C1");
    check_base_class_offset(lv, (S7856C15*)(S7473C2*), 0, "S7473C1");
    check_base_class_offset(lv, (S7856C12*)(S7473C2*), 0, "S7473C1");
    check_base_class_offset(lv, (S7473C2*), 0, "S7473C1");
    test_class_info(&lv, &cd_S7473C1);
    dp->~S7473C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7473C1(Test_S7473C1, "S7473C1", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7473C1C1Ev();
extern void _ZN7S7473C1D1Ev();
Name_Map name_map_S7473C1[] = {
  NSPAIR(_ZN7S7473C1C1Ev),
  NSPAIR(_ZN7S7473C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7473C2;
extern VTBL_ENTRY _ZTI7S7473C2[];
extern  VTBL_ENTRY _ZTV7S7473C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7473C2[];
static Base_Class bases_S7473C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7473C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7473C1[];
static  VTBL_ENTRY vtc_S7473C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7473C1[0]),
};
extern VTBL_ENTRY _ZTV7S7473C1[];
static  VTBL_ENTRY _tg__ZTV7S7473C2__7S7473C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7473C2[0]),
};
static  VTT_ENTRY vtt_S7473C1[] = {
  {&(_ZTV7S7473C1[4]),  4,4},
  {&(_tg__ZTV7S7473C2__7S7473C1[4]),  4,4},
};
extern VTBL_ENTRY _ZTI7S7473C1[];
extern  VTBL_ENTRY _ZTV7S7473C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7473C1[];
Class_Descriptor cd_S7473C1 = {  "S7473C1", // class name
  bases_S7473C1, 4,
  &(vtc_S7473C1[0]), // expected_vtbl_contents
  &(vtt_S7473C1[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7473C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7473C1),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7473C1),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14532C2  {
  int s14532c2f0;
  void *s14532c2f1[9];
};
//SIG(-1 S14532C2) C1{ Fi Fp[9]}



static void Test_S14532C2()
{
  {
    init_simple_test("S14532C2");
    S14532C2 lv;
    check2(sizeof(lv), ABISELECT(80,40), "sizeof(S14532C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14532C2)");
    check_field_offset(lv, s14532c2f0, 0, "S14532C2.s14532c2f0");
    check_field_offset(lv, s14532c2f1, ABISELECT(8,4), "S14532C2.s14532c2f1");
  }
}
static Arrange_To_Call_Me vS14532C2(Test_S14532C2, "S14532C2", ABISELECT(80,40));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14532C1  {
  void *s14532c1f0[2];
  int s14532c1f1[2];
  ::S14532C2 s14532c1f2;
};
//SIG(1 S14532C1) C1{ Fp[2] Fi[2] FC2{ Fi Fp[9]}}



static void Test_S14532C1()
{
  {
    init_simple_test("S14532C1");
    S14532C1 lv;
    check2(sizeof(lv), ABISELECT(104,56), "sizeof(S14532C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14532C1)");
    check_field_offset(lv, s14532c1f0, 0, "S14532C1.s14532c1f0");
    check_field_offset(lv, s14532c1f1, ABISELECT(16,8), "S14532C1.s14532c1f1");
    check_field_offset(lv, s14532c1f2, ABISELECT(24,16), "S14532C1.s14532c1f2");
  }
}
static Arrange_To_Call_Me vS14532C1(Test_S14532C1, "S14532C1", ABISELECT(104,56));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5976C2  {
  void *s5976c2f0;
  ::S17566C3_nt s5976c2f1;
  char s5976c2f2;
  void  mf5976c2(); // _ZN7S5976C28mf5976c2Ev
};
//SIG(-1 S5976C2) C1{ m Fp FC2{ m FL[4]} Fc}


void  S5976C2 ::mf5976c2(){}

static void Test_S5976C2()
{
  {
    init_simple_test("S5976C2");
    S5976C2 lv;
    check2(sizeof(lv), ABISELECT(48,40), "sizeof(S5976C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5976C2)");
    check_field_offset(lv, s5976c2f0, 0, "S5976C2.s5976c2f0");
    check_field_offset(lv, s5976c2f1, ABISELECT(8,4), "S5976C2.s5976c2f1");
    check_field_offset(lv, s5976c2f2, ABISELECT(40,36), "S5976C2.s5976c2f2");
  }
}
static Arrange_To_Call_Me vS5976C2(Test_S5976C2, "S5976C2", ABISELECT(48,40));

#else // __cplusplus

Class_Descriptor cd_S5976C2 = {  "S5976C2", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(48,40), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5976C1  : S5976C2 {
};
//SIG(1 S5976C1) C1{ BC2{ m Fp FC3{ m FL[4]} Fc}}



static void Test_S5976C1()
{
  extern Class_Descriptor cd_S5976C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,11)];
    init_test(&cd_S5976C1, buf);
    S5976C1 &lv = *(new (buf) S5976C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,40), "sizeof(S5976C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5976C1)");
    check_base_class_offset(lv, (S5976C2*), 0, "S5976C1");
    test_class_info(&lv, &cd_S5976C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5976C1(Test_S5976C1, "S5976C1", ABISELECT(48,40));

#else // __cplusplus

extern Class_Descriptor cd_S5976C2;
static Base_Class bases_S5976C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5976C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S5976C1 = {  "S5976C1", // class name
  bases_S5976C1, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(48,40), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18768C1  {
  __tsi64 s18768c1f0;
  int s18768c1f1;
  virtual void  v1(); // _ZN8S18768C12v1Ev
  virtual void  v2(); // _ZN8S18768C12v2Ev
  virtual void  v3(); // _ZN8S18768C12v3Ev
  virtual void  v4(); // _ZN8S18768C12v4Ev
  virtual void  v5(); // _ZN8S18768C12v5Ev
  virtual void  v6(); // _ZN8S18768C12v6Ev
  ~S18768C1(); // tgen
  S18768C1(); // tgen
};
//SIG(1 S18768C1) C1{ v1 v2 v3 v4 v5 v6 FL Fi}


void  S18768C1 ::v1(){vfunc_called(this, "_ZN8S18768C12v1Ev");}
void  S18768C1 ::v2(){vfunc_called(this, "_ZN8S18768C12v2Ev");}
void  S18768C1 ::v3(){vfunc_called(this, "_ZN8S18768C12v3Ev");}
void  S18768C1 ::v4(){vfunc_called(this, "_ZN8S18768C12v4Ev");}
void  S18768C1 ::v5(){vfunc_called(this, "_ZN8S18768C12v5Ev");}
void  S18768C1 ::v6(){vfunc_called(this, "_ZN8S18768C12v6Ev");}
S18768C1 ::~S18768C1(){ note_dtor("S18768C1", this);} // tgen
S18768C1 ::S18768C1(){ note_ctor("S18768C1", this);} // tgen

static void Test_S18768C1()
{
  extern Class_Descriptor cd_S18768C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S18768C1, buf);
    S18768C1 *dp, &lv = *(dp=new (buf) S18768C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S18768C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18768C1)");
    check_field_offset(lv, s18768c1f0, ABISELECT(8,4), "S18768C1.s18768c1f0");
    check_field_offset(lv, s18768c1f1, ABISELECT(16,12), "S18768C1.s18768c1f1");
    test_class_info(&lv, &cd_S18768C1);
    dp->~S18768C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18768C1(Test_S18768C1, "S18768C1", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S18768C1C1Ev();
extern void _ZN8S18768C1D1Ev();
Name_Map name_map_S18768C1[] = {
  NSPAIR(_ZN8S18768C1C1Ev),
  NSPAIR(_ZN8S18768C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18768C1[];
extern void _ZN8S18768C12v1Ev();
extern void _ZN8S18768C12v2Ev();
extern void _ZN8S18768C12v3Ev();
extern void _ZN8S18768C12v4Ev();
extern void _ZN8S18768C12v5Ev();
extern void _ZN8S18768C12v6Ev();
static  VTBL_ENTRY vtc_S18768C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18768C1[0]),
  (VTBL_ENTRY)&_ZN8S18768C12v1Ev,
  (VTBL_ENTRY)&_ZN8S18768C12v2Ev,
  (VTBL_ENTRY)&_ZN8S18768C12v3Ev,
  (VTBL_ENTRY)&_ZN8S18768C12v4Ev,
  (VTBL_ENTRY)&_ZN8S18768C12v5Ev,
  (VTBL_ENTRY)&_ZN8S18768C12v6Ev,
};
extern VTBL_ENTRY _ZTI8S18768C1[];
extern  VTBL_ENTRY _ZTV8S18768C1[];
Class_Descriptor cd_S18768C1 = {  "S18768C1", // class name
  0,0,//no base classes
  &(vtc_S18768C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S18768C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18768C1),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S16344C1  {
  ::S1113C13_nt s16344c1f0;
  ::S1868C17 s16344c1f1;
  void  mf16344c1(); // _ZN8S16344C19mf16344c1Ev
};
//SIG(1 S16344C1) C1{ m FC2{ m Fp Fi} FC3{ m Fp}}


void  S16344C1 ::mf16344c1(){}

static void Test_S16344C1()
{
  {
    init_simple_test("S16344C1");
    S16344C1 lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S16344C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16344C1)");
    check_field_offset(lv, s16344c1f0, 0, "S16344C1.s16344c1f0");
    check_field_offset(lv, s16344c1f1, ABISELECT(16,8), "S16344C1.s16344c1f1");
  }
}
static Arrange_To_Call_Me vS16344C1(Test_S16344C1, "S16344C1", ABISELECT(24,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17277C1  {
  int s17277c1f0[6];
  __tsi64 s17277c1f1[14];
  char s17277c1f2[3];
  void *s17277c1f3;
  void  mf17277c1(); // _ZN8S17277C19mf17277c1Ev
};
//SIG(1 S17277C1) C1{ m Fi[6] FL[14] Fc[3] Fp}


void  S17277C1 ::mf17277c1(){}

static void Test_S17277C1()
{
  {
    init_simple_test("S17277C1");
    S17277C1 lv;
    check2(sizeof(lv), ABISELECT(152,144), "sizeof(S17277C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17277C1)");
    check_field_offset(lv, s17277c1f0, 0, "S17277C1.s17277c1f0");
    check_field_offset(lv, s17277c1f1, 24, "S17277C1.s17277c1f1");
    check_field_offset(lv, s17277c1f2, 136, "S17277C1.s17277c1f2");
    check_field_offset(lv, s17277c1f3, ABISELECT(144,140), "S17277C1.s17277c1f3");
  }
}
static Arrange_To_Call_Me vS17277C1(Test_S17277C1, "S17277C1", ABISELECT(152,144));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12268C1  {
  int s12268c1f0;
  char s12268c1f1[32];
  int s12268c1f2[2];
  char s12268c1f3[64];
};
//SIG(1 S12268C1) C1{ Fi Fc[32] Fi[2] Fc[64]}



static void Test_S12268C1()
{
  {
    init_simple_test("S12268C1");
    S12268C1 lv;
    check2(sizeof(lv), 108, "sizeof(S12268C1)");
    check2(__alignof__(lv), 4, "__alignof__(S12268C1)");
    check_field_offset(lv, s12268c1f0, 0, "S12268C1.s12268c1f0");
    check_field_offset(lv, s12268c1f1, 4, "S12268C1.s12268c1f1");
    check_field_offset(lv, s12268c1f2, 36, "S12268C1.s12268c1f2");
    check_field_offset(lv, s12268c1f3, 44, "S12268C1.s12268c1f3");
  }
}
static Arrange_To_Call_Me vS12268C1(Test_S12268C1, "S12268C1", 108);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S16073C1  {
  ::S40C35_nt s16073c1f0;
  void *s16073c1f1;
  int s16073c1f2;
  void *s16073c1f3;
  void  mf16073c1(); // _ZN8S16073C19mf16073c1Ev
};
//SIG(1 S16073C1) C1{ m FC2{ m Fi[4]} Fp Fi Fp}


void  S16073C1 ::mf16073c1(){}

static void Test_S16073C1()
{
  {
    init_simple_test("S16073C1");
    S16073C1 lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S16073C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16073C1)");
    check_field_offset(lv, s16073c1f0, 0, "S16073C1.s16073c1f0");
    check_field_offset(lv, s16073c1f1, 16, "S16073C1.s16073c1f1");
    check_field_offset(lv, s16073c1f2, ABISELECT(24,20), "S16073C1.s16073c1f2");
    check_field_offset(lv, s16073c1f3, ABISELECT(32,24), "S16073C1.s16073c1f3");
  }
}
static Arrange_To_Call_Me vS16073C1(Test_S16073C1, "S16073C1", ABISELECT(40,28));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

union  S18650C2  {
  __tsi64 s18650c2f0[2];
  void  mf18650c2(); // _ZN8S18650C29mf18650c2Ev
};
//SIG(1 S18650C2) U1{ m FL[2]}

#endif // __cplusplus
#ifdef __cplusplus

struct  S18650C1  {
  ::S18650C2 s18650c1f0;
  virtual void  v1(); // _ZN8S18650C12v1Ev
  virtual void  v2(); // _ZN8S18650C12v2Ev
  virtual void  v3(); // _ZN8S18650C12v3Ev
  ~S18650C1(); // tgen
  S18650C1(); // tgen
};
//SIG(1 S18650C1) C1{ v1 v2 v3 FU2{ m FL[2]}}


void  S18650C1 ::v1(){vfunc_called(this, "_ZN8S18650C12v1Ev");}
void  S18650C1 ::v2(){vfunc_called(this, "_ZN8S18650C12v2Ev");}
void  S18650C1 ::v3(){vfunc_called(this, "_ZN8S18650C12v3Ev");}
S18650C1 ::~S18650C1(){ note_dtor("S18650C1", this);} // tgen
S18650C1 ::S18650C1(){ note_ctor("S18650C1", this);} // tgen

static void Test_S18650C1()
{
  extern Class_Descriptor cd_S18650C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,6)];
    init_test(&cd_S18650C1, buf);
    S18650C1 *dp, &lv = *(dp=new (buf) S18650C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S18650C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18650C1)");
    check_field_offset(lv, s18650c1f0, ABISELECT(8,4), "S18650C1.s18650c1f0");
    test_class_info(&lv, &cd_S18650C1);
    dp->~S18650C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18650C1(Test_S18650C1, "S18650C1", ABISELECT(24,20));

#else // __cplusplus

extern void _ZN8S18650C1C1Ev();
extern void _ZN8S18650C1D1Ev();
Name_Map name_map_S18650C1[] = {
  NSPAIR(_ZN8S18650C1C1Ev),
  NSPAIR(_ZN8S18650C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18650C1[];
extern void _ZN8S18650C12v1Ev();
extern void _ZN8S18650C12v2Ev();
extern void _ZN8S18650C12v3Ev();
static  VTBL_ENTRY vtc_S18650C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18650C1[0]),
  (VTBL_ENTRY)&_ZN8S18650C12v1Ev,
  (VTBL_ENTRY)&_ZN8S18650C12v2Ev,
  (VTBL_ENTRY)&_ZN8S18650C12v3Ev,
};
extern VTBL_ENTRY _ZTI8S18650C1[];
extern  VTBL_ENTRY _ZTV8S18650C1[];
Class_Descriptor cd_S18650C1 = {  "S18650C1", // class name
  0,0,//no base classes
  &(vtc_S18650C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,20), // object size
  NSPAIRA(_ZTI8S18650C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18650C1),5, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11671C1  {
  ::S8565C3_nt s11671c1f0;
  ::S8565C3_nt s11671c1f1;
  int s11671c1f2;
  char s11671c1f3[28];
};
//SIG(1 S11671C1) C1{ FC2{ Fi} FC2 Fi Fc[28]}



static void Test_S11671C1()
{
  {
    init_simple_test("S11671C1");
    S11671C1 lv;
    check2(sizeof(lv), 40, "sizeof(S11671C1)");
    check2(__alignof__(lv), 4, "__alignof__(S11671C1)");
    check_field_offset(lv, s11671c1f0, 0, "S11671C1.s11671c1f0");
    check_field_offset(lv, s11671c1f1, 4, "S11671C1.s11671c1f1");
    check_field_offset(lv, s11671c1f2, 8, "S11671C1.s11671c1f2");
    check_field_offset(lv, s11671c1f3, 12, "S11671C1.s11671c1f3");
  }
}
static Arrange_To_Call_Me vS11671C1(Test_S11671C1, "S11671C1", 40);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14122C1  {
  void *s14122c1f0;
  ::S13708C3 s14122c1f1[63];
};
//SIG(1 S14122C1) C1{ Fp FC2{ FL Fp[2]}[63]}



static void Test_S14122C1()
{
  {
    init_simple_test("S14122C1");
    S14122C1 lv;
    check2(sizeof(lv), ABISELECT(1520,1012), "sizeof(S14122C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14122C1)");
    check_field_offset(lv, s14122c1f0, 0, "S14122C1.s14122c1f0");
    check_field_offset(lv, s14122c1f1, ABISELECT(8,4), "S14122C1.s14122c1f1");
  }
}
static Arrange_To_Call_Me vS14122C1(Test_S14122C1, "S14122C1", ABISELECT(1520,1012));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14121C1  {
  void *s14121c1f0;
  ::S13708C3 s14121c1f1[42];
};
//SIG(1 S14121C1) C1{ Fp FC2{ FL Fp[2]}[42]}



static void Test_S14121C1()
{
  {
    init_simple_test("S14121C1");
    S14121C1 lv;
    check2(sizeof(lv), ABISELECT(1016,676), "sizeof(S14121C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14121C1)");
    check_field_offset(lv, s14121c1f0, 0, "S14121C1.s14121c1f0");
    check_field_offset(lv, s14121c1f1, ABISELECT(8,4), "S14121C1.s14121c1f1");
  }
}
static Arrange_To_Call_Me vS14121C1(Test_S14121C1, "S14121C1", ABISELECT(1016,676));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17580C1  {
  void *s17580c1f0;
  ::S580C22_nt s17580c1f1;
  void  mf17580c1(); // _ZN8S17580C19mf17580c1Ev
};
//SIG(1 S17580C1) C1{ m Fp FC2{ m Fi Fc Fi}}


void  S17580C1 ::mf17580c1(){}

static void Test_S17580C1()
{
  {
    init_simple_test("S17580C1");
    S17580C1 lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S17580C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17580C1)");
    check_field_offset(lv, s17580c1f0, 0, "S17580C1.s17580c1f0");
    check_field_offset(lv, s17580c1f1, ABISELECT(8,4), "S17580C1.s17580c1f1");
  }
}
static Arrange_To_Call_Me vS17580C1(Test_S17580C1, "S17580C1", ABISELECT(24,16));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14481C1  {
  void *s14481c1f0[2];
  ::S14483C3 s14481c1f1;
};
//SIG(1 S14481C1) C1{ Fp[2] FC2{ m Fc[278]}}



static void Test_S14481C1()
{
  {
    init_simple_test("S14481C1");
    S14481C1 lv;
    check2(sizeof(lv), ABISELECT(296,288), "sizeof(S14481C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14481C1)");
    check_field_offset(lv, s14481c1f0, 0, "S14481C1.s14481c1f0");
    check_field_offset(lv, s14481c1f1, ABISELECT(16,8), "S14481C1.s14481c1f1");
  }
}
static Arrange_To_Call_Me vS14481C1(Test_S14481C1, "S14481C1", ABISELECT(296,288));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5612C2  {
  ::S14532C2 s5612c2f0;
  void  mf5612c2(); // _ZN7S5612C28mf5612c2Ev
};
//SIG(-1 S5612C2) C1{ m FC2{ Fi Fp[9]}}


void  S5612C2 ::mf5612c2(){}

static void Test_S5612C2()
{
  {
    init_simple_test("S5612C2");
    S5612C2 lv;
    check2(sizeof(lv), ABISELECT(80,40), "sizeof(S5612C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5612C2)");
    check_field_offset(lv, s5612c2f0, 0, "S5612C2.s5612c2f0");
  }
}
static Arrange_To_Call_Me vS5612C2(Test_S5612C2, "S5612C2", ABISELECT(80,40));

#else // __cplusplus

Class_Descriptor cd_S5612C2 = {  "S5612C2", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(80,40), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5612C1  : S5612C2 {
};
//SIG(1 S5612C1) C1{ BC2{ m FC3{ Fi Fp[9]}}}



static void Test_S5612C1()
{
  extern Class_Descriptor cd_S5612C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[11];
    init_test(&cd_S5612C1, buf);
    S5612C1 &lv = *(new (buf) S5612C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,40), "sizeof(S5612C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5612C1)");
    check_base_class_offset(lv, (S5612C2*), 0, "S5612C1");
    test_class_info(&lv, &cd_S5612C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5612C1(Test_S5612C1, "S5612C1", ABISELECT(80,40));

#else // __cplusplus

extern Class_Descriptor cd_S5612C2;
static Base_Class bases_S5612C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5612C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S5612C1 = {  "S5612C1", // class name
  bases_S5612C1, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(80,40), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14490C1  {
  void *s14490c1f0[2];
  ::S8611C4_nt s14490c1f1;
};
//SIG(1 S14490C1) C1{ Fp[2] FC2{ m Fi[3]}}



static void Test_S14490C1()
{
  {
    init_simple_test("S14490C1");
    S14490C1 lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S14490C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14490C1)");
    check_field_offset(lv, s14490c1f0, 0, "S14490C1.s14490c1f0");
    check_field_offset(lv, s14490c1f1, ABISELECT(16,8), "S14490C1.s14490c1f1");
  }
}
static Arrange_To_Call_Me vS14490C1(Test_S14490C1, "S14490C1", ABISELECT(32,20));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14899C1  {
  short s14899c1f0[2];
  int s14899c1f1[3];
  __tsi64 s14899c1f2[2];
};
//SIG(1 S14899C1) C1{ Fs[2] Fi[3] FL[2]}



static void Test_S14899C1()
{
  {
    init_simple_test("S14899C1");
    S14899C1 lv;
    check2(sizeof(lv), 32, "sizeof(S14899C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14899C1)");
    check_field_offset(lv, s14899c1f0, 0, "S14899C1.s14899c1f0");
    check_field_offset(lv, s14899c1f1, 4, "S14899C1.s14899c1f1");
    check_field_offset(lv, s14899c1f2, 16, "S14899C1.s14899c1f2");
  }
}
static Arrange_To_Call_Me vS14899C1(Test_S14899C1, "S14899C1", 32);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S16906C1  {
  int s16906c1f0;
  void *s16906c1f1;
  ::S40C13_nt s16906c1f2;
  void  mf16906c1(); // _ZN8S16906C19mf16906c1Ev
};
//SIG(1 S16906C1) C1{ m Fi Fp FC2{ m Fi}}


void  S16906C1 ::mf16906c1(){}

static void Test_S16906C1()
{
  {
    init_simple_test("S16906C1");
    S16906C1 lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S16906C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16906C1)");
    check_field_offset(lv, s16906c1f0, 0, "S16906C1.s16906c1f0");
    check_field_offset(lv, s16906c1f1, ABISELECT(8,4), "S16906C1.s16906c1f1");
    check_field_offset(lv, s16906c1f2, ABISELECT(16,8), "S16906C1.s16906c1f2");
  }
}
static Arrange_To_Call_Me vS16906C1(Test_S16906C1, "S16906C1", ABISELECT(24,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15105C1  {
  char s15105c1f0;
  int s15105c1f1[3];
  char s15105c1f2[48];
  void  mf15105c1(); // _ZN8S15105C19mf15105c1Ev
};
//SIG(1 S15105C1) C1{ m Fc Fi[3] Fc[48]}


void  S15105C1 ::mf15105c1(){}

static void Test_S15105C1()
{
  {
    init_simple_test("S15105C1");
    S15105C1 lv;
    check2(sizeof(lv), 64, "sizeof(S15105C1)");
    check2(__alignof__(lv), 4, "__alignof__(S15105C1)");
    check_field_offset(lv, s15105c1f0, 0, "S15105C1.s15105c1f0");
    check_field_offset(lv, s15105c1f1, 4, "S15105C1.s15105c1f1");
    check_field_offset(lv, s15105c1f2, 16, "S15105C1.s15105c1f2");
  }
}
static Arrange_To_Call_Me vS15105C1(Test_S15105C1, "S15105C1", 64);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18376C1  {
  void *s18376c1f0[5];
  int s18376c1f1[2];
  void *s18376c1f2;
  void  mf18376c1(); // _ZN8S18376C19mf18376c1Ev
};
//SIG(1 S18376C1) C1{ m Fp[5] Fi[2] Fp}


void  S18376C1 ::mf18376c1(){}

static void Test_S18376C1()
{
  {
    init_simple_test("S18376C1");
    S18376C1 lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S18376C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18376C1)");
    check_field_offset(lv, s18376c1f0, 0, "S18376C1.s18376c1f0");
    check_field_offset(lv, s18376c1f1, ABISELECT(40,20), "S18376C1.s18376c1f1");
    check_field_offset(lv, s18376c1f2, ABISELECT(48,28), "S18376C1.s18376c1f2");
  }
}
static Arrange_To_Call_Me vS18376C1(Test_S18376C1, "S18376C1", ABISELECT(56,32));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17774C1  {
  void *s17774c1f0;
  int s17774c1f1[2];
  char s17774c1f2[2];
  void  mf17774c1(); // _ZN8S17774C19mf17774c1Ev
};
//SIG(1 S17774C1) C1{ m Fp Fi[2] Fc[2]}


void  S17774C1 ::mf17774c1(){}

static void Test_S17774C1()
{
  {
    init_simple_test("S17774C1");
    S17774C1 lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S17774C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17774C1)");
    check_field_offset(lv, s17774c1f0, 0, "S17774C1.s17774c1f0");
    check_field_offset(lv, s17774c1f1, ABISELECT(8,4), "S17774C1.s17774c1f1");
    check_field_offset(lv, s17774c1f2, ABISELECT(16,12), "S17774C1.s17774c1f2");
  }
}
static Arrange_To_Call_Me vS17774C1(Test_S17774C1, "S17774C1", ABISELECT(24,16));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20225C2  {
  virtual void  v4(); // _ZN8S20225C22v4Ev
  ~S20225C2(); // tgen
  S20225C2(); // tgen
};
//SIG(-1 S20225C2) C1{ v1}


void  S20225C2 ::v4(){vfunc_called(this, "_ZN8S20225C22v4Ev");}
S20225C2 ::~S20225C2(){ note_dtor("S20225C2", this);} // tgen
S20225C2 ::S20225C2(){ note_ctor("S20225C2", this);} // tgen

static void Test_S20225C2()
{
  extern Class_Descriptor cd_S20225C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S20225C2, buf);
    S20225C2 *dp, &lv = *(dp=new (buf) S20225C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S20225C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20225C2)");
    test_class_info(&lv, &cd_S20225C2);
    dp->~S20225C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20225C2(Test_S20225C2, "S20225C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S20225C2C1Ev();
extern void _ZN8S20225C2D1Ev();
Name_Map name_map_S20225C2[] = {
  NSPAIR(_ZN8S20225C2C1Ev),
  NSPAIR(_ZN8S20225C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20225C2[];
extern void _ZN8S20225C22v4Ev();
static  VTBL_ENTRY vtc_S20225C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20225C2[0]),
  (VTBL_ENTRY)&_ZN8S20225C22v4Ev,
};
extern VTBL_ENTRY _ZTI8S20225C2[];
extern  VTBL_ENTRY _ZTV8S20225C2[];
Class_Descriptor cd_S20225C2 = {  "S20225C2", // class name
  0,0,//no base classes
  &(vtc_S20225C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S20225C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20225C2),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20225C1  : virtual S20225C2 {
  virtual void  v1(); // _ZN8S20225C12v1Ev
  virtual void  v2(); // _ZN8S20225C12v2Ev
  virtual void  v3(); // _ZN8S20225C12v3Ev
  ~S20225C1(); // tgen
  S20225C1(); // tgen
};
//SIG(1 S20225C1) C1{ VBC2{ v4} v1 v2 v3}


void  S20225C1 ::v1(){vfunc_called(this, "_ZN8S20225C12v1Ev");}
void  S20225C1 ::v2(){vfunc_called(this, "_ZN8S20225C12v2Ev");}
void  S20225C1 ::v3(){vfunc_called(this, "_ZN8S20225C12v3Ev");}
S20225C1 ::~S20225C1(){ note_dtor("S20225C1", this);} // tgen
S20225C1 ::S20225C1(){ note_ctor("S20225C1", this);} // tgen

static void Test_S20225C1()
{
  extern Class_Descriptor cd_S20225C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S20225C1, buf);
    S20225C1 *dp, &lv = *(dp=new (buf) S20225C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S20225C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20225C1)");
    check_base_class_offset(lv, (S20225C2*), 0, "S20225C1");
    test_class_info(&lv, &cd_S20225C1);
    dp->~S20225C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20225C1(Test_S20225C1, "S20225C1", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S20225C1C1Ev();
extern void _ZN8S20225C1D1Ev();
Name_Map name_map_S20225C1[] = {
  NSPAIR(_ZN8S20225C1C1Ev),
  NSPAIR(_ZN8S20225C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20225C2;
extern VTBL_ENTRY _ZTI8S20225C2[];
extern  VTBL_ENTRY _ZTV8S20225C2[];
static Base_Class bases_S20225C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20225C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20225C1[];
extern void _ZN8S20225C22v4Ev();
extern void _ZN8S20225C12v1Ev();
extern void _ZN8S20225C12v2Ev();
extern void _ZN8S20225C12v3Ev();
static  VTBL_ENTRY vtc_S20225C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20225C1[0]),
  (VTBL_ENTRY)&_ZN8S20225C22v4Ev,
  (VTBL_ENTRY)&_ZN8S20225C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20225C12v2Ev,
  (VTBL_ENTRY)&_ZN8S20225C12v3Ev,
};
extern VTBL_ENTRY _ZTV8S20225C1[];
static  VTT_ENTRY vtt_S20225C1[] = {
  {&(_ZTV8S20225C1[4]),  4,8},
  {&(_ZTV8S20225C1[4]),  4,8},
};
extern VTBL_ENTRY _ZTI8S20225C1[];
extern  VTBL_ENTRY _ZTV8S20225C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20225C1[];
Class_Descriptor cd_S20225C1 = {  "S20225C1", // class name
  bases_S20225C1, 1,
  &(vtc_S20225C1[0]), // expected_vtbl_contents
  &(vtt_S20225C1[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S20225C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20225C1),8, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20225C1),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10335C3_nt  {
};
//SIG(-1 S10335C3_nt) C1{}



//skip512 S10335C3_nt

#else // __cplusplus

Class_Descriptor cd_S10335C3_nt = {  "S10335C3_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  1, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10335C4  {
};
//SIG(-1 S10335C4) C1{}



static void Test_S10335C4()
{
  {
    init_simple_test("S10335C4");
    S10335C4 lv;
    check2(sizeof(lv), 1, "sizeof(S10335C4)");
    check2(__alignof__(lv), 1, "__alignof__(S10335C4)");
  }
}
static Arrange_To_Call_Me vS10335C4(Test_S10335C4, "S10335C4", 1);

#else // __cplusplus

Class_Descriptor cd_S10335C4 = {  "S10335C4", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  1, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10335C1  : S20291C14_nt , S10335C3_nt , S10335C4 {
};
//SIG(1 S10335C1) C1{ BC2{} BC3{} BC4{}}



static void Test_S10335C1()
{
  extern Class_Descriptor cd_S10335C1;
  void *lvp;
  {
    char buf[1];
    init_test(&cd_S10335C1, buf);
    S10335C1 &lv = *(new (buf) S10335C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), 1, "sizeof(S10335C1)");
    check2(__alignof__(lv), 1, "__alignof__(S10335C1)");
    check_base_class_offset(lv, (S20291C14_nt*), 0, "S10335C1");
    check_base_class_offset(lv, (S10335C3_nt*), 0, "S10335C1");
    check_base_class_offset(lv, (S10335C4*), 0, "S10335C1");
    test_class_info(&lv, &cd_S10335C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10335C1(Test_S10335C1, "S10335C1", 1);

#else // __cplusplus

extern Class_Descriptor cd_S20291C14_nt;
extern Class_Descriptor cd_S10335C3_nt;
extern Class_Descriptor cd_S10335C4;
static Base_Class bases_S10335C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20291C14_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S10335C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S10335C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S10335C1 = {  "S10335C1", // class name
  bases_S10335C1, 3,
  0, // no vftv
  0, //no vtt
  1, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6324C1  : S7856C24 {
  void *s6324c1f0;
  int s6324c1f1;
  virtual  ~S6324C1(); // _ZN7S6324C1D1Ev
  S6324C1(); // tgen
};
//SIG(1 S6324C1) C1{ BC2{ m} vd Fp Fi}


 S6324C1 ::~S6324C1(){ note_dtor("S6324C1", this);}
S6324C1 ::S6324C1(){ note_ctor("S6324C1", this);} // tgen

static void Test_S6324C1()
{
  extern Class_Descriptor cd_S6324C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S6324C1, buf);
    S6324C1 *dp, &lv = *(dp=new (buf) S6324C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S6324C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6324C1)");
    check_base_class_offset(lv, (S7856C24*), 0, "S6324C1");
    check_field_offset(lv, s6324c1f0, ABISELECT(8,4), "S6324C1.s6324c1f0");
    check_field_offset(lv, s6324c1f1, ABISELECT(16,8), "S6324C1.s6324c1f1");
    test_class_info(&lv, &cd_S6324C1);
    dp->~S6324C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6324C1(Test_S6324C1, "S6324C1", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S6324C1C1Ev();
extern void _ZN7S6324C1D1Ev();
Name_Map name_map_S6324C1[] = {
  NSPAIR(_ZN7S6324C1C1Ev),
  NSPAIR(_ZN7S6324C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
static Base_Class bases_S6324C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6324C1[];
extern void _ZN7S6324C1D1Ev();
extern void _ZN7S6324C1D0Ev();
static  VTBL_ENTRY vtc_S6324C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6324C1[0]),
  (VTBL_ENTRY)&_ZN7S6324C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6324C1D0Ev,
};
extern VTBL_ENTRY _ZTI7S6324C1[];
extern  VTBL_ENTRY _ZTV7S6324C1[];
Class_Descriptor cd_S6324C1 = {  "S6324C1", // class name
  bases_S6324C1, 1,
  &(vtc_S6324C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S6324C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6324C1),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13948C1  {
  __tsi64 s13948c1f0[2];
  void *s13948c1f1;
  int s13948c1f2[2];
};
//SIG(1 S13948C1) C1{ FL[2] Fp Fi[2]}



static void Test_S13948C1()
{
  {
    init_simple_test("S13948C1");
    S13948C1 lv;
    check2(sizeof(lv), ABISELECT(32,28), "sizeof(S13948C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13948C1)");
    check_field_offset(lv, s13948c1f0, 0, "S13948C1.s13948c1f0");
    check_field_offset(lv, s13948c1f1, 16, "S13948C1.s13948c1f1");
    check_field_offset(lv, s13948c1f2, ABISELECT(24,20), "S13948C1.s13948c1f2");
  }
}
static Arrange_To_Call_Me vS13948C1(Test_S13948C1, "S13948C1", ABISELECT(32,28));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14551C1  {
  void *s14551c1f0[2];
  int s14551c1f1[5];
  char s14551c1f2;
};
//SIG(1 S14551C1) C1{ Fp[2] Fi[5] Fc}



static void Test_S14551C1()
{
  {
    init_simple_test("S14551C1");
    S14551C1 lv;
    check2(sizeof(lv), ABISELECT(40,32), "sizeof(S14551C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14551C1)");
    check_field_offset(lv, s14551c1f0, 0, "S14551C1.s14551c1f0");
    check_field_offset(lv, s14551c1f1, ABISELECT(16,8), "S14551C1.s14551c1f1");
    check_field_offset(lv, s14551c1f2, ABISELECT(36,28), "S14551C1.s14551c1f2");
  }
}
static Arrange_To_Call_Me vS14551C1(Test_S14551C1, "S14551C1", ABISELECT(40,32));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S16881C1  {
  int s16881c1f0;
  void *s16881c1f1;
  char s16881c1f2[2];
  void  mf16881c1(); // _ZN8S16881C19mf16881c1Ev
};
//SIG(1 S16881C1) C1{ m Fi Fp Fc[2]}


void  S16881C1 ::mf16881c1(){}

static void Test_S16881C1()
{
  {
    init_simple_test("S16881C1");
    S16881C1 lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S16881C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16881C1)");
    check_field_offset(lv, s16881c1f0, 0, "S16881C1.s16881c1f0");
    check_field_offset(lv, s16881c1f1, ABISELECT(8,4), "S16881C1.s16881c1f1");
    check_field_offset(lv, s16881c1f2, ABISELECT(16,8), "S16881C1.s16881c1f2");
  }
}
static Arrange_To_Call_Me vS16881C1(Test_S16881C1, "S16881C1", ABISELECT(24,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10334C1  : S20291C14_nt , S7856C24 {
  void *s10334c1f0;
};
//SIG(1 S10334C1) C1{ BC2{} BC3{ m} Fp}



static void Test_S10334C1()
{
  extern Class_Descriptor cd_S10334C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S10334C1, buf);
    S10334C1 &lv = *(new (buf) S10334C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S10334C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10334C1)");
    check_base_class_offset(lv, (S20291C14_nt*), 0, "S10334C1");
    check_base_class_offset(lv, (S7856C24*), 0, "S10334C1");
    check_field_offset(lv, s10334c1f0, 0, "S10334C1.s10334c1f0");
    test_class_info(&lv, &cd_S10334C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10334C1(Test_S10334C1, "S10334C1", ABISELECT(8,4));

#else // __cplusplus

extern Class_Descriptor cd_S20291C14_nt;
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
static Base_Class bases_S10334C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20291C14_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S10334C1 = {  "S10334C1", // class name
  bases_S10334C1, 2,
  0, // no vftv
  0, //no vtt
  ABISELECT(8,4), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13909C1  {
  __tsi64 s13909c1f0[2];
  char s13909c1f1[193];
};
//SIG(1 S13909C1) C1{ FL[2] Fc[193]}



static void Test_S13909C1()
{
  {
    init_simple_test("S13909C1");
    S13909C1 lv;
    check2(sizeof(lv), ABISELECT(216,212), "sizeof(S13909C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13909C1)");
    check_field_offset(lv, s13909c1f0, 0, "S13909C1.s13909c1f0");
    check_field_offset(lv, s13909c1f1, 16, "S13909C1.s13909c1f1");
  }
}
static Arrange_To_Call_Me vS13909C1(Test_S13909C1, "S13909C1", ABISELECT(216,212));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10920C1  {
  char s10920c1f0[4];
  void *s10920c1f1[10];
};
//SIG(1 S10920C1) C1{ Fc[4] Fp[10]}



static void Test_S10920C1()
{
  {
    init_simple_test("S10920C1");
    S10920C1 lv;
    check2(sizeof(lv), ABISELECT(88,44), "sizeof(S10920C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10920C1)");
    check_field_offset(lv, s10920c1f0, 0, "S10920C1.s10920c1f0");
    check_field_offset(lv, s10920c1f1, ABISELECT(8,4), "S10920C1.s10920c1f1");
  }
}
static Arrange_To_Call_Me vS10920C1(Test_S10920C1, "S10920C1", ABISELECT(88,44));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14647C1  {
  void *s14647c1f0[3];
  long s14647c1f1[2];
};
//SIG(1 S14647C1) C1{ Fp[3] Fl[2]}



static void Test_S14647C1()
{
  {
    init_simple_test("S14647C1");
    S14647C1 lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S14647C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14647C1)");
    check_field_offset(lv, s14647c1f0, 0, "S14647C1.s14647c1f0");
    check_field_offset(lv, s14647c1f1, ABISELECT(24,12), "S14647C1.s14647c1f1");
  }
}
static Arrange_To_Call_Me vS14647C1(Test_S14647C1, "S14647C1", ABISELECT(40,20));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12725C1  {
  int s12725c1f0;
  void *s12725c1f1;
  __tsi64 s12725c1f2[3];
};
//SIG(1 S12725C1) C1{ Fi Fp FL[3]}



static void Test_S12725C1()
{
  {
    init_simple_test("S12725C1");
    S12725C1 lv;
    check2(sizeof(lv), ABISELECT(40,32), "sizeof(S12725C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S12725C1)");
    check_field_offset(lv, s12725c1f0, 0, "S12725C1.s12725c1f0");
    check_field_offset(lv, s12725c1f1, ABISELECT(8,4), "S12725C1.s12725c1f1");
    check_field_offset(lv, s12725c1f2, ABISELECT(16,8), "S12725C1.s12725c1f2");
  }
}
static Arrange_To_Call_Me vS12725C1(Test_S12725C1, "S12725C1", ABISELECT(40,32));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13928C1  {
  long s13928c1f0[2];
  int s13928c1f1;
  void *s13928c1f2;
};
//SIG(1 S13928C1) C1{ Fl[2] Fi Fp}



static void Test_S13928C1()
{
  {
    init_simple_test("S13928C1");
    S13928C1 lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S13928C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13928C1)");
    check_field_offset(lv, s13928c1f0, 0, "S13928C1.s13928c1f0");
    check_field_offset(lv, s13928c1f1, ABISELECT(16,8), "S13928C1.s13928c1f1");
    check_field_offset(lv, s13928c1f2, ABISELECT(24,12), "S13928C1.s13928c1f2");
  }
}
static Arrange_To_Call_Me vS13928C1(Test_S13928C1, "S13928C1", ABISELECT(32,16));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14196C1  {
  void *s14196c1f0;
  int s14196c1f1;
  unsigned int s14196c1f2:1;
};
//SIG(1 S14196C1) C1{ Fp Fi Fi:1}



static void Test_S14196C1()
{
  {
    init_simple_test("S14196C1");
    static S14196C1 lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S14196C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14196C1)");
    check_field_offset(lv, s14196c1f0, 0, "S14196C1.s14196c1f0");
    check_field_offset(lv, s14196c1f1, ABISELECT(8,4), "S14196C1.s14196c1f1");
    set_bf_and_test(lv, s14196c1f2, ABISELECT(12,8), 0, 1, 1, "S14196C1");
  }
}
static Arrange_To_Call_Me vS14196C1(Test_S14196C1, "S14196C1", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17837C1  {
  void *s17837c1f0;
  long s17837c1f1[2];
  void  mf17837c1(); // _ZN8S17837C19mf17837c1Ev
};
//SIG(1 S17837C1) C1{ m Fp Fl[2]}


void  S17837C1 ::mf17837c1(){}

static void Test_S17837C1()
{
  {
    init_simple_test("S17837C1");
    S17837C1 lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S17837C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17837C1)");
    check_field_offset(lv, s17837c1f0, 0, "S17837C1.s17837c1f0");
    check_field_offset(lv, s17837c1f1, ABISELECT(8,4), "S17837C1.s17837c1f1");
  }
}
static Arrange_To_Call_Me vS17837C1(Test_S17837C1, "S17837C1", ABISELECT(24,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12307C1  {
  int s12307c1f0;
  char s12307c1f1[44];
};
//SIG(1 S12307C1) C1{ Fi Fc[44]}



static void Test_S12307C1()
{
  {
    init_simple_test("S12307C1");
    S12307C1 lv;
    check2(sizeof(lv), 48, "sizeof(S12307C1)");
    check2(__alignof__(lv), 4, "__alignof__(S12307C1)");
    check_field_offset(lv, s12307c1f0, 0, "S12307C1.s12307c1f0");
    check_field_offset(lv, s12307c1f1, 4, "S12307C1.s12307c1f1");
  }
}
static Arrange_To_Call_Me vS12307C1(Test_S12307C1, "S12307C1", 48);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17282C1  {
  int s17282c1f0[65];
  void  mf17282c1(); // _ZN8S17282C19mf17282c1Ev
};
//SIG(1 S17282C1) C1{ m Fi[65]}


void  S17282C1 ::mf17282c1(){}

static void Test_S17282C1()
{
  {
    init_simple_test("S17282C1");
    S17282C1 lv;
    check2(sizeof(lv), 260, "sizeof(S17282C1)");
    check2(__alignof__(lv), 4, "__alignof__(S17282C1)");
    check_field_offset(lv, s17282c1f0, 0, "S17282C1.s17282c1f0");
  }
}
static Arrange_To_Call_Me vS17282C1(Test_S17282C1, "S17282C1", 260);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10967C1  {
  char s10967c1f0[565];
};
//SIG(1 S10967C1) C1{ Fc[565]}



static void Test_S10967C1()
{
  {
    init_simple_test("S10967C1");
    S10967C1 lv;
    check2(sizeof(lv), 565, "sizeof(S10967C1)");
    check2(__alignof__(lv), 1, "__alignof__(S10967C1)");
    check_field_offset(lv, s10967c1f0, 0, "S10967C1.s10967c1f0");
  }
}
static Arrange_To_Call_Me vS10967C1(Test_S10967C1, "S10967C1", 565);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14792C1  {
  short s14792c1f0;
  char s14792c1f1;
};
//SIG(1 S14792C1) C1{ Fs Fc}



static void Test_S14792C1()
{
  {
    init_simple_test("S14792C1");
    S14792C1 lv;
    check2(sizeof(lv), 4, "sizeof(S14792C1)");
    check2(__alignof__(lv), 2, "__alignof__(S14792C1)");
    check_field_offset(lv, s14792c1f0, 0, "S14792C1.s14792c1f0");
    check_field_offset(lv, s14792c1f1, 2, "S14792C1.s14792c1f1");
  }
}
static Arrange_To_Call_Me vS14792C1(Test_S14792C1, "S14792C1", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

